@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,205 @@
1
+ #!/usr/bin/env starlark
2
+ # -*- coding: utf-8 -*-
3
+ # =============================================================================
4
+ # 🔧 TILT SERVICE DEFAULTS MASTER CONFIG
5
+ # =============================================================================
6
+ #
7
+ # Defines standard configurations for all services in the TDK Landscape platform.
8
+ # This provides consistent port allocation, health checks, and build settings.
9
+ #
10
+ # See: docs/TILT_MASTER_CONFIGS.md
11
+ # =============================================================================
12
+
13
+ # Port Configuration
14
+ BASE_PORT_FRONTEND = 3000
15
+ BASE_PORT_BACKEND = 4000
16
+ BASE_PORT_HEALTH = 5000
17
+
18
+ # Port ranges
19
+ PORT_RANGE_FRONTEND_START = 3000
20
+ PORT_RANGE_FRONTEND_END = 3999
21
+ PORT_RANGE_BACKEND_START = 4000
22
+ PORT_RANGE_BACKEND_END = 4999
23
+ PORT_RANGE_HEALTH_START = 5000
24
+ PORT_RANGE_HEALTH_END = 5999
25
+
26
+ # Health Check Configuration
27
+ HEALTH_CHECK_PATH = "/health"
28
+ HEALTH_CHECK_LIVE = "/health/live"
29
+ HEALTH_CHECK_READY = "/health/ready"
30
+ HEALTH_CHECK_TIMEOUT = 30
31
+
32
+ # File watch ignore patterns (to prevent fsnotify buffer overflow)
33
+ def get_filewatch_ignore_patterns(resource_path="."):
34
+ """
35
+ Returns list of file patterns to ignore for Tilt filewatch.
36
+
37
+ Args:
38
+ resource_path: Base path of the service
39
+
40
+ Returns:
41
+ List of patterns to ignore
42
+ """
43
+ # Common directories that cause fsnotify buffer overflow
44
+ ignores = [
45
+ resource_path + "/node_modules",
46
+ resource_path + "/dist",
47
+ resource_path + "/build",
48
+ resource_path + "/.git",
49
+ resource_path + "/.prisma",
50
+ resource_path + "/.turbo",
51
+ resource_path + "/coverage",
52
+ resource_path + "/tmp",
53
+ resource_path + "/temp",
54
+ resource_path + "/__tests__",
55
+ resource_path + "/test",
56
+ resource_path + "/tests",
57
+ ]
58
+ return ignores
59
+
60
+ def get_port_config():
61
+ """Returns the complete port allocation strategy."""
62
+ return {
63
+ "frontend": {
64
+ "base": BASE_PORT_FRONTEND,
65
+ "range_start": PORT_RANGE_FRONTEND_START,
66
+ "range_end": PORT_RANGE_FRONTEND_END,
67
+ },
68
+ "backend": {
69
+ "base": BASE_PORT_BACKEND,
70
+ "range_start": PORT_RANGE_BACKEND_START,
71
+ "range_end": PORT_RANGE_BACKEND_END,
72
+ },
73
+ "health": {
74
+ "base": BASE_PORT_HEALTH,
75
+ "range_start": PORT_RANGE_HEALTH_START,
76
+ "range_end": PORT_RANGE_HEALTH_END,
77
+ },
78
+ }
79
+
80
+ def get_resource_port(resource_type, domain_index=0, resource_index=0):
81
+ """
82
+ Calculate service port based on type and indices.
83
+
84
+ Args:
85
+ resource_type: "frontend" or "backend"
86
+ domain_index: Index of the domain (for port allocation)
87
+ resource_index: Index of the service within domain
88
+
89
+ Returns:
90
+ Port number
91
+ """
92
+ if resource_type == "frontend":
93
+ base = BASE_PORT_FRONTEND
94
+ elif resource_type == "backend":
95
+ base = BASE_PORT_BACKEND
96
+ else:
97
+ fail("Unknown service type: {}".format(resource_type))
98
+
99
+ # Allocate ports: base + (domain_index * 100) + resource_index
100
+ return base + (domain_index * 100) + resource_index
101
+
102
+ def get_health_check_config():
103
+ """Returns health check endpoint configuration."""
104
+ return {
105
+ "path": HEALTH_CHECK_PATH,
106
+ "live": HEALTH_CHECK_LIVE,
107
+ "ready": HEALTH_CHECK_READY,
108
+ "timeout": HEALTH_CHECK_TIMEOUT,
109
+ }
110
+
111
+ def get_build_config():
112
+ """Returns Docker build configuration."""
113
+ return {
114
+ "dockerfile": "Dockerfile",
115
+ "context": ".",
116
+ # Auto-detect native arch (arm64 on Apple Silicon, amd64 elsewhere)
117
+ # "platform": "linux/amd64",
118
+ "cache_from": [],
119
+ }
120
+
121
+ def get_runtime_config():
122
+ """Returns runtime command configuration."""
123
+ return {
124
+ "backend": {
125
+ "command": "bun",
126
+ "args": ["run", "dev"],
127
+ "env": {
128
+ "NODE_ENV": "development",
129
+ },
130
+ },
131
+ "frontend": {
132
+ "command": "bun",
133
+ "args": ["run", "dev"],
134
+ "env": {
135
+ "NODE_ENV": "development",
136
+ },
137
+ },
138
+ }
139
+
140
+ def get_resource_defaults():
141
+ """Returns complete service defaults."""
142
+ return {
143
+ "port": get_port_config(),
144
+ "health": get_health_check_config(),
145
+ "build": get_build_config(),
146
+ "runtime": get_runtime_config(),
147
+ }
148
+
149
+ def validate_resource_defaults(config):
150
+ """
151
+ Validates service configuration against defaults.
152
+
153
+ Args:
154
+ config: Service configuration dict
155
+
156
+ Returns:
157
+ Dict with validation results
158
+ """
159
+ warnings = []
160
+ errors = []
161
+
162
+ # Validate port allocation
163
+ if "port" in config:
164
+ port = config["port"]
165
+ if port < 1024:
166
+ errors.append("Port {} is in reserved range (< 1024)".format(port))
167
+ elif port > 65535:
168
+ errors.append("Port {} exceeds maximum (65535)".format(port))
169
+
170
+ # Validate health check path
171
+ if "healthCheckPath" in config:
172
+ path = config["healthCheckPath"]
173
+ if not path.startswith("/"):
174
+ errors.append("Health check path must start with /: {}".format(path))
175
+
176
+ return {
177
+ "valid": len(errors) == 0,
178
+ "errors": errors,
179
+ "warnings": warnings,
180
+ }
181
+
182
+ # Export public API
183
+ __all__ = [
184
+ "get_port_config",
185
+ "get_resource_port",
186
+ "get_health_check_config",
187
+ "get_filewatch_ignore_patterns",
188
+ "get_build_config",
189
+ "get_runtime_config",
190
+ "get_resource_defaults",
191
+ "validate_resource_defaults",
192
+ "BASE_PORT_FRONTEND",
193
+ "BASE_PORT_BACKEND",
194
+ "BASE_PORT_HEALTH",
195
+ "PORT_RANGE_FRONTEND_START",
196
+ "PORT_RANGE_FRONTEND_END",
197
+ "PORT_RANGE_BACKEND_START",
198
+ "PORT_RANGE_BACKEND_END",
199
+ "PORT_RANGE_HEALTH_START",
200
+ "PORT_RANGE_HEALTH_END",
201
+ "HEALTH_CHECK_PATH",
202
+ "HEALTH_CHECK_LIVE",
203
+ "HEALTH_CHECK_READY",
204
+ "HEALTH_CHECK_TIMEOUT",
205
+ ]
@@ -0,0 +1,159 @@
1
+ #!/usr/bin/env starlark
2
+ # -*- coding: utf-8 -*-
3
+ # =============================================================================
4
+ # 🏗️ TILT TECH STACK MASTER CONFIG
5
+ # =============================================================================
6
+ #
7
+ # Defines the approved technology choices for the TDK Landscape platform.
8
+ # This is the single source of truth for tech stack validation.
9
+ #
10
+ # See: docs/TILT_MASTER_CONFIGS.md
11
+ # =============================================================================
12
+
13
+ def get_tech_stack():
14
+ """Returns the complete tech stack definition."""
15
+ return {
16
+ # Core runtime and build tools
17
+ "bundler": "vite",
18
+ "runtime": "bun",
19
+ "language": "typescript",
20
+
21
+ # Database and ORM
22
+ "orm": "prisma",
23
+
24
+ # Messaging and events
25
+ "messaging": "nats",
26
+
27
+ # Development tools
28
+ "linting": "biome",
29
+ "testing": "vitest",
30
+
31
+ # Web framework
32
+ "web_framework": "hono",
33
+ }
34
+
35
+ # Constants for direct import
36
+ BUNDLER = "vite"
37
+ RUNTIME = "bun"
38
+ ORM = "prisma"
39
+ MESSAGING = "nats"
40
+ LINTING = "biome"
41
+ TESTING = "vitest"
42
+ WEB_FRAMEWORK = "hono"
43
+ LANGUAGE = "typescript"
44
+
45
+ TECH_STACK = get_tech_stack()
46
+
47
+ def validate_tech_stack(config, strict=False):
48
+ """
49
+ Validates a configuration against the platform tech stack.
50
+
51
+ Args:
52
+ config: Dict with tech stack choices to validate
53
+ strict: If True, fails on any non-compliance. If False, warns.
54
+
55
+ Returns:
56
+ Dict with validation results: {"valid": bool, "errors": [], "warnings": []}
57
+ """
58
+ errors = []
59
+ warnings = []
60
+
61
+ # Check for override reason
62
+ has_override = "_override_reason" in config and config["_override_reason"]
63
+
64
+ # Strict validations (must match platform standard)
65
+ strict_validations = {
66
+ "bundler": "vite",
67
+ "runtime": "bun",
68
+ "orm": "prisma",
69
+ "messaging": "nats",
70
+ }
71
+
72
+ for key, standard in strict_validations.items():
73
+ if key in config:
74
+ value = config[key]
75
+ if value.lower() != standard.lower():
76
+ if has_override:
77
+ warnings.append("Override active: {}='{}' (Reason: {})".format(
78
+ key, value, config["_override_reason"]
79
+ ))
80
+ elif strict:
81
+ errors.append(
82
+ "❌ Tech Stack Error: {}: '{}' is not supported. " +
83
+ "Platform standard is '{}'. Use _override_reason to document exceptions.".format(
84
+ key, value, standard
85
+ )
86
+ )
87
+ else:
88
+ warnings.append(
89
+ "⚠️ Tech Stack Warning: {}: '{}' is not standard. " +
90
+ "Platform standard is '{}'.".format(key, value, standard)
91
+ )
92
+
93
+ # Optional validations (warnings if missing or different)
94
+ optional_validations = {
95
+ "linting": "biome",
96
+ "testing": "vitest",
97
+ }
98
+
99
+ for key, standard in optional_validations.items():
100
+ if key in config:
101
+ value = config[key]
102
+ if value.lower() != standard.lower():
103
+ if has_override:
104
+ warnings.append("Override active: {}='{}' (Reason: {})".format(
105
+ key, value, config["_override_reason"]
106
+ ))
107
+ else:
108
+ warnings.append(
109
+ "⚠️ Tech Stack Warning: {}: '{}' differs from standard '{}'.".format(
110
+ key, value, standard
111
+ )
112
+ )
113
+
114
+ return {
115
+ "valid": len(errors) == 0,
116
+ "errors": errors,
117
+ "warnings": warnings,
118
+ }
119
+
120
+ def assert_tech_stack(config, strict=False):
121
+ """
122
+ Validates tech stack and fails fast on errors.
123
+
124
+ Args:
125
+ config: Dict with tech stack choices to validate
126
+ strict: If True, fails on any non-compliance
127
+
128
+ Raises:
129
+ Exception: If validation fails with errors
130
+ """
131
+ result = validate_tech_stack(config, strict)
132
+
133
+ # Print warnings
134
+ for warning in result["warnings"]:
135
+ print(warning)
136
+
137
+ # Fail on errors
138
+ if not result["valid"]:
139
+ for error in result["errors"]:
140
+ print(error)
141
+ fail("Tech stack validation failed. See errors above.")
142
+
143
+ return result
144
+
145
+ # Export public API
146
+ __all__ = [
147
+ "get_tech_stack",
148
+ "validate_tech_stack",
149
+ "assert_tech_stack",
150
+ "BUNDLER",
151
+ "RUNTIME",
152
+ "ORM",
153
+ "MESSAGING",
154
+ "LINTING",
155
+ "TESTING",
156
+ "WEB_FRAMEWORK",
157
+ "LANGUAGE",
158
+ "TECH_STACK",
159
+ ]