@tdk-landscape/tdk-cli-core 1.3.134 → 1.3.136

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 (299) hide show
  1. package/cli/bin/tdk.js +2 -0
  2. package/cli/dist/backend-frameworks/registry.js +2 -0
  3. package/cli/dist/backend-languages/registry.js +2 -0
  4. package/cli/dist/cli.js +2 -0
  5. package/cli/dist/commands/__tests__/project-e2e-helpers.js +2 -0
  6. package/cli/dist/commands/completion.js +2 -0
  7. package/cli/dist/commands/config.js +2 -0
  8. package/cli/dist/commands/doctor.js +4 -2
  9. package/cli/dist/commands/down.js +2 -0
  10. package/cli/dist/commands/eject.js +2 -0
  11. package/cli/dist/commands/help.js +2 -0
  12. package/cli/dist/commands/import.js +2 -0
  13. package/cli/dist/commands/logs.js +2 -0
  14. package/cli/dist/commands/maintainers.js +2 -0
  15. package/cli/dist/commands/mcp.js +2 -0
  16. package/cli/dist/commands/networks.js +2 -0
  17. package/cli/dist/commands/project.js +2 -0
  18. package/cli/dist/commands/projects.js +2 -0
  19. package/cli/dist/commands/resource.js +2 -0
  20. package/cli/dist/commands/resources.js +2 -0
  21. package/cli/dist/commands/runtime.js +2 -0
  22. package/cli/dist/commands/stack.js +2 -0
  23. package/cli/dist/commands/stacks.js +2 -0
  24. package/cli/dist/commands/status.js +2 -0
  25. package/cli/dist/commands/ui.js +2 -0
  26. package/cli/dist/commands/up.js +2 -0
  27. package/cli/dist/commands/upgrade.js +2 -0
  28. package/cli/dist/commands/version.js +2 -0
  29. package/cli/dist/components/BaseTooltip.js +2 -0
  30. package/cli/dist/components/DetailPanel.js +2 -0
  31. package/cli/dist/components/FileTree.js +2 -0
  32. package/cli/dist/components/ResourceSelectInput.js +2 -0
  33. package/cli/dist/components/ResourceTable.js +2 -0
  34. package/cli/dist/components/ServiceIssues.js +2 -0
  35. package/cli/dist/components/TUIHeader.js +2 -0
  36. package/cli/dist/components/TabBar.js +2 -0
  37. package/cli/dist/components/Tooltip.js +2 -0
  38. package/cli/dist/components/index.js +2 -0
  39. package/cli/dist/components/ui-theme.js +2 -0
  40. package/cli/dist/config/platform-standards.js +2 -0
  41. package/cli/dist/frontend-frameworks/registry.js +2 -0
  42. package/cli/dist/generator/__tests__/golden-helpers.js +2 -0
  43. package/cli/dist/generator/extension-fetch.js +2 -0
  44. package/cli/dist/generator/resource-templates.js +2 -0
  45. package/cli/dist/generator/template-engine.js +8 -2
  46. package/cli/dist/mcp/server.js +2 -0
  47. package/cli/dist/mcp/tools.js +2 -0
  48. package/cli/dist/utils/agent-host.js +2 -0
  49. package/cli/dist/utils/atomic-write.js +2 -0
  50. package/cli/dist/utils/bun-floor.js +2 -0
  51. package/cli/dist/utils/cold-preflight.js +2 -0
  52. package/cli/dist/utils/discovery-paths.js +31 -5
  53. package/cli/dist/utils/docker.js +2 -0
  54. package/cli/dist/utils/doctor-runtime.js +8 -3
  55. package/cli/dist/utils/doctor-starlark.js +2 -0
  56. package/cli/dist/utils/doctor-wiring.js +2 -0
  57. package/cli/dist/utils/down-cleanup.js +2 -0
  58. package/cli/dist/utils/env-validator.js +2 -0
  59. package/cli/dist/utils/errors.js +2 -0
  60. package/cli/dist/utils/exec-async.js +2 -0
  61. package/cli/dist/utils/file-helpers.js +2 -0
  62. package/cli/dist/utils/formatting.js +2 -0
  63. package/cli/dist/utils/generated-paths.js +2 -0
  64. package/cli/dist/utils/host-port-config.js +3 -1
  65. package/cli/dist/utils/host-port-plan.js +2 -0
  66. package/cli/dist/utils/json-output.js +2 -0
  67. package/cli/dist/utils/machine-output.js +2 -0
  68. package/cli/dist/utils/paths.js +2 -0
  69. package/cli/dist/utils/platform.js +2 -0
  70. package/cli/dist/utils/port-assignment.js +2 -0
  71. package/cli/dist/utils/port-conflict-fix.js +2 -0
  72. package/cli/dist/utils/port-listener-probe.js +2 -0
  73. package/cli/dist/utils/project-config-defaults.js +2 -0
  74. package/cli/dist/utils/project-features.js +2 -0
  75. package/cli/dist/utils/prompt.js +2 -0
  76. package/cli/dist/utils/resource-features.js +2 -0
  77. package/cli/dist/utils/resource-kind.js +2 -0
  78. package/cli/dist/utils/schema-version-gate.js +2 -0
  79. package/cli/dist/utils/secret-redaction.js +2 -0
  80. package/cli/dist/utils/service-config-checks.js +2 -0
  81. package/cli/dist/utils/service-manifest.js +2 -0
  82. package/cli/dist/utils/service-urls.js +2 -0
  83. package/cli/dist/utils/services.js +2 -0
  84. package/cli/dist/utils/shared-platform-postgres.js +26 -5
  85. package/cli/dist/utils/single-flight.js +2 -0
  86. package/cli/dist/utils/smoke.js +5 -0
  87. package/cli/dist/utils/spinner.js +2 -0
  88. package/cli/dist/utils/startup-report.js +2 -0
  89. package/cli/dist/utils/suggestions.js +2 -0
  90. package/cli/dist/utils/tar.js +2 -0
  91. package/cli/dist/utils/tdk-version.js +2 -0
  92. package/cli/dist/utils/tilt-process.js +2 -0
  93. package/cli/dist/utils/tilt-resource-state.js +2 -0
  94. package/cli/dist/utils/tilt-startup.js +2 -0
  95. package/cli/dist/utils/tilt-unreachable-message.js +2 -0
  96. package/cli/dist/utils/tilt.js +2 -0
  97. package/cli/dist/utils/up-readiness.js +2 -0
  98. package/cli/dist/utils/which.js +2 -0
  99. package/cli/dist/utils/windows-doctor.js +2 -0
  100. package/cli/dist-bundle/{chunk-DLEX3BP5.js → chunk-I63IBPUZ.js} +7 -7
  101. package/cli/dist-bundle/cli.js +4 -4
  102. package/cli/dist-bundle/{cold-preflight-6X67ZFII.js → cold-preflight-NXFER2W6.js} +1 -1
  103. package/cli/package.json +2 -1
  104. package/cli/shared-platform-engineering/docker-templates/bun-hoisted-symlink-fix.sh +2 -0
  105. package/cli/shared-platform-engineering/docker-templates/infisical-entrypoint.sh +2 -0
  106. package/cli/shared-platform-engineering/docker-templates/install-deps.sh +2 -0
  107. package/cli/shared-platform-engineering/docker-templates/prisma-bun-client-link-fix.sh +2 -0
  108. package/cli/shared-platform-engineering/docker-templates/prisma-normalize-client.sh +2 -0
  109. package/discovery/TILT_DISCOVERY.star +2 -0
  110. package/discovery/config.star +2 -0
  111. package/discovery/constants.star +2 -0
  112. package/discovery/deterministic.star +2 -0
  113. package/discovery/discovery_daemon.star +2 -0
  114. package/discovery/discovery_orchestrator.star +2 -0
  115. package/discovery/filtering.star +2 -0
  116. package/discovery/incremental_discovery.star +2 -0
  117. package/discovery/indexing.star +2 -0
  118. package/discovery/json_manifest_scanner.star +2 -0
  119. package/discovery/libraries.star +2 -0
  120. package/discovery/loading.star +2 -0
  121. package/discovery/manifest/constants.star +2 -0
  122. package/discovery/manifest/loading.star +2 -0
  123. package/discovery/manifest/normalize.star +2 -0
  124. package/discovery/manifest/validation.star +2 -0
  125. package/discovery/normalization.star +2 -0
  126. package/discovery/registry.star +2 -0
  127. package/discovery/resource_snapshot.py +2 -0
  128. package/discovery/resource_snapshot.star +2 -0
  129. package/discovery/schemas.star +2 -0
  130. package/discovery/test_resource_snapshot.py +2 -0
  131. package/discovery/validation.star +2 -0
  132. package/discovery/versioning.star +2 -0
  133. package/engine/assets/docker/wake-gateway/decide.test.ts +2 -0
  134. package/engine/assets/docker/wake-gateway/decide.ts +2 -0
  135. package/engine/assets/docker/wake-gateway/server.ts +2 -0
  136. package/engine/assets/scripts/cleanup-completed-migrator-images.sh +2 -0
  137. package/engine/assets/scripts/cleanup-tilt-images.sh +2 -0
  138. package/engine/assets/scripts/mac-m1-resource-monitor.sh +2 -0
  139. package/engine/config.star +2 -0
  140. package/engine/entrypoint.star +2 -0
  141. package/engine/lifecycle/orchestrator.star +2 -0
  142. package/engine/paths.star +2 -0
  143. package/engine/scripts/build-and-publish-lib.sh +2 -0
  144. package/engine/scripts/check-lib-publish.sh +2 -0
  145. package/engine/scripts/debug-container.sh +2 -0
  146. package/engine/scripts/generate-manifest.sh +2 -0
  147. package/engine/topologies/platform/docker/auth/auth.star +2 -0
  148. package/engine/topologies/platform/docker/build/golden_image_dockerfile.star +3 -3
  149. package/engine/topologies/platform/docker/compose/compose.star +2 -0
  150. package/engine/topologies/platform/docker/compose/compose_helpers.star +2 -0
  151. package/engine/topologies/platform/docker/compose/traefik_standalone.star +2 -0
  152. package/engine/topologies/platform/docker/config/bunignore.star +2 -0
  153. package/engine/topologies/platform/docker/config/dockerignore.star +2 -0
  154. package/engine/topologies/platform/docker/config/healthcheck.star +2 -0
  155. package/engine/topologies/platform/docker/constants.star +2 -0
  156. package/engine/topologies/platform/docker/dockerfile/dockerfile.star +2 -0
  157. package/engine/topologies/platform/docker/dockerfile/language_dockerfile.star +11 -8
  158. package/engine/topologies/platform/docker/index.star +2 -0
  159. package/engine/topologies/platform/docker/layers/bun_helpers.star +2 -0
  160. package/engine/topologies/platform/docker/layers/infisical/index.star +2 -0
  161. package/engine/topologies/platform/docker/layers/infisical/infisical_docker.star +2 -0
  162. package/engine/topologies/platform/docker/layers/l1_base_layers.star +2 -0
  163. package/engine/topologies/platform/docker/layers/l2_dependency_layers.star +2 -0
  164. package/engine/topologies/platform/docker/layers/l3_builder_layers.star +2 -0
  165. package/engine/topologies/platform/docker/layers/l4_runtime_layers.star +2 -0
  166. package/engine/topologies/platform/docker/layers/prisma/constants.star +2 -0
  167. package/engine/topologies/platform/docker/layers/prisma/db_readiness.star +2 -0
  168. package/engine/topologies/platform/docker/layers/prisma/filesystem_setup.star +2 -0
  169. package/engine/topologies/platform/docker/layers/prisma/migrate_script.star +2 -0
  170. package/engine/topologies/platform/docker/layers/prisma/prisma_build.star +2 -0
  171. package/engine/topologies/platform/docker/layers/prisma/prisma_runtime.star +2 -0
  172. package/engine/topologies/platform/docker/layers/prisma/secret_resolution.star +2 -0
  173. package/engine/topologies/platform/docker/networking/api_path_constants.star +2 -0
  174. package/engine/topologies/platform/docker/networking/sablier_container_cycle.star +2 -0
  175. package/engine/topologies/platform/docker/networking/traefik.star +2 -0
  176. package/engine/topologies/platform/docker/networking/traefik_constants.star +2 -0
  177. package/engine/topologies/platform/docker/networking/traefik_helpers.star +2 -0
  178. package/engine/topologies/platform/docker/networking/traefik_static_routes.star +2 -0
  179. package/engine/topologies/platform/docker/secrets/env_secrets.star +2 -0
  180. package/engine/topologies/platform/docker/secrets/infisical.star +2 -0
  181. package/engine/topologies/platform/net/proxy.star +2 -0
  182. package/engine/topologies/platform/registries/local.star +2 -0
  183. package/engine/topologies/platform/registries/verdaccio_loader.star +2 -0
  184. package/engine/topologies/platform/security/secrets.star +2 -0
  185. package/engine/topologies/platform/state/relational.star +2 -0
  186. package/engine/topologies/tilt/common/utils.star +2 -0
  187. package/engine/topologies/tilt/common/utils_debug.star +2 -0
  188. package/engine/topologies/tilt/common/utils_deterministic.star +2 -0
  189. package/engine/topologies/tilt/common/utils_docker_networks.star +2 -0
  190. package/engine/topologies/tilt/common/utils_env.star +2 -0
  191. package/engine/topologies/tilt/common/utils_output.star +2 -0
  192. package/engine/topologies/tilt/config/defaults.star +2 -0
  193. package/engine/topologies/tilt/config/feature_flags.star +2 -0
  194. package/engine/topologies/tilt/config/global.star +2 -0
  195. package/engine/topologies/tilt/config/profiles.star +2 -0
  196. package/engine/topologies/tilt/generators/agents_md.star +2 -0
  197. package/engine/topologies/tilt/generators/api_gateway.star +2 -0
  198. package/engine/topologies/tilt/generators/index.star +2 -0
  199. package/engine/topologies/tilt/generators/infisical/examples.star +2 -0
  200. package/engine/topologies/tilt/generators/infisical/index.star +2 -0
  201. package/engine/topologies/tilt/generators/infisical/machine_identity.star +2 -0
  202. package/engine/topologies/tilt/generators/infisical/organization.star +2 -0
  203. package/engine/topologies/tilt/generators/infisical/path_manager.star +2 -0
  204. package/engine/topologies/tilt/generators/infisical/secrets_generator.star +2 -0
  205. package/engine/topologies/tilt/generators/nginx_conf.star +2 -0
  206. package/engine/topologies/tilt/generators/npmrc.star +2 -0
  207. package/engine/topologies/tilt/generators/tsconfig.star +2 -0
  208. package/engine/topologies/tilt/generators/typescript/backend_library_tsconfig.star +2 -0
  209. package/engine/topologies/tilt/generators/typescript/backend_tsconfig.star +2 -0
  210. package/engine/topologies/tilt/generators/typescript/common.star +2 -0
  211. package/engine/topologies/tilt/generators/typescript/frontend_library_tsconfig.star +2 -0
  212. package/engine/topologies/tilt/generators/typescript/frontend_tsconfig.star +2 -0
  213. package/engine/topologies/tilt/generators/typescript/include.star +2 -0
  214. package/engine/topologies/tilt/generators/typescript/playwright_config.star +2 -0
  215. package/engine/topologies/tilt/generators/typescript/prisma_config.star +2 -0
  216. package/engine/topologies/tilt/generators/validators.star +2 -0
  217. package/engine/topologies/tilt/generators/vite/backend.star +2 -0
  218. package/engine/topologies/tilt/generators/vite/frameworks/lit.star +2 -0
  219. package/engine/topologies/tilt/generators/vite/frameworks/preact.star +2 -0
  220. package/engine/topologies/tilt/generators/vite/frameworks/qwik.star +2 -0
  221. package/engine/topologies/tilt/generators/vite/frameworks/react.star +2 -0
  222. package/engine/topologies/tilt/generators/vite/frameworks/solid.star +2 -0
  223. package/engine/topologies/tilt/generators/vite/frameworks/svelte.star +2 -0
  224. package/engine/topologies/tilt/generators/vite/frameworks/vanilla.star +2 -0
  225. package/engine/topologies/tilt/generators/vite/frameworks/vue.star +2 -0
  226. package/engine/topologies/tilt/generators/vite/frontend.star +2 -0
  227. package/engine/topologies/tilt/generators/vite/generators.star +2 -0
  228. package/engine/topologies/tilt/generators/vite/helpers.star +2 -0
  229. package/engine/topologies/tilt/generators/vite/library.star +2 -0
  230. package/engine/topologies/tilt/generators/vite/sdk.star +2 -0
  231. package/engine/topologies/tilt/generators/vite/templates.star +2 -0
  232. package/engine/topologies/tilt/generators/vite_config.star +2 -0
  233. package/engine/topologies/tilt/manifest/__init__.star +2 -0
  234. package/engine/topologies/tilt/manifest/constants.star +2 -0
  235. package/engine/topologies/tilt/manifest/errors.star +2 -0
  236. package/engine/topologies/tilt/manifest/integration.star +2 -0
  237. package/engine/topologies/tilt/manifest/json_to_yaml.py +2 -0
  238. package/engine/topologies/tilt/manifest/loader.star +2 -0
  239. package/engine/topologies/tilt/manifest/mapper.star +2 -0
  240. package/engine/topologies/tilt/manifest/parser.star +2 -0
  241. package/engine/topologies/tilt/manifest/schema.star +2 -0
  242. package/engine/topologies/tilt/manifest/tests/test_integration.star +2 -0
  243. package/engine/topologies/tilt/manifest/tests/test_loader_parser.star +2 -0
  244. package/engine/topologies/tilt/manifest/tests/test_manifest.star +2 -0
  245. package/engine/topologies/tilt/manifest/tests/test_validator.star +2 -0
  246. package/engine/topologies/tilt/manifest/validator.star +2 -0
  247. package/engine/topologies/tilt/manifest/yaml_to_json.py +2 -0
  248. package/engine/topologies/tilt/resources/conditions.star +2 -0
  249. package/engine/topologies/tilt/resources/databases.star +2 -0
  250. package/engine/topologies/tilt/resources/declaration.star +2 -0
  251. package/engine/topologies/tilt/resources/deps.star +2 -0
  252. package/engine/topologies/tilt/resources/infra-loader.star +2 -0
  253. package/engine/topologies/tilt/resources/libs.star +2 -0
  254. package/engine/topologies/tilt/resources/libs_discovery.star +2 -0
  255. package/engine/topologies/tilt/resources/libs_paths.star +2 -0
  256. package/engine/topologies/tilt/resources/libs_resource_definition.star +2 -0
  257. package/engine/topologies/tilt/resources/libs_setup.star +2 -0
  258. package/engine/topologies/tilt/resources/libs_tsconfig.star +2 -0
  259. package/engine/topologies/tilt/resources/orchestrator/apply.star +2 -0
  260. package/engine/topologies/tilt/resources/orchestrator/apply_compose_resource_registration.star +2 -0
  261. package/engine/topologies/tilt/resources/orchestrator/apply_manifest_orchestration.star +2 -0
  262. package/engine/topologies/tilt/resources/orchestrator/apply_migrator_orchestration.star +2 -0
  263. package/engine/topologies/tilt/resources/orchestrator/apply_resource_validation.star +2 -0
  264. package/engine/topologies/tilt/resources/orchestrator/apply_runtime_flags.star +2 -0
  265. package/engine/topologies/tilt/resources/orchestrator/builders/typescript.star +2 -0
  266. package/engine/topologies/tilt/resources/orchestrator/generators/dependencies/index.star +2 -0
  267. package/engine/topologies/tilt/resources/orchestrator/generators/dependencies/resolver.star +2 -0
  268. package/engine/topologies/tilt/resources/orchestrator/generators/env.star +2 -0
  269. package/engine/topologies/tilt/resources/orchestrator/generators/frontend.star +2 -0
  270. package/engine/topologies/tilt/resources/orchestrator/generators/manifest_resource.star +2 -0
  271. package/engine/topologies/tilt/resources/orchestrator/helpers.star +2 -0
  272. package/engine/topologies/tilt/resources/orchestrator.star +2 -0
  273. package/engine/topologies/tilt/resources/ordering.star +2 -0
  274. package/engine/topologies/tilt/resources/shared-platform-postgres.star +2 -0
  275. package/engine/topologies/tilt/resources/triggers.star +2 -0
  276. package/engine/topologies/tilt/resources/watchers.star +2 -0
  277. package/engine/where-things-live.star +2 -0
  278. package/ext/ide-components/code_viewer/server.py +2 -0
  279. package/ext/ide-components/config_inspector/server.py +2 -0
  280. package/ext/ide-components/file_browser/server.py +2 -0
  281. package/ext/ide-components/shared/config_service.py +2 -0
  282. package/ext/ide-components/shared/file_utils.py +2 -0
  283. package/ext/ide-components/shared/http_utils.py +2 -0
  284. package/ext/ide-components/shared/syntax_highlighter.py +2 -0
  285. package/ext/ide-components/shared/template_engine.py +2 -0
  286. package/ext/ide-components/shared/templates/base.html +4 -0
  287. package/ext/ide-components/shared/test_config_service.py +2 -0
  288. package/ext/ide-components/shared/tilt_integration.py +2 -0
  289. package/ext/ui-enhancements/cron-status-server.sh +2 -0
  290. package/ext/ui-enhancements/cron-status-tracker.sh +2 -0
  291. package/ext/ui-enhancements/tiltfile.py +2 -0
  292. package/package.json +1 -1
  293. package/shared-platform-engineering/docker-templates/bun-hoisted-symlink-fix.sh +2 -0
  294. package/shared-platform-engineering/docker-templates/infisical-entrypoint.sh +2 -0
  295. package/shared-platform-engineering/docker-templates/install-deps.sh +2 -0
  296. package/shared-platform-engineering/docker-templates/prisma-bun-client-link-fix.sh +2 -0
  297. package/shared-platform-engineering/docker-templates/prisma-normalize-client.sh +2 -0
  298. package/specs/specs/TILT_SERVICE_DEFAULTS.star +2 -0
  299. package/specs/specs/TILT_TECH_STACK.star +2 -0
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import{createRequire as __tdkRequire}from'node:module';const require=__tdkRequire(import.meta.url);
3
- import{$ as Jy,$a as nB,A as Gm,Aa as G1,B as fA,Ba as L1,C as KA,Ca as j1,D as dg,Da as PC,E as Lm,Ea as Ky,F as I1,Fa as z1,G as y1,Ga as F1,H as Hu,Ha as J1,I as di,Ia as K1,J as pn,Ja as Y1,K as on,Ka as q1,L as Za,La as V1,M as xn,Ma as X1,N as FC,Na as Z1,O as Uo,Oa as WC,P as JC,Pa as $C,Q as Jn,Qa as ns,R as Q1,Ra as eB,S as S1,Sa as tB,T as jm,Ta as P1,U as gg,Ua as Jm,V as v1,Va as Yy,W as zm,Wa as W1,X as pg,Xa as $1,Y as Gu,Ya as eD,Z as KC,Za as tD,_ as YC,_a as nD,a as R,aa as D1,ab as aD,b as GC,ba as mg,bb as oD,c as bl,ca as Zo,cb as qy,d as jy,da as Po,db as Vy,e as Ia,ea as nt,eb as iD,f as Tl,fa as R1,fb as AD,g as u1,ga as b1,gb as lD,h as zy,ha as T1,hb as rD,i as f1,ia as N1,j as ic,ja as qC,k as vn,ka as Eg,kb as sD,l as sr,la as w1,lb as cD,m as jC,ma as VC,n as Fy,na as XC,o as zC,oa as x1,p as d1,pa as _1,q as g1,qa as Fm,r as p1,ra as U1,s as uA,sa as M1,t as Hm,ta as ZC,u as m1,ua as YA,v as E1,va as O1,w as h1,wa as k1,x as C1,xa as H1,y as es,ya as ts,z as B1,za as hg}from"./chunk-DLEX3BP5.js";import{a as r1,c as LC,d as s1,e as c1}from"./chunk-OBQS5CYC.js";import{a as fg,b as ka,c as Yw,d as st}from"./chunk-6EA4DGCY.js";var ZR=ka(hB=>{"use strict";var PU=Symbol.for("react.transitional.element"),WU=Symbol.for("react.fragment");function XR(n,i,l){var s=null;if(l!==void 0&&(s=""+l),i.key!==void 0&&(s=""+i.key),"key"in i){l={};for(var u in i)u!=="key"&&(l[u]=i[u])}else l=i;return i=l.ref,{$$typeof:PU,type:n,key:s,ref:i!==void 0?i:null,props:l}}hB.Fragment=WU;hB.jsx=XR;hB.jsxs=XR});var s2=ka(Dt=>{"use strict";var TQ=Symbol.for("react.transitional.element"),$U=Symbol.for("react.portal"),eM=Symbol.for("react.fragment"),tM=Symbol.for("react.strict_mode"),nM=Symbol.for("react.profiler"),aM=Symbol.for("react.consumer"),oM=Symbol.for("react.context"),iM=Symbol.for("react.forward_ref"),AM=Symbol.for("react.suspense"),lM=Symbol.for("react.memo"),t2=Symbol.for("react.lazy"),rM=Symbol.for("react.activity"),sM=Symbol.for("react.view_transition"),PR=Symbol.iterator;function cM(n){return n===null||typeof n!="object"?null:(n=PR&&n[PR]||n["@@iterator"],typeof n=="function"?n:null)}var n2={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},a2=Object.assign,o2={};function bg(n,i,l){this.props=n,this.context=i,this.refs=o2,this.updater=l||n2}bg.prototype.isReactComponent={};bg.prototype.setState=function(n,i){if(typeof n!="object"&&typeof n!="function"&&n!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,n,i,"setState")};bg.prototype.forceUpdate=function(n){this.updater.enqueueForceUpdate(this,n,"forceUpdate")};function i2(){}i2.prototype=bg.prototype;function NQ(n,i,l){this.props=n,this.context=i,this.refs=o2,this.updater=l||n2}var wQ=NQ.prototype=new i2;wQ.constructor=NQ;a2(wQ,bg.prototype);wQ.isPureReactComponent=!0;var WR=Array.isArray;function bQ(){}var Kn={H:null,A:null,T:null,S:null},A2=Object.prototype.hasOwnProperty;function xQ(n,i,l){var s=l.ref;return{$$typeof:TQ,type:n,key:i,ref:s!==void 0?s:null,props:l}}function uM(n,i){return xQ(n.type,i,n.props)}function _Q(n){return typeof n=="object"&&n!==null&&n.$$typeof===TQ}function fM(n){var i={"=":"=0",":":"=2"};return"$"+n.replace(/[=:]/g,function(l){return i[l]})}var $R=/\/+/g;function RQ(n,i){return typeof n=="object"&&n!==null&&n.key!=null?fM(""+n.key):i.toString(36)}function dM(n){switch(n.status){case"fulfilled":return n.value;case"rejected":throw n.reason;default:switch(typeof n.status=="string"?n.then(bQ,bQ):(n.status="pending",n.then(function(i){n.status==="pending"&&(n.status="fulfilled",n.value=i)},function(i){n.status==="pending"&&(n.status="rejected",n.reason=i)})),n.status){case"fulfilled":return n.value;case"rejected":throw n.reason}}throw n}function Rg(n,i,l,s,u){var p=typeof n;(p==="undefined"||p==="boolean")&&(n=null);var E=!1;if(n===null)E=!0;else switch(p){case"bigint":case"string":case"number":E=!0;break;case"object":switch(n.$$typeof){case TQ:case $U:E=!0;break;case t2:return E=n._init,Rg(E(n._payload),i,l,s,u)}}if(E)return u=u(n),E=s===""?"."+RQ(n,0):s,WR(u)?(l="",E!=null&&(l=E.replace($R,"$&/")+"/"),Rg(u,i,l,"",function(S){return S})):u!=null&&(_Q(u)&&(u=uM(u,l+(u.key==null||n&&n.key===u.key?"":(""+u.key).replace($R,"$&/")+"/")+E)),i.push(u)),1;E=0;var B=s===""?".":s+":";if(WR(n))for(var I=0;I<n.length;I++)s=n[I],p=B+RQ(s,I),E+=Rg(s,i,l,p,u);else if(I=cM(n),typeof I=="function")for(n=I.call(n),I=0;!(s=n.next()).done;)s=s.value,p=B+RQ(s,I++),E+=Rg(s,i,l,p,u);else if(p==="object"){if(typeof n.then=="function")return Rg(dM(n),i,l,s,u);throw i=String(n),Error("Objects are not valid as a React child (found: "+(i==="[object Object]"?"object with keys {"+Object.keys(n).join(", ")+"}":i)+"). If you meant to render a collection of children, use an array instead.")}return E}function CB(n,i,l){if(n==null)return n;var s=[],u=0;return Rg(n,s,"","",function(p){return i.call(l,p,u++)}),s}function gM(n){if(n._status===-1){var i=n._result,l=i();l.then(function(s){(n._status===0||n._status===-1)&&(n._status=1,n._result=s,l.status===void 0&&(l.status="fulfilled",l.value=s))},function(s){(n._status===0||n._status===-1)&&(n._status=2,n._result=s,l.status===void 0&&(l.status="rejected",l.reason=s))}),n._status===-1&&(n._status=0,n._result=l)}if(n._status===1)return n._result.default;throw n._result}var e2=typeof reportError=="function"?reportError:function(n){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var i=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof n=="object"&&n!==null&&typeof n.message=="string"?String(n.message):String(n),error:n});if(!window.dispatchEvent(i))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",n);return}console.error(n)};function l2(n){var i=Kn.T,l={};l.types=i!==null?i.types:null,Kn.T=l;try{var s=n(),u=Kn.S;u!==null&&u(l,s),typeof s=="object"&&s!==null&&typeof s.then=="function"&&s.then(bQ,e2)}catch(p){e2(p)}finally{i!==null&&l.types!==null&&(i.types=l.types),Kn.T=i}}function r2(n){var i=Kn.T;if(i!==null){var l=i.types;l===null?i.types=[n]:l.indexOf(n)===-1&&l.push(n)}else l2(r2.bind(null,n))}var pM={map:CB,forEach:function(n,i,l){CB(n,function(){i.apply(this,arguments)},l)},count:function(n){var i=0;return CB(n,function(){i++}),i},toArray:function(n){return CB(n,function(i){return i})||[]},only:function(n){if(!_Q(n))throw Error("React.Children.only expected to receive a single React element child.");return n}};Dt.Activity=rM;Dt.Children=pM;Dt.Component=bg;Dt.Fragment=eM;Dt.Profiler=nM;Dt.PureComponent=NQ;Dt.StrictMode=tM;Dt.Suspense=AM;Dt.ViewTransition=sM;Dt.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=Kn;Dt.__COMPILER_RUNTIME={__proto__:null,c:function(n){return Kn.H.useMemoCache(n)}};Dt.addTransitionType=r2;Dt.cache=function(n){return function(){return n.apply(null,arguments)}};Dt.cacheSignal=function(){return null};Dt.cloneElement=function(n,i,l){if(n==null)throw Error("The argument must be a React element, but you passed "+n+".");var s=a2({},n.props),u=n.key;if(i!=null)for(p in i.key!==void 0&&(u=""+i.key),i)!A2.call(i,p)||p==="key"||p==="__self"||p==="__source"||p==="ref"&&i.ref===void 0||(s[p]=i[p]);var p=arguments.length-2;if(p===1)s.children=l;else if(1<p){for(var E=Array(p),B=0;B<p;B++)E[B]=arguments[B+2];s.children=E}return xQ(n.type,u,s)};Dt.createContext=function(n){return n={$$typeof:oM,_currentValue:n,_currentValue2:n,_threadCount:0,Provider:null,Consumer:null},n.Provider=n,n.Consumer={$$typeof:aM,_context:n},n};Dt.createElement=function(n,i,l){var s,u={},p=null;if(i!=null)for(s in i.key!==void 0&&(p=""+i.key),i)A2.call(i,s)&&s!=="key"&&s!=="__self"&&s!=="__source"&&(u[s]=i[s]);var E=arguments.length-2;if(E===1)u.children=l;else if(1<E){for(var B=Array(E),I=0;I<E;I++)B[I]=arguments[I+2];u.children=B}if(n&&n.defaultProps)for(s in E=n.defaultProps,E)u[s]===void 0&&(u[s]=E[s]);return xQ(n,p,u)};Dt.createRef=function(){return{current:null}};Dt.forwardRef=function(n){return{$$typeof:iM,render:n}};Dt.isValidElement=_Q;Dt.lazy=function(n){return{$$typeof:t2,_payload:{_status:-1,_result:n},_init:gM}};Dt.memo=function(n,i){return{$$typeof:lM,type:n,compare:i===void 0?null:i}};Dt.startTransition=l2;Dt.unstable_useCacheRefresh=function(){return Kn.H.useCacheRefresh()};Dt.use=function(n){return Kn.H.use(n)};Dt.useActionState=function(n,i,l){return Kn.H.useActionState(n,i,l)};Dt.useCallback=function(n,i){return Kn.H.useCallback(n,i)};Dt.useContext=function(n){return Kn.H.useContext(n)};Dt.useDebugValue=function(){};Dt.useDeferredValue=function(n,i){return Kn.H.useDeferredValue(n,i)};Dt.useEffect=function(n,i){return Kn.H.useEffect(n,i)};Dt.useEffectEvent=function(n){return Kn.H.useEffectEvent(n)};Dt.useId=function(){return Kn.H.useId()};Dt.useImperativeHandle=function(n,i,l){return Kn.H.useImperativeHandle(n,i,l)};Dt.useInsertionEffect=function(n,i){return Kn.H.useInsertionEffect(n,i)};Dt.useLayoutEffect=function(n,i){return Kn.H.useLayoutEffect(n,i)};Dt.useMemo=function(n,i){return Kn.H.useMemo(n,i)};Dt.useOptimistic=function(n,i){return Kn.H.useOptimistic(n,i)};Dt.useReducer=function(n,i,l){return Kn.H.useReducer(n,i,l)};Dt.useRef=function(n){return Kn.H.useRef(n)};Dt.useState=function(n){return Kn.H.useState(n)};Dt.useSyncExternalStore=function(n,i,l){return Kn.H.useSyncExternalStore(n,i,l)};Dt.useTransition=function(){return Kn.H.useTransition()};Dt.version="19.3.0"});var c2=ka((yt,BB)=>{"use strict";process.env.NODE_ENV!=="production"&&(function(){function n(y,U){Object.defineProperty(s.prototype,y,{get:function(){console.warn("%s(...) is deprecated in plain JavaScript React classes. %s",U[0],U[1])}})}function i(y){return y===null||typeof y!="object"?null:(y=Wa&&y[Wa]||y["@@iterator"],typeof y=="function"?y:null)}function l(y,U){y=(y=y.constructor)&&(y.displayName||y.name)||"ReactClass";var ue=y+"."+U;St[ue]||(console.error("Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.",U,y),St[ue]=!0)}function s(y,U,ue){this.props=y,this.context=U,this.refs=en,this.updater=ue||Ft}function u(){}function p(y,U,ue){this.props=y,this.context=U,this.refs=en,this.updater=ue||Ft}function E(){}function B(y){return""+y}function I(y){try{B(y);var U=!1}catch{U=!0}if(U){U=console;var ue=U.error,re=typeof Symbol=="function"&&Symbol.toStringTag&&y[Symbol.toStringTag]||y.constructor.name||"Object";return ue.call(U,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",re),B(y)}}function S(y){if(y==null)return null;if(typeof y=="function")return y.$$typeof===Pn?null:y.displayName||y.name||null;if(typeof y=="string")return y;switch(y){case Qt:return"Fragment";case Te:return"Profiler";case J:return"StrictMode";case ct:return"Suspense";case qe:return"SuspenseList";case mn:return"Activity";case Ga:return"ViewTransition"}if(typeof y=="object")switch(typeof y.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),y.$$typeof){case bt:return"Portal";case Pe:return y.displayName||"Context";case Le:return(y._context.displayName||"Context")+".Consumer";case We:var U=y.render;return y=y.displayName,y||(y=U.displayName||U.name||"",y=y!==""?"ForwardRef("+y+")":"ForwardRef"),y;case He:return U=y.displayName||null,U!==null?U:S(y.type)||"Memo";case $e:U=y._payload,y=y._init;try{return S(y(U))}catch{}}return null}function N(y){if(y===Qt)return"<>";if(typeof y=="object"&&y!==null&&y.$$typeof===$e)return"<...>";try{var U=S(y);return U?"<"+U+">":"<...>"}catch{return"<...>"}}function w(){var y=Ve.A;return y===null?null:y.getOwner()}function T(){return Error("react-stack-top-frame")}function x(y){if(Wt.call(y,"key")){var U=Object.getOwnPropertyDescriptor(y,"key").get;if(U&&U.isReactWarning)return!1}return y.key!==void 0}function z(y,U){function ue(){On||(On=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",U))}ue.isReactWarning=!0,Object.defineProperty(y,"key",{get:ue,configurable:!0})}function F(){var y=S(this.type);return Na[y]||(Na[y]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),y=this.props.ref,y!==void 0?y:null}function M(y,U,ue,re,ce,ut){var xe=ue.ref;return y={$$typeof:Me,type:y,key:U,props:ue,_owner:re},(xe!==void 0?xe:null)!==null?Object.defineProperty(y,"ref",{enumerable:!1,get:F}):Object.defineProperty(y,"ref",{enumerable:!1,value:null}),y._store={},Object.defineProperty(y._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(y,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(y,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:ce}),Object.defineProperty(y,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:ut}),Object.freeze&&(Object.freeze(y.props),Object.freeze(y)),y}function Ae(y,U){return U=M(y.type,U,y.props,y._owner,y._debugStack,y._debugTask),y._store&&(U._store.validated=y._store.validated),U}function he(y){Re(y)?y._store&&(y._store.validated=1):typeof y=="object"&&y!==null&&y.$$typeof===$e&&(y._payload.status==="fulfilled"?Re(y._payload.value)&&y._payload.value._store&&(y._payload.value._store.validated=1):y._store&&(y._store.validated=1))}function Re(y){return typeof y=="object"&&y!==null&&y.$$typeof===Me}function Ie(y){var U={"=":"=0",":":"=2"};return"$"+y.replace(/[=:]/g,function(ue){return U[ue]})}function Ge(y,U){return typeof y=="object"&&y!==null&&y.key!=null?(I(y.key),Ie(""+y.key)):U.toString(36)}function Oe(y){switch(y.status){case"fulfilled":return y.value;case"rejected":throw y.reason;default:switch(typeof y.status=="string"?y.then(E,E):(y.status="pending",y.then(function(U){y.status==="pending"&&(y.status="fulfilled",y.value=U)},function(U){y.status==="pending"&&(y.status="rejected",y.reason=U)})),y.status){case"fulfilled":return y.value;case"rejected":throw y.reason}}throw y}function be(y,U,ue,re,ce){var ut=typeof y;(ut==="undefined"||ut==="boolean")&&(y=null);var xe=!1;if(y===null)xe=!0;else switch(ut){case"bigint":case"string":case"number":xe=!0;break;case"object":switch(y.$$typeof){case Me:case bt:xe=!0;break;case $e:return xe=y._init,be(xe(y._payload),U,ue,re,ce)}}if(xe){xe=y,ce=ce(xe);var Xe=re===""?"."+Ge(xe,0):re;return ua(ce)?(ue="",Xe!=null&&(ue=Xe.replace(Qo,"$&/")+"/"),be(ce,U,ue,"",function(Wn){return Wn})):ce!=null&&(Re(ce)&&(ce.key!=null&&(xe&&xe.key===ce.key||I(ce.key)),ue=Ae(ce,ue+(ce.key==null||xe&&xe.key===ce.key?"":(""+ce.key).replace(Qo,"$&/")+"/")+Xe),re!==""&&xe!=null&&Re(xe)&&xe.key==null&&xe._store&&!xe._store.validated&&(ue._store.validated=2),ce=ue),U.push(ce)),1}if(xe=0,Xe=re===""?".":re+":",ua(y))for(var _t=0;_t<y.length;_t++)re=y[_t],ut=Xe+Ge(re,_t),xe+=be(re,U,ue,ut,ce);else if(_t=i(y),typeof _t=="function")for(_t===y.entries&&(qt||console.warn("Using Maps as children is not supported. Use an array of keyed ReactElements instead."),qt=!0),y=_t.call(y),_t=0;!(re=y.next()).done;)re=re.value,ut=Xe+Ge(re,_t++),xe+=be(re,U,ue,ut,ce);else if(ut==="object"){if(typeof y.then=="function")return be(Oe(y),U,ue,re,ce);throw U=String(y),Error("Objects are not valid as a React child (found: "+(U==="[object Object]"?"object with keys {"+Object.keys(y).join(", ")+"}":U)+"). If you meant to render a collection of children, use an array instead.")}return xe}function ze(y,U,ue){if(y==null)return y;var re=[],ce=0;return be(y,re,"","",function(ut){return U.call(ue,ut,ce++)}),re}function Qe(y){if(y._status===-1){var U=null,ue=null,re=y._ioInfo;re!=null&&(re.start=re.end=performance.now(),re.value=new Promise(function(xe,Xe){U=xe,ue=Xe})),re=y._result;var ce=re();if(ce.then(function(xe){if(y._status===0||y._status===-1){y._status=1,y._result=xe;var Xe=y._ioInfo;if(Xe!=null){Xe.end=performance.now();var _t=xe?.default;U(_t),Xe.value.status="fulfilled",Xe.value.value=_t}ce.status===void 0&&(ce.status="fulfilled",ce.value=xe)}},function(xe){if(y._status===0||y._status===-1){y._status=2,y._result=xe;var Xe=y._ioInfo;Xe!=null&&(Xe.end=performance.now(),Xe.value.then(E,E),ue(xe),Xe.value.status="rejected",Xe.value.reason=xe),ce.status===void 0&&(ce.status="rejected",ce.reason=xe)}}),re=y._ioInfo,re!=null){var ut=ce.displayName;typeof ut=="string"&&(re.name=ut)}y._status===-1&&(y._status=0,y._result=ce)}if(y._status===1)return re=y._result,re===void 0&&console.error(`lazy: Expected the result of a dynamic import() call. Instead received: %s
3
+ import{$ as Jy,$a as nB,A as Gm,Aa as G1,B as fA,Ba as L1,C as KA,Ca as j1,D as dg,Da as PC,E as Lm,Ea as Ky,F as I1,Fa as z1,G as y1,Ga as F1,H as Hu,Ha as J1,I as di,Ia as K1,J as pn,Ja as Y1,K as on,Ka as q1,L as Za,La as V1,M as xn,Ma as X1,N as FC,Na as Z1,O as Uo,Oa as WC,P as JC,Pa as $C,Q as Jn,Qa as ns,R as Q1,Ra as eB,S as S1,Sa as tB,T as jm,Ta as P1,U as gg,Ua as Jm,V as v1,Va as Yy,W as zm,Wa as W1,X as pg,Xa as $1,Y as Gu,Ya as eD,Z as KC,Za as tD,_ as YC,_a as nD,a as R,aa as D1,ab as aD,b as GC,ba as mg,bb as oD,c as bl,ca as Zo,cb as qy,d as jy,da as Po,db as Vy,e as Ia,ea as nt,eb as iD,f as Tl,fa as R1,fb as AD,g as u1,ga as b1,gb as lD,h as zy,ha as T1,hb as rD,i as f1,ia as N1,j as ic,ja as qC,k as vn,ka as Eg,kb as sD,l as sr,la as w1,lb as cD,m as jC,ma as VC,n as Fy,na as XC,o as zC,oa as x1,p as d1,pa as _1,q as g1,qa as Fm,r as p1,ra as U1,s as uA,sa as M1,t as Hm,ta as ZC,u as m1,ua as YA,v as E1,va as O1,w as h1,wa as k1,x as C1,xa as H1,y as es,ya as ts,z as B1,za as hg}from"./chunk-I63IBPUZ.js";import{a as r1,c as LC,d as s1,e as c1}from"./chunk-OBQS5CYC.js";import{a as fg,b as ka,c as Yw,d as st}from"./chunk-6EA4DGCY.js";var ZR=ka(hB=>{"use strict";var PU=Symbol.for("react.transitional.element"),WU=Symbol.for("react.fragment");function XR(n,i,l){var s=null;if(l!==void 0&&(s=""+l),i.key!==void 0&&(s=""+i.key),"key"in i){l={};for(var u in i)u!=="key"&&(l[u]=i[u])}else l=i;return i=l.ref,{$$typeof:PU,type:n,key:s,ref:i!==void 0?i:null,props:l}}hB.Fragment=WU;hB.jsx=XR;hB.jsxs=XR});var s2=ka(Dt=>{"use strict";var TQ=Symbol.for("react.transitional.element"),$U=Symbol.for("react.portal"),eM=Symbol.for("react.fragment"),tM=Symbol.for("react.strict_mode"),nM=Symbol.for("react.profiler"),aM=Symbol.for("react.consumer"),oM=Symbol.for("react.context"),iM=Symbol.for("react.forward_ref"),AM=Symbol.for("react.suspense"),lM=Symbol.for("react.memo"),t2=Symbol.for("react.lazy"),rM=Symbol.for("react.activity"),sM=Symbol.for("react.view_transition"),PR=Symbol.iterator;function cM(n){return n===null||typeof n!="object"?null:(n=PR&&n[PR]||n["@@iterator"],typeof n=="function"?n:null)}var n2={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},a2=Object.assign,o2={};function bg(n,i,l){this.props=n,this.context=i,this.refs=o2,this.updater=l||n2}bg.prototype.isReactComponent={};bg.prototype.setState=function(n,i){if(typeof n!="object"&&typeof n!="function"&&n!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,n,i,"setState")};bg.prototype.forceUpdate=function(n){this.updater.enqueueForceUpdate(this,n,"forceUpdate")};function i2(){}i2.prototype=bg.prototype;function NQ(n,i,l){this.props=n,this.context=i,this.refs=o2,this.updater=l||n2}var wQ=NQ.prototype=new i2;wQ.constructor=NQ;a2(wQ,bg.prototype);wQ.isPureReactComponent=!0;var WR=Array.isArray;function bQ(){}var Kn={H:null,A:null,T:null,S:null},A2=Object.prototype.hasOwnProperty;function xQ(n,i,l){var s=l.ref;return{$$typeof:TQ,type:n,key:i,ref:s!==void 0?s:null,props:l}}function uM(n,i){return xQ(n.type,i,n.props)}function _Q(n){return typeof n=="object"&&n!==null&&n.$$typeof===TQ}function fM(n){var i={"=":"=0",":":"=2"};return"$"+n.replace(/[=:]/g,function(l){return i[l]})}var $R=/\/+/g;function RQ(n,i){return typeof n=="object"&&n!==null&&n.key!=null?fM(""+n.key):i.toString(36)}function dM(n){switch(n.status){case"fulfilled":return n.value;case"rejected":throw n.reason;default:switch(typeof n.status=="string"?n.then(bQ,bQ):(n.status="pending",n.then(function(i){n.status==="pending"&&(n.status="fulfilled",n.value=i)},function(i){n.status==="pending"&&(n.status="rejected",n.reason=i)})),n.status){case"fulfilled":return n.value;case"rejected":throw n.reason}}throw n}function Rg(n,i,l,s,u){var p=typeof n;(p==="undefined"||p==="boolean")&&(n=null);var E=!1;if(n===null)E=!0;else switch(p){case"bigint":case"string":case"number":E=!0;break;case"object":switch(n.$$typeof){case TQ:case $U:E=!0;break;case t2:return E=n._init,Rg(E(n._payload),i,l,s,u)}}if(E)return u=u(n),E=s===""?"."+RQ(n,0):s,WR(u)?(l="",E!=null&&(l=E.replace($R,"$&/")+"/"),Rg(u,i,l,"",function(S){return S})):u!=null&&(_Q(u)&&(u=uM(u,l+(u.key==null||n&&n.key===u.key?"":(""+u.key).replace($R,"$&/")+"/")+E)),i.push(u)),1;E=0;var B=s===""?".":s+":";if(WR(n))for(var I=0;I<n.length;I++)s=n[I],p=B+RQ(s,I),E+=Rg(s,i,l,p,u);else if(I=cM(n),typeof I=="function")for(n=I.call(n),I=0;!(s=n.next()).done;)s=s.value,p=B+RQ(s,I++),E+=Rg(s,i,l,p,u);else if(p==="object"){if(typeof n.then=="function")return Rg(dM(n),i,l,s,u);throw i=String(n),Error("Objects are not valid as a React child (found: "+(i==="[object Object]"?"object with keys {"+Object.keys(n).join(", ")+"}":i)+"). If you meant to render a collection of children, use an array instead.")}return E}function CB(n,i,l){if(n==null)return n;var s=[],u=0;return Rg(n,s,"","",function(p){return i.call(l,p,u++)}),s}function gM(n){if(n._status===-1){var i=n._result,l=i();l.then(function(s){(n._status===0||n._status===-1)&&(n._status=1,n._result=s,l.status===void 0&&(l.status="fulfilled",l.value=s))},function(s){(n._status===0||n._status===-1)&&(n._status=2,n._result=s,l.status===void 0&&(l.status="rejected",l.reason=s))}),n._status===-1&&(n._status=0,n._result=l)}if(n._status===1)return n._result.default;throw n._result}var e2=typeof reportError=="function"?reportError:function(n){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var i=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof n=="object"&&n!==null&&typeof n.message=="string"?String(n.message):String(n),error:n});if(!window.dispatchEvent(i))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",n);return}console.error(n)};function l2(n){var i=Kn.T,l={};l.types=i!==null?i.types:null,Kn.T=l;try{var s=n(),u=Kn.S;u!==null&&u(l,s),typeof s=="object"&&s!==null&&typeof s.then=="function"&&s.then(bQ,e2)}catch(p){e2(p)}finally{i!==null&&l.types!==null&&(i.types=l.types),Kn.T=i}}function r2(n){var i=Kn.T;if(i!==null){var l=i.types;l===null?i.types=[n]:l.indexOf(n)===-1&&l.push(n)}else l2(r2.bind(null,n))}var pM={map:CB,forEach:function(n,i,l){CB(n,function(){i.apply(this,arguments)},l)},count:function(n){var i=0;return CB(n,function(){i++}),i},toArray:function(n){return CB(n,function(i){return i})||[]},only:function(n){if(!_Q(n))throw Error("React.Children.only expected to receive a single React element child.");return n}};Dt.Activity=rM;Dt.Children=pM;Dt.Component=bg;Dt.Fragment=eM;Dt.Profiler=nM;Dt.PureComponent=NQ;Dt.StrictMode=tM;Dt.Suspense=AM;Dt.ViewTransition=sM;Dt.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=Kn;Dt.__COMPILER_RUNTIME={__proto__:null,c:function(n){return Kn.H.useMemoCache(n)}};Dt.addTransitionType=r2;Dt.cache=function(n){return function(){return n.apply(null,arguments)}};Dt.cacheSignal=function(){return null};Dt.cloneElement=function(n,i,l){if(n==null)throw Error("The argument must be a React element, but you passed "+n+".");var s=a2({},n.props),u=n.key;if(i!=null)for(p in i.key!==void 0&&(u=""+i.key),i)!A2.call(i,p)||p==="key"||p==="__self"||p==="__source"||p==="ref"&&i.ref===void 0||(s[p]=i[p]);var p=arguments.length-2;if(p===1)s.children=l;else if(1<p){for(var E=Array(p),B=0;B<p;B++)E[B]=arguments[B+2];s.children=E}return xQ(n.type,u,s)};Dt.createContext=function(n){return n={$$typeof:oM,_currentValue:n,_currentValue2:n,_threadCount:0,Provider:null,Consumer:null},n.Provider=n,n.Consumer={$$typeof:aM,_context:n},n};Dt.createElement=function(n,i,l){var s,u={},p=null;if(i!=null)for(s in i.key!==void 0&&(p=""+i.key),i)A2.call(i,s)&&s!=="key"&&s!=="__self"&&s!=="__source"&&(u[s]=i[s]);var E=arguments.length-2;if(E===1)u.children=l;else if(1<E){for(var B=Array(E),I=0;I<E;I++)B[I]=arguments[I+2];u.children=B}if(n&&n.defaultProps)for(s in E=n.defaultProps,E)u[s]===void 0&&(u[s]=E[s]);return xQ(n,p,u)};Dt.createRef=function(){return{current:null}};Dt.forwardRef=function(n){return{$$typeof:iM,render:n}};Dt.isValidElement=_Q;Dt.lazy=function(n){return{$$typeof:t2,_payload:{_status:-1,_result:n},_init:gM}};Dt.memo=function(n,i){return{$$typeof:lM,type:n,compare:i===void 0?null:i}};Dt.startTransition=l2;Dt.unstable_useCacheRefresh=function(){return Kn.H.useCacheRefresh()};Dt.use=function(n){return Kn.H.use(n)};Dt.useActionState=function(n,i,l){return Kn.H.useActionState(n,i,l)};Dt.useCallback=function(n,i){return Kn.H.useCallback(n,i)};Dt.useContext=function(n){return Kn.H.useContext(n)};Dt.useDebugValue=function(){};Dt.useDeferredValue=function(n,i){return Kn.H.useDeferredValue(n,i)};Dt.useEffect=function(n,i){return Kn.H.useEffect(n,i)};Dt.useEffectEvent=function(n){return Kn.H.useEffectEvent(n)};Dt.useId=function(){return Kn.H.useId()};Dt.useImperativeHandle=function(n,i,l){return Kn.H.useImperativeHandle(n,i,l)};Dt.useInsertionEffect=function(n,i){return Kn.H.useInsertionEffect(n,i)};Dt.useLayoutEffect=function(n,i){return Kn.H.useLayoutEffect(n,i)};Dt.useMemo=function(n,i){return Kn.H.useMemo(n,i)};Dt.useOptimistic=function(n,i){return Kn.H.useOptimistic(n,i)};Dt.useReducer=function(n,i,l){return Kn.H.useReducer(n,i,l)};Dt.useRef=function(n){return Kn.H.useRef(n)};Dt.useState=function(n){return Kn.H.useState(n)};Dt.useSyncExternalStore=function(n,i,l){return Kn.H.useSyncExternalStore(n,i,l)};Dt.useTransition=function(){return Kn.H.useTransition()};Dt.version="19.3.0"});var c2=ka((yt,BB)=>{"use strict";process.env.NODE_ENV!=="production"&&(function(){function n(y,U){Object.defineProperty(s.prototype,y,{get:function(){console.warn("%s(...) is deprecated in plain JavaScript React classes. %s",U[0],U[1])}})}function i(y){return y===null||typeof y!="object"?null:(y=Wa&&y[Wa]||y["@@iterator"],typeof y=="function"?y:null)}function l(y,U){y=(y=y.constructor)&&(y.displayName||y.name)||"ReactClass";var ue=y+"."+U;St[ue]||(console.error("Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.",U,y),St[ue]=!0)}function s(y,U,ue){this.props=y,this.context=U,this.refs=en,this.updater=ue||Ft}function u(){}function p(y,U,ue){this.props=y,this.context=U,this.refs=en,this.updater=ue||Ft}function E(){}function B(y){return""+y}function I(y){try{B(y);var U=!1}catch{U=!0}if(U){U=console;var ue=U.error,re=typeof Symbol=="function"&&Symbol.toStringTag&&y[Symbol.toStringTag]||y.constructor.name||"Object";return ue.call(U,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",re),B(y)}}function S(y){if(y==null)return null;if(typeof y=="function")return y.$$typeof===Pn?null:y.displayName||y.name||null;if(typeof y=="string")return y;switch(y){case Qt:return"Fragment";case Te:return"Profiler";case J:return"StrictMode";case ct:return"Suspense";case qe:return"SuspenseList";case mn:return"Activity";case Ga:return"ViewTransition"}if(typeof y=="object")switch(typeof y.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),y.$$typeof){case bt:return"Portal";case Pe:return y.displayName||"Context";case Le:return(y._context.displayName||"Context")+".Consumer";case We:var U=y.render;return y=y.displayName,y||(y=U.displayName||U.name||"",y=y!==""?"ForwardRef("+y+")":"ForwardRef"),y;case He:return U=y.displayName||null,U!==null?U:S(y.type)||"Memo";case $e:U=y._payload,y=y._init;try{return S(y(U))}catch{}}return null}function N(y){if(y===Qt)return"<>";if(typeof y=="object"&&y!==null&&y.$$typeof===$e)return"<...>";try{var U=S(y);return U?"<"+U+">":"<...>"}catch{return"<...>"}}function w(){var y=Ve.A;return y===null?null:y.getOwner()}function T(){return Error("react-stack-top-frame")}function x(y){if(Wt.call(y,"key")){var U=Object.getOwnPropertyDescriptor(y,"key").get;if(U&&U.isReactWarning)return!1}return y.key!==void 0}function z(y,U){function ue(){On||(On=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",U))}ue.isReactWarning=!0,Object.defineProperty(y,"key",{get:ue,configurable:!0})}function F(){var y=S(this.type);return Na[y]||(Na[y]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),y=this.props.ref,y!==void 0?y:null}function M(y,U,ue,re,ce,ut){var xe=ue.ref;return y={$$typeof:Me,type:y,key:U,props:ue,_owner:re},(xe!==void 0?xe:null)!==null?Object.defineProperty(y,"ref",{enumerable:!1,get:F}):Object.defineProperty(y,"ref",{enumerable:!1,value:null}),y._store={},Object.defineProperty(y._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(y,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(y,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:ce}),Object.defineProperty(y,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:ut}),Object.freeze&&(Object.freeze(y.props),Object.freeze(y)),y}function Ae(y,U){return U=M(y.type,U,y.props,y._owner,y._debugStack,y._debugTask),y._store&&(U._store.validated=y._store.validated),U}function he(y){Re(y)?y._store&&(y._store.validated=1):typeof y=="object"&&y!==null&&y.$$typeof===$e&&(y._payload.status==="fulfilled"?Re(y._payload.value)&&y._payload.value._store&&(y._payload.value._store.validated=1):y._store&&(y._store.validated=1))}function Re(y){return typeof y=="object"&&y!==null&&y.$$typeof===Me}function Ie(y){var U={"=":"=0",":":"=2"};return"$"+y.replace(/[=:]/g,function(ue){return U[ue]})}function Ge(y,U){return typeof y=="object"&&y!==null&&y.key!=null?(I(y.key),Ie(""+y.key)):U.toString(36)}function Oe(y){switch(y.status){case"fulfilled":return y.value;case"rejected":throw y.reason;default:switch(typeof y.status=="string"?y.then(E,E):(y.status="pending",y.then(function(U){y.status==="pending"&&(y.status="fulfilled",y.value=U)},function(U){y.status==="pending"&&(y.status="rejected",y.reason=U)})),y.status){case"fulfilled":return y.value;case"rejected":throw y.reason}}throw y}function be(y,U,ue,re,ce){var ut=typeof y;(ut==="undefined"||ut==="boolean")&&(y=null);var xe=!1;if(y===null)xe=!0;else switch(ut){case"bigint":case"string":case"number":xe=!0;break;case"object":switch(y.$$typeof){case Me:case bt:xe=!0;break;case $e:return xe=y._init,be(xe(y._payload),U,ue,re,ce)}}if(xe){xe=y,ce=ce(xe);var Xe=re===""?"."+Ge(xe,0):re;return ua(ce)?(ue="",Xe!=null&&(ue=Xe.replace(Qo,"$&/")+"/"),be(ce,U,ue,"",function(Wn){return Wn})):ce!=null&&(Re(ce)&&(ce.key!=null&&(xe&&xe.key===ce.key||I(ce.key)),ue=Ae(ce,ue+(ce.key==null||xe&&xe.key===ce.key?"":(""+ce.key).replace(Qo,"$&/")+"/")+Xe),re!==""&&xe!=null&&Re(xe)&&xe.key==null&&xe._store&&!xe._store.validated&&(ue._store.validated=2),ce=ue),U.push(ce)),1}if(xe=0,Xe=re===""?".":re+":",ua(y))for(var _t=0;_t<y.length;_t++)re=y[_t],ut=Xe+Ge(re,_t),xe+=be(re,U,ue,ut,ce);else if(_t=i(y),typeof _t=="function")for(_t===y.entries&&(qt||console.warn("Using Maps as children is not supported. Use an array of keyed ReactElements instead."),qt=!0),y=_t.call(y),_t=0;!(re=y.next()).done;)re=re.value,ut=Xe+Ge(re,_t++),xe+=be(re,U,ue,ut,ce);else if(ut==="object"){if(typeof y.then=="function")return be(Oe(y),U,ue,re,ce);throw U=String(y),Error("Objects are not valid as a React child (found: "+(U==="[object Object]"?"object with keys {"+Object.keys(y).join(", ")+"}":U)+"). If you meant to render a collection of children, use an array instead.")}return xe}function ze(y,U,ue){if(y==null)return y;var re=[],ce=0;return be(y,re,"","",function(ut){return U.call(ue,ut,ce++)}),re}function Qe(y){if(y._status===-1){var U=null,ue=null,re=y._ioInfo;re!=null&&(re.start=re.end=performance.now(),re.value=new Promise(function(xe,Xe){U=xe,ue=Xe})),re=y._result;var ce=re();if(ce.then(function(xe){if(y._status===0||y._status===-1){y._status=1,y._result=xe;var Xe=y._ioInfo;if(Xe!=null){Xe.end=performance.now();var _t=xe?.default;U(_t),Xe.value.status="fulfilled",Xe.value.value=_t}ce.status===void 0&&(ce.status="fulfilled",ce.value=xe)}},function(xe){if(y._status===0||y._status===-1){y._status=2,y._result=xe;var Xe=y._ioInfo;Xe!=null&&(Xe.end=performance.now(),Xe.value.then(E,E),ue(xe),Xe.value.status="rejected",Xe.value.reason=xe),ce.status===void 0&&(ce.status="rejected",ce.reason=xe)}}),re=y._ioInfo,re!=null){var ut=ce.displayName;typeof ut=="string"&&(re.name=ut)}y._status===-1&&(y._status=0,y._result=ce)}if(y._status===1)return re=y._result,re===void 0&&console.error(`lazy: Expected the result of a dynamic import() call. Instead received: %s
4
4
 
5
5
  Your code should look like:
6
6
  const MyComponent = lazy(() => import('./MyComponent'))
@@ -489,7 +489,7 @@ autoload -U compinit && compinit`;break}case"fish":{N=cr(S,".config","fish","com
489
489
  `:`# TDK (generated files and secrets)
490
490
  `}${u.join(`
491
491
  `)}
492
- `),u}import{existsSync as Cx,lstatSync as Bx}from"node:fs";import{isAbsolute as mD,normalize as AB,relative as Ix,sep as ED}from"node:path";function yx(n){let i=AB(n).split(ED).join("/");return mD(n)||i===".."||i.startsWith("../")?!1:i.split("/").includes(".autogenerated")||i.startsWith(".tdk/.tdk-out/")||i==="shared-platform-engineering/docker-templates"||i.startsWith("shared-platform-engineering/docker-templates/")||i.startsWith("product_autogenerated_resource_manifests/")||i.startsWith("product_autogenerated_services_list/")?!0:i==="Tiltfile"||/^TILT_[^/]+\.star$/.test(i)||i===".tiltignore"||i==="package.json"||i==="services/platform/database-management/docker-compose.yml"}function Lu(n,i){let l=mD(i)?AB(i):AB(`${n}/${i}`),s=Ix(n,l).split(ED).join("/");if(!yx(s))throw new Error(`Refusing to write outside TDK's generated-file allowlist: ${s}`);let u=n;for(let p of s.split("/"))if(u=AB(`${u}/${p}`),Cx(u)&&Bx(u).isSymbolicLink())throw new Error(`Refusing to write through a symbolic link in generated path: ${s}`);return l}var Qx={"database-management":{name:"database-management",description:"Generate and load the stack-level PostgreSQL docker-compose file",generatedFiles:["services/platform/database-management/docker-compose.yml"]}};function hD(n,i){return Qx[i]?["pre_alpha","alpha","beta"].some(l=>n[l]?.enabledStacks?.includes(i)):!1}var vx=Sx(new URL("../dist/generator/template-engine.js",import.meta.url).href),tQ=Ze.dirname(vx);function zu(n){let i=[Ze.join(tQ,"..","..","templates"),Ze.join(tQ,"..","templates"),Ze.join(tQ,"..","..","..","templates"),Ze.join(process.cwd(),"node_modules","@tdk-landscape","tdk-cli-core","templates"),Ze.join(Ze.dirname(process.execPath),"tdk-cli","cli","templates")],l=[];for(let s of i){let u=Ze.join(s,n);l.push(u);try{return It.readFileSync(u,"utf-8")}catch{}}throw new Error(`Failed to load template ${n} from any of these paths: ${l.join(", ")}`)}var nQ=null;function Dx(){return nQ||(nQ={".tiltignore":zu(".tiltignore.hbs"),"TILT_RESOURCE_DEFAULTS.star":zu("TILT_RESOURCE_DEFAULTS.star.hbs"),"TILT_TECH_STACK.star":zu("TILT_TECH_STACK.star.hbs"),Tiltfile:zu("Tiltfile.hbs"),"spec.master":zu("spec.master.hbs")}),nQ}var Rx={proxy:"Traefik reverse proxy",verdaccio:"Private npm registry","database-management":"PostgreSQL database"},bx={monitoring:"Signoz, SkyWalking (RAM intensive)",elk:"Elasticsearch/Logstash/Kibana",debezium:"CDC with Kafka/Zookeeper",golden_image:"Golden image rebuild (one-time)",verdaccio:"Premium local npm registry"},BD=["TILT_TECH_STACK.star","TILT_RESOURCE_DEFAULTS.star","spec.master","Tiltfile",".tiltignore"],Cg=class{templatesDir;constructor(i){let l=fg("node:url").fileURLToPath(new URL("../dist/generator",import.meta.url))||Ze.dirname(new URL(new URL("../dist/generator/template-engine.js",import.meta.url).href).pathname);this.templatesDir=i||Ze.join(l,"..","..","templates"),this.registerHelpers()}formatStarlarkValue(i){return i==null?"None":typeof i=="string"?`"${i.replace(/"/g,'\\"')}"`:typeof i=="boolean"?i?"True":"False":typeof i=="number"?String(i):Array.isArray(i)?`[${i.map(s=>this.formatStarlarkValue(s)).join(", ")}]`:typeof i=="object"?`{${Object.entries(i).map(([s,u])=>`"${s}": ${this.formatStarlarkValue(u)}`).join(", ")}}`:String(i)}registerHelpers(){ju.registerHelper("starlark",i=>new ju.SafeString(this.formatStarlarkValue(i))),ju.registerHelper("starlarkArray",i=>{if(!Array.isArray(i))return new ju.SafeString("[]");let l=i.map(s=>this.formatStarlarkValue(s));return new ju.SafeString(`[${l.join(", ")}]`)}),ju.registerHelper("json",i=>JSON.stringify(i))}buildContext(i){return{version:ki.version,tech:ki.tech,ports:ki.ports,health:ki.health,naming:ki.naming,traefik:ki.traefik,filewatchIgnores:[...ki.filewatchIgnores],serviceTypes:ki.serviceTypes,paths:ki.paths,discovery:{scanIntervalSeconds:ki.discovery.scanIntervalSeconds,maxManifestsPerRoot:ki.discovery.maxManifestsPerRoot,paths:i.discovery.paths},docker:ki.docker,runtime:ki.runtime,project:i.project,phases:Tx(i.phases),alwaysEnabledInfra:i.always_enabled_infra??[...f1],optionalInfra:i.optional_infra,serviceDescriptions:Rx,infraDescriptions:bx}}loadTemplate(i){let l=Ze.join(this.templatesDir,`${i}.hbs`),s=It.existsSync(l)?It.readFileSync(l,"utf-8"):Dx()[i];if(!s)throw new Error(`Template not found: ${l}`);return ju.compile(s)}generateTechStack(i){return this.loadTemplate("TILT_TECH_STACK.star")(i)}generateServiceDefaults(i){return this.loadTemplate("TILT_RESOURCE_DEFAULTS.star")(i)}generateSpecMaster(i){return this.loadTemplate("spec.master")(i)}generateTiltfile(i){return this.loadTemplate("Tiltfile")(i)}generateTiltIgnore(i){return this.loadTemplate(".tiltignore")(i)}generateAll(i){let l=this.buildContext(i);return{"TILT_TECH_STACK.star":this.generateTechStack(l),"TILT_RESOURCE_DEFAULTS.star":this.generateServiceDefaults(l),"spec.master":this.generateSpecMaster(l),Tiltfile:this.generateTiltfile(l),".tiltignore":this.generateTiltIgnore(l)}}};function Tx(n){let i={...n};for(let l of Object.keys(i))i[l]={...i[l],enabledStacks:Array.from(new Set(i[l].enabledStacks))};return i}function Nx(n){return n.replace(/-/g,"_")}function wx(n){let i=Nx(n.project.name||"tdk_project");return`###############################################################################
492
+ `),u}import{existsSync as Cx,lstatSync as Bx}from"node:fs";import{isAbsolute as mD,normalize as AB,relative as Ix,sep as ED}from"node:path";function yx(n){let i=AB(n).split(ED).join("/");return mD(n)||i===".."||i.startsWith("../")?!1:i.split("/").includes(".autogenerated")||i.startsWith(".tdk/.tdk-out/")||i==="shared-platform-engineering/docker-templates"||i.startsWith("shared-platform-engineering/docker-templates/")||i.startsWith("product_autogenerated_resource_manifests/")||i.startsWith("product_autogenerated_services_list/")?!0:i==="Tiltfile"||/^TILT_[^/]+\.star$/.test(i)||i===".tiltignore"||i==="package.json"||i==="services/platform/database-management/docker-compose.yml"}function Lu(n,i){let l=mD(i)?AB(i):AB(`${n}/${i}`),s=Ix(n,l).split(ED).join("/");if(!yx(s))throw new Error(`Refusing to write outside TDK's generated-file allowlist: ${s}`);let u=n;for(let p of s.split("/"))if(u=AB(`${u}/${p}`),Cx(u)&&Bx(u).isSymbolicLink())throw new Error(`Refusing to write through a symbolic link in generated path: ${s}`);return l}var Qx={"database-management":{name:"database-management",description:"Generate and load the stack-level PostgreSQL docker-compose file",generatedFiles:["services/platform/database-management/docker-compose.yml"]}};function hD(n,i){return Qx[i]?["pre_alpha","alpha","beta"].some(l=>n[l]?.enabledStacks?.includes(i)):!1}var vx=Sx(new URL("../dist/generator/template-engine.js",import.meta.url).href),tQ=Ze.dirname(vx);function zu(n){let i=[Ze.join(tQ,"..","..","templates"),Ze.join(tQ,"..","templates"),Ze.join(tQ,"..","..","..","templates"),Ze.join(process.cwd(),"node_modules","@tdk-landscape","tdk-cli-core","templates"),Ze.join(Ze.dirname(process.execPath),"tdk-cli","cli","templates")],l=[];for(let s of i){let u=Ze.join(s,n);l.push(u);try{return It.readFileSync(u,"utf-8")}catch{}}throw new Error(`Failed to load template ${n} from any of these paths: ${l.join(", ")}`)}var nQ=null;function Dx(){return nQ||(nQ={".tiltignore":zu(".tiltignore.hbs"),"TILT_RESOURCE_DEFAULTS.star":zu("TILT_RESOURCE_DEFAULTS.star.hbs"),"TILT_TECH_STACK.star":zu("TILT_TECH_STACK.star.hbs"),Tiltfile:zu("Tiltfile.hbs"),"spec.master":zu("spec.master.hbs")}),nQ}var Rx={proxy:"Traefik reverse proxy",verdaccio:"Private npm registry","database-management":"PostgreSQL database"},bx={monitoring:"Signoz, SkyWalking (RAM intensive)",elk:"Elasticsearch/Logstash/Kibana",debezium:"CDC with Kafka/Zookeeper",golden_image:"Golden image rebuild (one-time)",verdaccio:"Premium local npm registry"},BD=["TILT_TECH_STACK.star","TILT_RESOURCE_DEFAULTS.star","spec.master","Tiltfile",".tiltignore"],Cg=class{templatesDir;constructor(i){let l=fg("node:url").fileURLToPath(new URL("../dist/generator",import.meta.url))||Ze.dirname(new URL(new URL("../dist/generator/template-engine.js",import.meta.url).href).pathname);this.templatesDir=i||Ze.join(l,"..","..","templates"),this.registerHelpers()}quoteStarlarkString(i){return`"${i.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}formatStarlarkValue(i){return i==null?"None":typeof i=="string"?this.quoteStarlarkString(i):typeof i=="boolean"?i?"True":"False":typeof i=="number"?String(i):Array.isArray(i)?`[${i.map(s=>this.formatStarlarkValue(s)).join(", ")}]`:typeof i=="object"?`{${Object.entries(i).map(([s,u])=>`${this.quoteStarlarkString(s)}: ${this.formatStarlarkValue(u)}`).join(", ")}}`:String(i)}registerHelpers(){ju.registerHelper("starlark",i=>new ju.SafeString(this.formatStarlarkValue(i))),ju.registerHelper("starlarkArray",i=>{if(!Array.isArray(i))return new ju.SafeString("[]");let l=i.map(s=>this.formatStarlarkValue(s));return new ju.SafeString(`[${l.join(", ")}]`)}),ju.registerHelper("json",i=>JSON.stringify(i))}buildContext(i){return{version:ki.version,tech:ki.tech,ports:ki.ports,health:ki.health,naming:ki.naming,traefik:ki.traefik,filewatchIgnores:[...ki.filewatchIgnores],serviceTypes:ki.serviceTypes,paths:ki.paths,discovery:{scanIntervalSeconds:ki.discovery.scanIntervalSeconds,maxManifestsPerRoot:ki.discovery.maxManifestsPerRoot,paths:i.discovery.paths},docker:ki.docker,runtime:ki.runtime,project:i.project,phases:Tx(i.phases),alwaysEnabledInfra:i.always_enabled_infra??[...f1],optionalInfra:i.optional_infra,serviceDescriptions:Rx,infraDescriptions:bx}}loadTemplate(i){let l=Ze.join(this.templatesDir,`${i}.hbs`),s=It.existsSync(l)?It.readFileSync(l,"utf-8"):Dx()[i];if(!s)throw new Error(`Template not found: ${l}`);return ju.compile(s)}generateTechStack(i){return this.loadTemplate("TILT_TECH_STACK.star")(i)}generateServiceDefaults(i){return this.loadTemplate("TILT_RESOURCE_DEFAULTS.star")(i)}generateSpecMaster(i){return this.loadTemplate("spec.master")(i)}generateTiltfile(i){return this.loadTemplate("Tiltfile")(i)}generateTiltIgnore(i){return this.loadTemplate(".tiltignore")(i)}generateAll(i){let l=this.buildContext(i);return{"TILT_TECH_STACK.star":this.generateTechStack(l),"TILT_RESOURCE_DEFAULTS.star":this.generateServiceDefaults(l),"spec.master":this.generateSpecMaster(l),Tiltfile:this.generateTiltfile(l),".tiltignore":this.generateTiltIgnore(l)}}};function Tx(n){let i={...n};for(let l of Object.keys(i))i[l]={...i[l],enabledStacks:Array.from(new Set(i[l].enabledStacks))};return i}function Nx(n){return n.replace(/-/g,"_")}function wx(n){let i=Nx(n.project.name||"tdk_project");return`###############################################################################
493
493
  # SYSTEM-GENERATED - DO NOT EDIT
494
494
  # Stack feature: database-management
495
495
  # Source: .tdk/project.json phases.*.enabledStacks includes "database-management"
@@ -607,7 +607,7 @@ Available templates:`));for(let[p,E]of Object.entries(dB))console.log(` ${R.cya
607
607
  `,0),nt(`Source: ${l.bundledPath?"bundled TDK example":l.repo}`,0),nt(`Destination: ${u}
608
608
  `,0);try{if(l.bundledPath){let p=gB(AU(lU(new URL("../dist/commands/project.js",import.meta.url).href)),"../../../");nU(gB(p,l.bundledPath),u,{recursive:!0});let E=iU(u).replace(/-/g,"_");for(let B of["services/platform/messaging/docker-compose.yml","services/shop/orders-api/service.json","services/shop/orders-api/src/index.ts","services/shop/orders-worker/service.json","services/shop/orders-worker/src/index.ts"]){let I=Dg(u,B),S=fQ(I,"utf-8");oU(I,S.replaceAll("tdk_example",E))}}else tU("git",["clone",l.repo,u],{stdio:"inherit"})}catch{Uo(l.bundledPath?"Bundled example copy failed. Reinstall the TDK CLI package and try again.":"git clone failed. Check you have git installed and network access.")}console.log(R.green(`
609
609
  \u2705 Cloned "${n}" into ${s}/`)),nt(`
610
- Next steps:`,0),nt(`1. cd ${s}`),nt("2. tdk doctor # check Docker/Tilt are ready"),nt("3. tdk up # start the stack")}var Pm={version:"1.0",project:{name:"",version:"1.0.0"},phases:{pre_alpha:{name:"Pre-Alpha",description:"Core infrastructure and MVP services",enabledStacks:cU()},alpha:{name:"Alpha",description:"Essential business services",enabledStacks:[]},beta:{name:"Beta",description:"Extended features",enabledStacks:[]},out_of_scope:{name:"Out of Scope",description:"Future releases",enabledStacks:[]}},optional_infra:{monitoring:!1,elk:!1,debezium:!1,golden_image:!0,verdaccio:!1},discovery:{paths:["services/*/*"]},overrides:{}},cR=new rU("project").description("Initialize or validate project-level master configuration").argument("[template]",`Clone a starter example instead of a blank project (${Object.keys(dB).join(", ")})`).option("--path <dir>","Directory to clone the template into (default: the template's repo name)").option("--check","Check if master configs exist and are in sync").option("--force","Overwrite existing configuration (dangerous)").option("--yes","Non-interactive mode (use defaults)").option("--config-file <path>","Load project config from existing JSON file").action(async(n,i)=>{let{assertMachineReadyOrExit:l}=await import("./cold-preflight-6X67ZFII.js");if(await l(),n){await xn(async()=>uU(n,i.path));return}await xn(async()=>{let s=vn();s||(s=rR(),Po(`\u{1F680} Initializing new TDK project...
610
+ Next steps:`,0),nt(`1. cd ${s}`),nt("2. tdk doctor # check Docker/Tilt are ready"),nt("3. tdk up # start the stack")}var Pm={version:"1.0",project:{name:"",version:"1.0.0"},phases:{pre_alpha:{name:"Pre-Alpha",description:"Core infrastructure and MVP services",enabledStacks:cU()},alpha:{name:"Alpha",description:"Essential business services",enabledStacks:[]},beta:{name:"Beta",description:"Extended features",enabledStacks:[]},out_of_scope:{name:"Out of Scope",description:"Future releases",enabledStacks:[]}},optional_infra:{monitoring:!1,elk:!1,debezium:!1,golden_image:!0,verdaccio:!1},discovery:{paths:["services/*/*"]},overrides:{}},cR=new rU("project").description("Initialize or validate project-level master configuration").argument("[template]",`Clone a starter example instead of a blank project (${Object.keys(dB).join(", ")})`).option("--path <dir>","Directory to clone the template into (default: the template's repo name)").option("--check","Check if master configs exist and are in sync").option("--force","Overwrite existing configuration (dangerous)").option("--yes","Non-interactive mode (use defaults)").option("--config-file <path>","Load project config from existing JSON file").action(async(n,i)=>{let{assertMachineReadyOrExit:l}=await import("./cold-preflight-NXFER2W6.js");if(await l(),n){await xn(async()=>uU(n,i.path));return}await xn(async()=>{let s=vn();s||(s=rR(),Po(`\u{1F680} Initializing new TDK project...
611
611
  `),nt(`Location: ${s}
612
612
  `,0));let u=Dg(s,".tdk"),p=Dg(u,"project.json");if(i.check){let x=bl.every(F=>Ac(Dg(s,".tdk",".tdk-out",F))),z=Ac(p);if(x&&z){let F=Hi(s);Zo("Project configuration is valid"),nt(`Project: ${F.project.name}`,3),nt(`Phases: ${Object.keys(F.phases).join(", ")}`,3),process.exit(0)}else{if(console.log(R.yellow("\u26A0\uFE0F Project configuration incomplete:")),z||nt(".tdk/project.json (not found)",3),!x)for(let F of bl.filter(M=>!Ac(Dg(s,".tdk/.tdk-out",M))))nt(`.tdk/.tdk-out/${F} (not found)`,3);nt("Run `tdk project` to create them."),process.exit(1)}}Gu("Project Configuration"),nt(`Project root: ${s}
613
613
  `,0),Ac(u)||(pD(u),Zo("Created: .tdk/ directory"));let E=Ac(p);if(E&&!i.force){Zo(".tdk/project.json exists");let x=JSON.parse(fQ(p,"utf-8")),z=Hi(s),F=dQ(s),M=gQ(z,F);if((M.length>0||!x.phases)&&as(p,z),M.length>0&&nt(`Auto-enabled discovered service stacks: ${M.join(", ")}`,0),Po(`
@@ -1416,7 +1416,7 @@ Read about how to prevent this error on https://github.com/vadimdemedes/ink/#isr
1416
1416
  `)}`,B="Upgrade tdk to a version that supports these files. Changing schemaVersion by hand is not a fix";i.onInvalid?.(`${E}
1417
1417
  Fix: ${B}`),console.error(R.red(`\u2717 ${E}`)),console.error(R.gray(` Fix: ${B}`)),l(1)}import{execFileSync as X4}from"node:child_process";var ow=(n,i)=>X4(n,i,{encoding:"utf-8",stdio:"pipe",windowsHide:!0});function Z4(n,i=process.platform,l=ow){if(!Number.isInteger(n)||n<1||n>65535)return[];if(i==="win32"){let u=`$port=${n}; Get-NetTCPConnection -LocalPort $port -State Listen -ErrorAction SilentlyContinue | ForEach-Object { $p=Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue; if ($p -and $p.ProcessName -eq 'tilt') { $_.OwningProcess } } | Sort-Object -Unique`;try{return l("powershell.exe",["-NoProfile","-Command",u]).split(/\s+/).map(Number).filter(p=>Number.isInteger(p)&&p>0)}catch{throw new Error(`Unable to inspect Tilt listeners on port ${n} with PowerShell.`)}}let s;try{s=l("lsof",["-nP","-t",`-iTCP:${n}`,"-sTCP:LISTEN"]).split(/\s+/).map(Number).filter(u=>Number.isInteger(u)&&u>0)}catch(u){let p=u,E=p.stderr?.toString().trim();if(p?.status===1&&!E)return[];throw new Error(`Unable to inspect listeners on port ${n}. Install lsof or resolve the lsof error before using --force.`,{cause:p})}return s.filter(u=>{try{return l("ps",["-p",String(u),"-o","comm="]).trim().split(/[\\/]/).at(-1)==="tilt"}catch(p){throw new Error(`Unable to identify the process listening on port ${n}.`,{cause:p})}})}function TI(n,i=process.platform,l=ow){let s=Z4(n,i,l);for(let u of s)i==="win32"?l("taskkill.exe",["/PID",String(u),"/F"]):l("kill",["-TERM",String(u)]);return s}function iw(n){if(n===void 0||n==="")return{ok:!0,port:void 0};let i=Number(n);return!/^[0-9]+$/.test(n)||!VC(i)?{ok:!1,message:`Invalid TILT_PORT "${n}": expected an integer from 1 to 65535.`}:{ok:!0,port:i}}function Aw(n){return n.runningPorts.length===0||n.force?{action:"start"}:n.only?{action:"only-blocked",ports:n.runningPorts}:{action:"already-running",ports:n.runningPorts}}async function lw(n){if(n.configuredPort!==void 0)return{port:n.configuredPort,autoSwitched:!1};if(n.force)return{port:n.basePort,autoSwitched:!1};let i=await n.findAvailablePort(n.basePort,10);return i&&i!==n.basePort?{port:i,autoSwitched:!0}:{port:n.basePort,autoSwitched:!1}}async function rw(n,i){n.force&&(n.quiet||i.log(`Force flag set - stopping Tilt on port ${n.port} if running...`),i.stop(n.port),await i.wait(2e3))}function sw(n,i){let l=new Set(i.map(s=>s.name));return n.filter(s=>!l.has(s))}function cw(n,i){let l=new Map(i.map(p=>[p.name,p])),s=new Set,u=p=>{if(!(s.has(p)||!l.has(p))){s.add(p);for(let E of l.get(p)?.config?.dependsOn??[])u(E)}};for(let p of n)u(p);return{selected:i.filter(p=>s.has(p.name)),dependencies:i.map(p=>p.name).filter(p=>s.has(p)&&!n.includes(p))}}function uw(n,i=[]){return["TDK is up.",`Tilt UI: http://localhost:${n}`,"App URLs:",...i.length>0?i.slice(0,5).map(l=>` ${l}`):[" run: tdk networks"],"Stop: tdk down"]}function e3(n,i){return n!=="win32"||i==="1"?null:"Landscape startup needs Ubuntu on WSL2. Native Windows is inspect-only."}async function t3(n=Y1(),i=n3){return n.kind==="webcontainer"?J1:q1(n.kind)&&!await i()?K1:null}async function n3(){let{execFile:n}=await import("node:child_process");return new Promise(i=>{n("docker",["ps"],{timeout:1e4},l=>i(!l))})}var a3=2;function o3(n){let i;try{({handEdited:i}=lB(n))}catch(l){if(l instanceof Km)return null;throw l}return i.length===0?null:["Generated files were edited by hand and no longer match service.json:",...i.map(l=>` ${l}`),"Run `tdk config regenerate` to discard the edits, or bypass with `tdk up --ignore-drift`."]}function i3(n,i,l=process.exit){if(i.ignoreDrift){console.warn(R.yellow("Warning: --ignore-drift set; generated files were not checked."));return}let s=o3(n);if(s){i.onDrift?.(s.join(`
1418
1418
  `));for(let u of s)console.error(R.red(u));l(a3)}}function A3(n,i,l=sr(),s=process.exit){if(i.ignoreVersion){console.warn(R.yellow("Warning: --ignore-version set; minTdkVersion was not checked."));return}let u=lD(n,l);u.status==="none"||u.status==="ok"||(i.onFail?.(`${u.message}
1419
- ${u.fix}`),console.error(R.red(u.message)),console.error(R.red(u.fix)),s(1))}function l3(n,i=3e4){return new Promise(l=>{let s=Date.now()+i,u=()=>{let p=P4({host:"127.0.0.1",port:n}),E=!1,B=I=>{E||(E=!0,p.destroy(),I||Date.now()>=s?l(I):setTimeout(u,250))};p.once("connect",()=>B(!0)),p.once("error",()=>B(!1))};u()})}var fw=new $4("up").description("Start all services (optionally filtered by stack)").alias("deploy").argument("[stack-name]","Name of the stack to start (optional - runs all if omitted)").option("-v, --verbose","Enable verbose output",!1).option("-q, --quiet","Suppress non-essential output",!1).option("--dry-run","Show what would be started without starting",!1).option("-f, --force","Kill existing Tilt process before starting",!1).option("--ignore-drift","Start even if generated files differ from service.json",!1).option("--ignore-version","Start even if this tdk is older than minTdkVersion in .tdk/project.json",!1).option("--only <services...>","Start only these services plus what the Tiltfile enables for them (their dependsOn services and shared infrastructure). With a stack, names must belong to that stack; dependencies may cross stacks").option("--json","Print one JSON object on stdout when the stack is ready or the command fails; implies --quiet",!1).action(async(n,i)=>{let l=i.json?fB("UP_FAILED","tdk up"):void 0;i.json&&(i.quiet=!0);let s=iw(process.env.TILT_PORT);s.ok||(l?.({ok:!1},[{code:"INVALID_TILT_PORT",message:s.message}]),Uo(s.message));let u=s.port,p=vn();p&&A3(p,{ignoreVersion:i.ignoreVersion,onFail:N=>l?.({ok:!1},[{code:"TDK_VERSION_TOO_OLD",message:N}])});let E=i.dryRun?null:await t3();E&&(l?.({ok:!1},[{code:"HOST_UNSUPPORTED",message:E}]),Uo(E));let B=e3(process.platform,process.env.TDK_ALLOW_NATIVE_WINDOWS);B&&Uo(B);let I=vn();if(I&&aw(I,{onInvalid:N=>l?.({ok:!1},[{code:"INVALID_SCHEMA_VERSION",message:N}])}),!i.dryRun){let{assertMachineReadyOrExit:N}=await import("./cold-preflight-6X67ZFII.js");await N()}let S=async()=>{let N=i.dryRun?Za():vn(),w=N??process.cwd(),T=O1(),x,z=[];if((!i.only||n)&&(x=ts(T),z=x.map(J=>J.name)),i.only){if(n&&!hg(n)){let Le=on.stackNotFound(n,z);l?.({ok:!1},[cB(Le).error]),Le.exit()}let J=n?T.filter(Le=>Le.stack===n):T,Te=sw(i.only,J);if(Te.length>0){let Le=J.map(We=>We.name),Pe=on.unknownServices(Te,Le);l?.({ok:!1},[{code:"UNKNOWN_SERVICE",message:Pe.message,...Pe.suggestions.length>0?{suggestions:Pe.suggestions}:{}}]),Pe.exit()}}N&&i3(N,{ignoreDrift:i.ignoreDrift,onDrift:J=>l?.({ok:!1},[{code:"DRIFT_DETECTED",message:J}])}),N&&AD(N,{onInvalid:J=>l?.({ok:!1},[{code:"INVALID_SERVICE_CONFIG",message:J}])}),N&&!l&&!i.quiet&&iD(N);let F=await nB(w,{inspectDocker:!i.dryRun});if(!i.dryRun){if(N){let Le=Jm(w);Le.length>0&&!i.quiet&&console.log(R.gray(`Added ${Le.join(", ")} to .env (generated; existing values unchanged)`))}let J=oQ(w);J.length>0&&i.verbose&&!i.quiet&&console.log(R.gray(`Refreshed runtime assets: ${J.join(", ")}`));let Te=sR(w);Te.length>0&&!i.quiet&&console.log(R.gray(`Added ${Te.join(", ")} to the pre_alpha phase in .tdk/project.json`))}let M,Ae,he=[];if(n){if(M=T.filter(J=>J.stack===n),M.length===0){let J=on.stackNotFound(n,z);l?.({ok:!1},[cB(J).error]),J.exit()}he=M.map(J=>J.name),Ae=`stack "${n}"`}else{M=T;let J=x??ts(T);Ae=`all stacks (${Jn(J.length,"stack")}, ${Jn(M.length,"service")})`}let Re=[];if(i.only){let J=cw(i.only,YA());M=J.selected,Re=J.dependencies,he=M.map(Te=>Te.name),Ae=`${Jn(i.only.length,"requested service")}${Re.length>0?` plus ${Re.join(", ")}`:""}`}i.verbose&&!i.quiet&&console.log(R.gray(`Found ${Jn(M.length,"service")} in ${Ae}`));let Ie=M.map(J=>J.name);if(!i.quiet){console.log(R.blue(`${i.dryRun?"Would start":"Starting"} ${Jn(Ie.length,"service")} from ${Ae}...`)),Ie.forEach(We=>{console.log(R.gray(` - ${We}`))});let{appBase:J,apiBase:Te}=jC(F.ingressHttp),Le=M.filter(We=>We.config?.appType==="frontend"),Pe=M.filter(We=>ic(We.config?.appType));Le.length>0&&(console.log(R.blue(`
1419
+ ${u.fix}`),console.error(R.red(u.message)),console.error(R.red(u.fix)),s(1))}function l3(n,i=3e4){return new Promise(l=>{let s=Date.now()+i,u=()=>{let p=P4({host:"127.0.0.1",port:n}),E=!1,B=I=>{E||(E=!0,p.destroy(),I||Date.now()>=s?l(I):setTimeout(u,250))};p.once("connect",()=>B(!0)),p.once("error",()=>B(!1))};u()})}var fw=new $4("up").description("Start all services (optionally filtered by stack)").alias("deploy").argument("[stack-name]","Name of the stack to start (optional - runs all if omitted)").option("-v, --verbose","Enable verbose output",!1).option("-q, --quiet","Suppress non-essential output",!1).option("--dry-run","Show what would be started without starting",!1).option("-f, --force","Kill existing Tilt process before starting",!1).option("--ignore-drift","Start even if generated files differ from service.json",!1).option("--ignore-version","Start even if this tdk is older than minTdkVersion in .tdk/project.json",!1).option("--only <services...>","Start only these services plus what the Tiltfile enables for them (their dependsOn services and shared infrastructure). With a stack, names must belong to that stack; dependencies may cross stacks").option("--json","Print one JSON object on stdout when the stack is ready or the command fails; implies --quiet",!1).action(async(n,i)=>{let l=i.json?fB("UP_FAILED","tdk up"):void 0;i.json&&(i.quiet=!0);let s=iw(process.env.TILT_PORT);s.ok||(l?.({ok:!1},[{code:"INVALID_TILT_PORT",message:s.message}]),Uo(s.message));let u=s.port,p=vn();p&&A3(p,{ignoreVersion:i.ignoreVersion,onFail:N=>l?.({ok:!1},[{code:"TDK_VERSION_TOO_OLD",message:N}])});let E=i.dryRun?null:await t3();E&&(l?.({ok:!1},[{code:"HOST_UNSUPPORTED",message:E}]),Uo(E));let B=e3(process.platform,process.env.TDK_ALLOW_NATIVE_WINDOWS);B&&Uo(B);let I=vn();if(I&&aw(I,{onInvalid:N=>l?.({ok:!1},[{code:"INVALID_SCHEMA_VERSION",message:N}])}),!i.dryRun){let{assertMachineReadyOrExit:N}=await import("./cold-preflight-NXFER2W6.js");await N()}let S=async()=>{let N=i.dryRun?Za():vn(),w=N??process.cwd(),T=O1(),x,z=[];if((!i.only||n)&&(x=ts(T),z=x.map(J=>J.name)),i.only){if(n&&!hg(n)){let Le=on.stackNotFound(n,z);l?.({ok:!1},[cB(Le).error]),Le.exit()}let J=n?T.filter(Le=>Le.stack===n):T,Te=sw(i.only,J);if(Te.length>0){let Le=J.map(We=>We.name),Pe=on.unknownServices(Te,Le);l?.({ok:!1},[{code:"UNKNOWN_SERVICE",message:Pe.message,...Pe.suggestions.length>0?{suggestions:Pe.suggestions}:{}}]),Pe.exit()}}N&&i3(N,{ignoreDrift:i.ignoreDrift,onDrift:J=>l?.({ok:!1},[{code:"DRIFT_DETECTED",message:J}])}),N&&AD(N,{onInvalid:J=>l?.({ok:!1},[{code:"INVALID_SERVICE_CONFIG",message:J}])}),N&&!l&&!i.quiet&&iD(N);let F=await nB(w,{inspectDocker:!i.dryRun});if(!i.dryRun){if(N){let Le=Jm(w);Le.length>0&&!i.quiet&&console.log(R.gray(`Added ${Le.join(", ")} to .env (generated; existing values unchanged)`))}let J=oQ(w);J.length>0&&i.verbose&&!i.quiet&&console.log(R.gray(`Refreshed runtime assets: ${J.join(", ")}`));let Te=sR(w);Te.length>0&&!i.quiet&&console.log(R.gray(`Added ${Te.join(", ")} to the pre_alpha phase in .tdk/project.json`))}let M,Ae,he=[];if(n){if(M=T.filter(J=>J.stack===n),M.length===0){let J=on.stackNotFound(n,z);l?.({ok:!1},[cB(J).error]),J.exit()}he=M.map(J=>J.name),Ae=`stack "${n}"`}else{M=T;let J=x??ts(T);Ae=`all stacks (${Jn(J.length,"stack")}, ${Jn(M.length,"service")})`}let Re=[];if(i.only){let J=cw(i.only,YA());M=J.selected,Re=J.dependencies,he=M.map(Te=>Te.name),Ae=`${Jn(i.only.length,"requested service")}${Re.length>0?` plus ${Re.join(", ")}`:""}`}i.verbose&&!i.quiet&&console.log(R.gray(`Found ${Jn(M.length,"service")} in ${Ae}`));let Ie=M.map(J=>J.name);if(!i.quiet){console.log(R.blue(`${i.dryRun?"Would start":"Starting"} ${Jn(Ie.length,"service")} from ${Ae}...`)),Ie.forEach(We=>{console.log(R.gray(` - ${We}`))});let{appBase:J,apiBase:Te}=jC(F.ingressHttp),Le=M.filter(We=>We.config?.appType==="frontend"),Pe=M.filter(We=>ic(We.config?.appType));Le.length>0&&(console.log(R.blue(`
1420
1420
  \u{1F30D} Frontend URLs:`)),Le.forEach(We=>{let ct=We.config?.basePath??`/${We.name}`;console.log(R.gray(` - ${We.name}: ${J}${R.cyan(Fy(ct))}`))})),Pe.length>0&&(console.log(R.blue(`
1421
1421
  \u{1F527} Backend API URLs:`)),Pe.forEach(We=>{let ct=We.name.replace(/-api$/,""),qe=We.config?.apiPath??`/api/${ct}`,He=We.config?.sablier,$e=He?.enable&&He?.deferStart?R.dim(" (deferred \u2014 starts on first request)"):"";console.log(R.gray(` - ${We.name}: ${Te}${R.cyan(Fy(qe))}${$e}`))}))}let Ge=i.only??(n?[n]:void 0),Oe=I1(he,{verbose:i.verbose,quiet:i.quiet,force:i.force,focusTargets:Ge}),be=Ge?`tilt up ${Oe.join(" ")}`:"tilt up";if(!i.quiet){console.log(R.blue($1(F)));for(let J of nw(F))console.log(R.yellow(J));console.log(R.gray("Override with TDK_HTTP_PORT, TDK_HTTPS_PORT, or TDK_POSTGRES_PORT."))}if(l&&i.dryRun){l({ok:!0,dryRun:!0,stack:n??null,services:Ie,...i.only?{requested:i.only,declaredDependencies:Re}:{},command:be});return}if(sB(i,"not starting services",be))return;nD(F),tD(w,F);let ze=Tl.tiltUi,Qe=u??ze,Ye=i.only?[...new Set([ze,Qe])]:[Qe],At=[];for(let J of Ye)await lc(J)!==null&&At.push(J);let ke=Aw({runningPorts:At,force:i.force,only:!!i.only});if(ke.action==="already-running"){let J=`Environment is already running on port ${ke.ports.join(", ")}.`;l?.({ok:!0,alreadyRunning:!0,tiltUrl:`http://localhost:${ke.ports[0]}`}),i.quiet||console.log(R.green(J));return}if(ke.action==="only-blocked"){let J=`A Tilt is already running on port ${ke.ports.join(", ")}. --only cannot change a running stack's services: run \`tdk down\` first, or pass --force to replace it.`;l?.({ok:!1},[{code:"TILT_ALREADY_RUNNING",message:J}]),Uo(J)}if(i.only)for(let J of At)TI(J);let kt=await lw({configuredPort:u,force:i.force,basePort:ze,findAvailablePort:oR}),at=kt.port;kt.autoSwitched&&!i.quiet&&(console.log(R.yellow(`\u26A0\uFE0F Port ${ze} is already in use`)),console.log(R.blue(`\u{1F504} Auto-switching to port ${at}
1422
1422
  `))),process.env.TILT_PORT=at.toString(),await rw({force:i.force,quiet:i.quiet,port:at},{stop:TI,log:J=>console.log(R.yellow(J)),wait:J=>new Promise(Te=>setTimeout(Te,J))}),i.quiet||(console.log(R.gray(`
@@ -1,2 +1,2 @@
1
1
  import{createRequire as __tdkRequire}from'node:module';const require=__tdkRequire(import.meta.url);
2
- import{ib as a,jb as b,kb as c,lb as d,mb as e}from"./chunk-DLEX3BP5.js";import"./chunk-OBQS5CYC.js";import"./chunk-6EA4DGCY.js";export{e as assertMachineReadyOrExit,d as formatColdPreflight,a as nodeTooOld,b as requireVerifiedDockerVersions,c as runColdPreflight};
2
+ import{ib as a,jb as b,kb as c,lb as d,mb as e}from"./chunk-I63IBPUZ.js";import"./chunk-OBQS5CYC.js";import"./chunk-6EA4DGCY.js";export{e as assertMachineReadyOrExit,d as formatColdPreflight,a as nodeTooOld,b as requireVerifiedDockerVersions,c as runColdPreflight};
package/cli/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "tdk-cli-internal",
3
3
  "private": true,
4
- "version": "1.3.134",
4
+ "version": "1.3.136",
5
5
  "description": "TDK CLI — start services on your laptop.",
6
6
  "keywords": [
7
7
  "tdk",
@@ -30,6 +30,7 @@
30
30
  },
31
31
  "files": [
32
32
  "dist",
33
+ "dist-bundle",
33
34
  "bin",
34
35
  "templates",
35
36
  "README.md",
@@ -1,4 +1,6 @@
1
1
  #!/bin/sh
2
+ # Copyright (c) 2026 TDK Landscape contributors
3
+ # SPDX-License-Identifier: MIT
2
4
  set -e
3
5
 
4
6
  # Fix Bun hoisted package symlinks that can break when copied across Docker stages.
@@ -1,4 +1,6 @@
1
1
  #!/bin/sh
2
+ # Copyright (c) 2026 TDK Landscape contributors
3
+ # SPDX-License-Identifier: MIT
2
4
  # =============================================================================
3
5
  # 🔐 UNIVERSAL INFISICAL ENTRYPOINT - Zero-Code Secret Injection
4
6
  # =============================================================================
@@ -1,4 +1,6 @@
1
1
  #!/bin/sh
2
+ # Copyright (c) 2026 TDK Landscape contributors
3
+ # SPDX-License-Identifier: MIT
2
4
  set -e
3
5
 
4
6
  # =============================================================================
@@ -1,4 +1,6 @@
1
1
  #!/bin/sh
2
+ # Copyright (c) 2026 TDK Landscape contributors
3
+ # SPDX-License-Identifier: MIT
2
4
  set -e
3
5
 
4
6
  # Fix Bun module resolution: .prisma/client must be reachable from .bun linker paths.
@@ -1,4 +1,6 @@
1
1
  #!/bin/sh
2
+ # Copyright (c) 2026 TDK Landscape contributors
3
+ # SPDX-License-Identifier: MIT
2
4
  set -e
3
5
 
4
6
  PRISMA_EXPORT_GENERATED_CLIENT="${PRISMA_EXPORT_GENERATED_CLIENT:-1}"
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env starlark
2
+ # Copyright (c) 2026 TDK Landscape contributors
3
+ # SPDX-License-Identifier: MIT
2
4
  # =============================================================================
3
5
  # 🔍 TILT DISCOVERY CONFIGURATION - MASTER CONFIG
4
6
  # =============================================================================
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env starlark
2
+ # Copyright (c) 2026 TDK Landscape contributors
3
+ # SPDX-License-Identifier: MIT
2
4
  # =============================================================================
3
5
  # 🗺️ TOPOLOGIES - DISCOVERY CONFIG
4
6
  # =============================================================================
@@ -1,3 +1,5 @@
1
+ # Copyright (c) 2026 TDK Landscape contributors
2
+ # SPDX-License-Identifier: MIT
1
3
  # =============================================================================
2
4
  # 📍 TOPOLOGIES - DISCOVERY CONSTANTS
3
5
  # =============================================================================
@@ -1,3 +1,5 @@
1
+ # Copyright (c) 2026 TDK Landscape contributors
2
+ # SPDX-License-Identifier: MIT
1
3
  # Deterministic Tilt Configuration for TDK Landscape
2
4
  # Inspired by Mira Murati's "Defeating Nondeterminism" philosophy
3
5
  # Goal: Same filesystem state + same environment = identical Tilt output
@@ -1,3 +1,5 @@
1
+ # Copyright (c) 2026 TDK Landscape contributors
2
+ # SPDX-License-Identifier: MIT
1
3
  # =============================================================================
2
4
  # 👁️ DISCOVERY DAEMON - Continuous Service Monitoring
3
5
  # =============================================================================
@@ -1,3 +1,5 @@
1
+ # Copyright (c) 2026 TDK Landscape contributors
2
+ # SPDX-License-Identifier: MIT
1
3
  load("../engine/topologies/tilt/manifest/parser.star", "extract_stack_from_path")
2
4
  load("../engine/topologies/tilt/manifest/loader.star", "ManifestLoader")
3
5
  load("./manifest/loading.star", "get_default_syncs_for_type")
@@ -1,3 +1,5 @@
1
+ # Copyright (c) 2026 TDK Landscape contributors
2
+ # SPDX-License-Identifier: MIT
1
3
  def by_app_type(manifests, app_type):
2
4
  return [m for m in manifests if m.get("appType") == app_type]
3
5
 
@@ -1,3 +1,5 @@
1
+ # Copyright (c) 2026 TDK Landscape contributors
2
+ # SPDX-License-Identifier: MIT
1
3
  # =============================================================================
2
4
  # 📈 INCREMENTAL DISCOVERY - Register New Services Dynamically
3
5
  # =============================================================================
@@ -1,3 +1,5 @@
1
+ # Copyright (c) 2026 TDK Landscape contributors
2
+ # SPDX-License-Identifier: MIT
1
3
  def by_app_name(manifests):
2
4
  indexed = {}
3
5
  for manifest in manifests:
@@ -1,3 +1,5 @@
1
+ # Copyright (c) 2026 TDK Landscape contributors
2
+ # SPDX-License-Identifier: MIT
1
3
  # json_manifest_scanner.star
2
4
  #
3
5
  # Purpose: Low-level JSON manifest file discovery using shell `find` command
@@ -1,3 +1,5 @@
1
+ # Copyright (c) 2026 TDK Landscape contributors
2
+ # SPDX-License-Identifier: MIT
1
3
  # =============================================================================
2
4
  # 📚 TOPOLOGIES - DISCOVERY LIBRARIES
3
5
  # =============================================================================
@@ -1,3 +1,5 @@
1
+ # Copyright (c) 2026 TDK Landscape contributors
2
+ # SPDX-License-Identifier: MIT
1
3
  load("./manifest/constants.star", "MANIFEST_FILENAME", "MANIFEST_DEFAULTS", "VALID_APP_TYPES", "DEFAULT_SYNCS")
2
4
  load("./manifest/loading.star", "load_manifest", "load_related_manifest", "get_default_syncs_for_type")
3
5
  load("./validation.star", _validate = "validate")
@@ -1,3 +1,5 @@
1
+ # Copyright (c) 2026 TDK Landscape contributors
2
+ # SPDX-License-Identifier: MIT
1
3
  # =============================================================================
2
4
  # 📋 MANIFEST CONSTANTS (Self-Contained)
3
5
  # =============================================================================
@@ -1,3 +1,5 @@
1
+ # Copyright (c) 2026 TDK Landscape contributors
2
+ # SPDX-License-Identifier: MIT
1
3
  # =============================================================================
2
4
  # 📋 TILT SDK - MANIFEST LOADING (CEO Review: rename-service-manifest)
3
5
  # =============================================================================
@@ -1,3 +1,5 @@
1
+ # Copyright (c) 2026 TDK Landscape contributors
2
+ # SPDX-License-Identifier: MIT
1
3
  # =============================================================================
2
4
  # 📋 TILT SDK - MANIFEST NORMALIZATION & DISCOVERY
3
5
  # =============================================================================
@@ -1,3 +1,5 @@
1
+ # Copyright (c) 2026 TDK Landscape contributors
2
+ # SPDX-License-Identifier: MIT
1
3
  # =============================================================================
2
4
  # ✅ TILT SDK - MANIFEST VALIDATION
3
5
  # =============================================================================
@@ -1,3 +1,5 @@
1
+ # Copyright (c) 2026 TDK Landscape contributors
2
+ # SPDX-License-Identifier: MIT
1
3
  load(
2
4
  "./manifest/normalize.star",
3
5
  _load_and_normalize = "load_and_normalize",
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env starlark
2
2
  # -*- coding: utf-8 -*-
3
+ # Copyright (c) 2026 TDK Landscape contributors
4
+ # SPDX-License-Identifier: MIT
3
5
  # =============================================================================
4
6
  # 🔍 DISCOVERY REGISTRY - Service Discovery for TDK CLI
5
7
  # =============================================================================
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env python3
2
+ # Copyright (c) 2026 TDK Landscape contributors
3
+ # SPDX-License-Identifier: MIT
2
4
  """
3
5
  Service Snapshot Utility
4
6
 
@@ -1,3 +1,5 @@
1
+ # Copyright (c) 2026 TDK Landscape contributors
2
+ # SPDX-License-Identifier: MIT
1
3
  # =============================================================================
2
4
  # 📸 RESOURCE SNAPSHOT - Starlark Interface
3
5
  # =============================================================================
@@ -1 +1,3 @@
1
+ # Copyright (c) 2026 TDK Landscape contributors
2
+ # SPDX-License-Identifier: MIT
1
3
  MANIFEST_SCHEMA_PATH = ".tilt/schemas/manifest-schema.json"
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env python3
2
+ # Copyright (c) 2026 TDK Landscape contributors
3
+ # SPDX-License-Identifier: MIT
2
4
  """
3
5
  🧪 Tests for resource_snapshot.py
4
6
 
@@ -1,3 +1,5 @@
1
+ # Copyright (c) 2026 TDK Landscape contributors
2
+ # SPDX-License-Identifier: MIT
1
3
  load("./TILT_DISCOVERY.star",
2
4
  "VALID_STACKS",
3
5
  "VALID_RESOURCE_FEATURES",
@@ -1 +1,3 @@
1
+ # Copyright (c) 2026 TDK Landscape contributors
2
+ # SPDX-License-Identifier: MIT
1
3
  MANIFEST_DISCOVERY_VERSION = "1.0"
@@ -1,3 +1,5 @@
1
+ // Copyright (c) 2026 TDK Landscape contributors
2
+ // SPDX-License-Identifier: MIT
1
3
  import { describe, expect, test } from "bun:test";
2
4
  import {
3
5
  COMPOSE_START_TIMEOUT_MS,
@@ -1,3 +1,5 @@
1
+ // Copyright (c) 2026 TDK Landscape contributors
2
+ // SPDX-License-Identifier: MIT
1
3
  /**
2
4
  * Pure decision logic for the wake gateway (see openspec/changes/prioritized-cold-start).
3
5
  *
@@ -1,3 +1,5 @@
1
+ // Copyright (c) 2026 TDK Landscape contributors
2
+ // SPDX-License-Identifier: MIT
1
3
  /**
2
4
  * Wake gateway: fronts every `sablier.deferStart` resource's Traefik static
3
5
  * route (see openspec/changes/prioritized-cold-start). On the first request
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env bash
2
+ # Copyright (c) 2026 TDK Landscape contributors
3
+ # SPDX-License-Identifier: MIT
2
4
  set -euo pipefail
3
5
 
4
6
  # Delete images for completed DB migrator containers to free disk space.
@@ -1,4 +1,6 @@
1
1
  #!/bin/bash
2
+ # Copyright (c) 2026 TDK Landscape contributors
3
+ # SPDX-License-Identifier: MIT
2
4
 
3
5
  set -euo pipefail
4
6
 
@@ -1,4 +1,6 @@
1
1
  #!/bin/bash
2
+ # Copyright (c) 2026 TDK Landscape contributors
3
+ # SPDX-License-Identifier: MIT
2
4
 
3
5
  # TDK Landscape Mac M1 Resource Monitor
4
6
  # Monitors Docker container resource usage and provides optimization recommendations
@@ -1,3 +1,5 @@
1
+ # Copyright (c) 2026 TDK Landscape contributors
2
+ # SPDX-License-Identifier: MIT
1
3
  load("./topologies/tilt/config/global.star", _Config = "Config")
2
4
 
3
5
  Config = _Config
@@ -1,3 +1,5 @@
1
+ # Copyright (c) 2026 TDK Landscape contributors
2
+ # SPDX-License-Identifier: MIT
1
3
  # =============================================================================
2
4
  # 🎯 TILT ENTRYPOINT MODULE (Phase 1 Topologies Migration)
3
5
  # =============================================================================
@@ -1,3 +1,5 @@
1
+ # Copyright (c) 2026 TDK Landscape contributors
2
+ # SPDX-License-Identifier: MIT
1
3
  # =============================================================================
2
4
  # 🔄 TILT LIFECYCLE - SERVICE STARTUP ORCHESTRATOR
3
5
  # =============================================================================
package/engine/paths.star CHANGED
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env starlark
2
+ # Copyright (c) 2026 TDK Landscape contributors
3
+ # SPDX-License-Identifier: MIT
2
4
  # Tilt Master Spec File
3
5
  # SYSTEM PATHS SPECIFICATION - No Hidden Magic
4
6
  # Format: Explicit constants for all system paths
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env bash
2
+ # Copyright (c) 2026 TDK Landscape contributors
3
+ # SPDX-License-Identifier: MIT
2
4
  # =============================================================================
3
5
  # Library Build & Publish with Caching
4
6
  # =============================================================================
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env bash
2
+ # Copyright (c) 2026 TDK Landscape contributors
3
+ # SPDX-License-Identifier: MIT
2
4
  # =============================================================================
3
5
  # Library Build/Publish Cache Checker
4
6
  # =============================================================================
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env bash
2
+ # Copyright (c) 2026 TDK Landscape contributors
3
+ # SPDX-License-Identifier: MIT
2
4
  # ====================================================================
3
5
  # Container Debug Helper Script
4
6
  # Provides easy access to debugging running or failed Docker containers
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env bash
2
+ # Copyright (c) 2026 TDK Landscape contributors
3
+ # SPDX-License-Identifier: MIT
2
4
  # =============================================================================
3
5
  # 🎯 TDK Landscape - RESOURCE MANIFEST GENERATOR
4
6
  # =============================================================================
@@ -1,3 +1,5 @@
1
+ # Copyright (c) 2026 TDK Landscape contributors
2
+ # SPDX-License-Identifier: MIT
1
3
  # =============================================================================
2
4
  # 🔐 TILT SDK - AUTH CONFIGURATION UTILITIES
3
5
  # =============================================================================
@@ -57,7 +57,7 @@ def generate_golden_dockerfile():
57
57
  # =============================================================================
58
58
  # L1: OS BASE + RUNTIME ENVIRONMENT
59
59
  # =============================================================================
60
- FROM oven/bun:1.3.11-alpine AS l1_golden
60
+ FROM oven/bun:1.3.11-alpine@sha256:7ed9f74c326d1c260abe247ac423ccbf5ac92af62bb442d515d1f92f21e8ea9b AS l1_golden
61
61
 
62
62
  LABEL layer="l1" \
63
63
  description="OS base with runtime environment" \
@@ -194,7 +194,7 @@ WORKDIR /app
194
194
  # =============================================================================
195
195
  # L4-BACKEND-NODE: BACKEND PRODUCTION RUNTIME (NODE.JS - LIGHTWEIGHT!)
196
196
  # =============================================================================
197
- FROM node:22-alpine AS l4_backend_node
197
+ FROM node:22-alpine@sha256:0a7108bf6c7bf5de370ffb1a3ed6be93d405b43ff159f681a8d18c0e2bc2e402 AS l4_backend_node
198
198
 
199
199
  LABEL layer="l4-backend-node" \
200
200
  description="Backend production runtime (Node.js - lightweight)" \
@@ -227,7 +227,7 @@ FROM l4_backend_bun AS l4_backend_golden
227
227
  # =============================================================================
228
228
  # L4-FRONTEND: FRONTEND PRODUCTION RUNTIME
229
229
  # =============================================================================
230
- FROM nginx:1.27-alpine AS l4_frontend_golden
230
+ FROM nginx:1.27-alpine@sha256:65645c7bb6a0661892a8b03b89d0743208a18dd2f3f17a54ef4b76fb8e2f2a10 AS l4_frontend_golden
231
231
 
232
232
  LABEL layer="l4-frontend" \
233
233
  description="Frontend production runtime with Nginx" \
@@ -1,3 +1,5 @@
1
+ # Copyright (c) 2026 TDK Landscape contributors
2
+ # SPDX-License-Identifier: MIT
1
3
  # =============================================================================
2
4
  # 🐳 TILT SDK - DOCKER COMPOSE GENERATORS (modular)
3
5
  # =============================================================================
@@ -1,3 +1,5 @@
1
+ # Copyright (c) 2026 TDK Landscape contributors
2
+ # SPDX-License-Identifier: MIT
1
3
  # =============================================================================
2
4
  # 🐳 TILT SDK - COMPOSE HELPERS
3
5
  # =============================================================================
@@ -1,3 +1,5 @@
1
+ # Copyright (c) 2026 TDK Landscape contributors
2
+ # SPDX-License-Identifier: MIT
1
3
  # =============================================================================
2
4
  # Standalone Traefik compose for generated TDK projects
3
5
  # =============================================================================