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
@@ -97,28 +97,29 @@ Built-in defaults (`DRIVER_DEFAULTS`) when a key is omitted:
97
97
  | `vault` | `env` | `memory` | `vault` |
98
98
  | `channel.email` | `smtp` | `console` | `smtp` |
99
99
  | `channel.sms` | — (opt-in) | — | — |
100
+ | `runs` | `files` | `memory` | `files` |
100
101
 
101
102
  `store.index`, `channel.whatsapp` / `push`, and `ai` have no single three-env default table — set them explicitly when you need them. create-oke templates pin `vault.dev: "vault"` (built-in) because the default `dev` driver is `env`.
102
103
 
103
104
  ## Driver keys and ids
104
105
 
105
- | Key | Shape | Driver ids |
106
- | ------------------ | -------------- | ---------------------------------------------------------------------------- |
107
- | `store.sql` | env driver map | `postgres` · `pglite` · `memory` |
108
- | `store.kv` | env driver map | `memory` · `redis` |
109
- | `store.files` | env driver map | `memory` · `fs` · `s3` |
110
- | `store.index` | env driver map | `memory` · `pgvector` · `meilisearch` |
111
- | `signal` | env driver map | `memory` · `redis` (boot); `postgres` · `nats` fail loud until clients bind |
112
- | `clock` | env driver map | `memory` · `postgres` · `file` · `frozen` |
113
- | `journal` | env driver map | `memory` · `file` · `postgres` |
114
- | `vault` | env driver map | `env` · `vault` · `memory` · `managed` |
115
- | `channel.email` | env driver map | `console` · `smtp` · `resend` · `sndr` · `taqnyat-mail` |
116
- | `channel.sms` | env driver map | `console` · `taqnyat` · `msegat` · `unifonic` |
117
- | `channel.whatsapp` | env driver map | `console` · `wa-cloud` |
118
- | `channel.push` | env driver map | `console` · `webpush` · `fcm` |
119
- | `ai` | env driver map | `mock` · `anthropic` · `openai-compatible` · `bedrock` · `vertex` · `ollama` |
120
- | `runs` | env driver map | runs-store driver (distinct from top-level `runs`) |
121
- | `prod` | `string[]` | flat protocol list for the Manifest — nested maps are preferred |
106
+ | Key | Shape | Driver ids |
107
+ | ------------------ | -------------- | -------------------------------------------------------------------------------- |
108
+ | `store.sql` | env driver map | `postgres` · `pglite` · `memory` |
109
+ | `store.kv` | env driver map | `memory` · `redis` |
110
+ | `store.files` | env driver map | `memory` · `fs` · `s3` |
111
+ | `store.index` | env driver map | `memory` · `pgvector` · `meilisearch` |
112
+ | `signal` | env driver map | `memory` · `redis` (boot); `postgres` · `nats` fail loud until clients bind |
113
+ | `clock` | env driver map | `memory` · `postgres` · `file` · `frozen` |
114
+ | `journal` | env driver map | `memory` · `file` · `postgres` |
115
+ | `vault` | env driver map | `env` · `vault` · `memory` · `managed` |
116
+ | `channel.email` | env driver map | `console` · `smtp` · `resend` · `sndr` · `taqnyat-mail` |
117
+ | `channel.sms` | env driver map | `console` · `taqnyat` · `msegat` · `unifonic` |
118
+ | `channel.whatsapp` | env driver map | `console` · `wa-cloud` |
119
+ | `channel.push` | env driver map | `console` · `webpush` · `fcm` |
120
+ | `ai` | env driver map | `mock` · `anthropic` · `openai-compatible` · `bedrock` · `vertex` · `ollama` |
121
+ | `runs` | env driver map | `memory` · `files` (Parquet + DuckDB at `.oke/runs`) · `postgres` · `clickhouse` |
122
+ | `prod` | `string[]` | flat protocol list for the Manifest — nested maps are preferred |
122
123
 
123
124
  ### Safety rules
124
125
 
@@ -150,11 +151,11 @@ images: {
150
151
  store: {
151
152
  sql: "postgres:18-alpine",
152
153
  kv: "redis:8-alpine",
153
- files: "rustfs/rustfs:1.0.0-beta.11",
154
+ files: "rustfs/rustfs:1.0.0-rc.2",
154
155
  },
155
- channel: { email: "axllent/mailpit:v1.22.3" },
156
- pgdog: "ghcr.io/pgdogdev/pgdog:v0.1.51",
157
- // ai: "ghcr.io/ggml-org/llama.cpp:server-b10290",
156
+ channel: { email: "axllent/mailpit:v1.30.7" },
157
+ pgdog: "ghcr.io/pgdogdev/pgdog:v0.1.53",
158
+ // ai: "ghcr.io/ggml-org/llama.cpp:server-b10450",
158
159
  // proxy: "caddy:2-alpine",
159
160
  },
160
161
  ```
@@ -195,9 +196,10 @@ privacy: {},
195
196
 
196
197
  Runs retention and redaction — **not** the same key as `drivers.runs`.
197
198
 
198
- | Option | Type | Meaning |
199
- | -------- | ------------------------ | ----------------------------------------------------- |
200
- | `redact` | `Record<string, string>` | Field retention duration; presence turns privacy on |
199
+ | Option | Type | Meaning |
200
+ | -------- | ------------------------ | -------------------------------------------------------------------------- |
201
+ | `keep` | `string` \| `"forever"` | Delete Parquet partitions older than this (`7d` in `dev`, `30d` in `prod`) |
202
+ | `redact` | `Record<string, string>` | Field → retention duration; presence turns privacy on |
201
203
 
202
204
  ## db
203
205
 
@@ -252,6 +254,11 @@ Domain schema sync for `oke db push | generate | migrate` (Drizzle). Unrelated t
252
254
  `postgres` / `pglite`. `oke mode` was removed — `oke dev` always starts Docker Compose.
253
255
  </Accordion>
254
256
 
257
+ <Accordion title="Runs DuckDB / Parquet queries requires @duckdb/node-api">
258
+ The `files` driver needs `@duckdb/node-api`. create-oke templates add it. Install with `bun add
259
+ @duckdb/node-api` if an older app is missing the peer.
260
+ </Accordion>
261
+
255
262
  </Accordions>
256
263
 
257
264
  ## Learn more
@@ -4,7 +4,7 @@ description: "Every environment variable OKE reads — connection URLs, driver o
4
4
  icon: "Terminal"
5
5
  ---
6
6
 
7
- OKE reads environment variables at boot for connection detail and secrets — never for behavior you could declare in `oke.config.ts`. Under `oke dev`, Compose writes these into `docker/.env.docker`; this page is the full map.
7
+ OKE reads environment variables at boot for connection detail and secrets — never for behavior you could declare in `oke.config.ts`. Under `oke dev`, Compose writes these into `.env.local`; this page is the full map.
8
8
 
9
9
  <Callout title="Precedence">
10
10
  For anything with both an `OKE_*` variable and a conventional one (like `DATABASE_URL`), the
@@ -54,17 +54,17 @@ OKE reads environment variables at boot for connection detail and secrets — ne
54
54
 
55
55
  ## Vault
56
56
 
57
- Built-in store uses `OKE_VAULT_MASTER_KEY` (or `--key` / stdin on CLI). Managed AWS Secrets Manager
58
- uses the provider + region vars below.
57
+ Built-in store uses `OKE_VAULT_MASTER_KEY` (or `--key` / stdin on CLI). Managed providers use the
58
+ vars below see [Vault](/docs/elements/vault) for which each id needs.
59
59
 
60
- | Variable | Used for | Default when unset |
61
- | ---------------------- | -------------------------------------------- | --------------------- |
62
- | `OKE_VAULT_PROVIDER` | Managed backend (`aws-secrets-manager`) | — (platform-injected) |
63
- | `OKE_VAULT_REGION` | Cloud region for AWS Secrets Manager | — |
64
- | `OKE_VAULT_MOUNT` | Secret-name prefix for AWS SM (`oke/prod/`) | — |
65
- | `OKE_VAULT_MASTER_KEY` | Built-in vault master key (base64) | — |
66
- | `OKE_VAULT_URL` | Optional remote URL for community adapters | — |
67
- | `OKE_VAULT_TOKEN` | Optional remote token for community adapters | — |
60
+ | Variable | Used for | Default when unset |
61
+ | ---------------------- | ------------------------------------------------------------------------------------------------------------ | --------------------- |
62
+ | `OKE_VAULT_PROVIDER` | Managed backend (`aws-secrets-manager` · `azure-key-vault` · `gcp-secret-manager` · `doppler` · `1password`) | — (platform-injected) |
63
+ | `OKE_VAULT_REGION` | Cloud region (AWS Secrets Manager; GCP user-managed replication) | — |
64
+ | `OKE_VAULT_MOUNT` | Scope: AWS/Azure prefix, GCP `project[/prefix]`, Doppler `project/config`, 1Password vault name | — |
65
+ | `OKE_VAULT_MASTER_KEY` | Built-in vault master key (base64) | — |
66
+ | `OKE_VAULT_URL` | Azure Key Vault URI, 1Password Connect host, optional Doppler origin | — |
67
+ | `OKE_VAULT_TOKEN` | Doppler service/personal token, 1Password Connect token | — |
68
68
 
69
69
  ## Channel (email) — boot binder
70
70
 
@@ -128,15 +128,18 @@ provider's real credentials — credentials alone never send.
128
128
 
129
129
  ## Framework behavior
130
130
 
131
- | Variable | Used for |
132
- | --------------------- | ------------------------------------------------------------------------------------------ |
133
- | `OKE_DOCKER` | `"1"` marks Compose / `oke dev` posture (set by the CLI) |
134
- | `OKE_DB_AUTO_PUSH` | Overrides `db.autoPush` at boot |
135
- | `OKE_DRIZZLE_DIALECT` | `"postgresql"` for drizzle-kit overlays (templates hardcode it) |
136
- | `OKE_DEV_REQUEST_LOG` | `"1"` logs requests during `oke dev` (set by the CLI) |
137
- | `OKE_CONSOLE_SECRET` | Console session signing secret — set explicitly in production (else `.oke/console.secret`) |
138
- | `PORT` | App port in production containers (default `6530`) |
139
- | `NODE_ENV` | `"production"` switches the Console to its production posture |
131
+ | Variable | Used for |
132
+ | ------------------------ | --------------------------------------------------------------------------------------------------------------------- |
133
+ | `OKE_DOCKER` | `"1"` marks Compose / `oke dev` posture (set by the CLI) |
134
+ | `OKE_DB_AUTO_PUSH` | Overrides `db.autoPush` at boot |
135
+ | `OKE_DRIZZLE_DIALECT` | `"postgresql"` for drizzle-kit overlays (templates hardcode it) |
136
+ | `OKE_DEV_REQUEST_LOG` | `"1"` logs requests during `oke dev` (set by the CLI) — surface, flow, status, timestamp, run id |
137
+ | `OKE_CONSOLE_SECRET` | Console operator-session signing secret (HMAC) — set in production; else `.oke/console.secret`. Not a Vault contract. |
138
+ | `OKE_CONSOLE_AUTH_STORE` | `"1"` lists the operator-plane `oke_console` schema in Store browse (read-only). Hidden by default. |
139
+ | `OKE_RUNS_INGEST_URL` | Host → Console WideEvent ingest URL (`oke dev` sets this on the app child). Enables a memory runs store + push. |
140
+ | `OKE_RUNS_INGEST_SECRET` | Shared secret for `POST /console/runs/ingest` (`x-oke-runs-ingest` header). Minted by `oke dev`; never return events. |
141
+ | `PORT` | App port in production containers (default `6530`) |
142
+ | `NODE_ENV` | `"production"` switches the Console to its production posture |
140
143
 
141
144
  Console operator rows are **not** stored in `.oke/console.sqlite`. With `DATABASE_URL` (or
142
145
  `OKE_STORE_SQL_URL`) they live in Postgres schema `oke_console`. Without a Postgres URL,
@@ -60,31 +60,36 @@ Returned, not thrown — the request never reached `do`:
60
60
 
61
61
  ## Framework validation failures
62
62
 
63
- | Code | When |
64
- | ----------------- | ------------------------------------------------------------------------------------------ |
65
- | `ValidationError` | Input failed the `in` schema, or a list param isn't whitelisted (`unknown list param "x"`) |
66
- | `NotFound` | A `store.resource` get/update/remove hit a missing row |
63
+ | Code | When |
64
+ | ---------------------- | ------------------------------------------------------------------------------------------------------------------- |
65
+ | `ValidationError` | Input failed the `in` schema, or a list param isn't whitelisted (`unknown list param "x"`) |
66
+ | `NotFound` | A `store.resource` get/update/remove hit a missing row |
67
+ | `InvalidQuery` | QUERY missing `Content-Type` (`reason: missing_content_type`) or body isn't JSON (`inconsistent_content`) — **400** |
68
+ | `UnsupportedMediaType` | QUERY `Content-Type` is present but not `application/json` — **415**, `Accept-Query` lists JSON |
67
69
 
68
70
  ## Subsystem errors
69
71
 
70
72
  Thrown by specific subsystems — each names its own cause:
71
73
 
72
- | Error | Thrown when | What to do |
73
- | ----------------------------- | ------------------------------------------------------------------ | ------------------------------------------------------ |
74
- | `VaultBootError` | A vault contract has no value in any resolution layer | Set the missing names — the error lists every gap |
75
- | `VaultError` (`UNSUPPORTED`) | Managed provider unknown or not implemented in core | Use `aws-secrets-manager`, built-in `vault`, or `env` |
76
- | `AiPiiBuildError` | Build: a flow sends PII fields to a third-party model | Drop the fields or add `allowPii: true` — fields named |
77
- | `AiSchemaValidationError` | A model response failed the prompt's `out` schema | Fix the prompt or the schema response didn't conform |
78
- | `ScheduleNotOverridableError` | Console tried to edit a clock declared without `overridable: true` | Declare it overridable and redeploy |
79
- | `ClockResourceNotFoundError` | Console action targeted an unknown clock name | Check the name against your `clock()` declarations |
80
- | `DryRunWriteIsolationError` | A write attempted inside a dry run | Dry runs never writeuse a real run |
81
- | `ManifestValidationError` | The compiled Manifest failed schema validation | Re-run the build; the error names the offending entry |
82
- | `CrossPlaneError` | A user-plane token was used on the operator plane (or vice versa) | Use the correct principal for the plane |
83
- | `AttenuationError` | A token was used beyond its attenuated scope | Re-issue with the needed scope |
84
- | `SessionError` | Session token invalid, expired, or malformed | Re-authenticate |
85
- | `OperatorError` | Operator-plane operation failed its checks | Error message names the failed check |
86
- | `AccessGrantError` | Console access grant rejected | Re-request access with a valid grant |
87
- | `UnsupportedPathError` | A route path shape the router can't compile | Simplify the path pattern |
74
+ | Error | Thrown when | What to do |
75
+ | ----------------------------- | ------------------------------------------------------------------ | --------------------------------------------------------------------- |
76
+ | `VaultBootError` | A vault contract has no value in any resolution layer | Set the missing names — the error lists every gap |
77
+ | `VaultError` (`UNSUPPORTED`) | Managed provider unknown | Use an official id, built-in `vault`, or `env` |
78
+ | `VaultSealed` | Console rotate-master while this process holds no master key | Export `OKE_VAULT_MASTER_KEY` or run `oke vault unseal` |
79
+ | `VaultRotateBusy` | Master-rotation lease held or a batch is already in flight | Wait and continue, or resume with `oke vault rotate-master --new-key` |
80
+ | `VaultUnsupported` | Console vault action on a non-builtin backend or missing SQL | Use `drivers.vault = "vault"` and set `DATABASE_URL` |
81
+ | `AiPiiBuildError` | Build: a flow sends PII fields to a third-party model | Drop the fields or add `allowPii: true` — fields named |
82
+ | `AiSchemaValidationError` | A model response failed the prompt's `out` schema | Fix the prompt or the schema response didn't conform |
83
+ | `ScheduleNotOverridableError` | Console tried to edit a clock declared without `overridable: true` | Declare it overridable and redeploy |
84
+ | `ClockResourceNotFoundError` | Console action targeted an unknown clock name | Check the name against your `clock()` declarations |
85
+ | `DryRunWriteIsolationError` | A write attempted inside a dry run | Dry runs never write — use a real run |
86
+ | `ManifestValidationError` | The compiled Manifest failed schema validation | Re-run the build; the error names the offending entry |
87
+ | `CrossPlaneError` | A user-plane token was used on the operator plane (or vice versa) | Use the correct principal for the plane |
88
+ | `AttenuationError` | A token was used beyond its attenuated scope | Re-issue with the needed scope |
89
+ | `SessionError` | Session token invalid, expired, or malformed | Re-authenticate |
90
+ | `OperatorError` | Operator-plane operation failed its checks | Error message names the failed check |
91
+ | `AccessGrantError` | Console access grant rejected | Re-request access with a valid grant |
92
+ | `UnsupportedPathError` | A route path shape the router can't compile | Simplify the path pattern |
88
93
 
89
94
  ## Learn more
90
95
 
@@ -41,12 +41,12 @@ See [Store](/docs/elements/store) for the query-builder surface.
41
41
 
42
42
  Declare `effects: { reads: ["runs"] }`. Powers native SLO checkers (Clock + Channel) without a parallel metrics API.
43
43
 
44
- | Signature | Records | Returns |
45
- | ---------------------------------------- | ------------- | --------------------------------------------- |
46
- | `fx.runs.query(sql)` | `read` `runs` | SQL rows (`FROM runs` on files/memory) |
47
- | `fx.runs.all()` | `read` `runs` | All wide events |
48
- | `fx.runs.window(flow, windowMs?)` | `read` `runs` | Rolling P50/P95/P99 + error rate (default 5m) |
49
- | `fx.runs.checkSlo(flow, slo, windowMs?)` | `read` `runs` | Availability / latency breaches |
44
+ | Signature | Records | Returns |
45
+ | ---------------------------------------- | ------------- | ---------------------------------------------------------------------------------------- |
46
+ | `fx.runs.query(sql)` | `read` `runs` | SQL rows (`FROM runs` on files/memory). Unrestricted Flow SQL — not the Console sandbox. |
47
+ | `fx.runs.all()` | `read` `runs` | All wide events |
48
+ | `fx.runs.window(flow, windowMs?)` | `read` `runs` | Rolling P50/P95/P99 + error rate (default 5m) |
49
+ | `fx.runs.checkSlo(flow, slo, windowMs?)` | `read` `runs` | Availability / latency breaches |
50
50
 
51
51
  ```typescript
52
52
  on(
@@ -178,6 +178,12 @@ Durations: `"200ms"` · `"30s"` · `"2m"` · `"1h"` · `"7d"`.
178
178
 
179
179
  ## Cache
180
180
 
181
+ Read-only flows cache automatically from inferred or ledgered `reads` — no
182
+ `fx.cache` call and no `cache:` default on the flow. Writes invalidate those
183
+ keys. Use `cache: false` to opt out, or `cache: "30s"` for a TTL.
184
+
185
+ `fx.cache` is the manual (tier-3) surface:
186
+
181
187
  | Signature | Notes |
182
188
  | -------------------------------------- | ----------------------------------------- |
183
189
  | `fx.cache.get(key)` | Value or `undefined` |
@@ -186,12 +192,13 @@ Durations: `"200ms"` · `"30s"` · `"2m"` · `"1h"` · `"7d"`.
186
192
 
187
193
  ## Responses
188
194
 
189
- | Helper | Status | Body |
190
- | ------------------------------ | ------ | ------------------------------ |
191
- | `fx.json.ok(value, { meta? })` | 200 | `{ data, meta?, error: null }` |
192
- | `fx.json.create(value)` | 201 | `{ data, error: null }` |
193
- | `fx.json.empty()` | 204 | no body |
194
- | `fx.json.with(data, meta)` | 200 | paginated envelope |
195
+ | Helper | Status | Body |
196
+ | ----------------------------------------- | ------ | ----------------------------------------------------------- |
197
+ | `fx.json.ok(value, { meta? })` | 200 | `{ data, meta?, error: null }` |
198
+ | `fx.json.create(value)` | 201 | `{ data, error: null }` |
199
+ | `fx.json.empty()` | 204 | no body |
200
+ | `fx.json.with(page)` / `with(data, meta)` | 200 | `{ data, meta, error: null }` — already-built pager |
201
+ | `fx.json.withQuery(rows, input, spec?)` | 200 | In-memory list page — zero-config `q` / auto-eq / PostgREST |
195
202
 
196
203
  Returning a plain value instead answers 200 with `{ data: value, error: null }` — the helpers exist for status and `meta` control.
197
204
 
@@ -110,14 +110,14 @@ At `onResponse`, `ctx.response` holds the **final serialized HTTP response** —
110
110
 
111
111
  ## Edge handlers answer unmatched requests
112
112
 
113
- Hooks only ever see requests a flow owns — an `OPTIONS` preflight for a path bound to `GET` matches nothing and would 404 untouched. `.edge(fn)` closes that gap: handlers run in install order when the router finds no flow, the first returned `Response` answers, and `undefined` passes to the next handler, then the plain 404:
113
+ Hooks only ever see requests a flow owns — an `OPTIONS` preflight for a path bound to `GET` matches nothing and would 405 untouched. `.edge(fn)` closes that gap: handlers run in install order when the router finds no flow, the first returned `Response` answers, and `undefined` passes to the next handler, then **405** if the path exists for other methods, else 404:
114
114
 
115
115
  ```typescript
116
116
  plugin("cors", { version: "1.0.0" }).edge((request, info) => {
117
117
  if (info.method === "OPTIONS" && request.headers.has("origin")) {
118
118
  return new Response(null, { status: 204, headers: preflightHeaders(request) });
119
119
  }
120
- return undefined; // not mine — let someone else answer, else 404
120
+ return undefined; // not mine — let someone else answer, else 405/404
121
121
  });
122
122
  ```
123
123
 
@@ -40,14 +40,23 @@ Our path is concrete: a booking name containing "ignore previous instructions an
40
40
 
41
41
  #### 10.4 Remaining closures
42
42
 
43
- - **`invoke-as` is attenuated** exactly like an API key: an operator cannot assume a scope set they could not grant. Impersonating a real user is development-only.
44
- - **Exports are a separate capability** row-limited by default, audited with the query recorded, PII masked without `pii:reveal`, and **CSV formula injection neutralised** (values beginning `=`, `+`, `-`, `@` are quoted, or Excel executes them on the recipient's machine).
43
+ - **`invoke-as` is attenuated** exactly like an API key: an operator cannot assume a scope set they could not grant. Impersonating a real user is development-only. Console `POST /console/flows/invoke` runs the target flow on a bound host under the selected identity’s scopes (`trustedInvoke` is in-process only — never from public HTTP); when the host adapter is unbound, invoke fails closed.
44
+ - **Store SQL browse** masks classified PII by default. `QUERY /console/store/query` with `revealPii: true` returns cleartext for the current page and writes an audited `console.store.query.reveal` log (operator, ref, child). The SQL query console (`POST /console/store/sql`) stays masked unless `revealPii: true`, which writes `console.store.sql.reveal` (operator, ref). Call API (`POST /console/flows/invoke`) masks the same classified field names on the handler response unless `revealPii: true`, which writes `console.flows.invoke.reveal` and opens the host store session with cleartext so columns the handler reads (for example `ownerEmail`) are not already `[redacted]`. `asGate` (a Manifest policy gate or `public`) sets `oke.gate` and `row_security` on postgres / pglite and writes `console.store.sql.asGate`; Operator (omit `asGate`) still bypasses RLS. Per-cell `POST /console/store/reveal` remains available. The Console auth schema (`sql:oke_console` — `oke_operators`, sessions, roles, keys) is hidden from Store browse unless `OKE_CONSOLE_AUTH_STORE=1`. When listed it is **read-only**; edit / delete / raw SQL are refused so operator-plane rows are never joined to `public`.
45
+ - **Host WideEvent ingest** (`POST /console/runs/ingest`, `oke dev` only) is secret-gated and never echoes the event body. Operators read runs only through `projectRun` / `maskWideEventForConsole` on `GET /console/runs` and `/console/live` — the same PII boundary as Console-local runs.
46
+ - **Store SQL performance** (`QUERY /console/store/sql/stats`, `/locks`, `POST /console/store/sql/advise`) is engine-native query text — not Store browse masking. Statements show `pg_stat_statements` fingerprints (`$n`). Live `pg_stat_activity.query` is collapsed until `revealPii: true`, which writes `console.store.sql.stats.reveal` (operator, ref). Named limitation `StoreSqlStatsQueryTextGap`. This surface does not terminate sessions or call `pg_stat_statements_reset`.
47
+ - **Store KV performance** (`QUERY /console/store/kv/stats`) is Redis-wire `INFO` / `COMMANDSTATS` / `SLOWLOG` / `LATENCY` — not Store browse. INFO is instance-wide (`StoreKvStatsServerWideGap`). SLOWLOG args are keys and values — collapsed until `revealPii: true`, which writes `console.store.kv.stats.reveal` (operator, ref). Named limitation `StoreKvStatsSlowlogArgsGap`. `memory` returns `KvStatsUnsupported`. This surface does not run `MONITOR` and does not invent a hot-key table.
48
+ - **Runs SQL** (`POST /console/runs/query`, Observability SQL tab) is operator-session, read-only, 5s timeout, 1000-row cap. DuckDB filesystem access is disabled for the statement. Masking is column-key only (`dim_*` and JSON blobs `input` / `output` / `logs` / `dimensions`). Aliases and expressions can leak classified values — named limitation `RunsQueryPiiProjectionGap`. This is **not** the `projectRun` guarantee. `revealPii: true` writes `console.runs.query.reveal`. Flow `fx.runs.query` stays unrestricted app SQL.
45
49
  - **Plugin panels** run in a sandboxed iframe without `allow-same-origin`, communicating only over a `postMessage` bridge with their own CSP, no access to the operator session token, and exposure limited to that plugin's declared flows.
46
- - **Session and framing:** `frame-ancestors 'none'`, `SameSite=Strict`, step-up authentication before destructive actions.
47
- - **Secret write path:** TLS required, no autocomplete, never echoed, never logged, not retained in browser memory after submission.
48
- - **The setup claim code** is rate-limited and compared in constant time. The first-operator password
49
- uses the same policy as Gate auth (minLength 12, letter + number); weak passwords return
50
- `ClaimFailed` / `password_policy`, not an opaque 500.
50
+ - **Session and framing:** `frame-ancestors 'none'`, `SameSite=Strict`, step-up authentication before destructive actions. An expired operator session redirects to Sign in with `?next=` set to the current `/overview`, `/flows`, `/store`, `/vault`, or `/observability` href (search included); after login the operator returns there. `/monitoring` is rewritten to `/observability`. Any other `next` (including `/units`) is dropped so the gate cannot be used as an open redirect. Unknown Console paths are 404.
51
+ - **Secret write path:** TLS required, no autocomplete, never echoed, never logged, not retained in browser memory after submission. Vault set / rotate / rotate-master use typed confirm (`SET` / `ROTATE` / `ROTATE_MASTER`). The Console never accepts a master key in the HTTP body (`OKE_VAULT_MASTER_KEY` only). `GET /console/vault/audit/verify` is read-only (no typed phrase).
52
+ - **The setup claim code** is rate-limited and compared in constant time. It is
53
+ printed on the `oke dev` board (TTY only never on `GET /console/setup/status`)
54
+ and mirrored to gitignored `.oke/claim-code` (mode 0600) for
55
+ `oke console claim-code` while setup is open; the file is removed after a
56
+ successful claim. The first-operator password
57
+ uses Console policy (minLength 12, upper + lower + number + special / `requireSpecial` — stricter than Gate auth’s
58
+ minLength 8 with the same character classes); weak passwords return `ClaimFailed` /
59
+ `password_policy`, not an opaque 500.
51
60
 
52
61
  #### 10.5 Reversibility governs the confirmation pattern
53
62
 
@@ -274,7 +274,7 @@ describe("operator plane", () => {
274
274
  const op = await createOperator(store, {
275
275
  email: "ops@example.com",
276
276
  name: "Ops",
277
- password: "correct horse battery staple 1",
277
+ password: "Correct Horse Battery Staple 1!",
278
278
  });
279
279
 
280
280
  expect(store.credentials.has(op.id)).toBe(true);
@@ -287,7 +287,7 @@ describe("operator plane", () => {
287
287
  const authed = await authenticateOperator(
288
288
  store,
289
289
  "ops@example.com",
290
- "correct horse battery staple 1",
290
+ "Correct Horse Battery Staple 1!",
291
291
  );
292
292
  expect(authed?.id).toBe(op.id);
293
293
  });
@@ -275,10 +275,10 @@ export function createAuthHttpBindings(
275
275
  } = { refresh, revoke, me };
276
276
  const bindings: Binding[] = [
277
277
  bindAuthHttp(
278
- http.post(`${base}/refresh`).gate(gate.public, ...(refreshRate ? [refreshRate] : [])),
278
+ http.post(`${base}/refresh`).gate.public.gate(...(refreshRate ? [refreshRate] : [])),
279
279
  refresh,
280
280
  ),
281
- bindAuthHttp(http.post(`${base}/revoke`).gate(gate.public), revoke),
281
+ bindAuthHttp(http.post(`${base}/revoke`).gate.public, revoke),
282
282
  bindAuthHttp(http.get(`${base}/me`).gate(AUTH_SESSION_GATE), me),
283
283
  ];
284
284
 
@@ -371,11 +371,11 @@ export function createAuthHttpBindings(
371
371
  flows.signUpEmail = signUpEmail;
372
372
  bindings.push(
373
373
  bindAuthHttp(
374
- http.post(`${base}/sign-in/email`).gate(gate.public, ...(signInRate ? [signInRate] : [])),
374
+ http.post(`${base}/sign-in/email`).gate.public.gate(...(signInRate ? [signInRate] : [])),
375
375
  signInEmail,
376
376
  ),
377
377
  bindAuthHttp(
378
- http.post(`${base}/sign-up/email`).gate(gate.public, ...(signUpRate ? [signUpRate] : [])),
378
+ http.post(`${base}/sign-up/email`).gate.public.gate(...(signUpRate ? [signUpRate] : [])),
379
379
  signUpEmail,
380
380
  ),
381
381
  );
@@ -406,7 +406,7 @@ export function isSessionFresh(
406
406
  * @param flowDef - Flow
407
407
  */
408
408
  export function bindAuthHttp(trigger: HttpTrigger, flowDef: AnyFlowDef): Binding {
409
- const withPosture = trigger.gates.length > 0 ? trigger : trigger.gate(gate.public);
409
+ const withPosture = trigger.gates.length > 0 ? trigger : trigger.gate.public;
410
410
  const normalized = normalizeTrigger(withPosture);
411
411
  const list = flowDef.triggers as Trigger[];
412
412
  list.push(normalized);
@@ -6,6 +6,7 @@
6
6
 
7
7
  import type { PasswordHashOptions } from "../runtime/types.ts";
8
8
  import type { SessionStore } from "./sessions.ts";
9
+ import type { ApiKeyStore } from "./api-keys.ts";
9
10
  import type { BreachCheckFn } from "./breach-check.ts";
10
11
  import type { PasswordPolicyOptions } from "./password-policy.ts";
11
12
  import {
@@ -109,6 +110,11 @@ export interface GateAuthOptions extends AuthSchemaOptions {
109
110
  * Not part of the public app DX — escape hatch for embedding.
110
111
  */
111
112
  readonly sessions?: SessionStore;
113
+ /**
114
+ * In-memory API key store for Bearer key auth (tests / embedding).
115
+ * Distinct from schema `apiKeys` table options.
116
+ */
117
+ readonly apiKeyStore?: ApiKeyStore;
112
118
  /** Injectable clock. */
113
119
  readonly now?: () => number;
114
120
  }
@@ -164,6 +170,7 @@ export interface ResolvedGateAuth {
164
170
  };
165
171
  readonly hooks: AuthDatabaseHooks | undefined;
166
172
  readonly sessions: SessionStore | undefined;
173
+ readonly apiKeyStore: ApiKeyStore | undefined;
167
174
  readonly now: (() => number) | undefined;
168
175
  }
169
176
 
@@ -271,6 +278,7 @@ export function resolveGateAuth(options: ResolveGateAuthOptions): ResolvedGateAu
271
278
  },
272
279
  hooks: auth.hooks,
273
280
  sessions: auth.sessions,
281
+ apiKeyStore: auth.apiKeyStore,
274
282
  now: auth.now,
275
283
  };
276
284
  }
@@ -176,7 +176,7 @@ describe("gate.auth — email Flows + security", () => {
176
176
  headers: { "content-type": "application/json" },
177
177
  body: JSON.stringify({
178
178
  email: "user@example.com",
179
- password: "CorrectHorse1",
179
+ password: "CorrectHorse1!",
180
180
  name: "User",
181
181
  }),
182
182
  }),
@@ -192,7 +192,7 @@ describe("gate.auth — email Flows + security", () => {
192
192
  new Request("http://localhost/auth/sign-in/email", {
193
193
  method: "POST",
194
194
  headers: { "content-type": "application/json" },
195
- body: JSON.stringify({ email: "missing@example.com", password: "CorrectHorse1" }),
195
+ body: JSON.stringify({ email: "missing@example.com", password: "CorrectHorse1!" }),
196
196
  }),
197
197
  );
198
198
  const badBody = (await bad.json()) as { error: { code: string; data?: { reason?: string } } };
@@ -262,7 +262,7 @@ describe("gate.auth — email Flows + security", () => {
262
262
  headers: { "content-type": "application/json" },
263
263
  body: JSON.stringify({
264
264
  email: "weak@example.com",
265
- password: "CorrectHorse1",
265
+ password: "CorrectHorse1!",
266
266
  name: "Strong",
267
267
  }),
268
268
  }),
@@ -289,14 +289,14 @@ describe("gate.auth — email Flows + security", () => {
289
289
  new Request("http://localhost/auth/sign-up/email", {
290
290
  method: "POST",
291
291
  headers: { "content-type": "application/json" },
292
- body: JSON.stringify({ email: "dup@example.com", password: "CorrectHorse1" }),
292
+ body: JSON.stringify({ email: "dup@example.com", password: "CorrectHorse1!" }),
293
293
  }),
294
294
  );
295
295
  const again = await app.fetch(
296
296
  new Request("http://localhost/auth/sign-up/email", {
297
297
  method: "POST",
298
298
  headers: { "content-type": "application/json" },
299
- body: JSON.stringify({ email: "dup@example.com", password: "CorrectHorse1" }),
299
+ body: JSON.stringify({ email: "dup@example.com", password: "CorrectHorse1!" }),
300
300
  }),
301
301
  );
302
302
  const body = (await again.json()) as { error: { data?: { reason?: string } } };
package/src/auth/index.ts CHANGED
@@ -113,9 +113,12 @@ export {
113
113
 
114
114
  export {
115
115
  assertPasswordPolicy,
116
+ generatePassword,
116
117
  resolvePasswordPolicy,
117
118
  PasswordPolicyError,
118
119
  DEFAULT_PASSWORD_MIN_LENGTH,
120
+ DEFAULT_PASSWORD_POLICY,
121
+ type GeneratePasswordOptions,
119
122
  type PasswordPolicyOptions,
120
123
  type ResolvedPasswordPolicy,
121
124
  } from "./password-policy.ts";
@@ -43,7 +43,7 @@ export interface CreateOperatorOptions {
43
43
  readonly roles?: readonly string[];
44
44
  /**
45
45
  * Password length / character-class policy. Defaults applied when omitted
46
- * (minLength 12, letter + number). Pass custom knobs to tighten/loosen
46
+ * (minLength 8, letter, number, upper, lower, symbol). Pass custom knobs to tighten/loosen
47
47
  * within reason — never skip without {@link skipPasswordPolicy}.
48
48
  */
49
49
  readonly passwordPolicy?: PasswordPolicyOptions;