@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,258 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-kit resolver for deduplicating shared primitives.
|
|
3
|
+
*
|
|
4
|
+
* When installing multiple kits that reference the same primitives,
|
|
5
|
+
* this module ensures each shared primitive is resolved once with
|
|
6
|
+
* the highest compatible version.
|
|
7
|
+
*/
|
|
8
|
+
import * as semver from "semver";
|
|
9
|
+
import { isReferencedPrimitive, PRIMITIVE_TYPES } from "../core/types.js";
|
|
10
|
+
import { createPrimitiveKey } from "./types.js";
|
|
11
|
+
import { parseReference } from "./reference-parser.js";
|
|
12
|
+
import { resolveRegistryPrimitivePath } from "./primitive-paths.js";
|
|
13
|
+
import { resolvePrimitiveReferences } from "./index.js";
|
|
14
|
+
/**
|
|
15
|
+
* Resolves primitives across multiple kits, deduplicating shared primitives.
|
|
16
|
+
*
|
|
17
|
+
* When multiple kits reference the same primitive:
|
|
18
|
+
* 1. Collects all version specs for that primitive
|
|
19
|
+
* 2. Finds the highest version satisfying all specs
|
|
20
|
+
* 3. Uses that single resolved version for all kits
|
|
21
|
+
*
|
|
22
|
+
* @param kits - Array of kit manifests
|
|
23
|
+
* @param registry - The primitives registry loader
|
|
24
|
+
* @param kitBasePaths - Map of kit names to their base paths
|
|
25
|
+
* @returns Multi-kit resolution result with deduplication
|
|
26
|
+
*/
|
|
27
|
+
export async function resolveMultipleKits(kits, registry, kitBasePaths) {
|
|
28
|
+
const allPrimitives = new Map();
|
|
29
|
+
const kitPrimitives = new Map();
|
|
30
|
+
const sharedPrimitives = new Map();
|
|
31
|
+
const errors = [];
|
|
32
|
+
// Step 1: Collect all primitive references across kits
|
|
33
|
+
const referenceMap = collectPrimitiveReferences(kits);
|
|
34
|
+
// Step 2: Resolve shared primitives (referenced by multiple kits)
|
|
35
|
+
const sharedResolved = await resolveSharedPrimitives(referenceMap, registry);
|
|
36
|
+
// Add shared primitive errors
|
|
37
|
+
errors.push(...sharedResolved.errors);
|
|
38
|
+
// Store shared primitives
|
|
39
|
+
for (const [key, resolved] of sharedResolved.primitives) {
|
|
40
|
+
allPrimitives.set(key, resolved);
|
|
41
|
+
// Track which kits share this primitive
|
|
42
|
+
const refInfo = referenceMap.get(key);
|
|
43
|
+
if (refInfo && refInfo.kits.size > 1) {
|
|
44
|
+
sharedPrimitives.set(key, Array.from(refInfo.kits.keys()));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// Step 3: Resolve per-kit primitives (inline + non-shared)
|
|
48
|
+
for (const kit of kits) {
|
|
49
|
+
const kitBasePath = kitBasePaths.get(kit.name);
|
|
50
|
+
if (!kitBasePath) {
|
|
51
|
+
errors.push({
|
|
52
|
+
type: "not-found",
|
|
53
|
+
primitive: kit.name,
|
|
54
|
+
message: `Base path not provided for kit "${kit.name}"`,
|
|
55
|
+
});
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
const kitResult = await resolvePrimitiveReferences(kit, registry, kitBasePath);
|
|
59
|
+
errors.push(...kitResult.errors);
|
|
60
|
+
const kitResolvedPrimitives = [];
|
|
61
|
+
for (const resolved of kitResult.primitives) {
|
|
62
|
+
const key = createPrimitiveKey(resolved.type, resolved.name);
|
|
63
|
+
// Use shared resolution if available
|
|
64
|
+
if (!resolved.isInline && allPrimitives.has(key)) {
|
|
65
|
+
kitResolvedPrimitives.push(allPrimitives.get(key));
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
// Store non-shared or inline primitive
|
|
69
|
+
allPrimitives.set(key, resolved);
|
|
70
|
+
kitResolvedPrimitives.push(resolved);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
kitPrimitives.set(kit.name, kitResolvedPrimitives);
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
allPrimitives,
|
|
77
|
+
kitPrimitives,
|
|
78
|
+
sharedPrimitives,
|
|
79
|
+
errors,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Collects all primitive references across kits.
|
|
84
|
+
*/
|
|
85
|
+
function collectPrimitiveReferences(kits) {
|
|
86
|
+
const references = new Map();
|
|
87
|
+
for (const kit of kits) {
|
|
88
|
+
for (const type of PRIMITIVE_TYPES) {
|
|
89
|
+
const primitives = kit.primitives[type];
|
|
90
|
+
if (!primitives)
|
|
91
|
+
continue;
|
|
92
|
+
for (const primitive of primitives) {
|
|
93
|
+
if (!isReferencedPrimitive(primitive))
|
|
94
|
+
continue;
|
|
95
|
+
try {
|
|
96
|
+
const parsed = parseReference(primitive.ref);
|
|
97
|
+
const key = createPrimitiveKey(type, parsed.name);
|
|
98
|
+
if (!references.has(key)) {
|
|
99
|
+
references.set(key, {
|
|
100
|
+
type,
|
|
101
|
+
name: parsed.name,
|
|
102
|
+
kits: new Map(),
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
references.get(key).kits.set(kit.name, parsed.versionSpec);
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
// Skip invalid references - they'll be caught in normal resolution
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return references;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Resolves primitives shared by multiple kits.
|
|
117
|
+
*/
|
|
118
|
+
async function resolveSharedPrimitives(referenceMap, registry) {
|
|
119
|
+
const primitives = new Map();
|
|
120
|
+
const errors = [];
|
|
121
|
+
for (const [key, info] of referenceMap) {
|
|
122
|
+
// Skip if only one kit references this primitive
|
|
123
|
+
if (info.kits.size <= 1)
|
|
124
|
+
continue;
|
|
125
|
+
// Get all version specs from different kits
|
|
126
|
+
const specs = Array.from(info.kits.values());
|
|
127
|
+
// Look up the primitive
|
|
128
|
+
const entry = await registry.getPrimitive(info.type, info.name);
|
|
129
|
+
if (!entry) {
|
|
130
|
+
errors.push({
|
|
131
|
+
type: "not-found",
|
|
132
|
+
primitive: `${info.name} (shared by ${Array.from(info.kits.keys()).join(", ")})`,
|
|
133
|
+
message: `Shared primitive "${info.name}" of type "${info.type}" not found in registry`,
|
|
134
|
+
});
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
// Find highest version satisfying all specs
|
|
138
|
+
const versions = entry.versions.map((v) => v.version);
|
|
139
|
+
const matchingVersion = findHighestSatisfyingAll(versions, specs);
|
|
140
|
+
if (!matchingVersion) {
|
|
141
|
+
errors.push({
|
|
142
|
+
type: "no-matching-version",
|
|
143
|
+
primitive: `${info.name} (shared by ${Array.from(info.kits.keys()).join(", ")})`,
|
|
144
|
+
message: `No version found satisfying all specs: ${specs.join(", ")}. Available: ${versions.join(", ")}`,
|
|
145
|
+
available: versions,
|
|
146
|
+
});
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
// Get the version entry
|
|
150
|
+
const versionEntry = entry.versions.find((v) => v.version === matchingVersion);
|
|
151
|
+
if (!versionEntry)
|
|
152
|
+
continue;
|
|
153
|
+
// Build resolved primitive
|
|
154
|
+
const basePath = `${registry.getBasePath()}/${entry.path}/${versionEntry.path}`;
|
|
155
|
+
const sourcePath = await resolveRegistryPrimitivePath(info.type, info.name, basePath);
|
|
156
|
+
primitives.set(key, {
|
|
157
|
+
name: info.name,
|
|
158
|
+
type: info.type,
|
|
159
|
+
ref: `${info.name}@${matchingVersion}`, // Use resolved version as ref
|
|
160
|
+
resolvedVersion: matchingVersion,
|
|
161
|
+
sourcePath,
|
|
162
|
+
isInline: false,
|
|
163
|
+
metadata: {
|
|
164
|
+
description: entry.description,
|
|
165
|
+
released: versionEntry.released,
|
|
166
|
+
changelog: versionEntry.changelog,
|
|
167
|
+
},
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
return { primitives, errors };
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Finds the highest version that satisfies all given specs.
|
|
174
|
+
*/
|
|
175
|
+
function findHighestSatisfyingAll(versions, specs) {
|
|
176
|
+
// Handle edge cases
|
|
177
|
+
if (specs.length === 0)
|
|
178
|
+
return null;
|
|
179
|
+
if (versions.length === 0)
|
|
180
|
+
return null;
|
|
181
|
+
// If all specs are "latest", return highest version
|
|
182
|
+
if (specs.every((s) => s.toLowerCase() === "latest")) {
|
|
183
|
+
return semver.maxSatisfying(versions, "*");
|
|
184
|
+
}
|
|
185
|
+
// Filter to versions satisfying all non-latest specs
|
|
186
|
+
const nonLatestSpecs = specs.filter((s) => s.toLowerCase() !== "latest");
|
|
187
|
+
const satisfyingAll = versions.filter((version) => nonLatestSpecs.every((spec) => {
|
|
188
|
+
// Handle exact version match
|
|
189
|
+
if (semver.valid(spec)) {
|
|
190
|
+
return version === spec || semver.eq(version, spec);
|
|
191
|
+
}
|
|
192
|
+
// Handle range specs
|
|
193
|
+
const range = semver.validRange(spec);
|
|
194
|
+
if (range) {
|
|
195
|
+
return semver.satisfies(version, range);
|
|
196
|
+
}
|
|
197
|
+
// Unknown spec format - be permissive
|
|
198
|
+
return true;
|
|
199
|
+
}));
|
|
200
|
+
if (satisfyingAll.length === 0) {
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
// Return highest satisfying version
|
|
204
|
+
return semver.maxSatisfying(satisfyingAll, "*");
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Deduplicates primitives by merging identical versions.
|
|
208
|
+
*
|
|
209
|
+
* @param primitives - Array of resolved primitives from multiple kits
|
|
210
|
+
* @returns Deduplicated array with shared primitives merged
|
|
211
|
+
*/
|
|
212
|
+
export function deduplicatePrimitives(primitives) {
|
|
213
|
+
const deduplicated = new Map();
|
|
214
|
+
for (const primitive of primitives) {
|
|
215
|
+
const key = createPrimitiveKey(primitive.type, primitive.name);
|
|
216
|
+
// For inline primitives, use kit-specific keys
|
|
217
|
+
if (primitive.isInline) {
|
|
218
|
+
// Inline primitives are kit-specific, include source path in key
|
|
219
|
+
const inlineKey = `${key}:${primitive.sourcePath}`;
|
|
220
|
+
deduplicated.set(inlineKey, primitive);
|
|
221
|
+
continue;
|
|
222
|
+
}
|
|
223
|
+
// For referenced primitives, deduplicate by type:name
|
|
224
|
+
if (!deduplicated.has(key)) {
|
|
225
|
+
deduplicated.set(key, primitive);
|
|
226
|
+
continue;
|
|
227
|
+
}
|
|
228
|
+
// If already exists, keep the higher version
|
|
229
|
+
const existing = deduplicated.get(key);
|
|
230
|
+
if (primitive.resolvedVersion &&
|
|
231
|
+
existing.resolvedVersion &&
|
|
232
|
+
semver.gt(primitive.resolvedVersion, existing.resolvedVersion)) {
|
|
233
|
+
deduplicated.set(key, primitive);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return deduplicated;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Analyzes primitive sharing across kits.
|
|
240
|
+
*
|
|
241
|
+
* @param kits - Array of kit manifests
|
|
242
|
+
* @returns Analysis of shared primitives
|
|
243
|
+
*/
|
|
244
|
+
export function analyzeSharedPrimitives(kits) {
|
|
245
|
+
const references = collectPrimitiveReferences(kits);
|
|
246
|
+
const shared = new Map();
|
|
247
|
+
for (const [key, info] of references) {
|
|
248
|
+
if (info.kits.size > 1) {
|
|
249
|
+
shared.set(key, {
|
|
250
|
+
type: info.type,
|
|
251
|
+
name: info.name,
|
|
252
|
+
kits: Array.from(info.kits.keys()),
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
return shared;
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=multi-kit-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-kit-resolver.js","sourceRoot":"","sources":["../../src/resolution/multi-kit-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve registry primitive content paths.
|
|
3
|
+
*
|
|
4
|
+
* Registry version paths point to a version directory. This helper resolves the
|
|
5
|
+
* actual file or directory to install based on primitive type conventions.
|
|
6
|
+
*/
|
|
7
|
+
import type { PrimitiveType } from "../core/types.js";
|
|
8
|
+
/**
|
|
9
|
+
* Resolve a registry primitive content path for installation.
|
|
10
|
+
*
|
|
11
|
+
* @param type - Primitive type
|
|
12
|
+
* @param name - Primitive name
|
|
13
|
+
* @param basePath - Resolved registry base path (entry.path + version.path)
|
|
14
|
+
* @returns Path to primitive content (file or directory)
|
|
15
|
+
*/
|
|
16
|
+
export declare function resolveRegistryPrimitivePath(type: PrimitiveType, name: string, basePath: string): Promise<string>;
|
|
17
|
+
//# sourceMappingURL=primitive-paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitive-paths.d.ts","sourceRoot":"","sources":["../../src/resolution/primitive-paths.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAWtD;;;;;;;GAOG;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAmCjB"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve registry primitive content paths.
|
|
3
|
+
*
|
|
4
|
+
* Registry version paths point to a version directory. This helper resolves the
|
|
5
|
+
* actual file or directory to install based on primitive type conventions.
|
|
6
|
+
*/
|
|
7
|
+
import { stat } from "node:fs/promises";
|
|
8
|
+
import path from "node:path";
|
|
9
|
+
async function pathExists(targetPath) {
|
|
10
|
+
try {
|
|
11
|
+
await stat(targetPath);
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Resolve a registry primitive content path for installation.
|
|
20
|
+
*
|
|
21
|
+
* @param type - Primitive type
|
|
22
|
+
* @param name - Primitive name
|
|
23
|
+
* @param basePath - Resolved registry base path (entry.path + version.path)
|
|
24
|
+
* @returns Path to primitive content (file or directory)
|
|
25
|
+
*/
|
|
26
|
+
export async function resolveRegistryPrimitivePath(type, name, basePath) {
|
|
27
|
+
try {
|
|
28
|
+
const stats = await stat(basePath);
|
|
29
|
+
if (!stats.isDirectory()) {
|
|
30
|
+
return basePath;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return basePath;
|
|
35
|
+
}
|
|
36
|
+
let candidate = basePath;
|
|
37
|
+
switch (type) {
|
|
38
|
+
case "commands":
|
|
39
|
+
candidate = path.join(basePath, `${name}.md`);
|
|
40
|
+
break;
|
|
41
|
+
case "subagents":
|
|
42
|
+
candidate = path.join(basePath, `${name}.md`);
|
|
43
|
+
break;
|
|
44
|
+
case "hooks":
|
|
45
|
+
candidate = path.join(basePath, "config.json");
|
|
46
|
+
break;
|
|
47
|
+
case "mcp":
|
|
48
|
+
candidate = path.join(basePath, "config.json");
|
|
49
|
+
break;
|
|
50
|
+
case "skills":
|
|
51
|
+
default:
|
|
52
|
+
return basePath;
|
|
53
|
+
}
|
|
54
|
+
if (await pathExists(candidate)) {
|
|
55
|
+
return candidate;
|
|
56
|
+
}
|
|
57
|
+
return basePath;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=primitive-paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitive-paths.js","sourceRoot":"","sources":["../../src/resolution/primitive-paths.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,KAAK,UAAU,UAAU,CAAC,UAAkB;IAC1C,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,IAAmB,EACnB,IAAY,EACZ,QAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACzB,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,SAAS,GAAG,QAAQ,CAAC;IAEzB,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,UAAU;YACb,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;YAC9C,MAAM;QACR,KAAK,WAAW;YACd,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;YAC9C,MAAM;QACR,KAAK,OAAO;YACV,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YAC/C,MAAM;QACR,KAAK,KAAK;YACR,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YAC/C,MAAM;QACR,KAAK,QAAQ,CAAC;QACd;YACE,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,IAAI,MAAM,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Primitives registry loader and query interface.
|
|
3
|
+
*
|
|
4
|
+
* Provides functionality to load the primitives.json file and query
|
|
5
|
+
* primitives by type and name.
|
|
6
|
+
*/
|
|
7
|
+
import type { PrimitivesRegistry, PrimitiveEntry, PrimitiveType, PrimitiveVersionEntry } from "../core/types.js";
|
|
8
|
+
import type { VersionResolutionResult } from "./types.js";
|
|
9
|
+
/**
|
|
10
|
+
* Error thrown when the primitives registry cannot be loaded.
|
|
11
|
+
*/
|
|
12
|
+
export declare class PrimitivesRegistryError extends Error {
|
|
13
|
+
readonly errorCause?: unknown;
|
|
14
|
+
constructor(message: string, cause?: unknown);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Wrapper class for querying the primitives registry.
|
|
18
|
+
*/
|
|
19
|
+
export declare class PrimitivesRegistryLoader {
|
|
20
|
+
private registry;
|
|
21
|
+
private basePath;
|
|
22
|
+
constructor(basePath: string);
|
|
23
|
+
/**
|
|
24
|
+
* Loads the primitives registry from the repository.
|
|
25
|
+
*
|
|
26
|
+
* @returns The loaded primitives registry
|
|
27
|
+
* @throws PrimitivesRegistryError if loading fails
|
|
28
|
+
*/
|
|
29
|
+
load(): Promise<PrimitivesRegistry>;
|
|
30
|
+
/**
|
|
31
|
+
* Gets the loaded registry, loading it if necessary.
|
|
32
|
+
*/
|
|
33
|
+
getRegistry(): Promise<PrimitivesRegistry>;
|
|
34
|
+
/**
|
|
35
|
+
* Checks if the registry has been loaded.
|
|
36
|
+
*/
|
|
37
|
+
isLoaded(): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Gets the base path for resolving primitive paths.
|
|
40
|
+
*/
|
|
41
|
+
getBasePath(): string;
|
|
42
|
+
/**
|
|
43
|
+
* Gets a primitive entry by type and name.
|
|
44
|
+
*
|
|
45
|
+
* @param type - The primitive type
|
|
46
|
+
* @param name - The primitive name
|
|
47
|
+
* @returns The primitive entry or null if not found
|
|
48
|
+
*/
|
|
49
|
+
getPrimitive(type: PrimitiveType, name: string): Promise<PrimitiveEntry | null>;
|
|
50
|
+
/**
|
|
51
|
+
* Gets all available versions for a primitive.
|
|
52
|
+
*
|
|
53
|
+
* @param type - The primitive type
|
|
54
|
+
* @param name - The primitive name
|
|
55
|
+
* @returns Array of version entries, sorted newest first
|
|
56
|
+
*/
|
|
57
|
+
getVersions(type: PrimitiveType, name: string): Promise<PrimitiveVersionEntry[]>;
|
|
58
|
+
/**
|
|
59
|
+
* Gets the version strings for a primitive.
|
|
60
|
+
*
|
|
61
|
+
* @param type - The primitive type
|
|
62
|
+
* @param name - The primitive name
|
|
63
|
+
* @returns Array of version strings
|
|
64
|
+
*/
|
|
65
|
+
getVersionStrings(type: PrimitiveType, name: string): Promise<string[]>;
|
|
66
|
+
/**
|
|
67
|
+
* Gets the latest version for a primitive.
|
|
68
|
+
*
|
|
69
|
+
* @param type - The primitive type
|
|
70
|
+
* @param name - The primitive name
|
|
71
|
+
* @returns The latest version string or null if not found
|
|
72
|
+
*/
|
|
73
|
+
getLatestVersion(type: PrimitiveType, name: string): Promise<string | null>;
|
|
74
|
+
/**
|
|
75
|
+
* Gets a specific version entry for a primitive.
|
|
76
|
+
*
|
|
77
|
+
* @param type - The primitive type
|
|
78
|
+
* @param name - The primitive name
|
|
79
|
+
* @param version - The exact version string
|
|
80
|
+
* @returns The version entry or null if not found
|
|
81
|
+
*/
|
|
82
|
+
getVersion(type: PrimitiveType, name: string, version: string): Promise<PrimitiveVersionEntry | null>;
|
|
83
|
+
/**
|
|
84
|
+
* Resolves the full path to a primitive version's content.
|
|
85
|
+
*
|
|
86
|
+
* @param type - The primitive type
|
|
87
|
+
* @param name - The primitive name
|
|
88
|
+
* @param version - The version string
|
|
89
|
+
* @returns The absolute path to the primitive content or null if not found
|
|
90
|
+
*/
|
|
91
|
+
resolvePath(type: PrimitiveType, name: string, version: string): Promise<string | null>;
|
|
92
|
+
/**
|
|
93
|
+
* Gets version resolution result with full path information.
|
|
94
|
+
*
|
|
95
|
+
* @param type - The primitive type
|
|
96
|
+
* @param name - The primitive name
|
|
97
|
+
* @param version - The exact version string
|
|
98
|
+
* @returns The version resolution result or null if not found
|
|
99
|
+
*/
|
|
100
|
+
getVersionResolution(type: PrimitiveType, name: string, version: string): Promise<VersionResolutionResult | null>;
|
|
101
|
+
/**
|
|
102
|
+
* Checks if a primitive exists in the registry.
|
|
103
|
+
*
|
|
104
|
+
* @param type - The primitive type
|
|
105
|
+
* @param name - The primitive name
|
|
106
|
+
* @returns True if the primitive exists
|
|
107
|
+
*/
|
|
108
|
+
hasPrimitive(type: PrimitiveType, name: string): Promise<boolean>;
|
|
109
|
+
/**
|
|
110
|
+
* Lists all primitives of a given type.
|
|
111
|
+
*
|
|
112
|
+
* @param type - The primitive type
|
|
113
|
+
* @returns Array of primitive names
|
|
114
|
+
*/
|
|
115
|
+
listPrimitives(type: PrimitiveType): Promise<string[]>;
|
|
116
|
+
/**
|
|
117
|
+
* Lists all primitives across all types.
|
|
118
|
+
*
|
|
119
|
+
* @returns Map of type to primitive names
|
|
120
|
+
*/
|
|
121
|
+
listAllPrimitives(): Promise<Map<PrimitiveType, string[]>>;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Creates a new primitives registry loader.
|
|
125
|
+
*
|
|
126
|
+
* @param basePath - The base path to the kit repository
|
|
127
|
+
* @returns A new PrimitivesRegistryLoader instance
|
|
128
|
+
*/
|
|
129
|
+
export declare function createPrimitivesRegistry(basePath: string): PrimitivesRegistryLoader;
|
|
130
|
+
/**
|
|
131
|
+
* Loads a primitives registry from a repository path.
|
|
132
|
+
*
|
|
133
|
+
* @param basePath - The base path to the kit repository
|
|
134
|
+
* @returns The loaded primitives registry
|
|
135
|
+
*/
|
|
136
|
+
export declare function loadPrimitivesRegistry(basePath: string): Promise<PrimitivesRegistry>;
|
|
137
|
+
//# sourceMappingURL=primitives-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitives-registry.d.ts","sourceRoot":"","sources":["../../src/resolution/primitives-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,qBAAqB,EACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1D;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;gBAElB,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAK7C;AAED;;GAEG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,MAAM;IAI5B;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,kBAAkB,CAAC;IA4BzC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAOhD;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;;;;;OAMG;IACG,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAWrF;;;;;;OAMG;IACG,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAYtF;;;;;;OAMG;IACG,iBAAiB,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAK7E;;;;;;OAMG;IACG,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKjF;;;;;;;OAOG;IACG,UAAU,CACd,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IASxC;;;;;;;OAOG;IACG,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAe7F;;;;;;;OAOG;IACG,oBAAoB,CACxB,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC;IAmB1C;;;;;;OAMG;IACG,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKvE;;;;;OAKG;IACG,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAW5D;;;;OAIG;IACG,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC;CAYjE;AAmDD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,wBAAwB,CAEnF;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAG1F"}
|