@tdk-landscape/tdk-cli-core 1.3.53 → 1.3.55

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 (392) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +1 -1
  3. package/cli/dist/commands/doctor.js +21 -3
  4. package/cli/dist/commands/upgrade.js +7 -7
  5. package/cli/dist/generator/extension-fetch.js +16 -9
  6. package/cli/dist/utils/spinner.js +39 -0
  7. package/cli/package.json +1 -2
  8. package/package.json +16 -2
  9. package/.claude/skills/layer-autoresearch/SKILL.md +0 -48
  10. package/.claude/skills/tdk-troubleshoot/SKILL.md +0 -222
  11. package/.github/ISSUE_TEMPLATE/bug_report.yml +0 -40
  12. package/.github/ISSUE_TEMPLATE/config.yml +0 -11
  13. package/.github/ISSUE_TEMPLATE/feature_request.yml +0 -18
  14. package/.github/ISSUE_TEMPLATE/premium_license.yml +0 -43
  15. package/.github/dependabot.yml +0 -33
  16. package/.github/pull_request_template.md +0 -5
  17. package/.github/workflows/ci.yml +0 -200
  18. package/.github/workflows/release-binaries.yml +0 -139
  19. package/.github/zizmor.yml +0 -9
  20. package/.pre-commit-config.yaml +0 -57
  21. package/CODE_OF_CONDUCT.md +0 -9
  22. package/CONTRIBUTING.md +0 -42
  23. package/Makefile +0 -92
  24. package/SECURITY.md +0 -17
  25. package/benchmarks/results/container-scale-2026-09-25T20-54-49-736Z.json +0 -45
  26. package/benchmarks/results/container-scale-2026-09-25T21-01-20-540Z.json +0 -150
  27. package/benchmarks/results/container-scale-2026-09-25T21-15-01-441Z.json +0 -73
  28. package/benchmarks/results/container-scale-2026-09-25T22-09-01-630Z.json +0 -77
  29. package/benchmarks/results/container-scale-2026-09-25T22-18-28-371Z.json +0 -202
  30. package/cli/AGENTS.md +0 -390
  31. package/cli/DESIGN.md +0 -735
  32. package/cli/README.md +0 -292
  33. package/cli/biome.json +0 -40
  34. package/cli/dependency-graph.svg +0 -1135
  35. package/cli/dist/cli.d.ts +0 -3
  36. package/cli/dist/cli.d.ts.map +0 -1
  37. package/cli/dist/cli.js.map +0 -1
  38. package/cli/dist/commands/completion.d.ts +0 -3
  39. package/cli/dist/commands/completion.d.ts.map +0 -1
  40. package/cli/dist/commands/completion.js.map +0 -1
  41. package/cli/dist/commands/config.d.ts +0 -3
  42. package/cli/dist/commands/config.d.ts.map +0 -1
  43. package/cli/dist/commands/config.js.map +0 -1
  44. package/cli/dist/commands/doctor.d.ts +0 -19
  45. package/cli/dist/commands/doctor.d.ts.map +0 -1
  46. package/cli/dist/commands/doctor.js.map +0 -1
  47. package/cli/dist/commands/down.d.ts +0 -3
  48. package/cli/dist/commands/down.d.ts.map +0 -1
  49. package/cli/dist/commands/down.js.map +0 -1
  50. package/cli/dist/commands/help.d.ts +0 -2
  51. package/cli/dist/commands/help.d.ts.map +0 -1
  52. package/cli/dist/commands/help.js.map +0 -1
  53. package/cli/dist/commands/networks.d.ts +0 -3
  54. package/cli/dist/commands/networks.d.ts.map +0 -1
  55. package/cli/dist/commands/networks.js.map +0 -1
  56. package/cli/dist/commands/project.d.ts +0 -9
  57. package/cli/dist/commands/project.d.ts.map +0 -1
  58. package/cli/dist/commands/project.js.map +0 -1
  59. package/cli/dist/commands/projects.d.ts +0 -3
  60. package/cli/dist/commands/projects.d.ts.map +0 -1
  61. package/cli/dist/commands/projects.js.map +0 -1
  62. package/cli/dist/commands/resource.d.ts +0 -69
  63. package/cli/dist/commands/resource.d.ts.map +0 -1
  64. package/cli/dist/commands/resource.js.map +0 -1
  65. package/cli/dist/commands/resources.d.ts +0 -3
  66. package/cli/dist/commands/resources.d.ts.map +0 -1
  67. package/cli/dist/commands/resources.js.map +0 -1
  68. package/cli/dist/commands/stack.d.ts +0 -3
  69. package/cli/dist/commands/stack.d.ts.map +0 -1
  70. package/cli/dist/commands/stack.js.map +0 -1
  71. package/cli/dist/commands/stacks.d.ts +0 -3
  72. package/cli/dist/commands/stacks.d.ts.map +0 -1
  73. package/cli/dist/commands/stacks.js.map +0 -1
  74. package/cli/dist/commands/status.d.ts +0 -3
  75. package/cli/dist/commands/status.d.ts.map +0 -1
  76. package/cli/dist/commands/status.js.map +0 -1
  77. package/cli/dist/commands/ui.d.ts +0 -3
  78. package/cli/dist/commands/ui.d.ts.map +0 -1
  79. package/cli/dist/commands/ui.js.map +0 -1
  80. package/cli/dist/commands/up.d.ts +0 -3
  81. package/cli/dist/commands/up.d.ts.map +0 -1
  82. package/cli/dist/commands/up.js.map +0 -1
  83. package/cli/dist/commands/upgrade.d.ts +0 -14
  84. package/cli/dist/commands/upgrade.d.ts.map +0 -1
  85. package/cli/dist/commands/upgrade.js.map +0 -1
  86. package/cli/dist/commands/version.d.ts +0 -3
  87. package/cli/dist/commands/version.d.ts.map +0 -1
  88. package/cli/dist/commands/version.js.map +0 -1
  89. package/cli/dist/components/Accessible.d.ts +0 -8
  90. package/cli/dist/components/Accessible.d.ts.map +0 -1
  91. package/cli/dist/components/Accessible.js.map +0 -1
  92. package/cli/dist/components/BaseTooltip.d.ts +0 -4
  93. package/cli/dist/components/BaseTooltip.d.ts.map +0 -1
  94. package/cli/dist/components/BaseTooltip.js.map +0 -1
  95. package/cli/dist/components/DetailPanel.d.ts +0 -4
  96. package/cli/dist/components/DetailPanel.d.ts.map +0 -1
  97. package/cli/dist/components/DetailPanel.js.map +0 -1
  98. package/cli/dist/components/FileTree.d.ts +0 -4
  99. package/cli/dist/components/FileTree.d.ts.map +0 -1
  100. package/cli/dist/components/FileTree.js.map +0 -1
  101. package/cli/dist/components/ResourceSelectInput.d.ts +0 -4
  102. package/cli/dist/components/ResourceSelectInput.d.ts.map +0 -1
  103. package/cli/dist/components/ResourceSelectInput.js.map +0 -1
  104. package/cli/dist/components/ResourceTable.d.ts +0 -4
  105. package/cli/dist/components/ResourceTable.d.ts.map +0 -1
  106. package/cli/dist/components/ResourceTable.js.map +0 -1
  107. package/cli/dist/components/TabBar.d.ts +0 -4
  108. package/cli/dist/components/TabBar.d.ts.map +0 -1
  109. package/cli/dist/components/TabBar.js.map +0 -1
  110. package/cli/dist/components/Tooltip.d.ts +0 -12
  111. package/cli/dist/components/Tooltip.d.ts.map +0 -1
  112. package/cli/dist/components/Tooltip.js.map +0 -1
  113. package/cli/dist/components/index.d.ts +0 -8
  114. package/cli/dist/components/index.d.ts.map +0 -1
  115. package/cli/dist/components/index.js.map +0 -1
  116. package/cli/dist/config/platform-standards.d.ts +0 -159
  117. package/cli/dist/config/platform-standards.d.ts.map +0 -1
  118. package/cli/dist/config/platform-standards.js.map +0 -1
  119. package/cli/dist/generator/extension-fetch.d.ts +0 -25
  120. package/cli/dist/generator/extension-fetch.d.ts.map +0 -1
  121. package/cli/dist/generator/extension-fetch.js.map +0 -1
  122. package/cli/dist/generator/template-engine.d.ts +0 -62
  123. package/cli/dist/generator/template-engine.d.ts.map +0 -1
  124. package/cli/dist/generator/template-engine.js.map +0 -1
  125. package/cli/dist/index.d.ts +0 -11
  126. package/cli/dist/index.d.ts.map +0 -1
  127. package/cli/dist/index.js.map +0 -1
  128. package/cli/dist/types/index.d.ts +0 -257
  129. package/cli/dist/types/index.d.ts.map +0 -1
  130. package/cli/dist/types/index.js.map +0 -1
  131. package/cli/dist/utils/cache.d.ts +0 -19
  132. package/cli/dist/utils/cache.d.ts.map +0 -1
  133. package/cli/dist/utils/cache.js.map +0 -1
  134. package/cli/dist/utils/command-helpers.d.ts +0 -17
  135. package/cli/dist/utils/command-helpers.d.ts.map +0 -1
  136. package/cli/dist/utils/command-helpers.js.map +0 -1
  137. package/cli/dist/utils/constants.d.ts +0 -53
  138. package/cli/dist/utils/constants.d.ts.map +0 -1
  139. package/cli/dist/utils/constants.js.map +0 -1
  140. package/cli/dist/utils/discovery-context.d.ts +0 -4
  141. package/cli/dist/utils/discovery-context.d.ts.map +0 -1
  142. package/cli/dist/utils/discovery-context.js.map +0 -1
  143. package/cli/dist/utils/docker.d.ts +0 -4
  144. package/cli/dist/utils/docker.d.ts.map +0 -1
  145. package/cli/dist/utils/docker.js.map +0 -1
  146. package/cli/dist/utils/doctor-runtime.d.ts +0 -81
  147. package/cli/dist/utils/doctor-runtime.d.ts.map +0 -1
  148. package/cli/dist/utils/doctor-runtime.js.map +0 -1
  149. package/cli/dist/utils/env-validator.d.ts +0 -15
  150. package/cli/dist/utils/env-validator.d.ts.map +0 -1
  151. package/cli/dist/utils/env-validator.js.map +0 -1
  152. package/cli/dist/utils/errors.d.ts +0 -31
  153. package/cli/dist/utils/errors.d.ts.map +0 -1
  154. package/cli/dist/utils/errors.js.map +0 -1
  155. package/cli/dist/utils/file-helpers.d.ts +0 -14
  156. package/cli/dist/utils/file-helpers.d.ts.map +0 -1
  157. package/cli/dist/utils/file-helpers.js.map +0 -1
  158. package/cli/dist/utils/formatting.d.ts +0 -30
  159. package/cli/dist/utils/formatting.d.ts.map +0 -1
  160. package/cli/dist/utils/formatting.js.map +0 -1
  161. package/cli/dist/utils/paths.d.ts +0 -3
  162. package/cli/dist/utils/paths.d.ts.map +0 -1
  163. package/cli/dist/utils/paths.js.map +0 -1
  164. package/cli/dist/utils/port-assignment.d.ts +0 -6
  165. package/cli/dist/utils/port-assignment.d.ts.map +0 -1
  166. package/cli/dist/utils/port-assignment.js.map +0 -1
  167. package/cli/dist/utils/project-features.d.ts +0 -23
  168. package/cli/dist/utils/project-features.d.ts.map +0 -1
  169. package/cli/dist/utils/project-features.js.map +0 -1
  170. package/cli/dist/utils/project-templates.d.ts +0 -7
  171. package/cli/dist/utils/project-templates.d.ts.map +0 -1
  172. package/cli/dist/utils/project-templates.js.map +0 -1
  173. package/cli/dist/utils/prompt.d.ts +0 -28
  174. package/cli/dist/utils/prompt.d.ts.map +0 -1
  175. package/cli/dist/utils/prompt.js.map +0 -1
  176. package/cli/dist/utils/resource-features.d.ts +0 -29
  177. package/cli/dist/utils/resource-features.d.ts.map +0 -1
  178. package/cli/dist/utils/resource-features.js.map +0 -1
  179. package/cli/dist/utils/service-urls.d.ts +0 -30
  180. package/cli/dist/utils/service-urls.d.ts.map +0 -1
  181. package/cli/dist/utils/service-urls.js.map +0 -1
  182. package/cli/dist/utils/services.d.ts +0 -18
  183. package/cli/dist/utils/services.d.ts.map +0 -1
  184. package/cli/dist/utils/services.js.map +0 -1
  185. package/cli/dist/utils/stack-features.d.ts +0 -22
  186. package/cli/dist/utils/stack-features.d.ts.map +0 -1
  187. package/cli/dist/utils/stack-features.js.map +0 -1
  188. package/cli/dist/utils/tar.d.ts +0 -7
  189. package/cli/dist/utils/tar.d.ts.map +0 -1
  190. package/cli/dist/utils/tar.js.map +0 -1
  191. package/cli/dist/utils/tilt.d.ts +0 -20
  192. package/cli/dist/utils/tilt.d.ts.map +0 -1
  193. package/cli/dist/utils/tilt.js.map +0 -1
  194. package/cli/dist/utils/validation.d.ts +0 -16
  195. package/cli/dist/utils/validation.d.ts.map +0 -1
  196. package/cli/dist/utils/validation.js.map +0 -1
  197. package/cli/knip.json +0 -6
  198. package/cli/pnpm-lock.yaml +0 -2305
  199. package/cli/pnpm-workspace.yaml +0 -2
  200. package/cli/src/cli.ts +0 -72
  201. package/cli/src/commands/__tests__/always-enabled-infra.test.ts +0 -109
  202. package/cli/src/commands/__tests__/config.test.ts +0 -146
  203. package/cli/src/commands/__tests__/doctor.test.ts +0 -730
  204. package/cli/src/commands/__tests__/error-handling.test.ts +0 -78
  205. package/cli/src/commands/__tests__/phases-model.test.ts +0 -161
  206. package/cli/src/commands/__tests__/project-resource-features-e2e.test.ts +0 -187
  207. package/cli/src/commands/__tests__/project.test.ts +0 -68
  208. package/cli/src/commands/__tests__/resource.test.ts +0 -226
  209. package/cli/src/commands/__tests__/saas-starter-integration.test.ts +0 -194
  210. package/cli/src/commands/__tests__/stack-features-e2e.test.ts +0 -135
  211. package/cli/src/commands/__tests__/upgrade.test.ts +0 -198
  212. package/cli/src/commands/completion.ts +0 -300
  213. package/cli/src/commands/config.ts +0 -299
  214. package/cli/src/commands/doctor.ts +0 -926
  215. package/cli/src/commands/down.ts +0 -37
  216. package/cli/src/commands/help.ts +0 -143
  217. package/cli/src/commands/networks-design.md +0 -80
  218. package/cli/src/commands/networks.ts +0 -332
  219. package/cli/src/commands/project.ts +0 -456
  220. package/cli/src/commands/projects.ts +0 -82
  221. package/cli/src/commands/resource.ts +0 -652
  222. package/cli/src/commands/resources.ts +0 -95
  223. package/cli/src/commands/stack.ts +0 -128
  224. package/cli/src/commands/stacks.ts +0 -52
  225. package/cli/src/commands/status.ts +0 -88
  226. package/cli/src/commands/ui.tsx +0 -843
  227. package/cli/src/commands/up.ts +0 -169
  228. package/cli/src/commands/upgrade.ts +0 -628
  229. package/cli/src/commands/version.ts +0 -9
  230. package/cli/src/components/Accessible.tsx +0 -21
  231. package/cli/src/components/BaseTooltip.tsx +0 -66
  232. package/cli/src/components/DetailPanel.tsx +0 -146
  233. package/cli/src/components/FileTree.tsx +0 -89
  234. package/cli/src/components/ResourceSelectInput.tsx +0 -30
  235. package/cli/src/components/ResourceTable.tsx +0 -78
  236. package/cli/src/components/TabBar.tsx +0 -53
  237. package/cli/src/components/Tooltip.tsx +0 -11
  238. package/cli/src/components/index.ts +0 -7
  239. package/cli/src/config/platform-standards.test.ts +0 -11
  240. package/cli/src/config/platform-standards.ts +0 -196
  241. package/cli/src/generator/__tests__/extension-fetch.test.ts +0 -242
  242. package/cli/src/generator/__tests__/template-engine.test.ts +0 -70
  243. package/cli/src/generator/extension-fetch.ts +0 -286
  244. package/cli/src/generator/template-engine.ts +0 -752
  245. package/cli/src/index.ts +0 -86
  246. package/cli/src/templates.d.ts +0 -4
  247. package/cli/src/types/index.ts +0 -353
  248. package/cli/src/utils/__tests__/cache.test.ts +0 -98
  249. package/cli/src/utils/__tests__/formatting.test.ts +0 -170
  250. package/cli/src/utils/__tests__/paths.test.ts +0 -180
  251. package/cli/src/utils/__tests__/port-assignment.test.ts +0 -121
  252. package/cli/src/utils/__tests__/service-urls.test.ts +0 -174
  253. package/cli/src/utils/__tests__/services.test.ts +0 -531
  254. package/cli/src/utils/__tests__/tilt.test.ts +0 -172
  255. package/cli/src/utils/__tests__/validation.test.ts +0 -148
  256. package/cli/src/utils/cache.ts +0 -76
  257. package/cli/src/utils/command-helpers.ts +0 -54
  258. package/cli/src/utils/constants.ts +0 -130
  259. package/cli/src/utils/discovery-context.ts +0 -49
  260. package/cli/src/utils/docker.ts +0 -20
  261. package/cli/src/utils/doctor-runtime.ts +0 -644
  262. package/cli/src/utils/env-validator.ts +0 -139
  263. package/cli/src/utils/errors.ts +0 -168
  264. package/cli/src/utils/file-helpers.ts +0 -62
  265. package/cli/src/utils/formatting.ts +0 -215
  266. package/cli/src/utils/paths.ts +0 -53
  267. package/cli/src/utils/port-assignment.ts +0 -106
  268. package/cli/src/utils/project-features.ts +0 -118
  269. package/cli/src/utils/project-templates.ts +0 -29
  270. package/cli/src/utils/prompt.ts +0 -128
  271. package/cli/src/utils/resource-features.ts +0 -215
  272. package/cli/src/utils/service-urls.ts +0 -124
  273. package/cli/src/utils/services.ts +0 -364
  274. package/cli/src/utils/stack-features.ts +0 -30
  275. package/cli/src/utils/tar.ts +0 -24
  276. package/cli/src/utils/tilt.ts +0 -133
  277. package/cli/src/utils/validation.ts +0 -67
  278. package/cli/tsconfig.json +0 -25
  279. package/cli/tsconfig.typecheck.json +0 -8
  280. package/docs/FEATURES.md +0 -281
  281. package/docs/demo.svg +0 -217
  282. package/engine/docs/AUTODISCOVERY_TEST.md +0 -182
  283. package/engine/docs/C4-ARCHITECTURE-operations.md +0 -396
  284. package/engine/docs/C4-ARCHITECTURE-overview.md +0 -284
  285. package/engine/docs/C4-ARCHITECTURE.md +0 -17
  286. package/engine/docs/GOLDEN_IMAGE_INTEGRATION.md +0 -349
  287. package/engine/docs/MANIFEST_DRIVEN_ARCHITECTURE.md +0 -357
  288. package/engine/docs/README.md +0 -284
  289. package/install.sh +0 -19
  290. package/knip.json +0 -10
  291. package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/.openspec.yaml +0 -2
  292. package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/design.md +0 -102
  293. package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/proposal.md +0 -31
  294. package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/specs/vscode-tdk-notifications/spec.md +0 -48
  295. package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/specs/vscode-tdk-orchestration/spec.md +0 -63
  296. package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/specs/vscode-tdk-troubleshooting/spec.md +0 -56
  297. package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/tasks.md +0 -61
  298. package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/.openspec.yaml +0 -2
  299. package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/design.md +0 -114
  300. package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/proposal.md +0 -32
  301. package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/specs/manifest-field-migration/spec.md +0 -20
  302. package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/specs/resource-terminology-standard/spec.md +0 -20
  303. package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/specs/stack-terminology-standard/spec.md +0 -20
  304. package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/tasks.md +0 -194
  305. package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/.openspec.yaml +0 -2
  306. package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/design.md +0 -111
  307. package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/proposal.md +0 -33
  308. package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/specs/function-naming-alignment/spec.md +0 -12
  309. package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/specs/optional-parameter-patterns/spec.md +0 -18
  310. package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/specs/parameter-documentation/spec.md +0 -16
  311. package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/specs/parameter-naming-consistency/spec.md +0 -12
  312. package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/specs/parameter-ordering-standard/spec.md +0 -12
  313. package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/tasks.md +0 -194
  314. package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/.openspec.yaml +0 -2
  315. package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/design.md +0 -84
  316. package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/proposal.md +0 -31
  317. package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/specs/codebase-audit/spec.md +0 -27
  318. package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/specs/dead-code-cleanup/spec.md +0 -27
  319. package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/specs/test-gap-fill/spec.md +0 -23
  320. package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/specs/todo-resolution/spec.md +0 -27
  321. package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/tasks.md +0 -39
  322. package/openspec/changes/archive/2026-06-25-landscape-consolidation/.openspec.yaml +0 -2
  323. package/openspec/changes/archive/2026-06-25-landscape-consolidation/design.md +0 -80
  324. package/openspec/changes/archive/2026-06-25-landscape-consolidation/proposal.md +0 -40
  325. package/openspec/changes/archive/2026-06-25-landscape-consolidation/spec.md +0 -52
  326. package/openspec/changes/archive/2026-06-25-landscape-consolidation/tasks.md +0 -51
  327. package/openspec/changes/archive/2026-09-17-fix-generated-stack-boot/.openspec.yaml +0 -2
  328. package/openspec/changes/archive/2026-09-17-fix-generated-stack-boot/design.md +0 -43
  329. package/openspec/changes/archive/2026-09-17-fix-generated-stack-boot/proposal.md +0 -29
  330. package/openspec/changes/archive/2026-09-17-fix-generated-stack-boot/specs/self-contained-generated-projects/spec.md +0 -67
  331. package/openspec/changes/archive/2026-09-17-fix-generated-stack-boot/tasks.md +0 -27
  332. package/openspec/changes/optimize-runtime-docker-layers/.openspec.yaml +0 -3
  333. package/openspec/changes/optimize-runtime-docker-layers/design.md +0 -81
  334. package/openspec/changes/optimize-runtime-docker-layers/proposal.md +0 -44
  335. package/openspec/changes/optimize-runtime-docker-layers/specs/runtime-container-footprint/spec.md +0 -79
  336. package/openspec/changes/optimize-runtime-docker-layers/tasks.md +0 -36
  337. package/openspec/changes/prioritized-cold-start/.openspec.yaml +0 -4
  338. package/openspec/changes/prioritized-cold-start/design.md +0 -137
  339. package/openspec/changes/prioritized-cold-start/proposal.md +0 -41
  340. package/openspec/changes/prioritized-cold-start/specs/on-demand-resource-startup/spec.md +0 -98
  341. package/openspec/changes/prioritized-cold-start/tasks.md +0 -69
  342. package/openspec/config.yaml +0 -1
  343. package/openspec/specs/manifest-field-migration/spec.md +0 -24
  344. package/openspec/specs/resource-terminology-standard/spec.md +0 -24
  345. package/openspec/specs/self-contained-generated-projects/spec.md +0 -67
  346. package/openspec/specs/stack-terminology-standard/spec.md +0 -24
  347. package/platform/services/platform/proxy/service.yaml +0 -14
  348. package/scripts/audit-codebase.sh +0 -213
  349. package/scripts/autoresearch/layer-eval.sh +0 -65
  350. package/scripts/benchmark/README.md +0 -25
  351. package/scripts/benchmark/container-scale.ts +0 -503
  352. package/scripts/benchmark/pre-release-gate.sh +0 -9
  353. package/scripts/install-git-hooks.sh +0 -14
  354. package/scripts/measure-idle-footprint.sh +0 -58
  355. package/scripts/record-demo.sh +0 -43
  356. package/scripts/release-binaries.sh +0 -97
  357. package/scripts/setup-pre-commit.sh +0 -33
  358. package/scripts/stage-npm-engine.sh +0 -36
  359. package/tests/tilt-engine/__init__.py +0 -5
  360. package/tests/tilt-engine/conftest.py +0 -182
  361. package/tests/tilt-engine/fixtures/appointment-frontend-service.json +0 -11
  362. package/tests/tilt-engine/fixtures/identity-backend-service.json +0 -12
  363. package/tests/tilt-engine/fixtures/invalid-service.json +0 -4
  364. package/tests/tilt-engine/test_agents_md_generator.py +0 -341
  365. package/tests/tilt-engine/test_agents_md_integration.py +0 -378
  366. package/tests/tilt-engine/test_cache_operations.py +0 -181
  367. package/tests/tilt-engine/test_cache_persistence.py +0 -142
  368. package/tests/tilt-engine/test_code_executor.py +0 -152
  369. package/tests/tilt-engine/test_code_viewer.py +0 -127
  370. package/tests/tilt-engine/test_compose_port_anchors.py +0 -310
  371. package/tests/tilt-engine/test_config_inspector.py +0 -162
  372. package/tests/tilt-engine/test_daemon_focus_mode.py +0 -89
  373. package/tests/tilt-engine/test_daemon_polling.py +0 -122
  374. package/tests/tilt-engine/test_daemon_registration.py +0 -115
  375. package/tests/tilt-engine/test_daemon_validation.py +0 -107
  376. package/tests/tilt-engine/test_docker_generator_bugs.py +0 -493
  377. package/tests/tilt-engine/test_docker_prune.py +0 -119
  378. package/tests/tilt-engine/test_dockerignore_path_bug.py +0 -82
  379. package/tests/tilt-engine/test_file_browser.py +0 -193
  380. package/tests/tilt-engine/test_frontend_basepath_manifest.py +0 -27
  381. package/tests/tilt-engine/test_health_dependencies.py +0 -130
  382. package/tests/tilt-engine/test_health_endpoints.py +0 -118
  383. package/tests/tilt-engine/test_health_tilt_ui.py +0 -85
  384. package/tests/tilt-engine/test_runtime_container_footprint.py +0 -162
  385. package/tests/tilt-engine/test_sablier_defer_start.py +0 -237
  386. package/tests/tilt-engine/test_safety_aliases.py +0 -84
  387. package/tests/tilt-engine/test_snapshot_diff.py +0 -136
  388. package/tests/tilt-engine/test_snapshot_persistence.py +0 -163
  389. package/tests/tilt-engine/test_snapshot_scanning.py +0 -123
  390. package/tests/tilt-engine/test_standalone_project_boot.py +0 -61
  391. package/tests/tilt-engine/test_standalone_traefik.py +0 -160
  392. 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
- };