@tdk-landscape/tdk-cli-core 1.3.14

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 (212) hide show
  1. package/README.md +293 -0
  2. package/bin/tdk.js +14 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +64 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/completion.d.ts +3 -0
  8. package/dist/commands/completion.d.ts.map +1 -0
  9. package/dist/commands/completion.js +294 -0
  10. package/dist/commands/completion.js.map +1 -0
  11. package/dist/commands/config.d.ts +3 -0
  12. package/dist/commands/config.d.ts.map +1 -0
  13. package/dist/commands/config.js +220 -0
  14. package/dist/commands/config.js.map +1 -0
  15. package/dist/commands/doctor.d.ts +3 -0
  16. package/dist/commands/doctor.d.ts.map +1 -0
  17. package/dist/commands/doctor.js +176 -0
  18. package/dist/commands/doctor.js.map +1 -0
  19. package/dist/commands/down.d.ts +3 -0
  20. package/dist/commands/down.d.ts.map +1 -0
  21. package/dist/commands/down.js +32 -0
  22. package/dist/commands/down.js.map +1 -0
  23. package/dist/commands/help.d.ts +2 -0
  24. package/dist/commands/help.d.ts.map +1 -0
  25. package/dist/commands/help.js +130 -0
  26. package/dist/commands/help.js.map +1 -0
  27. package/dist/commands/networks.d.ts +3 -0
  28. package/dist/commands/networks.d.ts.map +1 -0
  29. package/dist/commands/networks.js +260 -0
  30. package/dist/commands/networks.js.map +1 -0
  31. package/dist/commands/project.d.ts +3 -0
  32. package/dist/commands/project.d.ts.map +1 -0
  33. package/dist/commands/project.js +360 -0
  34. package/dist/commands/project.js.map +1 -0
  35. package/dist/commands/projects.d.ts +3 -0
  36. package/dist/commands/projects.d.ts.map +1 -0
  37. package/dist/commands/projects.js +71 -0
  38. package/dist/commands/projects.js.map +1 -0
  39. package/dist/commands/resource.d.ts +69 -0
  40. package/dist/commands/resource.d.ts.map +1 -0
  41. package/dist/commands/resource.js +572 -0
  42. package/dist/commands/resource.js.map +1 -0
  43. package/dist/commands/resources.d.ts +3 -0
  44. package/dist/commands/resources.d.ts.map +1 -0
  45. package/dist/commands/resources.js +73 -0
  46. package/dist/commands/resources.js.map +1 -0
  47. package/dist/commands/stack.d.ts +3 -0
  48. package/dist/commands/stack.d.ts.map +1 -0
  49. package/dist/commands/stack.js +103 -0
  50. package/dist/commands/stack.js.map +1 -0
  51. package/dist/commands/stacks.d.ts +3 -0
  52. package/dist/commands/stacks.d.ts.map +1 -0
  53. package/dist/commands/stacks.js +43 -0
  54. package/dist/commands/stacks.js.map +1 -0
  55. package/dist/commands/status.d.ts +3 -0
  56. package/dist/commands/status.d.ts.map +1 -0
  57. package/dist/commands/status.js +71 -0
  58. package/dist/commands/status.js.map +1 -0
  59. package/dist/commands/ui.d.ts +3 -0
  60. package/dist/commands/ui.d.ts.map +1 -0
  61. package/dist/commands/ui.js +446 -0
  62. package/dist/commands/ui.js.map +1 -0
  63. package/dist/commands/up.d.ts +3 -0
  64. package/dist/commands/up.d.ts.map +1 -0
  65. package/dist/commands/up.js +149 -0
  66. package/dist/commands/up.js.map +1 -0
  67. package/dist/commands/upgrade.d.ts +3 -0
  68. package/dist/commands/upgrade.d.ts.map +1 -0
  69. package/dist/commands/upgrade.js +454 -0
  70. package/dist/commands/upgrade.js.map +1 -0
  71. package/dist/commands/version.d.ts +3 -0
  72. package/dist/commands/version.d.ts.map +1 -0
  73. package/dist/commands/version.js +9 -0
  74. package/dist/commands/version.js.map +1 -0
  75. package/dist/components/Accessible.d.ts +8 -0
  76. package/dist/components/Accessible.d.ts.map +1 -0
  77. package/dist/components/Accessible.js +10 -0
  78. package/dist/components/Accessible.js.map +1 -0
  79. package/dist/components/BaseTooltip.d.ts +4 -0
  80. package/dist/components/BaseTooltip.d.ts.map +1 -0
  81. package/dist/components/BaseTooltip.js +28 -0
  82. package/dist/components/BaseTooltip.js.map +1 -0
  83. package/dist/components/DetailPanel.d.ts +4 -0
  84. package/dist/components/DetailPanel.d.ts.map +1 -0
  85. package/dist/components/DetailPanel.js +18 -0
  86. package/dist/components/DetailPanel.js.map +1 -0
  87. package/dist/components/FileTree.d.ts +4 -0
  88. package/dist/components/FileTree.d.ts.map +1 -0
  89. package/dist/components/FileTree.js +47 -0
  90. package/dist/components/FileTree.js.map +1 -0
  91. package/dist/components/ResourceSelectInput.d.ts +4 -0
  92. package/dist/components/ResourceSelectInput.d.ts.map +1 -0
  93. package/dist/components/ResourceSelectInput.js +7 -0
  94. package/dist/components/ResourceSelectInput.js.map +1 -0
  95. package/dist/components/ResourceTable.d.ts +4 -0
  96. package/dist/components/ResourceTable.d.ts.map +1 -0
  97. package/dist/components/ResourceTable.js +18 -0
  98. package/dist/components/ResourceTable.js.map +1 -0
  99. package/dist/components/TabBar.d.ts +4 -0
  100. package/dist/components/TabBar.d.ts.map +1 -0
  101. package/dist/components/TabBar.js +17 -0
  102. package/dist/components/TabBar.js.map +1 -0
  103. package/dist/components/Tooltip.d.ts +12 -0
  104. package/dist/components/Tooltip.d.ts.map +1 -0
  105. package/dist/components/Tooltip.js +12 -0
  106. package/dist/components/Tooltip.js.map +1 -0
  107. package/dist/components/index.d.ts +8 -0
  108. package/dist/components/index.d.ts.map +1 -0
  109. package/dist/components/index.js +8 -0
  110. package/dist/components/index.js.map +1 -0
  111. package/dist/config/platform-standards.d.ts +159 -0
  112. package/dist/config/platform-standards.d.ts.map +1 -0
  113. package/dist/config/platform-standards.js +181 -0
  114. package/dist/config/platform-standards.js.map +1 -0
  115. package/dist/generator/extension-fetch.d.ts +9 -0
  116. package/dist/generator/extension-fetch.d.ts.map +1 -0
  117. package/dist/generator/extension-fetch.js +153 -0
  118. package/dist/generator/extension-fetch.js.map +1 -0
  119. package/dist/generator/template-engine.d.ts +60 -0
  120. package/dist/generator/template-engine.d.ts.map +1 -0
  121. package/dist/generator/template-engine.js +416 -0
  122. package/dist/generator/template-engine.js.map +1 -0
  123. package/dist/index.d.ts +11 -0
  124. package/dist/index.d.ts.map +1 -0
  125. package/dist/index.js +11 -0
  126. package/dist/index.js.map +1 -0
  127. package/dist/types/index.d.ts +236 -0
  128. package/dist/types/index.d.ts.map +1 -0
  129. package/dist/types/index.js +17 -0
  130. package/dist/types/index.js.map +1 -0
  131. package/dist/utils/cache.d.ts +19 -0
  132. package/dist/utils/cache.d.ts.map +1 -0
  133. package/dist/utils/cache.js +64 -0
  134. package/dist/utils/cache.js.map +1 -0
  135. package/dist/utils/command-helpers.d.ts +17 -0
  136. package/dist/utils/command-helpers.d.ts.map +1 -0
  137. package/dist/utils/command-helpers.js +48 -0
  138. package/dist/utils/command-helpers.js.map +1 -0
  139. package/dist/utils/constants.d.ts +50 -0
  140. package/dist/utils/constants.d.ts.map +1 -0
  141. package/dist/utils/constants.js +100 -0
  142. package/dist/utils/constants.js.map +1 -0
  143. package/dist/utils/discovery-context.d.ts +4 -0
  144. package/dist/utils/discovery-context.d.ts.map +1 -0
  145. package/dist/utils/discovery-context.js +39 -0
  146. package/dist/utils/discovery-context.js.map +1 -0
  147. package/dist/utils/docker.d.ts +3 -0
  148. package/dist/utils/docker.d.ts.map +1 -0
  149. package/dist/utils/docker.js +13 -0
  150. package/dist/utils/docker.js.map +1 -0
  151. package/dist/utils/env-validator.d.ts +15 -0
  152. package/dist/utils/env-validator.d.ts.map +1 -0
  153. package/dist/utils/env-validator.js +95 -0
  154. package/dist/utils/env-validator.js.map +1 -0
  155. package/dist/utils/errors.d.ts +28 -0
  156. package/dist/utils/errors.d.ts.map +1 -0
  157. package/dist/utils/errors.js +127 -0
  158. package/dist/utils/errors.js.map +1 -0
  159. package/dist/utils/file-helpers.d.ts +14 -0
  160. package/dist/utils/file-helpers.d.ts.map +1 -0
  161. package/dist/utils/file-helpers.js +45 -0
  162. package/dist/utils/file-helpers.js.map +1 -0
  163. package/dist/utils/formatting.d.ts +30 -0
  164. package/dist/utils/formatting.d.ts.map +1 -0
  165. package/dist/utils/formatting.js +164 -0
  166. package/dist/utils/formatting.js.map +1 -0
  167. package/dist/utils/paths.d.ts +3 -0
  168. package/dist/utils/paths.d.ts.map +1 -0
  169. package/dist/utils/paths.js +41 -0
  170. package/dist/utils/paths.js.map +1 -0
  171. package/dist/utils/port-assignment.d.ts +6 -0
  172. package/dist/utils/port-assignment.d.ts.map +1 -0
  173. package/dist/utils/port-assignment.js +75 -0
  174. package/dist/utils/port-assignment.js.map +1 -0
  175. package/dist/utils/project-features.d.ts +23 -0
  176. package/dist/utils/project-features.d.ts.map +1 -0
  177. package/dist/utils/project-features.js +98 -0
  178. package/dist/utils/project-features.js.map +1 -0
  179. package/dist/utils/project-templates.d.ts +7 -0
  180. package/dist/utils/project-templates.d.ts.map +1 -0
  181. package/dist/utils/project-templates.js +24 -0
  182. package/dist/utils/project-templates.js.map +1 -0
  183. package/dist/utils/resource-features.d.ts +28 -0
  184. package/dist/utils/resource-features.d.ts.map +1 -0
  185. package/dist/utils/resource-features.js +148 -0
  186. package/dist/utils/resource-features.js.map +1 -0
  187. package/dist/utils/services.d.ts +18 -0
  188. package/dist/utils/services.d.ts.map +1 -0
  189. package/dist/utils/services.js +291 -0
  190. package/dist/utils/services.js.map +1 -0
  191. package/dist/utils/stack-features.d.ts +22 -0
  192. package/dist/utils/stack-features.d.ts.map +1 -0
  193. package/dist/utils/stack-features.js +13 -0
  194. package/dist/utils/stack-features.js.map +1 -0
  195. package/dist/utils/tar.d.ts +7 -0
  196. package/dist/utils/tar.d.ts.map +1 -0
  197. package/dist/utils/tar.js +21 -0
  198. package/dist/utils/tar.js.map +1 -0
  199. package/dist/utils/tilt.d.ts +18 -0
  200. package/dist/utils/tilt.d.ts.map +1 -0
  201. package/dist/utils/tilt.js +77 -0
  202. package/dist/utils/tilt.js.map +1 -0
  203. package/dist/utils/validation.d.ts +9 -0
  204. package/dist/utils/validation.d.ts.map +1 -0
  205. package/dist/utils/validation.js +49 -0
  206. package/dist/utils/validation.js.map +1 -0
  207. package/package.json +72 -0
  208. package/templates/.tiltignore.hbs +73 -0
  209. package/templates/TILT_RESOURCE_DEFAULTS.star.hbs +221 -0
  210. package/templates/TILT_TECH_STACK.star.hbs +150 -0
  211. package/templates/Tiltfile.hbs +295 -0
  212. package/templates/spec.master.hbs +186 -0
@@ -0,0 +1,295 @@
1
+ #!/usr/bin/env starlark
2
+ # -*- coding: utf-8 -*}
3
+ # =============================================================================
4
+ # 🎯 {{project.name}} - TILT ENTRYPOINT
5
+ # =============================================================================
6
+ # SYSTEM-GENERATED BY TDK CLI - DO NOT EDIT
7
+ # Source: .tdk/project.json
8
+ # Generated: {{timestamp}}
9
+ # Run 'tdk project' to regenerate
10
+ # =============================================================================
11
+
12
+ print("🚀 Loading {{project.name}}...")
13
+
14
+ # =============================================================================
15
+ # 📦 REGISTER TDK EXTENSION
16
+ # =============================================================================
17
+ # The TDK Tilt extension (engine, discovery, specs, ext) is vendored into
18
+ # this project at generation time (.tdk/.tdk-out/tdk-cli-ext). Resolution:
19
+ # 1. Vendored in-project copy (default - works offline, no GitHub needed)
20
+ # 2. $TDK_EXTENSION_PATH (explicit override to any tdk-cli checkout)
21
+ # 3. Clear failure with instructions (no endless git retry on a missing repo)
22
+ _vendored_tdk_path = config.main_dir + "/tdk-cli-ext"
23
+ _use_local = False
24
+ _local_tdk_path = ""
25
+
26
+ if str(local("test -d " + _vendored_tdk_path + " && echo yes || echo no", quiet=True, echo_off=True)).strip() == 'yes':
27
+ _use_local = True
28
+ _local_tdk_path = _vendored_tdk_path
29
+ else:
30
+ _env_tdk_path = os.environ.get('TDK_EXTENSION_PATH', '')
31
+ if len(_env_tdk_path) > 0 and str(local("test -d " + _env_tdk_path + " && echo yes || echo no", quiet=True, echo_off=True)).strip() == 'yes':
32
+ _use_local = True
33
+ _local_tdk_path = _env_tdk_path
34
+
35
+ if not _use_local:
36
+ fail("""
37
+ TDK extension not found.
38
+
39
+ 'tdk up' needs the TDK Tilt extension (engine/discovery/specs/ext).
40
+ Fix it with one of:
41
+ 1) Regenerate the project so the extension is vendored in:
42
+ tdk project --yes
43
+ (set $TDK_EXTENSION_SOURCE to a tdk-cli checkout if it was not auto-detected)
44
+ 2) Point at any tdk-cli checkout:
45
+ export TDK_EXTENSION_PATH=/path/to/tdk-cli
46
+ 3) Follow the sandbox guide: https://tdk-landscape.github.io/tdk-website/sandbox/
47
+ """)
48
+
49
+ v1alpha1.extension_repo(name='tdk-cli-local', url='file://' + _local_tdk_path)
50
+ v1alpha1.extension(name='tdk-cli', repo_name='tdk-cli-local', repo_path='')
51
+
52
+ # =============================================================================
53
+ # 📍 PROJECT CONFIGURATION
54
+ # =============================================================================
55
+ # Tiltfile is in .tdk/.tdk-out/, project root is two levels up
56
+ PROJECT_ROOT = config.main_dir + "/../.."
57
+ os.environ['TDK_PROJECT_ROOT'] = PROJECT_ROOT
58
+
59
+ # =============================================================================
60
+ # 🔌 LOAD MASTER CONFIGS & TDK MODULES
61
+ # =============================================================================
62
+ load("TILT_TECH_STACK.star",
63
+ 'assert_tech_stack',
64
+ 'TECH_STACK',
65
+ )
66
+ load("TILT_RESOURCE_DEFAULTS.star",
67
+ 'BASE_PORT_FRONTEND',
68
+ 'BASE_PORT_BACKEND',
69
+ )
70
+ load("spec.master",
71
+ 'RESOURCE_DEFAULTS',
72
+ 'PRE_ALPHA_RESOURCES',
73
+ 'ALPHA_RESOURCES',
74
+ 'BETA_RESOURCES',
75
+ 'FOCUS_PRE_ALPHA',
76
+ 'FOCUS_ALPHA',
77
+ 'FOCUS_BETA',
78
+ )
79
+
80
+ # Load TDK extension modules
81
+ load('ext://tdk-cli',
82
+ 'Utils',
83
+ 'Manifest',
84
+ 'Config',
85
+ 'Orchestrator',
86
+ 'Watchers',
87
+ 'Infra',
88
+ 'Docker',
89
+ 'load_ui_enhancements',
90
+ 'APP_RESOURCES',
91
+ 'GLOBAL_CONFIG_EXPORT',
92
+ 'Registry',
93
+ )
94
+
95
+ # =============================================================================
96
+ # 🏗️ VALIDATE & INITIALIZE
97
+ # =============================================================================
98
+ assert_tech_stack({
99
+ "bundler": TECH_STACK['bundler'],
100
+ "runtime": TECH_STACK['runtime'],
101
+ "orm": TECH_STACK['orm'],
102
+ "messaging": TECH_STACK['messaging'],
103
+ })
104
+
105
+ # =============================================================================
106
+ # 🎨 UI ENHANCEMENTS
107
+ # =============================================================================
108
+ load_ui_enhancements({
109
+ 'enable_tooltips': True,
110
+ 'enable_icons': True,
111
+ 'enable_help_panel': True,
112
+ 'enable_cron_jobs_tab': True,
113
+ })
114
+
115
+ # =============================================================================
116
+ # 📋 PARSE CLI ARGUMENTS
117
+ # =============================================================================
118
+ config.define_string_list('focus', usage='Services to focus on')
119
+ config.define_bool('no-frontend', usage='Skip frontend services')
120
+ config.define_bool('include-monitoring', usage='Include monitoring stack')
121
+ config.define_string_list('verbose', usage='Verbose logging')
122
+ config.define_bool('no-auto-init-new', usage='Do not auto-init new services')
123
+
124
+ for resource_name in RESOURCE_DEFAULTS.keys():
125
+ config.define_bool(resource_name, usage='Enable ' + resource_name)
126
+
127
+ config.define_string_list('args', args=True, usage='Positional arguments')
128
+ cfg = config.parse()
129
+
130
+ # =============================================================================
131
+ # 🔮 AUTO-DISCOVERY
132
+ # =============================================================================
133
+ _AUTO_DISCOVER_ENABLED = os.environ.get('AUTO_DISCOVER', 'true').lower() == 'true'
134
+ _DISCOVERY_SCAN_INTERVAL = int(os.environ.get('DISCOVERY_SCAN_INTERVAL', '5'))
135
+ _AUTO_INIT_NEW_RESOURCES = not cfg.get('no-auto-init-new', False)
136
+
137
+ # Auto-discovery enabled ({{discovery.interval}}s interval)
138
+ _AUTO_DISCOVER_ENABLED = _AUTO_DISCOVER_ENABLED
139
+
140
+ # =============================================================================
141
+ # 📝 LOGGING
142
+ # =============================================================================
143
+ _LOG_LEVEL = "verbose" if (cfg.get('verbose') or os.environ.get('VERBOSE', '').lower() == 'true') else "normal"
144
+
145
+ def get_log_level():
146
+ return _LOG_LEVEL
147
+
148
+ def is_verbose():
149
+ return _LOG_LEVEL == "verbose"
150
+
151
+ os.environ['TILT_LOG_LEVEL'] = _LOG_LEVEL
152
+ if _LOG_LEVEL == "verbose":
153
+ os.environ['VERBOSE'] = 'true'
154
+
155
+ # =============================================================================
156
+ # 🌍 ENVIRONMENT SETUP
157
+ # =============================================================================
158
+ is_macos = str(local('uname -s', quiet=True)).strip() == 'Darwin'
159
+ Utils.load_dotenv(PROJECT_ROOT)
160
+
161
+ # =============================================================================
162
+ # 🎯 FOCUS MODE
163
+ # =============================================================================
164
+ FOCUS_MODE, FOCUS_ENABLED_ALL, FOCUS_ENABLED_RESOURCES = Config.apply_focus(cfg)
165
+ # Load ALWAYS_ENABLED_INFRA from project.json (falls back to defaults if not specified)
166
+ ALWAYS_ENABLED_INFRA = {{starlarkArray alwaysEnabledInfra}}
167
+
168
+ def should_enable(resource_name):
169
+ # Always-enabled infra (proxy/Traefik, verdaccio, database-management, infisical) must stay
170
+ # enabled independent of focus mode: FOCUS_MODE collapses to False whenever the pre-alpha
171
+ # stack bucket is empty (the default on a freshly generated project.json), which used to
172
+ # silently disable Traefik and friends on every out-of-the-box `tdk up`.
173
+ if resource_name in ALWAYS_ENABLED_INFRA:
174
+ return RESOURCE_DEFAULTS.get(resource_name, True)
175
+ if FOCUS_MODE and FOCUS_ENABLED_ALL:
176
+ if resource_name in FOCUS_ENABLED_ALL:
177
+ return True
178
+ for domain in FOCUS_ENABLED_ALL:
179
+ if resource_name.startswith(domain + "-"):
180
+ return True
181
+ return Utils.should_enable(resource_name, cfg, RESOURCE_DEFAULTS)
182
+
183
+ # =============================================================================
184
+ # 🏗️ INFRASTRUCTURE SERVICES
185
+ # =============================================================================
186
+
187
+ print("🏗️ Loading infrastructure services...")
188
+ Infra.load_all(
189
+ should_enable=should_enable,
190
+ fix_docker_networks_fn=Utils.fix_docker_networks,
191
+ docker_provider=Docker,
192
+ write_fn=Utils.write_file_if_changed,
193
+ project_root=PROJECT_ROOT,
194
+ )
195
+
196
+ # =============================================================================
197
+ # 📚 INITIALIZE TDK
198
+ # =============================================================================
199
+ print("🚀 Initializing TDK...")
200
+
201
+ # Use pre-loaded APP_RESOURCES from TDK registry (already initialized with all services)
202
+ # Registry.reinitialize() is only needed if we want to force a fresh discovery
203
+ _app_resources_list = APP_RESOURCES
204
+
205
+ # First run or cache cleared — build registry from manifests
206
+ if len(_app_resources_list) == 0:
207
+ _app_resources_list = Registry.reinitialize()
208
+
209
+ # If still empty, load directly from manifest files
210
+ if len(_app_resources_list) == 0:
211
+ _app_resources_list = Manifest.load_all(PROJECT_ROOT)
212
+
213
+ print("📦 Loaded {} services".format(len(_app_resources_list)))
214
+
215
+ # Create Tilt resources for all services
216
+ TILT_CONTEXT = {
217
+ 'should_enable': should_enable,
218
+ 'write_file': Utils.write_file_if_changed,
219
+ 'global_config': GLOBAL_CONFIG_EXPORT,
220
+ 'project_root': PROJECT_ROOT,
221
+ 'all_services': _app_resources_list,
222
+ }
223
+
224
+ print("🚀 Creating Tilt resources for {} services...".format(len(_app_resources_list)))
225
+ for app_service in _app_resources_list:
226
+ Orchestrator.apply_service(app_service, TILT_CONTEXT)
227
+
228
+ # Setup file watchers
229
+ Watchers.setup_package_json(_app_resources_list, should_enable)
230
+
231
+ # Apply focus mode filter
232
+ # Build known Tilt resource names from discovered services to filter focus list
233
+ _KNOWN_TILT_RESOURCES = set()
234
+ _KNOWN_TILT_RESOURCES.add('service-discovery-daemon')
235
+ _KNOWN_TILT_RESOURCES.add('init-networks')
236
+ _KNOWN_TILT_RESOURCES.add('postgres')
237
+ _KNOWN_TILT_RESOURCES.add('nats')
238
+ _KNOWN_TILT_RESOURCES.add('infisical')
239
+ _KNOWN_TILT_RESOURCES.add('infisical-db')
240
+ _KNOWN_TILT_RESOURCES.add('infisical-redis')
241
+ _KNOWN_TILT_RESOURCES.add('traefik')
242
+ _KNOWN_TILT_RESOURCES.add('verdaccio')
243
+ _KNOWN_TILT_RESOURCES.add('golden-layers-build')
244
+ for _KNOWN_SVC in _app_resources_list:
245
+ _KNOWN_SVC_NAME = _KNOWN_SVC.get('name', '')
246
+ if _KNOWN_SVC_NAME:
247
+ for _KNOWN_RES in _KNOWN_SVC.get('resources', []):
248
+ _KNOWN_RES_NAME = _KNOWN_RES.get('name', '')
249
+ if _KNOWN_RES_NAME:
250
+ _KNOWN_TILT_RESOURCES.add(_KNOWN_RES_NAME)
251
+ _KNOWN_TILT_RESOURCES.add(_KNOWN_RES_NAME + '-run-only')
252
+ _KNOWN_TILT_RESOURCES.add(_KNOWN_RES_NAME + '-config-gen')
253
+ if FOCUS_MODE and FOCUS_ENABLED_RESOURCES:
254
+ _FILTERED_RESOURCES = []
255
+ for _R in FOCUS_ENABLED_RESOURCES:
256
+ if _R in _KNOWN_TILT_RESOURCES:
257
+ _FILTERED_RESOURCES.append(_R)
258
+ else:
259
+ _MATCHED = [kr for kr in _KNOWN_TILT_RESOURCES if kr != 'service-discovery-daemon' and kr.startswith(_R + '-')]
260
+ _FILTERED_RESOURCES.extend(_MATCHED)
261
+ for _INFRA in ['init-networks', 'postgres', 'traefik', 'golden-layers-build']:
262
+ if _INFRA in _KNOWN_TILT_RESOURCES:
263
+ _FILTERED_RESOURCES.append(_INFRA)
264
+ for _KR in _KNOWN_TILT_RESOURCES:
265
+ if _KR.startswith('provision-db-'):
266
+ _FILTERED_RESOURCES.append(_KR)
267
+ _FILTERED_RESOURCES = sorted(set(_FILTERED_RESOURCES))
268
+ if _FILTERED_RESOURCES:
269
+ config.set_enabled_resources(_FILTERED_RESOURCES)
270
+ print("🎯 Focus mode: {} resources".format(len(_FILTERED_RESOURCES)))
271
+ else:
272
+ print("⚠️ No known resources matched focus targets:", ", ".join(FOCUS_ENABLED_RESOURCES))
273
+
274
+ # =============================================================================
275
+ # 👁️ AUTO-DISCOVERY DAEMON
276
+ # =============================================================================
277
+ if _AUTO_DISCOVER_ENABLED:
278
+ watch_file('snapshots/resource-snapshot.json')
279
+
280
+ # Get extension install path: vendored copy inside this project
281
+ discovery_path = _local_tdk_path + "/discovery"
282
+
283
+ daemon_script = discovery_path + '/resource_snapshot.py'
284
+ daemon_cmd = "cd " + config.main_dir + " && python3 \"" + daemon_script + "\" watch"
285
+
286
+ local_resource('service-discovery-daemon',
287
+ serve_cmd=daemon_cmd,
288
+ deps=[daemon_script],
289
+ auto_init=True, labels=['discovery'],
290
+ links=[link('file:///snapshots/resource-snapshot.json', 'Resource Snapshot')]
291
+ )
292
+
293
+
294
+
295
+ print("\n✅ {{project.name}} Tilt ready!")
@@ -0,0 +1,186 @@
1
+ #!/usr/bin/env starlark
2
+ # =============================================================================
3
+ # 🎨 PROJECT SPEC - Stack-Based Configuration
4
+ # =============================================================================
5
+ #
6
+ # SYSTEM-GENERATED BY TDK CLI - DO NOT EDIT
7
+ # Source: .tdk/project.json + TDK Platform Standards v{{version}}
8
+ # Output: .tdk/.tdk-out/
9
+ # Generated: {{timestamp}}
10
+ # Run 'tdk project' to update
11
+ #
12
+ # 🏗️ ARCHITECTURE: Project → Stack → Service (PSR Model)
13
+ # Services are organized into stacks by release phase.
14
+ #
15
+ # 📖 USAGE:
16
+ # In your Tiltfile or topology module:
17
+ #
18
+ # load("{}/spec.master".format(PROJECT_ROOT),
19
+ # "RESOURCE_DEFAULTS",
20
+ # "PRE_ALPHA_RESOURCES",
21
+ # "ALPHA_RESOURCES",
22
+ # "BETA_RESOURCES",
23
+ # "OUT_OF_SCOPE_RESOURCES",
24
+ # "FOCUS_PRE_ALPHA",
25
+ # "FOCUS_ALPHA",
26
+ # "FOCUS_BETA",
27
+ # )
28
+ #
29
+ # =============================================================================
30
+
31
+ # =============================================================================
32
+ # 🎯 STACK DEFINITIONS
33
+ # =============================================================================
34
+ # Services are organized by release phase (stack) for progressive rollout.
35
+ # Each phase builds on the previous one.
36
+
37
+ # =============================================================================
38
+ # 🥚 PRE-ALPHA STACK (MVP - Default Startup)
39
+ # =============================================================================
40
+ # Core infrastructure services - minimal footprint for rapid development
41
+
42
+ PRE_ALPHA_RESOURCES = {
43
+ {{#each stacks.pre_alpha.services}}
44
+ "{{this}}": True, # {{lookup ../serviceDescriptions this}}
45
+ {{/each}}
46
+ }
47
+
48
+ # =============================================================================
49
+ # 🔬 ALPHA STACK (Core Business Services)
50
+ # =============================================================================
51
+ # Essential business services for alpha launch.
52
+
53
+ ALPHA_RESOURCES = {
54
+ {{#each stacks.alpha.services}}
55
+ "{{this}}": False, # {{lookup ../serviceDescriptions this}}
56
+ {{/each}}
57
+ }
58
+
59
+ # =============================================================================
60
+ # 🚀 BETA STACK (Extended Features)
61
+ # =============================================================================
62
+ # Additional services for beta release.
63
+
64
+ BETA_RESOURCES = {
65
+ {{#each stacks.beta.services}}
66
+ "{{this}}": False, # {{lookup ../serviceDescriptions this}}
67
+ {{/each}}
68
+ }
69
+
70
+ # =============================================================================
71
+ # 🚫 OUT OF SCOPE
72
+ # =============================================================================
73
+ # These services are excluded from discovery/loading entirely.
74
+ # To enable, remove from this list and add to appropriate stack above.
75
+
76
+ OUT_OF_SCOPE_RESOURCES = [
77
+ {{#each stacks.out_of_scope.services}}
78
+ "{{this}}", # {{lookup ../serviceDescriptions this}}
79
+ {{/each}}
80
+ ]
81
+
82
+ # =============================================================================
83
+ # 🔧 OPTIONAL INFRASTRUCTURE RESOURCES
84
+ # =============================================================================
85
+ # High-resource infrastructure - enable only when needed
86
+
87
+ OPTIONAL_INFRA_RESOURCES = {
88
+ {{#each optionalInfra}}
89
+ "{{@key}}": {{starlark this}}, # {{lookup ../infraDescriptions @key}}
90
+ {{/each}}
91
+ }
92
+
93
+ # =============================================================================
94
+ # 📦 COMBINED DEFAULTS (Used by Tilt System)
95
+ # =============================================================================
96
+ # Merges all service configs for easy access
97
+
98
+ DEFAULTS = {}
99
+ DEFAULTS.update(PRE_ALPHA_RESOURCES)
100
+ DEFAULTS.update(ALPHA_RESOURCES)
101
+ DEFAULTS.update(BETA_RESOURCES)
102
+ DEFAULTS.update(OPTIONAL_INFRA_RESOURCES)
103
+
104
+ # Alias for Tiltfile compatibility
105
+ RESOURCE_DEFAULTS = DEFAULTS
106
+
107
+ # =============================================================================
108
+ # 🎯 FOCUS FILTERS (for CLI --focus parameter)
109
+ # =============================================================================
110
+ # Predefined service groups for easy startup
111
+
112
+ FOCUS_PRE_ALPHA = list(PRE_ALPHA_RESOURCES.keys())
113
+ FOCUS_ALPHA = list(PRE_ALPHA_RESOURCES.keys()) + list(ALPHA_RESOURCES.keys())
114
+ FOCUS_BETA = list(PRE_ALPHA_RESOURCES.keys()) + list(ALPHA_RESOURCES.keys()) + list(BETA_RESOURCES.keys())
115
+
116
+ # =============================================================================
117
+ # 📁 PATH OVERRIDES
118
+ # =============================================================================
119
+
120
+ SPEC_OVERRIDE = struct(
121
+ DISCOVERY = struct(
122
+ RESOURCE_PATTERNS = {{starlarkArray discovery.paths}},
123
+ ),
124
+
125
+ OUTPUT = struct(
126
+ BASE_DIR = "./.tdk",
127
+ SNAPSHOT_FILE = "./.tdk/.tdk-out/snapshots/resource-snapshot.json",
128
+ AUTOGENERATED_FOLDER = ".autogenerated",
129
+ ),
130
+ )
131
+
132
+ # Top-level aliases for Tilt discovery compatibility
133
+ RESOURCE_PATTERNS = {{starlarkArray discovery.paths}}
134
+
135
+ # =============================================================================
136
+ # ⚙️ CONSTANTS OVERRIDES
137
+ # =============================================================================
138
+
139
+ CONSTANTS_OVERRIDE = struct(
140
+ SUPPORTED_FEATURES = [
141
+ "{{tech.messaging}}",
142
+ "{{tech.orm}}",
143
+ "{{tech.bundler}}-node",
144
+ ],
145
+ )
146
+
147
+ # =============================================================================
148
+ # 🎯 PROJECT-SPECIFIC METADATA
149
+ # =============================================================================
150
+
151
+ PROJECT = struct(
152
+ NAME = "{{project.name}}",
153
+ VERSION = "{{project.version}}",
154
+
155
+ STACKS = struct(
156
+ PRE_ALPHA = FOCUS_PRE_ALPHA,
157
+ ALPHA = FOCUS_ALPHA,
158
+ BETA = FOCUS_BETA,
159
+ ),
160
+ )
161
+
162
+ # =============================================================================
163
+ # 📝 CHANGE LOG
164
+ # =============================================================================
165
+ # {{timestamp}}: Generated by TDK CLI v{{version}}
166
+ # =============================================================================
167
+
168
+ # =============================================================================
169
+ # 📦 EXPORTS
170
+ # =============================================================================
171
+
172
+ __all__ = [
173
+ "RESOURCE_DEFAULTS",
174
+ "DEFAULTS",
175
+ "PRE_ALPHA_RESOURCES",
176
+ "ALPHA_RESOURCES",
177
+ "BETA_RESOURCES",
178
+ "OUT_OF_SCOPE_RESOURCES",
179
+ "OPTIONAL_INFRA_RESOURCES",
180
+ "FOCUS_PRE_ALPHA",
181
+ "FOCUS_ALPHA",
182
+ "FOCUS_BETA",
183
+ "SPEC_OVERRIDE",
184
+ "CONSTANTS_OVERRIDE",
185
+ "PROJECT",
186
+ ]