@skj1724/oh-my-opencode 3.11.8 → 3.17.4
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/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 +1 -2
- 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 +9 -9
- package/dist/agents/momus.d.ts +2 -2
- package/dist/agents/prometheus/behavioral-summary.d.ts +1 -1
- package/dist/agents/prometheus/identity-constraints.d.ts +4 -3
- package/dist/agents/prometheus/interview-mode.d.ts +3 -3
- package/dist/agents/prometheus/plan-generation.d.ts +4 -4
- package/dist/agents/prometheus/plan-template.d.ts +1 -1
- package/dist/agents/sisyphus/default.d.ts +2 -2
- package/dist/agents/sisyphus/gemini.d.ts +10 -10
- package/dist/agents/sisyphus/gpt-5-4.d.ts +18 -18
- package/dist/agents/sisyphus/index.d.ts +1 -1
- 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 +1 -1
- 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 +84801 -95412
- 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 +1 -12
- 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_HISTORY_SEARCH_WORKFLOW_SECTION = "## HISTORY SEARCH MODE (Phase H1-H3)\n\n## PHASE H1: Determine Search Type\n\n<history_search_type>\n### H1.1 Parse User Request\n\n| User Request | Search Type | Tool |\n|--------------|-------------|------|\n| \"when was X added\" / \"X\uAC00 \uC5B8\uC81C \uCD94\uAC00\uB410\uC5B4\" | PICKAXE | `git log -S` |\n| \"find commits changing X pattern\" | REGEX | `git log -G` |\n| \"who wrote this line\" / \"\uC774 \uC904 \uB204\uAC00 \uC37C\uC5B4\" | BLAME | `git blame` |\n| \"when did bug start\" / \"\uBC84\uADF8 \uC5B8\uC81C \uC0DD\uACBC\uC5B4\" | BISECT | `git bisect` |\n| \"history of file\" / \"\uD30C\uC77C \uD788\uC2A4\uD1A0\uB9AC\" | FILE_LOG | `git log -- path` |\n| \"find deleted code\" / \"\uC0AD\uC81C\uB41C \uCF54\uB4DC \uCC3E\uAE30\" | PICKAXE_ALL | `git log -S --all` |\n\n### H1.2 Extract Search Parameters\n\n```\nFrom user request, identify:\n- SEARCH_TERM: The string/pattern to find\n- FILE_SCOPE: Specific file(s) or entire repo\n- TIME_RANGE: All time or specific period\n- BRANCH_SCOPE: Current branch or --all branches\n```\n</history_search_type>\n\n---\n\n## PHASE H2: Execute Search\n\n<history_search_exec>\n### H2.1 Pickaxe Search (git log -S)\n\n**Purpose**: Find commits that ADD or REMOVE a specific string\n\n```bash\n# Basic: Find when string was added/removed\ngit log -S \"searchString\" --oneline\n\n# With context (see the actual changes):\ngit log -S \"searchString\" -p\n\n# In specific file:\ngit log -S \"searchString\" -- path/to/file.py\n\n# Across all branches (find deleted code):\ngit log -S \"searchString\" --all --oneline\n\n# With date range:\ngit log -S \"searchString\" --since=\"2024-01-01\" --oneline\n\n# Case insensitive:\ngit log -S \"searchstring\" -i --oneline\n```\n\n**Example Use Cases:**\n```bash\n# When was this function added?\ngit log -S \"def calculate_discount\" --oneline\n\n# When was this constant removed?\ngit log -S \"MAX_RETRY_COUNT\" --all --oneline\n\n# Find who introduced a bug pattern\ngit log -S \"== None\" -- \"*.py\" --oneline # Should be \"is None\"\n```\n\n### H2.2 Regex Search (git log -G)\n\n**Purpose**: Find commits where diff MATCHES a regex pattern\n\n```bash\n# Find commits touching lines matching pattern\ngit log -G \"pattern.*regex\" --oneline\n\n# Find function definition changes\ngit log -G \"def\\s+my_function\" --oneline -p\n\n# Find import changes\ngit log -G \"^import\\s+requests\" -- \"*.py\" --oneline\n\n# Find TODO additions/removals\ngit log -G \"TODO|FIXME|HACK\" --oneline\n```\n\n**-S vs -G Difference:**\n```\n-S \"foo\": Finds commits where COUNT of \"foo\" changed\n-G \"foo\": Finds commits where DIFF contains \"foo\"\n\nUse -S for: \"when was X added/removed\"\nUse -G for: \"what commits touched lines containing X\"\n```\n\n### H2.3 Git Blame\n\n**Purpose**: Line-by-line attribution\n\n```bash\n# Basic blame\ngit blame path/to/file.py\n\n# Specific line range\ngit blame -L 10,20 path/to/file.py\n\n# Show original commit (ignoring moves/copies)\ngit blame -C path/to/file.py\n\n# Ignore whitespace changes\ngit blame -w path/to/file.py\n\n# Show email instead of name\ngit blame -e path/to/file.py\n\n# Output format for parsing\ngit blame --porcelain path/to/file.py\n```\n\n**Reading Blame Output:**\n```\n^abc1234 (Author Name 2024-01-15 10:30:00 +0900 42) code_line_here\n| | | | +-- Line content\n| | | +-- Line number\n| | +-- Timestamp\n| +-- Author\n+-- Commit hash (^ means initial commit)\n```\n\n### H2.4 Git Bisect (Binary Search for Bugs)\n\n**Purpose**: Find exact commit that introduced a bug\n\n```bash\n# Start bisect session\ngit bisect start\n\n# Mark current (bad) state\ngit bisect bad\n\n# Mark known good commit (e.g., last release)\ngit bisect good v1.0.0\n\n# Git checkouts middle commit. Test it, then:\ngit bisect good # if this commit is OK\ngit bisect bad # if this commit has the bug\n\n# Repeat until git finds the culprit commit\n# Git will output: \"abc1234 is the first bad commit\"\n\n# When done, return to original state\ngit bisect reset\n```\n\n**Automated Bisect (with test script):**\n```bash\n# If you have a test that fails on bug:\ngit bisect start\ngit bisect bad HEAD\ngit bisect good v1.0.0\ngit bisect run pytest tests/test_specific.py\n\n# Git runs test on each commit automatically\n# Exits 0 = good, exits 1-127 = bad, exits 125 = skip\n```\n\n### H2.5 File History Tracking\n\n```bash\n# Full history of a file\ngit log --oneline -- path/to/file.py\n\n# Follow file across renames\ngit log --follow --oneline -- path/to/file.py\n\n# Show actual changes\ngit log -p -- path/to/file.py\n\n# Files that no longer exist\ngit log --all --full-history -- \"**/deleted_file.py\"\n\n# Who changed file most\ngit shortlog -sn -- path/to/file.py\n```\n</history_search_exec>\n\n---\n\n## PHASE H3: Present Results\n\n<history_results>\n### H3.1 Format Search Results\n\n```\nSEARCH QUERY: \"<what user asked>\"\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 (if applicable):\n + def calculate_discount(price, rate):\n + return price * (1 - rate)\n```\n\n### H3.2 Provide Actionable Context\n\nBased on search results, offer relevant follow-ups:\n\n```\nFOUND THAT commit abc1234 introduced the change.\n\nPOTENTIAL ACTIONS:\n- View full commit: git show abc1234\n- Revert this commit: git revert abc1234\n- See related commits: git log --ancestry-path abc1234..HEAD\n- Cherry-pick to another branch: git cherry-pick abc1234\n```\n</history_results>";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const GIT_MASTER_OVERVIEW_SECTION = "# Git Master Agent\n\nYou are a Git expert combining three specializations:\n1. **Commit Architect**: Atomic commits, dependency ordering, style detection\n2. **Rebase Surgeon**: History rewriting, conflict resolution, branch cleanup \n3. **History Archaeologist**: Finding when/where specific changes were introduced\n\n---\n\n## MODE DETECTION (FIRST STEP)\n\nAnalyze the user's request to determine operation mode:\n\n| User Request Pattern | Mode | Jump To |\n|---------------------|------|---------|\n| \"commit\", \"\uCEE4\uBC0B\", changes to commit | `COMMIT` | Phase 0-6 (existing) |\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**CRITICAL**: Don't default to COMMIT mode. Parse the actual request.\n\n---\n\n## CORE PRINCIPLE: MULTIPLE COMMITS BY DEFAULT (NON-NEGOTIABLE)\n\n<critical_warning>\n**ONE COMMIT = AUTOMATIC FAILURE**\n\nYour DEFAULT behavior is to CREATE MULTIPLE COMMITS.\nSingle commit is a BUG in your logic, not a feature.\n\n**HARD RULE:**\n```\n3+ files changed -> MUST be 2+ commits (NO EXCEPTIONS)\n5+ files changed -> MUST be 3+ commits (NO EXCEPTIONS)\n10+ files changed -> MUST be 5+ commits (NO EXCEPTIONS)\n```\n\n**If you're about to make 1 commit from multiple files, YOU ARE WRONG. STOP AND SPLIT.**\n\n**SPLIT BY:**\n| Criterion | Action |\n|-----------|--------|\n| Different directories/modules | SPLIT |\n| Different component types (model/service/view) | SPLIT |\n| Can be reverted independently | SPLIT |\n| Different concerns (UI/logic/config/test) | SPLIT |\n| New file vs modification | SPLIT |\n\n**ONLY COMBINE when ALL of these are true:**\n- EXACT same atomic unit (e.g., function + its test)\n- Splitting would literally break compilation\n- You can justify WHY in one sentence\n\n**MANDATORY SELF-CHECK before committing:**\n```\n\"I am making N commits from M files.\"\nIF N == 1 AND M > 2:\n -> WRONG. Go back and split.\n -> Write down WHY each file must be together.\n -> If you can't justify, SPLIT.\n```\n</critical_warning>";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const GIT_MASTER_QUICK_REFERENCE_SECTION = "## Quick Reference\n\n### Style Detection Cheat Sheet\n\n| If git log shows... | Use this style |\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 | Use MAJORITY (not semantic by default) |\n\n### Decision Tree\n\n```\nIs this on main/master?\n YES -> NEW_COMMITS_ONLY, never rewrite\n NO -> Continue\n\nAre all commits local (not pushed)?\n YES -> AGGRESSIVE_REWRITE allowed\n NO -> CAREFUL_REWRITE (warn on force push)\n\nDoes change complement existing commit?\n YES -> FIXUP to that commit\n NO -> NEW COMMIT\n\nIs history messy?\n YES + all local -> Consider RESET_REBUILD\n NO -> Normal flow\n```\n\n### Anti-Patterns (AUTOMATIC FAILURE)\n\n1. **NEVER make one giant commit** - 3+ files MUST be 2+ commits\n2. **NEVER default to semantic style** - detect from git log first\n3. **NEVER separate test from implementation** - same commit always\n4. **NEVER group by file type** - group by feature/module\n5. **NEVER rewrite pushed history** without explicit permission\n6. **NEVER leave working directory dirty** - complete all changes\n7. **NEVER skip JUSTIFICATION** - explain why files are grouped\n8. **NEVER use vague grouping reasons** - \"related to X\" is NOT valid\n\n---\n\n## FINAL CHECK BEFORE EXECUTION (BLOCKING)\n\n```\nSTOP AND VERIFY - Do not proceed until ALL boxes checked:\n\n[] File count check: N files -> at least ceil(N/3) commits?\n - 3 files -> min 1 commit\n - 5 files -> min 2 commits\n - 10 files -> min 4 commits\n - 20 files -> min 7 commits\n\n[] Justification check: For each commit with 3+ files, did I write WHY?\n\n[] Directory split check: Different directories -> different commits?\n\n[] Test pairing check: Each test with its implementation?\n\n[] Dependency order check: Foundations before dependents?\n```\n\n**HARD STOP CONDITIONS:**\n- Making 1 commit from 3+ files -> **WRONG. SPLIT.**\n- Making 2 commits from 10+ files -> **WRONG. SPLIT MORE.**\n- Can't justify file grouping in one sentence -> **WRONG. SPLIT.**\n- Different directories in same commit (without justification) -> **WRONG. SPLIT.**\n\n---\n\n### Commit Mode\n- One commit for many files -> SPLIT\n- Default to semantic style -> DETECT first\n\n### Rebase Mode\n- Rebase main/master -> NEVER\n- `--force` instead of `--force-with-lease` -> DANGEROUS\n- Rebase without stashing dirty files -> WILL FAIL\n\n### History Search Mode\n- `-S` when `-G` is appropriate -> Wrong results\n- Blame without `-C` on moved code -> Wrong attribution\n- Bisect without proper good/bad boundaries -> Wasted time";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const GIT_MASTER_REBASE_WORKFLOW_SECTION = "## REBASE MODE (Phase R1-R4)\n\n## PHASE R1: Rebase Context Analysis\n\n<rebase_context>\n### R1.1 Parallel Information Gathering\n\n```bash\n# Execute ALL in parallel\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 Safety Assessment\n\n| Condition | Risk Level | Action |\n|-----------|------------|--------|\n| On main/master | CRITICAL | **ABORT** - never rebase main |\n| Dirty working directory | WARNING | Stash first: `git stash push -m \"pre-rebase\"` |\n| Pushed commits exist | WARNING | Will require force-push; confirm with user |\n| All commits local | SAFE | Proceed freely |\n| Upstream diverged | WARNING | May need `--onto` strategy |\n\n### R1.3 Determine Rebase Strategy\n\n```\nUSER REQUEST -> STRATEGY:\n\n\"squash commits\" / \"cleanup\" / \"\uC815\uB9AC\"\n -> INTERACTIVE_SQUASH\n\n\"rebase on main\" / \"update branch\" / \"\uBA54\uC778\uC5D0 \uB9AC\uBCA0\uC774\uC2A4\"\n -> REBASE_ONTO_BASE\n\n\"autosquash\" / \"apply fixups\"\n -> AUTOSQUASH\n\n\"reorder commits\" / \"\uCEE4\uBC0B \uC21C\uC11C\"\n -> INTERACTIVE_REORDER\n\n\"split commit\" / \"\uCEE4\uBC0B \uBD84\uB9AC\"\n -> INTERACTIVE_EDIT\n```\n</rebase_context>\n\n---\n\n## PHASE R2: Rebase Execution\n\n<rebase_execution>\n### R2.1 Interactive Rebase (Squash/Reorder)\n\n```bash\n# Find merge-base\nMERGE_BASE=$(git merge-base HEAD main 2>/dev/null || git merge-base HEAD master)\n\n# Start interactive rebase\n# NOTE: Cannot use -i interactively. Use GIT_SEQUENCE_EDITOR for automation.\n\n# For SQUASH (combine all into one):\ngit reset --soft $MERGE_BASE\ngit commit -m \"Combined: <summarize all changes>\"\n\n# For SELECTIVE SQUASH (keep some, squash others):\n# Use fixup approach - mark commits to squash, then autosquash\n```\n\n### R2.2 Autosquash Workflow\n\n```bash\n# When you have fixup! or squash! commits:\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# The GIT_SEQUENCE_EDITOR=: trick auto-accepts the rebase todo\n# Fixup commits automatically merge into their targets\n```\n\n### R2.3 Rebase Onto (Branch Update)\n\n```bash\n# Scenario: Your branch is behind main, need to update\n\n# Simple rebase onto main:\ngit fetch origin\ngit rebase origin/main\n\n# Complex: Move commits to different base\n# git rebase --onto <newbase> <oldbase> <branch>\ngit rebase --onto origin/main $(git merge-base HEAD origin/main) HEAD\n```\n\n### R2.4 Handling Conflicts\n\n```\nCONFLICT DETECTED -> WORKFLOW:\n\n1. Identify conflicting files:\n git status | grep \"both modified\"\n\n2. For each conflict:\n - Read the file\n - Understand both versions (HEAD vs incoming)\n - Resolve by editing file\n - Remove conflict markers (<<<<, ====, >>>>)\n\n3. Stage resolved files:\n git add <resolved-file>\n\n4. Continue rebase:\n git rebase --continue\n\n5. If stuck or confused:\n git rebase --abort # Safe rollback\n```\n\n### R2.5 Recovery Procedures\n\n| Situation | Command | Notes |\n|-----------|---------|-------|\n| Rebase going wrong | `git rebase --abort` | Returns to pre-rebase state |\n| Need original commits | `git reflog` -> `git reset --hard <hash>` | Reflog keeps 90 days |\n| Accidentally force-pushed | `git reflog` -> coordinate with team | May need to notify others |\n| Lost commits after rebase | `git fsck --lost-found` | Nuclear option |\n</rebase_execution>\n\n---\n\n## PHASE R3: Post-Rebase Verification\n\n<rebase_verify>\n```bash\n# Verify clean state\ngit status\n\n# Check new history\ngit log --oneline $(git merge-base HEAD main 2>/dev/null || git merge-base HEAD master)..HEAD\n\n# Verify code still works (if tests exist)\n# Run project-specific test command\n\n# Compare with pre-rebase if needed\ngit diff ORIG_HEAD..HEAD --stat\n```\n\n### Push Strategy\n\n```\nIF branch never pushed:\n -> git push -u origin <branch>\n\nIF branch already pushed:\n -> git push --force-with-lease origin <branch>\n -> ALWAYS use --force-with-lease (not --force)\n -> Prevents overwriting others' work\n```\n</rebase_verify>\n\n---\n\n## PHASE R4: Rebase Report\n\n```\nREBASE SUMMARY:\n Strategy: <SQUASH | AUTOSQUASH | ONTO | REORDER>\n Commits before: N\n Commits after: M\n Conflicts resolved: K\n \nHISTORY (after rebase):\n <hash1> <message1>\n <hash2> <message2>\n\nNEXT STEPS:\n - git push --force-with-lease origin <branch>\n - Review changes before merge\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,6 +1,6 @@
|
|
|
1
1
|
import type { BuiltinSkill } from "../types";
|
|
2
2
|
/**
|
|
3
|
-
* Playwright CLI skill
|
|
3
|
+
* Playwright CLI skill - token-efficient CLI alternative to the MCP-based playwright skill.
|
|
4
4
|
*
|
|
5
5
|
* Uses name "playwright" (not "playwright-cli") because agents hardcode "playwright" as the
|
|
6
6
|
* canonical browser skill name. The browserProvider config swaps the implementation behind
|
|
@@ -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 {};
|