Commit Graph

6214 Commits

Author SHA1 Message Date
YeonGyu-Kim 6a8bdcaa25 feat(team-mode): add resolveCallerTeamLead helper
🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
2026-05-04 01:43:55 +09:00
cailgarrisk-collab 61d2f1195b fix(model-fallback): add HTTP statusCode check for GLM rate limit fallback
isRetryableModelError() now checks the HTTP status code (429/503/529)
in addition to existing message pattern matching. This ensures rate
limit errors trigger model fallback regardless of error message format
or language (e.g., Chinese GLM errors).

Changes:
- ErrorInfo interface extended with statusCode?: number
- isRetryableModelError() checks statusCode after STOP patterns, before
  message pattern fallback
- extractErrorStatusCode() added to error-classifier.ts (supports
  statusCode, status, code, response.status fields)
- GLM-specific STOP patterns added: daily call limit, in arrears,
  fair use policy, recharge and try — these prevent quota/billing 429s
  from being treated as transient rate limits
- statusCode propagated through tryFallbackRetry and manager.ts

400 intentionally excluded from statusCode check (permanent client error).
2026-05-03 11:59:13 +02:00
github-actions[bot] 9ba3b574a7 @tw-yshuang has signed the CLA in code-yeongyu/oh-my-openagent#3771 2026-05-03 09:43:40 +00:00
github-actions[bot] 9f60eaee16 @netizenXuan has signed the CLA in code-yeongyu/oh-my-openagent#3770 2026-05-03 09:38:17 +00:00
tw-yshuang 56e4044927 fix(atlas): block continuation while delegated tasks are pending
Atlas continuation only treated running background tasks as active work. When a delegated subagent had been launched but was still waiting for session creation, the task remained pending and Atlas could inject another continuation too early.

Treat pending tasks as active background work in the continuation injector and add regression coverage for the pending-session-creation race so delegated work is allowed to acquire a session before Atlas resumes the plan.

Tests: bun test src/hooks/atlas/boulder-continuation-injector.test.ts src/hooks/atlas/index.test.ts; bun run typecheck

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-03 17:24:46 +08:00
github-actions[bot] 6c51eac8bf @claudianus has signed the CLA in code-yeongyu/oh-my-openagent#3767 2026-05-02 23:44:40 +00:00
YeonGyu-Kim e17850cbab Merge pull request #3754 from code-yeongyu/refactor/background-task-naming-cleanup
refactor(background-agent): normalize task ID field naming to camelCase
2026-05-02 03:03:21 +09:00
YeonGyu-Kim da251c9b30 refactor(background-agent): normalize task ID field naming
Rename BackgroundTask and attempt ID fields to camelCase across background-agent consumers while moving BackgroundManager construction to a single config object.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-02 03:01:03 +09:00
github-actions[bot] 054ade9ced @nerored has signed the CLA in code-yeongyu/oh-my-openagent#3752 2026-05-01 16:41:09 +00:00
YeonGyu-Kim 1eadc26e91 Merge pull request #3750 from code-yeongyu/fix/posthog-keep-only-dau
fix(telemetry): keep only omo_daily_active for DAU/WAU/MAU
2026-05-02 00:43:43 +09:00
YeonGyu-Kim 425d0300fc docs(privacy): drop diagnostics retention reference (no diagnostics events collected) 2026-05-02 00:37:07 +09:00
YeonGyu-Kim 0d89294a91 docs(telemetry): align README + installation guide + privacy policy with single-event scope 2026-05-02 00:32:08 +09:00
YeonGyu-Kim d8d061c2b0 docs(privacy): narrow telemetry scope to omo_daily_active only 2026-05-02 00:11:03 +09:00
YeonGyu-Kim 92dab9285c refactor(telemetry): narrow PostHog client and mark omo_daily_active anonymous 2026-05-02 00:11:01 +09:00
YeonGyu-Kim b8a5f27dee refactor(telemetry): drop plugin_loaded capture from plugin entry 2026-05-02 00:10:59 +09:00
YeonGyu-Kim 14568db278 refactor(telemetry): drop run lifecycle events and captureException from runner 2026-05-02 00:10:57 +09:00
YeonGyu-Kim be2eee6306 refactor(telemetry): drop install events from cli-installer 2026-05-02 00:10:54 +09:00
YeonGyu-Kim 468e42f57e Merge pull request #3749 from code-yeongyu/fix/readonly-agent-delegation
fix(agents): allow Momus and Metis delegation
2026-05-01 19:32:11 +09:00
YeonGyu-Kim bae62ab582 fix(agents): allow Momus and Metis delegation
Keep Momus and Metis read-only for file edits while allowing task-based invocation for planning review workflows.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-01 19:27:25 +09:00
YeonGyu-Kim b88e32cbdd Merge pull request #3678 from MoerAI/fix/spawn-windows-hide-env
fix(bun-install): forward process.env so child bun install inherits proxy settings (fixes #3528)
2026-05-01 19:18:46 +09:00
YeonGyu-Kim c7da46ea5a Merge pull request #3679 from MoerAI/fix/file-uri-rejection-explanation
fix(resolve-file-uri): explain project boundary restriction in rejection warning (fixes #3554)
2026-05-01 19:18:43 +09:00
YeonGyu-Kim 6f79968aeb Merge pull request #3701 from MoerAI/fix/context-window-monitor-pct-clamp
fix(context-window-monitor): clamp displayed context status percentages so the directive stays trustworthy (fixes #3655)
2026-05-01 19:18:40 +09:00
YeonGyu-Kim bd41344c26 Merge pull request #3708 from mrosnerr/feat/cmux-notification-provider
feat(notification): add cmux as notification provider
2026-05-01 19:18:37 +09:00
YeonGyu-Kim 586bb3f551 Merge pull request #3711 from mrosnerr/fix/notification-scheduler-platform
fix(notification): session-idle notifications never fire due to stale platform
2026-05-01 19:18:34 +09:00
YeonGyu-Kim 793f24a62f Merge pull request #3715 from mrosnerr/fix/messages-transform-hook-isolation
fix(messages-transform): isolate hook failures so tool-pair-validator always runs
2026-05-01 19:18:31 +09:00
YeonGyu-Kim c3beb370a5 fix(doctor): detect gh when Bun.which misses it
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-01 18:56:09 +09:00
YeonGyu-Kim 9c4bcebb22 fix(plugin): normalize bare schema refs
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-01 18:55:57 +09:00
YeonGyu-Kim 9ba676330a fix(call-omo-agent): validate missing subagent type
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-01 18:55:47 +09:00
YeonGyu-Kim 0c39358ebe fix(keyword-detector): require skill evaluation in analyze mode
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-01 17:18:51 +09:00
auyua9 875fffb7d1 fix(background): exit after fatal cleanup 2026-05-01 16:04:03 +08:00
4rcadia f49afe7b91 refactor(agents): Add "max" to all codebase reasoning enums accordingly 2026-04-30 23:57:58 -04:00
github-actions[bot] 606f93e0e1 @Arcadi4 has signed the CLA in code-yeongyu/oh-my-openagent#3744 2026-05-01 03:52:39 +00:00
4rcadia 4c6fd2e5a8 chore(config): Allow option "max" for "reasoningEffort" field in schema 2026-04-30 23:49:19 -04:00
github-actions[bot] f8b22e1f76 @hashen10 has signed the CLA in code-yeongyu/oh-my-openagent#3741 2026-04-30 19:51:07 +00:00
github-actions[bot] a8744222fc @panoskava has signed the CLA in code-yeongyu/oh-my-openagent#3739 2026-04-30 18:00:53 +00:00
github-actions[bot] 1a91967311 release: v3.17.12 2026-04-30 17:23:26 +00:00
YeonGyu-Kim f7270a0f97 fix(model-error-classifier): scope forbidden-provider retry to specific phrase
Bare "403" and "forbidden" substring patterns (added in 034744cb to
retry the "Selected provider is forbidden" case from PR #3706) matched
any error message containing those tokens — tool-level 403s, file-perm
"forbidden" messages, unrelated upstream errors that happened to spell
"forbidden". The legacy model-fallback path then armed setPendingModelFallback
on those unrelated errors, jumping Sisyphus to claude-opus-4-7 (first
entry of its fallback chain) regardless of the user's configured model.

Replace the bare patterns with the specific phrases PR #3706 actually
targeted, and add regression tests asserting unrelated 403/forbidden
messages stay non-retryable.

Reported-by: ilove_borshch on Discord (#omo-help)
2026-05-01 01:25:01 +09:00
github-actions[bot] a663562dbe release: v3.17.11 2026-04-30 13:06:06 +00:00
YeonGyu-Kim 1a64060cc2 feat(agents): strengthen gpt-5.5 prompts with manual QA gate, dig-deeper trio, anti-fallback
- Add Manual QA Gate as a non-negotiable surface-tool mapping
  (interactive_bash for TUI, playwright for browser, curl for HTTP,
  driver script for library) to Hephaestus, Sisyphus-Junior, and
  Sisyphus' direct-execution mode.
- Restore the dig-deeper trio (tool persistence / dig deeper /
  dependency checks) as orthogonal paragraphs so each carries its
  own cognitive trigger instead of a fused single statement.
- Harden investigate-before-acting from a soft phrase to a dedicated
  block: never speculate about unread code, re-read on every
  task hand-off, the worktree may have changed.
- Add 'Parallelize aggressively' as its own block. Reads, searches,
  diagnostics, and background sub-agents all batch into a single
  response by default.
- Add 'No defensive code, no speculative legacy' to discourage
  speculative backward-compatibility branches and unrequested
  defensive validation.
- Absorb review-intent and frontend anti-slop coverage so the
  prompt stays self-sufficient when the omo agent prompt replaces
  the provider prompt.
- Replace literal apply_patch instructions with GPT_APPLY_PATCH_GUIDANCE
  (use edit/write tools) so the prompt no longer contradicts the
  apply_patch deny that the agent permission applies on GPT models.
- Sisyphus-Junior gains a Review tasks block and a default-behavior
  fallback for when the runtime category context is missing or sparse.
- Sisyphus gains an explicit Hard invariants block listing type-
  suppression bans, destructive-git bans, and Oracle-completion gating.
- Restore dynamic injections that round out the orchestrator/worker
  context: category+skills delegation guide, delegation table,
  Oracle dynamic guidance, key triggers, non-Claude planner
  reminder. Hephaestus regains optional category delegation while
  keeping direct execution as the default.
- Drop em dashes; search guidance points at rg directly throughout.
2026-04-30 20:30:57 +09:00
github-actions[bot] a469abd3a0 @guyua9 has signed the CLA in code-yeongyu/oh-my-openagent#3733 2026-04-30 09:19:39 +00:00
github-actions[bot] 1347d7ffad release: v3.17.10 2026-04-30 07:47:13 +00:00
YeonGyu-Kim 9a61c607ab fix(ci): treat npm OIDC exchange 201 as success in preflight
Empirically the npm registry returns HTTP 201 (Created) - not 200 -
when the OIDC token exchange succeeds and a fresh publish token is
issued. The preflight gate was only accepting 200 so every
correctly-configured package was flagged as missing. Accept any
2xx status; only treat 4xx/5xx as missing trust config.
2026-04-30 16:27:35 +09:00
YeonGyu-Kim ab5216f6c7 feat(ci): add preflight-trust gate before version bump
The publish workflow used to bump npm latest+1 *before* attempting
the platform publishes. When a platform package was missing its
trusted-publisher config the version was already incremented but
that platform never shipped, leaving partial-publish garbage
versions on npm (this happened with v3.17.7-v3.17.9 during the
OIDC migration).

Add a preflight-trust job that runs in parallel with test/typecheck
and verifies all 24 packages have a trusted publisher configured by
calling npm's own OIDC token exchange endpoint with the workflow's
GitHub OIDC token. publish-main now needs preflight-trust, so any
missing trust config fails the workflow before the version bump.

Failure output lists the exact npm.com URLs to configure each
missing package, plus the org/repo/workflow values to enter.
2026-04-30 16:22:26 +09:00
github-actions[bot] 017d48fa52 @yizhifengye has signed the CLA in code-yeongyu/oh-my-openagent#3731 2026-04-30 06:55:23 +00:00
yizhifengye 49c2a40251 fix(background-agent): detach error listener before running body to stop re-entrant log loop
When shutdown() itself emitted uncaughtException (e.g. EPIPE while closing
a broken pipe), the error listener re-entered itself, re-logged, re-ran
cleanup, and threw EPIPE again. The 6 s forced-exit timer could not fire
because every re-entry stalled the event loop with fresh synchronous work.

Users hit this after v3.17.5 and observed 100+ GB of log lines written to
disk within minutes, with one confirmed report of a 157 GB log file filling
the filesystem.

Detaching the listener with process.off() before running log() + handler()
breaks the loop at the first re-emit: the second event has no listener to
invoke, and the first invocation's scheduleForcedExit() proceeds normally.
2026-04-30 14:47:09 +08:00
YeonGyu-Kim fd85dad984 fix(ci): strip _authToken from .npmrc so OIDC takes precedence
After switching to npm Trusted Publishing the publish step still
returned 'PUT 404' because actions/setup-node injects an
'//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}' line into
.npmrc. With NODE_AUTH_TOKEN unset that placeholder evaluates to
an empty string, so npm tries an empty token before reaching for
the OIDC ID token and the registry rejects it.

- Add a step that strips any _authToken line from both project-
  local and $HOME/.npmrc before publishing, so npm CLI proceeds
  to OIDC token exchange.
- Bump publish commands to --loglevel verbose so future failures
  expose the actual auth path (provenance attestation, OIDC
  exchange, etc.) in workflow logs.
2026-04-30 15:19:43 +09:00
YeonGyu-Kim 48fc7bd459 fix(ci): switch npm publish to OIDC trusted publishing
NODE_AUTH_TOKEN expired (set 90 days ago, the npm token default
expiry) causing all publish runs to fail with 'PUT 404 Not Found'
since 2026-04-30.

Migrate publish.yml and publish-platform.yml to npm Trusted
Publishing (OIDC) so we no longer depend on long-lived secrets:

- Bump actions/setup-node v4 -> v6 (improves OIDC compatibility)
- Add 'npm install -g npm@latest' to guarantee npm CLI >= 11.5.1
  (the minimum required for trusted publishing).
- Drop NODE_AUTH_TOKEN env from every publish step. The npm CLI
  picks up the GitHub Actions OIDC token automatically.
- Keep --provenance / NPM_CONFIG_PROVENANCE=true (real-world
  reports indicate provenance is not auto-emitted yet).

Per-package trusted publisher must still be configured on
npmjs.com (Settings -> Trusted Publisher) for all 24 packages
(oh-my-opencode + oh-my-openagent main + 11 platform packages
each, dual-published) before the next publish run.
2026-04-30 14:48:36 +09:00
github-actions[bot] 216283e2b0 @aaronkyriesenbach has signed the CLA in code-yeongyu/oh-my-openagent#3727 2026-04-29 17:39:33 +00:00
acamq 002297b381 Merge pull request #3718 from ismetanin/fix/cached-version-per-plugin-sandbox
fix(auto-update-checker): read loaded plugin's package.json, not the legacy flat install
2026-04-29 08:16:19 -06:00
Ivan Smetanin 5291ee7d3d fix(auto-update-checker): prefer loaded module's package.json over flat-install candidates
The startup toast and `omo --version` were reading from the legacy flat install
at <CACHE_DIR>/node_modules/<pkg>/package.json, but OpenCode actually loads
plugins from a per-plugin sandbox at <CACHE_DIR>/<plugin-entry>/node_modules/
<pkg>/package.json. The two install layers can drift independently when bun
re-resolves "latest" against the flat install while the sandbox's package.json
stays pinned to a literal version baked in at first install.

In practice this means the toast can announce a version the runtime is not
running. Concrete reproduction: with `"oh-my-openagent@latest"` in the plugin
list, the sandbox stayed on 3.17.5 while the parallel flat install advanced to
3.17.6, so the startup toast confidently reported v3.17.6 even though the
loaded plugin code was 3.17.5.

Walking up from `import.meta.url` always reflects the actually-loaded module,
so reorder `getCachedVersion()` to try that first and fall back to the flat-
install candidates and execPath walk-up as before. The fallback chain is
preserved for bundled environments where the module-relative lookup may fail.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 09:17:21 +01:00