@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.
Files changed (390) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +1 -1
  3. package/cli/dist/commands/config.js +1 -1
  4. package/cli/dist/commands/resource.js +1 -1
  5. package/cli/dist/generator/extension-fetch.js +16 -9
  6. package/cli/package.json +1 -1
  7. package/package.json +16 -1
  8. package/.claude/skills/layer-autoresearch/SKILL.md +0 -48
  9. package/.claude/skills/tdk-troubleshoot/SKILL.md +0 -222
  10. package/.github/ISSUE_TEMPLATE/bug_report.yml +0 -40
  11. package/.github/ISSUE_TEMPLATE/config.yml +0 -8
  12. package/.github/ISSUE_TEMPLATE/feature_request.yml +0 -18
  13. package/.github/dependabot.yml +0 -33
  14. package/.github/pull_request_template.md +0 -5
  15. package/.github/workflows/ci.yml +0 -200
  16. package/.github/workflows/release-binaries.yml +0 -139
  17. package/.github/zizmor.yml +0 -9
  18. package/.pre-commit-config.yaml +0 -57
  19. package/CODE_OF_CONDUCT.md +0 -9
  20. package/CONTRIBUTING.md +0 -42
  21. package/Makefile +0 -92
  22. package/SECURITY.md +0 -17
  23. package/benchmarks/results/container-scale-2026-09-25T20-54-49-736Z.json +0 -45
  24. package/benchmarks/results/container-scale-2026-09-25T21-01-20-540Z.json +0 -150
  25. package/benchmarks/results/container-scale-2026-09-25T21-15-01-441Z.json +0 -73
  26. package/benchmarks/results/container-scale-2026-09-25T22-09-01-630Z.json +0 -77
  27. package/benchmarks/results/container-scale-2026-09-25T22-18-28-371Z.json +0 -202
  28. package/cli/AGENTS.md +0 -390
  29. package/cli/DESIGN.md +0 -735
  30. package/cli/README.md +0 -292
  31. package/cli/biome.json +0 -40
  32. package/cli/dependency-graph.svg +0 -1135
  33. package/cli/dist/cli.d.ts +0 -3
  34. package/cli/dist/cli.d.ts.map +0 -1
  35. package/cli/dist/cli.js.map +0 -1
  36. package/cli/dist/commands/completion.d.ts +0 -3
  37. package/cli/dist/commands/completion.d.ts.map +0 -1
  38. package/cli/dist/commands/completion.js.map +0 -1
  39. package/cli/dist/commands/config.d.ts +0 -3
  40. package/cli/dist/commands/config.d.ts.map +0 -1
  41. package/cli/dist/commands/config.js.map +0 -1
  42. package/cli/dist/commands/doctor.d.ts +0 -19
  43. package/cli/dist/commands/doctor.d.ts.map +0 -1
  44. package/cli/dist/commands/doctor.js.map +0 -1
  45. package/cli/dist/commands/down.d.ts +0 -3
  46. package/cli/dist/commands/down.d.ts.map +0 -1
  47. package/cli/dist/commands/down.js.map +0 -1
  48. package/cli/dist/commands/help.d.ts +0 -2
  49. package/cli/dist/commands/help.d.ts.map +0 -1
  50. package/cli/dist/commands/help.js.map +0 -1
  51. package/cli/dist/commands/networks.d.ts +0 -3
  52. package/cli/dist/commands/networks.d.ts.map +0 -1
  53. package/cli/dist/commands/networks.js.map +0 -1
  54. package/cli/dist/commands/project.d.ts +0 -9
  55. package/cli/dist/commands/project.d.ts.map +0 -1
  56. package/cli/dist/commands/project.js.map +0 -1
  57. package/cli/dist/commands/projects.d.ts +0 -3
  58. package/cli/dist/commands/projects.d.ts.map +0 -1
  59. package/cli/dist/commands/projects.js.map +0 -1
  60. package/cli/dist/commands/resource.d.ts +0 -69
  61. package/cli/dist/commands/resource.d.ts.map +0 -1
  62. package/cli/dist/commands/resource.js.map +0 -1
  63. package/cli/dist/commands/resources.d.ts +0 -3
  64. package/cli/dist/commands/resources.d.ts.map +0 -1
  65. package/cli/dist/commands/resources.js.map +0 -1
  66. package/cli/dist/commands/stack.d.ts +0 -3
  67. package/cli/dist/commands/stack.d.ts.map +0 -1
  68. package/cli/dist/commands/stack.js.map +0 -1
  69. package/cli/dist/commands/stacks.d.ts +0 -3
  70. package/cli/dist/commands/stacks.d.ts.map +0 -1
  71. package/cli/dist/commands/stacks.js.map +0 -1
  72. package/cli/dist/commands/status.d.ts +0 -3
  73. package/cli/dist/commands/status.d.ts.map +0 -1
  74. package/cli/dist/commands/status.js.map +0 -1
  75. package/cli/dist/commands/ui.d.ts +0 -3
  76. package/cli/dist/commands/ui.d.ts.map +0 -1
  77. package/cli/dist/commands/ui.js.map +0 -1
  78. package/cli/dist/commands/up.d.ts +0 -3
  79. package/cli/dist/commands/up.d.ts.map +0 -1
  80. package/cli/dist/commands/up.js.map +0 -1
  81. package/cli/dist/commands/upgrade.d.ts +0 -14
  82. package/cli/dist/commands/upgrade.d.ts.map +0 -1
  83. package/cli/dist/commands/upgrade.js.map +0 -1
  84. package/cli/dist/commands/version.d.ts +0 -3
  85. package/cli/dist/commands/version.d.ts.map +0 -1
  86. package/cli/dist/commands/version.js.map +0 -1
  87. package/cli/dist/components/Accessible.d.ts +0 -8
  88. package/cli/dist/components/Accessible.d.ts.map +0 -1
  89. package/cli/dist/components/Accessible.js.map +0 -1
  90. package/cli/dist/components/BaseTooltip.d.ts +0 -4
  91. package/cli/dist/components/BaseTooltip.d.ts.map +0 -1
  92. package/cli/dist/components/BaseTooltip.js.map +0 -1
  93. package/cli/dist/components/DetailPanel.d.ts +0 -4
  94. package/cli/dist/components/DetailPanel.d.ts.map +0 -1
  95. package/cli/dist/components/DetailPanel.js.map +0 -1
  96. package/cli/dist/components/FileTree.d.ts +0 -4
  97. package/cli/dist/components/FileTree.d.ts.map +0 -1
  98. package/cli/dist/components/FileTree.js.map +0 -1
  99. package/cli/dist/components/ResourceSelectInput.d.ts +0 -4
  100. package/cli/dist/components/ResourceSelectInput.d.ts.map +0 -1
  101. package/cli/dist/components/ResourceSelectInput.js.map +0 -1
  102. package/cli/dist/components/ResourceTable.d.ts +0 -4
  103. package/cli/dist/components/ResourceTable.d.ts.map +0 -1
  104. package/cli/dist/components/ResourceTable.js.map +0 -1
  105. package/cli/dist/components/TabBar.d.ts +0 -4
  106. package/cli/dist/components/TabBar.d.ts.map +0 -1
  107. package/cli/dist/components/TabBar.js.map +0 -1
  108. package/cli/dist/components/Tooltip.d.ts +0 -12
  109. package/cli/dist/components/Tooltip.d.ts.map +0 -1
  110. package/cli/dist/components/Tooltip.js.map +0 -1
  111. package/cli/dist/components/index.d.ts +0 -8
  112. package/cli/dist/components/index.d.ts.map +0 -1
  113. package/cli/dist/components/index.js.map +0 -1
  114. package/cli/dist/config/platform-standards.d.ts +0 -159
  115. package/cli/dist/config/platform-standards.d.ts.map +0 -1
  116. package/cli/dist/config/platform-standards.js.map +0 -1
  117. package/cli/dist/generator/extension-fetch.d.ts +0 -25
  118. package/cli/dist/generator/extension-fetch.d.ts.map +0 -1
  119. package/cli/dist/generator/extension-fetch.js.map +0 -1
  120. package/cli/dist/generator/template-engine.d.ts +0 -62
  121. package/cli/dist/generator/template-engine.d.ts.map +0 -1
  122. package/cli/dist/generator/template-engine.js.map +0 -1
  123. package/cli/dist/index.d.ts +0 -11
  124. package/cli/dist/index.d.ts.map +0 -1
  125. package/cli/dist/index.js.map +0 -1
  126. package/cli/dist/types/index.d.ts +0 -257
  127. package/cli/dist/types/index.d.ts.map +0 -1
  128. package/cli/dist/types/index.js.map +0 -1
  129. package/cli/dist/utils/cache.d.ts +0 -19
  130. package/cli/dist/utils/cache.d.ts.map +0 -1
  131. package/cli/dist/utils/cache.js.map +0 -1
  132. package/cli/dist/utils/command-helpers.d.ts +0 -17
  133. package/cli/dist/utils/command-helpers.d.ts.map +0 -1
  134. package/cli/dist/utils/command-helpers.js.map +0 -1
  135. package/cli/dist/utils/constants.d.ts +0 -53
  136. package/cli/dist/utils/constants.d.ts.map +0 -1
  137. package/cli/dist/utils/constants.js.map +0 -1
  138. package/cli/dist/utils/discovery-context.d.ts +0 -4
  139. package/cli/dist/utils/discovery-context.d.ts.map +0 -1
  140. package/cli/dist/utils/discovery-context.js.map +0 -1
  141. package/cli/dist/utils/docker.d.ts +0 -4
  142. package/cli/dist/utils/docker.d.ts.map +0 -1
  143. package/cli/dist/utils/docker.js.map +0 -1
  144. package/cli/dist/utils/doctor-runtime.d.ts +0 -81
  145. package/cli/dist/utils/doctor-runtime.d.ts.map +0 -1
  146. package/cli/dist/utils/doctor-runtime.js.map +0 -1
  147. package/cli/dist/utils/env-validator.d.ts +0 -15
  148. package/cli/dist/utils/env-validator.d.ts.map +0 -1
  149. package/cli/dist/utils/env-validator.js.map +0 -1
  150. package/cli/dist/utils/errors.d.ts +0 -31
  151. package/cli/dist/utils/errors.d.ts.map +0 -1
  152. package/cli/dist/utils/errors.js.map +0 -1
  153. package/cli/dist/utils/file-helpers.d.ts +0 -14
  154. package/cli/dist/utils/file-helpers.d.ts.map +0 -1
  155. package/cli/dist/utils/file-helpers.js.map +0 -1
  156. package/cli/dist/utils/formatting.d.ts +0 -30
  157. package/cli/dist/utils/formatting.d.ts.map +0 -1
  158. package/cli/dist/utils/formatting.js.map +0 -1
  159. package/cli/dist/utils/paths.d.ts +0 -3
  160. package/cli/dist/utils/paths.d.ts.map +0 -1
  161. package/cli/dist/utils/paths.js.map +0 -1
  162. package/cli/dist/utils/port-assignment.d.ts +0 -6
  163. package/cli/dist/utils/port-assignment.d.ts.map +0 -1
  164. package/cli/dist/utils/port-assignment.js.map +0 -1
  165. package/cli/dist/utils/project-features.d.ts +0 -23
  166. package/cli/dist/utils/project-features.d.ts.map +0 -1
  167. package/cli/dist/utils/project-features.js.map +0 -1
  168. package/cli/dist/utils/project-templates.d.ts +0 -7
  169. package/cli/dist/utils/project-templates.d.ts.map +0 -1
  170. package/cli/dist/utils/project-templates.js.map +0 -1
  171. package/cli/dist/utils/prompt.d.ts +0 -28
  172. package/cli/dist/utils/prompt.d.ts.map +0 -1
  173. package/cli/dist/utils/prompt.js.map +0 -1
  174. package/cli/dist/utils/resource-features.d.ts +0 -29
  175. package/cli/dist/utils/resource-features.d.ts.map +0 -1
  176. package/cli/dist/utils/resource-features.js.map +0 -1
  177. package/cli/dist/utils/service-urls.d.ts +0 -30
  178. package/cli/dist/utils/service-urls.d.ts.map +0 -1
  179. package/cli/dist/utils/service-urls.js.map +0 -1
  180. package/cli/dist/utils/services.d.ts +0 -18
  181. package/cli/dist/utils/services.d.ts.map +0 -1
  182. package/cli/dist/utils/services.js.map +0 -1
  183. package/cli/dist/utils/stack-features.d.ts +0 -22
  184. package/cli/dist/utils/stack-features.d.ts.map +0 -1
  185. package/cli/dist/utils/stack-features.js.map +0 -1
  186. package/cli/dist/utils/tar.d.ts +0 -7
  187. package/cli/dist/utils/tar.d.ts.map +0 -1
  188. package/cli/dist/utils/tar.js.map +0 -1
  189. package/cli/dist/utils/tilt.d.ts +0 -20
  190. package/cli/dist/utils/tilt.d.ts.map +0 -1
  191. package/cli/dist/utils/tilt.js.map +0 -1
  192. package/cli/dist/utils/validation.d.ts +0 -16
  193. package/cli/dist/utils/validation.d.ts.map +0 -1
  194. package/cli/dist/utils/validation.js.map +0 -1
  195. package/cli/knip.json +0 -6
  196. package/cli/pnpm-lock.yaml +0 -2305
  197. package/cli/pnpm-workspace.yaml +0 -2
  198. package/cli/src/cli.ts +0 -72
  199. package/cli/src/commands/__tests__/always-enabled-infra.test.ts +0 -109
  200. package/cli/src/commands/__tests__/config.test.ts +0 -146
  201. package/cli/src/commands/__tests__/doctor.test.ts +0 -730
  202. package/cli/src/commands/__tests__/error-handling.test.ts +0 -78
  203. package/cli/src/commands/__tests__/phases-model.test.ts +0 -161
  204. package/cli/src/commands/__tests__/project-resource-features-e2e.test.ts +0 -187
  205. package/cli/src/commands/__tests__/project.test.ts +0 -68
  206. package/cli/src/commands/__tests__/resource.test.ts +0 -226
  207. package/cli/src/commands/__tests__/saas-starter-integration.test.ts +0 -194
  208. package/cli/src/commands/__tests__/stack-features-e2e.test.ts +0 -135
  209. package/cli/src/commands/__tests__/upgrade.test.ts +0 -198
  210. package/cli/src/commands/completion.ts +0 -300
  211. package/cli/src/commands/config.ts +0 -299
  212. package/cli/src/commands/doctor.ts +0 -926
  213. package/cli/src/commands/down.ts +0 -37
  214. package/cli/src/commands/help.ts +0 -143
  215. package/cli/src/commands/networks-design.md +0 -80
  216. package/cli/src/commands/networks.ts +0 -332
  217. package/cli/src/commands/project.ts +0 -456
  218. package/cli/src/commands/projects.ts +0 -82
  219. package/cli/src/commands/resource.ts +0 -652
  220. package/cli/src/commands/resources.ts +0 -95
  221. package/cli/src/commands/stack.ts +0 -128
  222. package/cli/src/commands/stacks.ts +0 -52
  223. package/cli/src/commands/status.ts +0 -88
  224. package/cli/src/commands/ui.tsx +0 -843
  225. package/cli/src/commands/up.ts +0 -169
  226. package/cli/src/commands/upgrade.ts +0 -628
  227. package/cli/src/commands/version.ts +0 -9
  228. package/cli/src/components/Accessible.tsx +0 -21
  229. package/cli/src/components/BaseTooltip.tsx +0 -66
  230. package/cli/src/components/DetailPanel.tsx +0 -146
  231. package/cli/src/components/FileTree.tsx +0 -89
  232. package/cli/src/components/ResourceSelectInput.tsx +0 -30
  233. package/cli/src/components/ResourceTable.tsx +0 -78
  234. package/cli/src/components/TabBar.tsx +0 -53
  235. package/cli/src/components/Tooltip.tsx +0 -11
  236. package/cli/src/components/index.ts +0 -7
  237. package/cli/src/config/platform-standards.test.ts +0 -11
  238. package/cli/src/config/platform-standards.ts +0 -196
  239. package/cli/src/generator/__tests__/extension-fetch.test.ts +0 -242
  240. package/cli/src/generator/__tests__/template-engine.test.ts +0 -70
  241. package/cli/src/generator/extension-fetch.ts +0 -286
  242. package/cli/src/generator/template-engine.ts +0 -752
  243. package/cli/src/index.ts +0 -86
  244. package/cli/src/templates.d.ts +0 -4
  245. package/cli/src/types/index.ts +0 -353
  246. package/cli/src/utils/__tests__/cache.test.ts +0 -98
  247. package/cli/src/utils/__tests__/formatting.test.ts +0 -170
  248. package/cli/src/utils/__tests__/paths.test.ts +0 -180
  249. package/cli/src/utils/__tests__/port-assignment.test.ts +0 -121
  250. package/cli/src/utils/__tests__/service-urls.test.ts +0 -174
  251. package/cli/src/utils/__tests__/services.test.ts +0 -531
  252. package/cli/src/utils/__tests__/tilt.test.ts +0 -172
  253. package/cli/src/utils/__tests__/validation.test.ts +0 -148
  254. package/cli/src/utils/cache.ts +0 -76
  255. package/cli/src/utils/command-helpers.ts +0 -54
  256. package/cli/src/utils/constants.ts +0 -130
  257. package/cli/src/utils/discovery-context.ts +0 -49
  258. package/cli/src/utils/docker.ts +0 -20
  259. package/cli/src/utils/doctor-runtime.ts +0 -644
  260. package/cli/src/utils/env-validator.ts +0 -139
  261. package/cli/src/utils/errors.ts +0 -168
  262. package/cli/src/utils/file-helpers.ts +0 -62
  263. package/cli/src/utils/formatting.ts +0 -215
  264. package/cli/src/utils/paths.ts +0 -53
  265. package/cli/src/utils/port-assignment.ts +0 -106
  266. package/cli/src/utils/project-features.ts +0 -118
  267. package/cli/src/utils/project-templates.ts +0 -29
  268. package/cli/src/utils/prompt.ts +0 -128
  269. package/cli/src/utils/resource-features.ts +0 -215
  270. package/cli/src/utils/service-urls.ts +0 -124
  271. package/cli/src/utils/services.ts +0 -364
  272. package/cli/src/utils/stack-features.ts +0 -30
  273. package/cli/src/utils/tar.ts +0 -24
  274. package/cli/src/utils/tilt.ts +0 -133
  275. package/cli/src/utils/validation.ts +0 -67
  276. package/cli/tsconfig.json +0 -25
  277. package/cli/tsconfig.typecheck.json +0 -8
  278. package/docs/FEATURES.md +0 -279
  279. package/docs/demo.svg +0 -217
  280. package/engine/docs/AUTODISCOVERY_TEST.md +0 -182
  281. package/engine/docs/C4-ARCHITECTURE-operations.md +0 -396
  282. package/engine/docs/C4-ARCHITECTURE-overview.md +0 -284
  283. package/engine/docs/C4-ARCHITECTURE.md +0 -17
  284. package/engine/docs/GOLDEN_IMAGE_INTEGRATION.md +0 -349
  285. package/engine/docs/MANIFEST_DRIVEN_ARCHITECTURE.md +0 -357
  286. package/engine/docs/README.md +0 -284
  287. package/install.sh +0 -19
  288. package/knip.json +0 -10
  289. package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/.openspec.yaml +0 -2
  290. package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/design.md +0 -102
  291. package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/proposal.md +0 -31
  292. package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/specs/vscode-tdk-notifications/spec.md +0 -48
  293. package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/specs/vscode-tdk-orchestration/spec.md +0 -63
  294. package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/specs/vscode-tdk-troubleshooting/spec.md +0 -56
  295. package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/tasks.md +0 -61
  296. package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/.openspec.yaml +0 -2
  297. package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/design.md +0 -114
  298. package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/proposal.md +0 -32
  299. package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/specs/manifest-field-migration/spec.md +0 -20
  300. package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/specs/resource-terminology-standard/spec.md +0 -20
  301. package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/specs/stack-terminology-standard/spec.md +0 -20
  302. package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/tasks.md +0 -194
  303. package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/.openspec.yaml +0 -2
  304. package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/design.md +0 -111
  305. package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/proposal.md +0 -33
  306. package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/specs/function-naming-alignment/spec.md +0 -12
  307. package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/specs/optional-parameter-patterns/spec.md +0 -18
  308. package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/specs/parameter-documentation/spec.md +0 -16
  309. package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/specs/parameter-naming-consistency/spec.md +0 -12
  310. package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/specs/parameter-ordering-standard/spec.md +0 -12
  311. package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/tasks.md +0 -194
  312. package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/.openspec.yaml +0 -2
  313. package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/design.md +0 -84
  314. package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/proposal.md +0 -31
  315. package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/specs/codebase-audit/spec.md +0 -27
  316. package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/specs/dead-code-cleanup/spec.md +0 -27
  317. package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/specs/test-gap-fill/spec.md +0 -23
  318. package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/specs/todo-resolution/spec.md +0 -27
  319. package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/tasks.md +0 -39
  320. package/openspec/changes/archive/2026-06-25-landscape-consolidation/.openspec.yaml +0 -2
  321. package/openspec/changes/archive/2026-06-25-landscape-consolidation/design.md +0 -80
  322. package/openspec/changes/archive/2026-06-25-landscape-consolidation/proposal.md +0 -40
  323. package/openspec/changes/archive/2026-06-25-landscape-consolidation/spec.md +0 -52
  324. package/openspec/changes/archive/2026-06-25-landscape-consolidation/tasks.md +0 -51
  325. package/openspec/changes/archive/2026-09-17-fix-generated-stack-boot/.openspec.yaml +0 -2
  326. package/openspec/changes/archive/2026-09-17-fix-generated-stack-boot/design.md +0 -43
  327. package/openspec/changes/archive/2026-09-17-fix-generated-stack-boot/proposal.md +0 -29
  328. package/openspec/changes/archive/2026-09-17-fix-generated-stack-boot/specs/self-contained-generated-projects/spec.md +0 -67
  329. package/openspec/changes/archive/2026-09-17-fix-generated-stack-boot/tasks.md +0 -27
  330. package/openspec/changes/optimize-runtime-docker-layers/.openspec.yaml +0 -3
  331. package/openspec/changes/optimize-runtime-docker-layers/design.md +0 -81
  332. package/openspec/changes/optimize-runtime-docker-layers/proposal.md +0 -44
  333. package/openspec/changes/optimize-runtime-docker-layers/specs/runtime-container-footprint/spec.md +0 -79
  334. package/openspec/changes/optimize-runtime-docker-layers/tasks.md +0 -36
  335. package/openspec/changes/prioritized-cold-start/.openspec.yaml +0 -4
  336. package/openspec/changes/prioritized-cold-start/design.md +0 -137
  337. package/openspec/changes/prioritized-cold-start/proposal.md +0 -41
  338. package/openspec/changes/prioritized-cold-start/specs/on-demand-resource-startup/spec.md +0 -98
  339. package/openspec/changes/prioritized-cold-start/tasks.md +0 -69
  340. package/openspec/config.yaml +0 -1
  341. package/openspec/specs/manifest-field-migration/spec.md +0 -24
  342. package/openspec/specs/resource-terminology-standard/spec.md +0 -24
  343. package/openspec/specs/self-contained-generated-projects/spec.md +0 -67
  344. package/openspec/specs/stack-terminology-standard/spec.md +0 -24
  345. package/platform/services/platform/proxy/service.yaml +0 -14
  346. package/scripts/audit-codebase.sh +0 -213
  347. package/scripts/autoresearch/layer-eval.sh +0 -65
  348. package/scripts/benchmark/README.md +0 -25
  349. package/scripts/benchmark/container-scale.ts +0 -503
  350. package/scripts/benchmark/pre-release-gate.sh +0 -9
  351. package/scripts/install-git-hooks.sh +0 -14
  352. package/scripts/measure-idle-footprint.sh +0 -58
  353. package/scripts/record-demo.sh +0 -43
  354. package/scripts/release-binaries.sh +0 -97
  355. package/scripts/setup-pre-commit.sh +0 -33
  356. package/scripts/stage-npm-engine.sh +0 -36
  357. package/tests/tilt-engine/__init__.py +0 -5
  358. package/tests/tilt-engine/conftest.py +0 -182
  359. package/tests/tilt-engine/fixtures/appointment-frontend-service.json +0 -11
  360. package/tests/tilt-engine/fixtures/identity-backend-service.json +0 -12
  361. package/tests/tilt-engine/fixtures/invalid-service.json +0 -4
  362. package/tests/tilt-engine/test_agents_md_generator.py +0 -341
  363. package/tests/tilt-engine/test_agents_md_integration.py +0 -378
  364. package/tests/tilt-engine/test_cache_operations.py +0 -181
  365. package/tests/tilt-engine/test_cache_persistence.py +0 -142
  366. package/tests/tilt-engine/test_code_executor.py +0 -152
  367. package/tests/tilt-engine/test_code_viewer.py +0 -127
  368. package/tests/tilt-engine/test_compose_port_anchors.py +0 -310
  369. package/tests/tilt-engine/test_config_inspector.py +0 -162
  370. package/tests/tilt-engine/test_daemon_focus_mode.py +0 -89
  371. package/tests/tilt-engine/test_daemon_polling.py +0 -122
  372. package/tests/tilt-engine/test_daemon_registration.py +0 -115
  373. package/tests/tilt-engine/test_daemon_validation.py +0 -107
  374. package/tests/tilt-engine/test_docker_generator_bugs.py +0 -493
  375. package/tests/tilt-engine/test_docker_prune.py +0 -119
  376. package/tests/tilt-engine/test_dockerignore_path_bug.py +0 -82
  377. package/tests/tilt-engine/test_file_browser.py +0 -193
  378. package/tests/tilt-engine/test_frontend_basepath_manifest.py +0 -27
  379. package/tests/tilt-engine/test_health_dependencies.py +0 -130
  380. package/tests/tilt-engine/test_health_endpoints.py +0 -118
  381. package/tests/tilt-engine/test_health_tilt_ui.py +0 -85
  382. package/tests/tilt-engine/test_runtime_container_footprint.py +0 -162
  383. package/tests/tilt-engine/test_sablier_defer_start.py +0 -237
  384. package/tests/tilt-engine/test_safety_aliases.py +0 -84
  385. package/tests/tilt-engine/test_snapshot_diff.py +0 -136
  386. package/tests/tilt-engine/test_snapshot_persistence.py +0 -163
  387. package/tests/tilt-engine/test_snapshot_scanning.py +0 -123
  388. package/tests/tilt-engine/test_standalone_project_boot.py +0 -61
  389. package/tests/tilt-engine/test_standalone_traefik.py +0 -160
  390. package/tests/tilt-engine/test_traefik_static_wake_route.py +0 -187
@@ -1,628 +0,0 @@
1
- import { execSync } from "node:child_process";
2
- import { createHash } from "node:crypto";
3
- import { accessSync, constants, existsSync, readFileSync, realpathSync } from "node:fs";
4
- import { dirname, join, resolve } from "node:path";
5
- import { fileURLToPath } from "node:url";
6
- import chalk from "chalk";
7
- import { Command } from "commander";
8
- import ora from "ora";
9
- import { getErrorMessage, logVerbose, showErrorAndExit } from "../utils/errors.js";
10
- import { showCancelled } from "../utils/formatting.js";
11
- import { getPackageVersion } from "../utils/paths.js";
12
- import { promptConfirm } from "../utils/prompt.js";
13
-
14
- interface InstallInfo {
15
- method: "npm" | "bun" | "git" | "binary" | "unknown";
16
- path?: string;
17
- version?: string;
18
- }
19
-
20
- function isStandaloneBinary(tdkPath: string): boolean {
21
- try {
22
- const fileInfo = execSync(`file -b ${JSON.stringify(tdkPath)}`, { encoding: "utf-8" });
23
- return /Mach-O|ELF/.test(fileInfo);
24
- } catch (err: unknown) {
25
- logVerbose("Binary detection (file command) error", err);
26
- return false;
27
- }
28
- }
29
-
30
- function detectInstallation(): InstallInfo {
31
- try {
32
- const tdkPath = execSync("which tdk", { encoding: "utf-8" }).trim();
33
-
34
- // `readlink -f` is not available on macOS. Use Node's cross-platform
35
- // realpath implementation so standalone binaries are detected there too.
36
- const realPath = realpathSync(tdkPath);
37
- // If the real path contains tdk-cli and has .git, it's a linked git install
38
- if (realPath.includes("tdk-cli")) {
39
- const possibleGitRoot = resolve(realPath, "..", "..", "..");
40
- if (existsSync(join(possibleGitRoot, ".git"))) {
41
- return { method: "git", path: possibleGitRoot };
42
- }
43
- }
44
-
45
- if (tdkPath.includes("node_modules") || tdkPath.includes(".npm") || tdkPath.includes(".bun")) {
46
- if (tdkPath.includes(".bun")) {
47
- return { method: "bun", path: tdkPath };
48
- }
49
- return { method: "npm", path: tdkPath };
50
- }
51
-
52
- const cliRoot = resolve(dirname(fileURLToPath(import.meta.url)), "..", "..", "..");
53
- if (existsSync(join(cliRoot, ".git"))) {
54
- return { method: "git", path: cliRoot };
55
- }
56
-
57
- // Standalone prebuilt binary from tdk-cli-releases (installed to e.g. /usr/local/bin),
58
- // not a node_modules/.bun link and not sitting inside a git checkout.
59
- if (isStandaloneBinary(realPath)) {
60
- return { method: "binary", path: realPath };
61
- }
62
-
63
- return { method: "unknown", path: tdkPath };
64
- } catch (err: unknown) {
65
- console.warn(chalk.yellow("⚠️ Could not detect installation method"));
66
- logVerbose("Installation detection error", err);
67
- return { method: "unknown" };
68
- }
69
- }
70
-
71
- const BINARY_RELEASE_REPO = "tdk-landscape/tdk-cli-releases";
72
-
73
- function binaryAssetName(): string | null {
74
- const osName =
75
- process.platform === "darwin" ? "darwin" : process.platform === "linux" ? "linux" : null;
76
- const archName = process.arch === "arm64" ? "arm64" : process.arch === "x64" ? "amd64" : null;
77
- if (!osName || !archName) return null;
78
- return `tdk-${osName}-${archName}`;
79
- }
80
-
81
- const ENGINE_ASSET_NAME = "tdk-cli-engine.tar.gz";
82
- const CHECKSUMS_ASSET_NAME = "checksums.txt";
83
-
84
- export interface BinaryRelease {
85
- tag: string;
86
- assetName: string;
87
- downloadUrl: string;
88
- engineDownloadUrl: string;
89
- checksumsUrl: string;
90
- }
91
-
92
- /** Parses `shasum -a 256` / `sha256sum` output ("<hash> <name>" or "<hash> *<name>"). */
93
- export function parseChecksums(text: string): Map<string, string> {
94
- const sums = new Map<string, string>();
95
- for (const line of text.split("\n")) {
96
- const match = line.trim().match(/^([0-9a-f]{64})\s+\*?(.+)$/i);
97
- if (match) sums.set(match[2].trim(), match[1].toLowerCase());
98
- }
99
- return sums;
100
- }
101
-
102
- /**
103
- * Throws unless `filePath` hashes to the checksum listed for `assetName`.
104
- * A missing entry is an error when `required`; otherwise it is skipped, so
105
- * releases published before an asset was added to checksums.txt (older
106
- * releases list only the binaries, not the engine tarball) still install.
107
- */
108
- function verifyChecksum(
109
- filePath: string,
110
- assetName: string,
111
- sums: Map<string, string>,
112
- required: boolean,
113
- ): void {
114
- const expected = sums.get(assetName);
115
- if (!expected) {
116
- if (required) throw new Error(`${CHECKSUMS_ASSET_NAME} has no entry for ${assetName}`);
117
- logVerbose(`${CHECKSUMS_ASSET_NAME} has no entry for ${assetName}; skipping verification`);
118
- return;
119
- }
120
- const actual = createHash("sha256").update(readFileSync(filePath)).digest("hex");
121
- if (actual !== expected) {
122
- throw new Error(`Checksum mismatch for ${assetName} (expected ${expected}, got ${actual})`);
123
- }
124
- }
125
-
126
- async function getLatestBinaryRelease(): Promise<BinaryRelease | null> {
127
- const assetName = binaryAssetName();
128
- if (!assetName) return null;
129
-
130
- try {
131
- const raw = execSync(
132
- `curl -fsSL https://api.github.com/repos/${BINARY_RELEASE_REPO}/releases/latest`,
133
- { encoding: "utf-8", timeout: 10000 },
134
- );
135
- const data = JSON.parse(raw) as { tag_name?: string };
136
- if (!data.tag_name) return null;
137
-
138
- return {
139
- tag: data.tag_name,
140
- assetName,
141
- downloadUrl: `https://github.com/${BINARY_RELEASE_REPO}/releases/download/${data.tag_name}/${assetName}`,
142
- engineDownloadUrl: `https://github.com/${BINARY_RELEASE_REPO}/releases/download/${data.tag_name}/${ENGINE_ASSET_NAME}`,
143
- checksumsUrl: `https://github.com/${BINARY_RELEASE_REPO}/releases/download/${data.tag_name}/${CHECKSUMS_ASSET_NAME}`,
144
- };
145
- } catch (err: unknown) {
146
- logVerbose("Binary release lookup error", err);
147
- return null;
148
- }
149
- }
150
-
151
- export function isWritable(path: string): boolean {
152
- try {
153
- accessSync(path, constants.W_OK);
154
- return true;
155
- } catch {
156
- return false;
157
- }
158
- }
159
-
160
- export async function upgradeViaBinary(tdkPath: string, release: BinaryRelease): Promise<boolean> {
161
- // Never shells out to sudo - if the install dir isn't user-writable, fail
162
- // fast with the manual curl command instead of downloading first and
163
- // elevating automatically. The user runs that curl themselves.
164
- const installDir = dirname(tdkPath);
165
- if (!isWritable(installDir)) {
166
- console.log(chalk.yellow(`\n🔒 ${installDir} isn't writable by your user.`));
167
- console.log(chalk.yellow("💡 Upgrade manually instead:"));
168
- console.log(chalk.cyan(` curl -fsSL -o ${tdkPath} ${release.downloadUrl}`));
169
- console.log(chalk.cyan(` chmod +x ${tdkPath}`));
170
- return false;
171
- }
172
-
173
- const spinner = ora(`Downloading ${release.assetName} (${release.tag})...`).start();
174
- // Download to /tmp first (both the binary and the engine bundle below) so a
175
- // failed network step can't leave a half-written binary at tdkPath.
176
- const tmpPath = `/tmp/tdk-upgrade-${release.assetName}`;
177
- const engineTmpPath = `/tmp/tdk-upgrade-engine-${release.tag}.tar.gz`;
178
- const engineDir = join(installDir, "tdk-cli");
179
-
180
- try {
181
- execSync(`curl -fsSL -o ${JSON.stringify(tmpPath)} ${JSON.stringify(release.downloadUrl)}`, {
182
- stdio: "pipe",
183
- timeout: 120000,
184
- });
185
- execSync(`chmod +x ${JSON.stringify(tmpPath)}`);
186
-
187
- // The compiled binary has no source checkout to find engine/ or
188
- // cli/templates/ in, so it looks for a tdk-cli/ folder next to itself
189
- // (see template-engine.ts loadTemplate() / vendorTdkExtension()).
190
- // `tdk upgrade` only used to swap the binary, leaving that folder
191
- // stale/missing after an upgrade - refresh it here too, every time,
192
- // the same way install.sh does on a fresh install.
193
- spinner.text = `Downloading bundled engine (${release.tag})...`;
194
- execSync(
195
- `curl -fsSL -o ${JSON.stringify(engineTmpPath)} ${JSON.stringify(release.engineDownloadUrl)}`,
196
- { stdio: "pipe", timeout: 120000 },
197
- );
198
-
199
- // Verify both downloads against the release's checksums.txt before
200
- // touching the installed binary or engine.
201
- spinner.text = `Verifying checksums (${release.tag})...`;
202
- const sums = parseChecksums(
203
- execSync(`curl -fsSL ${JSON.stringify(release.checksumsUrl)}`, {
204
- encoding: "utf-8",
205
- stdio: "pipe",
206
- timeout: 30000,
207
- }),
208
- );
209
- verifyChecksum(tmpPath, release.assetName, sums, true);
210
- verifyChecksum(engineTmpPath, ENGINE_ASSET_NAME, sums, false);
211
-
212
- execSync(`mv ${JSON.stringify(tmpPath)} ${JSON.stringify(tdkPath)}`);
213
- execSync(`rm -rf ${JSON.stringify(engineDir)}`);
214
- execSync(`mkdir -p ${JSON.stringify(engineDir)}`);
215
- execSync(
216
- `tar -xzf ${JSON.stringify(engineTmpPath)} -C ${JSON.stringify(engineDir)} --strip-components=1`,
217
- );
218
-
219
- spinner.succeed(`Upgraded to ${release.tag}`);
220
- return true;
221
- } catch (err: unknown) {
222
- spinner.fail(`Binary upgrade failed: ${getErrorMessage(err)}`);
223
- logVerbose("Binary upgrade error", err);
224
- console.log(chalk.yellow("\n💡 If this failed due to permissions, upgrade manually instead:"));
225
- console.log(chalk.cyan(` curl -fsSL -o ${tdkPath} ${release.downloadUrl}`));
226
- console.log(chalk.cyan(` chmod +x ${tdkPath}`));
227
- console.log(chalk.cyan(` rm -rf ${engineDir} && mkdir -p ${engineDir}`));
228
- console.log(
229
- chalk.cyan(
230
- ` curl -fsSL ${release.engineDownloadUrl} | tar -xzf - -C ${engineDir} --strip-components=1`,
231
- ),
232
- );
233
- return false;
234
- } finally {
235
- try {
236
- execSync(`rm -f ${JSON.stringify(tmpPath)} ${JSON.stringify(engineTmpPath)}`);
237
- } catch {
238
- // best-effort cleanup
239
- }
240
- }
241
- }
242
-
243
- function getCurrentVersion(): string {
244
- try {
245
- return getPackageVersion();
246
- } catch (err: unknown) {
247
- logVerbose("Version detection error", err);
248
- return "unknown";
249
- }
250
- }
251
-
252
- async function getLatestVersion(): Promise<string | null> {
253
- const spinner = ora("Checking for latest version...").start();
254
-
255
- try {
256
- const result = execSync("npm view @tdk-landscape/tdk-cli-core version", {
257
- encoding: "utf-8",
258
- timeout: 10000,
259
- }).trim();
260
- spinner.succeed(`Latest version: ${chalk.green(result)}`);
261
- return result;
262
- } catch (_err: unknown) {
263
- // npm registry failed - package not published yet
264
- spinner.warn("Package not yet published to npm registry");
265
- console.log(chalk.yellow("\n💡 For now, please upgrade manually from GitHub:"));
266
- console.log(chalk.cyan(" npm install -g github:tdk-landscape/tdk-cli-core"));
267
- console.log(chalk.cyan(" bun install -g github:tdk-landscape/tdk-cli-core"));
268
- console.log(chalk.gray("\n (npm package will be available soon)"));
269
- return null;
270
- }
271
- }
272
-
273
- async function upgradeViaNpm(): Promise<boolean> {
274
- const spinner = ora("Upgrading via npm...").start();
275
-
276
- try {
277
- execSync("npm install -g @tdk-landscape/tdk-cli-core@latest", {
278
- stdio: "inherit",
279
- timeout: 120000,
280
- });
281
- spinner.succeed("Upgraded successfully via npm");
282
- return true;
283
- } catch (err: unknown) {
284
- // npm registry failed (package may not exist or network issue) - try GitHub fallback
285
- spinner.text = "npm registry failed, trying GitHub...";
286
- logVerbose("npm registry error", err);
287
- try {
288
- execSync("npm install -g github:tdk-landscape/tdk-cli-core", {
289
- stdio: "inherit",
290
- timeout: 120000,
291
- });
292
- spinner.succeed("Upgraded successfully via GitHub");
293
- return true;
294
- } catch (err: unknown) {
295
- spinner.fail(`Upgrade failed: ${getErrorMessage(err)}`);
296
- return false;
297
- }
298
- }
299
- }
300
-
301
- async function upgradeViaBun(): Promise<boolean> {
302
- const spinner = ora("Upgrading via bun...").start();
303
-
304
- try {
305
- execSync("bun install -g @tdk-landscape/tdk-cli-core@latest", {
306
- stdio: "inherit",
307
- timeout: 120000,
308
- });
309
- spinner.succeed("Upgraded successfully via bun");
310
- return true;
311
- } catch (err: unknown) {
312
- // bun registry failed (package may not exist or network issue) - try GitHub fallback
313
- spinner.text = "bun registry failed, trying GitHub...";
314
- logVerbose("bun registry error", err);
315
- try {
316
- execSync("bun install -g github:tdk-landscape/tdk-cli-core", {
317
- stdio: "inherit",
318
- timeout: 120000,
319
- });
320
- spinner.succeed("Upgraded successfully via GitHub");
321
- return true;
322
- } catch (err: unknown) {
323
- spinner.fail(`Upgrade failed: ${getErrorMessage(err)}`);
324
- return false;
325
- }
326
- }
327
- }
328
-
329
- async function upgradeViaGit(path: string): Promise<boolean> {
330
- const spinner = ora("Pulling latest changes from git...").start();
331
-
332
- try {
333
- execSync("git rev-parse --git-dir", {
334
- cwd: path,
335
- stdio: "pipe",
336
- });
337
-
338
- spinner.text = "Fetching from origin...";
339
- execSync("git fetch origin", {
340
- cwd: path,
341
- stdio: "pipe",
342
- timeout: 30000,
343
- });
344
-
345
- const branch = execSync("git rev-parse --abbrev-ref HEAD", {
346
- cwd: path,
347
- encoding: "utf-8",
348
- }).trim();
349
-
350
- spinner.text = `Pulling latest on ${branch}...`;
351
- execSync(`git pull origin ${branch}`, {
352
- cwd: path,
353
- stdio: "pipe",
354
- timeout: 30000,
355
- });
356
-
357
- if (existsSync(join(path, "cli", "package.json"))) {
358
- spinner.text = "Rebuilding CLI...";
359
- execSync("bun install && bun run build", {
360
- cwd: join(path, "cli"),
361
- stdio: "pipe",
362
- timeout: 60000,
363
- });
364
- }
365
-
366
- spinner.text = "Re-linking CLI...";
367
- execSync("bun link --force", {
368
- cwd: join(path, "cli"),
369
- stdio: "pipe",
370
- timeout: 30000,
371
- });
372
-
373
- spinner.succeed("Upgraded successfully via git pull");
374
- return true;
375
- } catch (err: unknown) {
376
- spinner.fail(`Git upgrade failed: ${getErrorMessage(err)}`);
377
- return false;
378
- }
379
- }
380
-
381
- export const upgradeCommand = new Command("upgrade")
382
- .alias("update")
383
- .description("Upgrade TDK CLI to the latest version")
384
- .option("-f, --force", "Force upgrade even if already on latest", false)
385
- .option("--dry-run", "Show what would be upgraded without actually doing it", false)
386
- .option("-y, --yes", "Skip confirmation prompt", false)
387
- .action(async (options) => {
388
- console.log(chalk.cyan("🚀 TDK CLI Upgrade\n"));
389
-
390
- const currentVersion = getCurrentVersion();
391
- console.log(chalk.gray(`Current version: ${currentVersion}`));
392
-
393
- const installInfo = detectInstallation();
394
- console.log(chalk.gray(`Installation method: ${installInfo.method}`));
395
- console.log();
396
-
397
- if (installInfo.method === "unknown") {
398
- console.error(chalk.red("❌ Could not detect installation method"));
399
- console.log(chalk.yellow("\n💡 Manual upgrade (package not on npm yet, use GitHub):"));
400
- console.log(chalk.cyan(" npm: npm install -g github:tdk-landscape/tdk-cli-core"));
401
- console.log(chalk.cyan(" bun: bun install -g github:tdk-landscape/tdk-cli-core"));
402
- console.log(chalk.cyan(" git: cd /path/to/tdk-cli && git pull && bun link --force"));
403
- process.exit(1);
404
- }
405
-
406
- let latestVersion: string | null = null;
407
- let binaryRelease: BinaryRelease | null = null;
408
-
409
- if (installInfo.method === "binary" && installInfo.path) {
410
- console.log(chalk.blue("📦 Standalone binary installation detected"));
411
-
412
- binaryRelease = await getLatestBinaryRelease();
413
-
414
- if (!binaryRelease) {
415
- showErrorAndExit(
416
- `Could not determine latest release for this platform (${process.platform}/${process.arch})`,
417
- );
418
- }
419
-
420
- latestVersion = binaryRelease.tag.replace(/^v/, "").split("-")[0];
421
-
422
- if (latestVersion === currentVersion && !options.force) {
423
- console.log(chalk.green("\n✅ You are already on the latest version!"));
424
- console.log(chalk.gray(` ${currentVersion} (current) = ${latestVersion} (latest)`));
425
- process.exit(0);
426
- }
427
-
428
- if (latestVersion !== currentVersion) {
429
- console.log(chalk.yellow(`\n⬆️ Upgrade available: ${currentVersion} → ${latestVersion}`));
430
- } else if (options.force) {
431
- console.log(chalk.yellow(`\n🔄 Force upgrade requested (currently ${currentVersion})`));
432
- }
433
- } else if (installInfo.method === "git" && installInfo.path) {
434
- console.log(chalk.blue("📦 Git installation detected - will pull latest from origin"));
435
-
436
- try {
437
- execSync("git fetch origin", { cwd: installInfo.path, stdio: "pipe" });
438
- const localHash = execSync("git rev-parse HEAD", {
439
- cwd: installInfo.path,
440
- encoding: "utf-8",
441
- }).trim();
442
- const remoteHash = execSync("git rev-parse origin/main", {
443
- cwd: installInfo.path,
444
- encoding: "utf-8",
445
- }).trim();
446
-
447
- if (localHash === remoteHash && !options.force) {
448
- console.log(chalk.green("\n✅ Already up to date with origin/main!"));
449
- console.log(chalk.gray(` Current: ${localHash.substring(0, 7)}`));
450
- console.log(chalk.gray("\n Tip: Use --force to pull and rebuild anyway"));
451
- process.exit(0);
452
- }
453
-
454
- if (localHash !== remoteHash) {
455
- console.log(chalk.yellow(`\n⬆️ Updates available:`));
456
- console.log(chalk.gray(` Local: ${localHash.substring(0, 7)}`));
457
- console.log(chalk.gray(` Remote: ${remoteHash.substring(0, 7)}`));
458
- } else {
459
- console.log(chalk.yellow(`\n🔄 Force upgrade requested`));
460
- }
461
-
462
- latestVersion = remoteHash.substring(0, 7);
463
- } catch (err: unknown) {
464
- console.warn(chalk.yellow("⚠️ Could not check git remote, will attempt upgrade anyway"));
465
- logVerbose("Git remote check failed", err);
466
- latestVersion = "latest";
467
- }
468
- } else {
469
- latestVersion = await getLatestVersion();
470
-
471
- if (!latestVersion) {
472
- showErrorAndExit("Could not determine latest version");
473
- }
474
-
475
- if (currentVersion === latestVersion && !options.force) {
476
- console.log(chalk.green("\n✅ You are already on the latest version!"));
477
- console.log(chalk.gray(` ${currentVersion} (current) = ${latestVersion} (latest)`));
478
- process.exit(0);
479
- }
480
-
481
- if (currentVersion !== latestVersion) {
482
- console.log(chalk.yellow(`\n⬆️ Upgrade available: ${currentVersion} → ${latestVersion}`));
483
- } else if (options.force) {
484
- console.log(chalk.yellow(`\n🔄 Force upgrade requested (currently ${currentVersion})`));
485
- }
486
- }
487
-
488
- if (options.dryRun) {
489
- console.log(chalk.blue("\n📋 Dry run mode - would perform:"));
490
- console.log(chalk.gray(` Method: ${installInfo.method}`));
491
- if (installInfo.path) {
492
- console.log(chalk.gray(` Path: ${installInfo.path}`));
493
- }
494
- if (installInfo.method === "git") {
495
- console.log(
496
- chalk.gray(" Action: git pull origin main && bun install && bun link --force"),
497
- );
498
- } else if (installInfo.method === "binary" && binaryRelease) {
499
- console.log(
500
- chalk.gray(` Action: Download and replace with ${binaryRelease.downloadUrl}`),
501
- );
502
- console.log(
503
- chalk.gray(` Action: Refresh bundled engine from ${binaryRelease.engineDownloadUrl}`),
504
- );
505
- } else {
506
- console.log(chalk.gray(` Action: Upgrade to ${latestVersion}`));
507
- }
508
- console.log(chalk.yellow("\n (Not actually upgrading due to --dry-run)"));
509
- process.exit(0);
510
- }
511
-
512
- if (!options.yes) {
513
- console.log();
514
- const confirm = await promptConfirm({
515
- message: "Proceed with upgrade?",
516
- initial: true,
517
- });
518
-
519
- if (!confirm) {
520
- showCancelled();
521
- process.exit(0);
522
- }
523
- } else {
524
- console.log(chalk.gray("⚡ Auto-confirming (--yes flag)\n"));
525
- }
526
-
527
- console.log();
528
-
529
- let success = false;
530
-
531
- switch (installInfo.method) {
532
- case "npm":
533
- success = await upgradeViaNpm();
534
- break;
535
- case "bun":
536
- success = await upgradeViaBun();
537
- break;
538
- case "git":
539
- if (installInfo.path) {
540
- success = await upgradeViaGit(installInfo.path);
541
- }
542
- break;
543
- case "binary":
544
- if (installInfo.path && binaryRelease) {
545
- success = await upgradeViaBinary(installInfo.path, binaryRelease);
546
- }
547
- break;
548
- }
549
-
550
- if (!success) {
551
- console.error(chalk.red("\n❌ Upgrade failed"));
552
- console.log(
553
- chalk.yellow("\n💡 Try manual upgrade (use GitHub until npm package is published):"),
554
- );
555
- if (installInfo.method === "npm") {
556
- console.log(chalk.cyan(" npm install -g github:tdk-landscape/tdk-cli-core"));
557
- } else if (installInfo.method === "bun") {
558
- console.log(chalk.cyan(" bun install -g github:tdk-landscape/tdk-cli-core"));
559
- } else if (installInfo.method === "git") {
560
- console.log(chalk.cyan(` cd ${installInfo.path} && git pull && bun link --force`));
561
- } else if (installInfo.method === "binary" && binaryRelease && installInfo.path) {
562
- const engineDir = join(dirname(installInfo.path), "tdk-cli");
563
- console.log(
564
- chalk.cyan(` curl -fsSL -o ${installInfo.path} ${binaryRelease.downloadUrl}`),
565
- );
566
- console.log(chalk.cyan(` chmod +x ${installInfo.path}`));
567
- console.log(chalk.cyan(` rm -rf ${engineDir} && mkdir -p ${engineDir}`));
568
- console.log(
569
- chalk.cyan(
570
- ` curl -fsSL ${binaryRelease.engineDownloadUrl} | tar -xzf - -C ${engineDir} --strip-components=1`,
571
- ),
572
- );
573
- }
574
- process.exit(1);
575
- }
576
-
577
- console.log();
578
- const verifySpinner = ora("Verifying upgrade...").start();
579
-
580
- try {
581
- const newVersion = execSync("tdk version", { encoding: "utf-8" }).trim();
582
- verifySpinner.succeed(`Verified: now running ${chalk.green(newVersion)}`);
583
-
584
- console.log();
585
- console.log(chalk.green.bold("✨ Upgrade complete!"));
586
- console.log(chalk.gray(` Version: ${currentVersion} → ${newVersion}`));
587
-
588
- console.log();
589
- console.log(chalk.cyan.bold("📍 Installation Details:"));
590
- if (installInfo.method === "git" && installInfo.path) {
591
- console.log(chalk.gray(` Location: ${installInfo.path}`));
592
- console.log(chalk.gray(` Method: git clone + bun link`));
593
- } else {
594
- console.log(chalk.gray(` Method: ${installInfo.method}`));
595
- }
596
- console.log(
597
- chalk.gray(` Binary: ${execSync("which tdk", { encoding: "utf-8" }).trim()}`),
598
- );
599
-
600
- console.log();
601
- console.log(chalk.cyan.bold("🚀 Quick Start:"));
602
- console.log(chalk.white(` tdk --help Show all commands`));
603
- console.log(chalk.white(` tdk networks View service URLs`));
604
- console.log(chalk.white(` tdk doctor Check environment`));
605
-
606
- if (newVersion === currentVersion && !options.force) {
607
- console.log();
608
- console.log(
609
- chalk.yellow("💡 Tip: Version appears unchanged. You may need to restart your terminal."),
610
- );
611
- }
612
-
613
- console.log();
614
- console.log(chalk.green("Happy coding! 🎉"));
615
- } catch (err: unknown) {
616
- verifySpinner.warn("Could not verify new version");
617
- console.error(chalk.red(`Verification error: ${getErrorMessage(err)}`));
618
- console.log();
619
- console.log(chalk.yellow("⚠️ Upgrade status unknown - verification failed"));
620
- console.log();
621
- console.log(chalk.yellow("💡 Verify manually:"));
622
- console.log(chalk.white(" 1. Restart your terminal"));
623
- console.log(chalk.white(" 2. Run: tdk version"));
624
- if (installInfo.path) {
625
- console.log(chalk.white(` 3. Compare with: git -C ${installInfo.path} rev-parse HEAD`));
626
- }
627
- }
628
- });
@@ -1,9 +0,0 @@
1
- import { Command } from "commander";
2
- import { getPackageVersion } from "../utils/paths.js";
3
-
4
- export const versionCommand = new Command("version")
5
- .description("Display version number")
6
- .alias("v")
7
- .action(() => {
8
- console.log(getPackageVersion());
9
- });
@@ -1,21 +0,0 @@
1
- import type React from "react";
2
- import type { BaseTooltipProps } from "../types/index.js";
3
- import { BaseTooltip } from "./BaseTooltip.js";
4
-
5
- /**
6
- * Info tooltip variant with predefined accessibility styling.
7
- * Uses ℹ prefix and adds margin for better visibility.
8
- */
9
- export const AccessibleTooltip: React.FC<
10
- Pick<BaseTooltipProps, "content" | "shortcut" | "visible">
11
- > = ({ content, shortcut, visible }) => {
12
- return (
13
- <BaseTooltip
14
- content={content}
15
- shortcut={shortcut}
16
- visible={visible}
17
- prefix="ℹ "
18
- marginTop={1}
19
- />
20
- );
21
- };