Commit Graph

5111 Commits

Author SHA1 Message Date
YeonGyu-Kim a3595c415f fix(plugin): disable duplicate OMO plugin startup 2026-05-28 14:42:52 +09:00
YeonGyu-Kim a6c05e1823 fix(config): scan active opencode profile plugins 2026-05-28 14:42:28 +09:00
YeonGyu-Kim 4635d61ada fix(background-agent): defer parent wake during active turns 2026-05-27 16:17:30 +09:00
YeonGyu-Kim fe051ebab7 Merge pull request #4553 from code-yeongyu/ulw/codex-hephaestus-dup
fix: skip claude hook injection for internal prompts
2026-05-27 14:31:51 +09:00
YeonGyu-Kim f204390b43 fix: reserve completed heading for final background wake 2026-05-27 14:27:26 +09:00
YeonGyu-Kim 80fa692b34 Merge pull request #4554 from code-yeongyu/code-yeongyu/fix-opencode-session-stall
fix(delegate-task): start sync prompts asynchronously
2026-05-27 14:26:23 +09:00
YeonGyu-Kim 27f956ecec fix(delegate-task): start sync prompts asynchronously 2026-05-27 14:22:14 +09:00
YeonGyu-Kim 77a268f91e fix: skip claude hook injection for internal prompts 2026-05-27 14:17:46 +09:00
ToToKr c0d3044629 Merge pull request #4278 from MoerAI/fix/log-agent-skip-on-missing-model
fix(agents): log warning when a builtin agent is silently skipped due to model availability (fixes #4150)
2026-05-27 13:42:21 +09:00
ToToKr b7ac05a9b5 Merge pull request #4248 from MoerAI/fix/getskillbyname-short-name
fix(opencode-skill-loader): align getSkillByName with short-name matching (fixes #4183)
2026-05-27 13:40:46 +09:00
ToToKr eaa73e9d08 Merge pull request #4245 from MoerAI/fix/runtime-fallback-zai-limit-exhausted
fix(runtime-fallback): match ZAI 'Limit Exhausted' quota errors (fixes #4207)
2026-05-27 13:38:43 +09:00
YeonGyu-Kim 9a9ff8674e fix(builtin-skills): document Codex tool mapping 2026-05-27 00:34:37 +09:00
YeonGyu-Kim f9bbe0517b fix(team-mode): fix lifecycle-test-fixture ask type + update bun.lock 2026-05-26 18:51:25 +09:00
YeonGyu-Kim 03396344f9 Merge pull request #4469 from SoShymKing/add-support-tool-result
Add support for OpenCode 1.15 DB
2026-05-26 18:45:21 +09:00
YeonGyu-Kim 52ba1257b6 Merge branch 'fix/pre-publish-blockers-v4.5.0'
Pre-publish blockers for v4.5.0:
- fix(runtime-fallback): gate retryable signal on status-code allowlist (f05e0cbe9)
- fix(parent-wake): bound assistant-text defer to escape stuck sessions (69c955f61)
- fix(ralph-loop): time-bound oracle dispatch wait to prevent stall (14b3523af)
- test(dist-bundle): assert inlined prompt content survives bundling (3e0a975d1)
- fix(package): block internal-only assets from publish payload (8e28e29c2)

Verified via publish-debate-vortex hyperultradebate (6 hostile agents, 3 rounds).
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-26 16:44:50 +09:00
YeonGyu-Kim ec552bcf34 fix(ralph-loop): stop loop when latest assistant turn made no model progress
Add no-progress turn detector that inspects the most recent assistant
message: if finish is 'unknown', all token counts are zero, and there
is no meaningful content beyond step-start/step-finish markers, the
turn is classified as no-progress.

Integrate the check at all three idle/completion/error continuation
points in the event handler so the loop stops cleanly with a warning
toast instead of injecting another internal prompt.
2026-05-26 14:28:35 +09:00
MoerAI 44f057df05 Merge remote-tracking branch 'upstream/dev' into fix/log-agent-skip-on-missing-model 2026-05-26 11:10:03 +09:00
YeonGyu-Kim 3b421c6ed3 fix(background-agent): isolate dispatched parent wake failures
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-26 01:42:56 +09:00
YeonGyu-Kim b03e08b474 Merge pull request #4478 from code-yeongyu/fix-4164-bg-reminder-timing
fix(parent-wake-notifier): deliver background completion reminders during active parent turn (#4164)
2026-05-26 01:42:33 +09:00
YeonGyu-Kim ec7ce51ea6 fix(background-agent): debounce active parent wake flushes
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-26 01:30:17 +09:00
YeonGyu-Kim 6a561446ec fix(background-agent): deliver completion wakes during active parent turns
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-26 01:30:17 +09:00
YeonGyu-Kim e443e86d61 fix(thinking-block-validator): avoid duplicate thinking prepends
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-26 01:29:23 +09:00
YeonGyu-Kim 58025f9ba4 fix(team-mode): wake leaders on unread mailbox messages (#4464)
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-26 00:59:38 +09:00
soshymking aa97341cc9 Add support for OpenCode 1.15 DB 2026-05-25 20:12:22 +09:00
YeonGyu-Kim 28efc4e81f fix(continuation): resolve registered agent name before dispatching prompt (#4417)
/start-work was unresponsive under Atlas because ralph-loop and todo-continuation-enforcer normalized the inherited agent to a config key (e.g. 'atlas') while OpenCode only accepts the registered display name (e.g. 'Atlas (Plan Executor)'), producing 'Agent not found' on dispatch.

Prefer resolveRegisteredAgentName(agent) and fall back to normalizeAgentForPromptKey only when no registration exists, mirroring the start-work hook's resolution chain.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-25 17:48:32 +09:00
YeonGyu-Kim a5cee76961 fix(prompt-async-gate): retry object-form path on runtime type error (#4417)
Atlas task() with run_in_background=false crashed with 'The "path" property must be of type string, got object' from Node's path.isAbsolute validation upstream of the SDK.

All callers (sync-prompt-sender, boulder-continuation-injector, idle-event, session-route, model-suggestion-retry) already route through dispatchInternalPrompt, so centralizing the compatibility shim in prompt-async-gate.ts covers every Bug 1 site without touching individual hooks.

On TypeError matching the object-path signature, retry once with path collapsed to its id string. Types broaden PromptSessionPath to string | { id }.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-25 17:48:14 +09:00
YeonGyu-Kim 94d9d93212 Merge pull request #4453 from code-yeongyu/fix-4419-atlas-subagent-fallback
fix(background-agent): atlas subagent fallback retry on retryable model errors (#4419)
2026-05-25 17:33:03 +09:00
YeonGyu-Kim 0d0be4352d Merge pull request #4452 from code-yeongyu/fix-4449-tool-execute-after-stall
fix(tool-execute-after): prevent session stall on metadata recovery failure (#4449)
2026-05-25 17:27:54 +09:00
YeonGyu-Kim f57532cbdb fix(tool-execute-after): narrow metadata warning tools
Remove non-store tool names from the metadata recovery warning gate so call_omo_agent and dead aliases fail open without warning spam. Keep warnings for tools backed by the recovery store: background_output, edit, and task.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-25 17:17:11 +09:00
YeonGyu-Kim 6551f3893c fix(background-agent): retry Atlas subagents on usage limits
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-25 17:09:52 +09:00
YeonGyu-Kim 4a68db029d fix(tool-execute-after): gate metadata recovery warnings
Root cause: tool.execute.after attempted metadata recovery for every tool, including built-in tools that never publish recoverable OMO metadata. On Windows this produced repeated recovery warnings across read/bash/glob/grep/todowrite/lsp/apply_patch and amplified stalled-session diagnostics, while metadata-linked tools still needed diagnostic visibility when their linkage was stale.

Limit the warning to tools expected to publish recoverable metadata and keep all other built-in tools fail-open after missing metadata.

Fixes #4449

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-25 17:06:22 +09:00
YeonGyu-Kim 75d1ff4c87 fix(plugin-handlers): deny task for read-only subagents
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-25 16:55:21 +09:00
YeonGyu-Kim 9be97de641 Merge pull request #4435 from code-yeongyu/fix/issue-4429-team-mode-model-override
fix(agents): preserve user model overrides when team_mode enabled
2026-05-25 11:18:18 +09:00
YeonGyu-Kim eed88e4181 feat(help): #689 acp help JSON schema 2026-05-25 11:11:52 +09:00
YeonGyu-Kim 1fdb88a355 feat(help): #688 sandbox help JSON schema 2026-05-25 11:09:56 +09:00
YeonGyu-Kim 36e394a53d feat(help): #687 status help JSON schema 2026-05-25 11:08:15 +09:00
YeonGyu-Kim 21713dcd86 fix(agents): preserve model overrides with team mode
Filter host config agent aliases with the same protected builtin-name rules used for external agent sources so stale display-name entries cannot replace resolved user-configured models when team mode is enabled.

Fixes #4429

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-25 11:06:37 +09:00
YeonGyu-Kim 776da68e8b feat(help): #686 doctor help JSON schema 2026-05-25 11:05:41 +09:00
YeonGyu-Kim ce4b11b0d3 fix(cli): add explicit helpOption configuration for consistent help-flag ordering
Add explicit .helpOption('-h, --help') call to the Commander program configuration so the help option is explicitly defined rather than relying on Commander.js lazy initialization. Add corresponding test to pin the behavior.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-25 11:00:37 +09:00
YeonGyu-Kim 3e0a975d1f test(dist-bundle): assert inlined prompt content survives bundling
After the prompts-core migration the TypeScript prompt sources were
deleted; the only mechanism delivering markdown prompts to npm users
is bun build inlining via bunfig.toml [loader] ".md" = "text"
and import attributes. bun test runs from src/index.ts, not from
dist/index.js, so a future Bun upgrade that silently regresses
markdown inlining would pass source tests green while the published
bundle is broken with Cannot find module ../prompts/atlas/default.md
at first agent load.

Add a smoke test that scans the built dist/index.js for unique
signature strings from each migrated prompt file (15 signatures:
3 ultrawork + 5 atlas + 3 prometheus + 4 mode prompts). Skips
gracefully if dist/index.js does not exist (local bun test before
build). Wire into the existing CI Verify dist bundle tests step in
.github/workflows/ci.yml so the regression catches in CI build.

Closes pre-publish blocker V1 and V33.
2026-05-25 01:33:06 +09:00
YeonGyu-Kim 14b3523af6 fix(ralph-loop): time-bound oracle dispatch wait to prevent stall
The double-fire race fix (#4256) had handlePendingVerification return
early when verification_attempt_id was set but verification_session_id
was not, since the oracle dispatch is still in flight. That guard
introduced a permanent-stall failure mode: if tool-execute-after never
runs (oracle session hangs, crashes, OOM-killed, or tmux killed
externally), verification_session_id stays undefined forever and the
ralph-loop never escapes the pending-verification state.

Track verification_attempt_started_at as a state field, clear it on
restart/clear/setVerificationSessionID, and fall through to
handleFailedVerification when the attempt has been pending past
STUCK_VERIFICATION_TIMEOUT_MS (30 minutes). Legacy persisted states
without the timestamp continue to defer (no timeout to evaluate),
matching pre-fix behavior for that edge case.

Closes pre-publish blocker V25.
2026-05-25 01:32:49 +09:00
YeonGyu-Kim 69c955f61f fix(parent-wake): bound assistant-text defer to escape stuck sessions
shouldDeferParentWakeForSessionHistory previously had only one escape
path from the defer state: stale pending tool call. If the assistant
had unfinished text but no pending tool call (session crashed
mid-stream, model errored after partial text, network died), the
escape never fired and parent-wake deferred forever. Background-agent
completions never woke the parent.

Add a second escape: when the assistant text blocks but no tool wait
is pending, dispatch the wake after toolCallDeferMaxMs anyway. The
prompt-async-gate still defends if the assistant text turns out to be
live; we just stop deferring indefinitely.

Closes pre-publish blocker V11.
2026-05-25 01:32:35 +09:00
YeonGyu-Kim f05e0cbe99 fix(runtime-fallback): gate retryable signal on status-code allowlist
extractRetryableSignal returns the raw isRetryable hint from up to 5
nested AI SDK error paths. isRetryableError previously trusted any
true result blindly, which would burn every configured fallback model
in an infinite loop if a provider mis-tagged a 401, 403, or other
non-transient 4xx as retryable.

Honor the signal only when the status code is absent, in the configured
retry_on_errors list, in 5xx, or in {408, 425, 429}. Reject the signal
when the status code is a non-transient 4xx and log the rejection so
operators can debug provider mis-classifications.

Closes pre-publish blocker V8.
2026-05-25 01:32:23 +09:00
YeonGyu-Kim 222adeb606 fix(runtime-fallback): honor retryable signal 2026-05-25 00:03:29 +09:00
YeonGyu-Kim de7f1d887d Merge pull request #4400 from code-yeongyu/refactor/prompts-core-oracle-cleanup
refactor(prompts-core): address Oracle caveats — stale AGENTS.md docs + byte-exact characterization tests
2026-05-24 19:22:49 +09:00
YeonGyu-Kim 8f09c02cc0 docs: scrub remaining references to migrated files
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-24 19:16:03 +09:00
YeonGyu-Kim d18cadb1ab test(ultrawork): add byte-exact characterization test
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-24 19:16:03 +09:00
YeonGyu-Kim e0b37b46d5 test(prometheus): add byte-exact characterization test
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-24 19:16:03 +09:00
YeonGyu-Kim 9d204250ee docs(keyword-detector): rewrite AGENTS.md for prompts-core migration
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-24 19:16:02 +09:00
YeonGyu-Kim 87e28d2607 docs(prometheus): rewrite AGENTS.md for thin-loader structure
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-24 19:16:02 +09:00