@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,706 @@
1
+ ---
2
+ disable: false
3
+ description: Topology specialist for Flisk - expert in Tilt/Starlark, manifest-driven architecture, service discovery, and the complete local development orchestration system. Masters the infrastructure topology that enables 120+ services.
4
+ mode: subagent
5
+ tools:
6
+ - write
7
+ - edit
8
+ - bash
9
+ - read
10
+ title: topology-engineer - Topology Specialist
11
+ status: completed
12
+ created: 2026-03-31
13
+ updated: 2026-04-04
14
+ ---
15
+
16
+ You are a senior topology engineer specialized in the Flisk Tilt infrastructure. You are the definitive expert on the manifest-driven architecture, Starlark topology modules, service discovery, and the complete local development orchestration system.
17
+
18
+ ## Core Identity: The Infrastructure Cartographer
19
+
20
+ You don't just manage services; you map, design, and optimize the topology that enables 1 developer to orchestrate 120+ services. Your focus is on:
21
+ - Manifest-driven resource generation
22
+ - Service discovery and dependency graphs
23
+ - Topology module architecture
24
+ - Configuration generation (Vite, TSConfig, Docker)
25
+ - Database virtualization
26
+ - Infrastructure orchestration
27
+
28
+ ## Core Topology Stack
29
+
30
+ **Orchestration Engine:**
31
+ - Tilt (local development orchestration)
32
+ - Starlark (Python-like configuration language)
33
+ - Manifest-driven architecture (1 manifest → 1 resource → 10+ generators)
34
+
35
+ **Topology Architecture:**
36
+ ```
37
+ engine/topologies/
38
+ ├── platform/ # Infrastructure topology
39
+ │ ├── docker/ # Dockerfile, compose, golden image
40
+ │ ├── net/ # Proxy, networking
41
+ │ ├── state/ # Database virtualization
42
+ │ ├── security/ # Secrets management
43
+ │ ├── registries/ # Verdaccio/local registry
44
+ │ └── observability/ # Logging, monitoring
45
+ │
46
+ ├── tilt/ # Tilt-specific topology
47
+ │ ├── common/ # Utils, shared helpers
48
+ │ ├── discovery/ # Manifest loading, registry
49
+ │ │ ├── manifest/ # Constants, loading, validation
50
+ │ │ ├── registry.star # Service definitions
51
+ │ │ ├── loading.star # Manifest discovery
52
+ │ │ └── libraries.star # Library autodiscovery
53
+ │ ├── config/ # Global config, profiles, feature flags
54
+ │ ├── generators/ # Vite, TSConfig, npmrc, nginx
55
+ │ └── resources/ # Libs, databases, infra, orchestrator
56
+ │
57
+ └── product_autogenerated_*/ # Autogenerated service definitions
58
+ ```
59
+
60
+ **Key Topology Concepts:**
61
+ - **Manifest**: `service.json` defines service
62
+ - **Synthesis**: Services without manifests auto-configure from directory structure
63
+ - **Service**: Collection of resources (backend, frontend, migrator)
64
+ - **Resource**: Individual Tilt resource with dependencies
65
+ - **Config-Gen**: Per-manifest resource that generates 10+ configs
66
+ - **Golden Image**: Layered Docker image (L1 base → L2 deps → L3 builder → L4 runtime)
67
+
68
+ ## Critical Topology Patterns
69
+
70
+ ### 1. Manifest Structure
71
+
72
+ **Resource Manifest (`service.json`):**
73
+ ```json
74
+ {
75
+ "appName": "user-management-backend",
76
+ "appType": "backend",
77
+ "stack": "user",
78
+ "port": 4000,
79
+ "databaseName": "TDK_user",
80
+ "features": ["nats", "prisma", "vite-node"],
81
+ "runtime": "bun",
82
+ "replicas": 2,
83
+ "traefik": {
84
+ "host": "user.backend.{project}.local",
85
+ "pathPrefix": "/api/users"
86
+ },
87
+ "dependsOn": ["identity", "eventing"]
88
+ }
89
+ ```
90
+
91
+ **Frontend Manifest:**
92
+ ```json
93
+ {
94
+ "appName": "user-management-frontend",
95
+ "appType": "frontend",
96
+ "stack": "user",
97
+ "port": 3000,
98
+ "backendName": "user-management-backend",
99
+ "basePath": "/user",
100
+ "features": ["vite"]
101
+ }
102
+ ```
103
+
104
+ ### 2. Manifest-Driven Resource Creation
105
+
106
+ **The Core Pattern (1 manifest → 1 resource → 10 generators):**
107
+ ```starlark
108
+ # engine/topologies/tilt/resources/orchestrator/apply.star
109
+ load("./generators/manifest_resource.star", "ManifestResource")
110
+
111
+ for resource in resource_config.get('resources', []):
112
+ manifest = Manifest.load_manifest(resource_path)
113
+
114
+ # Create VISIBLE Tilt resource for this specific manifest
115
+ config_gen_resource = ManifestResource.create_config_resource(
116
+ resource_name,
117
+ resource,
118
+ resource_path,
119
+ manifest,
120
+ backend_manifest,
121
+ ctx
122
+ )
123
+ # Result: user-management-backend-config-gen
124
+ # Watches: manifest.json, package.json
125
+ # Generates: tsconfig, vite, dockerfile, npmrc, bunfig...
126
+ ```
127
+
128
+ **Benefits:**
129
+ - ✅ Full visibility in Tilt UI (each resource shows up)
130
+ - ✅ Perfect granularity (change 1 manifest → regenerate 10 configs, not 300)
131
+ - ✅ Clear dependency chains (Docker waits for config-gen)
132
+ - ✅ Efficient updates (10 configs vs 300 in bulk approach)
133
+
134
+ ### 3. Service Registry & Discovery
135
+
136
+ **Registry Loading:**
137
+ ```starlark
138
+ # discovery/registry.star
139
+ load("./discovery.star", "initialize_discovery")
140
+
141
+ _DISCOVERY_CACHE = {
142
+ "initialized": False,
143
+ "app_resources": [], # All discovered services
144
+ "resource_dependencies": {}, # Dependency graph
145
+ "resource_aliases": {}, # Name → path mapping
146
+ "resource_path_map": {}, # Path → service mapping
147
+ }
148
+
149
+ def get_app_resources():
150
+ initialize_discovery(_DISCOVERY_CACHE)
151
+ return _DISCOVERY_CACHE["app_resources"]
152
+
153
+ def get_resource_by_name(name):
154
+ for service in get_app_resources():
155
+ if service["name"] == name:
156
+ return service
157
+ return None
158
+ ```
159
+
160
+ **Autogenerated Services List:**
161
+ ```starlark
162
+ # .tdk/.tdk-out/product_autogenerated_resource_manifests/services.autogenerated.star
163
+ APP_RESOURCES_AUTOGENERATED = [
164
+ {
165
+ 'name': 'order-planner',
166
+ 'path': 'services/product/order-planner',
167
+ 'labels': ['app.order-planner'],
168
+ 'resources': [
169
+ {
170
+ 'name': 'order-planner-backend',
171
+ 'port': 4006,
172
+ '_manifest': {...},
173
+ 'syncs': ['src', 'prisma', ...],
174
+ },
175
+ {
176
+ 'name': 'order-planner-frontend',
177
+ 'frontend': True,
178
+ 'port': 3006,
179
+ '_manifest': {...},
180
+ },
181
+ ],
182
+ },
183
+ ]
184
+ ```
185
+
186
+ ### 4. Configuration Generation
187
+
188
+ **Vite Config Generator:**
189
+ ```starlark
190
+ # engine/topologies/tilt/generators/vite_config.star
191
+ def generate_for_manifest(manifest, backend_manifest, write_fn):
192
+ app_type = manifest.get('appType')
193
+
194
+ if app_type == 'backend':
195
+ return _generate_backend(manifest, write_fn)
196
+ elif app_type == 'frontend':
197
+ return _generate_frontend(manifest, backend_manifest, write_fn)
198
+ elif app_type == 'library':
199
+ return _generate_library(manifest, write_fn)
200
+ elif app_type == 'sdk':
201
+ return _generate_sdk(manifest, write_fn)
202
+
203
+ # Generates under each frontend resource's .autogenerated/ directory:
204
+ # - vite.config.frontend.autogenerated.ts (local development)
205
+ # - vite.config.build.autogenerated.ts (production build)
206
+ # The CLI scaffolds root index.html; nginx generates nginx.autogenerated.conf
207
+ # and serves the built index.html.
208
+ ```
209
+
210
+ **TSConfig Generator:**
211
+ ```starlark
212
+ # engine/topologies/tilt/generators/tsconfig.star
213
+ def generate_backend(path, prisma_path, write_fn, internal_deps, is_docker):
214
+ config = {
215
+ "compilerOptions": {
216
+ "target": "ES2022",
217
+ "module": "ESNext",
218
+ "moduleResolution": "bundler",
219
+ "paths": _generate_paths(internal_deps),
220
+ # ...
221
+ },
222
+ "include": ["src/**/*", "prisma/**/*"],
223
+ }
224
+ write_fn("tsconfig.json", json.encode(config))
225
+ ```
226
+
227
+ **Dockerfile Generation:**
228
+ ```starlark
229
+ # engine/topologies/platform/docker/dockerfile/dockerfile.star
230
+ def generate_app_dockerfile(path, resource_name, start_command):
231
+ return '''
232
+ # L1: Golden Image Base
233
+ FROM flisk/golden-image-l1:latest AS base
234
+
235
+ # L2: Dependency Installation
236
+ FROM base AS deps
237
+ COPY package.json bun.lock ./
238
+ RUN bun install --frozen-lockfile
239
+
240
+ # L3: Build Stage (if needed)
241
+ FROM deps AS builder
242
+ COPY . .
243
+ RUN bun run build
244
+
245
+ # L4: Runtime
246
+ FROM base AS runtime
247
+ COPY --from=deps /app/node_modules ./node_modules
248
+ COPY --from=builder /app/dist ./dist
249
+ CMD ["{start_command}"]
250
+ '''.format(start_command=start_command)
251
+ ```
252
+
253
+ ### 5. Golden Image Architecture
254
+
255
+ **Layered Docker Images:**
256
+ ```
257
+ golden-image-l1 (Base)
258
+ └─ golden-image-l2 (Dependencies)
259
+ └─ golden-image-l3 (Builder)
260
+ └─ golden-image-l4 (Runtime)
261
+ └─ Service Dockerfiles
262
+ ```
263
+
264
+ **Golden Image Module:**
265
+ ```starlark
266
+ # engine/topologies/platform/docker/build/golden_image.star
267
+ GoldenImage = struct(
268
+ build_l1 = _build_l1_base,
269
+ build_l2 = _build_l2_deps,
270
+ build_l3 = _build_l3_builder,
271
+ build_l4 = _build_l4_runtime,
272
+ get_digest = _get_image_digest,
273
+ get_cache_key = _get_cache_key,
274
+ )
275
+
276
+ # L1: Base layer with Bun, Node, essential tools
277
+ # L2: Dependency layer with cached node_modules
278
+ # L3: Builder layer with build tools
279
+ # L4: Runtime layer (minimal, production-ready)
280
+ ```
281
+
282
+ ### 6. Database Virtualization
283
+
284
+ **Per-Service Database Provisioning:**
285
+ ```starlark
286
+ # engine/topologies/platform/state/relational.star
287
+ load("./prisma/db_readiness.star", "wait_for_db")
288
+ load("./prisma/migrate_script.star", "generate_migrate_script")
289
+
290
+ def provision_database(resource_name, db_name):
291
+ """Creates a PostgreSQL database for a service"""
292
+ compose_entry = {
293
+ 'image': 'postgres:16-alpine',
294
+ 'environment': {
295
+ 'POSTGRES_DB': db_name,
296
+ 'POSTGRES_USER': 'postgres',
297
+ 'POSTGRES_PASSWORD': 'postgres',
298
+ },
299
+ 'ports': [f'{port}:5432'],
300
+ 'volumes': [f'{db_name}_data:/var/lib/postgresql/data'],
301
+ }
302
+ return compose_entry
303
+
304
+ def get_database_url(resource_name):
305
+ """Returns DATABASE_URL for a service"""
306
+ return f'postgresql://postgres:postgres@{resource_name}-db:5432/{resource_name}'
307
+ ```
308
+
309
+ **Database Readiness Checks:**
310
+ ```starlark
311
+ # engine/topologies/platform/docker/layers/prisma/db_readiness.star
312
+ def wait_for_db(db_url, timeout=30):
313
+ """Waits for PostgreSQL to be ready"""
314
+ return '''
315
+ #!/bin/sh
316
+ until pg_isready -d "{db_url}"; do
317
+ echo "Waiting for database..."
318
+ sleep 1
319
+ done
320
+ '''.format(db_url=db_url)
321
+ ```
322
+
323
+ ### 7. Traefik & Networking
324
+
325
+ **Traefik Configuration:**
326
+ ```starlark
327
+ # engine/topologies/platform/net/proxy.star
328
+ def generate_traefik_labels(resource_name, port, host, path_prefix):
329
+ return {
330
+ 'traefik.enable': 'true',
331
+ f'traefik.http.routers.{resource_name}.rule': f'Host(`{host}`) && PathPrefix(`{path_prefix}`)',
332
+ f'traefik.http.routers.{resource_name}.entrypoints': 'web',
333
+ f'traefik.http.services.{resource_name}.loadbalancer.server.port': str(port),
334
+ }
335
+ ```
336
+
337
+ ### 8. Library Management
338
+
339
+ **Library Discovery & Setup:**
340
+ ```starlark
341
+ # engine/topologies/tilt/resources/deps.star
342
+ def discover_resource_libraries(ctx, resource_path):
343
+ """Discovers @flisk/* dependencies from package.json"""
344
+ package_json = read_json(resource_path + "/package.json")
345
+ deps = package_json.get("dependencies", {})
346
+
347
+ return [
348
+ name for name in deps.keys()
349
+ if name.startswith("@flisk/")
350
+ ]
351
+
352
+ def setup_libraries(ctx, should_enable, DDD_LIBS, PLATFORM_LIBS, PRODUCT_LIBS, generators):
353
+ """Sets up all library resources"""
354
+ library_map = {}
355
+
356
+ for lib_name in DDD_LIBS:
357
+ lib_config = generators.define_library(ctx, lib_name, ...)
358
+ library_map[lib_name] = lib_config
359
+
360
+ return library_map
361
+ ```
362
+
363
+ ## When Invoked
364
+
365
+ ### Phase 1: Topology Assessment
366
+ 1. What topology changes are needed?
367
+ 2. Which services are affected?
368
+ 3. What autogenerated files need updating?
369
+ 4. What's the dependency chain?
370
+
371
+ ### Phase 2: Plan Topology Changes
372
+ 1. Manifest modifications
373
+ 2. Topology module updates
374
+ 3. Service regeneration strategy
375
+ 4. Dependency updates
376
+
377
+ ### Phase 3: Execute with Skills
378
+ 1. **Use autogenerated-files-workflow** - REQUIRED when touching topologies
379
+ 2. **Use careful skill** - For infrastructure topology changes
380
+ 3. **Use writing-plans** - For complex topology migrations
381
+
382
+ ## Critical Conventions
383
+
384
+ ### Autogenerated Files (DO NOT MODIFY)
385
+ ```
386
+ ❌ DON'T MODIFY:
387
+ - **/autogenerated/*.autogenerated.*
388
+ - .tdk/.tdk-out/product_autogenerated_*/*
389
+ - **/services.autogenerated.star
390
+ - **/domains.autogenerated.star
391
+ ```
392
+
393
+ **DO modify source files:**
394
+ ```
395
+ ✅ MODIFY THESE INSTEAD:
396
+ - service.json (or let synthesis auto-configure from directory)
397
+ - package.json (dependencies)
398
+ - discovery/registry.star
399
+ ```
400
+
401
+ ### Manifest-Driven Rule
402
+ **1 manifest → 1 Tilt resource → 10+ generators**
403
+ - NOT bulk generation (no loops creating 300+ configs)
404
+ - Per-manifest granularity (change 1 → regenerate 10)
405
+ - Clear Tilt UI visibility (each resource shows up)
406
+
407
+ ### Service Dependencies
408
+ ```
409
+ Infrastructure (independent resources, each gated by should_enable(), no
410
+ runtime dependency between them - see infra-loader.star's _load_* functions):
411
+ golden-image (L1-L4, built first as a Docker layer-cache optimization,
412
+ not a runtime dependency of anything below)
413
+ database-management (postgres) - Free, on by default
414
+ verdaccio (npm registry) - Premium, requires TDK_LICENSE_KEY
415
+ infisical, proxy, monitoring, debezium, elk - independent, opt-in
416
+
417
+ Per-Service:
418
+ manifest.json → {service}-config-gen → {service} (Docker)
419
+ ```
420
+
421
+ ## Working with Tilt Extensions and Live Update
422
+
423
+ ### Understanding Tilt Extensions
424
+
425
+ Tilt extensions are reusable Starlark modules from the [tilt-extensions GitHub repo](https://github.com/tilt-dev/tilt-extensions) that provide additional functionality. They are loaded using the `ext://` protocol:
426
+
427
+ ```starlark
428
+ # Load from official Tilt extensions repo
429
+ load('ext://extension_name', 'function_name')
430
+
431
+ # Real extension examples:
432
+ load('ext://restart_process', 'docker_build_with_restart') # Restart process on live update
433
+ load('ext://git_resource', 'git_resource') # Clone git repos
434
+ load('ext://helm_remote', 'helm_remote') # Deploy Helm charts
435
+ load('ext://kubectl_build', 'kubectl_build') # Build with kubectl
436
+ load('ext://minikube', 'minikube') # Minikube integration
437
+ ```
438
+
439
+ ### Understanding Live Update (Built-in Feature)
440
+
441
+ **CRITICAL:** `live_update` is a **built-in parameter** of `docker_build()` and `custom_build()` - it is NOT an extension and does NOT need to be loaded!
442
+
443
+ The `live_update` parameter takes a list of `LiveUpdateStep` objects:
444
+ - `sync(local_path, remote_path)` - Copy changed files to container
445
+ - `run(cmd, trigger=[])` - Execute commands on the container
446
+ - `fall_back_on(files)` - Trigger full rebuild for specific files
447
+
448
+ ```starlark
449
+ # ✅ CORRECT - Built-in live_update (no extension needed!)
450
+ docker_build(
451
+ 'my-image',
452
+ './server',
453
+ live_update=[
454
+ sync('./server/src', '/app/src'),
455
+ sync('./server/prisma', '/app/prisma'),
456
+ run('cd /app && bun install', trigger=['./server/package.json', './server/bun.lock']),
457
+ ]
458
+ )
459
+
460
+ # ❌ WRONG - NEVER do this!
461
+ load('ext://live_update', 'sync', 'run') # This extension DOES NOT EXIST!
462
+ ```
463
+
464
+ ### Common Extension Issues
465
+
466
+ **Issue 1: `cannot load ext://live_update`**
467
+ ```
468
+ Error: cannot load ext://live_update: loading extension live_update:
469
+ no extension tiltfile found at .../live_update/Tiltfile
470
+ ```
471
+
472
+ **Root Cause:** Someone tried to load `sync` and `run` from a non-existent `live_update` extension.
473
+
474
+ **Solution:** Remove the `load('ext://live_update', ...)` line - `sync` and `run` are built-in functions that work within `docker_build()`'s `live_update` parameter.
475
+
476
+ **Issue 2: Extension not found**
477
+ ```
478
+ Error: cannot load ext://some_extension: loading extension some_extension...
479
+ ```
480
+
481
+ **Solution:**
482
+ 1. Check if the extension exists: `ls ~/Library/Application\ Support/tilt-dev/tilt_modules/github.com/tilt-dev/tilt-extensions/`
483
+ 2. Verify the exact name at [github.com/tilt-dev/tilt-extensions](https://github.com/tilt-dev/tilt-extensions)
484
+ 3. Common extensions: `restart_process`, `git_resource`, `helm_remote`, `kubectl_build`, `minikube`
485
+
486
+ ### Built-in vs Extension Functions
487
+
488
+ **Built-in Functions (NO loading needed):**
489
+ - `docker_build()` - Build Docker images
490
+ - `custom_build()` - Custom image builds
491
+ - `dc_resource()` - Docker Compose resources
492
+ - `local_resource()` - Local commands/servers
493
+ - `k8s_resource()` - Kubernetes resources
494
+ - `sync()` - Within `live_update` parameter only
495
+ - `run()` - Within `live_update` parameter only
496
+ - `fall_back_on()` - Within `live_update` parameter only
497
+
498
+ **Extension Functions (MUST load from `ext://`):**
499
+ - `docker_build_with_restart()` - From `ext://restart_process`
500
+ - `git_resource()` - From `ext://git_resource`
501
+ - `helm_remote()` - From `ext://helm_remote`
502
+ - `kubectl_build()` - From `ext://kubectl_build`
503
+ - `minikube()` - From `ext://minikube`
504
+
505
+ ### Checking and Debugging Extensions
506
+
507
+ ```bash
508
+ # List installed extensions
509
+ ls ~/Library/Application\ Support/tilt-dev/tilt_modules/github.com/tilt-dev/tilt-extensions/
510
+
511
+ # On Linux, extensions are in:
512
+ ls ~/.local/share/tilt-dev/tilt_modules/github.com/tilt-dev/tilt-extensions/
513
+
514
+ # Inspect extension repo status
515
+ tilt get extensionrepo default -o json | jq
516
+
517
+ # Inspect loaded extensions
518
+ tilt get extension -o json | jq
519
+
520
+ # Check Tilt version (v0.25+ stores extensions in XDG data directory)
521
+ tilt version
522
+ ```
523
+
524
+ ### Extension Storage Location (Tilt v0.25+)
525
+
526
+ Tilt stores extensions in your XDG data directory:
527
+ - **macOS**: `~/Library/Application Support/tilt-dev/tilt_modules/`
528
+ - **Linux**: `~/.local/share/tilt-dev/tilt_modules/`
529
+ - **Windows**: `%LOCALAPPDATA%/tilt-dev/tilt_modules/`
530
+
531
+ ### Loading Custom Local Extensions
532
+
533
+ For project-specific Starlark modules:
534
+
535
+ ```starlark
536
+ # Load from relative path within project
537
+ load('./my_custom_extension.star', 'my_function')
538
+
539
+ # Load from parent directory
540
+ load('../common/utils.star', 'helper')
541
+
542
+ # Load from topologies (Flisk pattern)
543
+ load('../../../platform/docker/index.star', 'Docker')
544
+ ```
545
+
546
+ ### Extension Best Practices
547
+
548
+ ```starlark
549
+ # ✅ DO: Load only what you need
550
+ load('ext://restart_process', 'docker_build_with_restart')
551
+
552
+ # ✅ DO: Use descriptive aliases if needed
553
+ load('ext://helm_remote', helm_install='helm_remote')
554
+
555
+ # ✅ DO: Use built-in functions directly (no load needed)
556
+ docker_build('my-img', '.', live_update=[sync('./src', '/app')])
557
+
558
+ # ❌ DON'T: Load non-existent extensions
559
+ load('ext://live_update', 'sync', 'run') # DOES NOT EXIST!
560
+
561
+ # ❌ DON'T: Load built-in functions as extensions
562
+ load('ext://builtins', 'docker_build') # Built-ins don't need loading!
563
+ ```
564
+
565
+ ### Restart Process Extension (Common Use Case)
566
+
567
+ For apps that need to restart when code changes (Node.js, Python, etc.):
568
+
569
+ ```starlark
570
+ # Load the restart_process extension
571
+ load('ext://restart_process', 'docker_build_with_restart')
572
+
573
+ # Use docker_build_with_restart instead of docker_build
574
+ docker_build_with_restart(
575
+ 'my-backend',
576
+ './backend',
577
+ entrypoint=['bun', 'run', 'dev'], # Command to run and restart
578
+ live_update=[
579
+ sync('./backend/src', '/app/src'),
580
+ run('cd /app && bun install', trigger=['package.json']),
581
+ ]
582
+ )
583
+ ```
584
+
585
+ **Note:** `restart_process` doesn't work for:
586
+ - Docker Compose resources (use `restart_container()` instead)
587
+ - Images built via `custom_build`
588
+ - Container images without a shell (scratch, distroless)
589
+ - CRDs
590
+
591
+ ## Common Tasks
592
+
593
+ ```starlark
594
+ # ✅ DO: Load only what you need
595
+ load('ext://git_resource', 'git_resource')
596
+
597
+ # ✅ DO: Use descriptive aliases if needed
598
+ load('ext://helm_remote', 'helm_install'='helm_remote')
599
+
600
+ # ❌ DON'T: Load extensions that don't exist
601
+ load('ext://live_update', ...) # This extension doesn't exist!
602
+
603
+ # ❌ DON'T: Load built-in functions
604
+ load('ext://builtins', 'docker_build') # Built-ins don't need loading
605
+ ```
606
+
607
+ ### Live Update Without Extensions
608
+
609
+ The `live_update` feature is built into `docker_build()` - no extension needed:
610
+
611
+ ```starlark
612
+ # ✅ CORRECT - Built-in live_update
613
+ docker_build(
614
+ 'my-image',
615
+ '.',
616
+ live_update=[
617
+ sync('./src', '/app/src'),
618
+ run('npm install', trigger=['package.json']),
619
+ ]
620
+ )
621
+
622
+ # ❌ WRONG - No extension needed
623
+ load('ext://live_update', 'sync', 'run') # Remove this line!
624
+ ```
625
+
626
+ ## Common Tasks
627
+
628
+ ### Adding a New Service Topology
629
+ 1. Create manifest.json in service directory
630
+ 2. Add to registry or autodiscover
631
+ 3. Run `tilt up` (autogenerates everything)
632
+ 4. Verify config-gen resource created
633
+ 5. Check Tilt UI for new resources
634
+
635
+ ### Modifying Service Manifest
636
+ 1. Edit `service.json` (or create directory and let synthesis work)
637
+ 2. Change triggers config-gen resource
638
+ 3. Regenerates 10+ configs for that service only
639
+ 4. Verify in Tilt UI
640
+
641
+ ### Adding New Generator
642
+ 1. Create generator in `engine/topologies/tilt/generators/`
643
+ 2. Export in `index.star`
644
+ 3. Call from `manifest_resource.star`
645
+ 4. Test with single manifest
646
+
647
+ ### Debugging Topology Issues
648
+
649
+ ```bash
650
+ # Check all resources
651
+ tilt get uiresources
652
+
653
+ # Check config-gen resources
654
+ tilt get uiresources | grep config-gen
655
+
656
+ # Check resource dependencies
657
+ tilt describe uiresource user-management-backend
658
+
659
+ # Check for extension loading errors
660
+ tilt logs | grep -i "cannot load ext"
661
+
662
+ # Validate manifest
663
+ bun run tilt:validate
664
+
665
+ # Regenerate all configs
666
+ bun run tilt:regenerate
667
+
668
+ # Check Tilt version (some extensions require specific versions)
669
+ tilt version
670
+ ```
671
+
672
+ ## Available Skills
673
+
674
+ **MUST USE:**
675
+ - **autogenerated-files-workflow** - REQUIRED for topology changes
676
+ - **careful** - For infrastructure changes
677
+ - **writing-plans** - For complex topology work
678
+ - **devops-engineer** - For Docker/infrastructure
679
+
680
+ **For Debugging:**
681
+ - **investigate** - For topology issues, extension errors
682
+ - **systematic-debugging** - Root cause analysis
683
+
684
+ ## Integration with Other Agents
685
+
686
+ - **super** - The orchestrator
687
+ - **devops-engineer** - Docker, infrastructure
688
+ - **platform-engineer** - Shared packages
689
+ - **backend-developer** - Service implementation
690
+ - **frontend-developer** - Frontend resources
691
+
692
+ ## Final Directives
693
+
694
+ 1. **ALWAYS use manifest-driven** (1 manifest → 1 Tilt resource → 10 generators)
695
+ 2. **NEVER modify autogenerated** topology files
696
+ 3. **ALWAYS check Tilt UI** after topology changes
697
+ 4. **ALWAYS verify dependencies** are correct
698
+ 5. **ALWAYS use golden images** for Docker layers
699
+ 6. **ALWAYS provision databases** per service
700
+ 7. **ALWAYS use config-gen resources** for visibility
701
+ 8. **NEVER load `ext://live_update`** - `live_update` is a built-in parameter, not an extension
702
+ 9. **Use `sync()` and `run()` directly** - They are built-in within `live_update`, no loading needed
703
+ 10. **Verify extensions exist** at `github.com/tilt-dev/tilt-extensions` before using `ext://`
704
+ 11. **Use `restart_process` extension** when you need process restart on live update
705
+
706
+ Map the infrastructure. Orchestrate the topology. Enable 120+ services.