@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,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Injectable seams for `kindgi key`. Every filesystem side-effect
|
|
3
|
+
* and every crypto op flows through this shape so tests substitute
|
|
4
|
+
* fixtures — no real key files touch disk under `~/.kindgi/keys/` during
|
|
5
|
+
* unit tests.
|
|
6
|
+
*
|
|
7
|
+
* Production wiring lives at `packages/cli/src/key/defaults.ts`; tests
|
|
8
|
+
* pass `RunCliInputs.keyRunners` with in-memory stubs.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Byte-oriented view of an Ed25519 key pair — the raw 32-byte
|
|
12
|
+
* representation `@kindgi/crypto` operates on. Both public and
|
|
13
|
+
* private are handed to the runner so the caller can serialize each
|
|
14
|
+
* independently (public → PEM + raw hex + base64; private → PEM only).
|
|
15
|
+
*/
|
|
16
|
+
export interface GeneratedKeyPair {
|
|
17
|
+
readonly publicKey: Uint8Array;
|
|
18
|
+
readonly privateKey: Uint8Array;
|
|
19
|
+
readonly privateKeyPem: string;
|
|
20
|
+
readonly publicKeyPem: string;
|
|
21
|
+
}
|
|
22
|
+
export interface WriteFileOptions {
|
|
23
|
+
readonly path: string;
|
|
24
|
+
readonly contents: string | Uint8Array;
|
|
25
|
+
readonly mode: number;
|
|
26
|
+
}
|
|
27
|
+
export interface KeyDirEntry {
|
|
28
|
+
readonly name: string;
|
|
29
|
+
readonly isFile: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Runners shape. All ops asynchronous — matches the `BuildRunners` /
|
|
33
|
+
* `DeployRunners` / `DevRunners` conventions.
|
|
34
|
+
*/
|
|
35
|
+
export interface KeyRunners {
|
|
36
|
+
/** Generate a fresh Ed25519 key pair (raw bytes + PEM serialization). */
|
|
37
|
+
readonly generateKeyPair: () => Promise<GeneratedKeyPair>;
|
|
38
|
+
/** `mkdir -p` with a specific mode (0o700 for the keys dir). */
|
|
39
|
+
readonly mkdir: (path: string, mode: number) => Promise<void>;
|
|
40
|
+
/** Write `contents` to `path` with the given mode. Never overwrites — the caller pre-checks. */
|
|
41
|
+
readonly writeFile: (opts: WriteFileOptions) => Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Read `path` as UTF-8. Returns `null` if the file does not exist;
|
|
44
|
+
* throws for any other IO error. Used by `export` (reads the pub PEM)
|
|
45
|
+
* + `list` (existence probe).
|
|
46
|
+
*/
|
|
47
|
+
readonly readFile: (path: string) => Promise<string | null>;
|
|
48
|
+
/**
|
|
49
|
+
* Directory listing. Returns an empty array when the directory does
|
|
50
|
+
* not exist. Anything else throws.
|
|
51
|
+
*/
|
|
52
|
+
readonly readdir: (path: string) => Promise<readonly KeyDirEntry[]>;
|
|
53
|
+
/**
|
|
54
|
+
* `stat`-style existence probe. Returns `true` if a file exists at
|
|
55
|
+
* `path`, `false` otherwise. Used to enforce the refuse-to-overwrite
|
|
56
|
+
* contract on `key create`.
|
|
57
|
+
*/
|
|
58
|
+
readonly exists: (path: string) => Promise<boolean>;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=runners.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runners.d.ts","sourceRoot":"","sources":["../../src/key/runners.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,yEAAyE;IACzE,QAAQ,CAAC,eAAe,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC1D,gEAAgE;IAChE,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,gGAAgG;IAChG,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5D;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC;IACpE;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACrD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runners.js","sourceRoot":"","sources":["../../src/key/runners.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC"}
|
package/dist/main.d.ts
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import type { KindgiClient } from '@kindgi/client';
|
|
2
|
+
import type { BuildRunners } from './build/runners.js';
|
|
3
|
+
import type { RegistryAuthSeam } from './commands/auth.js';
|
|
4
|
+
import type { EnvInitInputSeam } from './commands/env.js';
|
|
5
|
+
import { ROOT_COMMANDS } from './commands/index.js';
|
|
6
|
+
import type { SecretsValueInputSeam } from './commands/secrets.js';
|
|
7
|
+
import type { DeployRunners } from './deploy/runners.js';
|
|
8
|
+
import type { DevRunners } from './dev/runners.js';
|
|
9
|
+
import type { EnvRunners } from './env/runners.js';
|
|
10
|
+
import type { KeyRunners } from './key/runners.js';
|
|
11
|
+
import type { TestRunners } from './test/runners.js';
|
|
12
|
+
export interface RunCliInputs {
|
|
13
|
+
readonly argv: readonly string[];
|
|
14
|
+
readonly env?: Readonly<Record<string, string | undefined>>;
|
|
15
|
+
readonly cwd?: string;
|
|
16
|
+
readonly home?: string;
|
|
17
|
+
readonly fetchImpl?: typeof fetch;
|
|
18
|
+
readonly clientFactory?: (apiUrl: string, token: string) => KindgiClient;
|
|
19
|
+
readonly configReadFile?: (path: string) => Promise<string | null>;
|
|
20
|
+
/**
|
|
21
|
+
* Injectable seams used exclusively by `kindgi dev` — the runtime,
|
|
22
|
+
* indexer, and pack-folder watcher. Tests hand in fixture
|
|
23
|
+
* implementations so the command flow exercises without Docker or
|
|
24
|
+
* Postgres. When absent, `kindgi dev` uses production wiring from
|
|
25
|
+
* `packages/cli/src/dev/defaults.ts` (loaded lazily, so other commands
|
|
26
|
+
* don't load the dev loop's dependencies).
|
|
27
|
+
*/
|
|
28
|
+
readonly devRunners?: DevRunners;
|
|
29
|
+
/**
|
|
30
|
+
* Optional signal that terminates long-running commands (the
|
|
31
|
+
* `kindgi dev` watch loop). Production callers wire this to
|
|
32
|
+
* SIGINT/SIGTERM in the `cli.js` bin; tests pass an
|
|
33
|
+
* `AbortController.signal`.
|
|
34
|
+
*/
|
|
35
|
+
readonly stopSignal?: AbortSignal;
|
|
36
|
+
/**
|
|
37
|
+
* Injectable seams used exclusively by `kindgi build` — the local
|
|
38
|
+
* indexer, esbuild bundler, Containerfile writer, tar producer, POST
|
|
39
|
+
* /v1/build client, SSE log reader, docker-pull-and-extract, and
|
|
40
|
+
* Ed25519 signer. Tests substitute fixture implementations so the
|
|
41
|
+
* pipeline exercises without spawning esbuild / real docker / a live
|
|
42
|
+
* build server. When absent, `kindgi build` lazy-loads production
|
|
43
|
+
* wiring from `packages/cli/src/build/defaults.ts`.
|
|
44
|
+
*/
|
|
45
|
+
readonly buildRunners?: BuildRunners;
|
|
46
|
+
/**
|
|
47
|
+
* Optional loader for `kindgi.config.ts`. Tests hand in an
|
|
48
|
+
* in-memory function; production uses a plain dynamic `import()`.
|
|
49
|
+
*/
|
|
50
|
+
readonly buildConfigLoader?: (packDir: string) => Promise<{
|
|
51
|
+
readonly [k: string]: unknown;
|
|
52
|
+
}>;
|
|
53
|
+
/**
|
|
54
|
+
* Injectable seams used exclusively by `kindgi deploy` — the
|
|
55
|
+
* envelope loader + POST /v1/deployments client + optional inline-
|
|
56
|
+
* build runner. Tests substitute fixture implementations so the
|
|
57
|
+
* pipeline exercises without reading a real envelope from disk or
|
|
58
|
+
* hitting a live api-server. Production lazy-loads
|
|
59
|
+
* `packages/cli/src/deploy/defaults.ts` on dispatch.
|
|
60
|
+
*/
|
|
61
|
+
readonly deployRunners?: DeployRunners;
|
|
62
|
+
/**
|
|
63
|
+
* Injectable seams used exclusively by `kindgi test` — the
|
|
64
|
+
* vitest config probe + runner spawn. Tests substitute stubs so
|
|
65
|
+
* the command exercises without spawning real vitest. Production
|
|
66
|
+
* lazy-loads `packages/cli/src/test/defaults.ts` on dispatch.
|
|
67
|
+
*/
|
|
68
|
+
readonly testRunners?: TestRunners;
|
|
69
|
+
/**
|
|
70
|
+
* Injectable filesystem seams used exclusively by `kindgi env` —
|
|
71
|
+
* `.env.<envName>` reads/writes. Tests substitute in-memory stubs
|
|
72
|
+
* so no real env files touch disk. Production lazy-loads
|
|
73
|
+
* `packages/cli/src/env/defaults.ts` on dispatch.
|
|
74
|
+
*/
|
|
75
|
+
readonly envRunners?: EnvRunners;
|
|
76
|
+
/**
|
|
77
|
+
* Injectable seams used exclusively by `kindgi key` — the crypto
|
|
78
|
+
* generator + `~/.kindgi/keys/` fs surface. Tests substitute stubs so
|
|
79
|
+
* no real key files touch disk. Production lazy-loads
|
|
80
|
+
* `packages/cli/src/key/defaults.ts` on dispatch.
|
|
81
|
+
*/
|
|
82
|
+
readonly keyRunners?: KeyRunners;
|
|
83
|
+
/**
|
|
84
|
+
* Injectable value-input seams for `kindgi secrets set` /
|
|
85
|
+
* `rotate`. Tests substitute stubs so the TTY / stdin / file paths
|
|
86
|
+
* exercise without a real terminal.
|
|
87
|
+
*/
|
|
88
|
+
readonly secretsInputSeam?: SecretsValueInputSeam;
|
|
89
|
+
/**
|
|
90
|
+
* Injectable prompt / TTY-check seam for `kindgi env init`. Tests
|
|
91
|
+
* substitute a fixture `promptChoice`.
|
|
92
|
+
*/
|
|
93
|
+
readonly envInitInputSeam?: EnvInitInputSeam;
|
|
94
|
+
/**
|
|
95
|
+
* Injectable seams for `kindgi auth registry`: the `docker` runner, the
|
|
96
|
+
* stdin reader, the hidden prompt and the image checked. Tests
|
|
97
|
+
* substitute fixtures so no real `docker login` runs.
|
|
98
|
+
*/
|
|
99
|
+
readonly registryAuthSeam?: RegistryAuthSeam;
|
|
100
|
+
}
|
|
101
|
+
export interface CliOutcome {
|
|
102
|
+
readonly stdout: string;
|
|
103
|
+
readonly stderr: string;
|
|
104
|
+
readonly exitCode: number;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Entry point invoked by both the compiled `kindgi` bin and the
|
|
108
|
+
* test harness. Isolated from `process.exit` / `process.argv` so tests
|
|
109
|
+
* can drive it directly.
|
|
110
|
+
*/
|
|
111
|
+
export declare function runCli(inputs: RunCliInputs): Promise<CliOutcome>;
|
|
112
|
+
export { ROOT_COMMANDS };
|
|
113
|
+
//# sourceMappingURL=main.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAe,MAAM,qBAAqB,CAAC;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAInE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAC5D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,YAAY,CAAC;IACzE,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACnE;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC;IAClC;;;;;;;;OAQG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;IAC7F;;;;;;;OAOG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;IAClD;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CAC9C;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;GAIG;AACH,wBAAsB,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CA0HtE;AA4ED,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
package/dist/main.js
ADDED
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
import { ROOT_COMMANDS, findCommand } from './commands/index.js';
|
|
4
|
+
import { loadConfig } from './config.js';
|
|
5
|
+
import { buildContext } from './context.js';
|
|
6
|
+
import { formatThrown } from './errors.js';
|
|
7
|
+
import { commandHelpText, rootHelpText } from './help.js';
|
|
8
|
+
import { GLOBAL_OPTION_SPEC, parseCommand } from './parse.js';
|
|
9
|
+
import { CLI_VERSION } from './version-info.js';
|
|
10
|
+
/**
|
|
11
|
+
* Entry point invoked by both the compiled `kindgi` bin and the
|
|
12
|
+
* test harness. Isolated from `process.exit` / `process.argv` so tests
|
|
13
|
+
* can drive it directly.
|
|
14
|
+
*/
|
|
15
|
+
export async function runCli(inputs) {
|
|
16
|
+
const argv = inputs.argv;
|
|
17
|
+
// Handle top-level version / help before command parsing so
|
|
18
|
+
// `kindgi --version` works without arguments.
|
|
19
|
+
if (argv.length === 0 || argv[0] === '--help' || argv[0] === '-h') {
|
|
20
|
+
return { stdout: rootHelpText(), stderr: '', exitCode: 0 };
|
|
21
|
+
}
|
|
22
|
+
if (argv[0] === '--version') {
|
|
23
|
+
return { stdout: `${CLI_VERSION}\n`, stderr: '', exitCode: 0 };
|
|
24
|
+
}
|
|
25
|
+
const found = findCommand(argv);
|
|
26
|
+
if (found === null) {
|
|
27
|
+
return {
|
|
28
|
+
stdout: '',
|
|
29
|
+
stderr: `Unknown command: ${argv.join(' ')}\n\n${rootHelpText()}`,
|
|
30
|
+
exitCode: 2,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const { command, consumed } = found;
|
|
34
|
+
const remainingTokens = argv.slice(consumed);
|
|
35
|
+
if (command.kind === 'group') {
|
|
36
|
+
return { stdout: commandHelpText(command, argv.slice(0, consumed)), stderr: '', exitCode: 0 };
|
|
37
|
+
}
|
|
38
|
+
let parsed;
|
|
39
|
+
try {
|
|
40
|
+
parsed = parseCommand(remainingTokens, {
|
|
41
|
+
...(command.optionSpec ?? {}),
|
|
42
|
+
...GLOBAL_OPTION_SPEC,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
return {
|
|
47
|
+
stdout: '',
|
|
48
|
+
stderr: `Argument error: ${err.message}\n\n${commandHelpText(command)}`,
|
|
49
|
+
exitCode: 2,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
if (parsed.globals.help) {
|
|
53
|
+
return { stdout: commandHelpText(command), stderr: '', exitCode: 0 };
|
|
54
|
+
}
|
|
55
|
+
if (parsed.globals.version) {
|
|
56
|
+
return { stdout: `${CLI_VERSION}\n`, stderr: '', exitCode: 0 };
|
|
57
|
+
}
|
|
58
|
+
const config = await loadConfig({
|
|
59
|
+
...(parsed.globals.url !== undefined ? { flagUrl: parsed.globals.url } : {}),
|
|
60
|
+
...(parsed.globals.token !== undefined ? { flagToken: parsed.globals.token } : {}),
|
|
61
|
+
...(inputs.env !== undefined ? { env: inputs.env } : {}),
|
|
62
|
+
...(inputs.cwd !== undefined ? { cwd: inputs.cwd } : {}),
|
|
63
|
+
...(inputs.home !== undefined ? { home: inputs.home } : {}),
|
|
64
|
+
...(inputs.configReadFile !== undefined ? { readFile: inputs.configReadFile } : {}),
|
|
65
|
+
});
|
|
66
|
+
// Lazily wire dev runners so commands other than `kindgi dev` don't
|
|
67
|
+
// load the dev loop. Tests supplying `inputs.devRunners` always win.
|
|
68
|
+
//
|
|
69
|
+
// Keyed on the TOP-LEVEL command (`argv[0]`), not the resolved leaf:
|
|
70
|
+
// `kindgi env list` resolves to the leaf `list`, so matching on the
|
|
71
|
+
// leaf name never loaded the env / key runners outside tests.
|
|
72
|
+
const topLevel = argv[0];
|
|
73
|
+
const devRunners = inputs.devRunners ?? (topLevel === 'dev' ? await loadRealDevRunners() : undefined);
|
|
74
|
+
// Same shape for `kindgi build`: lazy-load the esbuild / tar /
|
|
75
|
+
// docker seams so unrelated commands don't pay the transitive load.
|
|
76
|
+
// `kindgi deploy` needs the build runners too when the envelope
|
|
77
|
+
// is missing and the command auto-runs `kindgi build` inline.
|
|
78
|
+
const needsBuildRunners = topLevel === 'build' || topLevel === 'deploy';
|
|
79
|
+
const buildRunners = inputs.buildRunners ?? (needsBuildRunners ? await loadRealBuildRunners() : undefined);
|
|
80
|
+
const deployRunners = inputs.deployRunners ?? (topLevel === 'deploy' ? await loadRealDeployRunners() : undefined);
|
|
81
|
+
const testRunners = inputs.testRunners ?? (topLevel === 'test' ? await loadRealTestRunners() : undefined);
|
|
82
|
+
const envRunners = inputs.envRunners ?? (topLevel === 'env' ? await loadRealEnvRunners() : undefined);
|
|
83
|
+
const keyRunners = inputs.keyRunners ?? (topLevel === 'key' ? await loadRealKeyRunners() : undefined);
|
|
84
|
+
const ctx = buildContext({
|
|
85
|
+
globals: parsed.globals,
|
|
86
|
+
positionals: parsed.positionals,
|
|
87
|
+
options: parsed.options,
|
|
88
|
+
config,
|
|
89
|
+
...(inputs.fetchImpl !== undefined ? { fetchImpl: inputs.fetchImpl } : {}),
|
|
90
|
+
...(inputs.clientFactory !== undefined ? { clientFactory: inputs.clientFactory } : {}),
|
|
91
|
+
...(inputs.home !== undefined ? { home: inputs.home } : {}),
|
|
92
|
+
...(inputs.cwd !== undefined ? { cwd: inputs.cwd } : {}),
|
|
93
|
+
...(inputs.env !== undefined ? { env: inputs.env } : {}),
|
|
94
|
+
...(devRunners !== undefined ? { devRunners } : {}),
|
|
95
|
+
...(inputs.stopSignal !== undefined ? { stopSignal: inputs.stopSignal } : {}),
|
|
96
|
+
...(buildRunners !== undefined ? { buildRunners } : {}),
|
|
97
|
+
...(inputs.buildConfigLoader !== undefined
|
|
98
|
+
? { buildConfigLoader: inputs.buildConfigLoader }
|
|
99
|
+
: {}),
|
|
100
|
+
...(deployRunners !== undefined ? { deployRunners } : {}),
|
|
101
|
+
...(testRunners !== undefined ? { testRunners } : {}),
|
|
102
|
+
...(envRunners !== undefined ? { envRunners } : {}),
|
|
103
|
+
...(keyRunners !== undefined ? { keyRunners } : {}),
|
|
104
|
+
...(inputs.secretsInputSeam !== undefined ? { secretsInputSeam: inputs.secretsInputSeam } : {}),
|
|
105
|
+
...(inputs.envInitInputSeam !== undefined ? { envInitInputSeam: inputs.envInitInputSeam } : {}),
|
|
106
|
+
...(inputs.registryAuthSeam !== undefined ? { registryAuthSeam: inputs.registryAuthSeam } : {}),
|
|
107
|
+
});
|
|
108
|
+
const label = commandLabel(command, argv, consumed);
|
|
109
|
+
try {
|
|
110
|
+
const result = await command.run(ctx);
|
|
111
|
+
if (result.kind === 'ok') {
|
|
112
|
+
return {
|
|
113
|
+
stdout: result.rendered.stdout,
|
|
114
|
+
stderr: result.rendered.stderr,
|
|
115
|
+
exitCode: result.exitCode ?? 0,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
return { stdout: '', stderr: result.stderr, exitCode: result.exitCode };
|
|
119
|
+
}
|
|
120
|
+
catch (err) {
|
|
121
|
+
const formatted = formatThrown(err, { commandLabel: label, verbose: parsed.globals.verbose });
|
|
122
|
+
return { stdout: '', stderr: formatted.stderr, exitCode: formatted.exitCode };
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
function commandLabel(_command, argv, consumed) {
|
|
126
|
+
return `kindgi ${argv.slice(0, consumed).join(' ')}`;
|
|
127
|
+
}
|
|
128
|
+
async function loadRealDevRunners() {
|
|
129
|
+
try {
|
|
130
|
+
const mod = await import('./dev/defaults.js');
|
|
131
|
+
return mod.REAL_DEV_RUNNERS;
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
// Loading defaults can fail cleanly when a dev-loop dependency
|
|
135
|
+
// isn't installed (e.g. a minimally-built environment). We surface a
|
|
136
|
+
// clear error inside the command handler rather than crash CLI
|
|
137
|
+
// dispatch here.
|
|
138
|
+
return undefined;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
async function loadRealBuildRunners() {
|
|
142
|
+
try {
|
|
143
|
+
const mod = await import('./build/defaults.js');
|
|
144
|
+
return mod.REAL_BUILD_RUNNERS;
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
// Same pattern as dev — if esbuild / tar / @kindgi/crypto /
|
|
148
|
+
// @kindgi/handler-runtime fail to load, the command handler
|
|
149
|
+
// surfaces a clear error rather than crashing dispatch.
|
|
150
|
+
return undefined;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
async function loadRealDeployRunners() {
|
|
154
|
+
try {
|
|
155
|
+
const mod = await import('./deploy/defaults.js');
|
|
156
|
+
return mod.REAL_DEPLOY_RUNNERS;
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
// If the envelope loader / post module fails to load, surface a
|
|
160
|
+
// clean error from the command handler rather than crashing
|
|
161
|
+
// dispatch — mirrors dev + build.
|
|
162
|
+
return undefined;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
async function loadRealTestRunners() {
|
|
166
|
+
try {
|
|
167
|
+
const mod = await import('./test/defaults.js');
|
|
168
|
+
return mod.REAL_TEST_RUNNERS;
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
// Should never fail (only node:child_process + node:fs), but keep
|
|
172
|
+
// the same shape as every other lazy-load path so a broken import
|
|
173
|
+
// surfaces via the command handler.
|
|
174
|
+
return undefined;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
async function loadRealEnvRunners() {
|
|
178
|
+
try {
|
|
179
|
+
const mod = await import('./env/defaults.js');
|
|
180
|
+
return mod.REAL_ENV_RUNNERS;
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
return undefined;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
async function loadRealKeyRunners() {
|
|
187
|
+
try {
|
|
188
|
+
const mod = await import('./key/defaults.js');
|
|
189
|
+
return mod.REAL_KEY_RUNNERS;
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
// `@kindgi/crypto` transitively pulls in `node:crypto`, always
|
|
193
|
+
// available under Node 22. If this ever fails, the fault is a
|
|
194
|
+
// build-time mispackage.
|
|
195
|
+
return undefined;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
export { ROOT_COMMANDS };
|
|
199
|
+
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `kindgi mcp-launch` — the subprocess wrapper that spawns an MCP
|
|
3
|
+
* server with secrets injected from the pack's env files — the same
|
|
4
|
+
* files, read the same way, as Kindgi's dev-mode `SecretBinding`
|
|
5
|
+
* (`@kindgi/secrets-dotenv`): for `local`, the project's `.env` then
|
|
6
|
+
* `.env.local` (or `dev.envFiles`); otherwise `.env.<envName>`.
|
|
7
|
+
*
|
|
8
|
+
* Design goals:
|
|
9
|
+
* - **Generic** — no per-server logic. Works for any Node package
|
|
10
|
+
* invocable via `npx`, or any Docker image, that reads its
|
|
11
|
+
* credentials from environment variables.
|
|
12
|
+
* - **Portable across MCP clients** — a `.mcp.json` entry running the
|
|
13
|
+
* project's `kindgi mcp-launch …` (via its package manager, e.g.
|
|
14
|
+
* `pnpm exec kindgi`) works identically for Claude Code, Cursor,
|
|
15
|
+
* VS Code, Claude Desktop, Windsurf, or anything else that speaks
|
|
16
|
+
* the MCP config shape.
|
|
17
|
+
* - **Secrets stay outside the model's context** — the DB URL /
|
|
18
|
+
* token flows: SecretBinding → this process's memory → child
|
|
19
|
+
* process's env. Never in argv (visible via `ps aux`); never in
|
|
20
|
+
* `.mcp.json` (visible via any Read tool the model calls).
|
|
21
|
+
*
|
|
22
|
+
* Argv shape:
|
|
23
|
+
*
|
|
24
|
+
* kindgi mcp-launch \
|
|
25
|
+
* --runtime=<npx|docker> \
|
|
26
|
+
* --package=<npm-package-or-docker-image> \
|
|
27
|
+
* --env-map=VAR=secret:NAME@envName:scopeKind[:scopeId] \ (repeatable)
|
|
28
|
+
* [--pack-dir=<abs-path>] \
|
|
29
|
+
* [--host-remap=docker-desktop] \
|
|
30
|
+
* -- <passthrough args forwarded to the child process>
|
|
31
|
+
*
|
|
32
|
+
* `--host-remap=docker-desktop` rewrites `localhost` / `127.0.0.1` in
|
|
33
|
+
* resolved secret VALUES to `host.docker.internal` — the Mac/Windows
|
|
34
|
+
* Docker escape hatch. Only applied when the runtime is `docker`.
|
|
35
|
+
*
|
|
36
|
+
* Exit codes:
|
|
37
|
+
* - 0 (or child's exit code) — child ran to completion
|
|
38
|
+
* - 2 — argv parse error
|
|
39
|
+
* - 3 — secret resolution error (missing env file, missing secret)
|
|
40
|
+
* - 4 — spawn error (child couldn't start)
|
|
41
|
+
*/
|
|
42
|
+
import { spawn as nodeSpawn } from 'node:child_process';
|
|
43
|
+
import { type LocalEnvSettings } from '../env/project-env.js';
|
|
44
|
+
export type Runtime = 'npx' | 'docker';
|
|
45
|
+
export type HostRemap = 'docker-desktop';
|
|
46
|
+
export type ScopeKind = 'tenant' | 'org' | 'project';
|
|
47
|
+
export interface SecretRef {
|
|
48
|
+
readonly name: string;
|
|
49
|
+
readonly envName: string;
|
|
50
|
+
readonly scopeKind: ScopeKind;
|
|
51
|
+
readonly scopeId?: string;
|
|
52
|
+
}
|
|
53
|
+
export interface EnvMapEntry {
|
|
54
|
+
readonly child: string;
|
|
55
|
+
readonly ref: SecretRef;
|
|
56
|
+
}
|
|
57
|
+
export interface ParsedLauncherArgs {
|
|
58
|
+
readonly runtime: Runtime;
|
|
59
|
+
readonly package: string;
|
|
60
|
+
readonly envMap: readonly EnvMapEntry[];
|
|
61
|
+
readonly packDir: string;
|
|
62
|
+
readonly hostRemap?: HostRemap;
|
|
63
|
+
readonly passthroughArgs: readonly string[];
|
|
64
|
+
}
|
|
65
|
+
export type ParseResult = {
|
|
66
|
+
readonly kind: 'ok';
|
|
67
|
+
readonly args: ParsedLauncherArgs;
|
|
68
|
+
} | {
|
|
69
|
+
readonly kind: 'err';
|
|
70
|
+
readonly message: string;
|
|
71
|
+
};
|
|
72
|
+
export type ResolveResult = {
|
|
73
|
+
readonly kind: 'ok';
|
|
74
|
+
readonly env: Readonly<Record<string, string>>;
|
|
75
|
+
} | {
|
|
76
|
+
readonly kind: 'err';
|
|
77
|
+
readonly message: string;
|
|
78
|
+
};
|
|
79
|
+
export interface ChildCommand {
|
|
80
|
+
readonly cmd: string;
|
|
81
|
+
readonly args: readonly string[];
|
|
82
|
+
readonly extraEnv: Readonly<Record<string, string>>;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Parse a single `--env-map` value: `VAR=secret:NAME@envName:scopeKind[:scopeId]`.
|
|
86
|
+
* Returns null on malformed input; caller decides error phrasing.
|
|
87
|
+
*/
|
|
88
|
+
export declare function parseEnvMapFlag(raw: string): EnvMapEntry | null;
|
|
89
|
+
/**
|
|
90
|
+
* Parse a secret reference: `secret:NAME@envName:scopeKind[:scopeId]`.
|
|
91
|
+
*
|
|
92
|
+
* - `secret:GRIEVANCE_DB_URL@local:tenant`
|
|
93
|
+
* - `secret:X@local:project:pack-a`
|
|
94
|
+
* - `secret:X@local:org:acme`
|
|
95
|
+
*/
|
|
96
|
+
export declare function parseSecretRef(raw: string): SecretRef | null;
|
|
97
|
+
/**
|
|
98
|
+
* Parse the full launcher argv. Everything after a bare `--` token is
|
|
99
|
+
* treated as passthrough to the child.
|
|
100
|
+
*/
|
|
101
|
+
export declare function parseLauncherArgs(argv: readonly string[]): ParseResult;
|
|
102
|
+
/**
|
|
103
|
+
* Resolve every env-map entry against the pack's env files for its
|
|
104
|
+
* environment (`@kindgi/secrets-dotenv`'s `readPackEnv`). Each
|
|
105
|
+
* environment's files are read once. The dev store is scope-blind, so
|
|
106
|
+
* `scopeKind` / `scopeId` are recorded but not used for lookup;
|
|
107
|
+
* `KINDGI_*` names are runtime config and never resolve here.
|
|
108
|
+
*/
|
|
109
|
+
export declare function resolveSecrets(entries: readonly EnvMapEntry[], packDir: string, readFile: (path: string) => Promise<string>, options?: {
|
|
110
|
+
readonly localEnvFiles?: readonly string[];
|
|
111
|
+
}): Promise<ResolveResult>;
|
|
112
|
+
/**
|
|
113
|
+
* Rewrite `localhost` / `127.0.0.1` in a value to `host.docker.internal`
|
|
114
|
+
* when `mode === 'docker-desktop'`. Applied to every resolved secret
|
|
115
|
+
* value before injecting into the child's env, but only when the child
|
|
116
|
+
* is a Docker container (the launcher decides at call time).
|
|
117
|
+
*
|
|
118
|
+
* Not URL-parsing-based; we don't want to shred a value we don't
|
|
119
|
+
* understand. Simple string replacement on the two known host tokens.
|
|
120
|
+
* Real edge cases (nested URLs, IPv6 `::1`) can be added if a real
|
|
121
|
+
* consumer surfaces them.
|
|
122
|
+
*/
|
|
123
|
+
export declare function applyHostRemap(value: string, mode: HostRemap | undefined): string;
|
|
124
|
+
/**
|
|
125
|
+
* Compose the (cmd, args, extraEnv) triple to spawn. Deterministic —
|
|
126
|
+
* no side effects — so it's trivially testable. Docker-runtime host
|
|
127
|
+
* remap is applied here because it's per-value transformation.
|
|
128
|
+
*/
|
|
129
|
+
export declare function buildChildCommand(parsed: ParsedLauncherArgs, resolvedEnv: Readonly<Record<string, string>>): ChildCommand;
|
|
130
|
+
export interface RunLauncherDeps {
|
|
131
|
+
readonly readFile: (path: string) => Promise<string>;
|
|
132
|
+
/** `dev.envFiles` from the pack's `kindgi.config.ts`. */
|
|
133
|
+
readonly localEnvSettings: (packDir: string) => Promise<LocalEnvSettings>;
|
|
134
|
+
readonly spawn: typeof nodeSpawn;
|
|
135
|
+
readonly stderr: (msg: string) => void;
|
|
136
|
+
readonly onSignal: (handler: (sig: NodeJS.Signals) => void) => () => void;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Run the launcher end-to-end. Returns the effective exit code so a
|
|
140
|
+
* caller (the CLI) can `process.exit(code)`.
|
|
141
|
+
*/
|
|
142
|
+
export declare function runLauncher(argv: readonly string[], overrides?: Partial<RunLauncherDeps>): Promise<number>;
|
|
143
|
+
//# sourceMappingURL=launcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../../src/mcp/launcher.ts"],"names":[],"mappings":"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"}
|