@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,300 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
/**
|
|
4
|
+
* `kindgi init` in an existing Python app — the Python counterpart of the
|
|
5
|
+
* augment scaffolder. Called from `runInit` when `detectInitMode` returns
|
|
6
|
+
* augment mode for a `pyproject.toml`.
|
|
7
|
+
*
|
|
8
|
+
* What it writes:
|
|
9
|
+
* - `pyproject.toml`, edited in place (`pyproject-patcher.ts`, each edit
|
|
10
|
+
* verified by re-parsing):
|
|
11
|
+
* - the `[tool.kindgi]` tables, appended — the pack id from
|
|
12
|
+
* `[project].name` (PEP 503-normalized), discovery under `kindgi/`,
|
|
13
|
+
* and for a Poetry app `dev.python = ["poetry", "run", "python"]`;
|
|
14
|
+
* - `kindgi` in `[project].dependencies`, and — for a uv app, while
|
|
15
|
+
* the SDK is unpublished — a `[tool.uv.sources]` entry for the
|
|
16
|
+
* Kindgi checkout's `sdks/python` (a uv app also gets Kindgi's
|
|
17
|
+
* `[tool.uv] required-version` unless it sets its own). An app whose dependencies can't be
|
|
18
|
+
* edited that way (Poetry 1, dynamic dependencies) gets the command
|
|
19
|
+
* to run instead.
|
|
20
|
+
* - `kindgi/{tools,guardrails,agents,flows}/.gitkeep`
|
|
21
|
+
* - `.claude/skills/` — the skills written for Python packs
|
|
22
|
+
* - `.gitignore` — Kindgi's local-state patterns
|
|
23
|
+
*
|
|
24
|
+
* The app's own code, env files, lockfile and virtualenv are left alone:
|
|
25
|
+
* the next steps say to `uv sync` (or the app's equivalent).
|
|
26
|
+
*/
|
|
27
|
+
import { mkdir, readFile, stat, writeFile } from 'node:fs/promises';
|
|
28
|
+
import { dirname, join } from 'node:path';
|
|
29
|
+
import { IMAGE_UV_VERSION, PACK_UV_REQUIRED_VERSION } from '../build/python-image.js';
|
|
30
|
+
import { satisfiesSpecifiers } from '../build/version-specifier.js';
|
|
31
|
+
import { PACK_ID_REGEX } from '../commands/init.js';
|
|
32
|
+
import { syncSkills } from '../commands/skills.js';
|
|
33
|
+
import { renderJson } from '../output.js';
|
|
34
|
+
import { binDisplay } from '../package-manager.js';
|
|
35
|
+
import { kindgiRequirementFor, resolveKindgiPythonSource, } from './dependency-specs.js';
|
|
36
|
+
import { patchGitignore } from './gitignore-patcher.js';
|
|
37
|
+
import { addProjectDependency, addTableKey, addUvSource, appendTables, normalizeName, readPyproject, } from './pyproject-patcher.js';
|
|
38
|
+
const SUBDIRS = ['agents', 'tools', 'guardrails', 'flows'];
|
|
39
|
+
const DEFAULT_VERSION = '0.1.0';
|
|
40
|
+
export async function runInitPythonAugment(inputs) {
|
|
41
|
+
const fail = (message) => ({
|
|
42
|
+
kind: 'error',
|
|
43
|
+
stderr: `${message}\n`,
|
|
44
|
+
exitCode: 1,
|
|
45
|
+
});
|
|
46
|
+
const exists = inputs.fileExists ?? fileExists;
|
|
47
|
+
const pyprojectPath = join(inputs.targetDir, 'pyproject.toml');
|
|
48
|
+
const original = await readFile(pyprojectPath, 'utf8');
|
|
49
|
+
const read = readPyproject(original);
|
|
50
|
+
if (read.kind === 'err')
|
|
51
|
+
return fail(`${pyprojectPath}: ${read.message}`);
|
|
52
|
+
const info = read.info;
|
|
53
|
+
if (info.isPack) {
|
|
54
|
+
return fail(`${pyprojectPath} already has a [tool.kindgi] table — this app is a Kindgi pack. Run \`${binDisplay('path', 'kindgi', ['dev'])}\` here.`);
|
|
55
|
+
}
|
|
56
|
+
const packId = resolvePackId(info, inputs.packIdOverride);
|
|
57
|
+
if (packId.kind === 'err')
|
|
58
|
+
return fail(packId.message);
|
|
59
|
+
const version = info.version ?? DEFAULT_VERSION;
|
|
60
|
+
const installer = await detectInstaller(inputs.targetDir, info, exists);
|
|
61
|
+
const source = inputs.pythonSource ?? (await resolveKindgiPythonSource());
|
|
62
|
+
if (source.kind === 'error')
|
|
63
|
+
return fail(source.message);
|
|
64
|
+
// Every pyproject edit is made and verified before anything is written.
|
|
65
|
+
const edited = editPyproject(original, { info, packId: packId.id, version, installer, source });
|
|
66
|
+
if (edited.kind === 'err')
|
|
67
|
+
return fail(`${pyprojectPath}: ${edited.message}`);
|
|
68
|
+
const created = [];
|
|
69
|
+
const skipped = [];
|
|
70
|
+
await writeFile(pyprojectPath, edited.text, 'utf8');
|
|
71
|
+
created.push(`${pyprojectPath} (${edited.changes.join('; ')})`);
|
|
72
|
+
for (const sub of SUBDIRS) {
|
|
73
|
+
const keep = join(inputs.targetDir, 'kindgi', sub, '.gitkeep');
|
|
74
|
+
if (await exists(keep)) {
|
|
75
|
+
skipped.push(keep);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
await mkdir(dirname(keep), { recursive: true });
|
|
79
|
+
await writeFile(keep, '', 'utf8');
|
|
80
|
+
created.push(keep);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (inputs.skillsRoot !== undefined) {
|
|
84
|
+
const report = await syncSkills({
|
|
85
|
+
skillsRoot: inputs.skillsRoot,
|
|
86
|
+
targetDir: inputs.targetDir,
|
|
87
|
+
language: 'python',
|
|
88
|
+
force: inputs.force,
|
|
89
|
+
dryRun: false,
|
|
90
|
+
});
|
|
91
|
+
for (const o of report.outcomes) {
|
|
92
|
+
const target = join(inputs.targetDir, '.claude', 'skills', o.name, 'SKILL.md');
|
|
93
|
+
if (o.status === 'added' || o.status === 'updated')
|
|
94
|
+
created.push(target);
|
|
95
|
+
else if (o.status !== 'local-only')
|
|
96
|
+
skipped.push(target);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const gitignorePath = join(inputs.targetDir, '.gitignore');
|
|
100
|
+
const gitignore = await patchGitignore(gitignorePath);
|
|
101
|
+
if (gitignore.kind === 'error') {
|
|
102
|
+
return fail(`Failed to patch ${gitignorePath}: ${gitignore.message ?? 'unknown error'}`);
|
|
103
|
+
}
|
|
104
|
+
if (gitignore.kind === 'patched') {
|
|
105
|
+
created.push(`${gitignorePath} (patched: +${gitignore.appended.join(', +')})`);
|
|
106
|
+
}
|
|
107
|
+
const nextSteps = [
|
|
108
|
+
...pythonAugmentNextSteps(installer, edited.dependencyAdded, source),
|
|
109
|
+
...uvVersionNote(info.uvRequiredVersion),
|
|
110
|
+
];
|
|
111
|
+
const summary = {
|
|
112
|
+
kind: 'augment',
|
|
113
|
+
language: 'python',
|
|
114
|
+
targetDir: inputs.targetDir,
|
|
115
|
+
packId: packId.id,
|
|
116
|
+
packVersion: version,
|
|
117
|
+
installer,
|
|
118
|
+
kindgi: source,
|
|
119
|
+
created,
|
|
120
|
+
skipped,
|
|
121
|
+
nextSteps,
|
|
122
|
+
};
|
|
123
|
+
return {
|
|
124
|
+
kind: 'ok',
|
|
125
|
+
rendered: {
|
|
126
|
+
stdout: renderJson(summary, 'json').stdout,
|
|
127
|
+
stderr: [
|
|
128
|
+
'',
|
|
129
|
+
` Kindgi added to ${inputs.targetDir} (a Python pack in the app).`,
|
|
130
|
+
` Pack id: ${packId.id} Version: ${version}`,
|
|
131
|
+
` Wrote ${created.length} file${created.length === 1 ? '' : 's'}; skipped ${skipped.length}.`,
|
|
132
|
+
'',
|
|
133
|
+
' Next steps:',
|
|
134
|
+
...nextSteps.map((step) => ` ${step}`),
|
|
135
|
+
'',
|
|
136
|
+
'',
|
|
137
|
+
].join('\n'),
|
|
138
|
+
},
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
function resolvePackId(info, override) {
|
|
142
|
+
if (override !== undefined && override !== '') {
|
|
143
|
+
return PACK_ID_REGEX.test(override)
|
|
144
|
+
? { kind: 'ok', id: override }
|
|
145
|
+
: {
|
|
146
|
+
kind: 'err',
|
|
147
|
+
message: `Invalid --pack-id: ${override}. Must match ${PACK_ID_REGEX.source}.`,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
if (info.name === undefined) {
|
|
151
|
+
return {
|
|
152
|
+
kind: 'err',
|
|
153
|
+
message: 'pyproject.toml has no [project].name (or [tool.poetry].name) to name the pack. Pass `--pack-id=<id>`.',
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
const candidate = normalizeName(info.name);
|
|
157
|
+
return PACK_ID_REGEX.test(candidate)
|
|
158
|
+
? { kind: 'ok', id: candidate }
|
|
159
|
+
: {
|
|
160
|
+
kind: 'err',
|
|
161
|
+
message: `Cannot derive a pack id from the project name "${info.name}" (candidate "${candidate}"); pack ids match ${PACK_ID_REGEX.source}. Pass \`--pack-id=<id>\`.`,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* The app's installer: uv when it says so (a `uv.lock`, `[tool.uv]`, the
|
|
166
|
+
* `uv_build` backend), Poetry likewise, pip for a `requirements.txt` app —
|
|
167
|
+
* otherwise uv, Kindgi's own toolchain.
|
|
168
|
+
*/
|
|
169
|
+
async function detectInstaller(dir, info, exists) {
|
|
170
|
+
if (info.usesUv || (await exists(join(dir, 'uv.lock'))))
|
|
171
|
+
return 'uv';
|
|
172
|
+
if (info.usesPoetry || (await exists(join(dir, 'poetry.lock'))))
|
|
173
|
+
return 'poetry';
|
|
174
|
+
if (await exists(join(dir, 'requirements.txt')))
|
|
175
|
+
return 'pip';
|
|
176
|
+
return 'uv';
|
|
177
|
+
}
|
|
178
|
+
function editPyproject(original, inputs) {
|
|
179
|
+
let text = original;
|
|
180
|
+
const changes = [];
|
|
181
|
+
let dependencyAdded = inputs.info.hasKindgiDependency;
|
|
182
|
+
if (inputs.info.dependencyStyle === 'pep621' && !inputs.info.hasKindgiDependency) {
|
|
183
|
+
const requirement = kindgiRequirementFor(inputs.source);
|
|
184
|
+
const dep = addProjectDependency(text, requirement);
|
|
185
|
+
if (dep.kind === 'ok') {
|
|
186
|
+
text = dep.text;
|
|
187
|
+
dependencyAdded = true;
|
|
188
|
+
changes.push(`+${requirement} in [project].dependencies`);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
// uv settings only for an app uv installs — Poetry and pip ignore
|
|
192
|
+
// `[tool.uv]`; their next steps install the SDK by path instead.
|
|
193
|
+
const usesUv = inputs.installer === 'uv';
|
|
194
|
+
// The uv versions the pack works with: the app's own when it sets them
|
|
195
|
+
// (`kindgi build` checks they include the image's uv), else Kindgi's.
|
|
196
|
+
if (usesUv && inputs.info.uvRequiredVersion === undefined) {
|
|
197
|
+
const uvVersion = addTableKey(text, 'tool.uv', 'required-version', JSON.stringify(PACK_UV_REQUIRED_VERSION));
|
|
198
|
+
if (uvVersion.kind === 'err') {
|
|
199
|
+
return {
|
|
200
|
+
kind: 'err',
|
|
201
|
+
message: `could not add [tool.uv] required-version: ${uvVersion.message}`,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
text = uvVersion.text;
|
|
205
|
+
changes.push(`+[tool.uv] required-version = "${PACK_UV_REQUIRED_VERSION}"`);
|
|
206
|
+
}
|
|
207
|
+
if (usesUv && dependencyAdded && inputs.source.kind === 'local-checkout') {
|
|
208
|
+
const uv = addUvSource(text, 'kindgi', `{ path = ${JSON.stringify(inputs.source.path)}, editable = true }`);
|
|
209
|
+
if (uv.kind === 'err')
|
|
210
|
+
return { kind: 'err', message: `could not add [tool.uv.sources] kindgi: ${uv.message}` };
|
|
211
|
+
text = uv.text;
|
|
212
|
+
changes.push("+[tool.uv.sources] kindgi (the Kindgi checkout's Python SDK)");
|
|
213
|
+
}
|
|
214
|
+
const poetryDev = inputs.installer === 'poetry';
|
|
215
|
+
const tables = appendTables(text, kindgiTables(inputs.packId, inputs.version, poetryDev), {
|
|
216
|
+
tool: {
|
|
217
|
+
kindgi: {
|
|
218
|
+
pack: { id: inputs.packId, version: inputs.version },
|
|
219
|
+
discovery: Object.fromEntries(SUBDIRS.map((s) => [s, `kindgi/${s}/**/*.py`])),
|
|
220
|
+
...(poetryDev && { dev: { python: ['poetry', 'run', 'python'] } }),
|
|
221
|
+
},
|
|
222
|
+
},
|
|
223
|
+
});
|
|
224
|
+
if (tables.kind === 'err')
|
|
225
|
+
return { kind: 'err', message: `could not add [tool.kindgi]: ${tables.message}` };
|
|
226
|
+
changes.push('+[tool.kindgi]');
|
|
227
|
+
return { kind: 'ok', text: tables.text, changes, dependencyAdded };
|
|
228
|
+
}
|
|
229
|
+
/** The appended `[tool.kindgi]` tables. */
|
|
230
|
+
export function kindgiTables(packId, version, poetry) {
|
|
231
|
+
const dev = poetry
|
|
232
|
+
? [
|
|
233
|
+
'[tool.kindgi.dev]',
|
|
234
|
+
'python = ["poetry", "run", "python"] # the interpreter that runs the pack',
|
|
235
|
+
]
|
|
236
|
+
: [
|
|
237
|
+
'# [tool.kindgi.dev]',
|
|
238
|
+
'# python = ["uv", "run", "python"] # default: .venv/bin/python, else python3',
|
|
239
|
+
];
|
|
240
|
+
return [
|
|
241
|
+
'# The Kindgi pack, added by `kindgi init`: its tools, guardrails, agents and',
|
|
242
|
+
"# flows live under kindgi/ (the app's own packages import by name there).",
|
|
243
|
+
'[tool.kindgi.pack]',
|
|
244
|
+
`id = ${JSON.stringify(packId)}`,
|
|
245
|
+
`version = ${JSON.stringify(version)}`,
|
|
246
|
+
'',
|
|
247
|
+
'[tool.kindgi.discovery]',
|
|
248
|
+
...SUBDIRS.map((s) => `${s} = "kindgi/${s}/**/*.py"`),
|
|
249
|
+
'',
|
|
250
|
+
...dev,
|
|
251
|
+
'',
|
|
252
|
+
].join('\n');
|
|
253
|
+
}
|
|
254
|
+
/** What to run next, for the app's installer. */
|
|
255
|
+
export function pythonAugmentNextSteps(installer, dependencyAdded, source) {
|
|
256
|
+
const sdk = source.kind === 'local-checkout' ? source.path : undefined;
|
|
257
|
+
// Quoted: the range has `<` and `>`, which a shell would read as redirects.
|
|
258
|
+
const requirement = `"${kindgiRequirementFor(source)}"`;
|
|
259
|
+
const install = dependencyAdded
|
|
260
|
+
? installer === 'uv'
|
|
261
|
+
? 'Install: uv sync'
|
|
262
|
+
: installer === 'poetry'
|
|
263
|
+
? `Install: ${sdk === undefined ? 'poetry install' : `poetry add --editable ${sdk}`}`
|
|
264
|
+
: `Install: ${sdk === undefined ? 'pip install -e .' : `pip install -e ${sdk} && pip install -e .`}`
|
|
265
|
+
: `Add the SDK to the app's dependencies: ${installer === 'uv'
|
|
266
|
+
? sdk === undefined
|
|
267
|
+
? `uv add ${requirement}`
|
|
268
|
+
: `uv add --editable ${sdk}`
|
|
269
|
+
: installer === 'poetry'
|
|
270
|
+
? sdk === undefined
|
|
271
|
+
? `poetry add ${requirement}`
|
|
272
|
+
: `poetry add --editable ${sdk}`
|
|
273
|
+
: sdk === undefined
|
|
274
|
+
? `pip install ${requirement} (and list it with the app’s requirements)`
|
|
275
|
+
: `pip install -e ${sdk}`}`;
|
|
276
|
+
return [
|
|
277
|
+
install,
|
|
278
|
+
`Boot the dev server: ${binDisplay('path', 'kindgi', ['dev'])}`,
|
|
279
|
+
'Write tools, guardrails and agents under kindgi/ — see .claude/skills/kindgi-python-getting-started/SKILL.md',
|
|
280
|
+
'Secrets: kindgi dev reads your .env and .env.local; tools read them from os.environ',
|
|
281
|
+
`Model provider: agents answer with the dev-echo fallback until you register one — e.g. ${binDisplay('path', 'kindgi', ['providers', 'register', '--preset=anthropic'])} (ANTHROPIC_API_KEY in .env)`,
|
|
282
|
+
];
|
|
283
|
+
}
|
|
284
|
+
/** A next step when the app's own uv range leaves out the uv that builds Kindgi images. */
|
|
285
|
+
function uvVersionNote(required) {
|
|
286
|
+
if (required === undefined || satisfiesSpecifiers(IMAGE_UV_VERSION, required) !== false)
|
|
287
|
+
return [];
|
|
288
|
+
return [
|
|
289
|
+
`uv: the app's required-version ("${required}") excludes uv ${IMAGE_UV_VERSION}, which builds Kindgi's images — \`kindgi build\` refuses until it includes it (e.g. "${PACK_UV_REQUIRED_VERSION}")`,
|
|
290
|
+
];
|
|
291
|
+
}
|
|
292
|
+
async function fileExists(path) {
|
|
293
|
+
try {
|
|
294
|
+
return (await stat(path)).isFile();
|
|
295
|
+
}
|
|
296
|
+
catch {
|
|
297
|
+
return false;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
//# sourceMappingURL=python-augment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python-augment.js","sourceRoot":"","sources":["../../src/init/python-augment.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** What a template's placeholders become. */
|
|
2
|
+
export interface Substitutions {
|
|
3
|
+
readonly PACK_NAME: string;
|
|
4
|
+
readonly PACK_ID: string;
|
|
5
|
+
readonly PACK_VERSION: string;
|
|
6
|
+
/** The python template's `kindgi` dependency, quoted (`"kindgi>=0.1,<0.2"` from a published CLI). */
|
|
7
|
+
readonly KINDGI_REQUIREMENT?: string;
|
|
8
|
+
/** The python template's `[tool.uv.sources]` block for `kindgi` (from a checkout; empty when published). */
|
|
9
|
+
readonly KINDGI_PYTHON_SOURCE?: string;
|
|
10
|
+
/** The python template's `[tool.uv] required-version`. */
|
|
11
|
+
readonly UV_REQUIRED_VERSION?: string;
|
|
12
|
+
}
|
|
13
|
+
/** Every file under `root`, as paths relative to it. */
|
|
14
|
+
export declare function collectTemplateFiles(root: string): Promise<string[]>;
|
|
15
|
+
/** A template file's path (relative to its template) as written into the pack. */
|
|
16
|
+
export declare function templateTarget(rel: string): string;
|
|
17
|
+
export declare function substitute(raw: string, subs: Substitutions): string;
|
|
18
|
+
//# sourceMappingURL=template-files.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-files.d.ts","sourceRoot":"","sources":["../../src/init/template-files.ts"],"names":[],"mappings":"AAaA,6CAA6C;AAC7C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,qGAAqG;IACrG,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,4GAA4G;IAC5G,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,0DAA0D;IAC1D,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACvC;AAED,wDAAwD;AACxD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAgB1E;AASD,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CAQnE"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
/**
|
|
4
|
+
* Template files, as `kindgi init` writes them. Files ending in `.tmpl`
|
|
5
|
+
* are rendered (suffix stripped, placeholders replaced); others are
|
|
6
|
+
* copied as they are. A few dotfiles are stored without their dot (see
|
|
7
|
+
* {@link templateTarget}).
|
|
8
|
+
*/
|
|
9
|
+
import { readdir } from 'node:fs/promises';
|
|
10
|
+
import { join } from 'node:path';
|
|
11
|
+
/** Every file under `root`, as paths relative to it. */
|
|
12
|
+
export async function collectTemplateFiles(root) {
|
|
13
|
+
const out = [];
|
|
14
|
+
async function walk(dir, prefix) {
|
|
15
|
+
const entries = await readdir(dir, { withFileTypes: true });
|
|
16
|
+
for (const entry of entries) {
|
|
17
|
+
const rel = prefix === '' ? entry.name : `${prefix}/${entry.name}`;
|
|
18
|
+
const abs = join(dir, entry.name);
|
|
19
|
+
if (entry.isDirectory()) {
|
|
20
|
+
await walk(abs, rel);
|
|
21
|
+
}
|
|
22
|
+
else if (entry.isFile()) {
|
|
23
|
+
out.push(rel);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
await walk(root, '');
|
|
28
|
+
return out;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Dotfiles a template stores under another name. npm renames a package's
|
|
32
|
+
* `.gitignore` to `.npmignore` when it installs it, so a template's own
|
|
33
|
+
* `.gitignore` would never reach a pack scaffolded by `npx @kindgi/cli`.
|
|
34
|
+
*/
|
|
35
|
+
const STORED_AS = { gitignore: '.gitignore' };
|
|
36
|
+
/** A template file's path (relative to its template) as written into the pack. */
|
|
37
|
+
export function templateTarget(rel) {
|
|
38
|
+
const path = rel.endsWith('.tmpl') ? rel.slice(0, -'.tmpl'.length) : rel;
|
|
39
|
+
const slash = path.lastIndexOf('/');
|
|
40
|
+
const name = path.slice(slash + 1);
|
|
41
|
+
const stored = STORED_AS[name];
|
|
42
|
+
return stored === undefined ? path : `${path.slice(0, slash + 1)}${stored}`;
|
|
43
|
+
}
|
|
44
|
+
export function substitute(raw, subs) {
|
|
45
|
+
return raw
|
|
46
|
+
.replaceAll('{{PACK_NAME}}', subs.PACK_NAME)
|
|
47
|
+
.replaceAll('{{PACK_ID}}', subs.PACK_ID)
|
|
48
|
+
.replaceAll('{{PACK_VERSION}}', subs.PACK_VERSION)
|
|
49
|
+
.replaceAll('{{KINDGI_REQUIREMENT}}', subs.KINDGI_REQUIREMENT ?? '"kindgi"')
|
|
50
|
+
.replaceAll('{{KINDGI_PYTHON_SOURCE}}', subs.KINDGI_PYTHON_SOURCE ?? '')
|
|
51
|
+
.replaceAll('{{UV_REQUIRED_VERSION}}', subs.UV_REQUIRED_VERSION ?? '');
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=template-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-files.js","sourceRoot":"","sources":["../../src/init/template-files.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAejC,wDAAwD;AACxD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAY;IACrD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,UAAU,IAAI,CAAC,GAAW,EAAE,MAAc;QAC7C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACnE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,MAAM,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACvB,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC1B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACrB,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,SAAS,GAAqC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;AAEhF,kFAAkF;AAClF,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACzE,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,IAAmB;IACzD,OAAO,GAAG;SACP,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC;SAC3C,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC;SACvC,UAAU,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,CAAC;SACjD,UAAU,CAAC,wBAAwB,EAAE,IAAI,CAAC,kBAAkB,IAAI,UAAU,CAAC;SAC3E,UAAU,CAAC,0BAA0B,EAAE,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC;SACvE,UAAU,CAAC,yBAAyB,EAAE,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;AAC3E,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/key/defaults.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAe,UAAU,EAAE,MAAM,cAAc,CAAC;AAE5D,eAAO,MAAM,gBAAgB,EAAE,UA0C9B,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
/**
|
|
4
|
+
* Production wiring for `kindgi key`. Composes `@kindgi/crypto`
|
|
5
|
+
* primitives + `node:fs/promises` into the `KeyRunners` shape. Loaded
|
|
6
|
+
* lazily by `main.ts` on `key` dispatch so unrelated commands don't
|
|
7
|
+
* pay the crypto load.
|
|
8
|
+
*/
|
|
9
|
+
import { mkdir, readFile, readdir, stat, writeFile } from 'node:fs/promises';
|
|
10
|
+
import { generateEd25519KeyPair, serializePrivateKeyPem, serializePublicKeyPem, } from '@kindgi/crypto';
|
|
11
|
+
export const REAL_KEY_RUNNERS = {
|
|
12
|
+
generateKeyPair: async () => {
|
|
13
|
+
const pair = generateEd25519KeyPair();
|
|
14
|
+
return {
|
|
15
|
+
publicKey: pair.publicKey,
|
|
16
|
+
privateKey: pair.privateKey,
|
|
17
|
+
privateKeyPem: serializePrivateKeyPem(pair.privateKey),
|
|
18
|
+
publicKeyPem: serializePublicKeyPem(pair.publicKey),
|
|
19
|
+
};
|
|
20
|
+
},
|
|
21
|
+
mkdir: async (path, mode) => {
|
|
22
|
+
await mkdir(path, { recursive: true, mode });
|
|
23
|
+
},
|
|
24
|
+
writeFile: async ({ path, contents, mode }) => {
|
|
25
|
+
await writeFile(path, contents, { mode });
|
|
26
|
+
},
|
|
27
|
+
readFile: async (path) => {
|
|
28
|
+
try {
|
|
29
|
+
return await readFile(path, 'utf8');
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
if (err.code === 'ENOENT')
|
|
33
|
+
return null;
|
|
34
|
+
throw err;
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
readdir: async (path) => {
|
|
38
|
+
try {
|
|
39
|
+
const entries = await readdir(path, { withFileTypes: true });
|
|
40
|
+
return entries.map((e) => ({ name: e.name, isFile: e.isFile() }));
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
if (err.code === 'ENOENT')
|
|
44
|
+
return [];
|
|
45
|
+
throw err;
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
exists: async (path) => {
|
|
49
|
+
try {
|
|
50
|
+
await stat(path);
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
if (err.code === 'ENOENT')
|
|
55
|
+
return false;
|
|
56
|
+
throw err;
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/key/defaults.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAIxB,MAAM,CAAC,MAAM,gBAAgB,GAAe;IAC1C,eAAe,EAAE,KAAK,IAAI,EAAE;QAC1B,MAAM,IAAI,GAAG,sBAAsB,EAAE,CAAC;QACtC,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,aAAa,EAAE,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC;YACtD,YAAY,EAAE,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC;SACpD,CAAC;IACJ,CAAC;IACD,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QAC1B,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IACD,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE;QAC5C,MAAM,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACvB,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC;YAClE,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAmC,EAAE;QACvD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7D,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;QACpE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,EAAE,CAAC;YAChE,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,KAAK,CAAC;YACnE,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compute a short fingerprint (`sha256:<first 12 bytes as hex>`) over
|
|
3
|
+
* the given public-key material. Accepts raw bytes or a PEM string.
|
|
4
|
+
*/
|
|
5
|
+
export declare function shortFingerprint(input: Uint8Array | string): string;
|
|
6
|
+
//# sourceMappingURL=fingerprint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../../src/key/fingerprint.ts"],"names":[],"mappings":"AAiBA;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAKnE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
/**
|
|
4
|
+
* Public-key fingerprint helper. `sha256:<first-12-bytes-hex>` — short
|
|
5
|
+
* enough to eyeball in a list, long enough to disambiguate keys within
|
|
6
|
+
* a single tenant's tree. Consumers wanting the full digest hash the
|
|
7
|
+
* public PEM themselves.
|
|
8
|
+
*
|
|
9
|
+
* Framework-grade note: this is intentionally NOT the same shape as
|
|
10
|
+
* `@kindgi/crypto`'s wire fingerprint (if one lands) — this is a
|
|
11
|
+
* CLI-local display convenience. When `SigningKeyBinding` admin ops
|
|
12
|
+
* ship, the CLI should switch to the server's canonical fingerprint.
|
|
13
|
+
*/
|
|
14
|
+
import { createHash } from 'node:crypto';
|
|
15
|
+
/**
|
|
16
|
+
* Compute a short fingerprint (`sha256:<first 12 bytes as hex>`) over
|
|
17
|
+
* the given public-key material. Accepts raw bytes or a PEM string.
|
|
18
|
+
*/
|
|
19
|
+
export function shortFingerprint(input) {
|
|
20
|
+
const hash = createHash('sha256');
|
|
21
|
+
hash.update(typeof input === 'string' ? input : Buffer.from(input));
|
|
22
|
+
const hex = hash.digest('hex').slice(0, 24);
|
|
23
|
+
return `sha256:${hex}`;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=fingerprint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../../src/key/fingerprint.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAA0B;IACzD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACpE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5C,OAAO,UAAU,GAAG,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/** Directory the CLI writes / reads keys under. `~/.kindgi/keys/`. */
|
|
2
|
+
export declare const KEYS_SUBDIR: readonly [".kindgi", "keys"];
|
|
3
|
+
/** File permissions the CLI enforces on the layout. */
|
|
4
|
+
export declare const PRIVATE_KEY_FILE_MODE = 384;
|
|
5
|
+
export declare const PUBLIC_KEY_FILE_MODE = 420;
|
|
6
|
+
export declare const KEYS_DIR_MODE = 448;
|
|
7
|
+
/** Regex a `keyId` must match. Same shape as pack IDs — lowercase kebab, optionally dot-namespaced. */
|
|
8
|
+
export declare const KEY_ID_REGEX: RegExp;
|
|
9
|
+
export interface KeyPaths {
|
|
10
|
+
readonly home: string;
|
|
11
|
+
readonly keysDir: string;
|
|
12
|
+
readonly privateKeyPath: (keyId: string) => string;
|
|
13
|
+
readonly publicKeyPath: (keyId: string) => string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Resolve every filesystem path from a home dir. Callers supply
|
|
17
|
+
* `--home` / `ctx.env.HOME` / `ctx.home`; this file's job is to keep
|
|
18
|
+
* the layout consistent regardless.
|
|
19
|
+
*/
|
|
20
|
+
export declare function resolveKeyPaths(homeInput: string): KeyPaths;
|
|
21
|
+
/**
|
|
22
|
+
* Resolve the effective home dir given the standard precedence:
|
|
23
|
+
* `--home` > `ctx.env.HOME` > `ctx.home` > `os.homedir()`.
|
|
24
|
+
*/
|
|
25
|
+
export declare function pickHome(inputs: {
|
|
26
|
+
readonly flag?: string;
|
|
27
|
+
readonly ctxHome?: string;
|
|
28
|
+
readonly envHome?: string;
|
|
29
|
+
}): string;
|
|
30
|
+
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/key/paths.ts"],"names":[],"mappings":"AAiBA,sEAAsE;AACtE,eAAO,MAAM,WAAW,8BAA+B,CAAC;AAExD,uDAAuD;AACvD,eAAO,MAAM,qBAAqB,MAAQ,CAAC;AAC3C,eAAO,MAAM,oBAAoB,MAAQ,CAAC;AAC1C,eAAO,MAAM,aAAa,MAAQ,CAAC;AAEnC,uGAAuG;AACvG,eAAO,MAAM,YAAY,QAA2B,CAAC;AAErD,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACnD,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACnD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAS3D;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,MAAM,CAKT"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
/**
|
|
4
|
+
* Filesystem layout for local signing keys under
|
|
5
|
+
* `<home>/.kindgi/keys/<keyId>.{pem,pub.pem}`. Kept in its own file so the
|
|
6
|
+
* command handler + tests share one source of truth for the layout.
|
|
7
|
+
*
|
|
8
|
+
* Home dir resolution order (matches other CLI commands):
|
|
9
|
+
* 1. `--home <dir>` flag
|
|
10
|
+
* 2. `HOME` env var (via `ctx.env.HOME` or `process.env.HOME`)
|
|
11
|
+
* 3. `os.homedir()`
|
|
12
|
+
*/
|
|
13
|
+
import { homedir } from 'node:os';
|
|
14
|
+
import { join } from 'node:path';
|
|
15
|
+
/** Directory the CLI writes / reads keys under. `~/.kindgi/keys/`. */
|
|
16
|
+
export const KEYS_SUBDIR = ['.kindgi', 'keys'];
|
|
17
|
+
/** File permissions the CLI enforces on the layout. */
|
|
18
|
+
export const PRIVATE_KEY_FILE_MODE = 0o600;
|
|
19
|
+
export const PUBLIC_KEY_FILE_MODE = 0o644;
|
|
20
|
+
export const KEYS_DIR_MODE = 0o700;
|
|
21
|
+
/** Regex a `keyId` must match. Same shape as pack IDs — lowercase kebab, optionally dot-namespaced. */
|
|
22
|
+
export const KEY_ID_REGEX = /^[a-z0-9][a-z0-9._-]*$/;
|
|
23
|
+
/**
|
|
24
|
+
* Resolve every filesystem path from a home dir. Callers supply
|
|
25
|
+
* `--home` / `ctx.env.HOME` / `ctx.home`; this file's job is to keep
|
|
26
|
+
* the layout consistent regardless.
|
|
27
|
+
*/
|
|
28
|
+
export function resolveKeyPaths(homeInput) {
|
|
29
|
+
const home = homeInput;
|
|
30
|
+
const keysDir = join(home, ...KEYS_SUBDIR);
|
|
31
|
+
return {
|
|
32
|
+
home,
|
|
33
|
+
keysDir,
|
|
34
|
+
privateKeyPath: (keyId) => join(keysDir, `${keyId}.pem`),
|
|
35
|
+
publicKeyPath: (keyId) => join(keysDir, `${keyId}.pub.pem`),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Resolve the effective home dir given the standard precedence:
|
|
40
|
+
* `--home` > `ctx.env.HOME` > `ctx.home` > `os.homedir()`.
|
|
41
|
+
*/
|
|
42
|
+
export function pickHome(inputs) {
|
|
43
|
+
if (typeof inputs.flag === 'string' && inputs.flag !== '')
|
|
44
|
+
return inputs.flag;
|
|
45
|
+
if (typeof inputs.envHome === 'string' && inputs.envHome !== '')
|
|
46
|
+
return inputs.envHome;
|
|
47
|
+
if (typeof inputs.ctxHome === 'string' && inputs.ctxHome !== '')
|
|
48
|
+
return inputs.ctxHome;
|
|
49
|
+
return homedir();
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/key/paths.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,sEAAsE;AACtE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,MAAM,CAAU,CAAC;AAExD,uDAAuD;AACvD,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAC3C,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAC1C,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC;AAEnC,uGAAuG;AACvG,MAAM,CAAC,MAAM,YAAY,GAAG,wBAAwB,CAAC;AASrD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,MAAM,IAAI,GAAG,SAAS,CAAC;IACvB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,WAAW,CAAC,CAAC;IAC3C,OAAO;QACL,IAAI;QACJ,OAAO;QACP,cAAc,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,MAAM,CAAC;QAChE,aAAa,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,UAAU,CAAC;KACpE,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,MAIxB;IACC,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IAC9E,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC;IACvF,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC;IACvF,OAAO,OAAO,EAAE,CAAC;AACnB,CAAC"}
|