@tdk-landscape/tdk-cli-core 1.3.14 → 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 (277) hide show
  1. package/README.md +3 -3
  2. package/Tiltfile +144 -0
  3. package/discovery/AGENTS.md +362 -0
  4. package/discovery/TILT_DISCOVERY.star +424 -0
  5. package/discovery/Tiltfile +58 -0
  6. package/discovery/config.star +258 -0
  7. package/discovery/constants.star +127 -0
  8. package/discovery/deterministic.star +211 -0
  9. package/discovery/discovery_daemon.star +191 -0
  10. package/discovery/discovery_orchestrator.star +460 -0
  11. package/discovery/filtering.star +5 -0
  12. package/discovery/identity-management-backend/service.yaml +26 -0
  13. package/discovery/identity-management-frontend/service.yaml +29 -0
  14. package/discovery/identity-sdk/service.yaml +9 -0
  15. package/discovery/incremental_discovery.star +213 -0
  16. package/discovery/indexing.star +7 -0
  17. package/discovery/json_manifest_scanner.star +51 -0
  18. package/discovery/libraries.star +46 -0
  19. package/discovery/loading.star +23 -0
  20. package/discovery/manifest/constants.star +104 -0
  21. package/discovery/manifest/loading.star +386 -0
  22. package/discovery/manifest/normalize.star +281 -0
  23. package/discovery/manifest/validation.star +108 -0
  24. package/discovery/normalization.star +11 -0
  25. package/discovery/registry.star +544 -0
  26. package/discovery/resource_snapshot.py +382 -0
  27. package/discovery/resource_snapshot.star +143 -0
  28. package/discovery/schemas.star +1 -0
  29. package/discovery/services/platform/cdc/debezium/nats-connector/service.yaml +9 -0
  30. package/discovery/services/platform/cdc/nats-http-bridge/service.yaml +9 -0
  31. package/discovery/services/platform/orchestrator/orchestrator-glue-backend/service.yaml +26 -0
  32. package/discovery/services/platform/synthetic-monitor/service.yaml +9 -0
  33. package/discovery/test_resource_snapshot.py +251 -0
  34. package/discovery/validation.star +78 -0
  35. package/discovery/versioning.star +1 -0
  36. package/dist/commands/config.d.ts.map +1 -1
  37. package/dist/commands/config.js +11 -0
  38. package/dist/commands/config.js.map +1 -1
  39. package/dist/commands/doctor.d.ts.map +1 -1
  40. package/dist/commands/doctor.js +1 -2
  41. package/dist/commands/doctor.js.map +1 -1
  42. package/dist/commands/project.d.ts.map +1 -1
  43. package/dist/commands/project.js +36 -41
  44. package/dist/commands/project.js.map +1 -1
  45. package/dist/commands/resource.d.ts.map +1 -1
  46. package/dist/commands/resource.js +51 -55
  47. package/dist/commands/resource.js.map +1 -1
  48. package/dist/commands/stack.d.ts.map +1 -1
  49. package/dist/commands/stack.js +22 -24
  50. package/dist/commands/stack.js.map +1 -1
  51. package/dist/commands/ui.d.ts.map +1 -1
  52. package/dist/commands/ui.js +1 -2
  53. package/dist/commands/ui.js.map +1 -1
  54. package/dist/commands/up.d.ts.map +1 -1
  55. package/dist/commands/up.js +1 -2
  56. package/dist/commands/up.js.map +1 -1
  57. package/dist/commands/upgrade.d.ts +8 -0
  58. package/dist/commands/upgrade.d.ts.map +1 -1
  59. package/dist/commands/upgrade.js +62 -21
  60. package/dist/commands/upgrade.js.map +1 -1
  61. package/dist/generator/extension-fetch.d.ts +19 -0
  62. package/dist/generator/extension-fetch.d.ts.map +1 -1
  63. package/dist/generator/extension-fetch.js +71 -5
  64. package/dist/generator/extension-fetch.js.map +1 -1
  65. package/dist/generator/template-engine.d.ts +1 -0
  66. package/dist/generator/template-engine.d.ts.map +1 -1
  67. package/dist/generator/template-engine.js +50 -6
  68. package/dist/generator/template-engine.js.map +1 -1
  69. package/dist/utils/command-helpers.d.ts.map +1 -1
  70. package/dist/utils/command-helpers.js +7 -9
  71. package/dist/utils/command-helpers.js.map +1 -1
  72. package/dist/utils/constants.d.ts +1 -0
  73. package/dist/utils/constants.d.ts.map +1 -1
  74. package/dist/utils/constants.js +1 -0
  75. package/dist/utils/constants.js.map +1 -1
  76. package/dist/utils/errors.d.ts +2 -0
  77. package/dist/utils/errors.d.ts.map +1 -1
  78. package/dist/utils/errors.js +6 -1
  79. package/dist/utils/errors.js.map +1 -1
  80. package/dist/utils/paths.js +1 -1
  81. package/dist/utils/paths.js.map +1 -1
  82. package/dist/utils/project-features.d.ts.map +1 -1
  83. package/dist/utils/project-features.js +1 -1
  84. package/dist/utils/project-features.js.map +1 -1
  85. package/dist/utils/resource-features.d.ts.map +1 -1
  86. package/dist/utils/resource-features.js +2 -2
  87. package/dist/utils/resource-features.js.map +1 -1
  88. package/dist/utils/tar.js +4 -4
  89. package/dist/utils/tar.js.map +1 -1
  90. package/dist/utils/validation.d.ts +7 -0
  91. package/dist/utils/validation.d.ts.map +1 -1
  92. package/dist/utils/validation.js +9 -0
  93. package/dist/utils/validation.js.map +1 -1
  94. package/engine/AGENTS.md +705 -0
  95. package/engine/README.md +29 -0
  96. package/engine/REFACTORING_MANIFEST_SYSTEM.md +974 -0
  97. package/engine/Tiltfile +80 -0
  98. package/engine/assets/docker/golden-layers.Dockerfile +221 -0
  99. package/engine/assets/scripts/cleanup-completed-migrator-images.sh +37 -0
  100. package/engine/assets/scripts/cleanup-tilt-images.sh +120 -0
  101. package/engine/assets/scripts/mac-m1-resource-monitor.sh +121 -0
  102. package/engine/config.star +3 -0
  103. package/engine/docs/AUTODISCOVERY_TEST.md +182 -0
  104. package/engine/docs/C4-ARCHITECTURE-operations.md +396 -0
  105. package/engine/docs/C4-ARCHITECTURE-overview.md +284 -0
  106. package/engine/docs/C4-ARCHITECTURE.md +17 -0
  107. package/engine/docs/GOLDEN_IMAGE_INTEGRATION.md +349 -0
  108. package/engine/docs/MANIFEST_DRIVEN_ARCHITECTURE.md +357 -0
  109. package/engine/docs/README.md +284 -0
  110. package/engine/entrypoint.star +97 -0
  111. package/engine/lifecycle/orchestrator.star +260 -0
  112. package/engine/paths.star +717 -0
  113. package/engine/schemas/manifest-schema.json +301 -0
  114. package/engine/schemas/service-schema.json +301 -0
  115. package/engine/scripts/README.md +89 -0
  116. package/engine/scripts/build-and-publish-lib.sh +205 -0
  117. package/engine/scripts/check-lib-publish.sh +85 -0
  118. package/engine/scripts/debug-container.sh +258 -0
  119. package/engine/scripts/generate-manifest.sh +197 -0
  120. package/engine/spec.master +702 -0
  121. package/engine/spec.master.example +341 -0
  122. package/engine/topologies/README.md +34 -0
  123. package/engine/topologies/platform/docker/AGENTS.md +59 -0
  124. package/engine/topologies/platform/docker/auth/auth.star +167 -0
  125. package/engine/topologies/platform/docker/build/golden_image.star +37 -0
  126. package/engine/topologies/platform/docker/build/golden_image_build.star +82 -0
  127. package/engine/topologies/platform/docker/build/golden_image_constants.star +93 -0
  128. package/engine/topologies/platform/docker/build/golden_image_dockerfile.star +291 -0
  129. package/engine/topologies/platform/docker/compose/compose.star +636 -0
  130. package/engine/topologies/platform/docker/compose/compose_helpers.star +52 -0
  131. package/engine/topologies/platform/docker/compose/traefik_standalone.star +53 -0
  132. package/engine/topologies/platform/docker/config/bunignore.star +142 -0
  133. package/engine/topologies/platform/docker/config/dockerignore.star +150 -0
  134. package/engine/topologies/platform/docker/constants.star +170 -0
  135. package/engine/topologies/platform/docker/dockerfile/dockerfile.star +54 -0
  136. package/engine/topologies/platform/docker/generators/golden_docker_generator_v2.star +73 -0
  137. package/engine/topologies/platform/docker/index.star +27 -0
  138. package/engine/topologies/platform/docker/layers/bun_helpers.star +23 -0
  139. package/engine/topologies/platform/docker/layers/infisical/index.star +40 -0
  140. package/engine/topologies/platform/docker/layers/infisical/infisical_docker.star +262 -0
  141. package/engine/topologies/platform/docker/layers/l1_base_layers.star +87 -0
  142. package/engine/topologies/platform/docker/layers/l2_dependency_layers.star +125 -0
  143. package/engine/topologies/platform/docker/layers/l3_builder_layers.star +209 -0
  144. package/engine/topologies/platform/docker/layers/l4_runtime_layers.star +214 -0
  145. package/engine/topologies/platform/docker/layers/prisma/constants.star +135 -0
  146. package/engine/topologies/platform/docker/layers/prisma/db_readiness.star +96 -0
  147. package/engine/topologies/platform/docker/layers/prisma/filesystem_setup.star +109 -0
  148. package/engine/topologies/platform/docker/layers/prisma/migrate_script.star +98 -0
  149. package/engine/topologies/platform/docker/layers/prisma/prisma_build.star +126 -0
  150. package/engine/topologies/platform/docker/layers/prisma/prisma_runtime.star +161 -0
  151. package/engine/topologies/platform/docker/layers/prisma/secret_resolution.star +119 -0
  152. package/engine/topologies/platform/docker/networking/api_path_constants.star +230 -0
  153. package/engine/topologies/platform/docker/networking/sablier_container_cycle.star +27 -0
  154. package/engine/topologies/platform/docker/networking/traefik.star +232 -0
  155. package/engine/topologies/platform/docker/networking/traefik_constants.star +146 -0
  156. package/engine/topologies/platform/docker/networking/traefik_helpers.star +160 -0
  157. package/engine/topologies/platform/docker/secrets/infisical.star +135 -0
  158. package/engine/topologies/platform/net/proxy.star +4 -0
  159. package/engine/topologies/platform/registries/local.star +4 -0
  160. package/engine/topologies/platform/security/secrets.star +239 -0
  161. package/engine/topologies/platform/state/relational.star +4 -0
  162. package/engine/topologies/tilt/common/AGENTS.md +59 -0
  163. package/engine/topologies/tilt/common/utils.star +364 -0
  164. package/engine/topologies/tilt/common/utils_debug.star +69 -0
  165. package/engine/topologies/tilt/common/utils_deterministic.star +168 -0
  166. package/engine/topologies/tilt/common/utils_docker_networks.star +46 -0
  167. package/engine/topologies/tilt/common/utils_env.star +43 -0
  168. package/engine/topologies/tilt/common/utils_output.star +97 -0
  169. package/engine/topologies/tilt/config/AGENTS.md +68 -0
  170. package/engine/topologies/tilt/config/defaults.star +3 -0
  171. package/engine/topologies/tilt/config/feature_flags.star +10 -0
  172. package/engine/topologies/tilt/config/global.star +55 -0
  173. package/engine/topologies/tilt/config/profiles.star +382 -0
  174. package/engine/topologies/tilt/generators/agents_md.star +62 -0
  175. package/engine/topologies/tilt/generators/api_gateway.star +145 -0
  176. package/engine/topologies/tilt/generators/index.star +124 -0
  177. package/engine/topologies/tilt/generators/infisical/README.md +424 -0
  178. package/engine/topologies/tilt/generators/infisical/examples.star +312 -0
  179. package/engine/topologies/tilt/generators/infisical/index.star +57 -0
  180. package/engine/topologies/tilt/generators/infisical/machine_identity.star +420 -0
  181. package/engine/topologies/tilt/generators/infisical/organization.star +534 -0
  182. package/engine/topologies/tilt/generators/infisical/path_manager.star +476 -0
  183. package/engine/topologies/tilt/generators/infisical/secrets_generator.star +420 -0
  184. package/engine/topologies/tilt/generators/nginx_conf.star +143 -0
  185. package/engine/topologies/tilt/generators/npmrc.star +111 -0
  186. package/engine/topologies/tilt/generators/tsconfig.star +23 -0
  187. package/engine/topologies/tilt/generators/typescript/backend_library_tsconfig.star +71 -0
  188. package/engine/topologies/tilt/generators/typescript/backend_tsconfig.star +124 -0
  189. package/engine/topologies/tilt/generators/typescript/common.star +7 -0
  190. package/engine/topologies/tilt/generators/typescript/frontend_library_tsconfig.star +76 -0
  191. package/engine/topologies/tilt/generators/typescript/frontend_tsconfig.star +110 -0
  192. package/engine/topologies/tilt/generators/typescript/include.star +23 -0
  193. package/engine/topologies/tilt/generators/typescript/playwright_config.star +40 -0
  194. package/engine/topologies/tilt/generators/typescript/prisma_config.star +49 -0
  195. package/engine/topologies/tilt/generators/validators.star +853 -0
  196. package/engine/topologies/tilt/generators/vite/backend.star +78 -0
  197. package/engine/topologies/tilt/generators/vite/frontend.star +98 -0
  198. package/engine/topologies/tilt/generators/vite/generators.star +43 -0
  199. package/engine/topologies/tilt/generators/vite/helpers.star +244 -0
  200. package/engine/topologies/tilt/generators/vite/library.star +65 -0
  201. package/engine/topologies/tilt/generators/vite/sdk.star +73 -0
  202. package/engine/topologies/tilt/generators/vite/templates.star +737 -0
  203. package/engine/topologies/tilt/generators/vite_config.star +22 -0
  204. package/engine/topologies/tilt/manifest/AGENTS.md +61 -0
  205. package/engine/topologies/tilt/manifest/README.md +693 -0
  206. package/engine/topologies/tilt/manifest/__init__.star +218 -0
  207. package/engine/topologies/tilt/manifest/constants.star +252 -0
  208. package/engine/topologies/tilt/manifest/errors.star +266 -0
  209. package/engine/topologies/tilt/manifest/integration.star +339 -0
  210. package/engine/topologies/tilt/manifest/json_to_yaml.py +54 -0
  211. package/engine/topologies/tilt/manifest/loader.star +214 -0
  212. package/engine/topologies/tilt/manifest/mapper.star +227 -0
  213. package/engine/topologies/tilt/manifest/parser.star +400 -0
  214. package/engine/topologies/tilt/manifest/schema.star +462 -0
  215. package/engine/topologies/tilt/manifest/tests/test_integration.star +276 -0
  216. package/engine/topologies/tilt/manifest/tests/test_loader_parser.star +397 -0
  217. package/engine/topologies/tilt/manifest/tests/test_manifest.star +316 -0
  218. package/engine/topologies/tilt/manifest/tests/test_validator.star +470 -0
  219. package/engine/topologies/tilt/manifest/validator.star +717 -0
  220. package/engine/topologies/tilt/manifest/yaml_to_json.py +18 -0
  221. package/engine/topologies/tilt/resources/AGENTS.md +71 -0
  222. package/engine/topologies/tilt/resources/conditions.star +3 -0
  223. package/engine/topologies/tilt/resources/databases.star +244 -0
  224. package/engine/topologies/tilt/resources/declaration.star +3 -0
  225. package/engine/topologies/tilt/resources/deps.star +3 -0
  226. package/engine/topologies/tilt/resources/infra-loader.star +437 -0
  227. package/engine/topologies/tilt/resources/libs.star +30 -0
  228. package/engine/topologies/tilt/resources/libs_discovery.star +102 -0
  229. package/engine/topologies/tilt/resources/libs_paths.star +79 -0
  230. package/engine/topologies/tilt/resources/libs_resource_definition.star +151 -0
  231. package/engine/topologies/tilt/resources/libs_setup.star +164 -0
  232. package/engine/topologies/tilt/resources/libs_tsconfig.star +37 -0
  233. package/engine/topologies/tilt/resources/orchestrator/apply.star +77 -0
  234. package/engine/topologies/tilt/resources/orchestrator/apply_compose_resource_registration.star +431 -0
  235. package/engine/topologies/tilt/resources/orchestrator/apply_manifest_orchestration.star +81 -0
  236. package/engine/topologies/tilt/resources/orchestrator/apply_migrator_orchestration.star +148 -0
  237. package/engine/topologies/tilt/resources/orchestrator/apply_resource_validation.star +36 -0
  238. package/engine/topologies/tilt/resources/orchestrator/apply_runtime_flags.star +44 -0
  239. package/engine/topologies/tilt/resources/orchestrator/builders/typescript.star +164 -0
  240. package/engine/topologies/tilt/resources/orchestrator/generators/dependencies/AGENTS.md +75 -0
  241. package/engine/topologies/tilt/resources/orchestrator/generators/dependencies/index.star +21 -0
  242. package/engine/topologies/tilt/resources/orchestrator/generators/dependencies/resolver.star +134 -0
  243. package/engine/topologies/tilt/resources/orchestrator/generators/env.star +258 -0
  244. package/engine/topologies/tilt/resources/orchestrator/generators/frontend.star +169 -0
  245. package/engine/topologies/tilt/resources/orchestrator/generators/manifest_resource.star +524 -0
  246. package/engine/topologies/tilt/resources/orchestrator/helpers.star +33 -0
  247. package/engine/topologies/tilt/resources/orchestrator.star +54 -0
  248. package/engine/topologies/tilt/resources/ordering.star +3 -0
  249. package/engine/topologies/tilt/resources/triggers.star +3 -0
  250. package/engine/topologies/tilt/resources/watchers.star +299 -0
  251. package/engine/where-things-live.star +717 -0
  252. package/ext/Tiltfile +66 -0
  253. package/ext/ide-components/README.md +219 -0
  254. package/ext/ide-components/code_executor/server.py +268 -0
  255. package/ext/ide-components/code_viewer/server.py +206 -0
  256. package/ext/ide-components/config_inspector/server.py +1050 -0
  257. package/ext/ide-components/file_browser/server.py +285 -0
  258. package/ext/ide-components/shared/config_service.py +469 -0
  259. package/ext/ide-components/shared/file_utils.py +298 -0
  260. package/ext/ide-components/shared/http_utils.py +232 -0
  261. package/ext/ide-components/shared/static/styles.css +1334 -0
  262. package/ext/ide-components/shared/syntax_highlighter.py +140 -0
  263. package/ext/ide-components/shared/template_engine.py +123 -0
  264. package/ext/ide-components/shared/templates/base.html +121 -0
  265. package/ext/ide-components/shared/test_config_service.py +326 -0
  266. package/ext/ide-components/shared/tilt_integration.py +158 -0
  267. package/ext/ui-enhancements/cron-status-server.sh +49 -0
  268. package/ext/ui-enhancements/cron-status-tracker.sh +146 -0
  269. package/ext/ui-enhancements/extension.yaml +36 -0
  270. package/ext/ui-enhancements/tiltfile.py +99 -0
  271. package/ext/ui-enhancements/ui/cron-jobs-tab.css +396 -0
  272. package/ext/ui-enhancements/ui/help-panel.css +279 -0
  273. package/ext/ui-enhancements/ui/icons.css +125 -0
  274. package/ext/ui-enhancements/ui/tooltips.css +114 -0
  275. package/package.json +13 -9
  276. package/specs/specs/TILT_SERVICE_DEFAULTS.star +205 -0
  277. package/specs/specs/TILT_TECH_STACK.star +159 -0
@@ -0,0 +1,80 @@
1
+ # =============================================================================
2
+ # 🎯 TDK-ENGINE - Core Execution Engine
3
+ # =============================================================================
4
+ # This is the Tiltfile entry point for the tdk-engine repo.
5
+ # It exports core orchestration, resource builders, and topology management.
6
+ #
7
+ # Usage:
8
+ # v1alpha1.extension_repo(name='tdk-engine', url='https://github.com/tdk-landscape/tdk-engine')
9
+ # load('ext://tdk-engine', 'Utils', 'Manifest', 'Config', ...)
10
+ # =============================================================================
11
+
12
+ # Core
13
+ load('./topologies/tilt/common/utils.star', _Utils='Utils')
14
+ load('./topologies/tilt/discovery/loading.star', _Manifest='Manifest')
15
+ load('./topologies/tilt/config/global.star', _Config='Config')
16
+
17
+ # Registry
18
+ load('./topologies/tilt/discovery/registry.star',
19
+ _GLOBAL_CONFIG_EXPORT='GLOBAL_CONFIG_EXPORT',
20
+ _APP_RESOURCES='APP_RESOURCES',
21
+ _INFRA_RESOURCES_EXPORT='INFRA_RESOURCES_EXPORT',
22
+ _DDD_LIBS_EXPORT='DDD_LIBS_EXPORT',
23
+ _DEFAULTS_EXPORT='DEFAULTS_EXPORT',
24
+ _RESOURCE_ALIASES='RESOURCE_ALIASES',
25
+ _RESOURCE_PATH_MAP='RESOURCE_PATH_MAP',
26
+ _get_platform_libs_export='get_platform_libs_export',
27
+ _get_product_libs_export='get_product_libs_export',
28
+ )
29
+
30
+ # Providers
31
+ load('./topologies/tilt/generators/vite_config.star', _Vite='Vite')
32
+ load('./topologies/tilt/generators/tsconfig.star', _TSConfig='TSConfig')
33
+ load('./topologies/platform/docker/index.star', _Docker='Docker')
34
+ load('./topologies/tilt/generators/npmrc.star', _PackageConfig='PackageConfig')
35
+
36
+ # Lifecycle
37
+ load('./topologies/tilt/resources/deps.star', _Libs='Libs')
38
+ load('./topologies/tilt/resources/conditions.star', _Database='Database')
39
+ load('./topologies/tilt/resources/declaration.star', _Orchestrator='Orchestrator')
40
+ load('./topologies/tilt/resources/ordering.star', _Infra='Infra')
41
+ load('./topologies/tilt/resources/triggers.star', _Watchers='Watchers')
42
+
43
+ # =============================================================================
44
+ # RE-EXPORTS
45
+ # =============================================================================
46
+
47
+ # Core
48
+ Utils = _Utils
49
+ Manifest = _Manifest
50
+ Config = _Config
51
+
52
+ # Registry Data
53
+ GLOBAL_CONFIG_EXPORT = _GLOBAL_CONFIG_EXPORT
54
+ APP_RESOURCES = _APP_RESOURCES
55
+ INFRA_RESOURCES_EXPORT = _INFRA_RESOURCES_EXPORT
56
+ DDD_LIBS_EXPORT = _DDD_LIBS_EXPORT
57
+ DEFAULTS_EXPORT = _DEFAULTS_EXPORT
58
+ RESOURCE_ALIASES = _RESOURCE_ALIASES
59
+ RESOURCE_PATH_MAP = _RESOURCE_PATH_MAP
60
+
61
+ def get_platform_libs_export():
62
+ return _get_platform_libs_export()
63
+
64
+ def get_product_libs_export():
65
+ return _get_product_libs_export()
66
+
67
+ # Providers
68
+ Vite = _Vite
69
+ TSConfig = _TSConfig
70
+ Docker = _Docker
71
+ PackageConfig = _PackageConfig
72
+
73
+ # Lifecycle
74
+ Libs = _Libs
75
+ Database = _Database
76
+ Orchestrator = _Orchestrator
77
+ Infra = _Infra
78
+ Watchers = _Watchers
79
+
80
+ print("✅ TDK Engine loaded: orchestration, resources, and lifecycle")
@@ -0,0 +1,221 @@
1
+ ###############################################################################
2
+ # 🛑 CRITICAL: SYSTEM-GENERATED FILE - DO NOT MODIFY DIRECTLY
3
+ #
4
+ # ANY MANUAL CHANGES MADE TO THIS FILE WILL BE WIPED ON THE NEXT 'tilt up'.
5
+ # TO MODIFY THIS CONFIGURATION:
6
+ # 1. Edit the source generator in: .tilt/topologies/
7
+ # 2. Or update service.json
8
+ #
9
+ # Generation Source: GoldenImage.generate_layered_dockerfile()
10
+ # Service: beauty-crm-l1-l4
11
+ # Type: GOLDEN LAYERED IMAGES | L1-L4 Pre-built Layers
12
+ ###############################################################################
13
+
14
+ # =============================================================================
15
+ # 🏗️ GOLDEN LAYERED IMAGES - Multi-Stage Base Images
16
+ # =============================================================================
17
+ # This Dockerfile builds 8 golden images:
18
+ # - beauty-crm-l1:latest - OS base + Bun runtime
19
+ # - beauty-crm-l2:latest - Dependencies installed
20
+ # - beauty-crm-l3-backend:latest - Backend build tools (Prisma, no Infisical CLI)
21
+ # - beauty-crm-l3-frontend:latest - Frontend build tools (no Prisma)
22
+ # - beauty-crm-l3-migrator:latest - Migrator build tools (Prisma, no Infisical CLI)
23
+ # - beauty-crm-l4-backend:latest - Backend production runtime
24
+ # - beauty-crm-l4-frontend:latest - Frontend production runtime (Nginx)
25
+ # - beauty-crm-l4-migrator:latest - Migrator production runtime
26
+ #
27
+ # Services use these as base images to skip heavy dependency installation.
28
+ #
29
+ # ⚠️ SKIP_INFISICAL_SETUP Support:
30
+ # All generated Dockerfiles support --build-arg SKIP_INFISICAL_SETUP=1
31
+ # to bypass Infisical CLI installation (avoids Cloudsmith CDN hangs).
32
+ # When SKIP_INFISICAL_SETUP=1, secrets are read from env vars only.
33
+ # See: .tilt/topologies/platform/docker/layers/l3_builder_layers.star
34
+ # =============================================================================
35
+
36
+ # =============================================================================
37
+ # L1: OS BASE + RUNTIME ENVIRONMENT
38
+ # =============================================================================
39
+ FROM oven/bun:1.3.11-alpine AS l1_golden
40
+
41
+ LABEL layer="l1" description="OS base with runtime environment" maintainer="beauty-crm"
42
+
43
+ # System dependencies for all services
44
+ RUN apk add --no-cache ca-certificates tzdata curl file bash openssl
45
+
46
+ # Create app user/group for security
47
+ RUN addgroup -S app && adduser -S app -G app
48
+
49
+ # Runtime environment
50
+ ENV NODE_ENV=development BUN_INSTALL_CACHE_DIR=/cache/bun
51
+
52
+ WORKDIR /app
53
+
54
+
55
+ # =============================================================================
56
+ # L2: DEPENDENCY RESOLVER
57
+ # =============================================================================
58
+ FROM l1_golden AS l2_golden
59
+
60
+ LABEL layer="l2" description="Base with common dependencies installed" maintainer="beauty-crm"
61
+
62
+ # Install minimal debugging tools (removed: vim, python3, make, g++ = -67MB)
63
+ RUN apk add --no-cache curl netcat-openbsd jq bind-tools
64
+
65
+ # Pre-create cache directories
66
+ RUN mkdir -p /cache/bun /cache/prisma
67
+
68
+ # Bun is already installed in base image
69
+ RUN echo "Bun version: $(bun --version)"
70
+
71
+
72
+ # =============================================================================
73
+ # L3-BACKEND: BACKEND BUILD TOOLS (PRISMA)
74
+ # =============================================================================
75
+ FROM l2_golden AS l3_backend_golden
76
+
77
+ LABEL layer="l3-backend" description="Backend build tools with Prisma" maintainer="beauty-crm"
78
+
79
+ # Install Prisma CLI globally (pinned for deterministic builds)
80
+ RUN bun add -g prisma@7.5.0 @prisma/client@7.5.0
81
+
82
+ # Verify Prisma installation
83
+ RUN echo "Prisma version: $(bunx prisma --version | head -1)"
84
+
85
+ # ⚠️ CRITICAL: Infisical CLI is NOT installed in golden L3 images
86
+ # Reason: curl to dl.cloudsmith.io hangs during Docker builds when CDN is slow
87
+ # Solution: Use SKIP_INFISICAL_SETUP=1 build arg or runtime env var injection
88
+ # Services read secrets from environment variables at runtime (no CLI needed)
89
+ # See: .tilt/topologies/platform/docker/layers/l3_builder_layers.star
90
+
91
+
92
+ # =============================================================================
93
+ # L3-FRONTEND: FRONTEND BUILD TOOLS (NO PRISMA)
94
+ # =============================================================================
95
+ FROM l2_golden AS l3_frontend_golden
96
+
97
+ LABEL layer="l3-frontend" description="Frontend build tools without Prisma" maintainer="beauty-crm"
98
+
99
+ # Frontend doesn't need Prisma, just verify Bun
100
+ RUN echo "Bun version: $(bun --version)"
101
+
102
+
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="beauty-crm"
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
+ # =============================================================================
124
+ # L4-BACKEND-BUN: BACKEND PRODUCTION RUNTIME (BUN)
125
+ # =============================================================================
126
+ FROM l1_golden AS l4_backend_bun
127
+
128
+ LABEL layer="l4-backend-bun" description="Backend production runtime (Bun)" maintainer="beauty-crm"
129
+
130
+ ENV NODE_ENV=production
131
+
132
+ # Install hugo for services that require static site generation (specified via manifest features)
133
+ RUN apk add --no-cache hugo
134
+
135
+ # ⚠️ Infisical CLI is NOT installed in golden L4 images
136
+ # Services use TypeScript SDK (fetch API) or read from env vars - no CLI needed
137
+ # The entrypoint.sh gracefully handles missing CLI (falls back to env vars)
138
+ # Build with --build-arg SKIP_INFISICAL_SETUP=1 to skip CLI installation
139
+
140
+ USER bun
141
+
142
+ # Backend-specific healthcheck (checks Bun runtime)
143
+ HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 CMD bun --version || exit 1
144
+
145
+ WORKDIR /app
146
+
147
+
148
+ # =============================================================================
149
+ # L4-BACKEND-NODE: BACKEND PRODUCTION RUNTIME (NODE.JS - LIGHTWEIGHT!)
150
+ # =============================================================================
151
+ FROM node:22-alpine AS l4_backend_node
152
+
153
+ LABEL layer="l4-backend-node" description="Backend production runtime (Node.js - lightweight)" maintainer="beauty-crm"
154
+
155
+ ENV NODE_ENV=production
156
+
157
+ # Minimal runtime dependencies
158
+ RUN apk add --no-cache ca-certificates tzdata curl
159
+
160
+ # Create app user for security
161
+ RUN addgroup -S app && adduser -S app -G app
162
+
163
+ # ⚠️ Infisical CLI is NOT installed in golden L4 images
164
+ # Services read secrets from environment variables at runtime
165
+
166
+ USER app
167
+
168
+ # Backend-specific healthcheck (checks Node.js runtime)
169
+ HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 CMD node --version || exit 1
170
+
171
+ WORKDIR /app
172
+
173
+
174
+ # Alias for backwards compatibility - defaults to Bun (most efficient)
175
+ FROM l4_backend_bun AS l4_backend_golden
176
+
177
+
178
+ # =============================================================================
179
+ # L4-FRONTEND: FRONTEND PRODUCTION RUNTIME
180
+ # =============================================================================
181
+ FROM nginx:alpine AS l4_frontend_golden
182
+
183
+ LABEL layer="l4-frontend" description="Frontend production runtime with Nginx" maintainer="beauty-crm"
184
+
185
+ ENV NODE_ENV=production
186
+
187
+ # Install curl for healthchecks
188
+ RUN apk add --no-cache curl
189
+
190
+ # Frontend-specific healthcheck (checks Nginx)
191
+ HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 CMD curl -f http://localhost/ || exit 1
192
+
193
+ WORKDIR /usr/share/nginx/html
194
+
195
+
196
+ # =============================================================================
197
+ # L4-MIGRATOR: MIGRATOR PRODUCTION RUNTIME
198
+ # =============================================================================
199
+ FROM l1_golden AS l4_migrator_golden
200
+
201
+ LABEL layer="l4-migrator" description="Migrator runtime with Prisma" maintainer="beauty-crm"
202
+
203
+ ENV NODE_ENV=production
204
+
205
+ # Copy global Prisma installation from L3
206
+ COPY --from=l3_migrator_golden /root/.bun/install/global /root/.bun/install/global
207
+
208
+ # ⚠️ Infisical CLI is NOT included in golden L4 images
209
+ # The migrator reads secrets directly from environment variables at runtime
210
+ # (no entrypoint wrapper needed for database migrations)
211
+ # Use --build-arg SKIP_INFISICAL_SETUP=1 to skip CLI installation in derived images
212
+
213
+ # Ensure Bun cache path is writable for non-root runtime healthcheck commands.
214
+ RUN mkdir -p /cache/bun && chown -R bun:bun /cache/bun
215
+
216
+ USER bun
217
+
218
+ # Migrator-specific healthcheck (checks Prisma CLI)
219
+ HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 CMD bunx prisma --version || exit 1
220
+
221
+ WORKDIR /app
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ # Delete images for completed DB migrator containers to free disk space.
5
+ # Safe guards:
6
+ # - only containers with names ending in -db-migrator are considered
7
+ # - only exited containers with exit code 0 are processed
8
+ # - image deletion is best-effort (skips if still in use)
9
+
10
+ mapfile -t migrator_containers < <(
11
+ docker ps -a --format '{{.Names}}' | grep -E -- '-db-migrator($|-)' 2>/dev/null || true
12
+ )
13
+
14
+ if [ "${#migrator_containers[@]}" -eq 0 ]; then
15
+ exit 0
16
+ fi
17
+
18
+ for name in "${migrator_containers[@]}"; do
19
+ state="$(docker inspect -f '{{.State.Status}}' "$name" 2>/dev/null || true)"
20
+ exit_code="$(docker inspect -f '{{.State.ExitCode}}' "$name" 2>/dev/null || true)"
21
+
22
+ if [ "$state" != "exited" ] || [ "$exit_code" != "0" ]; then
23
+ continue
24
+ fi
25
+
26
+ image_ref="$(docker inspect -f '{{.Config.Image}}' "$name" 2>/dev/null || true)"
27
+ if [ -z "$image_ref" ]; then
28
+ continue
29
+ fi
30
+
31
+ # Remove the stopped migrator container so image can be deleted if unused.
32
+ docker rm "$name" >/dev/null 2>&1 || true
33
+
34
+ if docker image rm "$image_ref" >/dev/null 2>&1; then
35
+ echo "$(date +%H:%M:%S) pruned migrator image: $image_ref"
36
+ fi
37
+ done
@@ -0,0 +1,120 @@
1
+ #!/bin/bash
2
+
3
+ set -euo pipefail
4
+
5
+ # Keep the newest N Tilt-tagged images per repository.
6
+ # Defaults to a safe dry-run unless --force is provided.
7
+
8
+ KEEP_COUNT=0
9
+ FORCE=0
10
+
11
+ usage() {
12
+ cat <<USAGE
13
+ Usage: $0 [--keep N] [--force]
14
+
15
+ Options:
16
+ --keep N Number of newest tilt-* images to keep per repository (default: 0)
17
+ --force Actually remove images. Without this, runs in dry-run mode.
18
+ USAGE
19
+ }
20
+
21
+ while [[ $# -gt 0 ]]; do
22
+ case "$1" in
23
+ --keep)
24
+ KEEP_COUNT="${2:-}"
25
+ shift 2
26
+ ;;
27
+ --force)
28
+ FORCE=1
29
+ shift
30
+ ;;
31
+ -h|--help)
32
+ usage
33
+ exit 0
34
+ ;;
35
+ *)
36
+ echo "Unknown option: $1"
37
+ usage
38
+ exit 1
39
+ ;;
40
+ esac
41
+ done
42
+
43
+ if ! [[ "$KEEP_COUNT" =~ ^[0-9]+$ ]] || [[ "$KEEP_COUNT" -lt 0 ]]; then
44
+ echo "--keep must be an integer >= 0"
45
+ exit 1
46
+ fi
47
+
48
+ echo "Scanning Tilt images (tag starts with tilt-) ..."
49
+
50
+ # Format: REPO TAG IMAGE_ID CREATED_AT
51
+ # Sort newest-first by creation time so first N are retained.
52
+ IMAGES_RAW="$(
53
+ docker image ls --format '{{.Repository}} {{.Tag}} {{.ID}} {{.CreatedAt}}' \
54
+ | awk '$2 ~ /^tilt-/' \
55
+ | sort -rk4,5
56
+ )"
57
+
58
+ if [[ -z "${IMAGES_RAW}" ]]; then
59
+ echo "No tilt-* images found."
60
+ exit 0
61
+ fi
62
+
63
+ TO_DELETE=()
64
+
65
+ echo "Retention policy: keep newest $KEEP_COUNT tilt-* images per repository"
66
+
67
+ REPOS="$(printf '%s\n' "$IMAGES_RAW" | awk '{print $1}' | sort -u)"
68
+ for repo in $REPOS; do
69
+ repo_blob="$(printf '%s\n' "$IMAGES_RAW" | awk -v r="$repo" '$1==r')"
70
+ total=$(printf '%s\n' "$repo_blob" | awk 'NF{c++} END{print c+0}')
71
+ echo "- $repo: $total tilt image(s)"
72
+
73
+ if (( total <= KEEP_COUNT )); then
74
+ continue
75
+ fi
76
+
77
+ # Delete rows after KEEP_COUNT newest.
78
+ i=0
79
+ while IFS= read -r row; do
80
+ [[ -z "$row" ]] && continue
81
+ if (( i < KEEP_COUNT )); then
82
+ ((i++))
83
+ continue
84
+ fi
85
+ image_id="$(awk '{print $3}' <<< "$row")"
86
+ tag="$(awk '{print $2}' <<< "$row")"
87
+ TO_DELETE+=("$image_id|$repo:$tag")
88
+ ((i++))
89
+ done <<< "$repo_blob"
90
+ done
91
+
92
+ if [[ ${#TO_DELETE[@]} -eq 0 ]]; then
93
+ echo "Nothing to remove."
94
+ exit 0
95
+ fi
96
+
97
+ echo
98
+ echo "Images selected for cleanup: ${#TO_DELETE[@]}"
99
+ for item in "${TO_DELETE[@]}"; do
100
+ IFS='|' read -r image_id ref <<< "$item"
101
+ echo " $ref ($image_id)"
102
+ done
103
+
104
+ echo
105
+ if [[ "$FORCE" -ne 1 ]]; then
106
+ echo "Dry-run only. Re-run with --force to remove these images."
107
+ exit 0
108
+ fi
109
+
110
+ echo "Removing old tilt images..."
111
+ for item in "${TO_DELETE[@]}"; do
112
+ IFS='|' read -r image_id ref <<< "$item"
113
+ if docker rmi "$image_id" >/dev/null 2>&1; then
114
+ echo " removed $ref ($image_id)"
115
+ else
116
+ echo " skipped $ref ($image_id) - likely in use"
117
+ fi
118
+ done
119
+
120
+ echo "Cleanup complete."
@@ -0,0 +1,121 @@
1
+ #!/bin/bash
2
+
3
+ # TDK Landscape Mac M1 Resource Monitor
4
+ # Monitors Docker container resource usage and provides optimization recommendations
5
+
6
+ set -e
7
+
8
+ # Colors for output
9
+ RED='\033[0;31m'
10
+ GREEN='\033[0;32m'
11
+ YELLOW='\033[1;33m'
12
+ BLUE='\033[0;34m'
13
+ NC='\033[0m' # No Color
14
+
15
+ echo -e "${BLUE}🍎 TDK Landscape Mac M1 Resource Monitor${NC}"
16
+ echo "=================================================="
17
+
18
+ # Check if Docker is running
19
+ if ! docker info >/dev/null 2>&1; then
20
+ echo -e "${RED}❌ Docker is not running${NC}"
21
+ exit 1
22
+ fi
23
+
24
+ # Get Docker Desktop memory limit
25
+ DOCKER_MEMORY=$(docker system info 2>/dev/null | grep -i "total memory" | awk '{print $3 $4}' || echo "Unknown")
26
+ echo -e "${BLUE}🐳 Docker Memory Limit:${NC} $DOCKER_MEMORY"
27
+
28
+ # Get system memory info (macOS)
29
+ SYSTEM_MEMORY=$(system_profiler SPHardwareDataType | grep "Memory:" | awk '{print $2 $3}' || echo "Unknown")
30
+ echo -e "${BLUE}💻 System Memory:${NC} $SYSTEM_MEMORY"
31
+
32
+ echo ""
33
+
34
+ # Check running TDK Landscape containers
35
+ PROJECT_CONTAINERS=$(docker ps --format "{{.Names}}" | grep -E "(postgres|redis|nats|kafka|traefik|clickhouse|elasticsearch|verdaccio|infisical)" | sort)
36
+
37
+ if [ -z "$PROJECT_CONTAINERS" ]; then
38
+ echo -e "${YELLOW}⚠️ No TDK Landscape containers are currently running${NC}"
39
+ echo "Run 'tilt up' to start services"
40
+ exit 0
41
+ fi
42
+
43
+ echo -e "${GREEN}📊 Running TDK Landscape Containers:${NC}"
44
+ echo "=================================================="
45
+
46
+ # Get detailed stats for TDK Landscape containers
47
+ TOTAL_MEMORY_MB=0
48
+ HIGH_CPU_COUNT=0
49
+ HIGH_MEMORY_COUNT=0
50
+
51
+ echo -e "${BLUE}Container Name${NC}\t\t${BLUE}CPU%${NC}\t${BLUE}Memory${NC}\t${BLUE}Status${NC}"
52
+ echo "------------------------------------------------------------------------"
53
+
54
+ while IFS= read -r container; do
55
+ if [ -n "$container" ]; then
56
+ # Get container stats
57
+ STATS=$(docker stats --no-stream --format "{{.CPUPerc}}\t{{.MemUsage}}" "$container" 2>/dev/null || echo "N/A\tN/A")
58
+ CPU_PERCENT=$(echo "$STATS" | cut -f1 | sed 's/%//')
59
+ MEMORY_USAGE=$(echo "$STATS" | cut -f2)
60
+
61
+ # Extract memory in MB for calculation
62
+ MEMORY_MB=$(echo "$MEMORY_USAGE" | grep -o '[0-9.]*MiB' | sed 's/MiB//' || echo "0")
63
+ if [ -z "$MEMORY_MB" ]; then
64
+ MEMORY_MB=0
65
+ fi
66
+
67
+ # Status indicators
68
+ STATUS=""
69
+ if (( $(echo "$CPU_PERCENT > 50" | bc -l 2>/dev/null || echo 0) )); then
70
+ STATUS="${RED}🔥 HIGH CPU${NC}"
71
+ HIGH_CPU_COUNT=$((HIGH_CPU_COUNT + 1))
72
+ elif (( $(echo "$MEMORY_MB > 200" | bc -l 2>/dev/null || echo 0) )); then
73
+ STATUS="${YELLOW}⚠️ HIGH MEM${NC}"
74
+ HIGH_MEMORY_COUNT=$((HIGH_MEMORY_COUNT + 1))
75
+ else
76
+ STATUS="${GREEN}✅ OK${NC}"
77
+ fi
78
+
79
+ # Add to total memory
80
+ TOTAL_MEMORY_MB=$(echo "$TOTAL_MEMORY_MB + $MEMORY_MB" | bc -l 2>/dev/null || echo "$TOTAL_MEMORY_MB")
81
+
82
+ # Format container name for display
83
+ CONTAINER_DISPLAY=$(echo "$container" | sed 's/TDK_//' | cut -c1-20)
84
+
85
+ printf "%-20s\t%s%%\t%s\t%s\n" "$CONTAINER_DISPLAY" "$CPU_PERCENT" "$MEMORY_USAGE" "$STATUS"
86
+ fi
87
+ done <<< "$BEAUTY_CONTAINERS"
88
+
89
+ echo ""
90
+ echo -e "${BLUE}📈 Resource Summary:${NC}"
91
+ echo "=================================================="
92
+ echo -e "Total Memory Usage: ${YELLOW}~${TOTAL_MEMORY_MB}MB${NC}"
93
+ echo -e "High CPU Containers: ${RED}$HIGH_CPU_COUNT${NC}"
94
+ echo -e "High Memory Containers: ${YELLOW}$HIGH_MEMORY_COUNT${NC}"
95
+
96
+ # Recommendations
97
+ echo ""
98
+ echo -e "${BLUE}🔧 Mac M1 Optimization Recommendations:${NC}"
99
+ echo "=================================================="
100
+
101
+ if (( $(echo "$TOTAL_MEMORY_MB > 3000" | bc -l 2>/dev/null || echo 0) )); then
102
+ echo -e "${RED}⚠️ HIGH MEMORY USAGE DETECTED!${NC}"
103
+ echo "• Consider stopping unnecessary services with 'tilt down'"
104
+ echo "• Avoid running monitoring + elk + all apps simultaneously"
105
+ echo "• Use selective service loading: 'tilt up --focus <domain>' instead of all services"
106
+ elif (( $(echo "$TOTAL_MEMORY_MB > 2000" | bc -l 2>/dev/null || echo 0) )); then
107
+ echo -e "${YELLOW}⚡ MODERATE MEMORY USAGE${NC}"
108
+ echo "• Memory usage is acceptable for Mac M1"
109
+ echo "• Monitor for performance issues"
110
+ else
111
+ echo -e "${GREEN}✅ OPTIMAL MEMORY USAGE${NC}"
112
+ echo "• Memory usage is well optimized for Mac M1"
113
+ fi
114
+
115
+ echo ""
116
+ echo "• Increase Docker Desktop memory limit to 6-8GB if experiencing issues"
117
+ echo "• Use 'tilt trigger resource-monitor' for regular monitoring"
118
+ echo "• Use 'tilt trigger memory-optimizer' for additional suggestions"
119
+
120
+ echo ""
121
+ echo -e "${BLUE}🔄 To refresh this report: ./.tilt/assets/scripts/mac-m1-resource-monitor.sh${NC}"
@@ -0,0 +1,3 @@
1
+ load("./topologies/tilt/config/global.star", _Config = "Config")
2
+
3
+ Config = _Config