okengine 0.11.1 → 0.12.0

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 (1279) hide show
  1. package/manifest.v1.schema.json +1 -1
  2. package/package.json +57 -3
  3. package/site/content/docs/ai/index.mdx +2 -2
  4. package/site/content/docs/ai/llms-txt.mdx +21 -16
  5. package/site/content/docs/ai/mcp.mdx +1 -1
  6. package/site/content/docs/ai/skills.mdx +16 -14
  7. package/site/content/docs/deployment/docker-swarm.mdx +7 -8
  8. package/site/content/docs/deployment/docker.mdx +20 -12
  9. package/site/content/docs/deployment/index.mdx +2 -2
  10. package/site/content/docs/deployment/kubernetes.mdx +2 -2
  11. package/site/content/docs/deployment/reverse-proxy.mdx +39 -21
  12. package/site/content/docs/elements/ai.mdx +44 -13
  13. package/site/content/docs/elements/channel.mdx +2 -2
  14. package/site/content/docs/elements/clock.mdx +11 -1
  15. package/site/content/docs/elements/flow.mdx +66 -16
  16. package/site/content/docs/elements/gate.mdx +47 -39
  17. package/site/content/docs/elements/signal.mdx +2 -2
  18. package/site/content/docs/elements/store.mdx +191 -46
  19. package/site/content/docs/elements/vault.mdx +140 -47
  20. package/site/content/docs/get-started/basic-usage.mdx +14 -6
  21. package/site/content/docs/get-started/installation.mdx +25 -11
  22. package/site/content/docs/plugins/cors.mdx +9 -9
  23. package/site/content/docs/plugins/csrf.mdx +1 -1
  24. package/site/content/docs/providers/cockroachdb.mdx +13 -0
  25. package/site/content/docs/providers/neon.mdx +22 -0
  26. package/site/content/docs/providers/supabase.mdx +17 -0
  27. package/site/content/docs/providers/yugabytedb.mdx +15 -0
  28. package/site/content/docs/recipes/caddy.mdx +3 -3
  29. package/site/content/docs/recipes/cockroachdb.mdx +8 -2
  30. package/site/content/docs/recipes/index.mdx +6 -1
  31. package/site/content/docs/recipes/llama-cpp.mdx +12 -12
  32. package/site/content/docs/recipes/mailpit.mdx +3 -3
  33. package/site/content/docs/recipes/meilisearch.mdx +4 -4
  34. package/site/content/docs/recipes/meta.json +1 -0
  35. package/site/content/docs/recipes/nginx.mdx +117 -0
  36. package/site/content/docs/recipes/ollama.mdx +3 -3
  37. package/site/content/docs/recipes/pgdog.mdx +1 -1
  38. package/site/content/docs/recipes/postgres.mdx +44 -8
  39. package/site/content/docs/recipes/redis.mdx +7 -2
  40. package/site/content/docs/recipes/rustfs.mdx +4 -4
  41. package/site/content/docs/recipes/sglang.mdx +2 -2
  42. package/site/content/docs/recipes/supabase-docker.mdx +24 -0
  43. package/site/content/docs/recipes/timescale.mdx +30 -6
  44. package/site/content/docs/recipes/traefik.mdx +10 -7
  45. package/site/content/docs/recipes/vllm.mdx +2 -2
  46. package/site/content/docs/recipes/yugabytedb.mdx +7 -1
  47. package/site/content/docs/reference/cli.md +69 -32
  48. package/site/content/docs/reference/client.mdx +39 -20
  49. package/site/content/docs/reference/configuration.mdx +31 -24
  50. package/site/content/docs/reference/environment-variables.mdx +23 -20
  51. package/site/content/docs/reference/errors.mdx +25 -20
  52. package/site/content/docs/reference/fx.mdx +19 -12
  53. package/site/content/docs/reference/plugins.mdx +2 -2
  54. package/site/content/docs/reference/security.md +16 -7
  55. package/src/auth/auth.test.ts +2 -2
  56. package/src/auth/bindings.ts +5 -5
  57. package/src/auth/config.ts +8 -0
  58. package/src/auth/gate-auth.test.ts +5 -5
  59. package/src/auth/index.ts +3 -0
  60. package/src/auth/operator.ts +1 -1
  61. package/src/auth/password-policy.test.ts +142 -5
  62. package/src/auth/password-policy.ts +128 -12
  63. package/src/auth/plugin.ts +2 -2
  64. package/src/cli/ai-setup/ai-setup.test.ts +4 -2
  65. package/src/cli/ai-setup/apply.ts +64 -19
  66. package/src/cli/ai-setup/index.ts +4 -4
  67. package/src/cli/ai-setup/prompts.ts +1 -1
  68. package/src/cli/ask-seed.test.ts +31 -3
  69. package/src/cli/ask-seed.ts +14 -11
  70. package/src/cli/attach-host-console.test.ts +134 -0
  71. package/src/cli/attach-host-console.ts +100 -0
  72. package/src/cli/client-add.test.ts +2 -1
  73. package/src/cli/console-cmd.test.ts +81 -0
  74. package/src/cli/console-cmd.ts +107 -0
  75. package/src/cli/db-seed.ts +14 -3
  76. package/src/cli/db.test.ts +37 -2
  77. package/src/cli/db.ts +26 -0
  78. package/src/cli/dev-app-runner.ts +6 -40
  79. package/src/cli/dev-console-vite.test.ts +86 -0
  80. package/src/cli/dev-console-vite.ts +164 -0
  81. package/src/cli/dev-schema-sync.ts +2 -2
  82. package/src/cli/dev.test.ts +194 -2
  83. package/src/cli/dev.ts +277 -74
  84. package/src/cli/docker-cli.test.ts +2 -2
  85. package/src/cli/docker.ts +1 -1
  86. package/src/cli/doctor.ts +2 -1
  87. package/src/cli/drizzle-env.test.ts +4 -9
  88. package/src/cli/drizzle-env.ts +2 -2
  89. package/src/cli/hero-meta.test.ts +37 -0
  90. package/src/cli/hero-meta.ts +30 -9
  91. package/src/cli/index.ts +5 -0
  92. package/src/cli/load-config.images.test.ts +12 -12
  93. package/src/cli/load-config.ts +1 -1
  94. package/src/cli/project-state.test.ts +54 -0
  95. package/src/cli/project-state.ts +139 -0
  96. package/src/cli/registry.ts +11 -0
  97. package/src/cli/replay.ts +7 -2
  98. package/src/cli/vault-cmd.test.ts +49 -18
  99. package/src/cli/vault-cmd.ts +9 -3
  100. package/src/client/create.test.ts +38 -2
  101. package/src/client/create.ts +16 -11
  102. package/src/client/index.ts +6 -0
  103. package/src/client/pager.test.ts +66 -0
  104. package/src/client/pager.ts +138 -0
  105. package/src/client/transport.ts +9 -6
  106. package/src/client/types.ts +58 -10
  107. package/src/compiler/aot.test.ts +12 -2
  108. package/src/compiler/effects-infer.ts +13 -4
  109. package/src/compiler/extract.test.ts +243 -5
  110. package/src/compiler/extract.ts +335 -59
  111. package/src/compiler/fixtures/skyport/src/flows/bookings/index.ts +2 -2
  112. package/src/compiler/fixtures/skyport/src/gates.ts +2 -0
  113. package/src/compiler/fixtures/skyport.expected.json +4 -0
  114. package/src/config/driver-defaults.test.ts +3 -0
  115. package/src/config/driver-defaults.ts +14 -0
  116. package/src/config/index.ts +5 -0
  117. package/src/console/budget.test.ts +27 -37
  118. package/src/console/index.ts +3 -0
  119. package/src/console/password-policy.ts +89 -0
  120. package/src/console/server/app.ts +138 -12
  121. package/src/console/server/auth-rate.test.ts +3 -3
  122. package/src/console/server/auth-store.test.ts +222 -0
  123. package/src/console/server/auth-store.ts +499 -0
  124. package/src/console/server/bind.ts +2 -3
  125. package/src/console/server/channels.test.ts +1 -1
  126. package/src/console/server/claim.test.ts +60 -1
  127. package/src/console/server/claim.ts +137 -2
  128. package/src/console/server/console.test.ts +105 -7
  129. package/src/console/server/dry-run.audit.test.ts +5 -2
  130. package/src/console/server/files-catalog.test.ts +51 -0
  131. package/src/console/server/files-catalog.ts +122 -0
  132. package/src/console/server/flows-invoke.test.ts +655 -38
  133. package/src/console/server/flows.ts +907 -90
  134. package/src/console/server/gates.test.ts +59 -0
  135. package/src/console/server/gates.ts +17 -14
  136. package/src/console/server/i18n.ts +7 -4
  137. package/src/console/server/index-search.test.ts +57 -0
  138. package/src/console/server/index-search.ts +102 -0
  139. package/src/console/server/index.ts +32 -1
  140. package/src/console/server/instances.test.ts +68 -0
  141. package/src/console/server/instances.ts +58 -0
  142. package/src/console/server/invoke-user-flow.test.ts +206 -0
  143. package/src/console/server/invoke-user-flow.ts +367 -0
  144. package/src/console/server/live.test.ts +44 -1
  145. package/src/console/server/live.ts +16 -0
  146. package/src/console/server/operator-db.test.ts +53 -22
  147. package/src/console/server/operator-db.ts +7 -3
  148. package/src/console/server/panel-load.ts +1 -0
  149. package/src/console/server/plugin.ts +12 -2
  150. package/src/console/server/runs-history.test.ts +143 -0
  151. package/src/console/server/runs-ingest.test.ts +379 -0
  152. package/src/console/server/runs-ingest.ts +127 -0
  153. package/src/console/server/runs-list-nesting.test.ts +97 -0
  154. package/src/console/server/runs-pii.test.ts +69 -0
  155. package/src/console/server/runs-pii.ts +50 -4
  156. package/src/console/server/runs-query-guard.test.ts +75 -0
  157. package/src/console/server/runs-query-guard.ts +224 -0
  158. package/src/console/server/runs-query-mask.test.ts +37 -0
  159. package/src/console/server/runs-query-mask.ts +82 -0
  160. package/src/console/server/runs-query.test.ts +287 -0
  161. package/src/console/server/runs-query.ts +107 -0
  162. package/src/console/server/security-headers.ts +21 -2
  163. package/src/console/server/security.gate.test.ts +306 -3
  164. package/src/console/server/serve.ts +138 -9
  165. package/src/console/server/spa-paths.test.ts +36 -0
  166. package/src/console/server/spa-proxy.test.ts +86 -0
  167. package/src/console/server/sql-catalog.ts +572 -0
  168. package/src/console/server/sql-extension.test.ts +19 -0
  169. package/src/console/server/sql-rls.test.ts +44 -0
  170. package/src/console/server/state.ts +445 -7
  171. package/src/console/server/store-kv-stats.test.ts +178 -0
  172. package/src/console/server/store-kv-stats.ts +339 -0
  173. package/src/console/server/store-stats.test.ts +165 -0
  174. package/src/console/server/store-stats.ts +526 -0
  175. package/src/console/server/store.test.ts +930 -0
  176. package/src/console/server/store.ts +859 -76
  177. package/src/console/server/traces-replay.test.ts +212 -0
  178. package/src/console/server/vault-http.test.ts +458 -0
  179. package/src/console/server/vault-overlay.test.ts +49 -0
  180. package/src/console/server/vault-overlay.ts +99 -0
  181. package/src/console/server/vault.test.ts +75 -0
  182. package/src/console/server/vault.ts +443 -27
  183. package/src/console/ui-next/components.json +26 -0
  184. package/src/console/ui-next/dist/assets/bash-CLZ0U2zV.js +1 -0
  185. package/src/console/ui-next/dist/assets/cache-glyph-CLPBqZeb.js +1 -0
  186. package/src/console/ui-next/dist/assets/call-pii-button-bqkxMrJH.js +1 -0
  187. package/src/console/ui-next/dist/assets/collapsible-DYb0xU8C.js +1 -0
  188. package/src/console/ui-next/dist/assets/confirm-sheet-DDCRmG62.js +1 -0
  189. package/src/console/ui-next/dist/assets/dagre.esm-ZwcdTuZZ.js +1 -0
  190. package/src/console/ui-next/dist/assets/duration-tone-oiRxPVsZ.js +9 -0
  191. package/src/console/ui-next/dist/assets/explorer-empty-HjTnVQoR.js +1 -0
  192. package/src/console/ui-next/dist/assets/flows-page-C_Tas1E1.js +1 -0
  193. package/src/console/ui-next/dist/assets/github-dark-C-LZuMrd.js +1 -0
  194. package/src/console/ui-next/dist/assets/github-light-EUqPIrTm.js +1 -0
  195. package/src/console/ui-next/dist/assets/highlighted-json-CvDPvveV.js +154 -0
  196. package/src/console/ui-next/dist/assets/http-method-BJ92Z_ke.js +1 -0
  197. package/src/console/ui-next/dist/assets/index-D4Ldtj79.css +2 -0
  198. package/src/console/ui-next/dist/assets/index-DX248G39.js +66 -0
  199. package/src/console/ui-next/dist/assets/json-qhed-kSA.js +1 -0
  200. package/src/console/ui-next/dist/assets/link-DF7SZ9Ek.js +1 -0
  201. package/src/console/ui-next/dist/assets/observability-page-BwVS5Jvm.js +4 -0
  202. package/src/console/ui-next/dist/assets/preload-helper-oH4irX4C.js +1 -0
  203. package/src/console/ui-next/dist/assets/query-gate-parts-1m8m1iNp.js +2 -0
  204. package/src/console/ui-next/dist/assets/react-B1ML8gxg.js +1 -0
  205. package/src/console/ui-next/dist/assets/react-dom-Bph1y7z7.js +9 -0
  206. package/src/console/ui-next/dist/assets/replica-lag-C8_BRt2x.js +18 -0
  207. package/src/console/ui-next/dist/assets/rolldown-runtime-hePW80VL.js +1 -0
  208. package/src/console/ui-next/dist/assets/sheet-form-D-ata7jy.js +1 -0
  209. package/src/console/ui-next/dist/assets/shortcut-Cgzuv4k1.js +1 -0
  210. package/src/console/ui-next/dist/assets/shortcut-keys-DO4IsVqv.js +1 -0
  211. package/src/console/ui-next/dist/assets/skeleton-CL_X0GCj.js +1 -0
  212. package/src/console/ui-next/dist/assets/sql-BskegiFM.js +1 -0
  213. package/src/console/ui-next/dist/assets/store-page-v3LXdYpr.js +45 -0
  214. package/src/console/ui-next/dist/assets/trace-detail-sheet-D16lWQMt.js +2 -0
  215. package/src/console/ui-next/dist/assets/tsx-udAQXfEw.js +1 -0
  216. package/src/console/ui-next/dist/assets/typescript-bsJCZSQ-.js +1 -0
  217. package/src/console/ui-next/dist/assets/units-page-C5KOI7qG.js +1 -0
  218. package/src/console/ui-next/dist/assets/use-vault-list-Cl79j_ku.js +1 -0
  219. package/src/console/ui-next/dist/assets/vault-page-CSOYMHhO.js +2 -0
  220. package/src/console/ui-next/dist/assets/xyflow-D7n4g6go.js +7 -0
  221. package/src/console/ui-next/dist/assets/xyflow-DZ0Ws1xk.css +1 -0
  222. package/src/console/ui-next/dist/favicon.svg +6 -0
  223. package/src/console/ui-next/dist/index.html +56 -0
  224. package/src/console/ui-next/index.html +45 -0
  225. package/src/console/ui-next/public/favicon.svg +6 -0
  226. package/src/console/ui-next/seed-invoke-host.test.ts +47 -0
  227. package/src/console/ui-next/seed-invoke-host.ts +199 -0
  228. package/src/console/ui-next/seed-invoke-ops.test.ts +280 -0
  229. package/src/console/ui-next/seed-invoke-ops.ts +587 -0
  230. package/src/console/ui-next/src/client-session.test.ts +22 -0
  231. package/src/console/ui-next/src/client.ts +1379 -0
  232. package/src/console/ui-next/src/components/agents/agent-code.tsx +207 -0
  233. package/src/console/ui-next/src/components/agents/agent-disclosure.tsx +63 -0
  234. package/src/console/ui-next/src/components/agents/file-diff.tsx +271 -0
  235. package/src/console/ui-next/src/components/auth-card.tsx +298 -0
  236. package/src/console/ui-next/src/components/charts/animation.ts +36 -0
  237. package/src/console/ui-next/src/components/charts/area-chart-loading.tsx +115 -0
  238. package/src/console/ui-next/src/components/charts/area-chart.tsx +261 -0
  239. package/src/console/ui-next/src/components/charts/area-gradient-defs.tsx +98 -0
  240. package/src/console/ui-next/src/components/charts/area.tsx +349 -0
  241. package/src/console/ui-next/src/components/charts/chart-child-passthrough.ts +110 -0
  242. package/src/console/ui-next/src/components/charts/chart-config-context.tsx +81 -0
  243. package/src/console/ui-next/src/components/charts/chart-context.tsx +414 -0
  244. package/src/console/ui-next/src/components/charts/chart-defs.ts +61 -0
  245. package/src/console/ui-next/src/components/charts/chart-formatters.ts +26 -0
  246. package/src/console/ui-next/src/components/charts/chart-legend-hover.tsx +41 -0
  247. package/src/console/ui-next/src/components/charts/chart-loading-label.tsx +56 -0
  248. package/src/console/ui-next/src/components/charts/chart-phase.ts +52 -0
  249. package/src/console/ui-next/src/components/charts/chart-reveal-clip.tsx +87 -0
  250. package/src/console/ui-next/src/components/charts/composed-chart.tsx +333 -0
  251. package/src/console/ui-next/src/components/charts/dash-tail-stroke.tsx +75 -0
  252. package/src/console/ui-next/src/components/charts/decimate-time-series.ts +134 -0
  253. package/src/console/ui-next/src/components/charts/fade-edges.ts +52 -0
  254. package/src/console/ui-next/src/components/charts/filter-data-by-x-domain.ts +59 -0
  255. package/src/console/ui-next/src/components/charts/generate-chart-skeleton-data.ts +42 -0
  256. package/src/console/ui-next/src/components/charts/grid.tsx +299 -0
  257. package/src/console/ui-next/src/components/charts/highlight-segment-bounds.ts +68 -0
  258. package/src/console/ui-next/src/components/charts/highlight-segment.tsx +65 -0
  259. package/src/console/ui-next/src/components/charts/indicator-fade.ts +62 -0
  260. package/src/console/ui-next/src/components/charts/line-chart-loading.tsx +111 -0
  261. package/src/console/ui-next/src/components/charts/line-chart.tsx +293 -0
  262. package/src/console/ui-next/src/components/charts/line-loading-pulse.tsx +201 -0
  263. package/src/console/ui-next/src/components/charts/line-loading-timing.ts +12 -0
  264. package/src/console/ui-next/src/components/charts/line-series-terminal-marker.tsx +91 -0
  265. package/src/console/ui-next/src/components/charts/line.tsx +384 -0
  266. package/src/console/ui-next/src/components/charts/loading-sweep.tsx +452 -0
  267. package/src/console/ui-next/src/components/charts/motion-utils.ts +47 -0
  268. package/src/console/ui-next/src/components/charts/path-stroke-utils.ts +82 -0
  269. package/src/console/ui-next/src/components/charts/pattern-area.tsx +45 -0
  270. package/src/console/ui-next/src/components/charts/projection-config.ts +112 -0
  271. package/src/console/ui-next/src/components/charts/projection-line-end-marker.tsx +51 -0
  272. package/src/console/ui-next/src/components/charts/projection-line.tsx +208 -0
  273. package/src/console/ui-next/src/components/charts/projection-utils.ts +378 -0
  274. package/src/console/ui-next/src/components/charts/reference-area-config.ts +59 -0
  275. package/src/console/ui-next/src/components/charts/reference-area-geometry.ts +136 -0
  276. package/src/console/ui-next/src/components/charts/reference-area-registration-context.tsx +16 -0
  277. package/src/console/ui-next/src/components/charts/series-bar-layout.ts +60 -0
  278. package/src/console/ui-next/src/components/charts/series-bar.tsx +304 -0
  279. package/src/console/ui-next/src/components/charts/series-dash-tail-overlay.tsx +82 -0
  280. package/src/console/ui-next/src/components/charts/series-highlight-layer.tsx +49 -0
  281. package/src/console/ui-next/src/components/charts/series-hover-dim.tsx +57 -0
  282. package/src/console/ui-next/src/components/charts/series-markers.tsx +267 -0
  283. package/src/console/ui-next/src/components/charts/series-path-utils.ts +103 -0
  284. package/src/console/ui-next/src/components/charts/series-point-marker.tsx +205 -0
  285. package/src/console/ui-next/src/components/charts/static-chart-preview-context.tsx +16 -0
  286. package/src/console/ui-next/src/components/charts/time-series-chart-shell.tsx +644 -0
  287. package/src/console/ui-next/src/components/charts/tooltip/chart-tooltip.tsx +400 -0
  288. package/src/console/ui-next/src/components/charts/tooltip/date-ticker.tsx +140 -0
  289. package/src/console/ui-next/src/components/charts/tooltip/index.ts +10 -0
  290. package/src/console/ui-next/src/components/charts/tooltip/tooltip-box.tsx +227 -0
  291. package/src/console/ui-next/src/components/charts/tooltip/tooltip-content.tsx +58 -0
  292. package/src/console/ui-next/src/components/charts/tooltip/tooltip-dot.tsx +173 -0
  293. package/src/console/ui-next/src/components/charts/tooltip/tooltip-indicator.tsx +191 -0
  294. package/src/console/ui-next/src/components/charts/use-animated-series-path.ts +155 -0
  295. package/src/console/ui-next/src/components/charts/use-animated-y-domains.ts +227 -0
  296. package/src/console/ui-next/src/components/charts/use-chart-interaction.ts +343 -0
  297. package/src/console/ui-next/src/components/charts/use-chart-phase-orchestrator.ts +173 -0
  298. package/src/console/ui-next/src/components/charts/use-enter-complete.ts +28 -0
  299. package/src/console/ui-next/src/components/charts/use-grid-shimmer.ts +101 -0
  300. package/src/console/ui-next/src/components/charts/use-highlight-segment.ts +58 -0
  301. package/src/console/ui-next/src/components/charts/use-mount-progress.ts +29 -0
  302. package/src/console/ui-next/src/components/charts/use-scheduled-tooltip.ts +97 -0
  303. package/src/console/ui-next/src/components/charts/x-axis.tsx +635 -0
  304. package/src/console/ui-next/src/components/charts/y-axis-scales.ts +108 -0
  305. package/src/console/ui-next/src/components/charts/y-axis-ticks.ts +25 -0
  306. package/src/console/ui-next/src/components/charts/y-axis.tsx +151 -0
  307. package/src/console/ui-next/src/components/charts/y-domain-utils.ts +120 -0
  308. package/src/console/ui-next/src/components/console-chrome.tsx +50 -0
  309. package/src/console/ui-next/src/components/document-title.tsx +18 -0
  310. package/src/console/ui-next/src/components/explorer/copy-inline-button.tsx +57 -0
  311. package/src/console/ui-next/src/components/explorer/detail-header.tsx +82 -0
  312. package/src/console/ui-next/src/components/explorer/explorer-chrome.ts +123 -0
  313. package/src/console/ui-next/src/components/explorer/explorer-empty.tsx +67 -0
  314. package/src/console/ui-next/src/components/explorer/explorer-search.tsx +20 -0
  315. package/src/console/ui-next/src/components/explorer/explorer-start-toggle.tsx +52 -0
  316. package/src/console/ui-next/src/components/explorer/section-head.tsx +33 -0
  317. package/src/console/ui-next/src/components/explorer/tree-expand-toggle.tsx +69 -0
  318. package/src/console/ui-next/src/components/explorer/use-explorer-start-panel.ts +34 -0
  319. package/src/console/ui-next/src/components/gate-list.tsx +70 -0
  320. package/src/console/ui-next/src/components/generate-password-button.tsx +76 -0
  321. package/src/console/ui-next/src/components/highlighted-json.tsx +73 -0
  322. package/src/console/ui-next/src/components/http-method-badge.tsx +35 -0
  323. package/src/console/ui-next/src/components/mode-toggle.tsx +84 -0
  324. package/src/console/ui-next/src/components/motion/button/base.tsx +145 -0
  325. package/src/console/ui-next/src/components/motion/button/expanding-arrow.tsx +167 -0
  326. package/src/console/ui-next/src/components/motion/button/index.ts +12 -0
  327. package/src/console/ui-next/src/components/motion/button/stateful.tsx +243 -0
  328. package/src/console/ui-next/src/components/motion/checkbox.tsx +120 -0
  329. package/src/console/ui-next/src/components/motion/select.tsx +436 -0
  330. package/src/console/ui-next/src/components/motion/switch.tsx +108 -0
  331. package/src/console/ui-next/src/components/motion/table/editable-cell.tsx +98 -0
  332. package/src/console/ui-next/src/components/motion/table/index.tsx +404 -0
  333. package/src/console/ui-next/src/components/motion/table/row-handle.tsx +95 -0
  334. package/src/console/ui-next/src/components/motion/table/skeleton-rows.tsx +52 -0
  335. package/src/console/ui-next/src/components/motion/table/table-header.tsx +337 -0
  336. package/src/console/ui-next/src/components/motion/table/table-menu.tsx +130 -0
  337. package/src/console/ui-next/src/components/motion/table/types.ts +109 -0
  338. package/src/console/ui-next/src/components/motion/table/use-cell-range.ts +145 -0
  339. package/src/console/ui-next/src/components/motion/table/use-column-reorder.ts +112 -0
  340. package/src/console/ui-next/src/components/motion/table/use-column-resize.ts +83 -0
  341. package/src/console/ui-next/src/components/motion/table/use-column-sort.ts +73 -0
  342. package/src/console/ui-next/src/components/motion/table/use-row-selection.ts +70 -0
  343. package/src/console/ui-next/src/components/motion/table/utils.ts +138 -0
  344. package/src/console/ui-next/src/components/oke-logo.tsx +65 -0
  345. package/src/console/ui-next/src/components/password-input.tsx +67 -0
  346. package/src/console/ui-next/src/components/password-strength.tsx +160 -0
  347. package/src/console/ui-next/src/components/shell/app-sidebar.tsx +117 -0
  348. package/src/console/ui-next/src/components/shell/command-items.test.ts +30 -0
  349. package/src/console/ui-next/src/components/shell/command-items.ts +144 -0
  350. package/src/console/ui-next/src/components/shell/command-match.test.ts +37 -0
  351. package/src/console/ui-next/src/components/shell/command-match.ts +45 -0
  352. package/src/console/ui-next/src/components/shell/command-palette.tsx +334 -0
  353. package/src/console/ui-next/src/components/shell/nav-footer.tsx +109 -0
  354. package/src/console/ui-next/src/components/shell/section-empty.tsx +42 -0
  355. package/src/console/ui-next/src/components/shell/settings-dialog.tsx +65 -0
  356. package/src/console/ui-next/src/components/shell/shell-layout.tsx +100 -0
  357. package/src/console/ui-next/src/components/shimmering-text.tsx +87 -0
  358. package/src/console/ui-next/src/components/signal-delivery-badge.tsx +38 -0
  359. package/src/console/ui-next/src/components/theme-provider.tsx +86 -0
  360. package/src/console/ui-next/src/components/ui/alert-dialog.tsx +147 -0
  361. package/src/console/ui-next/src/components/ui/avatar.tsx +91 -0
  362. package/src/console/ui-next/src/components/ui/badge.tsx +54 -0
  363. package/src/console/ui-next/src/components/ui/breadcrumb.tsx +104 -0
  364. package/src/console/ui-next/src/components/ui/button.tsx +58 -0
  365. package/src/console/ui-next/src/components/ui/card.tsx +88 -0
  366. package/src/console/ui-next/src/components/ui/collapsible.tsx +15 -0
  367. package/src/console/ui-next/src/components/ui/confirm-sheet.tsx +149 -0
  368. package/src/console/ui-next/src/components/ui/dialog.tsx +144 -0
  369. package/src/console/ui-next/src/components/ui/dropdown-menu.tsx +265 -0
  370. package/src/console/ui-next/src/components/ui/empty.tsx +95 -0
  371. package/src/console/ui-next/src/components/ui/field.tsx +224 -0
  372. package/src/console/ui-next/src/components/ui/input.tsx +30 -0
  373. package/src/console/ui-next/src/components/ui/kbd.tsx +41 -0
  374. package/src/console/ui-next/src/components/ui/label.tsx +20 -0
  375. package/src/console/ui-next/src/components/ui/progress.tsx +66 -0
  376. package/src/console/ui-next/src/components/ui/resizable.tsx +74 -0
  377. package/src/console/ui-next/src/components/ui/select.tsx +230 -0
  378. package/src/console/ui-next/src/components/ui/separator.tsx +21 -0
  379. package/src/console/ui-next/src/components/ui/sheet-form.tsx +337 -0
  380. package/src/console/ui-next/src/components/ui/sheet.tsx +130 -0
  381. package/src/console/ui-next/src/components/ui/sidebar.tsx +691 -0
  382. package/src/console/ui-next/src/components/ui/skeleton.tsx +20 -0
  383. package/src/console/ui-next/src/components/ui/toggle-group.tsx +87 -0
  384. package/src/console/ui-next/src/components/ui/toggle.tsx +46 -0
  385. package/src/console/ui-next/src/components/ui/toolbar-tip.tsx +41 -0
  386. package/src/console/ui-next/src/components/ui/tooltip.tsx +74 -0
  387. package/src/console/ui-next/src/features/auth/auth-redirect.test.ts +119 -0
  388. package/src/console/ui-next/src/features/auth/auth-redirect.ts +153 -0
  389. package/src/console/ui-next/src/features/auth/login-form.tsx +234 -0
  390. package/src/console/ui-next/src/features/auth/logout.ts +17 -0
  391. package/src/console/ui-next/src/features/flows/data/console-live-session.test.ts +329 -0
  392. package/src/console/ui-next/src/features/flows/data/console-live-session.ts +210 -0
  393. package/src/console/ui-next/src/features/flows/data/use-console-live.ts +79 -0
  394. package/src/console/ui-next/src/features/flows/data/use-manifest.ts +23 -0
  395. package/src/console/ui-next/src/features/flows/data/use-runs.ts +24 -0
  396. package/src/console/ui-next/src/features/flows/fixture.ts +81 -0
  397. package/src/console/ui-next/src/features/flows/flows-page.tsx +227 -0
  398. package/src/console/ui-next/src/features/flows/graph/build-flow-graph.test.ts +236 -0
  399. package/src/console/ui-next/src/features/flows/graph/build-flow-graph.ts +530 -0
  400. package/src/console/ui-next/src/features/flows/graph/element-map.test.ts +443 -0
  401. package/src/console/ui-next/src/features/flows/graph/element-map.ts +1077 -0
  402. package/src/console/ui-next/src/features/flows/graph/flow-graph-nodes.tsx +486 -0
  403. package/src/console/ui-next/src/features/flows/graph/flow-graph-theme.ts +143 -0
  404. package/src/console/ui-next/src/features/flows/graph/flow-graph.tsx +268 -0
  405. package/src/console/ui-next/src/features/flows/graph/neighborhood.test.ts +64 -0
  406. package/src/console/ui-next/src/features/flows/graph/neighborhood.ts +82 -0
  407. package/src/console/ui-next/src/features/flows/graph/orchestra.test.ts +97 -0
  408. package/src/console/ui-next/src/features/flows/graph/orchestra.ts +86 -0
  409. package/src/console/ui-next/src/features/flows/graph/use-overview-orchestra.ts +95 -0
  410. package/src/console/ui-next/src/features/flows/state/flows-selection.test.ts +24 -0
  411. package/src/console/ui-next/src/features/flows/state/flows-selection.ts +92 -0
  412. package/src/console/ui-next/src/features/flows/traces/advanced-filters.tsx +222 -0
  413. package/src/console/ui-next/src/features/flows/traces/cache-glyph.tsx +42 -0
  414. package/src/console/ui-next/src/features/flows/traces/cache-icon.test.ts +27 -0
  415. package/src/console/ui-next/src/features/flows/traces/cache-icon.ts +48 -0
  416. package/src/console/ui-next/src/features/flows/traces/dimension-query.test.ts +100 -0
  417. package/src/console/ui-next/src/features/flows/traces/dimension-query.ts +325 -0
  418. package/src/console/ui-next/src/features/flows/traces/duration-tone.test.ts +71 -0
  419. package/src/console/ui-next/src/features/flows/traces/duration-tone.ts +128 -0
  420. package/src/console/ui-next/src/features/flows/traces/effect-kind.ts +106 -0
  421. package/src/console/ui-next/src/features/flows/traces/effect-summary.ts +193 -0
  422. package/src/console/ui-next/src/features/flows/traces/filter-runs.test.ts +98 -0
  423. package/src/console/ui-next/src/features/flows/traces/filter-runs.ts +68 -0
  424. package/src/console/ui-next/src/features/flows/traces/format-duration.test.ts +47 -0
  425. package/src/console/ui-next/src/features/flows/traces/format-duration.ts +25 -0
  426. package/src/console/ui-next/src/features/flows/traces/graph-filter.test.ts +192 -0
  427. package/src/console/ui-next/src/features/flows/traces/graph-filter.ts +175 -0
  428. package/src/console/ui-next/src/features/flows/traces/http-method.ts +134 -0
  429. package/src/console/ui-next/src/features/flows/traces/replay-playback.test.ts +101 -0
  430. package/src/console/ui-next/src/features/flows/traces/replay-playback.ts +107 -0
  431. package/src/console/ui-next/src/features/flows/traces/request-input-view.test.ts +60 -0
  432. package/src/console/ui-next/src/features/flows/traces/request-input-view.ts +108 -0
  433. package/src/console/ui-next/src/features/flows/traces/request-meta.ts +62 -0
  434. package/src/console/ui-next/src/features/flows/traces/scope-runs.test.ts +51 -0
  435. package/src/console/ui-next/src/features/flows/traces/scope-runs.ts +23 -0
  436. package/src/console/ui-next/src/features/flows/traces/trace-actions.test.ts +80 -0
  437. package/src/console/ui-next/src/features/flows/traces/trace-actions.ts +57 -0
  438. package/src/console/ui-next/src/features/flows/traces/trace-chain.test.ts +68 -0
  439. package/src/console/ui-next/src/features/flows/traces/trace-chain.ts +59 -0
  440. package/src/console/ui-next/src/features/flows/traces/trace-detail-sheet.tsx +1003 -0
  441. package/src/console/ui-next/src/features/flows/traces/trace-detail.test.ts +357 -0
  442. package/src/console/ui-next/src/features/flows/traces/trace-gates.ts +90 -0
  443. package/src/console/ui-next/src/features/flows/traces/trace-request-section.tsx +574 -0
  444. package/src/console/ui-next/src/features/flows/traces/trace-row-meta.test.ts +42 -0
  445. package/src/console/ui-next/src/features/flows/traces/trace-row-meta.ts +47 -0
  446. package/src/console/ui-next/src/features/flows/traces/trace-row.tsx +149 -0
  447. package/src/console/ui-next/src/features/flows/traces/traces-pane.tsx +289 -0
  448. package/src/console/ui-next/src/features/flows/traces/trigger-icon.test.ts +42 -0
  449. package/src/console/ui-next/src/features/flows/traces/trigger-icon.ts +53 -0
  450. package/src/console/ui-next/src/features/flows/traces/waterfall-bars.test.ts +93 -0
  451. package/src/console/ui-next/src/features/flows/traces/waterfall-bars.ts +80 -0
  452. package/src/console/ui-next/src/features/flows/traces/waterfall-timeline.test.ts +121 -0
  453. package/src/console/ui-next/src/features/flows/traces/waterfall-timeline.ts +230 -0
  454. package/src/console/ui-next/src/features/flows/traces/waterfall-tooltip.test.ts +51 -0
  455. package/src/console/ui-next/src/features/flows/traces/waterfall-tooltip.ts +20 -0
  456. package/src/console/ui-next/src/features/not-found/not-found-page.tsx +23 -0
  457. package/src/console/ui-next/src/features/observability/data/use-ai-list.ts +26 -0
  458. package/src/console/ui-next/src/features/observability/data/use-clock-list.ts +27 -0
  459. package/src/console/ui-next/src/features/observability/data/use-instances-list.ts +27 -0
  460. package/src/console/ui-next/src/features/observability/data/use-runs-query.ts +39 -0
  461. package/src/console/ui-next/src/features/observability/data/use-signals-list.ts +25 -0
  462. package/src/console/ui-next/src/features/observability/detail/ai-rail.tsx +77 -0
  463. package/src/console/ui-next/src/features/observability/detail/instance-fleet-sheet.tsx +111 -0
  464. package/src/console/ui-next/src/features/observability/detail/metrics-chart.tsx +111 -0
  465. package/src/console/ui-next/src/features/observability/detail/metrics-panel.tsx +154 -0
  466. package/src/console/ui-next/src/features/observability/explorer/error-list.tsx +139 -0
  467. package/src/console/ui-next/src/features/observability/explorer/error-row.tsx +84 -0
  468. package/src/console/ui-next/src/features/observability/explorer/health-strip.tsx +146 -0
  469. package/src/console/ui-next/src/features/observability/lib/ask-count.test.ts +47 -0
  470. package/src/console/ui-next/src/features/observability/lib/ask-count.ts +44 -0
  471. package/src/console/ui-next/src/features/observability/lib/health-cells.test.ts +243 -0
  472. package/src/console/ui-next/src/features/observability/lib/health-cells.ts +207 -0
  473. package/src/console/ui-next/src/features/observability/lib/run-fixture.ts +43 -0
  474. package/src/console/ui-next/src/features/observability/lib/time-buckets.test.ts +61 -0
  475. package/src/console/ui-next/src/features/observability/lib/time-buckets.ts +126 -0
  476. package/src/console/ui-next/src/features/observability/lib/token-count.test.ts +75 -0
  477. package/src/console/ui-next/src/features/observability/lib/token-count.ts +70 -0
  478. package/src/console/ui-next/src/features/observability/lib/top-errors.test.ts +89 -0
  479. package/src/console/ui-next/src/features/observability/lib/top-errors.ts +135 -0
  480. package/src/console/ui-next/src/features/observability/lib/window-stats.test.ts +62 -0
  481. package/src/console/ui-next/src/features/observability/lib/window-stats.ts +124 -0
  482. package/src/console/ui-next/src/features/observability/observability-page.tsx +217 -0
  483. package/src/console/ui-next/src/features/observability/query/runs-query-panel.tsx +91 -0
  484. package/src/console/ui-next/src/features/observability/state/observability-selection.test.ts +27 -0
  485. package/src/console/ui-next/src/features/observability/state/observability-selection.ts +121 -0
  486. package/src/console/ui-next/src/features/setup/auth-gate.test.ts +17 -0
  487. package/src/console/ui-next/src/features/setup/auth-gate.ts +21 -0
  488. package/src/console/ui-next/src/features/setup/claim-page.tsx +418 -0
  489. package/src/console/ui-next/src/features/store/data/use-gates.ts +26 -0
  490. package/src/console/ui-next/src/features/store/data/use-store-edit.ts +92 -0
  491. package/src/console/ui-next/src/features/store/data/use-store-files.ts +96 -0
  492. package/src/console/ui-next/src/features/store/data/use-store-kv-stats.ts +47 -0
  493. package/src/console/ui-next/src/features/store/data/use-store-query.test.ts +42 -0
  494. package/src/console/ui-next/src/features/store/data/use-store-query.ts +68 -0
  495. package/src/console/ui-next/src/features/store/data/use-store-reveal.ts +28 -0
  496. package/src/console/ui-next/src/features/store/data/use-store-sql-advise.ts +39 -0
  497. package/src/console/ui-next/src/features/store/data/use-store-sql-locks.ts +51 -0
  498. package/src/console/ui-next/src/features/store/data/use-store-sql-stats.ts +47 -0
  499. package/src/console/ui-next/src/features/store/data/use-store-sql.ts +39 -0
  500. package/src/console/ui-next/src/features/store/data/use-stores-list.ts +24 -0
  501. package/src/console/ui-next/src/features/store/detail/browse-section.tsx +692 -0
  502. package/src/console/ui-next/src/features/store/detail/json-value-sheet.tsx +470 -0
  503. package/src/console/ui-next/src/features/store/detail/resource-panel.tsx +325 -0
  504. package/src/console/ui-next/src/features/store/detail/reveal-cell.tsx +137 -0
  505. package/src/console/ui-next/src/features/store/detail/store-row-detail-sheet.tsx +225 -0
  506. package/src/console/ui-next/src/features/store/detail/touched-by-section.tsx +101 -0
  507. package/src/console/ui-next/src/features/store/explorer/store-tree.tsx +1044 -0
  508. package/src/console/ui-next/src/features/store/files/file-explorer.tsx +563 -0
  509. package/src/console/ui-next/src/features/store/files/file-kind-icon.tsx +70 -0
  510. package/src/console/ui-next/src/features/store/files/file-preview.tsx +338 -0
  511. package/src/console/ui-next/src/features/store/files/file-upload-sheet.tsx +190 -0
  512. package/src/console/ui-next/src/features/store/grid/catalog-advanced.tsx +80 -0
  513. package/src/console/ui-next/src/features/store/grid/extension-library-sheet.tsx +761 -0
  514. package/src/console/ui-next/src/features/store/grid/kv-add-sheet.tsx +165 -0
  515. package/src/console/ui-next/src/features/store/grid/pending-changes-sheet.tsx +219 -0
  516. package/src/console/ui-next/src/features/store/grid/rls-policy-sheet.tsx +875 -0
  517. package/src/console/ui-next/src/features/store/grid/sql-function-sheet.tsx +473 -0
  518. package/src/console/ui-next/src/features/store/grid/sql-index-sheet.tsx +355 -0
  519. package/src/console/ui-next/src/features/store/grid/sql-insert-sheet.tsx +177 -0
  520. package/src/console/ui-next/src/features/store/grid/sql-trigger-sheet.tsx +445 -0
  521. package/src/console/ui-next/src/features/store/grid/store-confirm-sheet.tsx +73 -0
  522. package/src/console/ui-next/src/features/store/grid/store-data-grid.tsx +1844 -0
  523. package/src/console/ui-next/src/features/store/grid/store-edit-sheet.tsx +329 -0
  524. package/src/console/ui-next/src/features/store/grid/store-grid-context-menu.tsx +111 -0
  525. package/src/console/ui-next/src/features/store/grid/store-grid-shortcuts.tsx +124 -0
  526. package/src/console/ui-next/src/features/store/lib/cell-selection.test.ts +125 -0
  527. package/src/console/ui-next/src/features/store/lib/cell-selection.ts +115 -0
  528. package/src/console/ui-next/src/features/store/lib/confirmation.test.ts +48 -0
  529. package/src/console/ui-next/src/features/store/lib/confirmation.ts +63 -0
  530. package/src/console/ui-next/src/features/store/lib/edit-history.test.ts +60 -0
  531. package/src/console/ui-next/src/features/store/lib/edit-history.ts +64 -0
  532. package/src/console/ui-next/src/features/store/lib/fields-from-table.ts +94 -0
  533. package/src/console/ui-next/src/features/store/lib/files-body.test.ts +16 -0
  534. package/src/console/ui-next/src/features/store/lib/files-body.ts +79 -0
  535. package/src/console/ui-next/src/features/store/lib/files-meta.test.ts +75 -0
  536. package/src/console/ui-next/src/features/store/lib/files-meta.ts +259 -0
  537. package/src/console/ui-next/src/features/store/lib/files-origin.test.ts +69 -0
  538. package/src/console/ui-next/src/features/store/lib/files-origin.ts +53 -0
  539. package/src/console/ui-next/src/features/store/lib/files-tree.test.ts +123 -0
  540. package/src/console/ui-next/src/features/store/lib/files-tree.ts +233 -0
  541. package/src/console/ui-next/src/features/store/lib/grid-model.test.ts +127 -0
  542. package/src/console/ui-next/src/features/store/lib/grid-model.ts +219 -0
  543. package/src/console/ui-next/src/features/store/lib/grid-transfer.test.ts +123 -0
  544. package/src/console/ui-next/src/features/store/lib/grid-transfer.ts +217 -0
  545. package/src/console/ui-next/src/features/store/lib/index-query.test.ts +30 -0
  546. package/src/console/ui-next/src/features/store/lib/index-query.ts +57 -0
  547. package/src/console/ui-next/src/features/store/lib/json-value.test.ts +141 -0
  548. package/src/console/ui-next/src/features/store/lib/json-value.ts +266 -0
  549. package/src/console/ui-next/src/features/store/lib/kv-format.test.ts +44 -0
  550. package/src/console/ui-next/src/features/store/lib/kv-format.ts +103 -0
  551. package/src/console/ui-next/src/features/store/lib/kv-meta.test.ts +43 -0
  552. package/src/console/ui-next/src/features/store/lib/kv-meta.ts +63 -0
  553. package/src/console/ui-next/src/features/store/lib/kv-query.test.ts +128 -0
  554. package/src/console/ui-next/src/features/store/lib/kv-query.ts +303 -0
  555. package/src/console/ui-next/src/features/store/lib/parse-resource-ref.ts +38 -0
  556. package/src/console/ui-next/src/features/store/lib/patch.test.ts +99 -0
  557. package/src/console/ui-next/src/features/store/lib/patch.ts +129 -0
  558. package/src/console/ui-next/src/features/store/lib/pending-edits.test.ts +125 -0
  559. package/src/console/ui-next/src/features/store/lib/pending-edits.ts +150 -0
  560. package/src/console/ui-next/src/features/store/lib/pending-sql.test.ts +108 -0
  561. package/src/console/ui-next/src/features/store/lib/pending-sql.ts +136 -0
  562. package/src/console/ui-next/src/features/store/lib/pg-extension-library.test.ts +117 -0
  563. package/src/console/ui-next/src/features/store/lib/pg-extension-library.ts +277 -0
  564. package/src/console/ui-next/src/features/store/lib/query-defaults.test.ts +78 -0
  565. package/src/console/ui-next/src/features/store/lib/query-defaults.ts +77 -0
  566. package/src/console/ui-next/src/features/store/lib/query-gate.test.ts +132 -0
  567. package/src/console/ui-next/src/features/store/lib/query-gate.ts +187 -0
  568. package/src/console/ui-next/src/features/store/lib/query-highlight.test.ts +103 -0
  569. package/src/console/ui-next/src/features/store/lib/query-highlight.ts +382 -0
  570. package/src/console/ui-next/src/features/store/lib/query-schema.test.ts +139 -0
  571. package/src/console/ui-next/src/features/store/lib/query-schema.ts +128 -0
  572. package/src/console/ui-next/src/features/store/lib/query-session.test.ts +91 -0
  573. package/src/console/ui-next/src/features/store/lib/query-session.ts +330 -0
  574. package/src/console/ui-next/src/features/store/lib/replica-lag.test.ts +101 -0
  575. package/src/console/ui-next/src/features/store/lib/replica-lag.ts +31 -0
  576. package/src/console/ui-next/src/features/store/lib/resource-effects.ts +12 -0
  577. package/src/console/ui-next/src/features/store/lib/rls-gate-catalog.test.ts +131 -0
  578. package/src/console/ui-next/src/features/store/lib/rls-gate-catalog.ts +274 -0
  579. package/src/console/ui-next/src/features/store/lib/rls-policy.test.ts +95 -0
  580. package/src/console/ui-next/src/features/store/lib/rls-policy.ts +290 -0
  581. package/src/console/ui-next/src/features/store/lib/rtl.test.ts +17 -0
  582. package/src/console/ui-next/src/features/store/lib/rtl.ts +15 -0
  583. package/src/console/ui-next/src/features/store/lib/schema-color.test.ts +91 -0
  584. package/src/console/ui-next/src/features/store/lib/schema-color.ts +216 -0
  585. package/src/console/ui-next/src/features/store/lib/schema-graph.test.ts +435 -0
  586. package/src/console/ui-next/src/features/store/lib/schema-graph.ts +566 -0
  587. package/src/console/ui-next/src/features/store/lib/sql-catalog.test.ts +60 -0
  588. package/src/console/ui-next/src/features/store/lib/sql-catalog.ts +98 -0
  589. package/src/console/ui-next/src/features/store/lib/sql-complete.test.ts +109 -0
  590. package/src/console/ui-next/src/features/store/lib/sql-complete.ts +385 -0
  591. package/src/console/ui-next/src/features/store/lib/sql-format.test.ts +35 -0
  592. package/src/console/ui-next/src/features/store/lib/sql-format.ts +85 -0
  593. package/src/console/ui-next/src/features/store/lib/sql-function.test.ts +141 -0
  594. package/src/console/ui-next/src/features/store/lib/sql-function.ts +195 -0
  595. package/src/console/ui-next/src/features/store/lib/sql-index.test.ts +101 -0
  596. package/src/console/ui-next/src/features/store/lib/sql-index.ts +151 -0
  597. package/src/console/ui-next/src/features/store/lib/sql-statements.test.ts +114 -0
  598. package/src/console/ui-next/src/features/store/lib/sql-statements.ts +205 -0
  599. package/src/console/ui-next/src/features/store/lib/sql-trigger.test.ts +125 -0
  600. package/src/console/ui-next/src/features/store/lib/sql-trigger.ts +210 -0
  601. package/src/console/ui-next/src/features/store/lib/store-tree.test.ts +220 -0
  602. package/src/console/ui-next/src/features/store/lib/store-tree.ts +314 -0
  603. package/src/console/ui-next/src/features/store/performance/advisor-enable.test.ts +16 -0
  604. package/src/console/ui-next/src/features/store/performance/advisor-enable.ts +26 -0
  605. package/src/console/ui-next/src/features/store/performance/kv-performance-panel.tsx +223 -0
  606. package/src/console/ui-next/src/features/store/performance/performance-panel.tsx +442 -0
  607. package/src/console/ui-next/src/features/store/query/query-complete.tsx +131 -0
  608. package/src/console/ui-next/src/features/store/query/query-console.tsx +1159 -0
  609. package/src/console/ui-next/src/features/store/query/query-editor.tsx +300 -0
  610. package/src/console/ui-next/src/features/store/query/query-gate-menu.tsx +178 -0
  611. package/src/console/ui-next/src/features/store/query/query-gate-parts.tsx +344 -0
  612. package/src/console/ui-next/src/features/store/query/query-gate-viz.tsx +166 -0
  613. package/src/console/ui-next/src/features/store/query/query-highlight-view.tsx +61 -0
  614. package/src/console/ui-next/src/features/store/query/query-results.tsx +369 -0
  615. package/src/console/ui-next/src/features/store/query/query-schema-panel.tsx +300 -0
  616. package/src/console/ui-next/src/features/store/query/sql-style-editor.tsx +73 -0
  617. package/src/console/ui-next/src/features/store/schema/schema-constraint-icon.tsx +108 -0
  618. package/src/console/ui-next/src/features/store/schema/schema-relation-edge.tsx +76 -0
  619. package/src/console/ui-next/src/features/store/schema/schema-relation-icon.tsx +84 -0
  620. package/src/console/ui-next/src/features/store/schema/schema-table-node.tsx +199 -0
  621. package/src/console/ui-next/src/features/store/schema/schema-visualizer.tsx +273 -0
  622. package/src/console/ui-next/src/features/store/state/store-selection.test.ts +38 -0
  623. package/src/console/ui-next/src/features/store/state/store-selection.ts +154 -0
  624. package/src/console/ui-next/src/features/store/store-page.tsx +180 -0
  625. package/src/console/ui-next/src/features/units/call/call-api-panel.tsx +1247 -0
  626. package/src/console/ui-next/src/features/units/call/call-identity-menu.tsx +226 -0
  627. package/src/console/ui-next/src/features/units/call/call-pii-button.tsx +60 -0
  628. package/src/console/ui-next/src/features/units/data/use-flows-invoke.ts +75 -0
  629. package/src/console/ui-next/src/features/units/detail/effects-summary.tsx +80 -0
  630. package/src/console/ui-next/src/features/units/detail/errors-section.tsx +64 -0
  631. package/src/console/ui-next/src/features/units/detail/flow-activity-strip.tsx +119 -0
  632. package/src/console/ui-next/src/features/units/detail/flow-contract-panel.tsx +335 -0
  633. package/src/console/ui-next/src/features/units/detail/schema-fields.tsx +149 -0
  634. package/src/console/ui-next/src/features/units/detail/validation-section.tsx +66 -0
  635. package/src/console/ui-next/src/features/units/explorer/units-tree.tsx +644 -0
  636. package/src/console/ui-next/src/features/units/lib/call-invoke-as.test.ts +40 -0
  637. package/src/console/ui-next/src/features/units/lib/call-read-safe.test.ts +38 -0
  638. package/src/console/ui-next/src/features/units/lib/call-read-safe.ts +32 -0
  639. package/src/console/ui-next/src/features/units/lib/call-timing.test.ts +28 -0
  640. package/src/console/ui-next/src/features/units/lib/call-timing.ts +34 -0
  641. package/src/console/ui-next/src/features/units/lib/contract-input.test.ts +47 -0
  642. package/src/console/ui-next/src/features/units/lib/contract-input.ts +68 -0
  643. package/src/console/ui-next/src/features/units/lib/fields-from-schema.test.ts +119 -0
  644. package/src/console/ui-next/src/features/units/lib/fields-from-schema.ts +329 -0
  645. package/src/console/ui-next/src/features/units/lib/fk-lookup.test.ts +103 -0
  646. package/src/console/ui-next/src/features/units/lib/fk-lookup.ts +175 -0
  647. package/src/console/ui-next/src/features/units/lib/flow-activity.test.ts +76 -0
  648. package/src/console/ui-next/src/features/units/lib/flow-activity.ts +68 -0
  649. package/src/console/ui-next/src/features/units/lib/flow-trigger.test.ts +63 -0
  650. package/src/console/ui-next/src/features/units/lib/flow-trigger.ts +120 -0
  651. package/src/console/ui-next/src/features/units/lib/invoke-cache.test.ts +31 -0
  652. package/src/console/ui-next/src/features/units/lib/invoke-cache.ts +22 -0
  653. package/src/console/ui-next/src/features/units/lib/invoke-response.test.ts +76 -0
  654. package/src/console/ui-next/src/features/units/lib/invoke-response.ts +70 -0
  655. package/src/console/ui-next/src/features/units/lib/path-params.test.ts +43 -0
  656. package/src/console/ui-next/src/features/units/lib/path-params.ts +75 -0
  657. package/src/console/ui-next/src/features/units/lib/resolve-clock.test.ts +106 -0
  658. package/src/console/ui-next/src/features/units/lib/resolve-clock.ts +79 -0
  659. package/src/console/ui-next/src/features/units/lib/schema-type-visual.ts +28 -0
  660. package/src/console/ui-next/src/features/units/lib/signal-delivery.test.ts +29 -0
  661. package/src/console/ui-next/src/features/units/lib/signal-delivery.ts +67 -0
  662. package/src/console/ui-next/src/features/units/lib/unit-tree.test.ts +289 -0
  663. package/src/console/ui-next/src/features/units/lib/unit-tree.ts +307 -0
  664. package/src/console/ui-next/src/features/units/lib/validate-contract.ts +103 -0
  665. package/src/console/ui-next/src/features/units/state/units-selection.ts +49 -0
  666. package/src/console/ui-next/src/features/units/units-page.tsx +120 -0
  667. package/src/console/ui-next/src/features/vault/data/use-vault-list.ts +27 -0
  668. package/src/console/ui-next/src/features/vault/detail/vault-detail.tsx +831 -0
  669. package/src/console/ui-next/src/features/vault/detail/vault-overview.tsx +71 -0
  670. package/src/console/ui-next/src/features/vault/explorer/vault-list.tsx +291 -0
  671. package/src/console/ui-next/src/features/vault/explorer/vault-posture-strip.tsx +131 -0
  672. package/src/console/ui-next/src/features/vault/explorer/vault-search.tsx +126 -0
  673. package/src/console/ui-next/src/features/vault/lib/backend.test.ts +147 -0
  674. package/src/console/ui-next/src/features/vault/lib/backend.ts +216 -0
  675. package/src/console/ui-next/src/features/vault/lib/blast-radius.ts +53 -0
  676. package/src/console/ui-next/src/features/vault/lib/confirmation.test.ts +41 -0
  677. package/src/console/ui-next/src/features/vault/lib/confirmation.ts +50 -0
  678. package/src/console/ui-next/src/features/vault/lib/contract-ops.test.ts +35 -0
  679. package/src/console/ui-next/src/features/vault/lib/contract-ops.ts +94 -0
  680. package/src/console/ui-next/src/features/vault/lib/dormant.ts +28 -0
  681. package/src/console/ui-next/src/features/vault/lib/export-safe.test.ts +25 -0
  682. package/src/console/ui-next/src/features/vault/lib/export-safe.ts +62 -0
  683. package/src/console/ui-next/src/features/vault/lib/fixture.ts +92 -0
  684. package/src/console/ui-next/src/features/vault/lib/group.test.ts +31 -0
  685. package/src/console/ui-next/src/features/vault/lib/group.ts +43 -0
  686. package/src/console/ui-next/src/features/vault/lib/posture.test.ts +137 -0
  687. package/src/console/ui-next/src/features/vault/lib/posture.ts +275 -0
  688. package/src/console/ui-next/src/features/vault/lib/progress.test.ts +36 -0
  689. package/src/console/ui-next/src/features/vault/lib/progress.ts +51 -0
  690. package/src/console/ui-next/src/features/vault/lib/search.test.ts +139 -0
  691. package/src/console/ui-next/src/features/vault/lib/search.ts +403 -0
  692. package/src/console/ui-next/src/features/vault/lib/theme.ts +14 -0
  693. package/src/console/ui-next/src/features/vault/lib/types.ts +114 -0
  694. package/src/console/ui-next/src/features/vault/lib/write-review.test.ts +139 -0
  695. package/src/console/ui-next/src/features/vault/lib/write-review.ts +115 -0
  696. package/src/console/ui-next/src/features/vault/sheets/vault-create-sheet.tsx +209 -0
  697. package/src/console/ui-next/src/features/vault/sheets/vault-master-key-sheet.tsx +87 -0
  698. package/src/console/ui-next/src/features/vault/sheets/vault-rotate-master-sheet.tsx +43 -0
  699. package/src/console/ui-next/src/features/vault/sheets/vault-security-sheet.tsx +205 -0
  700. package/src/console/ui-next/src/features/vault/sheets/vault-verify-sheet.tsx +103 -0
  701. package/src/console/ui-next/src/features/vault/sheets/vault-write-review-dialog.test.tsx +175 -0
  702. package/src/console/ui-next/src/features/vault/sheets/vault-write-review-dialog.tsx +135 -0
  703. package/src/console/ui-next/src/features/vault/sheets/vault-write-sheet.tsx +224 -0
  704. package/src/console/ui-next/src/features/vault/state/vault-selection.test.ts +20 -0
  705. package/src/console/ui-next/src/features/vault/state/vault-selection.ts +87 -0
  706. package/src/console/ui-next/src/features/vault/vault-page.tsx +439 -0
  707. package/src/console/ui-next/src/hooks/use-mobile.ts +22 -0
  708. package/src/console/ui-next/src/lib/document-meta.test.ts +43 -0
  709. package/src/console/ui-next/src/lib/document-meta.ts +34 -0
  710. package/src/console/ui-next/src/lib/ease.ts +59 -0
  711. package/src/console/ui-next/src/lib/element-icons.test.ts +38 -0
  712. package/src/console/ui-next/src/lib/element-icons.ts +75 -0
  713. package/src/console/ui-next/src/lib/highlight.test.ts +30 -0
  714. package/src/console/ui-next/src/lib/highlight.ts +39 -0
  715. package/src/console/ui-next/src/lib/hooks/use-hover-capable.ts +30 -0
  716. package/src/console/ui-next/src/lib/last-module-search.test.ts +47 -0
  717. package/src/console/ui-next/src/lib/last-module-search.ts +164 -0
  718. package/src/console/ui-next/src/lib/motion.ts +16 -0
  719. package/src/console/ui-next/src/lib/shiki.ts +42 -0
  720. package/src/console/ui-next/src/lib/shortcut-keys.tsx +47 -0
  721. package/src/console/ui-next/src/lib/shortcut.test.ts +70 -0
  722. package/src/console/ui-next/src/lib/shortcut.ts +111 -0
  723. package/src/console/ui-next/src/lib/use-console-shortcuts.ts +56 -0
  724. package/src/console/ui-next/src/lib/use-last-module-search.ts +37 -0
  725. package/src/console/ui-next/src/lib/utils.ts +15 -0
  726. package/src/console/ui-next/src/main.tsx +44 -0
  727. package/src/console/ui-next/src/router.tsx +175 -0
  728. package/src/console/ui-next/src/styles.css +384 -0
  729. package/src/console/ui-next/src/vite-env.d.ts +17 -0
  730. package/src/console/ui-next/tsconfig.json +25 -0
  731. package/src/console/ui-next/ui-next-dev-operator.test.ts +76 -0
  732. package/src/console/ui-next/ui-next-dev-operator.ts +81 -0
  733. package/src/console/ui-next/ui-next-seed-app-schema.ts +526 -0
  734. package/src/console/ui-next/ui-next-seed-manifest-surface.ts +882 -0
  735. package/src/console/ui-next/ui-next-seed-manifest.ts +635 -0
  736. package/src/console/ui-next/ui-next-seed-runs.ts +1429 -0
  737. package/src/console/ui-next/ui-next-seed-store.ts +1125 -0
  738. package/src/console/ui-next/ui-next-seed.test.ts +511 -0
  739. package/src/console/ui-next/ui-next-seed.ts +122 -0
  740. package/src/console/ui-next/vite-console-kernel-plugin.ts +195 -0
  741. package/src/console/ui-next/vite.config.ts +88 -0
  742. package/src/console/xss.gate.test.ts +21 -26
  743. package/src/docker/compose.ts +26 -7
  744. package/src/docker/derive.ts +91 -16
  745. package/src/docker/docker.test.ts +223 -29
  746. package/src/docker/helpers.ts +20 -0
  747. package/src/docker/images-config.test.ts +29 -22
  748. package/src/docker/index.ts +9 -0
  749. package/src/docker/postgres-advisor.integration.test.ts +163 -0
  750. package/src/docker/query-passthrough.integration.test.ts +212 -0
  751. package/src/docker/recipes/index.ts +14 -0
  752. package/src/docker/recipes/llama-cpp.ts +23 -7
  753. package/src/docker/recipes/nginx.ts +61 -0
  754. package/src/docker/recipes/ollama.ts +1 -1
  755. package/src/docker/recipes/postgres-advisor.ts +58 -0
  756. package/src/docker/recipes/postgres.ts +6 -2
  757. package/src/docker/recipes/sglang.ts +1 -1
  758. package/src/docker/recipes/timescale.ts +6 -2
  759. package/src/docker/recipes/traefik.ts +1 -0
  760. package/src/docker/recipes/vllm.ts +1 -1
  761. package/src/docker/stack-id.test.ts +5 -14
  762. package/src/docker/stack-id.ts +15 -35
  763. package/src/docker/stack.integration.test.ts +2 -2
  764. package/src/docker/types.ts +16 -7
  765. package/src/drivers/ai-mock.ts +41 -1
  766. package/src/drivers/ai-openai-compatible.ts +34 -4
  767. package/src/drivers/index.ts +32 -0
  768. package/src/drivers/instances-postgres.ts +154 -0
  769. package/src/drivers/meilisearch.integration.test.ts +9 -0
  770. package/src/drivers/meilisearch.test.ts +134 -6
  771. package/src/drivers/meilisearch.ts +77 -8
  772. package/src/drivers/memory.ts +384 -24
  773. package/src/drivers/pg-extensions.test.ts +50 -0
  774. package/src/drivers/pg-extensions.ts +1054 -0
  775. package/src/drivers/pg-rls.test.ts +71 -0
  776. package/src/drivers/pg-rls.ts +234 -0
  777. package/src/drivers/pgvector.ts +24 -0
  778. package/src/drivers/redis.ts +12 -0
  779. package/src/drivers/s3-ensure-bucket.test.ts +88 -0
  780. package/src/drivers/s3-ensure-bucket.ts +152 -0
  781. package/src/drivers/s3.ts +34 -2
  782. package/src/drivers/types.ts +28 -0
  783. package/src/drivers/vault-1password.test.ts +164 -0
  784. package/src/drivers/vault-1password.ts +351 -0
  785. package/src/drivers/vault-aws-secrets-manager.ts +15 -94
  786. package/src/drivers/vault-azure-key-vault.test.ts +137 -0
  787. package/src/drivers/vault-azure-key-vault.ts +243 -0
  788. package/src/drivers/vault-builtin.test.ts +50 -42
  789. package/src/drivers/vault-doppler.test.ts +133 -0
  790. package/src/drivers/vault-doppler.ts +202 -0
  791. package/src/drivers/vault-dotenv-parse.ts +32 -0
  792. package/src/drivers/vault-env.ts +1 -1
  793. package/src/drivers/vault-gcp-secret-manager.test.ts +127 -0
  794. package/src/drivers/vault-gcp-secret-manager.ts +291 -0
  795. package/src/drivers/vault-managed.test.ts +23 -26
  796. package/src/drivers/vault-managed.ts +58 -20
  797. package/src/drivers/vault-remote-bag.ts +242 -0
  798. package/src/drivers/vault-types.ts +9 -7
  799. package/src/elements/ai/declare.ts +73 -3
  800. package/src/elements/ai/errors.test.ts +35 -0
  801. package/src/elements/ai/errors.ts +139 -0
  802. package/src/elements/ai/eval.ts +26 -1
  803. package/src/elements/ai/runtime.ts +236 -84
  804. package/src/elements/ai/schema.test.ts +133 -0
  805. package/src/elements/ai/schema.ts +156 -11
  806. package/src/elements/ai/tools.test.ts +1 -1
  807. package/src/elements/ai.test.ts +152 -2
  808. package/src/elements/ai.ts +12 -1
  809. package/src/elements/clock/runtime.ts +31 -13
  810. package/src/elements/clock.test.ts +49 -0
  811. package/src/elements/gate/config.ts +18 -3
  812. package/src/elements/gate/declare.ts +25 -5
  813. package/src/elements/gate/flatten.ts +74 -0
  814. package/src/elements/gate/permissions.ts +1 -0
  815. package/src/elements/gate/runtime.ts +16 -4
  816. package/src/elements/gate.test.ts +32 -0
  817. package/src/elements/gate.ts +9 -1
  818. package/src/elements/index.ts +2 -0
  819. package/src/elements/store/cache.test.ts +79 -0
  820. package/src/elements/store/cache.ts +176 -0
  821. package/src/elements/store/classify.ts +79 -4
  822. package/src/elements/store/emit-drizzle.ts +3 -1
  823. package/src/elements/store/files-policy.test.ts +36 -1
  824. package/src/elements/store/files-policy.ts +151 -0
  825. package/src/elements/store/index-boot.test.ts +23 -6
  826. package/src/elements/store/resource-list-docs.fixture.ts +0 -2
  827. package/src/elements/store/resource-list-docs.test.ts +3 -0
  828. package/src/elements/store/resource.test.ts +100 -21
  829. package/src/elements/store/resource.ts +279 -62
  830. package/src/elements/store/runtime.ts +53 -2
  831. package/src/elements/store/schema-decl.test.ts +49 -0
  832. package/src/elements/store/schema-decl.ts +29 -9
  833. package/src/elements/store/seed.test.ts +22 -1
  834. package/src/elements/store/seed.ts +46 -1
  835. package/src/elements/store/sql-session.test.ts +55 -58
  836. package/src/elements/store/sql-session.ts +32 -7
  837. package/src/elements/store/table.ts +17 -1
  838. package/src/elements/store/upsert-app.test.ts +1 -1
  839. package/src/elements/store.test.ts +21 -0
  840. package/src/elements/store.ts +26 -3
  841. package/src/elements/vault/boot-chain.test.ts +108 -10
  842. package/src/elements/vault/boot-chain.ts +15 -15
  843. package/src/elements/vault/builtin-adapter.test.ts +116 -58
  844. package/src/elements/vault/builtin-adapter.ts +253 -47
  845. package/src/elements/vault/chain.ts +6 -20
  846. package/src/elements/vault/chaos-child.ts +424 -0
  847. package/src/elements/vault/chaos.test.ts +651 -0
  848. package/src/elements/vault/declare.ts +5 -2
  849. package/src/elements/vault/resilience.ts +6 -1
  850. package/src/elements/vault/runtime.ts +47 -13
  851. package/src/elements/vault/security-checklist.test.ts +10 -8
  852. package/src/elements/vault/storage.ts +165 -31
  853. package/src/elements/vault/test-helpers.ts +368 -0
  854. package/src/elements/vault.test.ts +1 -0
  855. package/src/elements/vault.ts +8 -0
  856. package/src/full.ts +10 -0
  857. package/src/http.ts +1 -1
  858. package/src/index.ts +10 -0
  859. package/src/kernel/adopt-barrel-fresh.test.ts +1 -2
  860. package/src/kernel/app-auth.ts +8 -1
  861. package/src/kernel/app.ts +328 -35
  862. package/src/kernel/auth-resolve.ts +51 -0
  863. package/src/kernel/auto-cache.test.ts +270 -0
  864. package/src/kernel/auto-registry.test.ts +52 -1
  865. package/src/kernel/boot-bind/ai.test.ts +34 -1
  866. package/src/kernel/boot-bind/ai.ts +15 -2
  867. package/src/kernel/boot-bind/channel.test.ts +1 -1
  868. package/src/kernel/boot-bind/channel.ts +1 -1
  869. package/src/kernel/boot-bind/clock.ts +9 -7
  870. package/src/kernel/boot-bind/gate.ts +1 -1
  871. package/src/kernel/boot-bind/honor-config.test.ts +70 -3
  872. package/src/kernel/boot-bind/instances.ts +58 -0
  873. package/src/kernel/boot-bind/journal.ts +3 -2
  874. package/src/kernel/boot-bind/runs.ts +63 -5
  875. package/src/kernel/boot-bind/signal.ts +1 -1
  876. package/src/kernel/boot-bind/store.ts +4 -4
  877. package/src/kernel/boot.test.ts +9 -9
  878. package/src/kernel/boot.ts +115 -16
  879. package/src/kernel/capability.test.ts +42 -0
  880. package/src/kernel/capability.ts +44 -2
  881. package/src/kernel/compensate.test.ts +34 -1
  882. package/src/kernel/compensate.ts +19 -0
  883. package/src/kernel/effect-timing.test.ts +16 -0
  884. package/src/kernel/effects-stamping.test.ts +3 -3
  885. package/src/kernel/effects.test.ts +15 -0
  886. package/src/kernel/effects.ts +39 -5
  887. package/src/kernel/elapsed.test.ts +26 -0
  888. package/src/kernel/elapsed.ts +23 -0
  889. package/src/kernel/element-registries.ts +19 -4
  890. package/src/kernel/errors.ts +29 -6
  891. package/src/kernel/flow.ts +5 -1
  892. package/src/kernel/fx-ask-telemetry.test.ts +114 -0
  893. package/src/kernel/fx.test.ts +168 -2
  894. package/src/kernel/fx.ts +139 -19
  895. package/src/kernel/graceful-shutdown.test.ts +20 -0
  896. package/src/kernel/graceful-shutdown.ts +9 -3
  897. package/src/kernel/horizontal-child.ts +4 -4
  898. package/src/kernel/http-query.test.ts +184 -0
  899. package/src/kernel/http-resource.ts +55 -0
  900. package/src/kernel/index.ts +43 -0
  901. package/src/kernel/instance-id.ts +23 -0
  902. package/src/kernel/instances-chaos-child.ts +73 -0
  903. package/src/kernel/instances.chaos.test.ts +238 -0
  904. package/src/kernel/instances.test.ts +85 -0
  905. package/src/kernel/instances.ts +372 -0
  906. package/src/kernel/lazy-require.ts +20 -0
  907. package/src/kernel/list-page.test.ts +194 -0
  908. package/src/kernel/list-page.ts +515 -0
  909. package/src/kernel/list-query.ts +469 -0
  910. package/src/kernel/pipeline-api-key.test.ts +266 -0
  911. package/src/kernel/pipeline.test.ts +164 -2
  912. package/src/kernel/pipeline.ts +13 -1
  913. package/src/kernel/plugin-elements.test.ts +1 -1
  914. package/src/kernel/plugin-needs.test.ts +1 -1
  915. package/src/kernel/plugin.ts +5 -5
  916. package/src/kernel/ready.test.ts +22 -2
  917. package/src/kernel/registry.ts +8 -4
  918. package/src/kernel/resource-mount.test.ts +75 -0
  919. package/src/kernel/router/index.ts +2 -0
  920. package/src/kernel/router/linear.ts +7 -0
  921. package/src/kernel/router/regexp.ts +8 -0
  922. package/src/kernel/router/smart.ts +7 -3
  923. package/src/kernel/router/trie.ts +7 -0
  924. package/src/kernel/router/types.ts +41 -1
  925. package/src/kernel/router.test.ts +27 -0
  926. package/src/kernel/router.ts +2 -0
  927. package/src/kernel/run-duration.test.ts +92 -0
  928. package/src/kernel/run-telemetry.ts +8 -2
  929. package/src/kernel/triggers.ts +95 -74
  930. package/src/manifest/sql-resource.test.ts +29 -0
  931. package/src/manifest/sql-resource.ts +20 -4
  932. package/src/manifest/types.ts +12 -3
  933. package/src/plugins/auth-delivery.mailpit.integration.test.ts +1 -1
  934. package/src/plugins/auth-methods.security.test.ts +3 -3
  935. package/src/plugins/auth-methods.test.ts +2 -2
  936. package/src/plugins/cors.test.ts +4 -2
  937. package/src/plugins/cors.ts +11 -2
  938. package/src/plugins/csrf.test.ts +17 -0
  939. package/src/plugins/csrf.ts +1 -1
  940. package/src/plugins/username-policy.test.ts +8 -8
  941. package/src/plugins/username.ts +1 -1
  942. package/src/release/build-lib.ts +7 -1
  943. package/src/release/limits.ts +2 -2
  944. package/src/release/measure.ts +7 -10
  945. package/src/runs/bridge-to-console.ts +99 -0
  946. package/src/runs/collect.test.ts +68 -0
  947. package/src/runs/collect.ts +29 -2
  948. package/src/runs/drivers/clickhouse.ts +4 -1
  949. package/src/runs/drivers/files.ts +138 -33
  950. package/src/runs/drivers/memory.ts +46 -7
  951. package/src/runs/drivers/postgres.ts +4 -1
  952. package/src/runs/duckdb.test.ts +33 -0
  953. package/src/runs/duckdb.ts +41 -0
  954. package/src/runs/history.ts +61 -0
  955. package/src/runs/index.ts +29 -1
  956. package/src/runs/parquet.test.ts +110 -0
  957. package/src/runs/parquet.ts +129 -8
  958. package/src/runs/retention.test.ts +24 -0
  959. package/src/runs/retention.ts +42 -0
  960. package/src/runs/runs.test.ts +101 -0
  961. package/src/runs/runtime.ts +5 -3
  962. package/src/runs/types.ts +33 -4
  963. package/src/runtime/bun.ts +61 -4
  964. package/src/runtime/dev-request-log.test.ts +4 -0
  965. package/src/runtime/dev-request-log.ts +19 -2
  966. package/src/runtime/index.ts +8 -1
  967. package/src/runtime/json-code-block.test.ts +355 -0
  968. package/src/runtime/json-code-block.ts +961 -0
  969. package/src/runtime/serve.test.ts +49 -4
  970. package/src/term.test.ts +89 -1
  971. package/src/term.ts +103 -29
  972. package/src/test/create-test-app.ts +19 -12
  973. package/src/test/reset-element-registries.ts +17 -9
  974. package/src/console/ui/access/AccessA11yView.tsx +0 -222
  975. package/src/console/ui/access/a11y.test.tsx +0 -113
  976. package/src/console/ui/access/acknowledgement.test.ts +0 -10
  977. package/src/console/ui/access/acknowledgement.ts +0 -33
  978. package/src/console/ui/access/blast-radius.test.ts +0 -26
  979. package/src/console/ui/access/blast-radius.ts +0 -38
  980. package/src/console/ui/access/confirmation.test.ts +0 -34
  981. package/src/console/ui/access/confirmation.ts +0 -33
  982. package/src/console/ui/access/fixture.ts +0 -199
  983. package/src/console/ui/access/grantable.test.ts +0 -15
  984. package/src/console/ui/access/grantable.ts +0 -31
  985. package/src/console/ui/access/hygiene.test.ts +0 -12
  986. package/src/console/ui/access/hygiene.ts +0 -39
  987. package/src/console/ui/access/index.ts +0 -47
  988. package/src/console/ui/access/provenance.test.ts +0 -10
  989. package/src/console/ui/access/provenance.ts +0 -25
  990. package/src/console/ui/access/search.test.ts +0 -13
  991. package/src/console/ui/access/search.ts +0 -68
  992. package/src/console/ui/access/types.ts +0 -111
  993. package/src/console/ui/ai/AiA11yView.tsx +0 -254
  994. package/src/console/ui/ai/a11y.test.tsx +0 -96
  995. package/src/console/ui/ai/findings.ts +0 -41
  996. package/src/console/ui/ai/fixture.ts +0 -177
  997. package/src/console/ui/ai/format.ts +0 -88
  998. package/src/console/ui/ai/group.test.ts +0 -35
  999. package/src/console/ui/ai/group.ts +0 -80
  1000. package/src/console/ui/ai/index.ts +0 -59
  1001. package/src/console/ui/ai/promotion.test.ts +0 -72
  1002. package/src/console/ui/ai/promotion.ts +0 -141
  1003. package/src/console/ui/ai/search.test.ts +0 -31
  1004. package/src/console/ui/ai/search.ts +0 -79
  1005. package/src/console/ui/ai/types.ts +0 -132
  1006. package/src/console/ui/architecture/ArchitectureA11yView.tsx +0 -142
  1007. package/src/console/ui/architecture/a11y.test.tsx +0 -96
  1008. package/src/console/ui/architecture/boundary.ts +0 -42
  1009. package/src/console/ui/architecture/declared.ts +0 -161
  1010. package/src/console/ui/architecture/fixture.ts +0 -74
  1011. package/src/console/ui/architecture/index.ts +0 -56
  1012. package/src/console/ui/architecture/layers.ts +0 -64
  1013. package/src/console/ui/architecture/layout.ts +0 -66
  1014. package/src/console/ui/architecture/pathologies.ts +0 -251
  1015. package/src/console/ui/architecture/search.ts +0 -136
  1016. package/src/console/ui/architecture/traffic.ts +0 -92
  1017. package/src/console/ui/architecture/types.ts +0 -136
  1018. package/src/console/ui/architecture/view.test.ts +0 -153
  1019. package/src/console/ui/architecture/view.ts +0 -489
  1020. package/src/console/ui/channels/ChannelsA11yView.tsx +0 -171
  1021. package/src/console/ui/channels/a11y.test.tsx +0 -95
  1022. package/src/console/ui/channels/confirmation.test.ts +0 -34
  1023. package/src/console/ui/channels/confirmation.ts +0 -24
  1024. package/src/console/ui/channels/fallback.test.ts +0 -15
  1025. package/src/console/ui/channels/fallback.ts +0 -20
  1026. package/src/console/ui/channels/findings.ts +0 -34
  1027. package/src/console/ui/channels/fixture.ts +0 -134
  1028. package/src/console/ui/channels/group.ts +0 -25
  1029. package/src/console/ui/channels/index.ts +0 -51
  1030. package/src/console/ui/channels/locale.test.ts +0 -15
  1031. package/src/console/ui/channels/locale.ts +0 -25
  1032. package/src/console/ui/channels/mask.test.ts +0 -14
  1033. package/src/console/ui/channels/mask.ts +0 -12
  1034. package/src/console/ui/channels/search.ts +0 -49
  1035. package/src/console/ui/channels/taxonomy.test.ts +0 -17
  1036. package/src/console/ui/channels/taxonomy.ts +0 -47
  1037. package/src/console/ui/channels/types.ts +0 -118
  1038. package/src/console/ui/clock/ClockA11yView.tsx +0 -165
  1039. package/src/console/ui/clock/a11y.test.tsx +0 -96
  1040. package/src/console/ui/clock/confirmation.test.ts +0 -30
  1041. package/src/console/ui/clock/confirmation.ts +0 -31
  1042. package/src/console/ui/clock/findings.ts +0 -37
  1043. package/src/console/ui/clock/fixture.ts +0 -111
  1044. package/src/console/ui/clock/health.test.ts +0 -25
  1045. package/src/console/ui/clock/health.ts +0 -56
  1046. package/src/console/ui/clock/index.ts +0 -41
  1047. package/src/console/ui/clock/search.test.ts +0 -37
  1048. package/src/console/ui/clock/search.ts +0 -72
  1049. package/src/console/ui/clock/timeline.test.ts +0 -42
  1050. package/src/console/ui/clock/timeline.ts +0 -41
  1051. package/src/console/ui/clock/types.ts +0 -79
  1052. package/src/console/ui/clock/waiting-on.test.ts +0 -30
  1053. package/src/console/ui/clock/waiting-on.ts +0 -78
  1054. package/src/console/ui/confirmation.unify.test.ts +0 -92
  1055. package/src/console/ui/diff/DiffA11yView.tsx +0 -76
  1056. package/src/console/ui/diff/a11y.test.tsx +0 -96
  1057. package/src/console/ui/diff/fixture.ts +0 -85
  1058. package/src/console/ui/diff/group.test.ts +0 -48
  1059. package/src/console/ui/diff/group.ts +0 -91
  1060. package/src/console/ui/diff/index.ts +0 -32
  1061. package/src/console/ui/diff/search.test.ts +0 -28
  1062. package/src/console/ui/diff/search.ts +0 -63
  1063. package/src/console/ui/diff/summary.ts +0 -73
  1064. package/src/console/ui/diff/types.ts +0 -48
  1065. package/src/console/ui/display.test.ts +0 -14
  1066. package/src/console/ui/display.ts +0 -9
  1067. package/src/console/ui/dist/assets/index--Y0Uaz-m.js +0 -10
  1068. package/src/console/ui/dist/assets/panel-access-ri1X9Otj.js +0 -64
  1069. package/src/console/ui/dist/assets/panel-ai-DLHjRoJk.js +0 -1
  1070. package/src/console/ui/dist/assets/panel-architecture-DI3bQF3J.js +0 -1
  1071. package/src/console/ui/dist/assets/panel-channels-BDYWX29p.js +0 -1
  1072. package/src/console/ui/dist/assets/panel-clock-i-JpTjVB.js +0 -1
  1073. package/src/console/ui/dist/assets/panel-diff-CFuWxiXy.js +0 -1
  1074. package/src/console/ui/dist/assets/panel-flows-B8TRhcoe.js +0 -48
  1075. package/src/console/ui/dist/assets/panel-gates-CfkBgco7.js +0 -1
  1076. package/src/console/ui/dist/assets/panel-overview-CW0CQEc2.js +0 -1
  1077. package/src/console/ui/dist/assets/panel-plugins-DDJwTehL.js +0 -1
  1078. package/src/console/ui/dist/assets/panel-runs-BxuyDI3x.js +0 -1
  1079. package/src/console/ui/dist/assets/panel-signals-BXofbj7v.js +0 -1
  1080. package/src/console/ui/dist/assets/panel-store-B8mH-arU.js +0 -1
  1081. package/src/console/ui/dist/assets/panel-traces-DSA-ZWnf.js +0 -1
  1082. package/src/console/ui/dist/assets/panel-vault-BkZdJPX8.js +0 -1
  1083. package/src/console/ui/dist/assets/rolldown-runtime-B0Z9INg1.js +0 -1
  1084. package/src/console/ui/dist/assets/style-C3L349iZ.css +0 -3
  1085. package/src/console/ui/dist/favicon.svg +0 -7
  1086. package/src/console/ui/dist/index.html +0 -15
  1087. package/src/console/ui/flows/FlowsA11yView.tsx +0 -140
  1088. package/src/console/ui/flows/a11y.test.tsx +0 -99
  1089. package/src/console/ui/flows/buffer.test.ts +0 -83
  1090. package/src/console/ui/flows/buffer.ts +0 -111
  1091. package/src/console/ui/flows/confirmation.ts +0 -129
  1092. package/src/console/ui/flows/contract.test.ts +0 -85
  1093. package/src/console/ui/flows/contract.ts +0 -329
  1094. package/src/console/ui/flows/fixture.ts +0 -81
  1095. package/src/console/ui/flows/graph.test.ts +0 -93
  1096. package/src/console/ui/flows/graph.ts +0 -539
  1097. package/src/console/ui/flows/index.ts +0 -82
  1098. package/src/console/ui/flows/save-as-test.test.ts +0 -47
  1099. package/src/console/ui/flows/save-as-test.ts +0 -97
  1100. package/src/console/ui/flows/search.ts +0 -238
  1101. package/src/console/ui/flows/tiers.ts +0 -133
  1102. package/src/console/ui/gates/GatesA11yView.tsx +0 -183
  1103. package/src/console/ui/gates/a11y.test.tsx +0 -113
  1104. package/src/console/ui/gates/audit.test.ts +0 -40
  1105. package/src/console/ui/gates/audit.ts +0 -61
  1106. package/src/console/ui/gates/denial.test.ts +0 -34
  1107. package/src/console/ui/gates/denial.ts +0 -43
  1108. package/src/console/ui/gates/findings.ts +0 -17
  1109. package/src/console/ui/gates/fixture.ts +0 -193
  1110. package/src/console/ui/gates/group.test.ts +0 -30
  1111. package/src/console/ui/gates/group.ts +0 -94
  1112. package/src/console/ui/gates/index.ts +0 -39
  1113. package/src/console/ui/gates/search.test.ts +0 -49
  1114. package/src/console/ui/gates/search.ts +0 -108
  1115. package/src/console/ui/gates/types.ts +0 -124
  1116. package/src/console/ui/overview/OverviewA11yView.tsx +0 -134
  1117. package/src/console/ui/overview/a11y.test.tsx +0 -112
  1118. package/src/console/ui/overview/busiest.ts +0 -24
  1119. package/src/console/ui/overview/compose.ts +0 -121
  1120. package/src/console/ui/overview/cost.test.ts +0 -39
  1121. package/src/console/ui/overview/cost.ts +0 -134
  1122. package/src/console/ui/overview/fixture.ts +0 -156
  1123. package/src/console/ui/overview/golden.ts +0 -47
  1124. package/src/console/ui/overview/index.ts +0 -52
  1125. package/src/console/ui/overview/rank.test.ts +0 -129
  1126. package/src/console/ui/overview/rank.ts +0 -205
  1127. package/src/console/ui/overview/slo.test.ts +0 -69
  1128. package/src/console/ui/overview/slo.ts +0 -240
  1129. package/src/console/ui/overview/types.ts +0 -127
  1130. package/src/console/ui/overview/verdict.ts +0 -124
  1131. package/src/console/ui/plugins/PluginsA11yView.tsx +0 -217
  1132. package/src/console/ui/plugins/a11y.test.tsx +0 -96
  1133. package/src/console/ui/plugins/command.test.ts +0 -22
  1134. package/src/console/ui/plugins/command.ts +0 -27
  1135. package/src/console/ui/plugins/findings.ts +0 -39
  1136. package/src/console/ui/plugins/fixture.ts +0 -238
  1137. package/src/console/ui/plugins/group.test.ts +0 -36
  1138. package/src/console/ui/plugins/group.ts +0 -62
  1139. package/src/console/ui/plugins/index.ts +0 -30
  1140. package/src/console/ui/plugins/search.ts +0 -55
  1141. package/src/console/ui/plugins/types.ts +0 -118
  1142. package/src/console/ui/runs/RunsA11yView.tsx +0 -252
  1143. package/src/console/ui/runs/a11y.test.tsx +0 -96
  1144. package/src/console/ui/runs/errors.test.ts +0 -53
  1145. package/src/console/ui/runs/errors.ts +0 -88
  1146. package/src/console/ui/runs/explain.test.ts +0 -23
  1147. package/src/console/ui/runs/explain.ts +0 -28
  1148. package/src/console/ui/runs/fixture.ts +0 -189
  1149. package/src/console/ui/runs/group.test.ts +0 -24
  1150. package/src/console/ui/runs/group.ts +0 -76
  1151. package/src/console/ui/runs/histogram.test.ts +0 -22
  1152. package/src/console/ui/runs/histogram.ts +0 -82
  1153. package/src/console/ui/runs/index.ts +0 -69
  1154. package/src/console/ui/runs/project.ts +0 -118
  1155. package/src/console/ui/runs/query.test.ts +0 -48
  1156. package/src/console/ui/runs/query.ts +0 -260
  1157. package/src/console/ui/runs/search.test.ts +0 -45
  1158. package/src/console/ui/runs/search.ts +0 -143
  1159. package/src/console/ui/runs/trace-link.test.ts +0 -26
  1160. package/src/console/ui/runs/trace-link.ts +0 -87
  1161. package/src/console/ui/runs/types.ts +0 -135
  1162. package/src/console/ui/shell/App.tsx +0 -88
  1163. package/src/console/ui/shell/client.ts +0 -1642
  1164. package/src/console/ui/shell/components/oke-logo.tsx +0 -40
  1165. package/src/console/ui/shell/components/ui.tsx +0 -111
  1166. package/src/console/ui/shell/index.html +0 -13
  1167. package/src/console/ui/shell/layout/Shell.tsx +0 -92
  1168. package/src/console/ui/shell/main.tsx +0 -216
  1169. package/src/console/ui/shell/panels/Access.tsx +0 -5
  1170. package/src/console/ui/shell/panels/Ai.tsx +0 -5
  1171. package/src/console/ui/shell/panels/Architecture.tsx +0 -5
  1172. package/src/console/ui/shell/panels/Channels.tsx +0 -5
  1173. package/src/console/ui/shell/panels/Clock.tsx +0 -5
  1174. package/src/console/ui/shell/panels/Diff.tsx +0 -5
  1175. package/src/console/ui/shell/panels/Flows.tsx +0 -5
  1176. package/src/console/ui/shell/panels/Gates.tsx +0 -5
  1177. package/src/console/ui/shell/panels/Overview.tsx +0 -6
  1178. package/src/console/ui/shell/panels/Plugins.tsx +0 -5
  1179. package/src/console/ui/shell/panels/Runs.tsx +0 -5
  1180. package/src/console/ui/shell/panels/Signals.tsx +0 -5
  1181. package/src/console/ui/shell/panels/Store.tsx +0 -5
  1182. package/src/console/ui/shell/panels/Traces.tsx +0 -5
  1183. package/src/console/ui/shell/panels/Vault.tsx +0 -5
  1184. package/src/console/ui/shell/panels/access/AccessPanel.tsx +0 -749
  1185. package/src/console/ui/shell/panels/ai/AiPanel.tsx +0 -492
  1186. package/src/console/ui/shell/panels/architecture/ArchitecturePanel.tsx +0 -329
  1187. package/src/console/ui/shell/panels/channels/ChannelsPanel.tsx +0 -422
  1188. package/src/console/ui/shell/panels/clock/ClockPanel.tsx +0 -454
  1189. package/src/console/ui/shell/panels/diff/DiffPanel.tsx +0 -234
  1190. package/src/console/ui/shell/panels/flows/ContractEditor.tsx +0 -284
  1191. package/src/console/ui/shell/panels/flows/FlowDrawer.tsx +0 -335
  1192. package/src/console/ui/shell/panels/flows/FlowsPanel.tsx +0 -482
  1193. package/src/console/ui/shell/panels/gates/GatesPanel.tsx +0 -433
  1194. package/src/console/ui/shell/panels/overview/OverviewPanel.tsx +0 -398
  1195. package/src/console/ui/shell/panels/plugins/PluginsPanel.tsx +0 -402
  1196. package/src/console/ui/shell/panels/runs/RunsPanel.tsx +0 -652
  1197. package/src/console/ui/shell/panels/signals/SignalsPanel.tsx +0 -788
  1198. package/src/console/ui/shell/panels/store/StorePanel.tsx +0 -755
  1199. package/src/console/ui/shell/panels/traces/TracesPanel.tsx +0 -478
  1200. package/src/console/ui/shell/panels/vault/VaultPanel.tsx +0 -477
  1201. package/src/console/ui/shell/plugin/Sandbox.tsx +0 -29
  1202. package/src/console/ui/shell/public/favicon.svg +0 -7
  1203. package/src/console/ui/shell/setup/Wizard.tsx +0 -211
  1204. package/src/console/ui/shell/styles.css +0 -74
  1205. package/src/console/ui/signals/SignalsA11yView.tsx +0 -252
  1206. package/src/console/ui/signals/a11y.test.tsx +0 -96
  1207. package/src/console/ui/signals/confirmation.test.ts +0 -35
  1208. package/src/console/ui/signals/confirmation.ts +0 -59
  1209. package/src/console/ui/signals/dry-run.test.ts +0 -18
  1210. package/src/console/ui/signals/dry-run.ts +0 -34
  1211. package/src/console/ui/signals/durable.test.ts +0 -22
  1212. package/src/console/ui/signals/durable.ts +0 -39
  1213. package/src/console/ui/signals/findings.ts +0 -31
  1214. package/src/console/ui/signals/fixture.ts +0 -242
  1215. package/src/console/ui/signals/group.test.ts +0 -26
  1216. package/src/console/ui/signals/group.ts +0 -41
  1217. package/src/console/ui/signals/index.ts +0 -49
  1218. package/src/console/ui/signals/monitor.test.ts +0 -30
  1219. package/src/console/ui/signals/monitor.ts +0 -74
  1220. package/src/console/ui/signals/schema-form.test.ts +0 -23
  1221. package/src/console/ui/signals/schema-form.ts +0 -109
  1222. package/src/console/ui/signals/search.ts +0 -93
  1223. package/src/console/ui/signals/types.ts +0 -72
  1224. package/src/console/ui/store/StoreA11yView.tsx +0 -193
  1225. package/src/console/ui/store/a11y.test.tsx +0 -96
  1226. package/src/console/ui/store/cache-view.test.ts +0 -13
  1227. package/src/console/ui/store/cache-view.ts +0 -36
  1228. package/src/console/ui/store/confirmation.test.ts +0 -36
  1229. package/src/console/ui/store/confirmation.ts +0 -52
  1230. package/src/console/ui/store/dry-run.test.ts +0 -15
  1231. package/src/console/ui/store/dry-run.ts +0 -26
  1232. package/src/console/ui/store/fixture.ts +0 -167
  1233. package/src/console/ui/store/group.test.ts +0 -16
  1234. package/src/console/ui/store/group.ts +0 -38
  1235. package/src/console/ui/store/index.ts +0 -36
  1236. package/src/console/ui/store/search.ts +0 -74
  1237. package/src/console/ui/store/types.ts +0 -67
  1238. package/src/console/ui/store/will-not-fire.test.ts +0 -19
  1239. package/src/console/ui/store/will-not-fire.ts +0 -39
  1240. package/src/console/ui/traces/TracesA11yView.tsx +0 -181
  1241. package/src/console/ui/traces/a11y.test.tsx +0 -96
  1242. package/src/console/ui/traces/chain.test.ts +0 -47
  1243. package/src/console/ui/traces/chain.ts +0 -142
  1244. package/src/console/ui/traces/critical-path.test.ts +0 -22
  1245. package/src/console/ui/traces/critical-path.ts +0 -55
  1246. package/src/console/ui/traces/filter.test.ts +0 -74
  1247. package/src/console/ui/traces/filter.ts +0 -104
  1248. package/src/console/ui/traces/fixture.ts +0 -126
  1249. package/src/console/ui/traces/fold.test.ts +0 -59
  1250. package/src/console/ui/traces/fold.ts +0 -168
  1251. package/src/console/ui/traces/index.ts +0 -64
  1252. package/src/console/ui/traces/mini.ts +0 -63
  1253. package/src/console/ui/traces/replay.test.ts +0 -22
  1254. package/src/console/ui/traces/replay.ts +0 -33
  1255. package/src/console/ui/traces/sampling.test.ts +0 -26
  1256. package/src/console/ui/traces/sampling.ts +0 -63
  1257. package/src/console/ui/traces/search.ts +0 -135
  1258. package/src/console/ui/traces/tier.ts +0 -70
  1259. package/src/console/ui/traces/types.ts +0 -125
  1260. package/src/console/ui/tsconfig.json +0 -20
  1261. package/src/console/ui/vault/VaultA11yView.tsx +0 -197
  1262. package/src/console/ui/vault/a11y.test.tsx +0 -96
  1263. package/src/console/ui/vault/backend.test.ts +0 -75
  1264. package/src/console/ui/vault/backend.ts +0 -117
  1265. package/src/console/ui/vault/blast-radius.ts +0 -53
  1266. package/src/console/ui/vault/confirmation.test.ts +0 -37
  1267. package/src/console/ui/vault/confirmation.ts +0 -36
  1268. package/src/console/ui/vault/dormant.ts +0 -28
  1269. package/src/console/ui/vault/export-safe.test.ts +0 -26
  1270. package/src/console/ui/vault/export-safe.ts +0 -62
  1271. package/src/console/ui/vault/fixture.ts +0 -94
  1272. package/src/console/ui/vault/group.test.ts +0 -25
  1273. package/src/console/ui/vault/group.ts +0 -49
  1274. package/src/console/ui/vault/index.ts +0 -47
  1275. package/src/console/ui/vault/search.ts +0 -58
  1276. package/src/console/ui/vault/types.ts +0 -83
  1277. package/src/console/ui/vite.config.ts +0 -84
  1278. /package/src/console/{ui/vault → ui-next/src/features/vault/lib}/blast-radius.test.ts +0 -0
  1279. /package/src/console/{ui/vault → ui-next/src/features/vault/lib}/dormant.test.ts +0 -0
package/src/cli/dev.ts CHANGED
@@ -9,7 +9,9 @@ import { tmpdir } from "node:os";
9
9
  import { join, resolve } from "node:path";
10
10
  import type { SessionStore } from "../auth/sessions.ts";
11
11
  import type { ConsoleAppHandle } from "../console/server/app.ts";
12
+ import { RUNS_INGEST_PATH } from "../console/server/runs-ingest.ts";
12
13
  import type { ConsoleState } from "../console/server/state.ts";
14
+ import { RUNS_INGEST_SECRET_ENV, RUNS_INGEST_URL_ENV } from "../runs/bridge-to-console.ts";
13
15
  import {
14
16
  DEFAULT_DOCKER_DIR,
15
17
  deriveInfrastructure,
@@ -31,6 +33,7 @@ import {
31
33
  devStatusFromAiPhase,
32
34
  formatAppReadyLine,
33
35
  formatBootWarn,
36
+ formatClaimNote,
34
37
  formatCliChrome,
35
38
  formatDevBanner,
36
39
  formatDevHeroDetails,
@@ -38,6 +41,7 @@ import {
38
41
  formatServiceLine,
39
42
  formatStackSummary,
40
43
  formatStatusLine,
44
+ termColorEnabled,
41
45
  type BootProgress,
42
46
  type DevStatus,
43
47
  type StackSummaryService,
@@ -61,6 +65,12 @@ import {
61
65
  import { loadManifest, loadOkeConfig, resolveImages } from "./load-config.ts";
62
66
  import { mcpContextFromConsole } from "./mcp-from-console.ts";
63
67
  import { resolveDevPorts } from "./ports.ts";
68
+ import {
69
+ shouldAttachConsoleVite,
70
+ startConsoleVite,
71
+ type ConsoleViteHandle,
72
+ type StartConsoleViteOptions,
73
+ } from "./dev-console-vite.ts";
64
74
  import { clearDevSessionLock, writeDevSessionLock } from "./dev-session-lock.ts";
65
75
 
66
76
  /** Max wait for the `bun --hot` app child to bind a port. */
@@ -199,7 +209,7 @@ export interface DevOptions {
199
209
  readonly secret?: string;
200
210
  /** Seed Manifest into Console (and therefore MCP). */
201
211
  readonly manifest?: Manifest | null;
202
- /** Suppress claim-code print (tests). */
212
+ /** Suppress kernel stdout claim print (default true — the live board owns it). */
203
213
  readonly silentClaim?: boolean;
204
214
  /** Port overrides (use `0` for ephemeral in tests). */
205
215
  readonly appPort?: number;
@@ -260,6 +270,17 @@ export interface DevOptions {
260
270
  readonly regenClient?: (appUrl: string) => Promise<void>;
261
271
  /** Serve Console (injectable). */
262
272
  readonly serveConsole?: (port: number) => Promise<DevConsoleHandle>;
273
+ /**
274
+ * Force (`true`) or skip (`false`) Console Vite HMR. Default: attach
275
+ * on an okengine source checkout so `dev:keel` does not need `bun run build`.
276
+ */
277
+ readonly consoleVite?: boolean;
278
+ /**
279
+ * Injectable Console Vite sidecar (tests). Default: {@link startConsoleVite}.
280
+ *
281
+ * @param options - Kernel port + listen preference
282
+ */
283
+ readonly startConsoleVite?: (options: StartConsoleViteOptions) => Promise<ConsoleViteHandle>;
263
284
  /**
264
285
  * Serve MCP against the live Console context (injectable).
265
286
  * Default: {@link serveMcp} on :6535.
@@ -328,10 +349,17 @@ export async function runDev(options: DevOptions = {}): Promise<DevResult> {
328
349
  options.composeHealthRun ??
329
350
  (options.composeHealth ? async (): Promise<string> => "[]" : undefined);
330
351
  const previousWarn = console.warn;
352
+ const bootNotices: string[] = [];
353
+ const noticeSeen = new Set<string>();
354
+ let chromeReady = false;
331
355
  console.warn = (...args: unknown[]) => {
332
356
  const msg = args.map(String).join(" ");
333
357
  if (/^oke boot:/i.test(msg.trim())) {
334
- write(formatBootWarn(msg.trim()));
358
+ const key = msg.trim().replace(/\s+/g, " ");
359
+ if (noticeSeen.has(key)) return;
360
+ noticeSeen.add(key);
361
+ if (chromeReady) write(formatBootWarn(msg.trim()));
362
+ else bootNotices.push(msg.trim());
335
363
  return;
336
364
  }
337
365
  previousWarn.apply(console, args as Parameters<typeof console.warn>);
@@ -358,8 +386,14 @@ export async function runDev(options: DevOptions = {}): Promise<DevResult> {
358
386
  });
359
387
  try {
360
388
  await syncAdoptBarrel(cwd);
361
- } catch {
362
- /* best-effort boot-time assertAdoptBarrelFresh (rootDir opt-in) is the real gate */
389
+ } catch (err) {
390
+ // Best-effort: boot-time assertAdoptBarrelFresh (rootDir opt-in) is the real gate.
391
+ // Still surface so a broken generator is not fully silent in the boot log.
392
+ write(
393
+ formatStatusLine(
394
+ `.adopt() barrel sync skipped — ${err instanceof Error ? err.message : String(err)}`,
395
+ ),
396
+ );
363
397
  }
364
398
 
365
399
  const preferredApp = options.appPort ?? Number(Bun.env.PORT ?? APP_PORT);
@@ -425,7 +459,7 @@ export async function runDev(options: DevOptions = {}): Promise<DevResult> {
425
459
  };
426
460
  if (typeof pkg.version === "string") okeVersion = pkg.version;
427
461
  } catch {
428
- // shipped binary may not sit next to package.json
462
+ // Inconsequential: banner version only — shipped binaries may not sit next to package.json.
429
463
  }
430
464
  const earlyProfile = resolveDevProfile({ docker: true, nodeEnv: "development" });
431
465
  write(
@@ -473,8 +507,13 @@ export async function runDev(options: DevOptions = {}): Promise<DevResult> {
473
507
  let loadedConfig: Awaited<ReturnType<typeof loadOkeConfig>>["config"] | null = null;
474
508
  try {
475
509
  loadedConfig = (await loadOkeConfig(cwd)).config;
476
- } catch {
510
+ } catch (err) {
477
511
  loadedConfig = null;
512
+ const msg = err instanceof Error ? err.message : String(err);
513
+ // Missing config is common for injectable/`--images` trees; surface parse bugs only.
514
+ if (!/no oke\.config\.ts found/i.test(msg)) {
515
+ write(formatStatusLine(`oke.config.ts load skipped — ${msg}`));
516
+ }
478
517
  }
479
518
 
480
519
  {
@@ -496,8 +535,12 @@ export async function runDev(options: DevOptions = {}): Promise<DevResult> {
496
535
  } else if (!loadedConfig) {
497
536
  try {
498
537
  loadedConfig = (await loadOkeConfig(cwd)).config;
499
- } catch {
538
+ } catch (err) {
500
539
  loadedConfig = null;
540
+ const msg = err instanceof Error ? err.message : String(err);
541
+ if (!/no oke\.config\.ts found/i.test(msg)) {
542
+ write(formatStatusLine(`oke.config.ts load skipped — ${msg}`));
543
+ }
501
544
  }
502
545
  }
503
546
  if (Array.isArray(options.docker)) {
@@ -823,6 +866,9 @@ export async function runDev(options: DevOptions = {}): Promise<DevResult> {
823
866
  }
824
867
  };
825
868
 
869
+ let consoleState: ConsoleState | null = null;
870
+ let claimConsoleUrl: string | undefined;
871
+
826
872
  const paintBootBoard = (aiStatus: DevStatus | undefined) => {
827
873
  const aiSt = aiStatus ?? heroAiStatus;
828
874
  const elements = heroSnapshot.elements.map((row) => {
@@ -874,9 +920,13 @@ export async function runDev(options: DevOptions = {}): Promise<DevResult> {
874
920
  appDrivers: pendingStackSummary.appDrivers,
875
921
  })
876
922
  : "";
877
- // Breath between elements and Docker — they read as two panes, not one block.
878
- const gap = elementsBlock && stackBlock ? "\n" : "";
879
- return `${elementsBlock}${gap}${stackBlock}`;
923
+ const claim =
924
+ consoleState && !consoleState.setupClosed
925
+ ? formatClaimNote(consoleState.claim.code, termColorEnabled(), {
926
+ ...(claimConsoleUrl !== undefined ? { consoleUrl: claimConsoleUrl } : {}),
927
+ })
928
+ : "";
929
+ return `${elementsBlock}${stackBlock}${claim}`;
880
930
  };
881
931
 
882
932
  // Drop ephemeral progress — final elements + Docker board replaces it.
@@ -934,25 +984,6 @@ export async function runDev(options: DevOptions = {}): Promise<DevResult> {
934
984
  await Promise.race([firstAiPaint, Bun.sleep(2_500)]);
935
985
  }
936
986
 
937
- // Live ● for the whole session — catch Docker Desktop stops / crashes.
938
- // Updates the board only (no redis stopped / starting / ready log spam).
939
- if (dockerStarted && composeFiles) {
940
- const { startComposeHealthWatch } = await import("../docker/compose-health.ts");
941
- const started = dockerStarted;
942
- stopComposeHealthWatch = startComposeHealthWatch({
943
- files: started.files,
944
- cwd: started.cwd,
945
- env: started.env,
946
- run: composeHealthRun,
947
- intervalMs: 2_000,
948
- onChange: (map) => {
949
- liveComposeHealth = map;
950
- if (map.get("ai") === "error") heroAiStatus = "error";
951
- repaintBoard();
952
- },
953
- });
954
- }
955
-
956
987
  /** Snapshot keys we mutate so `stop()` can leave the parent shell clean. */
957
988
  const processEnvSnapshot = new Map<string, string | undefined>();
958
989
  const setProcessEnv = (key: string, value: string): void => {
@@ -984,9 +1015,11 @@ export async function runDev(options: DevOptions = {}): Promise<DevResult> {
984
1015
  const { syncDevSchema } = await import("./dev-schema-sync.ts");
985
1016
  const configEnv = "dev" as const;
986
1017
  try {
1018
+ const injectedPush = options.dbPush;
987
1019
  const result = await syncDevSchema(cwd, configEnv, {
988
1020
  write: chromeWrite,
989
1021
  quietComposeReady: true,
1022
+ ...(injectedPush ? { pushFn: async (projectCwd: string) => injectedPush(projectCwd) } : {}),
990
1023
  });
991
1024
  write(
992
1025
  formatStatusLine(
@@ -1003,11 +1036,7 @@ export async function runDev(options: DevOptions = {}): Promise<DevResult> {
1003
1036
  });
1004
1037
  }
1005
1038
  } catch (err) {
1006
- write(
1007
- formatStatusLine(
1008
- `oke db push (dev) skipped — ${err instanceof Error ? err.message : String(err)}`,
1009
- ),
1010
- );
1039
+ write(await formatDevSchemaSyncFailure(cwd, err, "boot"));
1011
1040
  }
1012
1041
  }
1013
1042
 
@@ -1054,7 +1083,35 @@ export async function runDev(options: DevOptions = {}): Promise<DevResult> {
1054
1083
  const next = await extractManifest({ rootDir: cwd });
1055
1084
  feedManifest(state, next);
1056
1085
  } catch {
1057
- // Source may be mid-edit keep the last good Manifest.
1086
+ // Inconsequential while watching: mid-edit parse failures are expected on every
1087
+ // keystroke — keep the last good Manifest. Logging here would flood the Logs pane.
1088
+ }
1089
+ }
1090
+
1091
+ /** Host → Console WideEvent ingest secret (live Traces bridge). */
1092
+ const runsIngestSecret = crypto.randomUUID();
1093
+
1094
+ let consoleVite: ConsoleViteHandle | null = null;
1095
+ // Dry-run already returned above — Vite is a live sidecar, never planned.
1096
+ const wantConsoleVite =
1097
+ options.consoleVite === true ||
1098
+ (options.consoleVite !== false &&
1099
+ options.serveConsole === undefined &&
1100
+ shouldAttachConsoleVite());
1101
+ if (wantConsoleVite) {
1102
+ const startVite = options.startConsoleVite ?? startConsoleVite;
1103
+ try {
1104
+ consoleVite = await startVite({
1105
+ consolePort,
1106
+ occupied: new Set([appPort, consolePort, mcpPort, docsMcpPort].filter((p) => p !== 0)),
1107
+ });
1108
+ write(formatStatusLine("Console UI hot reload"));
1109
+ } catch (err) {
1110
+ write(
1111
+ formatStatusLine(
1112
+ `Console UI hot reload skipped — ${err instanceof Error ? err.message : String(err)}`,
1113
+ ),
1114
+ );
1058
1115
  }
1059
1116
  }
1060
1117
 
@@ -1067,9 +1124,13 @@ export async function runDev(options: DevOptions = {}): Promise<DevResult> {
1067
1124
  hostname: "127.0.0.1",
1068
1125
  cwd,
1069
1126
  env: "dev",
1070
- silentClaim: options.silentClaim ?? false,
1127
+ okeConfig: loadedConfig,
1128
+ // CLI paints the claim on the live board — do not dump it to raw stdout.
1129
+ silentClaim: options.silentClaim ?? true,
1130
+ runsIngestSecret,
1071
1131
  ...(options.secret !== undefined ? { secret: options.secret } : {}),
1072
1132
  ...(seedManifest !== undefined && seedManifest !== null ? { manifest: seedManifest } : {}),
1133
+ ...(consoleVite ? { spaProxy: { origin: consoleVite.origin } } : {}),
1073
1134
  });
1074
1135
  write(formatServiceLine("Console", `http://127.0.0.1:${server.port}`));
1075
1136
  return {
@@ -1130,24 +1191,64 @@ export async function runDev(options: DevOptions = {}): Promise<DevResult> {
1130
1191
  out: resolve(cwd, "oke-client.d.ts"),
1131
1192
  });
1132
1193
  write(formatStatusLine("regenerated oke-client.d.ts"));
1133
- } catch {
1134
- // App may not be ready yet — ignore until next save.
1194
+ } catch (err) {
1195
+ // App may not be ready yet on first tick still surface so a stuck regen is visible.
1196
+ write(
1197
+ formatStatusLine(
1198
+ `oke-client.d.ts regen skipped — ${err instanceof Error ? err.message : String(err)}`,
1199
+ ),
1200
+ );
1135
1201
  }
1136
1202
  });
1137
1203
 
1138
- const app = await startApp(plan.entry, env);
1139
- const boundAppPort = app.port ?? appPort;
1204
+ // Console before host so ingest URL/secret are real when the child boots.
1140
1205
  const consoleServer = await serveConsole(consolePort);
1141
1206
  const boundConsolePort = consoleServer.port ?? consolePort;
1207
+ consoleState = consoleServer.console?.state ?? null;
1208
+ claimConsoleUrl = `http://127.0.0.1:${boundConsolePort}`;
1209
+ if (consoleState && !consoleState.setupClosed && process.stdout.isTTY !== true) {
1210
+ repaintBoard();
1211
+ }
1212
+ env.OKE_DEV_HERO_CONSOLE = `http://127.0.0.1:${boundConsolePort}`;
1213
+ const ingestSecret = consoleServer.console?.state.runsIngestSecret;
1214
+ if (ingestSecret) {
1215
+ env[RUNS_INGEST_URL_ENV] = `http://127.0.0.1:${boundConsolePort}${RUNS_INGEST_PATH}`;
1216
+ env[RUNS_INGEST_SECRET_ENV] = ingestSecret;
1217
+ }
1218
+
1219
+ const app = await startApp(plan.entry, env);
1220
+ const boundAppPort = app.port ?? appPort;
1142
1221
 
1143
1222
  let mcpServer: DevMcpHandle | null = null;
1144
- let consoleState: ConsoleState | null = null;
1145
1223
  let secret: string | null = null;
1146
1224
  let sessions: SessionStore | null = null;
1225
+ let attachedHost: { readonly stop: () => Promise<void> } | null = null;
1147
1226
 
1148
1227
  if (consoleServer.console) {
1149
1228
  const state = consoleServer.console.state;
1150
1229
  consoleState = state;
1230
+ try {
1231
+ const { attachHostToConsole } = await import("./attach-host-console.ts");
1232
+ attachedHost = await attachHostToConsole({
1233
+ entry: plan.entry,
1234
+ cwd,
1235
+ state,
1236
+ ...(ingestSecret
1237
+ ? {
1238
+ runsBridge: {
1239
+ url: `http://127.0.0.1:${boundConsolePort}${RUNS_INGEST_PATH}`,
1240
+ secret: ingestSecret,
1241
+ },
1242
+ }
1243
+ : {}),
1244
+ });
1245
+ } catch (err) {
1246
+ write(
1247
+ formatStatusLine(
1248
+ `host attach skipped — ${err instanceof Error ? err.message : String(err)}`,
1249
+ ),
1250
+ );
1251
+ }
1151
1252
  secret = state.secret;
1152
1253
  sessions = state.sessions;
1153
1254
  mcpServer = await serveMcpSurface({
@@ -1196,18 +1297,63 @@ export async function runDev(options: DevOptions = {}): Promise<DevResult> {
1196
1297
  write(formatStatusLine("oke db push (schema change)"));
1197
1298
  try {
1198
1299
  await dbPush(cwd);
1199
- } catch {
1200
- // Mid-edit / kit unavailablenext save retries.
1300
+ } catch (err) {
1301
+ // Dev-loop stays up (next save retries) but definition errors must not look like a quiet skip.
1302
+ write(await formatDevSchemaSyncFailure(cwd, err, "watch"));
1201
1303
  }
1202
1304
  });
1203
1305
 
1204
- // Initial sync so local DB matches schema.ts without a prior manual push.
1205
- if (autoPushEnabled) {
1206
- lastSchemaFilename = "src/schema.ts";
1207
- autoPushRunner.trigger();
1208
- }
1306
+ const paintReadyChrome = (): void => {
1307
+ const tty = process.stdout.isTTY === true;
1308
+ if (tty) {
1309
+ write(clearTerminalScreen());
1310
+ bootBoard.reset();
1311
+ write(
1312
+ formatDevBanner({
1313
+ profile: earlyProfile,
1314
+ runtimeEnv: resolveDevRuntimeEnv(earlyProfile),
1315
+ system: formatHeroSystemLine(),
1316
+ version: okeVersion,
1317
+ phase: "ready",
1318
+ }),
1319
+ );
1320
+ }
1321
+ bootBoard.paint(paintBootBoard(heroAiStatus));
1322
+ for (const notice of bootNotices) {
1323
+ write(formatBootWarn(notice));
1324
+ }
1325
+ bootNotices.length = 0;
1326
+ write(formatAppReadyLine(`http://127.0.0.1:${boundAppPort}`));
1327
+ write(formatServiceLine("Console", `http://127.0.0.1:${boundConsolePort}`));
1328
+ if (mcpServer) {
1329
+ write(formatServiceLine("MCP", `http://127.0.0.1:${boundMcpPort}`));
1330
+ }
1331
+ if (docsMcpServer) {
1332
+ write(formatServiceLine("Docs MCP", `http://127.0.0.1:${boundDocsMcpPort}`));
1333
+ }
1334
+ write(formatDevLogSeparator());
1335
+ chromeReady = true;
1336
+ };
1337
+ paintReadyChrome();
1209
1338
 
1210
- write(formatDevLogSeparator());
1339
+ // Live ● after the ready board — mid-boot health ticks were rewriting
1340
+ // elements/Docker on top of db-push lines and tearing the claim box.
1341
+ if (dockerStarted && composeFiles) {
1342
+ const { startComposeHealthWatch } = await import("../docker/compose-health.ts");
1343
+ const started = dockerStarted;
1344
+ stopComposeHealthWatch = startComposeHealthWatch({
1345
+ files: started.files,
1346
+ cwd: started.cwd,
1347
+ env: started.env,
1348
+ run: composeHealthRun,
1349
+ intervalMs: 2_000,
1350
+ onChange: (map) => {
1351
+ liveComposeHealth = map;
1352
+ if (map.get("ai") === "error") heroAiStatus = "error";
1353
+ repaintBoard();
1354
+ },
1355
+ });
1356
+ }
1211
1357
 
1212
1358
  const watchFs: DevWatchFn =
1213
1359
  options.watchFs ?? ((path, watchOptions, listener) => watch(path, watchOptions, listener));
@@ -1239,10 +1385,16 @@ export async function runDev(options: DevOptions = {}): Promise<DevResult> {
1239
1385
  bootBoard.stop();
1240
1386
  autoPushRunner.cancel();
1241
1387
  watcher.close();
1388
+ const host = attachedHost;
1389
+ attachedHost = null;
1390
+ void host?.stop();
1242
1391
  app.stop();
1243
1392
  consoleServer.stop();
1244
1393
  mcpServer?.stop();
1245
1394
  docsMcpServer?.stop();
1395
+ const vite = consoleVite;
1396
+ consoleVite = null;
1397
+ void vite?.stop();
1246
1398
  void clearDevSessionLock(cwd);
1247
1399
  if (dockerStarted) {
1248
1400
  const started = dockerStarted;
@@ -1335,26 +1487,7 @@ export async function runDev(options: DevOptions = {}): Promise<DevResult> {
1335
1487
  };
1336
1488
  const refreshChrome = async (): Promise<void> => {
1337
1489
  await syncComposeBoard();
1338
- write(clearTerminalScreen());
1339
- bootBoard.reset();
1340
- write(
1341
- formatDevBanner({
1342
- profile: earlyProfile,
1343
- runtimeEnv: resolveDevRuntimeEnv(earlyProfile),
1344
- system: formatHeroSystemLine(),
1345
- version: okeVersion,
1346
- }),
1347
- );
1348
- bootBoard.paint(paintBootBoard(heroAiStatus));
1349
- write(formatAppReadyLine(`http://127.0.0.1:${boundAppPort}`));
1350
- write(formatServiceLine("Console", `http://127.0.0.1:${boundConsolePort}`));
1351
- if (mcpServer) {
1352
- write(formatServiceLine("MCP", `http://127.0.0.1:${boundMcpPort}`));
1353
- }
1354
- if (docsMcpServer) {
1355
- write(formatServiceLine("Docs MCP", `http://127.0.0.1:${boundDocsMcpPort}`));
1356
- }
1357
- write(formatDevLogSeparator());
1490
+ paintReadyChrome();
1358
1491
  };
1359
1492
  const composeAction = async (action: DevComposeControlAction): Promise<void> => {
1360
1493
  const files = started.files;
@@ -1394,7 +1527,7 @@ export async function runDev(options: DevOptions = {}): Promise<DevResult> {
1394
1527
  // Esc / unmount without q — still tear down.
1395
1528
  stop();
1396
1529
  } catch {
1397
- // Ink optional — fall back to keep-alive without keyboard chrome.
1530
+ // Inconsequential: Ink/TUI is optional chrome — fall back to keep-alive without keyboard.
1398
1531
  await new Promise(() => {});
1399
1532
  }
1400
1533
  return { code: 0, plan: session.plan, session };
@@ -1420,6 +1553,75 @@ function isSparseManifest(manifest: Manifest): boolean {
1420
1553
  return Object.keys(flows).length === 0;
1421
1554
  }
1422
1555
 
1556
+ /**
1557
+ * Environmental syncDevSchema throws that are fine to soft-skip in the
1558
+ * compose (`dev`) boot path — no Store / no docker images yet, etc.
1559
+ *
1560
+ * @param message - Caught error message
1561
+ */
1562
+ function isBenignDevSchemaEnvSkip(message: string): boolean {
1563
+ return (
1564
+ message.startsWith("docker mode: oke.config.ts not found") ||
1565
+ message.startsWith("docker mode: no images configured")
1566
+ );
1567
+ }
1568
+
1569
+ /**
1570
+ * Whether a caught sync/push error is a schema.decl definition failure
1571
+ * (import evaluation, emit, duplicate tables, bad `.references()`, …).
1572
+ *
1573
+ * Message text alone is insufficient — emit-time bugs often look like bare
1574
+ * TypeErrors (`target.tableName`) — so also inspect the stack for declare /
1575
+ * emit frames.
1576
+ *
1577
+ * @param err - Caught value
1578
+ * @param declarePath - Resolved schema.decl path for this project
1579
+ */
1580
+ function isSchemaDeclDefinitionError(err: unknown, declarePath: string): boolean {
1581
+ const msg = err instanceof Error ? err.message : String(err);
1582
+ const stack = err instanceof Error ? (err.stack ?? "") : "";
1583
+ const blob = `${msg}\n${stack}`;
1584
+ if (/failed to load schema declare|store schema:|oke schema emit:/i.test(blob)) return true;
1585
+ if (/schema\.decl/i.test(blob)) return true;
1586
+ if (/emit-drizzle|emitColumnSource|emitDrizzleSource|maybeEmitDomainSchema/i.test(blob)) {
1587
+ return true;
1588
+ }
1589
+ return declarePath.length > 0 && blob.includes(declarePath);
1590
+ }
1591
+
1592
+ /**
1593
+ * Frame a schema-sync failure for the `oke dev` loop: warn loud for developer
1594
+ * bugs, soft-skip only known environmental gaps. Never crashes the session.
1595
+ *
1596
+ * Matches the fail-loud status style used by compose controls (`failed —` +
1597
+ * red ●), and ADOPT_BARREL_STALE's "never silent" posture — without turning
1598
+ * this path into a hard boot failure.
1599
+ *
1600
+ * @param cwd - Project root
1601
+ * @param err - Caught value from {@link syncDevSchema} / watch push
1602
+ * @param context - Boot one-shot vs schema-watch auto-push
1603
+ */
1604
+ async function formatDevSchemaSyncFailure(
1605
+ cwd: string,
1606
+ err: unknown,
1607
+ context: "boot" | "watch",
1608
+ ): Promise<string> {
1609
+ const msg = err instanceof Error ? err.message : String(err);
1610
+ const color = termColorEnabled();
1611
+ if (isBenignDevSchemaEnvSkip(msg)) {
1612
+ return formatStatusLine(`oke db push (dev) skipped — ${msg}`, color);
1613
+ }
1614
+
1615
+ const { resolveEmitPaths } = await import("../elements/store/emit-drizzle.ts");
1616
+ const { declarePath } = resolveEmitPaths(cwd);
1617
+ if (isSchemaDeclDefinitionError(err, declarePath)) {
1618
+ return formatStatusLine(`schema.decl.ts has an error — ${msg}`, color, "error");
1619
+ }
1620
+
1621
+ const label = context === "watch" ? "oke db push (schema change)" : "oke db push (dev)";
1622
+ return formatStatusLine(`${label} failed — ${msg}`, color, "error");
1623
+ }
1624
+
1423
1625
  /**
1424
1626
  * Load Manifest — prefer AoT extract from `src/` when it has flows;
1425
1627
  * otherwise on-disk JSON snapshots; otherwise a sparse extract.
@@ -1432,7 +1634,8 @@ async function tryLoadProjectManifest(cwd: string): Promise<Manifest | null | un
1432
1634
  const { extractManifest } = await import("../compiler/extract.ts");
1433
1635
  extracted = await extractManifest({ rootDir: cwd });
1434
1636
  } catch {
1435
- // Fall through to JSON snapshots.
1637
+ // Inconsequential here: extract is one of two sources — fall through to on-disk JSON
1638
+ // snapshots. A broken source tree still boots Console with the last good Manifest file.
1436
1639
  }
1437
1640
 
1438
1641
  let fromDisk: Manifest | undefined;
@@ -1474,8 +1677,8 @@ async function startAppHot(
1474
1677
  OKE_DEV_SURFACE: "Backend",
1475
1678
  };
1476
1679
 
1477
- // `--no-clear-screen`: Bun must not wipe the hero; the runner clears only
1478
- // request logs on soft reload and reprints Backend / Console / MCP URLs.
1680
+ // `--no-clear-screen`: Bun must not wipe the parent board (claim + Docker).
1681
+ // The runner reprints only the Backend ready line on soft reload.
1479
1682
  const proc = Bun.spawn(["bun", "--hot", "--no-clear-screen", runner], {
1480
1683
  cwd,
1481
1684
  env,
@@ -1492,7 +1695,7 @@ async function startAppHot(
1492
1695
  // open (create-oke afterEach `rmSync` otherwise races the child exit).
1493
1696
  proc.kill("SIGKILL");
1494
1697
  } catch {
1495
- // already exited
1698
+ // Inconsequential: process already exited — kill is idempotent best-effort.
1496
1699
  }
1497
1700
  void unlink(readyPath).catch(() => {});
1498
1701
  };
@@ -42,7 +42,7 @@ describe("oke docker CLI", () => {
42
42
  expect(await Bun.file(join(dir, "docker/docker-compose.yml")).exists()).toBe(true);
43
43
  const yml = await Bun.file(join(dir, "docker/docker-compose.yml")).text();
44
44
  expect(yml).not.toContain("test-password-not-in-yaml");
45
- expect(yml).toContain(".env.docker");
45
+ expect(yml).toContain(".env.local");
46
46
  expect(yml).toContain("/_/ready");
47
47
  expect(logs.join("")).toContain("docker-compose.override.yml");
48
48
  });
@@ -72,7 +72,7 @@ describe("oke stack", () => {
72
72
  const code = await runStackPreview({
73
73
  cwd: dir,
74
74
  images: {
75
- "channel.email": "axllent/mailpit:v1.22.3",
75
+ "channel.email": "axllent/mailpit:v1.30.7",
76
76
  },
77
77
  write: (t) => {
78
78
  out += t;
package/src/cli/docker.ts CHANGED
@@ -183,7 +183,7 @@ export async function dockerCli(args: readonly string[]): Promise<number> {
183
183
  Derive production-grade Docker artefacts under docker/ (default).
184
184
 
185
185
  Layouts (mutually exclusive; default --single):
186
- --single docker-compose.yml + Dockerfile (+ .env.docker via oke dev)
186
+ --single docker-compose.yml + Dockerfile (+ .env.local via oke dev)
187
187
  --split compose.yml + compose.<role>.yml (+ compose.prod.yml)
188
188
  --stack docker-stack.yml for docker stack deploy
189
189
 
package/src/cli/doctor.ts CHANGED
@@ -41,6 +41,7 @@ function flattenEffectiveDrivers(
41
41
  ["vault", drivers.vault],
42
42
  ["channel.email", drivers.channel.email],
43
43
  ["channel.sms", drivers.channel.sms],
44
+ ["runs", drivers.runs],
44
45
  ];
45
46
  }
46
47
 
@@ -215,7 +216,7 @@ export async function runDoctor(options: DoctorOptions = {}): Promise<{
215
216
  // protection the moment DB + env are stolen together.
216
217
  severity: "error",
217
218
  message:
218
- 'vault master key comes from an environment variable in prod — set vault.encryption.masterKey = { kind: "kms", keyId } (or use managed aws-secrets-manager) so the key is never readable from the process environment',
219
+ 'vault master key comes from an environment variable in prod — set vault.encryption.masterKey = { kind: "kms", keyId } (or use a managed provider) so the key is never readable from the process environment',
219
220
  });
220
221
  }
221
222
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
 
5
5
  import { afterEach, describe, expect, test } from "bun:test";
6
- import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises";
6
+ import { mkdtemp, rm, writeFile } from "node:fs/promises";
7
7
  import { tmpdir } from "node:os";
8
8
  import { join } from "node:path";
9
9
  import type { OkeConfig } from "../config/index.ts";
@@ -39,11 +39,7 @@ describe("resolveDrizzleKitEnv", () => {
39
39
 
40
40
  test("dev env → postgresql dialect + DATABASE_URL from compose env", async () => {
41
41
  const dir = await tempDir();
42
- await mkdir(join(dir, "docker"), { recursive: true });
43
- await writeFile(
44
- join(dir, "docker", ".env.docker"),
45
- "DATABASE_URL=postgres://u:p@127.0.0.1:5432/oke\n",
46
- );
42
+ await writeFile(join(dir, ".env.local"), "DATABASE_URL=postgres://u:p@127.0.0.1:5432/oke\n");
47
43
  const prevDb = process.env["DATABASE_URL"];
48
44
  delete process.env["DATABASE_URL"];
49
45
  try {
@@ -72,11 +68,10 @@ describe("resolveDrizzleKitEnv", () => {
72
68
  });
73
69
 
74
70
  describe("applyComposeEnvToProcess", () => {
75
- test("fills unset keys from docker/.env.docker without overwriting", async () => {
71
+ test("fills unset keys from .env.local without overwriting", async () => {
76
72
  const dir = await tempDir();
77
- await mkdir(join(dir, "docker"), { recursive: true });
78
73
  await writeFile(
79
- join(dir, "docker", ".env.docker"),
74
+ join(dir, ".env.local"),
80
75
  "DATABASE_URL=postgres://u:p@127.0.0.1:5432/oke\nREDIS_URL=redis://127.0.0.1:6379\n",
81
76
  );
82
77
  const prevDb = process.env["DATABASE_URL"];
@@ -22,7 +22,7 @@ export interface DrizzleKitEnvContext {
22
22
  }
23
23
 
24
24
  /**
25
- * Load `docker/.env.docker` (or legacy `.env.docker`) as a name→value map.
25
+ * Load `.env.local` as a name→value map.
26
26
  *
27
27
  * @param cwd - Project root
28
28
  */
@@ -38,7 +38,7 @@ export async function readComposeEnv(cwd: string): Promise<Map<string, string>>
38
38
  }
39
39
 
40
40
  /**
41
- * Fill unset `process.env` keys from compose `.env.docker` (never overwrites).
41
+ * Fill unset `process.env` keys from `.env.local` (never overwrites).
42
42
  *
43
43
  * SQL / Redis binders read `process.env` directly — Vault can resolve the
44
44
  * same file, but `oke db seed` must hydrate env before `app.boot()`.