@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,84 +0,0 @@
|
|
|
1
|
-
## Context
|
|
2
|
-
|
|
3
|
-
TDK CLI is a multi-language monorepo with TypeScript (CLI), Python (Discovery), and Starlark (Engine/Tilt configs). During initial exploration, several gaps were identified:
|
|
4
|
-
|
|
5
|
-
**Current State:**
|
|
6
|
-
- CLI `resource.ts` has 4 TODO comments for unimplemented features (database/cache checks, routes, worker logic, diff logic)
|
|
7
|
-
- CLI `config.ts` has incomplete diff implementation
|
|
8
|
-
- Test coverage exists but gaps likely in error handling paths
|
|
9
|
-
- No systematic audit system for tracking technical debt
|
|
10
|
-
|
|
11
|
-
**Constraints:**
|
|
12
|
-
- Must not break existing functionality
|
|
13
|
-
- Changes should be minimal and focused
|
|
14
|
-
- All fixes must include tests where applicable
|
|
15
|
-
- Must maintain compatibility with existing Tilt workflows
|
|
16
|
-
|
|
17
|
-
## Goals / Non-Goals
|
|
18
|
-
|
|
19
|
-
**Goals:**
|
|
20
|
-
- Implement automated scanning to find TODO/FIXME/BUG/HACK markers across all languages
|
|
21
|
-
- Fix high-priority TODOs in CLI commands (resource.ts, config.ts)
|
|
22
|
-
- Add missing test coverage for critical error paths
|
|
23
|
-
- Remove dead code and unused imports
|
|
24
|
-
- Document all changes with clear commit messages
|
|
25
|
-
|
|
26
|
-
**Non-Goals:**
|
|
27
|
-
- Major refactoring or architecture changes
|
|
28
|
-
- Adding new features beyond fixing existing TODOs
|
|
29
|
-
- Rewriting working code without TODOs
|
|
30
|
-
- Breaking changes to existing APIs
|
|
31
|
-
|
|
32
|
-
## Decisions
|
|
33
|
-
|
|
34
|
-
**Decision 1: Use grep-based scanning for initial audit**
|
|
35
|
-
- **Rationale:** Simple, fast, works across all languages (TypeScript, Python, Starlark, Go)
|
|
36
|
-
- **Alternative considered:** AST parsing - too complex for initial pass
|
|
37
|
-
- **Implementation:** Shell script that searches for patterns: `TODO`, `FIXME`, `XXX`, `BUG`, `HACK`
|
|
38
|
-
|
|
39
|
-
**Decision 2: Prioritize TODOs by file location and context**
|
|
40
|
-
- **Rationale:** Not all TODOs are equal - CLI commands affect users directly
|
|
41
|
-
- **Priority order:**
|
|
42
|
-
1. CLI user-facing commands (resource, config)
|
|
43
|
-
2. Core discovery logic
|
|
44
|
-
3. Engine utilities
|
|
45
|
-
4. Test infrastructure
|
|
46
|
-
|
|
47
|
-
**Decision 3: Implement TODOs with minimal viable solutions**
|
|
48
|
-
- **Rationale:** Don't over-engineer; match the scope implied by the TODO comment
|
|
49
|
-
- **Example:** `// TODO: Add your routes here` → Add basic route placeholder, not full routing system
|
|
50
|
-
|
|
51
|
-
**Decision 4: Add tests for all implemented TODOs**
|
|
52
|
-
- **Rationale:** Ensures fixes work and don't regress
|
|
53
|
-
- **Approach:** Unit tests for CLI, integration tests where appropriate
|
|
54
|
-
|
|
55
|
-
## Risks / Trade-offs
|
|
56
|
-
|
|
57
|
-
**Risk:** TODO comments may be intentionally vague and require product decisions
|
|
58
|
-
- **Mitigation:** For ambiguous TODOs, implement minimal viable solution and document the limitation
|
|
59
|
-
|
|
60
|
-
**Risk:** Implementing TODOs may introduce bugs in working code
|
|
61
|
-
- **Mitigation:** All changes get tests; use existing test patterns from the codebase
|
|
62
|
-
|
|
63
|
-
**Risk:** Dead code removal might break something that appears unused but is dynamically loaded
|
|
64
|
-
- **Mitigation:** Only remove code after verifying no references exist (static analysis + runtime check)
|
|
65
|
-
|
|
66
|
-
**Risk:** Test coverage gaps may be larger than initially estimated
|
|
67
|
-
- **Mitigation:** Focus on critical paths first; document remaining gaps for future work
|
|
68
|
-
|
|
69
|
-
## Migration Plan
|
|
70
|
-
|
|
71
|
-
Not applicable - this is an internal maintenance change with no user-facing migration needed.
|
|
72
|
-
|
|
73
|
-
Deployment steps:
|
|
74
|
-
1. Run audit script to generate initial report
|
|
75
|
-
2. Fix TODOs in priority order (CLI first)
|
|
76
|
-
3. Add tests for all changes
|
|
77
|
-
4. Run full test suite to ensure no regressions
|
|
78
|
-
5. Submit as single PR or split by module (CLI, Discovery, Engine)
|
|
79
|
-
|
|
80
|
-
## Open Questions
|
|
81
|
-
|
|
82
|
-
1. Should we create a recurring audit job (CI) to catch new TODOs?
|
|
83
|
-
2. What's the policy for TODOs that require product decisions vs. technical implementation?
|
|
84
|
-
3. Should we establish a "no TODOs in main" policy after this cleanup?
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
## Why
|
|
2
|
-
|
|
3
|
-
The TDK CLI codebase has accumulated technical debt through TODO comments, incomplete implementations, and gaps in test coverage. These issues create friction for developers and risk bugs in production. Now is the right time to systematically scan the repository, identify gaps, and fix them before they compound into larger problems.
|
|
4
|
-
|
|
5
|
-
## What Changes
|
|
6
|
-
|
|
7
|
-
- **Scan entire codebase** for TODO/FIXME/BUG/HACK comments using automated detection
|
|
8
|
-
- **Identify incomplete implementations** in CLI commands (resource, config with TODOs)
|
|
9
|
-
- **Find missing test coverage** for critical paths in CLI and discovery modules
|
|
10
|
-
- **Fix high-priority issues**: Implement TODO items, add missing error handling, improve type safety
|
|
11
|
-
- **Add missing documentation** for unclear or undocumented code paths
|
|
12
|
-
- **Clean up technical debt**: Remove dead code, consolidate duplicates, fix linting issues
|
|
13
|
-
|
|
14
|
-
## Capabilities
|
|
15
|
-
|
|
16
|
-
### New Capabilities
|
|
17
|
-
- `codebase-audit`: Automated scanning system for detecting technical debt markers (TODOs, missing tests, incomplete features)
|
|
18
|
-
- `todo-resolution`: Implementation of high-priority TODO items in CLI commands
|
|
19
|
-
- `test-gap-fill`: Adding missing test coverage for critical code paths
|
|
20
|
-
- `dead-code-cleanup`: Identification and removal of unused code and imports
|
|
21
|
-
|
|
22
|
-
### Modified Capabilities
|
|
23
|
-
- None - this is a maintenance/polish change that doesn't modify existing specifications
|
|
24
|
-
|
|
25
|
-
## Impact
|
|
26
|
-
|
|
27
|
-
- **CLI**: TypeScript source files in `cli/src/` - implementing TODOs in resource.ts, config.ts
|
|
28
|
-
- **Tests**: Python tests in `tests/tilt-engine/` and TypeScript tests in `cli/` - adding missing coverage
|
|
29
|
-
- **Discovery**: Python modules in `discovery/` - improving error handling and edge cases
|
|
30
|
-
- **Engine**: Starlark files in `engine/` - minor cleanups and documentation improvements
|
|
31
|
-
- **No breaking changes**: All fixes are additive or internal improvements
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
## ADDED Requirements
|
|
2
|
-
|
|
3
|
-
### Requirement: Automated scanning detects technical debt markers
|
|
4
|
-
The system SHALL provide automated scanning to detect TODO, FIXME, XXX, BUG, and HACK comments across all source files.
|
|
5
|
-
|
|
6
|
-
#### Scenario: Scan TypeScript files
|
|
7
|
-
- **WHEN** the audit script runs against the CLI source directory
|
|
8
|
-
- **THEN** it SHALL output a list of all files containing TODO/FIXME/BUG/HACK markers with line numbers
|
|
9
|
-
|
|
10
|
-
#### Scenario: Scan Python files
|
|
11
|
-
- **WHEN** the audit script runs against the discovery directory
|
|
12
|
-
- **THEN** it SHALL output a list of all files containing TODO/FIXME/BUG/HACK markers with line numbers
|
|
13
|
-
|
|
14
|
-
#### Scenario: Scan Starlark files
|
|
15
|
-
- **WHEN** the audit script runs against the engine directory
|
|
16
|
-
- **THEN** it SHALL output a list of all files containing TODO/FIXME/BUG/HACK markers with line numbers
|
|
17
|
-
|
|
18
|
-
### Requirement: Audit output is actionable
|
|
19
|
-
The system SHALL generate an audit report that categorizes findings by priority and location.
|
|
20
|
-
|
|
21
|
-
#### Scenario: Priority categorization
|
|
22
|
-
- **WHEN** the audit completes
|
|
23
|
-
- **THEN** findings SHALL be categorized as: CLI (user-facing), Core (discovery/engine), Test (infrastructure)
|
|
24
|
-
|
|
25
|
-
#### Scenario: Report format
|
|
26
|
-
- **WHEN** the audit generates a report
|
|
27
|
-
- **THEN** it SHALL include file path, line number, marker type, and the TODO text for each finding
|
package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/specs/dead-code-cleanup/spec.md
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
## ADDED Requirements
|
|
2
|
-
|
|
3
|
-
### Requirement: Dead code is identified and removed
|
|
4
|
-
The system SHALL identify and remove unused code, imports, and variables.
|
|
5
|
-
|
|
6
|
-
#### Scenario: Unused imports removed
|
|
7
|
-
- **WHEN** scanning TypeScript files in cli/src
|
|
8
|
-
- **THEN** all unused imports SHALL be identified and removed
|
|
9
|
-
|
|
10
|
-
#### Scenario: Unused functions removed
|
|
11
|
-
- **WHEN** scanning Python files in discovery/
|
|
12
|
-
- **THEN** functions with no references SHALL be flagged for review and removed if confirmed unused
|
|
13
|
-
|
|
14
|
-
#### Scenario: Dead Starlark code removed
|
|
15
|
-
- **WHEN** scanning Starlark files in engine/
|
|
16
|
-
- **THEN** unused variables and functions SHALL be identified and removed
|
|
17
|
-
|
|
18
|
-
### Requirement: Duplicate code is consolidated
|
|
19
|
-
The system SHALL identify and consolidate duplicate code patterns where appropriate.
|
|
20
|
-
|
|
21
|
-
#### Scenario: Duplicate templates consolidated
|
|
22
|
-
- **WHEN** similar template patterns exist in multiple CLI commands
|
|
23
|
-
- **THEN** they SHALL be consolidated into shared utility functions
|
|
24
|
-
|
|
25
|
-
#### Scenario: Shared validation logic
|
|
26
|
-
- **WHEN** validation logic is duplicated across modules
|
|
27
|
-
- **THEN** it SHALL be moved to a shared validation utility
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
## ADDED Requirements
|
|
2
|
-
|
|
3
|
-
### Requirement: CLI commands have test coverage
|
|
4
|
-
The system SHALL add missing test coverage for CLI command implementations.
|
|
5
|
-
|
|
6
|
-
#### Scenario: Resource command tests
|
|
7
|
-
- **WHEN** running the test suite
|
|
8
|
-
- **THEN** resource.ts command SHALL have unit tests covering resource creation, template generation, and port assignment
|
|
9
|
-
|
|
10
|
-
#### Scenario: Config command tests
|
|
11
|
-
- **WHEN** running the test suite
|
|
12
|
-
- **THEN** config.ts command SHALL have unit tests covering diff functionality and configuration loading
|
|
13
|
-
|
|
14
|
-
### Requirement: Error handling paths are tested
|
|
15
|
-
The system SHALL add tests for error handling and edge cases.
|
|
16
|
-
|
|
17
|
-
#### Scenario: Invalid resource type handling
|
|
18
|
-
- **WHEN** user specifies an invalid resource type
|
|
19
|
-
- **THEN** the system SHALL throw an appropriate error and test SHALL verify this behavior
|
|
20
|
-
|
|
21
|
-
#### Scenario: Missing manifest handling
|
|
22
|
-
- **WHEN** discovering services with missing or invalid manifests
|
|
23
|
-
- **THEN** the system SHALL handle gracefully and log appropriate warnings (tested)
|
package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/specs/todo-resolution/spec.md
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
## ADDED Requirements
|
|
2
|
-
|
|
3
|
-
### Requirement: CLI resource command TODOs are implemented
|
|
4
|
-
The system SHALL implement all TODO comments in cli/src/commands/resource.ts.
|
|
5
|
-
|
|
6
|
-
#### Scenario: Resource database check TODO
|
|
7
|
-
- **WHEN** creating a new resource with database dependencies
|
|
8
|
-
- **THEN** the system SHALL check if the database exists and create it if missing
|
|
9
|
-
|
|
10
|
-
#### Scenario: Resource cache check TODO
|
|
11
|
-
- **WHEN** creating a new resource with cache dependencies
|
|
12
|
-
- **THEN** the system SHALL check if the cache service is configured
|
|
13
|
-
|
|
14
|
-
#### Scenario: Resource routes TODO
|
|
15
|
-
- **WHEN** creating a new backend resource
|
|
16
|
-
- **THEN** the system SHALL generate a basic route file template with health check endpoint
|
|
17
|
-
|
|
18
|
-
#### Scenario: Resource worker logic TODO
|
|
19
|
-
- **WHEN** creating a new worker resource
|
|
20
|
-
- **THEN** the system SHALL generate a basic worker script template with job processing structure
|
|
21
|
-
|
|
22
|
-
### Requirement: CLI config command diff is implemented
|
|
23
|
-
The system SHALL implement the diff logic TODO in cli/src/commands/config.ts.
|
|
24
|
-
|
|
25
|
-
#### Scenario: Config diff shows differences
|
|
26
|
-
- **WHEN** user runs `tdk config diff`
|
|
27
|
-
- **THEN** the system SHALL compare local and remote configuration and display differences
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
## 1. Codebase Audit
|
|
2
|
-
|
|
3
|
-
- [x] 1.1 Create audit script to scan for TODO/FIXME/BUG/HACK markers
|
|
4
|
-
- [x] 1.2 Run audit against cli/src directory (TypeScript files)
|
|
5
|
-
- [x] 1.3 Run audit against discovery/ directory (Python and Starlark files)
|
|
6
|
-
- [x] 1.4 Run audit against engine/ directory (Starlark files)
|
|
7
|
-
- [x] 1.5 Generate prioritized report with CLI, Core, and Test categories
|
|
8
|
-
|
|
9
|
-
## 2. CLI TODO Resolution
|
|
10
|
-
|
|
11
|
-
- [x] 2.1 Implement database check TODO in cli/src/commands/resource.ts
|
|
12
|
-
- [x] 2.2 Implement cache check TODO in cli/src/commands/resource.ts
|
|
13
|
-
- [x] 2.3 Implement routes TODO (generate route file template) in resource.ts
|
|
14
|
-
- [x] 2.4 Implement worker logic TODO (generate worker template) in resource.ts
|
|
15
|
-
- [x] 2.5 Implement diff logic TODO in cli/src/commands/config.ts
|
|
16
|
-
|
|
17
|
-
## 3. Test Coverage Improvements
|
|
18
|
-
|
|
19
|
-
- [x] 3.1 Add unit tests for resource.ts command (creation, templates, port assignment)
|
|
20
|
-
- [x] 3.2 Add unit tests for config.ts command (diff functionality)
|
|
21
|
-
- [x] 3.3 Add error handling tests for invalid resource types
|
|
22
|
-
- [x] 3.4 Add tests for missing/invalid manifest handling in discovery
|
|
23
|
-
- [x] 3.5 Run full test suite and fix any regressions
|
|
24
|
-
|
|
25
|
-
## 4. Dead Code Cleanup
|
|
26
|
-
|
|
27
|
-
- [x] 4.1 Identify and remove unused imports in cli/src TypeScript files
|
|
28
|
-
- [x] 4.2 Identify and flag unused functions in discovery/ Python files
|
|
29
|
-
- [x] 4.3 Identify and flag unused variables/functions in engine/ Starlark files
|
|
30
|
-
- [x] 4.4 Consolidate duplicate template patterns in CLI commands
|
|
31
|
-
- [x] 4.5 Move duplicated validation logic to shared utilities
|
|
32
|
-
|
|
33
|
-
## 5. Documentation and Finalization
|
|
34
|
-
|
|
35
|
-
- [x] 5.1 Document all changes in commit messages
|
|
36
|
-
- [x] 5.2 Update AGENTS.md files if implementation patterns changed
|
|
37
|
-
- [x] 5.3 Run final linting and type checking
|
|
38
|
-
- [x] 5.4 Verify all tests pass
|
|
39
|
-
- [x] 5.5 Archive the audit report for future reference
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
## Context
|
|
2
|
-
|
|
3
|
-
### CLI Duplication
|
|
4
|
-
`beauty-crm/cli/` and `tdk-cli/cli/` both contain the `@tdk-landscape/tdk-cli-core` package. The `beauty-crm/cli/package.json` declares `"repository.directory": "cli"` pointing to `tdk-landscape/tdk-cli`, confirming it was originally published from the tdk-cli monorepo workspace. Over time, `tdk-cli/cli/` has evolved (12 src files, generator support, DRY assessment) while `beauty-crm/cli/` has lagged behind (9 src files). Any developer fixing the CLI must choose which copy to edit — and usually picks the wrong one.
|
|
5
|
-
|
|
6
|
-
### AI Config Sprawl
|
|
7
|
-
The beauty-crm monorepo has accumulated configs for every AI coding assistant that gained popularity:
|
|
8
|
-
|
|
9
|
-
| Assistant | Type | Size |
|
|
10
|
-
|-----------|------|------|
|
|
11
|
-
| `.claude/` | Dir | skills, CLAUDE.md (757 lines) |
|
|
12
|
-
| `.cursor/` | Dir | rules, mcp.json, Dockerfile |
|
|
13
|
-
| `.continue/` | Dir | skills config |
|
|
14
|
-
| `.roo/` | Dir | 7 rulesets, mcp.json |
|
|
15
|
-
| `.serena/` | Dir | memories, prompt templates |
|
|
16
|
-
| `.agents/` | Dir | skills, mempalace |
|
|
17
|
-
| `.augment/` | Dir | agents, skills |
|
|
18
|
-
| `.kiro/` | Dir | agents, skills, settings, specs |
|
|
19
|
-
| `CLAUDE.md` | File | 757 lines (canonical project context) |
|
|
20
|
-
| `.cursorrules` | File | 32 lines (duplicates CLAUDE.md) |
|
|
21
|
-
| `.windsurfrules` | File | 2855 lines (duplicates CLAUDE.md + more) |
|
|
22
|
-
| `.roomodes` | File | 47 lines (mode definitions) |
|
|
23
|
-
| `.augment-guidelines` | File | 457 lines (duplicates CLAUDE.md) |
|
|
24
|
-
|
|
25
|
-
Most contain overlapping project context (tech stack, architecture, conventions) which creates a maintenance tax — every time the tech stack or conventions change, 13+ files need updating. The `.cursorrules` is a 32-line subset of `CLAUDE.md`. The `.windsurfrules` is 2855 lines that includes the full `CLAUDE.md` content plus extra.
|
|
26
|
-
|
|
27
|
-
## Goals / Non-Goals
|
|
28
|
-
|
|
29
|
-
**Goals:**
|
|
30
|
-
- Remove `beauty-crm/cli/` and replace with a symlink to `tdk-cli/cli/`
|
|
31
|
-
- Update any beauty-crm tooling that references `beauty-crm/cli/` directly
|
|
32
|
-
- Consolidate all AI configs into one canonical location per project
|
|
33
|
-
- Remove duplicate root-level config files (`.cursorrules`, `.windsurfrules`, `.roomodes`, `.augment-guidelines`)
|
|
34
|
-
- Move `.cursor/mcp.json`, `.roo/` mode definitions into a shared format if they add unique value
|
|
35
|
-
- Verify no CI/CD breakage
|
|
36
|
-
|
|
37
|
-
**Non-Goals:**
|
|
38
|
-
- Merging AI assistant-specific features (e.g., Serena memories, Roo rulesets) — keep them in `.claude/skills/` or let each assistant read its own format
|
|
39
|
-
- Renaming the entire root directory structure
|
|
40
|
-
- Changing how `tdk-cli/` is organized internally
|
|
41
|
-
- Adding or removing any AI assistant support — only consolidating configs
|
|
42
|
-
|
|
43
|
-
## Decisions
|
|
44
|
-
|
|
45
|
-
### Decision 1: Remove Completely (No Symlink)
|
|
46
|
-
**Path**: `git rm -r beauty-crm/cli/` — deleted from git and disk, no replacement.
|
|
47
|
-
**Rationale**: A symlink breaks `git add pathspec` resolution (git treats symlinked directories as single blobs and cannot traverse them). Since no scripts, workspaces, or CI pipelines reference `beauty-crm/cli/`, there's nothing to break. Removing entirely is the cleanest solution.
|
|
48
|
-
**Alternatives considered**:
|
|
49
|
-
- Symlink to `../tdk-cli/cli/` — Rejected: breaks `git add` and other git operations
|
|
50
|
-
- Keep as-is (do nothing) — Drift will continue to grow
|
|
51
|
-
|
|
52
|
-
### Decision 2: Canonical AI Config = `.claude/` + `CLAUDE.md`
|
|
53
|
-
**Rationale**: `CLAUDE.md` is the most comprehensive single file (757 lines covering tech stack, architecture, conventions). `.claude/` is the directory format used by Claude Code and Opencode. Other assistants (Cursor, Windsurf, Continue, Roo, Serena) can read symlinked or imported copies.
|
|
54
|
-
**Implementation**: Other root config files get removed. Each assistant's directory gets a README pointing to `CLAUDE.md` as canonical.
|
|
55
|
-
|
|
56
|
-
### Decision 3: Preserve `.cursor/mcp.json` as Shared MCP Config
|
|
57
|
-
**Rationale**: MCP server configuration is tool-agnostic and useful across assistants. Move it to a shared location or keep as a thin reference.
|
|
58
|
-
**Approach**: Keep `.cursor/mcp.json` but add a comment header pointing to `CLAUDE.md` for context. Alternatively, move to `.opencode/mcp.json` if opencode is the canonical tool.
|
|
59
|
-
|
|
60
|
-
### Decision 4: Keep `.roo/` Rulesets
|
|
61
|
-
**Rationale**: Roo's role-based rulesets (architect, code, debug, etc.) are unique to Roo's multi-agent workflow and don't duplicate CLAUDE.md content. They add value.
|
|
62
|
-
**Approach**: Leave `.roo/rules/` in place. Only remove root-level `.roomodes` if Roo can find its modes via the directory.
|
|
63
|
-
|
|
64
|
-
### Decision 5: No Cross-Project AI Config Sync
|
|
65
|
-
**Rationale**: `identity/`, `platform/`, and `tdk-cli/` don't have AI configs. Adding them would be scope creep. Each project should opt in when ready.
|
|
66
|
-
**Approach**: Document in CONTRIBUTING.md that each project manages its own AI configs, and `.claude/` + `CLAUDE.md` is the recommended canonical format.
|
|
67
|
-
|
|
68
|
-
## Risks / Trade-offs
|
|
69
|
-
|
|
70
|
-
**Risk**: Symlink breaks in CI/CD (Docker, git checkout without submodules)
|
|
71
|
-
- **Mitigation**: Symlinks work with `git clone` and Docker COPY. Test explicitly.
|
|
72
|
-
|
|
73
|
-
**Risk**: Developer has `.cursorrules` or `.windsurfrules` open in muscle memory and is confused when gone
|
|
74
|
-
- **Mitigation**: Leave a one-line comment file: `.cursorrules → see CLAUDE.md`
|
|
75
|
-
|
|
76
|
-
**Risk**: Cursor/Continue/Roo stop working optimally without their config files
|
|
77
|
-
- **Mitigation**: Each assistant can still use its own directory format. We only remove root-level _files_ that duplicate `CLAUDE.md`. The directories (`.cursor/`, `.continue/`, `.roo/`) stay but get trimmed.
|
|
78
|
-
|
|
79
|
-
**Risk**: Some AI assistant relies on `.windsurfrules` being 2855 lines (it contains everything)
|
|
80
|
-
- **Mitigation**: WindSurf can also read `CLAUDE.md` directly. The `CLAUDE.md` is already comprehensive.
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
## Why
|
|
2
|
-
|
|
3
|
-
The TDK landscape has accumulated two inefficiencies from its extraction from the original `beauty-crm` monorepo:
|
|
4
|
-
|
|
5
|
-
1. **Duplicated CLI client**: `beauty-crm/cli/` is a vendored copy of `tdk-cli/cli/` (both publish as `@tdk-landscape/tdk-cli-core`). This means every CLI fix must be applied twice, and the two copies have already diverged — `beauty-crm/cli/` has 9 source files while `tdk-cli/cli/` has 12 with additional features. This will only worsen over time.
|
|
6
|
-
|
|
7
|
-
2. **AI config sprawl**: `beauty-crm/` contains configuration for 8 AI coding assistants (`.claude/`, `.cursor/`, `.continue/`, `.roo/`, `.serena/`, `.agents/`, `.augment/`, `.kiro/`) plus 5 root-level config files (`CLAUDE.md`, `.cursorrules`, `.windsurfrules`, `.roomodes`, `.augment-guidelines`). Most contain duplicate project context. Developers waste time maintaining 13+ config files that say the same thing.
|
|
8
|
-
|
|
9
|
-
Fixing both reduces maintenance burden, clarifies the canonical source of truth, and prevents future drift.
|
|
10
|
-
|
|
11
|
-
## What Changes
|
|
12
|
-
|
|
13
|
-
### Workstream A: CLI Duplicate Removal
|
|
14
|
-
- Remove `beauty-crm/cli/` entirely via `git rm`
|
|
15
|
-
- No symlink — symlinks break `git add` pathspec resolution
|
|
16
|
-
- Update any `beauty-crm/` scripts/build pipelines that reference the old path
|
|
17
|
-
|
|
18
|
-
### Workstream B: AI Config Consolidation
|
|
19
|
-
- Choose one canonical AI assistant config per project (recommend: `.claude/` + `CLAUDE.md`)
|
|
20
|
-
- Remove duplicated root config files (`.cursorrules`, `.windsurfrules`, `.roomodes`, `.augment-guidelines`)
|
|
21
|
-
- Consolidate `beauty-crm/.kiro/`, `beauty-crm/.agents/`, `beauty-crm/.augment/` into `beauty-crm/.claude/` or a shared `.ai-tools/` directory
|
|
22
|
-
- Add `.cursor/mcp.json` as a workspace-level config (not project-specific)
|
|
23
|
-
- Document which AI config is canonical for each project
|
|
24
|
-
|
|
25
|
-
## Capabilities
|
|
26
|
-
|
|
27
|
-
### New Capabilities
|
|
28
|
-
- `cli-source-consolidation`: Single source of truth for `@tdk-landscape/tdk-cli-core`
|
|
29
|
-
- `ai-config-consolidation`: Unified AI assistant configuration
|
|
30
|
-
|
|
31
|
-
### Modified Capabilities
|
|
32
|
-
- Existing specs in `tdk-cli/openspec/specs/` may need minor updates if they reference `beauty-crm/cli/`
|
|
33
|
-
|
|
34
|
-
## Impact
|
|
35
|
-
|
|
36
|
-
- **Files removed**: beauty-crm/cli/ (~50 files), AI root configs (5 files), AI assistant dirs (5+ dirs)
|
|
37
|
-
- **Files added**: 1 symlink, 1-2 consolidated config files
|
|
38
|
-
- **Dependencies**: CI/CD pipelines that reference beauty-crm/cli/ need updating
|
|
39
|
-
- **Breaking Changes**: Any tooling that directly references `beauty-crm/cli/bin/tdk.js` will need to use `tdk-cli/cli/bin/tdk.js`
|
|
40
|
-
- **Risk Level**: Low-Medium. CLI removal is mechanical and testable. AI config changes are cosmetic but need care not to break developer workflows.
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
# landscape-consolidation Specification
|
|
2
|
-
|
|
3
|
-
## Purpose
|
|
4
|
-
|
|
5
|
-
The TDK landscape has two sources of maintenance waste: a vendored duplicate of the `@tdk-landscape/tdk-cli-core` package in `beauty-crm/cli/` that has diverged from the canonical `tdk-cli/cli/`, and 13+ AI assistant config entries in `beauty-crm/` with overlapping project context spread across 8 directories and 5 root files. Consolidating both reduces maintenance burden and establishes canonical sources of truth.
|
|
6
|
-
|
|
7
|
-
## Requirements
|
|
8
|
-
|
|
9
|
-
### Requirement: Single CLI source of truth
|
|
10
|
-
|
|
11
|
-
All source code and tooling for the `@tdk-landscape/tdk-cli-core` package SHALL originate from `tdk-cli/cli/`. The `beauty-crm/cli/` directory SHALL NOT contain its own copy of CLI source.
|
|
12
|
-
|
|
13
|
-
#### Scenario: Remove duplicate CLI directory
|
|
14
|
-
- **WHEN** inspecting the `beauty-crm/` project root
|
|
15
|
-
- **THEN** there SHALL be no `cli/` directory containing standalone `@tdk-landscape/tdk-cli-core` source
|
|
16
|
-
|
|
17
|
-
#### Scenario: Directory removed completely (no symlink)
|
|
18
|
-
- **WHEN** inspecting the `beauty-crm/` project root
|
|
19
|
-
- **THEN** `beauty-crm/cli/` SHALL NOT exist as a directory or symlink
|
|
20
|
-
|
|
21
|
-
#### Scenario: No broken references after removal
|
|
22
|
-
- **WHEN** searching `beauty-crm/` for direct `beauty-crm/cli/` path references
|
|
23
|
-
- **THEN** no such references SHALL exist in scripts, configs, or documentation
|
|
24
|
-
|
|
25
|
-
### Requirement: Canonical AI project context
|
|
26
|
-
|
|
27
|
-
All AI assistants operating in `beauty-crm/` SHALL use `CLAUDE.md` as the single canonical source for project context (tech stack, architecture, conventions).
|
|
28
|
-
|
|
29
|
-
#### Scenario: Remove redundant root-level config files
|
|
30
|
-
- **WHEN** listing root-level config files in `beauty-crm/`
|
|
31
|
-
- **THEN** `.cursorrules`, `.windsurfrules`, and `.augment-guidelines` SHALL NOT exist
|
|
32
|
-
|
|
33
|
-
#### Scenario: Assistant directory structure preserved
|
|
34
|
-
- **WHEN** an AI assistant reads its configuration
|
|
35
|
-
- **THEN** its native directory SHALL still exist (`.cursor/`, `.continue/`, `.roo/`, `.serena/`, `.agents/`, `.augment/`, `.kiro/`)
|
|
36
|
-
- **AND** SHALL NOT have been moved or reformatted
|
|
37
|
-
|
|
38
|
-
#### Scenario: Cross-reference from assistant configs
|
|
39
|
-
- **WHEN** an AI assistant initializes
|
|
40
|
-
- **THEN** its config files SHALL contain a comment or README referencing `CLAUDE.md` for project context
|
|
41
|
-
|
|
42
|
-
### Requirement: No regression in CLI functionality
|
|
43
|
-
|
|
44
|
-
Removing `beauty-crm/cli/` SHALL NOT break any existing functionality that depends on the `@tdk-landscape/tdk-cli-core` package.
|
|
45
|
-
|
|
46
|
-
#### Scenario: No workspace resolution errors after removal
|
|
47
|
-
- **WHEN** running `bun install` in `beauty-crm/`
|
|
48
|
-
- **THEN** it SHALL NOT error due to the removed `cli/` directory
|
|
49
|
-
|
|
50
|
-
#### Scenario: No workspace resolution errors
|
|
51
|
-
- **WHEN** running `bun install` in `beauty-crm/`
|
|
52
|
-
- **THEN** it SHALL NOT error due to the removed `cli/` directory
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
## 1. CLI Duplicate — Audit & Verify
|
|
2
|
-
|
|
3
|
-
- [x] 1.1 Confirm `beauty-crm/cli/` is not listed in `beauty-crm/package.json` workspaces
|
|
4
|
-
- [x] 1.2 Confirm no CI/CD or scripts reference `beauty-crm/cli/` as a build path
|
|
5
|
-
- [x] 1.3 Verify `beauty-crm/cli/package.json` name is `@tdk-landscape/tdk-cli-core` (not `@beauty-crm/cli`)
|
|
6
|
-
- [x] 1.4 Verify `tdk-cli/cli/` has superset of files vs `beauty-crm/cli/` (72 vs 26 source files)
|
|
7
|
-
- [x] 1.5 Check `beauty-crm/bun.lock` does NOT lock `@tdk-landscape/tdk-cli-core` to a `file:cli` path
|
|
8
|
-
- [x] 1.6 Check `.tilt-engine/` and `Tiltfile` for any references to `beauty-crm/cli/`
|
|
9
|
-
|
|
10
|
-
## 2. CLI Duplicate — Remove
|
|
11
|
-
|
|
12
|
-
- [x] 2.1 `git rm -r beauty-crm/cli/` (removed from git and disk)
|
|
13
|
-
- [x] 2.2 Verify no stale references: `rg` found zero references
|
|
14
|
-
|
|
15
|
-
## 3. AI Config — Audit Current State
|
|
16
|
-
|
|
17
|
-
- [x] 3.1 Catalog all AI assistant configs in `beauty-crm/`:
|
|
18
|
-
- Directories: `.claude/`, `.cursor/`, `.continue/`, `.roo/`, `.serena/`, `.agents/`, `.augment/`, `.kiro/`
|
|
19
|
-
- Root files: `CLAUDE.md`, `.cursorrules`, `.windsurfrules`, `.roomodes`, `.augment-guidelines`
|
|
20
|
-
- [x] 3.2 Identify content overlap:
|
|
21
|
-
- `.cursorrules` — 32-line communication style (no project context)
|
|
22
|
-
- `.windsurfrules` — 2855-line superset of CLAUDE.md
|
|
23
|
-
- `.augment-guidelines` — 457-line partially overlapping
|
|
24
|
-
- [x] 3.3 Check `.roo/rules/` — unique workflow instructions (dev_workflow, self_improve, taskmaster)
|
|
25
|
-
- [x] 3.4 Check `.cursor/mcp.json` — unique MCP server configs (task-master-ai, tilt)
|
|
26
|
-
|
|
27
|
-
## 4. AI Config — Consolidate
|
|
28
|
-
|
|
29
|
-
- [x] 4.1 Remove `.cursorrules` (redundant with `CLAUDE.md`)
|
|
30
|
-
- [x] 4.2 Remove `.windsurfrules` (redundant with `CLAUDE.md`)
|
|
31
|
-
- [x] 4.3 Remove `.augment-guidelines` (redundant with `CLAUDE.md`)
|
|
32
|
-
- [x] 4.4 Keep `.roomodes` (defines Roo's custom mode slugs — not redundant with CLAUDE.md)
|
|
33
|
-
- [x] 4.5 Keep all AI assistant directories in place (each reads from its own native path):
|
|
34
|
-
- `.cursor/`, `.continue/`, `.roo/`, `.serena/`, `.agents/`, `.augment/`, `.kiro/`
|
|
35
|
-
- [x] 4.6 Add comment/README to each assistant config pointing to `CLAUDE.md`:
|
|
36
|
-
- `.cursor/mcp.json` → `_comment` field
|
|
37
|
-
- `.roo/README.md`, `.serena/README.md`, `.agents/README.md`, `.augment/README.md`, `.kiro/README.md`, `.continue/README.md`
|
|
38
|
-
|
|
39
|
-
## 5. AI Config — Documentation
|
|
40
|
-
|
|
41
|
-
- [x] 5.1 Add banner to `CLAUDE.md` declaring it canonical source of truth
|
|
42
|
-
- [x] 5.2 Keep `.cursor/rules/` in place (native Cursor format)
|
|
43
|
-
- [x] 5.3 Verify `identity/`, `platform/`, `tdk-cli/` don't need AI configs (scope boundary)
|
|
44
|
-
|
|
45
|
-
## 6. Verification
|
|
46
|
-
|
|
47
|
-
- [x] 6.1 Run `git status` — clean, 44 files changed
|
|
48
|
-
- [x] 6.2 N/A (no symlink — removed directly via `git rm`)
|
|
49
|
-
- [x] 6.3 No broken references found
|
|
50
|
-
- [x] 6.4 CLAUDE.md is valid markdown, loadable by any AI
|
|
51
|
-
- [ ] 6.5 Ask team to test their preferred AI assistant still works after consolidation
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
# Fix Generated Stack Boot - Design
|
|
2
|
-
|
|
3
|
-
## Context
|
|
4
|
-
|
|
5
|
-
`tdk project` and `tdk resource` produce output that must run on a fresh machine with Docker + Tilt. Two defects broke this path for every user: (1) the backend source template emitted a literal newline inside a single-quoted `console.log` string, making every generated service uncompilable; (2) the generated Tiltfile pointed at an author-specific absolute path (`/private/var/www/2025/ollamar1/tdk-cli`) and fell back to a private GitHub repo that cannot be cloned, causing `tdk up` to hang in a git retry loop. The fixes below were implemented and verified in an isolated container (fixed binary rebuilt from source, `bun run` + `curl /health` green, `tilt ci` loads the vendored extension and reports a healthy workspace).
|
|
6
|
-
|
|
7
|
-
## Goals / Non-Goals
|
|
8
|
-
|
|
9
|
-
**Goals:**
|
|
10
|
-
- Generated services compile and serve `/health` on first run.
|
|
11
|
-
- `tdk up` loads its Tiltfile on any machine with zero network or private-repo dependency.
|
|
12
|
-
- Generated output contains no machine-specific paths and fails fast with actionable errors when misconfigured.
|
|
13
|
-
- Extension loading uses a truthful local probe.
|
|
14
|
-
|
|
15
|
-
**Non-Goals:**
|
|
16
|
-
- Rewriting the TDK Tilt extension itself or its orchestration semantics.
|
|
17
|
-
- Making the private `tdk-cli` source repo public.
|
|
18
|
-
- Changing the generated `service.json` manifest shape (tracked separately in manifest-field-migration).
|
|
19
|
-
- Container-to-host DNS routing (traefik `*.beauty-crm.localhost` mapping) is outside this change.
|
|
20
|
-
|
|
21
|
-
## Decisions
|
|
22
|
-
|
|
23
|
-
### D1. Do not hardcode or publish; vendor instead
|
|
24
|
-
Vendor the extension into each generated project (`.tdk/.tdk-out/tdk-cli-ext/`) at generation time. Rationale: matches the "releases public, source private" position, works offline, and a vendored project stays reviewable and relocatable. The source is located via, in order: `$TDK_EXTENSION_SOURCE`, an executable-adjacent `tdk-cli` checkout, then a `../tdk-cli` sibling of the project root. Missing source logs a warning; the Tiltfile then fails fast with recovery instructions.
|
|
25
|
-
|
|
26
|
-
### D2. Escape newlines at the template boundary
|
|
27
|
-
In `cli/src/commands/resource.ts`, `getBackendIndexTemplate` emits `console.log('\n🚀 ...')`. The template is a JS template literal, so `\n` becomes a real newline in the emitted file. The source therefore uses `\\n` so generated files contain the two-character escape sequence and remain valid Bun source.
|
|
28
|
-
|
|
29
|
-
### D3. Fail fast instead of a private-repo fallback
|
|
30
|
-
The Tiltfile resolution order is: vendored path -> `$TDK_EXTENSION_PATH` -> `fail(...)` with the three recovery options. This eliminates the infinite `git clone` retry against `github.com/tdk-landscape/tdk-cli` (private, 404 to unauthenticated clients).
|
|
31
|
-
|
|
32
|
-
### D4. Truthful local probe
|
|
33
|
-
The presence probe must produce output: `test -d <path> && echo yes || echo no`. A probe returning `""` (as the first iteration did) silently disables detection and routes every run to the fail-fast branch.
|
|
34
|
-
|
|
35
|
-
### D5. Vendoring lives in `generateMasterConfigs`
|
|
36
|
-
The copy step runs in `generateMasterConfigs` (alongside writing `Tiltfile`, `spec.master`, etc.) so regeneration repairs a stale or missing vendored extension.
|
|
37
|
-
|
|
38
|
-
## Risks / Trade-offs
|
|
39
|
-
|
|
40
|
-
- **Project size**: vendoring adds ~2.5 MB of starlark per project. Accepted for offline, private-repo-free bootstrapping; the copied set is limited to `Tiltfile`, `engine/`, `discovery/`, `specs/`, `ext/`.
|
|
41
|
-
- **Stale binary releases**: released `release-dist-*` binaries still contain both bugs. Release artifacts must be rebuilt (proven command: `bun build --compile --target=bun-linux-arm64 --outfile tdk-linux-arm64 cli/src/cli.ts`) and republished before users see the fix.
|
|
42
|
-
- **Probe coupling**: detection depends on `local()` emitting the echo; documented in the template comment so future edits keep the `&& echo yes || echo no` tail.
|
|
43
|
-
- **Sandbox verification ceiling**: full container orchestration (image builds via traefik network, `*.beauty-crm.localhost` DNS) requires a host network; the isolated-container verification covers generation, compilation, Tiltfile loading, service discovery, resource creation, and workspace health.
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
## Why
|
|
2
|
-
|
|
3
|
-
Generated projects from `tdk project` and `tdk resource` shipped two blockers that broke the quickstart for every user: generated Bun services did not compile (the backend template emits a literal newline inside a `console.log('...')` string, producing `Unterminated string literal`), and `tdk up` could never load its Tiltfile because it hardcoded a machine-specific extension path and fell back to a private GitHub repo that triggers an endless git-clone retry loop. Both were reproduced in an isolated Docker container and verified fixed in source, but the fixes are not yet reflected in released binaries or a tracked spec.
|
|
4
|
-
|
|
5
|
-
## What Changes
|
|
6
|
-
|
|
7
|
-
- `cli/src/commands/resource.ts`: escape newlines in the generated backend `src/index.ts` so emitted files contain `\n` and compile (`console.log('\n...')`).
|
|
8
|
-
- `cli/templates/Tiltfile.hbs`: resolve the TDK Tilt extension in order - vendored in-project copy (`.tdk/.tdk-out/tdk-cli-ext`) -> `$TDK_EXTENSION_PATH` -> fail fast with actionable instructions. Remove the hardcoded `/private/var/www/2025/ollamar1/tdk-cli` path and the private-repo fallback.
|
|
9
|
-
- `cli/src/generator/template-engine.ts`: vendor the extension (engine/discovery/specs/ext) into `.tdk/.tdk-out/tdk-cli-ext/` during `generateMasterConfigs`, so `tdk up` works offline on any machine without GitHub access. Source is auto-detected via `$TDK_EXTENSION_SOURCE`, executable-adjacent checkout, or a `../tdk-cli` sibling.
|
|
10
|
-
- `cli/templates/Tiltfile.hbs`: fix the local-directory probe to echo its result (`test -d <path> && echo yes || echo no`); the previous probe returned `""`, so the vendored extension was never detected and `tdk up` always failed at the new fail-fast gate.
|
|
11
|
-
- Rebuild release binaries from the fixed source and republish to `tdk-landscape/tdk-cli-releases` (**BREAKING** for existing releases - new generated output shape).
|
|
12
|
-
|
|
13
|
-
## Capabilities
|
|
14
|
-
|
|
15
|
-
### New Capabilities
|
|
16
|
-
|
|
17
|
-
- `self-contained-generated-projects`: generated projects must boot without network or private-repo access - extension vendored at generation time, Tiltfile loads it from a local `file://` repo, and generated service sources compile on first `bun run`.
|
|
18
|
-
|
|
19
|
-
### Modified Capabilities
|
|
20
|
-
|
|
21
|
-
- `manifest-field-migration`: no requirement changes; generated `service.json` shape is unchanged.
|
|
22
|
-
|
|
23
|
-
## Impact
|
|
24
|
-
|
|
25
|
-
- `cli/src/commands/resource.ts` - backend index template escaping.
|
|
26
|
-
- `cli/templates/Tiltfile.hbs` - extension resolution and probe.
|
|
27
|
-
- `cli/src/generator/template-engine.ts` - vendoring step, `.tdk/.tdk-out/tdk-cli-ext/` output.
|
|
28
|
-
- `release-dist-*` snapshots - must be regenerated from fixed source.
|
|
29
|
-
- Verification: generated services compile and serve `/health` via Bun; `tilt ci` on a generated Tiltfile loads the vendored extension, discovers services, creates resources, and reports a healthy workspace.
|