oh-my-opencode 4.19.0 → 4.19.2
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/.agents/command/omomomo.md +1 -1
- package/.agents/skills/omomomo/SKILL.md +1 -1
- package/.opencode/command/omomomo.md +1 -1
- package/README.ja.md +6 -6
- package/README.ko.md +6 -6
- package/README.md +6 -6
- package/README.ru.md +6 -6
- package/README.zh-cn.md +6 -6
- package/dist/agents/atlas/agent.d.ts +5 -3
- package/dist/agents/explore.d.ts +4 -2
- package/dist/agents/gpt-prompt-identity.d.ts +3 -0
- package/dist/agents/hephaestus/agent.d.ts +4 -2
- package/dist/agents/librarian.d.ts +4 -2
- package/dist/agents/metis.d.ts +4 -2
- package/dist/agents/momus.d.ts +3 -2
- package/dist/agents/multimodal-looker.d.ts +4 -2
- package/dist/agents/oracle.d.ts +4 -2
- package/dist/agents/sisyphus/claude-opus-5.d.ts +33 -0
- package/dist/agents/sisyphus/gpt-5-5.d.ts +1 -1
- package/dist/agents/sisyphus/gpt-task-system-guide.d.ts +1 -0
- package/dist/agents/sisyphus/index.d.ts +2 -0
- package/dist/agents/sisyphus-agent-factory.d.ts +5 -2
- package/dist/agents/sisyphus-junior/agent.d.ts +4 -1
- package/dist/agents/sisyphus-junior/gpt-5-5.d.ts +2 -2
- package/dist/agents/types.d.ts +2 -2
- package/dist/cli/index.js +23577 -19269
- package/dist/cli-node/index.js +23577 -19269
- package/dist/config/schema/agent-names.d.ts +26 -26
- package/dist/config/schema/agent-overrides.d.ts +400 -400
- package/dist/config/schema/browser-automation.d.ts +2 -2
- package/dist/config/schema/categories.d.ts +36 -36
- package/dist/config/schema/codegraph.d.ts +2 -0
- package/dist/config/schema/commands.d.ts +2 -2
- package/dist/config/schema/dynamic-context-pruning.d.ts +1 -1
- package/dist/config/schema/experimental.d.ts +1 -1
- package/dist/config/schema/fallback-models.d.ts +25 -25
- package/dist/config/schema/hooks.d.ts +43 -43
- package/dist/config/schema/internal/permission.d.ts +9 -9
- package/dist/config/schema/keyword-detector.d.ts +6 -6
- package/dist/config/schema/oh-my-opencode-config.d.ts +404 -402
- package/dist/config/schema/tmux.d.ts +6 -6
- package/dist/create-hooks.d.ts +35 -35
- package/dist/features/background-agent/spawner/tmux-callback-invoker.d.ts +11 -0
- package/dist/features/builtin-commands/templates/start-work.d.ts +1 -1
- package/dist/features/claude-tasks/types.d.ts +4 -4
- package/dist/features/team-mode/team-runtime/shutdown-helpers.d.ts +1 -1
- package/dist/features/team-mode/team-runtime/shutdown-test-fixtures.d.ts +4 -4
- package/dist/features/team-mode/tools/lifecycle-test-fixture.d.ts +42 -42
- package/dist/features/tmux-subagent/environment-eligibility.d.ts +2 -0
- package/dist/features/tmux-subagent/index.d.ts +1 -0
- package/dist/features/tmux-subagent/tracked-session-state.d.ts +1 -0
- package/dist/features/tui-sidebar/snapshot-schema.d.ts +6 -6
- package/dist/help/schema/acp.d.ts +3 -3
- package/dist/help/schema/doctor.d.ts +4 -4
- package/dist/help/schema/status.d.ts +3 -3
- package/dist/hooks/codegraph-bootstrap/hook.d.ts +3 -2
- package/dist/hooks/goal/types.d.ts +5 -5
- package/dist/hooks/non-interactive-env/constants.d.ts +4 -1
- package/dist/hooks/sisyphus-junior-notepad/constants.d.ts +1 -1
- package/dist/hooks/start-work/notepad-scaffold.d.ts +10 -0
- package/dist/hooks/start-work/parse-user-request.d.ts +2 -0
- package/dist/hooks/start-work/worktree-block.d.ts +5 -0
- package/dist/index.js +27370 -21301
- package/dist/mcp/types.d.ts +3 -3
- package/dist/oh-my-opencode.schema.json +11 -0
- package/dist/plugin/chat-message/loop-commands.d.ts +1 -0
- package/dist/plugin/command-execute-before.d.ts +3 -3
- package/dist/plugin/hooks/create-core-hooks.d.ts +25 -25
- package/dist/shared/omo-process-sweep.d.ts +18 -0
- package/dist/shared/tmux/tmux-utils/environment.d.ts +1 -1
- package/dist/shared/tmux/tmux-utils.d.ts +1 -1
- package/dist/shared/typescript-native-source-parser.d.ts +7 -0
- package/dist/skills/coding-agent-sessions/SKILL.md +5 -2
- package/dist/skills/coding-agent-sessions/references/all-platforms.md +3 -1
- package/dist/skills/coding-agent-sessions/references/senpi.md +15 -5
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +46 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +19 -10
- package/dist/skills/debugging/SKILL.md +2 -1
- package/dist/skills/debugging/references/methodology/03-flaky-triage.md +47 -0
- package/dist/skills/programming/SKILL.md +11 -1
- package/dist/skills/programming/references/logging.md +6 -1
- package/dist/skills/programming/scripts/typescript/check-no-excuse-rules.test.ts +87 -0
- package/dist/skills/programming/scripts/typescript/check-no-excuse-rules.ts +75 -11
- package/dist/skills/start-work/SKILL.md +12 -2
- package/dist/skills/ulw-plan/SKILL.md +21 -2
- package/dist/skills/ulw-plan/references/full-workflow.md +12 -1
- package/dist/skills/ulw-plan/references/intent-clear.md +1 -1
- package/dist/testing/create-plugin-module.d.ts +1 -0
- package/dist/tools/task/types.d.ts +10 -10
- package/dist/tui.js +23442 -19182
- package/package.json +14 -14
- package/packages/git-bash-mcp/dist/cli.js +54 -8
- package/packages/lsp-core/src/lsp/client-diagnostics-freshness.integration.test.ts +62 -2
- package/packages/lsp-core/src/lsp/client.ts +14 -1
- package/packages/lsp-core/src/lsp/fixtures/diagnostics-freshness-contract-probe.ts +2 -2
- package/packages/lsp-core/src/mcp.ts +9 -0
- package/packages/lsp-daemon/dist/cli.js +319 -51
- package/packages/lsp-daemon/dist/client.js +136 -48
- package/packages/lsp-daemon/dist/daemon-client.d.ts +0 -10
- package/packages/lsp-daemon/dist/daemon-client.js +4 -34
- package/packages/lsp-daemon/dist/daemon-failure-result.d.ts +3 -0
- package/packages/lsp-daemon/dist/daemon-failure-result.js +38 -0
- package/packages/lsp-daemon/dist/daemon-request-error.d.ts +14 -0
- package/packages/lsp-daemon/dist/daemon-request-error.js +26 -0
- package/packages/lsp-daemon/dist/daemon-server.js +5 -1
- package/packages/lsp-daemon/dist/index.js +137 -48
- package/packages/lsp-daemon/dist/proxy.d.ts +2 -0
- package/packages/lsp-daemon/dist/proxy.js +1 -0
- package/packages/lsp-daemon/dist/version-reap.d.ts +26 -0
- package/packages/lsp-daemon/dist/version-reap.js +182 -0
- package/packages/lsp-tools-mcp/dist/cli.js +61 -10
- package/packages/lsp-tools-mcp/dist/lsp/manager.js +6 -1
- package/packages/lsp-tools-mcp/dist/mcp.js +61 -10
- package/packages/lsp-tools-mcp/dist/tools.js +6 -1
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +72 -12
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/src/setup.ts +22 -2
- package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +779 -385
- package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +302 -173
- package/packages/omo-codex/plugin/components/codegraph/package.json +2 -2
- package/packages/omo-codex/plugin/components/codegraph/src/hook-types.ts +3 -1
- package/packages/omo-codex/plugin/components/codegraph/src/hook.ts +23 -42
- package/packages/omo-codex/plugin/components/codegraph/src/mcp-bridge.ts +98 -32
- package/packages/omo-codex/plugin/components/codegraph/src/mcp-unavailable.ts +5 -0
- package/packages/omo-codex/plugin/components/codegraph/src/serve.ts +17 -9
- package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker.ts +18 -25
- package/packages/omo-codex/plugin/components/codegraph/src/sweep-cli.ts +1 -0
- package/packages/omo-codex/plugin/components/codegraph/test/hook-exclusion.test.ts +5 -0
- package/packages/omo-codex/plugin/components/codegraph/test/hook-store-upgrade.test.ts +176 -0
- package/packages/omo-codex/plugin/components/codegraph/test/hook.test.ts +6 -1
- package/packages/omo-codex/plugin/components/codegraph/test/mcp-bridge-fixtures.ts +31 -2
- package/packages/omo-codex/plugin/components/codegraph/test/package-runtime.test.ts +1 -1
- package/packages/omo-codex/plugin/components/codegraph/test/provisioned-node-guard.test.ts +6 -0
- package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge-lifecycle.test.ts +65 -1
- package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge.test.ts +3 -7
- package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-facade.test.ts +2 -1
- package/packages/omo-codex/plugin/components/codegraph/test/serve-provision.test.ts +57 -3
- package/packages/omo-codex/plugin/components/codegraph/test/serve-unavailable.test.ts +42 -0
- package/packages/omo-codex/plugin/components/codegraph/test/serve.test.ts +122 -10
- package/packages/omo-codex/plugin/components/codegraph/test/session-start-node-support.test.ts +2 -2
- package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-flow.test.ts +101 -64
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
- package/packages/omo-codex/plugin/components/lsp/dist/cli.js +80 -40
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/dist/cli.js +11 -0
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/src/post-compact-budget.ts +11 -0
- package/packages/omo-codex/plugin/components/rules/test/post-compact-budget.test.ts +60 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/directive.md +1 -1
- package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-clone-fidelity-reviewer.toml +2 -2
- package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-code-reviewer.toml +2 -2
- package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-gate-reviewer.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-high.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-medium.toml +2 -2
- package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/directive.md +12 -7
- package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/skills/ultrawork/SKILL.md +12 -7
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +21 -2
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +12 -1
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-clear.md +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/src/codex-hook.ts +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook-trigger-policy.test.ts +42 -0
- package/packages/omo-codex/plugin/components/ulw-loop/README.md +6 -4
- package/packages/omo-codex/plugin/components/ulw-loop/directive.md +12 -7
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-continuation.d.ts +21 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-continuation.js +64 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.js +15 -2
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-arg-parser.js +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-commands.js +2 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.d.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.js +3 -3
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-steering.d.ts +3 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-steering.js +85 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-subcommands.d.ts +0 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-subcommands.js +13 -33
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +998 -593
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.js +1 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/constants.d.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/constants.js +2 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/domain-types.d.ts +6 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/goal-status.d.ts +1 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/goal-status.js +3 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-crud.d.ts +1 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-crud.js +4 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.d.ts +1 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.js +10 -2
- package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-verdicts.js +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-batch.d.ts +15 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-batch.js +84 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-mutations.d.ts +5 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-mutations.js +81 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/steering.js +7 -59
- package/packages/omo-codex/plugin/components/ulw-loop/dist/stop-resume-hook.js +12 -4
- package/packages/omo-codex/plugin/components/ulw-loop/dist/validation-batch.d.ts +9 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/validation-batch.js +122 -0
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +2 -1
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +8 -6
- package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-continuation.ts +84 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint.ts +13 -2
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli-arg-parser.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli-commands.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli-output.ts +3 -3
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli-steering.ts +49 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli-subcommands.ts +13 -45
- package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-instruction.ts +1 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/constants.ts +2 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/domain-types.ts +7 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/goal-status.ts +4 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/plan-crud.ts +4 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/plan-io.ts +20 -2
- package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-verdicts.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/steering-batch.ts +125 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/steering-mutations.ts +59 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/steering.ts +6 -58
- package/packages/omo-codex/plugin/components/ulw-loop/src/stop-resume-hook.ts +12 -4
- package/packages/omo-codex/plugin/components/ulw-loop/src/validation-batch.ts +122 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-continuation.test.ts +76 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-checkpoint-continuation.test.ts +111 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-steering-batch.test.ts +67 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-validation-batch.test.ts +57 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/paths.test.ts +1 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/steering-batch.test.ts +152 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/stop-resume-hook.test.ts +29 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/validation-batch-checkpoint.test.ts +147 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/validation-batch.test.ts +73 -0
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +2 -2
- package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +2 -2
- package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +2 -2
- package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/package-lock.json +41 -41
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/shared/test/config-loader.test.ts +44 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +5 -2
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/all-platforms.md +3 -1
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/senpi.md +15 -5
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +46 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +19 -10
- package/packages/omo-codex/plugin/skills/debugging/SKILL.md +2 -1
- package/packages/omo-codex/plugin/skills/debugging/references/methodology/03-flaky-triage.md +47 -0
- package/packages/omo-codex/plugin/skills/programming/SKILL.md +11 -1
- package/packages/omo-codex/plugin/skills/programming/references/logging.md +6 -1
- package/packages/omo-codex/plugin/skills/programming/scripts/typescript/check-no-excuse-rules.ts +75 -11
- package/packages/omo-codex/plugin/skills/start-work/SKILL.md +12 -2
- package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +12 -7
- package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +2 -1
- package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +8 -6
- package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +21 -2
- package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +12 -1
- package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-clear.md +1 -1
- package/packages/omo-codex/plugin/test/aggregate-agents.test.mjs +9 -9
- package/packages/omo-codex/plugin/test/aggregate-hooks.test.mjs +26 -0
- package/packages/omo-codex/plugin/test/bootstrap-setup.test.mjs +41 -0
- package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +22 -0
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +49 -5
- package/packages/omo-codex/scripts/install-marketplace-cache.test.mjs +4 -1
- package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +5 -2
- package/packages/shared-skills/skills/coding-agent-sessions/references/all-platforms.md +3 -1
- package/packages/shared-skills/skills/coding-agent-sessions/references/senpi.md +15 -5
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +46 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +19 -10
- package/packages/shared-skills/skills/debugging/SKILL.md +2 -1
- package/packages/shared-skills/skills/debugging/references/methodology/03-flaky-triage.md +47 -0
- package/packages/shared-skills/skills/programming/SKILL.md +11 -1
- package/packages/shared-skills/skills/programming/references/logging.md +6 -1
- package/packages/shared-skills/skills/programming/scripts/typescript/check-no-excuse-rules.test.ts +87 -0
- package/packages/shared-skills/skills/programming/scripts/typescript/check-no-excuse-rules.ts +75 -11
- package/packages/shared-skills/skills/start-work/SKILL.md +12 -2
- package/packages/shared-skills/skills/ulw-plan/SKILL.md +21 -2
- package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +12 -1
- package/packages/shared-skills/skills/ulw-plan/references/intent-clear.md +1 -1
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import type { TmuxConfig, TmuxIsolation, TmuxLayout } from "@oh-my-opencode/tmux-core";
|
|
3
3
|
export declare const TmuxLayoutSchema: z.ZodEnum<{
|
|
4
|
+
"even-horizontal": "even-horizontal";
|
|
5
|
+
"even-vertical": "even-vertical";
|
|
4
6
|
"main-horizontal": "main-horizontal";
|
|
5
7
|
"main-vertical": "main-vertical";
|
|
6
8
|
tiled: "tiled";
|
|
7
|
-
"even-horizontal": "even-horizontal";
|
|
8
|
-
"even-vertical": "even-vertical";
|
|
9
9
|
}>;
|
|
10
10
|
export declare const TmuxIsolationSchema: z.ZodEnum<{
|
|
11
|
+
inline: "inline";
|
|
11
12
|
session: "session";
|
|
12
13
|
window: "window";
|
|
13
|
-
inline: "inline";
|
|
14
14
|
}>;
|
|
15
15
|
export declare const TmuxConfigSchema: z.ZodObject<{
|
|
16
16
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
17
17
|
layout: z.ZodDefault<z.ZodEnum<{
|
|
18
|
+
"even-horizontal": "even-horizontal";
|
|
19
|
+
"even-vertical": "even-vertical";
|
|
18
20
|
"main-horizontal": "main-horizontal";
|
|
19
21
|
"main-vertical": "main-vertical";
|
|
20
22
|
tiled: "tiled";
|
|
21
|
-
"even-horizontal": "even-horizontal";
|
|
22
|
-
"even-vertical": "even-vertical";
|
|
23
23
|
}>>;
|
|
24
24
|
main_pane_size: z.ZodDefault<z.ZodNumber>;
|
|
25
25
|
main_pane_min_width: z.ZodDefault<z.ZodNumber>;
|
|
26
26
|
agent_pane_min_width: z.ZodDefault<z.ZodNumber>;
|
|
27
27
|
isolation: z.ZodDefault<z.ZodEnum<{
|
|
28
|
+
inline: "inline";
|
|
28
29
|
session: "session";
|
|
29
30
|
window: "window";
|
|
30
|
-
inline: "inline";
|
|
31
31
|
}>>;
|
|
32
32
|
}, z.core.$strip>;
|
|
33
33
|
export type { TmuxConfig, TmuxIsolation, TmuxLayout };
|
package/dist/create-hooks.d.ts
CHANGED
|
@@ -31,41 +31,6 @@ export declare function createHooks(args: {
|
|
|
31
31
|
mergedSkills: LoadedSkill[];
|
|
32
32
|
availableSkills: AvailableSkill[];
|
|
33
33
|
}): {
|
|
34
|
-
disposeHooks: () => void;
|
|
35
|
-
categorySkillReminder: ReturnType<typeof import("./hooks").createCategorySkillReminderHook> | null;
|
|
36
|
-
autoSlashCommand: ReturnType<typeof import("./hooks").createAutoSlashCommandHook> | null;
|
|
37
|
-
stopContinuationGuard: ReturnType<typeof import("./hooks").createStopContinuationGuardHook> | null;
|
|
38
|
-
compactionContextInjector: ReturnType<typeof import("./hooks").createCompactionContextInjector> | null;
|
|
39
|
-
compactionTodoPreserver: ReturnType<typeof import("./hooks").createCompactionTodoPreserverHook> | null;
|
|
40
|
-
todoContinuationEnforcer: ReturnType<typeof import("./hooks").createTodoContinuationEnforcer> | null;
|
|
41
|
-
unstableAgentBabysitter: ReturnType<typeof import("./plugin/unstable-agent-babysitter").createUnstableAgentBabysitter> | null;
|
|
42
|
-
backgroundNotificationHook: ReturnType<typeof import("./hooks").createBackgroundNotificationHook> | null;
|
|
43
|
-
atlasHook: ReturnType<typeof import("./hooks").createAtlasHook> | null;
|
|
44
|
-
claudeCodeHooks: ReturnType<typeof import("./hooks").createClaudeCodeHooksHook> | null;
|
|
45
|
-
keywordDetector: ReturnType<typeof import("./hooks").createKeywordDetectorHook> | null;
|
|
46
|
-
contextInjectorMessagesTransform: ReturnType<typeof import("./features/context-injector").createContextInjectorMessagesTransformHook>;
|
|
47
|
-
teamModeStatusInjector: ReturnType<typeof import("./hooks").createTeamModeStatusInjector> | null;
|
|
48
|
-
teamMailboxInjector: ReturnType<typeof import("./hooks").createTeamMailboxInjector> | null;
|
|
49
|
-
toolPairValidator: ReturnType<typeof import("./hooks").createToolPairValidatorHook> | null;
|
|
50
|
-
monitorStatusInjector: ReturnType<typeof import("./hooks").createMonitorStatusInjectorHook> | null;
|
|
51
|
-
commentChecker: ReturnType<typeof import("./hooks").createCommentCheckerHooks> | null;
|
|
52
|
-
toolOutputTruncator: ReturnType<typeof import("./hooks").createToolOutputTruncatorHook> | null;
|
|
53
|
-
directoryAgentsInjector: ReturnType<typeof import("./hooks").createDirectoryAgentsInjectorHook> | null;
|
|
54
|
-
directoryReadmeInjector: ReturnType<typeof import("./hooks").createDirectoryReadmeInjectorHook> | null;
|
|
55
|
-
emptyTaskResponseDetector: ReturnType<typeof import("./hooks").createEmptyTaskResponseDetectorHook> | null;
|
|
56
|
-
rulesInjector: ReturnType<typeof import("./hooks").createRulesInjectorHook> | null;
|
|
57
|
-
tasksTodowriteDisabler: ReturnType<typeof import("./hooks").createTasksTodowriteDisablerHook> | null;
|
|
58
|
-
writeExistingFileGuard: ReturnType<typeof import("./hooks").createWriteExistingFileGuardHook> | null;
|
|
59
|
-
bashFileReadGuard: ReturnType<typeof import("./hooks").createBashFileReadGuardHook> | null;
|
|
60
|
-
hashlineReadEnhancer: ReturnType<typeof import("./hooks").createHashlineReadEnhancerHook> | null;
|
|
61
|
-
jsonErrorRecovery: ReturnType<typeof import("./hooks").createJsonErrorRecoveryHook> | null;
|
|
62
|
-
readImageResizer: ReturnType<typeof import("./hooks").createReadImageResizerHook> | null;
|
|
63
|
-
todoDescriptionOverride: ReturnType<typeof import("./hooks").createTodoDescriptionOverrideHook> | null;
|
|
64
|
-
webfetchRedirectGuard: ReturnType<typeof import("./hooks").createWebFetchRedirectGuardHook> | null;
|
|
65
|
-
fsyncSkipWarning: ReturnType<typeof import("./hooks").createFsyncSkipWarningHook> | null;
|
|
66
|
-
teamToolGating: ReturnType<typeof import("./hooks").createTeamToolGating> | null;
|
|
67
|
-
notepadWriteGuard: ReturnType<typeof import("./hooks").createNotepadWriteGuardHook> | null;
|
|
68
|
-
planFormatValidator: ReturnType<typeof import("./hooks").createPlanFormatValidatorHook> | null;
|
|
69
34
|
preemptiveCompaction: ReturnType<typeof import("./hooks").createPreemptiveCompactionHook> | null;
|
|
70
35
|
sessionNotification: ReturnType<typeof import("./hooks").createSessionNotification> | null;
|
|
71
36
|
thinkMode: ReturnType<typeof import("./hooks").createThinkModeHook> | null;
|
|
@@ -90,5 +55,40 @@ export declare function createHooks(args: {
|
|
|
90
55
|
taskResumeInfo: ReturnType<typeof import("./hooks").createTaskResumeInfoHook> | null;
|
|
91
56
|
runtimeFallback: ReturnType<typeof import("./hooks").createRuntimeFallbackHook> | null;
|
|
92
57
|
legacyPluginToast: ReturnType<typeof import("./hooks").createLegacyPluginToastHook> | null;
|
|
58
|
+
commentChecker: ReturnType<typeof import("./hooks").createCommentCheckerHooks> | null;
|
|
59
|
+
toolOutputTruncator: ReturnType<typeof import("./hooks").createToolOutputTruncatorHook> | null;
|
|
60
|
+
directoryAgentsInjector: ReturnType<typeof import("./hooks").createDirectoryAgentsInjectorHook> | null;
|
|
61
|
+
directoryReadmeInjector: ReturnType<typeof import("./hooks").createDirectoryReadmeInjectorHook> | null;
|
|
62
|
+
emptyTaskResponseDetector: ReturnType<typeof import("./hooks").createEmptyTaskResponseDetectorHook> | null;
|
|
63
|
+
rulesInjector: ReturnType<typeof import("./hooks").createRulesInjectorHook> | null;
|
|
64
|
+
tasksTodowriteDisabler: ReturnType<typeof import("./hooks").createTasksTodowriteDisablerHook> | null;
|
|
65
|
+
writeExistingFileGuard: ReturnType<typeof import("./hooks").createWriteExistingFileGuardHook> | null;
|
|
66
|
+
bashFileReadGuard: ReturnType<typeof import("./hooks").createBashFileReadGuardHook> | null;
|
|
67
|
+
hashlineReadEnhancer: ReturnType<typeof import("./hooks").createHashlineReadEnhancerHook> | null;
|
|
68
|
+
jsonErrorRecovery: ReturnType<typeof import("./hooks").createJsonErrorRecoveryHook> | null;
|
|
69
|
+
readImageResizer: ReturnType<typeof import("./hooks").createReadImageResizerHook> | null;
|
|
70
|
+
todoDescriptionOverride: ReturnType<typeof import("./hooks").createTodoDescriptionOverrideHook> | null;
|
|
71
|
+
webfetchRedirectGuard: ReturnType<typeof import("./hooks").createWebFetchRedirectGuardHook> | null;
|
|
72
|
+
fsyncSkipWarning: ReturnType<typeof import("./hooks").createFsyncSkipWarningHook> | null;
|
|
73
|
+
teamToolGating: ReturnType<typeof import("./hooks").createTeamToolGating> | null;
|
|
74
|
+
notepadWriteGuard: ReturnType<typeof import("./hooks").createNotepadWriteGuardHook> | null;
|
|
75
|
+
planFormatValidator: ReturnType<typeof import("./hooks").createPlanFormatValidatorHook> | null;
|
|
76
|
+
claudeCodeHooks: ReturnType<typeof import("./hooks").createClaudeCodeHooksHook> | null;
|
|
77
|
+
keywordDetector: ReturnType<typeof import("./hooks").createKeywordDetectorHook> | null;
|
|
78
|
+
contextInjectorMessagesTransform: ReturnType<typeof import("./features/context-injector").createContextInjectorMessagesTransformHook>;
|
|
79
|
+
teamModeStatusInjector: ReturnType<typeof import("./hooks").createTeamModeStatusInjector> | null;
|
|
80
|
+
teamMailboxInjector: ReturnType<typeof import("./hooks").createTeamMailboxInjector> | null;
|
|
81
|
+
toolPairValidator: ReturnType<typeof import("./hooks").createToolPairValidatorHook> | null;
|
|
82
|
+
monitorStatusInjector: ReturnType<typeof import("./hooks").createMonitorStatusInjectorHook> | null;
|
|
83
|
+
stopContinuationGuard: ReturnType<typeof import("./hooks").createStopContinuationGuardHook> | null;
|
|
84
|
+
compactionContextInjector: ReturnType<typeof import("./hooks").createCompactionContextInjector> | null;
|
|
85
|
+
compactionTodoPreserver: ReturnType<typeof import("./hooks").createCompactionTodoPreserverHook> | null;
|
|
86
|
+
todoContinuationEnforcer: ReturnType<typeof import("./hooks").createTodoContinuationEnforcer> | null;
|
|
87
|
+
unstableAgentBabysitter: ReturnType<typeof import("./plugin/unstable-agent-babysitter").createUnstableAgentBabysitter> | null;
|
|
88
|
+
backgroundNotificationHook: ReturnType<typeof import("./hooks").createBackgroundNotificationHook> | null;
|
|
89
|
+
atlasHook: ReturnType<typeof import("./hooks").createAtlasHook> | null;
|
|
90
|
+
categorySkillReminder: ReturnType<typeof import("./hooks").createCategorySkillReminderHook> | null;
|
|
91
|
+
autoSlashCommand: ReturnType<typeof import("./hooks").createAutoSlashCommandHook> | null;
|
|
92
|
+
disposeHooks: () => void;
|
|
93
93
|
};
|
|
94
94
|
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { OnSubagentSessionCreated } from "../constants";
|
|
2
|
+
export interface TmuxCallbackInvocation {
|
|
3
|
+
callback: OnSubagentSessionCreated | undefined;
|
|
4
|
+
tmuxEnabled: boolean;
|
|
5
|
+
suppress: boolean;
|
|
6
|
+
sessionID: string;
|
|
7
|
+
parentID: string;
|
|
8
|
+
title: string;
|
|
9
|
+
log: (message: string, data?: unknown) => void;
|
|
10
|
+
}
|
|
11
|
+
export declare function invokeTmuxSessionCreatedCallback(invocation: TmuxCallbackInvocation): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const START_WORK_TEMPLATE = "You are starting an Atlas work session.\n\n## ARGUMENTS\n\n- `/start-work [plan-name] [--worktree <path>]`\n - `plan-name` (optional): name or partial match of the plan to start\n - `--worktree <path>` (optional): absolute path to an existing git worktree to work in\n - If specified and valid: hook pre-sets worktree_path in boulder.json\n - If specified but invalid: you must run `git worktree add <path> <branch>` first\n - If omitted: work directly in the current project directory (no worktree)\n\n## WHAT TO DO\n\n1. **Find available plans**: Search for Prometheus-generated plan files at `.omo/plans/`\n\n2. **Check for active boulder state**: Read `.omo/boulder.json` if it exists\n\n3. **Decision logic**:\n - If multiple active works are listed in your context:\n - This means boulder.json has more than one work with status: `active` or `paused`\n - Use the Question tool to ask the user which plan to resume\n - Resume by running `/start-work {plan-name}` for the selected plan\n - If the user says \"start a new plan\", continue with cold-start auto-selection logic\n - If exactly one active work is listed and the user did not name a plan:\n - Auto-resume that single active work\n - If no active plan OR plan is complete:\n - List available plan files\n - If ONE plan: auto-select it\n - If MULTIPLE plans: show list with timestamps, ask user to select\n\n4. **Worktree Setup** (ONLY when `--worktree` was explicitly specified and `worktree_path` not already set in boulder.json):\n 1. `git worktree list --porcelain` - see available worktrees\n 2. Create: `git worktree add <absolute-path> <branch-or-HEAD>`\n 3. Update boulder.json to add `\"worktree_path\": \"<absolute-path>\"`\n 4. All work happens inside that worktree directory\n\n5. **Create/Update boulder.json**:\n ```json\n {\n \"active_plan\": \"/absolute/path/to/plan.md\",\n \"started_at\": \"ISO_TIMESTAMP\",\n \"session_ids\": [\"session_id_1\", \"session_id_2\"],\n \"plan_name\": \"plan-name\",\n \"worktree_path\": \"/absolute/path/to/git/worktree\"\n }\n ```\n\n6. **Read the plan file** and start executing tasks according to atlas workflow\n\n## OUTPUT FORMAT\n\nWhen listing plans for selection:\n```\nAvailable Work Plans\n\nCurrent Time: {ISO timestamp}\nSession ID: {current session id}\n\n1. [plan-name-1.md] - Modified: {date} - Progress: 3/10 tasks\n2. [plan-name-2.md] - Modified: {date} - Progress: 0/5 tasks\n\nWhich plan would you like to work on? (Enter number or plan name)\n```\n\nWhen resuming existing work:\n```\nResuming Work Session\n\nActive Plan: {plan-name}\nProgress: {completed}/{total} tasks\nSessions: {count} (appending current session)\nWorktree: {worktree_path}\n\nReading plan and continuing from last incomplete task...\n```\n\nWhen auto-selecting single plan:\n```\nStarting Work Session\n\nPlan: {plan-name}\nSession ID: {session_id}\nStarted: {timestamp}\nWorktree: {worktree_path}\n\nReading plan and beginning execution...\n```\n\n## CRITICAL\n\n- The session_id is injected by the hook - use it directly\n- Always update boulder.json BEFORE starting work\n- If worktree_path is set in boulder.json, all work happens inside that worktree directory\n- Read the FULL plan file before delegating any tasks\n- Follow atlas delegation protocols (7-section format)\n\n## TASK BREAKDOWN (MANDATORY)\n\
|
|
1
|
+
export declare const START_WORK_TEMPLATE = "You are starting an Atlas work session.\n\n## ARGUMENTS\n\n- `/start-work [plan-name] [--worktree <path>] [--make-pr] [--ship]`\n - `plan-name` (optional): name or partial match of the plan to start\n - `--worktree <path>` (optional): absolute path to an existing git worktree to work in\n - If specified and valid: hook pre-sets worktree_path in boulder.json\n - If specified but invalid: you must run `git worktree add <path> <branch>` first\n - If omitted: work directly in the current project directory (no worktree)\n - `--make-pr` (optional): deliver the work as a pull request. IMPLIES worktree mode - when `--worktree` is omitted, create a task-owned worktree before implementation. On completion push the branch, open a reviewer-readable PR, and hand off with the PR URL (merge only on explicit user ask)\n - `--ship` (optional): full delivery lifecycle; implies `--make-pr`. After the PR opens, keep working until it is MERGED (CI + review gates, feedback addressed), then clean up the worktree and sync `.omo/` state back\n\n## WHAT TO DO\n\n1. **Find available plans**: Search for Prometheus-generated plan files at `.omo/plans/`\n\n2. **Check for active boulder state**: Read `.omo/boulder.json` if it exists\n\n3. **Decision logic**:\n - If multiple active works are listed in your context:\n - This means boulder.json has more than one work with status: `active` or `paused`\n - Use the Question tool to ask the user which plan to resume\n - Resume by running `/start-work {plan-name}` for the selected plan\n - If the user says \"start a new plan\", continue with cold-start auto-selection logic\n - If exactly one active work is listed and the user did not name a plan:\n - Auto-resume that single active work\n - If no active plan OR plan is complete:\n - List available plan files\n - If ONE plan: auto-select it\n - If MULTIPLE plans: show list with timestamps, ask user to select\n\n4. **Worktree Setup** (ONLY when `--worktree` was explicitly specified and `worktree_path` not already set in boulder.json):\n 1. `git worktree list --porcelain` - see available worktrees\n 2. Create: `git worktree add <absolute-path> <branch-or-HEAD>`\n 3. Update boulder.json to add `\"worktree_path\": \"<absolute-path>\"`\n 4. All work happens inside that worktree directory\n\n5. **Create/Update boulder.json**:\n ```json\n {\n \"active_plan\": \"/absolute/path/to/plan.md\",\n \"started_at\": \"ISO_TIMESTAMP\",\n \"session_ids\": [\"session_id_1\", \"session_id_2\"],\n \"plan_name\": \"plan-name\",\n \"worktree_path\": \"/absolute/path/to/git/worktree\"\n }\n ```\n\n6. **Read the plan file** and start executing tasks according to atlas workflow\n\n## OUTPUT FORMAT\n\nWhen listing plans for selection:\n```\nAvailable Work Plans\n\nCurrent Time: {ISO timestamp}\nSession ID: {current session id}\n\n1. [plan-name-1.md] - Modified: {date} - Progress: 3/10 tasks\n2. [plan-name-2.md] - Modified: {date} - Progress: 0/5 tasks\n\nWhich plan would you like to work on? (Enter number or plan name)\n```\n\nWhen resuming existing work:\n```\nResuming Work Session\n\nActive Plan: {plan-name}\nProgress: {completed}/{total} tasks\nSessions: {count} (appending current session)\nWorktree: {worktree_path}\n\nReading plan and continuing from last incomplete task...\n```\n\nWhen auto-selecting single plan:\n```\nStarting Work Session\n\nPlan: {plan-name}\nSession ID: {session_id}\nStarted: {timestamp}\nWorktree: {worktree_path}\n\nReading plan and beginning execution...\n```\n\n## CRITICAL\n\n- The session_id is injected by the hook - use it directly\n- Always update boulder.json BEFORE starting work\n- If worktree_path is set in boulder.json, all work happens inside that worktree directory\n- Read the FULL plan file before delegating any tasks\n- Follow atlas delegation protocols (7-section format)\n\n## GOAL + TASK BREAKDOWN (MANDATORY)\n\nDo BOTH of these immediately after reading the plan file, BEFORE starting any work. Skipping either is a defect.\n\n**1. Set the goal, in detail.** When a goal tool is available (`create_goal`), call it with a DETAILED objective: the plan name and path, the concrete end state, the phase/task counts, the delivery mode (direct, `--make-pr`, or `--ship`), and how completion will be verified. One work session = one goal. No goal tool -> record the same objective as the first `.omo/start-work/ledger.jsonl` entry.\n\n**2. Register every phase and task as todos.** Decompose every plan task into granular, implementation-level sub-steps and register ALL of them as task/todo items, grouped phase by phase (one phase per plan wave), BEFORE starting any work. Keep them current at every moment: mark in_progress when work dispatches and done immediately after its verification passes - never batch-complete at the end, never execute work that is not a registered todo. Discovered work is appended as a todo before it runs.\n\n**How to break down**:\n- Each plan checkbox item (e.g., `- [ ] Add user authentication`) must be split into concrete, actionable sub-tasks\n- Sub-tasks should be specific enough that each one touches a clear set of files/functions\n- Include: file to modify, what to change, expected behavior, and how to verify\n- Do NOT leave any task vague - \"implement feature X\" is NOT acceptable; \"add validateToken() to src/auth/middleware.ts that checks JWT expiry and returns 401\" IS acceptable\n\n**Example breakdown**:\nPlan task: `- [ ] Add rate limiting to API`\n\u2192 Todo items:\n 1. Create `src/middleware/rate-limiter.ts` with sliding window algorithm (max 100 req/min per IP)\n 2. Add RateLimiter middleware to `src/app.ts` router chain, before auth middleware\n 3. Add rate limit headers (X-RateLimit-Limit, X-RateLimit-Remaining) to response in `rate-limiter.ts`\n 4. Add test: verify 429 response after exceeding limit in `src/middleware/rate-limiter.test.ts`\n 5. Add test: verify headers are present on normal responses\n\nRegister these as task/todo items so progress is tracked and visible throughout the session.\n\n## WORKTREE COMPLETION\n\nWhen working in a worktree (`worktree_path` is set in boulder.json) and ALL plan tasks are complete:\n1. Commit all remaining changes in the worktree\n2. **Sync .omo state back**: Copy `.omo/` from the worktree to the main repo before removal.\n This is CRITICAL when `.omo/` is gitignored - state written during worktree execution would otherwise be lost.\n ```bash\n cp -r <worktree-path>/.omo/* <main-repo>/.omo/ 2>/dev/null || true\n ```\n3. Switch to the main working directory (the original repo, NOT the worktree)\n4. Merge the worktree branch into the current branch: `git merge <worktree-branch>`\n5. If merge succeeds, clean up: `git worktree remove <worktree-path>`\n6. Remove the boulder.json state\n\nThis is the DEFAULT behavior when `--worktree` was used alone. When `--make-pr` or `--ship` is active, skip the local merge and follow the PR Delivery Mode instructions in the session context instead: push the branch and open a PR (`--make-pr` hands off with the PR URL; `--ship` keeps working until the PR is merged), then clean up. Otherwise skip merge only if the user explicitly instructs otherwise (e.g., asks to create a PR instead).";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
export declare const TaskStatusSchema: z.ZodEnum<{
|
|
3
|
-
deleted: "deleted";
|
|
4
3
|
completed: "completed";
|
|
5
|
-
|
|
4
|
+
deleted: "deleted";
|
|
6
5
|
in_progress: "in_progress";
|
|
6
|
+
pending: "pending";
|
|
7
7
|
}>;
|
|
8
8
|
export type TaskStatus = z.infer<typeof TaskStatusSchema>;
|
|
9
9
|
export declare const TaskSchema: z.ZodObject<{
|
|
@@ -11,10 +11,10 @@ export declare const TaskSchema: z.ZodObject<{
|
|
|
11
11
|
subject: z.ZodString;
|
|
12
12
|
description: z.ZodString;
|
|
13
13
|
status: z.ZodEnum<{
|
|
14
|
-
deleted: "deleted";
|
|
15
14
|
completed: "completed";
|
|
16
|
-
|
|
15
|
+
deleted: "deleted";
|
|
17
16
|
in_progress: "in_progress";
|
|
17
|
+
pending: "pending";
|
|
18
18
|
}>;
|
|
19
19
|
activeForm: z.ZodOptional<z.ZodString>;
|
|
20
20
|
blocks: z.ZodArray<z.ZodString>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Message, RuntimeState } from "../types";
|
|
2
|
-
export declare const DELETABLE_MEMBER_STATUSES: Set<"
|
|
2
|
+
export declare const DELETABLE_MEMBER_STATUSES: Set<"completed" | "errored" | "idle" | "pending" | "running" | "shutdown_approved">;
|
|
3
3
|
export declare function createShutdownMessage(from: string, to: string, kind: Message["kind"], body: string): Message;
|
|
4
4
|
export declare function getRuntimeMember(runtimeState: RuntimeState, memberName: string): RuntimeState["members"][number];
|
|
5
5
|
export declare function getLeadMemberName(runtimeState: RuntimeState): string;
|
|
@@ -17,14 +17,14 @@ export declare function readInboxMessages(teamRunId: string, memberName: string,
|
|
|
17
17
|
messageId: string;
|
|
18
18
|
from: string;
|
|
19
19
|
to: string;
|
|
20
|
-
kind: "
|
|
20
|
+
kind: "announcement" | "message" | "shutdown_approved" | "shutdown_rejected" | "shutdown_request";
|
|
21
21
|
body: string;
|
|
22
|
-
timestamp: number;
|
|
23
22
|
summary?: string | undefined;
|
|
24
23
|
references?: {
|
|
25
24
|
path: string;
|
|
26
25
|
description?: string | undefined;
|
|
27
26
|
}[] | undefined;
|
|
27
|
+
timestamp: number;
|
|
28
28
|
correlationId?: string | undefined;
|
|
29
29
|
color?: string | undefined;
|
|
30
30
|
}[]>;
|
|
@@ -33,14 +33,14 @@ export declare function createTestMessage(overrides?: Partial<Parameters<typeof
|
|
|
33
33
|
messageId: string;
|
|
34
34
|
from: string;
|
|
35
35
|
to: string;
|
|
36
|
-
kind: "
|
|
36
|
+
kind: "announcement" | "message" | "shutdown_approved" | "shutdown_rejected" | "shutdown_request";
|
|
37
37
|
body: string;
|
|
38
|
-
timestamp: number;
|
|
39
38
|
summary?: string | undefined;
|
|
40
39
|
references?: {
|
|
41
40
|
path: string;
|
|
42
41
|
description?: string | undefined;
|
|
43
42
|
}[] | undefined;
|
|
43
|
+
timestamp: number;
|
|
44
44
|
correlationId?: string | undefined;
|
|
45
45
|
color?: string | undefined;
|
|
46
46
|
};
|
|
@@ -11,17 +11,23 @@ export declare const createTeamRunMock: import("bun:test").Mock<(spec: TeamSpec,
|
|
|
11
11
|
version: 1;
|
|
12
12
|
teamRunId: string;
|
|
13
13
|
teamName: string;
|
|
14
|
-
specSource: "
|
|
14
|
+
specSource: "project" | "user";
|
|
15
15
|
createdAt: number;
|
|
16
|
-
status: "
|
|
16
|
+
status: "active" | "creating" | "deleted" | "deleting" | "failed" | "orphaned" | "shutdown_requested";
|
|
17
|
+
leadSessionId?: string | undefined;
|
|
18
|
+
tmuxLayout?: {
|
|
19
|
+
ownedSession: boolean;
|
|
20
|
+
targetSessionId: string;
|
|
21
|
+
focusWindowId?: string | undefined;
|
|
22
|
+
gridWindowId?: string | undefined;
|
|
23
|
+
paneIds?: string[] | undefined;
|
|
24
|
+
} | undefined;
|
|
17
25
|
members: {
|
|
18
26
|
name: string;
|
|
19
|
-
agentType: "leader" | "general-purpose";
|
|
20
|
-
status: "running" | "completed" | "pending" | "idle" | "shutdown_approved" | "errored";
|
|
21
|
-
pendingInjectedMessageIds: string[];
|
|
22
27
|
sessionId?: string | undefined;
|
|
23
28
|
tmuxPaneId?: string | undefined;
|
|
24
29
|
tmuxGridPaneId?: string | undefined;
|
|
30
|
+
agentType: "general-purpose" | "leader";
|
|
25
31
|
subagent_type?: string | undefined;
|
|
26
32
|
category?: string | undefined;
|
|
27
33
|
model?: {
|
|
@@ -33,13 +39,15 @@ export declare const createTeamRunMock: import("bun:test").Mock<(spec: TeamSpec,
|
|
|
33
39
|
top_p?: number | undefined;
|
|
34
40
|
maxTokens?: number | undefined;
|
|
35
41
|
thinking?: {
|
|
36
|
-
type: "
|
|
42
|
+
type: "disabled" | "enabled";
|
|
37
43
|
budgetTokens?: number | undefined;
|
|
38
44
|
} | undefined;
|
|
39
45
|
} | undefined;
|
|
46
|
+
status: "completed" | "errored" | "idle" | "pending" | "running" | "shutdown_approved";
|
|
40
47
|
color?: string | undefined;
|
|
41
48
|
worktreePath?: string | undefined;
|
|
42
49
|
lastInjectedTurnMarker?: string | undefined;
|
|
50
|
+
pendingInjectedMessageIds: string[];
|
|
43
51
|
}[];
|
|
44
52
|
shutdownRequests: {
|
|
45
53
|
memberId: string;
|
|
@@ -56,14 +64,6 @@ export declare const createTeamRunMock: import("bun:test").Mock<(spec: TeamSpec,
|
|
|
56
64
|
maxWallClockMinutes: number;
|
|
57
65
|
maxMemberTurns: number;
|
|
58
66
|
};
|
|
59
|
-
leadSessionId?: string | undefined;
|
|
60
|
-
tmuxLayout?: {
|
|
61
|
-
ownedSession: boolean;
|
|
62
|
-
targetSessionId: string;
|
|
63
|
-
focusWindowId?: string | undefined;
|
|
64
|
-
gridWindowId?: string | undefined;
|
|
65
|
-
paneIds?: string[] | undefined;
|
|
66
|
-
} | undefined;
|
|
67
67
|
}>>;
|
|
68
68
|
export declare const deleteTeamMock: import("bun:test").Mock<(teamRunId: string, _config?: unknown, _tmuxMgr?: unknown, _bgMgr?: unknown, options?: {
|
|
69
69
|
force?: boolean;
|
|
@@ -77,57 +77,63 @@ export declare const rejectShutdownMock: import("bun:test").Mock<(teamRunId: str
|
|
|
77
77
|
export declare const loadTeamSpecMock: import("bun:test").Mock<() => Promise<{
|
|
78
78
|
version: 1;
|
|
79
79
|
name: string;
|
|
80
|
+
description?: string | undefined;
|
|
80
81
|
createdAt: number;
|
|
82
|
+
leadAgentId?: string | undefined;
|
|
83
|
+
teamAllowedPaths?: string[] | undefined;
|
|
84
|
+
sessionPermission?: string | undefined;
|
|
81
85
|
members: ({
|
|
82
86
|
name: string;
|
|
87
|
+
cwd?: string | undefined;
|
|
88
|
+
worktreePath?: string | undefined;
|
|
89
|
+
subscriptions?: string[] | undefined;
|
|
83
90
|
backendType: "in-process" | "tmux";
|
|
91
|
+
color?: string | undefined;
|
|
84
92
|
isActive: boolean;
|
|
85
93
|
kind: "category";
|
|
86
94
|
category: string;
|
|
87
95
|
prompt: string;
|
|
96
|
+
} | {
|
|
97
|
+
name: string;
|
|
88
98
|
cwd?: string | undefined;
|
|
89
99
|
worktreePath?: string | undefined;
|
|
90
100
|
subscriptions?: string[] | undefined;
|
|
91
|
-
color?: string | undefined;
|
|
92
|
-
} | {
|
|
93
|
-
name: string;
|
|
94
101
|
backendType: "in-process" | "tmux";
|
|
102
|
+
color?: string | undefined;
|
|
95
103
|
isActive: boolean;
|
|
96
104
|
kind: "subagent_type";
|
|
97
105
|
subagent_type: string;
|
|
98
|
-
cwd?: string | undefined;
|
|
99
|
-
worktreePath?: string | undefined;
|
|
100
|
-
subscriptions?: string[] | undefined;
|
|
101
|
-
color?: string | undefined;
|
|
102
106
|
prompt?: string | undefined;
|
|
103
107
|
})[];
|
|
104
|
-
description?: string | undefined;
|
|
105
|
-
leadAgentId?: string | undefined;
|
|
106
|
-
teamAllowedPaths?: string[] | undefined;
|
|
107
|
-
sessionPermission?: string | undefined;
|
|
108
108
|
}>>;
|
|
109
109
|
export declare const listActiveTeamsMock: import("bun:test").Mock<() => Promise<{
|
|
110
110
|
teamRunId: string;
|
|
111
111
|
teamName: string;
|
|
112
|
-
status: "
|
|
112
|
+
status: "active" | "creating" | "deleted" | "deleting" | "failed" | "orphaned" | "shutdown_requested";
|
|
113
113
|
memberCount: number;
|
|
114
|
-
scope: "
|
|
114
|
+
scope: "project" | "user";
|
|
115
115
|
}[]>>;
|
|
116
116
|
export declare const loadRuntimeStateMock: import("bun:test").Mock<(teamRunId: string) => Promise<{
|
|
117
117
|
version: 1;
|
|
118
118
|
teamRunId: string;
|
|
119
119
|
teamName: string;
|
|
120
|
-
specSource: "
|
|
120
|
+
specSource: "project" | "user";
|
|
121
121
|
createdAt: number;
|
|
122
|
-
status: "
|
|
122
|
+
status: "active" | "creating" | "deleted" | "deleting" | "failed" | "orphaned" | "shutdown_requested";
|
|
123
|
+
leadSessionId?: string | undefined;
|
|
124
|
+
tmuxLayout?: {
|
|
125
|
+
ownedSession: boolean;
|
|
126
|
+
targetSessionId: string;
|
|
127
|
+
focusWindowId?: string | undefined;
|
|
128
|
+
gridWindowId?: string | undefined;
|
|
129
|
+
paneIds?: string[] | undefined;
|
|
130
|
+
} | undefined;
|
|
123
131
|
members: {
|
|
124
132
|
name: string;
|
|
125
|
-
agentType: "leader" | "general-purpose";
|
|
126
|
-
status: "running" | "completed" | "pending" | "idle" | "shutdown_approved" | "errored";
|
|
127
|
-
pendingInjectedMessageIds: string[];
|
|
128
133
|
sessionId?: string | undefined;
|
|
129
134
|
tmuxPaneId?: string | undefined;
|
|
130
135
|
tmuxGridPaneId?: string | undefined;
|
|
136
|
+
agentType: "general-purpose" | "leader";
|
|
131
137
|
subagent_type?: string | undefined;
|
|
132
138
|
category?: string | undefined;
|
|
133
139
|
model?: {
|
|
@@ -139,13 +145,15 @@ export declare const loadRuntimeStateMock: import("bun:test").Mock<(teamRunId: s
|
|
|
139
145
|
top_p?: number | undefined;
|
|
140
146
|
maxTokens?: number | undefined;
|
|
141
147
|
thinking?: {
|
|
142
|
-
type: "
|
|
148
|
+
type: "disabled" | "enabled";
|
|
143
149
|
budgetTokens?: number | undefined;
|
|
144
150
|
} | undefined;
|
|
145
151
|
} | undefined;
|
|
152
|
+
status: "completed" | "errored" | "idle" | "pending" | "running" | "shutdown_approved";
|
|
146
153
|
color?: string | undefined;
|
|
147
154
|
worktreePath?: string | undefined;
|
|
148
155
|
lastInjectedTurnMarker?: string | undefined;
|
|
156
|
+
pendingInjectedMessageIds: string[];
|
|
149
157
|
}[];
|
|
150
158
|
shutdownRequests: {
|
|
151
159
|
memberId: string;
|
|
@@ -162,14 +170,6 @@ export declare const loadRuntimeStateMock: import("bun:test").Mock<(teamRunId: s
|
|
|
162
170
|
maxWallClockMinutes: number;
|
|
163
171
|
maxMemberTurns: number;
|
|
164
172
|
};
|
|
165
|
-
leadSessionId?: string | undefined;
|
|
166
|
-
tmuxLayout?: {
|
|
167
|
-
ownedSession: boolean;
|
|
168
|
-
targetSessionId: string;
|
|
169
|
-
focusWindowId?: string | undefined;
|
|
170
|
-
gridWindowId?: string | undefined;
|
|
171
|
-
paneIds?: string[] | undefined;
|
|
172
|
-
} | undefined;
|
|
173
173
|
}>>;
|
|
174
174
|
export declare const config: {
|
|
175
175
|
enabled: boolean;
|
|
@@ -179,10 +179,10 @@ export declare const config: {
|
|
|
179
179
|
max_messages_per_run: number;
|
|
180
180
|
max_wall_clock_minutes: number;
|
|
181
181
|
max_member_turns: number;
|
|
182
|
+
base_dir?: string | undefined;
|
|
182
183
|
message_payload_max_bytes: number;
|
|
183
184
|
recipient_unread_max_bytes: number;
|
|
184
185
|
mailbox_poll_interval_ms: number;
|
|
185
|
-
base_dir?: string | undefined;
|
|
186
186
|
};
|
|
187
187
|
export declare const mockClient: OpencodeClient;
|
|
188
188
|
export declare const backgroundManager: BackgroundManager;
|
|
@@ -6,22 +6,22 @@ export declare const TuiRuntimeSnapshotSchema: z.ZodObject<{
|
|
|
6
6
|
activeAgents: z.ZodArray<z.ZodObject<{
|
|
7
7
|
name: z.ZodString;
|
|
8
8
|
status: z.ZodEnum<{
|
|
9
|
-
error: "error";
|
|
10
9
|
busy: "busy";
|
|
10
|
+
error: "error";
|
|
11
|
+
idle: "idle";
|
|
11
12
|
retry: "retry";
|
|
12
13
|
running: "running";
|
|
13
|
-
idle: "idle";
|
|
14
14
|
}>;
|
|
15
15
|
}, z.core.$strip>>;
|
|
16
16
|
jobBoard: z.ZodArray<z.ZodObject<{
|
|
17
17
|
title: z.ZodString;
|
|
18
18
|
status: z.ZodEnum<{
|
|
19
|
-
error: "error";
|
|
20
|
-
running: "running";
|
|
21
|
-
completed: "completed";
|
|
22
|
-
pending: "pending";
|
|
23
19
|
cancelled: "cancelled";
|
|
20
|
+
completed: "completed";
|
|
21
|
+
error: "error";
|
|
24
22
|
interrupt: "interrupt";
|
|
23
|
+
pending: "pending";
|
|
24
|
+
running: "running";
|
|
25
25
|
}>;
|
|
26
26
|
toolCalls: z.ZodNullable<z.ZodNumber>;
|
|
27
27
|
lastTool: z.ZodNullable<z.ZodString>;
|
|
@@ -19,9 +19,9 @@ export declare const AcpConnectionSchema: z.ZodObject<{
|
|
|
19
19
|
id: z.ZodString;
|
|
20
20
|
agentId: z.ZodString;
|
|
21
21
|
state: z.ZodEnum<{
|
|
22
|
-
error: "error";
|
|
23
22
|
connected: "connected";
|
|
24
23
|
disconnected: "disconnected";
|
|
24
|
+
error: "error";
|
|
25
25
|
}>;
|
|
26
26
|
startedAt: z.ZodNumber;
|
|
27
27
|
messagesSent: z.ZodNumber;
|
|
@@ -47,9 +47,9 @@ export declare const AcpServerSchema: z.ZodObject<{
|
|
|
47
47
|
id: z.ZodString;
|
|
48
48
|
agentId: z.ZodString;
|
|
49
49
|
state: z.ZodEnum<{
|
|
50
|
-
error: "error";
|
|
51
50
|
connected: "connected";
|
|
52
51
|
disconnected: "disconnected";
|
|
52
|
+
error: "error";
|
|
53
53
|
}>;
|
|
54
54
|
startedAt: z.ZodNumber;
|
|
55
55
|
messagesSent: z.ZodNumber;
|
|
@@ -77,9 +77,9 @@ export declare const AcpResultSchema: z.ZodObject<{
|
|
|
77
77
|
id: z.ZodString;
|
|
78
78
|
agentId: z.ZodString;
|
|
79
79
|
state: z.ZodEnum<{
|
|
80
|
-
error: "error";
|
|
81
80
|
connected: "connected";
|
|
82
81
|
disconnected: "disconnected";
|
|
82
|
+
error: "error";
|
|
83
83
|
}>;
|
|
84
84
|
startedAt: z.ZodNumber;
|
|
85
85
|
messagesSent: z.ZodNumber;
|
|
@@ -16,9 +16,9 @@ export declare const DoctorIssueSchema: z.ZodObject<{
|
|
|
16
16
|
export declare const CheckResultSchema: z.ZodObject<{
|
|
17
17
|
name: z.ZodString;
|
|
18
18
|
status: z.ZodEnum<{
|
|
19
|
-
skip: "skip";
|
|
20
|
-
pass: "pass";
|
|
21
19
|
fail: "fail";
|
|
20
|
+
pass: "pass";
|
|
21
|
+
skip: "skip";
|
|
22
22
|
warn: "warn";
|
|
23
23
|
}>;
|
|
24
24
|
message: z.ZodString;
|
|
@@ -82,9 +82,9 @@ export declare const DoctorResultSchema: z.ZodObject<{
|
|
|
82
82
|
results: z.ZodArray<z.ZodObject<{
|
|
83
83
|
name: z.ZodString;
|
|
84
84
|
status: z.ZodEnum<{
|
|
85
|
-
skip: "skip";
|
|
86
|
-
pass: "pass";
|
|
87
85
|
fail: "fail";
|
|
86
|
+
pass: "pass";
|
|
87
|
+
skip: "skip";
|
|
88
88
|
warn: "warn";
|
|
89
89
|
}>;
|
|
90
90
|
message: z.ZodString;
|
|
@@ -6,8 +6,8 @@ import { z } from "zod";
|
|
|
6
6
|
export declare const SessionStatusSchema: z.ZodObject<{
|
|
7
7
|
type: z.ZodEnum<{
|
|
8
8
|
busy: "busy";
|
|
9
|
-
retry: "retry";
|
|
10
9
|
idle: "idle";
|
|
10
|
+
retry: "retry";
|
|
11
11
|
}>;
|
|
12
12
|
attempt: z.ZodOptional<z.ZodNumber>;
|
|
13
13
|
message: z.ZodOptional<z.ZodString>;
|
|
@@ -46,8 +46,8 @@ export declare const SystemHealthSchema: z.ZodObject<{
|
|
|
46
46
|
statuses: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
47
47
|
type: z.ZodEnum<{
|
|
48
48
|
busy: "busy";
|
|
49
|
-
retry: "retry";
|
|
50
49
|
idle: "idle";
|
|
50
|
+
retry: "retry";
|
|
51
51
|
}>;
|
|
52
52
|
attempt: z.ZodOptional<z.ZodNumber>;
|
|
53
53
|
message: z.ZodOptional<z.ZodString>;
|
|
@@ -94,8 +94,8 @@ export declare const StatusResultSchema: z.ZodObject<{
|
|
|
94
94
|
statuses: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
95
95
|
type: z.ZodEnum<{
|
|
96
96
|
busy: "busy";
|
|
97
|
-
retry: "retry";
|
|
98
97
|
idle: "idle";
|
|
98
|
+
retry: "retry";
|
|
99
99
|
}>;
|
|
100
100
|
attempt: z.ZodOptional<z.ZodNumber>;
|
|
101
101
|
message: z.ZodOptional<z.ZodString>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type BuildCodegraphEnvOptions, type CodegraphCommandResolution, type CodegraphNodeSupport, type CodegraphProvisionResult, type CodegraphWorkspacePreparation, type PrepareCodegraphWorkspaceOptions, type ResolveCodegraphCommandOptions } from "@oh-my-opencode/utils";
|
|
1
|
+
import { CODEGRAPH_PINNED_VERSION, type BuildCodegraphEnvOptions, type CodegraphCommandResolution, type CodegraphProjectExclusionDecision, type CodegraphProjectExclusionOptions, type CodegraphNodeSupport, type CodegraphProvisionResult, type CodegraphWorkspacePreparation, type PrepareCodegraphWorkspaceOptions, type ResolveCodegraphCommandOptions } from "@oh-my-opencode/utils";
|
|
2
2
|
import type { CodegraphConfig } from "../../config";
|
|
3
3
|
import type { CodegraphCommandResult } from "./command-runner";
|
|
4
4
|
export interface CodegraphBootstrapContext {
|
|
@@ -13,10 +13,11 @@ export interface CodegraphBootstrapEventInput {
|
|
|
13
13
|
export interface CodegraphBootstrapDeps {
|
|
14
14
|
readonly buildEnv: (options?: BuildCodegraphEnvOptions) => Record<string, string>;
|
|
15
15
|
readonly ensureGitignored: (projectRoot: string) => boolean;
|
|
16
|
+
readonly excludeProject: (projectRoot: string, options?: CodegraphProjectExclusionOptions) => CodegraphProjectExclusionDecision;
|
|
16
17
|
readonly ensureProvisioned: (options: {
|
|
17
18
|
readonly installDir?: string;
|
|
18
19
|
readonly lockDir: string;
|
|
19
|
-
readonly version:
|
|
20
|
+
readonly version: typeof CODEGRAPH_PINNED_VERSION;
|
|
20
21
|
}) => Promise<CodegraphProvisionResult>;
|
|
21
22
|
readonly log: (message: string, data?: Record<string, unknown>) => void;
|
|
22
23
|
readonly nodeSupport: () => CodegraphNodeSupport;
|
|
@@ -2,8 +2,8 @@ import { z } from "zod";
|
|
|
2
2
|
export declare const GOAL_STATUS_VALUES: readonly ["active", "paused", "complete"];
|
|
3
3
|
export declare const GoalStatusSchema: z.ZodEnum<{
|
|
4
4
|
active: "active";
|
|
5
|
-
paused: "paused";
|
|
6
5
|
complete: "complete";
|
|
6
|
+
paused: "paused";
|
|
7
7
|
}>;
|
|
8
8
|
export type GoalStatus = z.infer<typeof GoalStatusSchema>;
|
|
9
9
|
export declare const GoalSchema: z.ZodObject<{
|
|
@@ -12,8 +12,8 @@ export declare const GoalSchema: z.ZodObject<{
|
|
|
12
12
|
objective: z.ZodString;
|
|
13
13
|
status: z.ZodEnum<{
|
|
14
14
|
active: "active";
|
|
15
|
-
paused: "paused";
|
|
16
15
|
complete: "complete";
|
|
16
|
+
paused: "paused";
|
|
17
17
|
}>;
|
|
18
18
|
tokensUsed: z.ZodNumber;
|
|
19
19
|
timeUsedSeconds: z.ZodNumber;
|
|
@@ -31,8 +31,8 @@ export declare const GoalFileSchema: z.ZodObject<{
|
|
|
31
31
|
objective: z.ZodString;
|
|
32
32
|
status: z.ZodEnum<{
|
|
33
33
|
active: "active";
|
|
34
|
-
paused: "paused";
|
|
35
34
|
complete: "complete";
|
|
35
|
+
paused: "paused";
|
|
36
36
|
}>;
|
|
37
37
|
tokensUsed: z.ZodNumber;
|
|
38
38
|
timeUsedSeconds: z.ZodNumber;
|
|
@@ -65,8 +65,8 @@ export declare const GoalToolSnapshotSchema: z.ZodObject<{
|
|
|
65
65
|
objective: z.ZodString;
|
|
66
66
|
status: z.ZodEnum<{
|
|
67
67
|
active: "active";
|
|
68
|
-
paused: "paused";
|
|
69
68
|
complete: "complete";
|
|
69
|
+
paused: "paused";
|
|
70
70
|
}>;
|
|
71
71
|
tokensUsed: z.ZodNumber;
|
|
72
72
|
timeUsedSeconds: z.ZodNumber;
|
|
@@ -80,8 +80,8 @@ export declare const GoalToolResponseSchema: z.ZodObject<{
|
|
|
80
80
|
objective: z.ZodString;
|
|
81
81
|
status: z.ZodEnum<{
|
|
82
82
|
active: "active";
|
|
83
|
-
paused: "paused";
|
|
84
83
|
complete: "complete";
|
|
84
|
+
paused: "paused";
|
|
85
85
|
}>;
|
|
86
86
|
tokensUsed: z.ZodNumber;
|
|
87
87
|
timeUsedSeconds: z.ZodNumber;
|
|
@@ -28,7 +28,10 @@ export declare const SHELL_COMMAND_PATTERNS: {
|
|
|
28
28
|
readonly banned: readonly ["vim", "nano", "vi", "emacs", "less", "more", "man", "python (REPL)", "node (REPL)", "git add -p", "git rebase -i"];
|
|
29
29
|
readonly workarounds: {
|
|
30
30
|
readonly yesPipe: "yes | ./script.sh";
|
|
31
|
-
readonly heredoc:
|
|
31
|
+
readonly heredoc: `./script.sh <<EOF
|
|
32
|
+
option1
|
|
33
|
+
option2
|
|
34
|
+
EOF`;
|
|
32
35
|
readonly expectAlternative: "Use environment variables or config files instead of expect";
|
|
33
36
|
};
|
|
34
37
|
};
|