@tdk-landscape/tdk-cli-core 1.3.15 β†’ 1.3.26

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,299 @@
1
+ # =============================================================================
2
+ # πŸ‘οΈ TILT SDK - FILE WATCHERS
3
+ # =============================================================================
4
+ # Path: .tilt/provisioner/watchers.star
5
+ # Purpose: Set up file watchers for automatic config regeneration
6
+ # =============================================================================
7
+ #
8
+ # This module sets up watchers for package.json files across all services.
9
+ # When a developer runs `bun add @tdk/x`, the watcher triggers
10
+ # automatic regeneration of TSConfig and Vite configurations.
11
+ #
12
+ # Usage:
13
+ # Watchers.setup_package_json(services, should_enable_fn)
14
+ # =============================================================================
15
+
16
+ # =============================================================================
17
+ # πŸ“¦ PACKAGE.JSON WATCHERS
18
+ # =============================================================================
19
+
20
+ def setup_package_json_watchers(services, should_enable):
21
+ """
22
+ Set up file watchers for package.json across all services.
23
+
24
+ When package.json changes (e.g., via `bun add @tdk/x`),
25
+ Tilt will automatically trigger config regeneration.
26
+
27
+ Args:
28
+ services: List of APP_RESOURCES from registry
29
+ should_enable: Function that takes service name and returns bool
30
+ """
31
+ watched_paths = []
32
+
33
+ for app_service in services:
34
+ service_name = app_service.get('name', '')
35
+ if not service_name:
36
+ continue
37
+ if not should_enable(service_name):
38
+ continue
39
+
40
+ resource_path = app_service.get('path', '')
41
+ if not resource_path:
42
+ # Skip services without path (libraries or incomplete manifests)
43
+ continue
44
+
45
+ for resource in app_service.get('resources', []):
46
+ resource_name = resource.get('name', '')
47
+ if not resource_name:
48
+ continue
49
+ full_resource_path = resource_path + '/' + resource_name
50
+ pkg_json_path = full_resource_path + '/package.json'
51
+
52
+ if pkg_json_path not in watched_paths:
53
+ watched_paths.append(pkg_json_path)
54
+ watch_file(pkg_json_path)
55
+
56
+ if watched_paths:
57
+ print("πŸ“¦ ═══════════════════════════════════════════════════════════════")
58
+ print("πŸ“¦ AUTOMATIC BRIDGE: Watching " + str(len(watched_paths)) + " package.json files")
59
+ print("πŸ“¦ When you 'bun add @tdk/x', configs auto-regenerate!")
60
+ print("πŸ“¦ ═══════════════════════════════════════════════════════════════")
61
+
62
+ return watched_paths
63
+
64
+
65
+ # =============================================================================
66
+ # πŸ› οΈ UTILITY RESOURCES
67
+ # =============================================================================
68
+
69
+ def setup_utility_resources():
70
+ """Set up common utility resources."""
71
+ local_resource('lint',
72
+ cmd='bun biome lint --write .',
73
+ labels=['dev.quality'],
74
+ auto_init=False
75
+ )
76
+
77
+ local_resource('format',
78
+ cmd='bun biome check --write . && bun biome format --write .',
79
+ labels=['dev.quality'],
80
+ auto_init=False
81
+ )
82
+
83
+ local_resource('build-shared',
84
+ cmd='bun run build:shared',
85
+ labels=['dev.quality'],
86
+ auto_init=False
87
+ )
88
+
89
+ local_resource('prune-images',
90
+ cmd='./.tdk/.tdk-out/ext/assets/scripts/cleanup-tilt-images.sh --keep 0 --force && docker image prune -f',
91
+ resource_deps=[],
92
+ labels=['dev.maintenance'],
93
+ auto_init=False
94
+ )
95
+
96
+ local_resource('memory-optimizer',
97
+ cmd='./.tdk/.tdk-out/ext/assets/scripts/mac-m1-resource-monitor.sh && ./.tdk/.tdk-out/ext/assets/scripts/cleanup-tilt-images.sh --keep 0 --force && docker image prune -f && docker builder prune -af --filter "until=24h"',
98
+ resource_deps=[],
99
+ labels=['dev.maintenance', 'mac-m1'],
100
+ auto_init=False
101
+ )
102
+
103
+ local_resource('prune-builder-cache',
104
+ cmd='docker builder prune -af && docker image prune -f',
105
+ resource_deps=[],
106
+ labels=['dev.maintenance', 'mac-m1'],
107
+ auto_init=False
108
+ )
109
+
110
+ # Continuous dangling image cleanup - runs every 5 minutes via serve_cmd loop
111
+ local_resource('auto-prune-dangling',
112
+ serve_cmd='''
113
+ echo "🧹 Auto-prune started (every 300s)"
114
+ while true; do
115
+ count=$(docker images -f "dangling=true" -q 2>/dev/null | wc -l | tr -d ' ')
116
+ if [ "$count" -gt "5" ]; then
117
+ echo "$(date +%H:%M:%S) 🧹 Cleaning $count dangling images..."
118
+ docker image prune -f 2>/dev/null || true
119
+ else
120
+ echo "$(date +%H:%M:%S) βœ“ $count dangling images (threshold: 5)"
121
+ fi
122
+ sleep 300
123
+ done
124
+ ''',
125
+ resource_deps=[],
126
+ labels=['dev.maintenance', 'mac-m1'],
127
+ auto_init=False,
128
+ )
129
+
130
+ # Continuously reclaim heavyweight migrator images once migration succeeds.
131
+ local_resource('auto-prune-migrator-images',
132
+ serve_cmd='''
133
+ echo "🧹 Migrator image cleanup started (every 45s)"
134
+ while true; do
135
+ ./.tdk/.tdk-out/ext/assets/scripts/cleanup-completed-migrator-images.sh || true
136
+ sleep 45
137
+ done
138
+ ''',
139
+ resource_deps=[],
140
+ labels=['dev.maintenance'],
141
+ auto_init=True,
142
+ )
143
+
144
+
145
+ def setup_dependency_sync_status():
146
+ """Set up dependency sync status display resource."""
147
+ local_resource('dependency-sync-status',
148
+ cmd='''
149
+ echo "πŸ”„ ═══════════════════════════════════════════════════════════════"
150
+ echo "πŸ”„ AUTOMATED DEPENDENCY SYNCHRONIZATION STATUS v2.0"
151
+ echo "πŸ”„ SDK: engine/ directory structure"
152
+ echo "πŸ”„ ═══════════════════════════════════════════════════════════════"
153
+ echo ""
154
+ echo "πŸš€ AUTOMATIC BRIDGE - HOW IT WORKS:"
155
+ echo " 1. bun add @tdk/auth"
156
+ echo " 2. Tilt watches package.json"
157
+ echo " 3. TSConfig/Vite/Manifest auto-update"
158
+ echo ""
159
+ echo "🎯 CONVENTION OVER CONFIGURATION:"
160
+ echo " @tdk/platform-x β†’ shared-platform-engineering/platform-x/src"
161
+ echo " @tdk/product-x β†’ shared-product-engineering/product-x/src"
162
+ echo ""
163
+ echo "πŸ”„ ═══════════════════════════════════════════════════════════════"
164
+ ''',
165
+ labels=['dev.tools', 'dependency-sync'],
166
+ auto_init=False
167
+ )
168
+
169
+
170
+ def setup_cron_resources():
171
+ """Set up cron job resources that run periodically."""
172
+ # Initialize status tracking
173
+ local_resource('cron-status-init',
174
+ cmd='./.tdk/.tdk-out/ext/ui-enhancements/cron-status-tracker.sh init',
175
+ labels=['dev.quality', 'cron', 'setup'],
176
+ auto_init=True,
177
+ )
178
+
179
+ # Cron lint - runs every 60 seconds
180
+ local_resource('cron-lint',
181
+ serve_cmd='''
182
+ echo "🧹 Cron lint started (every 60s) - auto-fixing issues..."
183
+ ./.tdk/.tdk-out/ext/ui-enhancements/cron-status-tracker.sh update cron-lint running
184
+ while true; do
185
+ start_time=$(date +%s)
186
+
187
+ # Check for pause signal
188
+ if [ -f /tmp/cron-jobs-control/cron-lint.pause ]; then
189
+ echo "$(date +%H:%M:%S) ⏸️ cron-lint paused"
190
+ sleep 5
191
+ continue
192
+ fi
193
+
194
+ # Check for manual trigger
195
+ if [ -f /tmp/cron-jobs-control/cron-lint.trigger ]; then
196
+ rm /tmp/cron-jobs-control/cron-lint.trigger
197
+ echo "$(date +%H:%M:%S) ▢️ Manual trigger received"
198
+ fi
199
+
200
+ echo "$(date +%H:%M:%S) 🧹 Running lint..."
201
+ ./.tdk/.tdk-out/ext/ui-enhancements/cron-status-tracker.sh update cron-lint running
202
+
203
+ if bun biome lint --write . 2>&1; then
204
+ end_time=$(date +%s)
205
+ duration=$((end_time - start_time))
206
+ echo "$(date +%H:%M:%S) βœ… Lint complete (${duration}s)"
207
+ ./.tdk/.tdk-out/ext/ui-enhancements/cron-status-tracker.sh update cron-lint success "${duration}s"
208
+ else
209
+ end_time=$(date +%s)
210
+ duration=$((end_time - start_time))
211
+ echo "$(date +%H:%M:%S) ⚠️ Lint found issues (${duration}s)"
212
+ ./.tdk/.tdk-out/ext/ui-enhancements/cron-status-tracker.sh update cron-lint failure "${duration}s"
213
+ fi
214
+
215
+ echo "$(date +%H:%M:%S) 😴 Sleeping 60s..."
216
+ sleep 60
217
+ done
218
+ ''',
219
+ resource_deps=['cron-status-init'],
220
+ labels=['dev.quality', 'cron'],
221
+ auto_init=True,
222
+ )
223
+
224
+ # Cron format - runs every 60 seconds
225
+ local_resource('cron-format',
226
+ serve_cmd='''
227
+ echo "🎨 Cron format started (every 60s) - auto-fixing formatting..."
228
+ ./.tdk/.tdk-out/ext/ui-enhancements/cron-status-tracker.sh update cron-format running
229
+ while true; do
230
+ start_time=$(date +%s)
231
+
232
+ # Check for pause signal
233
+ if [ -f /tmp/cron-jobs-control/cron-format.pause ]; then
234
+ echo "$(date +%H:%M:%S) ⏸️ cron-format paused"
235
+ sleep 5
236
+ continue
237
+ fi
238
+
239
+ # Check for manual trigger
240
+ if [ -f /tmp/cron-jobs-control/cron-format.trigger ]; then
241
+ rm /tmp/cron-jobs-control/cron-format.trigger
242
+ echo "$(date +%H:%M:%S) ▢️ Manual trigger received"
243
+ fi
244
+
245
+ echo "$(date +%H:%M:%S) 🎨 Running format..."
246
+ ./.tdk/.tdk-out/ext/ui-enhancements/cron-status-tracker.sh update cron-format running
247
+
248
+ if bun biome check --write . && bun biome format --write . 2>&1; then
249
+ end_time=$(date +%s)
250
+ duration=$((end_time - start_time))
251
+ echo "$(date +%H:%M:%S) βœ… Format complete (${duration}s)"
252
+ ./.tdk/.tdk-out/ext/ui-enhancements/cron-status-tracker.sh update cron-format success "${duration}s"
253
+ else
254
+ end_time=$(date +%s)
255
+ duration=$((end_time - start_time))
256
+ echo "$(date +%H:%M:%S) ⚠️ Format had issues (${duration}s)"
257
+ ./.tdk/.tdk-out/ext/ui-enhancements/cron-status-tracker.sh update cron-format failure "${duration}s"
258
+ fi
259
+
260
+ echo "$(date +%H:%M:%S) 😴 Sleeping 60s..."
261
+ sleep 60
262
+ done
263
+ ''',
264
+ resource_deps=['cron-status-init'],
265
+ labels=['dev.quality', 'cron'],
266
+ auto_init=True,
267
+ )
268
+
269
+ # Status HTTP server for cron jobs
270
+ local_resource('cron-jobs-status-server',
271
+ serve_cmd='./.tdk/.tdk-out/ext/ui-enhancements/cron-status-server.sh',
272
+ resource_deps=['cron-status-init'],
273
+ labels=['dev.quality', 'cron', 'api'],
274
+ auto_init=True,
275
+ )
276
+
277
+ print("⏰ ═══════════════════════════════════════════════════════════════")
278
+ print("⏰ CRON JOBS CONFIGURED")
279
+ print("⏰ - cron-lint: runs every 60 seconds")
280
+ print("⏰ - cron-format: runs every 60 seconds")
281
+ print("⏰ - auto-prune-dangling: runs every 5 minutes (existing)")
282
+ print("⏰ - auto-prune-migrator-images: runs every 45 seconds (existing)")
283
+ print("⏰ - Status API: http://localhost:10352/api/cron-jobs-status")
284
+ print("⏰ ═══════════════════════════════════════════════════════════════")
285
+
286
+
287
+ # =============================================================================
288
+ # πŸ“¦ WATCHERS STRUCT (Public API)
289
+ # =============================================================================
290
+
291
+ Watchers = struct(
292
+ # Package.json watchers
293
+ setup_package_json = setup_package_json_watchers,
294
+
295
+ # Utility resources
296
+ setup_utilities = setup_utility_resources,
297
+ setup_dep_sync_status = setup_dependency_sync_status,
298
+ setup_cron_resources = setup_cron_resources,
299
+ )