Commit Graph

6214 Commits

Author SHA1 Message Date
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 655a39b275 chore(deps): add posthog-node dependency
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-10 15:53:17 +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
YeonGyu-Kim d00a6bbf16 fix(keyword-detector): always trigger ultrawork keywords 2026-04-10 11:15:23 +09:00
YeonGyu-Kim f36231a8a6 fix(keyword-detector): trigger ulw shorthand anywhere 2026-04-10 11:12:56 +09:00
YeonGyu-Kim 5f90b238e0 fix(keyword-detector): restore ulw trigger after greeting prefixes 2026-04-10 11:09:01 +09:00
YeonGyu-Kim 2083cb0710 feat(agents): add centralized GPT apply_patch permission guard
Extract hardcoded GPT apply_patch permission logic into a reusable module
to ensure consistent behavior across all agents. This prevents GPT models
from using the unreliable apply_patch tool while allowing other models.

- Add gpt-apply-patch-guard.ts with GPT_APPLY_PATCH_GUIDANCE and getGptApplyPatchPermission
- Update Hephaestus agent to use centralized permission logic
- Update Sisyphus-Junior agent to use centralized permission logic
- Update all GPT prompt builders to reference shared guidance constant

🤖 Generated with assistance of OhMyOpenCode
2026-04-10 10:47:27 +09:00
kilhyeonjun fe1cfd885c fix: preserve accumulated modifiedInput and common fields on deny/ask from exit code paths
When a hook returns exit code 2 (deny) or 1 (ask), previously accumulated
modifiedInput and common fields from earlier allow hooks were discarded.
Now all exit paths (exit code and JSON) include accumulated state.
2026-04-10 10:40:12 +09:00
kilhyeonjun 5d8bd99f8f fix: accumulate modifiedInput and common fields from allow hooks
When a hook returns 'allow' with updatedInput or common fields
(suppressOutput, systemMessage, etc.), these values were silently
dropped. Now they are accumulated across hooks and included in the
final result, matching Claude Code's behavior where allow hooks can
still modify tool input and set metadata.
2026-04-10 10:30:25 +09:00
kilhyeonjun e0d611aefc revert: remove incorrect claudeCodeHooks override in createHooks, add pre-tool-use tests
Revert the create-hooks.ts change — claudeCodeHooks is already created
in createTransformHooks() with proper config and contextCollector.
The previous commit overwrote it with a degraded instance (empty config,
no contextCollector).

Add 8 unit tests for executePreToolUseHooks covering:
- null/empty config handling
- exit code 2 (deny) and 1 (ask) behavior
- multiple merged hooks: allow continues to next hook (the actual bug)
- deny short-circuits remaining hooks
- modifiedInput propagation between hooks

TDD verified: tests fail with original code, pass with fix.
2026-04-10 10:23:05 +09:00
kilhyeonjun 5aeb5688e8 fix: don't early-return on 'allow' in executePreToolUseHooks
When multiple hook sources are merged (global ~/.claude/settings.json +
project .claude/settings.json), a global catch-all hook returning 'allow'
caused early return before project-level hooks could execute.

Only 'deny' and 'ask' decisions should short-circuit. 'allow' should
continue processing remaining hooks so project-specific guards (e.g.,
file budget enforcement) get a chance to block.
2026-04-10 10:15:49 +09:00
kilhyeonjun 3b5745a6e8 fix: wire claudeCodeHooks into createHooks() to enable .claude/settings.json hooks
createClaudeCodeHooksHook() was fully implemented but never instantiated
in createHooks(). All .claude/settings.json hooks (PreToolUse, PostToolUse,
Stop, UserPromptSubmit) were silently skipped because hooks.claudeCodeHooks
was always undefined (optional chaining masked the issue).

Add claudeCodeHooks creation to createHooks() using the existing
isHookEnabled('claude-code-hooks') gate and safeCreateHook wrapper.

Note: This is a necessary fix but may require additional debugging for
full hook execution — the dispatch/stdin format compatibility between
OpenCode and Claude Code hook scripts needs runtime verification.

Fixes #3297
2026-04-10 09:59:59 +09:00
github-actions[bot] 498d021dc2 @zhoufanscut has signed the CLA in code-yeongyu/oh-my-openagent#3292 2026-04-09 15:17:28 +00:00
github-actions[bot] 5535750283 @revelri has signed the CLA in code-yeongyu/oh-my-openagent#3287 2026-04-09 14:30:17 +00:00
YeonGyu-Kim 6df597c60c Merge pull request #3279 from code-yeongyu/fix/stop-continuation-persistence
fix(stop-continuation): persist stop state across user messages (#3276)
2026-04-09 21:50:50 +09:00
YeonGyu-Kim ab515b77d0 fix(stop-continuation): persist stop state across user messages (#3276)
The /stop-continuation command was ineffective because the stop-
continuation-guard cleared its stopped state on the very next
chat.message event. Since any user message (including normal chat
after stopping) triggers chat.message, the continuation would
resume immediately.

Root cause: the chat.message handler called clear(sessionID) on
every user message, treating it as a 'user resumed work' signal.
But the user expects /stop-continuation to persist until they
explicitly start work again.

Changes:
- stop-continuation-guard chat.message: no longer clears stop state
- tool-execute-before: /start-work, /ralph-loop, /ulw-loop now
  explicitly clear the stop state (so continuation resumes when
  user intentionally restarts work)
- Updated and added tests: 12 pass (3 new), 125 related tests pass

Closes #3276
2026-04-09 21:36:10 +09:00
YeonGyu-Kim 69f47a9751 feat(keyword-detector): handle ultrawork keyword after greeting patterns
- Add TRAILING_GREETING_ULTRAWORK_PATTERN to detect 'hi ultrawork' style inputs
- Rename hasLeadingUltraworkKeyword to hasEdgeUltraworkKeyword for clarity
- Add extractUltraworkTask guard to return empty string for greeting-only inputs
- Add comprehensive test coverage for edge trigger scenarios

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-09 15:15:30 +09:00
YeonGyu-Kim 58be69114f docs: update AGENTS.md hierarchy with openclaw, runtime-fallback, skill-mcp-manager
- Add src/openclaw/AGENTS.md: bidirectional Discord/Telegram/webhook integration
- Add src/hooks/runtime-fallback/AGENTS.md: reactive provider error recovery
- Add src/features/skill-mcp-manager/AGENTS.md: tier-3 MCP lifecycle
- Update root AGENTS.md: refresh commit hash, add openclaw/IntentGate/Hashline refs
- Fix src/features/AGENTS.md: skill-mcp-manager file count 14→18, complexity MEDIUM→HIGH

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-09 15:14:40 +09:00
YeonGyu-Kim dc7a46809f Merge pull request #3268 from code-yeongyu/fix/ci-flake-model-resolution-pipeline
fix(ci): isolate model-resolution-pipeline test to prevent mock contamination
2026-04-09 14:24:13 +09:00
YeonGyu-Kim 7a1f121fdd fix(ci): isolate model-resolution-pipeline test to prevent mock contamination
The resolveModelPipeline test was consistently failing on CI
(resolveModelPipeline > does not return unused explicit user config
metadata in override result) while passing locally. Root cause is the
same mock.module contamination pattern as #3243: when bun runs all test
files in a single process, mock.module calls from other files (e.g.
model-resolver.test.ts) leak into this file's module scope.

Add mock.module('./logger', ...) so run-ci-tests.ts auto-detects the
file and runs it in its own isolated bun process.

This unblocks the v3.16.1 publish workflow which hit this flake twice.
2026-04-09 14:19:17 +09:00
github-actions[bot] d17b78afe6 @ayixiayi has signed the CLA in code-yeongyu/oh-my-openagent#3267 2026-04-09 04:19:35 +00:00
YeonGyu-Kim 4f88e0f4e1 fix(agents): restore canonical core agent ordering
Remap the core agent keys, default agent, and command routing back to\nlist display names so OpenCode's name-based sorting keeps the\ncanonical Sisyphus -> Hephaestus -> Prometheus -> Atlas order.\n\nAlso teach tool config lookups to resolve the prefixed list keys and\nadd regression tests that exercise the real ordering and routing path.
2026-04-09 12:50:05 +09:00
YeonGyu-Kim 132a994cfc Merge pull request #3206 from Momentum96/fix/openclaw-reply-listener
fix(openclaw): stabilize reply listener wiring and runtime dispatch
2026-04-09 12:34:59 +09:00
YeonGyu-Kim 55a57a8029 Merge pull request #3265 from code-yeongyu/revert/3260-restore-zwsp-sort-prefixes
Revert "fix(agents): remove ZWSP sort prefixes from display name helper (#3259)"
2026-04-09 12:27:09 +09:00
GeonWoo Jeon (Jay) ade57474be fix(merge): resolve dev conflicts for openclaw branch 2026-04-09 12:23:38 +09:00
YeonGyu-Kim 0d5b087440 Revert "Merge pull request #3260 from code-yeongyu/fix/remove-zwsp-sort-prefixes"
This reverts commit c3be4c2793, reversing
changes made to d2bb5d57d1.
2026-04-09 12:21:02 +09:00