Commit Graph

4267 Commits

Author SHA1 Message Date
YeonGyu-Kim 12c4795e1b update default model setup priorities 2026-05-08 12:18:38 +09:00
herjarsa adc6d92a8e fix(agents): copy factory mode to agent config for Desktop 1.14.x compat
OpenCode Desktop 1.14.x filters agents by `mode` field. The `mode` was
only present on the factory function as a static property, but not copied
to the generated AgentConfig object.

This fix copies `source.mode` to `base.mode` in `buildAgent()` when:
- source is a factory function (has `mode` static property)
- the generated config doesn't already define `mode`

Test: agent-builder.test.ts (4 pass)

Closes: #3835
Related: #3762, #3812, #3794, #3475, #3474, #3829, #3831, #3824, #3826, #3721, #3806, #3188
2026-05-07 16:18:41 +02:00
YeonGyu-Kim 6b49e3bddc test agent runtime sort behavior 2026-05-07 18:52:44 +09:00
YeonGyu-Kim ee938aa097 fix full-suite isolation regressions 2026-05-07 18:36:03 +09:00
YeonGyu-Kim 102b5f96e7 fix(delegate-task): require one goal per deep call
The caller-facing description told orchestrators WHAT `deep` is but
never specified goal cardinality, so they bundled multiple goals into
one call (e.g. "fix X + merge Y + deploy Z"). The deep agent's own
prompt was already configured to refuse such bundles, but only after
they arrived. The rule now lives on the caller side: ONE goal + ONE
deliverable per call; multiple goals must fan out as parallel `deep`
calls.
2026-05-07 18:36:03 +09:00
YeonGyu-Kim 788fbec0d7 fix desktop plugin startup without Bun 2026-05-07 18:36:03 +09:00
YeonGyu-Kim 4bcbbdd966 Merge pull request #3832 from herjarsa/fix/desktop-electron-bun-protocol-compat
fix(desktop): hide bun:sqlite import from Node.js/Electron ESM loader
2026-05-07 18:35:11 +09:00
herjarsa 3a93a40e68 fix(desktop): hide bun:sqlite import from Node.js/Electron ESM loader
Uses new Function() to prevent the static ESM loader from seeing
the bun: protocol import at parse time. In Electron/Node.js, the
import() call is evaluated at runtime and gracefully returns null
when bun:sqlite is unavailable.

Fixes #3829, likely fixes #3762
2026-05-07 10:38:31 +02:00
YeonGyu-Kim 8586cb8965 fix(posthog): disable feature flags, remove plugin_loaded event for billing optimization
- Remove plugin_loaded telemetry from index.ts (was 46.5% of all events, ~2.83M/month)
- Add enableLocalEvaluation: false to prevent feature flag polling/decide calls
- Add strictLocalEvaluation: true to prevent server fallback requests
- Add disableRemoteConfig: true to prevent remote config network requests
- Remove 'plugin_loaded' from PostHogActivityReason type
- Update tests: remove stale mocks, add SDK options verification test
- enableExceptionAutocapture: false already present (kept)

Estimated billing reduction: ~$960+/month from feature flag requests,
plus ~2.83M fewer events/month from plugin_loaded removal.
2026-05-07 16:44:05 +09:00
YeonGyu-Kim 10f9559ccc Merge pull request #3810 from code-yeongyu/fix/ralph-loop-retry-runtime-errors-v2
fix(continuation): retry runtime errors immediately
2026-05-07 12:03:40 +09:00
YeonGyu-Kim dfc7dfae2e feat(delegate-task): add GPT-5.3-codex specialized deep category prompt
- DEEP_CATEGORY_PROMPT_APPEND_GPT_5_3_CODEX preserving all DEEP knowledge (atomic task treatment, root cause bias, ambition scaled, completion bar, status sparse) plus codex-specific additions: bias to action, parallel-batch exploration, code implementation discipline, worktree safety, plan closure, pragmatic final-message format\n- resolveDeepCategoryPromptAppend now routes codex first, then 5.5, else legacy (preserves existing 5.5 and 5.4 test invariants)\n- Tests: assert codex no longer falls back to legacy, content tests mirroring the 5.5 pattern (style markers, knowledge preservation, parallel-batch framing, materially different from siblings)

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-07 11:56:01 +09:00
YeonGyu-Kim 5eea7024d5 feat(agents): add GPT-5.2 specialized prompts for oracle and momus
- Add isGpt5_2Model type guard\n- ORACLE_GPT_5_2_PROMPT consolidating all knowledge from Claude default, GPT-5.4 generic, and GPT-5.5 variants (XML-tagged blocks, concrete verbosity clamps, long-context re-grounding, anti-narration tool rules, high-risk self-check)\n- MOMUS_GPT_5_2_PROMPT preserving blocker-finder philosophy with new tool_usage_rules block for parallel reference verification\n- Momus GPT-5.2 reasoningEffort set to xhigh per evaluation rigor needs

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-07 11:55:54 +09:00
YeonGyu-Kim ebe26eab17 fix(ralph-loop): guard runtime error retries 2026-05-07 11:50:44 +09:00
YeonGyu-Kim 83ec352899 merge dev into continuation runtime retry
# Conflicts:
#	src/hooks/ralph-loop/non-abort-error-continuation.test.ts
2026-05-07 11:34:33 +09:00
YeonGyu-Kim 2c70938d81 test(ralph-loop): cover ultrawork runtime retry 2026-05-07 11:27:46 +09:00
YeonGyu-Kim 6a2d19d605 fix(atlas): retry boulder after runtime errors 2026-05-07 11:27:44 +09:00
YeonGyu-Kim 1ad0fd4ac8 Merge pull request #3748 from code-yeongyu/fix/simple-github-bugs-1948-3564
fix: resolve simple triaged GitHub bugs
2026-05-06 18:43:58 +09:00
YeonGyu-Kim ef66516ea4 Merge pull request #3801 from code-yeongyu/fix/directory-agents-non-string-output
fix(directory-agents-injector): guard against non-string output.output (#3800)
2026-05-06 18:17:36 +09:00
YeonGyu-Kim 7bd863b214 Merge pull request #3813 from code-yeongyu/fix/agent-name-backslash-sanitize
fix(agent): sanitize backslash/quote from agent name
2026-05-06 18:14:39 +09:00
YeonGyu-Kim d9ef03f1a5 test(agent): guard queueItem assertion against empty queue race 2026-05-06 17:50:11 +09:00
YeonGyu-Kim 25d183fbe8 fix(agent): sanitize backslash/quote from agent name in launch() and background-executor
Agent names like \hephaestus\ cause 'Agent not found' errors because
sanitizeSubagentType() was only called in subagent-resolver.ts but not
in the direct manager.launch() path or background-executor.ts.

- manager.ts: strip leading/trailing backslash/quote chars from input.agent
  before validation so \hephaestus\ → hephaestus
- background-executor.ts: call sanitizeSubagentType(args.subagent_type)
  instead of passing raw value to manager.launch()
- agent-display-names.ts: reuse sanitizeSubagentType in stripAgentListSortPrefix
- Add unit tests for all three fix points

Fixes: sessions dying with 'Agent not found: \hephaestus\'
2026-05-06 17:41:41 +09:00
YeonGyu-Kim 66a6f42d73 fix(todo-continuation-enforcer): preserve overload countdown 2026-05-06 17:36:03 +09:00
YeonGyu-Kim 89c959955a fix(team-mode): gate tmux layout cleanup by config
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-06 17:36:03 +09:00
YeonGyu-Kim b4791c85ca fix(team-mode): keep tmux visualization in caller window
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-06 17:36:03 +09:00
YeonGyu-Kim 675f7880fe fix(team-mode): resolve caller tmux window target
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-06 17:36:03 +09:00
YeonGyu-Kim 9dd0e9fb0e Merge pull request #3622 from MoerAI/fix/truncate-tool-error-output
fix(tool-execute-after): cap excessively long tool output to prevent TUI flooding (fixes #3586)
2026-05-06 17:22:53 +09:00
YeonGyu-Kim 44948872eb Merge pull request #3612 from MoerAI/fix/doctor-exit-137-handling
fix(doctor): catch unexpected failures and provide actionable diagnostics (fixes #3345)
2026-05-06 17:22:47 +09:00
MoerAI 2971322952 fix(doctor): catch unexpected failures and provide actionable diagnostics (fixes #3345) 2026-05-06 17:17:56 +09:00
MoerAI a22416d270 fix(error-classifier): classify credit balance too low as quota_exceeded for fallback (fixes #3571) 2026-05-06 17:17:23 +09:00
YeonGyu-Kim 7ac1109611 Merge pull request #3636 from lucasyounger/codex/fix-3629-worktree-plan-path
fix(boulder): resolve continuation progress from worktree plan
2026-05-06 17:15:21 +09:00
YeonGyu-Kim 37d981ef1f Merge pull request #3634 from auyua9/fix/ast-grep-pattern-hints
fix(ast-grep): restore pattern hints in tools
2026-05-06 17:15:17 +09:00
YeonGyu-Kim 0a7306c6c1 Merge pull request #3637 from ihoooohi/fix/claude-thinking-legacy-alias-collision
fix(aliases): stop rewriting canonical claude-opus-4-6-thinking
2026-05-06 17:15:09 +09:00
YeonGyu-Kim 7e43beaa9e Merge pull request #3620 from MoerAI/fix/sisyphus-prompt-plan-reference
fix(agents): reference prometheus instead of conditional plan alias in prompts (fixes #3596)
2026-05-06 17:15:05 +09:00
YeonGyu-Kim 62a7356de3 Merge pull request #3621 from MoerAI/fix/skill-tool-respects-plugins-config
fix(tool-registry): pass plugins config to skill tool for proper command filtering (fixes #3582)
2026-05-06 17:15:01 +09:00
YeonGyu-Kim 9b87fd5019 Merge pull request #3744 from Arcadi4/dev
Allow "max" option for "reasoningEffort" field in config schema
2026-05-06 17:14:57 +09:00
Samuele Domenico Ruffino 467a4a5eed fix(test): use toContain instead of providers[0].toBe for multi-provider entries
Restore consistent assertion style in librarian and explore tests.
Multi-provider entries like ["opencode-go", "vercel"] should use
toContain() not providers[0].toBe() to match the established pattern.
2026-05-06 16:51:59 +09:00
Samuele Domenico Ruffino b7d77da88f fix(capabilities): add kimi-k2.6 to supplemental model entries
kimi-k2.6 is referenced in fallback chains but missing from the bundled snapshot (which only has kimi-k2.5). Added supplemental entry with specs matching models.dev data.
2026-05-06 16:51:59 +09:00
Samuele Domenico Ruffino 1e93d37df6 docs(opencode-go): update docs and fallback chain tables to reflect glm-5.1, kimi-k2.6, qwen3.5-plus 2026-05-06 16:50:33 +09:00
Samuele Domenico Ruffino 6cd40df4cb feat(opencode-go): upgrade glm-5 → glm-5.1 and kimi-k2.5 → kimi-k2.6 in fallback chains 2026-05-06 16:45:30 +09:00
Samuele Domenico Ruffino 0727d9a1a3 fix(opencode-go): replace non-existent minimax-m2.7-highspeed with qwen3.5-plus 2026-05-06 16:45:30 +09:00
YeonGyu-Kim d1a7c8f17a Merge pull request #3096 from s2mr/fix/git-master-language-agnostic-support
docs(git-master): make language handling generic (incl. Japanese examples)
2026-05-06 16:40:56 +09:00
YeonGyu-Kim abba70cb1e Merge pull request #3691 from islee23520/chore/gpt-5.5-followup-cleanup
docs: align GPT-5.5 model references
2026-05-06 16:39:03 +09:00
YeonGyu-Kim 5624393367 Merge pull request #3783 from matchai/feat/walk-up-config-discovery
feat(config): walk up directory tree to merge ancestor plugin configs
2026-05-06 16:37:01 +09:00
ilseob lee 766cdaf893 docs: align GPT-5.5 model references 2026-05-06 16:33:07 +09:00
Matan Kushner eb1e104742 refactor(config): tighten walk-up config discovery from oracle review
Stop the walk at the start directory when it sits outside $HOME so the
walker never falls through to filesystem root. Without this guard a
project at /tmp/x or /opt/projects/foo would surface unrelated configs
in /tmp, /opt, or / itself.

Also clean up reviewer-flagged friction:

- Rename ancestor path/override variables to *NearestFirst /
  *FarthestFirst so the merge order is self-documenting and the
  mid-flight `.slice().reverse()` is no longer surprising.
- Rename `migrateLegacyAndResolveCanonicalPath` to
  `resolveConfigPathAfterLegacyMigration` to reflect that the helper
  returns the path to load, which may still be the legacy path when
  migration could not run.
- Replace `Object.assign({}, ...overrides)` with a named accumulator
  loop so the closer-wins ordering is obvious from the code instead of
  relying on a comment.

Tests added:

- start directory outside $HOME does not walk above itself
- multi-ancestor git_master merge order (closer wins, distant fields
  still flow through)
- agent_definitions in an ancestor resolves against that ancestor's own
  .opencode/ base path, not the start directory's
2026-05-06 16:29:06 +09:00
Matan Kushner cc1d9cf030 feat(config): walk up directory tree to merge ancestor plugin configs
Closes #417.

The user config (`~/.config/opencode/oh-my-openagent.json[c]`) is no
longer the only level above the project. `loadPluginConfig` now walks
from the working directory up to `$HOME` (inclusive), collecting every
`.opencode/oh-my-openagent.json[c]` it finds along the way. Configs
closer to the working directory override configs farther up, allowing
per-tree setups like:

    ~/work/.opencode/oh-my-openagent.json     # work credentials
    ~/dev/.opencode/oh-my-openagent.json      # personal credentials
    ~/.config/opencode/oh-my-openagent.json   # global fallback

This subsumes the previous single project-config load: the project's
own config is just the closest hit of the walk. `agent_definitions`
relative paths resolve against each ancestor's own `.opencode/` base,
`git_master` overrides accumulate across the walk (closer wins), and
legacy basenames are migrated wherever they appear.

`mcp_env_allowlist` is intentionally NOT extensible from walked
ancestors. It remains user-only as a security boundary so a malicious
or untrusted parent directory cannot extend the env var allowlist used
during ${VAR} expansion in `.mcp.json` files. The existing test that
pins this behaviour is extended to cover the multi-ancestor case.

`os.homedir()` caches in Bun, so the stop directory is resolved by
reading `process.env.HOME` directly. Production behaviour is unchanged
because the OS sets HOME at startup; tests can now redirect the walk
boundary by setting HOME to a temp directory before each call.
2026-05-06 16:28:11 +09:00
YeonGyu-Kim 47b5c56660 fix(ralph-loop): retry runtime errors immediately
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-06 16:27:45 +09:00
YeonGyu-Kim 8e1719968b fix(ralph-loop): retry runtime errors immediately
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-06 16:23:01 +09:00
Matan Kushner 01c8a2a927 feat(shared): add findProjectOpencodePluginConfigFiles walker
Walks up the directory tree from a start directory looking for
.opencode/oh-my-openagent.json[c] (or legacy basename) files. Returns
detected paths in nearest-first order, optionally stopping at a
caller-provided directory.

Reuses detectPluginConfigFile so canonical/legacy basename detection,
caching, and JSONC vs JSON precedence stay consistent with existing
config loading. Foundation for #417 hierarchical config discovery.
2026-05-06 15:53:53 +09:00
YeonGyu-Kim 44216a538e Merge pull request #3578 from xiaolai/fix/nlpm-agents-missing-frontmatter
docs(agents): add YAML frontmatter to AGENTS.md documentation files
2026-05-06 15:44:57 +09:00