@hashicorp/kits 0.1.0
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.md +619 -0
- package/bin/kits.js +8 -0
- package/dist/adapters/base-adapter.d.ts +231 -0
- package/dist/adapters/base-adapter.d.ts.map +1 -0
- package/dist/adapters/base-adapter.js +703 -0
- package/dist/adapters/base-adapter.js.map +1 -0
- package/dist/adapters/claude-code/detection.d.ts +63 -0
- package/dist/adapters/claude-code/detection.d.ts.map +1 -0
- package/dist/adapters/claude-code/detection.js +154 -0
- package/dist/adapters/claude-code/detection.js.map +1 -0
- package/dist/adapters/claude-code/index.d.ts +178 -0
- package/dist/adapters/claude-code/index.d.ts.map +1 -0
- package/dist/adapters/claude-code/index.js +643 -0
- package/dist/adapters/claude-code/index.js.map +1 -0
- package/dist/adapters/claude-code/installer.d.ts +161 -0
- package/dist/adapters/claude-code/installer.d.ts.map +1 -0
- package/dist/adapters/claude-code/installer.js +413 -0
- package/dist/adapters/claude-code/installer.js.map +1 -0
- package/dist/adapters/claude-code/model-mapping.d.ts +7 -0
- package/dist/adapters/claude-code/model-mapping.d.ts.map +1 -0
- package/dist/adapters/claude-code/model-mapping.js +14 -0
- package/dist/adapters/claude-code/model-mapping.js.map +1 -0
- package/dist/adapters/claude-code/tool-mapping.d.ts +18 -0
- package/dist/adapters/claude-code/tool-mapping.d.ts.map +1 -0
- package/dist/adapters/claude-code/tool-mapping.js +31 -0
- package/dist/adapters/claude-code/tool-mapping.js.map +1 -0
- package/dist/adapters/codex/detection.d.ts +60 -0
- package/dist/adapters/codex/detection.d.ts.map +1 -0
- package/dist/adapters/codex/detection.js +146 -0
- package/dist/adapters/codex/detection.js.map +1 -0
- package/dist/adapters/codex/index.d.ts +167 -0
- package/dist/adapters/codex/index.d.ts.map +1 -0
- package/dist/adapters/codex/index.js +344 -0
- package/dist/adapters/codex/index.js.map +1 -0
- package/dist/adapters/codex/installer.d.ts +147 -0
- package/dist/adapters/codex/installer.d.ts.map +1 -0
- package/dist/adapters/codex/installer.js +229 -0
- package/dist/adapters/codex/installer.js.map +1 -0
- package/dist/adapters/codex/model-mapping.d.ts +7 -0
- package/dist/adapters/codex/model-mapping.d.ts.map +1 -0
- package/dist/adapters/codex/model-mapping.js +14 -0
- package/dist/adapters/codex/model-mapping.js.map +1 -0
- package/dist/adapters/codex/tool-mapping.d.ts +19 -0
- package/dist/adapters/codex/tool-mapping.d.ts.map +1 -0
- package/dist/adapters/codex/tool-mapping.js +32 -0
- package/dist/adapters/codex/tool-mapping.js.map +1 -0
- package/dist/adapters/command-parser.d.ts +72 -0
- package/dist/adapters/command-parser.d.ts.map +1 -0
- package/dist/adapters/command-parser.js +222 -0
- package/dist/adapters/command-parser.js.map +1 -0
- package/dist/adapters/file-operations.d.ts +164 -0
- package/dist/adapters/file-operations.d.ts.map +1 -0
- package/dist/adapters/file-operations.js +526 -0
- package/dist/adapters/file-operations.js.map +1 -0
- package/dist/adapters/gemini-cli/detection.d.ts +57 -0
- package/dist/adapters/gemini-cli/detection.d.ts.map +1 -0
- package/dist/adapters/gemini-cli/detection.js +143 -0
- package/dist/adapters/gemini-cli/detection.js.map +1 -0
- package/dist/adapters/gemini-cli/index.d.ts +182 -0
- package/dist/adapters/gemini-cli/index.d.ts.map +1 -0
- package/dist/adapters/gemini-cli/index.js +598 -0
- package/dist/adapters/gemini-cli/index.js.map +1 -0
- package/dist/adapters/gemini-cli/installer.d.ts +158 -0
- package/dist/adapters/gemini-cli/installer.d.ts.map +1 -0
- package/dist/adapters/gemini-cli/installer.js +457 -0
- package/dist/adapters/gemini-cli/installer.js.map +1 -0
- package/dist/adapters/gemini-cli/model-mapping.d.ts +7 -0
- package/dist/adapters/gemini-cli/model-mapping.d.ts.map +1 -0
- package/dist/adapters/gemini-cli/model-mapping.js +14 -0
- package/dist/adapters/gemini-cli/model-mapping.js.map +1 -0
- package/dist/adapters/gemini-cli/tool-mapping.d.ts +18 -0
- package/dist/adapters/gemini-cli/tool-mapping.d.ts.map +1 -0
- package/dist/adapters/gemini-cli/tool-mapping.js +31 -0
- package/dist/adapters/gemini-cli/tool-mapping.js.map +1 -0
- package/dist/adapters/github-copilot/detection.d.ts +58 -0
- package/dist/adapters/github-copilot/detection.d.ts.map +1 -0
- package/dist/adapters/github-copilot/detection.js +144 -0
- package/dist/adapters/github-copilot/detection.js.map +1 -0
- package/dist/adapters/github-copilot/index.d.ts +203 -0
- package/dist/adapters/github-copilot/index.d.ts.map +1 -0
- package/dist/adapters/github-copilot/index.js +595 -0
- package/dist/adapters/github-copilot/index.js.map +1 -0
- package/dist/adapters/github-copilot/installer.d.ts +124 -0
- package/dist/adapters/github-copilot/installer.d.ts.map +1 -0
- package/dist/adapters/github-copilot/installer.js +343 -0
- package/dist/adapters/github-copilot/installer.js.map +1 -0
- package/dist/adapters/github-copilot/model-mapping.d.ts +7 -0
- package/dist/adapters/github-copilot/model-mapping.d.ts.map +1 -0
- package/dist/adapters/github-copilot/model-mapping.js +14 -0
- package/dist/adapters/github-copilot/model-mapping.js.map +1 -0
- package/dist/adapters/github-copilot/tool-mapping.d.ts +18 -0
- package/dist/adapters/github-copilot/tool-mapping.d.ts.map +1 -0
- package/dist/adapters/github-copilot/tool-mapping.js +31 -0
- package/dist/adapters/github-copilot/tool-mapping.js.map +1 -0
- package/dist/adapters/index.d.ts +39 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +76 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/interface.d.ts +9 -0
- package/dist/adapters/interface.d.ts.map +1 -0
- package/dist/adapters/interface.js +8 -0
- package/dist/adapters/interface.js.map +1 -0
- package/dist/adapters/model-templating.d.ts +16 -0
- package/dist/adapters/model-templating.d.ts.map +1 -0
- package/dist/adapters/model-templating.js +52 -0
- package/dist/adapters/model-templating.js.map +1 -0
- package/dist/adapters/opencode/detection.d.ts +57 -0
- package/dist/adapters/opencode/detection.d.ts.map +1 -0
- package/dist/adapters/opencode/detection.js +140 -0
- package/dist/adapters/opencode/detection.js.map +1 -0
- package/dist/adapters/opencode/index.d.ts +168 -0
- package/dist/adapters/opencode/index.d.ts.map +1 -0
- package/dist/adapters/opencode/index.js +494 -0
- package/dist/adapters/opencode/index.js.map +1 -0
- package/dist/adapters/opencode/installer.d.ts +91 -0
- package/dist/adapters/opencode/installer.d.ts.map +1 -0
- package/dist/adapters/opencode/installer.js +290 -0
- package/dist/adapters/opencode/installer.js.map +1 -0
- package/dist/adapters/opencode/model-mapping.d.ts +7 -0
- package/dist/adapters/opencode/model-mapping.d.ts.map +1 -0
- package/dist/adapters/opencode/model-mapping.js +14 -0
- package/dist/adapters/opencode/model-mapping.js.map +1 -0
- package/dist/adapters/opencode/tool-mapping.d.ts +18 -0
- package/dist/adapters/opencode/tool-mapping.d.ts.map +1 -0
- package/dist/adapters/opencode/tool-mapping.js +31 -0
- package/dist/adapters/opencode/tool-mapping.js.map +1 -0
- package/dist/adapters/registry.d.ts +154 -0
- package/dist/adapters/registry.d.ts.map +1 -0
- package/dist/adapters/registry.js +223 -0
- package/dist/adapters/registry.js.map +1 -0
- package/dist/adapters/skill-frontmatter.d.ts +34 -0
- package/dist/adapters/skill-frontmatter.d.ts.map +1 -0
- package/dist/adapters/skill-frontmatter.js +110 -0
- package/dist/adapters/skill-frontmatter.js.map +1 -0
- package/dist/adapters/subagent-frontmatter.d.ts +22 -0
- package/dist/adapters/subagent-frontmatter.d.ts.map +1 -0
- package/dist/adapters/subagent-frontmatter.js +80 -0
- package/dist/adapters/subagent-frontmatter.js.map +1 -0
- package/dist/adapters/tool-templating.d.ts +162 -0
- package/dist/adapters/tool-templating.d.ts.map +1 -0
- package/dist/adapters/tool-templating.js +273 -0
- package/dist/adapters/tool-templating.js.map +1 -0
- package/dist/adapters/types.d.ts +347 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +33 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/cli/index.d.ts +10 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +261 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/info.d.ts +20 -0
- package/dist/cli/info.d.ts.map +1 -0
- package/dist/cli/info.js +194 -0
- package/dist/cli/info.js.map +1 -0
- package/dist/cli/install.d.ts +21 -0
- package/dist/cli/install.d.ts.map +1 -0
- package/dist/cli/install.js +1624 -0
- package/dist/cli/install.js.map +1 -0
- package/dist/cli/list.d.ts +19 -0
- package/dist/cli/list.d.ts.map +1 -0
- package/dist/cli/list.js +216 -0
- package/dist/cli/list.js.map +1 -0
- package/dist/cli/types.d.ts +246 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +25 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/cli/uninstall.d.ts +20 -0
- package/dist/cli/uninstall.d.ts.map +1 -0
- package/dist/cli/uninstall.js +393 -0
- package/dist/cli/uninstall.js.map +1 -0
- package/dist/cli/upgrade.d.ts +20 -0
- package/dist/cli/upgrade.d.ts.map +1 -0
- package/dist/cli/upgrade.js +372 -0
- package/dist/cli/upgrade.js.map +1 -0
- package/dist/cli/validate.d.ts +14 -0
- package/dist/cli/validate.d.ts.map +1 -0
- package/dist/cli/validate.js +307 -0
- package/dist/cli/validate.js.map +1 -0
- package/dist/core/debug.d.ts +23 -0
- package/dist/core/debug.d.ts.map +1 -0
- package/dist/core/debug.js +69 -0
- package/dist/core/debug.js.map +1 -0
- package/dist/core/hook-instance.d.ts +8 -0
- package/dist/core/hook-instance.d.ts.map +1 -0
- package/dist/core/hook-instance.js +62 -0
- package/dist/core/hook-instance.js.map +1 -0
- package/dist/core/mcp-instance.d.ts +13 -0
- package/dist/core/mcp-instance.d.ts.map +1 -0
- package/dist/core/mcp-instance.js +80 -0
- package/dist/core/mcp-instance.js.map +1 -0
- package/dist/core/types.d.ts +461 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +42 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/upgrade-executor.d.ts +70 -0
- package/dist/core/upgrade-executor.d.ts.map +1 -0
- package/dist/core/upgrade-executor.js +368 -0
- package/dist/core/upgrade-executor.js.map +1 -0
- package/dist/discovery/fetcher-registry.d.ts +87 -0
- package/dist/discovery/fetcher-registry.d.ts.map +1 -0
- package/dist/discovery/fetcher-registry.js +119 -0
- package/dist/discovery/fetcher-registry.js.map +1 -0
- package/dist/discovery/git-fetcher.d.ts +61 -0
- package/dist/discovery/git-fetcher.d.ts.map +1 -0
- package/dist/discovery/git-fetcher.js +150 -0
- package/dist/discovery/git-fetcher.js.map +1 -0
- package/dist/discovery/index.d.ts +13 -0
- package/dist/discovery/index.d.ts.map +1 -0
- package/dist/discovery/index.js +15 -0
- package/dist/discovery/index.js.map +1 -0
- package/dist/discovery/kit-scanner.d.ts +55 -0
- package/dist/discovery/kit-scanner.d.ts.map +1 -0
- package/dist/discovery/kit-scanner.js +305 -0
- package/dist/discovery/kit-scanner.js.map +1 -0
- package/dist/discovery/local-fetcher.d.ts +38 -0
- package/dist/discovery/local-fetcher.d.ts.map +1 -0
- package/dist/discovery/local-fetcher.js +100 -0
- package/dist/discovery/local-fetcher.js.map +1 -0
- package/dist/discovery/source-parser.d.ts +33 -0
- package/dist/discovery/source-parser.d.ts.map +1 -0
- package/dist/discovery/source-parser.js +136 -0
- package/dist/discovery/source-parser.js.map +1 -0
- package/dist/discovery/types.d.ts +145 -0
- package/dist/discovery/types.d.ts.map +1 -0
- package/dist/discovery/types.js +18 -0
- package/dist/discovery/types.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/manifest/index.d.ts +79 -0
- package/dist/manifest/index.d.ts.map +1 -0
- package/dist/manifest/index.js +200 -0
- package/dist/manifest/index.js.map +1 -0
- package/dist/manifest/read.d.ts +32 -0
- package/dist/manifest/read.d.ts.map +1 -0
- package/dist/manifest/read.js +88 -0
- package/dist/manifest/read.js.map +1 -0
- package/dist/manifest/types.d.ts +119 -0
- package/dist/manifest/types.d.ts.map +1 -0
- package/dist/manifest/types.js +44 -0
- package/dist/manifest/types.js.map +1 -0
- package/dist/manifest/upgrade-check.d.ts +72 -0
- package/dist/manifest/upgrade-check.d.ts.map +1 -0
- package/dist/manifest/upgrade-check.js +215 -0
- package/dist/manifest/upgrade-check.js.map +1 -0
- package/dist/manifest/utils.d.ts +35 -0
- package/dist/manifest/utils.d.ts.map +1 -0
- package/dist/manifest/utils.js +57 -0
- package/dist/manifest/utils.js.map +1 -0
- package/dist/manifest/write.d.ts +44 -0
- package/dist/manifest/write.d.ts.map +1 -0
- package/dist/manifest/write.js +77 -0
- package/dist/manifest/write.js.map +1 -0
- package/dist/resolution/env-resolver.d.ts +81 -0
- package/dist/resolution/env-resolver.d.ts.map +1 -0
- package/dist/resolution/env-resolver.js +233 -0
- package/dist/resolution/env-resolver.js.map +1 -0
- package/dist/resolution/index.d.ts +55 -0
- package/dist/resolution/index.d.ts.map +1 -0
- package/dist/resolution/index.js +412 -0
- package/dist/resolution/index.js.map +1 -0
- package/dist/resolution/multi-kit-resolver.d.ts +43 -0
- package/dist/resolution/multi-kit-resolver.d.ts.map +1 -0
- package/dist/resolution/multi-kit-resolver.js +258 -0
- package/dist/resolution/multi-kit-resolver.js.map +1 -0
- package/dist/resolution/primitive-paths.d.ts +17 -0
- package/dist/resolution/primitive-paths.d.ts.map +1 -0
- package/dist/resolution/primitive-paths.js +59 -0
- package/dist/resolution/primitive-paths.js.map +1 -0
- package/dist/resolution/primitives-registry.d.ts +137 -0
- package/dist/resolution/primitives-registry.d.ts.map +1 -0
- package/dist/resolution/primitives-registry.js +295 -0
- package/dist/resolution/primitives-registry.js.map +1 -0
- package/dist/resolution/reference-parser.d.ts +62 -0
- package/dist/resolution/reference-parser.d.ts.map +1 -0
- package/dist/resolution/reference-parser.js +182 -0
- package/dist/resolution/reference-parser.js.map +1 -0
- package/dist/resolution/types.d.ts +77 -0
- package/dist/resolution/types.d.ts.map +1 -0
- package/dist/resolution/types.js +13 -0
- package/dist/resolution/types.js.map +1 -0
- package/dist/resolution/version-resolver.d.ts +76 -0
- package/dist/resolution/version-resolver.d.ts.map +1 -0
- package/dist/resolution/version-resolver.js +269 -0
- package/dist/resolution/version-resolver.js.map +1 -0
- package/dist/tui/compatibility.d.ts +80 -0
- package/dist/tui/compatibility.d.ts.map +1 -0
- package/dist/tui/compatibility.js +355 -0
- package/dist/tui/compatibility.js.map +1 -0
- package/dist/tui/env-prompt.d.ts +129 -0
- package/dist/tui/env-prompt.d.ts.map +1 -0
- package/dist/tui/env-prompt.js +488 -0
- package/dist/tui/env-prompt.js.map +1 -0
- package/dist/tui/harness-select.d.ts +54 -0
- package/dist/tui/harness-select.d.ts.map +1 -0
- package/dist/tui/harness-select.js +171 -0
- package/dist/tui/harness-select.js.map +1 -0
- package/dist/tui/index.d.ts +112 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +213 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/kit-select.d.ts +72 -0
- package/dist/tui/kit-select.d.ts.map +1 -0
- package/dist/tui/kit-select.js +209 -0
- package/dist/tui/kit-select.js.map +1 -0
- package/dist/tui/progress.d.ts +75 -0
- package/dist/tui/progress.d.ts.map +1 -0
- package/dist/tui/progress.js +267 -0
- package/dist/tui/progress.js.map +1 -0
- package/dist/tui/resolution.d.ts +62 -0
- package/dist/tui/resolution.d.ts.map +1 -0
- package/dist/tui/resolution.js +261 -0
- package/dist/tui/resolution.js.map +1 -0
- package/dist/tui/scope-compatibility.d.ts +139 -0
- package/dist/tui/scope-compatibility.d.ts.map +1 -0
- package/dist/tui/scope-compatibility.js +230 -0
- package/dist/tui/scope-compatibility.js.map +1 -0
- package/dist/tui/scope-select.d.ts +67 -0
- package/dist/tui/scope-select.d.ts.map +1 -0
- package/dist/tui/scope-select.js +134 -0
- package/dist/tui/scope-select.js.map +1 -0
- package/dist/tui/spinner.d.ts +114 -0
- package/dist/tui/spinner.d.ts.map +1 -0
- package/dist/tui/spinner.js +186 -0
- package/dist/tui/spinner.js.map +1 -0
- package/dist/tui/summary.d.ts +71 -0
- package/dist/tui/summary.d.ts.map +1 -0
- package/dist/tui/summary.js +343 -0
- package/dist/tui/summary.js.map +1 -0
- package/dist/tui/types.d.ts +234 -0
- package/dist/tui/types.d.ts.map +1 -0
- package/dist/tui/types.js +7 -0
- package/dist/tui/types.js.map +1 -0
- package/dist/tui/upgrade-select.d.ts +73 -0
- package/dist/tui/upgrade-select.d.ts.map +1 -0
- package/dist/tui/upgrade-select.js +324 -0
- package/dist/tui/upgrade-select.js.map +1 -0
- package/dist/validation/index.d.ts +13 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +13 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/source.d.ts +14 -0
- package/dist/validation/source.d.ts.map +1 -0
- package/dist/validation/source.js +51 -0
- package/dist/validation/source.js.map +1 -0
- package/dist/validation/utils.d.ts +29 -0
- package/dist/validation/utils.d.ts.map +1 -0
- package/dist/validation/utils.js +89 -0
- package/dist/validation/utils.js.map +1 -0
- package/dist/validation/validate-commands.d.ts +28 -0
- package/dist/validation/validate-commands.d.ts.map +1 -0
- package/dist/validation/validate-commands.js +151 -0
- package/dist/validation/validate-commands.js.map +1 -0
- package/dist/validation/validate-hooks.d.ts +13 -0
- package/dist/validation/validate-hooks.d.ts.map +1 -0
- package/dist/validation/validate-hooks.js +272 -0
- package/dist/validation/validate-hooks.js.map +1 -0
- package/dist/validation/validate-kits.d.ts +15 -0
- package/dist/validation/validate-kits.d.ts.map +1 -0
- package/dist/validation/validate-kits.js +185 -0
- package/dist/validation/validate-kits.js.map +1 -0
- package/dist/validation/validate-mcp.d.ts +12 -0
- package/dist/validation/validate-mcp.d.ts.map +1 -0
- package/dist/validation/validate-mcp.js +132 -0
- package/dist/validation/validate-mcp.js.map +1 -0
- package/dist/validation/validate-skills.d.ts +24 -0
- package/dist/validation/validate-skills.d.ts.map +1 -0
- package/dist/validation/validate-skills.js +223 -0
- package/dist/validation/validate-skills.js.map +1 -0
- package/dist/validation/validate-subagents.d.ts +27 -0
- package/dist/validation/validate-subagents.d.ts.map +1 -0
- package/dist/validation/validate-subagents.js +269 -0
- package/dist/validation/validate-subagents.js.map +1 -0
- package/package.json +91 -0
- package/schemas/command.schema.json +23 -0
- package/schemas/examples/hook-binding-valid.json +20 -0
- package/schemas/examples/hook-program-valid.json +25 -0
- package/schemas/examples/http-server-valid.json +82 -0
- package/schemas/examples/invalid-sensitive-header-no-envvar.json +16 -0
- package/schemas/examples/invalid-sensitive-header-with-value.json +17 -0
- package/schemas/examples/invalid-sensitive-var-with-default.json +19 -0
- package/schemas/examples/stdio-server-valid.json +55 -0
- package/schemas/hook-binding.schema.json +63 -0
- package/schemas/hook-program.schema.json +104 -0
- package/schemas/kit.schema.json +338 -0
- package/schemas/kits.schema.json +117 -0
- package/schemas/manifest.schema.json +200 -0
- package/schemas/mcp-server.schema.json +305 -0
- package/schemas/primitives.schema.json +118 -0
- package/schemas/skill.schema.json +96 -0
- package/schemas/subagent.schema.json +107 -0
|
@@ -0,0 +1,488 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment variable prompts.
|
|
3
|
+
*
|
|
4
|
+
* Detects required environment variables from MCP server configurations
|
|
5
|
+
* and prompts users for missing values.
|
|
6
|
+
*/
|
|
7
|
+
import * as clack from "@clack/prompts";
|
|
8
|
+
import pc from "picocolors";
|
|
9
|
+
/**
|
|
10
|
+
* Check if metadata looks like an MCP server config.
|
|
11
|
+
*/
|
|
12
|
+
function hasMcpServerConfigShape(metadata) {
|
|
13
|
+
if (!metadata)
|
|
14
|
+
return false;
|
|
15
|
+
return typeof metadata === "object" && "name" in metadata && "transport" in metadata;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Extract MCP server config from metadata.
|
|
19
|
+
*/
|
|
20
|
+
function extractMcpConfig(metadata) {
|
|
21
|
+
if (!hasMcpServerConfigShape(metadata))
|
|
22
|
+
return null;
|
|
23
|
+
return metadata;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Extract environment variable requirements from MCP config.
|
|
27
|
+
*
|
|
28
|
+
* Works with the new schema where env values are McpEnvVarDefinition objects
|
|
29
|
+
* containing description, required, sensitive, and optional default fields.
|
|
30
|
+
*/
|
|
31
|
+
export function extractEnvVarsFromConfig(config, source) {
|
|
32
|
+
const requirements = [];
|
|
33
|
+
if (!config.env)
|
|
34
|
+
return requirements;
|
|
35
|
+
for (const [varName, definition] of Object.entries(config.env)) {
|
|
36
|
+
const envVarDef = definition;
|
|
37
|
+
const currentValue = process.env[varName];
|
|
38
|
+
requirements.push({
|
|
39
|
+
name: varName,
|
|
40
|
+
description: envVarDef.description,
|
|
41
|
+
required: envVarDef.required,
|
|
42
|
+
sensitive: envVarDef.sensitive,
|
|
43
|
+
defaultValue: envVarDef.default,
|
|
44
|
+
currentValue,
|
|
45
|
+
source,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
return requirements;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Extract all environment variable requirements from resolved primitives.
|
|
52
|
+
*/
|
|
53
|
+
export function extractAllEnvVars(primitives) {
|
|
54
|
+
const requirements = [];
|
|
55
|
+
const seen = new Set();
|
|
56
|
+
for (const primitive of primitives) {
|
|
57
|
+
if (primitive.type !== "mcp")
|
|
58
|
+
continue;
|
|
59
|
+
// MCP config should be in metadata
|
|
60
|
+
const config = extractMcpConfig(primitive.metadata);
|
|
61
|
+
if (!config)
|
|
62
|
+
continue;
|
|
63
|
+
const source = primitive.instanceName || config.name || primitive.name;
|
|
64
|
+
const vars = extractEnvVarsFromConfig(config, source);
|
|
65
|
+
for (const v of vars) {
|
|
66
|
+
if (!seen.has(v.name)) {
|
|
67
|
+
seen.add(v.name);
|
|
68
|
+
requirements.push(v);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return requirements;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Group requirements by sensitivity and whether they need prompting.
|
|
76
|
+
*
|
|
77
|
+
* Sensitive variables are separated into their own category and are never
|
|
78
|
+
* prompted - they must be set in the shell environment.
|
|
79
|
+
*
|
|
80
|
+
* Nonsensitive variables are grouped by:
|
|
81
|
+
* - satisfied: Have current value from environment
|
|
82
|
+
* - missing: Required but no value or default
|
|
83
|
+
* - optional: Not required, or has default value
|
|
84
|
+
*/
|
|
85
|
+
export function categorizeEnvVars(requirements) {
|
|
86
|
+
const sensitive = [];
|
|
87
|
+
const satisfied = [];
|
|
88
|
+
const missing = [];
|
|
89
|
+
const optional = [];
|
|
90
|
+
for (const req of requirements) {
|
|
91
|
+
// Sensitive vars are always separated - never prompted
|
|
92
|
+
if (req.sensitive) {
|
|
93
|
+
sensitive.push(req);
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
// Nonsensitive vars - categorize by value status
|
|
97
|
+
if (req.currentValue) {
|
|
98
|
+
satisfied.push(req);
|
|
99
|
+
}
|
|
100
|
+
else if (req.required) {
|
|
101
|
+
if (req.defaultValue) {
|
|
102
|
+
// Has default - treat as optional (can use default or customize)
|
|
103
|
+
optional.push(req);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
// Required without default - must prompt
|
|
107
|
+
missing.push(req);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
optional.push(req);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return { sensitive, satisfied, missing, optional };
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Display warnings for sensitive environment variables.
|
|
118
|
+
*
|
|
119
|
+
* Sensitive variables are never prompted - they must be set in the shell
|
|
120
|
+
* environment before using the MCP server. This function displays warnings
|
|
121
|
+
* for any sensitive variables that are required but not set.
|
|
122
|
+
*
|
|
123
|
+
* @param requirements - All environment variable requirements
|
|
124
|
+
* @returns true if any warnings were displayed
|
|
125
|
+
*/
|
|
126
|
+
export function displaySensitiveWarnings(requirements) {
|
|
127
|
+
const { sensitive } = categorizeEnvVars(requirements);
|
|
128
|
+
if (sensitive.length === 0) {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
// Separate sensitive vars by whether they're set
|
|
132
|
+
const missingSensitive = sensitive.filter((r) => !r.currentValue);
|
|
133
|
+
const setSensitive = sensitive.filter((r) => r.currentValue);
|
|
134
|
+
let displayed = false;
|
|
135
|
+
// Show set sensitive vars
|
|
136
|
+
if (setSensitive.length > 0) {
|
|
137
|
+
console.log(` ${setSensitive.length} sensitive variable${setSensitive.length === 1 ? "" : "s"} set in environment ${pc.green("✓")}`);
|
|
138
|
+
for (const v of setSensitive) {
|
|
139
|
+
console.log(` ${pc.dim(v.name)} ${pc.yellow("[SENSITIVE]")} (for ${v.source})`);
|
|
140
|
+
}
|
|
141
|
+
displayed = true;
|
|
142
|
+
}
|
|
143
|
+
// Show missing sensitive vars with warning
|
|
144
|
+
if (missingSensitive.length > 0) {
|
|
145
|
+
const requiredMissing = missingSensitive.filter((r) => r.required);
|
|
146
|
+
const optionalMissing = missingSensitive.filter((r) => !r.required);
|
|
147
|
+
if (requiredMissing.length > 0) {
|
|
148
|
+
console.log();
|
|
149
|
+
clack.log.warn(`${requiredMissing.length} required sensitive variable${requiredMissing.length === 1 ? "" : "s"} not set in environment:`);
|
|
150
|
+
for (const v of requiredMissing) {
|
|
151
|
+
console.log(` ${pc.red(v.name)} ${pc.yellow("[SENSITIVE]")}`);
|
|
152
|
+
if (v.description) {
|
|
153
|
+
console.log(` ${pc.dim(v.description)}`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
console.log();
|
|
157
|
+
console.log(pc.dim(" These must be set in your shell environment before using the MCP server."));
|
|
158
|
+
console.log(pc.dim(" Example:"));
|
|
159
|
+
for (const v of requiredMissing) {
|
|
160
|
+
console.log(pc.dim(` export ${v.name}="your-value-here"`));
|
|
161
|
+
}
|
|
162
|
+
displayed = true;
|
|
163
|
+
}
|
|
164
|
+
if (optionalMissing.length > 0) {
|
|
165
|
+
console.log(` ${pc.yellow("○")} ${optionalMissing.length} optional sensitive variable${optionalMissing.length === 1 ? "" : "s"} not set`);
|
|
166
|
+
for (const v of optionalMissing) {
|
|
167
|
+
console.log(` ${pc.dim(v.name)} ${pc.yellow("[SENSITIVE]")} (for ${v.source})`);
|
|
168
|
+
}
|
|
169
|
+
displayed = true;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return displayed;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Display environment variable status with sensitivity classification.
|
|
176
|
+
*
|
|
177
|
+
* Shows separate sections for:
|
|
178
|
+
* - Sensitive variables (with warnings for missing required)
|
|
179
|
+
* - Nonsensitive satisfied variables
|
|
180
|
+
* - Nonsensitive missing required variables
|
|
181
|
+
* - Nonsensitive optional variables
|
|
182
|
+
*/
|
|
183
|
+
export function displayEnvVarStatus(requirements) {
|
|
184
|
+
if (requirements.length === 0) {
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
console.log();
|
|
188
|
+
clack.log.info("Environment variables:");
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Prompt for a single environment variable.
|
|
192
|
+
*/
|
|
193
|
+
async function promptForEnvVar(req) {
|
|
194
|
+
const envValue = req.currentValue;
|
|
195
|
+
const defaultValue = req.defaultValue;
|
|
196
|
+
const bar = pc.gray("│");
|
|
197
|
+
console.log(`${bar}`);
|
|
198
|
+
const description = req.description ? ` ${pc.dim(`(${req.description})`)}` : "";
|
|
199
|
+
console.log(`${bar} ${pc.bold(req.name)}${description}`);
|
|
200
|
+
if (defaultValue !== undefined && !req.sensitive) {
|
|
201
|
+
console.log(`${bar} ${pc.dim(`Default: ${defaultValue}`)}`);
|
|
202
|
+
}
|
|
203
|
+
if (req.sensitive) {
|
|
204
|
+
console.log(`${bar} ${pc.yellow("Sensitive ⚠")}`);
|
|
205
|
+
}
|
|
206
|
+
const options = [];
|
|
207
|
+
if (defaultValue !== undefined && !req.sensitive) {
|
|
208
|
+
options.push({
|
|
209
|
+
value: "use-default",
|
|
210
|
+
label: "Default",
|
|
211
|
+
hint: defaultValue,
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
options.push({
|
|
215
|
+
value: "use-existing",
|
|
216
|
+
label: "Pass-through",
|
|
217
|
+
hint: envValue ? "env set" : "env not set",
|
|
218
|
+
});
|
|
219
|
+
options.push({
|
|
220
|
+
value: "enter-new",
|
|
221
|
+
label: "Customize",
|
|
222
|
+
});
|
|
223
|
+
const initialValue = req.sensitive
|
|
224
|
+
? "use-existing"
|
|
225
|
+
: defaultValue !== undefined
|
|
226
|
+
? "use-default"
|
|
227
|
+
: envValue
|
|
228
|
+
? "use-existing"
|
|
229
|
+
: "enter-new";
|
|
230
|
+
const choice = await clack.select({
|
|
231
|
+
message: `Select value for ${req.name}`,
|
|
232
|
+
options,
|
|
233
|
+
initialValue,
|
|
234
|
+
});
|
|
235
|
+
if (clack.isCancel(choice)) {
|
|
236
|
+
return null;
|
|
237
|
+
}
|
|
238
|
+
const selected = choice;
|
|
239
|
+
if (selected === "enter-new") {
|
|
240
|
+
const input = req.sensitive
|
|
241
|
+
? await clack.password({
|
|
242
|
+
message: `Enter value for ${req.name}:`,
|
|
243
|
+
validate: (v) => {
|
|
244
|
+
if (req.required && !v) {
|
|
245
|
+
return "Value is required";
|
|
246
|
+
}
|
|
247
|
+
return undefined;
|
|
248
|
+
},
|
|
249
|
+
})
|
|
250
|
+
: await clack.text({
|
|
251
|
+
message: `Enter value for ${req.name}:`,
|
|
252
|
+
initialValue: defaultValue ?? "",
|
|
253
|
+
validate: (v) => {
|
|
254
|
+
if (req.required && !v) {
|
|
255
|
+
return "Value is required";
|
|
256
|
+
}
|
|
257
|
+
return undefined;
|
|
258
|
+
},
|
|
259
|
+
});
|
|
260
|
+
if (clack.isCancel(input)) {
|
|
261
|
+
return null;
|
|
262
|
+
}
|
|
263
|
+
return {
|
|
264
|
+
name: req.name,
|
|
265
|
+
choice: "enter-new",
|
|
266
|
+
value: String(input),
|
|
267
|
+
skipped: false,
|
|
268
|
+
sensitive: req.sensitive,
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
if (selected === "use-default") {
|
|
272
|
+
return {
|
|
273
|
+
name: req.name,
|
|
274
|
+
choice: "use-default",
|
|
275
|
+
value: defaultValue,
|
|
276
|
+
skipped: false,
|
|
277
|
+
sensitive: req.sensitive,
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
return {
|
|
281
|
+
name: req.name,
|
|
282
|
+
choice: "use-existing",
|
|
283
|
+
skipped: false,
|
|
284
|
+
sensitive: req.sensitive,
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Prompt for environment variables.
|
|
289
|
+
*
|
|
290
|
+
* IMPORTANT: Sensitive variables are NEVER prompted. They are:
|
|
291
|
+
* - Displayed with warnings if not set in the environment
|
|
292
|
+
* - Automatically marked for passthrough to the harness config
|
|
293
|
+
*
|
|
294
|
+
* Only nonsensitive variables are prompted or configured.
|
|
295
|
+
*
|
|
296
|
+
* @param requirements - All environment variable requirements
|
|
297
|
+
* @param options - Prompting options
|
|
298
|
+
* @returns Prompt results for all variables
|
|
299
|
+
*/
|
|
300
|
+
export async function promptForEnvVars(requirements, _options) {
|
|
301
|
+
const results = [];
|
|
302
|
+
const bar = pc.gray("│");
|
|
303
|
+
const grouped = new Map();
|
|
304
|
+
for (const req of requirements) {
|
|
305
|
+
const list = grouped.get(req.source);
|
|
306
|
+
if (list) {
|
|
307
|
+
list.push(req);
|
|
308
|
+
}
|
|
309
|
+
else {
|
|
310
|
+
grouped.set(req.source, [req]);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
if (grouped.size > 0) {
|
|
314
|
+
console.log(`${bar}`);
|
|
315
|
+
let index = 1;
|
|
316
|
+
for (const source of grouped.keys()) {
|
|
317
|
+
console.log(`${bar} ${index}. ${source}`);
|
|
318
|
+
index += 1;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
for (const [source, vars] of grouped) {
|
|
322
|
+
clack.log.info(`Configuring MCP server: ${source}`);
|
|
323
|
+
console.log(`${bar}`);
|
|
324
|
+
const kits = _options?.sourceToKits?.get(source);
|
|
325
|
+
if (kits && kits.size > 0) {
|
|
326
|
+
console.log(`${bar} ${pc.dim(`Kits: ${Array.from(kits).join(", ")}`)}`);
|
|
327
|
+
}
|
|
328
|
+
for (const req of vars) {
|
|
329
|
+
const result = await promptForEnvVar(req);
|
|
330
|
+
if (result === null) {
|
|
331
|
+
return {
|
|
332
|
+
cancelled: true,
|
|
333
|
+
variables: results,
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
results.push(result);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
return {
|
|
340
|
+
cancelled: false,
|
|
341
|
+
variables: results,
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
export async function promptForSharedMcpInstances(usageByInstance, existingOverrides = {}) {
|
|
345
|
+
const overrides = {};
|
|
346
|
+
for (const [instanceName, kits] of usageByInstance.entries()) {
|
|
347
|
+
if (kits.size <= 1)
|
|
348
|
+
continue;
|
|
349
|
+
const kitList = Array.from(kits);
|
|
350
|
+
const shared = await clack.confirm({
|
|
351
|
+
message: `MCP server "${instanceName}" is used by multiple kits (${kitList.join(", ")}). ` +
|
|
352
|
+
"Apply one shared configuration?",
|
|
353
|
+
initialValue: true,
|
|
354
|
+
});
|
|
355
|
+
if (clack.isCancel(shared)) {
|
|
356
|
+
return { cancelled: true, overrides };
|
|
357
|
+
}
|
|
358
|
+
if (shared) {
|
|
359
|
+
continue;
|
|
360
|
+
}
|
|
361
|
+
for (const kitName of kitList) {
|
|
362
|
+
if (existingOverrides[kitName]?.[instanceName]) {
|
|
363
|
+
continue;
|
|
364
|
+
}
|
|
365
|
+
const suggested = `${instanceName}-${kitName}`;
|
|
366
|
+
const newName = await clack.text({
|
|
367
|
+
message: `Instance name for ${instanceName} in ${kitName}:`,
|
|
368
|
+
initialValue: suggested,
|
|
369
|
+
validate: (value) => (value ? undefined : "Instance name is required"),
|
|
370
|
+
});
|
|
371
|
+
if (clack.isCancel(newName)) {
|
|
372
|
+
return { cancelled: true, overrides };
|
|
373
|
+
}
|
|
374
|
+
if (!overrides[kitName]) {
|
|
375
|
+
overrides[kitName] = {};
|
|
376
|
+
}
|
|
377
|
+
overrides[kitName][instanceName] = String(newName);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
return { cancelled: false, overrides };
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Apply environment variable results to a config.
|
|
384
|
+
*
|
|
385
|
+
* @deprecated Use applyEnvVarResultsAsResolved for proper ResolvedEnvVar output.
|
|
386
|
+
*/
|
|
387
|
+
export function applyEnvVarResults(results) {
|
|
388
|
+
const env = {};
|
|
389
|
+
for (const result of results) {
|
|
390
|
+
if (!result.skipped && result.value !== undefined) {
|
|
391
|
+
env[result.name] = result.value;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
return env;
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* Convert prompt results to ResolvedEnvVar array for adapter consumption.
|
|
398
|
+
*
|
|
399
|
+
* This function maps TUI prompt results to the ResolvedEnvVar format expected
|
|
400
|
+
* by adapters for proper environment variable transformation.
|
|
401
|
+
*
|
|
402
|
+
* @param results - Prompt results from promptForEnvVars
|
|
403
|
+
* @param requirements - Original requirements (for descriptions)
|
|
404
|
+
* @returns Array of ResolvedEnvVar ready for adapter transformation
|
|
405
|
+
*/
|
|
406
|
+
export function applyEnvVarResultsAsResolved(results, requirements) {
|
|
407
|
+
const resolved = [];
|
|
408
|
+
const requirementMap = new Map(requirements.map((r) => [r.name, r]));
|
|
409
|
+
for (const result of results) {
|
|
410
|
+
const req = requirementMap.get(result.name);
|
|
411
|
+
const isSensitive = result.sensitive ?? req?.sensitive ?? false;
|
|
412
|
+
// Determine source and passthrough behavior
|
|
413
|
+
let source;
|
|
414
|
+
let usePassthrough = false;
|
|
415
|
+
switch (result.choice) {
|
|
416
|
+
case "use-existing":
|
|
417
|
+
source = "environment";
|
|
418
|
+
usePassthrough = true;
|
|
419
|
+
break;
|
|
420
|
+
case "use-default":
|
|
421
|
+
source = "default";
|
|
422
|
+
break;
|
|
423
|
+
case "enter-new":
|
|
424
|
+
source = "user-input";
|
|
425
|
+
break;
|
|
426
|
+
case "skip":
|
|
427
|
+
default:
|
|
428
|
+
source = "passthrough";
|
|
429
|
+
usePassthrough = true;
|
|
430
|
+
break;
|
|
431
|
+
}
|
|
432
|
+
// Build resolved entry
|
|
433
|
+
const entry = {
|
|
434
|
+
name: result.name,
|
|
435
|
+
description: req?.description ?? "",
|
|
436
|
+
required: req?.required ?? false,
|
|
437
|
+
sensitive: isSensitive,
|
|
438
|
+
usePassthrough,
|
|
439
|
+
source,
|
|
440
|
+
};
|
|
441
|
+
if (result.value !== undefined &&
|
|
442
|
+
(!usePassthrough || result.choice === "use-existing")) {
|
|
443
|
+
entry.value = result.value;
|
|
444
|
+
}
|
|
445
|
+
// Add default value if available
|
|
446
|
+
if (req?.defaultValue !== undefined) {
|
|
447
|
+
entry.defaultValue = req.defaultValue;
|
|
448
|
+
}
|
|
449
|
+
resolved.push(entry);
|
|
450
|
+
}
|
|
451
|
+
return resolved;
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* Check if all required nonsensitive vars are satisfied.
|
|
455
|
+
*
|
|
456
|
+
* Sensitive vars are not checked here - they are always passthrough and
|
|
457
|
+
* warnings are displayed separately. This function checks only nonsensitive
|
|
458
|
+
* vars that require user input.
|
|
459
|
+
*/
|
|
460
|
+
export function areRequiredVarsSatisfied(requirements) {
|
|
461
|
+
return requirements
|
|
462
|
+
.filter((r) => !r.sensitive) // Only check nonsensitive vars
|
|
463
|
+
.every((r) => !r.required || r.currentValue || r.defaultValue);
|
|
464
|
+
}
|
|
465
|
+
/**
|
|
466
|
+
* Get list of missing required nonsensitive vars.
|
|
467
|
+
*
|
|
468
|
+
* Returns only nonsensitive vars that are required but don't have a value
|
|
469
|
+
* or default. Sensitive vars are excluded - they are handled separately
|
|
470
|
+
* with warnings.
|
|
471
|
+
*/
|
|
472
|
+
export function getMissingRequiredVars(requirements) {
|
|
473
|
+
return requirements
|
|
474
|
+
.filter((r) => !r.sensitive && r.required && !r.currentValue && !r.defaultValue)
|
|
475
|
+
.map((r) => r.name);
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* Get list of missing required sensitive vars (for warnings).
|
|
479
|
+
*
|
|
480
|
+
* Returns sensitive vars that are required but not set in the environment.
|
|
481
|
+
* These are displayed as warnings since they cannot be prompted.
|
|
482
|
+
*/
|
|
483
|
+
export function getMissingSensitiveVars(requirements) {
|
|
484
|
+
return requirements
|
|
485
|
+
.filter((r) => r.sensitive && r.required && !r.currentValue)
|
|
486
|
+
.map((r) => r.name);
|
|
487
|
+
}
|
|
488
|
+
//# sourceMappingURL=env-prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-prompt.js","sourceRoot":"","sources":["../../src/tui/env-prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Harness selection screen.
|
|
3
|
+
*
|
|
4
|
+
* Displays detected AI harnesses and allows user to select which ones to configure.
|
|
5
|
+
*/
|
|
6
|
+
import type { HarnessName } from "../core/types.js";
|
|
7
|
+
import type { DetectedHarnessDisplay, HarnessSelectionResult, SelectOption } from "./types.js";
|
|
8
|
+
/**
|
|
9
|
+
* Display detected harnesses summary.
|
|
10
|
+
*/
|
|
11
|
+
export declare function displayDetectedHarnesses(harnesses: DetectedHarnessDisplay[]): void;
|
|
12
|
+
/**
|
|
13
|
+
* Create select options from detected harnesses.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createHarnessOptions(harnesses: DetectedHarnessDisplay[], includeAllOption?: boolean): SelectOption<string>[];
|
|
16
|
+
/**
|
|
17
|
+
* Prompt user to select harnesses for configuration.
|
|
18
|
+
*/
|
|
19
|
+
export declare function selectHarnesses(harnesses: DetectedHarnessDisplay[], options?: {
|
|
20
|
+
showDetected?: boolean;
|
|
21
|
+
includeAllOption?: boolean;
|
|
22
|
+
}): Promise<HarnessSelectionResult>;
|
|
23
|
+
/**
|
|
24
|
+
* Filter harnesses by names.
|
|
25
|
+
*/
|
|
26
|
+
export declare function filterHarnessesByName(harnesses: DetectedHarnessDisplay[], names: HarnessName[]): DetectedHarnessDisplay[];
|
|
27
|
+
/**
|
|
28
|
+
* Get harnesses that are detected but not in the provided list.
|
|
29
|
+
*/
|
|
30
|
+
export declare function getMissingHarnesses(harnesses: DetectedHarnessDisplay[], requestedNames: HarnessName[]): HarnessName[];
|
|
31
|
+
/**
|
|
32
|
+
* Display a warning about missing harnesses.
|
|
33
|
+
*/
|
|
34
|
+
export declare function warnMissingHarnesses(missing: HarnessName[]): void;
|
|
35
|
+
/**
|
|
36
|
+
* Display info about no harnesses being detected.
|
|
37
|
+
*/
|
|
38
|
+
export declare function displayNoHarnessesDetected(): void;
|
|
39
|
+
/**
|
|
40
|
+
* Validate that at least one harness is selected.
|
|
41
|
+
*/
|
|
42
|
+
export declare function validateHarnessSelection(harnesses: DetectedHarnessDisplay[], selected: HarnessName[]): {
|
|
43
|
+
valid: boolean;
|
|
44
|
+
error?: string;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Get display name for a harness.
|
|
48
|
+
*/
|
|
49
|
+
export declare function getHarnessDisplayName(harnesses: DetectedHarnessDisplay[], name: HarnessName): string;
|
|
50
|
+
/**
|
|
51
|
+
* Create a map of harness names to display names.
|
|
52
|
+
*/
|
|
53
|
+
export declare function createHarnessDisplayMap(harnesses: DetectedHarnessDisplay[]): Map<HarnessName, string>;
|
|
54
|
+
//# sourceMappingURL=harness-select.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-select.d.ts","sourceRoot":"","sources":["../../src/tui/harness-select.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/F;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAmBlF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,sBAAsB,EAAE,EACnC,gBAAgB,GAAE,OAAc,GAC/B,YAAY,CAAC,MAAM,CAAC,EAAE,CAiBxB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,sBAAsB,EAAE,EACnC,OAAO,CAAC,EAAE;IACR,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GACA,OAAO,CAAC,sBAAsB,CAAC,CAkEjC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,sBAAsB,EAAE,EACnC,KAAK,EAAE,WAAW,EAAE,GACnB,sBAAsB,EAAE,CAG1B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,sBAAsB,EAAE,EACnC,cAAc,EAAE,WAAW,EAAE,GAC5B,WAAW,EAAE,CAGf;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAKjE;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAGjD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,sBAAsB,EAAE,EACnC,QAAQ,EAAE,WAAW,EAAE,GACtB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAmBpC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,sBAAsB,EAAE,EACnC,IAAI,EAAE,WAAW,GAChB,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,sBAAsB,EAAE,GAClC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAE1B"}
|