YeonGyu-Kim
53403eeaad
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
0be74980db
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
cb49ab1d67
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
a4b841b929
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
ace914f1ef
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
e4a335a8e9
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
e7697567d5
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
ce55256eaf
docs: update all 31 AGENTS.md files with current project state
2026-02-21 04:38:18 +09:00
YeonGyu-Kim
86cc394f4a
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
8a8d21e7bb
fix(model-requirements): remove custom quotio provider, restore standard providers
2026-02-21 03:03:57 +09:00
YeonGyu-Kim
82e4bf07d2
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
ef888a67c7
fix: remove unused spawnFailed variable (dead code)
2026-02-21 02:43:24 +09:00
YeonGyu-Kim
b8c6897e15
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
95b376fc96
fix(session-category-registry): cleanup entries for task sessions
2026-02-21 02:31:42 +09:00
YeonGyu-Kim
b8c8762e13
fix: correct spread order in spawner.ts for tool restrictions
2026-02-21 02:29:00 +09:00
sjawhar
6247bf1f78
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
8ccb1eaef0
Address review feedback for fallback fixes
2026-02-20 17:46:12 +02:00
VespianRex
ff78a7f46a
Fix model fallback across main/background/sync agents
2026-02-20 17:45:53 +02:00
YeonGyu-Kim
864d58740d
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
2d020f3f23
fix(tmux): align deferred attach behavior after rebase
2026-02-20 07:13:33 +08:00
liu-qingyuan
12bda2d08b
fix(tmux): address review feedback for split/defer reliability
2026-02-20 07:09:49 +08:00
liu-qingyuan
7bfbea1a06
fix(tmux): prefer split-or-defer with FIFO deferred attach
2026-02-20 07:09:49 +08:00
Maxim Harizanov
36861e0b58
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
dcfe72e989
fix(copilot): mark internal background notifications as agent-initiated
2026-02-19 13:17:02 +02:00
YeonGyu-Kim
2df6655d1e
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
6fc1b8430b
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
dba7a1e07c
fix(run): inherit main-session tool permissions for continuation prompts
2026-02-18 21:10:21 +09:00
YeonGyu-Kim
641daf91e1
test(tmux): add boundary tests for exact split threshold with 0 agent panes
2026-02-18 17:33:26 +09:00
YeonGyu-Kim
c397e802c0
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
8ea24d26d2
chore: upgrade claude-sonnet-4-5 to claude-sonnet-4-6 across codebase
2026-02-18 15:51:24 +09:00
YeonGyu-Kim
a70ae411b0
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
3659c50350
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
94dc6f14f5
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
37d7247075
refactor: remove 16 orphaned files from background-agent
2026-02-17 14:08:38 +09:00
YeonGyu-Kim
304faf71ca
refactor: remove 3 orphaned files and unused import from tmux-subagent
2026-02-17 14:08:28 +09:00
YeonGyu-Kim
d22c2f8a49
refactor: remove 3 orphaned files from background-agent/spawner
2026-02-17 14:08:12 +09:00
YeonGyu-Kim
0a3c1bdd0f
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
6abe98fb4c
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
34f212c2cb
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
c7ed266806
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
YeonGyu-Kim
b29d3ce382
fix: size main pane using configured layout percentage
...
Main pane resize now uses main_pane_size instead of a hardcoded 50 percent fallback so post-split layout remains stable and predictable.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-17 03:40:46 +09:00
YeonGyu-Kim
3974fce4fb
fix: align split targeting with configured pane width
...
Use the configured agent pane width consistently in split target selection and avoid close+spawn churn by replacing the oldest pane when eviction is required.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-17 03:40:37 +09:00
YeonGyu-Kim
3e06d280a9
fix: prevent overlapping poll cycles in managers
...
Guarding polling re-entry avoids stacked async polls under slow responses, and unref on pending-call cleanup timer reduces idle wakeups.
2026-02-17 03:06:40 +09:00
YeonGyu-Kim
e0ec44bea9
fix: skip compaction messages in parent-session context lookup
2026-02-17 02:03:03 +09:00
YeonGyu-Kim
c211b31d3e
Merge branch 'dev' into fix/1671-tmux-layout
2026-02-17 01:54:08 +09:00
YeonGyu-Kim
12aae86dec
Merge pull request #1895 from code-yeongyu/fix/1718-windows-subagent-dir
...
fix: use correct project directory for Windows subagents (#1718 )
2026-02-17 01:53:43 +09:00
YeonGyu-Kim
1c8e7dba9e
fix: apply tmux layout config during pane spawning ( #1671 )
2026-02-17 01:36:01 +09:00
YeonGyu-Kim
1159f76d65
Merge pull request #1870 from dankochetov/fix/background-notification-hook-gate
...
fix(background-agent): honor disabled background-notification for system reminders
2026-02-17 01:35:21 +09:00
YeonGyu-Kim
f82f4b7288
Merge pull request #1819 from jonasherr/feat/add-playwright-cli-provider
...
feat(browser-automation): add playwright-cli as browser automation provider
2026-02-17 01:34:34 +09:00
YeonGyu-Kim
2f08c1d316
fix: use correct project directory for Windows subagents ( #1718 )
2026-02-17 01:29:25 +09:00