Commit Graph

4979 Commits

Author SHA1 Message Date
Code_G 23d125755f fix(delegate-task): apply getAgentConfigKey normalization to isPlanAgent
isPlanFamily was already fixed to normalize display names via getAgentConfigKey,
but isPlanAgent still used raw agentName.toLowerCase() without normalization.

Apply the same fix to isPlanAgent for consistency.

Also fixes test title: 'returns true for planner' was describing the OLD
includes-based behavior (the bug), but the assertion already expected false.
Add regression tests covering Metis/Momus/Atlas display names for both functions.

Fixes #3312
2026-04-11 13:40:02 +09:00
YeonGyu-Kim b3e5d7de10 docs(agents): document permanent agent ordering policy
- Add CRITICAL: AGENT ORDERING section to plugin-handlers/AGENTS.md
- Document forbidden patterns (ZWSP, sort shims, display name heuristics)
- Explain the permanent fix: CANONICAL_CORE_AGENT_ORDER + alphabetical non-core
- State PR rejection policy for ordering workarounds
2026-04-11 13:07:48 +09:00
YeonGyu-Kim 7c154c6659 fix(anthropic-effort): skip effort injection for Haiku models (#3308)
Haiku models do not support the effort parameter and return API errors
when it is passed. The hook now explicitly checks for Haiku model
patterns and skips effort injection, preventing silent title generation
failures.

Added EFFORT_UNSUPPORTED_PATTERN and isEffortUnsupportedModel() to
detect and skip Haiku models.

Fixes #3308
2026-04-11 13:06:24 +09:00
YeonGyu-Kim 5c60d27cdc fix(agents): enforce permanent canonical agent ordering with regression tests
The canonical agent order is: sisyphus → hephaestus → prometheus → atlas

Changes:
- Export CANONICAL_CORE_AGENT_ORDER as single source of truth
- Sort non-core agents alphabetically for deterministic ordering
- Add 12 regression tests including 100-permutation stability test

This permanently resolves the agent ordering saga that caused 15+ commits,
8+ PRs, and multiple reverts due to ZWSP prefixes, Object.entries() order
dependencies, and inconsistent merge sequences.

Closes #3281
2026-04-11 13:06:15 +09:00
rlavkvmflzk b0b19f30b9 fix(grep): handle Windows drive-letter paths and CRLF in parseOutput
The grep tool's content and count output modes always returned 'No
matches found' on Windows due to two issues:

1. Regex ^(.+?):(\d+):(.*)$ fails on Windows paths like
   C:\path\file.ts:42:content because lazy .+? matches only 'C',
   then \d+ fails on '\path\...'

2. ripgrep outputs CRLF line endings on Windows. After split('\n'),
   trailing \r breaks the $ anchor in the regex, causing every
   line to fail matching.

Fix: update parseOutput and parseCountOutput regexes to handle
drive-letter prefixes ([A-Za-z]:[\/]), and strip trailing \r
from each line before matching.

Note: PR #2976 attempted to fix (1) with --path-separator=/ but
this flag gets expanded by MSYS2/Git Bash to a full path, causing
a separate rg error. This PR avoids --path-separator entirely.

Closes #2962
2026-04-11 05:37:53 +09:00
ahuang 6c3308aab3 fix: treat zero limit.output as unknown to enable fallback to bundled snapshot
When a custom OpenAI-compatible provider does not return model limits,
its provider-models.json cache entries have limit.output = 0. The nullish
coalescing operator (??) does not fallback on 0 since it is not undefined,
causing maxOutputTokens to stay at 0 and triggering the AI SDK error:
"maxOutputTokens must be >= 1".

By returning undefined for 0 or negative values, the ?? in
get-model-capabilities.ts correctly falls through to the bundled snapshot
which contains the correct output limits.
2026-04-10 21:34:28 +08:00
YeonGyu-Kim 5493ae226c fix(migration): persist fullMigrationSet in-config when sidecar write fails
Addresses Cubic review: configs without prior _migrations now get the
full migration set written to config as fallback when sidecar write
fails, preventing migration tracking loss.
2026-04-10 19:01:59 +09:00
YeonGyu-Kim 6ec9a2bd79 fix(openclaw): skip session.created dispatch for subagent sessions 2026-04-10 18:47:18 +09:00
YeonGyu-Kim de156578ea fix(stop-continuation): clear stop state for native work-starting commands 2026-04-10 18:47:18 +09:00
YeonGyu-Kim 9532440cb2 fix(plugin-handlers): remove ZWSP prefixes from API-facing agent paths 2026-04-10 18:47:18 +09:00
YeonGyu-Kim 68c8701d34 fix(migration): preserve _migrations in config when sidecar write fails 2026-04-10 18:47:18 +09:00
YeonGyu-Kim 10371d5bde fix(agents): re-apply GPT apply_patch deny after config override merge 2026-04-10 18:47:17 +09:00
YeonGyu-Kim e54f747916 fix(tests): replace as any with typed PluginInput mocks 2026-04-10 18:47:17 +09:00
YeonGyu-Kim e7f5d0d5fd test(shared): update shared utility tests
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 15:53:37 +09:00
YeonGyu-Kim 37057f18b9 test(tools): update MCP, delegate-task, skill, and slashcommand tests
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 15:53:35 +09:00
YeonGyu-Kim ca9b5fde40 test(hooks): update claude-code, comment-checker, and rules-injector tests
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 15:53:33 +09:00
YeonGyu-Kim 8a4eacfd24 test(hooks): update multiple hook test suites
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 15:53:32 +09:00
YeonGyu-Kim 4180a0ba0a test(features): update background agent, MCP loader, and tmux tests
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 15:53:30 +09:00
YeonGyu-Kim 12c9db729b test(cli): update all CLI command tests
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 15:53:28 +09:00
YeonGyu-Kim 12a96eeb77 test(agents): update agent utility and builtin agent tests
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 15:53:27 +09:00
YeonGyu-Kim 77af6c643e test(plugin-handlers): update all plugin handler tests
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 15:53:25 +09:00
YeonGyu-Kim c21c3630ca test(plugin): update plugin config and registry tests
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 15:53:25 +09:00
YeonGyu-Kim fa1b4650ce test(core): update main test setup and core tests
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 15:53:25 +09:00
YeonGyu-Kim 0e74f5a749 fix(hooks): improve comment checker CLI runner
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 15:53:20 +09:00
YeonGyu-Kim 08c4757824 fix(hooks): improve auto update checker
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 15:53:19 +09:00
YeonGyu-Kim c9aedbc77f fix(cli): improve doctor system check
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 15:53:18 +09:00
YeonGyu-Kim d4ce03411c fix(plugin-handlers): simplify tool config handler
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 15:53:16 +09:00
YeonGyu-Kim fba3e1b3f7 fix(tools): improve delegate task constants and sync handling
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 15:53:14 +09:00
YeonGyu-Kim 111cf6d1a9 fix(hooks): improve session last agent tracking
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 15:53:13 +09:00
YeonGyu-Kim 25abda684c fix(hooks): improve image resizer implementation
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 15:53:12 +09:00
YeonGyu-Kim 5a762ba2ca fix(hooks): improve rules injector implementation
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 15:53:10 +09:00
YeonGyu-Kim bd910ad011 fix(shared): improve compaction marker and tmux server health
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 15:53:09 +09:00
YeonGyu-Kim 7244d048fb feat(session-manager): implement session management tools
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 15:53:08 +09:00
YeonGyu-Kim 1a090af2eb feat(tools): add tools for session manager and skill refresh
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 15:53:07 +09:00
YeonGyu-Kim 150dd1c89b feat(plugin): add PostHog tracking to plugin initialization
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 15:53:05 +09:00
YeonGyu-Kim 785d6e2dee feat(cli): add PostHog tracking and improve runner hooks
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 15:53:04 +09:00
YeonGyu-Kim e9b3ef0328 feat(skill-mcp-manager): improve connection handling and client implementations
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 15:53:02 +09:00
YeonGyu-Kim 046ab1060d feat(analytics): add PostHog analytics module
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 15:53:00 +09:00
YeonGyu-Kim 3fe5f0a153 feat(testing): add module mock lifecycle utilities
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 15:52:59 +09:00
YeonGyu-Kim b60b2bcc3f plugin: stop false provider cache warning 2026-04-10 13:43:58 +09:00
YeonGyu-Kim c173fa8f24 delegate-task: block prometheus task delegation 2026-04-10 13:42:53 +09:00
YeonGyu-Kim e86b4f4c2b fix(keyword-detector): stop starting ralph loop for ulw
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 11:40:46 +09:00
YeonGyu-Kim 30f4f06b9b test(chat-message): cover plain ulw without loop start
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 11:40:20 +09:00
YeonGyu-Kim 959229d9b7 test(keyword-detector): add plain ulw no-loop regressions
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 11:40:14 +09:00
YeonGyu-Kim 33ac57ba7a refactor: update remaining modules to use plugin-identity constants
Update various modules to use centralized constants from plugin-identity:
- get-local-version/formatter: Use PUBLISHED_PACKAGE_NAME
- run/session-resolver: Use PUBLISHED_PACKAGE_NAME
- background-agent/task-poller: Use PUBLISHED_PACKAGE_NAME
- mcp-oauth/provider: Use PUBLISHED_PACKAGE_NAME
- auto-update-checker/constants: Use ACCEPTED_PACKAGE_NAMES
- comment-checker/downloader: Use PUBLISHED_PACKAGE_NAME
- legacy-plugin-toast/hook: Use PLUGIN_NAME
- shared/data-path: Use CACHE_DIR_NAME
- shared/external-plugin-detector: Use ACCEPTED_PACKAGE_NAMES
- shared/logger: Use LOG_FILENAME
- tools/ast-grep/downloader: Use PUBLISHED_PACKAGE_NAME
- tools/call-omo-agent/tools: Use PUBLISHED_PACKAGE_NAME
- tools/delegate-task/category-resolver: Use PUBLISHED_PACKAGE_NAME
- tools/grep/constants: Use PUBLISHED_PACKAGE_NAME
- tools/grep/downloader: Use PUBLISHED_PACKAGE_NAME
- tools/lsp/lsp-client-wrapper: Use PUBLISHED_PACKAGE_NAME

🤖 Generated with assistance of OhMyOpenCode
2026-04-10 11:16:16 +09:00
YeonGyu-Kim 41b9b4d724 refactor(doctor): use plugin-identity constants for package names
Update doctor checks to use centralized constants from plugin-identity:
- PACKAGE_NAME now references PUBLISHED_PACKAGE_NAME
- System check uses PLUGIN_NAME and LEGACY_PLUGIN_NAME for plugin
  registration validation and legacy name detection
- Formatters updated for consistency

🤖 Generated with assistance of OhMyOpenCode
2026-04-10 11:16:08 +09:00
YeonGyu-Kim 58a981e07b fix(cli): use published package name in installer help text
Update CLI installer to show oh-my-opencode (published name) instead
of oh-my-openagent (plugin name) in usage instructions.

🤖 Generated with assistance of OhMyOpenCode
2026-04-10 11:15:59 +09:00
YeonGyu-Kim 6bde5e6f4c feat(doctor): support both package names in version detection
Update systemLoadedVersion check to detect installs under both
oh-my-opencode and oh-my-openagent package names. Adds package
candidate selection logic for dual-published packages.

🤖 Generated with assistance of OhMyOpenCode
2026-04-10 11:15:55 +09:00
YeonGyu-Kim 87ddb9baf3 feat(cli): integrate legacy config migration into write-omo-config
Update writeOmoConfig to detect and migrate legacy config files before
writing. Adds logic to handle oh-my-opencode.json -> oh-my-openagent.json
migration with proper path resolution and fallback handling.

🤖 Generated with assistance of OhMyOpenCode
2026-04-10 11:15:51 +09:00
YeonGyu-Kim 5000d1e37d feat(plugin-identity): add config basename constants for migration
Add CONFIG_BASENAME and LEGACY_CONFIG_BASENAME constants to support
migrating from oh-my-opencode.json to oh-my-openagent.json naming.

🤖 Generated with assistance of OhMyOpenCode
2026-04-10 11:15:42 +09:00