@tdk-landscape/tdk-cli-core 1.3.14

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 (212) hide show
  1. package/README.md +293 -0
  2. package/bin/tdk.js +14 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +64 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/completion.d.ts +3 -0
  8. package/dist/commands/completion.d.ts.map +1 -0
  9. package/dist/commands/completion.js +294 -0
  10. package/dist/commands/completion.js.map +1 -0
  11. package/dist/commands/config.d.ts +3 -0
  12. package/dist/commands/config.d.ts.map +1 -0
  13. package/dist/commands/config.js +220 -0
  14. package/dist/commands/config.js.map +1 -0
  15. package/dist/commands/doctor.d.ts +3 -0
  16. package/dist/commands/doctor.d.ts.map +1 -0
  17. package/dist/commands/doctor.js +176 -0
  18. package/dist/commands/doctor.js.map +1 -0
  19. package/dist/commands/down.d.ts +3 -0
  20. package/dist/commands/down.d.ts.map +1 -0
  21. package/dist/commands/down.js +32 -0
  22. package/dist/commands/down.js.map +1 -0
  23. package/dist/commands/help.d.ts +2 -0
  24. package/dist/commands/help.d.ts.map +1 -0
  25. package/dist/commands/help.js +130 -0
  26. package/dist/commands/help.js.map +1 -0
  27. package/dist/commands/networks.d.ts +3 -0
  28. package/dist/commands/networks.d.ts.map +1 -0
  29. package/dist/commands/networks.js +260 -0
  30. package/dist/commands/networks.js.map +1 -0
  31. package/dist/commands/project.d.ts +3 -0
  32. package/dist/commands/project.d.ts.map +1 -0
  33. package/dist/commands/project.js +360 -0
  34. package/dist/commands/project.js.map +1 -0
  35. package/dist/commands/projects.d.ts +3 -0
  36. package/dist/commands/projects.d.ts.map +1 -0
  37. package/dist/commands/projects.js +71 -0
  38. package/dist/commands/projects.js.map +1 -0
  39. package/dist/commands/resource.d.ts +69 -0
  40. package/dist/commands/resource.d.ts.map +1 -0
  41. package/dist/commands/resource.js +572 -0
  42. package/dist/commands/resource.js.map +1 -0
  43. package/dist/commands/resources.d.ts +3 -0
  44. package/dist/commands/resources.d.ts.map +1 -0
  45. package/dist/commands/resources.js +73 -0
  46. package/dist/commands/resources.js.map +1 -0
  47. package/dist/commands/stack.d.ts +3 -0
  48. package/dist/commands/stack.d.ts.map +1 -0
  49. package/dist/commands/stack.js +103 -0
  50. package/dist/commands/stack.js.map +1 -0
  51. package/dist/commands/stacks.d.ts +3 -0
  52. package/dist/commands/stacks.d.ts.map +1 -0
  53. package/dist/commands/stacks.js +43 -0
  54. package/dist/commands/stacks.js.map +1 -0
  55. package/dist/commands/status.d.ts +3 -0
  56. package/dist/commands/status.d.ts.map +1 -0
  57. package/dist/commands/status.js +71 -0
  58. package/dist/commands/status.js.map +1 -0
  59. package/dist/commands/ui.d.ts +3 -0
  60. package/dist/commands/ui.d.ts.map +1 -0
  61. package/dist/commands/ui.js +446 -0
  62. package/dist/commands/ui.js.map +1 -0
  63. package/dist/commands/up.d.ts +3 -0
  64. package/dist/commands/up.d.ts.map +1 -0
  65. package/dist/commands/up.js +149 -0
  66. package/dist/commands/up.js.map +1 -0
  67. package/dist/commands/upgrade.d.ts +3 -0
  68. package/dist/commands/upgrade.d.ts.map +1 -0
  69. package/dist/commands/upgrade.js +454 -0
  70. package/dist/commands/upgrade.js.map +1 -0
  71. package/dist/commands/version.d.ts +3 -0
  72. package/dist/commands/version.d.ts.map +1 -0
  73. package/dist/commands/version.js +9 -0
  74. package/dist/commands/version.js.map +1 -0
  75. package/dist/components/Accessible.d.ts +8 -0
  76. package/dist/components/Accessible.d.ts.map +1 -0
  77. package/dist/components/Accessible.js +10 -0
  78. package/dist/components/Accessible.js.map +1 -0
  79. package/dist/components/BaseTooltip.d.ts +4 -0
  80. package/dist/components/BaseTooltip.d.ts.map +1 -0
  81. package/dist/components/BaseTooltip.js +28 -0
  82. package/dist/components/BaseTooltip.js.map +1 -0
  83. package/dist/components/DetailPanel.d.ts +4 -0
  84. package/dist/components/DetailPanel.d.ts.map +1 -0
  85. package/dist/components/DetailPanel.js +18 -0
  86. package/dist/components/DetailPanel.js.map +1 -0
  87. package/dist/components/FileTree.d.ts +4 -0
  88. package/dist/components/FileTree.d.ts.map +1 -0
  89. package/dist/components/FileTree.js +47 -0
  90. package/dist/components/FileTree.js.map +1 -0
  91. package/dist/components/ResourceSelectInput.d.ts +4 -0
  92. package/dist/components/ResourceSelectInput.d.ts.map +1 -0
  93. package/dist/components/ResourceSelectInput.js +7 -0
  94. package/dist/components/ResourceSelectInput.js.map +1 -0
  95. package/dist/components/ResourceTable.d.ts +4 -0
  96. package/dist/components/ResourceTable.d.ts.map +1 -0
  97. package/dist/components/ResourceTable.js +18 -0
  98. package/dist/components/ResourceTable.js.map +1 -0
  99. package/dist/components/TabBar.d.ts +4 -0
  100. package/dist/components/TabBar.d.ts.map +1 -0
  101. package/dist/components/TabBar.js +17 -0
  102. package/dist/components/TabBar.js.map +1 -0
  103. package/dist/components/Tooltip.d.ts +12 -0
  104. package/dist/components/Tooltip.d.ts.map +1 -0
  105. package/dist/components/Tooltip.js +12 -0
  106. package/dist/components/Tooltip.js.map +1 -0
  107. package/dist/components/index.d.ts +8 -0
  108. package/dist/components/index.d.ts.map +1 -0
  109. package/dist/components/index.js +8 -0
  110. package/dist/components/index.js.map +1 -0
  111. package/dist/config/platform-standards.d.ts +159 -0
  112. package/dist/config/platform-standards.d.ts.map +1 -0
  113. package/dist/config/platform-standards.js +181 -0
  114. package/dist/config/platform-standards.js.map +1 -0
  115. package/dist/generator/extension-fetch.d.ts +9 -0
  116. package/dist/generator/extension-fetch.d.ts.map +1 -0
  117. package/dist/generator/extension-fetch.js +153 -0
  118. package/dist/generator/extension-fetch.js.map +1 -0
  119. package/dist/generator/template-engine.d.ts +60 -0
  120. package/dist/generator/template-engine.d.ts.map +1 -0
  121. package/dist/generator/template-engine.js +416 -0
  122. package/dist/generator/template-engine.js.map +1 -0
  123. package/dist/index.d.ts +11 -0
  124. package/dist/index.d.ts.map +1 -0
  125. package/dist/index.js +11 -0
  126. package/dist/index.js.map +1 -0
  127. package/dist/types/index.d.ts +236 -0
  128. package/dist/types/index.d.ts.map +1 -0
  129. package/dist/types/index.js +17 -0
  130. package/dist/types/index.js.map +1 -0
  131. package/dist/utils/cache.d.ts +19 -0
  132. package/dist/utils/cache.d.ts.map +1 -0
  133. package/dist/utils/cache.js +64 -0
  134. package/dist/utils/cache.js.map +1 -0
  135. package/dist/utils/command-helpers.d.ts +17 -0
  136. package/dist/utils/command-helpers.d.ts.map +1 -0
  137. package/dist/utils/command-helpers.js +48 -0
  138. package/dist/utils/command-helpers.js.map +1 -0
  139. package/dist/utils/constants.d.ts +50 -0
  140. package/dist/utils/constants.d.ts.map +1 -0
  141. package/dist/utils/constants.js +100 -0
  142. package/dist/utils/constants.js.map +1 -0
  143. package/dist/utils/discovery-context.d.ts +4 -0
  144. package/dist/utils/discovery-context.d.ts.map +1 -0
  145. package/dist/utils/discovery-context.js +39 -0
  146. package/dist/utils/discovery-context.js.map +1 -0
  147. package/dist/utils/docker.d.ts +3 -0
  148. package/dist/utils/docker.d.ts.map +1 -0
  149. package/dist/utils/docker.js +13 -0
  150. package/dist/utils/docker.js.map +1 -0
  151. package/dist/utils/env-validator.d.ts +15 -0
  152. package/dist/utils/env-validator.d.ts.map +1 -0
  153. package/dist/utils/env-validator.js +95 -0
  154. package/dist/utils/env-validator.js.map +1 -0
  155. package/dist/utils/errors.d.ts +28 -0
  156. package/dist/utils/errors.d.ts.map +1 -0
  157. package/dist/utils/errors.js +127 -0
  158. package/dist/utils/errors.js.map +1 -0
  159. package/dist/utils/file-helpers.d.ts +14 -0
  160. package/dist/utils/file-helpers.d.ts.map +1 -0
  161. package/dist/utils/file-helpers.js +45 -0
  162. package/dist/utils/file-helpers.js.map +1 -0
  163. package/dist/utils/formatting.d.ts +30 -0
  164. package/dist/utils/formatting.d.ts.map +1 -0
  165. package/dist/utils/formatting.js +164 -0
  166. package/dist/utils/formatting.js.map +1 -0
  167. package/dist/utils/paths.d.ts +3 -0
  168. package/dist/utils/paths.d.ts.map +1 -0
  169. package/dist/utils/paths.js +41 -0
  170. package/dist/utils/paths.js.map +1 -0
  171. package/dist/utils/port-assignment.d.ts +6 -0
  172. package/dist/utils/port-assignment.d.ts.map +1 -0
  173. package/dist/utils/port-assignment.js +75 -0
  174. package/dist/utils/port-assignment.js.map +1 -0
  175. package/dist/utils/project-features.d.ts +23 -0
  176. package/dist/utils/project-features.d.ts.map +1 -0
  177. package/dist/utils/project-features.js +98 -0
  178. package/dist/utils/project-features.js.map +1 -0
  179. package/dist/utils/project-templates.d.ts +7 -0
  180. package/dist/utils/project-templates.d.ts.map +1 -0
  181. package/dist/utils/project-templates.js +24 -0
  182. package/dist/utils/project-templates.js.map +1 -0
  183. package/dist/utils/resource-features.d.ts +28 -0
  184. package/dist/utils/resource-features.d.ts.map +1 -0
  185. package/dist/utils/resource-features.js +148 -0
  186. package/dist/utils/resource-features.js.map +1 -0
  187. package/dist/utils/services.d.ts +18 -0
  188. package/dist/utils/services.d.ts.map +1 -0
  189. package/dist/utils/services.js +291 -0
  190. package/dist/utils/services.js.map +1 -0
  191. package/dist/utils/stack-features.d.ts +22 -0
  192. package/dist/utils/stack-features.d.ts.map +1 -0
  193. package/dist/utils/stack-features.js +13 -0
  194. package/dist/utils/stack-features.js.map +1 -0
  195. package/dist/utils/tar.d.ts +7 -0
  196. package/dist/utils/tar.d.ts.map +1 -0
  197. package/dist/utils/tar.js +21 -0
  198. package/dist/utils/tar.js.map +1 -0
  199. package/dist/utils/tilt.d.ts +18 -0
  200. package/dist/utils/tilt.d.ts.map +1 -0
  201. package/dist/utils/tilt.js +77 -0
  202. package/dist/utils/tilt.js.map +1 -0
  203. package/dist/utils/validation.d.ts +9 -0
  204. package/dist/utils/validation.d.ts.map +1 -0
  205. package/dist/utils/validation.js +49 -0
  206. package/dist/utils/validation.js.map +1 -0
  207. package/package.json +72 -0
  208. package/templates/.tiltignore.hbs +73 -0
  209. package/templates/TILT_RESOURCE_DEFAULTS.star.hbs +221 -0
  210. package/templates/TILT_TECH_STACK.star.hbs +150 -0
  211. package/templates/Tiltfile.hbs +295 -0
  212. package/templates/spec.master.hbs +186 -0
@@ -0,0 +1,416 @@
1
+ import * as fs from "node:fs";
2
+ import * as path from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ import Handlebars from "handlebars";
5
+ import { PLATFORM_STANDARDS } from "../config/platform-standards.js";
6
+ import { writeTextFile } from "../utils/file-helpers.js";
7
+ import { isStackFeatureEnabledInStacks } from "../utils/stack-features.js";
8
+ const __filename = fileURLToPath(import.meta.url);
9
+ const __dirname = path.dirname(__filename);
10
+ const templatesDir = path.join(__dirname, "..", "..", "templates");
11
+ const tiltResourceDefaultsTemplate = fs.readFileSync(path.join(templatesDir, "TILT_RESOURCE_DEFAULTS.star.hbs"), "utf-8");
12
+ const tiltTechStackTemplate = fs.readFileSync(path.join(templatesDir, "TILT_TECH_STACK.star.hbs"), "utf-8");
13
+ const tiltfileTemplate = fs.readFileSync(path.join(templatesDir, "Tiltfile.hbs"), "utf-8");
14
+ const tiltignoreTemplate = fs.readFileSync(path.join(templatesDir, ".tiltignore.hbs"), "utf-8");
15
+ const specMasterTemplate = fs.readFileSync(path.join(templatesDir, "spec.master.hbs"), "utf-8");
16
+ // Generic resource descriptions - no hardcoded service names
17
+ // Users define their own service descriptions in project.json
18
+ const RESOURCE_DESCRIPTIONS = {
19
+ proxy: "Traefik reverse proxy",
20
+ verdaccio: "Private npm registry",
21
+ "database-management": "PostgreSQL database",
22
+ };
23
+ const INFRA_DESCRIPTIONS = {
24
+ monitoring: "Signoz, SkyWalking (RAM intensive)",
25
+ elk: "Elasticsearch/Logstash/Kibana",
26
+ debezium: "CDC with Kafka/Zookeeper",
27
+ golden_image: "Golden image rebuild (one-time)",
28
+ verdaccio: "Premium local npm registry",
29
+ };
30
+ /**
31
+ * List of all files generated by the template engine.
32
+ * Used for iteration and type-safe access to generated content.
33
+ */
34
+ const ALL_GENERATED_FILES = [
35
+ "TILT_TECH_STACK.star",
36
+ "TILT_RESOURCE_DEFAULTS.star",
37
+ "spec.master",
38
+ "Tiltfile",
39
+ ".tiltignore",
40
+ ];
41
+ const EMBEDDED_TEMPLATES = {
42
+ ".tiltignore": tiltignoreTemplate,
43
+ "TILT_RESOURCE_DEFAULTS.star": tiltResourceDefaultsTemplate,
44
+ "TILT_TECH_STACK.star": tiltTechStackTemplate,
45
+ Tiltfile: tiltfileTemplate,
46
+ "spec.master": specMasterTemplate,
47
+ };
48
+ export class TemplateEngine {
49
+ templatesDir;
50
+ constructor(templatesDir) {
51
+ const currentDir = import.meta.dirname || path.dirname(new URL(import.meta.url).pathname);
52
+ this.templatesDir = templatesDir || path.join(currentDir, "..", "..", "templates");
53
+ this.registerHelpers();
54
+ }
55
+ formatStarlarkValue(val) {
56
+ if (val === null || val === undefined) {
57
+ return "None";
58
+ }
59
+ if (typeof val === "string") {
60
+ return `"${val.replace(/"/g, '\\"')}"`;
61
+ }
62
+ if (typeof val === "boolean") {
63
+ return val ? "True" : "False";
64
+ }
65
+ if (typeof val === "number") {
66
+ return String(val);
67
+ }
68
+ if (Array.isArray(val)) {
69
+ const items = val.map((item) => this.formatStarlarkValue(item));
70
+ return `[${items.join(", ")}]`;
71
+ }
72
+ if (typeof val === "object") {
73
+ const entries = Object.entries(val).map(([key, v]) => {
74
+ return `"${key}": ${this.formatStarlarkValue(v)}`;
75
+ });
76
+ return `{${entries.join(", ")}}`;
77
+ }
78
+ return String(val);
79
+ }
80
+ registerHelpers() {
81
+ Handlebars.registerHelper("starlark", (value) => {
82
+ return new Handlebars.SafeString(this.formatStarlarkValue(value));
83
+ });
84
+ Handlebars.registerHelper("starlarkArray", (value) => {
85
+ if (!Array.isArray(value))
86
+ return new Handlebars.SafeString("[]");
87
+ const items = value.map((item) => this.formatStarlarkValue(item));
88
+ return new Handlebars.SafeString(`[${items.join(", ")}]`);
89
+ });
90
+ Handlebars.registerHelper("json", (value) => {
91
+ return JSON.stringify(value);
92
+ });
93
+ }
94
+ buildContext(projectConfig) {
95
+ return {
96
+ version: PLATFORM_STANDARDS.version,
97
+ timestamp: new Date().toISOString(),
98
+ tech: PLATFORM_STANDARDS.tech,
99
+ ports: PLATFORM_STANDARDS.ports,
100
+ health: PLATFORM_STANDARDS.health,
101
+ naming: PLATFORM_STANDARDS.naming,
102
+ traefik: PLATFORM_STANDARDS.traefik,
103
+ filewatchIgnores: [...PLATFORM_STANDARDS.filewatchIgnores],
104
+ serviceTypes: PLATFORM_STANDARDS.serviceTypes,
105
+ paths: PLATFORM_STANDARDS.paths,
106
+ discovery: {
107
+ scanIntervalSeconds: PLATFORM_STANDARDS.discovery.scanIntervalSeconds,
108
+ maxManifestsPerRoot: PLATFORM_STANDARDS.discovery.maxManifestsPerRoot,
109
+ paths: projectConfig.discovery.paths,
110
+ },
111
+ docker: PLATFORM_STANDARDS.docker,
112
+ runtime: PLATFORM_STANDARDS.runtime,
113
+ project: projectConfig.project,
114
+ stacks: projectConfig.stacks,
115
+ alwaysEnabledInfra: projectConfig.always_enabled_infra ?? [
116
+ "database-management",
117
+ "proxy",
118
+ "infisical",
119
+ ],
120
+ optionalInfra: projectConfig.optional_infra,
121
+ serviceDescriptions: RESOURCE_DESCRIPTIONS,
122
+ infraDescriptions: INFRA_DESCRIPTIONS,
123
+ };
124
+ }
125
+ loadTemplate(templateName) {
126
+ const templatePath = path.join(this.templatesDir, `${templateName}.hbs`);
127
+ const templateSource = fs.existsSync(templatePath)
128
+ ? fs.readFileSync(templatePath, "utf-8")
129
+ : EMBEDDED_TEMPLATES[templateName];
130
+ if (!templateSource) {
131
+ throw new Error(`Template not found: ${templatePath}`);
132
+ }
133
+ return Handlebars.compile(templateSource);
134
+ }
135
+ generateTechStack(context) {
136
+ const template = this.loadTemplate("TILT_TECH_STACK.star");
137
+ return template(context);
138
+ }
139
+ generateServiceDefaults(context) {
140
+ const template = this.loadTemplate("TILT_RESOURCE_DEFAULTS.star");
141
+ return template(context);
142
+ }
143
+ generateSpecMaster(context) {
144
+ const template = this.loadTemplate("spec.master");
145
+ return template(context);
146
+ }
147
+ generateTiltfile(context) {
148
+ const template = this.loadTemplate("Tiltfile");
149
+ return template(context);
150
+ }
151
+ generateTiltIgnore(context) {
152
+ const template = this.loadTemplate(".tiltignore");
153
+ return template(context);
154
+ }
155
+ generateAll(projectConfig) {
156
+ const context = this.buildContext(projectConfig);
157
+ return {
158
+ "TILT_TECH_STACK.star": this.generateTechStack(context),
159
+ "TILT_RESOURCE_DEFAULTS.star": this.generateServiceDefaults(context),
160
+ "spec.master": this.generateSpecMaster(context),
161
+ Tiltfile: this.generateTiltfile(context),
162
+ ".tiltignore": this.generateTiltIgnore(context),
163
+ };
164
+ }
165
+ }
166
+ function toComposeProjectName(projectName) {
167
+ return projectName.replace(/-/g, "_");
168
+ }
169
+ export function generateDatabaseManagementCompose(projectConfig) {
170
+ const name = toComposeProjectName(projectConfig.project.name || "tdk_project");
171
+ return `###############################################################################
172
+ # SYSTEM-GENERATED - DO NOT EDIT
173
+ # Stack feature: database-management
174
+ # Source: .tdk/project.json stacks.*.services includes "database-management"
175
+ ###############################################################################
176
+
177
+ services:
178
+ postgres:
179
+ image: postgres:16-alpine
180
+ container_name: ${name}_postgres
181
+ restart: unless-stopped
182
+ environment:
183
+ POSTGRES_USER: ${name}
184
+ POSTGRES_PASSWORD: \${DB_PASSWORD}
185
+ POSTGRES_DB: postgres
186
+ ports:
187
+ - "5432:5432"
188
+ volumes:
189
+ - ${name}_postgres_data:/var/lib/postgresql/data
190
+ networks:
191
+ - database
192
+ healthcheck:
193
+ test: ["CMD-SHELL", "pg_isready -U ${name} -d postgres"]
194
+ interval: 5s
195
+ timeout: 5s
196
+ retries: 20
197
+
198
+ networks:
199
+ database:
200
+ name: ${name}_database
201
+ external: true
202
+
203
+ volumes:
204
+ ${name}_postgres_data:
205
+ `;
206
+ }
207
+ /**
208
+ * Type guard to validate if an unknown value is a valid ProjectConfig.
209
+ *
210
+ * NOTE: The `as` assertions below are INTENTIONAL and SAFE:
211
+ * - We've already verified `typeof value === 'object'` and `value !== null`
212
+ * - TypeScript doesn't automatically narrow `{}` to `Record<string, unknown>`
213
+ * - Each assertion is immediately followed by property type checks
214
+ * - This pattern is standard for deep object validation in type guards
215
+ */
216
+ function isProjectConfig(value) {
217
+ if (!value || typeof value !== "object") {
218
+ return false;
219
+ }
220
+ // Safe to assert as Record after null and object type checks
221
+ const config = value;
222
+ if (typeof config.version !== "string") {
223
+ return false;
224
+ }
225
+ if (!config.project || typeof config.project !== "object") {
226
+ return false;
227
+ }
228
+ const project = config.project;
229
+ if (typeof project.name !== "string" || typeof project.version !== "string") {
230
+ return false;
231
+ }
232
+ if (!config.stacks || typeof config.stacks !== "object") {
233
+ return false;
234
+ }
235
+ const stacks = config.stacks;
236
+ if (typeof stacks.pre_alpha !== "object" ||
237
+ typeof stacks.alpha !== "object" ||
238
+ typeof stacks.beta !== "object" ||
239
+ typeof stacks.out_of_scope !== "object") {
240
+ return false;
241
+ }
242
+ if (!config.optional_infra || typeof config.optional_infra !== "object") {
243
+ return false;
244
+ }
245
+ const optionalInfra = config.optional_infra;
246
+ if (typeof optionalInfra.monitoring !== "boolean" ||
247
+ typeof optionalInfra.elk !== "boolean" ||
248
+ typeof optionalInfra.debezium !== "boolean" ||
249
+ typeof optionalInfra.golden_image !== "boolean" ||
250
+ typeof optionalInfra.verdaccio !== "boolean") {
251
+ return false;
252
+ }
253
+ if (!config.discovery || typeof config.discovery !== "object") {
254
+ return false;
255
+ }
256
+ const discovery = config.discovery;
257
+ if (!Array.isArray(discovery.paths)) {
258
+ return false;
259
+ }
260
+ return true;
261
+ }
262
+ export function readProjectConfig(projectRoot) {
263
+ const projectJsonPath = path.join(projectRoot, ".tdk", "project.json");
264
+ if (!fs.existsSync(projectJsonPath)) {
265
+ throw new Error(`Project config not found: ${projectJsonPath}. Run 'tdk project init' first.`);
266
+ }
267
+ const jsonContent = fs.readFileSync(projectJsonPath, "utf-8");
268
+ const parsed = JSON.parse(jsonContent);
269
+ if (!isProjectConfig(parsed)) {
270
+ throw new Error("Invalid project.json: missing or invalid required fields. " +
271
+ "Expected: version (string), project (object with name/version), " +
272
+ "stacks (object with pre_alpha/alpha/beta/out_of_scope), " +
273
+ "optional_infra (object with boolean flags), " +
274
+ "discovery (object with paths array)");
275
+ }
276
+ return parsed;
277
+ }
278
+ export async function generateMasterConfigs(projectRoot) {
279
+ const projectConfig = readProjectConfig(projectRoot);
280
+ const outputDir = path.join(projectRoot, ".tdk", ".tdk-out");
281
+ if (!fs.existsSync(outputDir)) {
282
+ fs.mkdirSync(outputDir, { recursive: true });
283
+ }
284
+ const engine = new TemplateEngine();
285
+ const files = engine.generateAll(projectConfig);
286
+ for (const filename of ALL_GENERATED_FILES) {
287
+ const content = files[filename];
288
+ const filePath = path.join(outputDir, filename);
289
+ writeTextFile(filePath, content);
290
+ console.log(`✓ Generated: .tdk/.tdk-out/${filename}`);
291
+ }
292
+ if (isStackFeatureEnabledInStacks(projectConfig.stacks, "database-management")) {
293
+ const composeDir = path.join(projectRoot, "services", "platform", "database-management");
294
+ fs.mkdirSync(composeDir, { recursive: true });
295
+ const composePath = path.join(composeDir, "docker-compose.yml");
296
+ writeTextFile(composePath, generateDatabaseManagementCompose(projectConfig));
297
+ console.log("✓ Generated: services/platform/database-management/docker-compose.yml");
298
+ }
299
+ // Copy .tiltignore to project root so Tilt uses it
300
+ const tiltignoreSource = path.join(outputDir, ".tiltignore");
301
+ const tiltignoreTarget = path.join(projectRoot, ".tiltignore");
302
+ if (fs.existsSync(tiltignoreSource)) {
303
+ fs.copyFileSync(tiltignoreSource, tiltignoreTarget);
304
+ console.log(`✓ Copied: .tiltignore → project root`);
305
+ }
306
+ await vendorTdkExtension(projectRoot);
307
+ console.log("");
308
+ console.log("💡 To start Tilt: tdk up");
309
+ }
310
+ // The generated Tiltfile loads the TDK Tilt extension (engine, discovery,
311
+ // specs, ext starlark modules). The extension repo may stay private, so we
312
+ // vendor a working copy into .tdk/.tdk-out/tdk-cli-ext/ at generation time.
313
+ // This makes `tdk up` work offline and on any machine - no hardcoded paths,
314
+ // no dependency on a private GitHub repo.
315
+ const TDK_EXTENSION_DIRS = ["engine", "discovery", "specs", "ext"];
316
+ // Walk up from this module's own location looking for a directory that has
317
+ // both Tiltfile and engine/ next to it - true when cli/ and engine/ ship
318
+ // together in the same repo (the public tdk-cli-core layout, where a plain
319
+ // `git clone` + `bun run` needs zero extra config to find the engine).
320
+ function findSelfContainedEngineRoot() {
321
+ let dir = import.meta.dirname || process.cwd();
322
+ for (let i = 0; i < 6; i++) {
323
+ if (fs.existsSync(path.join(dir, "Tiltfile")) && fs.existsSync(path.join(dir, "engine"))) {
324
+ return dir;
325
+ }
326
+ const parent = path.dirname(dir);
327
+ if (parent === dir)
328
+ break;
329
+ dir = parent;
330
+ }
331
+ return null;
332
+ }
333
+ async function vendorTdkExtension(projectRoot) {
334
+ const outputDir = path.join(projectRoot, ".tdk", ".tdk-out");
335
+ const vendoredDir = path.join(outputDir, "tdk-cli-ext");
336
+ // Source resolution order:
337
+ // 1. $TDK_EXTENSION_SOURCE (explicit override)
338
+ // 2. Self-contained repo (engine/ ships next to cli/ - public tdk-cli-core)
339
+ // 3. Executable-adjacent checkout (bundled installs)
340
+ // 4. Relative ../tdk-cli sibling (monorepo maintainer layout)
341
+ let sources = [];
342
+ if (process.env.TDK_EXTENSION_SOURCE) {
343
+ sources.push(process.env.TDK_EXTENSION_SOURCE);
344
+ }
345
+ const selfContainedRoot = findSelfContainedEngineRoot();
346
+ if (selfContainedRoot) {
347
+ sources.push(selfContainedRoot);
348
+ }
349
+ // process.execPath is the compiled binary's own path when running as a
350
+ // standalone executable (what we actually need here). In dev mode it's
351
+ // the bun CLI's own path instead (e.g. ~/.bun/bin/bun) - harmless, that
352
+ // candidate just won't match anything and falls through to the next
353
+ // one. Note: process.executablePath is not a real property on Node or
354
+ // Bun's process object - it was always undefined, silently falling
355
+ // back to cwd() instead of the binary's real location.
356
+ const exeDir = path.dirname(process.execPath);
357
+ sources.push(path.join(exeDir, "tdk-cli"));
358
+ sources.push(path.join(projectRoot, "..", "tdk-cli"));
359
+ let sourceRoot = "";
360
+ for (const candidate of sources) {
361
+ if (candidate &&
362
+ fs.existsSync(path.join(candidate, "Tiltfile")) &&
363
+ fs.existsSync(path.join(candidate, "engine"))) {
364
+ sourceRoot = candidate;
365
+ break;
366
+ }
367
+ }
368
+ if (!sourceRoot) {
369
+ console.warn("⚠️ TDK extension not found - set TDK_EXTENSION_SOURCE to its checkout path " +
370
+ "and re-run `tdk project` (or `tdk config regenerate`) to vendor it before `tdk up`.");
371
+ return;
372
+ }
373
+ if (!fs.existsSync(vendoredDir)) {
374
+ fs.mkdirSync(vendoredDir, { recursive: true });
375
+ }
376
+ fs.copyFileSync(path.join(sourceRoot, "Tiltfile"), path.join(vendoredDir, "Tiltfile"));
377
+ for (const dir of TDK_EXTENSION_DIRS) {
378
+ fs.cpSync(path.join(sourceRoot, dir), path.join(vendoredDir, dir), {
379
+ recursive: true,
380
+ });
381
+ }
382
+ console.log(`✓ Vendored TDK extension → .tdk/.tdk-out/tdk-cli-ext/`);
383
+ // Best-effort: if TDK_LICENSE_KEY is set and grants any paid resource,
384
+ // overlay the premium bundle over the stub files just vendored above.
385
+ // No-ops silently (beyond a warning) if there's no key, the fetch
386
+ // fails, or nothing's granted - the free engine already works fine on
387
+ // its own.
388
+ try {
389
+ const { applyPremiumOverlay } = await import("./extension-fetch.js");
390
+ await applyPremiumOverlay(projectRoot, vendoredDir);
391
+ }
392
+ catch (err) {
393
+ console.warn(`⚠️ Premium overlay skipped: ${err.message}`);
394
+ }
395
+ }
396
+ export function verifyMasterConfigs(projectRoot) {
397
+ const errors = [];
398
+ const projectConfig = readProjectConfig(projectRoot);
399
+ const engine = new TemplateEngine();
400
+ const expectedFiles = engine.generateAll(projectConfig);
401
+ const outputDir = path.join(projectRoot, ".tdk", ".tdk-out");
402
+ for (const filename of ALL_GENERATED_FILES) {
403
+ const expectedContent = expectedFiles[filename];
404
+ const filePath = path.join(outputDir, filename);
405
+ if (!fs.existsSync(filePath)) {
406
+ errors.push(`Missing file: .tdk/.tdk-out/${filename}`);
407
+ continue;
408
+ }
409
+ const actualContent = fs.readFileSync(filePath, "utf-8");
410
+ if (actualContent !== expectedContent) {
411
+ errors.push(`Out of sync: .tdk/.tdk-out/${filename} (run 'tdk config regenerate')`);
412
+ }
413
+ }
414
+ return { valid: errors.length === 0, errors };
415
+ }
416
+ //# sourceMappingURL=template-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-engine.js","sourceRoot":"","sources":["../../src/generator/template-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export type { AutogeneratedFile, BaseTooltipProps, CheckResult, CreatableResourceType, DetailPanelProps, DiscoveredResource, DiscoveredStack, DiscoveryContext, ErrorScreenProps, FileGenerationTask, FileNode, FileTreeProps, FileType, HelpPanelProps, JsonArray, JsonObject, JsonValue, LoadingScreenProps, ProjectConfig, ProjectDiscovery, ProjectOptionalInfra, ProjectStackDefinition, ResourceConfig, ResourceFileType, ResourceMetadata, ResourceSelectInputProps, ResourceStatus, ResourceTableProps, ResourceType, SelectItem, ServiceUrl, StackHealthStatus, StackMetadata, StatusCategory, StatusValue, Tab, TabBarProps, TabId, TiltBuildStatus, TiltCommandResult, TiltResourceStatus, TiltRuntimeStatus, TooltipProps, ValidationResult, } from "./types/index.js";
2
+ export { CREATABLE_RESOURCE_TYPES, isCreatableResourceType, } from "./types/index.js";
3
+ export { Cache, createCacheValidator, } from "./utils/cache.js";
4
+ export { assertValid, confirmAction, confirmOrCancel, handleDryRun, } from "./utils/command-helpers.js";
5
+ export { createDiscoveryContext } from "./utils/discovery-context.js";
6
+ export { writeFilesWithProgress } from "./utils/file-helpers.js";
7
+ export { findProjectRoot } from "./utils/paths.js";
8
+ export { checkPortStatus, findAvailablePort, } from "./utils/port-assignment.js";
9
+ export { clearMetadataCache, discoverResources, discoverStacks, getAllStacks, getResourceMetadata, getResourcesForStack, getStackMetadata, stackExists, } from "./utils/services.js";
10
+ export { buildTiltDownArgs, buildTiltUpArgs, getTiltfilePath, isTiltAvailable, runTilt, } from "./utils/tilt.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,cAAc,EACd,SAAS,EACT,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACxB,cAAc,EACd,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,WAAW,EACX,GAAG,EACH,WAAW,EACX,KAAK,EACL,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,EACL,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,WAAW,EACX,aAAa,EACb,eAAe,EACf,YAAY,GACb,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EACL,eAAe,EACf,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,eAAe,EACf,OAAO,GACR,MAAM,iBAAiB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,11 @@
1
+ export { CREATABLE_RESOURCE_TYPES, isCreatableResourceType, } from "./types/index.js";
2
+ export { Cache, createCacheValidator, } from "./utils/cache.js";
3
+ export { assertValid, confirmAction, confirmOrCancel, handleDryRun, } from "./utils/command-helpers.js";
4
+ // Re-export discovery-context functions for resources-by-stack operations
5
+ export { createDiscoveryContext } from "./utils/discovery-context.js";
6
+ export { writeFilesWithProgress } from "./utils/file-helpers.js";
7
+ export { findProjectRoot } from "./utils/paths.js";
8
+ export { checkPortStatus, findAvailablePort, } from "./utils/port-assignment.js";
9
+ export { clearMetadataCache, discoverResources, discoverStacks, getAllStacks, getResourceMetadata, getResourcesForStack, getStackMetadata, stackExists, } from "./utils/services.js";
10
+ export { buildTiltDownArgs, buildTiltUpArgs, getTiltfilePath, isTiltAvailable, runTilt, } from "./utils/tilt.js";
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA+CA,OAAO,EACL,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,EACL,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,WAAW,EACX,aAAa,EACb,eAAe,EACf,YAAY,GACb,MAAM,4BAA4B,CAAC;AACpC,0EAA0E;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EACL,eAAe,EACf,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,eAAe,EACf,OAAO,GACR,MAAM,iBAAiB,CAAC"}