claudecode-omc 4.4.5 → 4.4.6
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/.mcp.json +2 -6
- package/README.es.md +64 -8
- package/README.ja.md +64 -8
- package/README.ko.md +64 -8
- package/README.pt.md +29 -0
- package/README.vi.md +29 -0
- package/README.zh.md +64 -8
- package/agents/architect.md +17 -7
- package/agents/code-reviewer.md +6 -7
- package/agents/critic.md +14 -1
- package/agents/deep-executor.md +6 -7
- package/agents/designer.md +6 -8
- package/agents/executor.md +6 -7
- package/agents/planner.md +21 -0
- package/agents/quality-reviewer.md +6 -7
- package/agents/security-reviewer.md +6 -7
- package/agents/test-engineer.md +6 -7
- package/bridge/mcp-server.cjs +517 -202
- package/bridge/runtime-cli.cjs +1547 -0
- package/bridge/team-bridge.cjs +348 -92
- package/bridge/{gemini-server.cjs → team-mcp.cjs} +10914 -10240
- package/dist/__tests__/auto-update.test.js +1 -1
- package/dist/__tests__/auto-update.test.js.map +1 -1
- package/dist/__tests__/cli-win32-warning.test.d.ts +2 -0
- package/dist/__tests__/cli-win32-warning.test.d.ts.map +1 -0
- package/dist/__tests__/cli-win32-warning.test.js +46 -0
- package/dist/__tests__/cli-win32-warning.test.js.map +1 -0
- package/dist/__tests__/codex-callsite-normalization.test.js +112 -0
- package/dist/__tests__/consensus-execution-handoff.test.d.ts +2 -0
- package/dist/__tests__/consensus-execution-handoff.test.d.ts.map +1 -1
- package/dist/__tests__/consensus-execution-handoff.test.js +48 -0
- package/dist/__tests__/consensus-execution-handoff.test.js.map +1 -1
- package/dist/__tests__/context-safety.test.d.ts +2 -0
- package/dist/__tests__/context-safety.test.d.ts.map +1 -0
- package/dist/__tests__/context-safety.test.js +59 -0
- package/dist/__tests__/context-safety.test.js.map +1 -0
- package/dist/__tests__/hooks.test.js +15 -0
- package/dist/__tests__/hooks.test.js.map +1 -1
- package/dist/__tests__/hud/call-counts.test.js +0 -3
- package/dist/__tests__/hud/call-counts.test.js.map +1 -1
- package/dist/__tests__/hud/defaults.test.js +3 -5
- package/dist/__tests__/hud/defaults.test.js.map +1 -1
- package/dist/__tests__/hud/prompt-time.test.d.ts +2 -0
- package/dist/__tests__/hud/prompt-time.test.d.ts.map +1 -0
- package/dist/__tests__/hud/prompt-time.test.js +24 -0
- package/dist/__tests__/hud/prompt-time.test.js.map +1 -0
- package/dist/__tests__/hud/render.test.js +0 -1
- package/dist/__tests__/hud/render.test.js.map +1 -1
- package/dist/__tests__/hud/version-display.test.js +1 -0
- package/dist/__tests__/hud/version-display.test.js.map +1 -1
- package/dist/__tests__/hud/windows-platform.test.js +0 -4
- package/dist/__tests__/hud/windows-platform.test.js.map +1 -1
- package/dist/__tests__/hud-windows.test.js +5 -3
- package/dist/__tests__/hud-windows.test.js.map +1 -1
- package/dist/__tests__/installer-hud-skip.test.js +12 -2
- package/dist/__tests__/installer-hud-skip.test.js.map +1 -1
- package/dist/__tests__/job-management-sqlite.test.js +0 -15
- package/dist/__tests__/job-management-sqlite.test.js.map +1 -1
- package/dist/__tests__/job-management.test.js +0 -16
- package/dist/__tests__/job-management.test.js.map +1 -1
- package/dist/__tests__/load-agent-prompt.test.js +0 -23
- package/dist/__tests__/load-agent-prompt.test.js.map +1 -1
- package/dist/__tests__/model-routing.test.js +3 -2
- package/dist/__tests__/model-routing.test.js.map +1 -1
- package/dist/__tests__/omc-tools-server-interop.test.js +1 -1
- package/dist/__tests__/omc-tools-server-interop.test.js.map +1 -1
- package/dist/__tests__/pre-tool-enforcer.test.d.ts +2 -0
- package/dist/__tests__/pre-tool-enforcer.test.d.ts.map +1 -0
- package/dist/__tests__/pre-tool-enforcer.test.js +194 -0
- package/dist/__tests__/pre-tool-enforcer.test.js.map +1 -0
- package/dist/__tests__/prompt-injection.test.js +0 -26
- package/dist/__tests__/prompt-injection.test.js.map +1 -1
- package/dist/__tests__/purge-stale-cache.test.js +3 -2
- package/dist/__tests__/purge-stale-cache.test.js.map +1 -1
- package/dist/__tests__/run-cjs-graceful-fallback.test.d.ts +2 -0
- package/dist/__tests__/run-cjs-graceful-fallback.test.d.ts.map +1 -0
- package/dist/__tests__/run-cjs-graceful-fallback.test.js +167 -0
- package/dist/__tests__/run-cjs-graceful-fallback.test.js.map +1 -0
- package/dist/__tests__/session-start-cache-cleanup.test.d.ts +2 -0
- package/dist/__tests__/session-start-cache-cleanup.test.d.ts.map +1 -0
- package/dist/__tests__/session-start-cache-cleanup.test.js +150 -0
- package/dist/__tests__/session-start-cache-cleanup.test.js.map +1 -0
- package/dist/__tests__/skills.test.js +10 -8
- package/dist/__tests__/skills.test.js.map +1 -1
- package/dist/__tests__/team-server-validation.test.d.ts +2 -0
- package/dist/__tests__/team-server-validation.test.d.ts.map +1 -0
- package/dist/__tests__/team-server-validation.test.js +122 -0
- package/dist/__tests__/team-server-validation.test.js.map +1 -0
- package/dist/agents/index.d.ts +0 -1
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +0 -2
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/prompt-helpers.d.ts +74 -0
- package/dist/agents/prompt-helpers.d.ts.map +1 -0
- package/dist/agents/prompt-helpers.js +187 -0
- package/dist/agents/prompt-helpers.js.map +1 -0
- package/dist/agents/utils.d.ts +1 -5
- package/dist/agents/utils.d.ts.map +1 -1
- package/dist/agents/utils.js +1 -34
- package/dist/agents/utils.js.map +1 -1
- package/dist/cli/__tests__/launch.test.d.ts +1 -2
- package/dist/cli/__tests__/launch.test.d.ts.map +1 -1
- package/dist/cli/__tests__/launch.test.js +442 -48
- package/dist/cli/__tests__/launch.test.js.map +1 -1
- package/dist/cli/__tests__/teleport-help.test.d.ts +2 -0
- package/dist/cli/__tests__/teleport-help.test.d.ts.map +1 -0
- package/dist/cli/__tests__/teleport-help.test.js +17 -0
- package/dist/cli/__tests__/teleport-help.test.js.map +1 -0
- package/dist/cli/commands/teleport.d.ts +2 -1
- package/dist/cli/commands/teleport.d.ts.map +1 -1
- package/dist/cli/commands/teleport.js +6 -3
- package/dist/cli/commands/teleport.js.map +1 -1
- package/dist/cli/index.js +40 -290
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/launch.d.ts +83 -3
- package/dist/cli/launch.d.ts.map +1 -1
- package/dist/cli/launch.js +213 -48
- package/dist/cli/launch.js.map +1 -1
- package/dist/cli/win32-warning.d.ts +6 -0
- package/dist/cli/win32-warning.d.ts.map +1 -0
- package/dist/cli/win32-warning.js +15 -0
- package/dist/cli/win32-warning.js.map +1 -0
- package/dist/config/loader.d.ts +9 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +29 -19
- package/dist/config/loader.js.map +1 -1
- package/dist/config/models.d.ts +33 -0
- package/dist/config/models.d.ts.map +1 -0
- package/dist/config/models.js +49 -0
- package/dist/config/models.js.map +1 -0
- package/dist/constants/names.d.ts +2 -0
- package/dist/constants/names.d.ts.map +1 -1
- package/dist/constants/names.js +2 -0
- package/dist/constants/names.js.map +1 -1
- package/dist/features/auto-update.d.ts.map +1 -1
- package/dist/features/auto-update.js +21 -11
- package/dist/features/auto-update.js.map +1 -1
- package/dist/features/background-agent/manager.d.ts.map +1 -1
- package/dist/features/background-agent/manager.js +1 -2
- package/dist/features/background-agent/manager.js.map +1 -1
- package/dist/features/boulder-state/storage.d.ts.map +1 -1
- package/dist/features/boulder-state/storage.js +9 -5
- package/dist/features/boulder-state/storage.js.map +1 -1
- package/dist/features/boulder-state/types.d.ts +4 -0
- package/dist/features/boulder-state/types.d.ts.map +1 -1
- package/dist/features/builtin-skills/skills.d.ts.map +1 -1
- package/dist/features/builtin-skills/skills.js +25 -78
- package/dist/features/builtin-skills/skills.js.map +1 -1
- package/dist/features/delegation-enforcer.d.ts.map +1 -1
- package/dist/features/delegation-enforcer.js +4 -1
- package/dist/features/delegation-enforcer.js.map +1 -1
- package/dist/features/delegation-routing/__tests__/resolver.test.js +47 -122
- package/dist/features/delegation-routing/__tests__/resolver.test.js.map +1 -1
- package/dist/features/delegation-routing/resolver.d.ts.map +1 -1
- package/dist/features/delegation-routing/resolver.js +24 -47
- package/dist/features/delegation-routing/resolver.js.map +1 -1
- package/dist/features/delegation-routing/types.d.ts.map +1 -1
- package/dist/features/delegation-routing/types.js +2 -0
- package/dist/features/delegation-routing/types.js.map +1 -1
- package/dist/features/model-routing/external-model-policy.d.ts.map +1 -1
- package/dist/features/model-routing/external-model-policy.js.map +1 -1
- package/dist/features/model-routing/router.d.ts.map +1 -1
- package/dist/features/model-routing/router.js +12 -2
- package/dist/features/model-routing/router.js.map +1 -1
- package/dist/features/model-routing/types.d.ts +5 -1
- package/dist/features/model-routing/types.d.ts.map +1 -1
- package/dist/features/model-routing/types.js +7 -6
- package/dist/features/model-routing/types.js.map +1 -1
- package/dist/features/rate-limit-wait/daemon.d.ts.map +1 -1
- package/dist/features/rate-limit-wait/daemon.js +40 -4
- package/dist/features/rate-limit-wait/daemon.js.map +1 -1
- package/dist/features/task-decomposer/index.js +14 -4
- package/dist/features/task-decomposer/index.js.map +1 -1
- package/dist/hooks/__tests__/bridge-openclaw.test.d.ts +2 -0
- package/dist/hooks/__tests__/bridge-openclaw.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/bridge-openclaw.test.js +124 -0
- package/dist/hooks/__tests__/bridge-openclaw.test.js.map +1 -0
- package/dist/hooks/__tests__/bridge-security.test.js +1 -1
- package/dist/hooks/__tests__/bridge-security.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 +38 -61
- package/dist/hooks/auto-slash-command/executor.js.map +1 -1
- package/dist/hooks/bridge.d.ts +11 -0
- package/dist/hooks/bridge.d.ts.map +1 -1
- package/dist/hooks/bridge.js +154 -82
- package/dist/hooks/bridge.js.map +1 -1
- package/dist/hooks/comment-checker/index.d.ts.map +1 -1
- package/dist/hooks/comment-checker/index.js +3 -1
- package/dist/hooks/comment-checker/index.js.map +1 -1
- package/dist/hooks/keyword-detector/__tests__/index.test.js +348 -1
- package/dist/hooks/keyword-detector/__tests__/index.test.js.map +1 -1
- package/dist/hooks/keyword-detector/index.d.ts +29 -0
- package/dist/hooks/keyword-detector/index.d.ts.map +1 -1
- package/dist/hooks/keyword-detector/index.js +123 -1
- package/dist/hooks/keyword-detector/index.js.map +1 -1
- package/dist/hooks/mode-registry/__tests__/session-isolation.test.js +40 -0
- package/dist/hooks/mode-registry/__tests__/session-isolation.test.js.map +1 -1
- package/dist/hooks/mode-registry/index.d.ts.map +1 -1
- package/dist/hooks/mode-registry/index.js +135 -52
- package/dist/hooks/mode-registry/index.js.map +1 -1
- package/dist/hooks/notepad/index.d.ts.map +1 -1
- package/dist/hooks/notepad/index.js +5 -3
- package/dist/hooks/notepad/index.js.map +1 -1
- package/dist/hooks/persistent-mode/__tests__/cancel-race.test.d.ts +2 -0
- package/dist/hooks/persistent-mode/__tests__/cancel-race.test.d.ts.map +1 -0
- package/dist/hooks/persistent-mode/__tests__/cancel-race.test.js +73 -0
- package/dist/hooks/persistent-mode/__tests__/cancel-race.test.js.map +1 -0
- package/dist/hooks/persistent-mode/__tests__/idle-cooldown.test.js +89 -13
- package/dist/hooks/persistent-mode/__tests__/idle-cooldown.test.js.map +1 -1
- package/dist/hooks/persistent-mode/__tests__/skill-state-stop.test.d.ts +2 -0
- package/dist/hooks/persistent-mode/__tests__/skill-state-stop.test.d.ts.map +1 -0
- package/dist/hooks/persistent-mode/__tests__/skill-state-stop.test.js +156 -0
- package/dist/hooks/persistent-mode/__tests__/skill-state-stop.test.js.map +1 -0
- package/dist/hooks/persistent-mode/idle-cooldown.test.d.ts +2 -3
- package/dist/hooks/persistent-mode/idle-cooldown.test.d.ts.map +1 -1
- package/dist/hooks/persistent-mode/idle-cooldown.test.js +19 -4
- package/dist/hooks/persistent-mode/idle-cooldown.test.js.map +1 -1
- package/dist/hooks/persistent-mode/index.d.ts +2 -2
- package/dist/hooks/persistent-mode/index.d.ts.map +1 -1
- package/dist/hooks/persistent-mode/index.js +144 -26
- package/dist/hooks/persistent-mode/index.js.map +1 -1
- package/dist/hooks/plugin-patterns/index.d.ts.map +1 -1
- package/dist/hooks/plugin-patterns/index.js +22 -31
- package/dist/hooks/plugin-patterns/index.js.map +1 -1
- package/dist/hooks/pre-compact/index.js +1 -1
- package/dist/hooks/preemptive-compaction/index.d.ts.map +1 -1
- package/dist/hooks/preemptive-compaction/index.js +3 -1
- package/dist/hooks/preemptive-compaction/index.js.map +1 -1
- package/dist/hooks/project-memory/index.d.ts.map +1 -1
- package/dist/hooks/project-memory/index.js +9 -0
- package/dist/hooks/project-memory/index.js.map +1 -1
- package/dist/hooks/project-memory/learner.d.ts.map +1 -1
- package/dist/hooks/project-memory/learner.js +107 -85
- package/dist/hooks/project-memory/learner.js.map +1 -1
- package/dist/hooks/project-memory/storage.d.ts.map +1 -1
- package/dist/hooks/project-memory/storage.js +3 -2
- package/dist/hooks/project-memory/storage.js.map +1 -1
- package/dist/hooks/recovery/context-window.d.ts +4 -0
- package/dist/hooks/recovery/context-window.d.ts.map +1 -1
- package/dist/hooks/recovery/context-window.js +22 -1
- package/dist/hooks/recovery/context-window.js.map +1 -1
- package/dist/hooks/recovery/session-recovery.js +1 -1
- package/dist/hooks/recovery/session-recovery.js.map +1 -1
- package/dist/hooks/session-end/index.d.ts.map +1 -1
- package/dist/hooks/session-end/index.js +13 -22
- package/dist/hooks/session-end/index.js.map +1 -1
- package/dist/hooks/setup/__tests__/windows-patch.test.d.ts +2 -0
- package/dist/hooks/setup/__tests__/windows-patch.test.d.ts.map +1 -0
- package/dist/hooks/setup/__tests__/windows-patch.test.js +110 -0
- package/dist/hooks/setup/__tests__/windows-patch.test.js.map +1 -0
- package/dist/hooks/setup/index.d.ts +18 -0
- package/dist/hooks/setup/index.d.ts.map +1 -1
- package/dist/hooks/setup/index.js +59 -1
- package/dist/hooks/setup/index.js.map +1 -1
- package/dist/hooks/skill-bridge.cjs +1 -0
- package/dist/hooks/skill-state/__tests__/skill-state.test.d.ts +2 -0
- package/dist/hooks/skill-state/__tests__/skill-state.test.d.ts.map +1 -0
- package/dist/hooks/skill-state/__tests__/skill-state.test.js +301 -0
- package/dist/hooks/skill-state/__tests__/skill-state.test.js.map +1 -0
- package/dist/hooks/skill-state/index.d.ts +79 -0
- package/dist/hooks/skill-state/index.d.ts.map +1 -0
- package/dist/hooks/skill-state/index.js +245 -0
- package/dist/hooks/skill-state/index.js.map +1 -0
- package/dist/hooks/team-pipeline/state.d.ts.map +1 -1
- package/dist/hooks/team-pipeline/state.js +5 -0
- package/dist/hooks/team-pipeline/state.js.map +1 -1
- package/dist/hooks/todo-continuation/index.d.ts +17 -0
- package/dist/hooks/todo-continuation/index.d.ts.map +1 -1
- package/dist/hooks/todo-continuation/index.js +44 -2
- package/dist/hooks/todo-continuation/index.js.map +1 -1
- package/dist/hud/elements/call-counts.d.ts.map +1 -1
- package/dist/hud/elements/call-counts.js +6 -4
- package/dist/hud/elements/call-counts.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/prompt-time.d.ts +13 -0
- package/dist/hud/elements/prompt-time.d.ts.map +1 -0
- package/dist/hud/elements/prompt-time.js +21 -0
- package/dist/hud/elements/prompt-time.js.map +1 -0
- package/dist/hud/index.d.ts +2 -1
- package/dist/hud/index.d.ts.map +1 -1
- package/dist/hud/index.js +40 -215
- package/dist/hud/index.js.map +1 -1
- package/dist/hud/render.d.ts.map +1 -1
- package/dist/hud/render.js +7 -108
- package/dist/hud/render.js.map +1 -1
- package/dist/hud/state.d.ts.map +1 -1
- package/dist/hud/state.js +4 -3
- package/dist/hud/state.js.map +1 -1
- package/dist/hud/stdin.d.ts +10 -0
- package/dist/hud/stdin.d.ts.map +1 -1
- package/dist/hud/stdin.js +43 -0
- package/dist/hud/stdin.js.map +1 -1
- package/dist/hud/types.d.ts +6 -18
- package/dist/hud/types.d.ts.map +1 -1
- package/dist/hud/types.js +6 -46
- package/dist/hud/types.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -11
- package/dist/index.js.map +1 -1
- package/dist/installer/hooks.d.ts +5 -0
- package/dist/installer/hooks.d.ts.map +1 -1
- package/dist/installer/hooks.js +8 -0
- package/dist/installer/hooks.js.map +1 -1
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +26 -11
- package/dist/installer/index.js.map +1 -1
- package/dist/interop/omx-team-state.d.ts.map +1 -1
- package/dist/interop/omx-team-state.js +38 -6
- package/dist/interop/omx-team-state.js.map +1 -1
- package/dist/interop/shared-state.d.ts.map +1 -1
- package/dist/interop/shared-state.js +58 -7
- package/dist/interop/shared-state.js.map +1 -1
- package/dist/lib/__tests__/worktree-paths.test.js +250 -1
- package/dist/lib/__tests__/worktree-paths.test.js.map +1 -1
- package/dist/lib/job-state-db.d.ts +150 -0
- package/dist/lib/job-state-db.d.ts.map +1 -0
- package/dist/lib/job-state-db.js +650 -0
- package/dist/lib/job-state-db.js.map +1 -0
- package/dist/lib/mode-names.d.ts +46 -0
- package/dist/lib/mode-names.d.ts.map +1 -0
- package/dist/lib/mode-names.js +73 -0
- package/dist/lib/mode-names.js.map +1 -0
- package/dist/lib/session-isolation.d.ts +32 -0
- package/dist/lib/session-isolation.d.ts.map +1 -0
- package/dist/lib/session-isolation.js +39 -0
- package/dist/lib/session-isolation.js.map +1 -0
- package/dist/lib/worktree-paths.d.ts +38 -8
- package/dist/lib/worktree-paths.d.ts.map +1 -1
- package/dist/lib/worktree-paths.js +124 -56
- package/dist/lib/worktree-paths.js.map +1 -1
- package/dist/mcp/__tests__/team-cleanup.test.d.ts +11 -0
- package/dist/mcp/__tests__/team-cleanup.test.d.ts.map +1 -0
- package/dist/mcp/__tests__/team-cleanup.test.js +228 -0
- package/dist/mcp/__tests__/team-cleanup.test.js.map +1 -0
- package/dist/mcp/cli-detection.d.ts +4 -8
- package/dist/mcp/cli-detection.d.ts.map +1 -1
- package/dist/mcp/cli-detection.js +5 -8
- package/dist/mcp/cli-detection.js.map +1 -1
- package/dist/mcp/codex-request-normalizer.js +59 -0
- package/dist/mcp/codex-server.js +16 -4
- package/dist/mcp/codex-standalone-server.js +13 -4
- package/dist/mcp/index.d.ts +2 -4
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +1 -5
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/job-management.d.ts.map +1 -1
- package/dist/mcp/job-management.js +11 -9
- package/dist/mcp/job-management.js.map +1 -1
- package/dist/mcp/job-state-db.d.ts +1 -149
- package/dist/mcp/job-state-db.d.ts.map +1 -1
- package/dist/mcp/job-state-db.js +2 -649
- package/dist/mcp/job-state-db.js.map +1 -1
- package/dist/mcp/mcp-config.d.ts +1 -1
- package/dist/mcp/mcp-config.js +1 -1
- package/dist/mcp/prompt-injection.d.ts +14 -76
- package/dist/mcp/prompt-injection.d.ts.map +1 -1
- package/dist/mcp/prompt-injection.js +34 -175
- package/dist/mcp/prompt-injection.js.map +1 -1
- package/dist/mcp/standalone-server.js +2 -0
- package/dist/mcp/standalone-server.js.map +1 -1
- package/dist/mcp/team-server.d.ts +16 -0
- package/dist/mcp/team-server.d.ts.map +1 -0
- package/dist/mcp/team-server.js +356 -0
- package/dist/mcp/team-server.js.map +1 -0
- package/dist/notifications/__tests__/formatter.test.js +62 -0
- package/dist/notifications/__tests__/formatter.test.js.map +1 -1
- package/dist/notifications/__tests__/hook-config.test.d.ts +14 -0
- package/dist/notifications/__tests__/hook-config.test.d.ts.map +1 -0
- package/dist/notifications/__tests__/hook-config.test.js +210 -0
- package/dist/notifications/__tests__/hook-config.test.js.map +1 -0
- package/dist/notifications/__tests__/platform-gating.test.d.ts +12 -0
- package/dist/notifications/__tests__/platform-gating.test.d.ts.map +1 -0
- package/dist/notifications/__tests__/platform-gating.test.js +140 -0
- package/dist/notifications/__tests__/platform-gating.test.js.map +1 -0
- package/dist/notifications/__tests__/template-engine.test.d.ts +13 -0
- package/dist/notifications/__tests__/template-engine.test.d.ts.map +1 -0
- package/dist/notifications/__tests__/template-engine.test.js +378 -0
- package/dist/notifications/__tests__/template-engine.test.js.map +1 -0
- package/dist/notifications/config.d.ts.map +1 -1
- package/dist/notifications/config.js +54 -18
- package/dist/notifications/config.js.map +1 -1
- package/dist/notifications/dispatcher.d.ts +2 -2
- package/dist/notifications/dispatcher.d.ts.map +1 -1
- package/dist/notifications/dispatcher.js +10 -6
- package/dist/notifications/dispatcher.js.map +1 -1
- package/dist/notifications/formatter.d.ts.map +1 -1
- package/dist/notifications/formatter.js +22 -0
- package/dist/notifications/formatter.js.map +1 -1
- package/dist/notifications/hook-config-types.d.ts +44 -0
- package/dist/notifications/hook-config-types.d.ts.map +1 -0
- package/dist/notifications/hook-config-types.js +8 -0
- package/dist/notifications/hook-config-types.js.map +1 -0
- package/dist/notifications/hook-config.d.ts +36 -0
- package/dist/notifications/hook-config.d.ts.map +1 -0
- package/dist/notifications/hook-config.js +95 -0
- package/dist/notifications/hook-config.js.map +1 -0
- package/dist/notifications/index.d.ts +3 -0
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js +31 -3
- package/dist/notifications/index.js.map +1 -1
- package/dist/notifications/reply-listener.d.ts.map +1 -1
- package/dist/notifications/reply-listener.js +1 -0
- package/dist/notifications/reply-listener.js.map +1 -1
- package/dist/notifications/session-registry.d.ts.map +1 -1
- package/dist/notifications/session-registry.js +13 -5
- package/dist/notifications/session-registry.js.map +1 -1
- package/dist/notifications/template-engine.d.ts +34 -0
- package/dist/notifications/template-engine.d.ts.map +1 -0
- package/dist/notifications/template-engine.js +248 -0
- package/dist/notifications/template-engine.js.map +1 -0
- package/dist/notifications/types.d.ts +0 -2
- package/dist/notifications/types.d.ts.map +1 -1
- package/dist/openclaw/__tests__/config.test.d.ts +2 -0
- package/dist/openclaw/__tests__/config.test.d.ts.map +1 -0
- package/dist/openclaw/__tests__/config.test.js +200 -0
- package/dist/openclaw/__tests__/config.test.js.map +1 -0
- package/dist/openclaw/__tests__/dispatcher.test.d.ts +2 -0
- package/dist/openclaw/__tests__/dispatcher.test.d.ts.map +1 -0
- package/dist/openclaw/__tests__/dispatcher.test.js +348 -0
- package/dist/openclaw/__tests__/dispatcher.test.js.map +1 -0
- package/dist/openclaw/__tests__/index.test.d.ts +2 -0
- package/dist/openclaw/__tests__/index.test.d.ts.map +1 -0
- package/dist/openclaw/__tests__/index.test.js +235 -0
- package/dist/openclaw/__tests__/index.test.js.map +1 -0
- package/dist/openclaw/config.d.ts +33 -0
- package/dist/openclaw/config.d.ts.map +1 -0
- package/dist/openclaw/config.js +83 -0
- package/dist/openclaw/config.js.map +1 -0
- package/dist/openclaw/dispatcher.d.ts +47 -0
- package/dist/openclaw/dispatcher.d.ts.map +1 -0
- package/dist/openclaw/dispatcher.js +138 -0
- package/dist/openclaw/dispatcher.js.map +1 -0
- package/dist/openclaw/index.d.ts +25 -0
- package/dist/openclaw/index.d.ts.map +1 -0
- package/dist/openclaw/index.js +132 -0
- package/dist/openclaw/index.js.map +1 -0
- package/dist/openclaw/types.d.ts +102 -0
- package/dist/openclaw/types.d.ts.map +1 -0
- package/dist/openclaw/types.js +8 -0
- package/dist/openclaw/types.js.map +1 -0
- package/dist/platform/index.d.ts +5 -0
- package/dist/platform/index.d.ts.map +1 -1
- package/dist/platform/index.js +17 -0
- package/dist/platform/index.js.map +1 -1
- package/dist/platform/process-utils.d.ts.map +1 -1
- package/dist/platform/process-utils.js +55 -9
- package/dist/platform/process-utils.js.map +1 -1
- package/dist/shared/types.d.ts +7 -5
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/team/__tests__/bridge-integration.test.js +10 -8
- package/dist/team/__tests__/bridge-integration.test.js.map +1 -1
- package/dist/team/__tests__/edge-cases.test.js +40 -29
- package/dist/team/__tests__/edge-cases.test.js.map +1 -1
- package/dist/team/__tests__/idle-nudge.test.d.ts +11 -0
- package/dist/team/__tests__/idle-nudge.test.d.ts.map +1 -0
- package/dist/team/__tests__/idle-nudge.test.js +282 -0
- package/dist/team/__tests__/idle-nudge.test.js.map +1 -0
- package/dist/team/__tests__/mcp-team-bridge.spawn-args.test.js +2 -2
- package/dist/team/__tests__/mcp-team-bridge.spawn-args.test.js.map +1 -1
- package/dist/team/__tests__/mcp-team-bridge.usage.test.d.ts +2 -0
- package/dist/team/__tests__/mcp-team-bridge.usage.test.d.ts.map +1 -0
- package/dist/team/__tests__/mcp-team-bridge.usage.test.js +49 -0
- package/dist/team/__tests__/mcp-team-bridge.usage.test.js.map +1 -0
- package/dist/team/__tests__/model-contract.test.d.ts +2 -0
- package/dist/team/__tests__/model-contract.test.d.ts.map +1 -0
- package/dist/team/__tests__/model-contract.test.js +121 -0
- package/dist/team/__tests__/model-contract.test.js.map +1 -0
- package/dist/team/__tests__/phase-controller.test.d.ts +2 -0
- package/dist/team/__tests__/phase-controller.test.d.ts.map +1 -0
- package/dist/team/__tests__/phase-controller.test.js +45 -0
- package/dist/team/__tests__/phase-controller.test.js.map +1 -0
- package/dist/team/__tests__/runtime-assign.test.d.ts +2 -0
- package/dist/team/__tests__/runtime-assign.test.d.ts.map +1 -0
- package/dist/team/__tests__/runtime-assign.test.js +43 -0
- package/dist/team/__tests__/runtime-assign.test.js.map +1 -0
- package/dist/team/__tests__/runtime-gemini-prompt.test.d.ts +2 -0
- package/dist/team/__tests__/runtime-gemini-prompt.test.d.ts.map +1 -0
- package/dist/team/__tests__/runtime-gemini-prompt.test.js +153 -0
- package/dist/team/__tests__/runtime-gemini-prompt.test.js.map +1 -0
- package/dist/team/__tests__/runtime-prompt-mode.test.d.ts +2 -0
- package/dist/team/__tests__/runtime-prompt-mode.test.d.ts.map +1 -0
- package/dist/team/__tests__/runtime-prompt-mode.test.js +162 -0
- package/dist/team/__tests__/runtime-prompt-mode.test.js.map +1 -0
- package/dist/team/__tests__/runtime.test.d.ts +2 -0
- package/dist/team/__tests__/runtime.test.d.ts.map +1 -0
- package/dist/team/__tests__/runtime.test.js +37 -0
- package/dist/team/__tests__/runtime.test.js.map +1 -0
- package/dist/team/__tests__/task-file-ops.test.js +63 -59
- package/dist/team/__tests__/task-file-ops.test.js.map +1 -1
- package/dist/team/__tests__/team-name.test.d.ts +2 -0
- package/dist/team/__tests__/team-name.test.d.ts.map +1 -0
- package/dist/team/__tests__/team-name.test.js +18 -0
- package/dist/team/__tests__/team-name.test.js.map +1 -0
- package/dist/team/__tests__/team-status.test.js +52 -6
- package/dist/team/__tests__/team-status.test.js.map +1 -1
- package/dist/team/__tests__/tmux-comm.test.d.ts +2 -0
- package/dist/team/__tests__/tmux-comm.test.d.ts.map +1 -0
- package/dist/team/__tests__/tmux-comm.test.js +26 -0
- package/dist/team/__tests__/tmux-comm.test.js.map +1 -0
- package/dist/team/__tests__/tmux-session.create-team.test.d.ts +2 -0
- package/dist/team/__tests__/tmux-session.create-team.test.d.ts.map +1 -0
- package/dist/team/__tests__/tmux-session.create-team.test.js +104 -0
- package/dist/team/__tests__/tmux-session.create-team.test.js.map +1 -0
- package/dist/team/__tests__/tmux-session.spawn.test.d.ts +2 -0
- package/dist/team/__tests__/tmux-session.spawn.test.d.ts.map +1 -0
- package/dist/team/__tests__/tmux-session.spawn.test.js +61 -0
- package/dist/team/__tests__/tmux-session.spawn.test.js.map +1 -0
- package/dist/team/__tests__/tmux-session.test.js +161 -2
- package/dist/team/__tests__/tmux-session.test.js.map +1 -1
- package/dist/team/__tests__/worker-bootstrap.test.d.ts +2 -0
- package/dist/team/__tests__/worker-bootstrap.test.d.ts.map +1 -0
- package/dist/team/__tests__/worker-bootstrap.test.js +58 -0
- package/dist/team/__tests__/worker-bootstrap.test.js.map +1 -0
- package/dist/team/bridge-entry.d.ts.map +1 -1
- package/dist/team/bridge-entry.js +4 -0
- package/dist/team/bridge-entry.js.map +1 -1
- package/dist/team/capabilities.d.ts.map +1 -1
- package/dist/team/capabilities.js +3 -0
- package/dist/team/capabilities.js.map +1 -1
- package/dist/team/cli-detection.d.ts +9 -0
- package/dist/team/cli-detection.d.ts.map +1 -0
- package/dist/team/cli-detection.js +29 -0
- package/dist/team/cli-detection.js.map +1 -0
- package/dist/team/idle-nudge.d.ts +53 -0
- package/dist/team/idle-nudge.d.ts.map +1 -0
- package/dist/team/idle-nudge.js +124 -0
- package/dist/team/idle-nudge.js.map +1 -0
- package/dist/team/inbox-outbox.d.ts.map +1 -1
- package/dist/team/inbox-outbox.js +7 -3
- package/dist/team/inbox-outbox.js.map +1 -1
- package/dist/team/index.d.ts +14 -1
- package/dist/team/index.d.ts.map +1 -1
- package/dist/team/index.js +12 -1
- package/dist/team/index.js.map +1 -1
- package/dist/team/mcp-team-bridge.d.ts +9 -0
- package/dist/team/mcp-team-bridge.d.ts.map +1 -1
- package/dist/team/mcp-team-bridge.js +82 -3
- package/dist/team/mcp-team-bridge.js.map +1 -1
- package/dist/team/model-contract.d.ts +37 -0
- package/dist/team/model-contract.d.ts.map +1 -0
- package/dist/team/model-contract.js +139 -0
- package/dist/team/model-contract.js.map +1 -0
- package/dist/team/phase-controller.d.ts +33 -0
- package/dist/team/phase-controller.d.ts.map +1 -0
- package/dist/team/phase-controller.js +79 -0
- package/dist/team/phase-controller.js.map +1 -0
- package/dist/team/runtime-cli.d.ts +9 -0
- package/dist/team/runtime-cli.d.ts.map +1 -0
- package/dist/team/runtime-cli.js +188 -0
- package/dist/team/runtime-cli.js.map +1 -0
- package/dist/team/runtime.d.ts +95 -0
- package/dist/team/runtime.d.ts.map +1 -0
- package/dist/team/runtime.js +692 -0
- package/dist/team/runtime.js.map +1 -0
- package/dist/team/state-paths.d.ts +72 -0
- package/dist/team/state-paths.d.ts.map +1 -0
- package/dist/team/state-paths.js +87 -0
- package/dist/team/state-paths.js.map +1 -0
- package/dist/team/task-file-ops.d.ts +27 -7
- package/dist/team/task-file-ops.d.ts.map +1 -1
- package/dist/team/task-file-ops.js +116 -55
- package/dist/team/task-file-ops.js.map +1 -1
- package/dist/team/team-name.d.ts +2 -0
- package/dist/team/team-name.d.ts.map +1 -0
- package/dist/team/team-name.js +8 -0
- package/dist/team/team-name.js.map +1 -0
- package/dist/team/team-registration.d.ts +1 -1
- package/dist/team/team-registration.d.ts.map +1 -1
- package/dist/team/team-registration.js.map +1 -1
- package/dist/team/team-status.d.ts +11 -1
- package/dist/team/team-status.d.ts.map +1 -1
- package/dist/team/team-status.js +32 -3
- package/dist/team/team-status.js.map +1 -1
- package/dist/team/tmux-comm.d.ts +36 -0
- package/dist/team/tmux-comm.d.ts.map +1 -0
- package/dist/team/tmux-comm.js +115 -0
- package/dist/team/tmux-comm.js.map +1 -0
- package/dist/team/tmux-session.d.ts +92 -0
- package/dist/team/tmux-session.d.ts.map +1 -1
- package/dist/team/tmux-session.js +533 -2
- package/dist/team/tmux-session.js.map +1 -1
- package/dist/team/types.d.ts +10 -3
- package/dist/team/types.d.ts.map +1 -1
- package/dist/team/unified-team.d.ts.map +1 -1
- package/dist/team/unified-team.js +13 -3
- package/dist/team/unified-team.js.map +1 -1
- package/dist/team/worker-bootstrap.d.ts +39 -0
- package/dist/team/worker-bootstrap.d.ts.map +1 -0
- package/dist/team/worker-bootstrap.js +117 -0
- package/dist/team/worker-bootstrap.js.map +1 -0
- package/dist/team/worker-health.d.ts.map +1 -1
- package/dist/team/worker-health.js +15 -3
- package/dist/team/worker-health.js.map +1 -1
- package/dist/tools/ast-tools.js +1 -1
- package/dist/tools/ast-tools.js.map +1 -1
- package/dist/tools/diagnostics/lsp-aggregator.d.ts.map +1 -1
- package/dist/tools/diagnostics/lsp-aggregator.js +4 -2
- package/dist/tools/diagnostics/lsp-aggregator.js.map +1 -1
- package/dist/tools/lsp/__tests__/client-handle-data.test.d.ts +2 -0
- package/dist/tools/lsp/__tests__/client-handle-data.test.d.ts.map +1 -0
- package/dist/tools/lsp/__tests__/client-handle-data.test.js +138 -0
- package/dist/tools/lsp/__tests__/client-handle-data.test.js.map +1 -0
- package/dist/tools/lsp/client.d.ts +13 -0
- package/dist/tools/lsp/client.d.ts.map +1 -1
- package/dist/tools/lsp/client.js +64 -8
- package/dist/tools/lsp/client.js.map +1 -1
- package/dist/tools/lsp/servers.d.ts.map +1 -1
- package/dist/tools/lsp/servers.js +4 -9
- package/dist/tools/lsp/servers.js.map +1 -1
- package/dist/tools/lsp-tools.d.ts.map +1 -1
- package/dist/tools/lsp-tools.js +4 -0
- package/dist/tools/lsp-tools.js.map +1 -1
- package/dist/tools/python-repl/bridge-manager.d.ts.map +1 -1
- package/dist/tools/python-repl/bridge-manager.js +15 -1
- package/dist/tools/python-repl/bridge-manager.js.map +1 -1
- package/dist/tools/python-repl/session-lock.d.ts.map +1 -1
- package/dist/tools/python-repl/session-lock.js +35 -15
- package/dist/tools/python-repl/session-lock.js.map +1 -1
- package/dist/tools/state-tools.d.ts.map +1 -1
- package/dist/tools/state-tools.js +10 -0
- package/dist/tools/state-tools.js.map +1 -1
- package/dist/utils/__tests__/frontmatter.test.d.ts +2 -0
- package/dist/utils/__tests__/frontmatter.test.d.ts.map +1 -0
- package/dist/utils/__tests__/frontmatter.test.js +147 -0
- package/dist/utils/__tests__/frontmatter.test.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +24 -0
- package/dist/utils/frontmatter.d.ts.map +1 -0
- package/dist/utils/frontmatter.js +62 -0
- package/dist/utils/frontmatter.js.map +1 -0
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +4 -2
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/string-width.d.ts.map +1 -1
- package/dist/utils/string-width.js +15 -4
- package/dist/utils/string-width.js.map +1 -1
- package/dist/verification/tier-selector.js +1 -1
- package/dist/verification/tier-selector.js.map +1 -1
- package/docs/AGENTS.md +4 -2
- package/docs/CLAUDE.md +8 -48
- package/docs/MIGRATION.md +114 -0
- package/docs/REFERENCE.md +35 -102
- package/hooks/hooks.json +23 -23
- package/package.json +8 -8
- package/scripts/build-runtime-cli.mjs +24 -0
- package/scripts/build-team-server.mjs +28 -0
- package/scripts/cleanup-orphans.mjs +22 -5
- package/scripts/context-safety.mjs +5 -1
- package/scripts/demo-team.mjs +26 -0
- package/scripts/keyword-detector.mjs +6 -76
- package/scripts/openclaw-gateway-demo.mjs +168 -0
- package/scripts/persistent-mode.cjs +30 -4
- package/scripts/persistent-mode.mjs +48 -3
- package/scripts/plugin-setup.mjs +66 -3
- package/scripts/post-tool-use-failure.mjs +20 -2
- package/scripts/post-tool-verifier.mjs +57 -6
- package/scripts/pre-tool-enforcer.mjs +125 -5
- package/scripts/run.cjs +114 -0
- package/scripts/session-start.mjs +56 -7
- package/scripts/status.mjs +144 -0
- package/scripts/test-codex-gemini-team.mjs +78 -0
- package/skills/AGENTS.md +5 -2
- package/skills/analyze/SKILL.md +5 -11
- package/skills/autopilot/SKILL.md +5 -6
- package/skills/ccg/SKILL.md +88 -99
- package/skills/configure-notifications/SKILL.md +177 -0
- package/skills/configure-openclaw/SKILL.md +320 -0
- package/skills/external-context/SKILL.md +7 -83
- package/skills/hud/SKILL.md +68 -46
- package/skills/omc-setup/SKILL.md +58 -19
- package/skills/omc-teams/SKILL.md +178 -0
- package/skills/pipeline/SKILL.md +4 -4
- package/skills/plan/SKILL.md +28 -16
- package/skills/ralph/SKILL.md +3 -4
- package/skills/ralph-init/SKILL.md +3 -1
- package/skills/ralplan/SKILL.md +93 -8
- package/skills/security-review/SKILL.md +5 -6
- package/skills/tdd/SKILL.md +5 -6
- package/skills/team/SKILL.md +35 -34
- package/templates/hooks/keyword-detector.mjs +11 -82
- package/templates/hooks/persistent-mode.mjs +120 -3
- package/templates/hooks/post-tool-use-failure.mjs +20 -2
- package/templates/hooks/session-start.mjs +2 -16
- package/dist/__tests__/analytics/backfill-dedup.test.d.ts +0 -2
- package/dist/__tests__/analytics/backfill-dedup.test.d.ts.map +0 -1
- package/dist/__tests__/analytics/backfill-dedup.test.js +0 -179
- package/dist/__tests__/analytics/backfill-dedup.test.js.map +0 -1
- package/dist/__tests__/analytics/backfill-engine.test.d.ts +0 -2
- package/dist/__tests__/analytics/backfill-engine.test.d.ts.map +0 -1
- package/dist/__tests__/analytics/backfill-engine.test.js +0 -362
- package/dist/__tests__/analytics/backfill-engine.test.js.map +0 -1
- package/dist/__tests__/analytics/output-estimator.test.d.ts +0 -2
- package/dist/__tests__/analytics/output-estimator.test.d.ts.map +0 -1
- package/dist/__tests__/analytics/output-estimator.test.js +0 -124
- package/dist/__tests__/analytics/output-estimator.test.js.map +0 -1
- package/dist/__tests__/analytics/token-extractor.test.d.ts +0 -2
- package/dist/__tests__/analytics/token-extractor.test.d.ts.map +0 -1
- package/dist/__tests__/analytics/token-extractor.test.js +0 -165
- package/dist/__tests__/analytics/token-extractor.test.js.map +0 -1
- package/dist/__tests__/analytics/token-tracker.test.d.ts +0 -2
- package/dist/__tests__/analytics/token-tracker.test.d.ts.map +0 -1
- package/dist/__tests__/analytics/token-tracker.test.js +0 -189
- package/dist/__tests__/analytics/token-tracker.test.js.map +0 -1
- package/dist/__tests__/analytics/tokscale-adapter.test.d.ts +0 -2
- package/dist/__tests__/analytics/tokscale-adapter.test.d.ts.map +0 -1
- package/dist/__tests__/analytics/tokscale-adapter.test.js +0 -79
- package/dist/__tests__/analytics/tokscale-adapter.test.js.map +0 -1
- package/dist/__tests__/analytics/transcript-parser.test.d.ts +0 -2
- package/dist/__tests__/analytics/transcript-parser.test.d.ts.map +0 -1
- package/dist/__tests__/analytics/transcript-parser.test.js +0 -285
- package/dist/__tests__/analytics/transcript-parser.test.js.map +0 -1
- package/dist/__tests__/analytics/transcript-scanner.test.d.ts +0 -2
- package/dist/__tests__/analytics/transcript-scanner.test.d.ts.map +0 -1
- package/dist/__tests__/analytics/transcript-scanner.test.js +0 -443
- package/dist/__tests__/analytics/transcript-scanner.test.js.map +0 -1
- package/dist/__tests__/analytics/transcript-token-extractor.test.d.ts +0 -2
- package/dist/__tests__/analytics/transcript-token-extractor.test.d.ts.map +0 -1
- package/dist/__tests__/analytics/transcript-token-extractor.test.js +0 -177
- package/dist/__tests__/analytics/transcript-token-extractor.test.js.map +0 -1
- package/dist/analytics/analytics-summary.d.ts +0 -47
- package/dist/analytics/analytics-summary.d.ts.map +0 -1
- package/dist/analytics/analytics-summary.js +0 -171
- package/dist/analytics/analytics-summary.js.map +0 -1
- package/dist/analytics/backfill-dedup.d.ts +0 -49
- package/dist/analytics/backfill-dedup.d.ts.map +0 -1
- package/dist/analytics/backfill-dedup.js +0 -115
- package/dist/analytics/backfill-dedup.js.map +0 -1
- package/dist/analytics/backfill-engine.d.ts +0 -59
- package/dist/analytics/backfill-engine.d.ts.map +0 -1
- package/dist/analytics/backfill-engine.js +0 -172
- package/dist/analytics/backfill-engine.js.map +0 -1
- package/dist/analytics/cost-estimator.d.ts +0 -29
- package/dist/analytics/cost-estimator.d.ts.map +0 -1
- package/dist/analytics/cost-estimator.js +0 -135
- package/dist/analytics/cost-estimator.js.map +0 -1
- package/dist/analytics/export.d.ts +0 -7
- package/dist/analytics/export.d.ts.map +0 -1
- package/dist/analytics/export.js +0 -93
- package/dist/analytics/export.js.map +0 -1
- package/dist/analytics/index.d.ts +0 -24
- package/dist/analytics/index.d.ts.map +0 -1
- package/dist/analytics/index.js +0 -30
- package/dist/analytics/index.js.map +0 -1
- package/dist/analytics/metrics-collector.d.ts +0 -30
- package/dist/analytics/metrics-collector.d.ts.map +0 -1
- package/dist/analytics/metrics-collector.js +0 -96
- package/dist/analytics/metrics-collector.js.map +0 -1
- package/dist/analytics/output-estimator.d.ts +0 -26
- package/dist/analytics/output-estimator.d.ts.map +0 -1
- package/dist/analytics/output-estimator.js +0 -65
- package/dist/analytics/output-estimator.js.map +0 -1
- package/dist/analytics/query-engine.d.ts +0 -35
- package/dist/analytics/query-engine.d.ts.map +0 -1
- package/dist/analytics/query-engine.js +0 -239
- package/dist/analytics/query-engine.js.map +0 -1
- package/dist/analytics/session-catalog.d.ts +0 -45
- package/dist/analytics/session-catalog.d.ts.map +0 -1
- package/dist/analytics/session-catalog.js +0 -153
- package/dist/analytics/session-catalog.js.map +0 -1
- package/dist/analytics/session-manager.d.ts +0 -58
- package/dist/analytics/session-manager.d.ts.map +0 -1
- package/dist/analytics/session-manager.js +0 -396
- package/dist/analytics/session-manager.js.map +0 -1
- package/dist/analytics/session-types.d.ts +0 -37
- package/dist/analytics/session-types.d.ts.map +0 -1
- package/dist/analytics/session-types.js +0 -2
- package/dist/analytics/session-types.js.map +0 -1
- package/dist/analytics/token-extractor.d.ts +0 -31
- package/dist/analytics/token-extractor.d.ts.map +0 -1
- package/dist/analytics/token-extractor.js +0 -57
- package/dist/analytics/token-extractor.js.map +0 -1
- package/dist/analytics/token-tracker.d.ts +0 -33
- package/dist/analytics/token-tracker.d.ts.map +0 -1
- package/dist/analytics/token-tracker.js +0 -443
- package/dist/analytics/token-tracker.js.map +0 -1
- package/dist/analytics/tokscale-adapter.d.ts +0 -71
- package/dist/analytics/tokscale-adapter.d.ts.map +0 -1
- package/dist/analytics/tokscale-adapter.js +0 -223
- package/dist/analytics/tokscale-adapter.js.map +0 -1
- package/dist/analytics/transcript-parser.d.ts +0 -42
- package/dist/analytics/transcript-parser.d.ts.map +0 -1
- package/dist/analytics/transcript-parser.js +0 -90
- package/dist/analytics/transcript-parser.js.map +0 -1
- package/dist/analytics/transcript-scanner.d.ts +0 -51
- package/dist/analytics/transcript-scanner.d.ts.map +0 -1
- package/dist/analytics/transcript-scanner.js +0 -279
- package/dist/analytics/transcript-scanner.js.map +0 -1
- package/dist/analytics/transcript-token-extractor.d.ts +0 -35
- package/dist/analytics/transcript-token-extractor.d.ts.map +0 -1
- package/dist/analytics/transcript-token-extractor.js +0 -136
- package/dist/analytics/transcript-token-extractor.js.map +0 -1
- package/dist/analytics/types.d.ts +0 -119
- package/dist/analytics/types.d.ts.map +0 -1
- package/dist/analytics/types.js +0 -32
- package/dist/analytics/types.js.map +0 -1
- package/dist/cli/analytics.d.ts +0 -3
- package/dist/cli/analytics.d.ts.map +0 -1
- package/dist/cli/analytics.js +0 -105
- package/dist/cli/analytics.js.map +0 -1
- package/dist/cli/commands/agents.d.ts +0 -5
- package/dist/cli/commands/agents.d.ts.map +0 -1
- package/dist/cli/commands/agents.js +0 -31
- package/dist/cli/commands/agents.js.map +0 -1
- package/dist/cli/commands/backfill.d.ts +0 -15
- package/dist/cli/commands/backfill.d.ts.map +0 -1
- package/dist/cli/commands/backfill.js +0 -146
- package/dist/cli/commands/backfill.js.map +0 -1
- package/dist/cli/commands/cleanup.d.ts +0 -4
- package/dist/cli/commands/cleanup.d.ts.map +0 -1
- package/dist/cli/commands/cleanup.js +0 -31
- package/dist/cli/commands/cleanup.js.map +0 -1
- package/dist/cli/commands/cost.d.ts +0 -4
- package/dist/cli/commands/cost.d.ts.map +0 -1
- package/dist/cli/commands/cost.js +0 -53
- package/dist/cli/commands/cost.js.map +0 -1
- package/dist/cli/commands/export.d.ts +0 -5
- package/dist/cli/commands/export.d.ts.map +0 -1
- package/dist/cli/commands/export.js +0 -30
- package/dist/cli/commands/export.js.map +0 -1
- package/dist/cli/commands/sessions.d.ts +0 -5
- package/dist/cli/commands/sessions.d.ts.map +0 -1
- package/dist/cli/commands/sessions.js +0 -89
- package/dist/cli/commands/sessions.js.map +0 -1
- package/dist/cli/commands/stats.d.ts +0 -5
- package/dist/cli/commands/stats.d.ts.map +0 -1
- package/dist/cli/commands/stats.js +0 -84
- package/dist/cli/commands/stats.js.map +0 -1
- package/dist/cli/utils/tokscale-launcher.d.ts +0 -25
- package/dist/cli/utils/tokscale-launcher.d.ts.map +0 -1
- package/dist/cli/utils/tokscale-launcher.js +0 -70
- package/dist/cli/utils/tokscale-launcher.js.map +0 -1
- package/dist/hud/analytics-display.d.ts +0 -63
- package/dist/hud/analytics-display.d.ts.map +0 -1
- package/dist/hud/analytics-display.js +0 -190
- package/dist/hud/analytics-display.js.map +0 -1
- package/scripts/build-codex-server.mjs +0 -95
|
@@ -5,8 +5,113 @@
|
|
|
5
5
|
* Create, kill, list, and manage tmux sessions for MCP worker bridge daemons.
|
|
6
6
|
* Sessions are named "omc-team-{teamName}-{workerName}".
|
|
7
7
|
*/
|
|
8
|
-
import { execSync, execFileSync } from 'child_process';
|
|
8
|
+
import { exec, execFile, execSync, execFileSync } from 'child_process';
|
|
9
|
+
import { join, basename } from 'path';
|
|
10
|
+
import { promisify } from 'util';
|
|
11
|
+
import fs from 'fs/promises';
|
|
12
|
+
import { validateTeamName } from './team-name.js';
|
|
13
|
+
const sleep = (ms) => new Promise(r => setTimeout(r, ms));
|
|
9
14
|
const TMUX_SESSION_PREFIX = 'omc-team';
|
|
15
|
+
const promisifiedExec = promisify(exec);
|
|
16
|
+
const promisifiedExecFile = promisify(execFile);
|
|
17
|
+
/**
|
|
18
|
+
* True when running on Windows under MSYS2/Git Bash.
|
|
19
|
+
* Tmux panes run bash in this environment, not cmd.exe.
|
|
20
|
+
*/
|
|
21
|
+
export function isUnixLikeOnWindows() {
|
|
22
|
+
return process.platform === 'win32' &&
|
|
23
|
+
!!(process.env.MSYSTEM || process.env.MINGW_PREFIX);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Execute a tmux command asynchronously. Routes through shell when arguments
|
|
27
|
+
* contain tmux format strings (e.g. #{pane_id}) to prevent MSYS2 execFile
|
|
28
|
+
* from stripping curly braces.
|
|
29
|
+
*/
|
|
30
|
+
async function tmuxAsync(args) {
|
|
31
|
+
if (args.some(a => a.includes('#{'))) {
|
|
32
|
+
const escaped = args.map(a => `"${a.replace(/"/g, '\\"')}"`).join(' ');
|
|
33
|
+
return promisifiedExec(`tmux ${escaped}`);
|
|
34
|
+
}
|
|
35
|
+
return promisifiedExecFile('tmux', args);
|
|
36
|
+
}
|
|
37
|
+
export function getDefaultShell() {
|
|
38
|
+
if (process.platform === 'win32' && !isUnixLikeOnWindows()) {
|
|
39
|
+
return process.env.COMSPEC || 'cmd.exe';
|
|
40
|
+
}
|
|
41
|
+
return process.env.SHELL || '/bin/bash';
|
|
42
|
+
}
|
|
43
|
+
function escapeForCmdSet(value) {
|
|
44
|
+
return value.replace(/"/g, '""');
|
|
45
|
+
}
|
|
46
|
+
function shellNameFromPath(shellPath) {
|
|
47
|
+
const shellName = basename(shellPath.replace(/\\/g, '/'));
|
|
48
|
+
return shellName.replace(/\.(exe|cmd|bat)$/i, '');
|
|
49
|
+
}
|
|
50
|
+
function shellEscape(value) {
|
|
51
|
+
return `'${value.replace(/'/g, `'\"'\"'`)}'`;
|
|
52
|
+
}
|
|
53
|
+
function assertSafeEnvKey(key) {
|
|
54
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) {
|
|
55
|
+
throw new Error(`Invalid environment key: "${key}"`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function getLaunchWords(config) {
|
|
59
|
+
if (config.launchBinary) {
|
|
60
|
+
return [config.launchBinary, ...(config.launchArgs ?? [])];
|
|
61
|
+
}
|
|
62
|
+
if (config.launchCmd) {
|
|
63
|
+
return [config.launchCmd];
|
|
64
|
+
}
|
|
65
|
+
throw new Error('Missing worker launch command. Provide launchBinary or launchCmd.');
|
|
66
|
+
}
|
|
67
|
+
export function buildWorkerStartCommand(config) {
|
|
68
|
+
const shell = getDefaultShell();
|
|
69
|
+
const launchWords = getLaunchWords(config);
|
|
70
|
+
if (process.platform === 'win32' && !isUnixLikeOnWindows()) {
|
|
71
|
+
const envPrefix = Object.entries(config.envVars)
|
|
72
|
+
.map(([k, v]) => {
|
|
73
|
+
assertSafeEnvKey(k);
|
|
74
|
+
return `set "${k}=${escapeForCmdSet(v)}"`;
|
|
75
|
+
})
|
|
76
|
+
.join(' && ');
|
|
77
|
+
const launch = config.launchBinary
|
|
78
|
+
? launchWords.map((part) => `"${escapeForCmdSet(part)}"`).join(' ')
|
|
79
|
+
: launchWords[0];
|
|
80
|
+
const cmdBody = envPrefix ? `${envPrefix} && ${launch}` : launch;
|
|
81
|
+
return `${shell} /d /s /c "${cmdBody}"`;
|
|
82
|
+
}
|
|
83
|
+
if (config.launchBinary) {
|
|
84
|
+
const envAssignments = Object.entries(config.envVars).map(([key, value]) => {
|
|
85
|
+
assertSafeEnvKey(key);
|
|
86
|
+
return `${key}=${shellEscape(value)}`;
|
|
87
|
+
});
|
|
88
|
+
const shellName = shellNameFromPath(shell) || 'bash';
|
|
89
|
+
const rcFile = process.env.HOME ? `${process.env.HOME}/.${shellName}rc` : '';
|
|
90
|
+
const script = rcFile
|
|
91
|
+
? `[ -f ${shellEscape(rcFile)} ] && . ${shellEscape(rcFile)}; exec "$@"`
|
|
92
|
+
: 'exec "$@"';
|
|
93
|
+
return [
|
|
94
|
+
'env',
|
|
95
|
+
...envAssignments,
|
|
96
|
+
shell,
|
|
97
|
+
'-lc',
|
|
98
|
+
script,
|
|
99
|
+
'--',
|
|
100
|
+
...launchWords,
|
|
101
|
+
].map(shellEscape).join(' ');
|
|
102
|
+
}
|
|
103
|
+
const envString = Object.entries(config.envVars)
|
|
104
|
+
.map(([k, v]) => {
|
|
105
|
+
assertSafeEnvKey(k);
|
|
106
|
+
return `${k}=${shellEscape(v)}`;
|
|
107
|
+
})
|
|
108
|
+
.join(' ');
|
|
109
|
+
const shellName = shellNameFromPath(shell) || 'bash';
|
|
110
|
+
const rcFile = process.env.HOME ? `${process.env.HOME}/.${shellName}rc` : '';
|
|
111
|
+
// Quote rcFile to prevent shell injection if HOME contains metacharacters
|
|
112
|
+
const sourceCmd = rcFile ? `[ -f "${rcFile}" ] && source "${rcFile}"; ` : '';
|
|
113
|
+
return `env ${envString} ${shell} -c "${sourceCmd}exec ${launchWords[0]}"`;
|
|
114
|
+
}
|
|
10
115
|
/** Validate tmux is available. Throws with install instructions if not. */
|
|
11
116
|
export function validateTmux() {
|
|
12
117
|
try {
|
|
@@ -36,6 +141,7 @@ export function sanitizeName(name) {
|
|
|
36
141
|
export function sessionName(teamName, workerName) {
|
|
37
142
|
return `${TMUX_SESSION_PREFIX}-${sanitizeName(teamName)}-${sanitizeName(workerName)}`;
|
|
38
143
|
}
|
|
144
|
+
/** @deprecated Use createTeamSession() instead for split-pane topology */
|
|
39
145
|
/** Create a detached tmux session. Kills stale session with same name first. */
|
|
40
146
|
export function createSession(teamName, workerName, workingDirectory) {
|
|
41
147
|
const name = sessionName(teamName, workerName);
|
|
@@ -52,6 +158,7 @@ export function createSession(teamName, workerName, workingDirectory) {
|
|
|
52
158
|
execFileSync('tmux', args, { stdio: 'pipe', timeout: 5000 });
|
|
53
159
|
return name;
|
|
54
160
|
}
|
|
161
|
+
/** @deprecated Use killTeamSession() instead */
|
|
55
162
|
/** Kill a session by team/worker name. No-op if not found. */
|
|
56
163
|
export function killSession(teamName, workerName) {
|
|
57
164
|
const name = sessionName(teamName, workerName);
|
|
@@ -60,6 +167,7 @@ export function killSession(teamName, workerName) {
|
|
|
60
167
|
}
|
|
61
168
|
catch { /* ignore — session may not exist */ }
|
|
62
169
|
}
|
|
170
|
+
/** @deprecated Use isWorkerAlive() with pane ID instead */
|
|
63
171
|
/** Check if a session exists */
|
|
64
172
|
export function isSessionAlive(teamName, workerName) {
|
|
65
173
|
const name = sessionName(teamName, workerName);
|
|
@@ -75,7 +183,12 @@ export function isSessionAlive(teamName, workerName) {
|
|
|
75
183
|
export function listActiveSessions(teamName) {
|
|
76
184
|
const prefix = `${TMUX_SESSION_PREFIX}-${sanitizeName(teamName)}-`;
|
|
77
185
|
try {
|
|
78
|
-
|
|
186
|
+
// Use shell execution to prevent MSYS2 from stripping #{} in format strings
|
|
187
|
+
const fmtArgs = ['list-sessions', '-F', '#{session_name}'];
|
|
188
|
+
const shellCmd = 'tmux ' + fmtArgs.map(a => `"${a.replace(/"/g, '\\"')}"`).join(' ');
|
|
189
|
+
const output = execSync(shellCmd, {
|
|
190
|
+
encoding: 'utf-8', timeout: 5000, stdio: ['pipe', 'pipe', 'pipe']
|
|
191
|
+
});
|
|
79
192
|
return output.trim().split('\n')
|
|
80
193
|
.filter(s => s.startsWith(prefix))
|
|
81
194
|
.map(s => s.slice(prefix.length));
|
|
@@ -95,4 +208,422 @@ export function spawnBridgeInSession(tmuxSession, bridgeScriptPath, configFilePa
|
|
|
95
208
|
const cmd = `node "${bridgeScriptPath}" --config "${configFilePath}"`;
|
|
96
209
|
execFileSync('tmux', ['send-keys', '-t', tmuxSession, cmd, 'Enter'], { stdio: 'pipe', timeout: 5000 });
|
|
97
210
|
}
|
|
211
|
+
/**
|
|
212
|
+
* Create a tmux session with split-pane topology for a team.
|
|
213
|
+
*
|
|
214
|
+
* Must be run inside an existing tmux session ($TMUX must be set).
|
|
215
|
+
* Creates splits in the CURRENT window so panes appear immediately
|
|
216
|
+
* in the user's view. Returns sessionName in "session:window" form.
|
|
217
|
+
*
|
|
218
|
+
* Layout: leader pane on the left, worker panes stacked vertically on the right.
|
|
219
|
+
* IMPORTANT: Uses pane IDs (%N format) not pane indices for stable targeting.
|
|
220
|
+
*/
|
|
221
|
+
export async function createTeamSession(teamName, workerCount, cwd) {
|
|
222
|
+
const { execFile } = await import('child_process');
|
|
223
|
+
const { promisify } = await import('util');
|
|
224
|
+
const execFileAsync = promisify(execFile);
|
|
225
|
+
if (!process.env.TMUX) {
|
|
226
|
+
throw new Error('Team mode requires running inside tmux. Start one: tmux new-session');
|
|
227
|
+
}
|
|
228
|
+
// Prefer the invoking pane from environment to avoid focus races when users
|
|
229
|
+
// switch tmux windows during startup (issue #966).
|
|
230
|
+
const envPaneIdRaw = (process.env.TMUX_PANE ?? '').trim();
|
|
231
|
+
const envPaneId = /^%\d+$/.test(envPaneIdRaw) ? envPaneIdRaw : '';
|
|
232
|
+
let sessionAndWindow = '';
|
|
233
|
+
let leaderPaneId = envPaneId;
|
|
234
|
+
if (envPaneId) {
|
|
235
|
+
try {
|
|
236
|
+
const targetedContextResult = await execFileAsync('tmux', [
|
|
237
|
+
'display-message', '-p', '-t', envPaneId, '#S:#I'
|
|
238
|
+
]);
|
|
239
|
+
sessionAndWindow = targetedContextResult.stdout.trim();
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
sessionAndWindow = '';
|
|
243
|
+
leaderPaneId = '';
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
if (!sessionAndWindow || !leaderPaneId) {
|
|
247
|
+
// Fallback when TMUX_PANE is unavailable/invalid.
|
|
248
|
+
const contextResult = await tmuxAsync([
|
|
249
|
+
'display-message', '-p', '#S:#I #{pane_id}'
|
|
250
|
+
]);
|
|
251
|
+
const contextLine = contextResult.stdout.trim();
|
|
252
|
+
const contextMatch = contextLine.match(/^(\S+)\s+(%\d+)$/);
|
|
253
|
+
if (!contextMatch) {
|
|
254
|
+
throw new Error(`Failed to resolve tmux context: "${contextLine}"`);
|
|
255
|
+
}
|
|
256
|
+
sessionAndWindow = contextMatch[1];
|
|
257
|
+
leaderPaneId = contextMatch[2];
|
|
258
|
+
}
|
|
259
|
+
const teamTarget = sessionAndWindow; // "session:window" form
|
|
260
|
+
// Extract bare session name (before ':') for options that don't accept window targets
|
|
261
|
+
const resolvedSessionName = teamTarget.split(':')[0];
|
|
262
|
+
const workerPaneIds = [];
|
|
263
|
+
if (workerCount <= 0) {
|
|
264
|
+
// Leader-only topology: no worker panes yet (spawned on demand later).
|
|
265
|
+
try {
|
|
266
|
+
await execFileAsync('tmux', ['set-option', '-t', resolvedSessionName, 'mouse', 'on']);
|
|
267
|
+
}
|
|
268
|
+
catch { /* ignore */ }
|
|
269
|
+
try {
|
|
270
|
+
await execFileAsync('tmux', ['select-pane', '-t', leaderPaneId]);
|
|
271
|
+
}
|
|
272
|
+
catch { /* ignore */ }
|
|
273
|
+
await new Promise(r => setTimeout(r, 300));
|
|
274
|
+
return { sessionName: teamTarget, leaderPaneId, workerPaneIds };
|
|
275
|
+
}
|
|
276
|
+
// Create worker panes: first via horizontal split off leader, rest stacked vertically on right
|
|
277
|
+
for (let i = 0; i < workerCount; i++) {
|
|
278
|
+
const splitTarget = i === 0 ? leaderPaneId : workerPaneIds[i - 1];
|
|
279
|
+
const splitType = i === 0 ? '-h' : '-v';
|
|
280
|
+
// -d: don't switch focus to new pane; -P -F: print new pane ID directly
|
|
281
|
+
const splitResult = await tmuxAsync([
|
|
282
|
+
'split-window', splitType, '-t', splitTarget,
|
|
283
|
+
'-d', '-P', '-F', '#{pane_id}',
|
|
284
|
+
'-c', cwd,
|
|
285
|
+
]);
|
|
286
|
+
const paneId = splitResult.stdout.split('\n')[0]?.trim();
|
|
287
|
+
if (paneId) {
|
|
288
|
+
workerPaneIds.push(paneId);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
// Apply main-vertical layout to balance the panes
|
|
292
|
+
try {
|
|
293
|
+
await execFileAsync('tmux', ['select-layout', '-t', teamTarget, 'main-vertical']);
|
|
294
|
+
}
|
|
295
|
+
catch {
|
|
296
|
+
// Layout may not apply if only 1 pane; ignore
|
|
297
|
+
}
|
|
298
|
+
// Set leader pane to half the window width
|
|
299
|
+
try {
|
|
300
|
+
const widthResult = await tmuxAsync([
|
|
301
|
+
'display-message', '-p', '-t', teamTarget, '#{window_width}'
|
|
302
|
+
]);
|
|
303
|
+
const width = parseInt(widthResult.stdout.trim(), 10);
|
|
304
|
+
if (Number.isFinite(width) && width >= 40) {
|
|
305
|
+
const half = String(Math.floor(width / 2));
|
|
306
|
+
await execFileAsync('tmux', ['set-window-option', '-t', teamTarget, 'main-pane-width', half]);
|
|
307
|
+
await execFileAsync('tmux', ['select-layout', '-t', teamTarget, 'main-vertical']);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
catch { /* ignore layout sizing errors */ }
|
|
311
|
+
// Enable mouse mode so user can click/scroll panes
|
|
312
|
+
try {
|
|
313
|
+
await execFileAsync('tmux', ['set-option', '-t', resolvedSessionName, 'mouse', 'on']);
|
|
314
|
+
}
|
|
315
|
+
catch { /* ignore */ }
|
|
316
|
+
// Return focus to leader pane
|
|
317
|
+
try {
|
|
318
|
+
await execFileAsync('tmux', ['select-pane', '-t', leaderPaneId]);
|
|
319
|
+
}
|
|
320
|
+
catch { /* ignore */ }
|
|
321
|
+
await new Promise(r => setTimeout(r, 300));
|
|
322
|
+
return { sessionName: teamTarget, leaderPaneId, workerPaneIds };
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Spawn a CLI agent in a specific pane.
|
|
326
|
+
* Worker startup: env OMC_TEAM_WORKER={teamName}/workerName shell -lc "exec agentCmd"
|
|
327
|
+
*/
|
|
328
|
+
export async function spawnWorkerInPane(sessionName, paneId, config) {
|
|
329
|
+
const { execFile } = await import('child_process');
|
|
330
|
+
const { promisify } = await import('util');
|
|
331
|
+
const execFileAsync = promisify(execFile);
|
|
332
|
+
validateTeamName(config.teamName);
|
|
333
|
+
const startCmd = buildWorkerStartCommand(config);
|
|
334
|
+
// Use -l (literal) flag to prevent tmux key-name parsing of the command string
|
|
335
|
+
await execFileAsync('tmux', [
|
|
336
|
+
'send-keys', '-t', paneId, '-l', startCmd
|
|
337
|
+
]);
|
|
338
|
+
await execFileAsync('tmux', ['send-keys', '-t', paneId, 'Enter']);
|
|
339
|
+
}
|
|
340
|
+
function normalizeTmuxCapture(value) {
|
|
341
|
+
return value.replace(/\r/g, '').replace(/\s+/g, ' ').trim();
|
|
342
|
+
}
|
|
343
|
+
async function capturePaneAsync(paneId, execFileAsync) {
|
|
344
|
+
try {
|
|
345
|
+
const result = await execFileAsync('tmux', ['capture-pane', '-t', paneId, '-p', '-S', '-80']);
|
|
346
|
+
return result.stdout;
|
|
347
|
+
}
|
|
348
|
+
catch {
|
|
349
|
+
return '';
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
function paneHasTrustPrompt(captured) {
|
|
353
|
+
const lines = captured.split('\n').map(l => l.replace(/\r/g, '').trim()).filter(l => l.length > 0);
|
|
354
|
+
const tail = lines.slice(-12);
|
|
355
|
+
const hasQuestion = tail.some(l => /Do you trust the contents of this directory\?/i.test(l));
|
|
356
|
+
const hasChoices = tail.some(l => /Yes,\s*continue|No,\s*quit|Press enter to continue/i.test(l));
|
|
357
|
+
return hasQuestion && hasChoices;
|
|
358
|
+
}
|
|
359
|
+
export function paneHasActiveTask(captured) {
|
|
360
|
+
const lines = captured.split('\n').map(l => l.replace(/\r/g, '').trim()).filter(l => l.length > 0);
|
|
361
|
+
const tail = lines.slice(-40);
|
|
362
|
+
if (tail.some(l => /esc to interrupt/i.test(l)))
|
|
363
|
+
return true;
|
|
364
|
+
if (tail.some(l => /\bbackground terminal running\b/i.test(l)))
|
|
365
|
+
return true;
|
|
366
|
+
return false;
|
|
367
|
+
}
|
|
368
|
+
export function paneLooksReady(captured) {
|
|
369
|
+
const lines = captured
|
|
370
|
+
.split('\n')
|
|
371
|
+
.map(line => line.replace(/\r/g, '').trim())
|
|
372
|
+
.filter(line => line.length > 0);
|
|
373
|
+
if (lines.length === 0)
|
|
374
|
+
return false;
|
|
375
|
+
const tail = lines.slice(-20);
|
|
376
|
+
const hasPrompt = tail.some(line => /^\s*[›>❯]\s*/u.test(line));
|
|
377
|
+
if (hasPrompt)
|
|
378
|
+
return true;
|
|
379
|
+
const hasCodexHint = tail.some(line => /\bgpt-[\w.-]+\b/i.test(line) || /\b\d+% left\b/i.test(line));
|
|
380
|
+
return hasCodexHint;
|
|
381
|
+
}
|
|
382
|
+
function paneTailContainsLiteralLine(captured, text) {
|
|
383
|
+
return normalizeTmuxCapture(captured).includes(normalizeTmuxCapture(text));
|
|
384
|
+
}
|
|
385
|
+
async function paneInCopyMode(paneId, execFileAsync) {
|
|
386
|
+
try {
|
|
387
|
+
const result = await tmuxAsync(['display-message', '-t', paneId, '-p', '#{pane_in_mode}']);
|
|
388
|
+
return result.stdout.trim() === '1';
|
|
389
|
+
}
|
|
390
|
+
catch {
|
|
391
|
+
return false;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
export function shouldAttemptAdaptiveRetry(args) {
|
|
395
|
+
if (process.env.OMX_TEAM_AUTO_INTERRUPT_RETRY === '0')
|
|
396
|
+
return false;
|
|
397
|
+
if (args.retriesAttempted >= 1)
|
|
398
|
+
return false;
|
|
399
|
+
if (args.paneInCopyMode)
|
|
400
|
+
return false;
|
|
401
|
+
if (!args.paneBusy)
|
|
402
|
+
return false;
|
|
403
|
+
if (typeof args.latestCapture !== 'string')
|
|
404
|
+
return false;
|
|
405
|
+
if (!paneTailContainsLiteralLine(args.latestCapture, args.message))
|
|
406
|
+
return false;
|
|
407
|
+
if (paneHasActiveTask(args.latestCapture))
|
|
408
|
+
return false;
|
|
409
|
+
if (!paneLooksReady(args.latestCapture))
|
|
410
|
+
return false;
|
|
411
|
+
return true;
|
|
412
|
+
}
|
|
413
|
+
/**
|
|
414
|
+
* Send a short trigger message to a worker via tmux send-keys.
|
|
415
|
+
* Uses robust C-m double-press with delays to ensure the message is submitted.
|
|
416
|
+
* Detects and auto-dismisses trust prompts. Handles busy panes with queue semantics.
|
|
417
|
+
* Message must be < 200 chars.
|
|
418
|
+
* Returns false on error (does not throw).
|
|
419
|
+
*/
|
|
420
|
+
export async function sendToWorker(_sessionName, paneId, message) {
|
|
421
|
+
if (message.length > 200) {
|
|
422
|
+
console.warn(`[tmux-session] sendToWorker: message truncated to 200 chars`);
|
|
423
|
+
message = message.slice(0, 200);
|
|
424
|
+
}
|
|
425
|
+
try {
|
|
426
|
+
const { execFile } = await import('child_process');
|
|
427
|
+
const { promisify } = await import('util');
|
|
428
|
+
const execFileAsync = promisify(execFile);
|
|
429
|
+
const sleep = (ms) => new Promise(r => setTimeout(r, ms));
|
|
430
|
+
const sendKey = async (key) => {
|
|
431
|
+
await execFileAsync('tmux', ['send-keys', '-t', paneId, key]);
|
|
432
|
+
};
|
|
433
|
+
// Guard: copy-mode captures keys; skip injection entirely.
|
|
434
|
+
if (await paneInCopyMode(paneId, execFileAsync)) {
|
|
435
|
+
return false;
|
|
436
|
+
}
|
|
437
|
+
// Check for trust prompt and auto-dismiss before sending our text
|
|
438
|
+
const initialCapture = await capturePaneAsync(paneId, execFileAsync);
|
|
439
|
+
const paneBusy = paneHasActiveTask(initialCapture);
|
|
440
|
+
if (paneHasTrustPrompt(initialCapture)) {
|
|
441
|
+
await sendKey('C-m');
|
|
442
|
+
await sleep(120);
|
|
443
|
+
await sendKey('C-m');
|
|
444
|
+
await sleep(200);
|
|
445
|
+
}
|
|
446
|
+
// Send text in literal mode with -- separator
|
|
447
|
+
await execFileAsync('tmux', ['send-keys', '-t', paneId, '-l', '--', message]);
|
|
448
|
+
// Allow input buffer to settle
|
|
449
|
+
await sleep(150);
|
|
450
|
+
// Submit: up to 6 rounds of C-m double-press.
|
|
451
|
+
// For busy panes, first round uses Tab+C-m (queue semantics).
|
|
452
|
+
const submitRounds = 6;
|
|
453
|
+
for (let round = 0; round < submitRounds; round++) {
|
|
454
|
+
await sleep(100);
|
|
455
|
+
if (round === 0 && paneBusy) {
|
|
456
|
+
await sendKey('Tab');
|
|
457
|
+
await sleep(80);
|
|
458
|
+
await sendKey('C-m');
|
|
459
|
+
}
|
|
460
|
+
else {
|
|
461
|
+
await sendKey('C-m');
|
|
462
|
+
await sleep(200);
|
|
463
|
+
await sendKey('C-m');
|
|
464
|
+
}
|
|
465
|
+
await sleep(140);
|
|
466
|
+
// Check if text is still visible in the pane — if not, it was submitted
|
|
467
|
+
const checkCapture = await capturePaneAsync(paneId, execFileAsync);
|
|
468
|
+
if (!paneTailContainsLiteralLine(checkCapture, message))
|
|
469
|
+
return true;
|
|
470
|
+
await sleep(140);
|
|
471
|
+
}
|
|
472
|
+
// Safety gate: copy-mode can turn on while we retry; never send fallback control keys when active.
|
|
473
|
+
if (await paneInCopyMode(paneId, execFileAsync)) {
|
|
474
|
+
return false;
|
|
475
|
+
}
|
|
476
|
+
// Adaptive fallback: for busy panes, retry once without interrupting active turns.
|
|
477
|
+
const finalCapture = await capturePaneAsync(paneId, execFileAsync);
|
|
478
|
+
const paneModeBeforeAdaptiveRetry = await paneInCopyMode(paneId, execFileAsync);
|
|
479
|
+
if (shouldAttemptAdaptiveRetry({
|
|
480
|
+
paneBusy,
|
|
481
|
+
latestCapture: finalCapture,
|
|
482
|
+
message,
|
|
483
|
+
paneInCopyMode: paneModeBeforeAdaptiveRetry,
|
|
484
|
+
retriesAttempted: 0,
|
|
485
|
+
})) {
|
|
486
|
+
if (await paneInCopyMode(paneId, execFileAsync)) {
|
|
487
|
+
return false;
|
|
488
|
+
}
|
|
489
|
+
await sendKey('C-u');
|
|
490
|
+
await sleep(80);
|
|
491
|
+
if (await paneInCopyMode(paneId, execFileAsync)) {
|
|
492
|
+
return false;
|
|
493
|
+
}
|
|
494
|
+
await execFileAsync('tmux', ['send-keys', '-t', paneId, '-l', '--', message]);
|
|
495
|
+
await sleep(120);
|
|
496
|
+
for (let round = 0; round < 4; round++) {
|
|
497
|
+
await sendKey('C-m');
|
|
498
|
+
await sleep(180);
|
|
499
|
+
await sendKey('C-m');
|
|
500
|
+
await sleep(140);
|
|
501
|
+
const retryCapture = await capturePaneAsync(paneId, execFileAsync);
|
|
502
|
+
if (!paneTailContainsLiteralLine(retryCapture, message))
|
|
503
|
+
return true;
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
// Before fallback control keys, re-check copy-mode to avoid mutating scrollback UI state.
|
|
507
|
+
if (await paneInCopyMode(paneId, execFileAsync)) {
|
|
508
|
+
return false;
|
|
509
|
+
}
|
|
510
|
+
// Fail-open: one last nudge, then continue regardless.
|
|
511
|
+
await sendKey('C-m');
|
|
512
|
+
await sleep(120);
|
|
513
|
+
await sendKey('C-m');
|
|
514
|
+
return true;
|
|
515
|
+
}
|
|
516
|
+
catch {
|
|
517
|
+
return false;
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
/**
|
|
521
|
+
* Inject a status message into the leader Claude pane.
|
|
522
|
+
* The message is typed into the leader's input, triggering a new conversation turn.
|
|
523
|
+
* Prefixes with [OMC_TMUX_INJECT] marker to distinguish from user input.
|
|
524
|
+
* Returns false on error (does not throw).
|
|
525
|
+
*/
|
|
526
|
+
export async function injectToLeaderPane(sessionName, leaderPaneId, message) {
|
|
527
|
+
const prefixed = `[OMC_TMUX_INJECT] ${message}`.slice(0, 200);
|
|
528
|
+
// If the leader is running a blocking tool (e.g. omc_run_team_wait shows
|
|
529
|
+
// "esc to interrupt"), send C-c first so the message is not queued in the
|
|
530
|
+
// stdin buffer behind the blocked process.
|
|
531
|
+
try {
|
|
532
|
+
const { execFile } = await import('child_process');
|
|
533
|
+
const { promisify } = await import('util');
|
|
534
|
+
const execFileAsync = promisify(execFile);
|
|
535
|
+
if (await paneInCopyMode(leaderPaneId, execFileAsync)) {
|
|
536
|
+
return false;
|
|
537
|
+
}
|
|
538
|
+
const captured = await capturePaneAsync(leaderPaneId, execFileAsync);
|
|
539
|
+
if (paneHasActiveTask(captured)) {
|
|
540
|
+
await execFileAsync('tmux', ['send-keys', '-t', leaderPaneId, 'C-c']);
|
|
541
|
+
await new Promise(r => setTimeout(r, 250));
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
catch { /* best-effort */ }
|
|
545
|
+
return sendToWorker(sessionName, leaderPaneId, prefixed);
|
|
546
|
+
}
|
|
547
|
+
/**
|
|
548
|
+
* Check if a worker pane is still alive.
|
|
549
|
+
* Uses pane ID for stable targeting (not pane index).
|
|
550
|
+
*/
|
|
551
|
+
export async function isWorkerAlive(paneId) {
|
|
552
|
+
try {
|
|
553
|
+
const { execFile } = await import('child_process');
|
|
554
|
+
const { promisify } = await import('util');
|
|
555
|
+
const execFileAsync = promisify(execFile);
|
|
556
|
+
const result = await tmuxAsync([
|
|
557
|
+
'display-message', '-t', paneId, '-p', '#{pane_dead}'
|
|
558
|
+
]);
|
|
559
|
+
return result.stdout.trim() === '0';
|
|
560
|
+
}
|
|
561
|
+
catch {
|
|
562
|
+
return false;
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
/**
|
|
566
|
+
* Graceful-then-force kill of worker panes.
|
|
567
|
+
* Writes a shutdown sentinel, waits up to graceMs, then force-kills remaining panes.
|
|
568
|
+
* Never kills the leader pane.
|
|
569
|
+
*/
|
|
570
|
+
export async function killWorkerPanes(opts) {
|
|
571
|
+
const { paneIds, leaderPaneId, teamName, cwd, graceMs = 10_000 } = opts;
|
|
572
|
+
if (!paneIds.length)
|
|
573
|
+
return; // guard: nothing to kill
|
|
574
|
+
// 1. Write graceful shutdown sentinel
|
|
575
|
+
const shutdownPath = join(cwd, '.omc', 'state', 'team', teamName, 'shutdown.json');
|
|
576
|
+
try {
|
|
577
|
+
await fs.writeFile(shutdownPath, JSON.stringify({ requestedAt: Date.now() }));
|
|
578
|
+
await sleep(graceMs);
|
|
579
|
+
}
|
|
580
|
+
catch { /* sentinel write failure is non-fatal */ }
|
|
581
|
+
// 2. Force-kill each worker pane, guarding leader
|
|
582
|
+
const { execFile } = await import('child_process');
|
|
583
|
+
const { promisify } = await import('util');
|
|
584
|
+
const execFileAsync = promisify(execFile);
|
|
585
|
+
for (const paneId of paneIds) {
|
|
586
|
+
if (paneId === leaderPaneId)
|
|
587
|
+
continue; // GUARD — never kill leader
|
|
588
|
+
try {
|
|
589
|
+
await execFileAsync('tmux', ['kill-pane', '-t', paneId]);
|
|
590
|
+
}
|
|
591
|
+
catch { /* pane already gone — OK */ }
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
/**
|
|
595
|
+
* Kill the team tmux session or just the worker panes (split-pane mode).
|
|
596
|
+
*
|
|
597
|
+
* When sessionName contains ':' (split-pane mode, "session:window" form),
|
|
598
|
+
* only the worker panes are killed — the leader pane and the user's session
|
|
599
|
+
* are left intact. leaderPaneId is never killed.
|
|
600
|
+
*
|
|
601
|
+
* When sessionName does not contain ':', the entire session is killed.
|
|
602
|
+
*/
|
|
603
|
+
export async function killTeamSession(sessionName, workerPaneIds, leaderPaneId) {
|
|
604
|
+
const { execFile } = await import('child_process');
|
|
605
|
+
const { promisify } = await import('util');
|
|
606
|
+
const execFileAsync = promisify(execFile);
|
|
607
|
+
if (sessionName.includes(':')) {
|
|
608
|
+
// Split-pane mode: kill ONLY worker panes, never kill-session
|
|
609
|
+
if (!workerPaneIds?.length)
|
|
610
|
+
return; // no-op guard
|
|
611
|
+
for (const id of workerPaneIds) {
|
|
612
|
+
if (id === leaderPaneId)
|
|
613
|
+
continue;
|
|
614
|
+
try {
|
|
615
|
+
await execFileAsync('tmux', ['kill-pane', '-t', id]);
|
|
616
|
+
}
|
|
617
|
+
catch { /* already gone */ }
|
|
618
|
+
}
|
|
619
|
+
return;
|
|
620
|
+
}
|
|
621
|
+
// Session mode: this session is fully owned by the team
|
|
622
|
+
try {
|
|
623
|
+
await execFileAsync('tmux', ['kill-session', '-t', sessionName]);
|
|
624
|
+
}
|
|
625
|
+
catch {
|
|
626
|
+
// Session may already be dead
|
|
627
|
+
}
|
|
628
|
+
}
|
|
98
629
|
//# sourceMappingURL=tmux-session.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmux-session.js","sourceRoot":"","sources":["../../src/team/tmux-session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tmux-session.js","sourceRoot":"","sources":["../../src/team/tmux-session.ts"],"names":[],"mappings":"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"}
|
package/dist/team/types.d.ts
CHANGED
|
@@ -25,7 +25,7 @@ export interface BridgeWorkerPermissions {
|
|
|
25
25
|
allowedCommands: string[];
|
|
26
26
|
maxFileSize: number;
|
|
27
27
|
}
|
|
28
|
-
/** Mirrors the JSON structure of
|
|
28
|
+
/** Mirrors the JSON structure of {cwd}/.omc/state/team/{team}/tasks/{id}.json */
|
|
29
29
|
export interface TaskFile {
|
|
30
30
|
id: string;
|
|
31
31
|
subject: string;
|
|
@@ -86,7 +86,7 @@ export interface McpWorkerMember {
|
|
|
86
86
|
export interface HeartbeatData {
|
|
87
87
|
workerName: string;
|
|
88
88
|
teamName: string;
|
|
89
|
-
provider: 'codex' | 'gemini';
|
|
89
|
+
provider: 'codex' | 'gemini' | 'claude';
|
|
90
90
|
pid: number;
|
|
91
91
|
lastPollAt: string;
|
|
92
92
|
currentTaskId?: string;
|
|
@@ -116,7 +116,14 @@ export interface TaskFailureSidecar {
|
|
|
116
116
|
lastFailedAt: string;
|
|
117
117
|
}
|
|
118
118
|
/** Worker backend type */
|
|
119
|
-
export type WorkerBackend = 'claude-native' | 'mcp-codex' | 'mcp-gemini';
|
|
119
|
+
export type WorkerBackend = 'claude-native' | 'mcp-codex' | 'mcp-gemini' | 'tmux-claude' | 'tmux-codex' | 'tmux-gemini';
|
|
120
|
+
/** Signal file written by CLI workers when their task completes */
|
|
121
|
+
export interface DoneSignal {
|
|
122
|
+
taskId: string;
|
|
123
|
+
status: 'completed' | 'failed';
|
|
124
|
+
summary: string;
|
|
125
|
+
completedAt: string;
|
|
126
|
+
}
|
|
120
127
|
/** Worker capability tag */
|
|
121
128
|
export type WorkerCapability = 'code-edit' | 'code-review' | 'security-review' | 'architecture' | 'testing' | 'documentation' | 'ui-design' | 'refactoring' | 'research' | 'general';
|
|
122
129
|
//# sourceMappingURL=types.d.ts.map
|