@kindgi/cli 0.0.0-bootstrap.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +738 -1
- package/dist/build/apt.d.ts +16 -0
- package/dist/build/apt.d.ts.map +1 -0
- package/dist/build/apt.js +50 -0
- package/dist/build/apt.js.map +1 -0
- package/dist/build/bundle.d.ts +48 -0
- package/dist/build/bundle.d.ts.map +1 -0
- package/dist/build/bundle.js +125 -0
- package/dist/build/bundle.js.map +1 -0
- package/dist/build/containerfile.d.ts +27 -0
- package/dist/build/containerfile.d.ts.map +1 -0
- package/dist/build/containerfile.js +197 -0
- package/dist/build/containerfile.js.map +1 -0
- package/dist/build/context-files.d.ts +24 -0
- package/dist/build/context-files.d.ts.map +1 -0
- package/dist/build/context-files.js +99 -0
- package/dist/build/context-files.js.map +1 -0
- package/dist/build/defaults.d.ts +66 -0
- package/dist/build/defaults.d.ts.map +1 -0
- package/dist/build/defaults.js +597 -0
- package/dist/build/defaults.js.map +1 -0
- package/dist/build/envelope.d.ts +72 -0
- package/dist/build/envelope.d.ts.map +1 -0
- package/dist/build/envelope.js +76 -0
- package/dist/build/envelope.js.map +1 -0
- package/dist/build/host-install.d.ts +100 -0
- package/dist/build/host-install.d.ts.map +1 -0
- package/dist/build/host-install.js +443 -0
- package/dist/build/host-install.js.map +1 -0
- package/dist/build/image-config.d.ts +32 -0
- package/dist/build/image-config.d.ts.map +1 -0
- package/dist/build/image-config.js +129 -0
- package/dist/build/image-config.js.map +1 -0
- package/dist/build/integrity.d.ts +51 -0
- package/dist/build/integrity.d.ts.map +1 -0
- package/dist/build/integrity.js +75 -0
- package/dist/build/integrity.js.map +1 -0
- package/dist/build/node-image.d.ts +18 -0
- package/dist/build/node-image.d.ts.map +1 -0
- package/dist/build/node-image.js +46 -0
- package/dist/build/node-image.js.map +1 -0
- package/dist/build/pack-root.d.ts +69 -0
- package/dist/build/pack-root.d.ts.map +1 -0
- package/dist/build/pack-root.js +102 -0
- package/dist/build/pack-root.js.map +1 -0
- package/dist/build/poetry-requirements.d.ts +5 -0
- package/dist/build/poetry-requirements.d.ts.map +1 -0
- package/dist/build/poetry-requirements.js +8 -0
- package/dist/build/poetry-requirements.js.map +1 -0
- package/dist/build/python-image.d.ts +40 -0
- package/dist/build/python-image.d.ts.map +1 -0
- package/dist/build/python-image.js +197 -0
- package/dist/build/python-image.js.map +1 -0
- package/dist/build/runners.d.ts +259 -0
- package/dist/build/runners.d.ts.map +1 -0
- package/dist/build/runners.js +4 -0
- package/dist/build/runners.js.map +1 -0
- package/dist/build/version-specifier.d.ts +2 -0
- package/dist/build/version-specifier.d.ts.map +1 -0
- package/dist/build/version-specifier.js +70 -0
- package/dist/build/version-specifier.js.map +1 -0
- package/dist/cli-package.d.ts +15 -0
- package/dist/cli-package.d.ts.map +1 -0
- package/dist/cli-package.js +37 -0
- package/dist/cli-package.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +26 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/adapters.d.ts +3 -0
- package/dist/commands/adapters.d.ts.map +1 -0
- package/dist/commands/adapters.js +148 -0
- package/dist/commands/adapters.js.map +1 -0
- package/dist/commands/agents.d.ts +3 -0
- package/dist/commands/agents.d.ts.map +1 -0
- package/dist/commands/agents.js +82 -0
- package/dist/commands/agents.js.map +1 -0
- package/dist/commands/approvals.d.ts +3 -0
- package/dist/commands/approvals.d.ts.map +1 -0
- package/dist/commands/approvals.js +92 -0
- package/dist/commands/approvals.js.map +1 -0
- package/dist/commands/artifacts.d.ts +3 -0
- package/dist/commands/artifacts.d.ts.map +1 -0
- package/dist/commands/artifacts.js +87 -0
- package/dist/commands/artifacts.js.map +1 -0
- package/dist/commands/auth.d.ts +25 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +283 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/build.d.ts +46 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +902 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/capabilities.d.ts +3 -0
- package/dist/commands/capabilities.d.ts.map +1 -0
- package/dist/commands/capabilities.js +38 -0
- package/dist/commands/capabilities.js.map +1 -0
- package/dist/commands/conversations.d.ts +3 -0
- package/dist/commands/conversations.d.ts.map +1 -0
- package/dist/commands/conversations.js +75 -0
- package/dist/commands/conversations.js.map +1 -0
- package/dist/commands/deploy.d.ts +7 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +697 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/dev.d.ts +43 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +1110 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/env.d.ts +27 -0
- package/dist/commands/env.d.ts.map +1 -0
- package/dist/commands/env.js +816 -0
- package/dist/commands/env.js.map +1 -0
- package/dist/commands/feedback.d.ts +33 -0
- package/dist/commands/feedback.d.ts.map +1 -0
- package/dist/commands/feedback.js +374 -0
- package/dist/commands/feedback.js.map +1 -0
- package/dist/commands/flows.d.ts +3 -0
- package/dist/commands/flows.d.ts.map +1 -0
- package/dist/commands/flows.js +60 -0
- package/dist/commands/flows.js.map +1 -0
- package/dist/commands/guardrails.d.ts +3 -0
- package/dist/commands/guardrails.d.ts.map +1 -0
- package/dist/commands/guardrails.js +89 -0
- package/dist/commands/guardrails.js.map +1 -0
- package/dist/commands/health.d.ts +8 -0
- package/dist/commands/health.d.ts.map +1 -0
- package/dist/commands/health.js +40 -0
- package/dist/commands/health.js.map +1 -0
- package/dist/commands/helpers.d.ts +48 -0
- package/dist/commands/helpers.d.ts.map +1 -0
- package/dist/commands/helpers.js +110 -0
- package/dist/commands/helpers.js.map +1 -0
- package/dist/commands/index.d.ts +7 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +90 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +46 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +454 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/key.d.ts +3 -0
- package/dist/commands/key.d.ts.map +1 -0
- package/dist/commands/key.js +322 -0
- package/dist/commands/key.js.map +1 -0
- package/dist/commands/mcp.d.ts +43 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +433 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/memory.d.ts +3 -0
- package/dist/commands/memory.d.ts.map +1 -0
- package/dist/commands/memory.js +82 -0
- package/dist/commands/memory.js.map +1 -0
- package/dist/commands/observations.d.ts +3 -0
- package/dist/commands/observations.d.ts.map +1 -0
- package/dist/commands/observations.js +27 -0
- package/dist/commands/observations.js.map +1 -0
- package/dist/commands/proposals.d.ts +3 -0
- package/dist/commands/proposals.d.ts.map +1 -0
- package/dist/commands/proposals.js +116 -0
- package/dist/commands/proposals.js.map +1 -0
- package/dist/commands/provenance.d.ts +3 -0
- package/dist/commands/provenance.d.ts.map +1 -0
- package/dist/commands/provenance.js +53 -0
- package/dist/commands/provenance.js.map +1 -0
- package/dist/commands/providers.d.ts +3 -0
- package/dist/commands/providers.d.ts.map +1 -0
- package/dist/commands/providers.js +212 -0
- package/dist/commands/providers.js.map +1 -0
- package/dist/commands/reviewers.d.ts +3 -0
- package/dist/commands/reviewers.d.ts.map +1 -0
- package/dist/commands/reviewers.js +78 -0
- package/dist/commands/reviewers.js.map +1 -0
- package/dist/commands/runs.d.ts +3 -0
- package/dist/commands/runs.d.ts.map +1 -0
- package/dist/commands/runs.js +223 -0
- package/dist/commands/runs.js.map +1 -0
- package/dist/commands/secrets.d.ts +18 -0
- package/dist/commands/secrets.d.ts.map +1 -0
- package/dist/commands/secrets.js +702 -0
- package/dist/commands/secrets.js.map +1 -0
- package/dist/commands/skills.d.ts +64 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +430 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/test.d.ts +5 -0
- package/dist/commands/test.d.ts.map +1 -0
- package/dist/commands/test.js +181 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/commands/tokens.d.ts +3 -0
- package/dist/commands/tokens.d.ts.map +1 -0
- package/dist/commands/tokens.js +33 -0
- package/dist/commands/tokens.js.map +1 -0
- package/dist/commands/tools.d.ts +3 -0
- package/dist/commands/tools.d.ts.map +1 -0
- package/dist/commands/tools.js +162 -0
- package/dist/commands/tools.js.map +1 -0
- package/dist/commands/types.d.ts +54 -0
- package/dist/commands/types.d.ts.map +1 -0
- package/dist/commands/types.js +4 -0
- package/dist/commands/types.js.map +1 -0
- package/dist/commands/unwired.d.ts +22 -0
- package/dist/commands/unwired.d.ts.map +1 -0
- package/dist/commands/unwired.js +52 -0
- package/dist/commands/unwired.js.map +1 -0
- package/dist/commands/version.d.ts +8 -0
- package/dist/commands/version.d.ts.map +1 -0
- package/dist/commands/version.js +41 -0
- package/dist/commands/version.js.map +1 -0
- package/dist/config.d.ts +42 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +83 -0
- package/dist/config.js.map +1 -0
- package/dist/context.d.ts +162 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +45 -0
- package/dist/context.js.map +1 -0
- package/dist/deploy/defaults.d.ts +14 -0
- package/dist/deploy/defaults.d.ts.map +1 -0
- package/dist/deploy/defaults.js +37 -0
- package/dist/deploy/defaults.js.map +1 -0
- package/dist/deploy/envelope-loader.d.ts +24 -0
- package/dist/deploy/envelope-loader.d.ts.map +1 -0
- package/dist/deploy/envelope-loader.js +141 -0
- package/dist/deploy/envelope-loader.js.map +1 -0
- package/dist/deploy/post.d.ts +48 -0
- package/dist/deploy/post.d.ts.map +1 -0
- package/dist/deploy/post.js +210 -0
- package/dist/deploy/post.js.map +1 -0
- package/dist/deploy/response.d.ts +42 -0
- package/dist/deploy/response.d.ts.map +1 -0
- package/dist/deploy/response.js +128 -0
- package/dist/deploy/response.js.map +1 -0
- package/dist/deploy/runners.d.ts +218 -0
- package/dist/deploy/runners.d.ts.map +1 -0
- package/dist/deploy/runners.js +4 -0
- package/dist/deploy/runners.js.map +1 -0
- package/dist/dev/bundler.d.ts +10 -0
- package/dist/dev/bundler.d.ts.map +1 -0
- package/dist/dev/bundler.js +235 -0
- package/dist/dev/bundler.js.map +1 -0
- package/dist/dev/defaults.d.ts +140 -0
- package/dist/dev/defaults.d.ts.map +1 -0
- package/dist/dev/defaults.js +709 -0
- package/dist/dev/defaults.js.map +1 -0
- package/dist/dev/dev-only-imports.d.ts +15 -0
- package/dist/dev/dev-only-imports.d.ts.map +1 -0
- package/dist/dev/dev-only-imports.js +57 -0
- package/dist/dev/dev-only-imports.js.map +1 -0
- package/dist/dev/docker-compose.dev.yml +68 -0
- package/dist/dev/index-child.d.ts +2 -0
- package/dist/dev/index-child.d.ts.map +1 -0
- package/dist/dev/index-child.js +53 -0
- package/dist/dev/index-child.js.map +1 -0
- package/dist/dev/pack-code.d.ts +36 -0
- package/dist/dev/pack-code.d.ts.map +1 -0
- package/dist/dev/pack-code.js +129 -0
- package/dist/dev/pack-code.js.map +1 -0
- package/dist/dev/pack-env.d.ts +13 -0
- package/dist/dev/pack-env.d.ts.map +1 -0
- package/dist/dev/pack-env.js +36 -0
- package/dist/dev/pack-env.js.map +1 -0
- package/dist/dev/pack-service.d.ts +40 -0
- package/dist/dev/pack-service.d.ts.map +1 -0
- package/dist/dev/pack-service.js +189 -0
- package/dist/dev/pack-service.js.map +1 -0
- package/dist/dev/paths.d.ts +22 -0
- package/dist/dev/paths.d.ts.map +1 -0
- package/dist/dev/paths.js +35 -0
- package/dist/dev/paths.js.map +1 -0
- package/dist/dev/postgres-container.d.ts +77 -0
- package/dist/dev/postgres-container.d.ts.map +1 -0
- package/dist/dev/postgres-container.js +346 -0
- package/dist/dev/postgres-container.js.map +1 -0
- package/dist/dev/python-builder.d.ts +16 -0
- package/dist/dev/python-builder.d.ts.map +1 -0
- package/dist/dev/python-builder.js +122 -0
- package/dist/dev/python-builder.js.map +1 -0
- package/dist/dev/register.d.ts +71 -0
- package/dist/dev/register.d.ts.map +1 -0
- package/dist/dev/register.js +54 -0
- package/dist/dev/register.js.map +1 -0
- package/dist/dev/runners.d.ts +312 -0
- package/dist/dev/runners.d.ts.map +1 -0
- package/dist/dev/runners.js +4 -0
- package/dist/dev/runners.js.map +1 -0
- package/dist/dev/runtime-container.d.ts +71 -0
- package/dist/dev/runtime-container.d.ts.map +1 -0
- package/dist/dev/runtime-container.js +173 -0
- package/dist/dev/runtime-container.js.map +1 -0
- package/dist/dev/runtime-env.d.ts +62 -0
- package/dist/dev/runtime-env.d.ts.map +1 -0
- package/dist/dev/runtime-env.js +100 -0
- package/dist/dev/runtime-env.js.map +1 -0
- package/dist/dev/runtime-image.d.ts +26 -0
- package/dist/dev/runtime-image.d.ts.map +1 -0
- package/dist/dev/runtime-image.js +44 -0
- package/dist/dev/runtime-image.js.map +1 -0
- package/dist/dev/runtime-registry.d.ts +73 -0
- package/dist/dev/runtime-registry.d.ts.map +1 -0
- package/dist/dev/runtime-registry.js +111 -0
- package/dist/dev/runtime-registry.js.map +1 -0
- package/dist/env/defaults.d.ts +3 -0
- package/dist/env/defaults.d.ts.map +1 -0
- package/dist/env/defaults.js +22 -0
- package/dist/env/defaults.js.map +1 -0
- package/dist/env/pack-env-plan.d.ts +70 -0
- package/dist/env/pack-env-plan.d.ts.map +1 -0
- package/dist/env/pack-env-plan.js +236 -0
- package/dist/env/pack-env-plan.js.map +1 -0
- package/dist/env/parser.d.ts +9 -0
- package/dist/env/parser.d.ts.map +1 -0
- package/dist/env/parser.js +11 -0
- package/dist/env/parser.js.map +1 -0
- package/dist/env/project-env.d.ts +34 -0
- package/dist/env/project-env.d.ts.map +1 -0
- package/dist/env/project-env.js +45 -0
- package/dist/env/project-env.js.map +1 -0
- package/dist/env/runners.d.ts +22 -0
- package/dist/env/runners.d.ts.map +1 -0
- package/dist/env/runners.js +4 -0
- package/dist/env/runners.js.map +1 -0
- package/dist/env/writer.d.ts +7 -0
- package/dist/env/writer.d.ts.map +1 -0
- package/dist/env/writer.js +9 -0
- package/dist/env/writer.js.map +1 -0
- package/dist/errors.d.ts +31 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +111 -0
- package/dist/errors.js.map +1 -0
- package/dist/help.d.ts +5 -0
- package/dist/help.d.ts.map +1 -0
- package/dist/help.js +61 -0
- package/dist/help.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/init/augment-scaffolder.d.ts +86 -0
- package/dist/init/augment-scaffolder.d.ts.map +1 -0
- package/dist/init/augment-scaffolder.js +538 -0
- package/dist/init/augment-scaffolder.js.map +1 -0
- package/dist/init/dependency-specs.d.ts +58 -0
- package/dist/init/dependency-specs.d.ts.map +1 -0
- package/dist/init/dependency-specs.js +153 -0
- package/dist/init/dependency-specs.js.map +1 -0
- package/dist/init/gitignore-patcher.d.ts +23 -0
- package/dist/init/gitignore-patcher.d.ts.map +1 -0
- package/dist/init/gitignore-patcher.js +103 -0
- package/dist/init/gitignore-patcher.js.map +1 -0
- package/dist/init/mode-detect.d.ts +34 -0
- package/dist/init/mode-detect.d.ts.map +1 -0
- package/dist/init/mode-detect.js +115 -0
- package/dist/init/mode-detect.js.map +1 -0
- package/dist/init/package-json-patcher.d.ts +36 -0
- package/dist/init/package-json-patcher.d.ts.map +1 -0
- package/dist/init/package-json-patcher.js +128 -0
- package/dist/init/package-json-patcher.js.map +1 -0
- package/dist/init/pnpm-workspace-patcher.d.ts +55 -0
- package/dist/init/pnpm-workspace-patcher.d.ts.map +1 -0
- package/dist/init/pnpm-workspace-patcher.js +248 -0
- package/dist/init/pnpm-workspace-patcher.js.map +1 -0
- package/dist/init/pyproject-patcher.d.ts +56 -0
- package/dist/init/pyproject-patcher.d.ts.map +1 -0
- package/dist/init/pyproject-patcher.js +324 -0
- package/dist/init/pyproject-patcher.js.map +1 -0
- package/dist/init/python-augment.d.ts +22 -0
- package/dist/init/python-augment.d.ts.map +1 -0
- package/dist/init/python-augment.js +300 -0
- package/dist/init/python-augment.js.map +1 -0
- package/dist/init/template-files.d.ts +18 -0
- package/dist/init/template-files.d.ts.map +1 -0
- package/dist/init/template-files.js +53 -0
- package/dist/init/template-files.js.map +1 -0
- package/dist/key/defaults.d.ts +3 -0
- package/dist/key/defaults.d.ts.map +1 -0
- package/dist/key/defaults.js +60 -0
- package/dist/key/defaults.js.map +1 -0
- package/dist/key/fingerprint.d.ts +6 -0
- package/dist/key/fingerprint.d.ts.map +1 -0
- package/dist/key/fingerprint.js +25 -0
- package/dist/key/fingerprint.js.map +1 -0
- package/dist/key/paths.d.ts +30 -0
- package/dist/key/paths.d.ts.map +1 -0
- package/dist/key/paths.js +51 -0
- package/dist/key/paths.js.map +1 -0
- package/dist/key/runners.d.ts +60 -0
- package/dist/key/runners.d.ts.map +1 -0
- package/dist/key/runners.js +4 -0
- package/dist/key/runners.js.map +1 -0
- package/dist/main.d.ts +113 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +199 -0
- package/dist/main.js.map +1 -0
- package/dist/mcp/launcher.d.ts +143 -0
- package/dist/mcp/launcher.d.ts.map +1 -0
- package/dist/mcp/launcher.js +393 -0
- package/dist/mcp/launcher.js.map +1 -0
- package/dist/mcp/preset-loader.d.ts +29 -0
- package/dist/mcp/preset-loader.d.ts.map +1 -0
- package/dist/mcp/preset-loader.js +217 -0
- package/dist/mcp/preset-loader.js.map +1 -0
- package/dist/mcp/preset-types.d.ts +71 -0
- package/dist/mcp/preset-types.d.ts.map +1 -0
- package/dist/mcp/preset-types.js +4 -0
- package/dist/mcp/preset-types.js.map +1 -0
- package/dist/mcp/presets/README.md +68 -0
- package/dist/mcp/presets/postgres.json +15 -0
- package/dist/output.d.ts +26 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +46 -0
- package/dist/output.js.map +1 -0
- package/dist/pack-config.d.ts +37 -0
- package/dist/pack-config.d.ts.map +1 -0
- package/dist/pack-config.js +65 -0
- package/dist/pack-config.js.map +1 -0
- package/dist/package-manager.d.ts +33 -0
- package/dist/package-manager.d.ts.map +1 -0
- package/dist/package-manager.js +129 -0
- package/dist/package-manager.js.map +1 -0
- package/dist/parse.d.ts +88 -0
- package/dist/parse.d.ts.map +1 -0
- package/dist/parse.js +100 -0
- package/dist/parse.js.map +1 -0
- package/dist/providers/preset-loader.d.ts +47 -0
- package/dist/providers/preset-loader.d.ts.map +1 -0
- package/dist/providers/preset-loader.js +107 -0
- package/dist/providers/preset-loader.js.map +1 -0
- package/dist/providers/presets/anthropic.json +47 -0
- package/dist/providers/presets/gemini.json +40 -0
- package/dist/reference.d.ts +28 -0
- package/dist/reference.d.ts.map +1 -0
- package/dist/reference.js +52 -0
- package/dist/reference.js.map +1 -0
- package/dist/sdk-package.d.ts +9 -0
- package/dist/sdk-package.d.ts.map +1 -0
- package/dist/sdk-package.js +20 -0
- package/dist/sdk-package.js.map +1 -0
- package/dist/sdk-skills/kindgi-authoring-agents/SKILL.md +252 -0
- package/dist/sdk-skills/kindgi-authoring-flows/SKILL.md +302 -0
- package/dist/sdk-skills/kindgi-authoring-guardrails/SKILL.md +297 -0
- package/dist/sdk-skills/kindgi-authoring-mcp-servers/SKILL.md +289 -0
- package/dist/sdk-skills/kindgi-authoring-providers/SKILL.md +705 -0
- package/dist/sdk-skills/kindgi-authoring-tools/SKILL.md +298 -0
- package/dist/sdk-skills/kindgi-framework-feedback/SKILL.md +211 -0
- package/dist/sdk-skills/kindgi-getting-started/SKILL.md +189 -0
- package/dist/sdk-skills/kindgi-python-authoring-agents/SKILL.md +205 -0
- package/dist/sdk-skills/kindgi-python-authoring-flows/SKILL.md +325 -0
- package/dist/sdk-skills/kindgi-python-authoring-guardrails/SKILL.md +176 -0
- package/dist/sdk-skills/kindgi-python-authoring-tools/SKILL.md +305 -0
- package/dist/sdk-skills/kindgi-python-getting-started/SKILL.md +242 -0
- package/dist/stop-signal.d.ts +15 -0
- package/dist/stop-signal.d.ts.map +1 -0
- package/dist/stop-signal.js +16 -0
- package/dist/stop-signal.js.map +1 -0
- package/dist/templates/minimal/.nvmrc +1 -0
- package/dist/templates/minimal/AGENTS.md +23 -0
- package/dist/templates/minimal/README.md.tmpl +69 -0
- package/dist/templates/minimal/agents/.gitkeep +0 -0
- package/dist/templates/minimal/flows/.gitkeep +0 -0
- package/dist/templates/minimal/gitignore +8 -0
- package/dist/templates/minimal/guardrails/.gitkeep +0 -0
- package/dist/templates/minimal/kindgi.config.ts.tmpl +44 -0
- package/dist/templates/minimal/package.json.tmpl +25 -0
- package/dist/templates/minimal/pnpm-workspace.yaml +8 -0
- package/dist/templates/minimal/tools/.gitkeep +0 -0
- package/dist/templates/minimal/tsconfig.json.tmpl +27 -0
- package/dist/templates/minimal/vitest.config.ts.tmpl +14 -0
- package/dist/templates/python/AGENTS.md +30 -0
- package/dist/templates/python/README.md.tmpl +56 -0
- package/dist/templates/python/agents/echo_agent.py.tmpl +23 -0
- package/dist/templates/python/flows/echo_flow.py.tmpl +17 -0
- package/dist/templates/python/gitignore +9 -0
- package/dist/templates/python/guardrails/response_not_empty.py.tmpl +27 -0
- package/dist/templates/python/pyproject.toml.tmpl +42 -0
- package/dist/templates/python/tests/test_tools.py.tmpl +22 -0
- package/dist/templates/python/tools/echo.py.tmpl +27 -0
- package/dist/templates/python/tools/greet.py.tmpl +20 -0
- package/dist/templates/sample/.nvmrc +1 -0
- package/dist/templates/sample/AGENTS.md +23 -0
- package/dist/templates/sample/README.md.tmpl +85 -0
- package/dist/templates/sample/agents/echo-agent/index.ts.tmpl +34 -0
- package/dist/templates/sample/flows/echo-flow/index.ts.tmpl +59 -0
- package/dist/templates/sample/gitignore +8 -0
- package/dist/templates/sample/guardrails/response-not-empty/index.ts.tmpl +58 -0
- package/dist/templates/sample/kindgi.config.ts.tmpl +41 -0
- package/dist/templates/sample/package.json.tmpl +25 -0
- package/dist/templates/sample/pnpm-workspace.yaml +8 -0
- package/dist/templates/sample/tools/echo/index.test.ts.tmpl +31 -0
- package/dist/templates/sample/tools/echo/index.ts.tmpl +37 -0
- package/dist/templates/sample/tools/fetch-httpbin/index.ts.tmpl +60 -0
- package/dist/templates/sample/tools/greet/index.ts.tmpl +35 -0
- package/dist/templates/sample/tsconfig.json.tmpl +27 -0
- package/dist/templates/sample/vitest.config.ts.tmpl +14 -0
- package/dist/terminal-input.d.ts +17 -0
- package/dist/terminal-input.d.ts.map +1 -0
- package/dist/terminal-input.js +88 -0
- package/dist/terminal-input.js.map +1 -0
- package/dist/test/defaults.d.ts +3 -0
- package/dist/test/defaults.d.ts.map +1 -0
- package/dist/test/defaults.js +104 -0
- package/dist/test/defaults.js.map +1 -0
- package/dist/test/runners.d.ts +60 -0
- package/dist/test/runners.d.ts.map +1 -0
- package/dist/test/runners.js +4 -0
- package/dist/test/runners.js.map +1 -0
- package/dist/version-info.d.ts +9 -0
- package/dist/version-info.d.ts.map +1 -0
- package/dist/version-info.js +27 -0
- package/dist/version-info.js.map +1 -0
- package/dist/write-fully.d.ts +13 -0
- package/dist/write-fully.d.ts.map +1 -0
- package/dist/write-fully.js +17 -0
- package/dist/write-fully.js.map +1 -0
- package/package.json +63 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-env.d.ts","sourceRoot":"","sources":["../../src/dev/runtime-env.ts"],"names":[],"mappings":"AAgBA,oEAAoE;AACpE,eAAO,MAAM,gBAAgB,UAAU,CAAC;AACxC,6EAA6E;AAC7E,eAAO,MAAM,0BAA0B,wCAAwC,CAAC;AAChF,eAAO,MAAM,wBAAwB,yCAAyC,CAAC;AAE/E,wCAAwC;AACxC,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,MAAM,WAAW,eAAe;IAC9B,2DAA2D;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,yFAAyF;IACzF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,2CAA2C;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,gGAAgG;IAChG,QAAQ,CAAC,WAAW,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACvE,oDAAoD;IACpD,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,0DAA0D;IAC1D,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,yEAAyE;IACzE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,wFAAwF;IACxF,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC;;;;OAIG;IACH,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC5D;AAKD,oDAAoD;AACpD,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAoC9E;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;CACjE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAalC;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC,CAef"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
/**
|
|
4
|
+
* The runtime's environment under `kindgi dev`: everything the Kindgi
|
|
5
|
+
* runtime container is told, written to `<pack>/.kindgi/dev/runtime.env`
|
|
6
|
+
* (mode 0600) and handed to `docker run --env-file`. The runtime reads
|
|
7
|
+
* nothing else from the developer's machine. Names are
|
|
8
|
+
* `@kindgi/env-schema`'s.
|
|
9
|
+
*/
|
|
10
|
+
import { chmod, mkdir, writeFile } from 'node:fs/promises';
|
|
11
|
+
import { dirname, join } from 'node:path';
|
|
12
|
+
import { LOCAL_ENV_NAME, readPackEnv } from '@kindgi/secrets-dotenv';
|
|
13
|
+
/** Where the pack directory is mounted in the runtime container. */
|
|
14
|
+
export const RUNTIME_PACK_DIR = '/pack';
|
|
15
|
+
/** Where read-only credential files are mounted in the runtime container. */
|
|
16
|
+
export const RUNTIME_GOOGLE_CREDENTIALS = '/run/kindgi/google-credentials.json';
|
|
17
|
+
export const RUNTIME_PUBLIC_TOKEN_KEY = '/run/kindgi/public-token-signing.pem';
|
|
18
|
+
/** `<pack>/.kindgi/dev/runtime.env`. */
|
|
19
|
+
export function runtimeEnvPath(packDir) {
|
|
20
|
+
return join(packDir, '.kindgi', 'dev', 'runtime.env');
|
|
21
|
+
}
|
|
22
|
+
/** Names whose shell value is a path on the host: never handed to the container. */
|
|
23
|
+
const HOST_PATH_NAMES = new Set(['GOOGLE_APPLICATION_CREDENTIALS']);
|
|
24
|
+
/** The runtime container's environment, by name. */
|
|
25
|
+
export function buildRuntimeEnv(input) {
|
|
26
|
+
const env = {
|
|
27
|
+
KINDGI_DEV: 'true',
|
|
28
|
+
KINDGI_ENV: LOCAL_ENV_NAME,
|
|
29
|
+
KINDGI_API_PORT: String(input.apiPort),
|
|
30
|
+
...(input.apiHost !== undefined && { KINDGI_API_HOST: input.apiHost }),
|
|
31
|
+
...(input.hostAlias !== undefined && { KINDGI_DEV_HOST_ALIAS: input.hostAlias }),
|
|
32
|
+
KINDGI_DATABASE_URL: input.databaseUrl,
|
|
33
|
+
KINDGI_TENANT_ID: input.tenantId,
|
|
34
|
+
KINDGI_API_TOKEN: input.token,
|
|
35
|
+
KINDGI_SEED_USER_ID: input.seedUserId,
|
|
36
|
+
KINDGI_PACK_DIR: input.packDir,
|
|
37
|
+
KINDGI_DEV_CONSOLE_LOGIN: 'true',
|
|
38
|
+
KINDGI_SECRETS_BACKEND: 'dotenv',
|
|
39
|
+
KINDGI_SECRETS_DOTENV_DIR: input.packDir,
|
|
40
|
+
...(input.localEnvFiles !== undefined && {
|
|
41
|
+
KINDGI_SECRETS_DOTENV_FILES: input.localEnvFiles.join(','),
|
|
42
|
+
}),
|
|
43
|
+
KINDGI_PACK_SERVICE_URL: input.packService.url,
|
|
44
|
+
KINDGI_PACK_SERVICE_TOKEN: input.packService.token,
|
|
45
|
+
...(input.corsOrigins.length > 0 && { KINDGI_CORS_ORIGINS: input.corsOrigins.join(',') }),
|
|
46
|
+
...(input.publicTokenKeyPath !== undefined && {
|
|
47
|
+
KINDGI_PUBLIC_TOKEN_SIGNING_KEY_PATH: input.publicTokenKeyPath,
|
|
48
|
+
}),
|
|
49
|
+
...(input.googleCredentialsPath !== undefined && {
|
|
50
|
+
GOOGLE_APPLICATION_CREDENTIALS: input.googleCredentialsPath,
|
|
51
|
+
}),
|
|
52
|
+
};
|
|
53
|
+
for (const [name, value] of Object.entries(input.shellReferences)) {
|
|
54
|
+
// The runtime's own settings come from kindgi dev, never from a
|
|
55
|
+
// reference; a host path to credentials means nothing in the
|
|
56
|
+
// container (they're mounted, at a path of its own).
|
|
57
|
+
if (name.startsWith('KINDGI_') || name in env || HOST_PATH_NAMES.has(name))
|
|
58
|
+
continue;
|
|
59
|
+
env[name] = value;
|
|
60
|
+
}
|
|
61
|
+
return env;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* The shell values the runtime needs for the pack's `${VAR}` references:
|
|
65
|
+
* names the env files refer to without defining, that the shell has.
|
|
66
|
+
*/
|
|
67
|
+
export async function shellReferencesOf(input) {
|
|
68
|
+
const files = await readPackEnv({
|
|
69
|
+
packDir: input.packDir,
|
|
70
|
+
envName: LOCAL_ENV_NAME,
|
|
71
|
+
...(input.localEnvFiles !== undefined && { localEnvFiles: input.localEnvFiles }),
|
|
72
|
+
});
|
|
73
|
+
const out = {};
|
|
74
|
+
for (const d of files.diagnostics) {
|
|
75
|
+
if (d.kind !== 'unresolved')
|
|
76
|
+
continue;
|
|
77
|
+
const value = input.shellEnv[d.ref];
|
|
78
|
+
if (value !== undefined)
|
|
79
|
+
out[d.ref] = value;
|
|
80
|
+
}
|
|
81
|
+
return out;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Write the env file `docker run --env-file` reads: `NAME=value` lines,
|
|
85
|
+
* taken literally (no quotes, no expansion), mode 0600, since it holds
|
|
86
|
+
* the API token. A value with a line break can't be written.
|
|
87
|
+
*/
|
|
88
|
+
export async function writeRuntimeEnv(path, env) {
|
|
89
|
+
const lines = Object.entries(env).map(([name, value]) => {
|
|
90
|
+
if (/[\r\n]/.test(value)) {
|
|
91
|
+
throw new Error(`${name} has a line break, which an env file can't hold.`);
|
|
92
|
+
}
|
|
93
|
+
return `${name}=${value}`;
|
|
94
|
+
});
|
|
95
|
+
await mkdir(dirname(path), { recursive: true });
|
|
96
|
+
await writeFile(path, `# Written by kindgi dev for the Kindgi runtime container. Holds the dev token: keep it private.\n${lines.join('\n')}\n`, { mode: 0o600 });
|
|
97
|
+
// An existing file keeps its mode through writeFile: set it.
|
|
98
|
+
await chmod(path, 0o600);
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=runtime-env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-env.js","sourceRoot":"","sources":["../../src/dev/runtime-env.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Kindgi runtime image `kindgi dev` runs. One place names
|
|
3
|
+
* it, so a release pins the image it was tested with and a pull token
|
|
4
|
+
* can drop in later. `--runtime-image` overrides it.
|
|
5
|
+
*
|
|
6
|
+
* Pinned by digest, not tag: Docker doesn't re-pull a tag it already has, so
|
|
7
|
+
* a tag would leave anyone with an older pull on an older runtime.
|
|
8
|
+
*
|
|
9
|
+
* The image is in private preview on Quay (pull credentials on request at
|
|
10
|
+
* contact@kindgi.com, then `kindgi auth registry --username <name>`).
|
|
11
|
+
*/
|
|
12
|
+
export declare const DEFAULT_RUNTIME_IMAGE = "quay.io/kindgi/runtime:0.1.1@sha256:eaa3a981f88f37efa3a33955d24c40df31474997e0318b006e983f411fdd8654";
|
|
13
|
+
/**
|
|
14
|
+
* The registry an image reference is pulled from, read the way Docker
|
|
15
|
+
* reads it: the first path component when it names a host (it has a `.`
|
|
16
|
+
* or a `:`, or is `localhost`), otherwise Docker Hub.
|
|
17
|
+
*/
|
|
18
|
+
export declare function registryOf(image: string): string;
|
|
19
|
+
/** The registry `DEFAULT_RUNTIME_IMAGE` is pulled from: `kindgi auth registry` logs in to it. */
|
|
20
|
+
export declare const RUNTIME_IMAGE_REGISTRY: string;
|
|
21
|
+
/**
|
|
22
|
+
* The same image on another registry: its repository path, tag and digest
|
|
23
|
+
* under `registry`, the way a mirror carries it.
|
|
24
|
+
*/
|
|
25
|
+
export declare function imageOnRegistry(image: string, registry: string): string;
|
|
26
|
+
//# sourceMappingURL=runtime-image.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-image.d.ts","sourceRoot":"","sources":["../../src/dev/runtime-image.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB,yGACsE,CAAC;AAKzG;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKhD;AAED,iGAAiG;AACjG,eAAO,MAAM,sBAAsB,QAAoC,CAAC;AAExE;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOvE"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
/**
|
|
4
|
+
* The Kindgi runtime image `kindgi dev` runs. One place names
|
|
5
|
+
* it, so a release pins the image it was tested with and a pull token
|
|
6
|
+
* can drop in later. `--runtime-image` overrides it.
|
|
7
|
+
*
|
|
8
|
+
* Pinned by digest, not tag: Docker doesn't re-pull a tag it already has, so
|
|
9
|
+
* a tag would leave anyone with an older pull on an older runtime.
|
|
10
|
+
*
|
|
11
|
+
* The image is in private preview on Quay (pull credentials on request at
|
|
12
|
+
* contact@kindgi.com, then `kindgi auth registry --username <name>`).
|
|
13
|
+
*/
|
|
14
|
+
export const DEFAULT_RUNTIME_IMAGE = 'quay.io/kindgi/runtime:0.1.1@sha256:eaa3a981f88f37efa3a33955d24c40df31474997e0318b006e983f411fdd8654';
|
|
15
|
+
/** Docker Hub, the registry of a reference that names none (`busybox`, `library/busybox`). */
|
|
16
|
+
const DOCKER_HUB = 'docker.io';
|
|
17
|
+
/**
|
|
18
|
+
* The registry an image reference is pulled from, read the way Docker
|
|
19
|
+
* reads it: the first path component when it names a host (it has a `.`
|
|
20
|
+
* or a `:`, or is `localhost`), otherwise Docker Hub.
|
|
21
|
+
*/
|
|
22
|
+
export function registryOf(image) {
|
|
23
|
+
const slash = image.indexOf('/');
|
|
24
|
+
if (slash === -1)
|
|
25
|
+
return DOCKER_HUB;
|
|
26
|
+
const first = image.slice(0, slash);
|
|
27
|
+
return first.includes('.') || first.includes(':') || first === 'localhost' ? first : DOCKER_HUB;
|
|
28
|
+
}
|
|
29
|
+
/** The registry `DEFAULT_RUNTIME_IMAGE` is pulled from: `kindgi auth registry` logs in to it. */
|
|
30
|
+
export const RUNTIME_IMAGE_REGISTRY = registryOf(DEFAULT_RUNTIME_IMAGE);
|
|
31
|
+
/**
|
|
32
|
+
* The same image on another registry: its repository path, tag and digest
|
|
33
|
+
* under `registry`, the way a mirror carries it.
|
|
34
|
+
*/
|
|
35
|
+
export function imageOnRegistry(image, registry) {
|
|
36
|
+
const own = registryOf(image);
|
|
37
|
+
if (own === registry)
|
|
38
|
+
return image;
|
|
39
|
+
const named = image.startsWith(`${own}/`);
|
|
40
|
+
const path = named ? image.slice(own.length + 1) : image;
|
|
41
|
+
// Docker Hub's official images live under `library/`.
|
|
42
|
+
return `${registry}/${!named && !path.includes('/') ? `library/${path}` : path}`;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=runtime-image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-image.js","sourceRoot":"","sources":["../../src/dev/runtime-image.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAChC,sGAAsG,CAAC;AAEzG,8FAA8F;AAC9F,MAAM,UAAU,GAAG,WAAW,CAAC;AAE/B;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,UAAU,CAAC;IACpC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACpC,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;AAClG,CAAC;AAED,iGAAiG;AACjG,MAAM,CAAC,MAAM,sBAAsB,GAAG,UAAU,CAAC,qBAAqB,CAAC,CAAC;AAExE;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,QAAgB;IAC7D,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACnC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACzD,sDAAsD;IACtD,OAAO,GAAG,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACnF,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Docker's access to the registry the Kindgi runtime image comes from, for
|
|
3
|
+
* `kindgi auth registry`: `docker login` (the credential goes to Docker's
|
|
4
|
+
* own credential store; Kindgi keeps no copy), then a check that the
|
|
5
|
+
* pinned image can be pulled.
|
|
6
|
+
*
|
|
7
|
+
* Every step runs `docker` through the runner `kindgi dev` uses
|
|
8
|
+
* (`runtime-container.ts`), handed in, so tests pass a fake.
|
|
9
|
+
*/
|
|
10
|
+
import type { DockerRunner } from './runtime-container.js';
|
|
11
|
+
/** Whether `docker` output says the registry refused the credentials (or their absence). */
|
|
12
|
+
export declare function isRegistryAuthFailure(output: string): boolean;
|
|
13
|
+
/** The command that logs Docker in to `image`'s registry, as a message shows it. */
|
|
14
|
+
export declare function registryLoginCommand(image: string): string;
|
|
15
|
+
export type DockerCheck = {
|
|
16
|
+
readonly kind: 'ok';
|
|
17
|
+
} | {
|
|
18
|
+
readonly kind: 'error';
|
|
19
|
+
readonly message: string;
|
|
20
|
+
};
|
|
21
|
+
/** Docker is installed and its engine answers: the login and the pull both need it. */
|
|
22
|
+
export declare function checkDocker(run: DockerRunner): Promise<DockerCheck>;
|
|
23
|
+
export type RegistryLogin = {
|
|
24
|
+
readonly kind: 'ok';
|
|
25
|
+
/** What `docker login` warned about (an unencrypted credential store), line by line. */
|
|
26
|
+
readonly notes: readonly string[];
|
|
27
|
+
} | {
|
|
28
|
+
readonly kind: 'error';
|
|
29
|
+
readonly message: string;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* `docker login <registry> --username <username> --password-stdin`, with
|
|
33
|
+
* the token written to its stdin: never in its arguments, its
|
|
34
|
+
* environment, or a message.
|
|
35
|
+
*/
|
|
36
|
+
export declare function dockerLogin(run: DockerRunner, registry: string, username: string, token: string): Promise<RegistryLogin>;
|
|
37
|
+
/** How the check reached the registry: buildx, or the fallback when buildx isn't installed. */
|
|
38
|
+
export type AccessMethod = 'docker buildx imagetools inspect' | 'docker manifest inspect';
|
|
39
|
+
export type ImageAccess = {
|
|
40
|
+
readonly kind: 'ok';
|
|
41
|
+
readonly method: AccessMethod;
|
|
42
|
+
}
|
|
43
|
+
/** The registry refused: no credentials, or credentials without access. */
|
|
44
|
+
| {
|
|
45
|
+
readonly kind: 'no-access';
|
|
46
|
+
readonly detail: string;
|
|
47
|
+
readonly method: AccessMethod;
|
|
48
|
+
}
|
|
49
|
+
/** The image isn't there, or the registry can't be reached. */
|
|
50
|
+
| {
|
|
51
|
+
readonly kind: 'not-found';
|
|
52
|
+
readonly detail: string;
|
|
53
|
+
readonly method: AccessMethod;
|
|
54
|
+
}
|
|
55
|
+
/** Neither `docker buildx` nor `docker manifest` is available. */
|
|
56
|
+
| {
|
|
57
|
+
readonly kind: 'no-tool';
|
|
58
|
+
readonly detail: string;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Whether Docker's credentials on this machine can pull `image`, without
|
|
62
|
+
* pulling it: `docker buildx imagetools inspect` fetches the manifest by
|
|
63
|
+
* its digest, as `docker pull` does.
|
|
64
|
+
*
|
|
65
|
+
* Without buildx (a bare Linux engine often lacks it), `docker manifest
|
|
66
|
+
* inspect` on the digest-only reference instead. Never on the full
|
|
67
|
+
* `name:tag@digest`: it resolves that by its tag, so a moved tag fails it
|
|
68
|
+
* while the pinned digest still pulls.
|
|
69
|
+
*/
|
|
70
|
+
export declare function checkImageAccess(run: DockerRunner, image: string): Promise<ImageAccess>;
|
|
71
|
+
/** `repo:tag@sha256:…` → `repo@sha256:…`; a reference without a digest is unchanged. */
|
|
72
|
+
export declare function digestOnly(image: string): string;
|
|
73
|
+
//# sourceMappingURL=runtime-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-registry.d.ts","sourceRoot":"","sources":["../../src/dev/runtime-registry.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAO1E,4FAA4F;AAC5F,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED,oFAAoF;AACpF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAI1D;AAWD,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GACvB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,uFAAuF;AACvF,wBAAsB,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAezE;AAED,MAAM,MAAM,aAAa,GACrB;IACE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,wFAAwF;IACxF,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,YAAY,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,CAAC,CAexB;AAED,+FAA+F;AAC/F,MAAM,MAAM,YAAY,GAAG,kCAAkC,GAAG,yBAAyB,CAAC;AAE1F,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;CAAE;AACxD,2EAA2E;GACzE;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;CAAE;AACxF,+DAA+D;GAC7D;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;CAAE;AACxF,kEAAkE;GAChE;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAK1D;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAa7F;AASD,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOhD"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
import { RUNTIME_IMAGE_REGISTRY, registryOf } from './runtime-image.js';
|
|
4
|
+
/** How a registry, or Docker relaying it, refuses credentials or access. */
|
|
5
|
+
const AUTH_FAILURE = /unauthorized|denied|forbidden|authentication required|insufficient_scope|no basic auth credentials/i;
|
|
6
|
+
/** Whether `docker` output says the registry refused the credentials (or their absence). */
|
|
7
|
+
export function isRegistryAuthFailure(output) {
|
|
8
|
+
return AUTH_FAILURE.test(output);
|
|
9
|
+
}
|
|
10
|
+
/** The command that logs Docker in to `image`'s registry, as a message shows it. */
|
|
11
|
+
export function registryLoginCommand(image) {
|
|
12
|
+
const registry = registryOf(image);
|
|
13
|
+
const other = registry === RUNTIME_IMAGE_REGISTRY ? '' : ` --registry ${registry}`;
|
|
14
|
+
return `kindgi auth registry --username <the robot name you were given>${other}`;
|
|
15
|
+
}
|
|
16
|
+
/** The end of what `docker` wrote to stderr, with `secret` (the token) blanked out. */
|
|
17
|
+
function detail(outcome, secret) {
|
|
18
|
+
const text = secret === undefined || secret === ''
|
|
19
|
+
? outcome.stderr
|
|
20
|
+
: outcome.stderr.split(secret).join('***');
|
|
21
|
+
return text.trim().split('\n').slice(-5).join('\n');
|
|
22
|
+
}
|
|
23
|
+
/** Docker is installed and its engine answers: the login and the pull both need it. */
|
|
24
|
+
export async function checkDocker(run) {
|
|
25
|
+
const version = await run(['version', '--format', '{{.Server.Version}}']);
|
|
26
|
+
if (version.code === null) {
|
|
27
|
+
return {
|
|
28
|
+
kind: 'error',
|
|
29
|
+
message: `Docker isn't installed, or \`docker\` isn't on your PATH (${detail(version)}).\n kindgi dev runs the Kindgi runtime in Docker: install Docker Desktop (or a Docker engine on Linux), then run this again.`,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
if (version.code !== 0) {
|
|
33
|
+
return {
|
|
34
|
+
kind: 'error',
|
|
35
|
+
message: `Docker isn't running: ${detail(version)}\n Start Docker Desktop (or the Docker engine), then run this again.`,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
return { kind: 'ok' };
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* `docker login <registry> --username <username> --password-stdin`, with
|
|
42
|
+
* the token written to its stdin: never in its arguments, its
|
|
43
|
+
* environment, or a message.
|
|
44
|
+
*/
|
|
45
|
+
export async function dockerLogin(run, registry, username, token) {
|
|
46
|
+
const login = await run(['login', registry, '--username', username, '--password-stdin'], {
|
|
47
|
+
stdin: token,
|
|
48
|
+
});
|
|
49
|
+
if (login.code === 0) {
|
|
50
|
+
const notes = detail(login, token);
|
|
51
|
+
return { kind: 'ok', notes: notes === '' ? [] : notes.split('\n') };
|
|
52
|
+
}
|
|
53
|
+
const refused = isRegistryAuthFailure(login.stderr)
|
|
54
|
+
? `\n Check the username and the token.${registry === RUNTIME_IMAGE_REGISTRY ? ' For new pull credentials, write to contact@kindgi.com.' : ''}`
|
|
55
|
+
: '';
|
|
56
|
+
return {
|
|
57
|
+
kind: 'error',
|
|
58
|
+
message: `docker login ${registry} failed: ${detail(login, token)}${refused}`,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/** `docker` saying a command (a plugin such as buildx) isn't installed. */
|
|
62
|
+
const UNKNOWN_COMMAND = /is not a docker command|unknown command/i;
|
|
63
|
+
/**
|
|
64
|
+
* Whether Docker's credentials on this machine can pull `image`, without
|
|
65
|
+
* pulling it: `docker buildx imagetools inspect` fetches the manifest by
|
|
66
|
+
* its digest, as `docker pull` does.
|
|
67
|
+
*
|
|
68
|
+
* Without buildx (a bare Linux engine often lacks it), `docker manifest
|
|
69
|
+
* inspect` on the digest-only reference instead. Never on the full
|
|
70
|
+
* `name:tag@digest`: it resolves that by its tag, so a moved tag fails it
|
|
71
|
+
* while the pinned digest still pulls.
|
|
72
|
+
*/
|
|
73
|
+
export async function checkImageAccess(run, image) {
|
|
74
|
+
const inspected = await run(['buildx', 'imagetools', 'inspect', image]);
|
|
75
|
+
if (!UNKNOWN_COMMAND.test(inspected.stderr) || inspected.code === 0) {
|
|
76
|
+
return accessFrom(inspected, 'docker buildx imagetools inspect');
|
|
77
|
+
}
|
|
78
|
+
// `--insecure` only where Docker itself allows plain HTTP by default
|
|
79
|
+
// (loopback): `docker manifest` doesn't follow the engine's settings.
|
|
80
|
+
const insecure = isLoopbackRegistry(registryOf(image)) ? ['--insecure'] : [];
|
|
81
|
+
const manifest = await run(['manifest', 'inspect', ...insecure, digestOnly(image)]);
|
|
82
|
+
if (manifest.code !== 0 && UNKNOWN_COMMAND.test(manifest.stderr)) {
|
|
83
|
+
return { kind: 'no-tool', detail: `${detail(inspected)}\n${detail(manifest)}` };
|
|
84
|
+
}
|
|
85
|
+
return accessFrom(manifest, 'docker manifest inspect');
|
|
86
|
+
}
|
|
87
|
+
function accessFrom(outcome, method) {
|
|
88
|
+
if (outcome.code === 0)
|
|
89
|
+
return { kind: 'ok', method };
|
|
90
|
+
const shown = detail(outcome);
|
|
91
|
+
if (isRegistryAuthFailure(outcome.stderr))
|
|
92
|
+
return { kind: 'no-access', detail: shown, method };
|
|
93
|
+
return { kind: 'not-found', detail: shown, method };
|
|
94
|
+
}
|
|
95
|
+
/** `repo:tag@sha256:…` → `repo@sha256:…`; a reference without a digest is unchanged. */
|
|
96
|
+
export function digestOnly(image) {
|
|
97
|
+
const at = image.indexOf('@');
|
|
98
|
+
if (at === -1)
|
|
99
|
+
return image;
|
|
100
|
+
const name = image.slice(0, at);
|
|
101
|
+
const colon = name.lastIndexOf(':');
|
|
102
|
+
const repo = colon > name.lastIndexOf('/') ? name.slice(0, colon) : name;
|
|
103
|
+
return `${repo}${image.slice(at)}`;
|
|
104
|
+
}
|
|
105
|
+
function isLoopbackRegistry(registry) {
|
|
106
|
+
const host = registry.startsWith('[')
|
|
107
|
+
? registry.slice(0, registry.indexOf(']') + 1)
|
|
108
|
+
: registry.split(':')[0];
|
|
109
|
+
return host === 'localhost' || host === '[::1]' || /^127\./.test(host ?? '');
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=runtime-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-registry.js","sourceRoot":"","sources":["../../src/dev/runtime-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/env/defaults.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,eAAO,MAAM,gBAAgB,EAAE,UAY9B,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
/**
|
|
4
|
+
* Production wiring for `kindgi env`. Loaded lazily by `main.ts`.
|
|
5
|
+
*/
|
|
6
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
7
|
+
export const REAL_ENV_RUNNERS = {
|
|
8
|
+
readFile: async (path) => {
|
|
9
|
+
try {
|
|
10
|
+
return await readFile(path, 'utf8');
|
|
11
|
+
}
|
|
12
|
+
catch (err) {
|
|
13
|
+
if (err.code === 'ENOENT')
|
|
14
|
+
return null;
|
|
15
|
+
throw err;
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
writeFile: async (path, contents) => {
|
|
19
|
+
await writeFile(path, contents, 'utf8');
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/env/defaults.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIvD,MAAM,CAAC,MAAM,gBAAgB,GAAe;IAC1C,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,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QAClC,MAAM,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/** Where a declared name's value comes from in one environment. */
|
|
2
|
+
export type PackEnvSource = {
|
|
3
|
+
readonly kind: 'value';
|
|
4
|
+
readonly value: string;
|
|
5
|
+
} | {
|
|
6
|
+
readonly kind: 'secret';
|
|
7
|
+
/** The Secret Manager secret id. */
|
|
8
|
+
readonly secret: string;
|
|
9
|
+
/** A version number, or `latest`. */
|
|
10
|
+
readonly version: string;
|
|
11
|
+
/** The number of the project that holds it, when it isn't the service's own. */
|
|
12
|
+
readonly project?: string;
|
|
13
|
+
};
|
|
14
|
+
export interface PackEnvPlanEntry {
|
|
15
|
+
readonly name: string;
|
|
16
|
+
readonly required: boolean;
|
|
17
|
+
/** Absent: the environment gives it no value. */
|
|
18
|
+
readonly source?: PackEnvSource;
|
|
19
|
+
}
|
|
20
|
+
export interface PackEnvPlan {
|
|
21
|
+
readonly envName: string;
|
|
22
|
+
/** Declared names, required ones first, each group sorted. */
|
|
23
|
+
readonly entries: readonly PackEnvPlanEntry[];
|
|
24
|
+
/** Required names the environment gives no value. */
|
|
25
|
+
readonly missing: readonly string[];
|
|
26
|
+
/** What makes the plan unusable: a secret as a plain value, a malformed entry. */
|
|
27
|
+
readonly problems: readonly string[];
|
|
28
|
+
/** Worth knowing, not blocking: `latest` versions, values for undeclared names. */
|
|
29
|
+
readonly warnings: readonly string[];
|
|
30
|
+
}
|
|
31
|
+
/** Whether a name looks like it holds a secret (`*_KEY`, `*_TOKEN`, `*_PASSWORD`, …). */
|
|
32
|
+
export declare function isSecretShapedName(name: string): boolean;
|
|
33
|
+
/** Whether a value carries a credential: a URL with a password (`postgres://user:pass@host/db`). */
|
|
34
|
+
export declare function carriesCredential(value: string): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Why `value` can't be given in the clear under `name`, or `undefined`
|
|
37
|
+
* when it can. The one check behind `kindgi env plan`, the deploy
|
|
38
|
+
* preflight and `kindgi deploy --sync-secrets`'s warning.
|
|
39
|
+
*/
|
|
40
|
+
export declare function plainSecretReason(name: string, value: string): string | undefined;
|
|
41
|
+
/** `environments.<envName>.env` from a loaded config: each name's source, and what's malformed. */
|
|
42
|
+
export declare function readEnvironmentEnv(config: Readonly<Record<string, unknown>> | undefined, envName: string): {
|
|
43
|
+
readonly sources: ReadonlyMap<string, PackEnvSource>;
|
|
44
|
+
readonly problems: readonly string[];
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* The plan for `envName`: the pack's declaration (from `config.env`)
|
|
48
|
+
* against that environment's sources. `err` when the declaration itself
|
|
49
|
+
* is malformed, the same check the indexer runs.
|
|
50
|
+
*/
|
|
51
|
+
export declare function planPackEnv(config: Readonly<Record<string, unknown>> | undefined, envName: string): {
|
|
52
|
+
readonly kind: 'ok';
|
|
53
|
+
readonly plan: PackEnvPlan;
|
|
54
|
+
} | {
|
|
55
|
+
readonly kind: 'err';
|
|
56
|
+
readonly message: string;
|
|
57
|
+
};
|
|
58
|
+
/** A secret source as Cloud Run takes it: `SECRET:VERSION`, or the full name for another project. */
|
|
59
|
+
export declare function secretReference(source: Extract<PackEnvSource, {
|
|
60
|
+
kind: 'secret';
|
|
61
|
+
}>): string;
|
|
62
|
+
/**
|
|
63
|
+
* The Terraform input for the pack service's revision: `env` (plain
|
|
64
|
+
* values) and `secret_env` (references), as JSON.
|
|
65
|
+
*/
|
|
66
|
+
export declare function renderTerraform(plan: PackEnvPlan): string;
|
|
67
|
+
/** `gcloud run deploy` flags: `--set-env-vars` and `--set-secrets`, one per line. */
|
|
68
|
+
export declare function renderGcloud(plan: PackEnvPlan): string;
|
|
69
|
+
export declare function describePackEnvPlan(plan: PackEnvPlan): string[];
|
|
70
|
+
//# sourceMappingURL=pack-env-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pack-env-plan.d.ts","sourceRoot":"","sources":["../../src/env/pack-env-plan.ts"],"names":[],"mappings":"AAsBA,mEAAmE;AACnE,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAClD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,oCAAoC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qCAAqC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,gFAAgF;IAChF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEN,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,iDAAiD;IACjD,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;CACjC;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC9C,qDAAqD;IACrD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,kFAAkF;IAClF,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,mFAAmF;IACnF,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AASD,yFAAyF;AACzF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,oGAAoG;AACpG,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAOxD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKjF;AAED,mGAAmG;AACnG,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,EACrD,OAAO,EAAE,MAAM,GACd;IAAE,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CA2BhG;AA0BD;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,EACrD,OAAO,EAAE,MAAM,GAEb;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GACnD;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAsCrD;AAED,qGAAqG;AACrG,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,GAAG,MAAM,CAM1F;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAezD;AAED,qFAAqF;AACrF,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAYtD;AA0BD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,EAAE,CAe/D"}
|