YeonGyu-Kim
050b93bebb
fix(background-agent): clean pendingNotifications on session.deleted
2026-02-27 03:00:39 +09:00
YeonGyu-Kim
d425f9bb80
fix(models): update Gemini 3 to 3.1 Pro and add Kimi to writing category fallback
...
Closes #2065
Closes #1968
2026-02-26 21:01:26 +09:00
YeonGyu-Kim
5fe1640f2a
fix(boulder): count indented checkboxes in plan progress
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-26 20:20:28 +09:00
YeonGyu-Kim
52d366e866
feat(start-work): update template with --worktree flag documentation
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-26 20:08:44 +09:00
YeonGyu-Kim
808a50d808
feat(boulder-state): add worktree_path field to BoulderState
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-26 20:08:44 +09:00
YeonGyu-Kim
840c612be8
fix(background-agent): queue notifications for idle parent sessions
...
When a background task completes and the parent session is waiting for
user input, promptAsync() fails with an aborted error. Previously the
notification was silently dropped — lost forever.
Fix: queue the notification text in-memory on the BackgroundManager
when promptAsync fails with an aborted/idle error. On the user's next
message to that session, the queued notifications are injected into the
chat context before the agent sees the message.
- BackgroundManager: add pendingNotifications map + queuePendingNotification()
and injectPendingNotificationsIntoChatMessage() methods
- background-notification hook: add chat.message handler that calls injection
- chat-message.ts: wire backgroundNotificationHook.chat.message into the
message processing chain
- Add tests covering queue-on-abort and next-message delivery
2026-02-25 16:26:31 +09:00
YeonGyu-Kim
73453a7191
docs(agents): update hook counts 44→46, add hashline-edit documentation
...
- Update root AGENTS.md: hook count 44→46, commit fcb90d92 , generated 2026-02-24
- Update src/AGENTS.md: core hooks 35→37, session hooks 21→23
- Update src/hooks/AGENTS.md: 46 hooks total, add modelFallback/noSisyphusGpt/noHephaestusNonGpt/runtimeFallback, jsonErrorRecovery moved to tool-guard (tier 2)
- Create src/tools/hashline-edit/AGENTS.md (93 lines): documents three-op model, LINE#ID format, execution pipeline
- Refresh timestamps: 2026-02-21→2026-02-24 on 28 files
- Update plugin/AGENTS.md hook composition counts
🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode )
2026-02-25 00:02:05 +09:00
YeonGyu-Kim
830dcf8d2f
refactor(features): remove empty barrel files
...
Delete 2 empty barrel index.ts files:
- claude-tasks/index.ts
- mcp-oauth/index.ts
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-23 02:43:11 +09:00
YeonGyu-Kim
2428a46e6d
refactor(features/background-agent): remove dead code submodules
...
Delete 15 unused files in background-agent module:
- background-task-completer.ts
- format-duration.ts
- message-dir.ts
- parent-session-context-resolver.ts
- parent-session-notifier.ts (and its test file)
- result-handler-context.ts
- result-handler.ts
- session-output-validator.ts
- session-task-cleanup.ts
- session-todo-checker.ts
- spawner/background-session-creator.ts
- spawner/concurrency-key-from-launch-input.ts
- spawner/spawner-context.ts
- spawner/tmux-callback-invoker.ts
Update index.ts barrel and manager.ts/spawner.ts imports
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-23 02:43:01 +09:00
YeonGyu-Kim
07113ebe94
fix(features/task-toast-manager): replace as any with ClientWithTui type
...
Add ClientWithTui local type for tui.showToast access
Remove 2 as any casts and eslint-disable comments
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-23 02:42:32 +09:00
YeonGyu-Kim
a3e4f904a6
refactor(background-agent): wire session-idle-event-handler into manager, add unit tests
...
The extracted handleSessionIdleBackgroundEvent was never imported by
manager.ts — dead code from incomplete refactoring (d53bcfbc ). Replace
the inline session.idle handler (58 LOC) with a call to the extracted
function, remove unused MIN_IDLE_TIME_MS import, and add 13 unit tests
covering all edge cases.
2026-02-22 15:30:40 +09:00
YeonGyu-Kim
d1e5bd63c1
fix: address Oracle + Cubic review feedback for background-agent refactoring
...
- Revert getMessageDir to original join(MESSAGE_STORAGE, sessionID) behavior
- Fix dead subagentSessions.delete by capturing previousSessionID before tryFallbackRetry
- Add .unref() to process cleanup setTimeout to prevent 6s hang on Ctrl-C
- Add missing isUnstableAgent to fallback retry input mapping
- Fix process-cleanup tests to use exit listener instead of SIGINT at index 0
- Swap test filenames in compaction-aware-message-resolver to exercise skip logic correctly
2026-02-22 12:14:26 +09:00
YeonGyu-Kim
8d66d5641a
test(background-agent): add unit tests for extracted modules
...
Add 104 new tests across 4 test files:
- error-classifier.test.ts (80 tests): isRecord, isAbortedSessionError, getErrorText, extractErrorName, extractErrorMessage, getSessionErrorMessage
- fallback-retry-handler.test.ts (19 tests): retry logic, fallback chain, concurrency release, session abort, queue management
- process-cleanup.test.ts (7 tests): signal registration, multi-manager shutdown, cleanup on unregister
- compaction-aware-message-resolver.test.ts (13 tests): compaction agent detection, message resolution with temp dirs (pre-existing, verified)
Total background-agent tests: 161 -> 265 (104 new, 0 regressions)
2026-02-22 11:59:06 +09:00
YeonGyu-Kim
d53bcfbced
refactor(background-agent): extract inline logic from manager.ts into focused modules
...
Extract 5 concerns from BackgroundManager into dedicated modules:
- error-classifier.ts: enhance with extractErrorName, extractErrorMessage, getSessionErrorMessage, isRecord
- fallback-retry-handler.ts: standalone tryFallbackRetry with full retry logic
- process-cleanup.ts: registerManagerForCleanup/unregisterManagerForCleanup
- compaction-aware-message-resolver.ts: isCompactionAgent/findNearestMessageExcludingCompaction
- Delete notification-builder.ts (duplicate of background-task-notification-template.ts)
Manager.ts method bodies now delegate to extracted modules.
Wire duration-formatter.ts and task-poller.ts (existing but unused).
manager.ts: 2036 -> 1647 LOC (19% reduction).
All 161 existing tests pass unchanged.
2026-02-22 11:58:57 +09:00
YeonGyu-Kim
fe415319e5
fix: resolve publish blockers for v3.7.4→v3.8.0 release
...
- Fix #1991 crash: optional chaining for task-history sessionID access
- Fix #1992 think-mode: add antigravity entries to HIGH_VARIANT_MAP
- Fix #1949 Copilot premium misattribution: use createInternalAgentTextPart
- Fix #1982 load_skills: pass directory to discoverSkills for project-level skills
- Fix command priority: sort scopePriority before .find(), project-first return
- Fix Google provider transform: apply in userFallbackModels path
- Fix ralph-loop TUI: optional chaining for event handler
- Fix runtime-fallback: unify dual fallback engines, remove HTTP 400 from retry,
fix pendingFallbackModel stuck state, add priority gate to skip model-fallback
when runtime-fallback is active
- Fix Prometheus task system: exempt from todowrite/todoread deny
- Fix background_output: default full_session to true
- Remove orphan hooks: hashline-edit-diff-enhancer (redundant with hashline_edit
built-in diff), task-reminder (dead code)
- Remove orphan config entries: 3 stale hook names from Zod schema
- Fix disabled_hooks schema: accept arbitrary strings for forward compatibility
- Register json-error-recovery hook in tool-guard pipeline
- Add disabled_hooks gating for question-label-truncator, task-resume-info,
claude-code-hooks
- Update test expectations to match new behavior
2026-02-21 16:24:18 +09:00
YeonGyu-Kim
8623f58a38
fix: resolve 5 deployment blockers (runtime-fallback race, hashline legacy, tmux spawn, db open)
...
- runtime-fallback: guard session.error with sessionRetryInFlight to prevent
double-advance during active retry; expand session.stop abort to include
sessionAwaitingFallbackResult; remove premature pendingFallbackModel clearing
from auto-retry finally block
- hashline-edit: add HASHLINE_LEGACY_REF_PATTERN for backward-compatible
LINE:HEX dual-parse in parseLineRef and normalizeLineRef
- tmux-subagent: defer session on null queryWindowState; unconditionally
re-queue deferred session on spawn failure (not just close+spawn)
- ultrawork-db: wrap new Database(dbPath) in try/catch to handle corrupted DB
- event: add try/catch guards around model-fallback logic in message.updated,
session.status, and session.error handlers
2026-02-21 05:59:30 +09:00
YeonGyu-Kim
5c83fee619
feat(ralph-loop): add strategy option for fresh context per iteration
...
Closes #1901
Add 'default_strategy' config option (default: 'continue') to control whether ralph-loop creates a new session per iteration ('reset') or keeps the same session ('continue'). The 'reset' strategy keeps the model in the smart zone by starting with fresh context for each iteration.
Supports --strategy flag for per-command override.
2026-02-21 05:33:53 +09:00
YeonGyu-Kim
b1eccf7425
docs: update all 31 AGENTS.md files with current project state
2026-02-21 04:38:18 +09:00
YeonGyu-Kim
fb4530cafe
fix(provider-matching): normalize provider names to lowercase for connectivity checks
...
🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode )
2026-02-21 03:33:20 +09:00
YeonGyu-Kim
9059a4fdbc
fix(model-requirements): remove custom quotio provider, restore standard providers
2026-02-21 03:03:57 +09:00
YeonGyu-Kim
481106a12e
Merge branch 'pr-1959' into dev
...
# Conflicts:
# src/hooks/index.ts
# src/plugin/event.ts
# src/tools/delegate-task/sync-task.ts
2026-02-21 02:49:39 +09:00
YeonGyu-Kim
148687c7fe
fix: remove unused spawnFailed variable (dead code)
2026-02-21 02:43:24 +09:00
YeonGyu-Kim
52f62c3fda
fix(tmux-deferred): add TTL/max-size guards, null-state exit, and spawn atomicity
...
- BUG-3: Add DEFERRED_SESSION_TTL_MS (5min) and MAX_DEFERRED_QUEUE_SIZE (20) to prevent unbounded growth
- BUG-15: Track consecutive null window states, stop polling after 3 nulls to prevent immortal loop
- BUG-6: Track close+spawn failure and re-queue deferred session for retry
2026-02-21 02:43:24 +09:00
youming.tang
cd3e0ca124
fix(session-category-registry): cleanup entries for task sessions
2026-02-21 02:31:42 +09:00
YeonGyu-Kim
95491675e8
fix: correct spread order in spawner.ts for tool restrictions
2026-02-21 02:29:00 +09:00
sjawhar
03f7643ee1
fix(background-agent): respect agent tool restrictions in background task launch
...
Reorder tool permission spread so getAgentToolRestrictions() comes
last, allowing agent-specific restrictions to override defaults.
Fixes all 3 sites: task-starter.ts (startTask), manager.ts (startTask
and resume paths).
Previously, defaults like call_omo_agent:true would stomp agent
restrictions (e.g., explore's call_omo_agent:false) due to JS
spread semantics.
2026-02-21 02:29:00 +09:00
VespianRex
bf51919a79
Address review feedback for fallback fixes
2026-02-20 17:46:12 +02:00
VespianRex
f5f1d1d4c2
Fix model fallback across main/background/sync agents
2026-02-20 17:45:53 +02:00
YeonGyu-Kim
2021080e7c
Merge pull request #1844 from liu-qingyuan/fix/tmux-split-defer-fifo
...
fix(tmux): prefer split-or-defer with FIFO deferred attach
2026-02-20 11:55:32 +09:00
liu-qingyuan
5f78c07189
fix(tmux): align deferred attach behavior after rebase
2026-02-20 07:13:33 +08:00
liu-qingyuan
d2dc25e567
fix(tmux): address review feedback for split/defer reliability
2026-02-20 07:09:49 +08:00
liu-qingyuan
541f0d354d
fix(tmux): prefer split-or-defer with FIFO deferred attach
2026-02-20 07:09:49 +08:00
Maxim Harizanov
850fb0378e
fix(copilot): mark internal hook injections as agent-initiated
...
Apply the internal initiator marker to automated continuation, recovery, babysitter, stop-hook, and hook-message injections so Copilot attribution consistently sets x-initiator=agent for system-generated prompts.
2026-02-19 13:17:02 +02:00
Maxim Harizanov
64e8e164aa
fix(copilot): mark internal background notifications as agent-initiated
2026-02-19 13:17:02 +02:00
YeonGyu-Kim
bd2e23584b
docs: update AGENTS.md metadata
...
🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode )
2026-02-19 10:46:40 +09:00
YeonGyu-Kim
a28e989f83
docs: add module-level AGENTS.md for mcp-oauth, atlas, rules-injector, background-task, call-omo-agent, lsp
...
🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode )
2026-02-19 10:46:40 +09:00
YeonGyu-Kim
096db59399
fix(run): inherit main-session tool permissions for continuation prompts
2026-02-18 21:10:21 +09:00
YeonGyu-Kim
7b3a64b77e
test(tmux): add boundary tests for exact split threshold with 0 agent panes
2026-02-18 17:33:26 +09:00
YeonGyu-Kim
e2e89b1f57
fix(tmux): skip agent area width guard when 0 agent panes exist
...
When no agent panes exist, mainPane.width equals windowWidth, making
agentAreaWidth zero. The early return guard blocked initial pane creation
before the currentCount === 0 handler could execute.
Add currentCount > 0 condition so the guard only fires when agent panes
already exist, allowing the bootstrap handler to evaluate canSplitPane.
Closes #1939
2026-02-18 17:30:05 +09:00
YeonGyu-Kim
96ff1e00cc
chore: upgrade claude-sonnet-4-5 to claude-sonnet-4-6 across codebase
2026-02-18 15:51:24 +09:00
YeonGyu-Kim
3313ec3e4f
chore: regenerate AGENTS.md knowledge base
...
🤖 Generated with [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode ) assistance
2026-02-18 01:26:19 +09:00
YeonGyu-Kim
d0bd24bede
fix(cli-run): rely on continuation markers for completion
...
Use hook-written continuation marker state to gate run completion checks and remove the noisy event-stream shutdown timeout log in run mode.
2026-02-17 17:50:47 +09:00
YeonGyu-Kim
991dcdb6c1
Merge pull request #1845 from iyoda/refactor/consolidate-port-utils
...
refactor(mcp-oauth): consolidate duplicate port utilities into shared/port-utils
2026-02-17 15:59:51 +09:00
YeonGyu-Kim
1fb6a7cc80
refactor: remove 16 orphaned files from background-agent
2026-02-17 14:08:38 +09:00
YeonGyu-Kim
744dee70e9
refactor: remove 3 orphaned files and unused import from tmux-subagent
2026-02-17 14:08:28 +09:00
YeonGyu-Kim
0265fa6990
refactor: remove 3 orphaned files from background-agent/spawner
2026-02-17 14:08:12 +09:00
YeonGyu-Kim
aac79f03b5
docs: regenerate all AGENTS.md files from comprehensive codebase exploration
...
- Fired 33 parallel explore agents across all major directories
- Analyzed 1164 TS files, 133k LOC, 41 hooks, 26 tools, 11 agents, 18 features
- Regenerated 13 AGENTS.md files with 905 total lines
- Root: plugin architecture, initialization flow, 7 OpenCode hook handlers
- src/: entry point orchestration, hook composition pipeline
- agents/: 11 agent inventory with tool restrictions and factory patterns
- hooks/: 41 hooks organized by 5 tiers, key complex hooks documented
- tools/: 26 tools across 14 directories, delegation categories
- features/: 18 modules mapped by complexity (HIGH/MEDIUM/LOW)
- shared/: 101 utilities in 13 categories, model resolution pipeline
- config/: 22 schema files, Zod v4 validation system
- cli/: 5 commands, doctor checks, model fallback system
- mcp/: 3-tier MCP system architecture
- plugin-handlers/: 6-phase config loading pipeline
- claude-code-hooks/: CC settings.json compatibility layer
- claude-tasks/: task schema + file-based persistence
🤖 Generated with assistance of oh-my-opencode
2026-02-17 11:17:01 +09:00
YeonGyu-Kim
72fa2c7e65
fix(tmux): stop layout override after spawn, use configured main pane size
...
Remove applyLayout(select-layout main-vertical) call after spawn which
was destroying grid arrangements by forcing vertical stacking. Now only
enforceMainPaneWidth is called, preserving the grid created by manual
split directions. Also fix enforceMainPaneWidth to use config's
main_pane_size percentage instead of hardcoded 50%.
2026-02-17 09:50:17 +09:00
YeonGyu-Kim
b3c5f4caf5
fix(tmux): use actual pane dimensions and configured min width for grid calculation
...
Agent area width now uses real mainPane.width instead of hardcoded 50%
ratio. Grid planning, split availability, and spawn target finding now
respect user's agent_pane_min_width config instead of hardcoded
MIN_PANE_WIDTH=52, enabling 2-column grid layouts on narrower terminals.
2026-02-17 09:48:18 +09:00
YeonGyu-Kim
84a83922c3
fix: stop tracking sessions that never become ready
...
When session readiness times out, immediately close the spawned pane and skip tracking to prevent stale mappings from causing reopen and close anomalies.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-17 03:40:55 +09:00