@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,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manifest module for the kit installer.
|
|
3
|
+
*
|
|
4
|
+
* This module handles reading, writing, and managing the installation manifest
|
|
5
|
+
* that tracks installed kits and primitives across harnesses.
|
|
6
|
+
*/
|
|
7
|
+
import { readManifest, getOrCreateManifest } from "./read.js";
|
|
8
|
+
import { writeManifest } from "./write.js";
|
|
9
|
+
export { MANIFEST_VERSION, GLOBAL_MANIFEST_PATH, PROJECT_MANIFEST_DIR, PROJECT_MANIFEST_FILENAME, createEmptyManifest, } from "./types.js";
|
|
10
|
+
// Re-export read functions
|
|
11
|
+
export { readManifest, getOrCreateManifest, ManifestReadError } from "./read.js";
|
|
12
|
+
// Re-export write functions
|
|
13
|
+
export { writeManifest, ManifestWriteError } from "./write.js";
|
|
14
|
+
// Re-export scope-aware path functions (renamed for clarity)
|
|
15
|
+
export { getManifestPathForScope, getManifestDirForScope } from "./write.js";
|
|
16
|
+
// Re-export upgrade check functions
|
|
17
|
+
export { checkForUpgrades, checkForUpgradesInScope, createUpgradeSummary, } from "./upgrade-check.js";
|
|
18
|
+
// Re-export utils
|
|
19
|
+
export { expandPath, getManifestPath, getManifestDir, ensureManifestDir, } from "./utils.js";
|
|
20
|
+
/**
|
|
21
|
+
* Record a kit installation in the manifest.
|
|
22
|
+
*
|
|
23
|
+
* @param harness - The harness name
|
|
24
|
+
* @param kit - The kit manifest
|
|
25
|
+
* @param primitives - The resolved primitives that were installed
|
|
26
|
+
* @param source - The source repository
|
|
27
|
+
* @param scope - Installation scope (global or project)
|
|
28
|
+
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
29
|
+
*/
|
|
30
|
+
export async function recordInstallation(harness, kit, primitives, source, scope = "global", projectRoot) {
|
|
31
|
+
const manifest = await getOrCreateManifest(scope, projectRoot);
|
|
32
|
+
// Ensure harness entry exists
|
|
33
|
+
if (!manifest.harnesses[harness]) {
|
|
34
|
+
manifest.harnesses[harness] = { kits: {} };
|
|
35
|
+
}
|
|
36
|
+
// Convert resolved primitives to installed primitives
|
|
37
|
+
const installedPrimitives = primitives.map((p) => {
|
|
38
|
+
const installed = {
|
|
39
|
+
name: p.name,
|
|
40
|
+
type: p.type,
|
|
41
|
+
namespacedName: `${kit.name}.${p.name}`,
|
|
42
|
+
isInline: p.isInline,
|
|
43
|
+
installedPath: p.sourcePath,
|
|
44
|
+
};
|
|
45
|
+
// Only add optional fields if they have values
|
|
46
|
+
if (p.resolvedVersion) {
|
|
47
|
+
installed.version = p.resolvedVersion;
|
|
48
|
+
}
|
|
49
|
+
const versionSpec = p.ref ? extractVersionSpec(p.ref) : undefined;
|
|
50
|
+
if (versionSpec) {
|
|
51
|
+
installed.versionSpec = versionSpec;
|
|
52
|
+
}
|
|
53
|
+
return installed;
|
|
54
|
+
});
|
|
55
|
+
// Record the kit installation
|
|
56
|
+
const harnessEntry = manifest.harnesses[harness];
|
|
57
|
+
if (harnessEntry) {
|
|
58
|
+
harnessEntry.kits[kit.name] = {
|
|
59
|
+
version: kit.version,
|
|
60
|
+
installedAt: new Date().toISOString(),
|
|
61
|
+
source,
|
|
62
|
+
primitives: installedPrimitives,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
// Update source
|
|
66
|
+
manifest.source = source;
|
|
67
|
+
await writeManifest(manifest, scope, projectRoot);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Remove a kit installation from the manifest.
|
|
71
|
+
*
|
|
72
|
+
* @param harness - The harness name
|
|
73
|
+
* @param kitName - The kit name to remove
|
|
74
|
+
* @param scope - Installation scope (global or project)
|
|
75
|
+
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
76
|
+
* @returns The removed kit info or null if not found
|
|
77
|
+
*/
|
|
78
|
+
export async function removeInstallation(harness, kitName, scope = "global", projectRoot) {
|
|
79
|
+
const manifest = await readManifest(scope, projectRoot);
|
|
80
|
+
if (!manifest) {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
const harnessEntry = manifest.harnesses[harness];
|
|
84
|
+
if (!harnessEntry) {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
const kit = harnessEntry.kits[kitName];
|
|
88
|
+
if (!kit) {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
// Remove the kit
|
|
92
|
+
delete harnessEntry.kits[kitName];
|
|
93
|
+
// Clean up empty harness entries
|
|
94
|
+
if (Object.keys(harnessEntry.kits).length === 0) {
|
|
95
|
+
delete manifest.harnesses[harness];
|
|
96
|
+
}
|
|
97
|
+
await writeManifest(manifest, scope, projectRoot);
|
|
98
|
+
return kit;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Get all installed kits, optionally filtered by harness.
|
|
102
|
+
*
|
|
103
|
+
* @param scope - Installation scope (global or project)
|
|
104
|
+
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
105
|
+
* @param harness - Optional harness name to filter by
|
|
106
|
+
* @returns Array of installed kit info with harness context
|
|
107
|
+
*/
|
|
108
|
+
export async function getInstalledKits(scope = "global", projectRoot, harness) {
|
|
109
|
+
const manifest = await readManifest(scope, projectRoot);
|
|
110
|
+
if (!manifest) {
|
|
111
|
+
return [];
|
|
112
|
+
}
|
|
113
|
+
const result = [];
|
|
114
|
+
for (const [harnessName, harnessEntry] of Object.entries(manifest.harnesses)) {
|
|
115
|
+
if (harness && harnessName !== harness) {
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
if (harnessEntry) {
|
|
119
|
+
for (const [kitName, kit] of Object.entries(harnessEntry.kits)) {
|
|
120
|
+
result.push({
|
|
121
|
+
harness: harnessName,
|
|
122
|
+
kitName,
|
|
123
|
+
kit,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return result;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Check if a kit is installed in any harness.
|
|
132
|
+
*
|
|
133
|
+
* @param kitName - The kit name to check
|
|
134
|
+
* @param scope - Installation scope (global or project)
|
|
135
|
+
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
136
|
+
* @returns True if the kit is installed somewhere
|
|
137
|
+
*/
|
|
138
|
+
export async function isKitInstalled(kitName, scope = "global", projectRoot) {
|
|
139
|
+
const manifest = await readManifest(scope, projectRoot);
|
|
140
|
+
if (!manifest) {
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
for (const harness of Object.values(manifest.harnesses)) {
|
|
144
|
+
if (harness && kitName in harness.kits) {
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Check if a kit is installed in a specific harness.
|
|
152
|
+
*
|
|
153
|
+
* @param harness - The harness name
|
|
154
|
+
* @param kitName - The kit name to check
|
|
155
|
+
* @param scope - Installation scope (global or project)
|
|
156
|
+
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
157
|
+
* @returns True if the kit is installed in the harness
|
|
158
|
+
*/
|
|
159
|
+
export async function isKitInstalledInHarness(harness, kitName, scope = "global", projectRoot) {
|
|
160
|
+
const manifest = await readManifest(scope, projectRoot);
|
|
161
|
+
if (!manifest) {
|
|
162
|
+
return false;
|
|
163
|
+
}
|
|
164
|
+
const harnessEntry = manifest.harnesses[harness];
|
|
165
|
+
return harnessEntry ? kitName in harnessEntry.kits : false;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Get a specific installed kit.
|
|
169
|
+
*
|
|
170
|
+
* @param harness - The harness name
|
|
171
|
+
* @param kitName - The kit name
|
|
172
|
+
* @param scope - Installation scope (global or project)
|
|
173
|
+
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
174
|
+
* @returns The installed kit or null if not found
|
|
175
|
+
*/
|
|
176
|
+
export async function getInstalledKit(harness, kitName, scope = "global", projectRoot) {
|
|
177
|
+
const manifest = await readManifest(scope, projectRoot);
|
|
178
|
+
if (!manifest) {
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
const harnessEntry = manifest.harnesses[harness];
|
|
182
|
+
if (!harnessEntry) {
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
return harnessEntry.kits[kitName] ?? null;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Extract version spec from a ref string.
|
|
189
|
+
*
|
|
190
|
+
* @param ref - The ref string (e.g., "tf-plan@^1.0.0")
|
|
191
|
+
* @returns The version spec portion or undefined
|
|
192
|
+
*/
|
|
193
|
+
function extractVersionSpec(ref) {
|
|
194
|
+
const atIndex = ref.indexOf("@");
|
|
195
|
+
if (atIndex === -1) {
|
|
196
|
+
return undefined;
|
|
197
|
+
}
|
|
198
|
+
return ref.slice(atIndex + 1);
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/manifest/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manifest read operations.
|
|
3
|
+
*
|
|
4
|
+
* Provides functionality to read and validate the installation manifest.
|
|
5
|
+
*/
|
|
6
|
+
import type { InstallationScope } from "../core/types.js";
|
|
7
|
+
import type { InstallationManifest } from "./types.js";
|
|
8
|
+
/**
|
|
9
|
+
* Error thrown when manifest read fails.
|
|
10
|
+
*/
|
|
11
|
+
export declare class ManifestReadError extends Error {
|
|
12
|
+
readonly errorCause?: unknown;
|
|
13
|
+
constructor(message: string, cause?: unknown);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Read the installation manifest from disk.
|
|
17
|
+
*
|
|
18
|
+
* @param scope - Installation scope (global or project)
|
|
19
|
+
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
20
|
+
* @returns The manifest or null if it doesn't exist
|
|
21
|
+
* @throws ManifestReadError if the file exists but cannot be read or parsed
|
|
22
|
+
*/
|
|
23
|
+
export declare function readManifest(scope?: InstallationScope, projectRoot?: string): Promise<InstallationManifest | null>;
|
|
24
|
+
/**
|
|
25
|
+
* Get or create the installation manifest.
|
|
26
|
+
*
|
|
27
|
+
* @param scope - Installation scope (global or project)
|
|
28
|
+
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
29
|
+
* @returns The existing manifest or a new empty manifest
|
|
30
|
+
*/
|
|
31
|
+
export declare function getOrCreateManifest(scope?: InstallationScope, projectRoot?: string): Promise<InstallationManifest>;
|
|
32
|
+
//# sourceMappingURL=read.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/manifest/read.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAIvD;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;gBAElB,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAK7C;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,KAAK,GAAE,iBAA4B,EACnC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAuCtC;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,GAAE,iBAA4B,EACnC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,CAAC,CAG/B"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manifest read operations.
|
|
3
|
+
*
|
|
4
|
+
* Provides functionality to read and validate the installation manifest.
|
|
5
|
+
*/
|
|
6
|
+
import fs from "node:fs/promises";
|
|
7
|
+
import { MANIFEST_VERSION, createEmptyManifest } from "./types.js";
|
|
8
|
+
import { getManifestPath } from "./utils.js";
|
|
9
|
+
/**
|
|
10
|
+
* Error thrown when manifest read fails.
|
|
11
|
+
*/
|
|
12
|
+
export class ManifestReadError extends Error {
|
|
13
|
+
errorCause;
|
|
14
|
+
constructor(message, cause) {
|
|
15
|
+
super(message);
|
|
16
|
+
this.name = "ManifestReadError";
|
|
17
|
+
this.errorCause = cause;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Read the installation manifest from disk.
|
|
22
|
+
*
|
|
23
|
+
* @param scope - Installation scope (global or project)
|
|
24
|
+
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
25
|
+
* @returns The manifest or null if it doesn't exist
|
|
26
|
+
* @throws ManifestReadError if the file exists but cannot be read or parsed
|
|
27
|
+
*/
|
|
28
|
+
export async function readManifest(scope = "global", projectRoot) {
|
|
29
|
+
const manifestPath = getManifestPath(scope, projectRoot);
|
|
30
|
+
try {
|
|
31
|
+
const content = await fs.readFile(manifestPath, "utf-8");
|
|
32
|
+
const manifest = JSON.parse(content);
|
|
33
|
+
// Validate manifest version
|
|
34
|
+
if (!isValidManifest(manifest)) {
|
|
35
|
+
throw new ManifestReadError(`Invalid manifest format at ${manifestPath}; expected version ${MANIFEST_VERSION}`);
|
|
36
|
+
}
|
|
37
|
+
return manifest;
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
const nodeError = error;
|
|
41
|
+
// File doesn't exist - return null
|
|
42
|
+
if (nodeError.code === "ENOENT") {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
// Re-throw ManifestReadError as-is
|
|
46
|
+
if (error instanceof ManifestReadError) {
|
|
47
|
+
throw error;
|
|
48
|
+
}
|
|
49
|
+
// JSON parse errors
|
|
50
|
+
if (error instanceof SyntaxError) {
|
|
51
|
+
throw new ManifestReadError(`Failed to parse manifest at ${manifestPath}; invalid JSON`, error);
|
|
52
|
+
}
|
|
53
|
+
// Other errors
|
|
54
|
+
throw new ManifestReadError(`Failed to read manifest at ${manifestPath}`, error);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get or create the installation manifest.
|
|
59
|
+
*
|
|
60
|
+
* @param scope - Installation scope (global or project)
|
|
61
|
+
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
62
|
+
* @returns The existing manifest or a new empty manifest
|
|
63
|
+
*/
|
|
64
|
+
export async function getOrCreateManifest(scope = "global", projectRoot) {
|
|
65
|
+
const manifest = await readManifest(scope, projectRoot);
|
|
66
|
+
return manifest ?? createEmptyManifest(scope, projectRoot);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Validates that a manifest has the expected structure.
|
|
70
|
+
*/
|
|
71
|
+
function isValidManifest(manifest) {
|
|
72
|
+
if (!manifest || typeof manifest !== "object") {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
const m = manifest;
|
|
76
|
+
// Check required fields
|
|
77
|
+
if (typeof m["version"] !== "string") {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
if (typeof m["lastUpdated"] !== "string") {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
if (!m["harnesses"] || typeof m["harnesses"] !== "object") {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=read.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/manifest/read.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAIlC,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACjC,UAAU,CAAW;IAE9B,YAAY,OAAe,EAAE,KAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAA2B,QAAQ,EACnC,WAAoB;IAEpB,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAEzD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAyB,CAAC;QAE7D,4BAA4B;QAC5B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,iBAAiB,CACzB,8BAA8B,YAAY,sBAAsB,gBAAgB,EAAE,CACnF,CAAC;QACJ,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,SAAS,GAAG,KAA8B,CAAC;QAEjD,mCAAmC;QACnC,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mCAAmC;QACnC,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;YACvC,MAAM,KAAK,CAAC;QACd,CAAC;QAED,oBAAoB;QACpB,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,MAAM,IAAI,iBAAiB,CACzB,+BAA+B,YAAY,gBAAgB,EAC3D,KAAK,CACN,CAAC;QACJ,CAAC;QAED,eAAe;QACf,MAAM,IAAI,iBAAiB,CAAC,8BAA8B,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAA2B,QAAQ,EACnC,WAAoB;IAEpB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACxD,OAAO,QAAQ,IAAI,mBAAmB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,QAAiB;IACxC,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAC,GAAG,QAAmC,CAAC;IAE9C,wBAAwB;IACxB,IAAI,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,CAAC,CAAC,aAAa,CAAC,KAAK,QAAQ,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,CAAC,WAAW,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Installation manifest type definitions.
|
|
3
|
+
*
|
|
4
|
+
* The manifest tracks all installed kits and primitives across harnesses,
|
|
5
|
+
* enabling uninstallation, upgrade checking, and conflict detection.
|
|
6
|
+
*/
|
|
7
|
+
import type { PrimitiveType, HarnessName, InstallationScope } from "../core/types.js";
|
|
8
|
+
/**
|
|
9
|
+
* Version of the manifest schema.
|
|
10
|
+
*/
|
|
11
|
+
export declare const MANIFEST_VERSION: "1.0";
|
|
12
|
+
/**
|
|
13
|
+
* Global manifest file location.
|
|
14
|
+
* User-level installation, available in all projects.
|
|
15
|
+
*/
|
|
16
|
+
export declare const GLOBAL_MANIFEST_PATH = "~/.agents/manifest.json";
|
|
17
|
+
/**
|
|
18
|
+
* Project manifest directory name.
|
|
19
|
+
* Repository-level installation, version-controllable.
|
|
20
|
+
*/
|
|
21
|
+
export declare const PROJECT_MANIFEST_DIR = ".agents";
|
|
22
|
+
/**
|
|
23
|
+
* Project manifest file name within PROJECT_MANIFEST_DIR.
|
|
24
|
+
*/
|
|
25
|
+
export declare const PROJECT_MANIFEST_FILENAME = "manifest.json";
|
|
26
|
+
/**
|
|
27
|
+
* Information about an installed primitive.
|
|
28
|
+
*/
|
|
29
|
+
export interface InstalledPrimitive {
|
|
30
|
+
name: string;
|
|
31
|
+
type: PrimitiveType;
|
|
32
|
+
namespacedName: string;
|
|
33
|
+
version?: string;
|
|
34
|
+
versionSpec?: string;
|
|
35
|
+
isInline: boolean;
|
|
36
|
+
installedPath: string;
|
|
37
|
+
instanceName?: string;
|
|
38
|
+
configHash?: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Information about an installed kit.
|
|
42
|
+
*/
|
|
43
|
+
export interface InstalledKit {
|
|
44
|
+
version: string;
|
|
45
|
+
installedAt: string;
|
|
46
|
+
source: string;
|
|
47
|
+
primitives: InstalledPrimitive[];
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Harness installation record.
|
|
51
|
+
*/
|
|
52
|
+
export interface HarnessInstallation {
|
|
53
|
+
kits: Record<string, InstalledKit>;
|
|
54
|
+
mcpInstances?: Record<string, McpInstance>;
|
|
55
|
+
hookInstances?: Record<string, HookInstance>;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* MCP server instance record.
|
|
59
|
+
*/
|
|
60
|
+
export interface McpInstance {
|
|
61
|
+
version: string;
|
|
62
|
+
configHash: string;
|
|
63
|
+
usedBy: string[];
|
|
64
|
+
sourcePrimitive: string;
|
|
65
|
+
installedAt: string;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Hook program instance record.
|
|
69
|
+
*/
|
|
70
|
+
export interface HookInstance {
|
|
71
|
+
version: string;
|
|
72
|
+
configHash: string;
|
|
73
|
+
usedBy: string[];
|
|
74
|
+
sourcePrimitive: string;
|
|
75
|
+
installedAt: string;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Installation manifest structure.
|
|
79
|
+
*/
|
|
80
|
+
export interface InstallationManifest {
|
|
81
|
+
version: typeof MANIFEST_VERSION;
|
|
82
|
+
scope: InstallationScope;
|
|
83
|
+
projectRoot?: string;
|
|
84
|
+
lastUpdated: string;
|
|
85
|
+
source?: string;
|
|
86
|
+
harnesses: Partial<Record<HarnessName, HarnessInstallation>>;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Available upgrade information.
|
|
90
|
+
*/
|
|
91
|
+
export interface UpgradeCheck {
|
|
92
|
+
kit: string;
|
|
93
|
+
harness: HarnessName;
|
|
94
|
+
primitive: string;
|
|
95
|
+
type: PrimitiveType;
|
|
96
|
+
currentVersion: string;
|
|
97
|
+
availableVersion: string;
|
|
98
|
+
versionSpec: string;
|
|
99
|
+
breaking: boolean;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Summary of available upgrades.
|
|
103
|
+
*/
|
|
104
|
+
export interface UpgradeSummary {
|
|
105
|
+
upgrades: UpgradeCheck[];
|
|
106
|
+
totalUpgrades: number;
|
|
107
|
+
breakingChanges: number;
|
|
108
|
+
affectedKits: number;
|
|
109
|
+
affectedHarnesses: number;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Creates an empty manifest for the specified scope.
|
|
113
|
+
*
|
|
114
|
+
* @param scope - Installation scope (global or project)
|
|
115
|
+
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
116
|
+
* @returns Empty installation manifest
|
|
117
|
+
*/
|
|
118
|
+
export declare function createEmptyManifest(scope?: InstallationScope, projectRoot?: string): InstallationManifest;
|
|
119
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/manifest/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Installation manifest type definitions.
|
|
3
|
+
*
|
|
4
|
+
* The manifest tracks all installed kits and primitives across harnesses,
|
|
5
|
+
* enabling uninstallation, upgrade checking, and conflict detection.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Version of the manifest schema.
|
|
9
|
+
*/
|
|
10
|
+
export const MANIFEST_VERSION = "1.0";
|
|
11
|
+
/**
|
|
12
|
+
* Global manifest file location.
|
|
13
|
+
* User-level installation, available in all projects.
|
|
14
|
+
*/
|
|
15
|
+
export const GLOBAL_MANIFEST_PATH = "~/.agents/manifest.json";
|
|
16
|
+
/**
|
|
17
|
+
* Project manifest directory name.
|
|
18
|
+
* Repository-level installation, version-controllable.
|
|
19
|
+
*/
|
|
20
|
+
export const PROJECT_MANIFEST_DIR = ".agents";
|
|
21
|
+
/**
|
|
22
|
+
* Project manifest file name within PROJECT_MANIFEST_DIR.
|
|
23
|
+
*/
|
|
24
|
+
export const PROJECT_MANIFEST_FILENAME = "manifest.json";
|
|
25
|
+
/**
|
|
26
|
+
* Creates an empty manifest for the specified scope.
|
|
27
|
+
*
|
|
28
|
+
* @param scope - Installation scope (global or project)
|
|
29
|
+
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
30
|
+
* @returns Empty installation manifest
|
|
31
|
+
*/
|
|
32
|
+
export function createEmptyManifest(scope = "global", projectRoot) {
|
|
33
|
+
const manifest = {
|
|
34
|
+
version: MANIFEST_VERSION,
|
|
35
|
+
scope,
|
|
36
|
+
lastUpdated: new Date().toISOString(),
|
|
37
|
+
harnesses: {},
|
|
38
|
+
};
|
|
39
|
+
if (scope === "project" && projectRoot) {
|
|
40
|
+
manifest.projectRoot = projectRoot;
|
|
41
|
+
}
|
|
42
|
+
return manifest;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/manifest/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAc,CAAC;AAE/C;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,yBAAyB,CAAC;AAE9D;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,SAAS,CAAC;AAE9C;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,eAAe,CAAC;AAgGzD;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAA2B,QAAQ,EACnC,WAAoB;IAEpB,MAAM,QAAQ,GAAyB;QACrC,OAAO,EAAE,gBAAgB;QACzB,KAAK;QACL,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,SAAS,EAAE,EAAE;KACd,CAAC;IAEF,IAAI,KAAK,KAAK,SAAS,IAAI,WAAW,EAAE,CAAC;QACvC,QAAQ,CAAC,WAAW,GAAG,WAAW,CAAC;IACrC,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Upgrade checking functionality for installed primitives.
|
|
3
|
+
*
|
|
4
|
+
* Compares installed primitive versions against the primitives registry
|
|
5
|
+
* to identify available updates.
|
|
6
|
+
*/
|
|
7
|
+
import type { HarnessName, InstallationScope } from "../core/types.js";
|
|
8
|
+
import type { PrimitivesRegistryLoader } from "../resolution/primitives-registry.js";
|
|
9
|
+
import type { InstallationManifest, UpgradeCheck, UpgradeSummary } from "./types.js";
|
|
10
|
+
/**
|
|
11
|
+
* Check for available upgrades for a specific installation scope.
|
|
12
|
+
*
|
|
13
|
+
* Convenience function that reads the manifest for the given scope
|
|
14
|
+
* and checks for available upgrades.
|
|
15
|
+
*
|
|
16
|
+
* @param scope - Installation scope (global or project)
|
|
17
|
+
* @param registry - The primitives registry loader
|
|
18
|
+
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
19
|
+
* @returns Array of available upgrade information, empty if no manifest exists
|
|
20
|
+
*/
|
|
21
|
+
export declare function checkForUpgradesInScope(scope: InstallationScope, registry: PrimitivesRegistryLoader, projectRoot?: string): Promise<UpgradeCheck[]>;
|
|
22
|
+
/**
|
|
23
|
+
* Check for available upgrades across all installed primitives.
|
|
24
|
+
*
|
|
25
|
+
* @param manifest - The installation manifest
|
|
26
|
+
* @param registry - The primitives registry loader
|
|
27
|
+
* @returns Array of available upgrade information
|
|
28
|
+
*/
|
|
29
|
+
export declare function checkForUpgrades(manifest: InstallationManifest, registry: PrimitivesRegistryLoader): Promise<UpgradeCheck[]>;
|
|
30
|
+
/**
|
|
31
|
+
* Create an upgrade summary from upgrade checks.
|
|
32
|
+
*
|
|
33
|
+
* @param upgrades - Array of upgrade checks
|
|
34
|
+
* @returns Summary of available upgrades
|
|
35
|
+
*/
|
|
36
|
+
export declare function createUpgradeSummary(upgrades: UpgradeCheck[]): UpgradeSummary;
|
|
37
|
+
/**
|
|
38
|
+
* Group upgrades by kit for display purposes.
|
|
39
|
+
*
|
|
40
|
+
* @param upgrades - Array of upgrade checks
|
|
41
|
+
* @returns Map of kit name to upgrades for that kit
|
|
42
|
+
*/
|
|
43
|
+
export declare function groupUpgradesByKit(upgrades: UpgradeCheck[]): Map<string, UpgradeCheck[]>;
|
|
44
|
+
/**
|
|
45
|
+
* Group upgrades by harness for display purposes.
|
|
46
|
+
*
|
|
47
|
+
* @param upgrades - Array of upgrade checks
|
|
48
|
+
* @returns Map of harness name to upgrades for that harness
|
|
49
|
+
*/
|
|
50
|
+
export declare function groupUpgradesByHarness(upgrades: UpgradeCheck[]): Map<HarnessName, UpgradeCheck[]>;
|
|
51
|
+
/**
|
|
52
|
+
* Filter upgrades to only include non-breaking changes.
|
|
53
|
+
*
|
|
54
|
+
* @param upgrades - Array of upgrade checks
|
|
55
|
+
* @returns Array of non-breaking upgrades
|
|
56
|
+
*/
|
|
57
|
+
export declare function filterNonBreaking(upgrades: UpgradeCheck[]): UpgradeCheck[];
|
|
58
|
+
/**
|
|
59
|
+
* Filter upgrades to only include breaking changes.
|
|
60
|
+
*
|
|
61
|
+
* @param upgrades - Array of upgrade checks
|
|
62
|
+
* @returns Array of breaking upgrades
|
|
63
|
+
*/
|
|
64
|
+
export declare function filterBreaking(upgrades: UpgradeCheck[]): UpgradeCheck[];
|
|
65
|
+
/**
|
|
66
|
+
* Format an upgrade for display.
|
|
67
|
+
*
|
|
68
|
+
* @param upgrade - The upgrade check
|
|
69
|
+
* @returns Formatted string describing the upgrade
|
|
70
|
+
*/
|
|
71
|
+
export declare function formatUpgrade(upgrade: UpgradeCheck): string;
|
|
72
|
+
//# sourceMappingURL=upgrade-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade-check.d.ts","sourceRoot":"","sources":["../../src/manifest/upgrade-check.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAiB,MAAM,kBAAkB,CAAC;AACtF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AACrF,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGrF;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,iBAAiB,EACxB,QAAQ,EAAE,wBAAwB,EAClC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,EAAE,CAAC,CAMzB;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,oBAAoB,EAC9B,QAAQ,EAAE,wBAAwB,GACjC,OAAO,CAAC,YAAY,EAAE,CAAC,CAsCzB;AA0ED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,cAAc,CAiB7E;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,YAAY,EAAE,GACvB,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAW7B;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,YAAY,EAAE,GACvB,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,CAAC,CAUlC;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAE1E;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAEvE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAG3D"}
|