oh-my-copilot 4.13.1 → 4.13.21
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 +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +3 -3
- package/bridge/cli.cjs +4709 -1961
- package/bridge/mcp-server.cjs +112 -11
- package/bridge/runtime-cli.cjs +4917 -2645
- package/bridge/team-bridge.cjs +6 -4
- package/bridge/team-mcp.cjs +19607 -0
- package/bridge/team.js +4895 -2215
- package/dist/__tests__/auto-slash-aliases.test.js +91 -0
- package/dist/__tests__/auto-slash-aliases.test.js.map +1 -1
- package/dist/__tests__/hooks/learner/bridge.test.js +25 -0
- package/dist/__tests__/hooks/learner/bridge.test.js.map +1 -1
- package/dist/__tests__/hooks/learner/parser.test.js +30 -0
- package/dist/__tests__/hooks/learner/parser.test.js.map +1 -1
- package/dist/__tests__/hud/extra-usage.test.js +42 -0
- package/dist/__tests__/hud/extra-usage.test.js.map +1 -1
- package/dist/__tests__/hud/labels.test.d.ts +2 -0
- package/dist/__tests__/hud/labels.test.d.ts.map +1 -0
- package/dist/__tests__/hud/labels.test.js +158 -0
- package/dist/__tests__/hud/labels.test.js.map +1 -0
- package/dist/__tests__/hud/render-enterprise.test.d.ts +5 -0
- package/dist/__tests__/hud/render-enterprise.test.d.ts.map +1 -0
- package/dist/__tests__/hud/render-enterprise.test.js +232 -0
- package/dist/__tests__/hud/render-enterprise.test.js.map +1 -0
- package/dist/__tests__/hud/render-rate-limits-priority.test.js +185 -0
- package/dist/__tests__/hud/render-rate-limits-priority.test.js.map +1 -1
- package/dist/__tests__/hud/stdin-session-scope.test.d.ts +2 -0
- package/dist/__tests__/hud/stdin-session-scope.test.d.ts.map +1 -0
- package/dist/__tests__/hud/stdin-session-scope.test.js +169 -0
- package/dist/__tests__/hud/stdin-session-scope.test.js.map +1 -0
- package/dist/__tests__/hud/usage-api.test.js +111 -1
- package/dist/__tests__/hud/usage-api.test.js.map +1 -1
- package/dist/__tests__/hud-marketplace-resolution.test.js +34 -0
- package/dist/__tests__/hud-marketplace-resolution.test.js.map +1 -1
- package/dist/__tests__/installer-hud-skip.test.js +6 -0
- package/dist/__tests__/installer-hud-skip.test.js.map +1 -1
- package/dist/__tests__/installer-omc-reference.test.js +1 -1
- package/dist/__tests__/installer-omc-reference.test.js.map +1 -1
- package/dist/__tests__/keyword-detector-echo-guard.test.d.ts +2 -0
- package/dist/__tests__/keyword-detector-echo-guard.test.d.ts.map +1 -0
- package/dist/__tests__/keyword-detector-echo-guard.test.js +218 -0
- package/dist/__tests__/keyword-detector-echo-guard.test.js.map +1 -0
- package/dist/__tests__/mnemosyne/detector.test.js +2 -0
- package/dist/__tests__/mnemosyne/detector.test.js.map +1 -1
- package/dist/__tests__/notepad.test.js +2 -2
- package/dist/__tests__/notepad.test.js.map +1 -1
- package/dist/__tests__/pre-tool-enforcer.test.js +84 -1
- package/dist/__tests__/pre-tool-enforcer.test.js.map +1 -1
- package/dist/__tests__/preemptive-compaction-hook.test.js +63 -0
- package/dist/__tests__/preemptive-compaction-hook.test.js.map +1 -1
- package/dist/__tests__/ralph-prd-mandatory.test.js +11 -1
- package/dist/__tests__/ralph-prd-mandatory.test.js.map +1 -1
- package/dist/__tests__/ralph-prd.test.js +40 -2
- package/dist/__tests__/ralph-prd.test.js.map +1 -1
- package/dist/__tests__/skills.test.js +363 -4
- package/dist/__tests__/skills.test.js.map +1 -1
- package/dist/__tests__/state-root-resolution.test.js +120 -6
- package/dist/__tests__/state-root-resolution.test.js.map +1 -1
- package/dist/autoresearch/__tests__/runtime.test.js +225 -28
- package/dist/autoresearch/__tests__/runtime.test.js.map +1 -1
- package/dist/autoresearch/runtime.d.ts.map +1 -1
- package/dist/autoresearch/runtime.js +9 -5
- package/dist/autoresearch/runtime.js.map +1 -1
- package/dist/cli/__tests__/team-status-worktree.test.d.ts +2 -0
- package/dist/cli/__tests__/team-status-worktree.test.d.ts.map +1 -0
- package/dist/cli/__tests__/team-status-worktree.test.js +96 -0
- package/dist/cli/__tests__/team-status-worktree.test.js.map +1 -0
- package/dist/cli/__tests__/team.test.js +164 -0
- package/dist/cli/__tests__/team.test.js.map +1 -1
- package/dist/cli/autoresearch.d.ts +1 -1
- package/dist/cli/autoresearch.d.ts.map +1 -1
- package/dist/cli/autoresearch.js +4 -4
- package/dist/cli/commands/team.d.ts +1 -0
- package/dist/cli/commands/team.d.ts.map +1 -1
- package/dist/cli/commands/team.js +15 -3
- package/dist/cli/commands/team.js.map +1 -1
- package/dist/cli/index.js +3 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/team.d.ts +6 -0
- package/dist/cli/team.d.ts.map +1 -1
- package/dist/cli/team.js +126 -5
- package/dist/cli/team.js.map +1 -1
- package/dist/cli/utils/formatting.d.ts +0 -10
- package/dist/cli/utils/formatting.d.ts.map +1 -1
- package/dist/cli/utils/formatting.js +0 -52
- package/dist/cli/utils/formatting.js.map +1 -1
- package/dist/config/__tests__/loader.test.js.map +1 -1
- package/dist/features/boulder-state/constants.d.ts +1 -1
- package/dist/features/boulder-state/constants.d.ts.map +1 -1
- package/dist/features/builtin-skills/skills.d.ts.map +1 -1
- package/dist/features/builtin-skills/skills.js +11 -3
- package/dist/features/builtin-skills/skills.js.map +1 -1
- package/dist/features/builtin-skills/types.d.ts +7 -0
- package/dist/features/builtin-skills/types.d.ts.map +1 -1
- package/dist/features/delegation-enforcer.d.ts +2 -0
- package/dist/features/delegation-enforcer.d.ts.map +1 -1
- package/dist/features/delegation-enforcer.js +10 -0
- package/dist/features/delegation-enforcer.js.map +1 -1
- package/dist/features/magic-keywords.d.ts.map +1 -1
- package/dist/features/magic-keywords.js +30 -1
- package/dist/features/magic-keywords.js.map +1 -1
- package/dist/features/rate-limit-wait/tmux-detector.d.ts +4 -4
- package/dist/features/rate-limit-wait/tmux-detector.js +9 -9
- package/dist/features/rate-limit-wait/tmux-detector.js.map +1 -1
- package/dist/hooks/__tests__/bridge-routing.test.js +156 -0
- package/dist/hooks/__tests__/bridge-routing.test.js.map +1 -1
- package/dist/hooks/auto-slash-command/constants.d.ts.map +1 -1
- package/dist/hooks/auto-slash-command/constants.js +1 -0
- package/dist/hooks/auto-slash-command/constants.js.map +1 -1
- package/dist/hooks/auto-slash-command/executor.d.ts.map +1 -1
- package/dist/hooks/auto-slash-command/executor.js +29 -0
- package/dist/hooks/auto-slash-command/executor.js.map +1 -1
- package/dist/hooks/bridge.d.ts.map +1 -1
- package/dist/hooks/bridge.js +184 -1
- package/dist/hooks/bridge.js.map +1 -1
- package/dist/hooks/learner/bridge.d.ts.map +1 -1
- package/dist/hooks/learner/bridge.js +4 -109
- package/dist/hooks/learner/bridge.js.map +1 -1
- package/dist/hooks/learner/detector.js +1 -1
- package/dist/hooks/learner/parser.d.ts +9 -0
- package/dist/hooks/learner/parser.d.ts.map +1 -1
- package/dist/hooks/learner/parser.js +18 -5
- package/dist/hooks/learner/parser.js.map +1 -1
- package/dist/hooks/learner/types.d.ts +6 -0
- package/dist/hooks/learner/types.d.ts.map +1 -1
- package/dist/hooks/mode-registry/__tests__/session-isolation.test.js +16 -0
- package/dist/hooks/mode-registry/__tests__/session-isolation.test.js.map +1 -1
- package/dist/hooks/notepad/index.d.ts +4 -1
- package/dist/hooks/notepad/index.d.ts.map +1 -1
- package/dist/hooks/notepad/index.js +7 -4
- package/dist/hooks/notepad/index.js.map +1 -1
- package/dist/hooks/persistent-mode/__tests__/ralph-verification-flow.test.js +70 -3
- package/dist/hooks/persistent-mode/__tests__/ralph-verification-flow.test.js.map +1 -1
- package/dist/hooks/persistent-mode/index.d.ts.map +1 -1
- package/dist/hooks/persistent-mode/index.js +17 -13
- package/dist/hooks/persistent-mode/index.js.map +1 -1
- package/dist/hooks/persistent-mode/stop-hook-blocking.test.js +175 -3
- package/dist/hooks/persistent-mode/stop-hook-blocking.test.js.map +1 -1
- package/dist/hooks/project-memory/__tests__/integration.test.js +117 -3
- package/dist/hooks/project-memory/__tests__/integration.test.js.map +1 -1
- package/dist/hooks/project-memory/__tests__/storage.test.js +11 -11
- package/dist/hooks/project-memory/__tests__/storage.test.js.map +1 -1
- package/dist/hooks/project-memory/index.d.ts.map +1 -1
- package/dist/hooks/project-memory/index.js +24 -12
- package/dist/hooks/project-memory/index.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 +6 -6
- package/dist/hooks/ralph/loop.d.ts.map +1 -1
- package/dist/hooks/ralph/loop.js +18 -18
- package/dist/hooks/ralph/loop.js.map +1 -1
- package/dist/hooks/ralph/prd.d.ts +23 -12
- package/dist/hooks/ralph/prd.d.ts.map +1 -1
- package/dist/hooks/ralph/prd.js +88 -42
- package/dist/hooks/ralph/prd.js.map +1 -1
- package/dist/hooks/session-end/__tests__/mode-state-cleanup.test.js +20 -0
- package/dist/hooks/session-end/__tests__/mode-state-cleanup.test.js.map +1 -1
- package/dist/hooks/session-end/index.d.ts +9 -0
- package/dist/hooks/session-end/index.d.ts.map +1 -1
- package/dist/hooks/session-end/index.js +110 -0
- package/dist/hooks/session-end/index.js.map +1 -1
- package/dist/hooks/skill-bridge.cjs +114 -92
- package/dist/hooks/skill-state/index.d.ts.map +1 -1
- package/dist/hooks/skill-state/index.js +1 -0
- package/dist/hooks/skill-state/index.js.map +1 -1
- package/dist/hud/__tests__/enterprise-cost.test.d.ts +5 -0
- package/dist/hud/__tests__/enterprise-cost.test.d.ts.map +1 -0
- package/dist/hud/__tests__/enterprise-cost.test.js +151 -0
- package/dist/hud/__tests__/enterprise-cost.test.js.map +1 -0
- package/dist/hud/__tests__/git-status.test.js +18 -0
- package/dist/hud/__tests__/git-status.test.js.map +1 -1
- package/dist/hud/__tests__/usage-api-enterprise.test.d.ts +5 -0
- package/dist/hud/__tests__/usage-api-enterprise.test.d.ts.map +1 -0
- package/dist/hud/__tests__/usage-api-enterprise.test.js +249 -0
- package/dist/hud/__tests__/usage-api-enterprise.test.js.map +1 -0
- package/dist/hud/elements/background.d.ts +3 -3
- package/dist/hud/elements/background.d.ts.map +1 -1
- package/dist/hud/elements/background.js +5 -4
- package/dist/hud/elements/background.js.map +1 -1
- package/dist/hud/elements/call-counts.d.ts +2 -2
- package/dist/hud/elements/call-counts.d.ts.map +1 -1
- package/dist/hud/elements/call-counts.js +7 -6
- package/dist/hud/elements/call-counts.js.map +1 -1
- package/dist/hud/elements/context.d.ts +3 -3
- package/dist/hud/elements/context.d.ts.map +1 -1
- package/dist/hud/elements/context.js +5 -4
- package/dist/hud/elements/context.js.map +1 -1
- package/dist/hud/elements/enterprise-cost.d.ts +16 -0
- package/dist/hud/elements/enterprise-cost.d.ts.map +1 -0
- package/dist/hud/elements/enterprise-cost.js +63 -0
- package/dist/hud/elements/enterprise-cost.js.map +1 -0
- package/dist/hud/elements/git.d.ts +2 -1
- package/dist/hud/elements/git.d.ts.map +1 -1
- package/dist/hud/elements/git.js +7 -6
- package/dist/hud/elements/git.js.map +1 -1
- package/dist/hud/elements/permission.d.ts.map +1 -1
- package/dist/hud/elements/permission.js +2 -5
- package/dist/hud/elements/permission.js.map +1 -1
- package/dist/hud/elements/ralph.d.ts +2 -2
- package/dist/hud/elements/ralph.d.ts.map +1 -1
- package/dist/hud/elements/ralph.js +3 -2
- package/dist/hud/elements/ralph.js.map +1 -1
- package/dist/hud/elements/session.d.ts.map +1 -1
- package/dist/hud/elements/session.js +5 -9
- package/dist/hud/elements/session.js.map +1 -1
- package/dist/hud/elements/thinking.d.ts +2 -2
- package/dist/hud/elements/thinking.d.ts.map +1 -1
- package/dist/hud/elements/thinking.js +3 -2
- package/dist/hud/elements/thinking.js.map +1 -1
- package/dist/hud/elements/token-usage.d.ts +2 -2
- package/dist/hud/elements/token-usage.d.ts.map +1 -1
- package/dist/hud/elements/token-usage.js +3 -2
- package/dist/hud/elements/token-usage.js.map +1 -1
- package/dist/hud/index.d.ts.map +1 -1
- package/dist/hud/index.js +5 -1
- package/dist/hud/index.js.map +1 -1
- package/dist/hud/render.d.ts.map +1 -1
- package/dist/hud/render.js +43 -10
- package/dist/hud/render.js.map +1 -1
- package/dist/hud/state.d.ts.map +1 -1
- package/dist/hud/state.js +18 -1
- package/dist/hud/state.js.map +1 -1
- package/dist/hud/stdin.d.ts.map +1 -1
- package/dist/hud/stdin.js +49 -5
- package/dist/hud/stdin.js.map +1 -1
- package/dist/hud/types.d.ts +42 -0
- package/dist/hud/types.d.ts.map +1 -1
- package/dist/hud/types.js +59 -1
- package/dist/hud/types.js.map +1 -1
- package/dist/hud/usage-api.d.ts +19 -1
- package/dist/hud/usage-api.d.ts.map +1 -1
- package/dist/hud/usage-api.js +101 -18
- package/dist/hud/usage-api.js.map +1 -1
- package/dist/installer/__tests__/hud-cache-wrapper.test.d.ts +2 -0
- package/dist/installer/__tests__/hud-cache-wrapper.test.d.ts.map +1 -0
- package/dist/installer/__tests__/hud-cache-wrapper.test.js +235 -0
- package/dist/installer/__tests__/hud-cache-wrapper.test.js.map +1 -0
- package/dist/installer/__tests__/standalone-hook-reconcile.test.js +2 -0
- package/dist/installer/__tests__/standalone-hook-reconcile.test.js.map +1 -1
- package/dist/installer/index.d.ts +1 -0
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +83 -31
- package/dist/installer/index.js.map +1 -1
- package/dist/lib/__tests__/worktree-paths.test.js +162 -39
- package/dist/lib/__tests__/worktree-paths.test.js.map +1 -1
- package/dist/lib/worktree-paths.d.ts +87 -9
- package/dist/lib/worktree-paths.d.ts.map +1 -1
- package/dist/lib/worktree-paths.js +209 -27
- package/dist/lib/worktree-paths.js.map +1 -1
- package/dist/mcp/__tests__/team-server-artifact-convergence.test.js +156 -4
- package/dist/mcp/__tests__/team-server-artifact-convergence.test.js.map +1 -1
- package/dist/mcp/omc-tools-server.d.ts +11 -17
- package/dist/mcp/omc-tools-server.d.ts.map +1 -1
- package/dist/mcp/omc-tools-server.js +22 -32
- package/dist/mcp/omc-tools-server.js.map +1 -1
- package/dist/mcp/team-job-convergence.d.ts +9 -2
- package/dist/mcp/team-job-convergence.d.ts.map +1 -1
- package/dist/mcp/team-job-convergence.js +35 -14
- 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 +93 -13
- package/dist/mcp/team-server.js.map +1 -1
- package/dist/ralphthon/prd.d.ts.map +1 -1
- package/dist/ralphthon/prd.js +13 -17
- package/dist/ralphthon/prd.js.map +1 -1
- package/dist/shared/types.d.ts +2 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/team/__tests__/api-interop.cleanup.test.d.ts +2 -0
- package/dist/team/__tests__/api-interop.cleanup.test.d.ts.map +1 -0
- package/dist/team/__tests__/api-interop.cleanup.test.js +234 -0
- package/dist/team/__tests__/api-interop.cleanup.test.js.map +1 -0
- package/dist/team/__tests__/api-interop.dispatch.test.js +2 -1
- package/dist/team/__tests__/api-interop.dispatch.test.js.map +1 -1
- package/dist/team/__tests__/auto-merge-restart.test.d.ts +2 -0
- package/dist/team/__tests__/auto-merge-restart.test.d.ts.map +1 -0
- package/dist/team/__tests__/auto-merge-restart.test.js +128 -0
- package/dist/team/__tests__/auto-merge-restart.test.js.map +1 -0
- package/dist/team/__tests__/auto-merge.perf.test.d.ts +2 -0
- package/dist/team/__tests__/auto-merge.perf.test.d.ts.map +1 -0
- package/dist/team/__tests__/auto-merge.perf.test.js +85 -0
- package/dist/team/__tests__/auto-merge.perf.test.js.map +1 -0
- package/dist/team/__tests__/conflict-mailbox.test.d.ts +2 -0
- package/dist/team/__tests__/conflict-mailbox.test.d.ts.map +1 -0
- package/dist/team/__tests__/conflict-mailbox.test.js +238 -0
- package/dist/team/__tests__/conflict-mailbox.test.js.map +1 -0
- package/dist/team/__tests__/git-worktree.test.js +164 -3
- package/dist/team/__tests__/git-worktree.test.js.map +1 -1
- package/dist/team/__tests__/helpers/git-fixture.d.ts +72 -0
- package/dist/team/__tests__/helpers/git-fixture.d.ts.map +1 -0
- package/dist/team/__tests__/helpers/git-fixture.js +252 -0
- package/dist/team/__tests__/helpers/git-fixture.js.map +1 -0
- package/dist/team/__tests__/leader-inbox.test.d.ts +2 -0
- package/dist/team/__tests__/leader-inbox.test.d.ts.map +1 -0
- package/dist/team/__tests__/leader-inbox.test.js +152 -0
- package/dist/team/__tests__/leader-inbox.test.js.map +1 -0
- package/dist/team/__tests__/merge-orchestrator.test.d.ts +2 -0
- package/dist/team/__tests__/merge-orchestrator.test.d.ts.map +1 -0
- package/dist/team/__tests__/merge-orchestrator.test.js +779 -0
- package/dist/team/__tests__/merge-orchestrator.test.js.map +1 -0
- package/dist/team/__tests__/model-contract.test.js +35 -21
- package/dist/team/__tests__/model-contract.test.js.map +1 -1
- package/dist/team/__tests__/rebase-smoke.test.d.ts +2 -0
- package/dist/team/__tests__/rebase-smoke.test.d.ts.map +1 -0
- package/dist/team/__tests__/rebase-smoke.test.js +272 -0
- package/dist/team/__tests__/rebase-smoke.test.js.map +1 -0
- package/dist/team/__tests__/runtime-cli.test.js +11 -3
- package/dist/team/__tests__/runtime-cli.test.js.map +1 -1
- package/dist/team/__tests__/runtime-prompt-mode.test.js +14 -16
- package/dist/team/__tests__/runtime-prompt-mode.test.js.map +1 -1
- package/dist/team/__tests__/runtime-v2-role-routing.test.js +7 -1
- package/dist/team/__tests__/runtime-v2-role-routing.test.js.map +1 -1
- package/dist/team/__tests__/runtime-v2.dispatch.test.js +293 -15
- package/dist/team/__tests__/runtime-v2.dispatch.test.js.map +1 -1
- 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 +219 -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 +292 -0
- package/dist/team/__tests__/runtime-v2.shutdown.test.js.map +1 -0
- package/dist/team/__tests__/scaling-launch-config.test.js +203 -3
- package/dist/team/__tests__/scaling-launch-config.test.js.map +1 -1
- package/dist/team/__tests__/team-summary-worktree.test.d.ts +2 -0
- package/dist/team/__tests__/team-summary-worktree.test.d.ts.map +1 -0
- package/dist/team/__tests__/team-summary-worktree.test.js +85 -0
- package/dist/team/__tests__/team-summary-worktree.test.js.map +1 -0
- package/dist/team/__tests__/teardown-invariant.test.d.ts +2 -0
- package/dist/team/__tests__/teardown-invariant.test.d.ts.map +1 -0
- package/dist/team/__tests__/teardown-invariant.test.js +176 -0
- package/dist/team/__tests__/teardown-invariant.test.js.map +1 -0
- package/dist/team/__tests__/tmux-session-liveness.test.d.ts +2 -0
- package/dist/team/__tests__/tmux-session-liveness.test.d.ts.map +1 -0
- package/dist/team/__tests__/tmux-session-liveness.test.js +37 -0
- package/dist/team/__tests__/tmux-session-liveness.test.js.map +1 -0
- package/dist/team/__tests__/worker-bootstrap.test.js +47 -1
- package/dist/team/__tests__/worker-bootstrap.test.js.map +1 -1
- package/dist/team/__tests__/worker-commit-cadence.test.d.ts +2 -0
- package/dist/team/__tests__/worker-commit-cadence.test.d.ts.map +1 -0
- package/dist/team/__tests__/worker-commit-cadence.test.js +315 -0
- package/dist/team/__tests__/worker-commit-cadence.test.js.map +1 -0
- package/dist/team/__tests__/worktree-contract-fields.test.d.ts +2 -0
- package/dist/team/__tests__/worktree-contract-fields.test.d.ts.map +1 -0
- package/dist/team/__tests__/worktree-contract-fields.test.js +157 -0
- package/dist/team/__tests__/worktree-contract-fields.test.js.map +1 -0
- package/dist/team/__tests__/worktree-runtime-e2e.test.d.ts +2 -0
- package/dist/team/__tests__/worktree-runtime-e2e.test.d.ts.map +1 -0
- package/dist/team/__tests__/worktree-runtime-e2e.test.js +182 -0
- package/dist/team/__tests__/worktree-runtime-e2e.test.js.map +1 -0
- package/dist/team/api-interop.d.ts +2 -1
- package/dist/team/api-interop.d.ts.map +1 -1
- package/dist/team/api-interop.js +121 -14
- package/dist/team/api-interop.js.map +1 -1
- package/dist/team/capabilities.d.ts.map +1 -1
- package/dist/team/capabilities.js +2 -0
- package/dist/team/capabilities.js.map +1 -1
- package/dist/team/cli-worker-contract.d.ts +7 -6
- package/dist/team/cli-worker-contract.d.ts.map +1 -1
- package/dist/team/cli-worker-contract.js +7 -6
- package/dist/team/cli-worker-contract.js.map +1 -1
- package/dist/team/conflict-mailbox.d.ts +49 -0
- package/dist/team/conflict-mailbox.d.ts.map +1 -0
- package/dist/team/conflict-mailbox.js +98 -0
- package/dist/team/conflict-mailbox.js.map +1 -0
- package/dist/team/events.d.ts +3 -0
- package/dist/team/events.d.ts.map +1 -1
- package/dist/team/events.js +2 -1
- package/dist/team/events.js.map +1 -1
- package/dist/team/git-worktree.d.ts +78 -10
- package/dist/team/git-worktree.d.ts.map +1 -1
- package/dist/team/git-worktree.js +453 -97
- package/dist/team/git-worktree.js.map +1 -1
- package/dist/team/governance.d.ts +3 -2
- package/dist/team/governance.d.ts.map +1 -1
- package/dist/team/governance.js.map +1 -1
- package/dist/team/leader-inbox.d.ts +28 -0
- package/dist/team/leader-inbox.d.ts.map +1 -0
- package/dist/team/leader-inbox.js +68 -0
- package/dist/team/leader-inbox.js.map +1 -0
- package/dist/team/merge-coordinator.d.ts +6 -0
- package/dist/team/merge-coordinator.d.ts.map +1 -1
- package/dist/team/merge-coordinator.js +6 -2
- package/dist/team/merge-coordinator.js.map +1 -1
- package/dist/team/merge-orchestrator.d.ts +41 -0
- package/dist/team/merge-orchestrator.d.ts.map +1 -0
- package/dist/team/merge-orchestrator.js +736 -0
- package/dist/team/merge-orchestrator.js.map +1 -0
- package/dist/team/model-contract.d.ts +18 -2
- package/dist/team/model-contract.d.ts.map +1 -1
- package/dist/team/model-contract.js +55 -28
- package/dist/team/model-contract.js.map +1 -1
- package/dist/team/monitor.d.ts.map +1 -1
- package/dist/team/monitor.js +47 -3
- package/dist/team/monitor.js.map +1 -1
- package/dist/team/runtime-cli.d.ts +1 -0
- package/dist/team/runtime-cli.d.ts.map +1 -1
- package/dist/team/runtime-cli.js +15 -2
- package/dist/team/runtime-cli.js.map +1 -1
- package/dist/team/runtime-flags.d.ts +5 -0
- package/dist/team/runtime-flags.d.ts.map +1 -0
- package/dist/team/runtime-flags.js +12 -0
- package/dist/team/runtime-flags.js.map +1 -0
- package/dist/team/runtime-v2.d.ts +16 -1
- package/dist/team/runtime-v2.d.ts.map +1 -1
- package/dist/team/runtime-v2.js +531 -127
- package/dist/team/runtime-v2.js.map +1 -1
- package/dist/team/runtime.d.ts.map +1 -1
- package/dist/team/runtime.js +4 -1
- package/dist/team/runtime.js.map +1 -1
- package/dist/team/scaling.d.ts.map +1 -1
- package/dist/team/scaling.js +110 -13
- package/dist/team/scaling.js.map +1 -1
- package/dist/team/state/tasks.d.ts.map +1 -1
- package/dist/team/state/tasks.js +1 -0
- package/dist/team/state/tasks.js.map +1 -1
- package/dist/team/team-ops.d.ts.map +1 -1
- package/dist/team/team-ops.js +112 -16
- package/dist/team/team-ops.js.map +1 -1
- package/dist/team/tmux-session.d.ts +17 -29
- package/dist/team/tmux-session.d.ts.map +1 -1
- package/dist/team/tmux-session.js +117 -108
- package/dist/team/tmux-session.js.map +1 -1
- package/dist/team/types.d.ts +31 -17
- package/dist/team/types.d.ts.map +1 -1
- package/dist/team/types.js.map +1 -1
- package/dist/team/worker-bootstrap.d.ts +11 -0
- package/dist/team/worker-bootstrap.d.ts.map +1 -1
- package/dist/team/worker-bootstrap.js +37 -14
- package/dist/team/worker-bootstrap.js.map +1 -1
- package/dist/team/worker-canonicalization.d.ts.map +1 -1
- package/dist/team/worker-canonicalization.js +2 -0
- package/dist/team/worker-canonicalization.js.map +1 -1
- package/dist/team/worker-commit-cadence.d.ts +70 -0
- package/dist/team/worker-commit-cadence.d.ts.map +1 -0
- package/dist/team/worker-commit-cadence.js +271 -0
- package/dist/team/worker-commit-cadence.js.map +1 -0
- package/dist/tools/__tests__/memory-tools.test.js +4 -4
- package/dist/tools/__tests__/memory-tools.test.js.map +1 -1
- package/dist/tools/__tests__/state-tools.test.js +13 -1
- package/dist/tools/__tests__/state-tools.test.js.map +1 -1
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js +1 -16
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/resolve-node.d.ts.map +1 -1
- package/dist/utils/resolve-node.js +22 -28
- package/dist/utils/resolve-node.js.map +1 -1
- package/docs/GETTING-STARTED.md +415 -0
- package/docs/MIGRATION.md +1003 -0
- package/docs/REFERENCE.md +21 -4
- package/docs/TEAM-WORKTREE-MODE.md +86 -0
- package/docs/company-context-interface.md +5 -16
- package/docs/copilot-instructions.md +1 -1
- package/package.json +1 -1
- package/scripts/keyword-detector.mjs +168 -20
- package/scripts/lib/hud-cache-wrapper.sh +122 -0
- package/scripts/persistent-mode.cjs +28 -2
- package/scripts/persistent-mode.mjs +28 -2
- package/scripts/plugin-setup.mjs +10 -1
- package/scripts/post-tool-verifier.mjs +153 -3
- package/scripts/pre-tool-enforcer.mjs +54 -6
- package/scripts/session-start.mjs +194 -2
- package/skills/AGENTS.md +22 -91
- package/skills/ai-slop-cleaner/SKILL.md +118 -120
- package/skills/ask/SKILL.md +6 -8
- package/skills/autopilot/SKILL.md +1 -28
- package/skills/autoresearch/SKILL.md +5 -5
- package/skills/cancel/SKILL.md +13 -13
- package/skills/cccg/SKILL.md +1 -0
- package/skills/configure-notifications/SKILL.md +80 -215
- package/skills/debug/SKILL.md +3 -2
- package/skills/deep-dive/SKILL.md +20 -9
- package/skills/deep-interview/SKILL.md +32 -4
- package/skills/deepinit/SKILL.md +1 -0
- package/skills/external-context/SKILL.md +2 -1
- package/skills/hud/SKILL.md +22 -52
- package/skills/learner/SKILL.md +90 -57
- package/skills/mcp-setup/SKILL.md +45 -60
- package/skills/omc-doctor/SKILL.md +1 -1
- package/skills/omc-reference/SKILL.md +6 -6
- package/skills/omc-setup/SKILL.md +30 -74
- package/skills/omc-setup/phases/01-install-claude-md.md +97 -0
- package/skills/omc-setup/phases/02-configure.md +25 -40
- package/skills/omc-setup/phases/03-integrations.md +100 -69
- package/skills/omc-setup/phases/04-welcome.md +102 -44
- package/skills/omc-teams/SKILL.md +63 -26
- package/skills/plan/SKILL.md +11 -9
- package/skills/ralph/SKILL.md +42 -41
- package/skills/ralplan/SKILL.md +3 -10
- package/skills/release/SKILL.md +168 -57
- package/skills/remember/SKILL.md +2 -1
- package/skills/sciomc/SKILL.md +12 -11
- package/skills/self-improve/SKILL.md +4 -4
- package/skills/setup/SKILL.md +1 -0
- package/skills/skill/SKILL.md +21 -20
- package/skills/skillify/SKILL.md +34 -3
- package/skills/team/SKILL.md +62 -44
- package/skills/ultraqa/SKILL.md +1 -2
- package/skills/ultrawork/SKILL.md +28 -21
- package/skills/verify/SKILL.md +2 -1
- package/skills/writer-memory/SKILL.md +2 -1
- package/templates/hooks/keyword-detector.mjs +129 -11
- package/templates/hooks/persistent-mode.mjs +28 -2
- package/templates/hooks/pre-tool-use.mjs +144 -45
- package/templates/hooks/session-start.mjs +25 -1
package/skills/cancel/SKILL.md
CHANGED
|
@@ -39,7 +39,7 @@ Or say: "cancelomc", "stopomc"
|
|
|
39
39
|
## Critical: Deferred Tool Handling
|
|
40
40
|
|
|
41
41
|
The state management tools (`state_clear`, `state_read`, `state_write`, `state_list_active`,
|
|
42
|
-
`state_get_status`) may be registered as **deferred tools** by
|
|
42
|
+
`state_get_status`) may be registered as **deferred tools** by Claude Code. Before calling
|
|
43
43
|
any state tool, you MUST first load all of them via `ToolSearch`:
|
|
44
44
|
|
|
45
45
|
```
|
|
@@ -115,10 +115,10 @@ Active modes are still cancelled in dependency order:
|
|
|
115
115
|
5. Swarm (standalone)
|
|
116
116
|
6. Ultrapilot (standalone)
|
|
117
117
|
7. Pipeline (standalone)
|
|
118
|
-
8. Team (
|
|
118
|
+
8. Team (Claude Code native)
|
|
119
119
|
9. OMC Teams (tmux CLI workers)
|
|
120
120
|
10. Plan Consensus (standalone)
|
|
121
|
-
11. Self-Improve (standalone — clear state, clean orphaned worktrees, preserve iteration_state for resume, set status: "user_stopped" in the resolved `<self-improve-root>/state/agent-settings.json`; new runs use `.
|
|
121
|
+
11. Self-Improve (standalone — clear state, clean orphaned worktrees, preserve iteration_state for resume, set status: "user_stopped" in the resolved `<self-improve-root>/state/agent-settings.json`; new runs use `.omcp/self-improve/topics/<topic-slug>/`, with flat `.omcp/self-improve/` retained only for legacy single-track resumes)
|
|
122
122
|
|
|
123
123
|
## Force Clear All
|
|
124
124
|
|
|
@@ -136,7 +136,7 @@ Steps under the hood:
|
|
|
136
136
|
1. `state_list_active` enumerates `.omcp/state/sessions/{sessionId}/…` to find every known session.
|
|
137
137
|
2. `state_clear` runs once per session to drop that session’s files.
|
|
138
138
|
3. A global `state_clear` without `session_id` removes legacy files under `.omcp/state/*.json`, `.omcp/state/swarm*.db`, and compatibility artifacts (see list).
|
|
139
|
-
4. Team artifacts (`~/.
|
|
139
|
+
4. Team artifacts (`~/.claude/teams/*/`, `~/.claude/tasks/*/`, `.omcp/state/team-state.json`) are best-effort cleared as part of the legacy fallback.
|
|
140
140
|
- Cancel for native team does NOT affect omc-teams state, and vice versa.
|
|
141
141
|
|
|
142
142
|
Every `state_clear` command honors the `session_id` argument, so even force mode still uses the session-aware paths first before deleting legacy files.
|
|
@@ -196,7 +196,7 @@ Use force mode to clear every session plus legacy artifacts via `state_clear`. D
|
|
|
196
196
|
|
|
197
197
|
### 3B. Smart Cancellation (default)
|
|
198
198
|
|
|
199
|
-
#### If Team Active (
|
|
199
|
+
#### If Team Active (Claude Code native)
|
|
200
200
|
|
|
201
201
|
Teams are detected by checking for config files in `${COPILOT_CONFIG_DIR:-~/.copilot}/teams/`:
|
|
202
202
|
|
|
@@ -233,7 +233,7 @@ After graceful pass:
|
|
|
233
233
|
|
|
234
234
|
**TeamDelete + Cleanup:**
|
|
235
235
|
```
|
|
236
|
-
1. Call TeamDelete() — removes ~/.
|
|
236
|
+
1. Call TeamDelete() — removes ~/.claude/teams/{name}/ and ~/.claude/tasks/{name}/
|
|
237
237
|
2. Clear team state: state_clear(mode="team")
|
|
238
238
|
3. Check for linked ralph: state_read(mode="ralph") — if linked_team is true:
|
|
239
239
|
a. Clear ralph state: state_clear(mode="ralph")
|
|
@@ -246,7 +246,7 @@ After graceful pass:
|
|
|
246
246
|
|
|
247
247
|
After TeamDelete, verify no agent processes remain:
|
|
248
248
|
```bash
|
|
249
|
-
node "${
|
|
249
|
+
node "${CLAUDE_PLUGIN_ROOT}/scripts/cleanup-orphans.mjs" --team-name "{team_name}"
|
|
250
250
|
```
|
|
251
251
|
|
|
252
252
|
The orphan scanner:
|
|
@@ -264,7 +264,7 @@ Team "{team_name}" cancelled:
|
|
|
264
264
|
- Unresponsive: K (list names if any)
|
|
265
265
|
- TeamDelete: success/failed
|
|
266
266
|
- Manual cleanup needed: yes/no
|
|
267
|
-
Path: ~/.
|
|
267
|
+
Path: ~/.claude/teams/{name}/ and ~/.claude/tasks/{name}/
|
|
268
268
|
```
|
|
269
269
|
|
|
270
270
|
**Implementation note:** The cancel skill is executed by the LLM, not as a bash script. When you detect an active team:
|
|
@@ -318,7 +318,7 @@ The cancel skill runs as follows:
|
|
|
318
318
|
2. Use `state_list_active` to enumerate known session ids and `state_get_status` to learn the active mode (`autopilot`, `ralph`, `ultrawork`, etc.) for each session.
|
|
319
319
|
3. When operating in default mode, call `state_clear` with that session_id to remove only the session’s files, then run mode-specific cleanup (autopilot → ralph → …) based on the state tool signals.
|
|
320
320
|
4. In force mode, iterate every active session, call `state_clear` per session, then run a global `state_clear` without `session_id` to drop legacy files (`.omcp/state/*.json`, compatibility artifacts) and report success. Swarm remains a shared SQLite/marker mode outside session scoping.
|
|
321
|
-
5. Team artifacts (`~/.
|
|
321
|
+
5. Team artifacts (`~/.claude/teams/*/`, `~/.claude/tasks/*/`, `.omcp/state/team-state.json`) remain best-effort cleanup items invoked during the legacy/global pass.
|
|
322
322
|
6. **Always** clear skill-active state as the final step, regardless of which mode was active or whether `--force` was used:
|
|
323
323
|
```
|
|
324
324
|
state_clear(mode="skill-active", session_id)
|
|
@@ -364,7 +364,7 @@ Mode-specific subsections below describe what extra cleanup each handler perform
|
|
|
364
364
|
- **Safe**: Only clears linked Ultrawork, preserves standalone Ultrawork
|
|
365
365
|
- **Local-only**: Clears state files in `.omcp/state/` directory
|
|
366
366
|
- **Resume-friendly**: Autopilot state is preserved for seamless resume
|
|
367
|
-
- **Team-aware**: Detects native
|
|
367
|
+
- **Team-aware**: Detects native Claude Code teams and performs graceful shutdown
|
|
368
368
|
|
|
369
369
|
## MCP Worker Cleanup
|
|
370
370
|
|
|
@@ -372,7 +372,7 @@ When cancelling modes that may have spawned MCP workers (team bridge daemons), t
|
|
|
372
372
|
|
|
373
373
|
1. **Check for active MCP workers**: Look for heartbeat files at `.omcp/state/team-bridge/{team}/*.heartbeat.json`
|
|
374
374
|
2. **Send shutdown signals**: Write shutdown signal files for each active worker
|
|
375
|
-
3. **Kill tmux sessions**: Run `tmux kill-session -t
|
|
375
|
+
3. **Kill tmux sessions**: Run `tmux kill-session -t omc-team-{team}-{worker}` for each worker
|
|
376
376
|
4. **Clean up heartbeat files**: Remove all heartbeat files for the team
|
|
377
377
|
5. **Clean up shadow registry**: Remove `.omcp/state/team-mcp-workers.json`
|
|
378
378
|
|
|
@@ -382,6 +382,6 @@ When `--force` is used, also clean up:
|
|
|
382
382
|
```bash
|
|
383
383
|
rm -rf .omcp/state/team-bridge/ # Heartbeat files
|
|
384
384
|
rm -f .omcp/state/team-mcp-workers.json # Shadow registry
|
|
385
|
-
# Kill all
|
|
386
|
-
tmux list-sessions -F '#{session_name}' 2>/dev/null | grep '^
|
|
385
|
+
# Kill all omc-team-* tmux sessions
|
|
386
|
+
tmux list-sessions -F '#{session_name}' 2>/dev/null | grep '^omc-team-' | while read s; do tmux kill-session -t "$s" 2>/dev/null; done
|
|
387
387
|
```
|
package/skills/cccg/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: configure-notifications
|
|
3
|
-
description: Configure notification integrations (Telegram, Discord, Slack
|
|
3
|
+
description: Configure notification integrations (Telegram, Discord, Slack) via natural language
|
|
4
4
|
triggers:
|
|
5
5
|
- "configure notifications"
|
|
6
6
|
- "setup notifications"
|
|
@@ -13,9 +13,7 @@ triggers:
|
|
|
13
13
|
- "configure slack"
|
|
14
14
|
- "setup slack"
|
|
15
15
|
- "slack webhook"
|
|
16
|
-
|
|
17
|
-
- "setup teams"
|
|
18
|
-
- "teams webhook"
|
|
16
|
+
level: 2
|
|
19
17
|
---
|
|
20
18
|
|
|
21
19
|
# Configure Notifications
|
|
@@ -28,7 +26,6 @@ Detect which provider the user wants based on their request or argument:
|
|
|
28
26
|
- If the trigger or argument contains "telegram" → follow the **Telegram** section
|
|
29
27
|
- If the trigger or argument contains "discord" → follow the **Discord** section
|
|
30
28
|
- If the trigger or argument contains "slack" → follow the **Slack** section
|
|
31
|
-
- If the trigger or argument contains "teams" → follow the **Microsoft Teams** section
|
|
32
29
|
- If no provider is specified, use AskUserQuestion:
|
|
33
30
|
|
|
34
31
|
**Question:** "Which notification service would you like to configure?"
|
|
@@ -37,7 +34,6 @@ Detect which provider the user wants based on their request or argument:
|
|
|
37
34
|
1. **Telegram** - Bot token + chat ID. Works on mobile and desktop.
|
|
38
35
|
2. **Discord** - Webhook or bot token + channel ID.
|
|
39
36
|
3. **Slack** - Incoming webhook URL.
|
|
40
|
-
4. **Microsoft Teams** - Incoming webhook (Power Automate Workflows).
|
|
41
37
|
|
|
42
38
|
---
|
|
43
39
|
|
|
@@ -143,8 +139,8 @@ Use AskUserQuestion with multiSelect:
|
|
|
143
139
|
**Question:** "Which events should trigger Telegram notifications?"
|
|
144
140
|
|
|
145
141
|
**Options (multiSelect: true):**
|
|
146
|
-
1. **Session end (Recommended)** - When a
|
|
147
|
-
2. **Input needed** - When
|
|
142
|
+
1. **Session end (Recommended)** - When a Claude session finishes
|
|
143
|
+
2. **Input needed** - When Claude is waiting for your response (great for long-running tasks)
|
|
148
144
|
3. **Session start** - When a new session begins
|
|
149
145
|
4. **Session continuing** - When a persistent mode keeps the session alive
|
|
150
146
|
|
|
@@ -243,7 +239,7 @@ Telegram Notifications Configured!
|
|
|
243
239
|
Format: Markdown
|
|
244
240
|
Events: session-end, ask-user-question
|
|
245
241
|
|
|
246
|
-
Config saved to: ~/.copilot/.
|
|
242
|
+
Config saved to: ~/.copilot/.omcp-config.json
|
|
247
243
|
|
|
248
244
|
You can also set these via environment variables:
|
|
249
245
|
OMC_TELEGRAM_BOT_TOKEN=123456789:ABCdefGHI...
|
|
@@ -252,7 +248,6 @@ You can also set these via environment variables:
|
|
|
252
248
|
To reconfigure: /oh-my-copilot:configure-notifications telegram
|
|
253
249
|
To configure Discord: /oh-my-copilot:configure-notifications discord
|
|
254
250
|
To configure Slack: /oh-my-copilot:configure-notifications slack
|
|
255
|
-
To configure Teams: /oh-my-copilot:configure-notifications teams
|
|
256
251
|
```
|
|
257
252
|
|
|
258
253
|
### Environment Variable Alternative
|
|
@@ -367,8 +362,8 @@ Use AskUserQuestion with multiSelect:
|
|
|
367
362
|
**Question:** "Which events should trigger Discord notifications?"
|
|
368
363
|
|
|
369
364
|
**Options (multiSelect: true):**
|
|
370
|
-
1. **Session end (Recommended)** - When a
|
|
371
|
-
2. **Input needed** - When
|
|
365
|
+
1. **Session end (Recommended)** - When a Claude session finishes
|
|
366
|
+
2. **Input needed** - When Claude is waiting for your response (great for long-running tasks)
|
|
372
367
|
3. **Session start** - When a new session begins
|
|
373
368
|
4. **Session continuing** - When a persistent mode keeps the session alive
|
|
374
369
|
|
|
@@ -382,7 +377,7 @@ Use AskUserQuestion:
|
|
|
382
377
|
|
|
383
378
|
**Options:**
|
|
384
379
|
1. **OMC (default)** - Display as "OMC"
|
|
385
|
-
2. **
|
|
380
|
+
2. **Claude Code** - Display as "Claude Code"
|
|
386
381
|
3. **Custom** - Enter a custom name
|
|
387
382
|
|
|
388
383
|
### Step 7: Write Configuration
|
|
@@ -486,7 +481,7 @@ Discord Notifications Configured!
|
|
|
486
481
|
Events: session-end, ask-user-question
|
|
487
482
|
Username: OMC
|
|
488
483
|
|
|
489
|
-
Config saved to: ~/.copilot/.
|
|
484
|
+
Config saved to: ~/.copilot/.omcp-config.json
|
|
490
485
|
|
|
491
486
|
You can also set these via environment variables:
|
|
492
487
|
OMC_DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/...
|
|
@@ -495,7 +490,6 @@ You can also set these via environment variables:
|
|
|
495
490
|
To reconfigure: /oh-my-copilot:configure-notifications discord
|
|
496
491
|
To configure Telegram: /oh-my-copilot:configure-notifications telegram
|
|
497
492
|
To configure Slack: /oh-my-copilot:configure-notifications slack
|
|
498
|
-
To configure Teams: /oh-my-copilot:configure-notifications teams
|
|
499
493
|
```
|
|
500
494
|
|
|
501
495
|
### Environment Variable Alternative
|
|
@@ -616,8 +610,8 @@ Use AskUserQuestion with multiSelect:
|
|
|
616
610
|
**Question:** "Which events should trigger Slack notifications?"
|
|
617
611
|
|
|
618
612
|
**Options (multiSelect: true):**
|
|
619
|
-
1. **Session end (Recommended)** - When a
|
|
620
|
-
2. **Input needed** - When
|
|
613
|
+
1. **Session end (Recommended)** - When a Claude session finishes
|
|
614
|
+
2. **Input needed** - When Claude is waiting for your response (great for long-running tasks)
|
|
621
615
|
3. **Session start** - When a new session begins
|
|
622
616
|
4. **Session continuing** - When a persistent mode keeps the session alive
|
|
623
617
|
|
|
@@ -643,7 +637,7 @@ Use AskUserQuestion:
|
|
|
643
637
|
|
|
644
638
|
**Options:**
|
|
645
639
|
1. **OMC (default)** - Display as "OMC"
|
|
646
|
-
2. **
|
|
640
|
+
2. **Claude Code** - Display as "Claude Code"
|
|
647
641
|
3. **Custom** - Enter a custom name
|
|
648
642
|
|
|
649
643
|
### Step 8: Write Configuration
|
|
@@ -734,7 +728,7 @@ Slack Notifications Configured!
|
|
|
734
728
|
Events: session-end, ask-user-question
|
|
735
729
|
Username: OMC
|
|
736
730
|
|
|
737
|
-
Config saved to: ~/.copilot/.
|
|
731
|
+
Config saved to: ~/.copilot/.omcp-config.json
|
|
738
732
|
|
|
739
733
|
You can also set these via environment variables:
|
|
740
734
|
OMC_SLACK_WEBHOOK_URL=https://hooks.slack.com/services/...
|
|
@@ -743,7 +737,6 @@ You can also set these via environment variables:
|
|
|
743
737
|
To reconfigure: /oh-my-copilot:configure-notifications slack
|
|
744
738
|
To configure Discord: /oh-my-copilot:configure-notifications discord
|
|
745
739
|
To configure Telegram: /oh-my-copilot:configure-notifications telegram
|
|
746
|
-
To configure Teams: /oh-my-copilot:configure-notifications teams
|
|
747
740
|
```
|
|
748
741
|
|
|
749
742
|
### Environment Variable Alternative
|
|
@@ -769,181 +762,6 @@ Env vars are auto-detected by the notification system without needing `.omc-conf
|
|
|
769
762
|
|
|
770
763
|
---
|
|
771
764
|
|
|
772
|
-
## Microsoft Teams Setup
|
|
773
|
-
|
|
774
|
-
Set up Microsoft Teams notifications so OMC can message you when sessions end, need input, or complete background tasks.
|
|
775
|
-
|
|
776
|
-
### How This Skill Works
|
|
777
|
-
|
|
778
|
-
This is an interactive, natural-language configuration skill. Walk the user through setup by asking questions with AskUserQuestion. Write the result to `${COPILOT_CONFIG_DIR:-~/.copilot}/.omc-config.json`.
|
|
779
|
-
|
|
780
|
-
### Step 1: Detect Existing Configuration
|
|
781
|
-
|
|
782
|
-
```bash
|
|
783
|
-
CONFIG_FILE="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/.omc-config.json"
|
|
784
|
-
|
|
785
|
-
if [ -f "$CONFIG_FILE" ]; then
|
|
786
|
-
HAS_TEAMS=$(jq -r '.notifications.teams.enabled // false' "$CONFIG_FILE" 2>/dev/null)
|
|
787
|
-
WEBHOOK_URL=$(jq -r '.notifications.teams.webhookUrl // empty' "$CONFIG_FILE" 2>/dev/null)
|
|
788
|
-
|
|
789
|
-
if [ "$HAS_TEAMS" = "true" ]; then
|
|
790
|
-
echo "EXISTING_CONFIG=true"
|
|
791
|
-
[ -n "$WEBHOOK_URL" ] && echo "WEBHOOK_URL=$WEBHOOK_URL"
|
|
792
|
-
else
|
|
793
|
-
echo "EXISTING_CONFIG=false"
|
|
794
|
-
fi
|
|
795
|
-
else
|
|
796
|
-
echo "NO_CONFIG_FILE"
|
|
797
|
-
fi
|
|
798
|
-
```
|
|
799
|
-
|
|
800
|
-
If existing config is found, show the user what's currently configured and ask if they want to update or reconfigure.
|
|
801
|
-
|
|
802
|
-
### Step 2: Create a Teams Incoming Webhook
|
|
803
|
-
|
|
804
|
-
Guide the user through creating a webhook:
|
|
805
|
-
|
|
806
|
-
```
|
|
807
|
-
To set up Teams notifications, you need a Teams incoming webhook URL.
|
|
808
|
-
Microsoft is migrating from O365 Connectors to Power Automate Workflows.
|
|
809
|
-
|
|
810
|
-
CREATE A WEBHOOK (Power Automate Workflows — recommended):
|
|
811
|
-
1. In Teams, go to the channel where you want notifications
|
|
812
|
-
2. Click the "+" tab > "Workflows"
|
|
813
|
-
3. Search for "Post to a channel when a webhook request is received"
|
|
814
|
-
4. Name your flow (e.g., "OMC Notifier")
|
|
815
|
-
5. Select the team and channel
|
|
816
|
-
6. Copy the webhook URL
|
|
817
|
-
|
|
818
|
-
LEGACY METHOD (O365 Connectors — being deprecated):
|
|
819
|
-
1. In Teams, right-click the channel > "Connectors"
|
|
820
|
-
2. Find "Incoming Webhook" and click "Configure"
|
|
821
|
-
3. Name your webhook (e.g., "OMC Notifier")
|
|
822
|
-
4. Copy the webhook URL
|
|
823
|
-
```
|
|
824
|
-
|
|
825
|
-
### Step 3: Collect Webhook URL
|
|
826
|
-
|
|
827
|
-
Use AskUserQuestion:
|
|
828
|
-
|
|
829
|
-
**Question:** "Paste your Teams webhook URL"
|
|
830
|
-
|
|
831
|
-
The user will type their webhook URL in the "Other" field.
|
|
832
|
-
|
|
833
|
-
**Validate** the URL:
|
|
834
|
-
- Must be HTTPS
|
|
835
|
-
- Should match one of: `*.logic.azure.com`, `*.webhook.office.com`, `outlook.office.com`, `outlook.office365.com`
|
|
836
|
-
- If invalid, explain the format and ask again
|
|
837
|
-
|
|
838
|
-
### Step 4: Configure Events
|
|
839
|
-
|
|
840
|
-
Use AskUserQuestion with multiSelect:
|
|
841
|
-
|
|
842
|
-
**Question:** "Which events should trigger Teams notifications?"
|
|
843
|
-
|
|
844
|
-
**Options (multiSelect: true):**
|
|
845
|
-
1. **Session end (Recommended)** - When a Copilot session finishes
|
|
846
|
-
2. **Input needed** - When Copilot is waiting for your response (great for long-running tasks)
|
|
847
|
-
3. **Session start** - When a new session begins
|
|
848
|
-
4. **Session continuing** - When a persistent mode keeps the session alive
|
|
849
|
-
|
|
850
|
-
Default selection: session-end + ask-user-question.
|
|
851
|
-
|
|
852
|
-
### Step 5: Write Configuration
|
|
853
|
-
|
|
854
|
-
Read the existing config, merge the new Teams settings, and write back:
|
|
855
|
-
|
|
856
|
-
```bash
|
|
857
|
-
CONFIG_FILE="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/.omc-config.json"
|
|
858
|
-
mkdir -p "$(dirname "$CONFIG_FILE")"
|
|
859
|
-
|
|
860
|
-
if [ -f "$CONFIG_FILE" ]; then
|
|
861
|
-
EXISTING=$(cat "$CONFIG_FILE")
|
|
862
|
-
else
|
|
863
|
-
EXISTING='{}'
|
|
864
|
-
fi
|
|
865
|
-
|
|
866
|
-
# WEBHOOK_URL is collected from user
|
|
867
|
-
echo "$EXISTING" | jq \
|
|
868
|
-
--arg url "$WEBHOOK_URL" \
|
|
869
|
-
'.notifications = (.notifications // {enabled: true}) |
|
|
870
|
-
.notifications.enabled = true |
|
|
871
|
-
.notifications.teams = {
|
|
872
|
-
enabled: true,
|
|
873
|
-
webhookUrl: $url
|
|
874
|
-
}' > "$CONFIG_FILE"
|
|
875
|
-
```
|
|
876
|
-
|
|
877
|
-
#### Add event-specific config if user didn't select all events:
|
|
878
|
-
|
|
879
|
-
For each event NOT selected, disable it:
|
|
880
|
-
|
|
881
|
-
```bash
|
|
882
|
-
# Example: disable session-start if not selected
|
|
883
|
-
echo "$(cat "$CONFIG_FILE")" | jq \
|
|
884
|
-
'.notifications.events = (.notifications.events // {}) |
|
|
885
|
-
.notifications.events["session-start"] = {enabled: false}' > "$CONFIG_FILE"
|
|
886
|
-
```
|
|
887
|
-
|
|
888
|
-
### Step 6: Test the Configuration
|
|
889
|
-
|
|
890
|
-
After writing config, offer to send a test notification:
|
|
891
|
-
|
|
892
|
-
Use AskUserQuestion:
|
|
893
|
-
|
|
894
|
-
**Question:** "Send a test notification to verify the setup?"
|
|
895
|
-
|
|
896
|
-
**Options:**
|
|
897
|
-
1. **Yes, test now (Recommended)** - Send a test Adaptive Card to your Teams channel
|
|
898
|
-
2. **No, I'll test later** - Skip testing
|
|
899
|
-
|
|
900
|
-
#### If testing:
|
|
901
|
-
|
|
902
|
-
```bash
|
|
903
|
-
curl -s -o /dev/null -w "%{http_code}" \
|
|
904
|
-
-H "Content-Type: application/json" \
|
|
905
|
-
-d '{"type":"message","attachments":[{"contentType":"application/vnd.microsoft.card.adaptive","contentUrl":null,"content":{"$schema":"http://adaptivecards.io/schemas/adaptive-card.json","type":"AdaptiveCard","version":"1.4","body":[{"type":"TextBlock","size":"Medium","weight":"Bolder","text":"OMC Test Notification"},{"type":"TextBlock","text":"Teams notifications are configured!","wrap":true}]}}]}' \
|
|
906
|
-
"$WEBHOOK_URL"
|
|
907
|
-
```
|
|
908
|
-
|
|
909
|
-
Report success or failure. Common issues:
|
|
910
|
-
- **400 Bad Request**: Webhook URL is invalid or malformed Adaptive Card
|
|
911
|
-
- **404 Not Found**: Webhook URL is incorrect or expired
|
|
912
|
-
- **Network error**: Check connectivity
|
|
913
|
-
|
|
914
|
-
### Step 7: Confirm
|
|
915
|
-
|
|
916
|
-
Display the final configuration summary:
|
|
917
|
-
|
|
918
|
-
```
|
|
919
|
-
Microsoft Teams Notifications Configured!
|
|
920
|
-
|
|
921
|
-
Webhook: https://...logic.azure.com/...
|
|
922
|
-
Events: session-end, ask-user-question
|
|
923
|
-
|
|
924
|
-
Config saved to: ~/.copilot/.omc-config.json
|
|
925
|
-
|
|
926
|
-
You can also set these via environment variables:
|
|
927
|
-
OMC_MICROSOFT_TEAMS_WEBHOOK_URL=https://...
|
|
928
|
-
|
|
929
|
-
To reconfigure: /oh-my-copilot:configure-notifications teams
|
|
930
|
-
To configure Discord: /oh-my-copilot:configure-notifications discord
|
|
931
|
-
To configure Telegram: /oh-my-copilot:configure-notifications telegram
|
|
932
|
-
To configure Slack: /oh-my-copilot:configure-notifications slack
|
|
933
|
-
```
|
|
934
|
-
|
|
935
|
-
### Environment Variable Alternative
|
|
936
|
-
|
|
937
|
-
Users can skip this wizard entirely by setting env vars in their shell profile:
|
|
938
|
-
|
|
939
|
-
```bash
|
|
940
|
-
export OMC_MICROSOFT_TEAMS_WEBHOOK_URL="https://prod-xx.westus.logic.azure.com/workflows/..."
|
|
941
|
-
```
|
|
942
|
-
|
|
943
|
-
Env vars are auto-detected by the notification system without needing `.omc-config.json`.
|
|
944
|
-
|
|
945
|
-
---
|
|
946
|
-
|
|
947
765
|
## Platform Activation Flags
|
|
948
766
|
|
|
949
767
|
All notification platforms require activation via CLI flags per session:
|
|
@@ -951,14 +769,15 @@ All notification platforms require activation via CLI flags per session:
|
|
|
951
769
|
- `omc --telegram` — Activates Telegram notifications (sets `OMC_TELEGRAM=1`)
|
|
952
770
|
- `omc --discord` — Activates Discord notifications (sets `OMC_DISCORD=1`)
|
|
953
771
|
- `omc --slack` — Activates Slack notifications (sets `OMC_SLACK=1`)
|
|
954
|
-
- `omc --teams` — Activates Teams notifications (sets `OMC_MICROSOFT_TEAMS=1`)
|
|
955
772
|
- `omc --webhook` — Activates webhook notifications (sets `OMC_WEBHOOK=1`)
|
|
773
|
+
- `omc --openclaw` — Activates OpenClaw gateway integration (sets `OMC_OPENCLAW=1`)
|
|
774
|
+
|
|
956
775
|
Without these flags, configured platforms remain dormant. This prevents unwanted notifications during development while keeping configuration persistent.
|
|
957
776
|
|
|
958
777
|
**Examples:**
|
|
959
778
|
- `omc --telegram --discord` — Telegram + Discord active
|
|
960
779
|
- `omc --telegram --slack --webhook` — Telegram + Slack + Webhook active
|
|
961
|
-
- `omc --telegram --
|
|
780
|
+
- `omc --telegram --openclaw` — Telegram + OpenClaw active
|
|
962
781
|
- `omc` — No notifications sent (all platforms require explicit activation)
|
|
963
782
|
|
|
964
783
|
---
|
|
@@ -980,7 +799,7 @@ Hook event templates let you customize the notification messages sent to each pl
|
|
|
980
799
|
You can set different messages for Discord vs Telegram vs Slack, and control which
|
|
981
800
|
events fire on which platform.
|
|
982
801
|
|
|
983
|
-
Config file:
|
|
802
|
+
Config file: ~/.copilot/omcp_config.hook.json
|
|
984
803
|
```
|
|
985
804
|
|
|
986
805
|
### Step 2: Choose Event to Configure
|
|
@@ -990,9 +809,9 @@ Use AskUserQuestion:
|
|
|
990
809
|
**Question:** "Which event would you like to configure templates for?"
|
|
991
810
|
|
|
992
811
|
**Options:**
|
|
993
|
-
1. **session-end** - When a
|
|
994
|
-
2. **ask-user-question** - When
|
|
995
|
-
3. **session-idle** - When
|
|
812
|
+
1. **session-end** - When a Claude session finishes (most common)
|
|
813
|
+
2. **ask-user-question** - When Claude is waiting for input
|
|
814
|
+
3. **session-idle** - When Claude finishes and waits for input
|
|
996
815
|
4. **session-start** - When a new session begins
|
|
997
816
|
|
|
998
817
|
### Step 3: Show Available Variables
|
|
@@ -1114,13 +933,56 @@ Offer to send a test notification with the new template.
|
|
|
1114
933
|
|
|
1115
934
|
---
|
|
1116
935
|
|
|
1117
|
-
##
|
|
936
|
+
## Related
|
|
937
|
+
|
|
938
|
+
- `/oh-my-copilot:configure-openclaw` — Configure OpenClaw gateway integration
|
|
939
|
+
|
|
940
|
+
---
|
|
941
|
+
|
|
942
|
+
## Custom Integration (OpenClaw, n8n, CLI, etc.)
|
|
1118
943
|
|
|
1119
944
|
Configure custom webhooks and CLI commands for services beyond the native Discord/Telegram/Slack integrations.
|
|
1120
945
|
|
|
1121
946
|
### Routing
|
|
1122
947
|
|
|
1123
|
-
If the user says "custom integration", "n8n", "webhook", "cli command", or similar → follow this section.
|
|
948
|
+
If the user says "custom integration", "openclaw", "n8n", "webhook", "cli command", or similar → follow this section.
|
|
949
|
+
|
|
950
|
+
### Migration from OpenClaw
|
|
951
|
+
|
|
952
|
+
If `~/.copilot/omcp_config.openclaw.json` exists, detect and offer migration:
|
|
953
|
+
|
|
954
|
+
**Step 1: Detect Legacy Config**
|
|
955
|
+
```bash
|
|
956
|
+
LEGACY_CONFIG="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/omc_config.openclaw.json"
|
|
957
|
+
if [ -f "$LEGACY_CONFIG" ]; then
|
|
958
|
+
echo "LEGACY_FOUND=true"
|
|
959
|
+
# Check if already migrated
|
|
960
|
+
if jq -e '.customIntegrations.integrations[] | select(.preset == "openclaw")' "$CONFIG_FILE" >/dev/null 2>&1; then
|
|
961
|
+
echo "ALREADY_MIGRATED=true"
|
|
962
|
+
else
|
|
963
|
+
echo "ALREADY_MIGRATED=false"
|
|
964
|
+
fi
|
|
965
|
+
else
|
|
966
|
+
echo "LEGACY_FOUND=false"
|
|
967
|
+
fi
|
|
968
|
+
```
|
|
969
|
+
|
|
970
|
+
**Step 2: Offer Migration**
|
|
971
|
+
If legacy found and not migrated:
|
|
972
|
+
|
|
973
|
+
**Question:** "Existing OpenClaw configuration detected. Would you like to migrate it to the new format?"
|
|
974
|
+
|
|
975
|
+
**Options:**
|
|
976
|
+
1. **Yes, migrate now** - Convert legacy config to custom integration
|
|
977
|
+
2. **No, configure fresh** - Skip migration and start new
|
|
978
|
+
3. **Show me the legacy config first** - Display current OpenClaw settings
|
|
979
|
+
|
|
980
|
+
If migrate:
|
|
981
|
+
- Read `omc_config.openclaw.json`
|
|
982
|
+
- Transform to custom integration format
|
|
983
|
+
- Save to `.omc-config.json`
|
|
984
|
+
- Backup legacy to `omc_config.openclaw.json.bak`
|
|
985
|
+
- Show success message
|
|
1124
986
|
|
|
1125
987
|
### Custom Integration Wizard
|
|
1126
988
|
|
|
@@ -1129,12 +991,13 @@ If the user says "custom integration", "n8n", "webhook", "cli command", or simil
|
|
|
1129
991
|
**Question:** "Which type of custom integration would you like to configure?"
|
|
1130
992
|
|
|
1131
993
|
**Options:**
|
|
1132
|
-
1. **
|
|
1133
|
-
2. **
|
|
1134
|
-
3. **
|
|
1135
|
-
4. **Generic
|
|
994
|
+
1. **OpenClaw Gateway** - Wake external automations and AI agents
|
|
995
|
+
2. **n8n Webhook** - Trigger n8n workflows
|
|
996
|
+
3. **ClawdBot** - Send notifications to ClawdBot
|
|
997
|
+
4. **Generic Webhook** - Custom HTTPS webhook
|
|
998
|
+
5. **Generic CLI Command** - Execute shell command on events
|
|
1136
999
|
|
|
1137
|
-
### n8n/ClawdBot Preset Flow
|
|
1000
|
+
### OpenClaw/n8n/ClawdBot Preset Flow
|
|
1138
1001
|
|
|
1139
1002
|
**Step 2: Gateway URL**
|
|
1140
1003
|
|
|
@@ -1169,6 +1032,7 @@ Use AskUserQuestion with multiSelect:
|
|
|
1169
1032
|
- session-idle
|
|
1170
1033
|
- ask-user-question
|
|
1171
1034
|
|
|
1035
|
+
Default for OpenClaw: session-start, session-end, stop
|
|
1172
1036
|
Default for n8n: session-end, ask-user-question
|
|
1173
1037
|
|
|
1174
1038
|
**Step 5: Test**
|
|
@@ -1202,20 +1066,21 @@ Merge into `.omc-config.json`:
|
|
|
1202
1066
|
"enabled": true,
|
|
1203
1067
|
"integrations": [
|
|
1204
1068
|
{
|
|
1205
|
-
"id": "my-
|
|
1069
|
+
"id": "my-openclaw",
|
|
1206
1070
|
"type": "webhook",
|
|
1207
|
-
"preset": "
|
|
1071
|
+
"preset": "openclaw",
|
|
1208
1072
|
"enabled": true,
|
|
1209
1073
|
"config": {
|
|
1210
|
-
"url": "https://my-
|
|
1074
|
+
"url": "https://my-gateway.example.com/wake",
|
|
1211
1075
|
"method": "POST",
|
|
1212
1076
|
"headers": {
|
|
1213
|
-
"Content-Type": "application/json"
|
|
1077
|
+
"Content-Type": "application/json",
|
|
1078
|
+
"Authorization": "Bearer ..."
|
|
1214
1079
|
},
|
|
1215
|
-
"bodyTemplate": "{\\"event\\":\\"{{event}}\\",\\"
|
|
1080
|
+
"bodyTemplate": "{\\"event\\":\\"{{event}}\\",\\"instruction\\":\\"Session {{sessionId}} {{event}}\\",\\"timestamp\\":\\"{{timestamp}}\\"}",
|
|
1216
1081
|
"timeout": 10000
|
|
1217
1082
|
},
|
|
1218
|
-
"events": ["session-
|
|
1083
|
+
"events": ["session-start", "session-end"]
|
|
1219
1084
|
}
|
|
1220
1085
|
]
|
|
1221
1086
|
}
|
|
@@ -1332,7 +1197,7 @@ All custom integrations support these template variables:
|
|
|
1332
1197
|
| `{{duration}}` | Human-readable duration | `45s` |
|
|
1333
1198
|
| `{{durationMs}}` | Duration in milliseconds | `45000` |
|
|
1334
1199
|
| `{{reason}}` | Stop/end reason | `completed` |
|
|
1335
|
-
| `{{tmuxSession}}` | tmux session name | `
|
|
1200
|
+
| `{{tmuxSession}}` | tmux session name | `claude:my-project` |
|
|
1336
1201
|
|
|
1337
1202
|
Session-end only:
|
|
1338
1203
|
- `{{agentsSpawned}}`, `{{agentsCompleted}}`, `{{modesUsed}}`, `{{contextSummary}}`
|
package/skills/debug/SKILL.md
CHANGED
|
@@ -5,13 +5,13 @@ description: Diagnose the current OMC session or repo state using logs, traces,
|
|
|
5
5
|
|
|
6
6
|
# Debug
|
|
7
7
|
|
|
8
|
-
Use this skill when the user wants help diagnosing a current OMC/
|
|
8
|
+
Use this skill when the user wants help diagnosing a current OMC/Claude-Code session problem, workflow breakage, or confusing runtime behavior.
|
|
9
9
|
|
|
10
10
|
## Goal
|
|
11
11
|
Find the real failure signal quickly and explain the next corrective step.
|
|
12
12
|
|
|
13
13
|
## Workflow
|
|
14
|
-
1. Read the user
|
|
14
|
+
1. Read the user’s issue description carefully.
|
|
15
15
|
2. Inspect the most relevant local evidence first:
|
|
16
16
|
- trace tools
|
|
17
17
|
- state tools
|
|
@@ -32,3 +32,4 @@ Find the real failure signal quickly and explain the next corrective step.
|
|
|
32
32
|
- Root-cause hypothesis
|
|
33
33
|
- Evidence for that hypothesis
|
|
34
34
|
- Smallest next action
|
|
35
|
+
|