@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,424 @@
1
+ #!/usr/bin/env starlark
2
+ # =============================================================================
3
+ # 🔍 TILT DISCOVERY CONFIGURATION - MASTER CONFIG
4
+ # =============================================================================
5
+ #
6
+ # ⚠️ DEVELOPER NOTICE: This is a SYSTEM CONFIG file.
7
+ # For human-friendly docs, see: TILT_CONFIG.md
8
+ #
9
+ # This file defines service discovery settings for the TDK Landscape platform.
10
+ # Discovery automatically finds and registers services from the filesystem.
11
+ #
12
+ # 📖 TO EDIT DISCOVERY SETTINGS:
13
+ # Edit: TILT_DISCOVERY.star (this file) for platform-wide discovery behavior
14
+ #
15
+ # 🔗 ARCHITECTURE:
16
+ # - TILT_TECH_STACK.star: Technology choices
17
+ # - TILT_RESOURCE_DEFAULTS.star: Service defaults (ports, health checks)
18
+ # - TILT_DISCOVERY.star: Discovery-specific settings (scan intervals, synthesis)
19
+ # - spec.master: Project-specific service lists
20
+ #
21
+ # =============================================================================
22
+
23
+ # =============================================================================
24
+ # DISCOVERY SCAN CONFIGURATION
25
+ # =============================================================================
26
+ # How and when the discovery daemon scans for services.
27
+
28
+
29
+ def get_discovery_scan_config():
30
+ """Return discovery scan configuration.
31
+
32
+ Returns:
33
+ dict: Scan behavior settings
34
+ """
35
+ return {
36
+ # Filesystem scan interval in seconds (for auto-discovery daemon)
37
+ "scan_interval_seconds": 5,
38
+
39
+ # Maximum scan timeout in milliseconds
40
+ "max_scan_timeout_ms": 5000,
41
+
42
+ # Initial scan delay on startup (allows services to stabilize)
43
+ "initial_scan_delay_seconds": 2,
44
+
45
+ # Debounce delay for filesystem changes (prevents excessive rescans)
46
+ "scan_debounce_ms": 100,
47
+ }
48
+
49
+
50
+ # =============================================================================
51
+ # MANIFEST DISCOVERY CONFIGURATION
52
+ # =============================================================================
53
+ # Settings for manifest file discovery and synthesis.
54
+
55
+
56
+ def get_manifest_discovery_config():
57
+ """Return manifest discovery configuration.
58
+
59
+ Returns:
60
+ dict: Manifest discovery settings
61
+ """
62
+ return {
63
+ # Maximum manifests per root before warning
64
+ "max_manifests_per_root": 50,
65
+
66
+ # Maximum manifest file size in bytes (1MB)
67
+ "max_manifest_size_bytes": 1048576,
68
+
69
+ # Manifest filename patterns to search for
70
+ "manifest_filenames": [
71
+ "service.json",
72
+ ],
73
+
74
+ # Enable synthesis for services without manifests
75
+ "synthesis_enabled": True,
76
+
77
+ # Synthesis port defaults by service type
78
+ "synthesis_port_defaults": {
79
+ "frontend": 3000,
80
+ "backend": 4000,
81
+ "sdk": 5175,
82
+ "migrator": 4000,
83
+ "worker": 4000,
84
+ "library": None, # Libraries don't have ports
85
+ },
86
+
87
+ # Service type detection patterns (suffixes)
88
+ "resource_type_patterns": {
89
+ "frontend": "-frontend",
90
+ "backend": "-backend",
91
+ "sdk": "-sdk",
92
+ "migrator": "-migrator",
93
+ "worker": "-worker",
94
+ "library": "-library",
95
+ },
96
+ }
97
+
98
+
99
+ # =============================================================================
100
+ # SERVICE SYNTHESIS CONFIGURATION
101
+ # =============================================================================
102
+ # Auto-compute settings for manifest synthesis.
103
+
104
+
105
+ def get_synthesis_config():
106
+ """Return resource synthesis configuration.
107
+
108
+ Returns:
109
+ dict: Auto-compute settings for synthesized manifests
110
+ """
111
+ return {
112
+ # Enable auto-computation of ports from service type + domain
113
+ "auto_compute_ports": True,
114
+
115
+ # Enable auto-computation of Traefik paths from domain
116
+ "auto_compute_traefik": True,
117
+
118
+ # Enable auto-computation of database names from domain + service
119
+ "auto_compute_database_name": True,
120
+
121
+ # Enable auto-computation of backendName for frontends
122
+ "auto_compute_backend_name": True,
123
+
124
+ # Enable auto-computation of basePath for frontends
125
+ "auto_compute_base_path": True,
126
+
127
+ # Database naming pattern: {project}_{domain}_{resource_function}
128
+ # Example: services/product/users/user-management-backend -> {project}_user_management
129
+ "database_name_pattern": "TDK_{domain}_{function}",
130
+
131
+ # Backend name pattern for frontends: {domain}-management-backend
132
+ "backend_name_pattern": "{domain}-management-backend",
133
+
134
+ # Base path pattern for frontends: /{domain}s
135
+ "base_path_pattern": "/{domain}s",
136
+
137
+ # Traefik path prefix pattern for backends: /api/{domain}s
138
+ "traefik_path_pattern": "/api/{domain}s",
139
+ }
140
+
141
+
142
+ # =============================================================================
143
+ # DOMAIN CONFIGURATION
144
+ # =============================================================================
145
+ # Business stacks are defined in .tdk/project.json per project.
146
+ # This function returns an empty list - stacks are discovered dynamically.
147
+
148
+
149
+ def get_valid_stacks():
150
+ """Return list of valid business stacks from project config.
151
+
152
+ Returns:
153
+ list: Valid stack names (loaded from .tdk/project.json)
154
+ """
155
+ # Stacks are project-specific and loaded from project.json
156
+ # Return empty list - actual stacks discovered from filesystem
157
+ return []
158
+
159
+
160
+ # =============================================================================
161
+ # SERVICE TYPE CONFIGURATION
162
+ # =============================================================================
163
+ # Valid service types for the platform.
164
+
165
+
166
+ def get_valid_resource_types():
167
+ """Return list of valid resource types.
168
+
169
+ Returns:
170
+ list: Valid resource type names
171
+ """
172
+ return [
173
+ "frontend",
174
+ "backend",
175
+ "library",
176
+ "migrator",
177
+ "sdk",
178
+ "worker",
179
+ ]
180
+
181
+
182
+ # =============================================================================
183
+ # RESOURCE-LEVEL FEATURES CONFIGURATION
184
+ # =============================================================================
185
+ # Valid values for a single resource's `features: []` array in its
186
+ # service.json (code generators plus per-resource infra capabilities).
187
+ # Distinct from project-level features (cli/src/utils/project-features.ts),
188
+ # which are infra/optional services enabled project-wide via project.json.
189
+
190
+
191
+ def get_valid_resource_features():
192
+ """Return list of valid resource-level feature flags.
193
+
194
+ Returns:
195
+ list: Valid feature flag names for a resource's `features: []` array
196
+ """
197
+ return [
198
+ # Resource-level features (code generators)
199
+ "api-client",
200
+ "env-config",
201
+ "api-index",
202
+ "prisma",
203
+ # Infrastructure features
204
+ "nats",
205
+ "redis",
206
+ "infisical",
207
+ "vitest",
208
+ "traefik",
209
+ "websocket",
210
+ "graphql",
211
+ "grpc",
212
+ "vite-node",
213
+ "maintenance",
214
+ ]
215
+
216
+
217
+ # =============================================================================
218
+ # PORT CONFIGURATION
219
+ # =============================================================================
220
+ # Port range definitions for validation.
221
+
222
+
223
+ def get_port_ranges():
224
+ """Return port ranges by resource type.
225
+
226
+ Returns:
227
+ dict: Port range definitions
228
+ """
229
+ return {
230
+ "frontend": {"min": 3000, "max": 5999},
231
+ "backend": {"min": 4000, "max": 5999},
232
+ "worker": {"min": 4000, "max": 6999},
233
+ "migrator": {"min": 7000, "max": 7999},
234
+ "sdk": {"min": 3000, "max": 9999}, # SDKs don't have strict rules
235
+ "library": {"min": 3000, "max": 9999}, # Libraries don't have ports
236
+ }
237
+
238
+
239
+ # =============================================================================
240
+ # DEPENDENCY RESOLUTION CONFIGURATION
241
+ # =============================================================================
242
+ # Settings for resolving service dependencies.
243
+
244
+
245
+ def get_dependency_resolution_config():
246
+ """Return dependency resolution configuration.
247
+
248
+ Returns:
249
+ dict: Dependency resolution settings
250
+ """
251
+ return {
252
+ # Maximum number of dependencies per service
253
+ "max_dependencies": 10,
254
+
255
+ # Maximum depth for dependency graph traversal
256
+ "max_dependency_depth": 5,
257
+
258
+ # Enable circular dependency detection
259
+ "detect_circular_dependencies": True,
260
+
261
+ # Library dependency patterns (package.json prefixes)
262
+ "library_dependency_prefixes": [
263
+ "@tdk/",
264
+ ],
265
+
266
+ # Default internal dependencies for service types
267
+ "default_dependencies": {
268
+ "backend": [], # No default deps, explicit only
269
+ "frontend": [], # Backend deps computed from backendName
270
+ "migrator": [],
271
+ "worker": ["nats"],
272
+ },
273
+ }
274
+
275
+
276
+ # =============================================================================
277
+ # DISCOVERY PATHS CONFIGURATION
278
+ # =============================================================================
279
+ # Where to search for services.
280
+
281
+
282
+ def get_discovery_paths():
283
+ """Return paths to scan for resources.
284
+
285
+ Returns:
286
+ list: Directory paths to scan
287
+ """
288
+ return [
289
+ "services/product",
290
+ "services/platform",
291
+ "shared-product-engineering",
292
+ "shared-platform-engineering",
293
+ "shared-ddd-layers",
294
+ ]
295
+
296
+
297
+ # =============================================================================
298
+ # COMPLETE DISCOVERY CONFIGURATION
299
+ # =============================================================================
300
+
301
+
302
+ def get_discovery_defaults():
303
+ """Return complete discovery configuration.
304
+
305
+ Returns:
306
+ dict: All discovery settings
307
+ """
308
+ return {
309
+ "scan": get_discovery_scan_config(),
310
+ "manifest": get_manifest_discovery_config(),
311
+ "synthesis": get_synthesis_config(),
312
+ "stacks": get_valid_stacks(),
313
+ "resource_types": get_valid_resource_types(),
314
+ "features": get_valid_resource_features(),
315
+ "port_ranges": get_port_ranges(),
316
+ "dependencies": get_dependency_resolution_config(),
317
+ "paths": get_discovery_paths(),
318
+ }
319
+
320
+
321
+ # =============================================================================
322
+ # FEATURE FLAGS CONFIGURATION
323
+ # =============================================================================
324
+ # Feature flags for gradual rollout of new functionality.
325
+
326
+
327
+ def get_feature_flags():
328
+ """Return feature flags for gradual rollout.
329
+
330
+ These flags control the activation of new infrastructure features,
331
+ allowing for safe, gradual rollout across the platform.
332
+
333
+ Returns:
334
+ dict: Feature flag states
335
+ """
336
+ return {
337
+ # Enable new auto-computation defaults (ports, database names, etc.)
338
+ "auto_compute_defaults": True,
339
+
340
+ # Enable override detection and warnings
341
+ "override_detection": True,
342
+
343
+ # Enable synthesis-by-default for new services
344
+ "synthesis_by_default": True,
345
+
346
+ # Enable hardcoded value detection in validation
347
+ "hardcoded_value_detection": True,
348
+
349
+ # Enable CLI auto-fix capabilities
350
+ "cli_auto_fix": True,
351
+
352
+ # Enable strict validation mode (treats warnings as errors)
353
+ "strict_validation": False,
354
+
355
+ # Enable new port allocation strategy
356
+ "new_port_allocation": True,
357
+
358
+ # Enable master config validation
359
+ "master_config_validation": True,
360
+
361
+ # Migration mode - enables transitional compatibility
362
+ "migration_mode": False,
363
+
364
+ # Rollback plan available
365
+ "rollback_enabled": True,
366
+ }
367
+
368
+
369
+ # =============================================================================
370
+ # MODULE EXPORTS
371
+ # =============================================================================
372
+
373
+ # Configuration exports
374
+ DISCOVERY_SCAN_CONFIG = get_discovery_scan_config()
375
+ MANIFEST_DISCOVERY_CONFIG = get_manifest_discovery_config()
376
+ SYNTHESIS_CONFIG = get_synthesis_config()
377
+ VALID_STACKS = get_valid_stacks()
378
+ VALID_RESOURCE_TYPES = get_valid_resource_types()
379
+ VALID_RESOURCE_FEATURES = get_valid_resource_features()
380
+ PORT_RANGES = get_port_ranges()
381
+ DEPENDENCY_CONFIG = get_dependency_resolution_config()
382
+ DISCOVERY_PATHS = get_discovery_paths()
383
+ DISCOVERY_DEFAULTS = get_discovery_defaults()
384
+ FEATURE_FLAGS = get_feature_flags()
385
+
386
+ # Individual constants for convenience
387
+ MAX_MANIFESTS_PER_ROOT = MANIFEST_DISCOVERY_CONFIG["max_manifests_per_root"]
388
+ SCAN_INTERVAL_SECONDS = DISCOVERY_SCAN_CONFIG["scan_interval_seconds"]
389
+ MAX_SCAN_TIMEOUT_MS = DISCOVERY_SCAN_CONFIG["max_scan_timeout_ms"]
390
+ SYNTHESIS_ENABLED = MANIFEST_DISCOVERY_CONFIG["synthesis_enabled"]
391
+ MAX_DEPENDENCIES = DEPENDENCY_CONFIG["max_dependencies"]
392
+
393
+ __all__ = [
394
+ # Functions
395
+ "get_discovery_scan_config",
396
+ "get_manifest_discovery_config",
397
+ "get_synthesis_config",
398
+ "get_valid_stacks",
399
+ "get_valid_resource_types",
400
+ "get_valid_resource_features",
401
+ "get_port_ranges",
402
+ "get_dependency_resolution_config",
403
+ "get_discovery_paths",
404
+ "get_discovery_defaults",
405
+ "get_feature_flags",
406
+
407
+ # Constants
408
+ "DISCOVERY_SCAN_CONFIG",
409
+ "MANIFEST_DISCOVERY_CONFIG",
410
+ "SYNTHESIS_CONFIG",
411
+ "VALID_STACKS",
412
+ "VALID_RESOURCE_TYPES",
413
+ "VALID_RESOURCE_FEATURES",
414
+ "PORT_RANGES",
415
+ "DEPENDENCY_CONFIG",
416
+ "DISCOVERY_PATHS",
417
+ "DISCOVERY_DEFAULTS",
418
+ "FEATURE_FLAGS",
419
+ "MAX_MANIFESTS_PER_ROOT",
420
+ "SCAN_INTERVAL_SECONDS",
421
+ "MAX_SCAN_TIMEOUT_MS",
422
+ "SYNTHESIS_ENABLED",
423
+ "MAX_DEPENDENCIES",
424
+ ]
@@ -0,0 +1,58 @@
1
+ # =============================================================================
2
+ # 🎯 TDK-DISCOVERY - Service Discovery Plugin
3
+ # =============================================================================
4
+ # This is the Tiltfile entry point for the tdk-discovery repo.
5
+ # It exports manifest loading, registry, and auto-discovery daemon.
6
+ #
7
+ # Usage:
8
+ # v1alpha1.extension_repo(name='tdk-discovery', url='https://github.com/tdk-landscape/tdk-discovery')
9
+ # load('ext://tdk-discovery', 'get_discovery_path', 'run_daemon', ...)
10
+ # =============================================================================
11
+
12
+ # Constants
13
+ load('./constants.star',
14
+ _MANIFEST_FILENAME='MANIFEST_FILENAME',
15
+ _MANIFEST_FILENAME_YAML='MANIFEST_FILENAME_YAML',
16
+ _RESOURCES_ROOT='RESOURCES_ROOT',
17
+ _DISCOVERY_SCAN_ROOTS='DISCOVERY_SCAN_ROOTS',
18
+ _SCAN_ROOT_PATTERNS='SCAN_ROOT_PATTERNS'
19
+ )
20
+
21
+ # Discovery modules
22
+ load('./discovery_orchestrator.star', _initialize_discovery='initialize_discovery')
23
+ load('./discovery_daemon.star', _run_discovery_daemon='run_discovery_daemon')
24
+ load('./resource_snapshot.star', _get_resource_snapshot_path='get_resource_snapshot_path')
25
+
26
+ # =============================================================================
27
+ # RE-EXPORTS
28
+ # =============================================================================
29
+
30
+ # Constants
31
+ MANIFEST_FILENAME = _MANIFEST_FILENAME
32
+ MANIFEST_FILENAME_YAML = _MANIFEST_FILENAME_YAML
33
+ RESOURCES_ROOT = _RESOURCES_ROOT
34
+ DISCOVERY_SCAN_ROOTS = _DISCOVERY_SCAN_ROOTS
35
+ SCAN_ROOT_PATTERNS = _SCAN_ROOT_PATTERNS
36
+
37
+ # Functions
38
+ initialize_discovery = _initialize_discovery
39
+ run_discovery_daemon = _run_discovery_daemon
40
+ get_resource_snapshot_path = _get_resource_snapshot_path
41
+
42
+ # =============================================================================
43
+ # UTILITIES
44
+ # =============================================================================
45
+
46
+ def get_discovery_path():
47
+ """Return the path to the discovery module."""
48
+ return '.'
49
+
50
+ def get_resource_snapshot_script():
51
+ """Return the path to the service snapshot script."""
52
+ return './resource_snapshot.py'
53
+
54
+ def get_daemon_command():
55
+ """Return the command to run the discovery daemon."""
56
+ return 'python3 ./resource_snapshot.py daemon'
57
+
58
+ print("✅ TDK Discovery loaded: manifest scanning and auto-discovery")