@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,344 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codex adapter implementation.
|
|
3
|
+
*
|
|
4
|
+
* Codex is an AI coding assistant with support for:
|
|
5
|
+
* - Commands: ~/.codex/prompts/{kit}.{name}.md
|
|
6
|
+
* - Skills: ~/.codex/skills/{kit}.{name}/
|
|
7
|
+
* - MCP Servers: ~/.codex/mcp.json
|
|
8
|
+
*
|
|
9
|
+
* Codex does NOT support:
|
|
10
|
+
* - Subagents
|
|
11
|
+
* - Hooks
|
|
12
|
+
*/
|
|
13
|
+
import { BaseAdapter } from "../base-adapter.js";
|
|
14
|
+
import { expandPath, pathExists, readFile } from "../file-operations.js";
|
|
15
|
+
import { filterFrontmatterAllowlist, toKebabCaseSkillFrontmatter } from "../skill-frontmatter.js";
|
|
16
|
+
import { renameFrontmatterField } from "../command-parser.js";
|
|
17
|
+
import { detectCodex, getCodexInstallationPaths, CODEX_PATHS } from "./detection.js";
|
|
18
|
+
import { codexToolMapping } from "./tool-mapping.js";
|
|
19
|
+
import { codexModelMapping } from "./model-mapping.js";
|
|
20
|
+
import { transformMcpServerConfig, transformEnvVars as installerTransformEnvVars, transformHeaders as installerTransformHeaders, readMcpConfig, writeMcpConfig, } from "./installer.js";
|
|
21
|
+
/**
|
|
22
|
+
* Project-scope paths for Codex.
|
|
23
|
+
*
|
|
24
|
+
* Note: Codex only supports skills at project scope.
|
|
25
|
+
* Commands and MCP are global-only.
|
|
26
|
+
*/
|
|
27
|
+
export const CODEX_PROJECT_PATHS = {
|
|
28
|
+
configToml: ".codex/config.toml",
|
|
29
|
+
skills: ".codex/skills/",
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Codex adapter.
|
|
33
|
+
*
|
|
34
|
+
* Provides support for commands, skills, and MCP servers.
|
|
35
|
+
* Does not support subagents or hooks.
|
|
36
|
+
*
|
|
37
|
+
* IMPORTANT: At project scope, Codex only supports skills.
|
|
38
|
+
* Commands and MCP servers are global-only.
|
|
39
|
+
*/
|
|
40
|
+
export class CodexAdapter extends BaseAdapter {
|
|
41
|
+
name = "codex";
|
|
42
|
+
displayName = "Codex";
|
|
43
|
+
version = "1.0.0";
|
|
44
|
+
supportedHarnessVersions = ">=1.0.0";
|
|
45
|
+
/**
|
|
46
|
+
* Get supported installation scopes.
|
|
47
|
+
*
|
|
48
|
+
* Codex supports both global and project scopes,
|
|
49
|
+
* but with different primitive support at each scope.
|
|
50
|
+
*/
|
|
51
|
+
getSupportedScopes() {
|
|
52
|
+
return ["global", "project"];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get supported primitive types at the given scope.
|
|
56
|
+
*
|
|
57
|
+
* Codex supports:
|
|
58
|
+
* - Global: commands, skills, mcp
|
|
59
|
+
* - Project: skills only (commands and mcp are global-only)
|
|
60
|
+
*
|
|
61
|
+
* @param scope - Installation scope (defaults to "global")
|
|
62
|
+
*/
|
|
63
|
+
getSupportedPrimitives(scope) {
|
|
64
|
+
if (scope === "project") {
|
|
65
|
+
// Codex only supports skills at project scope
|
|
66
|
+
return ["skills"];
|
|
67
|
+
}
|
|
68
|
+
return ["commands", "skills", "mcp"];
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get installation paths for file-based primitives.
|
|
72
|
+
*
|
|
73
|
+
* @param scope - Installation scope (defaults to "global")
|
|
74
|
+
*/
|
|
75
|
+
getInstallationPaths(scope) {
|
|
76
|
+
if (scope === "project") {
|
|
77
|
+
return {
|
|
78
|
+
commands: "", // Not supported at project scope
|
|
79
|
+
skills: CODEX_PROJECT_PATHS.skills,
|
|
80
|
+
// Codex does not support subagents or hooks
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
return getCodexInstallationPaths();
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get configuration file locations.
|
|
87
|
+
*
|
|
88
|
+
* @param scope - Installation scope (defaults to "global")
|
|
89
|
+
*/
|
|
90
|
+
getConfigLocations(scope) {
|
|
91
|
+
if (scope === "project") {
|
|
92
|
+
return {
|
|
93
|
+
primary: CODEX_PROJECT_PATHS.configToml,
|
|
94
|
+
// No MCP at project scope
|
|
95
|
+
format: "toml",
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
primary: CODEX_PATHS.configToml,
|
|
100
|
+
mcp: CODEX_PATHS.mcp,
|
|
101
|
+
format: "toml",
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get the tool mapping for Codex.
|
|
106
|
+
*/
|
|
107
|
+
getToolMapping() {
|
|
108
|
+
return codexToolMapping;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Get the model mapping for Codex.
|
|
112
|
+
*/
|
|
113
|
+
getModelMapping() {
|
|
114
|
+
return codexModelMapping;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Detect Codex installation.
|
|
118
|
+
*/
|
|
119
|
+
async detect() {
|
|
120
|
+
return detectCodex();
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Transform a command for Codex.
|
|
124
|
+
*
|
|
125
|
+
* Codex uses native Markdown format, so no transformation is needed.
|
|
126
|
+
* Tool templates are processed separately by the base adapter.
|
|
127
|
+
*/
|
|
128
|
+
transformCommand(content, _metadata) {
|
|
129
|
+
const transformedContent = renameFrontmatterField(content, "argumentHint", "argument-hint");
|
|
130
|
+
return {
|
|
131
|
+
content: transformedContent,
|
|
132
|
+
format: "markdown",
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Transform a skill for Codex.
|
|
137
|
+
*
|
|
138
|
+
* Codex uses native Markdown format for skills.
|
|
139
|
+
*/
|
|
140
|
+
transformSkill(_skillDir, _metadata) {
|
|
141
|
+
// Skills are directories, content is the SKILL.md file path
|
|
142
|
+
return {
|
|
143
|
+
content: "",
|
|
144
|
+
format: "markdown",
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Codex skills only recognize a minimal set of frontmatter fields.
|
|
149
|
+
*/
|
|
150
|
+
filterSkillFrontmatter(frontmatter) {
|
|
151
|
+
const normalized = toKebabCaseSkillFrontmatter(frontmatter);
|
|
152
|
+
return filterFrontmatterAllowlist(normalized, new Set(["name", "description", "allowed-tools", "metadata"]));
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Transform a subagent for Codex.
|
|
156
|
+
*
|
|
157
|
+
* Codex does not support subagents. This method throws an error.
|
|
158
|
+
*/
|
|
159
|
+
transformSubagent(_content, _metadata) {
|
|
160
|
+
throw new Error("codex does not support subagents");
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Transform an MCP server configuration for Codex.
|
|
164
|
+
*/
|
|
165
|
+
transformMcpServer(config) {
|
|
166
|
+
return transformMcpServerConfig(config);
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Transform a hook for Codex.
|
|
170
|
+
*
|
|
171
|
+
* Codex does not support hooks. This method throws an error.
|
|
172
|
+
*/
|
|
173
|
+
transformHook(_hook) {
|
|
174
|
+
throw new Error("codex does not support hooks");
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Transform resolved environment variables to Codex format.
|
|
178
|
+
*
|
|
179
|
+
* Codex uses two distinct mechanisms:
|
|
180
|
+
* - env_vars array for passthrough
|
|
181
|
+
* - env table for direct values
|
|
182
|
+
*
|
|
183
|
+
* See PRD-001 FR-20.4.
|
|
184
|
+
*/
|
|
185
|
+
transformEnvVars(resolved) {
|
|
186
|
+
return installerTransformEnvVars(resolved);
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Transform resolved headers to Codex format.
|
|
190
|
+
*
|
|
191
|
+
* Codex uses specialized fields:
|
|
192
|
+
* - bearer_token_env_var for Authorization headers
|
|
193
|
+
* - env_http_headers for other env var headers
|
|
194
|
+
* - http_headers for static values
|
|
195
|
+
*
|
|
196
|
+
* See PRD-001 FR-21.3.
|
|
197
|
+
*/
|
|
198
|
+
transformHeaders(resolved) {
|
|
199
|
+
return installerTransformHeaders(resolved);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Update harness configuration for MCP servers.
|
|
203
|
+
*
|
|
204
|
+
* Codex only needs MCP configuration updates (no hooks support).
|
|
205
|
+
* MCP is only supported at global scope.
|
|
206
|
+
*
|
|
207
|
+
* @param kit - Kit manifest
|
|
208
|
+
* @param resolvedPrimitives - Resolved primitives to install
|
|
209
|
+
* @param dryRun - If true, don't actually write files
|
|
210
|
+
* @param completedOps - Array to track completed operations for rollback
|
|
211
|
+
* @param scope - Installation scope
|
|
212
|
+
* @param projectRoot - Project root for project scope
|
|
213
|
+
*/
|
|
214
|
+
async updateConfiguration(kit, resolvedPrimitives, dryRun, completedOps, scope = "global", _projectRoot, envResolutions) {
|
|
215
|
+
const operations = [];
|
|
216
|
+
// MCP is only supported at global scope for Codex
|
|
217
|
+
if (scope === "project") {
|
|
218
|
+
return { operations };
|
|
219
|
+
}
|
|
220
|
+
// Filter MCP primitives
|
|
221
|
+
const mcpPrimitives = resolvedPrimitives.filter((p) => p.type === "mcp");
|
|
222
|
+
// Handle MCP servers (global scope only)
|
|
223
|
+
if (mcpPrimitives.length > 0 && !dryRun) {
|
|
224
|
+
const mcpResult = await this.installMcpServers(kit.name, mcpPrimitives, completedOps, envResolutions);
|
|
225
|
+
operations.push(...mcpResult);
|
|
226
|
+
}
|
|
227
|
+
return { operations };
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Install MCP servers to configuration.
|
|
231
|
+
*/
|
|
232
|
+
async installMcpServers(_kitName, primitives, completedOps, envResolutions) {
|
|
233
|
+
const operations = [];
|
|
234
|
+
const mcpConfigPath = expandPath(CODEX_PATHS.mcp);
|
|
235
|
+
// Read existing config and back it up
|
|
236
|
+
const existingConfig = await readMcpConfig();
|
|
237
|
+
const configExisted = pathExists(mcpConfigPath);
|
|
238
|
+
// Prepare updated config
|
|
239
|
+
const updatedConfig = { ...existingConfig };
|
|
240
|
+
if (!updatedConfig.servers) {
|
|
241
|
+
updatedConfig.servers = {};
|
|
242
|
+
}
|
|
243
|
+
for (const primitive of primitives) {
|
|
244
|
+
try {
|
|
245
|
+
// Read MCP config from source file
|
|
246
|
+
const content = await readFile(primitive.sourcePath);
|
|
247
|
+
const mcpConfig = JSON.parse(content);
|
|
248
|
+
const instanceName = primitive.instanceName ?? mcpConfig.name;
|
|
249
|
+
if (!instanceName) {
|
|
250
|
+
throw new Error(`MCP config missing name; path=${primitive.sourcePath}`);
|
|
251
|
+
}
|
|
252
|
+
// Transform and add to config
|
|
253
|
+
const transformedConfig = transformMcpServerConfig(mcpConfig);
|
|
254
|
+
// Apply resolved env vars if available (Codex uses env_vars array and env table)
|
|
255
|
+
const resolution = envResolutions?.find((r) => r.mcpServer === instanceName);
|
|
256
|
+
if (resolution && resolution.resolved.length > 0) {
|
|
257
|
+
const transformedEnv = installerTransformEnvVars(resolution.resolved);
|
|
258
|
+
// Codex format: env_vars for passthrough, env for direct values
|
|
259
|
+
if (transformedEnv.env_vars && transformedEnv.env_vars.length > 0) {
|
|
260
|
+
transformedConfig.env_vars = transformedEnv.env_vars;
|
|
261
|
+
}
|
|
262
|
+
if (transformedEnv.env && Object.keys(transformedEnv.env).length > 0) {
|
|
263
|
+
transformedConfig.env = transformedEnv.env;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
// Apply resolved headers if available (for HTTP transport)
|
|
267
|
+
if (resolution && resolution.resolvedHeaders && resolution.resolvedHeaders.length > 0) {
|
|
268
|
+
const transformedHeaders = installerTransformHeaders(resolution.resolvedHeaders);
|
|
269
|
+
if (transformedConfig.url) {
|
|
270
|
+
if (transformedHeaders.bearer_token_env_var) {
|
|
271
|
+
transformedConfig.bearer_token_env_var = transformedHeaders.bearer_token_env_var;
|
|
272
|
+
}
|
|
273
|
+
if (transformedHeaders.env_http_headers && Object.keys(transformedHeaders.env_http_headers).length > 0) {
|
|
274
|
+
transformedConfig.env_http_headers = transformedHeaders.env_http_headers;
|
|
275
|
+
}
|
|
276
|
+
if (transformedHeaders.http_headers && Object.keys(transformedHeaders.http_headers).length > 0) {
|
|
277
|
+
transformedConfig.http_headers = transformedHeaders.http_headers;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
updatedConfig.servers[instanceName] = transformedConfig;
|
|
282
|
+
operations.push({
|
|
283
|
+
operation: "merge",
|
|
284
|
+
source: primitive.sourcePath,
|
|
285
|
+
destination: mcpConfigPath,
|
|
286
|
+
success: true,
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
catch (error) {
|
|
290
|
+
operations.push({
|
|
291
|
+
operation: "merge",
|
|
292
|
+
source: primitive.sourcePath,
|
|
293
|
+
destination: mcpConfigPath,
|
|
294
|
+
success: false,
|
|
295
|
+
error: error instanceof Error ? error.message : String(error),
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
// Write updated config
|
|
300
|
+
await writeMcpConfig(updatedConfig);
|
|
301
|
+
const mcpCompletedOp = {
|
|
302
|
+
type: "file",
|
|
303
|
+
path: mcpConfigPath,
|
|
304
|
+
createdNew: !configExisted,
|
|
305
|
+
};
|
|
306
|
+
if (configExisted) {
|
|
307
|
+
mcpCompletedOp.previousContent = JSON.stringify(existingConfig, null, 2);
|
|
308
|
+
}
|
|
309
|
+
completedOps.push(mcpCompletedOp);
|
|
310
|
+
return operations;
|
|
311
|
+
}
|
|
312
|
+
async removeMcpServers(instanceNames, scope = "global") {
|
|
313
|
+
if (scope === "project" || instanceNames.length === 0) {
|
|
314
|
+
return [];
|
|
315
|
+
}
|
|
316
|
+
const mcpConfig = await readMcpConfig();
|
|
317
|
+
if (!mcpConfig.servers) {
|
|
318
|
+
return [];
|
|
319
|
+
}
|
|
320
|
+
const removed = [];
|
|
321
|
+
for (const name of instanceNames) {
|
|
322
|
+
if (mcpConfig.servers[name]) {
|
|
323
|
+
delete mcpConfig.servers[name];
|
|
324
|
+
removed.push(name);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
if (removed.length > 0) {
|
|
328
|
+
await writeMcpConfig(mcpConfig);
|
|
329
|
+
}
|
|
330
|
+
return removed;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Create a Codex adapter instance.
|
|
335
|
+
*/
|
|
336
|
+
export function createCodexAdapter() {
|
|
337
|
+
return new CodexAdapter();
|
|
338
|
+
}
|
|
339
|
+
// Re-export types and utilities
|
|
340
|
+
export { detectCodex, CODEX_PATHS } from "./detection.js";
|
|
341
|
+
export { codexToolMapping } from "./tool-mapping.js";
|
|
342
|
+
export { codexModelMapping } from "./model-mapping.js";
|
|
343
|
+
export * from "./installer.js";
|
|
344
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/codex/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codex installation helpers.
|
|
3
|
+
*
|
|
4
|
+
* Provides utilities for installing primitives to Codex:
|
|
5
|
+
* - MCP server configuration in ~/.codex/mcp.json
|
|
6
|
+
* - Environment variable substitution
|
|
7
|
+
*
|
|
8
|
+
* Codex does not support subagents or hooks.
|
|
9
|
+
*/
|
|
10
|
+
import type { McpServerConfig, ResolvedEnvVar, ResolvedHeader } from "../../core/types.js";
|
|
11
|
+
import type { FileOperationResult } from "../types.js";
|
|
12
|
+
/**
|
|
13
|
+
* Codex MCP configuration structure.
|
|
14
|
+
*/
|
|
15
|
+
export interface CodexMcpConfig {
|
|
16
|
+
servers?: Record<string, CodexMcpServerEntry>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* MCP server entry in Codex config.
|
|
20
|
+
*
|
|
21
|
+
* Codex uses a slightly different format than Claude Code,
|
|
22
|
+
* storing config as TOML-style objects.
|
|
23
|
+
*/
|
|
24
|
+
export interface CodexMcpServerEntry {
|
|
25
|
+
command?: string;
|
|
26
|
+
args?: string[];
|
|
27
|
+
env?: Record<string, string>;
|
|
28
|
+
env_vars?: string[];
|
|
29
|
+
url?: string;
|
|
30
|
+
bearer_token_env_var?: string;
|
|
31
|
+
env_http_headers?: Record<string, string>;
|
|
32
|
+
http_headers?: Record<string, string>;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Read the MCP configuration file.
|
|
36
|
+
*/
|
|
37
|
+
export declare function readMcpConfig(): Promise<CodexMcpConfig>;
|
|
38
|
+
/**
|
|
39
|
+
* Write the MCP configuration file.
|
|
40
|
+
*/
|
|
41
|
+
export declare function writeMcpConfig(config: CodexMcpConfig): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Process environment variable values.
|
|
44
|
+
*
|
|
45
|
+
* Codex uses ${VAR} syntax for environment variable references.
|
|
46
|
+
*/
|
|
47
|
+
export declare function processEnvValue(value: string): string;
|
|
48
|
+
/**
|
|
49
|
+
* Transform an MCP server configuration for Codex.
|
|
50
|
+
*
|
|
51
|
+
* Codex MCP configuration format:
|
|
52
|
+
* ```json
|
|
53
|
+
* {
|
|
54
|
+
* "servers": {
|
|
55
|
+
* "server-name": {
|
|
56
|
+
* "command": "executable",
|
|
57
|
+
* "args": ["arg1", "arg2"],
|
|
58
|
+
* "env": {
|
|
59
|
+
* "VAR": "${VAR}"
|
|
60
|
+
* }
|
|
61
|
+
* }
|
|
62
|
+
* }
|
|
63
|
+
* }
|
|
64
|
+
* ```
|
|
65
|
+
*
|
|
66
|
+
* Note: Full environment variable transformation with sensitivity handling
|
|
67
|
+
* (env_vars array vs env table) is implemented in transformEnvVars (Phase 7).
|
|
68
|
+
* This function provides basic passthrough for all env vars using ${VAR} syntax.
|
|
69
|
+
*/
|
|
70
|
+
export declare function transformMcpServerConfig(config: McpServerConfig): CodexMcpServerEntry;
|
|
71
|
+
/**
|
|
72
|
+
* Codex environment variable transformation result.
|
|
73
|
+
* Includes index signature for compatibility with EnvVarOutput base type.
|
|
74
|
+
*/
|
|
75
|
+
export interface CodexEnvVarOutput {
|
|
76
|
+
env_vars: string[];
|
|
77
|
+
env: Record<string, string>;
|
|
78
|
+
[key: string]: unknown;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Codex header transformation result.
|
|
82
|
+
* Includes index signature for compatibility with HeaderOutput base type.
|
|
83
|
+
*/
|
|
84
|
+
export interface CodexHeaderOutput {
|
|
85
|
+
bearer_token_env_var: string | undefined;
|
|
86
|
+
env_http_headers: Record<string, string>;
|
|
87
|
+
http_headers: Record<string, string>;
|
|
88
|
+
[key: string]: unknown;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Transform resolved environment variables to Codex format.
|
|
92
|
+
*
|
|
93
|
+
* Codex uses two distinct mechanisms:
|
|
94
|
+
* - `env_vars` array: Variables passed through from shell environment (passthrough)
|
|
95
|
+
* - `env` table: Variables with direct values
|
|
96
|
+
*
|
|
97
|
+
* Rules (per FR-20.4):
|
|
98
|
+
* - usePassthrough: true → Add to env_vars array
|
|
99
|
+
* - usePassthrough: false (has value) → Add to env table
|
|
100
|
+
*/
|
|
101
|
+
export declare function transformEnvVars(resolved: ResolvedEnvVar[]): CodexEnvVarOutput;
|
|
102
|
+
/**
|
|
103
|
+
* Transform resolved headers to Codex format.
|
|
104
|
+
*
|
|
105
|
+
* Codex uses specialized fields for HTTP authentication:
|
|
106
|
+
* - `bearer_token_env_var`: Environment variable containing bearer token (for Authorization headers)
|
|
107
|
+
* - `env_http_headers`: Table of additional headers with env var references
|
|
108
|
+
* - `http_headers`: Table of static header values
|
|
109
|
+
*
|
|
110
|
+
* Bearer Token Detection:
|
|
111
|
+
* The adapter detects bearer token patterns in Authorization headers:
|
|
112
|
+
* 1. Header name is "Authorization" (case-insensitive)
|
|
113
|
+
* 2. Header is marked sensitive: true
|
|
114
|
+
* 3. Uses envVar for the token value
|
|
115
|
+
*
|
|
116
|
+
* Rules (per FR-21.3):
|
|
117
|
+
* - Authorization + sensitive + envVar → bearer_token_env_var = "VAR"
|
|
118
|
+
* - Other headers with envVar → env_http_headers.Header = "$VAR"
|
|
119
|
+
* - Headers with static value → http_headers.Header = "value"
|
|
120
|
+
*/
|
|
121
|
+
export declare function transformHeaders(resolved: ResolvedHeader[]): CodexHeaderOutput;
|
|
122
|
+
/**
|
|
123
|
+
* Add an MCP server to the configuration.
|
|
124
|
+
*
|
|
125
|
+
* @param namespacedName - The namespaced server name (e.g., "kit.server")
|
|
126
|
+
* @param config - The MCP server configuration
|
|
127
|
+
*/
|
|
128
|
+
export declare function addMcpServer(namespacedName: string, config: McpServerConfig): Promise<FileOperationResult>;
|
|
129
|
+
/**
|
|
130
|
+
* Remove an MCP server from the configuration.
|
|
131
|
+
*
|
|
132
|
+
* @param namespacedName - The namespaced server name to remove
|
|
133
|
+
*/
|
|
134
|
+
export declare function removeMcpServer(namespacedName: string): Promise<boolean>;
|
|
135
|
+
/**
|
|
136
|
+
* Get all installed MCP servers for a specific kit.
|
|
137
|
+
*
|
|
138
|
+
* @param kitName - The kit name prefix to filter by
|
|
139
|
+
*/
|
|
140
|
+
export declare function getKitMcpServers(kitName: string): Promise<string[]>;
|
|
141
|
+
/**
|
|
142
|
+
* Remove all MCP servers for a specific kit.
|
|
143
|
+
*
|
|
144
|
+
* @param kitName - The kit name prefix to remove
|
|
145
|
+
*/
|
|
146
|
+
export declare function removeKitMcpServers(kitName: string): Promise<string[]>;
|
|
147
|
+
//# sourceMappingURL=installer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../../src/adapters/codex/installer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAUvD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAC/C;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE7B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC,CAa7D;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAK1E;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,eAAe,GAAG,mBAAmB,CAwBrF;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,iBAAiB,CAa9E;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,iBAAiB,CAiB9E;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,mBAAmB,CAAC,CAyB9B;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAU9E;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAWzE;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAqB5E"}
|