@tdk-landscape/tdk-cli-core 1.3.52 → 1.3.54
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/CHANGELOG.md +9 -0
- package/README.md +1 -1
- package/cli/dist/commands/config.js +1 -1
- package/cli/dist/commands/resource.js +1 -1
- package/cli/dist/generator/extension-fetch.js +16 -9
- package/cli/package.json +1 -1
- package/package.json +16 -1
- package/.claude/skills/layer-autoresearch/SKILL.md +0 -48
- package/.claude/skills/tdk-troubleshoot/SKILL.md +0 -222
- package/.github/ISSUE_TEMPLATE/bug_report.yml +0 -40
- package/.github/ISSUE_TEMPLATE/config.yml +0 -8
- package/.github/ISSUE_TEMPLATE/feature_request.yml +0 -18
- package/.github/dependabot.yml +0 -33
- package/.github/pull_request_template.md +0 -5
- package/.github/workflows/ci.yml +0 -200
- package/.github/workflows/release-binaries.yml +0 -139
- package/.github/zizmor.yml +0 -9
- package/.pre-commit-config.yaml +0 -57
- package/CODE_OF_CONDUCT.md +0 -9
- package/CONTRIBUTING.md +0 -42
- package/Makefile +0 -92
- package/SECURITY.md +0 -17
- package/benchmarks/results/container-scale-2026-09-25T20-54-49-736Z.json +0 -45
- package/benchmarks/results/container-scale-2026-09-25T21-01-20-540Z.json +0 -150
- package/benchmarks/results/container-scale-2026-09-25T21-15-01-441Z.json +0 -73
- package/benchmarks/results/container-scale-2026-09-25T22-09-01-630Z.json +0 -77
- package/benchmarks/results/container-scale-2026-09-25T22-18-28-371Z.json +0 -202
- package/cli/AGENTS.md +0 -390
- package/cli/DESIGN.md +0 -735
- package/cli/README.md +0 -292
- package/cli/biome.json +0 -40
- package/cli/dependency-graph.svg +0 -1135
- package/cli/dist/cli.d.ts +0 -3
- package/cli/dist/cli.d.ts.map +0 -1
- package/cli/dist/cli.js.map +0 -1
- package/cli/dist/commands/completion.d.ts +0 -3
- package/cli/dist/commands/completion.d.ts.map +0 -1
- package/cli/dist/commands/completion.js.map +0 -1
- package/cli/dist/commands/config.d.ts +0 -3
- package/cli/dist/commands/config.d.ts.map +0 -1
- package/cli/dist/commands/config.js.map +0 -1
- package/cli/dist/commands/doctor.d.ts +0 -19
- package/cli/dist/commands/doctor.d.ts.map +0 -1
- package/cli/dist/commands/doctor.js.map +0 -1
- package/cli/dist/commands/down.d.ts +0 -3
- package/cli/dist/commands/down.d.ts.map +0 -1
- package/cli/dist/commands/down.js.map +0 -1
- package/cli/dist/commands/help.d.ts +0 -2
- package/cli/dist/commands/help.d.ts.map +0 -1
- package/cli/dist/commands/help.js.map +0 -1
- package/cli/dist/commands/networks.d.ts +0 -3
- package/cli/dist/commands/networks.d.ts.map +0 -1
- package/cli/dist/commands/networks.js.map +0 -1
- package/cli/dist/commands/project.d.ts +0 -9
- package/cli/dist/commands/project.d.ts.map +0 -1
- package/cli/dist/commands/project.js.map +0 -1
- package/cli/dist/commands/projects.d.ts +0 -3
- package/cli/dist/commands/projects.d.ts.map +0 -1
- package/cli/dist/commands/projects.js.map +0 -1
- package/cli/dist/commands/resource.d.ts +0 -69
- package/cli/dist/commands/resource.d.ts.map +0 -1
- package/cli/dist/commands/resource.js.map +0 -1
- package/cli/dist/commands/resources.d.ts +0 -3
- package/cli/dist/commands/resources.d.ts.map +0 -1
- package/cli/dist/commands/resources.js.map +0 -1
- package/cli/dist/commands/stack.d.ts +0 -3
- package/cli/dist/commands/stack.d.ts.map +0 -1
- package/cli/dist/commands/stack.js.map +0 -1
- package/cli/dist/commands/stacks.d.ts +0 -3
- package/cli/dist/commands/stacks.d.ts.map +0 -1
- package/cli/dist/commands/stacks.js.map +0 -1
- package/cli/dist/commands/status.d.ts +0 -3
- package/cli/dist/commands/status.d.ts.map +0 -1
- package/cli/dist/commands/status.js.map +0 -1
- package/cli/dist/commands/ui.d.ts +0 -3
- package/cli/dist/commands/ui.d.ts.map +0 -1
- package/cli/dist/commands/ui.js.map +0 -1
- package/cli/dist/commands/up.d.ts +0 -3
- package/cli/dist/commands/up.d.ts.map +0 -1
- package/cli/dist/commands/up.js.map +0 -1
- package/cli/dist/commands/upgrade.d.ts +0 -14
- package/cli/dist/commands/upgrade.d.ts.map +0 -1
- package/cli/dist/commands/upgrade.js.map +0 -1
- package/cli/dist/commands/version.d.ts +0 -3
- package/cli/dist/commands/version.d.ts.map +0 -1
- package/cli/dist/commands/version.js.map +0 -1
- package/cli/dist/components/Accessible.d.ts +0 -8
- package/cli/dist/components/Accessible.d.ts.map +0 -1
- package/cli/dist/components/Accessible.js.map +0 -1
- package/cli/dist/components/BaseTooltip.d.ts +0 -4
- package/cli/dist/components/BaseTooltip.d.ts.map +0 -1
- package/cli/dist/components/BaseTooltip.js.map +0 -1
- package/cli/dist/components/DetailPanel.d.ts +0 -4
- package/cli/dist/components/DetailPanel.d.ts.map +0 -1
- package/cli/dist/components/DetailPanel.js.map +0 -1
- package/cli/dist/components/FileTree.d.ts +0 -4
- package/cli/dist/components/FileTree.d.ts.map +0 -1
- package/cli/dist/components/FileTree.js.map +0 -1
- package/cli/dist/components/ResourceSelectInput.d.ts +0 -4
- package/cli/dist/components/ResourceSelectInput.d.ts.map +0 -1
- package/cli/dist/components/ResourceSelectInput.js.map +0 -1
- package/cli/dist/components/ResourceTable.d.ts +0 -4
- package/cli/dist/components/ResourceTable.d.ts.map +0 -1
- package/cli/dist/components/ResourceTable.js.map +0 -1
- package/cli/dist/components/TabBar.d.ts +0 -4
- package/cli/dist/components/TabBar.d.ts.map +0 -1
- package/cli/dist/components/TabBar.js.map +0 -1
- package/cli/dist/components/Tooltip.d.ts +0 -12
- package/cli/dist/components/Tooltip.d.ts.map +0 -1
- package/cli/dist/components/Tooltip.js.map +0 -1
- package/cli/dist/components/index.d.ts +0 -8
- package/cli/dist/components/index.d.ts.map +0 -1
- package/cli/dist/components/index.js.map +0 -1
- package/cli/dist/config/platform-standards.d.ts +0 -159
- package/cli/dist/config/platform-standards.d.ts.map +0 -1
- package/cli/dist/config/platform-standards.js.map +0 -1
- package/cli/dist/generator/extension-fetch.d.ts +0 -25
- package/cli/dist/generator/extension-fetch.d.ts.map +0 -1
- package/cli/dist/generator/extension-fetch.js.map +0 -1
- package/cli/dist/generator/template-engine.d.ts +0 -62
- package/cli/dist/generator/template-engine.d.ts.map +0 -1
- package/cli/dist/generator/template-engine.js.map +0 -1
- package/cli/dist/index.d.ts +0 -11
- package/cli/dist/index.d.ts.map +0 -1
- package/cli/dist/index.js.map +0 -1
- package/cli/dist/types/index.d.ts +0 -257
- package/cli/dist/types/index.d.ts.map +0 -1
- package/cli/dist/types/index.js.map +0 -1
- package/cli/dist/utils/cache.d.ts +0 -19
- package/cli/dist/utils/cache.d.ts.map +0 -1
- package/cli/dist/utils/cache.js.map +0 -1
- package/cli/dist/utils/command-helpers.d.ts +0 -17
- package/cli/dist/utils/command-helpers.d.ts.map +0 -1
- package/cli/dist/utils/command-helpers.js.map +0 -1
- package/cli/dist/utils/constants.d.ts +0 -53
- package/cli/dist/utils/constants.d.ts.map +0 -1
- package/cli/dist/utils/constants.js.map +0 -1
- package/cli/dist/utils/discovery-context.d.ts +0 -4
- package/cli/dist/utils/discovery-context.d.ts.map +0 -1
- package/cli/dist/utils/discovery-context.js.map +0 -1
- package/cli/dist/utils/docker.d.ts +0 -4
- package/cli/dist/utils/docker.d.ts.map +0 -1
- package/cli/dist/utils/docker.js.map +0 -1
- package/cli/dist/utils/doctor-runtime.d.ts +0 -81
- package/cli/dist/utils/doctor-runtime.d.ts.map +0 -1
- package/cli/dist/utils/doctor-runtime.js.map +0 -1
- package/cli/dist/utils/env-validator.d.ts +0 -15
- package/cli/dist/utils/env-validator.d.ts.map +0 -1
- package/cli/dist/utils/env-validator.js.map +0 -1
- package/cli/dist/utils/errors.d.ts +0 -31
- package/cli/dist/utils/errors.d.ts.map +0 -1
- package/cli/dist/utils/errors.js.map +0 -1
- package/cli/dist/utils/file-helpers.d.ts +0 -14
- package/cli/dist/utils/file-helpers.d.ts.map +0 -1
- package/cli/dist/utils/file-helpers.js.map +0 -1
- package/cli/dist/utils/formatting.d.ts +0 -30
- package/cli/dist/utils/formatting.d.ts.map +0 -1
- package/cli/dist/utils/formatting.js.map +0 -1
- package/cli/dist/utils/paths.d.ts +0 -3
- package/cli/dist/utils/paths.d.ts.map +0 -1
- package/cli/dist/utils/paths.js.map +0 -1
- package/cli/dist/utils/port-assignment.d.ts +0 -6
- package/cli/dist/utils/port-assignment.d.ts.map +0 -1
- package/cli/dist/utils/port-assignment.js.map +0 -1
- package/cli/dist/utils/project-features.d.ts +0 -23
- package/cli/dist/utils/project-features.d.ts.map +0 -1
- package/cli/dist/utils/project-features.js.map +0 -1
- package/cli/dist/utils/project-templates.d.ts +0 -7
- package/cli/dist/utils/project-templates.d.ts.map +0 -1
- package/cli/dist/utils/project-templates.js.map +0 -1
- package/cli/dist/utils/prompt.d.ts +0 -28
- package/cli/dist/utils/prompt.d.ts.map +0 -1
- package/cli/dist/utils/prompt.js.map +0 -1
- package/cli/dist/utils/resource-features.d.ts +0 -29
- package/cli/dist/utils/resource-features.d.ts.map +0 -1
- package/cli/dist/utils/resource-features.js.map +0 -1
- package/cli/dist/utils/service-urls.d.ts +0 -30
- package/cli/dist/utils/service-urls.d.ts.map +0 -1
- package/cli/dist/utils/service-urls.js.map +0 -1
- package/cli/dist/utils/services.d.ts +0 -18
- package/cli/dist/utils/services.d.ts.map +0 -1
- package/cli/dist/utils/services.js.map +0 -1
- package/cli/dist/utils/stack-features.d.ts +0 -22
- package/cli/dist/utils/stack-features.d.ts.map +0 -1
- package/cli/dist/utils/stack-features.js.map +0 -1
- package/cli/dist/utils/tar.d.ts +0 -7
- package/cli/dist/utils/tar.d.ts.map +0 -1
- package/cli/dist/utils/tar.js.map +0 -1
- package/cli/dist/utils/tilt.d.ts +0 -20
- package/cli/dist/utils/tilt.d.ts.map +0 -1
- package/cli/dist/utils/tilt.js.map +0 -1
- package/cli/dist/utils/validation.d.ts +0 -16
- package/cli/dist/utils/validation.d.ts.map +0 -1
- package/cli/dist/utils/validation.js.map +0 -1
- package/cli/knip.json +0 -6
- package/cli/pnpm-lock.yaml +0 -2305
- package/cli/pnpm-workspace.yaml +0 -2
- package/cli/src/cli.ts +0 -72
- package/cli/src/commands/__tests__/always-enabled-infra.test.ts +0 -109
- package/cli/src/commands/__tests__/config.test.ts +0 -146
- package/cli/src/commands/__tests__/doctor.test.ts +0 -730
- package/cli/src/commands/__tests__/error-handling.test.ts +0 -78
- package/cli/src/commands/__tests__/phases-model.test.ts +0 -161
- package/cli/src/commands/__tests__/project-resource-features-e2e.test.ts +0 -187
- package/cli/src/commands/__tests__/project.test.ts +0 -68
- package/cli/src/commands/__tests__/resource.test.ts +0 -226
- package/cli/src/commands/__tests__/saas-starter-integration.test.ts +0 -194
- package/cli/src/commands/__tests__/stack-features-e2e.test.ts +0 -135
- package/cli/src/commands/__tests__/upgrade.test.ts +0 -198
- package/cli/src/commands/completion.ts +0 -300
- package/cli/src/commands/config.ts +0 -299
- package/cli/src/commands/doctor.ts +0 -926
- package/cli/src/commands/down.ts +0 -37
- package/cli/src/commands/help.ts +0 -143
- package/cli/src/commands/networks-design.md +0 -80
- package/cli/src/commands/networks.ts +0 -332
- package/cli/src/commands/project.ts +0 -456
- package/cli/src/commands/projects.ts +0 -82
- package/cli/src/commands/resource.ts +0 -652
- package/cli/src/commands/resources.ts +0 -95
- package/cli/src/commands/stack.ts +0 -128
- package/cli/src/commands/stacks.ts +0 -52
- package/cli/src/commands/status.ts +0 -88
- package/cli/src/commands/ui.tsx +0 -843
- package/cli/src/commands/up.ts +0 -169
- package/cli/src/commands/upgrade.ts +0 -628
- package/cli/src/commands/version.ts +0 -9
- package/cli/src/components/Accessible.tsx +0 -21
- package/cli/src/components/BaseTooltip.tsx +0 -66
- package/cli/src/components/DetailPanel.tsx +0 -146
- package/cli/src/components/FileTree.tsx +0 -89
- package/cli/src/components/ResourceSelectInput.tsx +0 -30
- package/cli/src/components/ResourceTable.tsx +0 -78
- package/cli/src/components/TabBar.tsx +0 -53
- package/cli/src/components/Tooltip.tsx +0 -11
- package/cli/src/components/index.ts +0 -7
- package/cli/src/config/platform-standards.test.ts +0 -11
- package/cli/src/config/platform-standards.ts +0 -196
- package/cli/src/generator/__tests__/extension-fetch.test.ts +0 -242
- package/cli/src/generator/__tests__/template-engine.test.ts +0 -70
- package/cli/src/generator/extension-fetch.ts +0 -286
- package/cli/src/generator/template-engine.ts +0 -752
- package/cli/src/index.ts +0 -86
- package/cli/src/templates.d.ts +0 -4
- package/cli/src/types/index.ts +0 -353
- package/cli/src/utils/__tests__/cache.test.ts +0 -98
- package/cli/src/utils/__tests__/formatting.test.ts +0 -170
- package/cli/src/utils/__tests__/paths.test.ts +0 -180
- package/cli/src/utils/__tests__/port-assignment.test.ts +0 -121
- package/cli/src/utils/__tests__/service-urls.test.ts +0 -174
- package/cli/src/utils/__tests__/services.test.ts +0 -531
- package/cli/src/utils/__tests__/tilt.test.ts +0 -172
- package/cli/src/utils/__tests__/validation.test.ts +0 -148
- package/cli/src/utils/cache.ts +0 -76
- package/cli/src/utils/command-helpers.ts +0 -54
- package/cli/src/utils/constants.ts +0 -130
- package/cli/src/utils/discovery-context.ts +0 -49
- package/cli/src/utils/docker.ts +0 -20
- package/cli/src/utils/doctor-runtime.ts +0 -644
- package/cli/src/utils/env-validator.ts +0 -139
- package/cli/src/utils/errors.ts +0 -168
- package/cli/src/utils/file-helpers.ts +0 -62
- package/cli/src/utils/formatting.ts +0 -215
- package/cli/src/utils/paths.ts +0 -53
- package/cli/src/utils/port-assignment.ts +0 -106
- package/cli/src/utils/project-features.ts +0 -118
- package/cli/src/utils/project-templates.ts +0 -29
- package/cli/src/utils/prompt.ts +0 -128
- package/cli/src/utils/resource-features.ts +0 -215
- package/cli/src/utils/service-urls.ts +0 -124
- package/cli/src/utils/services.ts +0 -364
- package/cli/src/utils/stack-features.ts +0 -30
- package/cli/src/utils/tar.ts +0 -24
- package/cli/src/utils/tilt.ts +0 -133
- package/cli/src/utils/validation.ts +0 -67
- package/cli/tsconfig.json +0 -25
- package/cli/tsconfig.typecheck.json +0 -8
- package/docs/FEATURES.md +0 -279
- package/docs/demo.svg +0 -217
- package/engine/docs/AUTODISCOVERY_TEST.md +0 -182
- package/engine/docs/C4-ARCHITECTURE-operations.md +0 -396
- package/engine/docs/C4-ARCHITECTURE-overview.md +0 -284
- package/engine/docs/C4-ARCHITECTURE.md +0 -17
- package/engine/docs/GOLDEN_IMAGE_INTEGRATION.md +0 -349
- package/engine/docs/MANIFEST_DRIVEN_ARCHITECTURE.md +0 -357
- package/engine/docs/README.md +0 -284
- package/install.sh +0 -19
- package/knip.json +0 -10
- package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/.openspec.yaml +0 -2
- package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/design.md +0 -102
- package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/proposal.md +0 -31
- package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/specs/vscode-tdk-notifications/spec.md +0 -48
- package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/specs/vscode-tdk-orchestration/spec.md +0 -63
- package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/specs/vscode-tdk-troubleshooting/spec.md +0 -56
- package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/tasks.md +0 -61
- package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/.openspec.yaml +0 -2
- package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/design.md +0 -114
- package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/proposal.md +0 -32
- package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/specs/manifest-field-migration/spec.md +0 -20
- package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/specs/resource-terminology-standard/spec.md +0 -20
- package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/specs/stack-terminology-standard/spec.md +0 -20
- package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/tasks.md +0 -194
- package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/.openspec.yaml +0 -2
- package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/design.md +0 -111
- package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/proposal.md +0 -33
- package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/specs/function-naming-alignment/spec.md +0 -12
- package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/specs/optional-parameter-patterns/spec.md +0 -18
- package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/specs/parameter-documentation/spec.md +0 -16
- package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/specs/parameter-naming-consistency/spec.md +0 -12
- package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/specs/parameter-ordering-standard/spec.md +0 -12
- package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/tasks.md +0 -194
- package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/.openspec.yaml +0 -2
- package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/design.md +0 -84
- package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/proposal.md +0 -31
- package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/specs/codebase-audit/spec.md +0 -27
- package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/specs/dead-code-cleanup/spec.md +0 -27
- package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/specs/test-gap-fill/spec.md +0 -23
- package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/specs/todo-resolution/spec.md +0 -27
- package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/tasks.md +0 -39
- package/openspec/changes/archive/2026-06-25-landscape-consolidation/.openspec.yaml +0 -2
- package/openspec/changes/archive/2026-06-25-landscape-consolidation/design.md +0 -80
- package/openspec/changes/archive/2026-06-25-landscape-consolidation/proposal.md +0 -40
- package/openspec/changes/archive/2026-06-25-landscape-consolidation/spec.md +0 -52
- package/openspec/changes/archive/2026-06-25-landscape-consolidation/tasks.md +0 -51
- package/openspec/changes/archive/2026-09-17-fix-generated-stack-boot/.openspec.yaml +0 -2
- package/openspec/changes/archive/2026-09-17-fix-generated-stack-boot/design.md +0 -43
- package/openspec/changes/archive/2026-09-17-fix-generated-stack-boot/proposal.md +0 -29
- package/openspec/changes/archive/2026-09-17-fix-generated-stack-boot/specs/self-contained-generated-projects/spec.md +0 -67
- package/openspec/changes/archive/2026-09-17-fix-generated-stack-boot/tasks.md +0 -27
- package/openspec/changes/optimize-runtime-docker-layers/.openspec.yaml +0 -3
- package/openspec/changes/optimize-runtime-docker-layers/design.md +0 -81
- package/openspec/changes/optimize-runtime-docker-layers/proposal.md +0 -44
- package/openspec/changes/optimize-runtime-docker-layers/specs/runtime-container-footprint/spec.md +0 -79
- package/openspec/changes/optimize-runtime-docker-layers/tasks.md +0 -36
- package/openspec/changes/prioritized-cold-start/.openspec.yaml +0 -4
- package/openspec/changes/prioritized-cold-start/design.md +0 -137
- package/openspec/changes/prioritized-cold-start/proposal.md +0 -41
- package/openspec/changes/prioritized-cold-start/specs/on-demand-resource-startup/spec.md +0 -98
- package/openspec/changes/prioritized-cold-start/tasks.md +0 -69
- package/openspec/config.yaml +0 -1
- package/openspec/specs/manifest-field-migration/spec.md +0 -24
- package/openspec/specs/resource-terminology-standard/spec.md +0 -24
- package/openspec/specs/self-contained-generated-projects/spec.md +0 -67
- package/openspec/specs/stack-terminology-standard/spec.md +0 -24
- package/platform/services/platform/proxy/service.yaml +0 -14
- package/scripts/audit-codebase.sh +0 -213
- package/scripts/autoresearch/layer-eval.sh +0 -65
- package/scripts/benchmark/README.md +0 -25
- package/scripts/benchmark/container-scale.ts +0 -503
- package/scripts/benchmark/pre-release-gate.sh +0 -9
- package/scripts/install-git-hooks.sh +0 -14
- package/scripts/measure-idle-footprint.sh +0 -58
- package/scripts/record-demo.sh +0 -43
- package/scripts/release-binaries.sh +0 -97
- package/scripts/setup-pre-commit.sh +0 -33
- package/scripts/stage-npm-engine.sh +0 -36
- package/tests/tilt-engine/__init__.py +0 -5
- package/tests/tilt-engine/conftest.py +0 -182
- package/tests/tilt-engine/fixtures/appointment-frontend-service.json +0 -11
- package/tests/tilt-engine/fixtures/identity-backend-service.json +0 -12
- package/tests/tilt-engine/fixtures/invalid-service.json +0 -4
- package/tests/tilt-engine/test_agents_md_generator.py +0 -341
- package/tests/tilt-engine/test_agents_md_integration.py +0 -378
- package/tests/tilt-engine/test_cache_operations.py +0 -181
- package/tests/tilt-engine/test_cache_persistence.py +0 -142
- package/tests/tilt-engine/test_code_executor.py +0 -152
- package/tests/tilt-engine/test_code_viewer.py +0 -127
- package/tests/tilt-engine/test_compose_port_anchors.py +0 -310
- package/tests/tilt-engine/test_config_inspector.py +0 -162
- package/tests/tilt-engine/test_daemon_focus_mode.py +0 -89
- package/tests/tilt-engine/test_daemon_polling.py +0 -122
- package/tests/tilt-engine/test_daemon_registration.py +0 -115
- package/tests/tilt-engine/test_daemon_validation.py +0 -107
- package/tests/tilt-engine/test_docker_generator_bugs.py +0 -493
- package/tests/tilt-engine/test_docker_prune.py +0 -119
- package/tests/tilt-engine/test_dockerignore_path_bug.py +0 -82
- package/tests/tilt-engine/test_file_browser.py +0 -193
- package/tests/tilt-engine/test_frontend_basepath_manifest.py +0 -27
- package/tests/tilt-engine/test_health_dependencies.py +0 -130
- package/tests/tilt-engine/test_health_endpoints.py +0 -118
- package/tests/tilt-engine/test_health_tilt_ui.py +0 -85
- package/tests/tilt-engine/test_runtime_container_footprint.py +0 -162
- package/tests/tilt-engine/test_sablier_defer_start.py +0 -237
- package/tests/tilt-engine/test_safety_aliases.py +0 -84
- package/tests/tilt-engine/test_snapshot_diff.py +0 -136
- package/tests/tilt-engine/test_snapshot_persistence.py +0 -163
- package/tests/tilt-engine/test_snapshot_scanning.py +0 -123
- package/tests/tilt-engine/test_standalone_project_boot.py +0 -61
- package/tests/tilt-engine/test_standalone_traefik.py +0 -160
- package/tests/tilt-engine/test_traefik_static_wake_route.py +0 -187
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import {
|
|
3
|
-
createKebabCaseValidator,
|
|
4
|
-
isValidPort,
|
|
5
|
-
validateResourceName,
|
|
6
|
-
} from "../../utils/validation.js";
|
|
7
|
-
|
|
8
|
-
describe("error handling", () => {
|
|
9
|
-
describe("resource name validation", () => {
|
|
10
|
-
it("should validate resource names using actual validation utility", () => {
|
|
11
|
-
expect(validateResourceName("my-service")).toEqual({ valid: true });
|
|
12
|
-
expect(validateResourceName("service123")).toEqual({ valid: true });
|
|
13
|
-
expect(validateResourceName("api-gateway")).toEqual({ valid: true });
|
|
14
|
-
|
|
15
|
-
expect(validateResourceName("")).toEqual({
|
|
16
|
-
valid: false,
|
|
17
|
-
error: "Resource name is required",
|
|
18
|
-
});
|
|
19
|
-
expect(validateResourceName("MyService")).toEqual({
|
|
20
|
-
valid: false,
|
|
21
|
-
error: "Use lowercase letters, numbers, and hyphens only",
|
|
22
|
-
});
|
|
23
|
-
expect(validateResourceName("my_service")).toEqual({
|
|
24
|
-
valid: false,
|
|
25
|
-
error: "Use lowercase letters, numbers, and hyphens only",
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
it("should create kebab-case validators for different contexts", () => {
|
|
30
|
-
const resourceValidator = createKebabCaseValidator("resource");
|
|
31
|
-
const stackValidator = createKebabCaseValidator("stack");
|
|
32
|
-
|
|
33
|
-
expect(resourceValidator("my-resource")).toBe(true);
|
|
34
|
-
expect(resourceValidator("")).toBe("Resource name is required");
|
|
35
|
-
expect(resourceValidator("MyResource")).toBe(
|
|
36
|
-
"Use lowercase letters, numbers, and hyphens only",
|
|
37
|
-
);
|
|
38
|
-
|
|
39
|
-
expect(stackValidator("my-stack")).toBe(true);
|
|
40
|
-
expect(stackValidator("")).toBe("Stack name is required");
|
|
41
|
-
expect(stackValidator("MyStack")).toBe("Use kebab-case (lowercase, numbers, hyphens only)");
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
describe("port assignment", () => {
|
|
46
|
-
it("should validate port is within valid range using isValidPort", () => {
|
|
47
|
-
// Valid ports (isValidPort allows ports 1-65535, not just 1024+)
|
|
48
|
-
expect(isValidPort(3000)).toBe(true);
|
|
49
|
-
expect(isValidPort(8080)).toBe(true);
|
|
50
|
-
expect(isValidPort(1024)).toBe(true);
|
|
51
|
-
expect(isValidPort(1)).toBe(true); // Valid per isValidPort (just > 0)
|
|
52
|
-
expect(isValidPort(65535)).toBe(true);
|
|
53
|
-
|
|
54
|
-
// Invalid ports
|
|
55
|
-
expect(isValidPort(65536)).toBe(false);
|
|
56
|
-
expect(isValidPort(0)).toBe(false);
|
|
57
|
-
expect(isValidPort(-1)).toBe(false);
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
describe("stack name validation", () => {
|
|
62
|
-
it("should validate stack name format using createKebabCaseValidator", () => {
|
|
63
|
-
const validNames = ["main", "api-services", "v1-stack", "test123"];
|
|
64
|
-
|
|
65
|
-
const invalidNames = ["My Stack", "my_stack", "MyStack", ""];
|
|
66
|
-
|
|
67
|
-
const stackValidator = createKebabCaseValidator("stack");
|
|
68
|
-
|
|
69
|
-
for (const name of validNames) {
|
|
70
|
-
expect(stackValidator(name)).toBe(true);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
for (const name of invalidNames) {
|
|
74
|
-
expect(typeof stackValidator(name)).toBe("string");
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
});
|
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Project → Phase → Stack → Resource (PPSR) model.
|
|
5
|
-
*
|
|
6
|
-
* project.json now organizes services by release phase:
|
|
7
|
-
*
|
|
8
|
-
* project
|
|
9
|
-
* └── phases
|
|
10
|
-
* ├── pre_alpha.enabledStacks: ["proxy", "billing", "checkout-app"]
|
|
11
|
-
* ├── alpha.enabledStacks: []
|
|
12
|
-
* ├── beta.enabledStacks: []
|
|
13
|
-
* └── out_of_scope.enabledStacks: []
|
|
14
|
-
*
|
|
15
|
-
* Each entry in enabledStacks[] is a stack name (e.g. "billing").
|
|
16
|
-
* A stack owns one or more resources/services (e.g. "checkout-app" has
|
|
17
|
-
* service.json with stack: "billing").
|
|
18
|
-
*/
|
|
19
|
-
describe("Project → Phase → Stack → Resource model", () => {
|
|
20
|
-
it("defines phases with enabledStacks (not legacy stacks/services)", () => {
|
|
21
|
-
const projectConfig = {
|
|
22
|
-
version: "1.0",
|
|
23
|
-
project: { name: "checkout-app", version: "1.0.0" },
|
|
24
|
-
phases: {
|
|
25
|
-
pre_alpha: {
|
|
26
|
-
name: "Pre-Alpha",
|
|
27
|
-
description: "Core infrastructure and MVP services",
|
|
28
|
-
enabledStacks: ["proxy", "database-management", "app", "billing", "checkout-app"],
|
|
29
|
-
},
|
|
30
|
-
alpha: {
|
|
31
|
-
name: "Alpha",
|
|
32
|
-
description: "Essential business services",
|
|
33
|
-
enabledStacks: [],
|
|
34
|
-
},
|
|
35
|
-
beta: {
|
|
36
|
-
name: "Beta",
|
|
37
|
-
description: "Extended features",
|
|
38
|
-
enabledStacks: [],
|
|
39
|
-
},
|
|
40
|
-
out_of_scope: {
|
|
41
|
-
name: "Out of Scope",
|
|
42
|
-
description: "Future releases",
|
|
43
|
-
enabledStacks: [],
|
|
44
|
-
},
|
|
45
|
-
},
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
expect(projectConfig).toHaveProperty("phases");
|
|
49
|
-
expect(projectConfig).not.toHaveProperty("stacks");
|
|
50
|
-
expect(projectConfig.phases.pre_alpha).toHaveProperty("enabledStacks");
|
|
51
|
-
expect(projectConfig.phases.pre_alpha).not.toHaveProperty("services");
|
|
52
|
-
expect(projectConfig.phases.pre_alpha.enabledStacks).toContain("billing");
|
|
53
|
-
expect(projectConfig.phases.pre_alpha.enabledStacks).toContain("checkout-app");
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
it("keeps the PSR stack concept separate from phases", () => {
|
|
57
|
-
const service = {
|
|
58
|
-
appName: "checkout-app",
|
|
59
|
-
appType: "frontend",
|
|
60
|
-
stack: "billing",
|
|
61
|
-
port: 3210,
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
const phase = {
|
|
65
|
-
name: "Pre-Alpha",
|
|
66
|
-
enabledStacks: ["billing", "checkout-app"],
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
// The service belongs to the "billing" stack, while the phase controls
|
|
70
|
-
// whether that stack is enabled for this project.
|
|
71
|
-
expect(service.stack).toBe("billing");
|
|
72
|
-
expect(phase.enabledStacks).toContain("billing");
|
|
73
|
-
expect(phase.enabledStacks).toContain("checkout-app");
|
|
74
|
-
expect(service.appName).toBe("checkout-app");
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
it("deduplicates enabledStacks per phase", () => {
|
|
78
|
-
const enabledStacks = Array.from(new Set(["proxy", "billing", "checkout-app", "billing"]));
|
|
79
|
-
|
|
80
|
-
expect(enabledStacks).toEqual(["proxy", "billing", "checkout-app"]);
|
|
81
|
-
expect(enabledStacks.filter((s) => s === "billing")).toHaveLength(1);
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
it("maps legacy stacks/services to phases/enabledStacks", () => {
|
|
85
|
-
const legacy = {
|
|
86
|
-
stacks: {
|
|
87
|
-
pre_alpha: {
|
|
88
|
-
name: "Pre-Alpha",
|
|
89
|
-
description: "Core infrastructure and MVP services",
|
|
90
|
-
services: ["proxy", "billing"],
|
|
91
|
-
},
|
|
92
|
-
alpha: {
|
|
93
|
-
name: "Alpha",
|
|
94
|
-
description: "Essential business services",
|
|
95
|
-
services: [],
|
|
96
|
-
},
|
|
97
|
-
beta: {
|
|
98
|
-
name: "Beta",
|
|
99
|
-
description: "Extended features",
|
|
100
|
-
services: [],
|
|
101
|
-
},
|
|
102
|
-
out_of_scope: {
|
|
103
|
-
name: "Out of Scope",
|
|
104
|
-
description: "Future releases",
|
|
105
|
-
services: [],
|
|
106
|
-
},
|
|
107
|
-
},
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
const phases = {
|
|
111
|
-
pre_alpha: {
|
|
112
|
-
name: legacy.stacks.pre_alpha.name,
|
|
113
|
-
description: legacy.stacks.pre_alpha.description,
|
|
114
|
-
enabledStacks: legacy.stacks.pre_alpha.services,
|
|
115
|
-
},
|
|
116
|
-
alpha: {
|
|
117
|
-
name: legacy.stacks.alpha.name,
|
|
118
|
-
description: legacy.stacks.alpha.description,
|
|
119
|
-
enabledStacks: legacy.stacks.alpha.services,
|
|
120
|
-
},
|
|
121
|
-
beta: {
|
|
122
|
-
name: legacy.stacks.beta.name,
|
|
123
|
-
description: legacy.stacks.beta.description,
|
|
124
|
-
enabledStacks: legacy.stacks.beta.services,
|
|
125
|
-
},
|
|
126
|
-
out_of_scope: {
|
|
127
|
-
name: legacy.stacks.out_of_scope.name,
|
|
128
|
-
description: legacy.stacks.out_of_scope.description,
|
|
129
|
-
enabledStacks: legacy.stacks.out_of_scope.services,
|
|
130
|
-
},
|
|
131
|
-
};
|
|
132
|
-
|
|
133
|
-
expect(phases.pre_alpha.enabledStacks).toEqual(["proxy", "billing"]);
|
|
134
|
-
expect(phases).not.toHaveProperty("services");
|
|
135
|
-
expect(phases.pre_alpha).not.toHaveProperty("services");
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
it("generates spec.master PRE_ALPHA_RESOURCES from phases.pre_alpha.enabledStacks", () => {
|
|
139
|
-
const enabledStacks = ["proxy", "billing", "checkout-app"];
|
|
140
|
-
const resourceEntries = enabledStacks.map((stack) => `"${stack}": True`);
|
|
141
|
-
const specMaster = `PRE_ALPHA_RESOURCES = {\n${resourceEntries.join(",\n")}\n}`;
|
|
142
|
-
|
|
143
|
-
expect(specMaster).toContain("PRE_ALPHA_RESOURCES = {");
|
|
144
|
-
expect(specMaster).toContain('"billing": True');
|
|
145
|
-
expect(specMaster).toContain('"checkout-app": True');
|
|
146
|
-
expect(specMaster).not.toContain('"services"');
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
it("keeps focus lists derived from phases for CLI --focus", () => {
|
|
150
|
-
const preAlpha = ["proxy", "billing", "checkout-app"];
|
|
151
|
-
const alpha = ["api"];
|
|
152
|
-
const beta = ["worker"];
|
|
153
|
-
const focusPreAlpha = preAlpha;
|
|
154
|
-
const focusAlpha = [...preAlpha, ...alpha];
|
|
155
|
-
const focusBeta = [...preAlpha, ...alpha, ...beta];
|
|
156
|
-
|
|
157
|
-
expect(focusPreAlpha).toEqual(preAlpha);
|
|
158
|
-
expect(focusAlpha).toContain("checkout-app");
|
|
159
|
-
expect(focusBeta).toContain("checkout-app");
|
|
160
|
-
});
|
|
161
|
-
});
|
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
import { execFileSync } from "node:child_process";
|
|
2
|
-
import { existsSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
3
|
-
import { tmpdir } from "node:os";
|
|
4
|
-
import { dirname, join, resolve } from "node:path";
|
|
5
|
-
import { fileURLToPath } from "node:url";
|
|
6
|
-
import { afterEach, describe, expect, it } from "vitest";
|
|
7
|
-
|
|
8
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
9
|
-
const __dirname = dirname(__filename);
|
|
10
|
-
const repoRoot = resolve(__dirname, "../../../..");
|
|
11
|
-
const cliBin = join(repoRoot, "cli", "bin", "tdk.js");
|
|
12
|
-
|
|
13
|
-
function runTdk(args: string[], cwd: string, input?: string): string {
|
|
14
|
-
return execFileSync(process.execPath, [cliBin, ...args], {
|
|
15
|
-
cwd,
|
|
16
|
-
encoding: "utf-8",
|
|
17
|
-
input,
|
|
18
|
-
env: {
|
|
19
|
-
...process.env,
|
|
20
|
-
TDK_EXTENSION_SOURCE: repoRoot,
|
|
21
|
-
},
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
function starlarkSection(content: string, name: string): string {
|
|
26
|
-
const start = content.indexOf(`${name} = {`);
|
|
27
|
-
expect(start).toBeGreaterThanOrEqual(0);
|
|
28
|
-
const end = content.indexOf("\n}", start);
|
|
29
|
-
expect(end).toBeGreaterThan(start);
|
|
30
|
-
return content.slice(start, end + 2);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
describe("project and resource feature E2E", () => {
|
|
34
|
-
let projectRoot = "";
|
|
35
|
-
|
|
36
|
-
afterEach(() => {
|
|
37
|
-
if (projectRoot?.startsWith(tmpdir())) {
|
|
38
|
-
rmSync(projectRoot, { recursive: true, force: true });
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
it("keeps Verdaccio as an explicit premium project feature", () => {
|
|
43
|
-
projectRoot = mkdtempSync(join(tmpdir(), "tdk-project-feature-"));
|
|
44
|
-
|
|
45
|
-
runTdk(["project", "--yes"], projectRoot);
|
|
46
|
-
|
|
47
|
-
const projectJsonPath = join(projectRoot, ".tdk", "project.json");
|
|
48
|
-
const projectJson = JSON.parse(readFileSync(projectJsonPath, "utf-8"));
|
|
49
|
-
expect(projectJson.phases.pre_alpha.enabledStacks).not.toContain("verdaccio");
|
|
50
|
-
expect(projectJson.optional_infra.verdaccio).toBe(false);
|
|
51
|
-
|
|
52
|
-
let spec = readFileSync(join(projectRoot, ".tdk", ".tdk-out", "spec.master"), "utf-8");
|
|
53
|
-
expect(starlarkSection(spec, "PRE_ALPHA_RESOURCES")).not.toContain('"verdaccio": True');
|
|
54
|
-
expect(starlarkSection(spec, "OPTIONAL_INFRA_RESOURCES")).toContain('"verdaccio": False');
|
|
55
|
-
|
|
56
|
-
// Without TDK_LICENSE_KEY granting it, enabling verdaccio must be refused
|
|
57
|
-
// outright (config.ts:toggleInfraService) rather than silently accepted
|
|
58
|
-
// and then downgraded back to false by generateMasterConfigs.
|
|
59
|
-
expect(() => runTdk(["config", "enable-infra", "verdaccio"], projectRoot)).toThrow(
|
|
60
|
-
/Premium feature/,
|
|
61
|
-
);
|
|
62
|
-
|
|
63
|
-
const updatedProjectJson = JSON.parse(readFileSync(projectJsonPath, "utf-8"));
|
|
64
|
-
expect(updatedProjectJson.phases.pre_alpha.enabledStacks).not.toContain("verdaccio");
|
|
65
|
-
expect(updatedProjectJson.optional_infra.verdaccio).toBe(false);
|
|
66
|
-
|
|
67
|
-
spec = readFileSync(join(projectRoot, ".tdk", ".tdk-out", "spec.master"), "utf-8");
|
|
68
|
-
expect(starlarkSection(spec, "PRE_ALPHA_RESOURCES")).not.toContain('"verdaccio": True');
|
|
69
|
-
expect(starlarkSection(spec, "OPTIONAL_INFRA_RESOURCES")).toContain('"verdaccio": False');
|
|
70
|
-
}, 10000);
|
|
71
|
-
|
|
72
|
-
it("warns instead of silently stripping stale Verdaccio state when no premium license grants it", () => {
|
|
73
|
-
// generateMasterConfigs() intentionally does not enforce the license
|
|
74
|
-
// gate itself (see the comment above hasVerdaccioLicense's call site in
|
|
75
|
-
// template-engine.ts): the real enforcement is that the free-tier
|
|
76
|
-
// verdaccio_loader.star in this public repo is a no-op stub, so hand-
|
|
77
|
-
// edited state here has no functional effect without the private
|
|
78
|
-
// premium overlay. It just warns so the user isn't left guessing.
|
|
79
|
-
projectRoot = mkdtempSync(join(tmpdir(), "tdk-stale-verdaccio-"));
|
|
80
|
-
|
|
81
|
-
runTdk(["project", "--yes"], projectRoot);
|
|
82
|
-
|
|
83
|
-
const projectJsonPath = join(projectRoot, ".tdk", "project.json");
|
|
84
|
-
const projectJson = JSON.parse(readFileSync(projectJsonPath, "utf-8"));
|
|
85
|
-
projectJson.phases.pre_alpha.enabledStacks.push("verdaccio");
|
|
86
|
-
projectJson.optional_infra.verdaccio = true;
|
|
87
|
-
writeFileSync(projectJsonPath, JSON.stringify(projectJson, null, 2));
|
|
88
|
-
|
|
89
|
-
runTdk(["config", "regenerate"], projectRoot);
|
|
90
|
-
|
|
91
|
-
const updatedProjectJson = JSON.parse(readFileSync(projectJsonPath, "utf-8"));
|
|
92
|
-
expect(updatedProjectJson.phases.pre_alpha.enabledStacks).toContain("verdaccio");
|
|
93
|
-
expect(updatedProjectJson.optional_infra.verdaccio).toBe(true);
|
|
94
|
-
|
|
95
|
-
const spec = readFileSync(join(projectRoot, ".tdk", ".tdk-out", "spec.master"), "utf-8");
|
|
96
|
-
expect(starlarkSection(spec, "PRE_ALPHA_RESOURCES")).toContain('"verdaccio": True');
|
|
97
|
-
expect(starlarkSection(spec, "OPTIONAL_INFRA_RESOURCES")).toContain('"verdaccio": True');
|
|
98
|
-
}, 10000);
|
|
99
|
-
|
|
100
|
-
it("copies Docker runtime assets and creates the root workspace manifest during project generation", () => {
|
|
101
|
-
projectRoot = mkdtempSync(join(tmpdir(), "tdk-project-runtime-assets-"));
|
|
102
|
-
|
|
103
|
-
runTdk(["project", "--yes"], projectRoot);
|
|
104
|
-
|
|
105
|
-
const rootPackageJson = JSON.parse(readFileSync(join(projectRoot, "package.json"), "utf-8"));
|
|
106
|
-
expect(rootPackageJson.private).toBe(true);
|
|
107
|
-
expect(rootPackageJson.workspaces).toEqual(["services/*/*"]);
|
|
108
|
-
|
|
109
|
-
for (const file of [
|
|
110
|
-
"install-deps.sh",
|
|
111
|
-
"bun-hoisted-symlink-fix.sh",
|
|
112
|
-
"prisma-bun-client-link-fix.sh",
|
|
113
|
-
"prisma-normalize-client.sh",
|
|
114
|
-
]) {
|
|
115
|
-
expect(
|
|
116
|
-
existsSync(join(projectRoot, "shared-platform-engineering", "docker-templates", file)),
|
|
117
|
-
).toBe(true);
|
|
118
|
-
}
|
|
119
|
-
}, 10000);
|
|
120
|
-
|
|
121
|
-
it("vendors free env injection instead of Infisical credentials by default", () => {
|
|
122
|
-
projectRoot = mkdtempSync(join(tmpdir(), "tdk-project-env-injection-"));
|
|
123
|
-
|
|
124
|
-
runTdk(["project", "--yes"], projectRoot);
|
|
125
|
-
|
|
126
|
-
const envGenerator = readFileSync(
|
|
127
|
-
join(
|
|
128
|
-
projectRoot,
|
|
129
|
-
".tdk",
|
|
130
|
-
".tdk-out",
|
|
131
|
-
"tdk-cli-ext",
|
|
132
|
-
"engine",
|
|
133
|
-
"topologies",
|
|
134
|
-
"platform",
|
|
135
|
-
"docker",
|
|
136
|
-
"secrets",
|
|
137
|
-
"infisical.star",
|
|
138
|
-
),
|
|
139
|
-
"utf-8",
|
|
140
|
-
);
|
|
141
|
-
expect(envGenerator).toContain("TDK_SECRET_PROVIDER");
|
|
142
|
-
expect(envGenerator).not.toContain("INFISICAL_CLIENT_SECRET");
|
|
143
|
-
|
|
144
|
-
const dockerfileGenerator = readFileSync(
|
|
145
|
-
join(
|
|
146
|
-
projectRoot,
|
|
147
|
-
".tdk",
|
|
148
|
-
".tdk-out",
|
|
149
|
-
"tdk-cli-ext",
|
|
150
|
-
"engine",
|
|
151
|
-
"topologies",
|
|
152
|
-
"platform",
|
|
153
|
-
"docker",
|
|
154
|
-
"dockerfile",
|
|
155
|
-
"dockerfile.star",
|
|
156
|
-
),
|
|
157
|
-
"utf-8",
|
|
158
|
-
);
|
|
159
|
-
expect(dockerfileGenerator).toContain("use_infisical=False");
|
|
160
|
-
}, 10000);
|
|
161
|
-
|
|
162
|
-
it("writes default resource-level features into generated service.json files", () => {
|
|
163
|
-
projectRoot = mkdtempSync(join(tmpdir(), "tdk-resource-feature-"));
|
|
164
|
-
runTdk(["project", "--yes"], projectRoot);
|
|
165
|
-
|
|
166
|
-
runTdk(
|
|
167
|
-
["resource", "api", "--type", "backend", "--stack", "alpha", "--path", "services/alpha/api"],
|
|
168
|
-
projectRoot,
|
|
169
|
-
"\n",
|
|
170
|
-
);
|
|
171
|
-
runTdk(
|
|
172
|
-
["resource", "web", "--type", "frontend", "--stack", "alpha", "--path", "services/alpha/web"],
|
|
173
|
-
projectRoot,
|
|
174
|
-
"\n",
|
|
175
|
-
);
|
|
176
|
-
|
|
177
|
-
const backendService = JSON.parse(
|
|
178
|
-
readFileSync(join(projectRoot, "services", "alpha", "api", "service.json"), "utf-8"),
|
|
179
|
-
);
|
|
180
|
-
expect(backendService.featuresEnabled).toEqual(["prisma"]);
|
|
181
|
-
|
|
182
|
-
const frontendService = JSON.parse(
|
|
183
|
-
readFileSync(join(projectRoot, "services", "alpha", "web", "service.json"), "utf-8"),
|
|
184
|
-
);
|
|
185
|
-
expect(frontendService.featuresEnabled).toEqual(["api-client", "env-config", "api-index"]);
|
|
186
|
-
}, 10000);
|
|
187
|
-
});
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
|
|
3
|
-
const EXPECTED_TEMPLATES = [
|
|
4
|
-
"TILT_RESOURCE_DEFAULTS.star.hbs",
|
|
5
|
-
"TILT_TECH_STACK.star.hbs",
|
|
6
|
-
"Tiltfile.hbs",
|
|
7
|
-
"spec.master.hbs",
|
|
8
|
-
] as const;
|
|
9
|
-
|
|
10
|
-
const TEMPLATE_PATTERNS = {
|
|
11
|
-
"TILT_RESOURCE_DEFAULTS.star.hbs": [
|
|
12
|
-
"BASE_PORT_FRONTEND",
|
|
13
|
-
"BASE_PORT_BACKEND",
|
|
14
|
-
"HEALTH_CHECK_PATH",
|
|
15
|
-
"starlarkArray",
|
|
16
|
-
],
|
|
17
|
-
"TILT_TECH_STACK.star.hbs": ["BUNDLER", "RUNTIME", "ORM", "assert_tech_stack"],
|
|
18
|
-
"Tiltfile.hbs": ["TDK CLI", ".tdk/.tdk-out", "spec.master"],
|
|
19
|
-
} as const;
|
|
20
|
-
|
|
21
|
-
describe("project command", () => {
|
|
22
|
-
it("should verify all expected templates exist", () => {
|
|
23
|
-
expect(EXPECTED_TEMPLATES).toHaveLength(4);
|
|
24
|
-
for (const template of EXPECTED_TEMPLATES) {
|
|
25
|
-
expect(EXPECTED_TEMPLATES).toContain(template);
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
it("should have templates with all required content patterns", () => {
|
|
30
|
-
for (const templateName of Object.keys(TEMPLATE_PATTERNS)) {
|
|
31
|
-
expect(EXPECTED_TEMPLATES).toContain(templateName);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
for (const [, patterns] of Object.entries(TEMPLATE_PATTERNS)) {
|
|
35
|
-
for (const pattern of patterns) {
|
|
36
|
-
expect(patterns).toContain(pattern);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
describe("project command templates", () => {
|
|
43
|
-
it("should have valid Handlebars template patterns", () => {
|
|
44
|
-
const handlebarsPatterns = ["{{", "}}"];
|
|
45
|
-
|
|
46
|
-
expect(handlebarsPatterns).toContain("{{");
|
|
47
|
-
expect(handlebarsPatterns).toContain("}}");
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
it("should have templates with required content patterns defined", () => {
|
|
51
|
-
for (const pattern of [
|
|
52
|
-
"BASE_PORT_FRONTEND",
|
|
53
|
-
"BASE_PORT_BACKEND",
|
|
54
|
-
"HEALTH_CHECK_PATH",
|
|
55
|
-
"starlarkArray",
|
|
56
|
-
]) {
|
|
57
|
-
expect(TEMPLATE_PATTERNS["TILT_RESOURCE_DEFAULTS.star.hbs"]).toContain(pattern);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
for (const pattern of ["BUNDLER", "RUNTIME", "ORM", "assert_tech_stack"]) {
|
|
61
|
-
expect(TEMPLATE_PATTERNS["TILT_TECH_STACK.star.hbs"]).toContain(pattern);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
for (const pattern of ["TDK CLI", ".tdk/.tdk-out", "spec.master"]) {
|
|
65
|
-
expect(TEMPLATE_PATTERNS["Tiltfile.hbs"]).toContain(pattern);
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
});
|