@skj1724/oh-my-opencode 3.11.8 → 3.17.5
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/README.ja.md +8 -4
- package/README.ko.md +8 -4
- package/README.md +20 -10
- package/README.ru.md +8 -4
- package/README.zh-cn.md +8 -4
- package/bin/oh-my-opencode.js +11 -0
- package/bin/platform.js +13 -13
- package/bin/platform.test.ts +15 -0
- package/dist/agents/atlas/agent.d.ts +1 -1
- package/dist/agents/atlas/default-prompt-sections.d.ts +6 -0
- package/dist/agents/atlas/default.d.ts +0 -9
- package/dist/agents/atlas/gemini-prompt-sections.d.ts +6 -0
- package/dist/agents/atlas/gpt-prompt-sections.d.ts +6 -0
- package/dist/agents/atlas/gpt.d.ts +0 -9
- package/dist/agents/atlas/prompt-section-builder.d.ts +2 -3
- package/dist/agents/atlas/shared-prompt.d.ts +9 -0
- package/dist/agents/dynamic-agent-category-skills-guide.d.ts +2 -0
- package/dist/agents/dynamic-agent-core-sections.d.ts +17 -0
- package/dist/agents/dynamic-agent-policy-sections.d.ts +6 -0
- package/dist/agents/dynamic-agent-prompt-builder.d.ts +5 -35
- package/dist/agents/dynamic-agent-prompt-types.d.ts +20 -0
- package/dist/agents/dynamic-agent-tool-categorization.d.ts +3 -0
- package/dist/agents/gpt-apply-patch-guard.d.ts +2 -0
- package/dist/agents/hephaestus/agent.d.ts +1 -1
- package/dist/agents/hephaestus/gpt-5-3-codex.d.ts +10 -11
- package/dist/agents/hephaestus/gpt-5-4.d.ts +22 -1
- package/dist/agents/hephaestus/gpt.d.ts +1 -1
- package/dist/agents/metis.d.ts +6 -6
- package/dist/agents/momus.d.ts +8 -11
- package/dist/agents/prometheus/behavioral-summary.d.ts +3 -3
- package/dist/agents/prometheus/gemini.d.ts +7 -7
- package/dist/agents/prometheus/gpt.d.ts +6 -6
- package/dist/agents/prometheus/identity-constraints.d.ts +2 -2
- package/dist/agents/prometheus/plan-generation.d.ts +2 -2
- package/dist/agents/prometheus/plan-template.d.ts +4 -4
- package/dist/agents/sisyphus/gemini.d.ts +10 -10
- package/dist/agents/sisyphus/gpt-5-4.d.ts +17 -17
- package/dist/agents/sisyphus/index.d.ts +1 -1
- package/dist/agents/sisyphus-junior/gemini.d.ts +6 -6
- package/dist/agents/sisyphus-junior/gpt-5-3-codex.d.ts +4 -4
- package/dist/agents/sisyphus-junior/gpt-5-4.d.ts +7 -7
- package/dist/agents/sisyphus-junior/gpt.d.ts +5 -5
- package/dist/agents/sisyphus.d.ts +1 -1
- package/dist/agents/types.d.ts +1 -0
- package/dist/cli/config-manager/backup-config.d.ts +6 -0
- package/dist/cli/config-manager/version-compatibility.d.ts +9 -0
- package/dist/cli/config-manager.d.ts +4 -0
- package/dist/cli/doctor/checks/system.d.ts +15 -2
- package/dist/cli/doctor/constants.d.ts +1 -1
- package/dist/cli/doctor/spawn-with-timeout.d.ts +8 -0
- package/dist/cli/index.js +27570 -18945
- package/dist/cli/install-validators.d.ts +1 -0
- package/dist/cli/mcp-oauth/login.d.ts +6 -1
- package/dist/cli/minimum-opencode-version.d.ts +1 -0
- package/dist/cli/model-fallback-types.d.ts +4 -0
- package/dist/cli/provider-model-id-transform.d.ts +1 -1
- package/dist/cli/run/continuation-state.d.ts +2 -1
- package/dist/cli/run/event-state.d.ts +0 -2
- package/dist/cli/run/types.d.ts +0 -1
- package/dist/cli/types.d.ts +4 -0
- package/dist/config/schema/agent-definitions.d.ts +3 -0
- package/dist/config/schema/agent-names.d.ts +2 -0
- package/dist/config/schema/agent-overrides.d.ts +330 -15
- package/dist/config/schema/background-task.d.ts +2 -1
- package/dist/config/schema/categories.d.ts +44 -2
- package/dist/config/schema/commands.d.ts +1 -0
- package/dist/config/schema/experimental.d.ts +1 -0
- package/dist/config/schema/fallback-models.d.ts +67 -1
- package/dist/config/schema/hooks.d.ts +3 -0
- package/dist/config/schema/oh-my-opencode-config.d.ts +345 -17
- package/dist/config/schema/sisyphus-agent.d.ts +1 -0
- package/dist/config/schema/tmux.d.ts +11 -0
- package/dist/create-hooks.d.ts +8 -0
- package/dist/create-managers.d.ts +16 -0
- package/dist/create-runtime-tmux-config.d.ts +10 -0
- package/dist/create-tools.d.ts +3 -2
- package/dist/features/background-agent/abort-with-timeout.d.ts +2 -0
- package/dist/features/background-agent/background-task-notification-template.d.ts +10 -4
- package/dist/features/background-agent/compaction-aware-message-resolver.d.ts +5 -2
- package/dist/features/background-agent/constants.d.ts +1 -0
- package/dist/features/background-agent/fallback-retry-handler.d.ts +1 -1
- package/dist/features/background-agent/index.d.ts +2 -0
- package/dist/features/background-agent/manager.d.ts +10 -0
- package/dist/features/background-agent/process-cleanup.d.ts +1 -1
- package/dist/features/background-agent/session-existence.d.ts +3 -0
- package/dist/features/background-agent/spawner.d.ts +3 -0
- package/dist/features/background-agent/subagent-spawn-limits.d.ts +1 -8
- package/dist/features/background-agent/task-poller.d.ts +2 -0
- package/dist/features/background-agent/types.d.ts +2 -0
- package/dist/features/background-agent/wait-for-task-session.d.ts +17 -0
- package/dist/features/boulder-state/storage.d.ts +8 -1
- package/dist/features/boulder-state/types.d.ts +1 -0
- package/dist/features/builtin-commands/commands.d.ts +5 -1
- package/dist/features/builtin-commands/templates/handoff.d.ts +1 -1
- package/dist/features/builtin-commands/templates/init-deep.d.ts +1 -1
- package/dist/features/builtin-commands/templates/ralph-loop.d.ts +3 -3
- package/dist/features/builtin-commands/templates/remove-ai-slops.d.ts +1 -0
- package/dist/features/builtin-commands/templates/start-work.d.ts +1 -1
- package/dist/features/builtin-commands/types.d.ts +1 -1
- package/dist/features/builtin-skills/skills/ai-slop-remover.d.ts +2 -0
- package/dist/features/builtin-skills/skills/git-master-sections/commit-workflow.d.ts +1 -0
- package/dist/features/builtin-skills/skills/git-master-sections/history-search-workflow.d.ts +1 -0
- package/dist/features/builtin-skills/skills/git-master-sections/overview.d.ts +1 -0
- package/dist/features/builtin-skills/skills/git-master-sections/quick-reference.d.ts +1 -0
- package/dist/features/builtin-skills/skills/git-master-sections/rebase-workflow.d.ts +1 -0
- package/dist/features/builtin-skills/skills/index.d.ts +2 -0
- package/dist/features/builtin-skills/skills/playwright-cli.d.ts +5 -5
- package/dist/features/builtin-skills/skills/review-work.d.ts +2 -0
- package/dist/features/claude-code-agent-loader/agent-definitions-loader.d.ts +3 -0
- package/dist/features/claude-code-agent-loader/index.d.ts +3 -0
- package/dist/features/claude-code-agent-loader/json-agent-loader.d.ts +2 -0
- package/dist/features/claude-code-agent-loader/loader.d.ts +2 -0
- package/dist/features/claude-code-agent-loader/opencode-config-agents-reader.d.ts +2 -0
- package/dist/features/claude-code-agent-loader/types.d.ts +9 -1
- package/dist/features/claude-code-mcp-loader/configure-allowed-env-vars.d.ts +5 -0
- package/dist/features/claude-code-mcp-loader/env-expander.d.ts +5 -2
- package/dist/features/claude-code-mcp-loader/index.d.ts +1 -0
- package/dist/features/claude-code-mcp-loader/scope-filter.d.ts +2 -0
- package/dist/features/claude-code-mcp-loader/types.d.ts +8 -4
- package/dist/features/claude-code-plugin-loader/discovery.d.ts +2 -1
- package/dist/features/claude-code-plugin-loader/loader.d.ts +16 -0
- package/dist/features/claude-code-plugin-loader/scope-filter.d.ts +2 -0
- package/dist/features/claude-code-plugin-loader/types.d.ts +21 -0
- package/dist/features/claude-code-session-state/state.d.ts +3 -0
- package/dist/features/context-injector/collector.d.ts +1 -0
- package/dist/features/mcp-oauth/provider.d.ts +1 -0
- package/dist/features/mcp-oauth/refresh-mutex.d.ts +26 -0
- package/dist/features/opencode-skill-loader/async-loader.d.ts +2 -2
- package/dist/features/skill-mcp-manager/connection.d.ts +3 -4
- package/dist/features/skill-mcp-manager/error-redaction.d.ts +10 -0
- package/dist/features/skill-mcp-manager/http-client.d.ts +17 -3
- package/dist/features/skill-mcp-manager/manager.d.ts +5 -3
- package/dist/features/skill-mcp-manager/oauth-handler.d.ts +12 -4
- package/dist/features/skill-mcp-manager/stdio-client.d.ts +16 -3
- package/dist/features/skill-mcp-manager/types.d.ts +25 -6
- package/dist/features/team-mode/index.d.ts +2 -0
- package/dist/features/team-mode/team-worktree/cleanup.d.ts +3 -0
- package/dist/features/team-mode/team-worktree/index.d.ts +2 -0
- package/dist/features/team-mode/team-worktree/manager.d.ts +15 -0
- package/dist/features/team-mode/types.d.ts +210 -0
- package/dist/features/tmux-subagent/manager.d.ts +16 -13
- package/dist/features/tmux-subagent/polling-manager.d.ts +5 -0
- package/dist/features/tmux-subagent/types.d.ts +2 -0
- package/dist/features/tool-metadata-store/index.d.ts +7 -0
- package/dist/features/tool-metadata-store/publish-tool-metadata.d.ts +9 -0
- package/dist/features/tool-metadata-store/recover-tool-metadata.d.ts +3 -0
- package/dist/features/tool-metadata-store/resolve-tool-call-id.d.ts +6 -0
- package/dist/features/tool-metadata-store/task-metadata-contract.d.ts +10 -0
- package/dist/hooks/agent-usage-reminder/constants.d.ts +1 -1
- package/dist/hooks/anthropic-context-window-limit-recovery/message-builder.d.ts +4 -1
- package/dist/hooks/anthropic-context-window-limit-recovery/recovery-hook.d.ts +10 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/recovery-hook.test-support.d.ts +29 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/session-timeout-map.d.ts +2 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/state.d.ts +2 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/types.d.ts +1 -0
- package/dist/hooks/atlas/background-launch-session-tracking.d.ts +11 -0
- package/dist/hooks/atlas/boulder-continuation-injector.d.ts +2 -1
- package/dist/hooks/atlas/session-last-agent.d.ts +10 -1
- package/dist/hooks/atlas/subagent-session-id.d.ts +1 -0
- package/dist/hooks/atlas/system-reminder-templates.d.ts +2 -2
- package/dist/hooks/atlas/task-context.d.ts +7 -0
- package/dist/hooks/atlas/types.d.ts +2 -0
- package/dist/hooks/auto-slash-command/executor.d.ts +1 -0
- package/dist/hooks/auto-slash-command/hook.d.ts +1 -0
- package/dist/hooks/auto-update-checker/checker/sync-package-json.d.ts +1 -1
- package/dist/hooks/auto-update-checker/constants.d.ts +19 -3
- package/dist/hooks/auto-update-checker/hook/background-update-check.d.ts +29 -1
- package/dist/hooks/auto-update-checker/hook.d.ts +22 -1
- package/dist/hooks/bash-file-read-guard.d.ts +2 -0
- package/dist/hooks/claude-code-hooks/claude-code-hooks-hook.d.ts +1 -0
- package/dist/hooks/claude-code-hooks/config-loader.d.ts +1 -0
- package/dist/hooks/claude-code-hooks/config.d.ts +1 -0
- package/dist/hooks/claude-code-hooks/handlers/session-event-handler.d.ts +3 -1
- package/dist/hooks/claude-code-hooks/session-hook-state.d.ts +1 -0
- package/dist/hooks/claude-code-hooks/tool-input-cache.d.ts +2 -0
- package/dist/hooks/claude-code-hooks/transcript.d.ts +1 -3
- package/dist/hooks/comment-checker/cli-runner.d.ts +4 -1
- package/dist/hooks/comment-checker/hook.d.ts +1 -0
- package/dist/hooks/comment-checker/pending-calls.d.ts +1 -0
- package/dist/hooks/directory-agents-injector/hook.d.ts +7 -7
- package/dist/hooks/directory-readme-injector/hook.d.ts +7 -7
- package/dist/hooks/edit-error-recovery/hook.d.ts +1 -1
- package/dist/hooks/index.d.ts +4 -1
- package/dist/hooks/json-error-recovery/hook.d.ts +1 -1
- package/dist/hooks/keyword-detector/hook.d.ts +2 -1
- package/dist/hooks/keyword-detector/ultrawork/default.d.ts +3 -4
- package/dist/hooks/keyword-detector/ultrawork/gemini.d.ts +11 -12
- package/dist/hooks/keyword-detector/ultrawork/gpt.d.ts +4 -5
- package/dist/hooks/keyword-detector/ultrawork/planner.d.ts +1 -2
- package/dist/hooks/legacy-plugin-toast/auto-migrate-runner.d.ts +2 -0
- package/dist/hooks/legacy-plugin-toast/auto-migrate.d.ts +7 -0
- package/dist/hooks/legacy-plugin-toast/hook.d.ts +18 -0
- package/dist/hooks/legacy-plugin-toast/index.d.ts +1 -0
- package/dist/hooks/legacy-plugin-toast/plugin-entry-migrator.d.ts +1 -0
- package/dist/hooks/model-fallback/chat-message-fallback-handler.d.ts +23 -0
- package/dist/hooks/model-fallback/controller-accessor.d.ts +8 -0
- package/dist/hooks/model-fallback/fallback-state-controller.d.ts +26 -0
- package/dist/hooks/model-fallback/hook.d.ts +21 -16
- package/dist/hooks/model-fallback/index.d.ts +2 -0
- package/dist/hooks/model-fallback/next-fallback.d.ts +14 -0
- package/dist/hooks/preemptive-compaction-trigger.d.ts +13 -0
- package/dist/hooks/preemptive-compaction-types.d.ts +53 -0
- package/dist/hooks/preemptive-compaction.d.ts +3 -15
- package/dist/hooks/ralph-loop/completion-promise-detector-test-input.d.ts +11 -0
- package/dist/hooks/ralph-loop/constants.d.ts +1 -0
- package/dist/hooks/ralph-loop/oracle-verification-detector.d.ts +8 -0
- package/dist/hooks/read-image-resizer/image-resizer.d.ts +3 -1
- package/dist/hooks/read-image-resizer/png-fallback-resizer.d.ts +2 -0
- package/dist/hooks/rules-injector/constants.d.ts +1 -0
- package/dist/hooks/rules-injector/finder.d.ts +1 -1
- package/dist/hooks/rules-injector/hook.d.ts +2 -0
- package/dist/hooks/rules-injector/injector.d.ts +14 -0
- package/dist/hooks/rules-injector/rule-file-finder.d.ts +9 -1
- package/dist/hooks/runtime-fallback/auto-retry-signal.d.ts +4 -0
- package/dist/hooks/runtime-fallback/error-classifier.d.ts +1 -5
- package/dist/hooks/runtime-fallback/fallback-models.d.ts +1 -1
- package/dist/hooks/runtime-fallback/retry-model-payload.d.ts +5 -1
- package/dist/hooks/session-notification-event-properties.d.ts +5 -0
- package/dist/hooks/session-recovery/types.d.ts +2 -0
- package/dist/hooks/start-work/context-info-builder.d.ts +12 -0
- package/dist/hooks/start-work/start-work-hook.d.ts +6 -0
- package/dist/hooks/start-work/worktree-block.d.ts +1 -0
- package/dist/hooks/todo-continuation-enforcer/pending-question-detection.d.ts +1 -1
- package/dist/hooks/todo-continuation-enforcer/resolve-message-info.d.ts +2 -2
- package/dist/hooks/todo-continuation-enforcer/session-state.d.ts +4 -3
- package/dist/hooks/todo-continuation-enforcer/token-limit-detection.d.ts +4 -0
- package/dist/hooks/todo-continuation-enforcer/types.d.ts +14 -0
- package/dist/hooks/todo-description-override/description.d.ts +1 -1
- package/dist/hooks/tool-pair-validator/hook.d.ts +28 -0
- package/dist/hooks/tool-pair-validator/index.d.ts +1 -0
- package/dist/hooks/unstable-agent-babysitter/task-message-analyzer.d.ts +1 -0
- package/dist/hooks/unstable-agent-babysitter/unstable-agent-babysitter-hook.d.ts +2 -0
- package/dist/hooks/write-existing-file-guard/hook.d.ts +12 -0
- package/dist/hooks/write-existing-file-guard/session-read-permissions.d.ts +3 -0
- package/dist/hooks/write-existing-file-guard/tool-execute-before-handler.d.ts +15 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +83174 -93787
- package/dist/mcp/websearch.d.ts +2 -2
- package/dist/oh-my-opencode.schema.json +1059 -8
- package/dist/openclaw/config.d.ts +1 -1
- package/dist/openclaw/dispatcher.d.ts +9 -13
- package/dist/openclaw/gateway-url-validation.d.ts +1 -0
- package/dist/openclaw/reply-listener-discord.d.ts +4 -0
- package/dist/openclaw/reply-listener-injection.d.ts +10 -0
- package/dist/openclaw/reply-listener-log.d.ts +2 -0
- package/dist/openclaw/reply-listener-paths.d.ts +7 -0
- package/dist/openclaw/reply-listener-process.d.ts +4 -0
- package/dist/openclaw/reply-listener-spawn.d.ts +5 -0
- package/dist/openclaw/reply-listener-startup.d.ts +12 -0
- package/dist/openclaw/reply-listener-state.d.ts +29 -0
- package/dist/openclaw/reply-listener-telegram.d.ts +4 -0
- package/dist/openclaw/reply-listener.d.ts +5 -18
- package/dist/openclaw/runtime-dispatch.d.ts +17 -0
- package/dist/openclaw/types.d.ts +4 -0
- package/dist/plugin/chat-params.d.ts +1 -0
- package/dist/plugin/command-execute-before.d.ts +19 -0
- package/dist/plugin/hooks/create-core-hooks.d.ts +5 -0
- package/dist/plugin/hooks/create-session-hooks.d.ts +4 -1
- package/dist/plugin/hooks/create-tool-guard-hooks.d.ts +2 -1
- package/dist/plugin/hooks/create-transform-hooks.d.ts +4 -1
- package/dist/plugin/tool-registry.d.ts +26 -1
- package/dist/plugin/types.d.ts +1 -0
- package/dist/plugin-handlers/agent-priority-order.d.ts +11 -0
- package/dist/shared/agent-display-names.d.ts +23 -2
- package/dist/shared/agent-tool-restrictions.d.ts +0 -5
- package/dist/shared/archive-entry-validator.d.ts +6 -0
- package/dist/shared/background-output-consumption.d.ts +5 -0
- package/dist/shared/compaction-marker.d.ts +13 -0
- package/dist/shared/connected-providers-cache.d.ts +2 -1
- package/dist/shared/contains-path.d.ts +2 -0
- package/dist/shared/external-plugin-detector.d.ts +14 -0
- package/dist/shared/index.d.ts +9 -0
- package/dist/shared/internal-initiator-marker.d.ts +1 -0
- package/dist/shared/is-abort-error.d.ts +1 -0
- package/dist/shared/json-file-cache-store.d.ts +16 -0
- package/dist/shared/jsonc-parser.d.ts +1 -0
- package/dist/shared/legacy-plugin-warning.d.ts +7 -0
- package/dist/shared/load-opencode-plugins.d.ts +1 -0
- package/dist/shared/log-legacy-plugin-startup-warning.d.ts +10 -0
- package/dist/shared/migrate-legacy-config-file.d.ts +1 -0
- package/dist/shared/migrate-legacy-plugin-entry.d.ts +1 -0
- package/dist/shared/migration/migrations-sidecar.d.ts +41 -0
- package/dist/shared/model-capabilities/bundled-snapshot.d.ts +2 -0
- package/dist/shared/model-capabilities/get-model-capabilities.d.ts +2 -0
- package/dist/shared/model-capabilities/index.d.ts +3 -0
- package/dist/shared/model-capabilities/runtime-model-readers.d.ts +11 -0
- package/dist/shared/{model-capabilities.d.ts → model-capabilities/types.d.ts} +35 -32
- package/dist/shared/model-suggestion-retry.d.ts +0 -9
- package/dist/shared/opencode-provider-auth.d.ts +3 -0
- package/dist/shared/parse-tools-config.d.ts +6 -0
- package/dist/shared/permission-compat.d.ts +1 -1
- package/dist/shared/plugin-entry-migrator.d.ts +3 -0
- package/dist/shared/plugin-identity.d.ts +6 -3
- package/dist/shared/posthog-activity-state.d.ts +8 -0
- package/dist/shared/posthog.d.ts +14 -0
- package/dist/shared/resolve-agent-definition-paths.d.ts +1 -0
- package/dist/shared/ripgrep-cli.d.ts +8 -0
- package/dist/shared/session-category-registry.d.ts +0 -24
- package/dist/shared/session-cursor.d.ts +6 -0
- package/dist/shared/session-prompt-params-state.d.ts +1 -0
- package/dist/shared/shell-env.d.ts +6 -2
- package/dist/shared/skill-path-resolver.d.ts +0 -8
- package/dist/shared/task-system-enabled.d.ts +6 -0
- package/dist/shared/tmux/tmux-utils/server-health.d.ts +1 -0
- package/dist/shared/tmux/tmux-utils/session-spawn.d.ts +3 -0
- package/dist/shared/tmux/tmux-utils/window-spawn.d.ts +3 -0
- package/dist/shared/tmux/tmux-utils.d.ts +3 -1
- package/dist/shared/write-file-atomically.d.ts +1 -0
- package/dist/shared/zip-entry-listing/powershell-zip-entry-listing.d.ts +4 -0
- package/dist/shared/zip-entry-listing/python-zip-entry-listing.d.ts +3 -0
- package/dist/shared/zip-entry-listing/read-zip-symlink-target.d.ts +1 -0
- package/dist/shared/zip-entry-listing/tar-zip-entry-listing.d.ts +3 -0
- package/dist/shared/zip-entry-listing/zipinfo-zip-entry-listing.d.ts +4 -0
- package/dist/shared/zip-entry-listing.d.ts +4 -0
- package/dist/testing/module-mock-lifecycle.d.ts +21 -0
- package/dist/tools/background-task/constants.d.ts +3 -3
- package/dist/tools/call-omo-agent/agent-resolver.d.ts +17 -0
- package/dist/tools/call-omo-agent/background-executor.d.ts +2 -1
- package/dist/tools/call-omo-agent/constants.d.ts +1 -1
- package/dist/tools/call-omo-agent/sync-executor.d.ts +4 -4
- package/dist/tools/call-omo-agent/tools.d.ts +2 -1
- package/dist/tools/delegate-task/anthropic-categories.d.ts +2 -0
- package/dist/tools/delegate-task/builtin-categories.d.ts +4 -0
- package/dist/tools/delegate-task/builtin-category-definition.d.ts +7 -0
- package/dist/tools/delegate-task/constants.d.ts +3 -14
- package/dist/tools/delegate-task/delegated-model-config.d.ts +3 -0
- package/dist/tools/delegate-task/executor-types.d.ts +4 -1
- package/dist/tools/delegate-task/fallback-entry-resolution.d.ts +12 -0
- package/dist/tools/delegate-task/fallback-entry-settings.d.ts +7 -0
- package/dist/tools/delegate-task/google-categories.d.ts +2 -0
- package/dist/tools/delegate-task/kimi-categories.d.ts +2 -0
- package/dist/tools/delegate-task/openai-categories.d.ts +2 -0
- package/dist/tools/delegate-task/prompt-builder.d.ts +1 -1
- package/dist/tools/delegate-task/resolve-metadata-model.d.ts +8 -0
- package/dist/tools/delegate-task/subagent-discovery.d.ts +15 -0
- package/dist/tools/delegate-task/sync-continuation.d.ts +2 -2
- package/dist/tools/delegate-task/sync-prompt-sender.d.ts +2 -0
- package/dist/tools/delegate-task/sync-task-fallback.d.ts +12 -0
- package/dist/tools/delegate-task/task-id.d.ts +2 -0
- package/dist/tools/delegate-task/tool-argument-preparation.d.ts +2 -0
- package/dist/tools/delegate-task/tool-description.d.ts +9 -0
- package/dist/tools/delegate-task/types.d.ts +5 -2
- package/dist/tools/glob/constants.d.ts +1 -1
- package/dist/tools/grep/cli.d.ts +3 -2
- package/dist/tools/grep/constants.d.ts +0 -9
- package/dist/tools/hashline-edit/tool-description.d.ts +1 -1
- package/dist/tools/look-at/constants.d.ts +1 -1
- package/dist/tools/look-at/look-at-input-preparer.d.ts +22 -0
- package/dist/tools/look-at/look-at-prompt.d.ts +2 -0
- package/dist/tools/look-at/look-at-session-runner.d.ts +12 -0
- package/dist/tools/lsp/infer-extension.d.ts +1 -0
- package/dist/tools/session-manager/file-storage.d.ts +8 -0
- package/dist/tools/session-manager/sdk-storage.d.ts +8 -0
- package/dist/tools/session-manager/sdk-unavailable.d.ts +1 -0
- package/dist/tools/session-manager/storage.d.ts +1 -1
- package/dist/tools/session-manager/tools.d.ts +19 -1
- package/dist/tools/skill/constants.d.ts +2 -2
- package/dist/tools/skill/description-formatter.d.ts +3 -0
- package/dist/tools/skill/mcp-capability-formatter.d.ts +3 -0
- package/dist/tools/skill/native-skills.d.ts +12 -0
- package/dist/tools/skill/scope-priority.d.ts +4 -0
- package/dist/tools/skill/skill-body.d.ts +2 -0
- package/dist/tools/skill/skill-matcher.d.ts +5 -0
- package/dist/tools/skill/types.d.ts +30 -2
- package/dist/tools/skill-mcp/parse-skill-mcp-arguments.d.ts +1 -0
- package/dist/tools/skill-mcp/tools.d.ts +1 -1
- package/package.json +26 -25
- package/postinstall.mjs +75 -1
- package/dist/hooks/openclaw.d.ts +0 -11
- package/dist/plugin-dispose.d.ts +0 -10
- /package/dist/{tools/delegate-task → shared}/model-string-parser.d.ts +0 -0
package/dist/create-hooks.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { AvailableSkill } from "./agents/dynamic-agent-prompt-builder";
|
|
|
2
2
|
import type { HookName, OhMyOpenCodeConfig } from "./config";
|
|
3
3
|
import type { LoadedSkill } from "./features/opencode-skill-loader/types";
|
|
4
4
|
import type { BackgroundManager } from "./features/background-agent";
|
|
5
|
+
import type { ModelFallbackControllerAccessor } from "./hooks/model-fallback";
|
|
5
6
|
import type { PluginContext } from "./plugin/types";
|
|
6
7
|
import type { ModelCacheState } from "./plugin-state";
|
|
7
8
|
export type CreatedHooks = ReturnType<typeof createHooks>;
|
|
@@ -9,9 +10,12 @@ type DisposableHook = {
|
|
|
9
10
|
dispose?: () => void;
|
|
10
11
|
} | null | undefined;
|
|
11
12
|
export type DisposableCreatedHooks = {
|
|
13
|
+
claudeCodeHooks?: DisposableHook;
|
|
14
|
+
commentChecker?: DisposableHook;
|
|
12
15
|
runtimeFallback?: DisposableHook;
|
|
13
16
|
todoContinuationEnforcer?: DisposableHook;
|
|
14
17
|
autoSlashCommand?: DisposableHook;
|
|
18
|
+
anthropicContextWindowLimitRecovery?: DisposableHook;
|
|
15
19
|
};
|
|
16
20
|
export declare function disposeCreatedHooks(hooks: DisposableCreatedHooks): void;
|
|
17
21
|
export declare function createHooks(args: {
|
|
@@ -19,6 +23,7 @@ export declare function createHooks(args: {
|
|
|
19
23
|
pluginConfig: OhMyOpenCodeConfig;
|
|
20
24
|
modelCacheState: ModelCacheState;
|
|
21
25
|
backgroundManager: BackgroundManager;
|
|
26
|
+
modelFallbackControllerAccessor?: ModelFallbackControllerAccessor;
|
|
22
27
|
isHookEnabled: (hookName: HookName) => boolean;
|
|
23
28
|
safeHookEnabled: boolean;
|
|
24
29
|
mergedSkills: LoadedSkill[];
|
|
@@ -38,6 +43,7 @@ export declare function createHooks(args: {
|
|
|
38
43
|
keywordDetector: ReturnType<typeof import("./hooks").createKeywordDetectorHook> | null;
|
|
39
44
|
contextInjectorMessagesTransform: ReturnType<typeof import("./features/context-injector").createContextInjectorMessagesTransformHook>;
|
|
40
45
|
thinkingBlockValidator: ReturnType<typeof import("./hooks").createThinkingBlockValidatorHook> | null;
|
|
46
|
+
toolPairValidator: ReturnType<typeof import("./hooks").createToolPairValidatorHook> | null;
|
|
41
47
|
commentChecker: ReturnType<typeof import("./hooks").createCommentCheckerHooks> | null;
|
|
42
48
|
toolOutputTruncator: ReturnType<typeof import("./hooks").createToolOutputTruncatorHook> | null;
|
|
43
49
|
directoryAgentsInjector: ReturnType<typeof import("./hooks").createDirectoryAgentsInjectorHook> | null;
|
|
@@ -46,6 +52,7 @@ export declare function createHooks(args: {
|
|
|
46
52
|
rulesInjector: ReturnType<typeof import("./hooks").createRulesInjectorHook> | null;
|
|
47
53
|
tasksTodowriteDisabler: ReturnType<typeof import("./hooks").createTasksTodowriteDisablerHook> | null;
|
|
48
54
|
writeExistingFileGuard: ReturnType<typeof import("./hooks").createWriteExistingFileGuardHook> | null;
|
|
55
|
+
bashFileReadGuard: ReturnType<typeof import("./hooks").createBashFileReadGuardHook> | null;
|
|
49
56
|
hashlineReadEnhancer: ReturnType<typeof import("./hooks").createHashlineReadEnhancerHook> | null;
|
|
50
57
|
jsonErrorRecovery: ReturnType<typeof import("./hooks").createJsonErrorRecoveryHook> | null;
|
|
51
58
|
readImageResizer: ReturnType<typeof import("./hooks").createReadImageResizerHook> | null;
|
|
@@ -74,5 +81,6 @@ export declare function createHooks(args: {
|
|
|
74
81
|
taskResumeInfo: ReturnType<typeof import("./hooks").createTaskResumeInfoHook> | null;
|
|
75
82
|
anthropicEffort: ReturnType<typeof import("./hooks/anthropic-effort").createAnthropicEffortHook> | null;
|
|
76
83
|
runtimeFallback: ReturnType<typeof import("./hooks").createRuntimeFallbackHook> | null;
|
|
84
|
+
legacyPluginToast: ReturnType<typeof import("./hooks").createLegacyPluginToastHook> | null;
|
|
77
85
|
};
|
|
78
86
|
export {};
|
|
@@ -3,13 +3,27 @@ import type { ModelCacheState } from "./plugin-state";
|
|
|
3
3
|
import type { PluginContext, TmuxConfig } from "./plugin/types";
|
|
4
4
|
import { BackgroundManager } from "./features/background-agent";
|
|
5
5
|
import { SkillMcpManager } from "./features/skill-mcp-manager";
|
|
6
|
+
import { initTaskToastManager } from "./features/task-toast-manager";
|
|
6
7
|
import { TmuxSessionManager } from "./features/tmux-subagent";
|
|
8
|
+
import { registerManagerForCleanup } from "./features/background-agent/process-cleanup";
|
|
7
9
|
import { createConfigHandler } from "./plugin-handlers";
|
|
10
|
+
import { markServerRunningInProcess } from "./shared/tmux/tmux-utils/server-health";
|
|
11
|
+
import type { ModelFallbackControllerAccessor } from "./hooks/model-fallback";
|
|
12
|
+
type CreateManagersDeps = {
|
|
13
|
+
BackgroundManagerClass: typeof BackgroundManager;
|
|
14
|
+
SkillMcpManagerClass: typeof SkillMcpManager;
|
|
15
|
+
TmuxSessionManagerClass: typeof TmuxSessionManager;
|
|
16
|
+
initTaskToastManagerFn: typeof initTaskToastManager;
|
|
17
|
+
registerManagerForCleanupFn: typeof registerManagerForCleanup;
|
|
18
|
+
createConfigHandlerFn: typeof createConfigHandler;
|
|
19
|
+
markServerRunningInProcessFn: typeof markServerRunningInProcess;
|
|
20
|
+
};
|
|
8
21
|
export type Managers = {
|
|
9
22
|
tmuxSessionManager: TmuxSessionManager;
|
|
10
23
|
backgroundManager: BackgroundManager;
|
|
11
24
|
skillMcpManager: SkillMcpManager;
|
|
12
25
|
configHandler: ReturnType<typeof createConfigHandler>;
|
|
26
|
+
modelFallbackControllerAccessor: ModelFallbackControllerAccessor;
|
|
13
27
|
};
|
|
14
28
|
export declare function createManagers(args: {
|
|
15
29
|
ctx: PluginContext;
|
|
@@ -17,4 +31,6 @@ export declare function createManagers(args: {
|
|
|
17
31
|
tmuxConfig: TmuxConfig;
|
|
18
32
|
modelCacheState: ModelCacheState;
|
|
19
33
|
backgroundNotificationHookEnabled: boolean;
|
|
34
|
+
deps?: Partial<CreateManagersDeps>;
|
|
20
35
|
}): Managers;
|
|
36
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { OhMyOpenCodeConfig, TmuxConfig } from "./config";
|
|
2
|
+
export declare function isTmuxIntegrationEnabled(pluginConfig: {
|
|
3
|
+
tmux?: {
|
|
4
|
+
enabled?: boolean;
|
|
5
|
+
} | undefined;
|
|
6
|
+
}): boolean;
|
|
7
|
+
export declare function isInteractiveBashEnabled(which?: (binary: string) => string | null): boolean;
|
|
8
|
+
export declare function createRuntimeTmuxConfig(pluginConfig: {
|
|
9
|
+
tmux?: OhMyOpenCodeConfig["tmux"];
|
|
10
|
+
}): TmuxConfig;
|
package/dist/create-tools.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import type { BrowserAutomationProvider } from "./config/schema/browser-automati
|
|
|
4
4
|
import type { LoadedSkill } from "./features/opencode-skill-loader/types";
|
|
5
5
|
import type { PluginContext, ToolsRecord } from "./plugin/types";
|
|
6
6
|
import type { Managers } from "./create-managers";
|
|
7
|
-
|
|
7
|
+
type CreateToolsResult = {
|
|
8
8
|
filteredTools: ToolsRecord;
|
|
9
9
|
mergedSkills: LoadedSkill[];
|
|
10
10
|
availableSkills: AvailableSkill[];
|
|
@@ -16,5 +16,6 @@ export type CreateToolsResult = {
|
|
|
16
16
|
export declare function createTools(args: {
|
|
17
17
|
ctx: PluginContext;
|
|
18
18
|
pluginConfig: OhMyOpenCodeConfig;
|
|
19
|
-
managers: Pick<Managers, "backgroundManager" | "tmuxSessionManager" | "skillMcpManager">;
|
|
19
|
+
managers: Pick<Managers, "backgroundManager" | "tmuxSessionManager" | "skillMcpManager" | "modelFallbackControllerAccessor">;
|
|
20
20
|
}): Promise<CreateToolsResult>;
|
|
21
|
+
export {};
|
|
@@ -1,10 +1,16 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export type BackgroundTaskNotificationStatus = "COMPLETED" | "CANCELLED" | "INTERRUPTED";
|
|
1
|
+
import type { BackgroundTaskStatus } from "./types";
|
|
2
|
+
export type BackgroundTaskNotificationStatus = "COMPLETED" | "CANCELLED" | "INTERRUPTED" | "ERROR";
|
|
3
|
+
export interface BackgroundTaskNotificationTask {
|
|
4
|
+
id: string;
|
|
5
|
+
description: string;
|
|
6
|
+
status: BackgroundTaskStatus;
|
|
7
|
+
error?: string;
|
|
8
|
+
}
|
|
3
9
|
export declare function buildBackgroundTaskNotificationText(input: {
|
|
4
|
-
task:
|
|
10
|
+
task: BackgroundTaskNotificationTask;
|
|
5
11
|
duration: string;
|
|
6
12
|
statusText: BackgroundTaskNotificationStatus;
|
|
7
13
|
allComplete: boolean;
|
|
8
14
|
remainingCount: number;
|
|
9
|
-
completedTasks:
|
|
15
|
+
completedTasks: BackgroundTaskNotificationTask[];
|
|
10
16
|
}): string;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { StoredMessage } from "../hook-message-injector";
|
|
2
|
+
export { isCompactionAgent } from "../../shared/compaction-marker";
|
|
2
3
|
type SessionMessage = {
|
|
4
|
+
id?: string;
|
|
3
5
|
info?: {
|
|
4
6
|
agent?: string;
|
|
5
7
|
model?: {
|
|
@@ -11,8 +13,9 @@ type SessionMessage = {
|
|
|
11
13
|
modelID?: string;
|
|
12
14
|
tools?: StoredMessage["tools"];
|
|
13
15
|
};
|
|
16
|
+
parts?: Array<{
|
|
17
|
+
type?: string;
|
|
18
|
+
}>;
|
|
14
19
|
};
|
|
15
|
-
export declare function isCompactionAgent(agent: string | undefined): boolean;
|
|
16
20
|
export declare function resolvePromptContextFromSessionMessages(messages: SessionMessage[], sessionID?: string): StoredMessage | null;
|
|
17
21
|
export declare function findNearestMessageExcludingCompaction(messageDir: string, sessionID?: string): StoredMessage | null;
|
|
18
|
-
export {};
|
|
@@ -9,6 +9,7 @@ export declare const DEFAULT_MAX_TOOL_CALLS = 4000;
|
|
|
9
9
|
export declare const DEFAULT_CIRCUIT_BREAKER_CONSECUTIVE_THRESHOLD = 20;
|
|
10
10
|
export declare const DEFAULT_CIRCUIT_BREAKER_ENABLED = true;
|
|
11
11
|
export declare const MIN_RUNTIME_BEFORE_STALE_MS = 30000;
|
|
12
|
+
export declare const DEFAULT_SESSION_GONE_TIMEOUT_MS = 60000;
|
|
12
13
|
export declare const MIN_IDLE_TIME_MS = 5000;
|
|
13
14
|
export declare const POLLING_INTERVAL_MS = 3000;
|
|
14
15
|
export declare const TASK_CLEANUP_DELAY_MS: number;
|
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
export * from "./types";
|
|
2
2
|
export { BackgroundManager, type SubagentSessionCreatedEvent, type OnSubagentSessionCreated } from "./manager";
|
|
3
|
+
export { waitForTaskSessionID } from "./wait-for-task-session";
|
|
4
|
+
export type { WaitForTaskSessionIDOptions } from "./wait-for-task-session";
|
|
@@ -41,6 +41,8 @@ export declare class BackgroundManager {
|
|
|
41
41
|
private completedTaskSummaries;
|
|
42
42
|
private idleDeferralTimers;
|
|
43
43
|
private notificationQueueByParent;
|
|
44
|
+
private observedOutputSessions;
|
|
45
|
+
private observedIncompleteTodosBySession;
|
|
44
46
|
private rootDescendantCounts;
|
|
45
47
|
private preStartDescendantReservations;
|
|
46
48
|
private enableParentSessionNotifications;
|
|
@@ -52,6 +54,7 @@ export declare class BackgroundManager {
|
|
|
52
54
|
onShutdown?: () => void | Promise<void>;
|
|
53
55
|
enableParentSessionNotifications?: boolean;
|
|
54
56
|
});
|
|
57
|
+
private abortSessionWithLogging;
|
|
55
58
|
assertCanSpawn(parentSessionID: string): Promise<SubagentSpawnContext>;
|
|
56
59
|
reserveSubagentSpawn(parentSessionID: string): Promise<{
|
|
57
60
|
spawnContext: SubagentSpawnContext;
|
|
@@ -87,7 +90,12 @@ export declare class BackgroundManager {
|
|
|
87
90
|
}): Promise<BackgroundTask>;
|
|
88
91
|
resume(input: ResumeInput): Promise<BackgroundTask>;
|
|
89
92
|
private checkSessionTodos;
|
|
93
|
+
private markSessionOutputObserved;
|
|
94
|
+
private clearSessionOutputObserved;
|
|
95
|
+
private clearSessionTodoObservation;
|
|
96
|
+
private hasOutputSignalFromPart;
|
|
90
97
|
handleEvent(event: Event): void;
|
|
98
|
+
private handleSessionErrorEvent;
|
|
91
99
|
private tryFallbackRetry;
|
|
92
100
|
markForNotification(task: BackgroundTask): void;
|
|
93
101
|
getPendingNotifications(sessionID: string): BackgroundTask[];
|
|
@@ -145,6 +153,8 @@ export declare class BackgroundManager {
|
|
|
145
153
|
private hasRunningTasks;
|
|
146
154
|
private pruneStaleTasksAndNotifications;
|
|
147
155
|
private checkAndInterruptStaleTasks;
|
|
156
|
+
private verifySessionExists;
|
|
157
|
+
private failCrashedTask;
|
|
148
158
|
private pollRunningTasks;
|
|
149
159
|
/**
|
|
150
160
|
* Shutdown the manager gracefully.
|
|
@@ -3,6 +3,6 @@ interface CleanupTarget {
|
|
|
3
3
|
}
|
|
4
4
|
export declare function registerManagerForCleanup(manager: CleanupTarget): void;
|
|
5
5
|
export declare function unregisterManagerForCleanup(manager: CleanupTarget): void;
|
|
6
|
-
/** @internal
|
|
6
|
+
/** @internal - test-only reset for module-level singleton state */
|
|
7
7
|
export declare function _resetForTesting(): void;
|
|
8
8
|
export {};
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { BackgroundTask, LaunchInput, ResumeInput } from "./types";
|
|
2
2
|
import type { OpencodeClient, OnSubagentSessionCreated, QueueItem } from "./constants";
|
|
3
3
|
import type { ConcurrencyManager } from "./concurrency";
|
|
4
|
+
export declare const FALLBACK_AGENT = "general";
|
|
5
|
+
export declare function isAgentNotFoundError(error: unknown): boolean;
|
|
6
|
+
export declare function buildFallbackBody(originalBody: Record<string, unknown>, fallbackAgent: string): Record<string, unknown>;
|
|
4
7
|
export interface SpawnerContext {
|
|
5
8
|
client: OpencodeClient;
|
|
6
9
|
directory: string;
|
|
@@ -1,23 +1,16 @@
|
|
|
1
1
|
import type { BackgroundTaskConfig } from "../../config/schema";
|
|
2
2
|
import type { OpencodeClient } from "./constants";
|
|
3
3
|
export declare const DEFAULT_MAX_SUBAGENT_DEPTH = 3;
|
|
4
|
-
export declare const DEFAULT_MAX_ROOT_SESSION_SPAWN_BUDGET = 50;
|
|
5
4
|
export interface SubagentSpawnContext {
|
|
6
5
|
rootSessionID: string;
|
|
7
6
|
parentDepth: number;
|
|
8
7
|
childDepth: number;
|
|
9
8
|
}
|
|
10
9
|
export declare function getMaxSubagentDepth(config?: BackgroundTaskConfig): number;
|
|
11
|
-
export declare function
|
|
12
|
-
export declare function resolveSubagentSpawnContext(client: OpencodeClient, parentSessionID: string): Promise<SubagentSpawnContext>;
|
|
10
|
+
export declare function resolveSubagentSpawnContext(client: OpencodeClient, parentSessionID: string, directory?: string): Promise<SubagentSpawnContext>;
|
|
13
11
|
export declare function createSubagentDepthLimitError(input: {
|
|
14
12
|
childDepth: number;
|
|
15
13
|
maxDepth: number;
|
|
16
14
|
parentSessionID: string;
|
|
17
15
|
rootSessionID: string;
|
|
18
16
|
}): Error;
|
|
19
|
-
export declare function createSubagentDescendantLimitError(input: {
|
|
20
|
-
rootSessionID: string;
|
|
21
|
-
descendantCount: number;
|
|
22
|
-
maxDescendants: number;
|
|
23
|
-
}): Error;
|
|
@@ -6,6 +6,7 @@ export declare function pruneStaleTasksAndNotifications(args: {
|
|
|
6
6
|
tasks: Map<string, BackgroundTask>;
|
|
7
7
|
notifications: Map<string, BackgroundTask[]>;
|
|
8
8
|
onTaskPruned: (taskId: string, task: BackgroundTask, errorMessage: string) => void;
|
|
9
|
+
taskTtlMs?: number;
|
|
9
10
|
}): void;
|
|
10
11
|
export type SessionStatusMap = Record<string, {
|
|
11
12
|
type: string;
|
|
@@ -13,6 +14,7 @@ export type SessionStatusMap = Record<string, {
|
|
|
13
14
|
export declare function checkAndInterruptStaleTasks(args: {
|
|
14
15
|
tasks: Iterable<BackgroundTask>;
|
|
15
16
|
client: OpencodeClient;
|
|
17
|
+
directory?: string;
|
|
16
18
|
config: BackgroundTaskConfig | undefined;
|
|
17
19
|
concurrencyManager: ConcurrencyManager;
|
|
18
20
|
notifyParentSession: (task: BackgroundTask) => Promise<void>;
|
|
@@ -58,6 +58,8 @@ export interface BackgroundTask {
|
|
|
58
58
|
lastMsgCount?: number;
|
|
59
59
|
/** Number of consecutive polls with stable message count */
|
|
60
60
|
stablePolls?: number;
|
|
61
|
+
/** Number of consecutive polls where session was missing from status map */
|
|
62
|
+
consecutiveMissedPolls?: number;
|
|
61
63
|
}
|
|
62
64
|
export interface LaunchInput {
|
|
63
65
|
description: string;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { BackgroundTaskStatus } from "./types";
|
|
2
|
+
type AbortSignalLike = {
|
|
3
|
+
aborted: boolean;
|
|
4
|
+
};
|
|
5
|
+
interface TaskReader {
|
|
6
|
+
getTask(taskID: string): {
|
|
7
|
+
sessionID?: string;
|
|
8
|
+
status?: BackgroundTaskStatus;
|
|
9
|
+
} | undefined;
|
|
10
|
+
}
|
|
11
|
+
export interface WaitForTaskSessionIDOptions {
|
|
12
|
+
timeoutMs?: number;
|
|
13
|
+
intervalMs?: number;
|
|
14
|
+
signal?: AbortSignalLike;
|
|
15
|
+
}
|
|
16
|
+
export declare function waitForTaskSessionID(manager: TaskReader, taskID: string, options?: WaitForTaskSessionIDOptions): Promise<string | undefined>;
|
|
17
|
+
export {};
|
|
@@ -7,7 +7,7 @@ import type { BoulderState, PlanProgress, TaskSessionState } from "./types";
|
|
|
7
7
|
export declare function getBoulderFilePath(directory: string): string;
|
|
8
8
|
export declare function readBoulderState(directory: string): BoulderState | null;
|
|
9
9
|
export declare function writeBoulderState(directory: string, state: BoulderState): boolean;
|
|
10
|
-
export declare function appendSessionId(directory: string, sessionId: string): BoulderState | null;
|
|
10
|
+
export declare function appendSessionId(directory: string, sessionId: string, origin?: "direct" | "appended"): BoulderState | null;
|
|
11
11
|
export declare function clearBoulderState(directory: string): boolean;
|
|
12
12
|
export declare function getTaskSessionState(directory: string, taskKey: string): TaskSessionState | null;
|
|
13
13
|
export declare function upsertTaskSessionState(directory: string, input: {
|
|
@@ -25,6 +25,13 @@ export declare function upsertTaskSessionState(directory: string, input: {
|
|
|
25
25
|
export declare function findPrometheusPlans(directory: string): string[];
|
|
26
26
|
/**
|
|
27
27
|
* Parse a plan file and count checkbox progress.
|
|
28
|
+
*
|
|
29
|
+
* Only top-level (zero-indent) checkboxes under `## TODOs` and
|
|
30
|
+
* `## Final Verification Wave` sections are counted. The checkbox
|
|
31
|
+
* body must carry a valid task label (`N.` for TODOs, `FN.` for
|
|
32
|
+
* Final Verification Wave). Nested acceptance-criteria checkboxes
|
|
33
|
+
* and checkboxes in other sections are intentionally ignored so
|
|
34
|
+
* that progress tracking stays aligned with `readCurrentTopLevelTask`.
|
|
28
35
|
*/
|
|
29
36
|
export declare function getPlanProgress(planPath: string): PlanProgress;
|
|
30
37
|
/**
|
|
@@ -11,6 +11,7 @@ export interface BoulderState {
|
|
|
11
11
|
started_at: string;
|
|
12
12
|
/** Session IDs that have worked on this plan */
|
|
13
13
|
session_ids: string[];
|
|
14
|
+
session_origins?: Record<string, "direct" | "appended">;
|
|
14
15
|
/** Plan name derived from filename */
|
|
15
16
|
plan_name: string;
|
|
16
17
|
/** Agent type to use when resuming (e.g., 'atlas') */
|
|
@@ -1,2 +1,6 @@
|
|
|
1
1
|
import type { BuiltinCommandName, BuiltinCommands } from "./types";
|
|
2
|
-
|
|
2
|
+
interface LoadBuiltinCommandsOptions {
|
|
3
|
+
useRegisteredAgents?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare function loadBuiltinCommands(disabledCommands?: BuiltinCommandName[], options?: LoadBuiltinCommandsOptions): BuiltinCommands;
|
|
6
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const HANDOFF_TEMPLATE = "# Handoff
|
|
1
|
+
export declare const HANDOFF_TEMPLATE = "# Handoff \u547D\u4EE4\n\n## \u76EE\u7684\n\n\u5728\u4EE5\u4E0B\u60C5\u51B5\u4F7F\u7528 /handoff\uFF1A\n- \u5F53\u524D\u4F1A\u8BDD\u4E0A\u4E0B\u6587\u53D8\u5F97\u8FC7\u957F\uFF0C\u8D28\u91CF\u6B63\u5728\u4E0B\u964D\n- \u4F60\u60F3\u91CD\u65B0\u5F00\u59CB\u540C\u65F6\u4FDD\u7559\u6B64\u4F1A\u8BDD\u7684\u57FA\u672C\u4E0A\u4E0B\u6587\n- \u4E0A\u4E0B\u6587\u7A97\u53E3\u63A5\u8FD1\u5BB9\u91CF\n\n\u8FD9\u4F1A\u521B\u5EFA\u4E00\u4E2A\u8BE6\u7EC6\u7684\u4E0A\u4E0B\u6587\u6458\u8981\uFF0C\u53EF\u7528\u4E8E\u5728\u65B0\u4F1A\u8BDD\u4E2D\u7EE7\u7EED\u5DE5\u4F5C\u3002\n\n---\n\n# PHASE 0: \u9A8C\u8BC1\u8BF7\u6C42\n\n\u5728\u7EE7\u7EED\u4E4B\u524D\uFF0C\u786E\u8BA4\uFF1A\n- [ ] \u6B64\u4F1A\u8BDD\u4E2D\u6709\u9700\u8981\u4FDD\u7559\u7684\u6709\u610F\u4E49\u7684\u5DE5\u4F5C\u6216\u4E0A\u4E0B\u6587\n- [ ] \u7528\u6237\u60F3\u8981\u521B\u5EFA handoff \u6458\u8981\uFF08\u4E0D\u4EC5\u4EC5\u662F\u8BE2\u95EE\uFF09\n\n\u5982\u679C\u4F1A\u8BDD\u51E0\u4E4E\u4E3A\u7A7A\u6216\u6CA1\u6709\u6709\u610F\u4E49\u7684\u4E0A\u4E0B\u6587\uFF0C\u8BF7\u544A\u77E5\u7528\u6237\u6CA1\u6709\u5B9E\u8D28\u6027\u5185\u5BB9\u53EF\u4EE5\u4EA4\u63A5\u3002\n\n---\n\n# PHASE 1: \u6536\u96C6\u7A0B\u5E8F\u5316\u4E0A\u4E0B\u6587\n\n\u6267\u884C\u8FD9\u4E9B\u5DE5\u5177\u4EE5\u6536\u96C6\u5177\u4F53\u6570\u636E\uFF1A\n\n1. session_read({ session_id: \"$SESSION_ID\" }) - \u5B8C\u6574\u4F1A\u8BDD\u5386\u53F2\n2. todoread() - \u5F53\u524D\u4EFB\u52A1\u8FDB\u5EA6\n3. Bash({ command: \"git diff --stat HEAD~10..HEAD\" }) - \u8FD1\u671F\u6587\u4EF6\u53D8\u66F4\n4. Bash({ command: \"git status --porcelain\" }) - \u672A\u63D0\u4EA4\u7684\u53D8\u66F4\n\n\u5EFA\u8BAE\u6267\u884C\u987A\u5E8F\uFF1A\n\n```\nsession_read({ session_id: \"$SESSION_ID\" })\ntodoread()\nBash({ command: \"git diff --stat HEAD~10..HEAD\" })\nBash({ command: \"git status --porcelain\" })\n```\n\n\u5206\u6790\u6536\u96C6\u5230\u7684\u8F93\u51FA\u4EE5\u7406\u89E3\uFF1A\n- \u7528\u6237\u8981\u6C42\u4E86\u4EC0\u4E48\uFF08\u786E\u5207\u63AA\u8F9E\uFF09\n- \u5B8C\u6210\u4E86\u4EC0\u4E48\u5DE5\u4F5C\n- \u54EA\u4E9B\u4EFB\u52A1\u4ECD\u672A\u5B8C\u6210\uFF08\u5305\u542B todo \u72B6\u6001\uFF09\n- \u505A\u4E86\u54EA\u4E9B\u51B3\u5B9A\n- \u4FEE\u6539\u6216\u8BA8\u8BBA\u4E86\u54EA\u4E9B\u6587\u4EF6\uFF08\u5305\u542B git diff/stat + status\uFF09\n- \u5EFA\u7ACB\u4E86\u54EA\u4E9B\u6A21\u5F0F\u3001\u7EA6\u675F\u6216\u504F\u597D\n\n---\n\n# PHASE 2: \u63D0\u53D6\u4E0A\u4E0B\u6587\n\n\u4EE5\u7B2C\u4E00\u4EBA\u79F0\u89C6\u89D2\u64B0\u5199\u4E0A\u4E0B\u6587\u6458\u8981\uFF08\"\u6211\u505A\u4E86...\"\uFF0C\"\u6211\u544A\u8BC9\u4F60\u4E86...\"\uFF09\u3002\n\n\u5173\u6CE8\uFF1A\n- \u80FD\u529B\u548C\u884C\u4E3A\uFF0C\u800C\u975E\u9010\u6587\u4EF6\u7684\u5B9E\u73B0\u7EC6\u8282\n- \u5BF9\u7EE7\u7EED\u5DE5\u4F5C\u91CD\u8981\u7684\u4E8B\u9879\n- \u907F\u514D\u8FC7\u591A\u7684\u5B9E\u73B0\u7EC6\u8282\uFF08\u53D8\u91CF\u540D\u3001\u5B58\u50A8\u952E\u3001\u5E38\u91CF\uFF09\uFF0C\u9664\u975E\u5173\u952E\n- \u7528\u6237\u8BF7\u6C42\u5FC5\u987B\u9010\u5B57\u4FDD\u7559\uFF08\u4E0D\u8981\u6539\u8FF0\uFF09\n- \u660E\u786E\u7EA6\u675F\u5FC5\u987B\u9010\u5B57\u4FDD\u7559\uFF08\u4E0D\u8981\u7F16\u9020\uFF09\n\n\u63D0\u53D6\u65F6\u8003\u8651\u7684\u95EE\u9898\uFF1A\n- \u6211\u521A\u521A\u505A\u4E86\u4EC0\u4E48\u6216\u5B9E\u73B0\u4E86\u4EC0\u4E48\uFF1F\n- \u6211\u5DF2\u7ECF\u7ED9\u51FA\u4E86\u54EA\u4E9B\u4ECD\u7136\u76F8\u5173\u7684\u6307\u793A\uFF08\u4F8B\u5982\uFF1A\u9075\u5FAA\u4EE3\u7801\u5E93\u4E2D\u7684\u6A21\u5F0F\uFF09\uFF1F\n- \u6211\u544A\u8BC9\u8FC7\u4F60\u54EA\u4E9B\u91CD\u8981\u6587\u4EF6\u6216\u6211\u6B63\u5728\u5904\u7406\u7684\u6587\u4EF6\uFF1F\n- \u6211\u662F\u5426\u63D0\u4F9B\u4E86\u5E94\u8BE5\u5305\u542B\u7684\u8BA1\u5212\u6216\u89C4\u683C\uFF1F\n- \u6211\u5DF2\u7ECF\u544A\u8BC9\u4F60\u7684\u54EA\u4E9B\u91CD\u8981\u5185\u5BB9\uFF08\u5E93\u3001\u6A21\u5F0F\u3001\u7EA6\u675F\u3001\u504F\u597D\uFF09\uFF1F\n- \u6211\u53D1\u73B0\u4E86\u54EA\u4E9B\u91CD\u8981\u7684\u6280\u672F\u7EC6\u8282\uFF08API\u3001\u65B9\u6CD5\u3001\u6A21\u5F0F\uFF09\uFF1F\n- \u6211\u53D1\u73B0\u4E86\u54EA\u4E9B\u6CE8\u610F\u4E8B\u9879\u3001\u9650\u5236\u6216\u672A\u89E3\u51B3\u7684\u95EE\u9898\uFF1F\n\n---\n\n# PHASE 3: \u683C\u5F0F\u5316\u8F93\u51FA\n\n\u4F7F\u7528\u6B64\u786E\u5207\u683C\u5F0F\u751F\u6210 handoff \u6458\u8981\uFF1A\n\n```\nHANDOFF CONTEXT\n===============\n\nUSER REQUESTS (AS-IS)\n---------------------\n- [\u786E\u5207\u9010\u5B57\u7684\u7528\u6237\u8BF7\u6C42 - \u4E0D\u8981\u6539\u8FF0]\n\nGOAL\n----\n[\u4E00\u53E5\u8BDD\u63CF\u8FF0\u4E0B\u4E00\u6B65\u5E94\u8BE5\u505A\u4EC0\u4E48]\n\nWORK COMPLETED\n--------------\n- [\u5DF2\u5B8C\u6210\u5DE5\u4F5C\u7684\u7B2C\u4E00\u4EBA\u79F0\u8981\u70B9]\n- [\u76F8\u5173\u65F6\u5305\u542B\u5177\u4F53\u6587\u4EF6\u8DEF\u5F84]\n- [\u8BB0\u5F55\u5173\u952E\u5B9E\u73B0\u51B3\u7B56]\n\nCURRENT STATE\n-------------\n- [\u4EE3\u7801\u5E93\u6216\u4EFB\u52A1\u7684\u5F53\u524D\u72B6\u6001]\n- [\u9002\u7528\u65F6\u7684\u6784\u5EFA/\u6D4B\u8BD5\u72B6\u6001]\n- [\u4EFB\u4F55\u73AF\u5883\u6216\u914D\u7F6E\u72B6\u6001]\n\nPENDING TASKS\n-------------\n- [\u5DF2\u8BA1\u5212\u4F46\u672A\u5B8C\u6210\u7684\u4EFB\u52A1]\n- [\u4E0B\u4E00\u6B65\u903B\u8F91\u6B65\u9AA4]\n- [\u9047\u5230\u7684\u4EFB\u4F55\u963B\u788D\u6216\u95EE\u9898]\n- [\u5305\u542B\u6765\u81EA todoread() \u7684\u5F53\u524D todo \u72B6\u6001]\n\nKEY FILES\n---------\n- [path/to/file1] - [\u7B80\u8981\u89D2\u8272\u63CF\u8FF0]\n- [path/to/file2] - [\u7B80\u8981\u89D2\u8272\u63CF\u8FF0]\n\uFF08\u6700\u591A 10 \u4E2A\u6587\u4EF6\uFF0C\u6309\u91CD\u8981\u6027\u6392\u5E8F\uFF09\n- \uFF08\u5305\u542B\u6765\u81EA git diff/stat \u548C git status \u7684\u6587\u4EF6\uFF09\n\nIMPORTANT DECISIONS\n-------------------\n- [\u505A\u51FA\u7684\u6280\u672F\u51B3\u7B56\u53CA\u539F\u56E0]\n- [\u8003\u8651\u7684\u6743\u8861]\n- [\u5EFA\u7ACB\u7684\u6A21\u5F0F\u6216\u7EA6\u5B9A]\n\nEXPLICIT CONSTRAINTS\n--------------------\n- [\u4EC5\u9010\u5B57\u7EA6\u675F - \u6765\u81EA\u7528\u6237\u6216\u73B0\u6709 AGENTS.md]\n- \u5982\u679C\u6CA1\u6709\uFF0C\u5199\uFF1ANone\n\nCONTEXT FOR CONTINUATION\n------------------------\n- [\u4E0B\u4E00\u4F1A\u8BDD\u9700\u8981\u77E5\u9053\u7684\u5185\u5BB9\u4EE5\u7EE7\u7EED\u5DE5\u4F5C]\n- [\u9700\u8981\u6CE8\u610F\u7684\u8B66\u544A\u6216\u9677\u9631]\n- [\u76F8\u5173\u6587\u6863\u7684\u53C2\u8003]\n```\n\n\u6458\u8981\u89C4\u5219\uFF1A\n- \u5E26\u9879\u76EE\u7B26\u53F7\u7684\u7EAF\u6587\u672C\n- \u4E0D\u4F7F\u7528 # markdown \u6807\u9898\uFF08\u4F7F\u7528\u4E0A\u9762\u7684\u5E26\u7834\u6298\u53F7\u7684\u683C\u5F0F\uFF09\n- \u5185\u5BB9\u4E2D\u4E0D\u4F7F\u7528\u7C97\u4F53\u3001\u659C\u4F53\u6216\u4EE3\u7801\u5757\n- \u4F7F\u7528\u76F8\u5BF9\u4E8E\u5DE5\u4F5C\u533A\u7684\u6587\u4EF6\u8DEF\u5F84\n- \u4FDD\u6301\u805A\u7126 - \u4EC5\u5305\u542B\u5BF9\u7EE7\u7EED\u5DE5\u4F5C\u91CD\u8981\u7684\u4E8B\u9879\n- \u6839\u636E\u590D\u6742\u5EA6\u9009\u62E9\u9002\u5F53\u957F\u5EA6\n- \u7528\u6237\u8BF7\u6C42\u5FC5\u987B\u9010\u5B57\u4FDD\u7559\n\n---\n\n# PHASE 4: \u63D0\u4F9B\u8BF4\u660E\n\n\u751F\u6210\u6458\u8981\u540E\uFF0C\u6307\u5BFC\u7528\u6237\uFF1A\n\n```\n---\n\nTO CONTINUE IN A NEW SESSION:\n\n1. \u5728 OpenCode TUI \u4E2D\u6309 'n' \u6253\u5F00\u65B0\u4F1A\u8BDD\uFF0C\u6216\u5728\u65B0\u7EC8\u7AEF\u4E2D\u8FD0\u884C 'opencode'\n2. \u5C06\u4E0A\u9762\u7684 HANDOFF CONTEXT \u4F5C\u4E3A\u7B2C\u4E00\u6761\u6D88\u606F\u7C98\u8D34\n3. \u6DFB\u52A0\u4F60\u7684\u8BF7\u6C42\uFF1A\"\u4ECE\u4E0A\u9762\u7684 handoff context \u7EE7\u7EED\u3002[\u4F60\u7684\u4E0B\u4E00\u4E2A\u4EFB\u52A1]\"\n\n\u65B0\u4F1A\u8BDD\u5C06\u62E5\u6709\u7EE7\u7EED\u5DE5\u4F5C\u6240\u9700\u7684\u6240\u6709\u4E0A\u4E0B\u6587\u3002\n```\n\n---\n\n# \u91CD\u8981\u7EA6\u675F\n\n- \u4E0D\u8981\u5C1D\u8BD5\u4EE5\u7F16\u7A0B\u65B9\u5F0F\u521B\u5EFA\u65B0\u4F1A\u8BDD\uFF08\u4EE3\u7406\u65E0\u6CD5\u4F7F\u7528 API\uFF09\n- \u63D0\u4F9B\u4E0D\u4F9D\u8D56\u6B64\u4F1A\u8BDD\u8BBF\u95EE\u7684\u72EC\u7ACB\u6458\u8981\n- \u5305\u542B\u76F8\u5BF9\u4E8E\u5DE5\u4F5C\u533A\u7684\u6587\u4EF6\u8DEF\u5F84\n- \u4E0D\u8981\u5305\u542B\u654F\u611F\u4FE1\u606F\uFF08API \u5BC6\u94A5\u3001\u51ED\u8BC1\u3001\u5BC6\u94A5\uFF09\n- KEY FILES \u90E8\u5206\u4E0D\u8D85\u8FC7 10 \u4E2A\u6587\u4EF6\n- \u5C06 GOAL \u90E8\u5206\u4FDD\u6301\u5728\u4E00\u53E5\u8BDD\u6216\u77ED\u6BB5\u843D\n\n---\n\n# \u7ACB\u5373\u6267\u884C\n\n\u9996\u5148\u6536\u96C6\u7A0B\u5E8F\u5316\u4E0A\u4E0B\u6587\uFF0C\u7136\u540E\u7EFC\u5408 handoff \u6458\u8981\u3002\n";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const INIT_DEEP_TEMPLATE = "# /init-deep\n\n\u751F\u6210\u5C42\u6B21\u5316\u7684 AGENTS.md \u6587\u4EF6\u3002\u6839\u76EE\u5F55 + \u6309\u590D\u6742\u5EA6\u8BC4\u5206\u7684\u5B50\u76EE\u5F55\u3002\n\n## \u4F7F\u7528\u65B9\u6CD5\n\n```\n/init-deep # \u66F4\u65B0\u6A21\u5F0F: \u4FEE\u6539\u73B0\u6709 + \u5728\u9700\u8981\u65F6\u521B\u5EFA\u65B0\u7684\n/init-deep --create-new # \u8BFB\u53D6\u73B0\u6709 \u2192 \u5220\u9664\u5168\u90E8 \u2192 \u4ECE\u5934\u91CD\u65B0\u751F\u6210\n/init-deep --max-depth=2 # \u9650\u5236\u76EE\u5F55\u6DF1\u5EA6 (\u9ED8\u8BA4: 3)\n```\n\n---\n\n## \u5DE5\u4F5C\u6D41\u7A0B (\u6982\u8981)\n\n1. **\u53D1\u73B0 + \u5206\u6790** (\u5E76\u884C)\n - \u7ACB\u5373\u89E6\u53D1\u540E\u53F0 explore agents\n - \u4E3B\u4F1A\u8BDD: bash \u7ED3\u6784 + LSP codemap + \u8BFB\u53D6\u73B0\u6709 AGENTS.md\n2. **\u8BC4\u5206\u548C\u51B3\u7B56** - \u4ECE\u5408\u5E76\u7684\u53D1\u73B0\u4E2D\u786E\u5B9A AGENTS.md \u4F4D\u7F6E\n3. **\u751F\u6210** - \u6839\u76EE\u5F55\u4F18\u5148\uFF0C\u7136\u540E\u5E76\u884C\u5904\u7406\u5B50\u76EE\u5F55\n4. **\u5BA1\u67E5** - \u53BB\u91CD\u3001\u4FEE\u526A\u3001\u9A8C\u8BC1\n\n<critical>\n**TodoWrite \u6240\u6709\u9636\u6BB5\u3002\u5B9E\u65F6\u6807\u8BB0 in_progress \u2192 completed\u3002**\n```\nTodoWrite([\n { id: \"discovery\", content: \"\u89E6\u53D1 explore agents + LSP codemap + \u8BFB\u53D6\u73B0\u6709\", status: \"pending\", priority: \"high\" },\n { id: \"scoring\", content: \"\u4E3A\u76EE\u5F55\u8BC4\u5206\uFF0C\u786E\u5B9A\u4F4D\u7F6E\", status: \"pending\", priority: \"high\" },\n { id: \"generate\", content: \"\u751F\u6210 AGENTS.md \u6587\u4EF6 (\u6839\u76EE\u5F55 + \u5B50\u76EE\u5F55)\", status: \"pending\", priority: \"high\" },\n { id: \"review\", content: \"\u53BB\u91CD\u3001\u9A8C\u8BC1\u3001\u4FEE\u526A\", status: \"pending\", priority: \"medium\" }\n])\n```\n</critical>\n\n---\n\n## Phase 1: \u53D1\u73B0 + \u5206\u6790 (\u5E76\u884C)\n\n**\u5C06 \"discovery\" \u6807\u8BB0\u4E3A in_progress\u3002**\n\n### \u7ACB\u5373\u89E6\u53D1\u540E\u53F0 Explore Agents\n\n\u4E0D\u8981\u7B49\u5F85 \u2014 \u8FD9\u4E9B\u5F02\u6B65\u8FD0\u884C\uFF0C\u800C\u4E3B\u4F1A\u8BDD\u540C\u65F6\u5DE5\u4F5C\u3002\n\n```\n// \u540C\u65F6\u89E6\u53D1\uFF0C\u7A0D\u540E\u6536\u96C6\u7ED3\u679C\ntask(subagent_type=\"explore\", load_skills=[], description=\"Explore project structure / \u63A2\u7D22\u9879\u76EE\u7ED3\u6784\", run_in_background=true, prompt=\"Project structure: PREDICT standard patterns for detected language \u2192 REPORT deviations only / \u9879\u76EE\u7ED3\u6784: \u9884\u6D4B\u68C0\u6D4B\u5230\u8BED\u8A00\u7684\u6807\u51C6\u6A21\u5F0F \u2192 \u4EC5\u62A5\u544A\u504F\u79BB\")\ntask(subagent_type=\"explore\", load_skills=[], description=\"Find entry points / \u627E\u5230\u5165\u53E3\u70B9\", run_in_background=true, prompt=\"Entry points: FIND main files \u2192 REPORT non-standard organization / \u5165\u53E3\u70B9: \u627E\u5230\u4E3B\u6587\u4EF6 \u2192 \u62A5\u544A\u975E\u6807\u51C6\u7EC4\u7EC7\")\ntask(subagent_type=\"explore\", load_skills=[], description=\"Find conventions / \u627E\u5230\u7EA6\u5B9A\", run_in_background=true, prompt=\"Conventions: FIND config files (.eslintrc, pyproject.toml, .editorconfig) \u2192 REPORT project-specific rules / \u7EA6\u5B9A: \u627E\u5230\u914D\u7F6E\u6587\u4EF6 \u2192 \u62A5\u544A\u9879\u76EE\u7279\u5B9A\u89C4\u5219\")\ntask(subagent_type=\"explore\", load_skills=[], description=\"Find anti-patterns / \u627E\u5230\u53CD\u6A21\u5F0F\", run_in_background=true, prompt=\"Anti-patterns: FIND 'DO NOT', 'NEVER', 'ALWAYS', 'DEPRECATED' comments \u2192 LIST forbidden patterns / \u53CD\u6A21\u5F0F: \u627E\u5230\u7981\u6B62\u6CE8\u91CA \u2192 \u5217\u51FA\u7981\u6B62\u7684\u6A21\u5F0F\")\ntask(subagent_type=\"explore\", load_skills=[], description=\"Explore build/CI / \u63A2\u7D22\u6784\u5EFA/CI\", run_in_background=true, prompt=\"Build/CI: FIND .github/workflows, Makefile \u2192 REPORT non-standard patterns / \u6784\u5EFA/CI: \u627E\u5230\u5DE5\u4F5C\u6D41\u6587\u4EF6 \u2192 \u62A5\u544A\u975E\u6807\u51C6\u6A21\u5F0F\")\ntask(subagent_type=\"explore\", load_skills=[], description=\"Find test patterns / \u627E\u5230\u6D4B\u8BD5\u6A21\u5F0F\", run_in_background=true, prompt=\"Test patterns: FIND test configs, test structure \u2192 REPORT unique conventions / \u6D4B\u8BD5\u6A21\u5F0F: \u627E\u5230\u6D4B\u8BD5\u914D\u7F6E\u3001\u6D4B\u8BD5\u7ED3\u6784 \u2192 \u62A5\u544A\u72EC\u7279\u7684\u7EA6\u5B9A\")\n```\n\n<dynamic-agents>\n**\u52A8\u6001 Agent \u751F\u6210**: \u5728 bash \u5206\u6790\u4E4B\u540E\uFF0C\u6839\u636E\u9879\u76EE\u89C4\u6A21\u751F\u6210\u989D\u5916\u7684 explore agents:\n\n| Factor / \u56E0\u7D20 | Threshold / \u9608\u503C | Additional Agents / \u989D\u5916 Agents |\n|--------|-----------|-------------------|\n| **Total files / \u603B\u6587\u4EF6\u6570** | >100 | \u6BCF 100 \u4E2A\u6587\u4EF6 +1 |\n| **Total lines / \u603B\u884C\u6570** | >10k | \u6BCF 10k \u884C +1 |\n| **Directory depth / \u76EE\u5F55\u6DF1\u5EA6** | \u22654 | \u6DF1\u5EA6\u63A2\u7D22 +2 |\n| **Large files (>500 lines) / \u5927\u6587\u4EF6 (>500 \u884C)** | >10 files / 10 \u4E2A\u6587\u4EF6 | \u590D\u6742\u5EA6\u70ED\u70B9 +1 |\n| **Monorepo** | detected / \u68C0\u6D4B\u5230 | \u6BCF\u4E2A package/workspace +1 |\n| **Multiple languages / \u591A\u8BED\u8A00** | >1 | \u6BCF\u79CD\u8BED\u8A00 +1 |\n\n```bash\n# \u9996\u5148\u6D4B\u91CF\u9879\u76EE\u89C4\u6A21\ntotal_files=$(find . -type f -not -path '*/node_modules/*' -not -path '*/.git/*' | wc -l)\ntotal_lines=$(find . -type f \\( -name \"*.ts\" -o -name \"*.py\" -o -name \"*.go\" \\) -not -path '*/node_modules/*' -exec wc -l {} + 2>/dev/null | tail -1 | awk '{print $1}')\nlarge_files=$(find . -type f \\( -name \"*.ts\" -o -name \"*.py\" \\) -not -path '*/node_modules/*' -exec wc -l {} + 2>/dev/null | awk '$1 > 500 {count++} END {print count+0}')\nmax_depth=$(find . -type d -not -path '*/node_modules/*' -not -path '*/.git/*' | awk -F/ '{print NF}' | sort -rn | head -1)\n```\n\n\u751F\u6210\u793A\u4F8B:\n```\n// 500 files, 50k lines, depth 6, 15 large files \u2192 spawn 5+5+2+1 = 13 additional agents\n// \u751F\u6210 5+5+2+1 = 13 \u4E2A\u989D\u5916 agents\ntask(subagent_type=\"explore\", load_skills=[], description=\"Analyze large files / \u5206\u6790\u5927\u6587\u4EF6\", run_in_background=true, prompt=\"Large file analysis: FIND files >500 lines, REPORT complexity hotspots / \u5927\u6587\u4EF6\u5206\u6790: \u627E\u5230 >500 \u884C\u7684\u6587\u4EF6\uFF0C\u62A5\u544A\u590D\u6742\u5EA6\u70ED\u70B9\")\ntask(subagent_type=\"explore\", load_skills=[], description=\"Explore deep modules / \u63A2\u7D22\u6DF1\u5C42\u6A21\u5757\", run_in_background=true, prompt=\"Deep modules at depth 4+: FIND hidden patterns, internal conventions / \u6DF1\u5EA6 4+ \u7684\u6A21\u5757: \u627E\u5230\u9690\u85CF\u6A21\u5F0F\u3001\u5185\u90E8\u7EA6\u5B9A\")\ntask(subagent_type=\"explore\", load_skills=[], description=\"Find shared utilities / \u627E\u5230\u5171\u4EAB\u5DE5\u5177\", run_in_background=true, prompt=\"Cross-cutting concerns: FIND shared utilities across directories / \u6A2A\u5207\u5173\u6CE8\u70B9: \u627E\u5230\u8DE8\u76EE\u5F55\u7684\u5171\u4EAB\u5DE5\u5177\")\n// ... \u6839\u636E\u8BA1\u7B97\u66F4\u591A\n```\n</dynamic-agents>\n\n### \u4E3B\u4F1A\u8BDD: \u5E76\u884C\u5206\u6790\n\n**\u5F53\u540E\u53F0 agents \u8FD0\u884C\u65F6**\uFF0C\u4E3B\u4F1A\u8BDD\u6267\u884C:\n\n#### 1. Bash \u7ED3\u6784\u5206\u6790\n```bash\n# \u76EE\u5F55\u6DF1\u5EA6 + \u6587\u4EF6\u8BA1\u6570\nfind . -type d -not -path '*/\\.*' -not -path '*/node_modules/*' -not -path '*/venv/*' -not -path '*/dist/*' -not -path '*/build/*' | awk -F/ '{print NF-1}' | sort -n | uniq -c\n\n# \u6BCF\u4E2A\u76EE\u5F55\u7684\u6587\u4EF6\u6570 (\u524D 30)\nfind . -type f -not -path '*/\\.*' -not -path '*/node_modules/*' | sed 's|/[^/]*$||' | sort | uniq -c | sort -rn | head -30\n\n# \u6309\u6269\u5C55\u540D\u7684\u4EE3\u7801\u96C6\u4E2D\u5EA6\nfind . -type f \\( -name \"*.py\" -o -name \"*.ts\" -o -name \"*.tsx\" -o -name \"*.js\" -o -name \"*.go\" -o -name \"*.rs\" \\) -not -path '*/node_modules/*' | sed 's|/[^/]*$||' | sort | uniq -c | sort -rn | head -20\n\n# \u73B0\u6709\u7684 AGENTS.md / CLAUDE.md\nfind . -type f \\( -name \"AGENTS.md\" -o -name \"CLAUDE.md\" \\) -not -path '*/node_modules/*' 2>/dev/null\n```\n\n#### 2. \u8BFB\u53D6\u73B0\u6709 AGENTS.md\n```\nFor each existing file found / \u5BF9\u4E8E\u627E\u5230\u7684\u6BCF\u4E2A\u73B0\u6709\u6587\u4EF6:\n Read(filePath=file)\n Extract: key insights, conventions, anti-patterns / \u63D0\u53D6: \u5173\u952E\u6D1E\u5BDF\u3001\u7EA6\u5B9A\u3001\u53CD\u6A21\u5F0F\n Store in EXISTING_AGENTS map / \u5B58\u50A8\u5728 EXISTING_AGENTS \u6620\u5C04\u4E2D\n```\n\n\u5982\u679C `--create-new`: \u5148\u8BFB\u53D6\u6240\u6709\u73B0\u6709\u7684\uFF08\u4FDD\u7559\u4E0A\u4E0B\u6587\uFF09\u2192 \u7136\u540E\u5220\u9664\u6240\u6709 \u2192 \u91CD\u65B0\u751F\u6210\u3002\n\n#### 3. LSP Codemap (\u5982\u679C\u53EF\u7528)\n```\nLspServers() # Check availability / \u68C0\u67E5\u53EF\u7528\u6027\n\n# Entry points (parallel) / \u5165\u53E3\u70B9 (\u5E76\u884C)\nLspDocumentSymbols(filePath=\"src/index.ts\")\nLspDocumentSymbols(filePath=\"main.py\")\n\n# Key symbols (parallel) / \u5173\u952E\u7B26\u53F7 (\u5E76\u884C)\nLspWorkspaceSymbols(filePath=\".\", query=\"class\")\nLspWorkspaceSymbols(filePath=\".\", query=\"interface\")\nLspWorkspaceSymbols(filePath=\".\", query=\"function\")\n\n# Centrality for top exports / \u9876\u90E8\u5BFC\u51FA\u7684\u4E2D\u5FC3\u6027\nLspFindReferences(filePath=\"...\", line=X, character=Y)\n```\n\n**LSP \u56DE\u9000**: \u5982\u679C\u4E0D\u53EF\u7528\uFF0C\u4F9D\u8D56 explore agents + AST-grep\u3002\n\n### \u6536\u96C6\u540E\u53F0\u7ED3\u679C\n\n```\n// \u4E3B\u4F1A\u8BDD\u5206\u6790\u5B8C\u6210\u540E\uFF0C\u6536\u96C6\u6240\u6709\u4EFB\u52A1\u7ED3\u679C\nfor each task_id: background_output(task_id=\"...\")\n```\n\n**\u5408\u5E76: bash + LSP + \u73B0\u6709 + explore \u53D1\u73B0\u3002\u5C06 \"discovery\" \u6807\u8BB0\u4E3A completed\u3002**\n\n---\n\n## Phase 2: \u8BC4\u5206\u548C\u4F4D\u7F6E\u51B3\u7B56\n\n**\u5C06 \"scoring\" \u6807\u8BB0\u4E3A in_progress\u3002**\n\n### \u8BC4\u5206\u77E9\u9635\n\n| Factor / \u56E0\u7D20 | Weight / \u6743\u91CD | High Threshold / \u9AD8\u9608\u503C | Source / \u6765\u6E90 |\n|--------|--------|----------------|--------|\n| File count / \u6587\u4EF6\u6570 | 3x | >20 | bash |\n| Subdir count / \u5B50\u76EE\u5F55\u6570 | 2x | >5 | bash |\n| Code ratio / \u4EE3\u7801\u6BD4\u4F8B | 2x | >70% | bash |\n| Unique patterns / \u72EC\u7279\u6A21\u5F0F | 1x | Has own config / \u6709\u81EA\u5DF1\u7684\u914D\u7F6E | explore |\n| Module boundary / \u6A21\u5757\u8FB9\u754C | 2x | Has index.ts/__init__.py / \u6709\u7D22\u5F15\u6587\u4EF6 | bash |\n| Symbol density / \u7B26\u53F7\u5BC6\u5EA6 | 2x | >30 symbols / >30 \u4E2A\u7B26\u53F7 | LSP |\n| Export count / \u5BFC\u51FA\u6570 | 2x | >10 exports / >10 \u4E2A\u5BFC\u51FA | LSP |\n| Reference centrality / \u5F15\u7528\u4E2D\u5FC3\u6027 | 3x | >20 refs / >20 \u4E2A\u5F15\u7528 | LSP |\n\n### \u51B3\u7B56\u89C4\u5219\n\n| Score / \u8BC4\u5206 | Action / \u884C\u52A8 |\n|-------|--------|\n| **Root (.)** | \u59CB\u7EC8\u521B\u5EFA / ALWAYS create |\n| **>15** | \u521B\u5EFA AGENTS.md |\n| **8-15** | \u5982\u679C\u662F\u72EC\u7ACB\u9886\u57DF\u5219\u521B\u5EFA |\n| **<8** | \u8DF3\u8FC7 (\u7236\u7EA7\u8986\u76D6) |\n\n### \u8F93\u51FA\n```\nAGENTS_LOCATIONS = [\n { path: \".\", type: \"root\" },\n { path: \"src/hooks\", score: 18, reason: \"high complexity / \u9AD8\u590D\u6742\u5EA6\" },\n { path: \"src/api\", score: 12, reason: \"distinct domain / \u72EC\u7ACB\u9886\u57DF\" }\n]\n```\n\n**\u5C06 \"scoring\" \u6807\u8BB0\u4E3A completed\u3002**\n\n---\n\n## Phase 3: \u751F\u6210 AGENTS.md\n\n**\u5C06 \"generate\" \u6807\u8BB0\u4E3A in_progress\u3002**\n\n<critical>\n**\u6587\u4EF6\u5199\u5165\u89C4\u5219**: \u5982\u679C\u76EE\u6807\u8DEF\u5F84\u5DF2\u5B58\u5728 AGENTS.md \u2192 \u4F7F\u7528 `Edit` \u5DE5\u5177\u3002\u5982\u679C\u4E0D\u5B58\u5728 \u2192 \u4F7F\u7528 `Write` \u5DE5\u5177\u3002\n\u6C38\u8FDC\u4E0D\u8981\u4F7F\u7528 Write \u8986\u76D6\u73B0\u6709\u6587\u4EF6\u3002\u59CB\u7EC8\u5148\u901A\u8FC7 `Read` \u6216\u53D1\u73B0\u7ED3\u679C\u68C0\u67E5\u5B58\u5728\u6027\u3002\n</critical>\n\n### \u6839\u76EE\u5F55 AGENTS.md (\u5B8C\u6574\u5904\u7406)\n\n```markdown\n# PROJECT KNOWLEDGE BASE / \u9879\u76EE\u77E5\u8BC6\u5E93\n\n**Generated / \u751F\u6210\u65F6\u95F4:** {TIMESTAMP}\n**Commit:** {SHORT_SHA}\n**Branch:** {BRANCH}\n\n## OVERVIEW / \u6982\u89C8\n{1-2 sentences: what + core stack / 1-2 \u53E5\u8BDD: \u662F\u4EC0\u4E48 + \u6838\u5FC3\u6280\u672F\u6808}\n\n## STRUCTURE / \u7ED3\u6784\n\\`\\`\\`\n{root}/\n\u251C\u2500\u2500 {dir}/ # {non-obvious purpose only / \u4EC5\u4E0D\u660E\u663E\u7684\u76EE\u7684}\n\u2514\u2500\u2500 {entry}\n\\`\\`\\`\n\n## WHERE TO LOOK / \u67E5\u627E\u4F4D\u7F6E\n| Task / \u4EFB\u52A1 | Location / \u4F4D\u7F6E | Notes / \u5907\u6CE8 |\n|------|----------|-------\n\n## CODE MAP / \u4EE3\u7801\u5730\u56FE\n{From LSP - skip if unavailable or project <10 files / \u6765\u81EA LSP - \u5982\u679C\u4E0D\u53EF\u7528\u6216\u9879\u76EE <10 \u4E2A\u6587\u4EF6\u5219\u8DF3\u8FC7}\n\n| Symbol / \u7B26\u53F7 | Type / \u7C7B\u578B | Location / \u4F4D\u7F6E | Refs / \u5F15\u7528 | Role / \u89D2\u8272 |\n|--------|------|----------|------|------\n\n## CONVENTIONS / \u7EA6\u5B9A\n{ONLY deviations from standard / \u4EC5\u4E0E\u6807\u51C6\u7684\u504F\u79BB}\n\n## ANTI-PATTERNS (THIS PROJECT) / \u53CD\u6A21\u5F0F (\u672C\u9879\u76EE)\n{Explicitly forbidden here / \u660E\u786E\u7981\u6B62\u7684}\n\n## UNIQUE STYLES / \u72EC\u7279\u98CE\u683C\n{Project-specific / \u9879\u76EE\u7279\u5B9A}\n\n## COMMANDS / \u547D\u4EE4\n\\`\\`\\`bash\n{dev/test/build}\n\\`\\`\\`\n\n## NOTES / \u5907\u6CE8\n{Gotchas / \u9677\u9631}\n```\n\n**\u8D28\u91CF\u95E8\u69DB**: 50-150 \u884C\uFF0C\u65E0\u901A\u7528\u5EFA\u8BAE\uFF0C\u65E0\u660E\u663E\u4FE1\u606F\u3002\n\n### \u5B50\u76EE\u5F55 AGENTS.md (\u5E76\u884C)\n\n\u4E3A\u6BCF\u4E2A\u4F4D\u7F6E\u542F\u52A8\u5199\u5165\u4EFB\u52A1:\n\n```\nfor loc in AGENTS_LOCATIONS (except root):\n task(category=\"writing\", load_skills=[], run_in_background=false, description=\"Generate AGENTS.md\", prompt=\\`\n Generate AGENTS.md for: ${loc.path}\n - Reason / \u539F\u56E0: ${loc.reason}\n - 30-80 lines max / \u6700\u591A 30-80 \u884C\n - NEVER repeat parent content / \u6C38\u8FDC\u4E0D\u8981\u91CD\u590D\u7236\u7EA7\u5185\u5BB9\n - Sections / \u90E8\u5206: OVERVIEW (1 line / 1 \u884C), STRUCTURE (if >5 subdirs / \u5982\u679C >5 \u4E2A\u5B50\u76EE\u5F55), WHERE TO LOOK, CONVENTIONS (if different / \u5982\u679C\u4E0D\u540C), ANTI-PATTERNS\n \\`)\n```\n\n**\u7B49\u5F85\u6240\u6709\u5B8C\u6210\u3002\u5C06 \"generate\" \u6807\u8BB0\u4E3A completed\u3002**\n\n---\n\n## Phase 4: \u5BA1\u67E5\u548C\u53BB\u91CD\n\n**\u5C06 \"review\" \u6807\u8BB0\u4E3A in_progress\u3002**\n\n\u5BF9\u4E8E\u6BCF\u4E2A\u751F\u6210\u7684\u6587\u4EF6:\n- \u79FB\u9664\u901A\u7528\u5EFA\u8BAE\n- \u79FB\u9664\u7236\u7EA7\u91CD\u590D\u5185\u5BB9\n- \u4FEE\u526A\u5230\u5927\u5C0F\u9650\u5236\n- \u9A8C\u8BC1\u7535\u62A5\u5F0F\u98CE\u683C\n\n**\u5C06 \"review\" \u6807\u8BB0\u4E3A completed\u3002**\n\n---\n\n## \u6700\u7EC8\u62A5\u544A\n\n```\n=== init-deep Complete ===\n\nMode / \u6A21\u5F0F: {update | create-new}\n\nFiles / \u6587\u4EF6:\n [OK] ./AGENTS.md (root, {N} lines / {N} \u884C)\n [OK] ./src/hooks/AGENTS.md ({N} lines / {N} \u884C)\n\nDirs Analyzed / \u5206\u6790\u7684\u76EE\u5F55: {N}\nAGENTS.md Created / \u521B\u5EFA\u7684 AGENTS.md: {N}\nAGENTS.md Updated / \u66F4\u65B0\u7684 AGENTS.md: {N}\n\nHierarchy / \u5C42\u6B21\u7ED3\u6784:\n ./AGENTS.md\n \u2514\u2500\u2500 src/hooks/AGENTS.md\n```\n\n---\n\n## \u53CD\u6A21\u5F0F / Anti-Patterns\n\n- **\u9759\u6001 agent \u6570\u91CF**: \u5FC5\u987B\u6839\u636E\u9879\u76EE\u89C4\u6A21/\u6DF1\u5EA6\u53D8\u5316 agents\n- **\u987A\u5E8F\u6267\u884C**: \u5FC5\u987B\u5E76\u884C (explore + LSP \u5E76\u53D1)\n- **\u5FFD\u7565\u73B0\u6709\u7684**: \u59CB\u7EC8\u5148\u8BFB\u53D6\u73B0\u6709\u7684\uFF0C\u5373\u4F7F\u4F7F\u7528 --create-new\n- **\u8FC7\u5EA6\u6587\u6863\u5316**: \u4E0D\u662F\u6BCF\u4E2A\u76EE\u5F55\u90FD\u9700\u8981 AGENTS.md\n- **\u5197\u4F59**: \u5B50\u7EA7\u6C38\u8FDC\u4E0D\u91CD\u590D\u7236\u7EA7\n- **\u901A\u7528\u5185\u5BB9**: \u79FB\u9664\u9002\u7528\u4E8E\u6240\u6709\u9879\u76EE\u7684\u5185\u5BB9\n- **\u5197\u957F\u98CE\u683C**: \u7535\u62A5\u5F0F\u6216\u6B7B\u4EA1";
|
|
1
|
+
export declare const INIT_DEEP_TEMPLATE = "# /init-deep\n\n\u751F\u6210\u5C42\u7EA7\u5F0F AGENTS.md \u6587\u4EF6\u3002\u6839\u76EE\u5F55 + \u6309\u590D\u6742\u5EA6\u8BC4\u5206\u7684\u5B50\u76EE\u5F55\u3002\n\n## \u4F7F\u7528\u65B9\u6CD5\n\n```\n/init-deep # \u66F4\u65B0\u6A21\u5F0F\uFF1A\u4FEE\u6539\u73B0\u6709 + \u6309\u9700\u521B\u5EFA\u65B0\u6587\u4EF6\n/init-deep --create-new # \u8BFB\u53D6\u73B0\u6709 \u2192 \u5220\u9664\u5168\u90E8 \u2192 \u4ECE\u5934\u91CD\u65B0\u751F\u6210\n/init-deep --max-depth=2 # \u9650\u5236\u76EE\u5F55\u6DF1\u5EA6\uFF08\u9ED8\u8BA4\uFF1A3\uFF09\n```\n\n---\n\n## \u5DE5\u4F5C\u6D41\uFF08\u6982\u89C8\uFF09\n\n1. **\u53D1\u73B0 + \u5206\u6790**\uFF08\u5E76\u884C\uFF09\n - \u7ACB\u5373\u542F\u52A8\u540E\u53F0 explore agents\n - \u4E3B\u4F1A\u8BDD\uFF1Abash \u7ED3\u6784 + LSP codemap + \u8BFB\u53D6\u73B0\u6709 AGENTS.md\n2. **\u8BC4\u5206 & \u51B3\u7B56** - \u6839\u636E\u5408\u5E76\u7ED3\u679C\u786E\u5B9A AGENTS.md \u4F4D\u7F6E\n3. **\u751F\u6210** - \u5148\u6839\u76EE\u5F55\uFF0C\u7136\u540E\u5E76\u884C\u751F\u6210\u5B50\u76EE\u5F55\n4. **\u5BA1\u67E5** - \u53BB\u91CD\u3001\u88C1\u526A\u3001\u9A8C\u8BC1\n\n<critical>\n**TodoWrite \u6240\u6709\u9636\u6BB5\u3002\u5B9E\u65F6\u6807\u8BB0 in_progress \u2192 completed\u3002**\n```\nTodoWrite([\n { id: \"discovery\", content: \"Fire explore agents + LSP codemap + read existing\", status: \"pending\", priority: \"high\" },\n { id: \"scoring\", content: \"Score directories, determine locations\", status: \"pending\", priority: \"high\" },\n { id: \"generate\", content: \"Generate AGENTS.md files (root + subdirs)\", status: \"pending\", priority: \"high\" },\n { id: \"review\", content: \"Deduplicate, validate, trim\", status: \"pending\", priority: \"medium\" }\n])\n```\n</critical>\n\n---\n\n## Phase 1: \u53D1\u73B0 + \u5206\u6790\uFF08\u5E76\u884C\uFF09\n\n**\u5C06 \"discovery\" \u6807\u8BB0\u4E3A in_progress\u3002**\n\n### \u7ACB\u5373\u542F\u52A8\u540E\u53F0 Explore Agents\n\n\u4E0D\u8981\u7B49\u5F85\u2014\u2014\u8FD9\u4E9B\u5F02\u6B65\u8FD0\u884C\uFF0C\u540C\u65F6\u4E3B\u4F1A\u8BDD\u6267\u884C\u5176\u4ED6\u4EFB\u52A1\u3002\n\n```\n// \u540C\u65F6\u542F\u52A8\uFF0C\u7A0D\u540E\u6536\u96C6\u7ED3\u679C\ntask(subagent_type=\"explore\", load_skills=[], description=\"Explore project structure\", run_in_background=true, prompt=\"Project structure: PREDICT standard patterns for detected language \u2192 REPORT deviations only\")\ntask(subagent_type=\"explore\", load_skills=[], description=\"Find entry points\", run_in_background=true, prompt=\"Entry points: FIND main files \u2192 REPORT non-standard organization\")\ntask(subagent_type=\"explore\", load_skills=[], description=\"Find conventions\", run_in_background=true, prompt=\"Conventions: FIND config files (.eslintrc, pyproject.toml, .editorconfig) \u2192 REPORT project-specific rules\")\ntask(subagent_type=\"explore\", load_skills=[], description=\"Find anti-patterns\", run_in_background=true, prompt=\"Anti-patterns: FIND 'DO NOT', 'NEVER', 'ALWAYS', 'DEPRECATED' comments \u2192 LIST forbidden patterns\")\ntask(subagent_type=\"explore\", load_skills=[], description=\"Explore build/CI\", run_in_background=true, prompt=\"Build/CI: FIND .github/workflows, Makefile \u2192 REPORT non-standard patterns\")\ntask(subagent_type=\"explore\", load_skills=[], description=\"Find test patterns\", run_in_background=true, prompt=\"Test patterns: FIND test configs, test structure \u2192 REPORT unique conventions\")\n```\n\n<dynamic-agents>\n**\u52A8\u6001\u4EE3\u7406\u751F\u6210**\uFF1A\u5728 bash \u5206\u6790\u540E\uFF0C\u6839\u636E\u9879\u76EE\u89C4\u6A21\u751F\u6210\u989D\u5916\u7684 explore agents\uFF1A\n\n| \u56E0\u7D20 | \u9608\u503C | \u989D\u5916 Agents |\n|--------|-----------|-------------------|\n| **\u603B\u6587\u4EF6\u6570** | >100 | \u6BCF 100 \u4E2A\u6587\u4EF6 +1 |\n| **\u603B\u884C\u6570** | >10k | \u6BCF 10k \u884C +1 |\n| **\u76EE\u5F55\u6DF1\u5EA6** | \u22654 | \u6DF1\u5EA6\u63A2\u7D22 +2 |\n| **\u5927\u6587\u4EF6\uFF08>500 \u884C\uFF09** | >10 \u4E2A\u6587\u4EF6 | \u590D\u6742\u5EA6\u70ED\u70B9 +1 |\n| **Monorepo** | \u5DF2\u68C0\u6D4B\u5230 | \u6BCF\u4E2A package/workspace +1 |\n| **\u591A\u8BED\u8A00** | >1 | \u6BCF\u79CD\u8BED\u8A00 +1 |\n\n```bash\n# \u9996\u5148\u6D4B\u91CF\u9879\u76EE\u89C4\u6A21\ntotal_files=$(find . -type f -not -path '*/node_modules/*' -not -path '*/.git/*' | wc -l)\ntotal_lines=$(find . -type f \\( -name \"*.ts\" -o -name \"*.py\" -o -name \"*.go\" \\) -not -path '*/node_modules/*' -exec wc -l {} + 2>/dev/null | tail -1 | awk '{print $1}')\nlarge_files=$(find . -type f \\( -name \"*.ts\" -o -name \"*.py\" \\) -not -path '*/node_modules/*' -exec wc -l {} + 2>/dev/null | awk '$1 > 500 {count++} END {print count+0}')\nmax_depth=$(find . -type d -not -path '*/node_modules/*' -not -path '*/.git/*' | awk -F/ '{print NF}' | sort -rn | head -1)\n```\n\n\u751F\u6210\u793A\u4F8B\uFF1A\n```\n// 500 \u4E2A\u6587\u4EF6\uFF0C50k \u884C\uFF0C\u6DF1\u5EA6 6\uFF0C15 \u4E2A\u5927\u6587\u4EF6 \u2192 \u751F\u6210 5+5+2+1 = 13 \u4E2A\u989D\u5916 agents\ntask(subagent_type=\"explore\", load_skills=[], description=\"Analyze large files\", run_in_background=true, prompt=\"Large file analysis: FIND files >500 lines, REPORT complexity hotspots\")\ntask(subagent_type=\"explore\", load_skills=[], description=\"Explore deep modules\", run_in_background=true, prompt=\"Deep modules at depth 4+: FIND hidden patterns, internal conventions\")\ntask(subagent_type=\"explore\", load_skills=[], description=\"Find shared utilities\", run_in_background=true, prompt=\"Cross-cutting concerns: FIND shared utilities across directories\")\n// ... \u6839\u636E\u8BA1\u7B97\u751F\u6210\u66F4\u591A\n```\n</dynamic-agents>\n\n### \u4E3B\u4F1A\u8BDD\uFF1A\u5E76\u884C\u5206\u6790\n\n**\u5728\u540E\u53F0 agents \u8FD0\u884C\u65F6**\uFF0C\u4E3B\u4F1A\u8BDD\u6267\u884C\uFF1A\n\n#### 1. Bash \u7ED3\u6784\u5206\u6790\n```bash\n# \u76EE\u5F55\u6DF1\u5EA6 + \u6587\u4EF6\u8BA1\u6570\nfind . -type d -not -path '*/\\.*' -not -path '*/node_modules/*' -not -path '*/venv/*' -not -path '*/dist/*' -not -path '*/build/*' | awk -F/ '{print NF-1}' | sort -n | uniq -c\n\n# \u6BCF\u4E2A\u76EE\u5F55\u7684\u6587\u4EF6\u6570\uFF08\u524D 30\uFF09\nfind . -type f -not -path '*/\\.*' -not -path '*/node_modules/*' | sed 's|/[^/]*$||' | sort | uniq -c | sort -rn | head -30\n\n# \u6309\u6269\u5C55\u540D\u7684\u4EE3\u7801\u96C6\u4E2D\u5EA6\nfind . -type f \\( -name \"*.py\" -o -name \"*.ts\" -o -name \"*.tsx\" -o -name \"*.js\" -o -name \"*.go\" -o -name \"*.rs\" \\) -not -path '*/node_modules/*' | sed 's|/[^/]*$||' | sort | uniq -c | sort -rn | head -20\n\n# \u73B0\u6709 AGENTS.md / CLAUDE.md\nfind . -type f \\( -name \"AGENTS.md\" -o -name \"CLAUDE.md\" \\) -not -path '*/node_modules/*' 2>/dev/null\n```\n\n#### 2. \u8BFB\u53D6\u73B0\u6709 AGENTS.md\n```\n\u5BF9\u4E8E\u6BCF\u4E2A\u627E\u5230\u7684\u73B0\u6709\u6587\u4EF6\uFF1A\n Read(filePath=file)\n \u63D0\u53D6\uFF1A\u5173\u952E\u6D1E\u5BDF\u3001\u7EA6\u5B9A\u3001\u53CD\u6A21\u5F0F\n \u5B58\u50A8\u5230 EXISTING_AGENTS \u6620\u5C04\n```\n\n\u5982\u679C\u4F7F\u7528 `--create-new`\uFF1A\u9996\u5148\u8BFB\u53D6\u6240\u6709\u73B0\u6709\u6587\u4EF6\uFF08\u4FDD\u7559\u4E0A\u4E0B\u6587\uFF09\u2192 \u7136\u540E\u5220\u9664\u5168\u90E8 \u2192 \u91CD\u65B0\u751F\u6210\u3002\n\n#### 3. LSP Codemap\uFF08\u5982\u53EF\u7528\uFF09\n```\nLspServers() # \u68C0\u67E5\u53EF\u7528\u6027\n\n# \u5165\u53E3\u70B9\uFF08\u5E76\u884C\uFF09\nLspDocumentSymbols(filePath=\"src/index.ts\")\nLspDocumentSymbols(filePath=\"main.py\")\n\n# \u5173\u952E\u7B26\u53F7\uFF08\u5E76\u884C\uFF09\nLspWorkspaceSymbols(filePath=\".\", query=\"class\")\nLspWorkspaceSymbols(filePath=\".\", query=\"interface\")\nLspWorkspaceSymbols(filePath=\".\", query=\"function\")\n\n# \u4E3B\u8981\u5BFC\u51FA\u7684\u4E2D\u5FC3\u6027\nLspFindReferences(filePath=\"...\", line=X, character=Y)\n```\n\n**LSP \u56DE\u9000\u65B9\u6848**\uFF1A\u5982\u4E0D\u53EF\u7528\uFF0C\u4F9D\u9760 explore agents + AST-grep\u3002\n\n### \u6536\u96C6\u540E\u53F0\u7ED3\u679C\n\n```\n// \u4E3B\u4F1A\u8BDD\u5206\u6790\u5B8C\u6210\u540E\uFF0C\u6536\u96C6\u6240\u6709\u4EFB\u52A1\u7ED3\u679C\nfor each task_id: background_output(task_id=\"...\")\n```\n\n**\u5408\u5E76**\uFF1Abash + LSP + \u73B0\u6709 + explore \u53D1\u73B0\u3002\u5C06 \"discovery\" \u6807\u8BB0\u4E3A completed\u3002\n\n---\n\n## Phase 2: \u8BC4\u5206 & \u4F4D\u7F6E\u51B3\u7B56\n\n**\u5C06 \"scoring\" \u6807\u8BB0\u4E3A in_progress\u3002**\n\n### \u8BC4\u5206\u77E9\u9635\n\n| \u56E0\u7D20 | \u6743\u91CD | \u9AD8\u9608\u503C | \u6765\u6E90 |\n|--------|--------|--------|----------------|\n| \u6587\u4EF6\u6570 | 3x | >20 | bash |\n| \u5B50\u76EE\u5F55\u6570 | 2x | >5 | bash |\n| \u4EE3\u7801\u6BD4\u4F8B | 2x | >70% | bash |\n| \u72EC\u7279\u6A21\u5F0F | 1x | \u6709\u81EA\u5DF1\u7684\u914D\u7F6E | explore |\n| \u6A21\u5757\u8FB9\u754C | 2x | \u6709 index.ts/__init__.py | bash |\n| \u7B26\u53F7\u5BC6\u5EA6 | 2x | >30 \u4E2A\u7B26\u53F7 | LSP |\n| \u5BFC\u51FA\u6570 | 2x | >10 \u4E2A\u5BFC\u51FA | LSP |\n| \u5F15\u7528\u4E2D\u5FC3\u6027 | 3x | >20 \u4E2A\u5F15\u7528 | LSP |\n\n### \u51B3\u7B56\u89C4\u5219\n\n| \u8BC4\u5206 | Action |\n|-------|--------|\n| **\u6839\u76EE\u5F55 (.)** | \u59CB\u7EC8\u521B\u5EFA |\n| **>15** | \u521B\u5EFA AGENTS.md |\n| **8-15** | \u5982\u679C\u662F\u72EC\u7ACB\u9886\u57DF\u5219\u521B\u5EFA |\n| **<8** | \u8DF3\u8FC7\uFF08\u7236\u7EA7\u8986\u76D6\uFF09 |\n\n### \u8F93\u51FA\n```\nAGENTS_LOCATIONS = [\n { path: \".\", type: \"root\" },\n { path: \"src/hooks\", score: 18, reason: \"high complexity\" },\n { path: \"src/api\", score: 12, reason: \"distinct domain\" }\n]\n```\n\n**\u5C06 \"scoring\" \u6807\u8BB0\u4E3A completed\u3002**\n\n---\n\n## Phase 3: \u751F\u6210 AGENTS.md\n\n**\u5C06 \"generate\" \u6807\u8BB0\u4E3A in_progress\u3002**\n\n<critical>\n**\u6587\u4EF6\u5199\u5165\u89C4\u5219**\uFF1A\u5982\u679C\u76EE\u6807\u8DEF\u5F84\u5DF2\u5B58\u5728 AGENTS.md \u2192 \u4F7F\u7528 `Edit` \u5DE5\u5177\u3002\u5982\u679C\u4E0D\u5B58\u5728 \u2192 \u4F7F\u7528 `Write` \u5DE5\u5177\u3002\n\u6C38\u8FDC\u4E0D\u8981\u4F7F\u7528 Write \u8986\u76D6\u73B0\u6709\u6587\u4EF6\u3002\u59CB\u7EC8\u901A\u8FC7 `Read` \u6216\u53D1\u73B0\u7ED3\u679C\u5148\u68C0\u67E5\u5B58\u5728\u6027\u3002\n</critical>\n\n### \u6839\u76EE\u5F55 AGENTS.md\uFF08\u5B8C\u6574\u5904\u7406\uFF09\n\n```markdown\n# PROJECT KNOWLEDGE BASE\n\n**Generated:** {TIMESTAMP}\n**Commit:** {SHORT_SHA}\n**Branch:** {BRANCH}\n\n## OVERVIEW\n{1-2 sentences: what + core stack}\n\n## STRUCTURE\n\\`\\`\\`\n{root}/\n\u251C\u2500\u2500 {dir}/ # {non-obvious purpose only}\n\u2514\u2500\u2500 {entry}\n\\`\\`\\`\n\n## WHERE TO LOOK\n| Task | Location | Notes |\n|------|----------|-------|\n\n## CODE MAP\n{From LSP - skip if unavailable or project <10 files}\n\n| Symbol | Type | Location | Refs | Role |\n|--------|------|----------|------|------|\n\n## CONVENTIONS\n{ONLY deviations from standard}\n\n## ANTI-PATTERNS (THIS PROJECT)\n{Explicitly forbidden here}\n\n## UNIQUE STYLES\n{Project-specific}\n\n## COMMANDS\n\\`\\`\\`bash\n{dev/test/build}\n\\`\\`\\`\n\n## NOTES\n{Gotchas}\n```\n\n**\u8D28\u91CF\u95E8\u69DB**\uFF1A50-150 \u884C\uFF0C\u65E0\u901A\u7528\u5EFA\u8BAE\uFF0C\u65E0\u663E\u800C\u6613\u89C1\u7684\u4FE1\u606F\u3002\n\n### \u5B50\u76EE\u5F55 AGENTS.md\uFF08\u5E76\u884C\uFF09\n\n\u4E3A\u6BCF\u4E2A\u4F4D\u7F6E\u542F\u52A8\u5199\u5165\u4EFB\u52A1\uFF1A\n\n```\nfor loc in AGENTS_LOCATIONS (except root):\n task(category=\"writing\", load_skills=[], run_in_background=false, description=\"Generate AGENTS.md\", prompt=\\`\n Generate AGENTS.md for: ${loc.path}\n - Reason: ${loc.reason}\n - 30-80 lines max\n - NEVER repeat parent content\n - Sections: OVERVIEW (1 line), STRUCTURE (if >5 subdirs), WHERE TO LOOK, CONVENTIONS (if different), ANTI-PATTERNS\n \\`)\n```\n\n**\u7B49\u5F85\u6240\u6709\u4EFB\u52A1\u5B8C\u6210\u3002\u5C06 \"generate\" \u6807\u8BB0\u4E3A completed\u3002**\n\n---\n\n## Phase 4: \u5BA1\u67E5 & \u53BB\u91CD\n\n**\u5C06 \"review\" \u6807\u8BB0\u4E3A in_progress\u3002**\n\n\u5BF9\u4E8E\u6BCF\u4E2A\u751F\u6210\u7684\u6587\u4EF6\uFF1A\n- \u79FB\u9664\u901A\u7528\u5EFA\u8BAE\n- \u79FB\u9664\u7236\u7EA7\u91CD\u590D\u5185\u5BB9\n- \u88C1\u526A\u5230\u5927\u5C0F\u9650\u5236\n- \u9A8C\u8BC1\u7535\u62A5\u98CE\u683C\n\n**\u5C06 \"review\" \u6807\u8BB0\u4E3A completed\u3002**\n\n---\n\n## \u6700\u7EC8\u62A5\u544A\n\n```\n=== init-deep Complete ===\n\nMode: {update | create-new}\n\nFiles:\n [OK] ./AGENTS.md (root, {N} lines)\n [OK] ./src/hooks/AGENTS.md ({N} lines)\n\nDirs Analyzed: {N}\nAGENTS.md Created: {N}\nAGENTS.md Updated: {N}\n\nHierarchy:\n ./AGENTS.md\n \u2514\u2500\u2500 src/hooks/AGENTS.md\n```\n\n---\n\n## \u53CD\u6A21\u5F0F\n\n- **\u9759\u6001 agent \u6570\u91CF**\uFF1A\u5FC5\u987B\u6839\u636E\u9879\u76EE\u89C4\u6A21/\u6DF1\u5EA6\u53D8\u5316\n- **\u987A\u5E8F\u6267\u884C**\uFF1A\u5FC5\u987B\u5E76\u884C\uFF08explore + LSP \u5E76\u53D1\uFF09\n- **\u5FFD\u7565\u73B0\u6709**\uFF1A\u59CB\u7EC8\u5148\u8BFB\u53D6\u73B0\u6709\u6587\u4EF6\uFF0C\u5373\u4F7F\u4F7F\u7528 --create-new\n- **\u8FC7\u5EA6\u6587\u6863\u5316**\uFF1A\u4E0D\u662F\u6BCF\u4E2A\u76EE\u5F55\u90FD\u9700\u8981 AGENTS.md\n- **\u5197\u4F59**\uFF1A\u5B50\u7EA7\u7EDD\u4E0D\u91CD\u590D\u7236\u7EA7\u5185\u5BB9\n- **\u901A\u7528\u5185\u5BB9**\uFF1A\u79FB\u9664\u9002\u7528\u4E8E\u6240\u6709\u9879\u76EE\u7684\u5185\u5BB9\n- **\u5197\u957F\u98CE\u683C**\uFF1A\u7535\u62A5\u98CE\u683C\u5426\u5219\u6B7B";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare const RALPH_LOOP_TEMPLATE = "\u4F60\u6B63\u5728\u542F\u52A8 Ralph Loop - \u4E00\u4E2A\u81EA\
|
|
2
|
-
export declare const ULW_LOOP_TEMPLATE = "\u4F60\u6B63\u5728\u542F\u52A8 ULTRAWORK Loop - \u4E00\u4E2A\u81EA\
|
|
3
|
-
export declare const CANCEL_RALPH_TEMPLATE = "\u53D6\u6D88\u5F53\u524D\u6D3B\u52A8\u7684 Ralph Loop\u3002\n\n\u8FD9\u5C06
|
|
1
|
+
export declare const RALPH_LOOP_TEMPLATE = "\u4F60\u6B63\u5728\u542F\u52A8 Ralph Loop - \u4E00\u4E2A\u81EA\u53CD\u5F0F\u5F00\u53D1\u5FAA\u73AF\uFF0C\u6301\u7EED\u8FD0\u884C\u76F4\u5230\u4EFB\u52A1\u5B8C\u6210\u3002\n\n## Ralph Loop \u5DE5\u4F5C\u539F\u7406\n\n1. \u4F60\u5C06\u6301\u7EED\u5904\u7406\u4EFB\u52A1\n2. \u5F53\u4F60\u8BA4\u4E3A\u4EFB\u52A1\u5B8C\u5168\u5B8C\u6210\u65F6\uFF0C\u8F93\u51FA\uFF1A`<promise>{{COMPLETION_PROMISE}}</promise>`\n3. \u5982\u679C\u4F60\u6CA1\u6709\u8F93\u51FA promise\uFF0C\u5FAA\u73AF\u5C06\u81EA\u52A8\u6CE8\u5165\u53E6\u4E00\u4E2A\u63D0\u793A\u4EE5\u7EE7\u7EED\n4. \u6700\u5927\u8FED\u4EE3\u6B21\u6570\uFF1A\u53EF\u914D\u7F6E\uFF08\u9ED8\u8BA4 100\uFF09\n\n## \u89C4\u5219\n\n- \u4E13\u6CE8\u4E8E\u5B8C\u5168\u5B8C\u6210\u4EFB\u52A1\uFF0C\u800C\u975E\u90E8\u5206\u5B8C\u6210\n- \u5728\u4EFB\u52A1\u771F\u6B63\u5B8C\u6210\u4E4B\u524D\u4E0D\u8981\u8F93\u51FA\u5B8C\u6210 promise\n- \u6BCF\u6B21\u8FED\u4EE3\u90FD\u5E94\u5411\u76EE\u6807\u53D6\u5F97\u6709\u610F\u4E49\u7684\u8FDB\u5C55\n- \u5982\u679C\u5361\u4F4F\u4E86\uFF0C\u5C1D\u8BD5\u4E0D\u540C\u7684\u65B9\u6CD5\n- \u4F7F\u7528 todos \u8DDF\u8E2A\u4F60\u7684\u8FDB\u5EA6\n\n## \u9000\u51FA\u6761\u4EF6\n\n1. **\u5B8C\u6210**\uFF1A\u5728\u5B8C\u5168\u5B8C\u6210\u65F6\u8F93\u51FA\u4F60\u7684\u5B8C\u6210 promise \u6807\u7B7E\n2. **\u6700\u5927\u8FED\u4EE3\u6B21\u6570**\uFF1A\u5FAA\u73AF\u5728\u8FBE\u5230\u9650\u5236\u65F6\u81EA\u52A8\u505C\u6B62\n3. **\u53D6\u6D88**\uFF1A\u7528\u6237\u8FD0\u884C `/cancel-ralph` \u547D\u4EE4\n\n## \u4F60\u7684\u4EFB\u52A1\n\n\u89E3\u6790\u4E0B\u9762\u7684\u53C2\u6570\u5E76\u5F00\u59CB\u5904\u7406\u4EFB\u52A1\u3002\u683C\u5F0F\u662F\uFF1A\n`\"task description\" [--completion-promise=TEXT] [--max-iterations=N] [--strategy=reset|continue]`\n\n\u9ED8\u8BA4\u5B8C\u6210 promise \u662F \"DONE\"\uFF0C\u9ED8\u8BA4\u6700\u5927\u8FED\u4EE3\u6B21\u6570\u662F 100\u3002";
|
|
2
|
+
export declare const ULW_LOOP_TEMPLATE = "\u4F60\u6B63\u5728\u542F\u52A8 ULTRAWORK Loop - \u4E00\u4E2A\u81EA\u53CD\u5F0F\u5F00\u53D1\u5FAA\u73AF\uFF0C\u6301\u7EED\u8FD0\u884C\u76F4\u5230\u9A8C\u8BC1\u5B8C\u6210\u3002\n\n## ULTRAWORK Loop \u5DE5\u4F5C\u539F\u7406\n\n1. \u4F60\u5C06\u6301\u7EED\u5904\u7406\u4EFB\u52A1\n2. \u5F53\u4F60\u8BA4\u4E3A\u5DE5\u4F5C\u5B8C\u6210\u65F6\uFF0C\u8F93\u51FA\uFF1A`<promise>{{COMPLETION_PROMISE}}</promise>`\n3. \u8FD9\u8FD8\u4E0D\u4F1A\u7ED3\u675F\u5FAA\u73AF\u3002\u7CFB\u7EDF\u5C06\u8981\u6C42 Oracle \u9A8C\u8BC1\n4. \u5FAA\u73AF\u4EC5\u5728\u7CFB\u7EDF\u786E\u8BA4 Oracle \u9A8C\u8BC1\u7ED3\u679C\u540E\u624D\u7ED3\u675F\n5. ultrawork \u6A21\u5F0F\u7684\u8FED\u4EE3\u4E0A\u9650\u662F 500\uFF0C\u666E\u901A\u6A21\u5F0F\u662F 100\n\n## \u89C4\u5219\n\n- \u4E13\u6CE8\u4E8E\u5B8C\u5168\u5B8C\u6210\u4EFB\u52A1\n- \u5728\u4F60\u53D1\u51FA\u5B8C\u6210 promise \u540E\uFF0C\u6309\u6307\u793A\u8FD0\u884C Oracle \u9A8C\u8BC1\n- \u5728 Oracle \u9A8C\u8BC1\u4E4B\u524D\u4E0D\u8981\u5C06 DONE \u89C6\u4E3A\u6700\u7EC8\u5B8C\u6210\n\n## \u9000\u51FA\u6761\u4EF6\n\n1. **\u5DF2\u9A8C\u8BC1\u5B8C\u6210**\uFF1AOracle \u9A8C\u8BC1\u7ED3\u679C\u5E76\u7531\u7CFB\u7EDF\u786E\u8BA4\n2. **\u53D6\u6D88**\uFF1A\u7528\u6237\u8FD0\u884C `/cancel-ralph`\n\n## \u4F60\u7684\u4EFB\u52A1\n\n\u89E3\u6790\u4E0B\u9762\u7684\u53C2\u6570\u5E76\u5F00\u59CB\u5904\u7406\u4EFB\u52A1\u3002\u683C\u5F0F\u662F\uFF1A\n`\"task description\" [--completion-promise=TEXT] [--strategy=reset|continue]`\n\n\u9ED8\u8BA4\u5B8C\u6210 promise \u662F \"DONE\"\u3002";
|
|
3
|
+
export declare const CANCEL_RALPH_TEMPLATE = "\u53D6\u6D88\u5F53\u524D\u6D3B\u52A8\u7684 Ralph Loop\u3002\n\n\u8FD9\u5C06\uFF1A\n1. \u505C\u6B62\u5FAA\u73AF\u7EE7\u7EED\n2. \u6E05\u9664\u5FAA\u73AF\u72B6\u6001\u6587\u4EF6\n3. \u5141\u8BB8\u4F1A\u8BDD\u6B63\u5E38\u7ED3\u675F\n\n\u68C0\u67E5\u662F\u5426\u6709\u6D3B\u52A8\u7684\u5FAA\u73AF\u5E76\u53D6\u6D88\u5B83\u3002\u5411\u7528\u6237\u62A5\u544A\u7ED3\u679C\u3002";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const REMOVE_AI_SLOPS_TEMPLATE = "# Remove AI Slops \u547D\u4EE4\n\n## \u6B64\u547D\u4EE4\u7684\u4F5C\u7528\n\u5206\u6790\u5F53\u524D\u5206\u652F\u4E2D\u6240\u6709\u53D8\u66F4\u7684\u6587\u4EF6\uFF08\u4E0E\u7236\u63D0\u4EA4\u76F8\u6BD4\uFF09\uFF0C\u5E76\u884C\u79FB\u9664 AI \u751F\u6210\u7684\u4EE3\u7801\u5F02\u5473\uFF0C\u7136\u540E\u6279\u5224\u6027\u5730\u5BA1\u67E5\u53D8\u66F4\u4EE5\u786E\u4FDD\u5B89\u5168\u6027\u548C\u884C\u4E3A\u4FDD\u6301\u3002\u5728\u5BA1\u67E5\u4E2D\u53D1\u73B0\u95EE\u9898\u65F6\u8FDB\u884C\u4FEE\u590D\u3002\n\n## Step 0: \u4EFB\u52A1\u89C4\u5212\n\n\u4F7F\u7528 TodoWrite \u521B\u5EFA\u4EFB\u52A1\u5217\u8868\uFF1A\n1. \u4ECE\u5206\u652F\u83B7\u53D6\u53D8\u66F4\u6587\u4EF6\n2. \u5E76\u884C\u5BF9\u6BCF\u4E2A\u6587\u4EF6\u8FD0\u884C ai-slop-remover\n3. \u6279\u5224\u6027\u5730\u5BA1\u67E5\u6240\u6709\u53D8\u66F4\n4. \u4FEE\u590D\u53D1\u73B0\u7684\u95EE\u9898\n\n## \u89D2\u8272\u5B9A\u4E49\n\u4F60\u662F\u4E00\u4F4D\u8D44\u6DF1\u4EE3\u7801\u8D28\u91CF\u5DE5\u7A0B\u5E08\uFF0C\u4E13\u95E8\u8BC6\u522B\u548C\u79FB\u9664 AI \u751F\u6210\u7684\u4EE3\u7801\u6A21\u5F0F\uFF0C\u540C\u65F6\u4FDD\u7559\u539F\u6709\u529F\u80FD\u3002\u4F60\u5728\u4EE3\u7801\u5BA1\u67E5\u3001\u91CD\u6784\u5B89\u5168\u6027\u548C\u884C\u4E3A\u4FDD\u6301\u65B9\u9762\u6709\u6DF1\u539A\u4E13\u4E1A\u77E5\u8BC6\u3002\n\n## \u6D41\u7A0B\n\n### Phase 1: \u8BC6\u522B\u53D8\u66F4\u6587\u4EF6\n\u52A8\u6001\u68C0\u6D4B\u4ED3\u5E93\u57FA\u7840\u5206\u652F\uFF0C\u7136\u540E\u83B7\u53D6\u5F53\u524D\u5206\u652F\u4E2D\u7684\u6240\u6709\u53D8\u66F4\u6587\u4EF6\uFF1A\n```bash\nBASE_BRANCH=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@' || echo \"main\")\ngit diff $(git merge-base \"$BASE_BRANCH\" HEAD)..HEAD --name-only\n```\n\n\u5982\u679C `git symbolic-ref refs/remotes/origin/HEAD` \u4E0D\u53EF\u7528\uFF0C\u5728\u8FD0\u884C\u65F6\u4F7F\u7528\u4ED3\u5E93\u914D\u7F6E\u7684\u8FDC\u7A0B\u9ED8\u8BA4\u5206\u652F\u68C0\u6D4B\u57FA\u7840\u5206\u652F\u3002\u4EC5\u5728\u6700\u540E\u624D\u56DE\u9000\u5230 `main`\u3002\n\n### Phase 2: \u5E76\u884C AI Slop \u79FB\u9664\n\u5BF9\u4E8E\u6BCF\u4E2A\u53D8\u66F4\u6587\u4EF6\uFF0C\u4F7F\u7528\u5E26\u6709 ai-slop-remover skill \u7684 Task \u5DE5\u5177\u5E76\u884C\u751F\u6210\u4EE3\u7406\uFF1A\n\n```\ntask(category=\"quick\", load_skills=[\"ai-slop-remover\"], run_in_background=true, description=\"Remove AI slops from {filename}\", prompt=\"Remove AI slops from: {file_path}\")\n```\n\n**\u5173\u952E**\uFF1A\u5728\u4E00\u6761\u6D88\u606F\u4E2D\u542F\u52A8\u6240\u6709 agents\uFF0C\u4F7F\u7528\u591A\u4E2A Task \u5DE5\u5177\u8C03\u7528\u4EE5\u5B9E\u73B0\u6700\u5927\u5E76\u884C\u5EA6\u3002\n\n\u5728\u6BCF\u4E2A\u6587\u4EF6\u4E0A\u8FD0\u884C ai-slop-remover \u4E4B\u524D\uFF0C\u4FDD\u5B58\u4E00\u4E2A\u6587\u4EF6\u7279\u5B9A\u7684\u56DE\u6EDA\u4EA7\u7269\uFF0C\u4EC5\u6355\u83B7 slop-removal \u8FC7\u7A0B\u5F15\u5165\u7684\u589E\u91CF\u3002\u4F7F\u7528\u5B89\u5168\u6A21\u5F0F\uFF0C\u4F8B\u5982\u751F\u6210\u6BCF\u4E2A\u6587\u4EF6\u7684\u8865\u4E01\u5E76\u5728\u5BA1\u67E5\u5931\u8D25\u65F6\u53CD\u5411\u5E94\u7528\u3002\n\n\u4E0D\u8981\u4F7F\u7528 `git checkout -- {file_path}` \u6216\u4EFB\u4F55\u4E22\u5F03\u6587\u4EF6\u4E2D\u9884\u5148\u5B58\u5728\u7684\u5206\u652F\u53D8\u66F4\u7684\u56DE\u6EDA\u3002\n\n### Phase 3: \u6279\u5224\u6027\u5BA1\u67E5\n\u5728\u6240\u6709 ai-slop-remover agents \u5B8C\u6210\u540E\uFF0C\u4F7F\u7528\u4EE5\u4E0B\u68C0\u67E5\u6E05\u5355\u6267\u884C\u6279\u5224\u6027\u5BA1\u67E5\uFF1A\n\n**\u5B89\u5168\u6027\u9A8C\u8BC1**\uFF1A\n- [ ] \u6CA1\u6709\u610F\u5916\u79FB\u9664\u529F\u80FD\u903B\u8F91\n- [ ] \u6240\u6709\u9519\u8BEF\u5904\u7406\u90FD\u4FDD\u7559\n- [ ] \u7C7B\u578B\u63D0\u793A\u4ECD\u7136\u6B63\u786E\u5B8C\u6574\n- [ ] Import \u8BED\u53E5\u4ECD\u7136\u6709\u6548\n- [ ] \u5BF9\u516C\u5171 API \u6CA1\u6709\u7834\u574F\u6027\u53D8\u66F4\n\n**\u884C\u4E3A\u4FDD\u6301**\uFF1A\n- [ ] \u8FD4\u56DE\u503C\u672A\u6539\u53D8\n- [ ] \u526F\u4F5C\u7528\u672A\u6539\u53D8\n- [ ] \u5F02\u5E38\u884C\u4E3A\u672A\u6539\u53D8\n- [ ] \u8FB9\u7F18\u60C5\u51B5\u5904\u7406\u5DF2\u4FDD\u7559\n\n**\u4EE3\u7801\u8D28\u91CF**\uFF1A\n- [ ] \u79FB\u9664\u7684\u53D8\u66F4\u786E\u5B9E\u662F AI slop\uFF08\u975E\u6709\u610F\u7684\u6A21\u5F0F\uFF09\n- [ ] \u5269\u4F59\u4EE3\u7801\u9075\u5FAA\u9879\u76EE\u7EA6\u5B9A\n- [ ] \u6CA1\u6709\u5B64\u7ACB\u4EE3\u7801\u6216\u6B7B\u5F15\u7528\n\n### Phase 4: \u4FEE\u590D\u95EE\u9898\n\u5982\u679C\u5728\u6279\u5224\u6027\u5BA1\u67E5\u4E2D\u53D1\u73B0\u4EFB\u4F55\u95EE\u9898\uFF1A\n1. \u8BC6\u522B\u5177\u4F53\u95EE\u9898\n2. \u89E3\u91CA\u4E3A\u4EC0\u4E48\u8FD9\u662F\u95EE\u9898\n3. \u4F7F\u7528\u4FDD\u5B58\u7684\u6BCF\u6587\u4EF6\u8865\u4E01\u6216\u7B49\u6548\u7684\u53CD\u5411\u5E94\u7528\u5DE5\u4F5C\u6D41\u4EC5\u56DE\u6EDA ai-slop-remover \u7684\u589E\u91CF\n4. \u5982\u679C\u5728\u56DE\u6EDA\u540E\u53D1\u73B0\u4ECD\u6709 ai-slops\uFF0C\u4EB2\u81EA\u7F16\u8F91\u6587\u4EF6\u79FB\u9664\u5B83\u4EEC\u2014\u2014\u4F7F\u7528\u5E76\u884C\u5DE5\u5177\u8C03\u7528\uFF0C\u6BCF\u4E2A\u6587\u4EF6\u5355\u72EC\u5904\u7406\n5. \u9A8C\u8BC1\u4FEE\u590D\u6CA1\u6709\u5F15\u5165\u65B0\u95EE\u9898\n\n## \u8F93\u51FA\u683C\u5F0F\n\n### \u6458\u8981\u62A5\u544A\n```\n## AI Slop Removal Summary\n\n### Files Processed\n- file1.py: X changes\n- file2.py: Y changes\n\n### Critical Review Results\n- Safety: PASS/FAIL\n- Behavior: PASS/FAIL\n- Quality: PASS/FAIL\n\n### Issues Found & Fixed\n1. [Issue description] -> [Fix applied]\n\n### Final Status\n[CLEAN / ISSUES FIXED / REQUIRES ATTENTION]\n```\n\n## \u8D28\u91CF\u4FDD\u8BC1\n- \u6C38\u8FDC\u4E0D\u8981\u79FB\u9664\u6709\u529F\u80FD\u76EE\u7684\u7684\u4EE3\u7801\n- \u59CB\u7EC8\u9A8C\u8BC1\u53D8\u66F4\u7F16\u8BD1/\u89E3\u6790\u6B63\u786E\n- \u59CB\u7EC8\u4FDD\u7559\u6D4B\u8BD5\u8986\u76D6\u7387\n- \u5982\u679C\u5BF9\u53D8\u66F4\u4E0D\u786E\u5B9A\uFF0C\u503E\u5411\u4E8E\u4FDD\u7559\u539F\u59CB\u4EE3\u7801";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const START_WORK_TEMPLATE = "\u4F60\u6B63\u5728\u542F\u52A8 Sisyphus \u5DE5\u4F5C\u4F1A\u8BDD\u3002\n\n## \u53C2\u6570
|
|
1
|
+
export declare const START_WORK_TEMPLATE = "\u4F60\u6B63\u5728\u542F\u52A8 Sisyphus \u5DE5\u4F5C\u4F1A\u8BDD\u3002\n\n## \u53C2\u6570\n\n- `/start-work [plan-name] [--worktree <path>]`\n - `plan-name`\uFF08\u53EF\u9009\uFF09\uFF1A\u8981\u542F\u52A8\u7684\u8BA1\u5212\u540D\u79F0\u6216\u90E8\u5206\u5339\u914D\n - `--worktree <path>`\uFF08\u53EF\u9009\uFF09\uFF1A\u8981\u5DE5\u4F5C\u7684\u73B0\u6709 git worktree \u7684\u7EDD\u5BF9\u8DEF\u5F84\n - \u5982\u679C\u6307\u5B9A\u4E14\u6709\u6548\uFF1Ahook \u9884\u8BBE boulder.json \u4E2D\u7684 worktree_path\n - \u5982\u679C\u6307\u5B9A\u4F46\u65E0\u6548\uFF1A\u4F60\u5FC5\u987B\u5148\u8FD0\u884C `git worktree add <path> <branch>`\n - \u5982\u679C\u7701\u7565\uFF1A\u76F4\u63A5\u5728\u5F53\u524D\u9879\u76EE\u76EE\u5F55\u4E2D\u5DE5\u4F5C\uFF08\u4E0D\u4F7F\u7528 worktree\uFF09\n\n## \u505A\u4EC0\u4E48\n\n1. **\u67E5\u627E\u53EF\u7528\u8BA1\u5212**\uFF1A\u5728 `.sisyphus/plans/` \u4E2D\u641C\u7D22 Prometheus \u751F\u6210\u7684\u8BA1\u5212\u6587\u4EF6\n\n2. **\u68C0\u67E5\u6D3B\u52A8\u7684 boulder \u72B6\u6001**\uFF1A\u5982\u679C\u5B58\u5728\u5219\u8BFB\u53D6 `.sisyphus/boulder.json`\n\n3. **\u51B3\u7B56\u903B\u8F91**\uFF1A\n - \u5982\u679C `.sisyphus/boulder.json` \u5B58\u5728 AND \u8BA1\u5212\u672A\u5B8C\u6210\uFF08\u6709\u672A\u52FE\u9009\u9879\uFF09\uFF1A\n - **\u8FFD\u52A0**\u5F53\u524D\u4F1A\u8BDD\u5230 session_ids\n - \u7EE7\u7EED\u73B0\u6709\u8BA1\u5212\u7684\u5DE5\u4F5C\n - \u5982\u679C\u6CA1\u6709\u6D3B\u52A8\u8BA1\u5212 OR \u8BA1\u5212\u5DF2\u5B8C\u6210\uFF1A\n - \u5217\u51FA\u53EF\u7528\u8BA1\u5212\u6587\u4EF6\n - \u5982\u679C\u53EA\u6709\u4E00\u4E2A\u8BA1\u5212\uFF1A\u81EA\u52A8\u9009\u62E9\n - \u5982\u679C\u6709\u591A\u4E2A\u8BA1\u5212\uFF1A\u663E\u793A\u5E26\u65F6\u95F4\u6233\u7684\u5217\u8868\uFF0C\u8BF7\u7528\u6237\u9009\u62E9\n\n4. **Worktree \u8BBE\u7F6E**\uFF08\u4EC5\u5F53\u660E\u786E\u6307\u5B9A\u4E86 `--worktree` \u4E14 boulder.json \u4E2D\u672A\u8BBE\u7F6E `worktree_path` \u65F6\uFF09\uFF1A\n 1. `git worktree list --porcelain` - \u67E5\u770B\u53EF\u7528\u7684 worktrees\n 2. \u521B\u5EFA\uFF1A`git worktree add <absolute-path> <branch-or-HEAD>`\n 3. \u66F4\u65B0 boulder.json \u6DFB\u52A0 `\"worktree_path\": \"<absolute-path>\"`\n 4. \u6240\u6709\u5DE5\u4F5C\u5728\u8BE5 worktree \u76EE\u5F55\u5185\u8FDB\u884C\n\n5. **\u521B\u5EFA/\u66F4\u65B0 boulder.json**\uFF1A\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. **\u8BFB\u53D6\u8BA1\u5212\u6587\u4EF6**\u5E76\u6839\u636E atlas \u5DE5\u4F5C\u6D41\u5F00\u59CB\u6267\u884C\u4EFB\u52A1\n\n## \u8F93\u51FA\u683C\u5F0F\n\n\u5217\u51FA\u8BA1\u5212\u4F9B\u9009\u62E9\u65F6\uFF1A\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\n\u6062\u590D\u73B0\u6709\u5DE5\u4F5C\u65F6\uFF1A\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\n\u81EA\u52A8\u9009\u62E9\u5355\u4E2A\u8BA1\u5212\u65F6\uFF1A\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## \u5173\u952E\u8981\u70B9\n\n- session_id \u7531 hook \u6CE8\u5165 - \u76F4\u63A5\u4F7F\u7528\n- \u5728\u5F00\u59CB\u5DE5\u4F5C\u524D\u59CB\u7EC8\u66F4\u65B0 boulder.json\n- \u5982\u679C boulder.json \u4E2D\u8BBE\u7F6E\u4E86 worktree_path\uFF0C\u6240\u6709\u5DE5\u4F5C\u90FD\u5728\u8BE5 worktree \u76EE\u5F55\u5185\u8FDB\u884C\n- \u5728\u59D4\u6258\u4EFB\u4F55\u4EFB\u52A1\u524D\u5148\u8BFB\u53D6\u5B8C\u6574\u8BA1\u5212\u6587\u4EF6\n- \u9075\u5FAA atlas \u59D4\u6258\u534F\u8BAE\uFF087 \u90E8\u5206\u683C\u5F0F\uFF09\n\n## \u4EFB\u52A1\u5206\u89E3\uFF08\u5F3A\u5236\uFF09\n\n\u8BFB\u53D6\u8BA1\u5212\u6587\u4EF6\u540E\uFF0C\u4F60\u5FC5\u987B\u5C06\u6BCF\u4E2A\u8BA1\u5212\u4EFB\u52A1\u5206\u89E3\u4E3A\u7C92\u5316\u7684\u3001\u5B9E\u73B0\u7EA7\u522B\u7684\u5B50\u6B65\u9AA4\uFF0C\u5E76\u5728\u5F00\u59CB\u4EFB\u4F55\u5DE5\u4F5C\u524D\u5C06\u6240\u6709\u8FD9\u4E9B\u6CE8\u518C\u4E3A task/todo \u9879\u3002\n\n**\u5982\u4F55\u5206\u89E3**\uFF1A\n- \u6BCF\u4E2A\u8BA1\u5212\u590D\u9009\u6846\u9879\uFF08\u4F8B\u5982\uFF1A`- [ ] Add user authentication`\uFF09\u5FC5\u987B\u62C6\u5206\u4E3A\u5177\u4F53\u7684\u3001\u53EF\u64CD\u4F5C\u7684\u5B50\u4EFB\u52A1\n- \u5B50\u4EFB\u52A1\u5E94\u8BE5\u8DB3\u591F\u5177\u4F53\uFF0C\u6BCF\u4E2A\u90FD\u6D89\u53CA\u660E\u786E\u7684\u6587\u4EF6/\u51FD\u6570\u96C6\u5408\n- \u5305\u542B\uFF1A\u8981\u4FEE\u6539\u7684\u6587\u4EF6\u3001\u8981\u66F4\u6539\u4EC0\u4E48\u3001\u9884\u671F\u884C\u4E3A\u3001\u5982\u4F55\u9A8C\u8BC1\n- \u4E0D\u8981\u7559\u4E0B\u6A21\u7CCA\u4EFB\u52A1\u2014\u2014\"\u5B9E\u73B0 feature X\" \u4E0D\u53EF\u63A5\u53D7\uFF1B\"\u5728 src/auth/middleware.ts \u4E2D\u6DFB\u52A0 validateToken() \u68C0\u67E5 JWT \u8FC7\u671F\u5E76\u8FD4\u56DE 401\" \u662F\u53EF\u63A5\u53D7\u7684\n\n**\u5206\u89E3\u793A\u4F8B**\uFF1A\n\u8BA1\u5212\u4EFB\u52A1\uFF1A`- [ ] Add rate limiting to API`\n\u2192 Todo \u9879\uFF1A\n 1. \u521B\u5EFA `src/middleware/rate-limiter.ts`\uFF0C\u4F7F\u7528\u6ED1\u52A8\u7A97\u53E3\u7B97\u6CD5\uFF08\u6BCF\u4E2A IP \u6700\u591A 100 req/min\uFF09\n 2. \u5728 `src/app.ts` \u8DEF\u7531\u5668\u94FE\u4E2D\u6DFB\u52A0 RateLimiter \u4E2D\u95F4\u4EF6\uFF0C\u5728 auth \u4E2D\u95F4\u4EF6\u4E4B\u524D\n 3. \u5728 `rate-limiter.ts` \u4E2D\u7684\u54CD\u5E94\u6DFB\u52A0\u9650\u6D41\u5934\uFF08X-RateLimit-Limit, X-RateLimit-Remaining\uFF09\n 4. \u6DFB\u52A0\u6D4B\u8BD5\uFF1A\u5728 `src/middleware/rate-limiter.test.ts` \u4E2D\u9A8C\u8BC1\u8D85\u8FC7\u9650\u5236\u540E\u8FD4\u56DE 429\n 5. \u6DFB\u52A0\u6D4B\u8BD5\uFF1A\u9A8C\u8BC1\u6B63\u5E38\u54CD\u5E94\u4E2D\u5B58\u5728\u5934\u4FE1\u606F\n\n\u5C06\u8FD9\u4E9B\u6CE8\u518C\u4E3A task/todo \u9879\uFF0C\u4EE5\u4FBF\u5728\u6574\u4E2A\u4F1A\u8BDD\u4E2D\u8DDF\u8E2A\u548C\u663E\u793A\u8FDB\u5EA6\u3002\n\n## WORKTREE \u5B8C\u6210\n\n\u5F53\u5728 worktree \u4E2D\u5DE5\u4F5C\uFF08boulder.json \u4E2D\u8BBE\u7F6E\u4E86 `worktree_path`\uFF09\u4E14\u6240\u6709\u8BA1\u5212\u4EFB\u52A1\u5B8C\u6210\u65F6\uFF1A\n1. \u63D0\u4EA4 worktree \u4E2D\u6240\u6709\u5269\u4F59\u7684\u53D8\u66F4\n2. **\u5C06 .sisyphus \u72B6\u6001\u540C\u6B65\u56DE\u6765**\uFF1A\u5728\u79FB\u9664\u524D\u5C06 `.sisyphus/` \u4ECE worktree \u590D\u5236\u5230\u4E3B\u4ED3\u5E93\u3002\n \u5F53 `.sisyphus/` \u88AB gitignore \u65F6\u8FD9\u5F88\u5173\u952E\u2014\u2014\u5426\u5219 worktree \u6267\u884C\u671F\u95F4\u5199\u5165\u7684\u72B6\u6001\u4F1A\u4E22\u5931\u3002\n ```bash\n cp -r <worktree-path>/.sisyphus/* <main-repo>/.sisyphus/ 2>/dev/null || true\n ```\n3. \u5207\u6362\u5230\u4E3B\u5DE5\u4F5C\u76EE\u5F55\uFF08\u539F\u59CB\u4ED3\u5E93\uFF0C\u800C\u975E worktree\uFF09\n4. \u5C06 worktree \u5206\u652F\u5408\u5E76\u5230\u5F53\u524D\u5206\u652F\uFF1A`git merge <worktree-branch>`\n5. \u5982\u679C\u5408\u5E76\u6210\u529F\uFF0C\u6E05\u7406\uFF1A`git worktree remove <worktree-path>`\n6. \u79FB\u9664 boulder.json \u72B6\u6001\n\n\u8FD9\u662F\u4F7F\u7528 `--worktree` \u65F6\u7684\u9ED8\u8BA4\u884C\u4E3A\u3002\u4EC5\u5728\u7528\u6237\u660E\u786E\u6307\u793A\u65F6\u8DF3\u8FC7\u5408\u5E76\uFF08\u4F8B\u5982\uFF0C\u8981\u6C42\u521B\u5EFA PR\uFF09\u3002";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CommandDefinition } from "../claude-code-command-loader";
|
|
2
|
-
export type BuiltinCommandName = "init-deep" | "ralph-loop" | "cancel-ralph" | "ulw-loop" | "refactor" | "start-work" | "stop-continuation" | "handoff";
|
|
2
|
+
export type BuiltinCommandName = "init-deep" | "ralph-loop" | "cancel-ralph" | "ulw-loop" | "refactor" | "start-work" | "stop-continuation" | "handoff" | "remove-ai-slops";
|
|
3
3
|
export interface BuiltinCommandConfig {
|
|
4
4
|
disabled_commands?: BuiltinCommandName[];
|
|
5
5
|
}
|