Commit Graph

4397 Commits

Author SHA1 Message Date
acamq 8470a6bf1f fix(test): isolate XDG_CONFIG_HOME in Windows CLI tests
Windows CLI tests were not deleting XDG_CONFIG_HOME, making them
fragile in environments where this variable is set. getCliConfigDir()
reads XDG_CONFIG_HOME on all platforms, not just Linux.
2026-03-15 15:30:52 -06:00
acamq f92c0931a3 fix(installer): respect XDG_CONFIG_HOME on Windows for CLI config dir 2026-03-15 08:26:41 -06:00
Ouyang Xingyuan f2b26e5346 fix(delegate-task): add subagent turn limit and model routing transparency
原因:
- subagent 无最大步数限制,陷入 tool-call 死循环时可无限运行,造成巨额 API 费用
- category 路由将 subagent 静默切换到与父 session 不同的模型,用户完全无感知

改动:
- sync-session-poller: 新增 maxAssistantTurns 参数(默认 300),每检测到新 assistant 消息
  计数一次,超限后调用 abortSyncSession 并返回明确错误信息
- sync-task: task 完成时在返回字符串中显示实际使用的模型;若与父 session 模型不同,
  加 ⚠️ 警告提示用户发生了静默路由

影响:
- 现有行为不变,maxAssistantTurns 为可选参数,默认值 300 远高于正常任务所需轮次
- 修复 #2571:用户一个下午因 Sisyphus-Junior 死循环 + 静默路由到 Gemini 3.1 Pro
  烧掉 $350+,且 OpenCode 显示费用仅为实际的一半
2026-03-15 12:05:42 +08:00
github-actions[bot] aa27c75ead @idrekdon has signed the CLA in code-yeongyu/oh-my-openagent#2572 2026-03-14 17:57:23 +00:00
Robin Mordasiewicz 0d1d405a72 fix(discovery): add null-safe validation for v3 array entries
Filter out null, undefined, or malformed entries in installed_plugins.json
before accessing properties. Prevents fatal crash on corrupted data.

Addresses cubic-dev-ai review feedback.
2026-03-14 05:35:12 +00:00
Robin Mordasiewicz bc0ba843ac fix(agent-loader): convert model object to string for opencode compatibility
mapClaudeModelToOpenCode() returns {providerID, modelID} but opencode
expects model as a string. Both agent loaders now convert to
'providerID/modelID' string format before assigning to config.
2026-03-14 05:16:50 +00:00
Robin Mordasiewicz bce8ff3a75 chore: include pre-built dist for github install 2026-03-14 04:56:50 +00:00
github-actions[bot] 5073efef48 @robinmordasiewicz has signed the CLA in code-yeongyu/oh-my-openagent#2563 2026-03-14 04:47:19 +00:00
Robin Mordasiewicz a7f0a4cf46 fix(plugin-loader): support Claude Code v3 flat array format for installed_plugins.json 2026-03-14 04:40:27 +00:00
YeonGyu-Kim 913fcf270d remove ai slops 2026-03-14 12:48:05 +09:00
YeonGyu-Kim c7518eae2d add skills 2026-03-14 12:45:58 +09:00
YeonGyu-Kim 0dcfcd372b feat(cli): support both oh-my-opencode and oh-my-openagent package names
Update CLI config manager to detect and handle both legacy (oh-my-opencode)
and new (oh-my-openagent) package names during installation. Migration
will automatically replace old plugin entries with the new name.

🤖 Generated with assistance of OhMyOpenCode
2026-03-14 12:45:58 +09:00
YeonGyu-Kim 6aeda598b9 feat(schema): generate oh-my-openagent schema alongside legacy schema
Update build script to generate both oh-my-opencode.schema.json (backward
compatibility) and oh-my-openagent.schema.json (new package name).
Also adds delegate-task-english-directive hook to schema.

🤖 Generated with assistance of OhMyOpenCode
2026-03-14 12:45:58 +09:00
YeonGyu-Kim b0ab34b568 feat(shared): add plugin identity constants for package name migration
Add centralized plugin identity constants to support migration from
oh-my-opencode to oh-my-openagent. Includes both current and legacy
names for backward compatibility.

🤖 Generated with assistance of OhMyOpenCode
2026-03-14 12:45:58 +09:00
YeonGyu-Kim a00bb8b6a7 feat(skill): integrate /get-unpublished-changes and /review-work into pre-publish-review
Phase 0 now runs /get-unpublished-changes as single source of truth
instead of manual bash commands. Phase 1 uses its output for grouping.
Layer 2 explicitly references /review-work skill flow.

🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
2026-03-14 12:45:58 +09:00
github-actions[bot] b5789bf449 @vidwade has signed the CLA in code-yeongyu/oh-my-openagent#2561 2026-03-14 02:32:16 +00:00
MoerAI 9a774f1db2 fix: union disabled_tools in mergeConfigs() like other disabled_* arrays
disabled_tools was defined in the Zod schema but omitted from
mergeConfigs(), causing project-level config to shadow user-level
disabled_tools instead of merging both sets. Add Set union and
regression test.

Closes #2555
2026-03-13 21:35:46 +09:00
github-actions[bot] 6625670079 @Yeachan-Heo has signed the CLA in code-yeongyu/oh-my-openagent#2554 2026-03-13 06:41:04 +00:00
YeonGyu-Kim f3de122147 feat(hooks): add delegate-task-english-directive hook to enforce English for subagents
Appends bold uppercase English-only directive to explore, librarian,
oracle, and plan subagent prompts via tool.execute.before on the task tool.
2026-03-13 14:22:13 +09:00
YeonGyu-Kim 0303488906 Merge pull request #2550 from code-yeongyu/fix/deploy-blockers
fix: resolve all deployment blockers from v3.11.2→HEAD release review
2026-03-13 14:21:45 +09:00
YeonGyu-Kim 3e746c9a56 fix(review): resolve 3 review-work blocking issues 2026-03-13 14:09:36 +09:00
YeonGyu-Kim 786c7a84d0 fix(background-agent): prevent queue item loss on concurrent cancel and guard against cancelled task resurrection 2026-03-13 13:12:59 +09:00
YeonGyu-Kim 380889caa3 fix(delegate-task): add exception fallback for cleanup reason and correct test mock status type 2026-03-13 13:08:50 +09:00
YeonGyu-Kim 04b0c6f33c fix(atlas): pause after final verification wave for explicit user approval 2026-03-13 12:43:33 +09:00
YeonGyu-Kim fd71c89b95 fix(background-agent): release descendant quota on pre-start task cancellation and creation failure 2026-03-13 12:37:33 +09:00
YeonGyu-Kim 11df83713e refactor(preemptive-compaction): use shared context-limit resolver to eliminate duplicated logic 2026-03-13 12:36:07 +09:00
YeonGyu-Kim 457f303adf fix(background-agent): clean global subagentSessions and SessionCategoryRegistry on dispose 2026-03-13 10:56:44 +09:00
YeonGyu-Kim 0015dd88af fix(agent-config): normalize agent names before builtin override filtering to prevent alias bypass 2026-03-13 10:55:51 +09:00
YeonGyu-Kim 9bce6314b1 fix(runtime-fallback): scope visible-assistant check to current turn and cleanup retry dedupe keys 2026-03-13 10:54:47 +09:00
YeonGyu-Kim cbe113ebab fix(slashcommand): support parent config dirs in command execution path to match discovery 2026-03-13 10:54:15 +09:00
YeonGyu-Kim e3f6c12347 fix(atlas): restrict idle-event session append to boulder-owned subagent sessions only 2026-03-13 10:53:45 +09:00
YeonGyu-Kim b356c50285 fix(delegate-task): cancel child background tasks on parent abort and timeout in unstable agent flow 2026-03-13 10:49:44 +09:00
YeonGyu-Kim 38938508fa test(model-fallback): update snapshots and kimi model expectations for opencode-go integration 2026-03-13 10:48:05 +09:00
YeonGyu-Kim 2c8a8eb4f1 fix(gpt-permission-continuation): add per-session consecutive auto-continue cap to prevent infinite loops 2026-03-13 10:48:00 +09:00
acamq 6b2da3c59b fix(installer): always use .config/opencode for CLI on Windows (#2502) 2026-03-12 17:46:52 -06:00
djdembeck a7a7799b44 fix(agents): add termination criteria to Sisyphus-Junior default 2026-03-12 16:09:51 -05:00
github-actions[bot] 825e854cff @cpkt9762 has signed the CLA in code-yeongyu/oh-my-openagent#2539 2026-03-12 20:17:38 +00:00
cpkt9762 11e9276498 fix(delegate-task): build categoryModel with variant for categories without fallback chain
When a category has no CATEGORY_MODEL_REQUIREMENTS entry (e.g.
user-defined categories like solana-re), the !requirement branch
set actualModel but never built categoryModel with variant from
the user config. The bottom fallback then created categoryModel
via parseModelString alone, silently dropping the variant.

Mirror the requirement branch logic: read variant from
userCategories and resolved.config, and build categoryModel
with it.

Fixes #2538
2026-03-13 04:15:17 +08:00
conversun 088844474a fix(todo-continuation-enforcer): tighten post-compaction guard with session-agent fallback
Refine continuation agent resolution to prefer session-state agent fallback while keeping compaction-specific protection. Replace sticky boolean compaction flag with a short-lived timestamp guard so unresolved agents are blocked only during the immediate post-compaction window, avoiding long-lived suppression and preserving existing continuation behavior.
2026-03-13 00:55:37 +08:00
github-actions[bot] 4226808432 @Gujiassh has signed the CLA in code-yeongyu/oh-my-openagent#2524 2026-03-12 16:36:59 +00:00
conversun 22b4b30dd7 fix(todo-continuation-enforcer): prevent post-compaction agent fallback to General
After compaction, message history is truncated and the original agent
(e.g. Prometheus) can no longer be resolved from messages. The todo
continuation enforcer would then inject a continuation prompt with
agent=undefined, causing the host to default to General -- which has
write permissions Prometheus should never have.

Root cause chain:
1. handler.ts had no session.compacted handler (unlike Atlas)
2. idle-event.ts relied on finding a compaction marker in truncated
   message history -- the marker disappears after real compaction
3. continuation-injection.ts proceeded when agentName was undefined
   because the skipAgents check only matched truthy agent names
4. prometheus-md-only/agent-resolution.ts did not filter compaction
   agent from message history fallback results

Fixes:
- Add session.compacted handler that sets hasRecentCompaction state flag
- Replace fragile history-based compaction detection with state flag
- Block continuation injection when agent is unknown post-compaction
- Filter compaction agent in Prometheus agent resolution fallback
2026-03-13 00:36:03 +08:00
Gujiassh 1e0823a0fc fix(delegate-task): report the real background task id
Keep background task metadata aligned with the background_output contract so callers do not pass a session id where the task manager expects a background task id.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-13 01:25:13 +09:00
github-actions[bot] 0412e40780 @ricatix has signed the CLA in code-yeongyu/oh-my-openagent#2532 2026-03-12 15:23:10 +00:00
ricatix 63ac37cd29 fix(cli): render verbose doctor check details
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 22:20:48 +07:00
github-actions[bot] 18cbaadb52 @xodn348 has signed the CLA in code-yeongyu/oh-my-openagent#2531 2026-03-12 15:14:20 +00:00
github-actions[bot] 27538dcfe6 @apple-ouyang has signed the CLA in code-yeongyu/oh-my-openagent#2528 2026-03-12 14:39:21 +00:00
YeonGyu-Kim e4e5f159f9 fix(tmux): wrap opencode attach commands in zsh -c shell
🤖 Generated with assistance of OhMyOpenCode
2026-03-12 20:12:38 +09:00
YeonGyu-Kim 4f4e53b436 feat(skill): re-read skills and commands from disk on every invocation
Removes in-memory caching so newly created skills mid-session are
immediately available via skill(). Clears the module-level skill cache
before each getAllSkills() call. Pre-provided skills from options are
merged as fallbacks for test compatibility.
2026-03-12 20:03:58 +09:00
Gujiassh edfa411684 fix(session-manager): match todo filenames exactly
Stop sibling session IDs from colliding in stable JSON storage by requiring an exact todo filename match instead of a substring filter.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 19:58:57 +09:00
YeonGyu-Kim 55b80fb7cd fix(skill-loader): discover skills from parent config dir when using profiles
OPENCODE_CONFIG_DIR pointing to profiles/ subdirectory caused skills at
~/.config/opencode/skills/ to be invisible. Added getOpenCodeSkillDirs()
with the same parent-dir fallback that getOpenCodeCommandDirs() uses.
2026-03-12 19:53:30 +09:00