@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,429 @@
1
+ #!/usr/bin/env starlark
2
+ # Copyright (c) 2026 Flisk contributors
3
+ # SPDX-License-Identifier: MIT
4
+ # =============================================================================
5
+ # 🔍 TILT DISCOVERY CONFIGURATION - MASTER CONFIG
6
+ # =============================================================================
7
+ #
8
+ # ⚠️ DEVELOPER NOTICE: This is a SYSTEM CONFIG file.
9
+ # For human-friendly docs, see: TILT_CONFIG.md
10
+ #
11
+ # This file defines service discovery settings for the Flisk platform.
12
+ # Discovery automatically finds and registers services from the filesystem.
13
+ #
14
+ # 📖 TO EDIT DISCOVERY SETTINGS:
15
+ # Edit: TILT_DISCOVERY.star (this file) for platform-wide discovery behavior
16
+ #
17
+ # 🔗 ARCHITECTURE:
18
+ # - TILT_TECH_STACK.star: Technology choices
19
+ # - TILT_RESOURCE_DEFAULTS.star: Service defaults (ports, health checks)
20
+ # - TILT_DISCOVERY.star: Discovery-specific settings (scan intervals, synthesis)
21
+ # - spec.master: Project-specific service lists
22
+ #
23
+ # =============================================================================
24
+
25
+ # =============================================================================
26
+ # DISCOVERY SCAN CONFIGURATION
27
+ # =============================================================================
28
+ # How and when the discovery daemon scans for services.
29
+
30
+
31
+ def get_discovery_scan_config():
32
+ """Return discovery scan configuration.
33
+
34
+ Returns:
35
+ dict: Scan behavior settings
36
+ """
37
+ return {
38
+ # Filesystem scan interval in seconds (for auto-discovery daemon)
39
+ "scan_interval_seconds": 5,
40
+
41
+ # Maximum scan timeout in milliseconds
42
+ "max_scan_timeout_ms": 5000,
43
+
44
+ # Initial scan delay on startup (allows services to stabilize)
45
+ "initial_scan_delay_seconds": 2,
46
+
47
+ # Debounce delay for filesystem changes (prevents excessive rescans)
48
+ "scan_debounce_ms": 100,
49
+ }
50
+
51
+
52
+ # =============================================================================
53
+ # MANIFEST DISCOVERY CONFIGURATION
54
+ # =============================================================================
55
+ # Settings for manifest file discovery and synthesis.
56
+
57
+
58
+ def get_manifest_discovery_config():
59
+ """Return manifest discovery configuration.
60
+
61
+ Returns:
62
+ dict: Manifest discovery settings
63
+ """
64
+ return {
65
+ # Maximum manifests per root before warning
66
+ "max_manifests_per_root": 50,
67
+
68
+ # Maximum manifest file size in bytes (1MB)
69
+ "max_manifest_size_bytes": 1048576,
70
+
71
+ # Manifest filename patterns to search for
72
+ "manifest_filenames": [
73
+ "service.json",
74
+ ],
75
+
76
+ # Enable synthesis for services without manifests
77
+ "synthesis_enabled": True,
78
+
79
+ # Synthesis port defaults by service type
80
+ "synthesis_port_defaults": {
81
+ "frontend": 3000,
82
+ "backend": 4000,
83
+ "sdk": 5175,
84
+ "migrator": 4000,
85
+ "worker": 4000,
86
+ "library": None, # Libraries don't have ports
87
+ },
88
+
89
+ # Service type detection patterns (suffixes)
90
+ "resource_type_patterns": {
91
+ "frontend": "-frontend",
92
+ "backend": "-backend",
93
+ "sdk": "-sdk",
94
+ "migrator": "-migrator",
95
+ "worker": "-worker",
96
+ "library": "-library",
97
+ },
98
+ }
99
+
100
+
101
+ # =============================================================================
102
+ # SERVICE SYNTHESIS CONFIGURATION
103
+ # =============================================================================
104
+ # Auto-compute settings for manifest synthesis.
105
+
106
+
107
+ def get_synthesis_config():
108
+ """Return resource synthesis configuration.
109
+
110
+ Returns:
111
+ dict: Auto-compute settings for synthesized manifests
112
+ """
113
+ return {
114
+ # Enable auto-computation of ports from service type + domain
115
+ "auto_compute_ports": True,
116
+
117
+ # Enable auto-computation of Traefik paths from domain
118
+ "auto_compute_traefik": True,
119
+
120
+ # Enable auto-computation of database names from domain + service
121
+ "auto_compute_database_name": True,
122
+
123
+ # Enable auto-computation of backendName for frontends
124
+ "auto_compute_backend_name": True,
125
+
126
+ # Enable auto-computation of basePath for frontends
127
+ "auto_compute_base_path": True,
128
+
129
+ # Database naming pattern: {project}_{domain}_{resource_function}
130
+ # Example: services/product/users/user-management-backend -> {project}_user_management
131
+ "database_name_pattern": "TDK_{domain}_{function}",
132
+
133
+ # Backend name pattern for frontends: {domain}-management-backend
134
+ "backend_name_pattern": "{domain}-management-backend",
135
+
136
+ # Base path pattern for frontends: /{domain}s
137
+ "base_path_pattern": "/{domain}s",
138
+
139
+ # Traefik path prefix pattern for backends: /api/{domain}s
140
+ "traefik_path_pattern": "/api/{domain}s",
141
+ }
142
+
143
+
144
+ # =============================================================================
145
+ # DOMAIN CONFIGURATION
146
+ # =============================================================================
147
+ # Business stacks are defined in .tdk/project.json per project.
148
+ # This function returns an empty list - stacks are discovered dynamically.
149
+
150
+
151
+ def get_valid_stacks():
152
+ """Return list of valid business stacks from project config.
153
+
154
+ Returns:
155
+ list: Valid stack names (loaded from .tdk/project.json)
156
+ """
157
+ # Stacks are project-specific and loaded from project.json
158
+ # Return empty list - actual stacks discovered from filesystem
159
+ return []
160
+
161
+
162
+ # =============================================================================
163
+ # SERVICE TYPE CONFIGURATION
164
+ # =============================================================================
165
+ # Valid service types for the platform.
166
+
167
+
168
+ def get_valid_resource_types():
169
+ """Return list of valid resource types.
170
+
171
+ Returns:
172
+ list: Valid resource type names
173
+ """
174
+ return [
175
+ "frontend",
176
+ "backend",
177
+ "library",
178
+ "migrator",
179
+ "sdk",
180
+ "worker",
181
+ ]
182
+
183
+
184
+ # =============================================================================
185
+ # RESOURCE-LEVEL FEATURES CONFIGURATION
186
+ # =============================================================================
187
+ # Valid values for a single resource's `features: []` array in its
188
+ # service.json (code generators plus per-resource infra capabilities).
189
+ # Distinct from project-level features (cli/src/utils/project-features.ts),
190
+ # which are infra/optional services enabled project-wide via project.json.
191
+
192
+
193
+ def get_valid_resource_features():
194
+ """Return list of valid resource-level feature flags.
195
+
196
+ Returns:
197
+ list: Valid feature flag names for a resource's `features: []` array
198
+ """
199
+ return [
200
+ # Resource-level features (code generators)
201
+ "api-client",
202
+ "env-config",
203
+ "api-index",
204
+ "prisma",
205
+ # Infrastructure features
206
+ "nats",
207
+ "redis",
208
+ "infisical",
209
+ "vitest",
210
+ "traefik",
211
+ "websocket",
212
+ "graphql",
213
+ "grpc",
214
+ "vite-node",
215
+ "maintenance",
216
+ # Premium (requires TDK_LICENSE_KEY) - see generate_backend_path_aliases()
217
+ # in engine/topologies/tilt/generators/vite/helpers.star
218
+ "ddd",
219
+ ]
220
+
221
+
222
+ # =============================================================================
223
+ # PORT CONFIGURATION
224
+ # =============================================================================
225
+ # Port range definitions for validation.
226
+
227
+
228
+ def get_port_ranges():
229
+ """Return port ranges by resource type.
230
+
231
+ Returns:
232
+ dict: Port range definitions
233
+ """
234
+ return {
235
+ "frontend": {"min": 3000, "max": 5999},
236
+ "backend": {"min": 4000, "max": 5999},
237
+ "worker": {"min": 4000, "max": 6999},
238
+ "migrator": {"min": 7000, "max": 7999},
239
+ "sdk": {"min": 3000, "max": 9999}, # SDKs don't have strict rules
240
+ "library": {"min": 3000, "max": 9999}, # Libraries don't have ports
241
+ }
242
+
243
+
244
+ # =============================================================================
245
+ # DEPENDENCY RESOLUTION CONFIGURATION
246
+ # =============================================================================
247
+ # Settings for resolving service dependencies.
248
+
249
+
250
+ def get_dependency_resolution_config():
251
+ """Return dependency resolution configuration.
252
+
253
+ Returns:
254
+ dict: Dependency resolution settings
255
+ """
256
+ return {
257
+ # Maximum number of dependencies per service
258
+ "max_dependencies": 10,
259
+
260
+ # Maximum depth for dependency graph traversal
261
+ "max_dependency_depth": 5,
262
+
263
+ # Enable circular dependency detection
264
+ "detect_circular_dependencies": True,
265
+
266
+ # Library dependency patterns (package.json prefixes)
267
+ "library_dependency_prefixes": [
268
+ "@flisk/",
269
+ ],
270
+
271
+ # Default internal dependencies for service types
272
+ "default_dependencies": {
273
+ "backend": [], # No default deps, explicit only
274
+ "frontend": [], # Backend deps computed from backendName
275
+ "migrator": [],
276
+ "worker": ["nats"],
277
+ },
278
+ }
279
+
280
+
281
+ # =============================================================================
282
+ # DISCOVERY PATHS CONFIGURATION
283
+ # =============================================================================
284
+ # Where to search for services.
285
+
286
+
287
+ def get_discovery_paths():
288
+ """Return paths to scan for resources.
289
+
290
+ Returns:
291
+ list: Directory paths to scan
292
+ """
293
+ return [
294
+ "services/product",
295
+ "services/platform",
296
+ "shared-product-engineering",
297
+ "shared-platform-engineering",
298
+ "shared-ddd-layers",
299
+ ]
300
+
301
+
302
+ # =============================================================================
303
+ # COMPLETE DISCOVERY CONFIGURATION
304
+ # =============================================================================
305
+
306
+
307
+ def get_discovery_defaults():
308
+ """Return complete discovery configuration.
309
+
310
+ Returns:
311
+ dict: All discovery settings
312
+ """
313
+ return {
314
+ "scan": get_discovery_scan_config(),
315
+ "manifest": get_manifest_discovery_config(),
316
+ "synthesis": get_synthesis_config(),
317
+ "stacks": get_valid_stacks(),
318
+ "resource_types": get_valid_resource_types(),
319
+ "features": get_valid_resource_features(),
320
+ "port_ranges": get_port_ranges(),
321
+ "dependencies": get_dependency_resolution_config(),
322
+ "paths": get_discovery_paths(),
323
+ }
324
+
325
+
326
+ # =============================================================================
327
+ # FEATURE FLAGS CONFIGURATION
328
+ # =============================================================================
329
+ # Feature flags for gradual rollout of new functionality.
330
+
331
+
332
+ def get_feature_flags():
333
+ """Return feature flags for gradual rollout.
334
+
335
+ These flags control the activation of new infrastructure features,
336
+ allowing for safe, gradual rollout across the platform.
337
+
338
+ Returns:
339
+ dict: Feature flag states
340
+ """
341
+ return {
342
+ # Enable new auto-computation defaults (ports, database names, etc.)
343
+ "auto_compute_defaults": True,
344
+
345
+ # Enable override detection and warnings
346
+ "override_detection": True,
347
+
348
+ # Enable synthesis-by-default for new services
349
+ "synthesis_by_default": True,
350
+
351
+ # Enable hardcoded value detection in validation
352
+ "hardcoded_value_detection": True,
353
+
354
+ # Enable CLI auto-fix capabilities
355
+ "cli_auto_fix": True,
356
+
357
+ # Enable strict validation mode (treats warnings as errors)
358
+ "strict_validation": False,
359
+
360
+ # Enable new port allocation strategy
361
+ "new_port_allocation": True,
362
+
363
+ # Enable master config validation
364
+ "master_config_validation": True,
365
+
366
+ # Migration mode - enables transitional compatibility
367
+ "migration_mode": False,
368
+
369
+ # Rollback plan available
370
+ "rollback_enabled": True,
371
+ }
372
+
373
+
374
+ # =============================================================================
375
+ # MODULE EXPORTS
376
+ # =============================================================================
377
+
378
+ # Configuration exports
379
+ DISCOVERY_SCAN_CONFIG = get_discovery_scan_config()
380
+ MANIFEST_DISCOVERY_CONFIG = get_manifest_discovery_config()
381
+ SYNTHESIS_CONFIG = get_synthesis_config()
382
+ VALID_STACKS = get_valid_stacks()
383
+ VALID_RESOURCE_TYPES = get_valid_resource_types()
384
+ VALID_RESOURCE_FEATURES = get_valid_resource_features()
385
+ PORT_RANGES = get_port_ranges()
386
+ DEPENDENCY_CONFIG = get_dependency_resolution_config()
387
+ DISCOVERY_PATHS = get_discovery_paths()
388
+ DISCOVERY_DEFAULTS = get_discovery_defaults()
389
+ FEATURE_FLAGS = get_feature_flags()
390
+
391
+ # Individual constants for convenience
392
+ MAX_MANIFESTS_PER_ROOT = MANIFEST_DISCOVERY_CONFIG["max_manifests_per_root"]
393
+ SCAN_INTERVAL_SECONDS = DISCOVERY_SCAN_CONFIG["scan_interval_seconds"]
394
+ MAX_SCAN_TIMEOUT_MS = DISCOVERY_SCAN_CONFIG["max_scan_timeout_ms"]
395
+ SYNTHESIS_ENABLED = MANIFEST_DISCOVERY_CONFIG["synthesis_enabled"]
396
+ MAX_DEPENDENCIES = DEPENDENCY_CONFIG["max_dependencies"]
397
+
398
+ __all__ = [
399
+ # Functions
400
+ "get_discovery_scan_config",
401
+ "get_manifest_discovery_config",
402
+ "get_synthesis_config",
403
+ "get_valid_stacks",
404
+ "get_valid_resource_types",
405
+ "get_valid_resource_features",
406
+ "get_port_ranges",
407
+ "get_dependency_resolution_config",
408
+ "get_discovery_paths",
409
+ "get_discovery_defaults",
410
+ "get_feature_flags",
411
+
412
+ # Constants
413
+ "DISCOVERY_SCAN_CONFIG",
414
+ "MANIFEST_DISCOVERY_CONFIG",
415
+ "SYNTHESIS_CONFIG",
416
+ "VALID_STACKS",
417
+ "VALID_RESOURCE_TYPES",
418
+ "VALID_RESOURCE_FEATURES",
419
+ "PORT_RANGES",
420
+ "DEPENDENCY_CONFIG",
421
+ "DISCOVERY_PATHS",
422
+ "DISCOVERY_DEFAULTS",
423
+ "FEATURE_FLAGS",
424
+ "MAX_MANIFESTS_PER_ROOT",
425
+ "SCAN_INTERVAL_SECONDS",
426
+ "MAX_SCAN_TIMEOUT_MS",
427
+ "SYNTHESIS_ENABLED",
428
+ "MAX_DEPENDENCIES",
429
+ ]
@@ -0,0 +1,58 @@
1
+ # =============================================================================
2
+ # 🎯 FLISK-DISCOVERY - Service Discovery Plugin
3
+ # =============================================================================
4
+ # This is the Tiltfile entry point for the tdk-discovery repo.
5
+ # It exports manifest loading, registry, and auto-discovery daemon.
6
+ #
7
+ # Usage:
8
+ # v1alpha1.extension_repo(name='tdk-discovery', url='https://github.com/tdk-landscape/tdk-discovery')
9
+ # load('ext://tdk-discovery', 'get_discovery_path', 'run_daemon', ...)
10
+ # =============================================================================
11
+
12
+ # Constants
13
+ load('./constants.star',
14
+ _MANIFEST_FILENAME='MANIFEST_FILENAME',
15
+ _MANIFEST_FILENAME_YAML='MANIFEST_FILENAME_YAML',
16
+ _RESOURCES_ROOT='RESOURCES_ROOT',
17
+ _DISCOVERY_SCAN_ROOTS='DISCOVERY_SCAN_ROOTS',
18
+ _SCAN_ROOT_PATTERNS='SCAN_ROOT_PATTERNS'
19
+ )
20
+
21
+ # Discovery modules
22
+ load('./discovery_orchestrator.star', _initialize_discovery='initialize_discovery')
23
+ load('./discovery_daemon.star', _run_discovery_daemon='run_discovery_daemon')
24
+ load('./resource_snapshot.star', _get_resource_snapshot_path='get_resource_snapshot_path')
25
+
26
+ # =============================================================================
27
+ # RE-EXPORTS
28
+ # =============================================================================
29
+
30
+ # Constants
31
+ MANIFEST_FILENAME = _MANIFEST_FILENAME
32
+ MANIFEST_FILENAME_YAML = _MANIFEST_FILENAME_YAML
33
+ RESOURCES_ROOT = _RESOURCES_ROOT
34
+ DISCOVERY_SCAN_ROOTS = _DISCOVERY_SCAN_ROOTS
35
+ SCAN_ROOT_PATTERNS = _SCAN_ROOT_PATTERNS
36
+
37
+ # Functions
38
+ initialize_discovery = _initialize_discovery
39
+ run_discovery_daemon = _run_discovery_daemon
40
+ get_resource_snapshot_path = _get_resource_snapshot_path
41
+
42
+ # =============================================================================
43
+ # UTILITIES
44
+ # =============================================================================
45
+
46
+ def get_discovery_path():
47
+ """Return the path to the discovery module."""
48
+ return '.'
49
+
50
+ def get_resource_snapshot_script():
51
+ """Return the path to the service snapshot script."""
52
+ return './resource_snapshot.py'
53
+
54
+ def get_daemon_command():
55
+ """Return the command to run the discovery daemon."""
56
+ return 'python3 ./resource_snapshot.py daemon'
57
+
58
+ print("✅ Flisk Discovery loaded: manifest scanning and auto-discovery")