@kindgi/cli 0.0.0-bootstrap.0 → 0.1.1
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/LICENSE +201 -0
- package/README.md +738 -1
- package/dist/build/apt.d.ts +16 -0
- package/dist/build/apt.d.ts.map +1 -0
- package/dist/build/apt.js +50 -0
- package/dist/build/apt.js.map +1 -0
- package/dist/build/bundle.d.ts +48 -0
- package/dist/build/bundle.d.ts.map +1 -0
- package/dist/build/bundle.js +125 -0
- package/dist/build/bundle.js.map +1 -0
- package/dist/build/containerfile.d.ts +27 -0
- package/dist/build/containerfile.d.ts.map +1 -0
- package/dist/build/containerfile.js +197 -0
- package/dist/build/containerfile.js.map +1 -0
- package/dist/build/context-files.d.ts +24 -0
- package/dist/build/context-files.d.ts.map +1 -0
- package/dist/build/context-files.js +99 -0
- package/dist/build/context-files.js.map +1 -0
- package/dist/build/defaults.d.ts +66 -0
- package/dist/build/defaults.d.ts.map +1 -0
- package/dist/build/defaults.js +597 -0
- package/dist/build/defaults.js.map +1 -0
- package/dist/build/envelope.d.ts +72 -0
- package/dist/build/envelope.d.ts.map +1 -0
- package/dist/build/envelope.js +76 -0
- package/dist/build/envelope.js.map +1 -0
- package/dist/build/host-install.d.ts +100 -0
- package/dist/build/host-install.d.ts.map +1 -0
- package/dist/build/host-install.js +443 -0
- package/dist/build/host-install.js.map +1 -0
- package/dist/build/image-config.d.ts +32 -0
- package/dist/build/image-config.d.ts.map +1 -0
- package/dist/build/image-config.js +129 -0
- package/dist/build/image-config.js.map +1 -0
- package/dist/build/integrity.d.ts +51 -0
- package/dist/build/integrity.d.ts.map +1 -0
- package/dist/build/integrity.js +75 -0
- package/dist/build/integrity.js.map +1 -0
- package/dist/build/node-image.d.ts +18 -0
- package/dist/build/node-image.d.ts.map +1 -0
- package/dist/build/node-image.js +46 -0
- package/dist/build/node-image.js.map +1 -0
- package/dist/build/pack-root.d.ts +69 -0
- package/dist/build/pack-root.d.ts.map +1 -0
- package/dist/build/pack-root.js +102 -0
- package/dist/build/pack-root.js.map +1 -0
- package/dist/build/poetry-requirements.d.ts +5 -0
- package/dist/build/poetry-requirements.d.ts.map +1 -0
- package/dist/build/poetry-requirements.js +8 -0
- package/dist/build/poetry-requirements.js.map +1 -0
- package/dist/build/python-image.d.ts +40 -0
- package/dist/build/python-image.d.ts.map +1 -0
- package/dist/build/python-image.js +197 -0
- package/dist/build/python-image.js.map +1 -0
- package/dist/build/runners.d.ts +259 -0
- package/dist/build/runners.d.ts.map +1 -0
- package/dist/build/runners.js +4 -0
- package/dist/build/runners.js.map +1 -0
- package/dist/build/version-specifier.d.ts +2 -0
- package/dist/build/version-specifier.d.ts.map +1 -0
- package/dist/build/version-specifier.js +70 -0
- package/dist/build/version-specifier.js.map +1 -0
- package/dist/cli-package.d.ts +15 -0
- package/dist/cli-package.d.ts.map +1 -0
- package/dist/cli-package.js +37 -0
- package/dist/cli-package.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +26 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/adapters.d.ts +3 -0
- package/dist/commands/adapters.d.ts.map +1 -0
- package/dist/commands/adapters.js +148 -0
- package/dist/commands/adapters.js.map +1 -0
- package/dist/commands/agents.d.ts +3 -0
- package/dist/commands/agents.d.ts.map +1 -0
- package/dist/commands/agents.js +82 -0
- package/dist/commands/agents.js.map +1 -0
- package/dist/commands/approvals.d.ts +3 -0
- package/dist/commands/approvals.d.ts.map +1 -0
- package/dist/commands/approvals.js +92 -0
- package/dist/commands/approvals.js.map +1 -0
- package/dist/commands/artifacts.d.ts +3 -0
- package/dist/commands/artifacts.d.ts.map +1 -0
- package/dist/commands/artifacts.js +87 -0
- package/dist/commands/artifacts.js.map +1 -0
- package/dist/commands/auth.d.ts +25 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +283 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/build.d.ts +46 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +902 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/capabilities.d.ts +3 -0
- package/dist/commands/capabilities.d.ts.map +1 -0
- package/dist/commands/capabilities.js +38 -0
- package/dist/commands/capabilities.js.map +1 -0
- package/dist/commands/conversations.d.ts +3 -0
- package/dist/commands/conversations.d.ts.map +1 -0
- package/dist/commands/conversations.js +75 -0
- package/dist/commands/conversations.js.map +1 -0
- package/dist/commands/deploy.d.ts +7 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +697 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/dev.d.ts +43 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +1110 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/env.d.ts +27 -0
- package/dist/commands/env.d.ts.map +1 -0
- package/dist/commands/env.js +816 -0
- package/dist/commands/env.js.map +1 -0
- package/dist/commands/feedback.d.ts +33 -0
- package/dist/commands/feedback.d.ts.map +1 -0
- package/dist/commands/feedback.js +374 -0
- package/dist/commands/feedback.js.map +1 -0
- package/dist/commands/flows.d.ts +3 -0
- package/dist/commands/flows.d.ts.map +1 -0
- package/dist/commands/flows.js +60 -0
- package/dist/commands/flows.js.map +1 -0
- package/dist/commands/guardrails.d.ts +3 -0
- package/dist/commands/guardrails.d.ts.map +1 -0
- package/dist/commands/guardrails.js +89 -0
- package/dist/commands/guardrails.js.map +1 -0
- package/dist/commands/health.d.ts +8 -0
- package/dist/commands/health.d.ts.map +1 -0
- package/dist/commands/health.js +40 -0
- package/dist/commands/health.js.map +1 -0
- package/dist/commands/helpers.d.ts +48 -0
- package/dist/commands/helpers.d.ts.map +1 -0
- package/dist/commands/helpers.js +110 -0
- package/dist/commands/helpers.js.map +1 -0
- package/dist/commands/index.d.ts +7 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +90 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +46 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +454 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/key.d.ts +3 -0
- package/dist/commands/key.d.ts.map +1 -0
- package/dist/commands/key.js +322 -0
- package/dist/commands/key.js.map +1 -0
- package/dist/commands/mcp.d.ts +43 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +433 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/memory.d.ts +3 -0
- package/dist/commands/memory.d.ts.map +1 -0
- package/dist/commands/memory.js +82 -0
- package/dist/commands/memory.js.map +1 -0
- package/dist/commands/observations.d.ts +3 -0
- package/dist/commands/observations.d.ts.map +1 -0
- package/dist/commands/observations.js +27 -0
- package/dist/commands/observations.js.map +1 -0
- package/dist/commands/proposals.d.ts +3 -0
- package/dist/commands/proposals.d.ts.map +1 -0
- package/dist/commands/proposals.js +116 -0
- package/dist/commands/proposals.js.map +1 -0
- package/dist/commands/provenance.d.ts +3 -0
- package/dist/commands/provenance.d.ts.map +1 -0
- package/dist/commands/provenance.js +53 -0
- package/dist/commands/provenance.js.map +1 -0
- package/dist/commands/providers.d.ts +3 -0
- package/dist/commands/providers.d.ts.map +1 -0
- package/dist/commands/providers.js +212 -0
- package/dist/commands/providers.js.map +1 -0
- package/dist/commands/reviewers.d.ts +3 -0
- package/dist/commands/reviewers.d.ts.map +1 -0
- package/dist/commands/reviewers.js +78 -0
- package/dist/commands/reviewers.js.map +1 -0
- package/dist/commands/runs.d.ts +3 -0
- package/dist/commands/runs.d.ts.map +1 -0
- package/dist/commands/runs.js +223 -0
- package/dist/commands/runs.js.map +1 -0
- package/dist/commands/secrets.d.ts +18 -0
- package/dist/commands/secrets.d.ts.map +1 -0
- package/dist/commands/secrets.js +702 -0
- package/dist/commands/secrets.js.map +1 -0
- package/dist/commands/skills.d.ts +64 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +430 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/test.d.ts +5 -0
- package/dist/commands/test.d.ts.map +1 -0
- package/dist/commands/test.js +181 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/commands/tokens.d.ts +3 -0
- package/dist/commands/tokens.d.ts.map +1 -0
- package/dist/commands/tokens.js +33 -0
- package/dist/commands/tokens.js.map +1 -0
- package/dist/commands/tools.d.ts +3 -0
- package/dist/commands/tools.d.ts.map +1 -0
- package/dist/commands/tools.js +162 -0
- package/dist/commands/tools.js.map +1 -0
- package/dist/commands/types.d.ts +54 -0
- package/dist/commands/types.d.ts.map +1 -0
- package/dist/commands/types.js +4 -0
- package/dist/commands/types.js.map +1 -0
- package/dist/commands/unwired.d.ts +22 -0
- package/dist/commands/unwired.d.ts.map +1 -0
- package/dist/commands/unwired.js +52 -0
- package/dist/commands/unwired.js.map +1 -0
- package/dist/commands/version.d.ts +8 -0
- package/dist/commands/version.d.ts.map +1 -0
- package/dist/commands/version.js +41 -0
- package/dist/commands/version.js.map +1 -0
- package/dist/config.d.ts +42 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +83 -0
- package/dist/config.js.map +1 -0
- package/dist/context.d.ts +162 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +45 -0
- package/dist/context.js.map +1 -0
- package/dist/deploy/defaults.d.ts +14 -0
- package/dist/deploy/defaults.d.ts.map +1 -0
- package/dist/deploy/defaults.js +37 -0
- package/dist/deploy/defaults.js.map +1 -0
- package/dist/deploy/envelope-loader.d.ts +24 -0
- package/dist/deploy/envelope-loader.d.ts.map +1 -0
- package/dist/deploy/envelope-loader.js +141 -0
- package/dist/deploy/envelope-loader.js.map +1 -0
- package/dist/deploy/post.d.ts +48 -0
- package/dist/deploy/post.d.ts.map +1 -0
- package/dist/deploy/post.js +210 -0
- package/dist/deploy/post.js.map +1 -0
- package/dist/deploy/response.d.ts +42 -0
- package/dist/deploy/response.d.ts.map +1 -0
- package/dist/deploy/response.js +128 -0
- package/dist/deploy/response.js.map +1 -0
- package/dist/deploy/runners.d.ts +218 -0
- package/dist/deploy/runners.d.ts.map +1 -0
- package/dist/deploy/runners.js +4 -0
- package/dist/deploy/runners.js.map +1 -0
- package/dist/dev/bundler.d.ts +10 -0
- package/dist/dev/bundler.d.ts.map +1 -0
- package/dist/dev/bundler.js +235 -0
- package/dist/dev/bundler.js.map +1 -0
- package/dist/dev/defaults.d.ts +140 -0
- package/dist/dev/defaults.d.ts.map +1 -0
- package/dist/dev/defaults.js +709 -0
- package/dist/dev/defaults.js.map +1 -0
- package/dist/dev/dev-only-imports.d.ts +15 -0
- package/dist/dev/dev-only-imports.d.ts.map +1 -0
- package/dist/dev/dev-only-imports.js +57 -0
- package/dist/dev/dev-only-imports.js.map +1 -0
- package/dist/dev/docker-compose.dev.yml +68 -0
- package/dist/dev/index-child.d.ts +2 -0
- package/dist/dev/index-child.d.ts.map +1 -0
- package/dist/dev/index-child.js +53 -0
- package/dist/dev/index-child.js.map +1 -0
- package/dist/dev/pack-code.d.ts +36 -0
- package/dist/dev/pack-code.d.ts.map +1 -0
- package/dist/dev/pack-code.js +129 -0
- package/dist/dev/pack-code.js.map +1 -0
- package/dist/dev/pack-env.d.ts +13 -0
- package/dist/dev/pack-env.d.ts.map +1 -0
- package/dist/dev/pack-env.js +36 -0
- package/dist/dev/pack-env.js.map +1 -0
- package/dist/dev/pack-service.d.ts +40 -0
- package/dist/dev/pack-service.d.ts.map +1 -0
- package/dist/dev/pack-service.js +189 -0
- package/dist/dev/pack-service.js.map +1 -0
- package/dist/dev/paths.d.ts +22 -0
- package/dist/dev/paths.d.ts.map +1 -0
- package/dist/dev/paths.js +35 -0
- package/dist/dev/paths.js.map +1 -0
- package/dist/dev/postgres-container.d.ts +77 -0
- package/dist/dev/postgres-container.d.ts.map +1 -0
- package/dist/dev/postgres-container.js +346 -0
- package/dist/dev/postgres-container.js.map +1 -0
- package/dist/dev/python-builder.d.ts +16 -0
- package/dist/dev/python-builder.d.ts.map +1 -0
- package/dist/dev/python-builder.js +122 -0
- package/dist/dev/python-builder.js.map +1 -0
- package/dist/dev/register.d.ts +71 -0
- package/dist/dev/register.d.ts.map +1 -0
- package/dist/dev/register.js +54 -0
- package/dist/dev/register.js.map +1 -0
- package/dist/dev/runners.d.ts +312 -0
- package/dist/dev/runners.d.ts.map +1 -0
- package/dist/dev/runners.js +4 -0
- package/dist/dev/runners.js.map +1 -0
- package/dist/dev/runtime-container.d.ts +71 -0
- package/dist/dev/runtime-container.d.ts.map +1 -0
- package/dist/dev/runtime-container.js +173 -0
- package/dist/dev/runtime-container.js.map +1 -0
- package/dist/dev/runtime-env.d.ts +62 -0
- package/dist/dev/runtime-env.d.ts.map +1 -0
- package/dist/dev/runtime-env.js +100 -0
- package/dist/dev/runtime-env.js.map +1 -0
- package/dist/dev/runtime-image.d.ts +26 -0
- package/dist/dev/runtime-image.d.ts.map +1 -0
- package/dist/dev/runtime-image.js +44 -0
- package/dist/dev/runtime-image.js.map +1 -0
- package/dist/dev/runtime-registry.d.ts +73 -0
- package/dist/dev/runtime-registry.d.ts.map +1 -0
- package/dist/dev/runtime-registry.js +111 -0
- package/dist/dev/runtime-registry.js.map +1 -0
- package/dist/env/defaults.d.ts +3 -0
- package/dist/env/defaults.d.ts.map +1 -0
- package/dist/env/defaults.js +22 -0
- package/dist/env/defaults.js.map +1 -0
- package/dist/env/pack-env-plan.d.ts +70 -0
- package/dist/env/pack-env-plan.d.ts.map +1 -0
- package/dist/env/pack-env-plan.js +236 -0
- package/dist/env/pack-env-plan.js.map +1 -0
- package/dist/env/parser.d.ts +9 -0
- package/dist/env/parser.d.ts.map +1 -0
- package/dist/env/parser.js +11 -0
- package/dist/env/parser.js.map +1 -0
- package/dist/env/project-env.d.ts +34 -0
- package/dist/env/project-env.d.ts.map +1 -0
- package/dist/env/project-env.js +45 -0
- package/dist/env/project-env.js.map +1 -0
- package/dist/env/runners.d.ts +22 -0
- package/dist/env/runners.d.ts.map +1 -0
- package/dist/env/runners.js +4 -0
- package/dist/env/runners.js.map +1 -0
- package/dist/env/writer.d.ts +7 -0
- package/dist/env/writer.d.ts.map +1 -0
- package/dist/env/writer.js +9 -0
- package/dist/env/writer.js.map +1 -0
- package/dist/errors.d.ts +31 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +111 -0
- package/dist/errors.js.map +1 -0
- package/dist/help.d.ts +5 -0
- package/dist/help.d.ts.map +1 -0
- package/dist/help.js +61 -0
- package/dist/help.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/init/augment-scaffolder.d.ts +86 -0
- package/dist/init/augment-scaffolder.d.ts.map +1 -0
- package/dist/init/augment-scaffolder.js +538 -0
- package/dist/init/augment-scaffolder.js.map +1 -0
- package/dist/init/dependency-specs.d.ts +58 -0
- package/dist/init/dependency-specs.d.ts.map +1 -0
- package/dist/init/dependency-specs.js +153 -0
- package/dist/init/dependency-specs.js.map +1 -0
- package/dist/init/gitignore-patcher.d.ts +23 -0
- package/dist/init/gitignore-patcher.d.ts.map +1 -0
- package/dist/init/gitignore-patcher.js +103 -0
- package/dist/init/gitignore-patcher.js.map +1 -0
- package/dist/init/mode-detect.d.ts +34 -0
- package/dist/init/mode-detect.d.ts.map +1 -0
- package/dist/init/mode-detect.js +115 -0
- package/dist/init/mode-detect.js.map +1 -0
- package/dist/init/package-json-patcher.d.ts +36 -0
- package/dist/init/package-json-patcher.d.ts.map +1 -0
- package/dist/init/package-json-patcher.js +128 -0
- package/dist/init/package-json-patcher.js.map +1 -0
- package/dist/init/pnpm-workspace-patcher.d.ts +55 -0
- package/dist/init/pnpm-workspace-patcher.d.ts.map +1 -0
- package/dist/init/pnpm-workspace-patcher.js +248 -0
- package/dist/init/pnpm-workspace-patcher.js.map +1 -0
- package/dist/init/pyproject-patcher.d.ts +56 -0
- package/dist/init/pyproject-patcher.d.ts.map +1 -0
- package/dist/init/pyproject-patcher.js +324 -0
- package/dist/init/pyproject-patcher.js.map +1 -0
- package/dist/init/python-augment.d.ts +22 -0
- package/dist/init/python-augment.d.ts.map +1 -0
- package/dist/init/python-augment.js +300 -0
- package/dist/init/python-augment.js.map +1 -0
- package/dist/init/template-files.d.ts +18 -0
- package/dist/init/template-files.d.ts.map +1 -0
- package/dist/init/template-files.js +53 -0
- package/dist/init/template-files.js.map +1 -0
- package/dist/key/defaults.d.ts +3 -0
- package/dist/key/defaults.d.ts.map +1 -0
- package/dist/key/defaults.js +60 -0
- package/dist/key/defaults.js.map +1 -0
- package/dist/key/fingerprint.d.ts +6 -0
- package/dist/key/fingerprint.d.ts.map +1 -0
- package/dist/key/fingerprint.js +25 -0
- package/dist/key/fingerprint.js.map +1 -0
- package/dist/key/paths.d.ts +30 -0
- package/dist/key/paths.d.ts.map +1 -0
- package/dist/key/paths.js +51 -0
- package/dist/key/paths.js.map +1 -0
- package/dist/key/runners.d.ts +60 -0
- package/dist/key/runners.d.ts.map +1 -0
- package/dist/key/runners.js +4 -0
- package/dist/key/runners.js.map +1 -0
- package/dist/main.d.ts +113 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +199 -0
- package/dist/main.js.map +1 -0
- package/dist/mcp/launcher.d.ts +143 -0
- package/dist/mcp/launcher.d.ts.map +1 -0
- package/dist/mcp/launcher.js +393 -0
- package/dist/mcp/launcher.js.map +1 -0
- package/dist/mcp/preset-loader.d.ts +29 -0
- package/dist/mcp/preset-loader.d.ts.map +1 -0
- package/dist/mcp/preset-loader.js +217 -0
- package/dist/mcp/preset-loader.js.map +1 -0
- package/dist/mcp/preset-types.d.ts +71 -0
- package/dist/mcp/preset-types.d.ts.map +1 -0
- package/dist/mcp/preset-types.js +4 -0
- package/dist/mcp/preset-types.js.map +1 -0
- package/dist/mcp/presets/README.md +68 -0
- package/dist/mcp/presets/postgres.json +15 -0
- package/dist/output.d.ts +26 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +46 -0
- package/dist/output.js.map +1 -0
- package/dist/pack-config.d.ts +37 -0
- package/dist/pack-config.d.ts.map +1 -0
- package/dist/pack-config.js +65 -0
- package/dist/pack-config.js.map +1 -0
- package/dist/package-manager.d.ts +33 -0
- package/dist/package-manager.d.ts.map +1 -0
- package/dist/package-manager.js +129 -0
- package/dist/package-manager.js.map +1 -0
- package/dist/parse.d.ts +88 -0
- package/dist/parse.d.ts.map +1 -0
- package/dist/parse.js +100 -0
- package/dist/parse.js.map +1 -0
- package/dist/providers/preset-loader.d.ts +47 -0
- package/dist/providers/preset-loader.d.ts.map +1 -0
- package/dist/providers/preset-loader.js +107 -0
- package/dist/providers/preset-loader.js.map +1 -0
- package/dist/providers/presets/anthropic.json +47 -0
- package/dist/providers/presets/gemini.json +40 -0
- package/dist/reference.d.ts +28 -0
- package/dist/reference.d.ts.map +1 -0
- package/dist/reference.js +52 -0
- package/dist/reference.js.map +1 -0
- package/dist/sdk-package.d.ts +9 -0
- package/dist/sdk-package.d.ts.map +1 -0
- package/dist/sdk-package.js +20 -0
- package/dist/sdk-package.js.map +1 -0
- package/dist/sdk-skills/kindgi-authoring-agents/SKILL.md +252 -0
- package/dist/sdk-skills/kindgi-authoring-flows/SKILL.md +302 -0
- package/dist/sdk-skills/kindgi-authoring-guardrails/SKILL.md +297 -0
- package/dist/sdk-skills/kindgi-authoring-mcp-servers/SKILL.md +289 -0
- package/dist/sdk-skills/kindgi-authoring-providers/SKILL.md +705 -0
- package/dist/sdk-skills/kindgi-authoring-tools/SKILL.md +298 -0
- package/dist/sdk-skills/kindgi-framework-feedback/SKILL.md +211 -0
- package/dist/sdk-skills/kindgi-getting-started/SKILL.md +189 -0
- package/dist/sdk-skills/kindgi-python-authoring-agents/SKILL.md +205 -0
- package/dist/sdk-skills/kindgi-python-authoring-flows/SKILL.md +325 -0
- package/dist/sdk-skills/kindgi-python-authoring-guardrails/SKILL.md +176 -0
- package/dist/sdk-skills/kindgi-python-authoring-tools/SKILL.md +305 -0
- package/dist/sdk-skills/kindgi-python-getting-started/SKILL.md +242 -0
- package/dist/stop-signal.d.ts +15 -0
- package/dist/stop-signal.d.ts.map +1 -0
- package/dist/stop-signal.js +16 -0
- package/dist/stop-signal.js.map +1 -0
- package/dist/templates/minimal/.nvmrc +1 -0
- package/dist/templates/minimal/AGENTS.md +23 -0
- package/dist/templates/minimal/README.md.tmpl +69 -0
- package/dist/templates/minimal/agents/.gitkeep +0 -0
- package/dist/templates/minimal/flows/.gitkeep +0 -0
- package/dist/templates/minimal/gitignore +8 -0
- package/dist/templates/minimal/guardrails/.gitkeep +0 -0
- package/dist/templates/minimal/kindgi.config.ts.tmpl +44 -0
- package/dist/templates/minimal/package.json.tmpl +25 -0
- package/dist/templates/minimal/pnpm-workspace.yaml +8 -0
- package/dist/templates/minimal/tools/.gitkeep +0 -0
- package/dist/templates/minimal/tsconfig.json.tmpl +27 -0
- package/dist/templates/minimal/vitest.config.ts.tmpl +14 -0
- package/dist/templates/python/AGENTS.md +30 -0
- package/dist/templates/python/README.md.tmpl +56 -0
- package/dist/templates/python/agents/echo_agent.py.tmpl +23 -0
- package/dist/templates/python/flows/echo_flow.py.tmpl +17 -0
- package/dist/templates/python/gitignore +9 -0
- package/dist/templates/python/guardrails/response_not_empty.py.tmpl +27 -0
- package/dist/templates/python/pyproject.toml.tmpl +42 -0
- package/dist/templates/python/tests/test_tools.py.tmpl +22 -0
- package/dist/templates/python/tools/echo.py.tmpl +27 -0
- package/dist/templates/python/tools/greet.py.tmpl +20 -0
- package/dist/templates/sample/.nvmrc +1 -0
- package/dist/templates/sample/AGENTS.md +23 -0
- package/dist/templates/sample/README.md.tmpl +85 -0
- package/dist/templates/sample/agents/echo-agent/index.ts.tmpl +34 -0
- package/dist/templates/sample/flows/echo-flow/index.ts.tmpl +59 -0
- package/dist/templates/sample/gitignore +8 -0
- package/dist/templates/sample/guardrails/response-not-empty/index.ts.tmpl +58 -0
- package/dist/templates/sample/kindgi.config.ts.tmpl +41 -0
- package/dist/templates/sample/package.json.tmpl +25 -0
- package/dist/templates/sample/pnpm-workspace.yaml +8 -0
- package/dist/templates/sample/tools/echo/index.test.ts.tmpl +31 -0
- package/dist/templates/sample/tools/echo/index.ts.tmpl +37 -0
- package/dist/templates/sample/tools/fetch-httpbin/index.ts.tmpl +60 -0
- package/dist/templates/sample/tools/greet/index.ts.tmpl +35 -0
- package/dist/templates/sample/tsconfig.json.tmpl +27 -0
- package/dist/templates/sample/vitest.config.ts.tmpl +14 -0
- package/dist/terminal-input.d.ts +17 -0
- package/dist/terminal-input.d.ts.map +1 -0
- package/dist/terminal-input.js +88 -0
- package/dist/terminal-input.js.map +1 -0
- package/dist/test/defaults.d.ts +3 -0
- package/dist/test/defaults.d.ts.map +1 -0
- package/dist/test/defaults.js +104 -0
- package/dist/test/defaults.js.map +1 -0
- package/dist/test/runners.d.ts +60 -0
- package/dist/test/runners.d.ts.map +1 -0
- package/dist/test/runners.js +4 -0
- package/dist/test/runners.js.map +1 -0
- package/dist/version-info.d.ts +9 -0
- package/dist/version-info.d.ts.map +1 -0
- package/dist/version-info.js +27 -0
- package/dist/version-info.js.map +1 -0
- package/dist/write-fully.d.ts +13 -0
- package/dist/write-fully.d.ts.map +1 -0
- package/dist/write-fully.js +17 -0
- package/dist/write-fully.js.map +1 -0
- package/package.json +63 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preset-loader.js","sourceRoot":"","sources":["../../src/mcp/preset-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for `kindgi mcp` presets — the curated per-server config bundles
|
|
3
|
+
* that back `kindgi mcp add <kind>`.
|
|
4
|
+
*
|
|
5
|
+
* A preset is a JSON file under `packages/cli/src/mcp/presets/*.json`.
|
|
6
|
+
* At `kindgi mcp add` time, the CLI resolves the preset by `kind`,
|
|
7
|
+
* substitutes `--secret=<name>` into the `$SECRET` placeholder of the
|
|
8
|
+
* envMap template, and writes the fully-resolved launcher argv into
|
|
9
|
+
* `.mcp.json` at the pack root.
|
|
10
|
+
*
|
|
11
|
+
* See `packages/cli/src/mcp/presets/README.md` for the authoring guide.
|
|
12
|
+
*/
|
|
13
|
+
import type { HostRemap, Runtime } from './launcher.js';
|
|
14
|
+
export interface Preset {
|
|
15
|
+
/** Short label, matches the JSON filename stem. Used by `kindgi mcp add <kind>`. */
|
|
16
|
+
readonly kind: string;
|
|
17
|
+
/** One-line human summary shown by `kindgi mcp presets`. */
|
|
18
|
+
readonly description?: string;
|
|
19
|
+
/** Which spawn strategy the launcher uses. */
|
|
20
|
+
readonly runtime: Runtime;
|
|
21
|
+
/** npm package (for `npx`) or Docker image (for `docker`). */
|
|
22
|
+
readonly package: string;
|
|
23
|
+
/**
|
|
24
|
+
* How to route the caller's `--secret=<name>` into the child's env.
|
|
25
|
+
* Every entry has `from: "$SECRET"` today — the placeholder that
|
|
26
|
+
* substitutes with the user-provided secret name at `mcp add` time.
|
|
27
|
+
* Future template forms (e.g. per-secret refs, literal values) can
|
|
28
|
+
* extend this shape without breaking existing presets.
|
|
29
|
+
*/
|
|
30
|
+
readonly envMap: readonly PresetEnvMapEntry[];
|
|
31
|
+
/** Passthrough args appended after `--` when spawning the child. */
|
|
32
|
+
readonly defaultArgs: readonly string[];
|
|
33
|
+
/** Docker-Desktop-on-Mac localhost fixup — see launcher's applyHostRemap. */
|
|
34
|
+
readonly hostRemap?: HostRemap;
|
|
35
|
+
/** Per-server audit metadata (who reviewed the server, and when). */
|
|
36
|
+
readonly audit: PresetAudit;
|
|
37
|
+
}
|
|
38
|
+
export interface PresetEnvMapEntry {
|
|
39
|
+
/** The env-var name in the CHILD process. */
|
|
40
|
+
readonly child: string;
|
|
41
|
+
/**
|
|
42
|
+
* Template that resolves the value. Only `"$SECRET"` today — expands
|
|
43
|
+
* to the caller's `--secret=<name>`.
|
|
44
|
+
*/
|
|
45
|
+
readonly from: string;
|
|
46
|
+
}
|
|
47
|
+
export interface PresetAudit {
|
|
48
|
+
/**
|
|
49
|
+
* Has this preset's server version been verified NOT to echo the
|
|
50
|
+
* resolved secret in its error tool results / debug logs?
|
|
51
|
+
* - `verified-safe` — a real inspection succeeded at `version`
|
|
52
|
+
* - `pending` — no inspection yet; assume unsafe
|
|
53
|
+
* - `known-issue` — inspection found a leak; details in `notes`
|
|
54
|
+
*/
|
|
55
|
+
readonly urlLeakInErrors: 'verified-safe' | 'pending' | 'known-issue';
|
|
56
|
+
/** ISO date of the last audit. Null when `urlLeakInErrors === 'pending'`. */
|
|
57
|
+
readonly reviewedAt: string | null;
|
|
58
|
+
/** npm / Docker tag of the version audited. Null when `pending`. */
|
|
59
|
+
readonly version: string | null;
|
|
60
|
+
/** Free-form notes — quirks, links to related issues, etc. */
|
|
61
|
+
readonly notes?: string;
|
|
62
|
+
}
|
|
63
|
+
/** Slimmer shape for `kindgi mcp presets` list output. */
|
|
64
|
+
export interface PresetSummary {
|
|
65
|
+
readonly kind: string;
|
|
66
|
+
readonly runtime: Runtime;
|
|
67
|
+
readonly package: string;
|
|
68
|
+
readonly description?: string;
|
|
69
|
+
readonly audit: PresetAudit;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=preset-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preset-types.d.ts","sourceRoot":"","sources":["../../src/mcp/preset-types.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExD,MAAM,WAAW,MAAM;IACrB,oFAAoF;IACpF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,8CAA8C;IAC9C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC9C,oEAAoE;IACpE,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,6CAA6C;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,EAAE,eAAe,GAAG,SAAS,GAAG,aAAa,CAAC;IACtE,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,0DAA0D;AAC1D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preset-types.js","sourceRoot":"","sources":["../../src/mcp/preset-types.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# `kindgi mcp` presets — authoring guide
|
|
2
|
+
|
|
3
|
+
Each `*.json` file in this directory is one MCP-server preset consumed
|
|
4
|
+
by `kindgi mcp add <kind>`. The filename stem is the `kind` — how users
|
|
5
|
+
reach the preset from the CLI.
|
|
6
|
+
|
|
7
|
+
## Schema
|
|
8
|
+
|
|
9
|
+
See `packages/cli/src/mcp/preset-types.ts` for the authoritative TypeScript
|
|
10
|
+
shape. In brief:
|
|
11
|
+
|
|
12
|
+
```json
|
|
13
|
+
{
|
|
14
|
+
"kind": "postgres", // must match filename stem
|
|
15
|
+
"description": "one-line summary", // shown by `kindgi mcp presets`
|
|
16
|
+
"runtime": "npx" | "docker", // how the launcher spawns it
|
|
17
|
+
"package": "<npm-name-or-docker-image>",
|
|
18
|
+
"envMap": [
|
|
19
|
+
{ "child": "DATABASE_URI", "from": "$SECRET" } // "$SECRET" = user's --secret=<name>
|
|
20
|
+
],
|
|
21
|
+
"defaultArgs": ["--access-mode=restricted"], // passthrough args after `--`
|
|
22
|
+
"hostRemap": "docker-desktop", // (optional) localhost fixup for Docker on Mac
|
|
23
|
+
"audit": {
|
|
24
|
+
"urlLeakInErrors": "pending", // "verified-safe" | "pending" | "known-issue"
|
|
25
|
+
"reviewedAt": null, // ISO date once audited
|
|
26
|
+
"version": null, // npm/docker tag audited
|
|
27
|
+
"notes": "..." // freeform
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Adding a preset
|
|
33
|
+
|
|
34
|
+
1. Create `<kind>.json` (filename == the `kind` field).
|
|
35
|
+
2. Fill in the fields above. Start with `audit.urlLeakInErrors: "pending"` —
|
|
36
|
+
never claim `"verified-safe"` without a real inspection.
|
|
37
|
+
3. If the underlying MCP server is Docker + you're targeting local dev on
|
|
38
|
+
Mac / Windows, set `"hostRemap": "docker-desktop"` so the launcher
|
|
39
|
+
rewrites `@localhost` / `@127.0.0.1` in resolved secret values to
|
|
40
|
+
`@host.docker.internal`.
|
|
41
|
+
4. Run `pnpm --filter @kindgi/cli test preset` to confirm the loader
|
|
42
|
+
accepts your JSON.
|
|
43
|
+
|
|
44
|
+
## Audit obligations
|
|
45
|
+
|
|
46
|
+
Every preset carries an `audit` block. Before flipping
|
|
47
|
+
`urlLeakInErrors` to `"verified-safe"`:
|
|
48
|
+
|
|
49
|
+
- **Read the server's source** for every place it constructs an error
|
|
50
|
+
message, log line, or debug-mode dump. Confirm the secret env var
|
|
51
|
+
never appears.
|
|
52
|
+
- **Poke the server** with malformed queries (`docker run` it locally,
|
|
53
|
+
send garbage over stdio) and grep stdout/stderr for the URL/token
|
|
54
|
+
substring.
|
|
55
|
+
- Record the version (`npm ls <pkg>` or `docker image inspect`) in
|
|
56
|
+
`audit.version` and today's ISO date in `audit.reviewedAt`.
|
|
57
|
+
|
|
58
|
+
A `kindgi mcp verify` command that automates this check is planned.
|
|
59
|
+
|
|
60
|
+
## Only `$SECRET` is a supported template today
|
|
61
|
+
|
|
62
|
+
`envMap[].from` accepts only the literal string `"$SECRET"`, which
|
|
63
|
+
substitutes with the `--secret=<name>` the user passes to
|
|
64
|
+
`kindgi mcp add`. This narrows the surface area intentionally — most
|
|
65
|
+
MCP servers want exactly one secret in one env var. When we see a
|
|
66
|
+
consumer needing multiple named secrets or per-env-var overrides,
|
|
67
|
+
we'll widen the template DSL (candidate shapes:
|
|
68
|
+
`${SECRET:OTHER_NAME}`, `${LITERAL:some-value}`).
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kind": "postgres",
|
|
3
|
+
"description": "PostgreSQL via crystaldba/postgres-mcp (Docker) — active fork with index tuning, EXPLAIN plans, health checks, and safe SQL execution. Defaults to read-only mode.",
|
|
4
|
+
"runtime": "docker",
|
|
5
|
+
"package": "crystaldba/postgres-mcp",
|
|
6
|
+
"envMap": [{ "child": "DATABASE_URI", "from": "$SECRET" }],
|
|
7
|
+
"defaultArgs": ["--access-mode=restricted"],
|
|
8
|
+
"hostRemap": "docker-desktop",
|
|
9
|
+
"audit": {
|
|
10
|
+
"urlLeakInErrors": "pending",
|
|
11
|
+
"reviewedAt": null,
|
|
12
|
+
"version": null,
|
|
13
|
+
"notes": "First audit pending — verify error paths don't echo DATABASE_URI."
|
|
14
|
+
}
|
|
15
|
+
}
|
package/dist/output.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Output shapes used by every command handler. The dispatcher picks a
|
|
3
|
+
* formatter based on the caller's `--json` / `--table` / `--raw` /
|
|
4
|
+
* `--quiet` flags.
|
|
5
|
+
*/
|
|
6
|
+
export type OutputFormat = 'json' | 'table' | 'raw' | 'quiet';
|
|
7
|
+
export interface Column<T> {
|
|
8
|
+
readonly header: string;
|
|
9
|
+
readonly get: (row: T) => string;
|
|
10
|
+
}
|
|
11
|
+
export interface Rendered {
|
|
12
|
+
readonly stdout: string;
|
|
13
|
+
readonly stderr: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function renderJson(value: unknown, format: OutputFormat): Rendered;
|
|
16
|
+
export declare function renderTable<T>(rows: readonly T[], columns: readonly Column<T>[]): Rendered;
|
|
17
|
+
/**
|
|
18
|
+
* Render a value, choosing between JSON and table representations based on
|
|
19
|
+
* the requested format. If `--table` is requested but no columns are given
|
|
20
|
+
* (e.g. a get-by-id result), fall back to pretty JSON.
|
|
21
|
+
*/
|
|
22
|
+
export declare function renderResult<T>(value: T, format: OutputFormat, options?: {
|
|
23
|
+
readonly rows?: readonly unknown[];
|
|
24
|
+
readonly columns?: readonly Column<unknown>[];
|
|
25
|
+
}): Rendered;
|
|
26
|
+
//# sourceMappingURL=output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AAEH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC;AAE9D,MAAM,WAAW,MAAM,CAAC,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,GAAG,QAAQ,CAIzE;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAuB1F;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE;IACP,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;CAC1C,GACL,QAAQ,CAKV"}
|
package/dist/output.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
export function renderJson(value, format) {
|
|
4
|
+
if (format === 'quiet')
|
|
5
|
+
return { stdout: '', stderr: '' };
|
|
6
|
+
if (format === 'raw')
|
|
7
|
+
return { stdout: `${JSON.stringify(value)}\n`, stderr: '' };
|
|
8
|
+
return { stdout: `${JSON.stringify(value, null, 2)}\n`, stderr: '' };
|
|
9
|
+
}
|
|
10
|
+
export function renderTable(rows, columns) {
|
|
11
|
+
if (rows.length === 0)
|
|
12
|
+
return { stdout: '(no rows)\n', stderr: '' };
|
|
13
|
+
const headers = columns.map((c) => c.header);
|
|
14
|
+
const cells = rows.map((row) => columns.map((c) => c.get(row)));
|
|
15
|
+
const widths = headers.map((h, i) => {
|
|
16
|
+
let w = h.length;
|
|
17
|
+
for (const row of cells) {
|
|
18
|
+
const v = row[i] ?? '';
|
|
19
|
+
if (v.length > w)
|
|
20
|
+
w = v.length;
|
|
21
|
+
}
|
|
22
|
+
return w;
|
|
23
|
+
});
|
|
24
|
+
const line = (values) => values
|
|
25
|
+
.map((v, i) => v.padEnd(widths[i] ?? 0, ' '))
|
|
26
|
+
.join(' ')
|
|
27
|
+
.trimEnd();
|
|
28
|
+
const sep = widths
|
|
29
|
+
.map((w) => '─'.repeat(w))
|
|
30
|
+
.join(' ')
|
|
31
|
+
.trimEnd();
|
|
32
|
+
const body = cells.map(line).join('\n');
|
|
33
|
+
return { stdout: `${line(headers)}\n${sep}\n${body}\n`, stderr: '' };
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Render a value, choosing between JSON and table representations based on
|
|
37
|
+
* the requested format. If `--table` is requested but no columns are given
|
|
38
|
+
* (e.g. a get-by-id result), fall back to pretty JSON.
|
|
39
|
+
*/
|
|
40
|
+
export function renderResult(value, format, options = {}) {
|
|
41
|
+
if (format === 'table' && options.rows && options.columns) {
|
|
42
|
+
return renderTable(options.rows, options.columns);
|
|
43
|
+
}
|
|
44
|
+
return renderJson(value, format);
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAoBjC,MAAM,UAAU,UAAU,CAAC,KAAc,EAAE,MAAoB;IAC7D,IAAI,MAAM,KAAK,OAAO;QAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC1D,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAClF,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,WAAW,CAAI,IAAkB,EAAE,OAA6B;IAC9E,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACpE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAClC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;QACjB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;gBAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;QACjC,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,CAAC,MAAyB,EAAU,EAAE,CACjD,MAAM;SACH,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;SAC5C,IAAI,CAAC,IAAI,CAAC;SACV,OAAO,EAAE,CAAC;IACf,MAAM,GAAG,GAAG,MAAM;SACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACzB,IAAI,CAAC,IAAI,CAAC;SACV,OAAO,EAAE,CAAC;IACb,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,IAAI,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACvE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAQ,EACR,MAAoB,EACpB,UAGI,EAAE;IAEN,IAAI,MAAM,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAC1D,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { CommandContext } from './context.js';
|
|
2
|
+
export type PackConfigRecord = {
|
|
3
|
+
readonly [k: string]: unknown;
|
|
4
|
+
};
|
|
5
|
+
export type PackConfigOutcome = {
|
|
6
|
+
readonly kind: 'ok';
|
|
7
|
+
readonly config: PackConfigRecord;
|
|
8
|
+
} | {
|
|
9
|
+
readonly kind: 'missing';
|
|
10
|
+
readonly message: string;
|
|
11
|
+
} | {
|
|
12
|
+
readonly kind: 'invalid';
|
|
13
|
+
readonly message: string;
|
|
14
|
+
};
|
|
15
|
+
export declare function loadPackConfig(ctx: Pick<CommandContext, 'buildConfigLoader'>, packDir: string): Promise<PackConfigOutcome>;
|
|
16
|
+
export type DevEnvFilesOutcome = {
|
|
17
|
+
readonly kind: 'ok';
|
|
18
|
+
readonly files: readonly string[] | undefined;
|
|
19
|
+
} | {
|
|
20
|
+
readonly kind: 'invalid';
|
|
21
|
+
readonly message: string;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* `dev.envFiles` — the env files `kindgi dev` reads for the `local`
|
|
25
|
+
* environment, lowest precedence first, relative to the pack root.
|
|
26
|
+
* `undefined` when unset (the default, `.env` then `.env.local`,
|
|
27
|
+
* applies).
|
|
28
|
+
*
|
|
29
|
+
* ```ts
|
|
30
|
+
* export default {
|
|
31
|
+
* pack: { id: 'acme.app', version: '1.0.0' },
|
|
32
|
+
* dev: { envFiles: ['.env', '.env.development', '.env.local'] },
|
|
33
|
+
* };
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare function devEnvFiles(config: PackConfigRecord): DevEnvFilesOutcome;
|
|
37
|
+
//# sourceMappingURL=pack-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pack-config.d.ts","sourceRoot":"","sources":["../src/pack-config.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,MAAM,gBAAgB,GAAG;IAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAEjE,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,GAC1D;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,wBAAsB,cAAc,CAClC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,mBAAmB,CAAC,EAC9C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,CAAC,CAa5B;AAED,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;CAAE,GACtE;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,kBAAkB,CAoBxE"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
/**
|
|
4
|
+
* The one way CLI commands load a pack's `kindgi.config.*`.
|
|
5
|
+
*
|
|
6
|
+
* Production delegates to `@kindgi/handler-runtime`'s
|
|
7
|
+
* `loadKindgiConfig` — the same loader the indexer uses, so `build`,
|
|
8
|
+
* `deploy`, `env`, `dev` and `mcp` agree with `kindgi-index` on lookup
|
|
9
|
+
* order, validation and cache-busting. Tests inject
|
|
10
|
+
* `ctx.buildConfigLoader` to hand in an in-memory config.
|
|
11
|
+
*
|
|
12
|
+
* `missing` and `invalid` are distinct so callers can treat "no config
|
|
13
|
+
* here" as non-fatal while still surfacing a broken config's cause.
|
|
14
|
+
*/
|
|
15
|
+
import { loadKindgiConfig } from '@kindgi/handler-runtime';
|
|
16
|
+
export async function loadPackConfig(ctx, packDir) {
|
|
17
|
+
if (ctx.buildConfigLoader !== undefined) {
|
|
18
|
+
try {
|
|
19
|
+
return { kind: 'ok', config: await ctx.buildConfigLoader(packDir) };
|
|
20
|
+
}
|
|
21
|
+
catch (err) {
|
|
22
|
+
return { kind: 'invalid', message: err.message };
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const result = await loadKindgiConfig(packDir);
|
|
26
|
+
if (result.kind === 'ok')
|
|
27
|
+
return { kind: 'ok', config: result.value };
|
|
28
|
+
return result.error.code === 'config-not-found'
|
|
29
|
+
? { kind: 'missing', message: result.error.message }
|
|
30
|
+
: { kind: 'invalid', message: result.error.message };
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* `dev.envFiles` — the env files `kindgi dev` reads for the `local`
|
|
34
|
+
* environment, lowest precedence first, relative to the pack root.
|
|
35
|
+
* `undefined` when unset (the default, `.env` then `.env.local`,
|
|
36
|
+
* applies).
|
|
37
|
+
*
|
|
38
|
+
* ```ts
|
|
39
|
+
* export default {
|
|
40
|
+
* pack: { id: 'acme.app', version: '1.0.0' },
|
|
41
|
+
* dev: { envFiles: ['.env', '.env.development', '.env.local'] },
|
|
42
|
+
* };
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export function devEnvFiles(config) {
|
|
46
|
+
const dev = config.dev;
|
|
47
|
+
if (dev === undefined)
|
|
48
|
+
return { kind: 'ok', files: undefined };
|
|
49
|
+
if (dev === null || typeof dev !== 'object' || Array.isArray(dev)) {
|
|
50
|
+
return { kind: 'invalid', message: '`dev` in kindgi.config.ts must be an object.' };
|
|
51
|
+
}
|
|
52
|
+
const files = dev.envFiles;
|
|
53
|
+
if (files === undefined)
|
|
54
|
+
return { kind: 'ok', files: undefined };
|
|
55
|
+
if (!Array.isArray(files) ||
|
|
56
|
+
files.length === 0 ||
|
|
57
|
+
!files.every((f) => typeof f === 'string' && f !== '')) {
|
|
58
|
+
return {
|
|
59
|
+
kind: 'invalid',
|
|
60
|
+
message: '`dev.envFiles` in kindgi.config.ts must be a non-empty list of file paths, lowest precedence first (e.g. [".env", ".env.local"]).',
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
return { kind: 'ok', files };
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=pack-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pack-config.js","sourceRoot":"","sources":["../src/pack-config.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAW3D,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAA8C,EAC9C,OAAe;IAEf,IAAI,GAAG,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;QACxC,IAAI,CAAC;YACH,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;QACtE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;QAC9D,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IACtE,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,kBAAkB;QAC7C,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;QACpD,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AACzD,CAAC;AAMD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,WAAW,CAAC,MAAwB;IAClD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACvB,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAC/D,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,8CAA8C,EAAE,CAAC;IACtF,CAAC;IACD,MAAM,KAAK,GAAI,GAA+B,CAAC,QAAQ,CAAC;IACxD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IACjE,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC,EACnE,CAAC;QACD,OAAO;YACL,IAAI,EAAE,SAAS;YACf,OAAO,EACL,mIAAmI;SACtI,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { PackLanguage } from '@kindgi/handler-runtime';
|
|
2
|
+
export type PackageManager = 'pnpm' | 'npm' | 'yarn' | 'bun';
|
|
3
|
+
/**
|
|
4
|
+
* How a pack runs its bins: through its package manager, or — a Python
|
|
5
|
+
* pack, which has no npm project to install the CLI into — from `PATH`.
|
|
6
|
+
*/
|
|
7
|
+
export type BinRunner = PackageManager | 'path';
|
|
8
|
+
export interface DetectIo {
|
|
9
|
+
readonly readFile: (path: string) => Promise<string | null>;
|
|
10
|
+
readonly exists: (path: string) => Promise<boolean>;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Walk up from `dir`; at each level the `packageManager` field of
|
|
14
|
+
* `package.json` wins, then a lockfile / workspace marker. A pack inside
|
|
15
|
+
* a monorepo therefore inherits the root's manager. `npm` when nothing
|
|
16
|
+
* says otherwise.
|
|
17
|
+
*/
|
|
18
|
+
export declare function detectPackageManager(dir: string, io?: DetectIo): Promise<PackageManager>;
|
|
19
|
+
/** The pack's `BinRunner`: `path` for a Python pack, else its package manager. */
|
|
20
|
+
export declare function detectBinRunner(dir: string, language: PackLanguage, io?: DetectIo): Promise<BinRunner>;
|
|
21
|
+
export declare function binCommand(runner: BinRunner, bin: string, args?: readonly string[]): {
|
|
22
|
+
readonly command: string;
|
|
23
|
+
readonly args: readonly string[];
|
|
24
|
+
};
|
|
25
|
+
/** `binCommand` as a line to show a person. */
|
|
26
|
+
export declare function binDisplay(runner: BinRunner, bin: string, args?: readonly string[]): string;
|
|
27
|
+
export declare function installCommand(pm: PackageManager): string;
|
|
28
|
+
/**
|
|
29
|
+
* Protocol for depending on a local directory by symlink. npm has no
|
|
30
|
+
* `link:`; its `file:` symlinks directories (npm ≥ 7).
|
|
31
|
+
*/
|
|
32
|
+
export declare function localLinkProtocol(pm: PackageManager): 'link:' | 'file:';
|
|
33
|
+
//# sourceMappingURL=package-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../src/package-manager.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAI5D,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;AAE7D;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,MAAM,CAAC;AAahD,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5D,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACrD;AAoBD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,EAAE,GAAE,QAAoB,GACvB,OAAO,CAAC,cAAc,CAAC,CAYzB;AAgBD,kFAAkF;AAClF,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,YAAY,EACtB,EAAE,GAAE,QAAoB,GACvB,OAAO,CAAC,SAAS,CAAC,CAEpB;AAaD,wBAAgB,UAAU,CACxB,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,SAAS,MAAM,EAAO,GAC3B;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAmBhE;AAED,+CAA+C;AAC/C,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,SAAS,MAAM,EAAO,GAAG,MAAM,CAG/F;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,CAEzD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,GAAG,OAAO,CAEvE"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
/**
|
|
4
|
+
* The package manager a project uses — so the CLI prints commands that
|
|
5
|
+
* work there, and writes launch commands (`.mcp.json`) that run the
|
|
6
|
+
* project's OWN `kindgi`: never a global install, never a registry
|
|
7
|
+
* download (`npx kindgi` without `--no` would fetch the unscoped `kindgi`
|
|
8
|
+
* package, which Kindgi does not own).
|
|
9
|
+
*/
|
|
10
|
+
import { readFile, stat } from 'node:fs/promises';
|
|
11
|
+
import { dirname, join } from 'node:path';
|
|
12
|
+
import { CLI_VERSION } from './version-info.js';
|
|
13
|
+
/** Lockfile / workspace marker → manager, checked in this order per directory. */
|
|
14
|
+
const MARKERS = [
|
|
15
|
+
['pnpm-lock.yaml', 'pnpm'],
|
|
16
|
+
['pnpm-workspace.yaml', 'pnpm'],
|
|
17
|
+
['yarn.lock', 'yarn'],
|
|
18
|
+
['bun.lock', 'bun'],
|
|
19
|
+
['bun.lockb', 'bun'],
|
|
20
|
+
['package-lock.json', 'npm'],
|
|
21
|
+
['npm-shrinkwrap.json', 'npm'],
|
|
22
|
+
];
|
|
23
|
+
const defaultIo = {
|
|
24
|
+
readFile: async (path) => {
|
|
25
|
+
try {
|
|
26
|
+
return await readFile(path, 'utf8');
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
exists: async (path) => {
|
|
33
|
+
try {
|
|
34
|
+
await stat(path);
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Walk up from `dir`; at each level the `packageManager` field of
|
|
44
|
+
* `package.json` wins, then a lockfile / workspace marker. A pack inside
|
|
45
|
+
* a monorepo therefore inherits the root's manager. `npm` when nothing
|
|
46
|
+
* says otherwise.
|
|
47
|
+
*/
|
|
48
|
+
export async function detectPackageManager(dir, io = defaultIo) {
|
|
49
|
+
let current = dir;
|
|
50
|
+
for (;;) {
|
|
51
|
+
const declared = parsePackageManagerField(await io.readFile(join(current, 'package.json')));
|
|
52
|
+
if (declared !== undefined)
|
|
53
|
+
return declared;
|
|
54
|
+
for (const [file, pm] of MARKERS) {
|
|
55
|
+
if (await io.exists(join(current, file)))
|
|
56
|
+
return pm;
|
|
57
|
+
}
|
|
58
|
+
const parent = dirname(current);
|
|
59
|
+
if (parent === current)
|
|
60
|
+
return 'npm';
|
|
61
|
+
current = parent;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function parsePackageManagerField(raw) {
|
|
65
|
+
if (raw === null)
|
|
66
|
+
return undefined;
|
|
67
|
+
try {
|
|
68
|
+
const field = JSON.parse(raw).packageManager;
|
|
69
|
+
if (typeof field !== 'string')
|
|
70
|
+
return undefined;
|
|
71
|
+
const name = field.split('@')[0];
|
|
72
|
+
return name === 'pnpm' || name === 'npm' || name === 'yarn' || name === 'bun'
|
|
73
|
+
? name
|
|
74
|
+
: undefined;
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/** The pack's `BinRunner`: `path` for a Python pack, else its package manager. */
|
|
81
|
+
export async function detectBinRunner(dir, language, io = defaultIo) {
|
|
82
|
+
return language === 'python' ? 'path' : await detectPackageManager(dir, io);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* How to run a project-local bin — resolves `node_modules/.bin` and
|
|
86
|
+
* refuses to download when the bin is missing. `path` runs the bin on
|
|
87
|
+
* `PATH` (a Python pack's globally installed CLI).
|
|
88
|
+
*/
|
|
89
|
+
/** `@kindgi/cli@<major.minor>` of the running CLI (`@kindgi/cli` when unknown). */
|
|
90
|
+
const PUBLISHED_CLI = (() => {
|
|
91
|
+
const minor = /^(\d+)\.(\d+)\./.exec(CLI_VERSION)?.slice(1, 3).join('.');
|
|
92
|
+
return minor === undefined ? '@kindgi/cli' : `@kindgi/cli@${minor}`;
|
|
93
|
+
})();
|
|
94
|
+
export function binCommand(runner, bin, args = []) {
|
|
95
|
+
switch (runner) {
|
|
96
|
+
case 'pnpm':
|
|
97
|
+
return { command: 'pnpm', args: ['exec', bin, ...args] };
|
|
98
|
+
case 'npm':
|
|
99
|
+
return { command: 'npx', args: ['--no', bin, ...args] };
|
|
100
|
+
case 'yarn':
|
|
101
|
+
return { command: 'yarn', args: [bin, ...args] };
|
|
102
|
+
case 'bun':
|
|
103
|
+
return { command: 'bun', args: ['run', bin, ...args] };
|
|
104
|
+
case 'path':
|
|
105
|
+
// No npm project to install the CLI into (a Python pack): the published
|
|
106
|
+
// CLI through npx, within this CLI's minor (as Python packs pin
|
|
107
|
+
// `kindgi>=0.1,<0.2`). `--yes`, so no install prompt stalls a person
|
|
108
|
+
// or a coding agent.
|
|
109
|
+
return bin === 'kindgi'
|
|
110
|
+
? { command: 'npx', args: ['--yes', PUBLISHED_CLI, ...args] }
|
|
111
|
+
: { command: bin, args: [...args] };
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/** `binCommand` as a line to show a person. */
|
|
115
|
+
export function binDisplay(runner, bin, args = []) {
|
|
116
|
+
const c = binCommand(runner, bin, args);
|
|
117
|
+
return [c.command, ...c.args].join(' ');
|
|
118
|
+
}
|
|
119
|
+
export function installCommand(pm) {
|
|
120
|
+
return `${pm} install`;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Protocol for depending on a local directory by symlink. npm has no
|
|
124
|
+
* `link:`; its `file:` symlinks directories (npm ≥ 7).
|
|
125
|
+
*/
|
|
126
|
+
export function localLinkProtocol(pm) {
|
|
127
|
+
return pm === 'npm' ? 'file:' : 'link:';
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=package-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../src/package-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/parse.d.ts
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import type { OutputFormat } from './output.js';
|
|
2
|
+
/**
|
|
3
|
+
* Global flags recognised on every command. Kept small on purpose —
|
|
4
|
+
* per-command flags are declared in each command's handler and merged
|
|
5
|
+
* on parse.
|
|
6
|
+
*/
|
|
7
|
+
export declare const GLOBAL_OPTION_SPEC: {
|
|
8
|
+
readonly url: {
|
|
9
|
+
readonly type: "string";
|
|
10
|
+
readonly description: "The Kindgi API's URL. Overrides `KINDGI_API_URL` and the config files.";
|
|
11
|
+
};
|
|
12
|
+
readonly token: {
|
|
13
|
+
readonly type: "string";
|
|
14
|
+
readonly description: "The API token. Overrides `KINDGI_API_TOKEN` and the config files.";
|
|
15
|
+
};
|
|
16
|
+
readonly verbose: {
|
|
17
|
+
readonly type: "boolean";
|
|
18
|
+
readonly short: "v";
|
|
19
|
+
readonly description: "Show more detail when a command fails.";
|
|
20
|
+
};
|
|
21
|
+
readonly help: {
|
|
22
|
+
readonly type: "boolean";
|
|
23
|
+
readonly short: "h";
|
|
24
|
+
readonly description: "Show help.";
|
|
25
|
+
};
|
|
26
|
+
readonly version: {
|
|
27
|
+
readonly type: "boolean";
|
|
28
|
+
readonly description: "Print the CLI's version.";
|
|
29
|
+
};
|
|
30
|
+
readonly json: {
|
|
31
|
+
readonly type: "boolean";
|
|
32
|
+
readonly description: "Output pretty-printed JSON (the default).";
|
|
33
|
+
};
|
|
34
|
+
readonly table: {
|
|
35
|
+
readonly type: "boolean";
|
|
36
|
+
readonly description: "Output a table, for commands that list.";
|
|
37
|
+
};
|
|
38
|
+
readonly raw: {
|
|
39
|
+
readonly type: "boolean";
|
|
40
|
+
readonly description: "Output compact, one-line JSON.";
|
|
41
|
+
};
|
|
42
|
+
readonly quiet: {
|
|
43
|
+
readonly type: "boolean";
|
|
44
|
+
readonly description: "Print nothing: the exit code alone reports the result.";
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
export interface GlobalFlags {
|
|
48
|
+
readonly url?: string;
|
|
49
|
+
readonly token?: string;
|
|
50
|
+
readonly verbose: boolean;
|
|
51
|
+
readonly help: boolean;
|
|
52
|
+
readonly version: boolean;
|
|
53
|
+
readonly format: OutputFormat;
|
|
54
|
+
/**
|
|
55
|
+
* The caller named the format (`--json`, `--table`, `--raw` or
|
|
56
|
+
* `--quiet`); `false` when `format` is the default. A command whose
|
|
57
|
+
* output is for people (`kindgi dev`) prints JSON only when asked.
|
|
58
|
+
*/
|
|
59
|
+
readonly formatRequested: boolean;
|
|
60
|
+
}
|
|
61
|
+
export interface CommandParse {
|
|
62
|
+
readonly globals: GlobalFlags;
|
|
63
|
+
readonly positionals: readonly string[];
|
|
64
|
+
readonly options: Readonly<Record<string, string | boolean | undefined>>;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Parse a token vector against a merged option spec (globals + the
|
|
68
|
+
* command's own options). `parseArgs` is used with `allowPositionals:
|
|
69
|
+
* true` and `strict: true`; unknown flags fail loudly.
|
|
70
|
+
*/
|
|
71
|
+
export declare function parseCommand(tokens: readonly string[], extraOptionSpec?: Readonly<Record<string, ParseArgsOption>>): CommandParse;
|
|
72
|
+
type ParseArgsOption = {
|
|
73
|
+
type: 'string';
|
|
74
|
+
multiple?: boolean;
|
|
75
|
+
short?: string;
|
|
76
|
+
default?: string;
|
|
77
|
+
/** See `commands/types.ts`. */
|
|
78
|
+
optionalValue?: boolean;
|
|
79
|
+
description?: string;
|
|
80
|
+
} | {
|
|
81
|
+
type: 'boolean';
|
|
82
|
+
multiple?: boolean;
|
|
83
|
+
short?: string;
|
|
84
|
+
default?: boolean;
|
|
85
|
+
description?: string;
|
|
86
|
+
};
|
|
87
|
+
export {};
|
|
88
|
+
//# sourceMappingURL=parse.d.ts.map
|