YeonGyu-Kim
8c5f9b8082
fix(background-agent): skip terminal tasks during stale pruning
...
Prevent TTL pruning from deleting terminal tasks before delayed notification cleanup runs.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-11 20:50:49 +09:00
YeonGyu-Kim
3550305af8
Merge branch 'dev' into fix/issue-2232
2026-03-11 20:20:04 +09:00
YeonGyu-Kim
413e8b73b7
Add session permission support to background agents for denying questions
...
Implements question-denied session permission rules when creating child
sessions via background task delegation. This prevents subagents from
asking questions by passing explicit permission configuration during
session creation.
🤖 GENERATED WITH ASSISTANCE OF OhMyOpenCode
2026-03-11 19:42:46 +09:00
YeonGyu-Kim
1120885fd0
fix(background-agent): release interrupted task slots during startup cleanup
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-09 12:36:49 +09:00
YeonGyu-Kim
85aa744c8a
fix(background-agent): clear toast tracking when tasks stop
...
🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode )
2026-03-09 11:39:04 +09:00
YeonGyu-Kim
beb89faa0f
Merge pull request #2388 from code-yeongyu/fix/background-output-undefined-status-2387
...
fix: handle undefined sessionStatus in pollRunningTasks (#2387 )
2026-03-08 23:54:58 +09:00
YeonGyu-Kim
dc370f7fa8
fix: handle undefined sessionStatus in pollRunningTasks ( #2387 )
...
When a completed session is no longer returned by session.status(),
allStatuses[sessionID] is undefined. Previously this fell through to
a 'still running' log, leaving the task stuck as running forever.
Match the sync-session-poller pattern: only continue (skip completion
check) when sessionStatus EXISTS and is not idle. When undefined,
fall through to validateSessionHasOutput + checkSessionTodos +
tryCompleteTask, same as idle.
2026-03-08 23:42:11 +09:00
YeonGyu-Kim
2b5dec5333
fix(background-agent): use compaction-aware prompt context in manager
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-08 02:23:33 +09:00
YeonGyu-Kim
c789baf1d9
fix(background-agent): merge prompt context across compaction gaps
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-08 02:23:27 +09:00
YeonGyu-Kim
fade6740ae
chore: update GPT-5.2 references to GPT-5.4
...
Align runtime defaults, tests, docs, and generated artifacts with the newer GPT-5.4 baseline. Keep think-mode and prompt-routing expectations consistent after the model version bump.
2026-03-07 05:46:05 +09:00
YeonGyu-Kim
23dcd99c9a
docs(agents): refresh generated AGENTS guides
...
🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode )
2026-03-06 17:59:05 +09:00
YeonGyu-Kim
33d39597ae
docs(agents): regenerate AGENTS.md hierarchy with updated metrics and model configs
...
- 1208→1243 TS files (+35), 143k→155k LOC (+12k)
- Update all agent models: Sisyphus, Hephaestus, Oracle, Librarian, Atlas, Metis, Momus
- Add 6 new hook directories (39→45 dirs): beast-mode-system, hashline-edit-diff-enhancer, anthropic-image-context, task-reminder, compaction-todo-preserver, runtime-fallback
- Update category models: visual-engineering/artistry gemini-3-pro→gemini-3.1-pro
- Add 2 config schema files: fallback-models.ts, runtime-fallback.ts
- Timestamp: 2026-03-02 | Commit: 1c2caa09
🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode )
2026-03-02 23:40:38 +09:00
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
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
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
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
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
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
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
096db59399
fix(run): inherit main-session tool permissions for continuation prompts
2026-02-18 21:10:21 +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
1fb6a7cc80
refactor: remove 16 orphaned files from background-agent
2026-02-17 14:08:38 +09:00
YeonGyu-Kim
0265fa6990
refactor: remove 3 orphaned files from background-agent/spawner
2026-02-17 14:08:12 +09:00
YeonGyu-Kim
2b5887aca3
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
285d8d58dd
fix: skip compaction messages in parent-session context lookup
2026-02-17 02:03:03 +09:00
YeonGyu-Kim
74be163df3
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
5aa9ecdd5d
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
5ae45c8c8e
fix: use correct project directory for Windows subagents ( #1718 )
2026-02-17 01:29:25 +09:00
YeonGyu-Kim
1ba330f8ca
refactor: remove unused code from background-agent, background-task, call-omo-agent
2026-02-16 22:11:29 +09:00
YeonGyu-Kim
731a331fbc
refactor: remove dead file message-storage-locator.ts
2026-02-16 22:09:10 +09:00
Dan Kochetov
9b187e2128
Merge remote-tracking branch 'origin/dev' into fix/background-notification-hook-gate
...
# Conflicts:
# src/features/background-agent/manager.ts
2026-02-16 13:56:33 +02:00
YeonGyu-Kim
1a6810535c
refactor: create normalizeSDKResponse helper and replace scattered patterns across 37 files
2026-02-16 18:20:19 +09:00
YeonGyu-Kim
5a6a9e9800
fix: defensive SDK response handling & parts-reader normalization
...
- Replace all response.data ?? [] with (response.data ?? response)
pattern across 14 files to handle SDK array-shaped responses
- Normalize SDK parts in parts-reader.ts by injecting sessionID/
messageID before validation (P1: SDK parts lack these fields)
- Treat unknown part types as having content in
recover-empty-content-message-sdk.ts to prevent false placeholder
injection on image/file parts
- Replace local isRecord with shared import in parts-reader.ts
2026-02-16 16:13:40 +09:00
YeonGyu-Kim
8d82025b70
fix: address Cubic round-4 P2 issues
...
- isTodo: allow optional id to match Todo interface, preventing
todos without ids from being silently dropped
- messageHasContentFromSDK: treat unknown part types as empty
(continue) instead of content (return true) for parity with
existing storage logic
- readMessagesFromSDK in recover-empty-content-message-sdk: wrap
SDK call in try/catch to prevent recovery from throwing
2026-02-16 16:13:40 +09:00
YeonGyu-Kim
c9c02e0525
refactor(shared): consolidate 13+ getMessageDir copies into single shared function
2026-02-16 16:13:39 +09:00