claudecode-omc 4.8.1 → 4.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +3 -3
- package/.claude-plugin/plugin.json +3 -3
- package/README.de.md +60 -0
- package/README.es.md +60 -0
- package/README.fr.md +60 -0
- package/README.it.md +60 -0
- package/README.ja.md +60 -0
- package/README.ko.md +60 -0
- package/README.md +101 -16
- package/README.pt.md +60 -0
- package/README.ru.md +60 -0
- package/README.tr.md +60 -0
- package/README.vi.md +60 -0
- package/README.zh.md +60 -0
- package/agents/code-reviewer.md +107 -6
- package/agents/critic.md +212 -42
- package/agents/debugger.md +52 -4
- package/agents/document-specialist.md +39 -60
- package/agents/executor.md +29 -9
- package/agents/explore.md +3 -1
- package/agents/security-reviewer.md +57 -0
- package/agents/test-engineer.md +21 -0
- package/agents/verifier.md +2 -0
- package/agents/writer.md +2 -0
- package/bridge/cli.cjs +7412 -3577
- package/bridge/mcp-server.cjs +558 -43
- package/bridge/runtime-cli.cjs +3034 -1801
- package/bridge/team-bridge.cjs +25 -1
- package/bridge/team-mcp.cjs +257 -88
- package/bridge/team.js +5226 -413
- package/dist/__tests__/agent-boundary-guidance.test.d.ts +2 -0
- package/dist/__tests__/agent-boundary-guidance.test.d.ts.map +1 -0
- package/dist/__tests__/agent-boundary-guidance.test.js +48 -0
- package/dist/__tests__/agent-boundary-guidance.test.js.map +1 -0
- package/dist/__tests__/agent-registry.test.js +48 -11
- package/dist/__tests__/agent-registry.test.js.map +1 -1
- package/dist/__tests__/auto-slash-aliases.test.js +25 -0
- package/dist/__tests__/auto-slash-aliases.test.js.map +1 -1
- package/dist/__tests__/bedrock-model-routing.test.d.ts +21 -0
- package/dist/__tests__/bedrock-model-routing.test.d.ts.map +1 -0
- package/dist/__tests__/bedrock-model-routing.test.js +397 -0
- package/dist/__tests__/bedrock-model-routing.test.js.map +1 -0
- package/dist/__tests__/cleanup-validation.test.js +7 -3
- package/dist/__tests__/cleanup-validation.test.js.map +1 -1
- package/dist/__tests__/cli-win32-warning.test.js +15 -2
- package/dist/__tests__/cli-win32-warning.test.js.map +1 -1
- package/dist/__tests__/consolidation-contracts.test.js +28 -3
- package/dist/__tests__/consolidation-contracts.test.js.map +1 -1
- package/dist/__tests__/context-guard-stop.test.d.ts +2 -0
- package/dist/__tests__/context-guard-stop.test.d.ts.map +1 -0
- package/dist/__tests__/context-guard-stop.test.js +58 -0
- package/dist/__tests__/context-guard-stop.test.js.map +1 -0
- package/dist/__tests__/delegation-enforcer.test.js +76 -11
- package/dist/__tests__/delegation-enforcer.test.js.map +1 -1
- package/dist/__tests__/doctor-conflicts.test.js +62 -1
- package/dist/__tests__/doctor-conflicts.test.js.map +1 -1
- package/dist/__tests__/hooks.test.js +165 -4
- package/dist/__tests__/hooks.test.js.map +1 -1
- package/dist/__tests__/hud/defaults.test.js +4 -0
- package/dist/__tests__/hud/defaults.test.js.map +1 -1
- package/dist/__tests__/hud/limits-error.test.js +2 -4
- package/dist/__tests__/hud/limits-error.test.js.map +1 -1
- package/dist/__tests__/hud/mission-board-state.test.d.ts +2 -0
- package/dist/__tests__/hud/mission-board-state.test.d.ts.map +1 -0
- package/dist/__tests__/hud/mission-board-state.test.js +170 -0
- package/dist/__tests__/hud/mission-board-state.test.js.map +1 -0
- package/dist/__tests__/hud/mission-board.test.d.ts +2 -0
- package/dist/__tests__/hud/mission-board.test.d.ts.map +1 -0
- package/dist/__tests__/hud/mission-board.test.js +143 -0
- package/dist/__tests__/hud/mission-board.test.js.map +1 -0
- package/dist/__tests__/hud/rate-limits-error.test.js +13 -0
- package/dist/__tests__/hud/rate-limits-error.test.js.map +1 -1
- package/dist/__tests__/hud/render-rate-limits-priority.test.d.ts +8 -0
- package/dist/__tests__/hud/render-rate-limits-priority.test.d.ts.map +1 -0
- package/dist/__tests__/hud/render-rate-limits-priority.test.js +145 -0
- package/dist/__tests__/hud/render-rate-limits-priority.test.js.map +1 -0
- package/dist/__tests__/hud/render.test.js +22 -0
- package/dist/__tests__/hud/render.test.js.map +1 -1
- package/dist/__tests__/hud/stale-indicator.test.d.ts +9 -0
- package/dist/__tests__/hud/stale-indicator.test.d.ts.map +1 -0
- package/dist/__tests__/hud/stale-indicator.test.js +81 -0
- package/dist/__tests__/hud/stale-indicator.test.js.map +1 -0
- package/dist/__tests__/hud/state.test.js +30 -0
- package/dist/__tests__/hud/state.test.js.map +1 -1
- package/dist/__tests__/hud/usage-api-lock.test.d.ts +2 -0
- package/dist/__tests__/hud/usage-api-lock.test.d.ts.map +1 -0
- package/dist/__tests__/hud/usage-api-lock.test.js +245 -0
- package/dist/__tests__/hud/usage-api-lock.test.js.map +1 -0
- package/dist/__tests__/hud/usage-api-stale.test.d.ts +9 -0
- package/dist/__tests__/hud/usage-api-stale.test.d.ts.map +1 -0
- package/dist/__tests__/hud/usage-api-stale.test.js +297 -0
- package/dist/__tests__/hud/usage-api-stale.test.js.map +1 -0
- package/dist/__tests__/hud/usage-api.test.js +223 -0
- package/dist/__tests__/hud/usage-api.test.js.map +1 -1
- package/dist/__tests__/hud/watch-mode-init.test.d.ts +2 -0
- package/dist/__tests__/hud/watch-mode-init.test.d.ts.map +1 -0
- package/dist/__tests__/hud/watch-mode-init.test.js +133 -0
- package/dist/__tests__/hud/watch-mode-init.test.js.map +1 -0
- package/dist/__tests__/hud-agents.test.js +12 -10
- package/dist/__tests__/hud-agents.test.js.map +1 -1
- package/dist/__tests__/hud-build-guidance.test.js +6 -2
- package/dist/__tests__/hud-build-guidance.test.js.map +1 -1
- package/dist/__tests__/hud-marketplace-resolution.test.d.ts +2 -0
- package/dist/__tests__/hud-marketplace-resolution.test.d.ts.map +1 -0
- package/dist/__tests__/hud-marketplace-resolution.test.js +53 -0
- package/dist/__tests__/hud-marketplace-resolution.test.js.map +1 -0
- package/dist/__tests__/installer-hud-skip.test.js +12 -0
- package/dist/__tests__/installer-hud-skip.test.js.map +1 -1
- package/dist/__tests__/installer-plugin-agents.test.d.ts +2 -0
- package/dist/__tests__/installer-plugin-agents.test.d.ts.map +1 -0
- package/dist/__tests__/installer-plugin-agents.test.js +111 -0
- package/dist/__tests__/installer-plugin-agents.test.js.map +1 -0
- package/dist/__tests__/installer-version-guard.test.d.ts +2 -0
- package/dist/__tests__/installer-version-guard.test.d.ts.map +1 -0
- package/dist/__tests__/installer-version-guard.test.js +75 -0
- package/dist/__tests__/installer-version-guard.test.js.map +1 -0
- package/dist/__tests__/installer.test.js +58 -4
- package/dist/__tests__/installer.test.js.map +1 -1
- package/dist/__tests__/omc-tools-server.test.js +8 -5
- package/dist/__tests__/omc-tools-server.test.js.map +1 -1
- package/dist/__tests__/pre-tool-enforcer.test.js +38 -0
- package/dist/__tests__/pre-tool-enforcer.test.js.map +1 -1
- package/dist/__tests__/prompt-injection.test.js +3 -3
- package/dist/__tests__/prompt-injection.test.js.map +1 -1
- package/dist/__tests__/ralph-prd-mandatory.test.js +53 -2
- package/dist/__tests__/ralph-prd-mandatory.test.js.map +1 -1
- package/dist/__tests__/rate-limit-wait/rate-limit-monitor.test.js +42 -0
- package/dist/__tests__/rate-limit-wait/rate-limit-monitor.test.js.map +1 -1
- package/dist/__tests__/rate-limit-wait/tmux-detector.test.js +1 -1
- package/dist/__tests__/session-history-search.test.d.ts +2 -0
- package/dist/__tests__/session-history-search.test.d.ts.map +1 -0
- package/dist/__tests__/session-history-search.test.js +115 -0
- package/dist/__tests__/session-history-search.test.js.map +1 -0
- package/dist/__tests__/session-start-script-context.test.d.ts +2 -0
- package/dist/__tests__/session-start-script-context.test.d.ts.map +1 -0
- package/dist/__tests__/session-start-script-context.test.js +49 -0
- package/dist/__tests__/session-start-script-context.test.js.map +1 -0
- package/dist/__tests__/skills.test.js +71 -24
- package/dist/__tests__/skills.test.js.map +1 -1
- package/dist/__tests__/standalone-server.test.js +8 -4
- package/dist/__tests__/standalone-server.test.js.map +1 -1
- package/dist/__tests__/tier0-docs-consistency.test.js +10 -2
- package/dist/__tests__/tier0-docs-consistency.test.js.map +1 -1
- package/dist/agents/definitions.d.ts +5 -15
- package/dist/agents/definitions.d.ts.map +1 -1
- package/dist/agents/definitions.js +48 -49
- package/dist/agents/definitions.js.map +1 -1
- package/dist/agents/document-specialist.d.ts +1 -1
- package/dist/agents/document-specialist.d.ts.map +1 -1
- package/dist/agents/document-specialist.js +46 -21
- package/dist/agents/document-specialist.js.map +1 -1
- package/dist/agents/explore.d.ts.map +1 -1
- package/dist/agents/explore.js +3 -2
- package/dist/agents/explore.js.map +1 -1
- package/dist/agents/index.d.ts +2 -4
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +3 -6
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/types.d.ts +2 -2
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/cli/__tests__/ask.test.js +255 -8
- package/dist/cli/__tests__/ask.test.js.map +1 -1
- package/dist/cli/__tests__/session-search-help.test.d.ts +2 -0
- package/dist/cli/__tests__/session-search-help.test.d.ts.map +1 -0
- package/dist/cli/__tests__/session-search-help.test.js +13 -0
- package/dist/cli/__tests__/session-search-help.test.js.map +1 -0
- package/dist/cli/__tests__/session-search.test.d.ts +2 -0
- package/dist/cli/__tests__/session-search.test.d.ts.map +1 -0
- package/dist/cli/__tests__/session-search.test.js +72 -0
- package/dist/cli/__tests__/session-search.test.js.map +1 -0
- package/dist/cli/__tests__/team-help.test.js +1 -1
- package/dist/cli/__tests__/team-help.test.js.map +1 -1
- package/dist/cli/__tests__/team.test.js +256 -4
- package/dist/cli/__tests__/team.test.js.map +1 -1
- package/dist/cli/commands/__tests__/team.test.js +52 -2
- package/dist/cli/commands/__tests__/team.test.js.map +1 -1
- package/dist/cli/commands/doctor-conflicts.d.ts.map +1 -1
- package/dist/cli/commands/doctor-conflicts.js +15 -1
- package/dist/cli/commands/doctor-conflicts.js.map +1 -1
- package/dist/cli/commands/session-search.d.ts +18 -0
- package/dist/cli/commands/session-search.d.ts.map +1 -0
- package/dist/cli/commands/session-search.js +47 -0
- package/dist/cli/commands/session-search.js.map +1 -0
- package/dist/cli/commands/team.d.ts +11 -0
- package/dist/cli/commands/team.d.ts.map +1 -1
- package/dist/cli/commands/team.js +94 -24
- package/dist/cli/commands/team.js.map +1 -1
- package/dist/cli/commands/wait.d.ts.map +1 -1
- package/dist/cli/commands/wait.js +12 -1
- package/dist/cli/commands/wait.js.map +1 -1
- package/dist/cli/index.js +70 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/team.d.ts +1 -0
- package/dist/cli/team.d.ts.map +1 -1
- package/dist/cli/team.js +100 -214
- package/dist/cli/team.js.map +1 -1
- package/dist/cli/win32-warning.d.ts +2 -1
- package/dist/cli/win32-warning.d.ts.map +1 -1
- package/dist/cli/win32-warning.js +20 -6
- package/dist/cli/win32-warning.js.map +1 -1
- package/dist/config/__tests__/loader.test.d.ts +2 -0
- package/dist/config/__tests__/loader.test.d.ts.map +1 -0
- package/dist/config/__tests__/loader.test.js +145 -0
- package/dist/config/__tests__/loader.test.js.map +1 -0
- package/dist/config/__tests__/models.test.d.ts +2 -0
- package/dist/config/__tests__/models.test.d.ts.map +1 -0
- package/dist/config/__tests__/models.test.js +147 -0
- package/dist/config/__tests__/models.test.js.map +1 -0
- package/dist/config/__tests__/test-helpers.d.ts +3 -0
- package/dist/config/__tests__/test-helpers.d.ts.map +1 -0
- package/dist/config/__tests__/test-helpers.js +19 -0
- package/dist/config/__tests__/test-helpers.js.map +1 -0
- package/dist/config/loader.d.ts +3 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +140 -126
- package/dist/config/loader.js.map +1 -1
- package/dist/config/models.d.ts +29 -10
- package/dist/config/models.d.ts.map +1 -1
- package/dist/config/models.js +96 -10
- package/dist/config/models.js.map +1 -1
- package/dist/features/builtin-skills/skills.d.ts.map +1 -1
- package/dist/features/builtin-skills/skills.js +8 -1
- package/dist/features/builtin-skills/skills.js.map +1 -1
- package/dist/features/builtin-skills/types.d.ts +3 -0
- package/dist/features/builtin-skills/types.d.ts.map +1 -1
- package/dist/features/delegation-enforcer.d.ts +5 -12
- package/dist/features/delegation-enforcer.d.ts.map +1 -1
- package/dist/features/delegation-enforcer.js +48 -54
- package/dist/features/delegation-enforcer.js.map +1 -1
- package/dist/features/delegation-routing/__tests__/resolver.test.js +4 -3
- package/dist/features/delegation-routing/__tests__/resolver.test.js.map +1 -1
- package/dist/features/delegation-routing/types.d.ts.map +1 -1
- package/dist/features/delegation-routing/types.js +7 -4
- package/dist/features/delegation-routing/types.js.map +1 -1
- package/dist/features/index.d.ts +1 -0
- package/dist/features/index.d.ts.map +1 -1
- package/dist/features/index.js +2 -0
- package/dist/features/index.js.map +1 -1
- package/dist/features/rate-limit-wait/daemon.d.ts.map +1 -1
- package/dist/features/rate-limit-wait/daemon.js +8 -5
- package/dist/features/rate-limit-wait/daemon.js.map +1 -1
- package/dist/features/rate-limit-wait/index.d.ts +1 -1
- package/dist/features/rate-limit-wait/index.d.ts.map +1 -1
- package/dist/features/rate-limit-wait/index.js +1 -1
- package/dist/features/rate-limit-wait/index.js.map +1 -1
- package/dist/features/rate-limit-wait/rate-limit-monitor.d.ts +9 -0
- package/dist/features/rate-limit-wait/rate-limit-monitor.d.ts.map +1 -1
- package/dist/features/rate-limit-wait/rate-limit-monitor.js +38 -0
- package/dist/features/rate-limit-wait/rate-limit-monitor.js.map +1 -1
- package/dist/features/rate-limit-wait/tmux-detector.d.ts +2 -1
- package/dist/features/rate-limit-wait/tmux-detector.d.ts.map +1 -1
- package/dist/features/rate-limit-wait/tmux-detector.js +8 -9
- package/dist/features/rate-limit-wait/tmux-detector.js.map +1 -1
- package/dist/features/rate-limit-wait/types.d.ts +11 -0
- package/dist/features/rate-limit-wait/types.d.ts.map +1 -1
- package/dist/features/session-history-search/index.d.ts +6 -0
- package/dist/features/session-history-search/index.d.ts.map +1 -0
- package/dist/features/session-history-search/index.js +480 -0
- package/dist/features/session-history-search/index.js.map +1 -0
- package/dist/features/session-history-search/types.d.ts +36 -0
- package/dist/features/session-history-search/types.d.ts.map +1 -0
- package/dist/features/session-history-search/types.js +2 -0
- package/dist/features/session-history-search/types.js.map +1 -0
- package/dist/hooks/__tests__/background-process-guard.test.js +101 -5
- package/dist/hooks/__tests__/background-process-guard.test.js.map +1 -1
- package/dist/hooks/__tests__/bridge-openclaw.test.js +16 -5
- package/dist/hooks/__tests__/bridge-openclaw.test.js.map +1 -1
- package/dist/hooks/__tests__/bridge-routing.test.js +48 -1
- package/dist/hooks/__tests__/bridge-routing.test.js.map +1 -1
- package/dist/hooks/auto-slash-command/executor.d.ts.map +1 -1
- package/dist/hooks/auto-slash-command/executor.js +9 -1
- package/dist/hooks/auto-slash-command/executor.js.map +1 -1
- package/dist/hooks/auto-slash-command/types.d.ts +2 -0
- package/dist/hooks/auto-slash-command/types.d.ts.map +1 -1
- package/dist/hooks/auto-slash-command/types.js +0 -7
- package/dist/hooks/auto-slash-command/types.js.map +1 -1
- package/dist/hooks/autopilot/adapters/execution-adapter.js +3 -3
- package/dist/hooks/autopilot/prompts.js +1 -1
- package/dist/hooks/bridge-normalize.d.ts.map +1 -1
- package/dist/hooks/bridge-normalize.js +2 -0
- package/dist/hooks/bridge-normalize.js.map +1 -1
- package/dist/hooks/bridge.d.ts.map +1 -1
- package/dist/hooks/bridge.js +248 -39
- package/dist/hooks/bridge.js.map +1 -1
- package/dist/hooks/keyword-detector/__tests__/index.test.js +41 -0
- package/dist/hooks/keyword-detector/__tests__/index.test.js.map +1 -1
- package/dist/hooks/keyword-detector/index.d.ts +1 -1
- package/dist/hooks/keyword-detector/index.d.ts.map +1 -1
- package/dist/hooks/keyword-detector/index.js +3 -1
- package/dist/hooks/keyword-detector/index.js.map +1 -1
- package/dist/hooks/permission-handler/index.d.ts +8 -0
- package/dist/hooks/permission-handler/index.d.ts.map +1 -1
- package/dist/hooks/permission-handler/index.js +76 -0
- package/dist/hooks/permission-handler/index.js.map +1 -1
- package/dist/hooks/persistent-mode/__tests__/ralph-verification-flow.test.d.ts +2 -0
- package/dist/hooks/persistent-mode/__tests__/ralph-verification-flow.test.d.ts.map +1 -0
- package/dist/hooks/persistent-mode/__tests__/ralph-verification-flow.test.js +90 -0
- package/dist/hooks/persistent-mode/__tests__/ralph-verification-flow.test.js.map +1 -0
- package/dist/hooks/persistent-mode/__tests__/team-ralplan-stop.test.d.ts +2 -0
- package/dist/hooks/persistent-mode/__tests__/team-ralplan-stop.test.d.ts.map +1 -0
- package/dist/hooks/persistent-mode/__tests__/team-ralplan-stop.test.js +535 -0
- package/dist/hooks/persistent-mode/__tests__/team-ralplan-stop.test.js.map +1 -0
- package/dist/hooks/persistent-mode/index.d.ts +1 -1
- package/dist/hooks/persistent-mode/index.d.ts.map +1 -1
- package/dist/hooks/persistent-mode/index.js +296 -21
- package/dist/hooks/persistent-mode/index.js.map +1 -1
- package/dist/hooks/persistent-mode/stop-hook-blocking.test.js +156 -0
- package/dist/hooks/persistent-mode/stop-hook-blocking.test.js.map +1 -1
- package/dist/hooks/project-memory/__tests__/integration.test.js +27 -2
- package/dist/hooks/project-memory/__tests__/integration.test.js.map +1 -1
- package/dist/hooks/project-memory/__tests__/storage.test.js +37 -0
- package/dist/hooks/project-memory/__tests__/storage.test.js.map +1 -1
- package/dist/hooks/project-memory/storage.d.ts +1 -1
- package/dist/hooks/project-memory/storage.d.ts.map +1 -1
- package/dist/hooks/project-memory/storage.js +5 -4
- package/dist/hooks/project-memory/storage.js.map +1 -1
- package/dist/hooks/ralph/index.d.ts +1 -1
- package/dist/hooks/ralph/index.d.ts.map +1 -1
- package/dist/hooks/ralph/index.js +1 -1
- package/dist/hooks/ralph/index.js.map +1 -1
- package/dist/hooks/ralph/loop.d.ts +18 -0
- package/dist/hooks/ralph/loop.d.ts.map +1 -1
- package/dist/hooks/ralph/loop.js +31 -0
- package/dist/hooks/ralph/loop.js.map +1 -1
- package/dist/hooks/ralph/verifier.d.ts +4 -1
- package/dist/hooks/ralph/verifier.d.ts.map +1 -1
- package/dist/hooks/ralph/verifier.js +56 -21
- package/dist/hooks/ralph/verifier.js.map +1 -1
- package/dist/hooks/recovery/__tests__/storage.test.d.ts +2 -0
- package/dist/hooks/recovery/__tests__/storage.test.d.ts.map +1 -0
- package/dist/hooks/recovery/__tests__/storage.test.js +65 -0
- package/dist/hooks/recovery/__tests__/storage.test.js.map +1 -0
- package/dist/hooks/recovery/storage.d.ts +5 -1
- package/dist/hooks/recovery/storage.d.ts.map +1 -1
- package/dist/hooks/recovery/storage.js +7 -29
- package/dist/hooks/recovery/storage.js.map +1 -1
- package/dist/hooks/recovery/types.d.ts +1 -1
- package/dist/hooks/recovery/types.d.ts.map +1 -1
- package/dist/hooks/session-end/__tests__/duplicate-notifications.test.d.ts +2 -0
- package/dist/hooks/session-end/__tests__/duplicate-notifications.test.d.ts.map +1 -0
- package/dist/hooks/session-end/__tests__/duplicate-notifications.test.js +140 -0
- package/dist/hooks/session-end/__tests__/duplicate-notifications.test.js.map +1 -0
- package/dist/hooks/session-end/__tests__/mode-state-cleanup.test.d.ts +2 -0
- package/dist/hooks/session-end/__tests__/mode-state-cleanup.test.d.ts.map +1 -0
- package/dist/hooks/session-end/__tests__/mode-state-cleanup.test.js +122 -0
- package/dist/hooks/session-end/__tests__/mode-state-cleanup.test.js.map +1 -0
- package/dist/hooks/session-end/__tests__/openclaw-session-end.test.js +38 -12
- package/dist/hooks/session-end/__tests__/openclaw-session-end.test.js.map +1 -1
- package/dist/hooks/session-end/callbacks.d.ts +4 -1
- package/dist/hooks/session-end/callbacks.d.ts.map +1 -1
- package/dist/hooks/session-end/callbacks.js +5 -4
- package/dist/hooks/session-end/callbacks.js.map +1 -1
- package/dist/hooks/session-end/index.d.ts.map +1 -1
- package/dist/hooks/session-end/index.js +162 -36
- package/dist/hooks/session-end/index.js.map +1 -1
- package/dist/hooks/skill-state/__tests__/skill-state.test.js +35 -33
- package/dist/hooks/skill-state/__tests__/skill-state.test.js.map +1 -1
- package/dist/hooks/skill-state/index.d.ts +3 -3
- package/dist/hooks/skill-state/index.d.ts.map +1 -1
- package/dist/hooks/skill-state/index.js +7 -11
- package/dist/hooks/skill-state/index.js.map +1 -1
- package/dist/hooks/subagent-tracker/index.d.ts.map +1 -1
- package/dist/hooks/subagent-tracker/index.js +22 -0
- package/dist/hooks/subagent-tracker/index.js.map +1 -1
- package/dist/hooks/think-mode/__tests__/index.test.js +20 -20
- package/dist/hooks/think-mode/__tests__/index.test.js.map +1 -1
- package/dist/hooks/think-mode/switcher.d.ts.map +1 -1
- package/dist/hooks/think-mode/switcher.js +13 -10
- package/dist/hooks/think-mode/switcher.js.map +1 -1
- package/dist/hooks/thinking-block-validator/__tests__/index.test.d.ts +2 -0
- package/dist/hooks/thinking-block-validator/__tests__/index.test.d.ts.map +1 -0
- package/dist/hooks/thinking-block-validator/__tests__/index.test.js +56 -0
- package/dist/hooks/thinking-block-validator/__tests__/index.test.js.map +1 -0
- package/dist/hooks/thinking-block-validator/index.d.ts.map +1 -1
- package/dist/hooks/thinking-block-validator/index.js +7 -6
- package/dist/hooks/thinking-block-validator/index.js.map +1 -1
- package/dist/hooks/todo-continuation/index.d.ts +6 -0
- package/dist/hooks/todo-continuation/index.d.ts.map +1 -1
- package/dist/hooks/todo-continuation/index.js +14 -5
- package/dist/hooks/todo-continuation/index.js.map +1 -1
- package/dist/hud/elements/agents.d.ts.map +1 -1
- package/dist/hud/elements/agents.js +8 -14
- package/dist/hud/elements/agents.js.map +1 -1
- package/dist/hud/elements/index.d.ts +1 -0
- package/dist/hud/elements/index.d.ts.map +1 -1
- package/dist/hud/elements/index.js +1 -0
- package/dist/hud/elements/index.js.map +1 -1
- package/dist/hud/elements/limits.d.ts +3 -3
- package/dist/hud/elements/limits.d.ts.map +1 -1
- package/dist/hud/elements/limits.js +26 -18
- package/dist/hud/elements/limits.js.map +1 -1
- package/dist/hud/elements/mission-board.d.ts +2 -0
- package/dist/hud/elements/mission-board.d.ts.map +1 -0
- package/dist/hud/elements/mission-board.js +2 -0
- package/dist/hud/elements/mission-board.js.map +1 -0
- package/dist/hud/index.d.ts +1 -1
- package/dist/hud/index.d.ts.map +1 -1
- package/dist/hud/index.js +10 -2
- package/dist/hud/index.js.map +1 -1
- package/dist/hud/mission-board.d.ts +75 -0
- package/dist/hud/mission-board.d.ts.map +1 -0
- package/dist/hud/mission-board.js +420 -0
- package/dist/hud/mission-board.js.map +1 -0
- package/dist/hud/render.d.ts.map +1 -1
- package/dist/hud/render.js +16 -8
- package/dist/hud/render.js.map +1 -1
- package/dist/hud/state.d.ts.map +1 -1
- package/dist/hud/state.js +13 -0
- package/dist/hud/state.js.map +1 -1
- package/dist/hud/types.d.ts +11 -0
- package/dist/hud/types.d.ts.map +1 -1
- package/dist/hud/types.js +10 -0
- package/dist/hud/types.js.map +1 -1
- package/dist/hud/usage-api.d.ts +2 -1
- package/dist/hud/usage-api.d.ts.map +1 -1
- package/dist/hud/usage-api.js +219 -103
- package/dist/hud/usage-api.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/dist/installer/__tests__/claude-md-merge.test.js +53 -9
- package/dist/installer/__tests__/claude-md-merge.test.js.map +1 -1
- package/dist/installer/__tests__/hook-templates.test.d.ts +2 -0
- package/dist/installer/__tests__/hook-templates.test.d.ts.map +1 -0
- package/dist/installer/__tests__/hook-templates.test.js +76 -0
- package/dist/installer/__tests__/hook-templates.test.js.map +1 -0
- package/dist/installer/hooks.d.ts +15 -0
- package/dist/installer/hooks.d.ts.map +1 -1
- package/dist/installer/hooks.js +51 -0
- package/dist/installer/hooks.js.map +1 -1
- package/dist/installer/index.d.ts +25 -0
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +273 -64
- package/dist/installer/index.js.map +1 -1
- package/dist/lib/mode-names.d.ts.map +1 -1
- package/dist/lib/mode-names.js +2 -0
- package/dist/lib/mode-names.js.map +1 -1
- package/dist/mcp/__tests__/team-server-artifact-convergence.test.js +30 -3
- package/dist/mcp/__tests__/team-server-artifact-convergence.test.js.map +1 -1
- package/dist/mcp/__tests__/team-server-deprecation.test.js +2 -0
- package/dist/mcp/__tests__/team-server-deprecation.test.js.map +1 -1
- package/dist/mcp/team-job-convergence.d.ts.map +1 -1
- package/dist/mcp/team-job-convergence.js +12 -3
- package/dist/mcp/team-job-convergence.js.map +1 -1
- package/dist/mcp/team-server.d.ts.map +1 -1
- package/dist/mcp/team-server.js +18 -4
- package/dist/mcp/team-server.js.map +1 -1
- package/dist/notifications/__tests__/config-merge.test.js +36 -1
- package/dist/notifications/__tests__/config-merge.test.js.map +1 -1
- package/dist/notifications/__tests__/formatter.test.js +13 -5
- package/dist/notifications/__tests__/formatter.test.js.map +1 -1
- package/dist/notifications/__tests__/notify-registry-integration.test.js +27 -1
- package/dist/notifications/__tests__/notify-registry-integration.test.js.map +1 -1
- package/dist/notifications/__tests__/verbosity.test.js +33 -1
- package/dist/notifications/__tests__/verbosity.test.js.map +1 -1
- package/dist/notifications/config.d.ts +7 -0
- package/dist/notifications/config.d.ts.map +1 -1
- package/dist/notifications/config.js +18 -0
- package/dist/notifications/config.js.map +1 -1
- package/dist/notifications/formatter.d.ts +2 -2
- package/dist/notifications/formatter.d.ts.map +1 -1
- package/dist/notifications/formatter.js +7 -6
- package/dist/notifications/formatter.js.map +1 -1
- package/dist/notifications/index.d.ts +1 -1
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js +5 -3
- package/dist/notifications/index.js.map +1 -1
- package/dist/notifications/template-engine.js +1 -1
- package/dist/notifications/template-engine.js.map +1 -1
- package/dist/notifications/types.d.ts +4 -0
- package/dist/notifications/types.d.ts.map +1 -1
- package/dist/openclaw/__tests__/dispatcher.test.js +26 -0
- package/dist/openclaw/__tests__/dispatcher.test.js.map +1 -1
- package/dist/openclaw/__tests__/index.test.js +42 -0
- package/dist/openclaw/__tests__/index.test.js.map +1 -1
- package/dist/openclaw/__tests__/signal.test.d.ts +2 -0
- package/dist/openclaw/__tests__/signal.test.d.ts.map +1 -0
- package/dist/openclaw/__tests__/signal.test.js +69 -0
- package/dist/openclaw/__tests__/signal.test.js.map +1 -0
- package/dist/openclaw/dispatcher.d.ts +5 -1
- package/dist/openclaw/dispatcher.d.ts.map +1 -1
- package/dist/openclaw/dispatcher.js +13 -2
- package/dist/openclaw/dispatcher.js.map +1 -1
- package/dist/openclaw/index.d.ts +2 -1
- package/dist/openclaw/index.d.ts.map +1 -1
- package/dist/openclaw/index.js +29 -15
- package/dist/openclaw/index.js.map +1 -1
- package/dist/openclaw/signal.d.ts +3 -0
- package/dist/openclaw/signal.d.ts.map +1 -0
- package/dist/openclaw/signal.js +215 -0
- package/dist/openclaw/signal.js.map +1 -0
- package/dist/openclaw/types.d.ts +35 -0
- package/dist/openclaw/types.d.ts.map +1 -1
- package/dist/shared/types.d.ts +2 -12
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/skills/__tests__/mingw-escape.test.js +41 -11
- package/dist/skills/__tests__/mingw-escape.test.js.map +1 -1
- package/dist/team/__tests__/api-interop.cwd-resolution.test.d.ts +2 -0
- package/dist/team/__tests__/api-interop.cwd-resolution.test.d.ts.map +1 -0
- package/dist/team/__tests__/api-interop.cwd-resolution.test.js +78 -0
- package/dist/team/__tests__/api-interop.cwd-resolution.test.js.map +1 -0
- package/dist/team/__tests__/api-interop.dispatch.test.d.ts +2 -0
- package/dist/team/__tests__/api-interop.dispatch.test.d.ts.map +1 -0
- package/dist/team/__tests__/api-interop.dispatch.test.js +125 -0
- package/dist/team/__tests__/api-interop.dispatch.test.js.map +1 -0
- package/dist/team/__tests__/cli-detection.test.d.ts +2 -0
- package/dist/team/__tests__/cli-detection.test.d.ts.map +1 -0
- package/dist/team/__tests__/cli-detection.test.js +36 -0
- package/dist/team/__tests__/cli-detection.test.js.map +1 -0
- package/dist/team/__tests__/model-contract.test.js +79 -2
- package/dist/team/__tests__/model-contract.test.js.map +1 -1
- package/dist/team/__tests__/runtime-done-recovery.test.js +1 -0
- package/dist/team/__tests__/runtime-done-recovery.test.js.map +1 -1
- package/dist/team/__tests__/runtime-prompt-mode.test.js +84 -8
- package/dist/team/__tests__/runtime-prompt-mode.test.js.map +1 -1
- package/dist/team/__tests__/runtime-v2.dispatch.test.d.ts +2 -0
- package/dist/team/__tests__/runtime-v2.dispatch.test.d.ts.map +1 -0
- package/dist/team/__tests__/runtime-v2.dispatch.test.js +237 -0
- package/dist/team/__tests__/runtime-v2.dispatch.test.js.map +1 -0
- package/dist/team/__tests__/runtime-v2.monitor.test.d.ts +2 -0
- package/dist/team/__tests__/runtime-v2.monitor.test.d.ts.map +1 -0
- package/dist/team/__tests__/runtime-v2.monitor.test.js +103 -0
- package/dist/team/__tests__/runtime-v2.monitor.test.js.map +1 -0
- package/dist/team/__tests__/runtime-v2.shutdown.test.d.ts +2 -0
- package/dist/team/__tests__/runtime-v2.shutdown.test.d.ts.map +1 -0
- package/dist/team/__tests__/runtime-v2.shutdown.test.js +49 -0
- package/dist/team/__tests__/runtime-v2.shutdown.test.js.map +1 -0
- package/dist/team/__tests__/runtime-watchdog-retry.test.js +3 -0
- package/dist/team/__tests__/runtime-watchdog-retry.test.js.map +1 -1
- package/dist/team/__tests__/tmux-session.create-team.test.js +29 -12
- package/dist/team/__tests__/tmux-session.create-team.test.js.map +1 -1
- package/dist/team/__tests__/tmux-session.kill-team-session.test.js +6 -0
- package/dist/team/__tests__/tmux-session.kill-team-session.test.js.map +1 -1
- package/dist/team/__tests__/tmux-session.test.js +9 -0
- package/dist/team/__tests__/tmux-session.test.js.map +1 -1
- package/dist/team/__tests__/worker-bootstrap.test.js +32 -3
- package/dist/team/__tests__/worker-bootstrap.test.js.map +1 -1
- package/dist/team/api-interop.d.ts.map +1 -1
- package/dist/team/api-interop.js +153 -2
- package/dist/team/api-interop.js.map +1 -1
- package/dist/team/cli-detection.d.ts.map +1 -1
- package/dist/team/cli-detection.js +6 -2
- package/dist/team/cli-detection.js.map +1 -1
- package/dist/team/idle-nudge.js +1 -1
- package/dist/team/idle-nudge.js.map +1 -1
- package/dist/team/mcp-team-bridge.d.ts.map +1 -1
- package/dist/team/mcp-team-bridge.js +2 -1
- package/dist/team/mcp-team-bridge.js.map +1 -1
- package/dist/team/model-contract.d.ts +1 -1
- package/dist/team/model-contract.d.ts.map +1 -1
- package/dist/team/model-contract.js +35 -4
- package/dist/team/model-contract.js.map +1 -1
- package/dist/team/runtime-cli.d.ts.map +1 -1
- package/dist/team/runtime-cli.js +10 -7
- package/dist/team/runtime-cli.js.map +1 -1
- package/dist/team/runtime-v2.d.ts +4 -0
- package/dist/team/runtime-v2.d.ts.map +1 -1
- package/dist/team/runtime-v2.js +231 -59
- package/dist/team/runtime-v2.js.map +1 -1
- package/dist/team/runtime.d.ts +6 -1
- package/dist/team/runtime.d.ts.map +1 -1
- package/dist/team/runtime.js +39 -14
- package/dist/team/runtime.js.map +1 -1
- package/dist/team/tmux-session.d.ts +20 -11
- package/dist/team/tmux-session.d.ts.map +1 -1
- package/dist/team/tmux-session.js +108 -51
- package/dist/team/tmux-session.js.map +1 -1
- package/dist/team/types.d.ts +1 -0
- package/dist/team/types.d.ts.map +1 -1
- package/dist/team/types.js.map +1 -1
- package/dist/team/worker-bootstrap.d.ts +2 -0
- package/dist/team/worker-bootstrap.d.ts.map +1 -1
- package/dist/team/worker-bootstrap.js +46 -12
- package/dist/team/worker-bootstrap.js.map +1 -1
- package/dist/tools/__tests__/memory-tools.test.js +29 -1
- package/dist/tools/__tests__/memory-tools.test.js.map +1 -1
- package/dist/tools/lsp/client.d.ts +11 -0
- package/dist/tools/lsp/client.d.ts.map +1 -1
- package/dist/tools/lsp/client.js +46 -0
- package/dist/tools/lsp/client.js.map +1 -1
- package/dist/tools/session-history-tools.d.ts +23 -0
- package/dist/tools/session-history-tools.d.ts.map +1 -0
- package/dist/tools/session-history-tools.js +41 -0
- package/dist/tools/session-history-tools.js.map +1 -0
- package/dist/tools/trace-tools.d.ts +9 -0
- package/dist/tools/trace-tools.d.ts.map +1 -1
- package/dist/tools/trace-tools.js +2 -1
- package/dist/tools/trace-tools.js.map +1 -1
- package/dist/utils/frontmatter.d.ts +5 -0
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js +22 -0
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/skill-pipeline.d.ts +9 -0
- package/dist/utils/skill-pipeline.d.ts.map +1 -0
- package/dist/utils/skill-pipeline.js +97 -0
- package/dist/utils/skill-pipeline.js.map +1 -0
- package/docs/AGENTS.md +1 -1
- package/docs/ANALYTICS-SYSTEM.md +23 -132
- package/docs/CLAUDE.md +40 -139
- package/docs/MIGRATION.md +4 -4
- package/docs/OPENCLAW-ROUTING.md +102 -0
- package/docs/PERFORMANCE-MONITORING.md +30 -55
- package/docs/REFERENCE.md +62 -35
- package/docs/TIERED_AGENTS_V2.md +3 -2
- package/docs/design/SKILL_AUDIT_1445.md +75 -0
- package/docs/ko/MIGRATION.md +2 -2
- package/docs/ko/REFERENCE.md +14 -22
- package/docs/partials/agent-tiers.md +11 -15
- package/docs/partials/features.md +2 -2
- package/docs/partials/mode-selection-guide.md +2 -2
- package/docs/shared/agent-tiers.md +11 -15
- package/docs/shared/features.md +2 -2
- package/docs/shared/mode-selection-guide.md +2 -2
- package/package.json +4 -1
- package/scripts/code-simplifier.mjs +1 -1
- package/scripts/context-guard-stop.mjs +26 -10
- package/scripts/keyword-detector.mjs +99 -39
- package/scripts/persistent-mode.cjs +295 -34
- package/scripts/persistent-mode.mjs +79 -21
- package/scripts/plugin-setup.mjs +10 -1
- package/scripts/post-tool-verifier.mjs +57 -3
- package/scripts/pre-tool-enforcer.mjs +207 -2
- package/scripts/run-provider-advisor.js +30 -3
- package/scripts/session-start.mjs +3 -3
- package/scripts/setup-claude-md.sh +159 -0
- package/scripts/setup-progress.sh +123 -0
- package/scripts/sync-metadata.ts +11 -1
- package/skills/AGENTS.md +13 -17
- package/skills/ai-slop-cleaner/SKILL.md +130 -0
- package/skills/ask/SKILL.md +51 -0
- package/skills/ccg/SKILL.md +6 -6
- package/skills/deep-interview/SKILL.md +4 -0
- package/skills/omc-doctor/SKILL.md +2 -2
- package/skills/omc-setup/SKILL.md +75 -1206
- package/skills/omc-setup/phases/01-install-claude-md.md +76 -0
- package/skills/omc-setup/phases/02-configure.md +211 -0
- package/skills/omc-setup/phases/03-integrations.md +192 -0
- package/skills/omc-setup/phases/04-welcome.md +192 -0
- package/skills/omc-teams/SKILL.md +35 -2
- package/skills/plan/SKILL.md +3 -0
- package/skills/ralph/SKILL.md +16 -10
- package/skills/release/SKILL.md +4 -0
- package/skills/setup/SKILL.md +40 -0
- package/skills/team/SKILL.md +6 -6
- package/templates/hooks/code-simplifier.mjs +1 -1
- package/templates/hooks/keyword-detector.mjs +100 -32
- package/templates/hooks/persistent-mode.mjs +43 -4
- package/templates/hooks/pre-tool-use.mjs +115 -1
- package/templates/hooks/session-start.mjs +1 -1
- package/agents/build-fixer.md +0 -90
- package/agents/deep-executor.md +0 -112
- package/agents/harsh-critic.md +0 -254
- package/agents/quality-reviewer.md +0 -151
- package/skills/analyze/SKILL.md +0 -87
- package/skills/ask-codex/SKILL.md +0 -47
- package/skills/ask-gemini/SKILL.md +0 -47
- package/skills/build-fix/SKILL.md +0 -123
- package/skills/code-review/SKILL.md +0 -573
- package/skills/configure-openclaw/SKILL.md +0 -383
- package/skills/learn-about-omc/SKILL.md +0 -37
- package/skills/note/SKILL.md +0 -62
- package/skills/omc-help/SKILL.md +0 -192
- package/skills/ralph-init/SKILL.md +0 -40
- package/skills/security-review/SKILL.md +0 -282
- package/skills/tdd/SKILL.md +0 -104
- package/skills/trace/SKILL.md +0 -33
|
@@ -42,8 +42,8 @@ Use the Team orchestrator to execute tasks in parallel:
|
|
|
42
42
|
Match agent types to task complexity:
|
|
43
43
|
- Simple tasks (single file, config): \`executor\` with \`model="haiku"\`
|
|
44
44
|
- Standard implementation: \`executor\` with \`model="sonnet"\`
|
|
45
|
-
- Complex work (architecture, refactoring): \`
|
|
46
|
-
- Build issues: \`
|
|
45
|
+
- Complex work (architecture, refactoring): \`executor\` with \`model="opus"\`
|
|
46
|
+
- Build issues: \`debugger\` with \`model="sonnet"\`
|
|
47
47
|
- Test creation: \`test-engineer\` with \`model="sonnet"\`
|
|
48
48
|
- UI work: \`designer\` with \`model="sonnet"\`
|
|
49
49
|
|
|
@@ -89,7 +89,7 @@ Task(subagent_type="oh-my-claudecode:executor", model="haiku", prompt="...")
|
|
|
89
89
|
Task(subagent_type="oh-my-claudecode:executor", model="sonnet", prompt="...")
|
|
90
90
|
|
|
91
91
|
// For complex work (architecture, debugging, refactoring)
|
|
92
|
-
Task(subagent_type="oh-my-claudecode:
|
|
92
|
+
Task(subagent_type="oh-my-claudecode:executor", model="opus", prompt="...")
|
|
93
93
|
\`\`\`
|
|
94
94
|
|
|
95
95
|
### Progress Tracking
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge-normalize.d.ts","sourceRoot":"","sources":["../../src/hooks/bridge-normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAK7C,0FAA0F;AAC1F,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA4BL,CAAC;AAkCjB,qEAAqE;AACrE,QAAA,MAAM,eAAe,aAKnB,CAAC;AAEH,2EAA2E;AAC3E,QAAA,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"bridge-normalize.d.ts","sourceRoot":"","sources":["../../src/hooks/bridge-normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAK7C,0FAA0F;AAC1F,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA4BL,CAAC;AAkCjB,qEAAqE;AACrE,QAAA,MAAM,eAAe,aAKnB,CAAC;AAEH,2EAA2E;AAC3E,QAAA,MAAM,YAAY,aAchB,CAAC;AAeH,8EAA8E;AAC9E,iBAAS,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAYjE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CA6D7E;AA2CD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -60,6 +60,8 @@ const KNOWN_FIELDS = new Set([
|
|
|
60
60
|
'agent_id', 'agent_name', 'agent_type', 'parent_session_id',
|
|
61
61
|
// Common extra fields from Claude Code
|
|
62
62
|
'input', 'output', 'result', 'error', 'status',
|
|
63
|
+
// Session-end fields
|
|
64
|
+
'reason',
|
|
63
65
|
]);
|
|
64
66
|
// --- Fast-path detection ---
|
|
65
67
|
/** Typical camelCase keys that indicate already-normalized input */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge-normalize.js","sourceRoot":"","sources":["../../src/hooks/bridge-normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,gDAAgD;AAEhD,0FAA0F;AAC1F,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,qCAAqC;IACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAClC,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACrC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEtC,mDAAmD;IACnD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACjC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAClC,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACpC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEpC,+CAA+C;IAC/C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;IAChE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;IAEtF,mBAAmB;IACnB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACtC,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC,WAAW,EAAE,CAAC;AAgCjB,oDAAoD;AAEpD,qEAAqE;AACrE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,oBAAoB;IACpB,YAAY;IACZ,mBAAmB;IACnB,aAAa;CACd,CAAC,CAAC;AAEH,2EAA2E;AAC3E,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAC3B,yBAAyB;IACzB,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW;IAC/D,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe;IAC7C,mBAAmB;IACnB,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe;IAC9D,yBAAyB;IACzB,iBAAiB,EAAE,aAAa,EAAE,iBAAiB;IACnD,kBAAkB;IAClB,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB;IAC3D,uCAAuC;IACvC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ;
|
|
1
|
+
{"version":3,"file":"bridge-normalize.js","sourceRoot":"","sources":["../../src/hooks/bridge-normalize.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/hooks/bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/hooks/bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAuRH;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAc9D;AA0BD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,4CAA4C;IAC5C,KAAK,CAAC,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wCAAwC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,6CAA6C;IAC7C,QAAQ,EAAE,OAAO,CAAC;IAClB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAChB,kBAAkB,GAClB,mBAAmB,GACnB,OAAO,GACP,iBAAiB,GACjB,eAAe,GACf,aAAa,GACb,cAAc,GACd,eAAe,GACf,WAAW,GACX,gBAAgB,GAChB,eAAe,GACf,aAAa,GACb,YAAY,GACZ,mBAAmB,GACnB,oBAAoB,GACpB,iBAAiB,GACjB,WAAW,CAAC;AA0mBhB;;;;GAIG;AACH,wBAAgB,mCAAmC,CACjD,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,OAAO,GACjB,IAAI,CAaN;AAED,sEAAsE;AACtE,eAAO,MAAM,OAAO;;CAEnB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS;kBACN,OAAO,sBAAsB,EAAE,iBAAiB,WAAW,OAAO,sBAAsB,EAAE,eAAe;CAMxH,CAAC;AAsdF;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,SAAS,GAClB,OAAO,CAAC,UAAU,CAAC,CA+MrB;AAED;;;GAGG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAoC1C"}
|
package/dist/hooks/bridge.js
CHANGED
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
* ```
|
|
14
14
|
*/
|
|
15
15
|
import { pathToFileURL } from 'url';
|
|
16
|
-
import { existsSync, readFileSync } from "fs";
|
|
17
|
-
import { join } from "path";
|
|
16
|
+
import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from "fs";
|
|
17
|
+
import { dirname, join } from "path";
|
|
18
18
|
import { resolveToWorktreeRoot, getOmcRoot } from "../lib/worktree-paths.js";
|
|
19
19
|
// Hot-path imports: needed on every/most hook invocations (keyword-detector, pre/post-tool-use)
|
|
20
20
|
import { removeCodeBlocks, getAllKeywordsWithSizeCheck, applyRalplanGate, sanitizeForKeywordDetection, NON_LATIN_SCRIPT_PATTERN } from "./keyword-detector/index.js";
|
|
@@ -22,13 +22,14 @@ import { processOrchestratorPreTool, processOrchestratorPostTool } from "./omc-o
|
|
|
22
22
|
import { normalizeHookInput } from "./bridge-normalize.js";
|
|
23
23
|
import { addBackgroundTask, getRunningTaskCount, } from "../hud/background-tasks.js";
|
|
24
24
|
import { readHudState, writeHudState } from "../hud/state.js";
|
|
25
|
-
import { loadConfig } from "../config/loader.js";
|
|
25
|
+
import { compactOmcStartupGuidance, loadConfig } from "../config/loader.js";
|
|
26
26
|
import { writeSkillActiveState } from "./skill-state/index.js";
|
|
27
|
-
import { ULTRAWORK_MESSAGE, ULTRATHINK_MESSAGE, SEARCH_MESSAGE, ANALYZE_MESSAGE, RALPH_MESSAGE, PROMPT_TRANSLATION_MESSAGE, } from "../installer/hooks.js";
|
|
27
|
+
import { ULTRAWORK_MESSAGE, ULTRATHINK_MESSAGE, SEARCH_MESSAGE, ANALYZE_MESSAGE, TDD_MESSAGE, CODE_REVIEW_MESSAGE, SECURITY_REVIEW_MESSAGE, RALPH_MESSAGE, PROMPT_TRANSLATION_MESSAGE, } from "../installer/hooks.js";
|
|
28
28
|
// Agent dashboard is used in pre/post-tool-use hot path
|
|
29
29
|
import { getAgentDashboard, } from "./subagent-tracker/index.js";
|
|
30
30
|
// Session replay recordFileTouch is used in pre-tool-use hot path
|
|
31
31
|
import { recordFileTouch, } from "./subagent-tracker/session-replay.js";
|
|
32
|
+
import { getBackgroundBashPermissionFallback, getBackgroundTaskPermissionFallback, } from "./permission-handler/index.js";
|
|
32
33
|
// Security: wrap untrusted file content to prevent prompt injection
|
|
33
34
|
import { wrapUntrustedFileContent } from "../agents/prompt-helpers.js";
|
|
34
35
|
const PKILL_F_FLAG_PATTERN = /\bpkill\b.*\s-f\b/;
|
|
@@ -47,6 +48,25 @@ const TEAM_TERMINAL_VALUES = new Set([
|
|
|
47
48
|
"terminated",
|
|
48
49
|
"done",
|
|
49
50
|
]);
|
|
51
|
+
const TEAM_ACTIVE_STAGES = new Set([
|
|
52
|
+
"team-plan",
|
|
53
|
+
"team-prd",
|
|
54
|
+
"team-exec",
|
|
55
|
+
"team-verify",
|
|
56
|
+
"team-fix",
|
|
57
|
+
]);
|
|
58
|
+
const TEAM_STOP_BLOCKER_MAX = 20;
|
|
59
|
+
const TEAM_STOP_BLOCKER_TTL_MS = 5 * 60 * 1000;
|
|
60
|
+
const TEAM_STAGE_ALIASES = {
|
|
61
|
+
planning: "team-plan",
|
|
62
|
+
prd: "team-prd",
|
|
63
|
+
executing: "team-exec",
|
|
64
|
+
execution: "team-exec",
|
|
65
|
+
verify: "team-verify",
|
|
66
|
+
verification: "team-verify",
|
|
67
|
+
fix: "team-fix",
|
|
68
|
+
fixing: "team-fix",
|
|
69
|
+
};
|
|
50
70
|
function readTeamStagedState(directory, sessionId) {
|
|
51
71
|
const stateDir = join(getOmcRoot(directory), "state");
|
|
52
72
|
const statePaths = sessionId
|
|
@@ -77,7 +97,75 @@ function readTeamStagedState(directory, sessionId) {
|
|
|
77
97
|
return null;
|
|
78
98
|
}
|
|
79
99
|
function getTeamStage(state) {
|
|
80
|
-
return state.stage ||
|
|
100
|
+
return (state.stage ||
|
|
101
|
+
state.current_stage ||
|
|
102
|
+
state.currentStage ||
|
|
103
|
+
state.current_phase ||
|
|
104
|
+
state.phase ||
|
|
105
|
+
"team-exec");
|
|
106
|
+
}
|
|
107
|
+
function getTeamStageForEnforcement(state) {
|
|
108
|
+
const rawStage = state.stage ?? state.current_stage ?? state.currentStage ?? state.current_phase ?? state.phase;
|
|
109
|
+
if (typeof rawStage !== "string") {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
const stage = rawStage.trim().toLowerCase();
|
|
113
|
+
if (!stage) {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
if (TEAM_ACTIVE_STAGES.has(stage)) {
|
|
117
|
+
return stage;
|
|
118
|
+
}
|
|
119
|
+
const alias = TEAM_STAGE_ALIASES[stage];
|
|
120
|
+
return alias && TEAM_ACTIVE_STAGES.has(alias) ? alias : null;
|
|
121
|
+
}
|
|
122
|
+
function readTeamStopBreakerCount(directory, sessionId) {
|
|
123
|
+
const stateDir = join(getOmcRoot(directory), "state");
|
|
124
|
+
const breakerPath = sessionId
|
|
125
|
+
? join(stateDir, "sessions", sessionId, "team-stop-breaker.json")
|
|
126
|
+
: join(stateDir, "team-stop-breaker.json");
|
|
127
|
+
try {
|
|
128
|
+
if (!existsSync(breakerPath)) {
|
|
129
|
+
return 0;
|
|
130
|
+
}
|
|
131
|
+
const parsed = JSON.parse(readFileSync(breakerPath, "utf-8"));
|
|
132
|
+
if (typeof parsed.updated_at === "string") {
|
|
133
|
+
const updatedAt = new Date(parsed.updated_at).getTime();
|
|
134
|
+
if (Number.isFinite(updatedAt) && Date.now() - updatedAt > TEAM_STOP_BLOCKER_TTL_MS) {
|
|
135
|
+
return 0;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
const count = typeof parsed.count === "number" ? parsed.count : Number.NaN;
|
|
139
|
+
return Number.isFinite(count) && count >= 0 ? Math.floor(count) : 0;
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
return 0;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
function writeTeamStopBreakerCount(directory, sessionId, count) {
|
|
146
|
+
const stateDir = join(getOmcRoot(directory), "state");
|
|
147
|
+
const breakerPath = sessionId
|
|
148
|
+
? join(stateDir, "sessions", sessionId, "team-stop-breaker.json")
|
|
149
|
+
: join(stateDir, "team-stop-breaker.json");
|
|
150
|
+
const safeCount = Number.isFinite(count) && count > 0 ? Math.floor(count) : 0;
|
|
151
|
+
if (safeCount === 0) {
|
|
152
|
+
try {
|
|
153
|
+
if (existsSync(breakerPath)) {
|
|
154
|
+
unlinkSync(breakerPath);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
// no-op
|
|
159
|
+
}
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
try {
|
|
163
|
+
mkdirSync(dirname(breakerPath), { recursive: true });
|
|
164
|
+
writeFileSync(breakerPath, JSON.stringify({ count: safeCount, updated_at: new Date().toISOString() }, null, 2), "utf-8");
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
// no-op
|
|
168
|
+
}
|
|
81
169
|
}
|
|
82
170
|
function isTeamStateTerminal(state) {
|
|
83
171
|
if (state.terminal === true || state.cancelled === true || state.canceled === true || state.completed === true) {
|
|
@@ -274,10 +362,12 @@ async function processKeywordDetector(input) {
|
|
|
274
362
|
switch (keywordType) {
|
|
275
363
|
case "ralph": {
|
|
276
364
|
// Lazy-load ralph module
|
|
277
|
-
const { createRalphLoopHook, findPrdPath: findPrd, initPrd: initPrdFn, initProgress: initProgressFn, detectNoPrdFlag: detectNoPrd, stripNoPrdFlag: stripNoPrd } = await import("./ralph/index.js");
|
|
365
|
+
const { createRalphLoopHook, findPrdPath: findPrd, initPrd: initPrdFn, initProgress: initProgressFn, detectNoPrdFlag: detectNoPrd, stripNoPrdFlag: stripNoPrd, detectCriticModeFlag, stripCriticModeFlag } = await import("./ralph/index.js");
|
|
278
366
|
// Handle --no-prd flag
|
|
279
367
|
const noPrd = detectNoPrd(promptText);
|
|
280
|
-
const
|
|
368
|
+
const criticMode = detectCriticModeFlag(promptText) ?? undefined;
|
|
369
|
+
const promptWithoutCriticFlag = stripCriticModeFlag(promptText);
|
|
370
|
+
const cleanPrompt = noPrd ? stripNoPrd(promptWithoutCriticFlag) : promptWithoutCriticFlag;
|
|
281
371
|
// Auto-generate scaffold PRD if none exists and --no-prd not set
|
|
282
372
|
const existingPrd = findPrd(directory);
|
|
283
373
|
if (!noPrd && !existingPrd) {
|
|
@@ -296,7 +386,7 @@ async function processKeywordDetector(input) {
|
|
|
296
386
|
}
|
|
297
387
|
// Activate ralph state which also auto-activates ultrawork
|
|
298
388
|
const hook = createRalphLoopHook(directory);
|
|
299
|
-
hook.startLoop(sessionId, cleanPrompt);
|
|
389
|
+
hook.startLoop(sessionId, cleanPrompt, criticMode ? { criticMode } : undefined);
|
|
300
390
|
messages.push(RALPH_MESSAGE);
|
|
301
391
|
break;
|
|
302
392
|
}
|
|
@@ -317,12 +407,21 @@ async function processKeywordDetector(input) {
|
|
|
317
407
|
case "analyze":
|
|
318
408
|
messages.push(ANALYZE_MESSAGE);
|
|
319
409
|
break;
|
|
410
|
+
case "tdd":
|
|
411
|
+
messages.push(TDD_MESSAGE);
|
|
412
|
+
break;
|
|
413
|
+
case "code-review":
|
|
414
|
+
messages.push(CODE_REVIEW_MESSAGE);
|
|
415
|
+
break;
|
|
416
|
+
case "security-review":
|
|
417
|
+
messages.push(SECURITY_REVIEW_MESSAGE);
|
|
418
|
+
break;
|
|
320
419
|
// For modes without dedicated message constants, return generic activation message
|
|
321
420
|
// These are handled by UserPromptSubmit hook for skill invocation
|
|
322
421
|
case "cancel":
|
|
323
422
|
case "autopilot":
|
|
324
423
|
case "ralplan":
|
|
325
|
-
case "
|
|
424
|
+
case "deep-interview":
|
|
326
425
|
messages.push(`[MODE: ${keywordType.toUpperCase()}] Skill invocation handled by UserPromptSubmit hook.`);
|
|
327
426
|
break;
|
|
328
427
|
case "codex":
|
|
@@ -385,11 +484,21 @@ async function processPersistentMode(input) {
|
|
|
385
484
|
toolName: input.toolName,
|
|
386
485
|
tool_input: input.tool_input,
|
|
387
486
|
toolInput: input.toolInput,
|
|
487
|
+
reason: input.reason,
|
|
488
|
+
transcript_path: input.transcript_path,
|
|
489
|
+
transcriptPath: input.transcriptPath,
|
|
388
490
|
};
|
|
389
491
|
const result = await checkPersistentModes(sessionId, directory, stopContext);
|
|
390
492
|
const output = createHookOutput(result);
|
|
493
|
+
// Skip legacy bridge.ts team enforcement if persistent-mode already
|
|
494
|
+
// handled this stop event (or intentionally emitted a stop message).
|
|
495
|
+
// Prevents mixed/double continuation prompts across modes.
|
|
496
|
+
if (result.mode !== 'none' || Boolean(output.message)) {
|
|
497
|
+
return output;
|
|
498
|
+
}
|
|
391
499
|
const teamState = readTeamStagedState(directory, sessionId);
|
|
392
500
|
if (!teamState || teamState.active !== true || isTeamStateTerminal(teamState)) {
|
|
501
|
+
writeTeamStopBreakerCount(directory, sessionId, 0);
|
|
393
502
|
// No persistent mode and no active team — Claude is truly idle.
|
|
394
503
|
// Send session-idle notification (non-blocking) unless this was a user abort or context limit.
|
|
395
504
|
if (result.mode === "none" && sessionId) {
|
|
@@ -418,14 +527,28 @@ async function processPersistentMode(input) {
|
|
|
418
527
|
}
|
|
419
528
|
// Explicit cancel should suppress team continuation prompts.
|
|
420
529
|
if (isExplicitCancelCommand(stopContext)) {
|
|
530
|
+
writeTeamStopBreakerCount(directory, sessionId, 0);
|
|
421
531
|
return output;
|
|
422
532
|
}
|
|
423
533
|
// Auth failures (401/403/expired OAuth) should not inject Team continuation.
|
|
424
534
|
// Otherwise stop hooks can force a retry loop while credentials are invalid.
|
|
425
535
|
if (isAuthenticationError(stopContext)) {
|
|
536
|
+
writeTeamStopBreakerCount(directory, sessionId, 0);
|
|
426
537
|
return output;
|
|
427
538
|
}
|
|
428
|
-
const stage =
|
|
539
|
+
const stage = getTeamStageForEnforcement(teamState);
|
|
540
|
+
if (!stage) {
|
|
541
|
+
// Fail-open for missing/corrupt/unknown phase/state values.
|
|
542
|
+
writeTeamStopBreakerCount(directory, sessionId, 0);
|
|
543
|
+
return output;
|
|
544
|
+
}
|
|
545
|
+
const newBreakerCount = readTeamStopBreakerCount(directory, sessionId) + 1;
|
|
546
|
+
if (newBreakerCount > TEAM_STOP_BLOCKER_MAX) {
|
|
547
|
+
// Circuit breaker: never allow infinite stop-hook blocking loops.
|
|
548
|
+
writeTeamStopBreakerCount(directory, sessionId, 0);
|
|
549
|
+
return output;
|
|
550
|
+
}
|
|
551
|
+
writeTeamStopBreakerCount(directory, sessionId, newBreakerCount);
|
|
429
552
|
const stagePrompt = getTeamStagePrompt(stage);
|
|
430
553
|
const teamName = teamState.team_name || teamState.teamName || "team";
|
|
431
554
|
const currentMessage = output.message ? `${output.message}\n` : "";
|
|
@@ -513,7 +636,7 @@ You have an active autopilot session from ${autopilotState.started_at}.
|
|
|
513
636
|
Original idea: ${autopilotState.originalIdea}
|
|
514
637
|
Current phase: ${autopilotState.phase}
|
|
515
638
|
|
|
516
|
-
|
|
639
|
+
Treat this as prior-session context only. Prioritize the user's newest request, and resume autopilot only if the user explicitly asks to continue it.
|
|
517
640
|
|
|
518
641
|
</session-restore>
|
|
519
642
|
|
|
@@ -531,7 +654,7 @@ Continue autopilot execution until complete.
|
|
|
531
654
|
You have an active ultrawork session from ${ultraworkState.started_at}.
|
|
532
655
|
Original task: ${ultraworkState.original_prompt}
|
|
533
656
|
|
|
534
|
-
|
|
657
|
+
Treat this as prior-session context only. Prioritize the user's newest request, and resume ultrawork only if the user explicitly asks to continue it.
|
|
535
658
|
|
|
536
659
|
</session-restore>
|
|
537
660
|
|
|
@@ -566,7 +689,7 @@ You have an active Team staged run for "${teamName}".
|
|
|
566
689
|
Current stage: ${stage}
|
|
567
690
|
${getTeamStagePrompt(stage)}
|
|
568
691
|
|
|
569
|
-
|
|
692
|
+
Treat this as prior-session context only. Prioritize the user's newest request, and resume the staged Team workflow only if the user explicitly asks to continue it.
|
|
570
693
|
|
|
571
694
|
</session-restore>
|
|
572
695
|
|
|
@@ -579,7 +702,7 @@ Resume from this stage and continue the staged Team workflow.
|
|
|
579
702
|
const agentsMdPath = join(directory, 'AGENTS.md');
|
|
580
703
|
if (existsSync(agentsMdPath)) {
|
|
581
704
|
try {
|
|
582
|
-
let agentsContent = readFileSync(agentsMdPath, 'utf-8').trim();
|
|
705
|
+
let agentsContent = compactOmcStartupGuidance(readFileSync(agentsMdPath, 'utf-8')).trim();
|
|
583
706
|
if (agentsContent) {
|
|
584
707
|
// Truncate to ~5000 tokens (20000 chars) to avoid context bloat
|
|
585
708
|
const MAX_AGENTS_CHARS = 20000;
|
|
@@ -623,6 +746,27 @@ Please continue working on these tasks.
|
|
|
623
746
|
|
|
624
747
|
`);
|
|
625
748
|
}
|
|
749
|
+
// Bedrock/Vertex/proxy override: tell the LLM not to pass model on Task calls.
|
|
750
|
+
// This prevents the LLM from following the static CLAUDE.md instruction
|
|
751
|
+
// "Pass model on Task calls: haiku, sonnet, opus" which produces invalid
|
|
752
|
+
// model IDs on non-standard providers. (issues #1135, #1201)
|
|
753
|
+
try {
|
|
754
|
+
const sessionConfig = loadConfig();
|
|
755
|
+
if (sessionConfig.routing?.forceInherit) {
|
|
756
|
+
messages.push(`<system-reminder>
|
|
757
|
+
|
|
758
|
+
[MODEL ROUTING OVERRIDE — NON-STANDARD PROVIDER DETECTED]
|
|
759
|
+
|
|
760
|
+
This environment uses a non-standard model provider (AWS Bedrock, Google Vertex AI, or a proxy).
|
|
761
|
+
Do NOT pass the \`model\` parameter on Task/Agent calls. Omit it entirely so agents inherit the parent session's model.
|
|
762
|
+
The CLAUDE.md instruction "Pass model on Task calls: haiku, sonnet, opus" does NOT apply here.
|
|
763
|
+
|
|
764
|
+
</system-reminder>`);
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
catch {
|
|
768
|
+
// Non-blocking: config load failure must never break session start
|
|
769
|
+
}
|
|
626
770
|
if (messages.length > 0) {
|
|
627
771
|
return {
|
|
628
772
|
continue: true,
|
|
@@ -716,16 +860,64 @@ function processPreToolUse(input) {
|
|
|
716
860
|
message: enforcementResult.message,
|
|
717
861
|
};
|
|
718
862
|
}
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
863
|
+
const preToolMessages = enforcementResult.message ? [enforcementResult.message] : [];
|
|
864
|
+
let modifiedToolInput;
|
|
865
|
+
// Force-inherit: deny Task calls that carry a `model` parameter when
|
|
866
|
+
// forceInherit is enabled (Bedrock, Vertex, CC Switch, etc.).
|
|
867
|
+
// Claude Code's hook protocol does not support modifiedInput, so we cannot
|
|
868
|
+
// silently strip the model. Instead, deny the call so Claude retries without
|
|
869
|
+
// the model param, letting agents inherit the parent session's model.
|
|
870
|
+
// (issues #1135, #1201)
|
|
722
871
|
if (input.toolName === "Task") {
|
|
723
|
-
const
|
|
724
|
-
|
|
872
|
+
const originalTaskInput = input.toolInput;
|
|
873
|
+
const taskModel = originalTaskInput?.model;
|
|
874
|
+
if (taskModel) {
|
|
725
875
|
const config = loadConfig();
|
|
726
876
|
if (config.routing?.forceInherit) {
|
|
727
|
-
|
|
728
|
-
|
|
877
|
+
// Use permissionDecision:"deny" — the only PreToolUse mechanism
|
|
878
|
+
// Claude Code supports for blocking a specific tool call with
|
|
879
|
+
// feedback. modifiedInput is NOT supported by the hook protocol.
|
|
880
|
+
const denyReason = `[MODEL ROUTING] This environment uses a non-standard provider (Bedrock/Vertex/proxy). Do NOT pass the \`model\` parameter on Task calls — remove \`model\` and retry so agents inherit the parent session's model. The model "${taskModel}" is not valid for this provider.`;
|
|
881
|
+
return {
|
|
882
|
+
continue: true,
|
|
883
|
+
hookSpecificOutput: {
|
|
884
|
+
hookEventName: "PreToolUse",
|
|
885
|
+
permissionDecision: "deny",
|
|
886
|
+
permissionDecisionReason: denyReason,
|
|
887
|
+
},
|
|
888
|
+
};
|
|
889
|
+
}
|
|
890
|
+
}
|
|
891
|
+
if (originalTaskInput?.run_in_background === true) {
|
|
892
|
+
const subagentType = typeof originalTaskInput.subagent_type === "string"
|
|
893
|
+
? originalTaskInput.subagent_type
|
|
894
|
+
: undefined;
|
|
895
|
+
const permissionFallback = getBackgroundTaskPermissionFallback(directory, subagentType);
|
|
896
|
+
if (permissionFallback.shouldFallback) {
|
|
897
|
+
const reason = `[BACKGROUND PERMISSIONS] ${subagentType || "This background agent"} may need ${permissionFallback.missingTools.join(", ")} permissions, but background agents cannot request interactive approval. Re-run without \`run_in_background=true\` or pre-approve ${permissionFallback.missingTools.join(", ")} in Claude Code settings.`;
|
|
898
|
+
return {
|
|
899
|
+
continue: false,
|
|
900
|
+
reason,
|
|
901
|
+
message: reason,
|
|
902
|
+
};
|
|
903
|
+
}
|
|
904
|
+
}
|
|
905
|
+
}
|
|
906
|
+
if (input.toolName === "Bash") {
|
|
907
|
+
const originalBashInput = input.toolInput;
|
|
908
|
+
const nextBashInput = originalBashInput ? { ...originalBashInput } : {};
|
|
909
|
+
if (nextBashInput.run_in_background === true) {
|
|
910
|
+
const command = typeof nextBashInput.command === "string"
|
|
911
|
+
? nextBashInput.command
|
|
912
|
+
: undefined;
|
|
913
|
+
const permissionFallback = getBackgroundBashPermissionFallback(directory, command);
|
|
914
|
+
if (permissionFallback.shouldFallback) {
|
|
915
|
+
const reason = "[BACKGROUND PERMISSIONS] This Bash command is not auto-approved for background execution. Re-run without `run_in_background=true` or pre-approve the command in Claude Code settings.";
|
|
916
|
+
return {
|
|
917
|
+
continue: false,
|
|
918
|
+
reason,
|
|
919
|
+
message: reason,
|
|
920
|
+
};
|
|
729
921
|
}
|
|
730
922
|
}
|
|
731
923
|
}
|
|
@@ -779,7 +971,8 @@ function processPreToolUse(input) {
|
|
|
779
971
|
// Warn about pkill -f self-termination risk (issue #210)
|
|
780
972
|
// Matches: pkill -f, pkill -9 -f, pkill --full, etc.
|
|
781
973
|
if (input.toolName === "Bash") {
|
|
782
|
-
const
|
|
974
|
+
const effectiveBashInput = (modifiedToolInput ?? input.toolInput);
|
|
975
|
+
const command = effectiveBashInput?.command ?? "";
|
|
783
976
|
if (PKILL_F_FLAG_PATTERN.test(command) ||
|
|
784
977
|
PKILL_FULL_FLAG_PATTERN.test(command)) {
|
|
785
978
|
return {
|
|
@@ -791,13 +984,14 @@ function processPreToolUse(input) {
|
|
|
791
984
|
' - `kill $(pgrep -f "pattern")` (pgrep does not kill itself)',
|
|
792
985
|
"Proceeding anyway, but the command may kill this shell session.",
|
|
793
986
|
].join("\n"),
|
|
987
|
+
...(modifiedToolInput ? { modifiedInput: modifiedToolInput } : {}),
|
|
794
988
|
};
|
|
795
989
|
}
|
|
796
990
|
}
|
|
797
991
|
// Background process guard - prevent forkbomb (issue #302)
|
|
798
992
|
// Block new background tasks if limit is exceeded
|
|
799
993
|
if (input.toolName === "Task" || input.toolName === "Bash") {
|
|
800
|
-
const toolInput = input.toolInput;
|
|
994
|
+
const toolInput = (modifiedToolInput ?? input.toolInput);
|
|
801
995
|
if (toolInput?.run_in_background) {
|
|
802
996
|
const config = loadConfig();
|
|
803
997
|
const maxBgTasks = config.permissions?.maxBackgroundTasks ?? 5;
|
|
@@ -814,7 +1008,7 @@ function processPreToolUse(input) {
|
|
|
814
1008
|
}
|
|
815
1009
|
// Track Task tool invocations for HUD background tasks display
|
|
816
1010
|
if (input.toolName === "Task") {
|
|
817
|
-
const toolInput = input.toolInput;
|
|
1011
|
+
const toolInput = (modifiedToolInput ?? input.toolInput);
|
|
818
1012
|
if (toolInput?.description) {
|
|
819
1013
|
const taskId = `task-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
820
1014
|
addBackgroundTask(taskId, toolInput.description, toolInput.subagent_type, directory);
|
|
@@ -833,28 +1027,28 @@ function processPreToolUse(input) {
|
|
|
833
1027
|
if (input.toolName === "Task") {
|
|
834
1028
|
const dashboard = getAgentDashboard(directory);
|
|
835
1029
|
if (dashboard) {
|
|
836
|
-
const combined =
|
|
837
|
-
? `${enforcementResult.message}\n\n${dashboard}`
|
|
838
|
-
: dashboard;
|
|
1030
|
+
const combined = [...preToolMessages, dashboard].filter(Boolean).join("\n\n");
|
|
839
1031
|
return {
|
|
840
1032
|
continue: true,
|
|
841
|
-
message: combined,
|
|
842
|
-
...(
|
|
1033
|
+
...(combined ? { message: combined } : {}),
|
|
1034
|
+
...(modifiedToolInput ? { modifiedInput: modifiedToolInput } : {}),
|
|
843
1035
|
};
|
|
844
1036
|
}
|
|
845
1037
|
}
|
|
846
|
-
// Wake OpenClaw gateway for pre-tool-use (non-blocking, fires only for allowed tools)
|
|
847
|
-
|
|
1038
|
+
// Wake OpenClaw gateway for pre-tool-use (non-blocking, fires only for allowed tools).
|
|
1039
|
+
// AskUserQuestion already has a dedicated high-signal OpenClaw event.
|
|
1040
|
+
if (input.sessionId && input.toolName !== "AskUserQuestion") {
|
|
848
1041
|
_openclaw.wake("pre-tool-use", {
|
|
849
1042
|
sessionId: input.sessionId,
|
|
850
1043
|
projectPath: directory,
|
|
851
1044
|
toolName: input.toolName,
|
|
1045
|
+
toolInput: input.toolInput,
|
|
852
1046
|
});
|
|
853
1047
|
}
|
|
854
1048
|
return {
|
|
855
1049
|
continue: true,
|
|
856
|
-
...(
|
|
857
|
-
...(
|
|
1050
|
+
...(preToolMessages.length > 0 ? { message: preToolMessages.join("\n\n") } : {}),
|
|
1051
|
+
...(modifiedToolInput ? { modifiedInput: modifiedToolInput } : {}),
|
|
858
1052
|
};
|
|
859
1053
|
}
|
|
860
1054
|
/**
|
|
@@ -888,13 +1082,15 @@ async function processPostToolUse(input) {
|
|
|
888
1082
|
if (toolName === "skill") {
|
|
889
1083
|
const skillName = getInvokedSkillName(input.toolInput);
|
|
890
1084
|
if (skillName === "ralph") {
|
|
891
|
-
const { createRalphLoopHook, findPrdPath: findPrd, initPrd: initPrdFn, initProgress: initProgressFn, detectNoPrdFlag: detectNoPrd, stripNoPrdFlag: stripNoPrd } = await import("./ralph/index.js");
|
|
1085
|
+
const { createRalphLoopHook, findPrdPath: findPrd, initPrd: initPrdFn, initProgress: initProgressFn, detectNoPrdFlag: detectNoPrd, stripNoPrdFlag: stripNoPrd, detectCriticModeFlag, stripCriticModeFlag } = await import("./ralph/index.js");
|
|
892
1086
|
const rawPrompt = typeof input.prompt === "string" && input.prompt.trim().length > 0
|
|
893
1087
|
? input.prompt
|
|
894
1088
|
: "Ralph loop activated via Skill tool";
|
|
895
1089
|
// Handle --no-prd flag
|
|
896
1090
|
const noPrd = detectNoPrd(rawPrompt);
|
|
897
|
-
const
|
|
1091
|
+
const criticMode = detectCriticModeFlag(rawPrompt) ?? undefined;
|
|
1092
|
+
const promptWithoutCriticFlag = stripCriticModeFlag(rawPrompt);
|
|
1093
|
+
const cleanPrompt = noPrd ? stripNoPrd(promptWithoutCriticFlag) : promptWithoutCriticFlag;
|
|
898
1094
|
// Auto-generate scaffold PRD if none exists and --no-prd not set
|
|
899
1095
|
const existingPrd = findPrd(directory);
|
|
900
1096
|
if (!noPrd && !existingPrd) {
|
|
@@ -912,8 +1108,12 @@ async function processPostToolUse(input) {
|
|
|
912
1108
|
initProgressFn(directory);
|
|
913
1109
|
}
|
|
914
1110
|
const hook = createRalphLoopHook(directory);
|
|
915
|
-
hook.startLoop(input.sessionId, cleanPrompt);
|
|
1111
|
+
hook.startLoop(input.sessionId, cleanPrompt, criticMode ? { criticMode } : undefined);
|
|
916
1112
|
}
|
|
1113
|
+
// Clear skill-active state on skill completion to prevent false-blocking.
|
|
1114
|
+
// Without this, every non-'none' skill falsely blocks stops until TTL expires.
|
|
1115
|
+
const { clearSkillActiveState } = await import("./skill-state/index.js");
|
|
1116
|
+
clearSkillActiveState(directory, input.sessionId);
|
|
917
1117
|
}
|
|
918
1118
|
// Run orchestrator post-tool processing (remember tags, verification reminders, etc.)
|
|
919
1119
|
const orchestratorResult = processOrchestratorPostTool({
|
|
@@ -932,12 +1132,15 @@ async function processPostToolUse(input) {
|
|
|
932
1132
|
messages.push(dashboard);
|
|
933
1133
|
}
|
|
934
1134
|
}
|
|
935
|
-
// Wake OpenClaw gateway for post-tool-use (non-blocking, fires for all tools)
|
|
936
|
-
|
|
1135
|
+
// Wake OpenClaw gateway for post-tool-use (non-blocking, fires for all tools).
|
|
1136
|
+
// AskUserQuestion already emitted a dedicated question.requested signal.
|
|
1137
|
+
if (input.sessionId && input.toolName !== "AskUserQuestion") {
|
|
937
1138
|
_openclaw.wake("post-tool-use", {
|
|
938
1139
|
sessionId: input.sessionId,
|
|
939
1140
|
projectPath: directory,
|
|
940
1141
|
toolName: input.toolName,
|
|
1142
|
+
toolInput: input.toolInput,
|
|
1143
|
+
toolOutput: input.toolOutput,
|
|
941
1144
|
});
|
|
942
1145
|
}
|
|
943
1146
|
if (messages.length > 0) {
|
|
@@ -1046,7 +1249,13 @@ export async function processHook(hookType, rawInput) {
|
|
|
1046
1249
|
hook_event_name: "SessionEnd",
|
|
1047
1250
|
reason: rawSE.reason ?? "other",
|
|
1048
1251
|
};
|
|
1049
|
-
|
|
1252
|
+
const result = await handleSessionEnd(sessionEndInput);
|
|
1253
|
+
_openclaw.wake("session-end", {
|
|
1254
|
+
sessionId: sessionEndInput.session_id,
|
|
1255
|
+
projectPath: sessionEndInput.cwd,
|
|
1256
|
+
reason: sessionEndInput.reason,
|
|
1257
|
+
});
|
|
1258
|
+
return result;
|
|
1050
1259
|
}
|
|
1051
1260
|
case "subagent-start": {
|
|
1052
1261
|
if (!validateHookInput(input, requiredKeysForHook("subagent-start"), "subagent-start")) {
|