@flisk-sh/flisk 0.0.0-stage → 1.3.189

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 (440) hide show
  1. package/CHANGELOG.md +492 -0
  2. package/LICENSE +21 -0
  3. package/README.md +479 -2
  4. package/Tiltfile +151 -0
  5. package/cli/bin/flisk.js +42 -0
  6. package/cli/dist/agent-runtimes/custom.js +335 -0
  7. package/cli/dist/agent-runtimes/registry.js +34 -0
  8. package/cli/dist/backend-frameworks/elysia.js +38 -0
  9. package/cli/dist/backend-frameworks/express.js +49 -0
  10. package/cli/dist/backend-frameworks/fastify.js +43 -0
  11. package/cli/dist/backend-frameworks/h3.js +37 -0
  12. package/cli/dist/backend-frameworks/koa.js +47 -0
  13. package/cli/dist/backend-frameworks/mcp.js +86 -0
  14. package/cli/dist/backend-frameworks/nestjs.js +55 -0
  15. package/cli/dist/backend-frameworks/registry.js +134 -0
  16. package/cli/dist/backend-frameworks/types.js +1 -0
  17. package/cli/dist/backend-languages/bun.js +76 -0
  18. package/cli/dist/backend-languages/go.js +125 -0
  19. package/cli/dist/backend-languages/node.js +122 -0
  20. package/cli/dist/backend-languages/python.js +94 -0
  21. package/cli/dist/backend-languages/registry.js +37 -0
  22. package/cli/dist/backend-languages/rust.js +82 -0
  23. package/cli/dist/backend-languages/types.js +1 -0
  24. package/cli/dist/cli.js +29 -0
  25. package/cli/dist/commands/__tests__/project-e2e-helpers.js +49 -0
  26. package/cli/dist/commands/__tests__/ui-loading-screen.test.js +16 -0
  27. package/cli/dist/commands/agent.js +182 -0
  28. package/cli/dist/commands/completion-candidates.js +116 -0
  29. package/cli/dist/commands/completion.js +843 -0
  30. package/cli/dist/commands/config.js +362 -0
  31. package/cli/dist/commands/doctor.js +1504 -0
  32. package/cli/dist/commands/down.js +114 -0
  33. package/cli/dist/commands/eject.js +108 -0
  34. package/cli/dist/commands/help.js +152 -0
  35. package/cli/dist/commands/import.js +164 -0
  36. package/cli/dist/commands/logs.js +119 -0
  37. package/cli/dist/commands/maintainers.js +102 -0
  38. package/cli/dist/commands/mcp.js +28 -0
  39. package/cli/dist/commands/networks.js +306 -0
  40. package/cli/dist/commands/project.js +447 -0
  41. package/cli/dist/commands/projects.js +103 -0
  42. package/cli/dist/commands/registry.js +53 -0
  43. package/cli/dist/commands/resource.js +992 -0
  44. package/cli/dist/commands/resources.js +127 -0
  45. package/cli/dist/commands/restart.js +89 -0
  46. package/cli/dist/commands/runtime.js +75 -0
  47. package/cli/dist/commands/stack.js +171 -0
  48. package/cli/dist/commands/stacks.js +71 -0
  49. package/cli/dist/commands/status.js +211 -0
  50. package/cli/dist/commands/ui.js +725 -0
  51. package/cli/dist/commands/up.js +609 -0
  52. package/cli/dist/commands/upgrade.js +840 -0
  53. package/cli/dist/commands/version.js +10 -0
  54. package/cli/dist/components/Accessible.js +11 -0
  55. package/cli/dist/components/BaseTooltip.js +30 -0
  56. package/cli/dist/components/DetailPanel.js +33 -0
  57. package/cli/dist/components/FileTree.js +51 -0
  58. package/cli/dist/components/ResourceSelectInput.js +42 -0
  59. package/cli/dist/components/ResourceTable.js +35 -0
  60. package/cli/dist/components/ServiceIssues.js +13 -0
  61. package/cli/dist/components/TUIHeader.js +27 -0
  62. package/cli/dist/components/TabBar.js +27 -0
  63. package/cli/dist/components/Tooltip.js +13 -0
  64. package/cli/dist/components/index.js +11 -0
  65. package/cli/dist/components/ui-theme.js +120 -0
  66. package/cli/dist/config/platform-standards.js +182 -0
  67. package/cli/dist/frontend-frameworks/lit.js +64 -0
  68. package/cli/dist/frontend-frameworks/preact.js +62 -0
  69. package/cli/dist/frontend-frameworks/qwik.js +61 -0
  70. package/cli/dist/frontend-frameworks/react.js +69 -0
  71. package/cli/dist/frontend-frameworks/registry.js +83 -0
  72. package/cli/dist/frontend-frameworks/solid.js +62 -0
  73. package/cli/dist/frontend-frameworks/svelte.js +67 -0
  74. package/cli/dist/frontend-frameworks/tanstack-router.js +101 -0
  75. package/cli/dist/frontend-frameworks/types.js +1 -0
  76. package/cli/dist/frontend-frameworks/vanilla.js +59 -0
  77. package/cli/dist/frontend-frameworks/vue.js +72 -0
  78. package/cli/dist/generator/__tests__/golden-helpers.js +43 -0
  79. package/cli/dist/generator/extension-fetch.js +291 -0
  80. package/cli/dist/generator/resource-templates.js +133 -0
  81. package/cli/dist/generator/template-engine.js +801 -0
  82. package/cli/dist/index.js +10 -0
  83. package/cli/dist/mcp/server.js +101 -0
  84. package/cli/dist/mcp/tools.js +351 -0
  85. package/cli/dist/program.js +37 -0
  86. package/cli/dist/types/index.js +38 -0
  87. package/cli/dist/utils/agent-host.js +36 -0
  88. package/cli/dist/utils/atomic-write.js +36 -0
  89. package/cli/dist/utils/bun-floor.js +9 -0
  90. package/cli/dist/utils/bun-requirement.js +10 -0
  91. package/cli/dist/utils/cache.js +63 -0
  92. package/cli/dist/utils/cold-preflight.js +257 -0
  93. package/cli/dist/utils/command-helpers.js +57 -0
  94. package/cli/dist/utils/constants.js +160 -0
  95. package/cli/dist/utils/discovery-context.js +71 -0
  96. package/cli/dist/utils/discovery-paths.js +93 -0
  97. package/cli/dist/utils/docker.js +34 -0
  98. package/cli/dist/utils/doctor-crashloop.js +161 -0
  99. package/cli/dist/utils/doctor-fix.js +391 -0
  100. package/cli/dist/utils/doctor-host.js +66 -0
  101. package/cli/dist/utils/doctor-report.js +78 -0
  102. package/cli/dist/utils/doctor-runtime.js +880 -0
  103. package/cli/dist/utils/doctor-starlark.js +132 -0
  104. package/cli/dist/utils/doctor-wiring.js +698 -0
  105. package/cli/dist/utils/down-cleanup.js +125 -0
  106. package/cli/dist/utils/env-validator.js +266 -0
  107. package/cli/dist/utils/errors.js +175 -0
  108. package/cli/dist/utils/exec-async.js +31 -0
  109. package/cli/dist/utils/file-helpers.js +104 -0
  110. package/cli/dist/utils/formatting.js +165 -0
  111. package/cli/dist/utils/generated-paths.js +51 -0
  112. package/cli/dist/utils/help-command.js +11 -0
  113. package/cli/dist/utils/host-port-config.js +140 -0
  114. package/cli/dist/utils/host-port-plan.js +100 -0
  115. package/cli/dist/utils/json-output.js +29 -0
  116. package/cli/dist/utils/machine-output.js +33 -0
  117. package/cli/dist/utils/paths.js +43 -0
  118. package/cli/dist/utils/platform.js +58 -0
  119. package/cli/dist/utils/port-assignment.js +75 -0
  120. package/cli/dist/utils/port-conflict-fix.js +25 -0
  121. package/cli/dist/utils/port-fallback-notice.js +17 -0
  122. package/cli/dist/utils/port-listener-probe.js +20 -0
  123. package/cli/dist/utils/project-config-defaults.js +17 -0
  124. package/cli/dist/utils/project-features.js +91 -0
  125. package/cli/dist/utils/project-templates.js +32 -0
  126. package/cli/dist/utils/prompt.js +97 -0
  127. package/cli/dist/utils/resource-features.js +184 -0
  128. package/cli/dist/utils/resource-kind.js +9 -0
  129. package/cli/dist/utils/schema-version-gate.js +45 -0
  130. package/cli/dist/utils/search-status.js +12 -0
  131. package/cli/dist/utils/secret-redaction.js +73 -0
  132. package/cli/dist/utils/service-config-checks.js +189 -0
  133. package/cli/dist/utils/service-manifest.js +254 -0
  134. package/cli/dist/utils/service-runtime-state.js +66 -0
  135. package/cli/dist/utils/service-urls.js +112 -0
  136. package/cli/dist/utils/services.js +360 -0
  137. package/cli/dist/utils/shared-infra.js +45 -0
  138. package/cli/dist/utils/shared-platform-postgres.js +232 -0
  139. package/cli/dist/utils/single-flight.js +21 -0
  140. package/cli/dist/utils/smoke.js +401 -0
  141. package/cli/dist/utils/spinner.js +40 -0
  142. package/cli/dist/utils/stack-features.js +15 -0
  143. package/cli/dist/utils/stack-status.js +14 -0
  144. package/cli/dist/utils/startup-report.js +78 -0
  145. package/cli/dist/utils/status-message.js +21 -0
  146. package/cli/dist/utils/status-ports.js +33 -0
  147. package/cli/dist/utils/suggestions.js +63 -0
  148. package/cli/dist/utils/tar.js +46 -0
  149. package/cli/dist/utils/tdk-version.js +51 -0
  150. package/cli/dist/utils/terminal-layout.js +19 -0
  151. package/cli/dist/utils/tilt-events.js +194 -0
  152. package/cli/dist/utils/tilt-logs.js +61 -0
  153. package/cli/dist/utils/tilt-port-owner.js +63 -0
  154. package/cli/dist/utils/tilt-process.js +54 -0
  155. package/cli/dist/utils/tilt-resource-state.js +32 -0
  156. package/cli/dist/utils/tilt-startup.js +49 -0
  157. package/cli/dist/utils/tilt-unreachable-message.js +9 -0
  158. package/cli/dist/utils/tilt.js +104 -0
  159. package/cli/dist/utils/ui-keymap.js +129 -0
  160. package/cli/dist/utils/ui-service-state.js +34 -0
  161. package/cli/dist/utils/up-only.js +28 -0
  162. package/cli/dist/utils/up-readiness.js +118 -0
  163. package/cli/dist/utils/url-actions.js +103 -0
  164. package/cli/dist/utils/validation.js +62 -0
  165. package/cli/dist/utils/which.js +56 -0
  166. package/cli/dist/utils/windows-doctor.js +176 -0
  167. package/cli/dist-bundle/chunk-6EA4DGCY.js +2 -0
  168. package/cli/dist-bundle/chunk-BZ4H7MM4.js +3 -0
  169. package/cli/dist-bundle/chunk-QWYXYAX6.js +510 -0
  170. package/cli/dist-bundle/cli.js +2017 -0
  171. package/cli/dist-bundle/cold-preflight-MM46GFQA.js +2 -0
  172. package/cli/dist-bundle/devtools-ZUHXW33W.js +5 -0
  173. package/cli/dist-bundle/extension-fetch-J4FFH7TJ.js +2 -0
  174. package/cli/package.json +83 -0
  175. package/cli/shared-platform-engineering/docker-templates/bun-hoisted-symlink-fix.sh +25 -0
  176. package/cli/shared-platform-engineering/docker-templates/infisical-entrypoint.sh +466 -0
  177. package/cli/shared-platform-engineering/docker-templates/install-deps.sh +154 -0
  178. package/cli/shared-platform-engineering/docker-templates/prisma-bun-client-link-fix.sh +14 -0
  179. package/cli/shared-platform-engineering/docker-templates/prisma-normalize-client.sh +58 -0
  180. package/cli/templates/.tiltignore.hbs +72 -0
  181. package/cli/templates/TILT_RESOURCE_DEFAULTS.star.hbs +220 -0
  182. package/cli/templates/TILT_TECH_STACK.star.hbs +149 -0
  183. package/cli/templates/Tiltfile.hbs +381 -0
  184. package/cli/templates/spec.master.hbs +192 -0
  185. package/discovery/AGENTS.md +362 -0
  186. package/discovery/TILT_DISCOVERY.star +429 -0
  187. package/discovery/Tiltfile +58 -0
  188. package/discovery/config.star +265 -0
  189. package/discovery/constants.star +167 -0
  190. package/discovery/deterministic.star +213 -0
  191. package/discovery/discovery_daemon.star +193 -0
  192. package/discovery/discovery_orchestrator.star +492 -0
  193. package/discovery/filtering.star +7 -0
  194. package/discovery/identity-management-backend/service.yaml +26 -0
  195. package/discovery/identity-management-frontend/service.yaml +29 -0
  196. package/discovery/identity-sdk/service.yaml +9 -0
  197. package/discovery/incremental_discovery.star +215 -0
  198. package/discovery/indexing.star +9 -0
  199. package/discovery/json_manifest_scanner.star +57 -0
  200. package/discovery/libraries.star +48 -0
  201. package/discovery/loading.star +25 -0
  202. package/discovery/manifest/constants.star +106 -0
  203. package/discovery/manifest/loading.star +418 -0
  204. package/discovery/manifest/normalize.star +289 -0
  205. package/discovery/manifest/validation.star +110 -0
  206. package/discovery/normalization.star +13 -0
  207. package/discovery/registry.star +562 -0
  208. package/discovery/resource_snapshot.py +384 -0
  209. package/discovery/resource_snapshot.star +145 -0
  210. package/discovery/schemas.star +3 -0
  211. package/discovery/services/platform/cdc/debezium/nats-connector/service.yaml +9 -0
  212. package/discovery/services/platform/cdc/nats-http-bridge/service.yaml +9 -0
  213. package/discovery/services/platform/orchestrator/orchestrator-glue-backend/service.yaml +26 -0
  214. package/discovery/services/platform/synthetic-monitor/service.yaml +9 -0
  215. package/discovery/test_resource_snapshot.py +253 -0
  216. package/discovery/validation.star +80 -0
  217. package/discovery/versioning.star +3 -0
  218. package/engine/AGENTS.md +706 -0
  219. package/engine/README.md +31 -0
  220. package/engine/REFACTORING_MANIFEST_SYSTEM.md +974 -0
  221. package/engine/Tiltfile +86 -0
  222. package/engine/assets/docker/golden-layers.Dockerfile +204 -0
  223. package/engine/assets/docker/wake-gateway/Dockerfile +28 -0
  224. package/engine/assets/docker/wake-gateway/decide.test.ts +177 -0
  225. package/engine/assets/docker/wake-gateway/decide.ts +135 -0
  226. package/engine/assets/docker/wake-gateway/server.ts +363 -0
  227. package/engine/assets/scripts/cleanup-completed-migrator-images.sh +39 -0
  228. package/engine/assets/scripts/cleanup-tilt-images.sh +122 -0
  229. package/engine/assets/scripts/mac-m1-resource-monitor.sh +123 -0
  230. package/engine/config.star +5 -0
  231. package/engine/entrypoint.star +101 -0
  232. package/engine/lifecycle/orchestrator.star +263 -0
  233. package/engine/paths.star +719 -0
  234. package/engine/schemas/project-schema.json +147 -0
  235. package/engine/schemas/service-schema.json +537 -0
  236. package/engine/scripts/README.md +89 -0
  237. package/engine/scripts/build-and-publish-lib.sh +207 -0
  238. package/engine/scripts/check-lib-publish.sh +87 -0
  239. package/engine/scripts/debug-container.sh +265 -0
  240. package/engine/scripts/generate-manifest.sh +200 -0
  241. package/engine/spec.master +702 -0
  242. package/engine/spec.master.example +341 -0
  243. package/engine/topologies/README.md +33 -0
  244. package/engine/topologies/platform/docker/AGENTS.md +59 -0
  245. package/engine/topologies/platform/docker/auth/auth.star +207 -0
  246. package/engine/topologies/platform/docker/build/frontend_build_plan.star +65 -0
  247. package/engine/topologies/platform/docker/build/golden_image.star +37 -0
  248. package/engine/topologies/platform/docker/build/golden_image_build.star +144 -0
  249. package/engine/topologies/platform/docker/build/golden_image_constants.star +100 -0
  250. package/engine/topologies/platform/docker/build/golden_image_dockerfile.star +263 -0
  251. package/engine/topologies/platform/docker/compose/compose.star +637 -0
  252. package/engine/topologies/platform/docker/compose/compose_helpers.star +54 -0
  253. package/engine/topologies/platform/docker/compose/traefik_standalone.star +171 -0
  254. package/engine/topologies/platform/docker/config/bunignore.star +144 -0
  255. package/engine/topologies/platform/docker/config/dockerignore.star +152 -0
  256. package/engine/topologies/platform/docker/config/healthcheck.star +58 -0
  257. package/engine/topologies/platform/docker/constants.star +211 -0
  258. package/engine/topologies/platform/docker/dockerfile/dockerfile.star +56 -0
  259. package/engine/topologies/platform/docker/dockerfile/language_dockerfile.star +264 -0
  260. package/engine/topologies/platform/docker/generators/golden_docker_generator_v2.star +76 -0
  261. package/engine/topologies/platform/docker/index.star +40 -0
  262. package/engine/topologies/platform/docker/layers/bun_helpers.star +25 -0
  263. package/engine/topologies/platform/docker/layers/infisical/index.star +42 -0
  264. package/engine/topologies/platform/docker/layers/infisical/infisical_docker.star +264 -0
  265. package/engine/topologies/platform/docker/layers/l1_base_layers.star +89 -0
  266. package/engine/topologies/platform/docker/layers/l2_dependency_layers.star +147 -0
  267. package/engine/topologies/platform/docker/layers/l3_builder_layers.star +229 -0
  268. package/engine/topologies/platform/docker/layers/l4_runtime_layers.star +282 -0
  269. package/engine/topologies/platform/docker/layers/prisma/constants.star +138 -0
  270. package/engine/topologies/platform/docker/layers/prisma/db_readiness.star +98 -0
  271. package/engine/topologies/platform/docker/layers/prisma/filesystem_setup.star +131 -0
  272. package/engine/topologies/platform/docker/layers/prisma/migrate_script.star +100 -0
  273. package/engine/topologies/platform/docker/layers/prisma/prisma_build.star +128 -0
  274. package/engine/topologies/platform/docker/layers/prisma/prisma_runtime.star +205 -0
  275. package/engine/topologies/platform/docker/layers/prisma/secret_resolution.star +121 -0
  276. package/engine/topologies/platform/docker/networking/api_path_constants.star +206 -0
  277. package/engine/topologies/platform/docker/networking/sablier_container_cycle.star +31 -0
  278. package/engine/topologies/platform/docker/networking/traefik.star +266 -0
  279. package/engine/topologies/platform/docker/networking/traefik_constants.star +148 -0
  280. package/engine/topologies/platform/docker/networking/traefik_helpers.star +162 -0
  281. package/engine/topologies/platform/docker/networking/traefik_static_routes.star +165 -0
  282. package/engine/topologies/platform/docker/secrets/env_secrets.star +74 -0
  283. package/engine/topologies/platform/docker/secrets/infisical.star +109 -0
  284. package/engine/topologies/platform/net/AGENTS.md +64 -0
  285. package/engine/topologies/platform/net/proxy.star +6 -0
  286. package/engine/topologies/platform/registries/local.star +6 -0
  287. package/engine/topologies/platform/registries/verdaccio_loader.star +20 -0
  288. package/engine/topologies/platform/security/AGENTS.md +49 -0
  289. package/engine/topologies/platform/security/secrets.star +241 -0
  290. package/engine/topologies/platform/state/AGENTS.md +64 -0
  291. package/engine/topologies/platform/state/relational.star +6 -0
  292. package/engine/topologies/tilt/common/AGENTS.md +59 -0
  293. package/engine/topologies/tilt/common/utils.star +409 -0
  294. package/engine/topologies/tilt/common/utils_debug.star +71 -0
  295. package/engine/topologies/tilt/common/utils_deterministic.star +170 -0
  296. package/engine/topologies/tilt/common/utils_docker_networks.star +54 -0
  297. package/engine/topologies/tilt/common/utils_env.star +92 -0
  298. package/engine/topologies/tilt/common/utils_output.star +99 -0
  299. package/engine/topologies/tilt/config/AGENTS.md +68 -0
  300. package/engine/topologies/tilt/config/defaults.star +5 -0
  301. package/engine/topologies/tilt/config/feature_flags.star +12 -0
  302. package/engine/topologies/tilt/config/global.star +57 -0
  303. package/engine/topologies/tilt/config/profiles.star +398 -0
  304. package/engine/topologies/tilt/generators/agents_md.star +64 -0
  305. package/engine/topologies/tilt/generators/api_gateway.star +147 -0
  306. package/engine/topologies/tilt/generators/index.star +126 -0
  307. package/engine/topologies/tilt/generators/infisical/README.md +424 -0
  308. package/engine/topologies/tilt/generators/infisical/examples.star +314 -0
  309. package/engine/topologies/tilt/generators/infisical/index.star +59 -0
  310. package/engine/topologies/tilt/generators/infisical/machine_identity.star +422 -0
  311. package/engine/topologies/tilt/generators/infisical/organization.star +536 -0
  312. package/engine/topologies/tilt/generators/infisical/path_manager.star +478 -0
  313. package/engine/topologies/tilt/generators/infisical/secrets_generator.star +422 -0
  314. package/engine/topologies/tilt/generators/nginx_conf.star +145 -0
  315. package/engine/topologies/tilt/generators/npmrc.star +132 -0
  316. package/engine/topologies/tilt/generators/tsconfig.star +25 -0
  317. package/engine/topologies/tilt/generators/typescript/backend_library_tsconfig.star +73 -0
  318. package/engine/topologies/tilt/generators/typescript/backend_tsconfig.star +137 -0
  319. package/engine/topologies/tilt/generators/typescript/common.star +9 -0
  320. package/engine/topologies/tilt/generators/typescript/frontend_library_tsconfig.star +78 -0
  321. package/engine/topologies/tilt/generators/typescript/frontend_tsconfig.star +140 -0
  322. package/engine/topologies/tilt/generators/typescript/include.star +25 -0
  323. package/engine/topologies/tilt/generators/typescript/playwright_config.star +42 -0
  324. package/engine/topologies/tilt/generators/typescript/prisma_config.star +51 -0
  325. package/engine/topologies/tilt/generators/validators.star +868 -0
  326. package/engine/topologies/tilt/generators/vite/backend.star +80 -0
  327. package/engine/topologies/tilt/generators/vite/frameworks/lit.star +92 -0
  328. package/engine/topologies/tilt/generators/vite/frameworks/preact.star +94 -0
  329. package/engine/topologies/tilt/generators/vite/frameworks/qwik.star +94 -0
  330. package/engine/topologies/tilt/generators/vite/frameworks/react.star +128 -0
  331. package/engine/topologies/tilt/generators/vite/frameworks/solid.star +94 -0
  332. package/engine/topologies/tilt/generators/vite/frameworks/svelte.star +94 -0
  333. package/engine/topologies/tilt/generators/vite/frameworks/vanilla.star +92 -0
  334. package/engine/topologies/tilt/generators/vite/frameworks/vue.star +94 -0
  335. package/engine/topologies/tilt/generators/vite/frontend.star +153 -0
  336. package/engine/topologies/tilt/generators/vite/generators.star +45 -0
  337. package/engine/topologies/tilt/generators/vite/helpers.star +256 -0
  338. package/engine/topologies/tilt/generators/vite/library.star +67 -0
  339. package/engine/topologies/tilt/generators/vite/sdk.star +75 -0
  340. package/engine/topologies/tilt/generators/vite/templates.star +460 -0
  341. package/engine/topologies/tilt/generators/vite_config.star +24 -0
  342. package/engine/topologies/tilt/manifest/AGENTS.md +61 -0
  343. package/engine/topologies/tilt/manifest/README.md +679 -0
  344. package/engine/topologies/tilt/manifest/__init__.star +220 -0
  345. package/engine/topologies/tilt/manifest/constants.star +262 -0
  346. package/engine/topologies/tilt/manifest/errors.star +268 -0
  347. package/engine/topologies/tilt/manifest/integration.star +348 -0
  348. package/engine/topologies/tilt/manifest/json_to_yaml.py +61 -0
  349. package/engine/topologies/tilt/manifest/loader.star +239 -0
  350. package/engine/topologies/tilt/manifest/mapper.star +229 -0
  351. package/engine/topologies/tilt/manifest/parser.star +490 -0
  352. package/engine/topologies/tilt/manifest/schema.star +502 -0
  353. package/engine/topologies/tilt/manifest/tests/test_integration.star +278 -0
  354. package/engine/topologies/tilt/manifest/tests/test_loader_parser.star +475 -0
  355. package/engine/topologies/tilt/manifest/tests/test_manifest.star +319 -0
  356. package/engine/topologies/tilt/manifest/tests/test_validator.star +472 -0
  357. package/engine/topologies/tilt/manifest/validator.star +744 -0
  358. package/engine/topologies/tilt/manifest/yaml_to_json.py +20 -0
  359. package/engine/topologies/tilt/resources/AGENTS.md +71 -0
  360. package/engine/topologies/tilt/resources/build_concurrency.star +56 -0
  361. package/engine/topologies/tilt/resources/conditions.star +5 -0
  362. package/engine/topologies/tilt/resources/databases.star +246 -0
  363. package/engine/topologies/tilt/resources/declaration.star +5 -0
  364. package/engine/topologies/tilt/resources/deps.star +5 -0
  365. package/engine/topologies/tilt/resources/infra-loader.star +504 -0
  366. package/engine/topologies/tilt/resources/libs.star +32 -0
  367. package/engine/topologies/tilt/resources/libs_discovery.star +104 -0
  368. package/engine/topologies/tilt/resources/libs_paths.star +81 -0
  369. package/engine/topologies/tilt/resources/libs_resource_definition.star +153 -0
  370. package/engine/topologies/tilt/resources/libs_setup.star +166 -0
  371. package/engine/topologies/tilt/resources/libs_tsconfig.star +39 -0
  372. package/engine/topologies/tilt/resources/orchestrator/apply.star +79 -0
  373. package/engine/topologies/tilt/resources/orchestrator/apply_compose_resource_registration.star +864 -0
  374. package/engine/topologies/tilt/resources/orchestrator/apply_manifest_orchestration.star +90 -0
  375. package/engine/topologies/tilt/resources/orchestrator/apply_migrator_orchestration.star +150 -0
  376. package/engine/topologies/tilt/resources/orchestrator/apply_resource_validation.star +38 -0
  377. package/engine/topologies/tilt/resources/orchestrator/apply_runtime_flags.star +46 -0
  378. package/engine/topologies/tilt/resources/orchestrator/builders/typescript.star +193 -0
  379. package/engine/topologies/tilt/resources/orchestrator/generators/dependencies/AGENTS.md +75 -0
  380. package/engine/topologies/tilt/resources/orchestrator/generators/dependencies/index.star +23 -0
  381. package/engine/topologies/tilt/resources/orchestrator/generators/dependencies/resolver.star +136 -0
  382. package/engine/topologies/tilt/resources/orchestrator/generators/env.star +219 -0
  383. package/engine/topologies/tilt/resources/orchestrator/generators/frontend.star +172 -0
  384. package/engine/topologies/tilt/resources/orchestrator/generators/manifest_resource.star +577 -0
  385. package/engine/topologies/tilt/resources/orchestrator/helpers.star +35 -0
  386. package/engine/topologies/tilt/resources/orchestrator.star +56 -0
  387. package/engine/topologies/tilt/resources/ordering.star +5 -0
  388. package/engine/topologies/tilt/resources/shared-platform-postgres.star +30 -0
  389. package/engine/topologies/tilt/resources/triggers.star +5 -0
  390. package/engine/topologies/tilt/resources/watchers.star +304 -0
  391. package/engine/where-things-live.star +719 -0
  392. package/examples/tdk-example/LICENSE +21 -0
  393. package/examples/tdk-example/README.md +23 -0
  394. package/examples/tdk-example/TILT_SERVICE_DEFAULTS.star +42 -0
  395. package/examples/tdk-example/TILT_TECH_STACK.star +67 -0
  396. package/examples/tdk-example/Tiltfile +25 -0
  397. package/examples/tdk-example/services/platform/messaging/docker-compose.yml +26 -0
  398. package/examples/tdk-example/services/shop/orders-api/package.json +20 -0
  399. package/examples/tdk-example/services/shop/orders-api/service.json +14 -0
  400. package/examples/tdk-example/services/shop/orders-api/src/index.ts +81 -0
  401. package/examples/tdk-example/services/shop/orders-app/index.html +12 -0
  402. package/examples/tdk-example/services/shop/orders-app/package.json +23 -0
  403. package/examples/tdk-example/services/shop/orders-app/public/.gitkeep +0 -0
  404. package/examples/tdk-example/services/shop/orders-app/service.json +9 -0
  405. package/examples/tdk-example/services/shop/orders-app/src/main.tsx +9 -0
  406. package/examples/tdk-example/services/shop/orders-app/src/orders.tsx +67 -0
  407. package/examples/tdk-example/services/shop/orders-app/src/style.css +15 -0
  408. package/examples/tdk-example/services/shop/orders-worker/package.json +18 -0
  409. package/examples/tdk-example/services/shop/orders-worker/service.json +13 -0
  410. package/examples/tdk-example/services/shop/orders-worker/src/index.ts +33 -0
  411. package/ext/Tiltfile +66 -0
  412. package/ext/ide-components/README.md +221 -0
  413. package/ext/ide-components/code_viewer/server.py +208 -0
  414. package/ext/ide-components/config_inspector/server.py +1052 -0
  415. package/ext/ide-components/file_browser/server.py +287 -0
  416. package/ext/ide-components/shared/config_service.py +471 -0
  417. package/ext/ide-components/shared/file_utils.py +300 -0
  418. package/ext/ide-components/shared/http_utils.py +234 -0
  419. package/ext/ide-components/shared/static/styles.css +1334 -0
  420. package/ext/ide-components/shared/syntax_highlighter.py +142 -0
  421. package/ext/ide-components/shared/template_engine.py +125 -0
  422. package/ext/ide-components/shared/templates/base.html +121 -0
  423. package/ext/ide-components/shared/test_config_service.py +328 -0
  424. package/ext/ide-components/shared/tilt_integration.py +160 -0
  425. package/ext/ui-enhancements/cron-status-server.sh +51 -0
  426. package/ext/ui-enhancements/cron-status-tracker.sh +148 -0
  427. package/ext/ui-enhancements/extension.yaml +36 -0
  428. package/ext/ui-enhancements/tiltfile.py +101 -0
  429. package/ext/ui-enhancements/ui/cron-jobs-tab.css +396 -0
  430. package/ext/ui-enhancements/ui/help-panel.css +279 -0
  431. package/ext/ui-enhancements/ui/icons.css +125 -0
  432. package/ext/ui-enhancements/ui/tooltips.css +114 -0
  433. package/package.json +94 -4
  434. package/shared-platform-engineering/docker-templates/bun-hoisted-symlink-fix.sh +25 -0
  435. package/shared-platform-engineering/docker-templates/infisical-entrypoint.sh +466 -0
  436. package/shared-platform-engineering/docker-templates/install-deps.sh +154 -0
  437. package/shared-platform-engineering/docker-templates/prisma-bun-client-link-fix.sh +14 -0
  438. package/shared-platform-engineering/docker-templates/prisma-normalize-client.sh +58 -0
  439. package/specs/specs/TILT_SERVICE_DEFAULTS.star +207 -0
  440. package/specs/specs/TILT_TECH_STACK.star +161 -0
@@ -0,0 +1,719 @@
1
+ #!/usr/bin/env starlark
2
+ # Copyright (c) 2026 Flisk contributors
3
+ # SPDX-License-Identifier: MIT
4
+ # Tilt Master Spec File
5
+ # SYSTEM PATHS SPECIFICATION - No Hidden Magic
6
+ # Format: Explicit constants for all system paths
7
+ # Philosophy: Make it obvious (Zig-style explicitness)
8
+
9
+ # =============================================================================
10
+ # 🚀 QUICK START (I Just Want to Add a Service)
11
+ # =============================================================================
12
+
13
+ # 1. Create your service directory:
14
+ # mkdir -p services/product/my-service/backend
15
+ #
16
+ # 2. Create a manifest file:
17
+ # echo '{"appName":"my-service","port":4001}' > services/product/my-service/service.json
18
+ #
19
+ # 3. Run Tilt:
20
+ # tilt up
21
+ #
22
+ # 4. Done! Your service is running. Configs generated at:
23
+ # .tilt/output/configs/my-service/
24
+ #
25
+ # Need to debug? See DEBUG section at the bottom of this file.
26
+
27
+ # =============================================================================
28
+ # 📖 HOW TO USE THIS FILE
29
+ # =============================================================================
30
+
31
+ # In your Tiltfile or topology module, load this spec:
32
+ #
33
+ # load(PROJECT_ROOT + "/.tilt-engine/spec.master", "SPEC", "CONSTANTS", "VALIDATION", "DEBUG")
34
+ #
35
+ # Then use the constants:
36
+ #
37
+ # registry_path = SPEC.DISCOVERY.REGISTRY
38
+ # max_port = VALIDATION.MAX_PORT
39
+ # timeout = CONSTANTS.DEFAULT_TIMEOUT
40
+ #
41
+ # That's it! No magic paths. Everything is explicit.
42
+
43
+ # =============================================================================
44
+ # 📁 WHAT'S IN THIS FILE
45
+ # =============================================================================
46
+
47
+ # SPEC = File paths and directory locations
48
+ # (Where things live - TOPOLOGIES, DISCOVERY, GENERATORS, etc.)
49
+ #
50
+ # CONSTANTS = System values and defaults
51
+ # (Timeouts, intervals, supported features, system info)
52
+ #
53
+ # VALIDATION = Constraints and limits
54
+ # (Port ranges, replica limits, naming rules)
55
+ #
56
+ # DEBUG = Debugging and observability toggles
57
+ # (How to see what's happening when things break)
58
+ #
59
+ # Don't see what you need? Ctrl+F to search this file.
60
+
61
+ # =============================================================================
62
+ # ⚠️ IMPORTANT NOTES
63
+ # =============================================================================
64
+
65
+ # PROJECT_ROOT is automatically set by Tiltfile based on where you run `tilt up`.
66
+ # You don't need to set it. Example:
67
+ # - If you run in /home/dev/my-project, PROJECT_ROOT = "/home/dev/my-project"
68
+ # - All other paths are built from this root.
69
+ #
70
+ # This file is manually maintained to match the directory structure.
71
+ # If you add new topology modules, update this file and increment SYSTEM_VERSION.
72
+
73
+ # =============================================================================
74
+ # 🔧 DEBUGGING CHECKLIST (When Things Break)
75
+ # =============================================================================
76
+
77
+ # Error: "port X outside valid range [1024-65535]"
78
+ # → Check which service has "port": X in its service.json
79
+ # → Enable DEBUG logging to see full validation output
80
+ #
81
+ # Error: "dependency Y not found"
82
+ # → Check SPEC.DISCOVERY.RESOURCE_SEARCH_PATHS (where we look)
83
+ # → Verify service Y exists in one of those paths
84
+ # → Check service Y has a service.json file
85
+ #
86
+ # Error: "cannot load module Z"
87
+ # → Check SPEC for the path - does the file actually exist?
88
+ # → Run `ls -la` on the path to verify
89
+ #
90
+ # Something else broken?
91
+ # → Set DEBUG.DUMP_CONTEXT_ON_GENERATION = True (see DEBUG section)
92
+ # → Re-run tilt up and check the logs
93
+ # → The full context will be printed showing exactly what's happening
94
+
95
+ # =============================================================================
96
+ # 🗓️ FEATURE FLAGS (What's Working vs Planned)
97
+ # =============================================================================
98
+
99
+ # Legend:
100
+ # ✅ = Feature is working and enabled
101
+ # ⏸️ = Feature exists but disabled
102
+ # 🗓️ = Feature planned for future (not implemented yet)
103
+ #
104
+ # ISTIO_INTEGRATION = False (🗓️ ROADMAP - Q2 2026)
105
+ # - We plan to auto-generate Istio service mesh configs
106
+ # - Currently using Traefik for routing (working great!)
107
+ #
108
+ # BAZEL_INTEGRATION = False (🗓️ ROADMAP - when requested)
109
+ # - We plan Bazel integration for hermetic builds
110
+ # - Currently using Docker layer caching (90% of the benefits)
111
+ #
112
+ # Don't panic if you see 🗓️ - it just means "coming soon, not ready yet"
113
+
114
+ # =============================================================================
115
+ # 🗂️ WHERE FILES GO (And Why They Sometimes Disappear)
116
+ # =============================================================================
117
+
118
+ # Generated files live in: .tilt/output/configs/<service-name>/
119
+ #
120
+ # 🫥 They disappear when:
121
+ # - You change service.json (Tilt regenerates them)
122
+ # - You run tilt down (cleanup)
123
+ # - Something broke (check tilt logs)
124
+ #
125
+ # 😌 DON'T PANIC! They're auto-generated.
126
+ # They come back when you run tilt up.
127
+ # The SOURCE is your service.json, not these generated files.
128
+ #
129
+ # To see them again: tilt up
130
+ # To keep them forever: Look at OUTPUT.CONFIGS path (see below)
131
+
132
+ # =============================================================================
133
+ # 😰 MY SERVICE WON'T LAUNCH - CHECKLIST
134
+ # =============================================================================
135
+
136
+ # 1️⃣ Is service.json in the RIGHT PLACE?
137
+ # ✅ Good: services/product/my-service/service.json
138
+ # ❌ Bad: my-service/service.json (wrong folder!)
139
+ # ❌ Bad: service.json (no folder!)
140
+ #
141
+ # 2️⃣ Is the JSON valid?
142
+ # ✅ Test: python3 -m json.tool service.json
143
+ # ❌ If error: Fix the JSON syntax
144
+ #
145
+ # 3️⃣ Did you wait 5 seconds?
146
+ # Tilt scans every 5 seconds for new services
147
+ # Be patient! 🐱
148
+ #
149
+ # 4️⃣ Still not working?
150
+ # Run: tilt doctor
151
+ # Look for 🔴 red errors
152
+ # Ask in Slack with the error message
153
+
154
+ # =============================================================================
155
+ # 🐱 WHAT IS THIS FILE? (In Simple Words)
156
+ # =============================================================================
157
+
158
+ # This is a MAP 🗺️ that shows where all the Tilt files live.
159
+ #
160
+ # Think of it like this:
161
+ # - Your house = Project folder
162
+ # - spec.master = List of rooms and what's in them
163
+ # - You = Cat exploring the house 🐱
164
+ #
165
+ # YOU DON'T NEED TO EDIT THIS FILE.
166
+ # It's for the computer to find things.
167
+ #
168
+ # Just look at it when you need to know where something is.
169
+ # Ctrl+F to search! 🔍
170
+ #
171
+ # Example searches:
172
+ # - "DISCOVERY" → Find where services are discovered
173
+ # - "GENERATOR" → Find what creates config files
174
+ # - "OUTPUT" → Find where files are written
175
+
176
+ # =============================================================================
177
+ # 🗺️ FOLDER STRUCTURE (Visual Guide)
178
+ # =============================================================================
179
+
180
+ # 📁 .tilt (Tilt's home)
181
+ # 📁 topologies (neighborhoods)
182
+ # 📁 platform (Docker stuff)
183
+ # 📁 tilt (Tilt stuff)
184
+ # 📁 discovery 🔍 (find services)
185
+ # 📄 resource_registry.star (the list of all services)
186
+ # 📁 generators 🏭 (make configs)
187
+ # 📄 vite_config.star (makes vite configs)
188
+ # 📄 tsconfig.star (makes tsconfig)
189
+ # 📁 resources (service resources)
190
+ # 📄 spec.master ← YOU ARE HERE (this file!)
191
+ #
192
+ # 📁 services (Your services live here)
193
+ # 📁 product (Product services)
194
+ # 📁 my-service (Your service folder)
195
+ # 📄 service.json (Your service definition)
196
+ # 📁 backend (Backend code)
197
+ # 📁 frontend (Frontend code)
198
+ #
199
+ # 📁 .tilt/output/configs (Generated configs go here)
200
+ # 📁 my-service/
201
+ # 📄 vite.config.ts (auto-generated)
202
+ # 📄 tsconfig.json (auto-generated)
203
+ # 📄 docker-compose.yml (auto-generated)
204
+
205
+ # =============================================================================
206
+ # 🎯 FIND THE RIGHT CONSTANT (Quick Lookup)
207
+ # =============================================================================
208
+
209
+ # If you want to... Use this...
210
+ # ─────────────────────────────────────────────────────────────────
211
+ # Find where services are discovered SPEC.DISCOVERY.REGISTRY
212
+ # Find where configs are generated SPEC.GENERATORS
213
+ # Find where files are written OUTPUT.CONFIGS
214
+ # Find port limits VALIDATION.MAX_PORT
215
+ # Find timeout values CONSTANTS.HEALTH_CHECK_TIMEOUT
216
+ # Turn on debugging DEBUG.DUMP_GENERATED_CONFIGS
217
+ # Check if feature is enabled FEATURES.XXX
218
+ #
219
+ # Still confused? Ctrl+F what you're looking for! 🔍
220
+
221
+ # =============================================================================
222
+ # 😰 SCARY ERRORS EXPLAINED (Don't Panic!)
223
+ # =============================================================================
224
+
225
+ # Error: "port X outside valid range [1024-65535]"
226
+ # → 💚 Don't worry! Just change the port number
227
+ # → Fix: Change "port": X to something between 1024-65535
228
+ # → Check VALIDATION.MIN_PORT and MAX_PORT in this file
229
+ #
230
+ # Error: "dependency Y not found"
231
+ # → 💚 Don't worry! Your service needs another service
232
+ # → Fix: Check "dependencies" list in your service.json
233
+ # → Make sure the other service exists and has service.json
234
+ #
235
+ # Error: "cannot load module Z"
236
+ # → 💚 Don't worry! This might be a Tilt bug
237
+ # → Try: tilt up again
238
+ # → Or: restart Docker Desktop
239
+ # → Check: Does the file path in SPEC actually exist?
240
+ #
241
+ # Error: "cannot load ext://..."
242
+ # → 💚 Don't worry! This is usually a Tilt extension issue
243
+ # → Try: tilt up again
244
+ # → Or: Run `tilt doctor` to check setup
245
+ #
246
+ # 🔴 Red text ≠ Your fault!
247
+ # Most errors are fixable! 😊
248
+
249
+ # =============================================================================
250
+ # ✅ BOSS-READY CHECKLIST (Before Showing Your Work)
251
+ # =============================================================================
252
+
253
+ # Use this if your boss can only review once (sick, busy, etc.)
254
+ #
255
+ # Before showing your work, verify:
256
+ #
257
+ # □ Your service shows up in `tilt up`
258
+ # □ No 🔴 red error messages
259
+ # □ Service status says 🟢 "Running"
260
+ # □ You can open the URL (if there is one)
261
+ # □ Run: tilt doctor (should be mostly green)
262
+ #
263
+ # Quick check command:
264
+ # $ tilt get uiresources | grep your-service-name
265
+ #
266
+ # If you see your service name → Good! 🎉
267
+ # If not → Check the troubleshooting section above
268
+
269
+ # =============================================================================
270
+ # 🎓 AM I DOING THIS RIGHT?
271
+ # =============================================================================
272
+
273
+ # Scenario 1: Adding a new service
274
+ # → You DON'T need to edit spec.master
275
+ # → Just create service.json and run tilt up
276
+ # → ✅ You're doing it right!
277
+ #
278
+ # Scenario 2: Finding where configs are
279
+ # → Open spec.master
280
+ # → Ctrl+F "OUTPUT" or "CONFIGS"
281
+ # → Look at the path
282
+ # → ✅ You're doing it right!
283
+ #
284
+ # Scenario 3: Something is broken
285
+ # → Open spec.master
286
+ # → Look at DEBUG section
287
+ # → Enable DEBUG.DUMP_CONTEXT_ON_GENERATION
288
+ # → Run tilt up again, check logs
289
+ # → ✅ You're doing it right!
290
+ #
291
+ # Most of the time:
292
+ # You DON'T need to edit spec.master.
293
+ # You just LOOK at it to find things.
294
+ # That's using it right! 😊
295
+
296
+ # =============================================================================
297
+ # 🔍 SEARCH THIS FILE
298
+ # =============================================================================
299
+
300
+ # Don't read all 400+ lines! Use Ctrl+F 🔍
301
+ #
302
+ # Suggested searches:
303
+ # - "DISCOVERY" → Where we find services
304
+ # - "GENERATORS" → What creates config files
305
+ # - "OUTPUT" → Where files are written
306
+ # - "DEBUG" → How to troubleshoot
307
+ # - "VALIDATION" → Port/replica limits
308
+ # - "CONSTANTS" → Timeouts, defaults
309
+ #
310
+ # Search for what you need, then close the file!
311
+
312
+ # =============================================================================
313
+ # 📛 FILE ALIASES (Easier Names)
314
+ # =============================================================================
315
+
316
+ # Can't remember "spec.master"? Use these aliases:
317
+ #
318
+ # .tilt/paths.star → Same file, easier name!
319
+ # .tilt/where-things-live.star → Same file, fun name!
320
+ #
321
+ # So you can do:
322
+ # load(PROJECT_ROOT + "/.tilt/paths.star", "SPEC")
323
+ #
324
+ # Instead of:
325
+ # load(PROJECT_ROOT + "/.tilt-engine/spec.master", "SPEC")
326
+ #
327
+ # Both work! Use whichever you remember. 😊
328
+
329
+ # =============================================================================
330
+ # 🗓️ FEATURE FLAGS (What's Working vs Planned)
331
+ # =============================================================================
332
+
333
+ # Project root - automatically set by Tiltfile
334
+ # You don't need to change this. It's based on where you run `tilt up`.
335
+ PROJECT_ROOT = "{PROJECT_ROOT}" # Auto-substituted by Tiltfile at load time
336
+
337
+ # Core system paths
338
+ SPEC = struct(
339
+ # Root directories - EXPLICIT, no discovery magic
340
+ ROOT = PROJECT_ROOT,
341
+ TILT_DIR = PROJECT_ROOT + "/.tilt",
342
+ RESOURCES_DIR = PROJECT_ROOT + "/services",
343
+ SHARED_DIR = PROJECT_ROOT + "/shared",
344
+
345
+ # Topology paths - ALL EXPLICIT
346
+ # NOTE: These paths are relative to Flisk CLI installation root (engine/ directory)
347
+ TOPOLOGIES = struct(
348
+ BASE = PROJECT_ROOT + "/engine/topologies",
349
+ PLATFORM = PROJECT_ROOT + "/engine/topologies/platform",
350
+ TILT = PROJECT_ROOT + "/engine/topologies/tilt",
351
+ PRODUCT_GENERATED = PROJECT_ROOT + "/engine/topologies/product_autogenerated_*",
352
+ ),
353
+
354
+ # Discovery paths - Active discovery system at root level
355
+ # Note: Deprecated engine/topologies/tilt/discovery/ removed 2026-05-01
356
+ DISCOVERY = struct(
357
+ REGISTRY = PROJECT_ROOT + "/discovery/registry.star",
358
+ LOADING = PROJECT_ROOT + "/discovery/loading.star",
359
+ LIBRARIES = PROJECT_ROOT + "/discovery/libraries.star",
360
+ ),
361
+
362
+ # Generator paths - EXPLICIT, no magic imports
363
+ GENERATORS = struct(
364
+ BASE = PROJECT_ROOT + "/engine/topologies/tilt/generators",
365
+ VITE = PROJECT_ROOT + "/engine/topologies/tilt/generators/vite_config.star",
366
+ TSCONFIG = PROJECT_ROOT + "/engine/topologies/tilt/generators/tsconfig.star",
367
+ DOCKERFILE = PROJECT_ROOT + "/engine/topologies/tilt/generators/dockerfile.star",
368
+ NPMRC = PROJECT_ROOT + "/engine/topologies/tilt/generators/npmrc.star",
369
+ MANIFEST_RESOURCE = PROJECT_ROOT + "/engine/topologies/tilt/generators/manifest_resource.star",
370
+ ),
371
+
372
+ # Resource paths - EXPLICIT
373
+ RESOURCES = struct(
374
+ BASE = PROJECT_ROOT + "/engine/topologies/tilt/resources",
375
+ DEPS = PROJECT_ROOT + "/engine/topologies/tilt/resources/deps.star",
376
+ DATABASES = PROJECT_ROOT + "/engine/topologies/tilt/resources/databases.star",
377
+ INFRA = PROJECT_ROOT + "/engine/topologies/tilt/resources/infra.star",
378
+ ORCHESTRATOR = PROJECT_ROOT + "/engine/topologies/tilt/resources/orchestrator.star",
379
+ LIBS = PROJECT_ROOT + "/engine/topologies/tilt/resources/libs.star",
380
+ ),
381
+
382
+ # Platform topology paths - EXPLICIT
383
+ PLATFORM = struct(
384
+ DOCKER = PROJECT_ROOT + "/engine/topologies/platform/docker",
385
+ NET = PROJECT_ROOT + "/engine/topologies/platform/net",
386
+ STATE = PROJECT_ROOT + "/engine/topologies/platform/state",
387
+ SECURITY = PROJECT_ROOT + "/engine/topologies/platform/security",
388
+ REGISTRIES = PROJECT_ROOT + "/engine/topologies/platform/registries",
389
+ OBSERVABILITY = PROJECT_ROOT + "/engine/topologies/platform/observability",
390
+ ),
391
+
392
+ # Configuration paths - EXPLICIT
393
+ CONFIG = struct(
394
+ BASE = PROJECT_ROOT + "/engine/topologies/tilt/config",
395
+ GLOBAL = PROJECT_ROOT + "/engine/topologies/tilt/config/global_config.star",
396
+ PROFILES = PROJECT_ROOT + "/engine/topologies/tilt/config/profiles.star",
397
+ FEATURE_FLAGS = PROJECT_ROOT + "/engine/topologies/tilt/config/feature_flags.star",
398
+ ),
399
+
400
+ # Common utilities - EXPLICIT
401
+ COMMON = struct(
402
+ BASE = PROJECT_ROOT + "/engine/topologies/tilt/common",
403
+ UTILS = PROJECT_ROOT + "/engine/topologies/tilt/common/utils.star",
404
+ CONSTANTS = PROJECT_ROOT + "/engine/topologies/tilt/common/constants.star",
405
+ VALIDATION = PROJECT_ROOT + "/engine/topologies/tilt/common/validation.star",
406
+ ),
407
+ )
408
+
409
+ # =============================================================================
410
+ # SERVICE PATTERNS - Explicit naming conventions
411
+ # =============================================================================
412
+
413
+ RESOURCE_PATTERNS = struct(
414
+ # Manifest file names - EXPLICIT, no guessing
415
+ MANIFEST_FILE = "service.json",
416
+
417
+ # Service structure - EXPLICIT expectations
418
+ BACKEND_DIR = "backend",
419
+ FRONTEND_DIR = "frontend",
420
+ MIGRATOR_DIR = "migrator",
421
+ SHARED_DIR = "shared",
422
+
423
+ # Config files - EXPLICIT
424
+ PACKAGE_JSON = "package.json",
425
+ BUN_LOCK = "bun.lock",
426
+ DOCKERFILE = "Dockerfile",
427
+ DOCKER_COMPOSE = "docker-compose.yml",
428
+
429
+ # Generated files - EXPLICIT outputs
430
+ GENERATED_TSCONFIG = "tsconfig.json",
431
+ GENERATED_VITE_CONFIG = "vite.config.ts",
432
+ GENERATED_VITE_DOCKER = "vite.config.docker.ts",
433
+ GENERATED_NPMRC = ".npmrc",
434
+ GENERATED_BUNFIG = "bunfig.toml",
435
+ )
436
+
437
+ # =============================================================================
438
+ # DISCOVERY PATTERNS - Explicit file discovery rules
439
+ # =============================================================================
440
+
441
+ DISCOVERY = struct(
442
+ # Where to look for service manifests - EXPLICIT paths
443
+ RESOURCE_SEARCH_PATHS = [
444
+ PROJECT_ROOT + "/services/product/*",
445
+ PROJECT_ROOT + "/services/platform/*",
446
+ PROJECT_ROOT + "/services/identity/*",
447
+ ],
448
+
449
+ # Library discovery - EXPLICIT
450
+ LIBRARY_SEARCH_PATHS = [
451
+ PROJECT_ROOT + "/shared/*",
452
+ ],
453
+
454
+ # Manifest patterns - EXPLICIT glob patterns
455
+ MANIFEST_PATTERNS = [
456
+ "**/service.json",
457
+ ],
458
+
459
+ # Exclusion patterns - EXPLICIT (no hidden exclusions)
460
+ EXCLUDE_PATTERNS = [
461
+ "**/node_modules/**",
462
+ "**/.git/**",
463
+ "**/dist/**",
464
+ "**/build/**",
465
+ "**/*.autogenerated.*",
466
+ ],
467
+ )
468
+
469
+ # =============================================================================
470
+ # GENERATOR OUTPUT PATHS - Explicit where files are written
471
+ # =============================================================================
472
+
473
+ OUTPUT = struct(
474
+ # Base output directory - EXPLICIT
475
+ BASE = PROJECT_ROOT + "/.tilt/output",
476
+
477
+ # Generated configs location - EXPLICIT
478
+ CONFIGS = PROJECT_ROOT + "/.tilt/output/configs",
479
+
480
+ # Autogenerated topology files - EXPLICIT
481
+ TOPOLOGIES = PROJECT_ROOT + "/.tilt/topologies/product_autogenerated_*",
482
+
483
+ # Cache location - EXPLICIT
484
+ CACHE = PROJECT_ROOT + "/.tilt/.cache",
485
+
486
+ # Log location - EXPLICIT
487
+ LOGS = PROJECT_ROOT + "/.tilt/logs",
488
+
489
+ # Autogenerated folder name within service directories - EXPLICIT
490
+ # This is where generated configs (Dockerfile, tsconfig, etc.) are placed per-service
491
+ # Teams can customize this in ./spec.master to use custom folder names
492
+ AUTOGENERATED_FOLDER = ".autogenerated", # Changed from "autogenerated" to ".autogenerated"
493
+ )
494
+
495
+ # =============================================================================
496
+ # VALIDATION RULES - Explicit constraints
497
+ # =============================================================================
498
+
499
+ VALIDATION = struct(
500
+ # Port ranges - EXPLICIT
501
+ MIN_PORT = 1024,
502
+ MAX_PORT = 65535,
503
+ RESERVED_PORTS = [3000, 8080, 5432, 6379, 4222], # EXPLICIT: common conflicts
504
+
505
+ # Replica constraints - EXPLICIT
506
+ MIN_REPLICAS = 1,
507
+ MAX_REPLICAS = 100,
508
+ DEFAULT_REPLICAS = 1,
509
+
510
+ # Naming constraints - EXPLICIT regex patterns
511
+ VALID_RESOURCE_NAME_PATTERN = "^[a-z0-9-]+$",
512
+ MAX_RESOURCE_NAME_LENGTH = 63,
513
+
514
+ # Dependency constraints - EXPLICIT
515
+ MAX_DEPENDENCY_DEPTH = 10, # Prevent circular deps
516
+ ALLOWED_DEPENDENCY_TYPES = ["internal", "external", "platform"],
517
+ )
518
+
519
+ # =============================================================================
520
+ # FEATURE FLAGS - Explicit feature toggles
521
+ # =============================================================================
522
+
523
+ # LEGEND:
524
+ # ✅ True = Feature is working and enabled now
525
+ # ⏸️ False = Feature exists but currently disabled
526
+ # 🗓️ False = Feature is on the roadmap (not implemented yet)
527
+ #
528
+ # "🗓️ ROADMAP" means we're planning to build it, but it's not ready.
529
+ # Don't worry - the core features (✅) work great!
530
+
531
+ FEATURES = struct(
532
+ # ✅ Core features - Working today
533
+ AUTO_DISCOVERY = True, # Automatically find new service.json files
534
+ INCREMENTAL_GENERATION = True, # Only regenerate changed configs
535
+ PARALLEL_GENERATION = True, # Generate configs in parallel
536
+
537
+ # 🗓️ Roadmap features - Planned but not built yet
538
+ # These will be added in future versions. Don't wait for them -
539
+ # what's here today works great!
540
+
541
+ ISTIO_INTEGRATION = False,
542
+ # 🗓️ ROADMAP (Target: Q2 2026)
543
+ # Auto-generate Istio service mesh configs
544
+ # Currently using Traefik for routing - works great!
545
+
546
+ BAZEL_INTEGRATION = False,
547
+ # 🗓️ ROADMAP (Target: When requested)
548
+ # Bazel build system for hermetic builds
549
+ # Currently using Docker layer caching (90% of benefits, simpler)
550
+
551
+ CUE_VALIDATION = False,
552
+ # 🗓️ ROADMAP (Target: Future)
553
+ # Type-safe validation using Cue lang
554
+ # Currently using JSON Schema + Starlark validation (works well)
555
+
556
+ # ⏸️ Debug features - Toggle these when troubleshooting
557
+ VERBOSE_LOGGING = False, # Lots of output for debugging
558
+ GENERATION_DEBUG = False, # Step-by-step generation logging
559
+ CONTEXT_INSPECTION = False, # See full context object (see DEBUG section)
560
+ )
561
+
562
+ # =============================================================================
563
+ # CONSTANTS - System-wide constants
564
+ # =============================================================================
565
+
566
+ # Load project name for system identity
567
+ # Use TDK_PROJECT_ROOT env var set by Tilt, fallback to current directory
568
+ def _load_system_name_prefix():
569
+ project_root = os.environ.get('TDK_PROJECT_ROOT', '')
570
+ project_json_path = '.tdk/project.json'
571
+ if project_root:
572
+ project_json_path = project_root + '/' + project_json_path
573
+
574
+ if os.path.exists(project_json_path):
575
+ _project_json = read_json(project_json_path)
576
+ return _project_json.get('project', {}).get('name', 'tdk-project')
577
+ return 'tdk-project'
578
+
579
+ _SYSTEM_NAME_PREFIX = _load_system_name_prefix()
580
+
581
+ CONSTANTS = struct(
582
+ # System identity - EXPLICIT (dynamic from project.json)
583
+ SYSTEM_NAME = _SYSTEM_NAME_PREFIX + "-tilt-platform",
584
+ SYSTEM_VERSION = "2.0.0",
585
+
586
+ # Runtimes - EXPLICIT supported options
587
+ SUPPORTED_RUNTIMES = ["bun", "node", "deno"],
588
+ DEFAULT_RUNTIME = "bun",
589
+
590
+ # App types - EXPLICIT
591
+ SUPPORTED_APP_TYPES = ["backend", "frontend", "library", "sdk"],
592
+
593
+ # Features - EXPLICIT
594
+ SUPPORTED_FEATURES = [
595
+ "nats",
596
+ "prisma",
597
+ "vite",
598
+ "vite-node",
599
+ "traefik",
600
+ "redis",
601
+ "postgres",
602
+ ],
603
+
604
+ # Timeouts - EXPLICIT (seconds)
605
+ DEFAULT_TIMEOUT = 300,
606
+ HEALTH_CHECK_TIMEOUT = 30,
607
+ GENERATION_TIMEOUT = 60,
608
+
609
+ # Intervals - EXPLICIT (seconds)
610
+ DISCOVERY_SCAN_INTERVAL = 5,
611
+ HEALTH_CHECK_INTERVAL = 10,
612
+ )
613
+
614
+ # =============================================================================
615
+ # 🐛 DEBUGGING - How to Fix Things When They Break
616
+ # =============================================================================
617
+
618
+ # THREE WAYS TO USE DEBUG FLAGS:
619
+ #
620
+ # Method 1: Edit this file (affects all future runs)
621
+ # DEBUG = DEBUG | struct(DUMP_CONTEXT_ON_GENERATION = True)
622
+ # Then run `tilt up`
623
+ #
624
+ # Method 2: Environment variable (one-time, quick)
625
+ # $ TILT_DEBUG_DUMP_CONTEXT=true tilt up
626
+ # (Checks os.environ.get("TILT_DEBUG_DUMP_CONTEXT") at runtime)
627
+ #
628
+ # Method 3: Tilt args (when we implement --debug flags)
629
+ # $ tilt up -- --debug-context
630
+ #
631
+ # WHAT EACH FLAG DOES:
632
+ #
633
+ # DUMP_CONTEXT_ON_GENERATION = True
634
+ # → Prints the entire context object to logs
635
+ # → Shows: resource_name, port, dependencies, paths
636
+ # → Use when: "What values are being used?"
637
+ #
638
+ # DUMP_GENERATED_CONFIGS = True
639
+ # → Writes all generated configs to OUTPUT.CONFIGS
640
+ # → You can open and read them
641
+ # → Use when: "What configs were generated?"
642
+ #
643
+ # LOG_LEVEL = "DEBUG"
644
+ # → Very verbose output showing every step
645
+ # → Use when: "Where is it failing?"
646
+ #
647
+ # ENABLE_DEBUG_ENDPOINTS = True
648
+ # → Opens http://localhost:10350 for live inspection
649
+ # → Use when: "I want to browse the current state"
650
+
651
+ DEBUG = struct(
652
+ # Live debugging endpoint
653
+ ENABLE_DEBUG_ENDPOINTS = False,
654
+ DEBUG_ENDPOINT_PORT = 10350,
655
+
656
+ # What to dump/print during generation
657
+ DUMP_CONTEXT_ON_GENERATION = False, # Print full context to logs
658
+ DUMP_GENERATED_CONFIGS = True, # Write configs to disk for inspection
659
+
660
+ # Logging configuration
661
+ LOG_LEVEL = "INFO", # Options: DEBUG (verbose), INFO (normal), WARN, ERROR
662
+ LOG_FORMAT = "JSON", # Options: JSON (structured), TEXT (readable)
663
+
664
+ # Validation strictness
665
+ STRICT_VALIDATION = True, # Fail on any validation error
666
+ FAIL_ON_WARNING = False, # Also fail on warnings (stricter)
667
+ )
668
+
669
+ # =============================================================================
670
+ # ZIG-STYLE EXPLICITNESS MANIFESTO
671
+ # =============================================================================
672
+
673
+ """
674
+ PHILOSOPHY: No hidden control flow. No hidden allocations. No magic.
675
+
676
+ This spec file makes EVERYTHING explicit:
677
+ 1. ALL paths are constants - no runtime discovery
678
+ 2. ALL patterns are declared - no hidden globbing
679
+ 3. ALL features are toggled - no surprise behavior
680
+ 4. ALL outputs are defined - no mystery files
681
+
682
+ COMPARISON:
683
+
684
+ ❌ BEFORE (Implicit):
685
+ load("./discovery/resource_registry.star", "get_app_resources")
686
+ # Where does this file live? Magic.
687
+ # What does it return? Runtime mystery.
688
+
689
+ ✅ AFTER (Explicit):
690
+ load(SPEC.DISCOVERY.REGISTRY, "get_app_resources")
691
+ # Path is: {PROJECT_ROOT}/.tilt/topologies/tilt/discovery/resource_registry.star
692
+ # Behavior defined in this spec file.
693
+
694
+ USAGE:
695
+ load("{}/.tilt/spec.master".format(PROJECT_ROOT), "SPEC", "CONSTANTS")
696
+
697
+ # Now EVERYTHING is explicit
698
+ registry_path = SPEC.DISCOVERY.REGISTRY
699
+ max_port = VALIDATION.MAX_PORT
700
+ features = CONSTANTS.SUPPORTED_FEATURES
701
+
702
+ This is our answer to the Zig developer's critique:
703
+ "Make it obvious. No hidden state."
704
+ """
705
+
706
+ # =============================================================================
707
+ # EXPORTS - Explicit what's available
708
+ # =============================================================================
709
+
710
+ __all__ = [
711
+ "SPEC",
712
+ "RESOURCE_PATTERNS",
713
+ "DISCOVERY",
714
+ "OUTPUT",
715
+ "VALIDATION",
716
+ "FEATURES",
717
+ "CONSTANTS",
718
+ "DEBUG",
719
+ ]