@tdk-landscape/tdk-cli-core 1.3.146 → 1.3.148

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.
@@ -1,2 +1,2 @@
1
1
  import{createRequire as __tdkRequire}from'node:module';const require=__tdkRequire(import.meta.url);
2
- import{sb as a,tb as b,ub as c,vb as d,wb as e}from"./chunk-SWAGCVPQ.js";import"./chunk-42IVF3YT.js";import"./chunk-6EA4DGCY.js";export{e as assertMachineReadyOrExit,d as formatColdPreflight,a as nodeTooOld,b as requireVerifiedDockerVersions,c as runColdPreflight};
2
+ import{tb as a,ub as b,vb as c,wb as d,xb as e}from"./chunk-4RTR7KXM.js";import"./chunk-42IVF3YT.js";import"./chunk-6EA4DGCY.js";export{e as assertMachineReadyOrExit,d as formatColdPreflight,a as nodeTooOld,b as requireVerifiedDockerVersions,c as runColdPreflight};
package/cli/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "tdk-cli-internal",
3
3
  "private": true,
4
- "version": "1.3.146",
4
+ "version": "1.3.148",
5
5
  "description": "TDK CLI — start services on your machine.",
6
6
  "keywords": [
7
7
  "tdk",
@@ -147,8 +147,8 @@ If issues arise with Phase 2:
147
147
  ```bash
148
148
  # Restore Phase 1 behavior
149
149
  tilt down
150
- git checkout .tilt/topologies/tilt/discovery/constants.star
151
- git checkout .tilt/topologies/tilt/discovery/discovery_orchestrator.star
150
+ git checkout discovery/constants.star
151
+ git checkout discovery/discovery_orchestrator.star
152
152
  tilt up
153
153
  ```
154
154
 
@@ -323,7 +323,7 @@ initialize_discovery(_DISCOVERY_CACHE)
323
323
 
324
324
  **Pass 2:** Export to autogenerated Tilt resources
325
325
  1. `registry.star` reads from discovery cache
326
- 2. Generates `.tilt/topologies/product_autogenerated_*/` files
326
+ 2. Generates `.tdk/.tdk-out/product_autogenerated_*/` files
327
327
  3. Creates Tilt resources from generated files
328
328
 
329
329
  ## Important Notes
@@ -179,7 +179,7 @@ def get_global_config():
179
179
  "golden_l2_image": PlatformDockerConstants.PROJECT_NAME_HYPHEN + "-l2:latest",
180
180
  "golden_l3_backend_image": PlatformDockerConstants.PROJECT_NAME_HYPHEN + "-l3-backend:latest",
181
181
  "golden_l3_frontend_image": PlatformDockerConstants.PROJECT_NAME_HYPHEN + "-l3-frontend:latest",
182
- "golden_l3_migrator_image": PlatformDockerConstants.PROJECT_NAME_HYPHEN + "-l3-migrator:latest",
182
+ "golden_l3_migrator_image": PlatformDockerConstants.PROJECT_NAME_HYPHEN + "-l3-backend:latest",
183
183
  "golden_l4_backend_image": PlatformDockerConstants.PROJECT_NAME_HYPHEN + "-l4-backend:latest",
184
184
  "golden_l4_frontend_image": PlatformDockerConstants.PROJECT_NAME_HYPHEN + "-l4-frontend:latest",
185
185
  "golden_l4_migrator_image": PlatformDockerConstants.PROJECT_NAME_HYPHEN + "-l4-migrator:latest",
package/engine/AGENTS.md CHANGED
@@ -34,7 +34,7 @@ You don't just manage services; you map, design, and optimize the topology that
34
34
 
35
35
  **Topology Architecture:**
36
36
  ```
37
- .tilt/topologies/
37
+ engine/topologies/
38
38
  ├── platform/ # Infrastructure topology
39
39
  │ ├── docker/ # Dockerfile, compose, golden image
40
40
  │ ├── net/ # Proxy, networking
@@ -105,7 +105,7 @@ You don't just manage services; you map, design, and optimize the topology that
105
105
 
106
106
  **The Core Pattern (1 manifest → 1 resource → 10 generators):**
107
107
  ```starlark
108
- # .tilt/provisioner/orchestrator/apply.star
108
+ # engine/topologies/tilt/resources/orchestrator/apply.star
109
109
  load("./generators/manifest_resource.star", "ManifestResource")
110
110
 
111
111
  for resource in resource_config.get('resources', []):
@@ -135,7 +135,7 @@ for resource in resource_config.get('resources', []):
135
135
 
136
136
  **Registry Loading:**
137
137
  ```starlark
138
- # .tilt/topologies/tilt/discovery/registry.star
138
+ # discovery/registry.star
139
139
  load("./discovery.star", "initialize_discovery")
140
140
 
141
141
  _DISCOVERY_CACHE = {
@@ -159,7 +159,7 @@ def get_resource_by_name(name):
159
159
 
160
160
  **Autogenerated Services List:**
161
161
  ```starlark
162
- # .tilt/topologies/product_autogenerated_resource_manifests/services.autogenerated.star
162
+ # .tdk/.tdk-out/product_autogenerated_resource_manifests/services.autogenerated.star
163
163
  APP_RESOURCES_AUTOGENERATED = [
164
164
  {
165
165
  'name': 'order-planner',
@@ -187,7 +187,7 @@ APP_RESOURCES_AUTOGENERATED = [
187
187
 
188
188
  **Vite Config Generator:**
189
189
  ```starlark
190
- # .tilt/topologies/tilt/generators/vite_config.star
190
+ # engine/topologies/tilt/generators/vite_config.star
191
191
  def generate_for_manifest(manifest, backend_manifest, write_fn):
192
192
  app_type = manifest.get('appType')
193
193
 
@@ -209,7 +209,7 @@ def generate_for_manifest(manifest, backend_manifest, write_fn):
209
209
 
210
210
  **TSConfig Generator:**
211
211
  ```starlark
212
- # .tilt/topologies/tilt/generators/tsconfig.star
212
+ # engine/topologies/tilt/generators/tsconfig.star
213
213
  def generate_backend(path, prisma_path, write_fn, internal_deps, is_docker):
214
214
  config = {
215
215
  "compilerOptions": {
@@ -226,7 +226,7 @@ def generate_backend(path, prisma_path, write_fn, internal_deps, is_docker):
226
226
 
227
227
  **Dockerfile Generation:**
228
228
  ```starlark
229
- # .tilt/topologies/platform/docker/dockerfile.star
229
+ # engine/topologies/platform/docker/dockerfile/dockerfile.star
230
230
  def generate_app_dockerfile(path, resource_name, start_command):
231
231
  return '''
232
232
  # L1: Golden Image Base
@@ -263,7 +263,7 @@ golden-image-l1 (Base)
263
263
 
264
264
  **Golden Image Module:**
265
265
  ```starlark
266
- # .tilt/topologies/platform/docker/golden_image.star
266
+ # engine/topologies/platform/docker/build/golden_image.star
267
267
  GoldenImage = struct(
268
268
  build_l1 = _build_l1_base,
269
269
  build_l2 = _build_l2_deps,
@@ -283,7 +283,7 @@ GoldenImage = struct(
283
283
 
284
284
  **Per-Service Database Provisioning:**
285
285
  ```starlark
286
- # .tilt/topologies/platform/state/relational.star
286
+ # engine/topologies/platform/state/relational.star
287
287
  load("./prisma/db_readiness.star", "wait_for_db")
288
288
  load("./prisma/migrate_script.star", "generate_migrate_script")
289
289
 
@@ -308,7 +308,7 @@ def get_database_url(resource_name):
308
308
 
309
309
  **Database Readiness Checks:**
310
310
  ```starlark
311
- # .tilt/topologies/platform/docker/layers/prisma/db_readiness.star
311
+ # engine/topologies/platform/docker/layers/prisma/db_readiness.star
312
312
  def wait_for_db(db_url, timeout=30):
313
313
  """Waits for PostgreSQL to be ready"""
314
314
  return '''
@@ -324,7 +324,7 @@ done
324
324
 
325
325
  **Traefik Configuration:**
326
326
  ```starlark
327
- # .tilt/topologies/platform/net/proxy.star
327
+ # engine/topologies/platform/net/proxy.star
328
328
  def generate_traefik_labels(resource_name, port, host, path_prefix):
329
329
  return {
330
330
  'traefik.enable': 'true',
@@ -338,7 +338,7 @@ def generate_traefik_labels(resource_name, port, host, path_prefix):
338
338
 
339
339
  **Library Discovery & Setup:**
340
340
  ```starlark
341
- # .tilt/topologies/tilt/resources/deps.star
341
+ # engine/topologies/tilt/resources/deps.star
342
342
  def discover_resource_libraries(ctx, resource_path):
343
343
  """Discovers @tdk/* dependencies from package.json"""
344
344
  package_json = read_json(resource_path + "/package.json")
@@ -385,7 +385,7 @@ def setup_libraries(ctx, should_enable, DDD_LIBS, PLATFORM_LIBS, PRODUCT_LIBS, g
385
385
  ```
386
386
  ❌ DON'T MODIFY:
387
387
  - **/autogenerated/*.autogenerated.*
388
- - .tilt/topologies/product_autogenerated_*/*
388
+ - .tdk/.tdk-out/product_autogenerated_*/*
389
389
  - **/services.autogenerated.star
390
390
  - **/domains.autogenerated.star
391
391
  ```
@@ -395,7 +395,7 @@ def setup_libraries(ctx, should_enable, DDD_LIBS, PLATFORM_LIBS, PRODUCT_LIBS, g
395
395
  ✅ MODIFY THESE INSTEAD:
396
396
  - service.json (or let synthesis auto-configure from directory)
397
397
  - package.json (dependencies)
398
- - .tilt/topologies/tilt/discovery/registry.star
398
+ - discovery/registry.star
399
399
  ```
400
400
 
401
401
  ### Manifest-Driven Rule
@@ -639,7 +639,7 @@ load('ext://live_update', 'sync', 'run') # Remove this line!
639
639
  4. Verify in Tilt UI
640
640
 
641
641
  ### Adding New Generator
642
- 1. Create generator in `.tilt/topologies/tilt/generators/`
642
+ 1. Create generator in `engine/topologies/tilt/generators/`
643
643
  2. Export in `index.star`
644
644
  3. Call from `manifest_resource.star`
645
645
  4. Test with single manifest
package/engine/README.md CHANGED
@@ -24,7 +24,7 @@ This directory contains the TDK Landscape Tilt infrastructure framework - the co
24
24
 
25
25
  When you see `.tilt-engine/` in paths, know that this is framework code (not generated output).
26
26
 
27
- Generated/output files go in `.tilt/` (which is gitignored).
27
+ Generated/output files go in `.tdk/.tdk-out/` (which is gitignored).
28
28
 
29
29
  ## Learn More
30
30
 
@@ -17,13 +17,16 @@
17
17
  # This Dockerfile builds 8 golden images:
18
18
  # - tdk-project-l1:latest - OS base + Bun runtime
19
19
  # - tdk-project-l2:latest - Dependencies installed
20
- # - tdk-project-l3-backend:latest - Backend build tools (Prisma, no Infisical CLI)
20
+ # - tdk-project-l3-backend:latest - Backend and migrator build tools (Prisma, no Infisical CLI)
21
21
  # - tdk-project-l3-frontend:latest - Frontend build tools (no Prisma)
22
- # - tdk-project-l3-migrator:latest - Migrator build tools (Prisma, no Infisical CLI)
23
- # - tdk-project-l4-backend:latest - Backend production runtime
22
+ # - tdk-project-l4-backend:latest - Backend production runtime (Bun)
23
+ # - tdk-project-l4-backend-node:latest - Backend production runtime (Node.js)
24
24
  # - tdk-project-l4-frontend:latest - Frontend production runtime (Nginx)
25
25
  # - tdk-project-l4-migrator:latest - Migrator production runtime
26
26
  #
27
+ # Migrators build on l3-backend: a separate l3-migrator stage installed the same Prisma
28
+ # and produced identical layers under a second image name.
29
+ #
27
30
  # Services use these as base images to skip heavy dependency installation.
28
31
  #
29
32
  # ⚠️ SKIP_INFISICAL_SETUP Support:
@@ -100,26 +103,6 @@ LABEL layer="l3-frontend" description="Frontend build tools without Prisma
100
103
  RUN echo "Bun version: $(bun --version)"
101
104
 
102
105
 
103
- # =============================================================================
104
- # L3-MIGRATOR: MIGRATOR BUILD TOOLS (PRISMA)
105
- # =============================================================================
106
- FROM l2_golden AS l3_migrator_golden
107
-
108
- LABEL layer="l3-migrator" description="Migrator build tools with Prisma" maintainer="tdk-project"
109
-
110
- # Install Prisma CLI globally (required for migrations, pinned)
111
- RUN bun add -g prisma@7.5.0 @prisma/client@7.5.0
112
-
113
- # Verify Prisma installation
114
- RUN echo "Prisma version: $(bunx prisma --version | head -1)"
115
-
116
- # ⚠️ CRITICAL: Infisical CLI is NOT installed in golden L3 images
117
- # Reason: curl to dl.cloudsmith.io hangs during Docker builds when CDN is slow
118
- # Solution: Use SKIP_INFISICAL_SETUP=1 build arg or runtime env var injection
119
- # Services read secrets from environment variables at runtime (no CLI needed)
120
- # See: .tilt/topologies/platform/docker/layers/l3_builder_layers.star
121
-
122
-
123
106
  # =============================================================================
124
107
  # L4-BACKEND-BUN: BACKEND PRODUCTION RUNTIME (BUN)
125
108
  # =============================================================================
@@ -202,8 +185,8 @@ LABEL layer="l4-migrator" description="Migrator runtime with Prisma"
202
185
 
203
186
  ENV NODE_ENV=production
204
187
 
205
- # Copy global Prisma installation from L3
206
- COPY --from=l3_migrator_golden /root/.bun/install/global /root/.bun/install/global
188
+ # Copy global Prisma installation from L3 (l3-backend carries the same pinned Prisma)
189
+ COPY --from=l3_backend_golden /root/.bun/install/global /root/.bun/install/global
207
190
 
208
191
  # ⚠️ Infisical CLI is NOT included in golden L4 images
209
192
  # The migrator reads secrets directly from environment variables at runtime
@@ -2,7 +2,7 @@
2
2
  # 🏗️ TILT SDK - GOLDEN IMAGE BUILDERS
3
3
  # =============================================================================
4
4
 
5
- load('./golden_image_constants.star', 'GOLDEN_DOCKERFILE', 'GOLDEN_IMAGE_PREFIX', 'GOLDEN_LAYERS')
5
+ load('./golden_image_constants.star', 'GOLDEN_DOCKERFILE', 'GOLDEN_IMAGE_PREFIX', 'GOLDEN_LAYERS', 'LEGACY_GOLDEN_IMAGES')
6
6
 
7
7
  # Label that records which golden Dockerfile an image was built from.
8
8
  GOLDEN_HASH_LABEL = 'tdk.golden.hash'
@@ -53,6 +53,11 @@ else
53
53
  @@SERIAL_BUILDS@@
54
54
  fi
55
55
 
56
+ # Untag golden images that older engines built and nothing uses now; an image still in use is left alone.
57
+ for img in @@LEGACY_IMAGES@@; do
58
+ docker image rm "$img" >/dev/null 2>&1 && echo " 🧹 Removed legacy golden image $img"
59
+ done
60
+
56
61
  echo "✅ Golden layers built (@@COUNT@@ images):"
57
62
  @@SUMMARY@@
58
63
  '''
@@ -118,6 +123,7 @@ def build_golden_layers(project_root='.'):
118
123
  .replace('@@DF_REL@@', _sh_quote(dockerfile_from_tiltfile))
119
124
  .replace('@@ROOT_REL@@', _sh_quote(context))
120
125
  .replace('@@IMAGES@@', ' '.join(images))
126
+ .replace('@@LEGACY_IMAGES@@', ' '.join(LEGACY_GOLDEN_IMAGES))
121
127
  .replace('@@HASH_LABEL@@', GOLDEN_HASH_LABEL)
122
128
  .replace('@@COUNT@@', str(len(images)))
123
129
  .replace('@@TARGET_NAMES@@', ', '.join(target_names))
@@ -46,12 +46,6 @@ GOLDEN_LAYERS = {
46
46
  'description': 'Frontend build tools (no Prisma)',
47
47
  'target': 'l3_frontend_golden',
48
48
  },
49
- 'l3-migrator': {
50
- 'name': GOLDEN_IMAGE_PREFIX + '-l3-migrator',
51
- 'tag': 'latest',
52
- 'description': 'Migrator build tools (Prisma only, Infisical CLI skipped to avoid CDN hangs)',
53
- 'target': 'l3_migrator_golden',
54
- },
55
49
  'l4-backend': {
56
50
  'name': GOLDEN_IMAGE_PREFIX + '-l4-backend',
57
51
  'tag': 'latest',
@@ -79,8 +73,21 @@ GOLDEN_LAYERS = {
79
73
  }
80
74
 
81
75
 
76
+ # Layers that are no longer built, mapped to the layer that replaced them.
77
+ # l3-migrator installed the same Prisma as l3-backend and produced identical layers.
78
+ LAYER_ALIASES = {
79
+ 'l3-migrator': 'l3-backend',
80
+ }
81
+
82
+ # Image names older engines built that nothing uses now; the golden build untags them.
83
+ LEGACY_GOLDEN_IMAGES = [
84
+ GOLDEN_IMAGE_PREFIX + '-l3-migrator:latest',
85
+ ]
86
+
87
+
82
88
  def get_layer_reference(layer):
83
89
  """Returns the full image reference for a specific layer."""
90
+ layer = LAYER_ALIASES.get(layer, layer)
84
91
  if layer not in GOLDEN_LAYERS:
85
92
  fail("Invalid layer: " + layer + ". Must be one of: l1, l2, l3, l4")
86
93
 
@@ -38,13 +38,16 @@ def generate_golden_dockerfile():
38
38
  # This Dockerfile builds 8 golden images:
39
39
  # - """ + prefix + """-l1:latest - OS base + Bun runtime
40
40
  # - """ + prefix + """-l2:latest - Dependencies installed
41
- # - """ + prefix + """-l3-backend:latest - Backend build tools (Prisma, no Infisical CLI)
41
+ # - """ + prefix + """-l3-backend:latest - Backend and migrator build tools (Prisma, no Infisical CLI)
42
42
  # - """ + prefix + """-l3-frontend:latest - Frontend build tools (no Prisma)
43
- # - """ + prefix + """-l3-migrator:latest - Migrator build tools (Prisma, no Infisical CLI)
44
- # - """ + prefix + """-l4-backend:latest - Backend production runtime
43
+ # - """ + prefix + """-l4-backend:latest - Backend production runtime (Bun)
44
+ # - """ + prefix + """-l4-backend-node:latest - Backend production runtime (Node.js)
45
45
  # - """ + prefix + """-l4-frontend:latest - Frontend production runtime (Nginx)
46
46
  # - """ + prefix + """-l4-migrator:latest - Migrator production runtime
47
47
  #
48
+ # Migrators build on l3-backend: a separate l3-migrator stage installed the same Prisma
49
+ # and produced identical layers under a second image name.
50
+ #
48
51
  # Services use these as base images to skip heavy dependency installation.
49
52
  #
50
53
  # ⚠️ SKIP_INFISICAL_SETUP Support:
@@ -139,28 +142,6 @@ LABEL layer="l3-frontend" \
139
142
  RUN echo "Bun version: $(bun --version)"
140
143
 
141
144
 
142
- # =============================================================================
143
- # L3-MIGRATOR: MIGRATOR BUILD TOOLS (PRISMA)
144
- # =============================================================================
145
- FROM l2_golden AS l3_migrator_golden
146
-
147
- LABEL layer="l3-migrator" \
148
- description="Migrator build tools with Prisma" \
149
- maintainer="{prefix}"
150
-
151
- # Install Prisma CLI globally (required for migrations, pinned)
152
- RUN bun add -g prisma@7.5.0 @prisma/client@7.5.0
153
-
154
- # Verify Prisma installation
155
- RUN echo "Prisma version: $(bunx prisma --version | head -1)"
156
-
157
- # ⚠️ CRITICAL: Infisical CLI is NOT installed in golden L3 images
158
- # Reason: curl to dl.cloudsmith.io hangs during Docker builds when CDN is slow
159
- # Solution: Use SKIP_INFISICAL_SETUP=1 build arg or runtime env var injection
160
- # Services read secrets from environment variables at runtime (no CLI needed)
161
- # See: .tilt/topologies/platform/docker/layers/l3_builder_layers.star
162
-
163
-
164
145
  # =============================================================================
165
146
  # L4-BACKEND-BUN: BACKEND PRODUCTION RUNTIME (BUN)
166
147
  # =============================================================================
@@ -256,8 +237,8 @@ LABEL layer="l4-migrator" \
256
237
 
257
238
  ENV NODE_ENV=production
258
239
 
259
- # Copy global Prisma installation from L3
260
- COPY --from=l3_migrator_golden /root/.bun/install/global /root/.bun/install/global
240
+ # Copy global Prisma installation from L3 (l3-backend carries the same pinned Prisma)
241
+ COPY --from=l3_backend_golden /root/.bun/install/global /root/.bun/install/global
261
242
 
262
243
  # ⚠️ Infisical CLI is NOT included in golden L4 images
263
244
  # The migrator reads secrets directly from environment variables at runtime
@@ -83,7 +83,8 @@ def _load_golden_prefix():
83
83
 
84
84
  _GOLDEN_PREFIX = _load_golden_prefix()
85
85
 
86
- DEFAULT_GOLDEN_L3_MIGRATOR_IMAGE = _GOLDEN_PREFIX + "-l3-migrator:latest"
86
+ # Migrators build on l3-backend; the golden build no longer makes a separate l3-migrator image.
87
+ DEFAULT_GOLDEN_L3_MIGRATOR_IMAGE = _GOLDEN_PREFIX + "-l3-backend:latest"
87
88
  DEFAULT_GOLDEN_L4_MIGRATOR_IMAGE = _GOLDEN_PREFIX + "-l4-migrator:latest"
88
89
 
89
90
  DEFAULT_DB_PORT = "5432"
@@ -1,7 +1,7 @@
1
1
  # 📋 Manifest Module
2
2
 
3
3
  **Status:** ✅ All Phases Complete! (Phase 1-5)
4
- **Location:** `.tilt/topologies/tilt/manifest/`
4
+ **Location:** `engine/topologies/tilt/manifest/`
5
5
  **Purpose:** Clean, modular manifest parsing, loading, validation, and discovery integration system
6
6
 
7
7
  ---
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tdk-landscape/tdk-cli-core",
3
- "version": "1.3.146",
3
+ "version": "1.3.148",
4
4
  "description": "TDK CLI — start services on your machine.",
5
5
  "homepage": "https://tdk-landscape.github.io/tdk-website",
6
6
  "repository": {