@flisk-sh/flisk 0.0.0-stage → 1.3.190

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-CLCUIDBH.js +510 -0
  170. package/cli/dist-bundle/cli.js +2017 -0
  171. package/cli/dist-bundle/cold-preflight-SY26O2IG.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,381 @@
1
+ #!/usr/bin/env starlark
2
+ # -*- coding: utf-8 -*-
3
+ # =============================================================================
4
+ # 🎯 {{project.name}} - TILT ENTRYPOINT
5
+ # =============================================================================
6
+ # SYSTEM-GENERATED BY Flisk CLI - DO NOT EDIT
7
+ # Source: .tdk/project.json
8
+ # Regenerate with: flisk config regenerate
9
+ # =============================================================================
10
+
11
+ print("🚀 Loading {{project.name}}...")
12
+
13
+ # =============================================================================
14
+ # 📦 REGISTER Flisk EXTENSION
15
+ # =============================================================================
16
+ # The Flisk Tilt extension (engine, discovery, specs, ext) is vendored into
17
+ # this project at generation time (.tdk/.tdk-out/tdk-cli-ext). Resolution:
18
+ # 1. Vendored in-project copy (default - works offline, no GitHub needed)
19
+ # 2. $TDK_EXTENSION_PATH (explicit override to any tdk-cli checkout)
20
+ # 3. Clear failure with instructions (no endless git retry on a missing repo)
21
+ _vendored_tdk_path = config.main_dir + "/tdk-cli-ext"
22
+ _use_local = False
23
+ _local_tdk_path = ""
24
+
25
+ if str(local("test -d " + _vendored_tdk_path + " && echo yes || echo no", quiet=True, echo_off=True)).strip() == 'yes':
26
+ _use_local = True
27
+ _local_tdk_path = _vendored_tdk_path
28
+ else:
29
+ _env_tdk_path = os.environ.get('TDK_EXTENSION_PATH', '')
30
+ 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':
31
+ _use_local = True
32
+ _local_tdk_path = _env_tdk_path
33
+
34
+ if not _use_local:
35
+ fail("""
36
+ Flisk extension not found.
37
+
38
+ 'flisk up' needs the Flisk Tilt extension (engine/discovery/specs/ext).
39
+ Fix it with one of:
40
+ 1) Regenerate the project so the extension is vendored in:
41
+ flisk config regenerate
42
+ (set $TDK_EXTENSION_SOURCE to a tdk-cli checkout if it was not auto-detected)
43
+ 2) Point at any tdk-cli checkout:
44
+ export TDK_EXTENSION_PATH=/path/to/tdk-cli
45
+ 3) Follow the sandbox guide: https://tdk-landscape.github.io/tdk-website/sandbox/
46
+ """)
47
+
48
+ v1alpha1.extension_repo(name='tdk-cli-local', url='file://' + _local_tdk_path)
49
+ v1alpha1.extension(name='tdk-cli', repo_name='tdk-cli-local', repo_path='')
50
+
51
+ # =============================================================================
52
+ # 📍 PROJECT CONFIGURATION
53
+ # =============================================================================
54
+ # Tiltfile is in .tdk/.tdk-out/, project root is two levels up
55
+ PROJECT_ROOT = config.main_dir + "/../.."
56
+ os.environ['TDK_PROJECT_ROOT'] = PROJECT_ROOT
57
+
58
+ # =============================================================================
59
+ # 🔌 LOAD MASTER CONFIGS & Flisk MODULES
60
+ # =============================================================================
61
+ load("TILT_TECH_STACK.star",
62
+ 'assert_tech_stack',
63
+ 'TECH_STACK',
64
+ )
65
+ load("TILT_RESOURCE_DEFAULTS.star",
66
+ 'BASE_PORT_FRONTEND',
67
+ 'BASE_PORT_BACKEND',
68
+ )
69
+ load("spec.master",
70
+ 'RESOURCE_DEFAULTS',
71
+ 'PRE_ALPHA_RESOURCES',
72
+ 'ALPHA_RESOURCES',
73
+ 'BETA_RESOURCES',
74
+ 'FOCUS_PRE_ALPHA',
75
+ 'FOCUS_ALPHA',
76
+ 'FOCUS_BETA',
77
+ )
78
+
79
+ # Load Flisk extension modules
80
+ load('ext://tdk-cli',
81
+ 'Utils',
82
+ 'Manifest',
83
+ 'Config',
84
+ 'Orchestrator',
85
+ 'Watchers',
86
+ 'Infra',
87
+ 'Docker',
88
+ 'FrontendBuildPlan',
89
+ 'load_ui_enhancements',
90
+ 'APP_RESOURCES',
91
+ 'GLOBAL_CONFIG_EXPORT',
92
+ 'Registry',
93
+ 'resource_defers_start',
94
+ )
95
+
96
+ # =============================================================================
97
+ # 🏗️ VALIDATE & INITIALIZE
98
+ # =============================================================================
99
+ assert_tech_stack({
100
+ "bundler": TECH_STACK['bundler'],
101
+ "runtime": TECH_STACK['runtime'],
102
+ "orm": TECH_STACK['orm'],
103
+ "messaging": TECH_STACK['messaging'],
104
+ })
105
+
106
+ # =============================================================================
107
+ # 🎨 UI ENHANCEMENTS
108
+ # =============================================================================
109
+ load_ui_enhancements({
110
+ 'enable_tooltips': True,
111
+ 'enable_icons': True,
112
+ 'enable_help_panel': True,
113
+ 'enable_cron_jobs_tab': True,
114
+ })
115
+
116
+ # =============================================================================
117
+ # 📋 PARSE CLI ARGUMENTS
118
+ # =============================================================================
119
+ config.define_string_list('focus', usage='Services to focus on')
120
+ config.define_bool('no-frontend', usage='Skip frontend services')
121
+ config.define_bool('include-monitoring', usage='Include monitoring stack')
122
+ config.define_string_list('verbose', usage='Verbose logging')
123
+ config.define_bool('no-auto-init-new', usage='Do not auto-init new services')
124
+
125
+ for resource_name in RESOURCE_DEFAULTS.keys():
126
+ config.define_bool(resource_name, usage='Enable ' + resource_name)
127
+
128
+ config.define_string_list('args', args=True, usage='Positional arguments')
129
+ cfg = config.parse()
130
+
131
+ # =============================================================================
132
+ # 🔮 AUTO-DISCOVERY
133
+ # =============================================================================
134
+ _AUTO_DISCOVER_ENABLED = os.environ.get('AUTO_DISCOVER', 'true').lower() == 'true'
135
+ _DISCOVERY_SCAN_INTERVAL = int(os.environ.get('DISCOVERY_SCAN_INTERVAL', '5'))
136
+ _AUTO_INIT_NEW_RESOURCES = not cfg.get('no-auto-init-new', False)
137
+
138
+ # Auto-discovery enabled ({{discovery.interval}}s interval)
139
+ _AUTO_DISCOVER_ENABLED = _AUTO_DISCOVER_ENABLED
140
+
141
+ # =============================================================================
142
+ # 📝 LOGGING
143
+ # =============================================================================
144
+ _LOG_LEVEL = "verbose" if (cfg.get('verbose') or os.environ.get('VERBOSE', '').lower() == 'true') else "normal"
145
+
146
+ def get_log_level():
147
+ return _LOG_LEVEL
148
+
149
+ def is_verbose():
150
+ return _LOG_LEVEL == "verbose"
151
+
152
+ os.environ['TILT_LOG_LEVEL'] = _LOG_LEVEL
153
+ if _LOG_LEVEL == "verbose":
154
+ os.environ['VERBOSE'] = 'true'
155
+
156
+ # =============================================================================
157
+ # 🌍 ENVIRONMENT SETUP
158
+ # =============================================================================
159
+ is_macos = str(local('uname -s', quiet=True)).strip() == 'Darwin'
160
+ Utils.load_dotenv(PROJECT_ROOT)
161
+
162
+ # =============================================================================
163
+ # 🎯 FOCUS MODE
164
+ # =============================================================================
165
+ FOCUS_MODE, FOCUS_ENABLED_ALL, FOCUS_ENABLED_RESOURCES = Config.apply_focus(cfg)
166
+ # Load ALWAYS_ENABLED_INFRA from project.json (falls back to defaults if not specified)
167
+ ALWAYS_ENABLED_INFRA = {{starlarkArray alwaysEnabledInfra}}
168
+
169
+ def should_enable(resource_name):
170
+ # Always-enabled infra (proxy/Traefik, verdaccio, database-management) must stay
171
+ # enabled independent of focus mode: FOCUS_MODE collapses to False whenever the pre-alpha
172
+ # stack bucket is empty (the default on a freshly generated project.json), which used to
173
+ # silently disable Traefik and friends on every out-of-the-box `flisk up`.
174
+ if resource_name in ALWAYS_ENABLED_INFRA:
175
+ return RESOURCE_DEFAULTS.get(resource_name, True)
176
+ if FOCUS_MODE and FOCUS_ENABLED_ALL:
177
+ if resource_name in FOCUS_ENABLED_ALL:
178
+ return True
179
+ for domain in FOCUS_ENABLED_ALL:
180
+ if resource_name.startswith(domain + "-"):
181
+ return True
182
+ return Utils.should_enable(resource_name, cfg, RESOURCE_DEFAULTS)
183
+
184
+ # =============================================================================
185
+ # 🏗️ INFRASTRUCTURE SERVICES
186
+ # =============================================================================
187
+
188
+ print("🏗️ Loading infrastructure services...")
189
+ # load_all returns the golden-layers build resource's name. It has to reach
190
+ # TILT_CONTEXT below: app and migrator resources add it to their resource_deps
191
+ # so their images build only after the base images exist. Dropping it lets
192
+ # every service image build start at once, fail with "pull access denied" on a
193
+ # machine that has no base images yet, and never retry.
194
+ GOLDEN_IMAGE_RESOURCE = Infra.load_all(
195
+ should_enable=should_enable,
196
+ fix_docker_networks_fn=Utils.fix_docker_networks,
197
+ docker_provider=Docker,
198
+ write_fn=Utils.write_file_if_changed,
199
+ project_root=PROJECT_ROOT,
200
+ )
201
+
202
+ # =============================================================================
203
+ # 📚 INITIALIZE Flisk
204
+ # =============================================================================
205
+ print("🚀 Initializing Flisk...")
206
+
207
+ # Use pre-loaded APP_RESOURCES from Flisk registry (already initialized with all services)
208
+ # Registry.reinitialize() is only needed if we want to force a fresh discovery
209
+ _app_resources_list = APP_RESOURCES
210
+
211
+ # First run or cache cleared — build registry from manifests
212
+ if len(_app_resources_list) == 0:
213
+ _app_resources_list = Registry.reinitialize()
214
+
215
+ # If still empty, load directly from manifest files
216
+ if len(_app_resources_list) == 0:
217
+ _app_resources_list = Manifest.load_all(PROJECT_ROOT)
218
+
219
+ print("📦 Loaded {} services".format(len(_app_resources_list)))
220
+
221
+ # Create Tilt resources for all services
222
+ TILT_CONTEXT = {
223
+ 'should_enable': should_enable,
224
+ 'write_file': Utils.write_file_if_changed,
225
+ 'global_config': GLOBAL_CONFIG_EXPORT,
226
+ 'project_root': PROJECT_ROOT,
227
+ 'all_services': _app_resources_list,
228
+ 'golden_image_resource': GOLDEN_IMAGE_RESOURCE,
229
+ 'focus_mode': FOCUS_MODE,
230
+ 'focus_enabled_resources': FOCUS_ENABLED_RESOURCES,
231
+ }
232
+
233
+ print("🚀 Creating Tilt resources for {} services...".format(len(_app_resources_list)))
234
+ for app_service in _app_resources_list:
235
+ Orchestrator.apply_service(app_service, TILT_CONTEXT)
236
+
237
+ # Setup file watchers
238
+ Watchers.setup_package_json(_app_resources_list, should_enable)
239
+
240
+ # Apply focus mode filter
241
+ # Build known Tilt resource names (and a stack-name -> resource-name index) from
242
+ # discovered services to filter focus list. Focus targets are stack names (e.g.
243
+ # "app", "billing") from spec.master, which do NOT always match the resource
244
+ # name prefix (stack "app" maps to resources "dashboard-api"/"dashboard-app",
245
+ # not "app-*") - so stack membership must be resolved explicitly rather than
246
+ # assumed via string prefix.
247
+ _KNOWN_TILT_RESOURCES = set()
248
+ _DEFERRED_IMAGE_RESOURCES = set()
249
+ _KNOWN_TILT_RESOURCES.add('service-discovery-daemon')
250
+ _KNOWN_TILT_RESOURCES.add('init-networks')
251
+ _KNOWN_TILT_RESOURCES.add('postgres')
252
+ _KNOWN_TILT_RESOURCES.add('nats')
253
+ _KNOWN_TILT_RESOURCES.add('infisical')
254
+ _KNOWN_TILT_RESOURCES.add('infisical-db')
255
+ _KNOWN_TILT_RESOURCES.add('infisical-redis')
256
+ _KNOWN_TILT_RESOURCES.add('traefik')
257
+ _KNOWN_TILT_RESOURCES.add('verdaccio')
258
+ _KNOWN_TILT_RESOURCES.add('golden-layers-build')
259
+ _STACK_TO_RESOURCE_NAMES = {}
260
+ for _KNOWN_SVC in _app_resources_list:
261
+ _KNOWN_SVC_NAME = _KNOWN_SVC.get('name', '')
262
+ _KNOWN_SVC_STACK = _KNOWN_SVC.get('stack', '')
263
+ if _KNOWN_SVC_NAME:
264
+ for _KNOWN_RES in _KNOWN_SVC.get('resources', []):
265
+ _KNOWN_RES_NAME = _KNOWN_RES.get('name', '')
266
+ if _KNOWN_RES_NAME:
267
+ _KNOWN_TILT_RESOURCES.add(_KNOWN_RES_NAME)
268
+ _KNOWN_TILT_RESOURCES.add(_KNOWN_RES_NAME + '-run-only')
269
+ _KNOWN_TILT_RESOURCES.add(_KNOWN_RES_NAME + '-config-gen')
270
+ # A frontend whose build script is the standard `tsc && vite build` gets a
271
+ # non-blocking <service>-typecheck resource (see Docker frontend registration).
272
+ # Name it here, from the same plan and path, so focus mode can enable it.
273
+ if _KNOWN_RES.get('frontend', False) and not should_enable('backends-only'):
274
+ _KNOWN_RES_DIR = PROJECT_ROOT + '/' + _KNOWN_RES.get('_resource_path', _KNOWN_SVC.get('path', '') + '/' + _KNOWN_RES_NAME)
275
+ if FrontendBuildPlan(_KNOWN_RES_DIR + '/package.json')['typecheck']:
276
+ _KNOWN_TILT_RESOURCES.add(_KNOWN_RES_NAME + '-typecheck')
277
+ _KNOWN_RES_MANIFEST = _KNOWN_RES.get('_manifest', {})
278
+ _KNOWN_RES_SABLIER = _KNOWN_RES_MANIFEST.get('sablier', {})
279
+ # Mirrors _register_single_resource: the prebuild only exists for
280
+ # a resource that gets a docker_build (has syncs, not a library/sdk/BYO).
281
+ # Read `syncs` from the resource, not from `_manifest`: `_manifest` is the
282
+ # ORIGINAL service.json, which has no `syncs` unless the author wrote one,
283
+ # while the resource carries the normalized default that registration uses.
284
+ # Reading the original left a scaffolded deferStart service's `<name>-image`
285
+ # registered but never enabled, so `flisk up <stack>` never built its image.
286
+ if resource_defers_start(_KNOWN_RES_MANIFEST) and _KNOWN_RES_MANIFEST.get('appType', 'backend') not in ['library', 'sdk', 'bring-your-own'] and _KNOWN_RES.get('syncs'):
287
+ _DEFERRED_IMAGE_RESOURCES.add(_KNOWN_RES_NAME + '-image')
288
+ if _KNOWN_SVC_STACK:
289
+ _STACK_TO_RESOURCE_NAMES.setdefault(_KNOWN_SVC_STACK, [])
290
+ _STACK_TO_RESOURCE_NAMES[_KNOWN_SVC_STACK].append(_KNOWN_RES_NAME)
291
+ if FOCUS_MODE and FOCUS_ENABLED_RESOURCES:
292
+ _FILTERED_RESOURCES = []
293
+ for _R in FOCUS_ENABLED_RESOURCES:
294
+ if _R in _KNOWN_TILT_RESOURCES:
295
+ _FILTERED_RESOURCES.append(_R)
296
+ if _R + '-typecheck' in _KNOWN_TILT_RESOURCES:
297
+ _FILTERED_RESOURCES.append(_R + '-typecheck')
298
+ # Focus expansion normally resolves stack names to concrete
299
+ # resources before this loop, so the stack branch below is not
300
+ # reached for the common `flisk up <stack>` path. Keep a deferred
301
+ # service's separate image prebuild enabled alongside that
302
+ # concrete resource in the expanded focus list.
303
+ if _R + '-image' in _DEFERRED_IMAGE_RESOURCES:
304
+ _FILTERED_RESOURCES.append(_R + '-image')
305
+ elif _R in _STACK_TO_RESOURCE_NAMES:
306
+ for _STACK_RES_NAME in _STACK_TO_RESOURCE_NAMES[_R]:
307
+ _FILTERED_RESOURCES.append(_STACK_RES_NAME)
308
+ _FILTERED_RESOURCES.append(_STACK_RES_NAME + '-run-only')
309
+ _FILTERED_RESOURCES.append(_STACK_RES_NAME + '-config-gen')
310
+ # deferStart backends prebuild their image in a separate
311
+ # local_resource because their dc_resource is not auto-init.
312
+ # Keep that prebuild in focus mode so `flisk up <stack>` still
313
+ # prepares the image before the first request wakes the service.
314
+ # Only when it exists: without a license deferStart is off and
315
+ # no `-image` resource is registered, and Tilt errors on an
316
+ # enabled name it cannot find.
317
+ if _STACK_RES_NAME + '-image' in _DEFERRED_IMAGE_RESOURCES:
318
+ _FILTERED_RESOURCES.append(_STACK_RES_NAME + '-image')
319
+ if _STACK_RES_NAME + '-typecheck' in _KNOWN_TILT_RESOURCES:
320
+ _FILTERED_RESOURCES.append(_STACK_RES_NAME + '-typecheck')
321
+ else:
322
+ _MATCHED = [kr for kr in _KNOWN_TILT_RESOURCES if kr != 'service-discovery-daemon' and kr.startswith(_R + '-')]
323
+ _FILTERED_RESOURCES.extend(_MATCHED)
324
+ # NATS is gated by the same 'database-management' should_enable() check as
325
+ # postgres (see infra-loader.star), so it belongs with the infra that is
326
+ # always kept enabled here -- otherwise config.set_enabled_resources()
327
+ # below disables it on every out-of-the-box `flisk up` (pre-alpha always
328
+ # activates this focus-filter branch), and any resource that enables the
329
+ # 'nats' feature never gets a broker to connect to.
330
+ #
331
+ # services/platform/messaging/docker-compose.yml is user-authored (Flisk
332
+ # does not generate it) and may declare more than nats/redis -- e.g. a
333
+ # local mail catcher standing in for a managed email provider. Every
334
+ # service it declares is loaded via docker_compose() in infra-loader.star,
335
+ # so it must be enabled here too, or it is silently disabled the same way.
336
+ _ALWAYS_ENABLED_INFRA_RESOURCES = ['init-networks', 'traefik', 'golden-layers-build']
337
+ if should_enable('database-management') or TILT_CONTEXT.get('_shared_platform_postgres_force_started', False):
338
+ _ALWAYS_ENABLED_INFRA_RESOURCES.append('postgres')
339
+ _messaging_compose_path = PROJECT_ROOT + '/services/platform/messaging/docker-compose.yml'
340
+ if str(local("test -f '" + _messaging_compose_path + "' && echo yes || echo no", quiet=True, echo_off=True)).strip() == 'yes':
341
+ # infra-loader.star only creates these Tilt resources when this file
342
+ # exists, so only add them here when they actually exist to add.
343
+ _messaging_compose_doc = read_yaml(_messaging_compose_path, default={})
344
+ for _messaging_svc_name in _messaging_compose_doc.get('services', {}).keys():
345
+ _ALWAYS_ENABLED_INFRA_RESOURCES.append(_messaging_svc_name)
346
+ if 'nats' not in _ALWAYS_ENABLED_INFRA_RESOURCES:
347
+ _ALWAYS_ENABLED_INFRA_RESOURCES.append('nats')
348
+ for _INFRA in _ALWAYS_ENABLED_INFRA_RESOURCES:
349
+ _FILTERED_RESOURCES.append(_INFRA)
350
+ for _KR in _KNOWN_TILT_RESOURCES:
351
+ if _KR.startswith('provision-db-'):
352
+ _FILTERED_RESOURCES.append(_KR)
353
+ _FILTERED_RESOURCES = sorted(set(_FILTERED_RESOURCES))
354
+ if _FILTERED_RESOURCES:
355
+ config.set_enabled_resources(_FILTERED_RESOURCES)
356
+ print("🎯 Focus mode: {} resources".format(len(_FILTERED_RESOURCES)))
357
+ else:
358
+ print("⚠️ No known resources matched focus targets:", ", ".join(FOCUS_ENABLED_RESOURCES))
359
+
360
+ # =============================================================================
361
+ # 👁️ AUTO-DISCOVERY DAEMON
362
+ # =============================================================================
363
+ if _AUTO_DISCOVER_ENABLED:
364
+ watch_file('snapshots/resource-snapshot.json')
365
+
366
+ # Get extension install path: vendored copy inside this project
367
+ discovery_path = _local_tdk_path + "/discovery"
368
+
369
+ daemon_script = discovery_path + '/resource_snapshot.py'
370
+ daemon_cmd = "cd " + config.main_dir + " && python3 \"" + daemon_script + "\" watch"
371
+
372
+ local_resource('service-discovery-daemon',
373
+ serve_cmd=daemon_cmd,
374
+ deps=[daemon_script],
375
+ auto_init=True, labels=['discovery'],
376
+ links=[link('file:///snapshots/resource-snapshot.json', 'Resource Snapshot')]
377
+ )
378
+
379
+
380
+
381
+ print("\n✅ {{project.name}} Tilt ready!")
@@ -0,0 +1,192 @@
1
+ #!/usr/bin/env starlark
2
+ # =============================================================================
3
+ # 🎨 PROJECT SPEC - Stack-Based Configuration
4
+ # =============================================================================
5
+ #
6
+ # SYSTEM-GENERATED BY Flisk CLI - DO NOT EDIT
7
+ # Source: .tdk/project.json + Flisk Platform Standards v{{version}}
8
+ # Output: .tdk/.tdk-out/
9
+ # Regenerate with: flisk config regenerate
10
+ #
11
+ # 🏗️ ARCHITECTURE: Project → Stack → Service (PSR Model)
12
+ # Services are organized into stacks by release phase.
13
+ #
14
+ # 📖 USAGE:
15
+ # In your Tiltfile or topology module:
16
+ #
17
+ # load("{}/spec.master".format(PROJECT_ROOT),
18
+ # "RESOURCE_DEFAULTS",
19
+ # "PRE_ALPHA_RESOURCES",
20
+ # "ALPHA_RESOURCES",
21
+ # "BETA_RESOURCES",
22
+ # "OUT_OF_SCOPE_RESOURCES",
23
+ # "FOCUS_PRE_ALPHA",
24
+ # "FOCUS_ALPHA",
25
+ # "FOCUS_BETA",
26
+ # )
27
+ #
28
+ # =============================================================================
29
+
30
+ # =============================================================================
31
+ # 🎯 STACK DEFINITIONS
32
+ # =============================================================================
33
+ # Services are organized by release phase (stack) for progressive rollout.
34
+ # Each phase builds on the previous one.
35
+
36
+ # =============================================================================
37
+ # 🥚 PRE-ALPHA STACK (MVP - Default Startup)
38
+ # =============================================================================
39
+ # Core infrastructure services - minimal footprint for rapid development
40
+
41
+ PRE_ALPHA_RESOURCES = {
42
+ {{#each phases.pre_alpha.enabledStacks}}
43
+ "{{this}}": True, # {{lookup ../serviceDescriptions this}}
44
+ {{/each}}
45
+ }
46
+
47
+ # =============================================================================
48
+ # 🔬 ALPHA STACK (Core Business Services)
49
+ # =============================================================================
50
+ # Essential business services for alpha launch.
51
+
52
+ ALPHA_RESOURCES = {
53
+ {{#each phases.alpha.enabledStacks}}
54
+ "{{this}}": False, # {{lookup ../serviceDescriptions this}}
55
+ {{/each}}
56
+ }
57
+
58
+ # =============================================================================
59
+ # 🚀 BETA STACK (Extended Features)
60
+ # =============================================================================
61
+ # Additional services for beta release.
62
+
63
+ BETA_RESOURCES = {
64
+ {{#each phases.beta.enabledStacks}}
65
+ "{{this}}": False, # {{lookup ../serviceDescriptions this}}
66
+ {{/each}}
67
+ }
68
+
69
+ # =============================================================================
70
+ # 🚫 OUT OF SCOPE
71
+ # =============================================================================
72
+ # These services are excluded from discovery/loading entirely.
73
+ # To enable, remove from this list and add to appropriate stack above.
74
+
75
+ OUT_OF_SCOPE_RESOURCES = [
76
+ {{#each phases.out_of_scope.enabledStacks}}
77
+ "{{this}}", # {{lookup ../serviceDescriptions this}}
78
+ {{/each}}
79
+ ]
80
+
81
+ # =============================================================================
82
+ # 🔧 OPTIONAL INFRASTRUCTURE RESOURCES
83
+ # =============================================================================
84
+ # High-resource infrastructure - enable only when needed
85
+
86
+ OPTIONAL_INFRA_RESOURCES = {
87
+ {{#each optionalInfra}}
88
+ "{{@key}}": {{starlark this}}, # {{lookup ../infraDescriptions @key}}
89
+ {{/each}}
90
+ }
91
+
92
+ # =============================================================================
93
+ # 📦 COMBINED DEFAULTS (Used by Tilt System)
94
+ # =============================================================================
95
+ # Merges all service configs for easy access
96
+
97
+ DEFAULTS = {}
98
+ DEFAULTS.update(PRE_ALPHA_RESOURCES)
99
+ DEFAULTS.update(ALPHA_RESOURCES)
100
+ DEFAULTS.update(BETA_RESOURCES)
101
+ DEFAULTS.update(OPTIONAL_INFRA_RESOURCES)
102
+
103
+ # Alias for Tiltfile compatibility
104
+ RESOURCE_DEFAULTS = DEFAULTS
105
+
106
+ # =============================================================================
107
+ # 🎯 FOCUS FILTERS (for CLI --focus parameter)
108
+ # =============================================================================
109
+ # Predefined service groups for easy startup
110
+
111
+ FOCUS_PRE_ALPHA = list(PRE_ALPHA_RESOURCES.keys())
112
+ FOCUS_ALPHA = list(PRE_ALPHA_RESOURCES.keys()) + list(ALPHA_RESOURCES.keys())
113
+ FOCUS_BETA = list(PRE_ALPHA_RESOURCES.keys()) + list(ALPHA_RESOURCES.keys()) + list(BETA_RESOURCES.keys())
114
+
115
+ # =============================================================================
116
+ # 📁 PATH OVERRIDES
117
+ # =============================================================================
118
+
119
+ SPEC_OVERRIDE = struct(
120
+ DISCOVERY = struct(
121
+ RESOURCE_PATTERNS = {{starlarkArray discovery.paths}},
122
+ ),
123
+
124
+ OUTPUT = struct(
125
+ BASE_DIR = "./.tdk",
126
+ SNAPSHOT_FILE = "./.tdk/.tdk-out/snapshots/resource-snapshot.json",
127
+ AUTOGENERATED_FOLDER = ".autogenerated",
128
+ ),
129
+ )
130
+
131
+ # Top-level aliases for Tilt discovery compatibility
132
+ RESOURCE_PATTERNS = {{starlarkArray discovery.paths}}
133
+
134
+ # =============================================================================
135
+ # ⚙️ CONSTANTS OVERRIDES
136
+ # =============================================================================
137
+
138
+ CONSTANTS_OVERRIDE = struct(
139
+ SUPPORTED_FEATURES = [
140
+ "{{tech.messaging}}",
141
+ "{{tech.orm}}",
142
+ "{{tech.bundler}}-node",
143
+ ],
144
+ )
145
+
146
+ # =============================================================================
147
+ # 🎯 PROJECT-SPECIFIC METADATA
148
+ # =============================================================================
149
+
150
+ PROJECT = struct(
151
+ NAME = "{{project.name}}",
152
+ VERSION = "{{project.version}}",
153
+
154
+ PHASES = struct(
155
+ PRE_ALPHA = FOCUS_PRE_ALPHA,
156
+ ALPHA = FOCUS_ALPHA,
157
+ BETA = FOCUS_BETA,
158
+ ),
159
+
160
+ # Backward compatibility for older extension code that reads PROJECT.STACKS.
161
+ STACKS = struct(
162
+ PRE_ALPHA = FOCUS_PRE_ALPHA,
163
+ ALPHA = FOCUS_ALPHA,
164
+ BETA = FOCUS_BETA,
165
+ ),
166
+ )
167
+
168
+ # =============================================================================
169
+ # 📝 CHANGE LOG
170
+ # =============================================================================
171
+ # Generated by Flisk CLI v{{version}}
172
+ # =============================================================================
173
+
174
+ # =============================================================================
175
+ # 📦 EXPORTS
176
+ # =============================================================================
177
+
178
+ __all__ = [
179
+ "RESOURCE_DEFAULTS",
180
+ "DEFAULTS",
181
+ "PRE_ALPHA_RESOURCES",
182
+ "ALPHA_RESOURCES",
183
+ "BETA_RESOURCES",
184
+ "OUT_OF_SCOPE_RESOURCES",
185
+ "OPTIONAL_INFRA_RESOURCES",
186
+ "FOCUS_PRE_ALPHA",
187
+ "FOCUS_ALPHA",
188
+ "FOCUS_BETA",
189
+ "SPEC_OVERRIDE",
190
+ "CONSTANTS_OVERRIDE",
191
+ "PROJECT",
192
+ ]