@tdk-landscape/tdk-cli-core 1.3.15 → 1.3.22

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 (274) hide show
  1. package/Tiltfile +144 -0
  2. package/discovery/AGENTS.md +362 -0
  3. package/discovery/TILT_DISCOVERY.star +424 -0
  4. package/discovery/Tiltfile +58 -0
  5. package/discovery/config.star +258 -0
  6. package/discovery/constants.star +127 -0
  7. package/discovery/deterministic.star +211 -0
  8. package/discovery/discovery_daemon.star +191 -0
  9. package/discovery/discovery_orchestrator.star +460 -0
  10. package/discovery/filtering.star +5 -0
  11. package/discovery/identity-management-backend/service.yaml +26 -0
  12. package/discovery/identity-management-frontend/service.yaml +29 -0
  13. package/discovery/identity-sdk/service.yaml +9 -0
  14. package/discovery/incremental_discovery.star +213 -0
  15. package/discovery/indexing.star +7 -0
  16. package/discovery/json_manifest_scanner.star +51 -0
  17. package/discovery/libraries.star +46 -0
  18. package/discovery/loading.star +23 -0
  19. package/discovery/manifest/constants.star +104 -0
  20. package/discovery/manifest/loading.star +386 -0
  21. package/discovery/manifest/normalize.star +281 -0
  22. package/discovery/manifest/validation.star +108 -0
  23. package/discovery/normalization.star +11 -0
  24. package/discovery/registry.star +544 -0
  25. package/discovery/resource_snapshot.py +382 -0
  26. package/discovery/resource_snapshot.star +143 -0
  27. package/discovery/schemas.star +1 -0
  28. package/discovery/services/platform/cdc/debezium/nats-connector/service.yaml +9 -0
  29. package/discovery/services/platform/cdc/nats-http-bridge/service.yaml +9 -0
  30. package/discovery/services/platform/orchestrator/orchestrator-glue-backend/service.yaml +26 -0
  31. package/discovery/services/platform/synthetic-monitor/service.yaml +9 -0
  32. package/discovery/test_resource_snapshot.py +251 -0
  33. package/discovery/validation.star +78 -0
  34. package/discovery/versioning.star +1 -0
  35. package/dist/commands/config.d.ts.map +1 -1
  36. package/dist/commands/config.js +11 -0
  37. package/dist/commands/config.js.map +1 -1
  38. package/dist/commands/doctor.d.ts.map +1 -1
  39. package/dist/commands/doctor.js +1 -2
  40. package/dist/commands/doctor.js.map +1 -1
  41. package/dist/commands/project.d.ts.map +1 -1
  42. package/dist/commands/project.js +36 -41
  43. package/dist/commands/project.js.map +1 -1
  44. package/dist/commands/resource.d.ts.map +1 -1
  45. package/dist/commands/resource.js +51 -55
  46. package/dist/commands/resource.js.map +1 -1
  47. package/dist/commands/stack.d.ts.map +1 -1
  48. package/dist/commands/stack.js +22 -24
  49. package/dist/commands/stack.js.map +1 -1
  50. package/dist/commands/ui.d.ts.map +1 -1
  51. package/dist/commands/ui.js +1 -2
  52. package/dist/commands/ui.js.map +1 -1
  53. package/dist/commands/up.d.ts.map +1 -1
  54. package/dist/commands/up.js +1 -2
  55. package/dist/commands/up.js.map +1 -1
  56. package/dist/commands/upgrade.d.ts +8 -0
  57. package/dist/commands/upgrade.d.ts.map +1 -1
  58. package/dist/commands/upgrade.js +59 -18
  59. package/dist/commands/upgrade.js.map +1 -1
  60. package/dist/generator/extension-fetch.d.ts +19 -0
  61. package/dist/generator/extension-fetch.d.ts.map +1 -1
  62. package/dist/generator/extension-fetch.js +71 -5
  63. package/dist/generator/extension-fetch.js.map +1 -1
  64. package/dist/generator/template-engine.d.ts +1 -0
  65. package/dist/generator/template-engine.d.ts.map +1 -1
  66. package/dist/generator/template-engine.js +50 -6
  67. package/dist/generator/template-engine.js.map +1 -1
  68. package/dist/utils/command-helpers.d.ts.map +1 -1
  69. package/dist/utils/command-helpers.js +7 -9
  70. package/dist/utils/command-helpers.js.map +1 -1
  71. package/dist/utils/constants.d.ts +1 -0
  72. package/dist/utils/constants.d.ts.map +1 -1
  73. package/dist/utils/constants.js +1 -0
  74. package/dist/utils/constants.js.map +1 -1
  75. package/dist/utils/errors.d.ts +2 -0
  76. package/dist/utils/errors.d.ts.map +1 -1
  77. package/dist/utils/errors.js +6 -1
  78. package/dist/utils/errors.js.map +1 -1
  79. package/dist/utils/project-features.d.ts.map +1 -1
  80. package/dist/utils/project-features.js +1 -1
  81. package/dist/utils/project-features.js.map +1 -1
  82. package/dist/utils/resource-features.d.ts.map +1 -1
  83. package/dist/utils/resource-features.js +2 -2
  84. package/dist/utils/resource-features.js.map +1 -1
  85. package/dist/utils/tar.js +4 -4
  86. package/dist/utils/tar.js.map +1 -1
  87. package/dist/utils/validation.d.ts +7 -0
  88. package/dist/utils/validation.d.ts.map +1 -1
  89. package/dist/utils/validation.js +9 -0
  90. package/dist/utils/validation.js.map +1 -1
  91. package/engine/AGENTS.md +705 -0
  92. package/engine/README.md +29 -0
  93. package/engine/REFACTORING_MANIFEST_SYSTEM.md +974 -0
  94. package/engine/Tiltfile +80 -0
  95. package/engine/assets/docker/golden-layers.Dockerfile +221 -0
  96. package/engine/assets/scripts/cleanup-completed-migrator-images.sh +37 -0
  97. package/engine/assets/scripts/cleanup-tilt-images.sh +120 -0
  98. package/engine/assets/scripts/mac-m1-resource-monitor.sh +121 -0
  99. package/engine/config.star +3 -0
  100. package/engine/docs/AUTODISCOVERY_TEST.md +182 -0
  101. package/engine/docs/C4-ARCHITECTURE-operations.md +396 -0
  102. package/engine/docs/C4-ARCHITECTURE-overview.md +284 -0
  103. package/engine/docs/C4-ARCHITECTURE.md +17 -0
  104. package/engine/docs/GOLDEN_IMAGE_INTEGRATION.md +349 -0
  105. package/engine/docs/MANIFEST_DRIVEN_ARCHITECTURE.md +357 -0
  106. package/engine/docs/README.md +284 -0
  107. package/engine/entrypoint.star +97 -0
  108. package/engine/lifecycle/orchestrator.star +260 -0
  109. package/engine/paths.star +717 -0
  110. package/engine/schemas/manifest-schema.json +301 -0
  111. package/engine/schemas/service-schema.json +301 -0
  112. package/engine/scripts/README.md +89 -0
  113. package/engine/scripts/build-and-publish-lib.sh +205 -0
  114. package/engine/scripts/check-lib-publish.sh +85 -0
  115. package/engine/scripts/debug-container.sh +258 -0
  116. package/engine/scripts/generate-manifest.sh +197 -0
  117. package/engine/spec.master +702 -0
  118. package/engine/spec.master.example +341 -0
  119. package/engine/topologies/README.md +34 -0
  120. package/engine/topologies/platform/docker/AGENTS.md +59 -0
  121. package/engine/topologies/platform/docker/auth/auth.star +167 -0
  122. package/engine/topologies/platform/docker/build/golden_image.star +37 -0
  123. package/engine/topologies/platform/docker/build/golden_image_build.star +82 -0
  124. package/engine/topologies/platform/docker/build/golden_image_constants.star +93 -0
  125. package/engine/topologies/platform/docker/build/golden_image_dockerfile.star +291 -0
  126. package/engine/topologies/platform/docker/compose/compose.star +636 -0
  127. package/engine/topologies/platform/docker/compose/compose_helpers.star +52 -0
  128. package/engine/topologies/platform/docker/compose/traefik_standalone.star +53 -0
  129. package/engine/topologies/platform/docker/config/bunignore.star +142 -0
  130. package/engine/topologies/platform/docker/config/dockerignore.star +150 -0
  131. package/engine/topologies/platform/docker/constants.star +170 -0
  132. package/engine/topologies/platform/docker/dockerfile/dockerfile.star +54 -0
  133. package/engine/topologies/platform/docker/generators/golden_docker_generator_v2.star +73 -0
  134. package/engine/topologies/platform/docker/index.star +27 -0
  135. package/engine/topologies/platform/docker/layers/bun_helpers.star +23 -0
  136. package/engine/topologies/platform/docker/layers/infisical/index.star +40 -0
  137. package/engine/topologies/platform/docker/layers/infisical/infisical_docker.star +262 -0
  138. package/engine/topologies/platform/docker/layers/l1_base_layers.star +87 -0
  139. package/engine/topologies/platform/docker/layers/l2_dependency_layers.star +125 -0
  140. package/engine/topologies/platform/docker/layers/l3_builder_layers.star +209 -0
  141. package/engine/topologies/platform/docker/layers/l4_runtime_layers.star +214 -0
  142. package/engine/topologies/platform/docker/layers/prisma/constants.star +135 -0
  143. package/engine/topologies/platform/docker/layers/prisma/db_readiness.star +96 -0
  144. package/engine/topologies/platform/docker/layers/prisma/filesystem_setup.star +109 -0
  145. package/engine/topologies/platform/docker/layers/prisma/migrate_script.star +98 -0
  146. package/engine/topologies/platform/docker/layers/prisma/prisma_build.star +126 -0
  147. package/engine/topologies/platform/docker/layers/prisma/prisma_runtime.star +161 -0
  148. package/engine/topologies/platform/docker/layers/prisma/secret_resolution.star +119 -0
  149. package/engine/topologies/platform/docker/networking/api_path_constants.star +230 -0
  150. package/engine/topologies/platform/docker/networking/sablier_container_cycle.star +27 -0
  151. package/engine/topologies/platform/docker/networking/traefik.star +232 -0
  152. package/engine/topologies/platform/docker/networking/traefik_constants.star +146 -0
  153. package/engine/topologies/platform/docker/networking/traefik_helpers.star +160 -0
  154. package/engine/topologies/platform/docker/secrets/infisical.star +135 -0
  155. package/engine/topologies/platform/net/proxy.star +4 -0
  156. package/engine/topologies/platform/registries/local.star +4 -0
  157. package/engine/topologies/platform/security/secrets.star +239 -0
  158. package/engine/topologies/platform/state/relational.star +4 -0
  159. package/engine/topologies/tilt/common/AGENTS.md +59 -0
  160. package/engine/topologies/tilt/common/utils.star +364 -0
  161. package/engine/topologies/tilt/common/utils_debug.star +69 -0
  162. package/engine/topologies/tilt/common/utils_deterministic.star +168 -0
  163. package/engine/topologies/tilt/common/utils_docker_networks.star +46 -0
  164. package/engine/topologies/tilt/common/utils_env.star +43 -0
  165. package/engine/topologies/tilt/common/utils_output.star +97 -0
  166. package/engine/topologies/tilt/config/AGENTS.md +68 -0
  167. package/engine/topologies/tilt/config/defaults.star +3 -0
  168. package/engine/topologies/tilt/config/feature_flags.star +10 -0
  169. package/engine/topologies/tilt/config/global.star +55 -0
  170. package/engine/topologies/tilt/config/profiles.star +382 -0
  171. package/engine/topologies/tilt/generators/agents_md.star +62 -0
  172. package/engine/topologies/tilt/generators/api_gateway.star +145 -0
  173. package/engine/topologies/tilt/generators/index.star +124 -0
  174. package/engine/topologies/tilt/generators/infisical/README.md +424 -0
  175. package/engine/topologies/tilt/generators/infisical/examples.star +312 -0
  176. package/engine/topologies/tilt/generators/infisical/index.star +57 -0
  177. package/engine/topologies/tilt/generators/infisical/machine_identity.star +420 -0
  178. package/engine/topologies/tilt/generators/infisical/organization.star +534 -0
  179. package/engine/topologies/tilt/generators/infisical/path_manager.star +476 -0
  180. package/engine/topologies/tilt/generators/infisical/secrets_generator.star +420 -0
  181. package/engine/topologies/tilt/generators/nginx_conf.star +143 -0
  182. package/engine/topologies/tilt/generators/npmrc.star +111 -0
  183. package/engine/topologies/tilt/generators/tsconfig.star +23 -0
  184. package/engine/topologies/tilt/generators/typescript/backend_library_tsconfig.star +71 -0
  185. package/engine/topologies/tilt/generators/typescript/backend_tsconfig.star +124 -0
  186. package/engine/topologies/tilt/generators/typescript/common.star +7 -0
  187. package/engine/topologies/tilt/generators/typescript/frontend_library_tsconfig.star +76 -0
  188. package/engine/topologies/tilt/generators/typescript/frontend_tsconfig.star +110 -0
  189. package/engine/topologies/tilt/generators/typescript/include.star +23 -0
  190. package/engine/topologies/tilt/generators/typescript/playwright_config.star +40 -0
  191. package/engine/topologies/tilt/generators/typescript/prisma_config.star +49 -0
  192. package/engine/topologies/tilt/generators/validators.star +853 -0
  193. package/engine/topologies/tilt/generators/vite/backend.star +78 -0
  194. package/engine/topologies/tilt/generators/vite/frontend.star +98 -0
  195. package/engine/topologies/tilt/generators/vite/generators.star +43 -0
  196. package/engine/topologies/tilt/generators/vite/helpers.star +244 -0
  197. package/engine/topologies/tilt/generators/vite/library.star +65 -0
  198. package/engine/topologies/tilt/generators/vite/sdk.star +73 -0
  199. package/engine/topologies/tilt/generators/vite/templates.star +737 -0
  200. package/engine/topologies/tilt/generators/vite_config.star +22 -0
  201. package/engine/topologies/tilt/manifest/AGENTS.md +61 -0
  202. package/engine/topologies/tilt/manifest/README.md +693 -0
  203. package/engine/topologies/tilt/manifest/__init__.star +218 -0
  204. package/engine/topologies/tilt/manifest/constants.star +252 -0
  205. package/engine/topologies/tilt/manifest/errors.star +266 -0
  206. package/engine/topologies/tilt/manifest/integration.star +339 -0
  207. package/engine/topologies/tilt/manifest/json_to_yaml.py +54 -0
  208. package/engine/topologies/tilt/manifest/loader.star +214 -0
  209. package/engine/topologies/tilt/manifest/mapper.star +227 -0
  210. package/engine/topologies/tilt/manifest/parser.star +400 -0
  211. package/engine/topologies/tilt/manifest/schema.star +462 -0
  212. package/engine/topologies/tilt/manifest/tests/test_integration.star +276 -0
  213. package/engine/topologies/tilt/manifest/tests/test_loader_parser.star +397 -0
  214. package/engine/topologies/tilt/manifest/tests/test_manifest.star +316 -0
  215. package/engine/topologies/tilt/manifest/tests/test_validator.star +470 -0
  216. package/engine/topologies/tilt/manifest/validator.star +717 -0
  217. package/engine/topologies/tilt/manifest/yaml_to_json.py +18 -0
  218. package/engine/topologies/tilt/resources/AGENTS.md +71 -0
  219. package/engine/topologies/tilt/resources/conditions.star +3 -0
  220. package/engine/topologies/tilt/resources/databases.star +244 -0
  221. package/engine/topologies/tilt/resources/declaration.star +3 -0
  222. package/engine/topologies/tilt/resources/deps.star +3 -0
  223. package/engine/topologies/tilt/resources/infra-loader.star +437 -0
  224. package/engine/topologies/tilt/resources/libs.star +30 -0
  225. package/engine/topologies/tilt/resources/libs_discovery.star +102 -0
  226. package/engine/topologies/tilt/resources/libs_paths.star +79 -0
  227. package/engine/topologies/tilt/resources/libs_resource_definition.star +151 -0
  228. package/engine/topologies/tilt/resources/libs_setup.star +164 -0
  229. package/engine/topologies/tilt/resources/libs_tsconfig.star +37 -0
  230. package/engine/topologies/tilt/resources/orchestrator/apply.star +77 -0
  231. package/engine/topologies/tilt/resources/orchestrator/apply_compose_resource_registration.star +431 -0
  232. package/engine/topologies/tilt/resources/orchestrator/apply_manifest_orchestration.star +81 -0
  233. package/engine/topologies/tilt/resources/orchestrator/apply_migrator_orchestration.star +148 -0
  234. package/engine/topologies/tilt/resources/orchestrator/apply_resource_validation.star +36 -0
  235. package/engine/topologies/tilt/resources/orchestrator/apply_runtime_flags.star +44 -0
  236. package/engine/topologies/tilt/resources/orchestrator/builders/typescript.star +164 -0
  237. package/engine/topologies/tilt/resources/orchestrator/generators/dependencies/AGENTS.md +75 -0
  238. package/engine/topologies/tilt/resources/orchestrator/generators/dependencies/index.star +21 -0
  239. package/engine/topologies/tilt/resources/orchestrator/generators/dependencies/resolver.star +134 -0
  240. package/engine/topologies/tilt/resources/orchestrator/generators/env.star +258 -0
  241. package/engine/topologies/tilt/resources/orchestrator/generators/frontend.star +169 -0
  242. package/engine/topologies/tilt/resources/orchestrator/generators/manifest_resource.star +524 -0
  243. package/engine/topologies/tilt/resources/orchestrator/helpers.star +33 -0
  244. package/engine/topologies/tilt/resources/orchestrator.star +54 -0
  245. package/engine/topologies/tilt/resources/ordering.star +3 -0
  246. package/engine/topologies/tilt/resources/triggers.star +3 -0
  247. package/engine/topologies/tilt/resources/watchers.star +299 -0
  248. package/engine/where-things-live.star +717 -0
  249. package/ext/Tiltfile +66 -0
  250. package/ext/ide-components/README.md +219 -0
  251. package/ext/ide-components/code_executor/server.py +268 -0
  252. package/ext/ide-components/code_viewer/server.py +206 -0
  253. package/ext/ide-components/config_inspector/server.py +1050 -0
  254. package/ext/ide-components/file_browser/server.py +285 -0
  255. package/ext/ide-components/shared/config_service.py +469 -0
  256. package/ext/ide-components/shared/file_utils.py +298 -0
  257. package/ext/ide-components/shared/http_utils.py +232 -0
  258. package/ext/ide-components/shared/static/styles.css +1334 -0
  259. package/ext/ide-components/shared/syntax_highlighter.py +140 -0
  260. package/ext/ide-components/shared/template_engine.py +123 -0
  261. package/ext/ide-components/shared/templates/base.html +121 -0
  262. package/ext/ide-components/shared/test_config_service.py +326 -0
  263. package/ext/ide-components/shared/tilt_integration.py +158 -0
  264. package/ext/ui-enhancements/cron-status-server.sh +49 -0
  265. package/ext/ui-enhancements/cron-status-tracker.sh +146 -0
  266. package/ext/ui-enhancements/extension.yaml +36 -0
  267. package/ext/ui-enhancements/tiltfile.py +99 -0
  268. package/ext/ui-enhancements/ui/cron-jobs-tab.css +396 -0
  269. package/ext/ui-enhancements/ui/help-panel.css +279 -0
  270. package/ext/ui-enhancements/ui/icons.css +125 -0
  271. package/ext/ui-enhancements/ui/tooltips.css +114 -0
  272. package/package.json +13 -9
  273. package/specs/specs/TILT_SERVICE_DEFAULTS.star +205 -0
  274. package/specs/specs/TILT_TECH_STACK.star +159 -0
@@ -0,0 +1,284 @@
1
+ # TDK Landscape Tilt Architecture - C4 Model
2
+
3
+ ## Level 1: System Context
4
+
5
+ ```mermaid
6
+ graph TB
7
+ Dev[Developer]
8
+ Tilt[Tilt Orchestrator]
9
+ Docker[Docker/OrbStack]
10
+ Git[Git Repository]
11
+ Services[Microservices<br/>30+ services]
12
+ Infra[Infrastructure<br/>Postgres, NATS, Traefik]
13
+
14
+ Dev -->|tilt up| Tilt
15
+ Tilt -->|watches| Git
16
+ Tilt -->|builds| Docker
17
+ Tilt -->|orchestrates| Services
18
+ Tilt -->|provisions| Infra
19
+ Docker -->|runs| Services
20
+ Docker -->|runs| Infra
21
+ Services -->|uses| Infra
22
+
23
+ style Tilt fill:#f9f,stroke:#333,stroke-width:4px
24
+ style Dev fill:#bbf,stroke:#333,stroke-width:2px
25
+ style Services fill:#bfb,stroke:#333,stroke-width:2px
26
+ style Infra fill:#fbb,stroke:#333,stroke-width:2px
27
+ ```
28
+
29
+ **Purpose**: Tilt automates the entire local development lifecycle - from code changes to running containers.
30
+
31
+ ---
32
+
33
+ ## Level 2: Container Diagram - Tilt SDK Architecture
34
+
35
+ ```mermaid
36
+ graph TB
37
+ subgraph "Developer Interface"
38
+ CLI[Tiltfile<br/>Main Entrypoint]
39
+ Focus[Focus Mode<br/>--focus=user]
40
+ end
41
+
42
+ subgraph "Core Layer"
43
+ Utils[Utils Module<br/>I/O, validation, helpers]
44
+ Manifest[Manifest Module<br/>JSON loading & validation]
45
+ Registry[Service Registry<br/>APP_RESOURCES definition]
46
+ DepSync[Dependency Sync<br/>package.json → configs]
47
+ end
48
+
49
+ subgraph "Provider Layer - Config Generators"
50
+ Docker[Docker Provider<br/>Dockerfile generation]
51
+ TS[TypeScript Provider<br/>tsconfig.json]
52
+ Vite[Vite Provider<br/>vite.config.ts]
53
+ NPM[Package Config<br/>.npmrc, bunfig.toml]
54
+ end
55
+
56
+ subgraph "Lifecycle Layer - Orchestration"
57
+ Libs[Library Manager<br/>Shared packages]
58
+ DB[Database Provider<br/>Per-service DBs]
59
+ Orch[Orchestrator<br/>Service coordination]
60
+ Watch[Watchers<br/>File change detection]
61
+ end
62
+
63
+ subgraph "Infrastructure"
64
+ Golden[Golden Image Builder<br/>Base Docker images]
65
+ Network[Network Manager<br/>Docker network repair]
66
+ Infisical[Secrets Validator<br/>Infisical integration]
67
+ end
68
+
69
+ CLI --> Focus
70
+ CLI --> Utils
71
+ Focus --> Registry
72
+ Utils --> Manifest
73
+ Manifest --> Registry
74
+ Registry --> DepSync
75
+
76
+ DepSync --> Docker
77
+ DepSync --> TS
78
+ DepSync --> Vite
79
+ DepSync --> NPM
80
+
81
+ Docker --> Libs
82
+ TS --> Libs
83
+ Vite --> Libs
84
+ NPM --> Libs
85
+
86
+ Libs --> DB
87
+ DB --> Orch
88
+ Orch --> Watch
89
+
90
+ Orch --> Golden
91
+ Orch --> Network
92
+ Orch --> Infisical
93
+
94
+ style CLI fill:#f9f,stroke:#333,stroke-width:4px
95
+ style Registry fill:#ff9,stroke:#333,stroke-width:3px
96
+ style Docker fill:#9cf,stroke:#333,stroke-width:3px
97
+ style Orch fill:#9f9,stroke:#333,stroke-width:3px
98
+ ```
99
+
100
+ ---
101
+
102
+ ## Level 3: Component Diagram - Docker Build Pipeline
103
+
104
+ ```mermaid
105
+ graph LR
106
+ subgraph "Input Detection"
107
+ Manifest[Service Manifest<br/>JSON file]
108
+ PkgJSON[package.json<br/>Dependencies]
109
+ Code[Source Code<br/>src/]
110
+ end
111
+
112
+ subgraph "Golden Image System"
113
+ L1Base[L1: OS Base<br/>Alpine + tools]
114
+ L2Deps[L2: Dependencies<br/>Bun + packages]
115
+ L4Runtime[L4: Runtime<br/>Backend/Frontend/Migrator]
116
+ end
117
+
118
+ subgraph "Service-Specific Layers"
119
+ L3Build[L3: Build Layer<br/>TypeScript compilation]
120
+ L4Service[L4: Service Runtime<br/>Final container]
121
+ end
122
+
123
+ subgraph "Output Artifacts"
124
+ DockerfileApp[Dockerfile.app.autogenerated]
125
+ DockerfileMigrator[Dockerfile.migrator.autogenerated]
126
+ Compose[docker-compose.autogenerated.yml]
127
+ end
128
+
129
+ subgraph "Orchestration"
130
+ TiltResource[Tilt Resource<br/>service-backend]
131
+ DockerBuild[Docker Build<br/>Multi-stage]
132
+ Container[Running Container<br/>Port 4000]
133
+ end
134
+
135
+ Manifest --> L1Base
136
+ PkgJSON --> L2Deps
137
+ Code --> L3Build
138
+
139
+ L1Base --> L2Deps
140
+ L2Deps --> L3Build
141
+ L3Build --> L4Service
142
+ L4Runtime --> L4Service
143
+
144
+ L4Service --> DockerfileApp
145
+ L4Service --> DockerfileMigrator
146
+ DockerfileApp --> Compose
147
+ DockerfileMigrator --> Compose
148
+
149
+ Compose --> TiltResource
150
+ TiltResource --> DockerBuild
151
+ DockerBuild --> Container
152
+
153
+ style L1Base fill:#faa,stroke:#333,stroke-width:2px
154
+ style L2Deps fill:#fca,stroke:#333,stroke-width:2px
155
+ style L3Build fill:#fea,stroke:#333,stroke-width:2px
156
+ style L4Service fill:#afa,stroke:#333,stroke-width:2px
157
+ style Container fill:#9f9,stroke:#333,stroke-width:3px
158
+ ```
159
+
160
+ ---
161
+
162
+ ## Level 4A: Code Flow - Manifest-Driven Resource Creation
163
+
164
+ ```mermaid
165
+ sequenceDiagram
166
+ participant Tilt as Tilt Orchestrator
167
+ participant Manifest as service.json
168
+ participant ConfigGen as {service}-config-gen (Tilt Resource)
169
+ participant Generators as 10+ Config Generators
170
+ participant Docker as Docker Build
171
+
172
+ Tilt->>Manifest: 1. Scan & Auto-discover
173
+ Manifest->>ConfigGen: 2. Create per-manifest resource
174
+ Note over ConfigGen: Resource name: user-backend-config-gen<br/>Label: config-gen, user<br/>Deps: manifest.json, package.json
175
+
176
+ ConfigGen->>Generators: 3. Trigger all generators for THIS manifest
177
+ Note over Generators: tsconfig.json (Docker)<br/>tsconfig.json (local)<br/>vite.config.ts<br/>Dockerfile.app.autogenerated<br/>.dockerignore<br/>.env.autogenerated<br/>.npmrc (Docker)<br/>.npmrc (local)<br/>bunfig.toml (Docker)<br/>bunfig.toml (local)<br/>nginx.conf (if frontend)<br/>prisma.config.ts (if backend)
178
+
179
+ Generators-->>ConfigGen: 4. Configs generated
180
+ ConfigGen->>Docker: 5. Trigger Docker build (depends on config-gen)
181
+ Docker-->>Tilt: 6. Service running
182
+
183
+ Note over Manifest,Docker: ✅ Manifest-driven: 1 manifest → 1 resource → 10 generators<br/>❌ NOT bulk: 100 manifests → 1 loop → 1000 configs
184
+ ```
185
+
186
+ ### Architecture Evolution
187
+
188
+ **Before (Bulk Generation)** - Lines 112-251 of apply.star:
189
+ ```starlark
190
+ for resource in ALL_RESOURCES: # 30 services
191
+ generate_vite(resource) # Loop 1
192
+ for resource in ALL_RESOURCES:
193
+ generate_dockerfile(resource) # Loop 2
194
+ for resource in ALL_RESOURCES:
195
+ generate_tsconfig(resource) # Loop 3
196
+ # ... 7 more loops
197
+
198
+ # ❌ Problems:
199
+ # - No per-resource tracking in Tilt UI
200
+ # - Change 1 manifest → regenerate ALL configs
201
+ # - Can't see which config belongs to which service
202
+ ```
203
+
204
+ **After (Manifest-Driven)** - Lines 114-136 of apply.star:
205
+ ```starlark
206
+ for resource in resource_resources:
207
+ manifest = load_manifest(resource)
208
+
209
+ # Create ONE Tilt resource that generates ALL configs for THIS service
210
+ config_gen_resource = ManifestResource.create_config_resource(
211
+ resource_name, resource, manifest, backend_manifest, ctx
212
+ )
213
+ # Result: user-management-backend-config-gen (visible in Tilt UI)
214
+
215
+ # ✅ Benefits:
216
+ # - 30 granular Tilt resources (one per service)
217
+ # - Change 1 manifest → regenerate 10 configs for THAT service only
218
+ # - Clear dependency: Docker build depends on config-gen resource
219
+ ```
220
+
221
+ ### Tilt UI Visibility
222
+
223
+ In Tilt dashboard you now see per-manifest resources:
224
+
225
+ ```
226
+ 📁 config-gen (label)
227
+ ├─ user-management-backend-config-gen ✅
228
+ ├─ user-management-frontend-config-gen ✅
229
+ ├─ identity-management-backend-config-gen ✅
230
+ ├─ identity-management-frontend-config-gen ✅
231
+ └─ staff-management-backend-config-gen ✅
232
+
233
+ 📁 user (label)
234
+ ├─ user-management-backend-config-gen ⬆️ (dependency)
235
+ ├─ user-management-backend ✅ (depends on config-gen)
236
+ ├─ user-management-frontend-config-gen ⬆️ (dependency)
237
+ └─ user-management-frontend ✅ (depends on config-gen)
238
+ ```
239
+
240
+ ### Dependency Chain
241
+
242
+ ```
243
+ manifest.json ─┐
244
+ package.json ─┼─→ {service}-config-gen ───→ {service} (Docker)
245
+ │ (10+ generators) (depends on configs)
246
+
247
+ Infrastructure ─┘
248
+ golden-image (L1-L4 build cache, not a runtime dep) │ postgres (Free) │
249
+ verdaccio (Premium, requires TDK_LICENSE_KEY) - each independent,
250
+ gated by should_enable(), see infra-loader.star
251
+ ```
252
+
253
+ ---
254
+
255
+ ## Level 4B: Code Flow - Dependency Synchronization
256
+
257
+ ```mermaid
258
+ sequenceDiagram
259
+ participant Dev as Developer
260
+ participant File as package.json
261
+ participant Tilt as Tilt Watcher
262
+ participant DepSync as Dependency Sync
263
+ participant TS as TSConfig Generator
264
+ participant Vite as Vite Generator
265
+ participant Docker as Docker Generator
266
+ participant Service as Service Container
267
+
268
+ Dev->>File: bun add @tdk-landscape/eventing
269
+ File->>Tilt: File change detected
270
+ Tilt->>DepSync: Trigger sync
271
+ DepSync->>DepSync: Extract internal deps
272
+ DepSync->>DepSync: Resolve library paths
273
+ DepSync->>TS: Generate tsconfig.json paths
274
+ DepSync->>Vite: Generate vite.config.ts aliases
275
+ DepSync->>Docker: Update COPY statements
276
+ Docker->>Docker: Regenerate Dockerfile
277
+ Docker->>Service: Rebuild container
278
+ Service-->>Dev: Service restarted with new dependency
279
+
280
+ Note over DepSync,Docker: Convention over Configuration:<br/>@tdk-landscape/platform-x → platform/packages/platform-x/src
281
+ ```
282
+
283
+ ---
284
+
@@ -0,0 +1,17 @@
1
+ # TDK Landscape Tilt Architecture - C4 Model
2
+
3
+ This document was split to keep each file focused and maintainable.
4
+
5
+ ## Architecture Docs Index
6
+
7
+ - [C4 Overview (Context, Containers, Components, Core Flows)](./C4-ARCHITECTURE-overview.md)
8
+ - [C4 Operations (Detailed Breakdown, Principles, Performance, Boundaries)](./C4-ARCHITECTURE-operations.md)
9
+
10
+ ## Why split
11
+
12
+ - The original file had grown to 678 lines and mixed conceptual and operational concerns.
13
+ - Splitting improves navigation and reduces merge conflicts when updating documentation.
14
+
15
+ ## Backward compatibility
16
+
17
+ - Existing links to `C4-ARCHITECTURE.md` still work and now point to this index.
@@ -0,0 +1,349 @@
1
+ # Golden Image Integration Guide
2
+
3
+ ## Overview
4
+
5
+ The TDK Landscape monorepo now includes a **Golden Image** workflow that significantly reduces service build times from 60+ seconds to **<5 seconds** by pre-building heavy dependencies into a base Docker image.
6
+
7
+ ## Architecture Integration
8
+
9
+ ### 1. Provider Layer (`.tilt/providers/docker/`)
10
+
11
+ **File**: `.tilt/providers/docker/golden-image.star`
12
+
13
+ The golden image provider follows the established Tilt SDK pattern:
14
+
15
+ ```starlark
16
+ GoldenImage = struct(
17
+ build = _build_golden_image, # Builds the base image
18
+ check_exists = _check_golden_image_exists, # Validates existence
19
+ get_reference = _get_golden_image_reference, # Returns image name
20
+ generate_dockerfile = _generate_golden_dockerfile # Generates Dockerfile
21
+ )
22
+ ```
23
+
24
+ **Exported via**: `.tilt/providers/docker/index.star`
25
+ ```starlark
26
+ Docker = struct(
27
+ # ... existing functions
28
+ golden_image = GoldenImage,
29
+ )
30
+ ```
31
+
32
+ ### 2. Infrastructure Layer (`.tilt/provisioner/infra-loader.star`)
33
+
34
+ The golden image is treated as **infrastructure**, building before application services:
35
+
36
+ ```starlark
37
+ def load_all_infrastructure(should_enable, fix_docker_networks_fn, docker_provider, write_file_fn):
38
+ # Initialize networks first
39
+ _init_networks(fix_docker_networks_fn)
40
+
41
+ # Build golden image before other infrastructure
42
+ _generate_golden_dockerfile(should_enable, docker_provider, write_file_fn)
43
+ golden_image_resource = _load_golden_image(should_enable, docker_provider)
44
+
45
+ # Load other infrastructure (database, verdaccio, etc.)
46
+ ...
47
+
48
+ return golden_image_resource
49
+ ```
50
+
51
+ **Key Functions**:
52
+ - `_load_golden_image()` - Creates `local_resource` for building the image
53
+ - `_generate_golden_dockerfile()` - Auto-generates `docker/golden.Dockerfile` if missing
54
+
55
+ ### 3. Orchestrator Integration (`.tilt/provisioner/orchestrator/apply.star`)
56
+
57
+ Services automatically depend on the golden image:
58
+
59
+ ```starlark
60
+ # Infrastructure dependencies
61
+ infra_deps = []
62
+ if should_enable('database-management'):
63
+ infra_deps.extend(['postgres', 'provision-db-' + s_name])
64
+ if should_enable('verdaccio'):
65
+ infra_deps.append('verdaccio')
66
+ if should_enable('golden-image') and ctx.get('golden_image_resource'):
67
+ infra_deps.append(ctx['golden_image_resource']) # ← Added
68
+ ```
69
+
70
+ This ensures the golden image builds before any service Dockerfiles are processed.
71
+
72
+ ### 4. Layer Generator Updates (`.tilt/providers/docker/layers/l1_base_layers.star`)
73
+
74
+ The L1 base layer now intelligently uses the golden image:
75
+
76
+ ```starlark
77
+ GOLDEN_IMAGE = "TDK Landscape-base:latest"
78
+
79
+ def L1_generate_os_base(base_image = None, maintainer = "TDK Landscape", use_golden = True):
80
+ if base_image == None:
81
+ base_image = GOLDEN_IMAGE if use_golden else ALPINE_BASE
82
+
83
+ # If using golden image, skip dependency installation
84
+ if base_image == GOLDEN_IMAGE or "TDK Landscape-base" in base_image:
85
+ return (
86
+ "FROM " + base_image + " AS l1_os_base\n"
87
+ + "# Dependencies pre-installed in golden image\n"
88
+ + "WORKDIR /app\n"
89
+ )
90
+
91
+ # Standard base with full dependency installation
92
+ ...
93
+ ```
94
+
95
+ ### 5. Configuration (`.tilt/core/registry/config.star`)
96
+
97
+ Golden image is **enabled by default**. Verdaccio is Premium and off by
98
+ default - it requires TDK_LICENSE_KEY (see project-features.ts):
99
+
100
+ ```starlark
101
+ DEFAULTS = {
102
+ # Infrastructure defaults
103
+ 'database-management': True,
104
+ 'proxy': True,
105
+ 'verdaccio': False, # Premium - requires TDK_LICENSE_KEY
106
+ 'golden-image': True, # ← Added
107
+ ...
108
+ }
109
+ ```
110
+
111
+ ### 6. Tiltfile Integration
112
+
113
+ The main Tiltfile passes required context:
114
+
115
+ ```starlark
116
+ # Infrastructure loading with golden image support
117
+ GOLDEN_IMAGE_RESOURCE = Infra.load_all(
118
+ should_enable,
119
+ Utils.fix_docker_networks,
120
+ Docker, # ← Docker provider
121
+ Utils.write_file_if_changed # ← File writer
122
+ )
123
+
124
+ # Store in context for orchestrator
125
+ if GOLDEN_IMAGE_RESOURCE:
126
+ TILT_CONTEXT['golden_image_resource'] = GOLDEN_IMAGE_RESOURCE
127
+ ```
128
+
129
+ ## Resource Dependencies Graph
130
+
131
+ ```
132
+ init-networks
133
+
134
+ golden-image-build (local_resource)
135
+
136
+ database, verdaccio, ... (infrastructure)
137
+
138
+ service-backend-1, service-backend-2, ... (applications)
139
+ ```
140
+
141
+ ## How It Works
142
+
143
+ ### Build Process
144
+
145
+ 1. **Tilt Startup**:
146
+ - `Infra.load_all()` is called
147
+ - `_generate_golden_dockerfile()` creates `docker/golden.Dockerfile` if missing
148
+ - `_load_golden_image()` registers a `local_resource` named `golden-image-build`
149
+
150
+ 2. **Golden Image Build**:
151
+ - Resource: `golden-image-build`
152
+ - Labels: `['infra.docker', 'golden-image']`
153
+ - Trigger: Manual or when `docker/golden.Dockerfile` changes
154
+ - Command: `docker build -f docker/golden.Dockerfile -t TDK Landscape-base:latest .`
155
+
156
+ 3. **Service Builds**:
157
+ - Services declare `resource_deps=['golden-image-build']` (added automatically via `infra_deps`)
158
+ - Service Dockerfiles generate with `FROM TDK Landscape-base:latest AS l1_os_base`
159
+ - Only service-specific layers rebuild (dependencies already in base)
160
+
161
+ ### Performance Impact
162
+
163
+ **Before (without golden image)**:
164
+ - Each service: ~60-90 seconds
165
+ - Total for 5 services: ~5-7 minutes
166
+ - Includes: Alpine base download, Bun installation, Prisma CLI, system deps
167
+
168
+ **After (with golden image)**:
169
+ - Golden image: ~45 seconds (one-time)
170
+ - Each service: ~3-5 seconds
171
+ - Total for 5 services: ~1 minute
172
+ - Includes: Only service-specific code and dependencies
173
+
174
+ **Savings**: ~80% reduction in total build time
175
+
176
+ ## Usage
177
+
178
+ ### Enable/Disable
179
+
180
+ **Via .env**:
181
+ ```bash
182
+ # Not needed - controlled via DEFAULTS
183
+ ```
184
+
185
+ **Via CLI**:
186
+ ```bash
187
+ tilt up -- --golden-image=false # Disable
188
+ ```
189
+
190
+ **Via Focus Mode**:
191
+ ```bash
192
+ tilt up -- --focus user # Golden image auto-enabled (in ALWAYS_ENABLED_INFRA)
193
+ ```
194
+
195
+ ### Rebuild Golden Image
196
+
197
+ **Trigger in Tilt UI**:
198
+ 1. Find `golden-image-build` resource in left sidebar
199
+ 2. Click resource name
200
+ 3. Click "Trigger Update" button
201
+
202
+ **CLI**:
203
+ ```bash
204
+ docker build -f docker/golden.Dockerfile -t TDK Landscape-base:latest .
205
+ ```
206
+
207
+ **Automatic Rebuild**:
208
+ - Triggered when `docker/golden.Dockerfile` changes
209
+ - Tilt watches this file via `deps=[GOLDEN_DOCKERFILE]`
210
+
211
+ ### Customize Golden Image
212
+
213
+ **Option 1: Edit Generated File** (temporary):
214
+ ```bash
215
+ vim docker/golden.Dockerfile
216
+ # Trigger rebuild in Tilt
217
+ ```
218
+
219
+ **Option 2: Update Generator** (permanent):
220
+ ```bash
221
+ vim .tilt/providers/docker/golden-image.star
222
+ # Edit _generate_golden_dockerfile() function
223
+ # Delete docker/golden.Dockerfile
224
+ # Restart Tilt to regenerate
225
+ ```
226
+
227
+ ## File Structure
228
+
229
+ ```
230
+ tdk/
231
+ ├── docker/
232
+ │ ├── golden.Dockerfile # Auto-generated base image
233
+ │ └── README.md # Usage guide
234
+ ├── .tilt/
235
+ │ ├── providers/
236
+ │ │ └── docker/
237
+ │ │ ├── golden-image.star # Provider implementation
238
+ │ │ ├── index.star # Exports GoldenImage
239
+ │ │ └── layers/
240
+ │ │ └── l1_base_layers.star # Uses golden image
241
+ │ ├── lifecycle/
242
+ │ │ ├── infra-loader.star # Builds golden image
243
+ │ │ └── orchestrator/
244
+ │ │ └── apply.star # Adds resource deps
245
+ │ └── core/
246
+ │ └── registry/
247
+ │ └── config.star # DEFAULTS configuration
248
+ └── Tiltfile # Main integration
249
+ ```
250
+
251
+ ## Troubleshooting
252
+
253
+ ### Golden Image Not Building
254
+
255
+ **Symptoms**: Services fail with "image not found: TDK Landscape-base:latest"
256
+
257
+ **Diagnosis**:
258
+ ```bash
259
+ docker image inspect TDK Landscape-base:latest
260
+ ```
261
+
262
+ **Fix**:
263
+ ```bash
264
+ docker build -f docker/golden.Dockerfile -t TDK Landscape-base:latest .
265
+ ```
266
+
267
+ ### Services Not Using Golden Image
268
+
269
+ **Symptoms**: Service builds still take 60+ seconds
270
+
271
+ **Check Generated Dockerfiles**:
272
+ ```bash
273
+ grep "FROM TDK Landscape-base" services/*/*/*/Dockerfile.app.autogenerated
274
+ ```
275
+
276
+ **Expected Output**:
277
+ ```
278
+ FROM TDK Landscape-base:latest AS l1_os_base
279
+ ```
280
+
281
+ **If Missing**: L1 layer not using golden image - check `use_golden` parameter
282
+
283
+ ### Golden Image Resource Missing
284
+
285
+ **Symptoms**: `ctx.get('golden_image_resource')` returns None
286
+
287
+ **Check**:
288
+ 1. Verify `'golden-image': True` in DEFAULTS
289
+ 2. Check Tiltfile stores `GOLDEN_IMAGE_RESOURCE` in `TILT_CONTEXT`
290
+ 3. Restart Tilt
291
+
292
+ ## Testing
293
+
294
+ Run integration tests:
295
+ ```bash
296
+ ./test-golden-image.sh
297
+ ```
298
+
299
+ **Tests**:
300
+ 1. ✅ Provider files exist
301
+ 2. ✅ DEFAULTS configuration
302
+ 3. ✅ Docker provider exports GoldenImage
303
+ 4. ✅ Infrastructure loader integrates golden image
304
+ 5. ✅ Tiltfile passes Docker provider
305
+ 6. ✅ L1 layer supports golden image
306
+
307
+ ## Advanced: Disabling Per-Service
308
+
309
+ To opt-out a specific service from using the golden image:
310
+
311
+ **In `golden_docker_generator_v2.star`**:
312
+ ```starlark
313
+ def L4_generate_orchestrator(res_path, use_golden_image = True, ...):
314
+ parts.append(L1_generate_os_base(use_golden=use_golden_image))
315
+ ...
316
+ ```
317
+
318
+ **In service manifest** (`.tilt/service.manifest.json`):
319
+ ```json
320
+ {
321
+ "useGoldenImage": false
322
+ }
323
+ ```
324
+
325
+ ## OrbStack Compatibility
326
+
327
+ The golden image is optimized for **OrbStack**:
328
+ - No registry push/pull needed
329
+ - Images stored in local OrbStack cache
330
+ - Fast layer sharing between services
331
+ - Resource-efficient (single base image shared)
332
+
333
+ **Does NOT require**:
334
+ - External Docker registry
335
+ - Image push/pull credentials
336
+ - Network bandwidth for base image
337
+
338
+ ## Next Steps
339
+
340
+ 1. **Extend Golden Image**: Add more common dependencies (e.g., PostgreSQL client, Redis tools)
341
+ 2. **Version Golden Image**: Tag with version numbers for reproducibility
342
+ 3. **Multi-Architecture**: Support ARM64 and AMD64 variants
343
+ 4. **Layer Optimization**: Further reduce golden image size
344
+
345
+ ## References
346
+
347
+ - [Docker Multi-Stage Builds](https://docs.docker.com/build/building/multi-stage/)
348
+ - [Tilt Local Resources](https://docs.tilt.dev/local_resource.html)
349
+ - [OrbStack Performance](https://orbstack.dev/features)