@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,181 @@
1
+ import { PORT_RANGES, STANDARD_PORTS } from "../utils/constants.js";
2
+ const PLATFORM_VERSION = "1.0.0";
3
+ const TECH_STACK = {
4
+ runtime: "bun",
5
+ bundler: "vite",
6
+ language: "typescript",
7
+ framework: "hono",
8
+ database: "postgresql",
9
+ orm: "prisma",
10
+ messaging: "nats",
11
+ linting: "biome",
12
+ testing: "vitest",
13
+ };
14
+ const PORTS = {
15
+ frontend: {
16
+ base: PORT_RANGES.frontend.base,
17
+ range: PORT_RANGES.frontend.range,
18
+ start: PORT_RANGES.frontend.min,
19
+ end: PORT_RANGES.frontend.max,
20
+ },
21
+ backend: {
22
+ base: PORT_RANGES.backend.base,
23
+ range: PORT_RANGES.backend.range,
24
+ start: PORT_RANGES.backend.min,
25
+ end: PORT_RANGES.backend.max,
26
+ },
27
+ health: {
28
+ base: PORT_RANGES.health.base,
29
+ range: PORT_RANGES.health.range,
30
+ start: PORT_RANGES.health.min,
31
+ end: PORT_RANGES.health.max,
32
+ },
33
+ worker: {
34
+ base: PORT_RANGES.worker.base,
35
+ range: PORT_RANGES.worker.range,
36
+ start: PORT_RANGES.worker.min,
37
+ end: PORT_RANGES.worker.max,
38
+ },
39
+ migrator: {
40
+ base: PORT_RANGES.migrator.base,
41
+ range: PORT_RANGES.migrator.range,
42
+ start: PORT_RANGES.migrator.min,
43
+ end: PORT_RANGES.migrator.max,
44
+ },
45
+ tiltUi: STANDARD_PORTS.tiltUi,
46
+ traefik: STANDARD_PORTS.traefik,
47
+ };
48
+ const HEALTH_CHECKS = {
49
+ path: "/health",
50
+ live: "/health/live",
51
+ ready: "/health/ready",
52
+ timeout: 30,
53
+ interval: 5,
54
+ };
55
+ const NAMING = {
56
+ frontend: "-frontend",
57
+ backend: "-backend",
58
+ worker: "-worker",
59
+ migrator: "-migrator",
60
+ library: "-lib",
61
+ sdk: "-sdk",
62
+ validSeparators: ["-", "_"],
63
+ maxLength: 63,
64
+ minLength: 3,
65
+ };
66
+ const TRAEFIK = {
67
+ entrypoint: "web",
68
+ network: "traefik-public",
69
+ defaultHost: "localhost",
70
+ appHost: "app.localhost",
71
+ apiHost: "api.localhost",
72
+ appSubdomainPrefix: "app",
73
+ apiSubdomainPrefix: "api",
74
+ defaultPort: 8080,
75
+ tlsEnabled: false,
76
+ entrypoints: ["web"],
77
+ middlewares: [],
78
+ tls: { enabled: false },
79
+ healthcheckPath: "/health",
80
+ healthcheckInterval: "10s",
81
+ healthcheckTimeout: "5s",
82
+ frontendPriorityBase: 100,
83
+ };
84
+ const FILEWATCH_IGNORES = [
85
+ "node_modules",
86
+ "dist",
87
+ "build",
88
+ ".git",
89
+ ".prisma",
90
+ ".turbo",
91
+ "coverage",
92
+ "tmp",
93
+ "temp",
94
+ "__tests__",
95
+ "test",
96
+ "tests",
97
+ ];
98
+ const RESOURCE_TYPES = {
99
+ frontend: {
100
+ suffix: "-frontend",
101
+ portRange: "3000-3999",
102
+ },
103
+ backend: {
104
+ suffix: "-backend",
105
+ portRange: "4000-4999",
106
+ },
107
+ library: {
108
+ suffix: "-library",
109
+ portRange: null,
110
+ },
111
+ sdk: {
112
+ suffix: "-sdk",
113
+ portRange: "3000-9999",
114
+ },
115
+ migrator: {
116
+ suffix: "-migrator",
117
+ portRange: "7000-7999",
118
+ },
119
+ worker: {
120
+ suffix: "-worker",
121
+ portRange: "6000-6999",
122
+ },
123
+ };
124
+ const FEATURES = {
125
+ prisma: "Database ORM with migrations",
126
+ nats: "Event streaming via NATS",
127
+ redis: "Caching layer",
128
+ infisical: "Secrets management",
129
+ vitest: "Testing framework",
130
+ traefik: "HTTP routing",
131
+ websocket: "Real-time connections",
132
+ graphql: "GraphQL support",
133
+ grpc: "gRPC support",
134
+ viteNode: "Vite Node runtime",
135
+ maintenance: "Maintenance mode",
136
+ };
137
+ const PATHS = {
138
+ services: "services/product",
139
+ sharedPlatform: "shared-platform-engineering",
140
+ sharedProduct: "shared-product-engineering",
141
+ sharedDdd: "shared-ddd-layers",
142
+ };
143
+ const DISCOVERY = {
144
+ scanIntervalSeconds: 5,
145
+ maxManifestsPerRoot: 50,
146
+ servicePatterns: ["services/product/*", "services/platform/*"],
147
+ };
148
+ const DOCKER = {
149
+ dockerfile: "Dockerfile",
150
+ context: ".",
151
+ // Auto-detect native arch (arm64 on Apple Silicon, amd64 elsewhere)
152
+ // platform: "linux/amd64",
153
+ };
154
+ const RUNTIME = {
155
+ backend: {
156
+ command: "bun",
157
+ args: ["run", "dev"],
158
+ env: { NODE_ENV: "development" },
159
+ },
160
+ frontend: {
161
+ command: "bun",
162
+ args: ["run", "dev"],
163
+ env: { NODE_ENV: "development" },
164
+ },
165
+ };
166
+ export const PLATFORM_STANDARDS = {
167
+ version: PLATFORM_VERSION,
168
+ tech: TECH_STACK,
169
+ ports: PORTS,
170
+ health: HEALTH_CHECKS,
171
+ naming: NAMING,
172
+ traefik: TRAEFIK,
173
+ filewatchIgnores: FILEWATCH_IGNORES,
174
+ serviceTypes: RESOURCE_TYPES,
175
+ features: FEATURES,
176
+ paths: PATHS,
177
+ discovery: DISCOVERY,
178
+ docker: DOCKER,
179
+ runtime: RUNTIME,
180
+ };
181
+ //# sourceMappingURL=platform-standards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-standards.js","sourceRoot":"","sources":["../../src/config/platform-standards.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Fetches (with a local, time-limited cache) the premium bundle for the
3
+ * configured license key and overlays its files onto the already-vendored
4
+ * free engine at destDir. Best-effort: returns false (never throws) if
5
+ * there's no key configured, the key doesn't grant anything, or the fetch
6
+ * fails - the caller should keep going with the free engine either way.
7
+ */
8
+ export declare function applyPremiumOverlay(projectRoot: string, destDir: string): Promise<boolean>;
9
+ //# sourceMappingURL=extension-fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-fetch.d.ts","sourceRoot":"","sources":["../../src/generator/extension-fetch.ts"],"names":[],"mappings":"AA2HA;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAyChG"}
@@ -0,0 +1,153 @@
1
+ // Fetches the paid-tier "premium" resource bundle (playwright, c4-diagram,
2
+ // logging, and a few other extras - see tdk-cli-extensions/premium/) from
3
+ // the gated distribution worker, when a license key is configured. The
4
+ // free engine never needs this - every free resource (docker-compose,
5
+ // verdaccio, npm, bun, etc.) is already public in this repo, no key
6
+ // required.
7
+ //
8
+ // The worker (tdk-extension-dist) is the real access-control boundary: it
9
+ // checks the key against BUNDLES_REPO/keys/*.json - existence, activation/
10
+ // expiry dates, granted resources, and a per-key project limit - before
11
+ // serving anything. This client just asks and, if granted, unpacks the
12
+ // result over the vendored stub files so the generator pipeline picks up
13
+ // the real implementations transparently. See
14
+ // tdk-extension-dist/src/index.ts for the server-side enforcement and
15
+ // tdk-extension-dist/src/project-limit.ts for the project-limit logic.
16
+ import { randomUUID } from "node:crypto";
17
+ import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
18
+ import { homedir } from "node:os";
19
+ import { join } from "node:path";
20
+ import { extractTarball } from "../utils/tar.js";
21
+ const DEFAULT_ENDPOINT = "https://tdk-extension-dist.oranguman.workers.dev/v1/premium/bundle.tar.gz";
22
+ // Tried in order until one is granted - the worker unlocks the whole
23
+ // bundle on the first resource name a key is found to grant, since
24
+ // premium.tar.gz ships all paid resources together. Keep in sync with
25
+ // what issue-key.yml/update-key.yml accept as `resources` entries.
26
+ const KNOWN_RESOURCES = ["playwright", "c4-diagram", "logging"];
27
+ // Re-check the license periodically rather than trusting a local cache
28
+ // forever - an expired or revoked key shouldn't keep unlocking premium
29
+ // content indefinitely just because it worked once.
30
+ const CACHE_TTL_MS = 12 * 60 * 60 * 1000;
31
+ // Maps each file's path inside premium.tar.gz to where it belongs in the
32
+ // vendored engine output, so the generator pipeline finds it in the same
33
+ // place the free stub (or, for the never-wired items, nothing at all)
34
+ // used to be.
35
+ const PREMIUM_PATH_MAP = {
36
+ "typescript/playwright_config.star": "engine/topologies/tilt/generators/typescript/playwright_config.star",
37
+ "c4_diagram.star": "engine/topologies/tilt/generators/c4_diagram.star",
38
+ "observability/logging.star": "engine/topologies/platform/observability/logging.star",
39
+ "generators/database_provisioner.star": "engine/topologies/tilt/generators/database_provisioner.star",
40
+ "generators/dependency_manifest.star": "engine/topologies/tilt/generators/dependency_manifest.star",
41
+ "generators/fixed_frontend_tsconfig.star": "engine/topologies/tilt/generators/typescript/fixed_frontend_tsconfig.star",
42
+ "synthetic_monitor.star": "engine/resources/synthetic_monitor.star",
43
+ "synthetic-monitor-topology.star": "engine/topologies/platform/services/synthetic-monitor.star",
44
+ "database-management-service.yaml": "platform/services/platform/database-management/service.yaml",
45
+ };
46
+ function getLicenseKey() {
47
+ return process.env.TDK_LICENSE_KEY?.trim() || null;
48
+ }
49
+ function getEndpoint() {
50
+ return process.env.TDK_PREMIUM_ENDPOINT?.trim() || DEFAULT_ENDPOINT;
51
+ }
52
+ // A stable per-project id for the worker's project-limit tracking - not a
53
+ // device or user id. Generated once and persisted alongside the rest of
54
+ // the project's .tdk/ state.
55
+ function getOrCreateProjectId(projectRoot) {
56
+ const idPath = join(projectRoot, ".tdk", ".project-id");
57
+ if (existsSync(idPath)) {
58
+ return readFileSync(idPath, "utf-8").trim();
59
+ }
60
+ const id = randomUUID();
61
+ mkdirSync(join(projectRoot, ".tdk"), { recursive: true });
62
+ writeFileSync(idPath, id + "\n");
63
+ return id;
64
+ }
65
+ function cacheTarballPath(key) {
66
+ // Cache is per-key (not shared across different keys on the same
67
+ // machine) so switching license keys doesn't serve a stale bundle
68
+ // fetched under a different plan.
69
+ const safeName = key.replace(/[^a-zA-Z0-9_-]/g, "_");
70
+ return join(homedir(), ".tdk", "cache", `premium-${safeName}`, "premium.tar.gz");
71
+ }
72
+ function isCacheFresh(path) {
73
+ if (!existsSync(path))
74
+ return false;
75
+ return Date.now() - statSync(path).mtimeMs < CACHE_TTL_MS;
76
+ }
77
+ async function fetchPremiumBundle(key, projectId) {
78
+ const endpoint = getEndpoint();
79
+ for (const resource of KNOWN_RESOURCES) {
80
+ const url = `${endpoint}?key=${encodeURIComponent(key)}` +
81
+ `&resource=${encodeURIComponent(resource)}` +
82
+ `&projectId=${encodeURIComponent(projectId)}`;
83
+ let res;
84
+ try {
85
+ res = await fetch(url);
86
+ }
87
+ catch (err) {
88
+ console.warn(`⚠️ Premium fetch failed (network error): ${err.message}`);
89
+ return null;
90
+ }
91
+ if (res.ok) {
92
+ return Buffer.from(await res.arrayBuffer());
93
+ }
94
+ if (res.status === 401 || res.status === 403) {
95
+ // Not granted for this specific resource name - try the next one
96
+ // before concluding the key has nothing to offer.
97
+ continue;
98
+ }
99
+ // Anything else (404 missing bundle release, 502 upstream failure,
100
+ // etc.) won't be fixed by trying a different resource name.
101
+ console.warn(`⚠️ Premium fetch failed: HTTP ${res.status}`);
102
+ return null;
103
+ }
104
+ return null;
105
+ }
106
+ /**
107
+ * Fetches (with a local, time-limited cache) the premium bundle for the
108
+ * configured license key and overlays its files onto the already-vendored
109
+ * free engine at destDir. Best-effort: returns false (never throws) if
110
+ * there's no key configured, the key doesn't grant anything, or the fetch
111
+ * fails - the caller should keep going with the free engine either way.
112
+ */
113
+ export async function applyPremiumOverlay(projectRoot, destDir) {
114
+ const key = getLicenseKey();
115
+ if (!key)
116
+ return false;
117
+ const tarballPath = cacheTarballPath(key);
118
+ if (!isCacheFresh(tarballPath)) {
119
+ const projectId = getOrCreateProjectId(projectRoot);
120
+ const bundle = await fetchPremiumBundle(key, projectId);
121
+ if (!bundle) {
122
+ console.warn("⚠️ No premium resources unlocked for this key - using free tier only.");
123
+ return false;
124
+ }
125
+ mkdirSync(join(tarballPath, ".."), { recursive: true });
126
+ writeFileSync(tarballPath, bundle);
127
+ }
128
+ try {
129
+ const extractDir = join(tarballPath, "..", "extracted");
130
+ mkdirSync(extractDir, { recursive: true });
131
+ extractTarball(readFileSync(tarballPath), extractDir);
132
+ let applied = 0;
133
+ for (const [src, dest] of Object.entries(PREMIUM_PATH_MAP)) {
134
+ const from = join(extractDir, src);
135
+ if (!existsSync(from))
136
+ continue;
137
+ const to = join(destDir, dest);
138
+ mkdirSync(join(to, ".."), { recursive: true });
139
+ writeFileSync(to, readFileSync(from));
140
+ applied++;
141
+ }
142
+ if (applied > 0) {
143
+ console.log(`✓ Premium resources unlocked (${applied} file${applied === 1 ? "" : "s"})`);
144
+ return true;
145
+ }
146
+ return false;
147
+ }
148
+ catch (err) {
149
+ console.warn(`⚠️ Failed to apply premium overlay: ${err.message}`);
150
+ return false;
151
+ }
152
+ }
153
+ //# sourceMappingURL=extension-fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-fetch.js","sourceRoot":"","sources":["../../src/generator/extension-fetch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { PLATFORM_STANDARDS } from "../config/platform-standards.js";
2
+ import type { ProjectConfig } from "../types/index.js";
3
+ interface GeneratorContext {
4
+ version: string;
5
+ timestamp: string;
6
+ tech: typeof PLATFORM_STANDARDS.tech;
7
+ ports: typeof PLATFORM_STANDARDS.ports;
8
+ health: typeof PLATFORM_STANDARDS.health;
9
+ naming: typeof PLATFORM_STANDARDS.naming;
10
+ traefik: typeof PLATFORM_STANDARDS.traefik;
11
+ filewatchIgnores: string[];
12
+ serviceTypes: typeof PLATFORM_STANDARDS.serviceTypes;
13
+ paths: typeof PLATFORM_STANDARDS.paths;
14
+ discovery: {
15
+ scanIntervalSeconds: number;
16
+ maxManifestsPerRoot: number;
17
+ paths: string[];
18
+ };
19
+ docker: typeof PLATFORM_STANDARDS.docker;
20
+ runtime: typeof PLATFORM_STANDARDS.runtime;
21
+ project: ProjectConfig["project"];
22
+ stacks: ProjectConfig["stacks"];
23
+ alwaysEnabledInfra: string[];
24
+ optionalInfra: ProjectConfig["optional_infra"];
25
+ serviceDescriptions: Record<string, string>;
26
+ infraDescriptions: Record<string, string>;
27
+ }
28
+ /**
29
+ * List of all files generated by the template engine.
30
+ * Used for iteration and type-safe access to generated content.
31
+ */
32
+ declare const ALL_GENERATED_FILES: readonly ["TILT_TECH_STACK.star", "TILT_RESOURCE_DEFAULTS.star", "spec.master", "Tiltfile", ".tiltignore"];
33
+ /**
34
+ * Type representing valid generated file names.
35
+ * Derived from ALL_GENERATED_FILES const array for type safety.
36
+ */
37
+ type GeneratedFileName = (typeof ALL_GENERATED_FILES)[number];
38
+ export declare class TemplateEngine {
39
+ private templatesDir;
40
+ constructor(templatesDir?: string);
41
+ private formatStarlarkValue;
42
+ private registerHelpers;
43
+ buildContext(projectConfig: ProjectConfig): GeneratorContext;
44
+ private loadTemplate;
45
+ generateTechStack(context: GeneratorContext): string;
46
+ generateServiceDefaults(context: GeneratorContext): string;
47
+ generateSpecMaster(context: GeneratorContext): string;
48
+ generateTiltfile(context: GeneratorContext): string;
49
+ generateTiltIgnore(context: GeneratorContext): string;
50
+ generateAll(projectConfig: ProjectConfig): Record<GeneratedFileName, string>;
51
+ }
52
+ export declare function generateDatabaseManagementCompose(projectConfig: ProjectConfig): string;
53
+ export declare function readProjectConfig(projectRoot: string): ProjectConfig;
54
+ export declare function generateMasterConfigs(projectRoot: string): Promise<void>;
55
+ export declare function verifyMasterConfigs(projectRoot: string): {
56
+ valid: boolean;
57
+ errors: string[];
58
+ };
59
+ export {};
60
+ //# sourceMappingURL=template-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-engine.d.ts","sourceRoot":"","sources":["../../src/generator/template-engine.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,KAAK,EAAa,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAclE,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,kBAAkB,CAAC,IAAI,CAAC;IACrC,KAAK,EAAE,OAAO,kBAAkB,CAAC,KAAK,CAAC;IACvC,MAAM,EAAE,OAAO,kBAAkB,CAAC,MAAM,CAAC;IACzC,MAAM,EAAE,OAAO,kBAAkB,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,OAAO,kBAAkB,CAAC,OAAO,CAAC;IAC3C,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,YAAY,EAAE,OAAO,kBAAkB,CAAC,YAAY,CAAC;IACrD,KAAK,EAAE,OAAO,kBAAkB,CAAC,KAAK,CAAC;IACvC,SAAS,EAAE;QAAE,mBAAmB,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACzF,MAAM,EAAE,OAAO,kBAAkB,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,OAAO,kBAAkB,CAAC,OAAO,CAAC;IAC3C,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAClC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,aAAa,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC/C,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C;AAkBD;;;GAGG;AACH,QAAA,MAAM,mBAAmB,YACvB,sBAAsB,EACtB,6BAA6B,EAC7B,aAAa,EACb,UAAU,EACV,aAAa,CACL,CAAC;AAEX;;;GAGG;AACH,KAAK,iBAAiB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAU9D,qBAAa,cAAc;IACzB,OAAO,CAAC,YAAY,CAAS;IAE7B,YAAY,YAAY,CAAC,EAAE,MAAM,EAIhC;IAED,OAAO,CAAC,mBAAmB;IA0B3B,OAAO,CAAC,eAAe;IAgBvB,YAAY,CAAC,aAAa,EAAE,aAAa,GAAG,gBAAgB,CA8B3D;IAED,OAAO,CAAC,YAAY;IAWpB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAGnD;IAED,uBAAuB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAGzD;IAED,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAGpD;IAED,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAGlD;IAED,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAGpD;IAED,WAAW,CAAC,aAAa,EAAE,aAAa,GAAG,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAU3E;CACF;AAMD,wBAAgB,iCAAiC,CAAC,aAAa,EAAE,aAAa,GAAG,MAAM,CAqCtF;AAqED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAqBpE;AAED,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyC9E;AAkGD,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAyB7F"}