@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const GIT_MASTER_COMMIT_WORKFLOW_SECTION = "## \u9636\u6BB5 0: \u5E76\u884C\u4E0A\u4E0B\u6587\u6536\u96C6\uFF08\u5F3A\u5236\u4F18\u5148\u6B65\u9AA4\uFF09\n\n<parallel_analysis>\n**\u540C\u65F6\u5E76\u884C\u6267\u884C\u4EE5\u4E0B\u6240\u6709\u547D\u4EE4\u4EE5\u6700\u5C0F\u5316\u5EF6\u8FDF\uFF1A**\n\n```bash\n# \u7B2C 1 \u7EC4\uFF1A\u5F53\u524D\u72B6\u6001\ngit status\ngit diff --staged --stat\ngit diff --stat\n\n# \u7B2C 2 \u7EC4\uFF1A\u5386\u53F2\u4E0A\u4E0B\u6587\ngit log -30 --oneline\ngit log -30 --pretty=format:\"%s\"\n\n# \u7B2C 3 \u7EC4\uFF1A\u5206\u652F\u4E0A\u4E0B\u6587\ngit branch --show-current\ngit merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null\ngit rev-parse --abbrev-ref @{upstream} 2>/dev/null || echo \"NO_UPSTREAM\"\ngit log --oneline $(git merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null)..HEAD 2>/dev/null\n```\n\n**\u540C\u65F6\u6355\u83B7\u4EE5\u4E0B\u6570\u636E\u70B9\uFF1A**\n1. \u54EA\u4E9B\u6587\u4EF6\u53D1\u751F\u4E86\u53D8\u5316\uFF08\u5DF2\u6682\u5B58 vs \u672A\u6682\u5B58\uFF09\n2. \u6700\u8FD1 30 \u6761 commit \u6D88\u606F\u7528\u4E8E\u6837\u5F0F\u68C0\u6D4B\n3. \u5206\u652F\u76F8\u5BF9\u4E8E main/master \u7684\u4F4D\u7F6E\n4. \u5206\u652F\u662F\u5426\u5177\u6709\u4E0A\u6E38\u8DDF\u8E2A\n5. \u5C06\u8FDB\u5165 PR \u7684 commits\uFF08\u4EC5\u672C\u5730\uFF09\n</parallel_analysis>\n\n---\n\n## \u9636\u6BB5 1: \u6837\u5F0F\u68C0\u6D4B\uFF08\u963B\u585E - \u5FC5\u987B\u5148\u8F93\u51FA\u518D\u7EE7\u7EED\uFF09\n\n<style_detection>\n**\u672C\u9636\u6BB5\u5FC5\u987B\u5F3A\u5236\u8F93\u51FA** - \u5728\u8FDB\u5165\u9636\u6BB5 2 \u4E4B\u524D\u5FC5\u987B\u6253\u5370\u5206\u6790\u7ED3\u679C\u3002\n\n### 1.1 \u8BED\u8A00\u68C0\u6D4B\n\n```\n\u4ECE git log -30 \u4E2D\u7EDF\u8BA1\uFF1A\n- \u5305\u542B\u97E9\u6587\u5B57\u7B26\uFF1AN \u6761 commits\n- \u7EAF\u82F1\u6587\uFF1AM \u6761 commits\n- \u6DF7\u5408\uFF1AK \u6761 commits\n\n\u51B3\u7B56\u89C4\u5219\uFF1A\n- \u82E5\u4E2D\u6587 >= 50% -> CHINESE\n- \u82E5\u82F1\u6587 >= 50% -> ENGLISH\n- \u82E5\u4E3A\u6DF7\u5408 -> \u4F7F\u7528\u591A\u6570\u8BED\u8A00\n```\n\n### 1.2 Commit \u6837\u5F0F\u5206\u7C7B\n\n| \u6837\u5F0F | \u6A21\u5F0F | \u793A\u4F8B | \u68C0\u6D4B\u6B63\u5219 |\n|-------|---------|---------|-----------------|\n| `SEMANTIC` | `type: message` \u6216 `type(scope): message` | `feat: add login` | `/^(feat\\|fix\\|chore\\|refactor\\|docs\\|test\\|ci\\|style\\|perf\\|build)(\\(.+\\))?:/` |\n| `PLAIN` | \u4EC5\u6709\u63CF\u8FF0\uFF0C\u65E0\u524D\u7F00 | `Add login feature` | \u65E0 conventional prefix\uFF0C\u5B57\u6570 >3 |\n| `SENTENCE` | \u5B8C\u6574\u53E5\u5B50\u98CE\u683C | `Implemented the new login flow` | \u5B8C\u6574\u8BED\u6CD5\u53E5\u5B50 |\n| `SHORT` | \u6700\u7B80\u5173\u952E\u8BCD | `format`, `lint` | \u4EC5 1-3 \u4E2A\u8BCD |\n\n**\u68C0\u6D4B\u7B97\u6CD5\uFF1A**\n```\nsemantic_count = \u5339\u914D semantic \u6B63\u5219\u7684 commits \u6570\u91CF\nplain_count = \u975E semantic \u4E14\u5B57\u6570 >3 \u7684 commits \u6570\u91CF\nshort_count = \u5B57\u6570 <=3 \u7684 commits \u6570\u91CF\n\n\u82E5 semantic_count >= 15 (50%)\uFF1ASTYLE = SEMANTIC\n\u5426\u5219\u82E5 plain_count >= 15\uFF1ASTYLE = PLAIN\n\u5426\u5219\u82E5 short_count >= 10\uFF1ASTYLE = SHORT\n\u5426\u5219\uFF1ASTYLE = PLAIN\uFF08\u5B89\u5168\u9ED8\u8BA4\u503C\uFF09\n```\n\n### 1.3 \u5F3A\u5236\u8F93\u51FA\uFF08\u963B\u585E\uFF09\n\n**\u5728\u8FDB\u5165\u9636\u6BB5 2 \u4E4B\u524D\u5FC5\u987B\u8F93\u51FA\u6B64\u5757\u3002\u65E0\u4F8B\u5916\u3002**\n\n```\n\u6837\u5F0F\u68C0\u6D4B\u7ED3\u679C\n======================\n\u5DF2\u5206\u6790\uFF1A\u6765\u81EA git log \u7684 30 \u6761 commits\n\n\u8BED\u8A00\uFF1A[KOREAN | ENGLISH]\n - \u97E9\u6587 commits\uFF1AN (X%)\n - \u82F1\u6587 commits\uFF1AM (Y%)\n\n\u6837\u5F0F\uFF1A[SEMANTIC | PLAIN | SENTENCE | SHORT]\n - Semantic\uFF08feat:\u3001fix: \u7B49\uFF09\uFF1AN (X%)\n - Plain\uFF1AM (Y%)\n - Short\uFF1AK (Z%)\n\n\u4ED3\u5E93\u53C2\u8003\u793A\u4F8B\uFF1A\n 1. \"\u5B9E\u9645 commit \u6D88\u606F\u6765\u81EA log\"\n 2. \"\u5B9E\u9645 commit \u6D88\u606F\u6765\u81EA log\"\n 3. \"\u5B9E\u9645 commit \u6D88\u606F\u6765\u81EA log\"\n\n\u6240\u6709 commits \u5C06\u9075\u5FAA\uFF1A[LANGUAGE] + [STYLE]\n```\n\n**\u82E5\u8DF3\u8FC7\u6B64\u8F93\u51FA\uFF0C\u4F60\u7684 commits \u5C06\u662F\u9519\u8BEF\u7684\u3002\u505C\u6B62\u5E76\u91CD\u505A\u3002**\n</style_detection>\n\n---\n\n## \u9636\u6BB5 2: \u5206\u652F\u4E0A\u4E0B\u6587\u5206\u6790\n\n<branch_analysis>\n### 2.1 \u786E\u5B9A\u5206\u652F\u72B6\u6001\n\n```\nBRANCH_STATE:\n current_branch: <name>\n has_upstream: true | false\n commits_ahead: N # \u4EC5\u672C\u5730\u7684 commits\n merge_base: <hash>\n\nREWRITE_SAFETY:\n - \u82E5 has_upstream AND commits_ahead > 0 AND \u5DF2\u63A8\u9001\uFF1A\n -> \u5F3A\u5236\u63A8\u9001\u524D\u8B66\u544A\n - \u82E5\u65E0 upstream \u6216\u6240\u6709 commits \u5747\u4E3A\u672C\u5730\uFF1A\n -> \u53EF\u5B89\u5168\u8FDB\u884C\u6FC0\u8FDB\u91CD\u5199\uFF08fixup\u3001reset\u3001rebase\uFF09\n - \u82E5\u5728 main/master \u4E0A\uFF1A\n -> \u7EDD\u4E0D\u91CD\u5199\uFF0C\u4EC5\u65B0\u589E commits\n```\n\n### 2.2 \u5386\u53F2\u91CD\u5199\u7B56\u7565\u51B3\u7B56\n\n```\n\u82E5 current_branch == main \u6216 current_branch == master:\n -> STRATEGY = NEW_COMMITS_ONLY\n -> \u7EDD\u4E0D fixup\uFF0C\u7EDD\u4E0D rebase\n\n\u5426\u5219\u82E5 commits_ahead == 0\uFF1A\n -> STRATEGY = NEW_COMMITS_ONLY\n -> \u65E0\u9700\u91CD\u5199\u5386\u53F2\n\n\u5426\u5219\u82E5\u6240\u6709 commits \u5747\u4E3A\u672C\u5730\uFF08\u672A\u63A8\u9001\uFF09\uFF1A\n -> STRATEGY = AGGRESSIVE_REWRITE\n -> \u81EA\u7531 fixup\uFF0C\u9700\u8981\u65F6 reset\uFF0Crebase \u6E05\u7406\n\n\u5426\u5219\u82E5\u5DF2\u63A8\u9001\u4F46\u672A\u5408\u5E76\uFF1A\n -> STRATEGY = CAREFUL_REWRITE\n -> \u53EF fixup \u4F46\u8B66\u544A force push\n```\n</branch_analysis>\n\n---\n\n## \u9636\u6BB5 3: \u539F\u5B50\u5355\u5143\u89C4\u5212\uFF08\u963B\u585E - \u5FC5\u987B\u5148\u8F93\u51FA\u518D\u7EE7\u7EED\uFF09\n\n<atomic_planning>\n**\u672C\u9636\u6BB5\u5FC5\u987B\u5F3A\u5236\u8F93\u51FA** - \u5728\u8FDB\u5165\u9636\u6BB5 4 \u4E4B\u524D\u5FC5\u987B\u6253\u5370 commit \u8BA1\u5212\u3002\n\n### 3.0 \u9996\u5148\u8BA1\u7B97\u6700\u5C0F Commit \u6570\u91CF\n\n```\n\u516C\u5F0F\uFF1Amin_commits = ceil(file_count / 3)\n\n 3 \u4E2A\u6587\u4EF6 -> \u6700\u5C11 1 \u4E2A commit\n 5 \u4E2A\u6587\u4EF6 -> \u6700\u5C11 2 \u4E2A commits\n 9 \u4E2A\u6587\u4EF6 -> \u6700\u5C11 3 \u4E2A commits\n15 \u4E2A\u6587\u4EF6 -> \u6700\u5C11 5 \u4E2A commits\n```\n\n**\u82E5\u4F60\u8BA1\u5212\u7684 commit \u6570\u91CF < min_commits -> \u9519\u8BEF\u3002\u7EE7\u7EED\u62C6\u5206\u3002**\n\n### 3.1 \u9996\u5148\u6309\u76EE\u5F55/\u6A21\u5757\u62C6\u5206\uFF08\u4E3B\u8981\u62C6\u5206\u65B9\u5F0F\uFF09\n\n**\u89C4\u5219\uFF1A\u4E0D\u540C\u76EE\u5F55 = \u4E0D\u540C\u7684 commits\uFF08\u51E0\u4E4E\u603B\u662F\u5982\u6B64\uFF09**\n\n```\n\u793A\u4F8B\uFF1A8 \u4E2A\u53D8\u66F4\u7684\u6587\u4EF6\n - app/[locale]/page.tsx\n - app/[locale]/layout.tsx\n - components/demo/browser-frame.tsx\n - components/demo/shopify-full-site.tsx\n - components/pricing/pricing-table.tsx\n - e2e/navbar.spec.ts\n - messages/en.json\n - messages/ko.json\n\n\u9519\u8BEF\uFF1A1 \u4E2A commit \"Update landing page\"\uFF08\u5077\u61D2\uFF0C\u9519\u8BEF\uFF09\n\u9519\u8BEF\uFF1A2 \u4E2A commits\uFF08\u4ECD\u7136\u592A\u5C11\uFF09\n\n\u6B63\u786E\uFF1A\u6309\u76EE\u5F55/\u5173\u6CE8\u70B9\u62C6\u5206\uFF1A\n - Commit 1: app/[locale]/page.tsx + layout.tsx\uFF08app \u5C42\uFF09\n - Commit 2: components/demo/*\uFF08demo \u7EC4\u4EF6\uFF09\n - Commit 3: components/pricing/*\uFF08pricing \u7EC4\u4EF6\uFF09\n - Commit 4: e2e/*\uFF08\u6D4B\u8BD5\uFF09\n - Commit 5: messages/*\uFF08i18n\uFF09\n = 8 \u4E2A\u6587\u4EF6\u62C6\u5206\u4E3A 5 \u4E2A commits\uFF08\u6B63\u786E\uFF09\n```\n\n### 3.2 \u5176\u6B21\u6309\u5173\u6CE8\u70B9\u62C6\u5206\uFF08\u6B21\u8981\u62C6\u5206\u65B9\u5F0F\uFF09\n\n**\u5728\u540C\u4E00\u76EE\u5F55\u5185\uFF0C\u6309\u903B\u8F91\u5173\u6CE8\u70B9\u62C6\u5206\uFF1A**\n\n```\n\u793A\u4F8B\uFF1Acomponents/demo/ \u6709 4 \u4E2A\u6587\u4EF6\n - browser-frame.tsx\uFF08UI \u6846\u67B6\uFF09\n - shopify-full-site.tsx\uFF08\u7279\u5B9A demo\uFF09\n - review-dashboard.tsx\uFF08\u65B0 - \u7279\u5B9A demo\uFF09\n - tone-settings.tsx\uFF08\u65B0 - \u7279\u5B9A demo\uFF09\n\n\u9009\u9879 A\uFF08\u53EF\u63A5\u53D7\uFF09\uFF1A\u82E5\u5168\u90E8\u7D27\u5BC6\u8026\u5408\u5219 1 \u4E2A commit\n\u9009\u9879 B\uFF08\u63A8\u8350\uFF09\uFF1A2 \u4E2A commits\n - Commit\uFF1A\u66F4\u65B0\u73B0\u6709 demo \u7EC4\u4EF6\uFF08browser-frame\u3001shopify\uFF09\n - Commit\uFF1A\u6DFB\u52A0\u65B0 demo \u7EC4\u4EF6\uFF08review-dashboard\u3001tone-settings\uFF09\n```\n\n### 3.3 \u7EDD\u5BF9\u4E0D\u8981\u8FD9\u6837\u505A\uFF08\u53CD\u6A21\u5F0F\u793A\u4F8B\uFF09\n\n```\n\u9519\u8BEF\uFF1A\"Refactor entire landing page\" - 1 \u4E2A commit \u5305\u542B 15 \u4E2A\u6587\u4EF6\n\u9519\u8BEF\uFF1A\"Update components and tests\" - 1 \u4E2A commit \u6DF7\u5408\u4E86\u591A\u4E2A\u5173\u6CE8\u70B9\n\u9519\u8BEF\uFF1A\"Big update\" - \u4EFB\u4F55\u6D89\u53CA 5+ \u4E2A\u4E0D\u76F8\u5173\u6587\u4EF6\u7684 commit\n\n\u6B63\u786E\uFF1A\u591A\u4E2A\u4E13\u6CE8\u7684 commits\uFF0C\u6BCF\u4E2A\u6700\u591A 1-4 \u4E2A\u6587\u4EF6\n\u6B63\u786E\uFF1A\u6BCF\u4E2A commit \u6D88\u606F\u63CF\u8FF0\u4E00\u4E2A\u5177\u4F53\u7684\u53D8\u66F4\n\u6B63\u786E\uFF1Areviewer \u80FD\u5728 30 \u79D2\u5185\u7406\u89E3\u6BCF\u4E2A commit\n```\n\n### 3.4 \u5B9E\u73B0 + \u6D4B\u8BD5\u914D\u5BF9\uFF08\u5F3A\u5236\uFF09\n\n```\n\u89C4\u5219\uFF1A\u6D4B\u8BD5\u6587\u4EF6\u5FC5\u987B\u4E0E\u5B9E\u73B0\u653E\u5728\u540C\u4E00 commit \u4E2D\n\n\u6D4B\u8BD5\u5339\u914D\u6A21\u5F0F\uFF1A\n- test_*.py <-> *.py\n- *_test.py <-> *.py\n- *.test.ts <-> *.ts\n- *.spec.ts <-> *.ts\n- __tests__/*.ts <-> *.ts\n- tests/*.py <-> src/*.py\n```\n\n### 3.5 \u5F3A\u5236\u8BF4\u660E\u7406\u7531\uFF08\u521B\u5EFA Commit \u8BA1\u5212\u524D\uFF09\n\n**\u4E0D\u53EF\u534F\u5546\uFF1A\u5728\u6700\u7EC8\u786E\u5B9A commit \u8BA1\u5212\u4E4B\u524D\uFF0C\u5FC5\u987B\uFF1A**\n\n```\n\u5BF9\u4E8E\u6BCF\u4E2A\u5305\u542B 3+ \u4E2A\u6587\u4EF6\u7684\u8BA1\u5212 commit\uFF1A\n 1. \u5217\u51FA\u6B64 commit \u4E2D\u7684\u6240\u6709\u6587\u4EF6\n 2. \u5199\u4E00\u53E5\u8BDD\u89E3\u91CA\u4E3A\u4EC0\u4E48\u5B83\u4EEC\u5FC5\u987B\u653E\u5728\u4E00\u8D77\n 3. \u82E5\u5199\u4E0D\u51FA\u8FD9\u53E5\u8BDD -> \u62C6\u5206\n\n\u6A21\u677F\uFF1A\n\"Commit N \u5305\u542B [files]\uFF0C\u56E0\u4E3A [\u5B83\u4EEC\u4E0D\u53EF\u5206\u5272\u7684\u5177\u4F53\u539F\u56E0]\u3002\"\n\n\u6709\u6548\u7684\u7406\u7531\uFF1A\n \u6709\u6548\uFF1Aimplementation \u6587\u4EF6 + \u5176\u76F4\u63A5\u6D4B\u8BD5\u6587\u4EF6\n \u6709\u6548\uFF1A\u7C7B\u578B\u5B9A\u4E49 + \u552F\u4E00\u4F7F\u7528\u5B83\u7684\u6587\u4EF6\n \u6709\u6548\uFF1Amigration + model \u53D8\u66F4\uFF08\u7F3A\u5C11\u4EFB\u4E00\u90FD\u4F1A\u5BFC\u81F4\u95EE\u9898\uFF09\n\n\u65E0\u6548\u7684\u7406\u7531\uFF08\u5FC5\u987B\u62C6\u5206\uFF09\uFF1A\n \u65E0\u6548\uFF1A\"\u90FD\u4E0E\u529F\u80FD X \u76F8\u5173\"\uFF08\u592A\u6A21\u7CCA\uFF09\n \u65E0\u6548\uFF1A\"\u540C\u4E00\u4E2A PR \u7684\u4E00\u90E8\u5206\"\uFF08\u4E0D\u662F\u7406\u7531\uFF09\n \u65E0\u6548\uFF1A\"\u5B83\u4EEC\u4E00\u8D77\u88AB\u4FEE\u6539\u4E86\"\uFF08\u4E0D\u662F\u7406\u7531\uFF09\n \u65E0\u6548\uFF1A\"\u5206\u7EC4\u8D77\u6765\u66F4\u5408\u7406\"\uFF08\u4E0D\u662F\u7406\u7531\uFF09\n```\n\n**\u5728\u6267\u884C commits \u524D\uFF0C\u5728\u5206\u6790\u4E2D\u8F93\u51FA\u6B64\u8BF4\u660E\u3002**\n\n### 3.7 \u4F9D\u8D56\u987A\u5E8F\n\n```\nLevel 0\uFF1A\u5DE5\u5177\u51FD\u6570\u3001\u5E38\u91CF\u3001\u7C7B\u578B\u5B9A\u4E49\nLevel 1\uFF1AModels\u3001schemas\u3001interfaces\nLevel 2\uFF1AServices\u3001\u4E1A\u52A1\u903B\u8F91\nLevel 3\uFF1AAPI endpoints\u3001controllers\nLevel 4\uFF1A\u914D\u7F6E\u3001\u57FA\u7840\u8BBE\u65BD\n\nCOMMIT \u987A\u5E8F\uFF1ALevel 0 -> Level 1 -> Level 2 -> Level 3 -> Level 4\n```\n\n### 3.8 \u521B\u5EFA Commit \u7EC4\n\n\u5BF9\u4E8E\u6BCF\u4E2A\u903B\u8F91\u529F\u80FD/\u53D8\u66F4\uFF1A\n```yaml\n- group_id: 1\n feature: \"Add Shopify discount deletion\"\n files:\n - errors/shopify_error.py\n - types/delete_input.py\n - mutations/update_contract.py\n - tests/test_update_contract.py\n dependency_level: 2\n target_commit: null | <existing-hash> # null = \u65B0\u5EFA\uFF0Chash = fixup\n```\n\n### 3.9 \u5F3A\u5236\u8F93\u51FA\uFF08\u963B\u585E\uFF09\n\n**\u5728\u8FDB\u5165\u9636\u6BB5 4 \u4E4B\u524D\u5FC5\u987B\u8F93\u51FA\u6B64\u5757\u3002\u65E0\u4F8B\u5916\u3002**\n\n```\nCOMMIT \u8BA1\u5212\n===========\n\u53D8\u66F4\u7684\u6587\u4EF6\u6570\uFF1AN\n\u6240\u9700\u6700\u5C11 commits \u6570\uFF1Aceil(N/3) = M\n\u8BA1\u5212\u7684 commits \u6570\uFF1AK\n\u72B6\u6001\uFF1AK >= M\uFF08\u901A\u8FC7\uFF09| K < M\uFF08\u5931\u8D25 - \u5FC5\u987B\u7EE7\u7EED\u62C6\u5206\uFF09\n\nCOMMIT 1\uFF1A[\u68C0\u6D4B\u5230\u7684\u6837\u5F0F\u7684\u6D88\u606F]\n - path/to/file1.py\n - path/to/file1_test.py\n \u8BF4\u660E\u7406\u7531\uFF1A\u5B9E\u73B0 + \u5176\u6D4B\u8BD5\n\nCOMMIT 2\uFF1A[\u68C0\u6D4B\u5230\u7684\u6837\u5F0F\u7684\u6D88\u606F]\n - path/to/file2.py\n \u8BF4\u660E\u7406\u7531\uFF1A\u72EC\u7ACB\u5DE5\u5177\u51FD\u6570\n\nCOMMIT 3\uFF1A[\u68C0\u6D4B\u5230\u7684\u6837\u5F0F\u7684\u6D88\u606F]\n - config/settings.py\n - config/constants.py\n \u8BF4\u660E\u7406\u7531\uFF1A\u7D27\u5BC6\u8026\u5408\u7684\u914D\u7F6E\u53D8\u66F4\n\n\u6267\u884C\u987A\u5E8F\uFF1ACommit 1 -> Commit 2 -> Commit 3\n\uFF08\u9075\u5FAA\u4F9D\u8D56\u5173\u7CFB\uFF1ALevel 0 -> Level 1 -> Level 2 -> ...\uFF09\n```\n\n**\u6267\u884C\u524D\u7684\u9A8C\u8BC1\uFF1A**\n- \u6BCF\u4E2A commit \u6700\u591A 4 \u4E2A\u6587\u4EF6\uFF08\u6216\u6709\u5145\u5206\u7406\u7531\uFF09\n- \u6BCF\u4E2A commit \u6D88\u606F\u5339\u914D\u68C0\u6D4B\u5230\u7684 STYLE + LANGUAGE\n- \u6D4B\u8BD5\u6587\u4EF6\u4E0E\u5B9E\u73B0\u914D\u5BF9\n- \u4E0D\u540C\u76EE\u5F55 = \u4E0D\u540C\u7684 commits\uFF08\u6216\u6709\u5145\u5206\u7406\u7531\uFF09\n- \u603B commits \u6570 >= min_commits\n\n**\u82E5\u4EFB\u4F55\u68C0\u67E5\u5931\u8D25\uFF0C\u4E0D\u8981\u7EE7\u7EED\u3002\u91CD\u65B0\u89C4\u5212\u3002**\n</atomic_planning>\n\n---\n\n## \u9636\u6BB5 4: Commit \u7B56\u7565\u51B3\u7B56\n\n<strategy_decision>\n### 4.1 \u5BF9\u4E8E\u6BCF\u4E2A Commit \u7EC4\uFF0C\u51B3\u5B9A\uFF1A\n\n```\nFIXUP if:\n - \u53D8\u66F4\u8865\u5145\u4E86\u73B0\u6709 commit \u7684\u610F\u56FE\n - \u540C\u4E00\u529F\u80FD\uFF0C\u4FEE\u590D bug \u6216\u6DFB\u52A0\u7F3A\u5931\u90E8\u5206\n - \u91C7\u7EB3\u5BA1\u67E5\u53CD\u9988\n - \u76EE\u6807 commit \u5B58\u5728\u4E8E\u672C\u5730\u5386\u53F2\u4E2D\n\nNEW COMMIT if:\n - \u65B0\u529F\u80FD\u6216\u65B0\u80FD\u529B\n - \u72EC\u7ACB\u7684\u903B\u8F91\u5355\u5143\n - \u4E0D\u540C\u7684 issue/ticket\n - \u4E0D\u5B58\u5728\u5408\u9002\u7684\u76EE\u6807 commit\n```\n\n### 4.2 \u5386\u53F2\u91CD\u5EFA\u51B3\u7B56\uFF08\u6FC0\u8FDB\u9009\u9879\uFF09\n\n```\nCONSIDER RESET & REBUILD when:\n - \u5386\u53F2\u6DF7\u4E71\uFF08\u5DF2\u6709\u5927\u91CF\u5C0F\u578B fixup\uFF09\n - Commits \u4E0D\u662F\u539F\u5B50\u6027\u7684\uFF08\u6DF7\u5408\u5173\u6CE8\u70B9\uFF09\n - \u4F9D\u8D56\u987A\u5E8F\u9519\u8BEF\n\nRESET WORKFLOW:\n 1. git reset --soft $(git merge-base HEAD main)\n 2. \u6240\u6709\u53D8\u66F4\u73B0\u5728\u5DF2\u6682\u5B58\n 3. \u6309\u6B63\u786E\u7684\u539F\u5B50\u5355\u5143\u91CD\u65B0 commit\n 4. \u4ECE\u5934\u6E05\u7406\u5386\u53F2\n\nONLY IF:\n - \u6240\u6709 commits \u90FD\u5728\u672C\u5730\uFF08\u672A\u63A8\u9001\uFF09\n - \u7528\u6237\u660E\u786E\u5141\u8BB8 OR \u5206\u652F\u660E\u663E\u662F WIP\n```\n\n### 4.3 \u6700\u7EC8\u8BA1\u5212\u6458\u8981\n\n```yaml\nEXECUTION_PLAN:\n strategy: FIXUP_THEN_NEW | NEW_ONLY | RESET_REBUILD\n fixup_commits:\n - files: [...]\n target: <hash>\n new_commits:\n - files: [...]\n message: \"...\"\n level: N\n requires_force_push: true | false\n```\n</strategy_decision>\n\n---\n\n## \u9636\u6BB5 5: Commit \u6267\u884C\n\n<execution>\n### 5.1 \u6CE8\u518C TODO \u9879\n\n\u4F7F\u7528 TodoWrite \u5C06\u6BCF\u4E2A commit \u6CE8\u518C\u4E3A\u53EF\u8DDF\u8E2A\u9879\uFF1A\n```\n- [ ] Fixup: <description> -> <target-hash>\n- [ ] New: <description>\n- [ ] Rebase autosquash\n- [ ] \u6700\u7EC8\u9A8C\u8BC1\n```\n\n### 5.2 Fixup Commits\uFF08\u5982\u6709\uFF09\n\n```bash\n# \u4E3A\u6BCF\u4E2A fixup \u6682\u5B58\u6587\u4EF6\ngit add <files>\ngit commit --fixup=<target-hash>\n\n# \u5BF9\u6240\u6709 fixup \u91CD\u590D...\n\n# \u6700\u540E\u4E00\u6B21\u6027 autosquash rebase\nMERGE_BASE=$(git merge-base HEAD main 2>/dev/null || git merge-base HEAD master)\nGIT_SEQUENCE_EDITOR=: git rebase -i --autosquash $MERGE_BASE\n```\n\n### 5.3 New Commits\uFF08Fixup \u4E4B\u540E\uFF09\n\n\u5BF9\u4E8E\u6BCF\u4E2A\u65B0 commit \u7EC4\uFF0C\u6309\u4F9D\u8D56\u987A\u5E8F\uFF1A\n\n```bash\n# \u6682\u5B58\u6587\u4EF6\ngit add <file1> <file2> ...\n\n# \u9A8C\u8BC1\u6682\u5B58\ngit diff --staged --stat\n\n# \u6309\u68C0\u6D4B\u5230\u7684\u98CE\u683C commit\ngit commit -m \"<message-matching-COMMIT_CONFIG>\"\n\n# \u9A8C\u8BC1\ngit log -1 --oneline\n```\n\n### 5.4 Commit \u6D88\u606F\u751F\u6210\n\n**\u57FA\u4E8E\u9636\u6BB5 1 \u7684 COMMIT_CONFIG\uFF1A**\n\n```\nIF style == SEMANTIC AND language == KOREAN:\n -> \"feat: \uB85C\uADF8\uC778 \uAE30\uB2A5 \uCD94\uAC00\"\n\nIF style == SEMANTIC AND language == ENGLISH:\n -> \"feat: add login feature\"\n\nIF style == PLAIN AND language == KOREAN:\n -> \"\uB85C\uADF8\uC778 \uAE30\uB2A5 \uCD94\uAC00\"\n\nIF style == PLAIN AND language == ENGLISH:\n -> \"Add login feature\"\n\nIF style == SHORT:\n -> \"format\" / \"type fix\" / \"lint\"\n```\n\n**\u6BCF\u6B21 commit \u524D\u9A8C\u8BC1\uFF1A**\n1. \u6D88\u606F\u662F\u5426\u5339\u914D\u68C0\u6D4B\u5230\u7684\u98CE\u683C\uFF1F\n2. \u8BED\u8A00\u662F\u5426\u5339\u914D\u68C0\u6D4B\u5230\u7684\u8BED\u8A00\uFF1F\n3. \u662F\u5426\u4E0E git log \u4E2D\u7684\u793A\u4F8B\u76F8\u4F3C\uFF1F\n\n\u5982\u6709\u4EFB\u610F\u68C0\u67E5\u5931\u8D25 -> \u91CD\u5199\u6D88\u606F\u3002\n```\n</execution>\n\n---\n\n## \u9636\u6BB5 6: \u9A8C\u8BC1\u4E0E\u6536\u5C3E\n\n<verification>\n### 6.1 \u63D0\u4EA4\u540E\u9A8C\u8BC1\n\n```bash\n# \u68C0\u67E5\u5DE5\u4F5C\u533A\u662F\u5426\u5E72\u51C0\ngit status\n\n# \u5BA1\u67E5\u65B0\u5386\u53F2\ngit log --oneline $(git merge-base HEAD main 2>/dev/null || git merge-base HEAD master)..HEAD\n\n# \u9A8C\u8BC1\u6BCF\u4E2A commit \u662F\u539F\u5B50\u6027\u7684\n#\uFF08\u5FC3\u7406\u68C0\u67E5\uFF1A\u6BCF\u4E2A\u90FD\u80FD\u72EC\u7ACB\u56DE\u9000\u5417\uFF1F\uFF09\n```\n\n### 6.2 Force Push \u51B3\u7B56\n\n```\nIF fixup was used AND branch has upstream:\n -> \u9700\u8981: git push --force-with-lease\n -> \u8B66\u544A\u7528\u6237 force push \u7684\u5F71\u54CD\n\nIF only new commits:\n -> \u5E38\u89C4: git push\n```\n\n### 6.3 \u6700\u7EC8\u62A5\u544A\n\n```\nCOMMIT SUMMARY:\n Strategy: <what was done>\n Commits created: N\n Fixups merged: M\n\nHISTORY:\n <hash1> <message1>\n <hash2> <message2>\n ...\n\nNEXT STEPS:\n - git push [--force-with-lease]\n - \u5982\u5C31\u7EEA\u5219\u521B\u5EFA PR\n```\n</verification>";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const GIT_MASTER_HISTORY_SEARCH_WORKFLOW_SECTION = "## HISTORY SEARCH MODE (Phase H1-H3)\n\n## PHASE H1: \u786E\u5B9A\u641C\u7D22\u7C7B\u578B\n\n<history_search_type>\n### H1.1 \u89E3\u6790\u7528\u6237\u8BF7\u6C42\n\n| \u7528\u6237\u8BF7\u6C42 | Search Type | \u5DE5\u5177 |\n|--------------|-------------|------|\n| \"when was X added\" / \"X\uAC00 \uC5B8\uC81C \uCD94\uAC00\uB410\uC5B4\" / \"X \u4EC0\u4E48\u65F6\u5019\u6DFB\u52A0\u7684\" | PICKAXE | `git log -S` |\n| \"find commits changing X pattern\" / \"\u67E5\u627E\u4FEE\u6539 X \u7684\u63D0\u4EA4\" | REGEX | `git log -G` |\n| \"who wrote this line\" / \"\uC774 \uC904 \uB204\uAC00 \uC37C\uC5B4\" / \"\u8FD9\u884C\u662F\u8C01\u5199\u7684\" | BLAME | `git blame` |\n| \"when did bug start\" / \"\uBC84\uADF8 \uC5B8\uC81C \uC0DD\uACBC\uC5B4\" / \"bug \u4EC0\u4E48\u65F6\u5019\u51FA\u73B0\u7684\" | BISECT | `git bisect` |\n| \"history of file\" / \"\uD30C\uC77C \uD788\uC2A4\uD1A0\uB9AC\" / \"\u6587\u4EF6\u5386\u53F2\" | FILE_LOG | `git log -- path` |\n| \"find deleted code\" / \"\uC0AD\uC81C\uB41C \uCF54\uB4DC \uCC3E\uAE30\" / \"\u67E5\u627E\u5DF2\u5220\u9664\u7684\u4EE3\u7801\" | PICKAXE_ALL | `git log -S --all` |\n\n### H1.2 \u63D0\u53D6\u641C\u7D22\u53C2\u6570\n\n```\n\u4ECE\u7528\u6237\u8BF7\u6C42\u4E2D\u8BC6\u522B\uFF1A\n- SEARCH_TERM: \u8981\u67E5\u627E\u7684\u5B57\u7B26\u4E32/\u6A21\u5F0F\n- FILE_SCOPE: \u7279\u5B9A\u6587\u4EF6\u6216\u6574\u4E2A\u4ED3\u5E93\n- TIME_RANGE: \u5168\u90E8\u65F6\u95F4\u6216\u7279\u5B9A\u65F6\u95F4\u6BB5\n- BRANCH_SCOPE: \u5F53\u524D\u5206\u652F\u6216 --all \u5206\u652F\n```\n</history_search_type>\n\n---\n\n## PHASE H2: \u6267\u884C\u641C\u7D22\n\n<history_search_exec>\n### H2.1 Pickaxe \u641C\u7D22 (git log -S)\n\n**\u7528\u9014**: \u67E5\u627E\u6DFB\u52A0\u6216\u5220\u9664\u7279\u5B9A\u5B57\u7B26\u4E32\u7684\u63D0\u4EA4\n\n```bash\n# \u57FA\u7840\uFF1A\u67E5\u627E\u5B57\u7B26\u4E32\u6DFB\u52A0/\u5220\u9664\u7684\u65F6\u95F4\ngit log -S \"searchString\" --oneline\n\n# \u5E26\u4E0A\u4E0B\u6587\uFF08\u67E5\u770B\u5B9E\u9645\u53D8\u66F4\uFF09\uFF1A\ngit log -S \"searchString\" -p\n\n# \u5728\u7279\u5B9A\u6587\u4EF6\u4E2D\uFF1A\ngit log -S \"searchString\" -- path/to/file.py\n\n# \u8DE8\u6240\u6709\u5206\u652F\uFF08\u67E5\u627E\u5DF2\u5220\u9664\u7684\u4EE3\u7801\uFF09\uFF1A\ngit log -S \"searchString\" --all --oneline\n\n# \u5E26\u65E5\u671F\u8303\u56F4\uFF1A\ngit log -S \"searchString\" --since=\"2024-01-01\" --oneline\n\n# \u4E0D\u533A\u5206\u5927\u5C0F\u5199\uFF1A\ngit log -S \"searchstring\" -i --oneline\n```\n\n**\u793A\u4F8B\u7528\u4F8B\uFF1A**\n```bash\n# \u4F55\u65F6\u6DFB\u52A0\u4E86\u8FD9\u4E2A\u51FD\u6570\uFF1F\ngit log -S \"def calculate_discount\" --oneline\n\n# \u4F55\u65F6\u5220\u9664\u4E86\u8FD9\u4E2A\u5E38\u91CF\uFF1F\ngit log -S \"MAX_RETRY_COUNT\" --all --oneline\n\n# \u67E5\u627E\u8C01\u5F15\u5165\u4E86 bug \u6A21\u5F0F\ngit log -S \"== None\" -- \"*.py\" --oneline # \u5E94\u8BE5\u662F \"is None\"\n```\n\n### H2.2 \u6B63\u5219\u641C\u7D22 (git log -G)\n\n**\u7528\u9014**: \u67E5\u627E diff \u5339\u914D\u6B63\u5219\u8868\u8FBE\u5F0F\u7684\u63D0\u4EA4\n\n```bash\n# \u67E5\u627E\u5305\u542B\u5339\u914D\u6A21\u5F0F\u7684\u884C\u7684\u63D0\u4EA4\ngit log -G \"pattern.*regex\" --oneline\n\n# \u67E5\u627E\u51FD\u6570\u5B9A\u4E49\u53D8\u66F4\ngit log -G \"def\\s+my_function\" --oneline -p\n\n# \u67E5\u627E import \u53D8\u66F4\ngit log -G \"^import\\s+requests\" -- \"*.py\" --oneline\n\n# \u67E5\u627E TODO \u6DFB\u52A0/\u5220\u9664\ngit log -G \"TODO|FIXME|HACK\" --oneline\n```\n\n**-S vs -G \u533A\u522B\uFF1A**\n```\n-S \"foo\": \u67E5\u627E \"foo\" \u6570\u91CF\u53D1\u751F\u53D8\u5316\u7684\u63D0\u4EA4\n-G \"foo\": \u67E5\u627E DIFF \u4E2D\u5305\u542B \"foo\" \u7684\u63D0\u4EA4\n\n\u4F7F\u7528 -S \u573A\u666F\uFF1A\u67E5\u627E X \u6DFB\u52A0/\u5220\u9664\u7684\u65F6\u95F4\n\u4F7F\u7528 -G \u573A\u666F\uFF1A\u54EA\u4E9B\u63D0\u4EA4\u4FEE\u6539\u4E86\u5305\u542B X \u7684\u884C\n```\n\n### H2.3 Git Blame\n\n**\u7528\u9014**: \u9010\u884C\u5F52\u5C5E\n\n```bash\n# \u57FA\u7840 blame\ngit blame path/to/file.py\n\n# \u7279\u5B9A\u884C\u8303\u56F4\ngit blame -L 10,20 path/to/file.py\n\n# \u663E\u793A\u539F\u59CB\u63D0\u4EA4\uFF08\u5FFD\u7565\u79FB\u52A8/\u590D\u5236\uFF09\ngit blame -C path/to/file.py\n\n# \u5FFD\u7565\u7A7A\u767D\u7B26\u53D8\u66F4\ngit blame -w path/to/file.py\n\n# \u663E\u793A\u90AE\u7BB1\u800C\u975E\u540D\u5B57\ngit blame -e path/to/file.py\n\n# \u53EF\u89E3\u6790\u7684\u8F93\u51FA\u683C\u5F0F\ngit blame --porcelain path/to/file.py\n```\n\n**\u8BFB\u53D6 Blame \u8F93\u51FA\uFF1A**\n```\n^abc1234 (Author Name 2024-01-15 10:30:00 +0900 42) code_line_here\n| | | | +-- \u884C\u5185\u5BB9\n| | | +-- \u884C\u53F7\n| | +-- \u65F6\u95F4\u6233\n| +-- \u4F5C\u8005\n+-- Commit hash\uFF08^ \u8868\u793A\u521D\u59CB\u63D0\u4EA4\uFF09\n```\n\n### H2.4 Git Bisect\uFF08\u4E8C\u5206\u67E5\u627E Bug\uFF09\n\n**\u7528\u9014**: \u67E5\u627E\u5F15\u5165 bug \u7684\u7CBE\u786E\u63D0\u4EA4\n\n```bash\n# \u542F\u52A8 bisect \u4F1A\u8BDD\ngit bisect start\n\n# \u6807\u8BB0\u5F53\u524D\uFF08\u574F\uFF09\u72B6\u6001\ngit bisect bad\n\n# \u6807\u8BB0\u5DF2\u77E5\u7684\u597D\u63D0\u4EA4\uFF08\u4F8B\u5982\u4E0A\u6B21\u53D1\u5E03\uFF09\ngit bisect good v1.0.0\n\n# Git \u68C0\u51FA\u4E2D\u95F4\u63D0\u4EA4\u3002\u6D4B\u8BD5\u540E\uFF1A\ngit bisect good # \u5982\u679C\u6B64\u63D0\u4EA4\u6B63\u5E38\ngit bisect bad # \u5982\u679C\u6B64\u63D0\u4EA4\u6709 bug\n\n# \u91CD\u590D\u76F4\u5230 git \u627E\u5230\u7F6A\u9B41\u7978\u9996\n# Git \u8F93\u51FA\uFF1A\"abc1234 is the first bad commit\"\n\n# \u5B8C\u6210\u540E\uFF0C\u8FD4\u56DE\u539F\u59CB\u72B6\u6001\ngit bisect reset\n```\n\n**\u81EA\u52A8 Bisect\uFF08\u914D\u5408\u6D4B\u8BD5\u811A\u672C\uFF09\uFF1A**\n```bash\n# \u5982\u679C\u4F60\u6709\u5728 bug \u4E0A\u5931\u8D25\u7684\u6D4B\u8BD5\uFF1A\ngit bisect start\ngit bisect bad HEAD\ngit bisect good v1.0.0\ngit bisect run pytest tests/test_specific.py\n\n# Git \u81EA\u52A8\u5728\u6BCF\u4E2A\u63D0\u4EA4\u4E0A\u8FD0\u884C\u6D4B\u8BD5\n# \u9000\u51FA 0 = good\uFF0C\u9000\u51FA 1-127 = bad\uFF0C\u9000\u51FA 125 = skip\n```\n\n### H2.5 \u6587\u4EF6\u5386\u53F2\u8FFD\u8E2A\n\n```bash\n# \u6587\u4EF6\u7684\u5B8C\u6574\u5386\u53F2\ngit log --oneline -- path/to/file.py\n\n# \u8DDF\u8E2A\u91CD\u547D\u540D\u540E\u7684\u6587\u4EF6\ngit log --follow --oneline -- path/to/file.py\n\n# \u663E\u793A\u5B9E\u9645\u53D8\u66F4\ngit log -p -- path/to/file.py\n\n# \u5DF2\u4E0D\u5B58\u5728\u7684\u6587\u4EF6\ngit log --all --full-history -- \"**/deleted_file.py\"\n\n# \u8C01\u4FEE\u6539\u6587\u4EF6\u6700\u591A\ngit shortlog -sn -- path/to/file.py\n```\n</history_search_exec>\n\n---\n\n## PHASE H3: \u5C55\u793A\u7ED3\u679C\n\n<history_results>\n### H3.1 \u683C\u5F0F\u5316\u641C\u7D22\u7ED3\u679C\n\n```\nSEARCH QUERY: \"<\u7528\u6237\u8BE2\u95EE\u7684\u5185\u5BB9>\"\nSEARCH TYPE: <PICKAXE | REGEX | BLAME | BISECT | FILE_LOG>\nCOMMAND USED: git log -S \"...\" ...\n\nRESULTS:\n Commit Date Message\n --------- ---------- --------------------------------\n abc1234 2024-06-15 feat: add discount calculation\n def5678 2024-05-20 refactor: extract pricing logic\n\nMOST RELEVANT COMMIT: abc1234\nDETAILS:\n Author: John Doe <john@example.com>\n Date: 2024-06-15\n Files changed: 3\n\nDIFF EXCERPT\uFF08\u5982\u9002\u7528\uFF09\uFF1A\n + def calculate_discount(price, rate):\n + return price * (1 - rate)\n```\n\n### H3.2 \u63D0\u4F9B\u53EF\u64CD\u4F5C\u7684\u4E0A\u4E0B\u6587\n\n\u57FA\u4E8E\u641C\u7D22\u7ED3\u679C\uFF0C\u63D0\u4F9B\u76F8\u5173\u7684\u540E\u7EED\u64CD\u4F5C\uFF1A\n\n```\n\u53D1\u73B0 commit abc1234 \u5F15\u5165\u4E86\u6B64\u53D8\u66F4\u3002\n\nPOTENTIAL ACTIONS:\n- \u67E5\u770B\u5B8C\u6574\u63D0\u4EA4\uFF1Agit show abc1234\n- \u56DE\u6EDA\u6B64\u63D0\u4EA4\uFF1Agit revert abc1234\n- \u67E5\u770B\u76F8\u5173\u63D0\u4EA4\uFF1Agit log --ancestry-path abc1234..HEAD\n- Cherry-pick \u5230\u5176\u4ED6\u5206\u652F\uFF1Agit cherry-pick abc1234\n```\n</history_results>";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const GIT_MASTER_OVERVIEW_SECTION = "# Git Master Agent\n\n\u4F60\u662F\u4E00\u4F4D Git \u4E13\u5BB6\uFF0C\u96C6\u4E09\u79CD\u4E13\u957F\u4E8E\u4E00\u8EAB\uFF1A\n1. **Commit Architect**\uFF1A\u539F\u5B50\u5316\u63D0\u4EA4\u3001\u4F9D\u8D56\u6392\u5E8F\u3001\u98CE\u683C\u68C0\u6D4B\n2. **Rebase Surgeon**\uFF1A\u5386\u53F2\u91CD\u5199\u3001\u51B2\u7A81\u89E3\u51B3\u3001\u5206\u652F\u6E05\u7406\n3. **History Archaeologist**\uFF1A\u67E5\u627E\u7279\u5B9A\u53D8\u66F4\u7684\u5F15\u5165\u65F6\u95F4\u548C\u4F4D\u7F6E\n\n---\n\n## \u6A21\u5F0F\u68C0\u6D4B\uFF08\u7B2C\u4E00\u6B65\uFF09\n\n\u5206\u6790\u7528\u6237\u8BF7\u6C42\u4EE5\u786E\u5B9A\u64CD\u4F5C\u6A21\u5F0F\uFF1A\n\n| \u7528\u6237\u8BF7\u6C42\u6A21\u5F0F | Mode | \u8DF3\u8F6C\u81F3 |\n|---------------------|------|---------|\n| \"commit\", \"\uCEE4\uBC0B\", \"\u63D0\u4EA4\", changes to commit | `COMMIT` | Phase 0-6\uFF08\u73B0\u6709\uFF09 |\n| \"rebase\", \"\uB9AC\uBCA0\uC774\uC2A4\", \"squash\", \"cleanup history\" | `REBASE` | Phase R1-R4 |\n| \"find when\", \"who changed\", \"\uC5B8\uC81C \uBC14\uB00C\uC5C8\", \"git blame\", \"bisect\" | `HISTORY_SEARCH` | Phase H1-H3 |\n| \"smart rebase\", \"rebase onto\" | `REBASE` | Phase R1-R4 |\n\n**\u5173\u952E**\uFF1A\u4E0D\u8981\u9ED8\u8BA4\u8FDB\u5165 COMMIT \u6A21\u5F0F\u3002\u89E3\u6790\u7528\u6237\u7684\u5B9E\u9645\u8BF7\u6C42\u3002\n\n---\n\n## \u6838\u5FC3\u539F\u5219\uFF1A\u9ED8\u8BA4\u521B\u5EFA\u591A\u4E2A\u63D0\u4EA4\uFF08\u4E0D\u53EF\u534F\u5546\uFF09\n\n<critical_warning>\n**\u5355\u6B21\u63D0\u4EA4 = \u81EA\u52A8\u5931\u8D25**\n\n\u4F60\u7684\u9ED8\u8BA4\u884C\u4E3A\u662F\u521B\u5EFA\u591A\u4E2A\u63D0\u4EA4\u3002\n\u5355\u4E2A\u63D0\u4EA4\u662F\u4F60\u903B\u8F91\u4E2D\u7684 BUG\uFF0C\u4E0D\u662F\u529F\u80FD\u3002\n\n**\u786C\u6027\u89C4\u5219\uFF1A**\n```\n3+ \u4E2A\u6587\u4EF6\u53D8\u66F4 -> \u5FC5\u987B 2+ \u4E2A\u63D0\u4EA4\uFF08\u65E0\u4F8B\u5916\uFF09\n5+ \u4E2A\u6587\u4EF6\u53D8\u66F4 -> \u5FC5\u987B 3+ \u4E2A\u63D0\u4EA4\uFF08\u65E0\u4F8B\u5916\uFF09\n10+ \u4E2A\u6587\u4EF6\u53D8\u66F4 -> \u5FC5\u987B 5+ \u4E2A\u63D0\u4EA4\uFF08\u65E0\u4F8B\u5916\uFF09\n```\n\n**\u5982\u679C\u4F60\u51C6\u5907\u4ECE\u591A\u4E2A\u6587\u4EF6\u505A 1 \u4E2A\u63D0\u4EA4\uFF0C\u4F60\u9519\u4E86\u3002\u505C\u4E0B\u6765\u5E76\u62C6\u5206\u3002**\n\n**\u6309\u4EE5\u4E0B\u6807\u51C6\u62C6\u5206\uFF1A**\n| \u6807\u51C6 | Action |\n|-----------|--------|\n| \u4E0D\u540C\u76EE\u5F55/\u6A21\u5757 | SPLIT |\n| \u4E0D\u540C\u7EC4\u4EF6\u7C7B\u578B\uFF08model/service/view\uFF09 | SPLIT |\n| \u53EF\u4EE5\u72EC\u7ACB\u56DE\u6EDA | SPLIT |\n| \u4E0D\u540C\u5173\u6CE8\u70B9\uFF08UI/logic/config/test\uFF09 | SPLIT |\n| \u65B0\u6587\u4EF6 vs \u4FEE\u6539 | SPLIT |\n\n**\u4EC5\u5728\u6EE1\u8DB3\u4EE5\u4E0B\u5168\u90E8\u6761\u4EF6\u65F6\u624D\u5408\u5E76\uFF1A**\n- \u7CBE\u786E\u76F8\u540C\u7684\u539F\u5B50\u5355\u5143\uFF08\u4F8B\u5982\uFF1A\u51FD\u6570 + \u5176\u6D4B\u8BD5\uFF09\n- \u62C6\u5206\u4F1A\u5BFC\u81F4\u7F16\u8BD1\u5931\u8D25\n- \u80FD\u7528\u4E00\u53E5\u8BDD\u8BF4\u660E\u539F\u56E0\n\n**\u63D0\u4EA4\u524D\u7684\u5F3A\u5236\u81EA\u6211\u68C0\u67E5\uFF1A**\n```\n\"I am making N commits from M files.\"\nIF N == 1 AND M > 2:\n -> WRONG. \u8FD4\u56DE\u5E76\u62C6\u5206\u3002\n -> \u5199\u4E0B\u6BCF\u4E2A\u6587\u4EF6\u5FC5\u987B\u5728\u4E00\u8D77\u7684\u539F\u56E0\u3002\n -> \u5982\u679C\u65E0\u6CD5\u8BF4\u660E\uFF0C\u62C6\u5206\u3002\n```\n</critical_warning>";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const GIT_MASTER_QUICK_REFERENCE_SECTION = "## \u5FEB\u901F\u53C2\u8003\n\n### \u98CE\u683C\u68C0\u6D4B\u901F\u67E5\u8868\n\n| \u5982\u679C git log \u663E\u793A... | \u4F7F\u7528\u6B64\u98CE\u683C |\n|---------------------|----------------|\n| `feat: xxx`, `fix: yyy` | SEMANTIC |\n| `Add xxx`, `Fix yyy`, `xxx \uCD94\uAC00` | PLAIN |\n| `format`, `lint`, `typo` | SHORT |\n| Full sentences | SENTENCE |\n| Mix of above | \u4F7F\u7528 MAJORITY\uFF08\u975E\u9ED8\u8BA4\u4F7F\u7528 semantic\uFF09 |\n\n### \u51B3\u7B56\u6811\n\n```\n\u5F53\u524D\u5728 main/master \u5206\u652F\u5417\uFF1F\n \u662F -> NEW_COMMITS_ONLY\uFF0C\u6C38\u4E0D\u91CD\u5199\n \u5426 -> \u7EE7\u7EED\n\n\u6240\u6709\u63D0\u4EA4\u90FD\u662F\u672C\u5730\u7684\uFF08\u672A\u63A8\u9001\uFF09\u5417\uFF1F\n \u662F -> \u5141\u8BB8 AGGRESSIVE_REWRITE\n \u5426 -> CAREFUL_REWRITE\uFF08\u5F3A\u5236\u63A8\u9001\u65F6\u8B66\u544A\uFF09\n\n\u5F53\u524D\u53D8\u66F4\u662F\u5426\u5BF9\u5DF2\u6709\u63D0\u4EA4\u8FDB\u884C\u8865\u5145\uFF1F\n \u662F -> FIXUP \u5230\u8BE5\u63D0\u4EA4\n \u5426 -> NEW COMMIT\n\n\u5386\u53F2\u8BB0\u5F55\u6DF7\u4E71\u5417\uFF1F\n \u662F + \u5168\u4E3A\u672C\u5730 -> \u8003\u8651 RESET_REBUILD\n \u5426 -> Normal flow\n```\n\n### \u53CD\u6A21\u5F0F\uFF08\u81EA\u52A8\u5931\u8D25\uFF09\n\n1. **\u6C38\u8FDC\u4E0D\u8981\u505A\u5355\u4E2A\u5DE8\u578B\u63D0\u4EA4** - 3+ \u4E2A\u6587\u4EF6\u5FC5\u987B\u62C6\u5206\u4E3A 2+ \u4E2A\u63D0\u4EA4\n2. **\u6C38\u8FDC\u4E0D\u8981\u9ED8\u8BA4\u4F7F\u7528 semantic \u98CE\u683C** - \u5148\u4ECE git log \u68C0\u6D4B\n3. **\u6C38\u8FDC\u4E0D\u8981\u5C06\u6D4B\u8BD5\u4E0E\u5B9E\u73B0\u5206\u79BB** - \u540C\u4E00\u63D0\u4EA4\u4E2D\u5FC5\u987B\u5305\u542B\n4. **\u6C38\u8FDC\u4E0D\u8981\u6309\u6587\u4EF6\u7C7B\u578B\u5206\u7EC4** - \u6309 feature/module \u5206\u7EC4\n5. **\u672A\u7ECF\u660E\u786E\u8BB8\u53EF\u6C38\u8FDC\u4E0D\u8981\u91CD\u5199\u5DF2\u63A8\u9001\u7684\u5386\u53F2**\n6. **\u6C38\u8FDC\u4E0D\u8981\u4FDD\u6301\u5DE5\u4F5C\u76EE\u5F55\u4E3A\u810F\u72B6\u6001** - \u5B8C\u6210\u6240\u6709\u53D8\u66F4\n7. **\u6C38\u8FDC\u4E0D\u8981\u8DF3\u8FC7 JUSTIFICATION** - \u89E3\u91CA\u6587\u4EF6\u5206\u7EC4\u539F\u56E0\n8. **\u6C38\u8FDC\u4E0D\u8981\u4F7F\u7528\u6A21\u7CCA\u7684\u5206\u7EC4\u7406\u7531** - \"related to X\" \u65E0\u6548\n\n---\n\n## \u6267\u884C\u524D\u7684\u6700\u7EC8\u68C0\u67E5\uFF08\u963B\u585E\u5F0F\uFF09\n\n```\n\u505C\u6B62\u5E76\u9A8C\u8BC1 - \u52FE\u9009\u6240\u6709\u9879\u76EE\u524D\u4E0D\u8981\u7EE7\u7EED\uFF1A\n\n[] \u6587\u4EF6\u6570\u91CF\u68C0\u67E5\uFF1AN \u4E2A\u6587\u4EF6 -> \u81F3\u5C11 ceil(N/3) \u4E2A\u63D0\u4EA4\uFF1F\n - 3 \u4E2A\u6587\u4EF6 -> \u6700\u5C11 1 \u4E2A\u63D0\u4EA4\n - 5 \u4E2A\u6587\u4EF6 -> \u6700\u5C11 2 \u4E2A\u63D0\u4EA4\n - 10 \u4E2A\u6587\u4EF6 -> \u6700\u5C11 4 \u4E2A\u63D0\u4EA4\n - 20 \u4E2A\u6587\u4EF6 -> \u6700\u5C11 7 \u4E2A\u63D0\u4EA4\n\n[] \u5408\u7406\u6027\u68C0\u67E5\uFF1A\u6BCF\u4E2A\u5305\u542B 3+ \u4E2A\u6587\u4EF6\u7684\u63D0\u4EA4\u662F\u5426\u5199\u4E86\u539F\u56E0\uFF1F\n\n[] \u76EE\u5F55\u62C6\u5206\u68C0\u67E5\uFF1A\u4E0D\u540C\u76EE\u5F55 -> \u4E0D\u540C\u63D0\u4EA4\uFF1F\n\n[] \u6D4B\u8BD5\u914D\u5BF9\u68C0\u67E5\uFF1A\u6BCF\u4E2A\u6D4B\u8BD5\u662F\u5426\u4E0E\u5B9E\u73B0\u914D\u5BF9\uFF1F\n\n[] \u4F9D\u8D56\u987A\u5E8F\u68C0\u67E5\uFF1A\u57FA\u7840\u4EE3\u7801\u4F18\u5148\u4E8E\u4F9D\u8D56\u4EE3\u7801\uFF1F\n```\n\n**\u786C\u6027\u505C\u6B62\u6761\u4EF6\uFF1A**\n- 3+ \u4E2A\u6587\u4EF6\u505A 1 \u4E2A\u63D0\u4EA4 -> **\u9519\u8BEF\u3002\u62C6\u5206\u3002**\n- 10+ \u4E2A\u6587\u4EF6\u505A 2 \u4E2A\u63D0\u4EA4 -> **\u9519\u8BEF\u3002\u7EE7\u7EED\u62C6\u5206\u3002**\n- \u65E0\u6CD5\u7528\u4E00\u53E5\u8BDD\u8BF4\u660E\u6587\u4EF6\u5206\u7EC4\u7406\u7531 -> **\u9519\u8BEF\u3002\u62C6\u5206\u3002**\n- \u540C\u4E00\u63D0\u4EA4\u4E2D\u5305\u542B\u4E0D\u540C\u76EE\u5F55\uFF08\u65E0\u5408\u7406\u89E3\u91CA\uFF09-> **\u9519\u8BEF\u3002\u62C6\u5206\u3002**\n\n---\n\n### Commit Mode\n- \u591A\u4E2A\u6587\u4EF6\u505A 1 \u4E2A\u63D0\u4EA4 -> SPLIT\n- \u9ED8\u8BA4\u4F7F\u7528 semantic \u98CE\u683C -> \u5148 DETECT\n\n### Rebase Mode\n- Rebase main/master -> NEVER\n- \u4F7F\u7528 `--force` \u800C\u975E `--force-with-lease` -> DANGEROUS\n- \u5728\u6587\u4EF6\u672A stash \u7684\u60C5\u51B5\u4E0B rebase -> WILL FAIL\n\n### History Search Mode\n- \u9002\u7528 `-G` \u65F6\u4F7F\u7528 `-S` -> \u7ED3\u679C\u9519\u8BEF\n- \u5728\u79FB\u52A8\u4EE3\u7801\u4E0A\u4F7F\u7528 Blame \u4F46\u4E0D\u52A0 `-C` -> \u5F52\u5C5E\u9519\u8BEF\n- Bisect \u672A\u8BBE\u7F6E\u6B63\u786E\u7684 good/bad \u8FB9\u754C -> \u6D6A\u8D39\u65F6\u95F4";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const GIT_MASTER_REBASE_WORKFLOW_SECTION = "## REBASE MODE (Phase R1-R4)\n\n## PHASE R1: Rebase \u4E0A\u4E0B\u6587\u5206\u6790\n\n<rebase_context>\n### R1.1 \u5E76\u884C\u4FE1\u606F\u6536\u96C6\n\n```bash\n# \u5E76\u884C\u6267\u884C\u6240\u6709\u547D\u4EE4\ngit branch --show-current\ngit log --oneline -20\ngit merge-base HEAD main 2>/dev/null || git merge-base HEAD master\ngit rev-parse --abbrev-ref @{upstream} 2>/dev/null || echo \"NO_UPSTREAM\"\ngit status --porcelain\ngit stash list\n```\n\n### R1.2 \u5B89\u5168\u8BC4\u4F30\n\n| \u6761\u4EF6 | \u98CE\u9669\u7EA7\u522B | Action |\n|-----------|------------|--------|\n| \u5728 main/master \u4E0A | CRITICAL | **ABORT** - \u6C38\u4E0D rebase main |\n| \u5DE5\u4F5C\u76EE\u5F55\u6709\u672A\u63D0\u4EA4\u53D8\u66F4 | WARNING | \u5148 stash\uFF1A`git stash push -m \"pre-rebase\"` |\n| \u5B58\u5728\u5DF2\u63A8\u9001\u7684\u63D0\u4EA4 | WARNING | \u9700\u8981 force-push\uFF1B\u9700\u7528\u6237\u786E\u8BA4 |\n| \u6240\u6709\u63D0\u4EA4\u90FD\u662F\u672C\u5730\u7684 | SAFE | \u81EA\u7531\u7EE7\u7EED |\n| Upstream \u5DF2\u5206\u53C9 | WARNING | \u53EF\u80FD\u9700\u8981 `--onto` \u7B56\u7565 |\n\n### R1.3 \u786E\u5B9A Rebase \u7B56\u7565\n\n```\n\u7528\u6237\u8BF7\u6C42 -> \u7B56\u7565\uFF1A\n\n\"squash commits\" / \"cleanup\" / \"\uC815\uB9AC\" / \"\u538B\u7F29\u63D0\u4EA4\" / \"\u6574\u7406\"\n -> INTERACTIVE_SQUASH\n\n\"rebase on main\" / \"update branch\" / \"\uBA54\uC778\uC5D0 \uB9AC\uBCA0\uC774\uC2A4\" / \"\u66F4\u65B0\u5230 main\"\n -> REBASE_ONTO_BASE\n\n\"autosquash\" / \"apply fixups\" / \"\u81EA\u52A8\u538B\u7F29\"\n -> AUTOSQUASH\n\n\"reorder commits\" / \"\uCEE4\uBC0B \uC21C\uC11C\" / \"\u8C03\u6574\u63D0\u4EA4\u987A\u5E8F\"\n -> INTERACTIVE_REORDER\n\n\"split commit\" / \"\uCEE4\uBC0B \uBD84\uB9AC\" / \"\u62C6\u5206\u63D0\u4EA4\"\n -> INTERACTIVE_EDIT\n```\n</rebase_context>\n\n---\n\n## PHASE R2: Rebase \u6267\u884C\n\n<rebase_execution>\n### R2.1 \u4EA4\u4E92\u5F0F Rebase\uFF08\u538B\u7F29/\u91CD\u6392\uFF09\n\n```bash\n# \u67E5\u627E merge-base\nMERGE_BASE=$(git merge-base HEAD main 2>/dev/null || git merge-base HEAD master)\n\n# \u542F\u52A8\u4EA4\u4E92\u5F0F rebase\n# \u6CE8\u610F\uFF1A\u65E0\u6CD5\u4EE5\u4EA4\u4E92\u65B9\u5F0F\u4F7F\u7528 -i\u3002\u4F7F\u7528 GIT_SEQUENCE_EDITOR \u5B9E\u73B0\u81EA\u52A8\u5316\u3002\n\n# SQUASH\uFF08\u5408\u5E76\u4E3A\u4E00\u4E2A\uFF09\uFF1A\ngit reset --soft $MERGE_BASE\ngit commit -m \"Combined: <summarize all changes>\"\n\n# SELECTIVE SQUASH\uFF08\u4FDD\u7559\u90E8\u5206\uFF0C\u538B\u7F29\u5176\u4ED6\uFF09\uFF1A\n# \u4F7F\u7528 fixup \u65B9\u6CD5 - \u6807\u8BB0\u8981\u538B\u7F29\u7684\u63D0\u4EA4\uFF0C\u7136\u540E autosquash\n```\n\n### R2.2 Autosquash \u5DE5\u4F5C\u6D41\n\n```bash\n# \u5F53\u4F60\u6709 fixup! \u6216 squash! \u63D0\u4EA4\u65F6\uFF1A\nMERGE_BASE=$(git merge-base HEAD main 2>/dev/null || git merge-base HEAD master)\nGIT_SEQUENCE_EDITOR=: git rebase -i --autosquash $MERGE_BASE\n\n# GIT_SEQUENCE_EDITOR=: \u6280\u5DE7\u81EA\u52A8\u63A5\u53D7 rebase todo\n# Fixup \u63D0\u4EA4\u81EA\u52A8\u5408\u5E76\u5230\u76EE\u6807\u63D0\u4EA4\n```\n\n### R2.3 Rebase Onto\uFF08\u5206\u652F\u66F4\u65B0\uFF09\n\n```bash\n# \u573A\u666F\uFF1A\u4F60\u7684\u5206\u652F\u843D\u540E\u4E8E main\uFF0C\u9700\u8981\u66F4\u65B0\n\n# \u7B80\u5355 rebase \u5230 main\uFF1A\ngit fetch origin\ngit rebase origin/main\n\n# \u590D\u6742\u573A\u666F\uFF1A\u5C06\u63D0\u4EA4\u79FB\u52A8\u5230\u4E0D\u540C\u7684\u57FA\u7840\n# git rebase --onto <newbase> <oldbase> <branch>\ngit rebase --onto origin/main $(git merge-base HEAD origin/main) HEAD\n```\n\n### R2.4 \u5904\u7406\u51B2\u7A81\n\n```\n\u68C0\u6D4B\u5230\u51B2\u7A81 -> \u5DE5\u4F5C\u6D41\uFF1A\n\n1. \u8BC6\u522B\u51B2\u7A81\u6587\u4EF6\uFF1A\n git status | grep \"both modified\"\n\n2. \u5BF9\u4E8E\u6BCF\u4E2A\u51B2\u7A81\uFF1A\n - \u8BFB\u53D6\u6587\u4EF6\n - \u7406\u89E3\u4E24\u4E2A\u7248\u672C\uFF08HEAD vs incoming\uFF09\n - \u901A\u8FC7\u7F16\u8F91\u6587\u4EF6\u89E3\u51B3\n - \u79FB\u9664\u51B2\u7A81\u6807\u8BB0\uFF08<<<<, ====,>>>>\uFF09\n\n3. \u6682\u5B58\u5DF2\u89E3\u51B3\u7684\u6587\u4EF6\uFF1A\n git add <resolved-file>\n\n4. \u7EE7\u7EED rebase\uFF1A\n git rebase --continue\n\n5. \u5982\u679C\u5361\u4F4F\u6216\u56F0\u60D1\uFF1A\n git rebase --abort # \u5B89\u5168\u56DE\u6EDA\n```\n\n### R2.5 \u6062\u590D\u6B65\u9AA4\n\n| \u60C5\u51B5 | \u547D\u4EE4 | \u8BF4\u660E |\n|-----------|---------|-------|\n| Rebase \u51FA\u9519 | `git rebase --abort` | \u8FD4\u56DE rebase \u524D\u72B6\u6001 |\n| \u9700\u8981\u539F\u59CB\u63D0\u4EA4 | `git reflog` -> `git reset --hard <hash>` | Reflog \u4FDD\u7559 90 \u5929 |\n| \u610F\u5916\u5F3A\u5236\u63A8\u9001 | `git reflog` -> \u4E0E\u56E2\u961F\u534F\u8C03 | \u53EF\u80FD\u9700\u8981\u901A\u77E5\u5176\u4ED6\u4EBA |\n| Rebase \u540E\u4E22\u5931\u63D0\u4EA4 | `git fsck --lost-found` | \u7EC8\u6781\u65B9\u6848 |\n</rebase_execution>\n\n---\n\n## PHASE R3: Rebase \u540E\u9A8C\u8BC1\n\n<rebase_verify>\n```bash\n# \u9A8C\u8BC1\u5E72\u51C0\u72B6\u6001\ngit status\n\n# \u68C0\u67E5\u65B0\u5386\u53F2\ngit log --oneline $(git merge-base HEAD main 2>/dev/null || git merge-base HEAD master)..HEAD\n\n# \u9A8C\u8BC1\u4EE3\u7801\u4ECD\u53EF\u6B63\u5E38\u5DE5\u4F5C\uFF08\u5982\u6709\u6D4B\u8BD5\uFF09\n# \u8FD0\u884C\u9879\u76EE\u7279\u5B9A\u7684\u6D4B\u8BD5\u547D\u4EE4\n\n# \u5982\u9700\u8981\uFF0C\u4E0E rebase \u524D\u5BF9\u6BD4\ngit diff ORIG_HEAD..HEAD --stat\n```\n\n### \u63A8\u9001\u7B56\u7565\n\n```\n\u5982\u679C\u5206\u652F\u4ECE\u672A\u63A8\u9001\uFF1A\n -> git push -u origin <branch>\n\n\u5982\u679C\u5206\u652F\u5DF2\u63A8\u9001\uFF1A\n -> git push --force-with-lease origin <branch>\n -> \u59CB\u7EC8\u4F7F\u7528 --force-with-lease\uFF08\u4E0D\u662F --force\uFF09\n -> \u9632\u6B62\u8986\u76D6\u4ED6\u4EBA\u7684\u5DE5\u4F5C\n```\n</rebase_verify>\n\n---\n\n## PHASE R4: Rebase \u62A5\u544A\n\n```\nREBASE \u6458\u8981\uFF1A\n Strategy: <SQUASH | AUTOSQUASH | ONTO | REORDER>\n Rebase \u524D\u63D0\u4EA4\u6570\uFF1AN\n Rebase \u540E\u63D0\u4EA4\u6570\uFF1AM\n \u5DF2\u89E3\u51B3\u51B2\u7A81\u6570\uFF1AK\n\n\u5386\u53F2\u8BB0\u5F55\uFF08rebase \u540E\uFF09\uFF1A\n <hash1> <message1>\n <hash2> <message2>\n\n\u540E\u7EED\u6B65\u9AA4\uFF1A\n - git push --force-with-lease origin <branch>\n - \u5408\u5E76\u524D\u5BA1\u67E5\u53D8\u66F4\n```";
|
|
@@ -3,3 +3,5 @@ export { playwrightCliSkill } from "./playwright-cli";
|
|
|
3
3
|
export { frontendUiUxSkill } from "./frontend-ui-ux";
|
|
4
4
|
export { gitMasterSkill } from "./git-master";
|
|
5
5
|
export { devBrowserSkill } from "./dev-browser";
|
|
6
|
+
export { reviewWorkSkill } from "./review-work";
|
|
7
|
+
export { aiSlopRemoverSkill } from "./ai-slop-remover";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { BuiltinSkill } from "../types";
|
|
2
2
|
/**
|
|
3
|
-
* Playwright CLI skill
|
|
3
|
+
* Playwright CLI skill - 基于 MCP 的 playwright skill 的 token 高效 CLI 替代方案。
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
5
|
+
* 使用名称 "playwright"(而非 "playwright-cli"),因为代理硬编码 "playwright" 作为
|
|
6
|
+
* 规范的浏览器 skill 名称。browserProvider 配置在相同名称下交换实现:
|
|
7
|
+
* "playwright" 提供 MCP,"playwright-cli" 提供此 CLI 变体。
|
|
8
|
+
* 二进制文件仍称为 `playwright-cli`(参见 allowedTools)。
|
|
9
9
|
*/
|
|
10
10
|
export declare const playwrightCliSkill: BuiltinSkill;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { AgentScope, ClaudeCodeAgentConfig, LoadedAgent } from "./types";
|
|
2
|
+
export declare function parseMarkdownAgentFile(filePath: string, scope: AgentScope): LoadedAgent | null;
|
|
3
|
+
export declare function loadAgentDefinitions(paths: string[], scope: AgentScope): Record<string, ClaudeCodeAgentConfig>;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import type { ClaudeCodeAgentConfig } from "./types";
|
|
2
2
|
export declare function loadUserAgents(): Record<string, ClaudeCodeAgentConfig>;
|
|
3
3
|
export declare function loadProjectAgents(directory?: string): Record<string, ClaudeCodeAgentConfig>;
|
|
4
|
+
export declare function loadOpencodeGlobalAgents(): Record<string, ClaudeCodeAgentConfig>;
|
|
5
|
+
export declare function loadOpencodeProjectAgents(directory?: string): Record<string, ClaudeCodeAgentConfig>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AgentConfig } from "@opencode-ai/sdk";
|
|
2
|
-
export type AgentScope = "user" | "project";
|
|
2
|
+
export type AgentScope = "user" | "project" | "opencode" | "opencode-project" | "definition-file" | "opencode-config";
|
|
3
3
|
export type ClaudeCodeAgentConfig = Omit<AgentConfig, "model"> & {
|
|
4
4
|
model?: string | {
|
|
5
5
|
providerID: string;
|
|
@@ -13,6 +13,14 @@ export interface AgentFrontmatter {
|
|
|
13
13
|
tools?: string;
|
|
14
14
|
mode?: "subagent" | "primary" | "all";
|
|
15
15
|
}
|
|
16
|
+
export interface AgentJsonDefinition {
|
|
17
|
+
name: string;
|
|
18
|
+
description?: string;
|
|
19
|
+
model?: string;
|
|
20
|
+
tools?: string | string[];
|
|
21
|
+
mode?: "subagent" | "primary" | "all";
|
|
22
|
+
prompt: string;
|
|
23
|
+
}
|
|
16
24
|
export interface LoadedAgent {
|
|
17
25
|
name: string;
|
|
18
26
|
path: string;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function getAllowedMcpEnvVars(): Set<string>;
|
|
2
|
+
export declare function isSensitiveMcpEnvVar(varName: string): boolean;
|
|
3
|
+
export declare function isAllowedMcpEnvVar(varName: string): boolean;
|
|
4
|
+
export declare function setAdditionalAllowedMcpEnvVars(varNames: string[]): void;
|
|
5
|
+
export declare function resetAdditionalAllowedMcpEnvVars(): void;
|
|
@@ -1,2 +1,5 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
1
|
+
export interface ExpandEnvVarsOptions {
|
|
2
|
+
trusted?: boolean;
|
|
3
|
+
}
|
|
4
|
+
export declare function expandEnvVars(value: string, options?: ExpandEnvVarsOptions): string;
|
|
5
|
+
export declare function expandEnvVarsInObject<T>(obj: T, options?: ExpandEnvVarsOptions): T;
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
export type McpScope = "user" | "project" | "local";
|
|
2
|
+
export interface McpOAuthConfig {
|
|
3
|
+
clientId?: string;
|
|
4
|
+
scopes?: string[];
|
|
5
|
+
}
|
|
2
6
|
export interface ClaudeCodeMcpServer {
|
|
3
7
|
type?: "http" | "sse" | "stdio";
|
|
4
8
|
url?: string;
|
|
@@ -6,10 +10,9 @@ export interface ClaudeCodeMcpServer {
|
|
|
6
10
|
args?: string[];
|
|
7
11
|
env?: Record<string, string>;
|
|
8
12
|
headers?: Record<string, string>;
|
|
9
|
-
oauth?:
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
};
|
|
13
|
+
oauth?: McpOAuthConfig;
|
|
14
|
+
scope?: McpScope;
|
|
15
|
+
projectPath?: string;
|
|
13
16
|
disabled?: boolean;
|
|
14
17
|
}
|
|
15
18
|
export interface ClaudeCodeMcpConfig {
|
|
@@ -25,6 +28,7 @@ export interface McpRemoteConfig {
|
|
|
25
28
|
type: "remote";
|
|
26
29
|
url: string;
|
|
27
30
|
headers?: Record<string, string>;
|
|
31
|
+
oauth?: McpOAuthConfig;
|
|
28
32
|
enabled?: boolean;
|
|
29
33
|
}
|
|
30
34
|
export type McpServerConfig = McpLocalConfig | McpRemoteConfig;
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import type { PluginLoadResult, PluginLoaderOptions } from "./types";
|
|
1
|
+
import type { PluginManifest, PluginLoadResult, PluginLoaderOptions } from "./types";
|
|
2
|
+
export declare function loadPluginManifest(installPath: string): PluginManifest | null;
|
|
2
3
|
export declare function discoverInstalledPlugins(options?: PluginLoaderOptions): PluginLoadResult;
|
|
@@ -2,6 +2,12 @@ import type { CommandDefinition } from "../claude-code-command-loader/types";
|
|
|
2
2
|
import type { McpServerConfig } from "../claude-code-mcp-loader/types";
|
|
3
3
|
import type { ClaudeCodeAgentConfig } from "../claude-code-agent-loader/types";
|
|
4
4
|
import type { HooksConfig, LoadedPlugin, PluginLoadError, PluginLoaderOptions } from "./types";
|
|
5
|
+
import { discoverInstalledPlugins } from "./discovery";
|
|
6
|
+
import { loadPluginCommands } from "./command-loader";
|
|
7
|
+
import { loadPluginSkillsAsCommands } from "./skill-loader";
|
|
8
|
+
import { loadPluginAgents } from "./agent-loader";
|
|
9
|
+
import { loadPluginMcpServers } from "./mcp-server-loader";
|
|
10
|
+
import { loadPluginHooksConfigs } from "./hook-loader";
|
|
5
11
|
export { discoverInstalledPlugins } from "./discovery";
|
|
6
12
|
export { loadPluginCommands } from "./command-loader";
|
|
7
13
|
export { loadPluginSkillsAsCommands } from "./skill-loader";
|
|
@@ -17,4 +23,14 @@ export interface PluginComponentsResult {
|
|
|
17
23
|
plugins: LoadedPlugin[];
|
|
18
24
|
errors: PluginLoadError[];
|
|
19
25
|
}
|
|
26
|
+
export interface PluginComponentLoadDeps {
|
|
27
|
+
discoverInstalledPlugins: typeof discoverInstalledPlugins;
|
|
28
|
+
loadPluginCommands: typeof loadPluginCommands;
|
|
29
|
+
loadPluginSkillsAsCommands: typeof loadPluginSkillsAsCommands;
|
|
30
|
+
loadPluginAgents: typeof loadPluginAgents;
|
|
31
|
+
loadPluginMcpServers: typeof loadPluginMcpServers;
|
|
32
|
+
loadPluginHooksConfigs: typeof loadPluginHooksConfigs;
|
|
33
|
+
}
|
|
34
|
+
export declare function clearPluginComponentsCache(): void;
|
|
20
35
|
export declare function loadAllPluginComponents(options?: PluginLoaderOptions): Promise<PluginComponentsResult>;
|
|
36
|
+
export declare function loadAllPluginComponentsWithDeps(options: PluginLoaderOptions | undefined, deps: PluginComponentLoadDeps): Promise<PluginComponentsResult>;
|
|
@@ -16,6 +16,12 @@ export interface PluginInstallation {
|
|
|
16
16
|
lastUpdated: string;
|
|
17
17
|
gitCommitSha?: string;
|
|
18
18
|
isLocal?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Claude Code records this on project/local-scoped installations.
|
|
21
|
+
* Absolute path (or `~`-prefixed) of the project the plugin was installed for.
|
|
22
|
+
* Used to filter project/local plugins that do not belong to the current cwd.
|
|
23
|
+
*/
|
|
24
|
+
projectPath?: string;
|
|
19
25
|
}
|
|
20
26
|
/**
|
|
21
27
|
* Installed plugins database v1 (legacy)
|
|
@@ -46,6 +52,11 @@ export interface InstalledPluginEntryV3 {
|
|
|
46
52
|
installPath: string;
|
|
47
53
|
lastUpdated: string;
|
|
48
54
|
gitCommitSha?: string;
|
|
55
|
+
/**
|
|
56
|
+
* Claude Code records this on project/local-scoped installations.
|
|
57
|
+
* Absolute path (or `~`-prefixed) of the project the plugin was installed for.
|
|
58
|
+
*/
|
|
59
|
+
projectPath?: string;
|
|
49
60
|
}
|
|
50
61
|
/**
|
|
51
62
|
* Installed plugins database structure
|
|
@@ -204,6 +215,16 @@ export interface ClaudeSettings {
|
|
|
204
215
|
* Plugin loader options
|
|
205
216
|
*/
|
|
206
217
|
export interface PluginLoaderOptions {
|
|
218
|
+
/**
|
|
219
|
+
* Override the plugins home directory for testing.
|
|
220
|
+
* If not provided, uses CLAUDE_PLUGINS_HOME env var or ~/.claude/plugins
|
|
221
|
+
*/
|
|
222
|
+
pluginsHomeOverride?: string;
|
|
223
|
+
/**
|
|
224
|
+
* Override plugin manifest loading for testing.
|
|
225
|
+
* Return null to force plugin name derivation from the plugin key.
|
|
226
|
+
*/
|
|
227
|
+
loadPluginManifestOverride?: (installPath: string) => PluginManifest | null;
|
|
207
228
|
/**
|
|
208
229
|
* Override enabled plugins from oh-my-opencode config.
|
|
209
230
|
* Key format: "pluginName@marketplace" (e.g., "shell-scripting@claude-code-workflows")
|
|
@@ -2,6 +2,9 @@ export declare const subagentSessions: Set<string>;
|
|
|
2
2
|
export declare const syncSubagentSessions: Set<string>;
|
|
3
3
|
export declare function setMainSession(id: string | undefined): void;
|
|
4
4
|
export declare function getMainSessionID(): string | undefined;
|
|
5
|
+
export declare function registerAgentName(name: string): void;
|
|
6
|
+
export declare function isAgentRegistered(name: string): boolean;
|
|
7
|
+
export declare function resolveRegisteredAgentName(name: string | undefined): string | undefined;
|
|
5
8
|
/** @internal For testing only */
|
|
6
9
|
export declare function _resetForTesting(): void;
|
|
7
10
|
export declare function setSessionAgent(sessionID: string, agent: string): void;
|
|
@@ -25,5 +25,6 @@ export declare class McpOAuthProvider {
|
|
|
25
25
|
code: string;
|
|
26
26
|
}>;
|
|
27
27
|
login(): Promise<OAuthTokenData>;
|
|
28
|
+
refresh(refreshToken: string): Promise<OAuthTokenData>;
|
|
28
29
|
}
|
|
29
30
|
export { generateCodeVerifier, generateCodeChallenge, buildAuthorizationUrl, startCallbackServer };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { OAuthTokenData } from "./storage";
|
|
2
|
+
/**
|
|
3
|
+
* Execute a token refresh with per-server mutual exclusion.
|
|
4
|
+
*
|
|
5
|
+
* If a refresh is already in progress for the given server, this will
|
|
6
|
+
* return the same promise to all concurrent callers. Once the refresh
|
|
7
|
+
* completes (success or failure), the lock is released.
|
|
8
|
+
*
|
|
9
|
+
* @param serverUrl - The OAuth server URL (used as mutex key)
|
|
10
|
+
* @param refreshFn - The actual refresh operation to execute
|
|
11
|
+
* @returns Promise that resolves to the new token data
|
|
12
|
+
*/
|
|
13
|
+
export declare function withRefreshMutex(serverUrl: string, refreshFn: () => Promise<OAuthTokenData>): Promise<OAuthTokenData>;
|
|
14
|
+
/**
|
|
15
|
+
* Check if a refresh is currently in progress for a server.
|
|
16
|
+
*
|
|
17
|
+
* @param serverUrl - The OAuth server URL
|
|
18
|
+
* @returns true if a refresh operation is active
|
|
19
|
+
*/
|
|
20
|
+
export declare function isRefreshInProgress(serverUrl: string): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Get the number of servers currently undergoing token refresh.
|
|
23
|
+
*
|
|
24
|
+
* @returns Number of active refresh operations
|
|
25
|
+
*/
|
|
26
|
+
export declare function getActiveRefreshCount(): number;
|
|
@@ -2,5 +2,5 @@ import type { SkillScope, LoadedSkill } from "./types";
|
|
|
2
2
|
import type { SkillMcpConfig } from "../skill-mcp-manager/types";
|
|
3
3
|
export declare function mapWithConcurrency<T, R>(items: T[], mapper: (item: T) => Promise<R>, concurrency: number): Promise<R[]>;
|
|
4
4
|
export declare function loadMcpJsonFromDirAsync(skillDir: string): Promise<SkillMcpConfig | undefined>;
|
|
5
|
-
export declare function loadSkillFromPathAsync(skillPath: string, resolvedPath: string, defaultName: string, scope: SkillScope): Promise<LoadedSkill | null>;
|
|
6
|
-
export declare function discoverSkillsInDirAsync(skillsDir: string): Promise<LoadedSkill[]>;
|
|
5
|
+
export declare function loadSkillFromPathAsync(skillPath: string, resolvedPath: string, defaultName: string, scope: SkillScope, namePrefix?: string): Promise<LoadedSkill | null>;
|
|
6
|
+
export declare function discoverSkillsInDirAsync(skillsDir: string, scope?: SkillScope, namePrefix?: string, depth?: number, maxDepth?: number): Promise<LoadedSkill[]>;
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import type { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
2
1
|
import type { ClaudeCodeMcpServer } from "../claude-code-mcp-loader/types";
|
|
3
|
-
import type { SkillMcpClientInfo, SkillMcpManagerState } from "./types";
|
|
2
|
+
import type { McpClient, SkillMcpClientInfo, SkillMcpManagerState } from "./types";
|
|
4
3
|
export declare function getOrCreateClient(params: {
|
|
5
4
|
state: SkillMcpManagerState;
|
|
6
5
|
clientKey: string;
|
|
7
6
|
info: SkillMcpClientInfo;
|
|
8
7
|
config: ClaudeCodeMcpServer;
|
|
9
|
-
}): Promise<
|
|
8
|
+
}): Promise<McpClient>;
|
|
10
9
|
export declare function getOrCreateClientWithRetryImpl(params: {
|
|
11
10
|
state: SkillMcpManagerState;
|
|
12
11
|
clientKey: string;
|
|
13
12
|
info: SkillMcpClientInfo;
|
|
14
13
|
config: ClaudeCodeMcpServer;
|
|
15
|
-
}): Promise<
|
|
14
|
+
}): Promise<McpClient>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Redacts sensitive tokens from a string.
|
|
3
|
+
* Used for error messages that may contain command-line arguments or environment info.
|
|
4
|
+
*/
|
|
5
|
+
export declare function redactSensitiveData(input: string): string;
|
|
6
|
+
/**
|
|
7
|
+
* Redacts sensitive data from an Error object, returning a new Error.
|
|
8
|
+
* Preserves the stack trace but redacts the message.
|
|
9
|
+
*/
|
|
10
|
+
export declare function redactErrorSensitiveData(error: Error): Error;
|
|
@@ -1,3 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import type { McpClient, McpTransport, SkillMcpClientConnectionParams } from "./types";
|
|
2
|
+
type HttpClientFactory = (clientInfo: {
|
|
3
|
+
name: string;
|
|
4
|
+
version: string;
|
|
5
|
+
}, options: {
|
|
6
|
+
capabilities: Record<string, never>;
|
|
7
|
+
}) => McpClient;
|
|
8
|
+
type HttpTransportFactory = (url: URL, options?: {
|
|
9
|
+
requestInit?: RequestInit;
|
|
10
|
+
}) => McpTransport;
|
|
11
|
+
interface HttpClientDependencies {
|
|
12
|
+
createClient: HttpClientFactory;
|
|
13
|
+
createTransport: HttpTransportFactory;
|
|
14
|
+
}
|
|
15
|
+
export declare function setHttpClientDependenciesForTesting(dependencies?: Partial<HttpClientDependencies>): void;
|
|
16
|
+
export declare function createHttpClient(params: SkillMcpClientConnectionParams): Promise<McpClient>;
|
|
17
|
+
export {};
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import type { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
2
1
|
import type { Prompt, Resource, Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
3
2
|
import type { ClaudeCodeMcpServer } from "../claude-code-mcp-loader/types";
|
|
4
|
-
import type { SkillMcpClientInfo, SkillMcpServerContext } from "./types";
|
|
3
|
+
import type { McpClient, OAuthProviderFactory, SkillMcpClientInfo, SkillMcpServerContext } from "./types";
|
|
5
4
|
export declare class SkillMcpManager {
|
|
6
5
|
private readonly state;
|
|
6
|
+
constructor(options?: {
|
|
7
|
+
createOAuthProvider?: OAuthProviderFactory;
|
|
8
|
+
});
|
|
7
9
|
private getClientKey;
|
|
8
|
-
getOrCreateClient(info: SkillMcpClientInfo, config: ClaudeCodeMcpServer): Promise<
|
|
10
|
+
getOrCreateClient(info: SkillMcpClientInfo, config: ClaudeCodeMcpServer): Promise<McpClient>;
|
|
9
11
|
disconnectSession(sessionID: string): Promise<void>;
|
|
10
12
|
disconnectAll(): Promise<void>;
|
|
11
13
|
listTools(info: SkillMcpClientInfo, context: SkillMcpServerContext): Promise<Tool[]>;
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import type { ClaudeCodeMcpServer } from "../claude-code-mcp-loader/types";
|
|
2
|
-
import {
|
|
3
|
-
export declare function getOrCreateAuthProvider(authProviders: Map<string,
|
|
4
|
-
export declare function buildHttpRequestInit(config: ClaudeCodeMcpServer, authProviders: Map<string,
|
|
2
|
+
import type { OAuthProviderFactory, OAuthProviderLike } from "./types";
|
|
3
|
+
export declare function getOrCreateAuthProvider(authProviders: Map<string, OAuthProviderLike>, serverUrl: string, oauth: NonNullable<ClaudeCodeMcpServer["oauth"]>, createOAuthProvider?: OAuthProviderFactory): OAuthProviderLike;
|
|
4
|
+
export declare function buildHttpRequestInit(config: ClaudeCodeMcpServer, authProviders: Map<string, OAuthProviderLike>, createOAuthProvider?: OAuthProviderFactory): Promise<RequestInit | undefined>;
|
|
5
5
|
export declare function handleStepUpIfNeeded(params: {
|
|
6
6
|
error: Error;
|
|
7
7
|
config: ClaudeCodeMcpServer;
|
|
8
|
-
authProviders: Map<string,
|
|
8
|
+
authProviders: Map<string, OAuthProviderLike>;
|
|
9
|
+
createOAuthProvider?: OAuthProviderFactory;
|
|
10
|
+
}): Promise<boolean>;
|
|
11
|
+
export declare function handlePostRequestAuthError(params: {
|
|
12
|
+
error: Error;
|
|
13
|
+
config: ClaudeCodeMcpServer;
|
|
14
|
+
authProviders: Map<string, OAuthProviderLike>;
|
|
15
|
+
createOAuthProvider?: OAuthProviderFactory;
|
|
16
|
+
refreshAttempted?: Set<string>;
|
|
9
17
|
}): Promise<boolean>;
|
|
@@ -1,3 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { SkillMcpClientConnectionParams } from "./types";
|
|
3
|
-
|
|
1
|
+
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
|
|
2
|
+
import type { McpClient, McpTransport, SkillMcpClientConnectionParams } from "./types";
|
|
3
|
+
type StdioClientFactory = (clientInfo: {
|
|
4
|
+
name: string;
|
|
5
|
+
version: string;
|
|
6
|
+
}, options: {
|
|
7
|
+
capabilities: Record<string, never>;
|
|
8
|
+
}) => McpClient;
|
|
9
|
+
type StdioTransportFactory = (options: ConstructorParameters<typeof StdioClientTransport>[0]) => McpTransport;
|
|
10
|
+
interface StdioClientDependencies {
|
|
11
|
+
createClient: StdioClientFactory;
|
|
12
|
+
createTransport: StdioTransportFactory;
|
|
13
|
+
}
|
|
14
|
+
export declare function setStdioClientDependenciesForTesting(dependencies?: Partial<StdioClientDependencies>): void;
|
|
15
|
+
export declare function createStdioClient(params: SkillMcpClientConnectionParams): Promise<McpClient>;
|
|
16
|
+
export {};
|
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
import type { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
2
|
-
import type {
|
|
3
|
-
import type { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
|
|
2
|
+
import type { Transport } from "@modelcontextprotocol/sdk/shared/transport.js";
|
|
4
3
|
import type { ClaudeCodeMcpServer } from "../claude-code-mcp-loader/types";
|
|
5
4
|
import type { McpOAuthProvider } from "../mcp-oauth/provider";
|
|
5
|
+
import type { SkillScope } from "../opencode-skill-loader/types";
|
|
6
6
|
export type SkillMcpConfig = Record<string, ClaudeCodeMcpServer>;
|
|
7
|
+
export type McpTransport = Transport;
|
|
8
|
+
export interface McpClient {
|
|
9
|
+
connect: Client["connect"];
|
|
10
|
+
close: Client["close"];
|
|
11
|
+
listTools: Client["listTools"];
|
|
12
|
+
listResources: Client["listResources"];
|
|
13
|
+
listPrompts: Client["listPrompts"];
|
|
14
|
+
callTool: Client["callTool"];
|
|
15
|
+
readResource: Client["readResource"];
|
|
16
|
+
getPrompt: Client["getPrompt"];
|
|
17
|
+
}
|
|
7
18
|
export interface SkillMcpClientInfo {
|
|
8
19
|
serverName: string;
|
|
9
20
|
skillName: string;
|
|
10
21
|
sessionID: string;
|
|
22
|
+
scope?: SkillScope | "local";
|
|
11
23
|
}
|
|
12
24
|
export interface SkillMcpServerContext {
|
|
13
25
|
config: ClaudeCodeMcpServer;
|
|
@@ -20,27 +32,33 @@ export interface SkillMcpServerContext {
|
|
|
20
32
|
*/
|
|
21
33
|
export type ConnectionType = "stdio" | "http";
|
|
22
34
|
export interface ManagedClientBase {
|
|
23
|
-
client:
|
|
35
|
+
client: McpClient;
|
|
24
36
|
skillName: string;
|
|
25
37
|
lastUsedAt: number;
|
|
26
38
|
connectionType: ConnectionType;
|
|
27
39
|
}
|
|
28
40
|
export interface ManagedStdioClient extends ManagedClientBase {
|
|
29
41
|
connectionType: "stdio";
|
|
30
|
-
transport:
|
|
42
|
+
transport: McpTransport;
|
|
31
43
|
}
|
|
32
44
|
export interface ManagedHttpClient extends ManagedClientBase {
|
|
33
45
|
connectionType: "http";
|
|
34
|
-
transport:
|
|
46
|
+
transport: McpTransport;
|
|
35
47
|
}
|
|
36
48
|
export type ManagedClient = ManagedStdioClient | ManagedHttpClient;
|
|
37
49
|
export interface ProcessCleanupHandler {
|
|
38
50
|
signal: NodeJS.Signals;
|
|
39
51
|
listener: () => void;
|
|
40
52
|
}
|
|
53
|
+
export type OAuthProviderLike = Pick<McpOAuthProvider, "tokens" | "login" | "refresh">;
|
|
54
|
+
export type OAuthProviderFactory = (options: {
|
|
55
|
+
serverUrl: string;
|
|
56
|
+
clientId?: string;
|
|
57
|
+
scopes?: string[];
|
|
58
|
+
}) => OAuthProviderLike;
|
|
41
59
|
export interface SkillMcpManagerState {
|
|
42
60
|
clients: Map<string, ManagedClient>;
|
|
43
|
-
pendingConnections: Map<string, Promise<
|
|
61
|
+
pendingConnections: Map<string, Promise<McpClient>>;
|
|
44
62
|
disconnectedSessions: Map<string, number>;
|
|
45
63
|
authProviders: Map<string, McpOAuthProvider>;
|
|
46
64
|
cleanupRegistered: boolean;
|
|
@@ -50,6 +68,7 @@ export interface SkillMcpManagerState {
|
|
|
50
68
|
shutdownGeneration: number;
|
|
51
69
|
inFlightConnections: Map<string, number>;
|
|
52
70
|
disposed: boolean;
|
|
71
|
+
createOAuthProvider: OAuthProviderFactory;
|
|
53
72
|
}
|
|
54
73
|
export interface SkillMcpClientConnectionParams {
|
|
55
74
|
state: SkillMcpManagerState;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type TeamModeConfig = {
|
|
2
|
+
worktreeBaseDir?: string;
|
|
3
|
+
};
|
|
4
|
+
export declare class GitUnavailableError extends Error {
|
|
5
|
+
constructor();
|
|
6
|
+
}
|
|
7
|
+
declare function runGit(args: string[], cwd?: string): Promise<{
|
|
8
|
+
code: number;
|
|
9
|
+
stderr: string;
|
|
10
|
+
}>;
|
|
11
|
+
export declare function setGitCommandRunnerForTests(runner: typeof runGit): void;
|
|
12
|
+
export declare function isGitAvailable(): Promise<boolean>;
|
|
13
|
+
export declare function validateWorktreeSpec(spec: string): void;
|
|
14
|
+
export declare function createWorktree(repoRoot: string, _teamRunId: string, _memberName: string, worktreePath: string, _config: TeamModeConfig): Promise<string>;
|
|
15
|
+
export {};
|