@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,502 @@
1
+ # Copyright (c) 2026 Flisk contributors
2
+ # SPDX-License-Identifier: MIT
3
+ # =============================================================================
4
+ # 📋 MANIFEST MODULE - SCHEMA DEFINITIONS
5
+ # =============================================================================
6
+ # Path: .tilt/topologies/tilt/manifest/schema.star
7
+ # Purpose: Complete manifest field schema with types, constraints, and validation
8
+ # Status: Phase 1 of manifest system refactoring
9
+ # =============================================================================
10
+
11
+ # === INLINED CONSTANTS for pure extension loading ===
12
+ VALID_STACKS = () # Stacks are project-specific, discovered dynamically
13
+ VALID_FEATURES = "api-client", "env-config", "api-index", "prisma", "drizzle", "ddd", "nats", "redis", "infisical", "vitest", "traefik", "websocket", "graphql", "grpc", "vite-node", "maintenance", "sablier"
14
+ PORT_RANGES = {"frontend": {"min": 3000, "max": 5999}, "backend": {"min": 4000, "max": 5999}, "worker": {"min": 6000, "max": 6999}, "migrator": {"min": 7000, "max": 7999}, "sdk": {"min": 3000, "max": 9999}, "library": {"min": 3000, "max": 9999}}
15
+ RUNTIME = "bun"
16
+ TRAEFIK_CONFIG = {"entrypoint": "web", "network": "traefik-public", "default_host": "localhost", "default_port": 8080, "tls_enabled": False, "entrypoints": ["web"], "middlewares": [], "tls": {"enabled": False}, "healthcheck_path": "/health", "healthcheck_interval": "10s", "healthcheck_timeout": "5s", "frontend_priority_base": 100}
17
+ BASE_PORT_FRONTEND = 3000
18
+ DEFAULTS = {}
19
+
20
+ # === END INLINED CONSTANTS ===
21
+
22
+
23
+ load("./constants.star",
24
+ "VALID_APP_TYPES",
25
+ "MANIFEST_DEFAULTS",
26
+ "VALIDATION_THRESHOLDS",
27
+ )
28
+
29
+
30
+ # Import from master configs for tech stack and service defaults
31
+
32
+
33
+
34
+ # Field type definitions
35
+ FIELD_TYPES = {
36
+ 'string': 'string',
37
+ 'integer': 'integer',
38
+ 'boolean': 'boolean',
39
+ 'list': 'list',
40
+ 'dict': 'dict',
41
+ 'enum': 'enum', # One of predefined values
42
+ }
43
+
44
+ # Complete manifest field schema
45
+ # Each field has: type, required, constraints, description
46
+ MANIFEST_SCHEMA = {
47
+ # Core Identification Fields
48
+ 'appName': {
49
+ 'type': 'string',
50
+ 'required': True,
51
+ 'constraints': {
52
+ 'pattern': r'^[a-z][a-z0-9-]*$',
53
+ 'min_length': 3,
54
+ 'max_length': 50,
55
+ },
56
+ 'description': 'Unique resource name in kebab-case',
57
+ 'example': 'user-management-backend',
58
+ },
59
+ 'appType': {
60
+ 'type': 'enum',
61
+ 'required': True,
62
+ 'constraints': {
63
+ 'values': VALID_APP_TYPES,
64
+ },
65
+ 'description': 'Type of application',
66
+ 'default': 'backend',
67
+ },
68
+ 'stack': {
69
+ 'type': 'string',
70
+ 'required': True,
71
+ 'constraints': {'min_length': 1},
72
+ 'description': 'Technology stack this resource belongs to',
73
+ 'example': 'user',
74
+ },
75
+
76
+ # Network Configuration
77
+ 'port': {
78
+ 'type': 'integer',
79
+ 'required': True,
80
+ 'constraints': {
81
+ 'min': 1024,
82
+ 'max': 65535,
83
+ 'port_range_check': True, # Must be in appType range
84
+ },
85
+ 'description': 'External resource port',
86
+ 'example': 4000,
87
+ },
88
+ 'internalPort': {
89
+ 'type': 'integer',
90
+ 'required': False,
91
+ 'constraints': {
92
+ 'min': 1,
93
+ 'max': 65535,
94
+ 'constant': True, # Should rarely change from default
95
+ },
96
+ 'description': 'Internal container port',
97
+ 'default': BASE_PORT_FRONTEND,
98
+ },
99
+ 'replicas': {
100
+ 'type': 'integer',
101
+ 'required': False,
102
+ 'constraints': {
103
+ 'min': 1,
104
+ 'max': VALIDATION_THRESHOLDS['max_replicas'],
105
+ },
106
+ 'description': 'Number of container replicas for high availability',
107
+ 'default': 1,
108
+ },
109
+
110
+ # Runtime Configuration
111
+ 'runtime': {
112
+ 'type': 'enum',
113
+ 'required': False,
114
+ 'constraints': {
115
+ 'values': [RUNTIME, 'node', 'python', 'go'],
116
+ },
117
+ 'description': 'Runtime environment',
118
+ 'default': RUNTIME,
119
+ },
120
+ 'featuresEnabled': {
121
+ 'type': 'list',
122
+ 'required': False,
123
+ 'constraints': {
124
+ 'item_type': 'enum',
125
+ 'item_values': VALID_FEATURES,
126
+ 'max_length': VALIDATION_THRESHOLDS['max_features'],
127
+ 'unique': True,
128
+ },
129
+ 'description': 'Feature flags enabling specific capabilities',
130
+ 'default': [],
131
+ },
132
+
133
+ # Database Configuration
134
+ 'databaseName': {
135
+ 'type': 'string',
136
+ 'required': False,
137
+ 'constraints': {
138
+ 'pattern': r'^[a-z][a-z0-9_]*$',
139
+ 'max_length': 63,
140
+ },
141
+ 'description': 'PostgreSQL database name (required if using prisma)',
142
+ 'example': 'TDK_user',
143
+ },
144
+
145
+ # Dependency Configuration
146
+ 'dependsOn': {
147
+ 'type': 'list',
148
+ 'required': False,
149
+ 'constraints': {
150
+ 'item_type': 'string',
151
+ 'max_length': VALIDATION_THRESHOLDS['max_dependencies'],
152
+ },
153
+ 'description': 'Other resources this resource depends on',
154
+ 'default': [],
155
+ },
156
+
157
+ # Environment Configuration
158
+ 'envVars': {
159
+ 'type': 'dict',
160
+ 'required': False,
161
+ 'constraints': {
162
+ 'max_keys': VALIDATION_THRESHOLDS['max_env_vars'],
163
+ },
164
+ 'description': 'Environment variables for the resource',
165
+ 'default': {},
166
+ },
167
+
168
+ # Frontend-Specific Fields
169
+ 'backendName': {
170
+ 'type': 'string',
171
+ 'required': False,
172
+ 'constraints': {
173
+ 'pattern': r'^[a-z][a-z0-9-]*$',
174
+ },
175
+ 'description': 'Associated backend resource name (required for frontends)',
176
+ 'condition': "appType == 'frontend'", # Required only for frontends
177
+ 'example': 'user-management-backend',
178
+ },
179
+ 'basePath': {
180
+ 'type': 'string',
181
+ 'required': False,
182
+ 'constraints': {
183
+ 'pattern': r'^/[a-z][a-z0-9-]*$',
184
+ },
185
+ 'description': 'URL base path for frontend (required for frontends)',
186
+ 'condition': "appType == 'frontend'",
187
+ 'example': '/users',
188
+ },
189
+ 'targetPath': {
190
+ 'type': 'string',
191
+ 'required': False,
192
+ 'description': 'Frontend build target path in container',
193
+ 'default': '/usr/share/nginx/html',
194
+ },
195
+
196
+ # Advanced Configuration
197
+ 'syncs': {
198
+ 'type': 'list',
199
+ 'required': False,
200
+ 'constraints': {
201
+ 'item_type': 'string',
202
+ },
203
+ 'description': 'Custom sync paths (auto-computed if not provided)',
204
+ },
205
+ 'startCommand': {
206
+ 'type': 'string',
207
+ 'required': False,
208
+ 'description': 'Custom container start command (overrides default)',
209
+ 'example': 'bun run start:prod',
210
+ },
211
+ 'prismaClientPath': {
212
+ 'type': 'string',
213
+ 'required': False,
214
+ 'description': 'Custom path for Prisma client',
215
+ },
216
+ 'registryHost': {
217
+ 'type': 'string',
218
+ 'required': False,
219
+ 'description': 'Custom npm registry host',
220
+ },
221
+
222
+ # Traefik Configuration
223
+ 'traefik': {
224
+ 'type': 'dict',
225
+ 'required': False,
226
+ 'schema': {
227
+ 'pathPrefix': {
228
+ 'type': 'string',
229
+ 'required': True,
230
+ 'constraints': {
231
+ 'pattern': r'^/[a-z][a-z0-9/-]*$',
232
+ },
233
+ 'description': 'URL path prefix for routing',
234
+ 'example': '/api/v1/user-management',
235
+ },
236
+ 'host': {
237
+ 'type': 'string',
238
+ 'required': False,
239
+ 'description': 'Custom host for routing',
240
+ 'example': 'user.backend.localhost',
241
+ },
242
+ 'priority': {
243
+ 'type': 'integer',
244
+ 'required': False,
245
+ 'constraints': {
246
+ 'min': 1,
247
+ 'max': 1000,
248
+ },
249
+ 'description': 'Route priority (higher = evaluated first)',
250
+ 'default': TRAEFIK_CONFIG['frontend_priority_base'],
251
+ },
252
+ },
253
+ 'description': 'Traefik reverse proxy configuration',
254
+ },
255
+
256
+ # Sablier Configuration (on-demand start/stop for idle resources)
257
+ 'sablier': {
258
+ 'type': 'dict',
259
+ 'required': False,
260
+ 'schema': {
261
+ 'enable': {
262
+ 'type': 'boolean',
263
+ 'required': False,
264
+ 'default': False,
265
+ 'description': 'Scale this resource to zero when idle; Sablier wakes it on the next request',
266
+ },
267
+ 'group': {
268
+ 'type': 'string',
269
+ 'required': False,
270
+ 'description': 'Resources sharing a group wake and sleep together (defaults to `stack`)',
271
+ 'example': 'restaurant',
272
+ },
273
+ 'sessionDuration': {
274
+ 'type': 'string',
275
+ 'required': False,
276
+ 'default': '10m',
277
+ 'description': 'How long the resource stays up after its last request, as a Go duration (e.g. "10m", "1h")',
278
+ 'example': '10m',
279
+ },
280
+ 'deferStart': {
281
+ 'type': 'boolean',
282
+ 'required': False,
283
+ 'default': False,
284
+ 'description': 'Skip this resource during flisk up entirely (no container is created or started); a Traefik static route wakes it and its dependencies on the first request instead. Requires enable: true.',
285
+ },
286
+ },
287
+ 'description': 'On-demand scaling via Sablier: stop idle containers, wake them on the next request. Not recommended for stateful resources (databases) with in-flight writes. (Premium - requires TDK_LICENSE_KEY; see hasSablierLicense() in extension-fetch.ts)',
288
+ },
289
+ }
290
+
291
+ # Cross-field validation constraints
292
+ CROSS_FIELD_CONSTRAINTS = {
293
+ 'frontend_requires_backend': {
294
+ 'condition': {'field': 'appType', 'equals': 'frontend'},
295
+ 'requires': ['backendName', 'basePath'],
296
+ 'severity': 'error',
297
+ 'message': 'Frontend resources must specify backendName and basePath',
298
+ },
299
+ 'prisma_requires_database': {
300
+ 'condition': {'field': 'featuresEnabled', 'contains': 'prisma'},
301
+ 'requires': ['databaseName'],
302
+ 'severity': 'warning',
303
+ 'message': 'Resources using Prisma should specify databaseName',
304
+ },
305
+ 'drizzle_requires_database': {
306
+ 'condition': {'field': 'featuresEnabled', 'contains': 'drizzle'},
307
+ 'requires': ['databaseName'],
308
+ 'severity': 'warning',
309
+ 'message': 'Resources using Drizzle should specify databaseName',
310
+ },
311
+ 'traefik_for_backends': {
312
+ 'condition': {'field': 'appType', 'equals': 'backend'},
313
+ 'requires': ['traefik'],
314
+ 'severity': 'warning',
315
+ 'message': 'Backend resources should have Traefik configuration',
316
+ },
317
+ }
318
+
319
+ # Schema-level constraints
320
+ SCHEMA_CONSTRAINTS = {
321
+ 'unique_ports': True,
322
+ 'unique_resource_names': True,
323
+ 'valid_dependency_references': True,
324
+ 'no_circular_dependencies': True,
325
+ }
326
+
327
+ def get_field_schema(field_name):
328
+ """
329
+ Get schema definition for a specific field.
330
+
331
+ Args:
332
+ field_name: Name of the field
333
+
334
+ Returns:
335
+ Field schema dict or None if field doesn't exist
336
+ """
337
+ return MANIFEST_SCHEMA.get(field_name)
338
+
339
+ def get_required_fields(manifest=None):
340
+ """
341
+ Get list of required fields.
342
+
343
+ Args:
344
+ manifest: Optional manifest dict to check conditional requirements
345
+
346
+ Returns:
347
+ List of required field names
348
+ """
349
+ required = []
350
+
351
+ for field_name, schema in MANIFEST_SCHEMA.items():
352
+ if schema.get('required', False):
353
+ required.append(field_name)
354
+
355
+ # Check conditional requirements
356
+ if manifest and 'condition' in schema:
357
+ condition = schema['condition']
358
+ # Simple condition evaluation
359
+ if 'appType' in condition and manifest.get('appType') in condition:
360
+ required.append(field_name)
361
+
362
+ return required
363
+
364
+ def get_field_constraints(field_name):
365
+ """
366
+ Get constraints for a specific field.
367
+
368
+ Args:
369
+ field_name: Name of the field
370
+
371
+ Returns:
372
+ Field constraints dict or None
373
+ """
374
+ schema = get_field_schema(field_name)
375
+ if schema:
376
+ return schema.get('constraints', {})
377
+ return None
378
+
379
+ def get_default_value(field_name):
380
+ """
381
+ Get default value for a field.
382
+
383
+ Args:
384
+ field_name: Name of the field
385
+
386
+ Returns:
387
+ Default value or None
388
+ """
389
+ # Check MANIFEST_SCHEMA first
390
+ schema = get_field_schema(field_name)
391
+ if schema and 'default' in schema:
392
+ return schema['default']
393
+
394
+ # Fall back to MANIFEST_DEFAULTS
395
+ return MANIFEST_DEFAULTS.get(field_name)
396
+
397
+ def get_valid_values(field_name):
398
+ """
399
+ Get list of valid values for enum fields.
400
+
401
+ Args:
402
+ field_name: Name of the field
403
+
404
+ Returns:
405
+ List of valid values or None
406
+ """
407
+ schema = get_field_schema(field_name)
408
+ if schema and schema.get('type') == 'enum':
409
+ return schema.get('constraints', {}).get('values', [])
410
+
411
+ # Check for list item values
412
+ if schema and schema.get('type') == 'list':
413
+ if schema.get('constraints', {}).get('item_type') == 'enum':
414
+ return schema['constraints'].get('item_values', [])
415
+
416
+ return None
417
+
418
+ def is_field_required(field_name, manifest=None):
419
+ """
420
+ Check if a field is required.
421
+
422
+ Args:
423
+ field_name: Name of the field
424
+ manifest: Optional manifest dict for conditional checks
425
+
426
+ Returns:
427
+ True if field is required
428
+ """
429
+ schema = get_field_schema(field_name)
430
+ if not schema:
431
+ return False
432
+
433
+ if schema.get('required', False):
434
+ return True
435
+
436
+ # Check conditional requirements
437
+ if manifest and 'condition' in schema:
438
+ condition = schema['condition']
439
+ if 'appType' in condition:
440
+ app_type = manifest.get('appType', '')
441
+ if app_type in condition:
442
+ return True
443
+
444
+ return False
445
+
446
+ def is_field_deprecated(field_name):
447
+ """
448
+ Check if a field is deprecated.
449
+
450
+ Args:
451
+ field_name: Name of the field
452
+
453
+ Returns:
454
+ True if field is deprecated
455
+ """
456
+ schema = get_field_schema(field_name)
457
+ if schema:
458
+ return schema.get('deprecated', False)
459
+ return False
460
+
461
+ def get_all_field_names():
462
+ """
463
+ Get list of all field names in schema.
464
+
465
+ Returns:
466
+ List of field names
467
+ """
468
+ return list(MANIFEST_SCHEMA.keys())
469
+
470
+ def get_field_type(field_name):
471
+ """
472
+ Get the type of a field.
473
+
474
+ Args:
475
+ field_name: Name of the field
476
+
477
+ Returns:
478
+ Field type string or None
479
+ """
480
+ schema = get_field_schema(field_name)
481
+ if schema:
482
+ return schema.get('type')
483
+ return None
484
+
485
+ # Export schema utilities
486
+ ManifestSchema = struct(
487
+ MANIFEST_SCHEMA=MANIFEST_SCHEMA,
488
+ FIELD_TYPES=FIELD_TYPES,
489
+ CROSS_FIELD_CONSTRAINTS=CROSS_FIELD_CONSTRAINTS,
490
+ SCHEMA_CONSTRAINTS=SCHEMA_CONSTRAINTS,
491
+ get_field=get_field_schema,
492
+ get_required_fields=get_required_fields,
493
+ get_constraints=get_field_constraints,
494
+ get_default=get_default_value,
495
+ get_valid_values=get_valid_values,
496
+ is_required=is_field_required,
497
+ is_deprecated=is_field_deprecated,
498
+ get_all_fields=get_all_field_names,
499
+ get_type=get_field_type,
500
+ )
501
+
502
+ VALIDATION = {}