@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,236 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
/**
|
|
4
|
+
* The process environment a deployed pack service gets: each name the
|
|
5
|
+
* pack declares (`env.required` / `env.optional` in `kindgi.config`) and
|
|
6
|
+
* where its value comes from in a target environment
|
|
7
|
+
* (`environments.<name>.env`):
|
|
8
|
+
*
|
|
9
|
+
* - a plain value, for what isn't secret (committed, and visible in the
|
|
10
|
+
* deployed revision);
|
|
11
|
+
* - `{ secret, version, project? }`, a Secret Manager secret the operator
|
|
12
|
+
* created, which the platform resolves with the pack service's own
|
|
13
|
+
* identity. Kindgi never reads, stores or generates its value.
|
|
14
|
+
*
|
|
15
|
+
* Only declared names are injected. A secret given as a plain value is
|
|
16
|
+
* refused, by its name (`*_KEY`, `*_TOKEN`, …) or by a credential inside
|
|
17
|
+
* it (a URL with a password), so it goes by reference.
|
|
18
|
+
*/
|
|
19
|
+
import { resolvePackEnv } from '@kindgi/handler-runtime';
|
|
20
|
+
/** Names operators commonly give to real secrets. */
|
|
21
|
+
const SECRET_SHAPED_NAME = /_(?:KEY|SECRET|TOKEN|PASSWORD|PRIVATE|APIKEY|API_KEY)$/i;
|
|
22
|
+
/** A Secret Manager secret id. */
|
|
23
|
+
const SECRET_ID = /^[A-Za-z0-9_-]{1,255}$/;
|
|
24
|
+
const VERSION = /^(?:latest|[1-9][0-9]*)$/;
|
|
25
|
+
const PROJECT_NUMBER = /^[0-9]+$/;
|
|
26
|
+
/** Whether a name looks like it holds a secret (`*_KEY`, `*_TOKEN`, `*_PASSWORD`, …). */
|
|
27
|
+
export function isSecretShapedName(name) {
|
|
28
|
+
return SECRET_SHAPED_NAME.test(name);
|
|
29
|
+
}
|
|
30
|
+
/** Whether a value carries a credential: a URL with a password (`postgres://user:pass@host/db`). */
|
|
31
|
+
export function carriesCredential(value) {
|
|
32
|
+
if (!/^[A-Za-z][A-Za-z0-9+.-]*:\/\//.test(value))
|
|
33
|
+
return false;
|
|
34
|
+
try {
|
|
35
|
+
return new URL(value).password !== '';
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return /^[^:/]+:\/\/[^/@]*:[^/@]*@/.test(value);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Why `value` can't be given in the clear under `name`, or `undefined`
|
|
43
|
+
* when it can. The one check behind `kindgi env plan`, the deploy
|
|
44
|
+
* preflight and `kindgi deploy --sync-secrets`'s warning.
|
|
45
|
+
*/
|
|
46
|
+
export function plainSecretReason(name, value) {
|
|
47
|
+
if (carriesCredential(value))
|
|
48
|
+
return `${name}'s value has a credential in it (a URL with a password)`;
|
|
49
|
+
if (isSecretShapedName(name))
|
|
50
|
+
return `${name} is named like a secret`;
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
/** `environments.<envName>.env` from a loaded config: each name's source, and what's malformed. */
|
|
54
|
+
export function readEnvironmentEnv(config, envName) {
|
|
55
|
+
const sources = new Map();
|
|
56
|
+
const problems = [];
|
|
57
|
+
const environments = config?.environments;
|
|
58
|
+
const block = environments !== null && typeof environments === 'object'
|
|
59
|
+
? environments[envName]
|
|
60
|
+
: undefined;
|
|
61
|
+
const env = block !== null && typeof block === 'object'
|
|
62
|
+
? block.env
|
|
63
|
+
: undefined;
|
|
64
|
+
if (env === undefined)
|
|
65
|
+
return { sources, problems };
|
|
66
|
+
if (env === null || typeof env !== 'object' || Array.isArray(env)) {
|
|
67
|
+
return { sources, problems: [`environments.${envName}.env must be an object`] };
|
|
68
|
+
}
|
|
69
|
+
for (const [name, raw] of Object.entries(env)) {
|
|
70
|
+
const at = `environments.${envName}.env.${name}`;
|
|
71
|
+
if (typeof raw === 'string') {
|
|
72
|
+
sources.set(name, { kind: 'value', value: raw });
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
const source = readSecretSource(at, raw);
|
|
76
|
+
if (typeof source === 'string')
|
|
77
|
+
problems.push(source);
|
|
78
|
+
else
|
|
79
|
+
sources.set(name, source);
|
|
80
|
+
}
|
|
81
|
+
return { sources, problems };
|
|
82
|
+
}
|
|
83
|
+
function readSecretSource(at, raw) {
|
|
84
|
+
if (raw === null || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
85
|
+
return `${at} must be a string or { secret, version, project? }`;
|
|
86
|
+
}
|
|
87
|
+
const { secret, version, project, ...rest } = raw;
|
|
88
|
+
const extra = Object.keys(rest);
|
|
89
|
+
if (extra.length > 0)
|
|
90
|
+
return `${at} takes secret, version and project, not ${extra.join(', ')}`;
|
|
91
|
+
if (typeof secret !== 'string' || !SECRET_ID.test(secret)) {
|
|
92
|
+
return `${at}.secret must be a Secret Manager secret id (letters, digits, _ and -)`;
|
|
93
|
+
}
|
|
94
|
+
if (typeof version !== 'string' || !VERSION.test(version)) {
|
|
95
|
+
return `${at}.version must be a version number (e.g. "3") or "latest"`;
|
|
96
|
+
}
|
|
97
|
+
if (project !== undefined && (typeof project !== 'string' || !PROJECT_NUMBER.test(project))) {
|
|
98
|
+
return `${at}.project must be a project number: Cloud Run names another project's secret by number`;
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
kind: 'secret',
|
|
102
|
+
secret,
|
|
103
|
+
version,
|
|
104
|
+
...(typeof project === 'string' && { project }),
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* The plan for `envName`: the pack's declaration (from `config.env`)
|
|
109
|
+
* against that environment's sources. `err` when the declaration itself
|
|
110
|
+
* is malformed, the same check the indexer runs.
|
|
111
|
+
*/
|
|
112
|
+
export function planPackEnv(config, envName) {
|
|
113
|
+
const declared = resolvePackEnv(config?.env);
|
|
114
|
+
if (declared.kind === 'err')
|
|
115
|
+
return { kind: 'err', message: `kindgi.config: ${declared.message}` };
|
|
116
|
+
const declaration = declared.value ?? { required: [], optional: [] };
|
|
117
|
+
const { sources, problems: malformed } = readEnvironmentEnv(config, envName);
|
|
118
|
+
const problems = [...malformed];
|
|
119
|
+
const warnings = [];
|
|
120
|
+
const entries = [];
|
|
121
|
+
const add = (name, required) => {
|
|
122
|
+
const source = sources.get(name);
|
|
123
|
+
entries.push({ name, required, ...(source !== undefined && { source }) });
|
|
124
|
+
if (source?.kind === 'value') {
|
|
125
|
+
const reason = plainSecretReason(name, source.value);
|
|
126
|
+
if (reason !== undefined) {
|
|
127
|
+
problems.push(`${reason}: give it as { secret, version } in environments.${envName}.env`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (source?.kind === 'secret' && source.version === 'latest') {
|
|
131
|
+
warnings.push(`${name} uses the latest version of ${source.secret}: it's read when an instance starts, so a new version needs a new revision`);
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
for (const name of declaration.required)
|
|
135
|
+
add(name, true);
|
|
136
|
+
for (const name of declaration.optional)
|
|
137
|
+
add(name, false);
|
|
138
|
+
const declaredNames = new Set([...declaration.required, ...declaration.optional]);
|
|
139
|
+
for (const name of sources.keys()) {
|
|
140
|
+
if (!declaredNames.has(name)) {
|
|
141
|
+
warnings.push(`environments.${envName}.env.${name} isn't declared in env.required or env.optional, so it isn't injected`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
const missing = entries.filter((e) => e.required && e.source === undefined).map((e) => e.name);
|
|
145
|
+
return { kind: 'ok', plan: { envName, entries, missing, problems, warnings } };
|
|
146
|
+
}
|
|
147
|
+
/** A secret source as Cloud Run takes it: `SECRET:VERSION`, or the full name for another project. */
|
|
148
|
+
export function secretReference(source) {
|
|
149
|
+
const secret = source.project === undefined
|
|
150
|
+
? source.secret
|
|
151
|
+
: `projects/${source.project}/secrets/${source.secret}`;
|
|
152
|
+
return `${secret}:${source.version}`;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* The Terraform input for the pack service's revision: `env` (plain
|
|
156
|
+
* values) and `secret_env` (references), as JSON.
|
|
157
|
+
*/
|
|
158
|
+
export function renderTerraform(plan) {
|
|
159
|
+
const env = {};
|
|
160
|
+
const secretEnv = {};
|
|
161
|
+
for (const entry of plan.entries) {
|
|
162
|
+
const source = entry.source;
|
|
163
|
+
if (source?.kind === 'value')
|
|
164
|
+
env[entry.name] = source.value;
|
|
165
|
+
if (source?.kind === 'secret') {
|
|
166
|
+
secretEnv[entry.name] = {
|
|
167
|
+
secret: source.secret,
|
|
168
|
+
version: source.version,
|
|
169
|
+
...(source.project !== undefined && { project: source.project }),
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return `${JSON.stringify({ env, secret_env: secretEnv }, null, 2)}\n`;
|
|
174
|
+
}
|
|
175
|
+
/** `gcloud run deploy` flags: `--set-env-vars` and `--set-secrets`, one per line. */
|
|
176
|
+
export function renderGcloud(plan) {
|
|
177
|
+
const values = [];
|
|
178
|
+
const secrets = [];
|
|
179
|
+
for (const entry of plan.entries) {
|
|
180
|
+
const source = entry.source;
|
|
181
|
+
if (source?.kind === 'value')
|
|
182
|
+
values.push(`${entry.name}=${source.value}`);
|
|
183
|
+
if (source?.kind === 'secret')
|
|
184
|
+
secrets.push(`${entry.name}=${secretReference(source)}`);
|
|
185
|
+
}
|
|
186
|
+
const lines = [];
|
|
187
|
+
if (values.length > 0)
|
|
188
|
+
lines.push(`--set-env-vars=${joinForGcloud(values)}`);
|
|
189
|
+
if (secrets.length > 0)
|
|
190
|
+
lines.push(`--set-secrets=${joinForGcloud(secrets)}`);
|
|
191
|
+
return lines.length > 0 ? `${lines.join(' \\\n')}\n` : '';
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* gcloud splits a list on commas; a value with a comma needs another
|
|
195
|
+
* delimiter, given as `^DELIM^` in front of the list.
|
|
196
|
+
*/
|
|
197
|
+
function joinForGcloud(items) {
|
|
198
|
+
if (!items.some((item) => item.includes(',')))
|
|
199
|
+
return items.join(',');
|
|
200
|
+
const delimiter = ['@', '|', ';', '#', '~'].find((d) => !items.some((item) => item.includes(d)));
|
|
201
|
+
if (delimiter === undefined) {
|
|
202
|
+
throw new Error('a value contains every gcloud list delimiter Kindgi tries; set it by hand');
|
|
203
|
+
}
|
|
204
|
+
return `^${delimiter}^${items.join(delimiter)}`;
|
|
205
|
+
}
|
|
206
|
+
/** The plan as lines for a terminal: one per declared name, then what's wrong and worth knowing. */
|
|
207
|
+
/** Where an entry's value comes from, for a terminal. A secret given in the clear is never shown. */
|
|
208
|
+
function describeSource(entry) {
|
|
209
|
+
const source = entry.source;
|
|
210
|
+
if (source === undefined)
|
|
211
|
+
return entry.required ? '✗ no value' : '(unset: not injected)';
|
|
212
|
+
if (source.kind === 'secret')
|
|
213
|
+
return `secret ${secretReference(source)}`;
|
|
214
|
+
return plainSecretReason(entry.name, source.value) === undefined
|
|
215
|
+
? `value ${JSON.stringify(source.value)}`
|
|
216
|
+
: '✗ value withheld: a secret in the clear';
|
|
217
|
+
}
|
|
218
|
+
export function describePackEnvPlan(plan) {
|
|
219
|
+
const lines = [` The pack service's env in ${plan.envName}:`];
|
|
220
|
+
if (plan.entries.length === 0) {
|
|
221
|
+
lines.push(' (the pack declares none: add env.required / env.optional to kindgi.config)');
|
|
222
|
+
}
|
|
223
|
+
for (const entry of plan.entries) {
|
|
224
|
+
const kind = entry.required ? 'required' : 'optional';
|
|
225
|
+
lines.push(` ${kind.padEnd(8)} ${entry.name.padEnd(28)} ${describeSource(entry)}`);
|
|
226
|
+
}
|
|
227
|
+
for (const name of plan.missing) {
|
|
228
|
+
lines.push(` ✗ ${name} is required and has no value in environments.${plan.envName}.env`);
|
|
229
|
+
}
|
|
230
|
+
for (const problem of plan.problems)
|
|
231
|
+
lines.push(` ✗ ${problem}`);
|
|
232
|
+
for (const warning of plan.warnings)
|
|
233
|
+
lines.push(` ⚠ ${warning}`);
|
|
234
|
+
return lines;
|
|
235
|
+
}
|
|
236
|
+
//# sourceMappingURL=pack-env-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pack-env-plan.js","sourceRoot":"","sources":["../../src/env/pack-env-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Re-exports the shared dotenv parser from `@kindgi/dotenv-file`. The
|
|
3
|
+
* grammar + serialization rules are the same across `kindgi env`
|
|
4
|
+
* subcommands and the dev-mode `SecretBinding` in `@kindgi/secrets-dotenv`
|
|
5
|
+
* — extracting the primitive prevents drift between what the CLI writes
|
|
6
|
+
* and what the binding reads.
|
|
7
|
+
*/
|
|
8
|
+
export { ENV_KEY_REGEX, type EnvLine, envLinesToRecord, parseEnvFile, serializeEnvFile, } from '@kindgi/dotenv-file';
|
|
9
|
+
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/env/parser.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AAEH,OAAO,EACL,aAAa,EACb,KAAK,OAAO,EACZ,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,GACjB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
/**
|
|
4
|
+
* Re-exports the shared dotenv parser from `@kindgi/dotenv-file`. The
|
|
5
|
+
* grammar + serialization rules are the same across `kindgi env`
|
|
6
|
+
* subcommands and the dev-mode `SecretBinding` in `@kindgi/secrets-dotenv`
|
|
7
|
+
* — extracting the primitive prevents drift between what the CLI writes
|
|
8
|
+
* and what the binding reads.
|
|
9
|
+
*/
|
|
10
|
+
export { ENV_KEY_REGEX, envLinesToRecord, parseEnvFile, serializeEnvFile, } from '@kindgi/dotenv-file';
|
|
11
|
+
//# sourceMappingURL=parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/env/parser.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC;;;;;;GAMG;AAEH,OAAO,EACL,aAAa,EAEb,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,GACjB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI side of the pack env files (`@kindgi/secrets-dotenv`'s
|
|
3
|
+
* `readPackEnv`): which files a command reads for an environment, and
|
|
4
|
+
* how their warnings are shown.
|
|
5
|
+
*
|
|
6
|
+
* Warnings name `file:line` and a reason — never the line's text. The
|
|
7
|
+
* files are the project's own `.env`s and a malformed line can be a
|
|
8
|
+
* secret with a typo in it.
|
|
9
|
+
*/
|
|
10
|
+
import type { EnvDiagnostic } from '@kindgi/dotenv-file';
|
|
11
|
+
import type { CommandContext } from '../context.js';
|
|
12
|
+
import { type PackConfigRecord } from '../pack-config.js';
|
|
13
|
+
export type LocalEnvSettings = {
|
|
14
|
+
readonly kind: 'ok';
|
|
15
|
+
/** The loaded config, when there is a valid one. */
|
|
16
|
+
readonly config: PackConfigRecord | undefined;
|
|
17
|
+
/** `dev.envFiles`, when set. */
|
|
18
|
+
readonly localEnvFiles: readonly string[] | undefined;
|
|
19
|
+
/** Set when the config exists but could not be loaded. */
|
|
20
|
+
readonly configProblem: string | undefined;
|
|
21
|
+
} | {
|
|
22
|
+
readonly kind: 'error';
|
|
23
|
+
readonly message: string;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Load the pack config and its `dev.envFiles`. A missing or unloadable
|
|
27
|
+
* config yields the defaults (`configProblem` says why, for callers
|
|
28
|
+
* that want to fail or warn); a present-but-malformed `dev.envFiles` is
|
|
29
|
+
* always an error — the author asked for specific files.
|
|
30
|
+
*/
|
|
31
|
+
export declare function loadLocalEnvSettings(ctx: Pick<CommandContext, 'buildConfigLoader'>, packDir: string): Promise<LocalEnvSettings>;
|
|
32
|
+
/** One human-readable line per diagnostic, safe to print. */
|
|
33
|
+
export declare function describeEnvDiagnostics(packDir: string, diagnostics: readonly EnvDiagnostic[]): string[];
|
|
34
|
+
//# sourceMappingURL=project-env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-env.d.ts","sourceRoot":"","sources":["../../src/env/project-env.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,KAAK,gBAAgB,EAA+B,MAAM,mBAAmB,CAAC;AAEvF,MAAM,MAAM,gBAAgB,GACxB;IACE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC9C,gCAAgC;IAChC,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACtD,0DAA0D;IAC1D,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5C,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,mBAAmB,CAAC,EAC9C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC,CAkB3B;AAED,6DAA6D;AAC7D,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,SAAS,aAAa,EAAE,GACpC,MAAM,EAAE,CAYV"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
import { displayEnvPath } from '@kindgi/secrets-dotenv';
|
|
4
|
+
import { devEnvFiles, loadPackConfig } from '../pack-config.js';
|
|
5
|
+
/**
|
|
6
|
+
* Load the pack config and its `dev.envFiles`. A missing or unloadable
|
|
7
|
+
* config yields the defaults (`configProblem` says why, for callers
|
|
8
|
+
* that want to fail or warn); a present-but-malformed `dev.envFiles` is
|
|
9
|
+
* always an error — the author asked for specific files.
|
|
10
|
+
*/
|
|
11
|
+
export async function loadLocalEnvSettings(ctx, packDir) {
|
|
12
|
+
const outcome = await loadPackConfig(ctx, packDir);
|
|
13
|
+
if (outcome.kind !== 'ok') {
|
|
14
|
+
return {
|
|
15
|
+
kind: 'ok',
|
|
16
|
+
config: undefined,
|
|
17
|
+
localEnvFiles: undefined,
|
|
18
|
+
configProblem: outcome.kind === 'invalid' ? outcome.message : undefined,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
const files = devEnvFiles(outcome.config);
|
|
22
|
+
if (files.kind === 'invalid')
|
|
23
|
+
return { kind: 'error', message: files.message };
|
|
24
|
+
return {
|
|
25
|
+
kind: 'ok',
|
|
26
|
+
config: outcome.config,
|
|
27
|
+
localEnvFiles: files.files,
|
|
28
|
+
configProblem: undefined,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/** One human-readable line per diagnostic, safe to print. */
|
|
32
|
+
export function describeEnvDiagnostics(packDir, diagnostics) {
|
|
33
|
+
return diagnostics.map((d) => {
|
|
34
|
+
const file = displayEnvPath(packDir, d.source);
|
|
35
|
+
switch (d.kind) {
|
|
36
|
+
case 'malformed':
|
|
37
|
+
return `${file}:${d.line}: ignored — ${d.reason}`;
|
|
38
|
+
case 'unresolved':
|
|
39
|
+
return `${file}: ${d.key} references \${${d.ref}}, which no env file (or the environment) defines — expanded to ""`;
|
|
40
|
+
case 'cycle':
|
|
41
|
+
return `${file}: ${d.key} references \${${d.ref}} in a cycle — the reference expanded to ""`;
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=project-env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-env.js","sourceRoot":"","sources":["../../src/env/project-env.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAajC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,EAAyB,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAcvF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,GAA8C,EAC9C,OAAe;IAEf,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACnD,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO;YACL,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,SAAS;YACjB,aAAa,EAAE,SAAS;YACxB,aAAa,EAAE,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;SACxE,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;IAC/E,OAAO;QACL,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,aAAa,EAAE,KAAK,CAAC,KAAK;QAC1B,aAAa,EAAE,SAAS;KACzB,CAAC;AACJ,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,sBAAsB,CACpC,OAAe,EACf,WAAqC;IAErC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC3B,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QAC/C,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,WAAW;gBACd,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC;YACpD,KAAK,YAAY;gBACf,OAAO,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,GAAG,oEAAoE,CAAC;YACtH,KAAK,OAAO;gBACV,OAAO,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,GAAG,6CAA6C,CAAC;QACjG,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Injectable seams for `kindgi env`. Every filesystem side-effect
|
|
3
|
+
* flows through this shape so tests substitute fixtures — no real
|
|
4
|
+
* `.env.<envName>` files touch disk during unit tests.
|
|
5
|
+
*
|
|
6
|
+
* Production wiring lives at `packages/cli/src/env/defaults.ts`; tests
|
|
7
|
+
* pass `RunCliInputs.envRunners` with in-memory stubs.
|
|
8
|
+
*/
|
|
9
|
+
export interface EnvRunners {
|
|
10
|
+
/**
|
|
11
|
+
* Read `path` as UTF-8. Returns `null` when the file does not exist;
|
|
12
|
+
* throws for any other IO error.
|
|
13
|
+
*/
|
|
14
|
+
readonly readFile: (path: string) => Promise<string | null>;
|
|
15
|
+
/**
|
|
16
|
+
* Write `contents` to `path`. `mkdir -p` on the parent dir is the
|
|
17
|
+
* caller's job (env files sit next to `kindgi.config.ts`, which
|
|
18
|
+
* always exists).
|
|
19
|
+
*/
|
|
20
|
+
readonly writeFile: (path: string, contents: string) => Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=runners.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runners.d.ts","sourceRoot":"","sources":["../../src/env/runners.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AAEH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5D;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runners.js","sourceRoot":"","sources":["../../src/env/runners.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `.env.<envName>` set / unset primitives — re-exported from the shared
|
|
3
|
+
* `@kindgi/dotenv-file` package so `kindgi env` and the dev-mode
|
|
4
|
+
* `SecretBinding` in `@kindgi/secrets-dotenv` agree on the write shape.
|
|
5
|
+
*/
|
|
6
|
+
export { EnvValueNotRepresentableError, setKey, unsetKey } from '@kindgi/dotenv-file';
|
|
7
|
+
//# sourceMappingURL=writer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/env/writer.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AAEH,OAAO,EAAE,6BAA6B,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
/**
|
|
4
|
+
* `.env.<envName>` set / unset primitives — re-exported from the shared
|
|
5
|
+
* `@kindgi/dotenv-file` package so `kindgi env` and the dev-mode
|
|
6
|
+
* `SecretBinding` in `@kindgi/secrets-dotenv` agree on the write shape.
|
|
7
|
+
*/
|
|
8
|
+
export { EnvValueNotRepresentableError, setKey, unsetKey } from '@kindgi/dotenv-file';
|
|
9
|
+
//# sourceMappingURL=writer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/env/writer.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC;;;;GAIG;AAEH,OAAO,EAAE,6BAA6B,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type KindgiError } from '@kindgi/client';
|
|
2
|
+
/**
|
|
3
|
+
* The CLI-level exit envelope. Every command handler returns one so the
|
|
4
|
+
* top-level dispatcher can pick exit codes and write stdout/stderr
|
|
5
|
+
* exactly once.
|
|
6
|
+
*/
|
|
7
|
+
export interface CliError {
|
|
8
|
+
readonly kind: 'error';
|
|
9
|
+
readonly exitCode: number;
|
|
10
|
+
readonly stderr: string;
|
|
11
|
+
readonly stdout?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function cliError(message: string, exitCode?: number): CliError;
|
|
14
|
+
/**
|
|
15
|
+
* Format any thrown value into an error envelope suitable for CLI
|
|
16
|
+
* output. Recognises the SDK's `KindgiApiError` (typed wire error),
|
|
17
|
+
* plus the preview stub (`not-implemented-in-preview`), and falls back
|
|
18
|
+
* to raw `Error.message` for anything else.
|
|
19
|
+
*/
|
|
20
|
+
export declare function formatThrown(thrown: unknown, options: {
|
|
21
|
+
readonly verbose?: boolean;
|
|
22
|
+
readonly commandLabel: string;
|
|
23
|
+
}): CliError;
|
|
24
|
+
/**
|
|
25
|
+
* The SDK's `notImplementedInPreview()` currently returns a plain POJO
|
|
26
|
+
* (`{ code, message, method }`) that is `throw`n as-is — not wrapped
|
|
27
|
+
* in `KindgiApiError`. Recognise both shapes so callers see uniform
|
|
28
|
+
* error output.
|
|
29
|
+
*/
|
|
30
|
+
export declare function extractKindgiError(thrown: unknown): KindgiError | null;
|
|
31
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAIlE;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,QAAQ,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,OAAO,EACf,OAAO,EAAE;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GACrE,QAAQ,CA8BV;AAqDD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAatE"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
import { KindgiApiError } from '@kindgi/client';
|
|
4
|
+
import { UNWIRED_REASONS } from './commands/unwired.js';
|
|
5
|
+
export function cliError(message, exitCode = 1) {
|
|
6
|
+
return { kind: 'error', exitCode, stderr: `${message}\n` };
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Format any thrown value into an error envelope suitable for CLI
|
|
10
|
+
* output. Recognises the SDK's `KindgiApiError` (typed wire error),
|
|
11
|
+
* plus the preview stub (`not-implemented-in-preview`), and falls back
|
|
12
|
+
* to raw `Error.message` for anything else.
|
|
13
|
+
*/
|
|
14
|
+
export function formatThrown(thrown, options) {
|
|
15
|
+
const wire = extractKindgiError(thrown);
|
|
16
|
+
if (wire !== null) {
|
|
17
|
+
if (wire.code === 'not-implemented-in-preview') {
|
|
18
|
+
const label = options.commandLabel.startsWith('kindgi ')
|
|
19
|
+
? options.commandLabel
|
|
20
|
+
: `kindgi ${options.commandLabel}`;
|
|
21
|
+
const reason = UNWIRED_REASONS.get(label.slice('kindgi '.length));
|
|
22
|
+
return cliError(reason !== undefined
|
|
23
|
+
? `Command '${label}' is not available: ${reason}`
|
|
24
|
+
: `Command '${label}' is not yet wired — SDK method '${wire.method}' is not available in this preview release.`, 2);
|
|
25
|
+
}
|
|
26
|
+
// Validation failures (AJV rejects on tool input, schema-validation-failed
|
|
27
|
+
// on body input) are useless without the `issues` array — the whole
|
|
28
|
+
// point of the error is "which field failed how". Promote those from
|
|
29
|
+
// --verbose-only to always-shown; every other error stays terse
|
|
30
|
+
// unless --verbose asks otherwise.
|
|
31
|
+
const detail = options.verbose
|
|
32
|
+
? `\n${JSON.stringify(wire, null, 2)}`
|
|
33
|
+
: formatValidationDetail(wire);
|
|
34
|
+
return cliError(`Error [${wire.code}]: ${wire.message}${detail}`, 1);
|
|
35
|
+
}
|
|
36
|
+
if (thrown instanceof Error) {
|
|
37
|
+
const detail = options.verbose && thrown.stack ? `\n${thrown.stack}` : '';
|
|
38
|
+
return cliError(`Error: ${thrown.message}${detail}`, 1);
|
|
39
|
+
}
|
|
40
|
+
return cliError(`Error: ${String(thrown)}`, 1);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Format validation-issue detail inline (no --verbose required). We
|
|
44
|
+
* treat two error shapes as "validation":
|
|
45
|
+
*
|
|
46
|
+
* - `code === 'server' && serverCode === 'tool-invocation-failed'`
|
|
47
|
+
* with `fields.validationIssues` — AJV rejected the LLM's tool
|
|
48
|
+
* arguments. Also emit the `receivedInput` truncated payload so
|
|
49
|
+
* the author sees what the model actually sent.
|
|
50
|
+
* - `code === 'invalid-request'` with `issues[]` — server-side
|
|
51
|
+
* body validation. Emit each JSON-pointer + reason.
|
|
52
|
+
*
|
|
53
|
+
* Everything else returns `''` and stays on the terse one-liner.
|
|
54
|
+
*/
|
|
55
|
+
function formatValidationDetail(wire) {
|
|
56
|
+
if (wire.code === 'server' && wire.serverCode === 'tool-invocation-failed') {
|
|
57
|
+
const fields = wire.fields;
|
|
58
|
+
if (fields === undefined)
|
|
59
|
+
return '';
|
|
60
|
+
const issues = fields.validationIssues;
|
|
61
|
+
if (!Array.isArray(issues) || issues.length === 0)
|
|
62
|
+
return '';
|
|
63
|
+
const lines = [''];
|
|
64
|
+
for (const issue of issues) {
|
|
65
|
+
const path = typeof issue.instancePath === 'string' && issue.instancePath !== ''
|
|
66
|
+
? issue.instancePath
|
|
67
|
+
: typeof issue.path === 'string'
|
|
68
|
+
? issue.path
|
|
69
|
+
: '<root>';
|
|
70
|
+
const reason = typeof issue.message === 'string'
|
|
71
|
+
? issue.message
|
|
72
|
+
: typeof issue.keyword === 'string'
|
|
73
|
+
? issue.keyword
|
|
74
|
+
: JSON.stringify(issue);
|
|
75
|
+
lines.push(` ✗ ${path}: ${reason}`);
|
|
76
|
+
}
|
|
77
|
+
if (fields.receivedInput !== undefined) {
|
|
78
|
+
lines.push(` received: ${JSON.stringify(fields.receivedInput)}`);
|
|
79
|
+
}
|
|
80
|
+
return lines.join('\n');
|
|
81
|
+
}
|
|
82
|
+
if (wire.code === 'invalid-request' && wire.issues.length > 0) {
|
|
83
|
+
const lines = [''];
|
|
84
|
+
for (const issue of wire.issues) {
|
|
85
|
+
const path = issue.path === '' ? '<root>' : issue.path;
|
|
86
|
+
lines.push(` ✗ ${path}: ${issue.message}`);
|
|
87
|
+
}
|
|
88
|
+
return lines.join('\n');
|
|
89
|
+
}
|
|
90
|
+
return '';
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* The SDK's `notImplementedInPreview()` currently returns a plain POJO
|
|
94
|
+
* (`{ code, message, method }`) that is `throw`n as-is — not wrapped
|
|
95
|
+
* in `KindgiApiError`. Recognise both shapes so callers see uniform
|
|
96
|
+
* error output.
|
|
97
|
+
*/
|
|
98
|
+
export function extractKindgiError(thrown) {
|
|
99
|
+
if (thrown instanceof KindgiApiError)
|
|
100
|
+
return thrown.error;
|
|
101
|
+
if (thrown !== null &&
|
|
102
|
+
typeof thrown === 'object' &&
|
|
103
|
+
'code' in thrown &&
|
|
104
|
+
typeof thrown.code === 'string' &&
|
|
105
|
+
'message' in thrown &&
|
|
106
|
+
typeof thrown.message === 'string') {
|
|
107
|
+
return thrown;
|
|
108
|
+
}
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/help.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Command } from './commands/types.js';
|
|
2
|
+
export declare function rootHelpText(): string;
|
|
3
|
+
/** `path`: the command's words from the root, so a group lists only its wired subcommands. */
|
|
4
|
+
export declare function commandHelpText(command: Command, path?: readonly string[]): string;
|
|
5
|
+
//# sourceMappingURL=help.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAmB,MAAM,qBAAqB,CAAC;AAIpE,wBAAgB,YAAY,IAAI,MAAM,CAkBrC;AAED,8FAA8F;AAC9F,wBAAgB,eAAe,CAC7B,OAAO,EAAE,OAAO,EAChB,IAAI,GAAE,SAAS,MAAM,EAAmB,GACvC,MAAM,CAuBR"}
|