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
@@ -33,6 +33,7 @@ import {
33
33
  } from "../../elements/signal/reconcile.ts";
34
34
  import type { Manifest } from "../../manifest/types.ts";
35
35
  import type { WideEvent } from "../../runs/types.ts";
36
+ import type { ConsoleRunsQueryResult } from "./runs-query.ts";
36
37
  import type { ConsoleAiProjection } from "./ai.ts";
37
38
  import { createLoginAttemptBag, type LoginAttemptBag } from "./auth-rate.ts";
38
39
  import { mintClaimCode, type ClaimCodeState } from "./claim.ts";
@@ -42,6 +43,8 @@ import type {
42
43
  StoreDeleteInput,
43
44
  StoreEditInput,
44
45
  StoreEditResult,
46
+ StoreFileGetInput,
47
+ StoreFileObject,
45
48
  StoreQueryInput,
46
49
  StoreQueryResult,
47
50
  } from "./store.ts";
@@ -49,6 +52,8 @@ import type { ClockRuntime, EditScheduleInput } from "../../elements/clock.ts";
49
52
  import type { StoreRuntime } from "../../elements/store.ts";
50
53
  import type { VaultRuntime } from "../../elements/vault.ts";
51
54
  import type { JournalStore } from "../../kernel/journal.ts";
55
+ import type { InstanceStore, InstancesList } from "../../kernel/instances.ts";
56
+ import type { CronStore } from "../../elements/clock/reconcile.ts";
52
57
  import type { ResourceRef } from "../../manifest/types.ts";
53
58
  import type { ConsoleClockList } from "./clock.ts";
54
59
  import {
@@ -58,7 +63,17 @@ import {
58
63
  type SimulateGatesInput,
59
64
  type SimulateGatesResult,
60
65
  } from "./gates.ts";
61
- import type { ConsoleVaultBackend, ConsoleVaultRow, VaultWriteInput } from "./vault.ts";
66
+ import {
67
+ ConsoleVaultRotateBusyError,
68
+ type ConsoleVaultAuditVerifyResult,
69
+ type ConsoleVaultBackend,
70
+ type ConsoleVaultRotateHandle,
71
+ type ConsoleVaultRotateMasterResult,
72
+ type ConsoleVaultRow,
73
+ type VaultLayerSeed,
74
+ type VaultCreateInput,
75
+ type VaultWriteInput,
76
+ } from "./vault.ts";
62
77
  import type { ChannelInbox } from "../../drivers/channel-types.ts";
63
78
  import type { ChannelRuntime, TemplateCatalog } from "../../elements/channel.ts";
64
79
  import type { ConsoleChannelPreview, ConsoleChannelsList, EmailAuthResult } from "./channels.ts";
@@ -67,6 +82,12 @@ import type { PluginRegistry } from "../../kernel/registry.ts";
67
82
  import type { ConsolePluginsList } from "./plugins.ts";
68
83
  import type { ConsoleDiffProjection } from "./diff.ts";
69
84
  import { loadConsolePanel, type ConsolePanelId } from "./panel-load.ts";
85
+ import {
86
+ isConsoleAuthStoreRef,
87
+ queryConsoleAuthStore,
88
+ rejectConsoleAuthMutation,
89
+ requireConsoleAuthStore,
90
+ } from "./auth-store.ts";
70
91
 
71
92
  /** How long a built-in Vault backend probe is reused across list polls. */
72
93
  const VAULT_BACKEND_TTL_MS = 15_000;
@@ -169,6 +190,37 @@ export interface ConsoleState {
169
190
  }>;
170
191
  /** Bound after Console app boot — reads the runs store. */
171
192
  listRuns: () => Promise<WideEvent[]>;
193
+ /**
194
+ * Sandboxed SQL over persisted `.oke/runs` Parquet.
195
+ * Bound after Console app boot; stub rejects until then.
196
+ */
197
+ queryPersistedRuns: (input: {
198
+ readonly sql: string;
199
+ readonly revealPii?: boolean;
200
+ readonly timeoutMs?: number;
201
+ readonly maxRows?: number;
202
+ }) => Promise<ConsoleRunsQueryResult>;
203
+ /**
204
+ * Shared secret for host → Console WideEvent ingest (`oke dev` bridge).
205
+ * `null` disables `POST /console/runs/ingest`.
206
+ */
207
+ readonly runsIngestSecret: string | null;
208
+ /**
209
+ * Optional host-app re-invoke for `console.traces.replay`.
210
+ * When unset, the flow falls back to CLI-equivalent {@link runReplay}
211
+ * against `cwd` (loads the app entry and re-executes with stored input).
212
+ */
213
+ replayTrace:
214
+ | ((input: {
215
+ readonly event: WideEvent;
216
+ readonly dryRun: boolean;
217
+ }) => Promise<{ readonly output: unknown; readonly failure?: unknown }>)
218
+ | null;
219
+ /**
220
+ * Optional host-app invoke-as for `console.flows.invoke`.
221
+ * When unset, invoke fails closed (`InvokeDenied`) — never stubs.
222
+ */
223
+ invokeUserFlow: import("./invoke-user-flow.ts").ConsoleInvokeUserFlow | null;
172
224
  /** Signal config store (`oke_signal_config`) — retains orphaned rows. */
173
225
  readonly signalConfig: SignalConfigStore;
174
226
  /**
@@ -195,6 +247,8 @@ export interface ConsoleState {
195
247
  }>;
196
248
  /** Browse a store facet. */
197
249
  queryStore: (input: StoreQueryInput) => Promise<StoreQueryResult>;
250
+ /** Read one files object (preview / download). */
251
+ getStoreFile: (input: StoreFileGetInput) => Promise<StoreFileObject>;
198
252
  /** Direct edit (not a flow execution). */
199
253
  editStore: (
200
254
  input: StoreEditInput,
@@ -212,12 +266,32 @@ export interface ConsoleState {
212
266
  readonly allowWrite: boolean;
213
267
  readonly revealPii?: boolean;
214
268
  readonly tenant?: string;
269
+ readonly asGate?: string;
215
270
  },
216
271
  ) => Promise<{
217
272
  readonly rows: readonly Record<string, unknown>[];
218
273
  readonly masked: boolean;
219
274
  readonly routedRole: "primary" | "replica";
275
+ readonly asGate: string | null;
276
+ readonly gateApplied: boolean;
220
277
  }>;
278
+ /** Engine-native pg_stat_statements + KPIs. */
279
+ queryStoreSqlStats: (ref: ResourceRef) => Promise<import("./store-stats.ts").StoreSqlStatsResult>;
280
+ /** Live lock blocking (query text collapsed unless reveal). */
281
+ queryStoreSqlLocks: (
282
+ ref: ResourceRef,
283
+ options?: { readonly revealPii?: boolean },
284
+ ) => Promise<import("./store-stats.ts").StoreSqlLocksResult>;
285
+ /** `index_advisor(query)` on a dedicated handle. */
286
+ adviseStoreSqlIndex: (
287
+ ref: ResourceRef,
288
+ query: string,
289
+ ) => Promise<import("./store-stats.ts").StoreSqlAdviseResult>;
290
+ /** Redis-wire KV INFO / COMMANDSTATS / SLOWLOG (args collapsed unless reveal). */
291
+ queryStoreKvStats: (
292
+ ref: ResourceRef,
293
+ options?: { readonly revealPii?: boolean },
294
+ ) => Promise<import("./store-kv-stats.ts").StoreKvStatsResult>;
221
295
  /**
222
296
  * Live Clock runtime. Bound after boot from Manifest clocks
223
297
  * or host injection (A — reuse reconciliation / lease / DST).
@@ -246,8 +320,16 @@ export interface ConsoleState {
246
320
  * or host injection.
247
321
  */
248
322
  vaultRuntime: VaultRuntime | null;
323
+ /** Per-layer seed bag for Manifest vault boot (seeded Console). */
324
+ vaultLayerSeed: VaultLayerSeed | null;
249
325
  /** Durable journal for rotation blast radius + Clock waiting-on. */
250
326
  journalStore: JournalStore | null;
327
+ /** Host fleet registry (read-only). Null until bound or confirmed absent. */
328
+ instanceStore: InstanceStore | null;
329
+ /** Host `oke_crons` for fleet lease join (not Console's memory clock). */
330
+ fleetCronStore: CronStore | null;
331
+ /** Project live instances + Clock / Journal lease snapshot. */
332
+ listInstances: () => Promise<InstancesList>;
251
333
  /** Current environment label for fingerprint columns. */
252
334
  vaultEnv: string;
253
335
  /** Project operator-plane vault rows (fingerprints only for secrets). */
@@ -260,10 +342,25 @@ export interface ConsoleState {
260
342
  setVault: (
261
343
  input: VaultWriteInput,
262
344
  ) => Promise<{ readonly name: string; readonly fingerprint: string | null }>;
345
+ /** Declare a contract from Console and write its value. */
346
+ createVault: (
347
+ input: VaultCreateInput,
348
+ ) => Promise<{ readonly name: string; readonly fingerprint: string | null }>;
263
349
  /** Rotate a vault value (write-only; distinct confirm phrase). */
264
350
  rotateVault: (
265
351
  input: VaultWriteInput,
266
352
  ) => Promise<{ readonly name: string; readonly fingerprint: string | null }>;
353
+ /** Verify the built-in audit chain (sealed). */
354
+ verifyVaultAudit: () => Promise<ConsoleVaultAuditVerifyResult>;
355
+ /**
356
+ * One batch of master-key rotation. Process-global handle — any operator
357
+ * in this process may continue. Overlapping batches fail busy.
358
+ */
359
+ rotateMaster: () => Promise<ConsoleVaultRotateMasterResult>;
360
+ /** In-flight rotate-master adapter (tests / process lifetime). */
361
+ vaultRotateHandle: ConsoleVaultRotateHandle | null;
362
+ /** True while the first rotate-master call is opening the adapter. */
363
+ vaultRotateStarting: boolean;
267
364
  /** User-plane identities available for invoke-as. */
268
365
  readonly identities: ConsoleIdentity[];
269
366
  /** Whether this process is treated as production (typed confirm). */
@@ -356,7 +453,73 @@ export type ConsoleLiveMessage =
356
453
  readonly before: Manifest;
357
454
  readonly after: Manifest;
358
455
  }
359
- | { readonly type: "ping"; readonly at: number };
456
+ | { readonly type: "ping"; readonly at: number }
457
+ | { readonly type: "run"; readonly run: ConsoleLiveRun }
458
+ | { readonly type: "runs.batch"; readonly runs: readonly ConsoleLiveRun[] };
459
+
460
+ /**
461
+ * Projected run pushed over the live channel.
462
+ *
463
+ * Kept structurally identical to the `GET /console/runs` row projection
464
+ * (`projectRun` in `flows.ts`) so the client can treat HTTP and WS rows
465
+ * interchangeably.
466
+ */
467
+ export interface ConsoleLiveRun {
468
+ readonly id: string;
469
+ readonly parentId: string | null;
470
+ readonly flow: string;
471
+ readonly unit: string | null;
472
+ readonly trigger: string;
473
+ readonly plane: string;
474
+ readonly tenant: string | null;
475
+ readonly principal: string | null;
476
+ readonly gates: readonly string[];
477
+ readonly cache: "hit" | "miss" | "none";
478
+ readonly replica: "primary" | "replica" | null;
479
+ readonly replicaLagMs: number | null;
480
+ readonly cost: number | null;
481
+ readonly inputTokens: number | null;
482
+ readonly outputTokens: number | null;
483
+ readonly promptVersion: number | null;
484
+ readonly buildVersion: string | null;
485
+ readonly startedAt: number;
486
+ readonly endedAt: number;
487
+ readonly durationMs: number;
488
+ readonly error: string | null;
489
+ /** Optional human message paired with {@link error}. */
490
+ readonly errorMessage: string | null;
491
+ readonly sampled: "full" | "error" | "sample" | "boost";
492
+ readonly effects: readonly ConsoleLiveRunEffect[];
493
+ readonly logs: readonly ConsoleLiveRunLog[];
494
+ readonly dimensions: Record<string, string | number | boolean | null>;
495
+ /** Validated flow input snapshot — null when the run has no stored input. */
496
+ readonly input: unknown;
497
+ /** Flow return value snapshot — null when the run has no stored output. */
498
+ readonly output: unknown;
499
+ }
500
+
501
+ /** Effect entry on a live run row. */
502
+ export interface ConsoleLiveRunEffect {
503
+ readonly kind: "read" | "write" | "emit" | "send" | "ask" | "secret" | "call";
504
+ readonly resource: string;
505
+ readonly timestamp: number;
506
+ readonly duration: number;
507
+ readonly reversibility:
508
+ | "none"
509
+ | "reversible"
510
+ | "deferred"
511
+ | "irreversible"
512
+ | "capability"
513
+ | "portal";
514
+ }
515
+
516
+ /** Log line on a live run row. */
517
+ export interface ConsoleLiveRunLog {
518
+ readonly level: "debug" | "info" | "warn" | "error";
519
+ readonly message: string;
520
+ readonly data?: Record<string, unknown>;
521
+ readonly at: number;
522
+ }
360
523
 
361
524
  /** Options for {@link createConsoleState}. */
362
525
  export interface CreateConsoleStateOptions {
@@ -364,7 +527,7 @@ export interface CreateConsoleStateOptions {
364
527
  readonly now?: () => number;
365
528
  readonly cwd?: string;
366
529
  readonly manifest?: Manifest | null;
367
- /** Skip printing the claim code (tests). */
530
+ /** Skip stdout claim print (`oke dev` paints the board; tests). Artifact still written. */
368
531
  readonly silentClaim?: boolean;
369
532
  /** Seed identities for the invoke-as picker. */
370
533
  readonly identities?: readonly ConsoleIdentity[];
@@ -374,10 +537,22 @@ export interface CreateConsoleStateOptions {
374
537
  readonly accessTtlMs?: number;
375
538
  /** Injected vault runtime (tests / host). */
376
539
  readonly vaultRuntime?: VaultRuntime | null;
540
+ /** Per-layer seed bag for Manifest vault boot (seeded Console). */
541
+ readonly vaultLayerSeed?: VaultLayerSeed | null;
377
542
  /** Injected journal store for blast-radius / waiting-on queries. */
378
543
  readonly journalStore?: JournalStore | null;
544
+ /** Injected host fleet registry (tests / host). */
545
+ readonly instanceStore?: InstanceStore | null;
546
+ /** Injected host cron store for fleet lease join (tests / host). */
547
+ readonly fleetCronStore?: CronStore | null;
379
548
  /** Environment label for vault fingerprints. */
380
549
  readonly vaultEnv?: string;
550
+ /** Env map for builtin adapter open / probe (tests). */
551
+ readonly vaultProcessEnv?: Readonly<Record<string, string | undefined>>;
552
+ /** DEKs per rotate-master batch (tests). */
553
+ readonly vaultKekRewrapBatchSize?: number;
554
+ /** Test hook: awaited after claiming the batch slot, before adapter work. */
555
+ readonly rotateBatchHold?: () => Promise<void>;
381
556
  /** Injected GateRuntime (tests / host). */
382
557
  readonly gateRuntime?: GateRuntime | null;
383
558
  /** Injected ClockRuntime (tests / host). */
@@ -402,6 +577,11 @@ export interface CreateConsoleStateOptions {
402
577
  readonly persistOperator?: (operatorId: string) => void | Promise<void>;
403
578
  /** Persist hook after session issue / revoke. */
404
579
  readonly persistSessions?: () => void | Promise<void>;
580
+ /**
581
+ * Shared secret for host → Console runs ingest (`oke dev` bridge).
582
+ * When omitted, ingest is disabled (404).
583
+ */
584
+ readonly runsIngestSecret?: string | null;
405
585
  }
406
586
 
407
587
  /**
@@ -443,6 +623,7 @@ export function createConsoleState(options: CreateConsoleStateOptions = {}): Con
443
623
  const value = await vault.probeVaultBackend({
444
624
  config: state.okeConfig,
445
625
  env: state.production ? "prod" : "dev",
626
+ ...(options.vaultProcessEnv !== undefined ? { processEnv: options.vaultProcessEnv } : {}),
446
627
  });
447
628
  backendMemo = { at, value };
448
629
  return value;
@@ -595,6 +776,12 @@ export function createConsoleState(options: CreateConsoleStateOptions = {}): Con
595
776
  });
596
777
  },
597
778
  listRuns: async () => [],
779
+ queryPersistedRuns: async () => {
780
+ throw new Error("queryPersistedRuns is unbound until Console boot");
781
+ },
782
+ runsIngestSecret: options.runsIngestSecret ?? null,
783
+ replayTrace: null,
784
+ invokeUserFlow: null,
598
785
  signalConfig,
599
786
  signalBus: null,
600
787
  listSignals: async () => {
@@ -655,13 +842,36 @@ export function createConsoleState(options: CreateConsoleStateOptions = {}): Con
655
842
  });
656
843
  },
657
844
  queryStore: async (input) => {
845
+ if (isConsoleAuthStoreRef(input.ref)) {
846
+ requireConsoleAuthStore();
847
+ return queryConsoleAuthStore(
848
+ {
849
+ operators: state.operators,
850
+ sessions: state.sessions,
851
+ roles: state.roles,
852
+ apiKeys: state.apiKeys,
853
+ invites: state.invites,
854
+ identities: state.identities,
855
+ roleMembers: state.roleMembers,
856
+ },
857
+ input,
858
+ );
859
+ }
658
860
  const store = await markPanel<typeof import("./store.ts")>("store");
659
861
  if (!state.storeRuntime) {
660
862
  return { facet: input.ref.split(":")[0] as "sql", rows: [], masked: true };
661
863
  }
662
864
  return store.queryStore(state.storeRuntime, state.manifest, input);
663
865
  },
866
+ getStoreFile: async (input) => {
867
+ const store = await markPanel<typeof import("./store.ts")>("store");
868
+ if (!state.storeRuntime) {
869
+ throw new Error("Store runtime not bound");
870
+ }
871
+ return store.getStoreFile(state.storeRuntime, input);
872
+ },
664
873
  editStore: async (input, opts) => {
874
+ rejectConsoleAuthMutation(input.ref);
665
875
  const store = await markPanel<typeof import("./store.ts")>("store");
666
876
  if (!state.storeRuntime) {
667
877
  throw new Error("Store runtime not bound");
@@ -672,9 +882,10 @@ export function createConsoleState(options: CreateConsoleStateOptions = {}): Con
672
882
  });
673
883
  },
674
884
  deleteStore: async (input) => {
885
+ rejectConsoleAuthMutation(input.ref);
675
886
  const store = await markPanel<typeof import("./store.ts")>("store");
676
887
  if (!state.storeRuntime) return { deleted: 0 };
677
- return store.deleteStore(state.storeRuntime, input);
888
+ return store.deleteStore(state.storeRuntime, input, state.manifest);
678
889
  },
679
890
  purgeStoreCache: async (resource) => {
680
891
  const store = await markPanel<typeof import("./store.ts")>("store");
@@ -682,12 +893,57 @@ export function createConsoleState(options: CreateConsoleStateOptions = {}): Con
682
893
  return store.purgeStoreCache(state.storeRuntime, resource);
683
894
  },
684
895
  runStoreSql: async (ref, sqlText, options) => {
896
+ rejectConsoleAuthMutation(ref);
685
897
  const store = await markPanel<typeof import("./store.ts")>("store");
686
898
  if (!state.storeRuntime) {
687
899
  throw new Error("Store runtime not bound");
688
900
  }
689
901
  return store.runStoreSql(state.storeRuntime, ref, sqlText, options);
690
902
  },
903
+ queryStoreSqlStats: async (ref) => {
904
+ const stats = await import("./store-stats.ts");
905
+ await markPanel<typeof import("./store.ts")>("store");
906
+ if (!state.storeRuntime) {
907
+ throw new stats.StoreSqlStatsError(
908
+ stats.PG_STAT_STATEMENTS_UNSUPPORTED,
909
+ "Store runtime not bound",
910
+ );
911
+ }
912
+ return stats.queryStoreSqlStats(state.storeRuntime, ref);
913
+ },
914
+ queryStoreSqlLocks: async (ref, options) => {
915
+ const stats = await import("./store-stats.ts");
916
+ await markPanel<typeof import("./store.ts")>("store");
917
+ if (!state.storeRuntime) {
918
+ throw new stats.StoreSqlStatsError(
919
+ stats.PG_STAT_STATEMENTS_UNSUPPORTED,
920
+ "Store runtime not bound",
921
+ );
922
+ }
923
+ return stats.queryStoreSqlLocks(state.storeRuntime, ref, options);
924
+ },
925
+ adviseStoreSqlIndex: async (ref, query) => {
926
+ const stats = await import("./store-stats.ts");
927
+ await markPanel<typeof import("./store.ts")>("store");
928
+ if (!state.storeRuntime) {
929
+ throw new stats.StoreSqlStatsError(
930
+ stats.PG_STAT_STATEMENTS_UNSUPPORTED,
931
+ "Store runtime not bound",
932
+ );
933
+ }
934
+ return stats.adviseStoreSqlIndex(state.storeRuntime, ref, query);
935
+ },
936
+ queryStoreKvStats: async (ref, options) => {
937
+ const kvStats = await import("./store-kv-stats.ts");
938
+ await markPanel<typeof import("./store.ts")>("store");
939
+ if (!state.storeRuntime) {
940
+ throw new kvStats.StoreKvStatsError(
941
+ kvStats.KV_STATS_UNSUPPORTED,
942
+ "Store runtime not bound",
943
+ );
944
+ }
945
+ return kvStats.queryStoreKvStats(state.storeRuntime, ref, options);
946
+ },
691
947
  clockRuntime: options.clockRuntime ?? null,
692
948
  listClocks: async () => {
693
949
  const { ensureConsolePanelRuntimes } = await import("./app.ts");
@@ -742,7 +998,14 @@ export function createConsoleState(options: CreateConsoleStateOptions = {}): Con
742
998
  };
743
999
  },
744
1000
  vaultRuntime: options.vaultRuntime ?? null,
1001
+ vaultLayerSeed: options.vaultLayerSeed ?? null,
745
1002
  journalStore: options.journalStore ?? null,
1003
+ instanceStore: options.instanceStore ?? null,
1004
+ fleetCronStore: options.fleetCronStore ?? null,
1005
+ listInstances: async () => {
1006
+ const instances = await markPanel<typeof import("./instances.ts")>("instances");
1007
+ return instances.listConsoleInstances(state);
1008
+ },
746
1009
  vaultEnv: options.vaultEnv ?? "dev",
747
1010
  listVault: async () => {
748
1011
  const { ensureConsolePanelRuntimes } = await import("./app.ts");
@@ -754,24 +1017,97 @@ export function createConsoleState(options: CreateConsoleStateOptions = {}): Con
754
1017
  journal: state.journalStore,
755
1018
  env: state.vaultEnv,
756
1019
  now: state.now,
1020
+ cwd: state.cwd,
757
1021
  backend: await vaultBackend(vault),
758
1022
  });
759
1023
  },
760
1024
  setVault: async (input) => {
1025
+ const { ensureConsolePanelRuntimes } = await import("./app.ts");
1026
+ await ensureConsolePanelRuntimes(state, "vault");
761
1027
  const vault = await markPanel<typeof import("./vault.ts")>("vault");
1028
+ if (!state.vaultRuntime) {
1029
+ state.vaultRuntime = await vault.createManifestVaultRuntime(
1030
+ state.manifest ?? { oke: "1.0", app: "app" },
1031
+ {
1032
+ cwd: state.cwd,
1033
+ env: state.production ? "prod" : "dev",
1034
+ allowDevFallbacks: !state.production,
1035
+ now: state.now,
1036
+ driverId: vault.resolveVaultDriverId(
1037
+ state.okeConfig,
1038
+ state.production ? "prod" : "dev",
1039
+ ),
1040
+ },
1041
+ );
1042
+ }
762
1043
  if (!state.vaultRuntime) {
763
1044
  throw new Error("Vault runtime not bound");
764
1045
  }
765
1046
  return vault.setVaultValue(state.vaultRuntime, input);
766
1047
  },
1048
+ createVault: async (input) => {
1049
+ const { ensureConsolePanelRuntimes } = await import("./app.ts");
1050
+ await ensureConsolePanelRuntimes(state, "vault");
1051
+ const vault = await markPanel<typeof import("./vault.ts")>("vault");
1052
+ if (!state.vaultRuntime) {
1053
+ state.vaultRuntime = await vault.createManifestVaultRuntime(
1054
+ state.manifest ?? { oke: "1.0", app: "app" },
1055
+ {
1056
+ cwd: state.cwd,
1057
+ env: state.production ? "prod" : "dev",
1058
+ allowDevFallbacks: !state.production,
1059
+ now: state.now,
1060
+ driverId: vault.resolveVaultDriverId(
1061
+ state.okeConfig,
1062
+ state.production ? "prod" : "dev",
1063
+ ),
1064
+ },
1065
+ );
1066
+ }
1067
+ if (!state.vaultRuntime) {
1068
+ throw new Error("Vault runtime not bound");
1069
+ }
1070
+ return vault.createVaultContract(state.vaultRuntime, state.cwd, state.manifest, input);
1071
+ },
767
1072
  rotateVault: async (input) => {
1073
+ const { ensureConsolePanelRuntimes } = await import("./app.ts");
1074
+ await ensureConsolePanelRuntimes(state, "vault");
768
1075
  const vault = await markPanel<typeof import("./vault.ts")>("vault");
1076
+ if (!state.vaultRuntime) {
1077
+ state.vaultRuntime = await vault.createManifestVaultRuntime(
1078
+ state.manifest ?? { oke: "1.0", app: "app" },
1079
+ {
1080
+ cwd: state.cwd,
1081
+ env: state.production ? "prod" : "dev",
1082
+ allowDevFallbacks: !state.production,
1083
+ now: state.now,
1084
+ driverId: vault.resolveVaultDriverId(
1085
+ state.okeConfig,
1086
+ state.production ? "prod" : "dev",
1087
+ ),
1088
+ },
1089
+ );
1090
+ }
769
1091
  if (!state.vaultRuntime) {
770
1092
  throw new Error("Vault runtime not bound");
771
1093
  }
772
1094
  return vault.rotateVaultValue(state.vaultRuntime, input);
773
1095
  },
774
- identities: [...(options.identities ?? defaultDevIdentities())],
1096
+ vaultRotateHandle: null,
1097
+ vaultRotateStarting: false,
1098
+ verifyVaultAudit: async () => {
1099
+ const vault = await markPanel<typeof import("./vault.ts")>("vault");
1100
+ return vault.verifyConsoleVaultAudit({
1101
+ config: state.okeConfig,
1102
+ env: state.production ? "prod" : "dev",
1103
+ ...(options.vaultProcessEnv !== undefined ? { processEnv: options.vaultProcessEnv } : {}),
1104
+ });
1105
+ },
1106
+ rotateMaster: async () => {
1107
+ const vault = await markPanel<typeof import("./vault.ts")>("vault");
1108
+ return runConsoleRotateMaster(state, vault, options);
1109
+ },
1110
+ identities: [...(options.identities ?? defaultDevIdentities(options.manifest))],
775
1111
  production: options.production ?? process.env.NODE_ENV === "production",
776
1112
  aiRuntime: null,
777
1113
  evalResults: [],
@@ -924,6 +1260,97 @@ export function setManifest(state: ConsoleState, manifest: Manifest): void {
924
1260
  }
925
1261
  }
926
1262
 
1263
+ /**
1264
+ * One rotate-master batch on the process-global handle.
1265
+ *
1266
+ * @param state - Console state
1267
+ * @param vault - Vault panel module
1268
+ * @param options - Open / hold knobs
1269
+ */
1270
+ async function runConsoleRotateMaster(
1271
+ state: ConsoleState,
1272
+ vault: typeof import("./vault.ts"),
1273
+ options: CreateConsoleStateOptions,
1274
+ ): Promise<ConsoleVaultRotateMasterResult> {
1275
+ const openOpts = {
1276
+ config: state.okeConfig,
1277
+ env: state.production ? ("prod" as const) : ("dev" as const),
1278
+ unseal: true as const,
1279
+ ...(options.vaultProcessEnv !== undefined ? { processEnv: options.vaultProcessEnv } : {}),
1280
+ ...(options.vaultKekRewrapBatchSize === undefined
1281
+ ? {}
1282
+ : { kekRewrapBatchSize: options.vaultKekRewrapBatchSize }),
1283
+ };
1284
+
1285
+ if (state.vaultRotateHandle?.inFlight || state.vaultRotateStarting) {
1286
+ throw new ConsoleVaultRotateBusyError("vault: a master rotation is already in progress");
1287
+ }
1288
+
1289
+ if (state.vaultRotateHandle) {
1290
+ state.vaultRotateHandle.inFlight = true;
1291
+ try {
1292
+ await options.rotateBatchHold?.();
1293
+ const progress = await state.vaultRotateHandle.adapter.continueRotateMaster();
1294
+ if (progress.remaining === 0) {
1295
+ await state.vaultRotateHandle.close();
1296
+ state.vaultRotateHandle = null;
1297
+ }
1298
+ return {
1299
+ kekVersion: progress.kekVersion,
1300
+ remaining: progress.remaining,
1301
+ masterKey: null,
1302
+ };
1303
+ } catch (error) {
1304
+ return vault.mapConsoleVaultError(error);
1305
+ } finally {
1306
+ if (state.vaultRotateHandle) state.vaultRotateHandle.inFlight = false;
1307
+ }
1308
+ }
1309
+
1310
+ state.vaultRotateStarting = true;
1311
+ let opened: Awaited<ReturnType<typeof vault.openConsoleBuiltinAdapter>>;
1312
+ try {
1313
+ opened = await vault.openConsoleBuiltinAdapter(openOpts);
1314
+ } catch (error) {
1315
+ state.vaultRotateStarting = false;
1316
+ return vault.mapConsoleVaultError(error);
1317
+ }
1318
+
1319
+ try {
1320
+ const status = await opened.adapter.status();
1321
+ if (status.rewrapTargetKekVersion !== undefined) {
1322
+ await opened.close();
1323
+ throw new ConsoleVaultRotateBusyError(
1324
+ "vault: resume rotate-master with the new master key (`oke vault rotate-master --new-key`)",
1325
+ );
1326
+ }
1327
+
1328
+ state.vaultRotateHandle = {
1329
+ adapter: opened.adapter,
1330
+ close: () => opened.close(),
1331
+ inFlight: true,
1332
+ };
1333
+ await options.rotateBatchHold?.();
1334
+ const progress = await opened.adapter.rotateMaster();
1335
+ if (progress.remaining === 0) {
1336
+ await opened.close();
1337
+ state.vaultRotateHandle = null;
1338
+ }
1339
+ return {
1340
+ kekVersion: progress.kekVersion,
1341
+ remaining: progress.remaining,
1342
+ masterKey: progress.masterKey ?? null,
1343
+ };
1344
+ } catch (error) {
1345
+ await opened.close().catch(() => undefined);
1346
+ state.vaultRotateHandle = null;
1347
+ return vault.mapConsoleVaultError(error);
1348
+ } finally {
1349
+ state.vaultRotateStarting = false;
1350
+ if (state.vaultRotateHandle) state.vaultRotateHandle.inFlight = false;
1351
+ }
1352
+ }
1353
+
927
1354
  /**
928
1355
  * Bind a live {@link GateRuntime} from the host app (preferred over Manifest
929
1356
  * reconstruction).
@@ -953,15 +1380,26 @@ export async function bindManifestGateRuntime(state: ConsoleState): Promise<void
953
1380
 
954
1381
  /**
955
1382
  * Default development identities for the invoke-as picker.
1383
+ * Demo scopes follow Manifest gate `scopes` when present so Call API
1384
+ * matches the seeded app (keel `issue:write`, skyport `booking:create`).
1385
+ *
1386
+ * @param manifest - Optional Manifest used to derive application scopes
956
1387
  */
957
- function defaultDevIdentities(): ConsoleIdentity[] {
1388
+ function defaultDevIdentities(manifest?: Manifest | null): ConsoleIdentity[] {
1389
+ const scopes = new Set<string>(["member"]);
1390
+ for (const gate of Object.values(manifest?.gates ?? {})) {
1391
+ for (const scope of gate.scopes ?? []) {
1392
+ scopes.add(scope);
1393
+ }
1394
+ }
1395
+ if (scopes.size === 1) scopes.add("booking:create");
958
1396
  return [
959
1397
  {
960
1398
  id: "user_demo",
961
1399
  email: "demo@example.com",
962
1400
  name: "Demo User",
963
1401
  status: "active",
964
- scopes: ["booking:create", "member"],
1402
+ scopes: [...scopes].sort(),
965
1403
  },
966
1404
  {
967
1405
  id: "user_member",