okengine 0.18.4 → 0.19.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 (512) hide show
  1. package/AGENTS.md +18 -10
  2. package/README.md +2 -2
  3. package/package.json +51 -50
  4. package/site/content/docs/ai/index.mdx +25 -6
  5. package/site/content/docs/ai/llms-txt.mdx +1 -1
  6. package/site/content/docs/ai/meta.json +1 -1
  7. package/site/content/docs/ai/skills.mdx +4 -1
  8. package/site/content/docs/ai/try-it.mdx +58 -0
  9. package/site/content/docs/client/auth.mdx +208 -0
  10. package/site/content/docs/client/calling.mdx +451 -0
  11. package/site/content/docs/client/index.mdx +209 -0
  12. package/site/content/docs/client/live.mdx +234 -0
  13. package/site/content/docs/client/meta.json +5 -0
  14. package/site/content/docs/client/react.mdx +249 -0
  15. package/site/content/docs/elements/ai/agents.mdx +232 -0
  16. package/site/content/docs/elements/ai/index.mdx +341 -0
  17. package/site/content/docs/elements/ai/mcp.mdx +275 -0
  18. package/site/content/docs/elements/ai/meta.json +5 -0
  19. package/site/content/docs/elements/ai/models.mdx +283 -0
  20. package/site/content/docs/elements/ai/prompts.mdx +256 -0
  21. package/site/content/docs/elements/channel/email.mdx +266 -0
  22. package/site/content/docs/elements/channel/index.mdx +344 -0
  23. package/site/content/docs/elements/channel/meta.json +5 -0
  24. package/site/content/docs/elements/channel/push.mdx +218 -0
  25. package/site/content/docs/elements/channel/receipts.mdx +206 -0
  26. package/site/content/docs/elements/channel/sms.mdx +264 -0
  27. package/site/content/docs/elements/channel/whatsapp.mdx +220 -0
  28. package/site/content/docs/elements/clock/index.mdx +300 -0
  29. package/site/content/docs/elements/clock/meta.json +5 -0
  30. package/site/content/docs/elements/clock/schedules.mdx +508 -0
  31. package/site/content/docs/elements/clock/sleep.mdx +445 -0
  32. package/site/content/docs/elements/flow/consumers.mdx +707 -0
  33. package/site/content/docs/elements/flow/http.mdx +1080 -0
  34. package/site/content/docs/elements/flow/index.mdx +618 -0
  35. package/site/content/docs/elements/flow/meta.json +5 -0
  36. package/site/content/docs/elements/flow/routing.mdx +559 -0
  37. package/site/content/docs/elements/flow/workflows.mdx +640 -0
  38. package/site/content/docs/elements/gate/auth.mdx +371 -0
  39. package/site/content/docs/elements/gate/authorization.mdx +298 -0
  40. package/site/content/docs/elements/gate/index.mdx +418 -0
  41. package/site/content/docs/elements/gate/meta.json +5 -0
  42. package/site/content/docs/elements/gate/rate-limits.mdx +365 -0
  43. package/site/content/docs/elements/gate/rls.mdx +303 -0
  44. package/site/content/docs/elements/gate/tenancy.mdx +372 -0
  45. package/site/content/docs/elements/index.mdx +52 -11
  46. package/site/content/docs/elements/signal/broadcast.mdx +517 -0
  47. package/site/content/docs/elements/signal/index.mdx +352 -0
  48. package/site/content/docs/elements/signal/live.mdx +590 -0
  49. package/site/content/docs/elements/signal/meta.json +5 -0
  50. package/site/content/docs/elements/signal/once.mdx +596 -0
  51. package/site/content/docs/elements/store/files.mdx +659 -0
  52. package/site/content/docs/elements/store/index.mdx +310 -0
  53. package/site/content/docs/elements/store/kv.mdx +629 -0
  54. package/site/content/docs/elements/store/meta.json +5 -0
  55. package/site/content/docs/elements/store/search.mdx +946 -0
  56. package/site/content/docs/elements/store/sql.mdx +937 -0
  57. package/site/content/docs/elements/vault/config.mdx +256 -0
  58. package/site/content/docs/elements/vault/index.mdx +356 -0
  59. package/site/content/docs/elements/vault/meta.json +5 -0
  60. package/site/content/docs/elements/vault/rotation.mdx +273 -0
  61. package/site/content/docs/elements/vault/secrets.mdx +285 -0
  62. package/site/content/docs/index.mdx +78 -30
  63. package/site/content/docs/meta.json +11 -8
  64. package/site/content/docs/plugins/cors.mdx +2 -1
  65. package/site/content/docs/plugins/csrf.mdx +4 -1
  66. package/site/content/docs/plugins/headers.mdx +2 -1
  67. package/site/content/docs/plugins/ip-allowlist.mdx +2 -1
  68. package/site/content/docs/plugins/magic-link.mdx +6 -0
  69. package/site/content/docs/plugins/maintenance-mode.mdx +2 -1
  70. package/site/content/docs/plugins/oauth.mdx +1 -1
  71. package/site/content/docs/plugins/otp.mdx +12 -1
  72. package/site/content/docs/plugins/passkey.mdx +39 -15
  73. package/site/content/docs/plugins/two-factor.mdx +91 -34
  74. package/site/content/docs/plugins/username.mdx +1 -1
  75. package/site/content/docs/recipes/caddy.mdx +3 -3
  76. package/site/content/docs/recipes/index.mdx +18 -28
  77. package/site/content/docs/recipes/mailpit.mdx +1 -1
  78. package/site/content/docs/recipes/meilisearch.mdx +3 -3
  79. package/site/content/docs/recipes/meta.json +1 -4
  80. package/site/content/docs/recipes/nginx.mdx +2 -2
  81. package/site/content/docs/recipes/openrouter.mdx +283 -0
  82. package/site/content/docs/recipes/pgdog.mdx +3 -3
  83. package/site/content/docs/recipes/postgres.mdx +1 -2
  84. package/site/content/docs/recipes/rustfs.mdx +2 -2
  85. package/site/content/docs/recipes/traefik.mdx +3 -3
  86. package/site/content/docs/reference/cli.mdx +231 -0
  87. package/site/content/docs/reference/configuration.mdx +30 -10
  88. package/site/content/docs/reference/environment-variables.mdx +93 -20
  89. package/site/content/docs/reference/errors.mdx +132 -29
  90. package/site/content/docs/reference/fx.mdx +137 -73
  91. package/site/content/docs/reference/index.mdx +13 -21
  92. package/site/content/docs/reference/meta.json +4 -5
  93. package/site/content/docs/reference/okid.mdx +42 -17
  94. package/site/content/docs/reference/plugins.mdx +4 -3
  95. package/site/content/docs/reference/security.mdx +197 -0
  96. package/site/content/docs/understand/meta.json +5 -0
  97. package/site/content/docs/understand/the-anatomy.mdx +132 -0
  98. package/site/content/docs/understand/the-model.mdx +32 -0
  99. package/site/content/docs/understand/the-problem.mdx +74 -0
  100. package/site/content/docs/understand/the-vocabulary.mdx +26 -0
  101. package/src/auth/api-keys.ts +2 -1
  102. package/src/auth/bindings.ts +64 -16
  103. package/src/auth/gate-auth.test.ts +6 -1
  104. package/src/auth/identity.ts +152 -5
  105. package/src/auth/index.ts +29 -0
  106. package/src/auth/invites.ts +2 -1
  107. package/src/auth/method-context.ts +41 -0
  108. package/src/auth/oauth-as/crypto.ts +2 -1
  109. package/src/auth/oauth-as/stores.ts +2 -1
  110. package/src/auth/operator.ts +2 -1
  111. package/src/auth/sessions-jwt.test.ts +77 -0
  112. package/src/auth/sessions.ts +20 -4
  113. package/src/auth/tenants.ts +3 -2
  114. package/src/auth/two-factor-challenge.test.ts +61 -0
  115. package/src/auth/two-factor-challenge.ts +284 -0
  116. package/src/auth/verification.ts +5 -0
  117. package/src/bench/REPORT.md +49 -0
  118. package/src/bench/g03-signal-once.bench.ts +1 -1
  119. package/src/bench/g10-observability-contention.bench.ts +1 -1
  120. package/src/bench/g17-hybrid-search.bench.ts +572 -0
  121. package/src/bench/load-app.ts +2 -10
  122. package/src/cli/ai-setup/ai-setup.test.ts +331 -42
  123. package/src/cli/ai-setup/apply.ts +294 -52
  124. package/src/cli/ai-setup/catalog.ts +238 -1342
  125. package/src/cli/ai-setup/index.ts +14 -99
  126. package/src/cli/ai-setup/prompts.ts +60 -443
  127. package/src/cli/ask-seed.test.ts +96 -0
  128. package/src/cli/ask-seed.ts +82 -0
  129. package/src/cli/ask-vault-gaps.test.ts +84 -0
  130. package/src/cli/ask-vault-gaps.ts +146 -0
  131. package/src/cli/build.ts +2 -2
  132. package/src/cli/client-add.test.ts +26 -1
  133. package/src/cli/client-add.ts +106 -27
  134. package/src/cli/competitor-mention-removal.test.ts +1 -1
  135. package/src/cli/db-seed.ts +2 -0
  136. package/src/cli/db.ts +150 -11
  137. package/src/cli/dev.ts +119 -211
  138. package/src/cli/docker-clean.ts +2 -2
  139. package/src/cli/docker-cli.test.ts +1 -1
  140. package/src/cli/doctor-diff.ts +4 -2
  141. package/src/cli/doctor-pii.test.ts +1 -1
  142. package/src/cli/doctor.ts +14 -1
  143. package/src/cli/hero-meta.test.ts +4 -2
  144. package/src/cli/load-config.images.test.ts +8 -10
  145. package/src/cli/load-config.ts +1 -1
  146. package/src/cli/registry.ts +22 -10
  147. package/src/cli/replay.ts +3 -1
  148. package/src/cli/start.ts +1 -1
  149. package/src/cli/tui/keys.ts +2 -3
  150. package/src/client/auth/cookies.ts +74 -0
  151. package/src/client/auth/create-auth-client.ts +636 -0
  152. package/src/client/auth/denials.ts +99 -0
  153. package/src/client/auth/session.ts +283 -0
  154. package/src/client/auth.test.ts +251 -0
  155. package/src/client/auth.ts +39 -114
  156. package/src/client/create-with-session.ts +245 -0
  157. package/src/client/create.ts +51 -5
  158. package/src/client/index.ts +11 -1
  159. package/src/client/live.ts +11 -79
  160. package/src/client/notes-contract.test.ts +5 -10
  161. package/src/client/sse.ts +137 -0
  162. package/src/client/stream.ts +147 -0
  163. package/src/client/transport.test.ts +32 -0
  164. package/src/client/transport.ts +123 -26
  165. package/src/client/types.ts +118 -14
  166. package/src/client-react/index.ts +185 -24
  167. package/src/client-react/use-live-query.ts +13 -3
  168. package/src/compiler/aot.test.ts +7 -4
  169. package/src/compiler/effects-embed.test.ts +56 -0
  170. package/src/compiler/effects-fetch.test.ts +43 -0
  171. package/src/compiler/effects-infer.ts +58 -2
  172. package/src/compiler/extract.test.ts +258 -44
  173. package/src/compiler/extract.ts +566 -48
  174. package/src/compiler/fixtures/skyport/src/flows/bookings/index.ts +7 -4
  175. package/src/compiler/fixtures/skyport/src/flows/bookings/signals.ts +2 -8
  176. package/src/compiler/fixtures/skyport.expected.json +4 -4
  177. package/src/compiler/fixtures/triggers/five-triggers.ts +14 -10
  178. package/src/compiler/response.ts +2 -2
  179. package/src/compiler/search-writer-isolation.test.ts +40 -0
  180. package/src/config/index.ts +11 -0
  181. package/src/console/server/app.ts +17 -23
  182. package/src/console/server/bind.ts +4 -0
  183. package/src/console/server/console.test.ts +2 -2
  184. package/src/console/server/flows-invoke.test.ts +50 -34
  185. package/src/console/server/flows.ts +436 -255
  186. package/src/console/server/runs-ingest.test.ts +6 -3
  187. package/src/console/server/serve.ts +1 -1
  188. package/src/console/server/signals.test.ts +1 -5
  189. package/src/console/server/signals.ts +8 -6
  190. package/src/console/server/state.ts +6 -1
  191. package/src/console/server/store.ts +1 -1
  192. package/src/console/ui-next/dist/assets/FileExportIcon-Ck-5od4R.js +1 -0
  193. package/src/console/ui-next/dist/assets/MoreHorizontalCircle01Icon-gMNGsE37.js +1 -0
  194. package/src/console/ui-next/dist/assets/PlusSignIcon-CwG3nxfu.js +1 -0
  195. package/src/console/ui-next/dist/assets/UnavailableIcon-D9cvHVPr.js +1 -0
  196. package/src/console/ui-next/dist/assets/UserIcon-DaE2PB5_.js +1 -0
  197. package/src/console/ui-next/dist/assets/access-page-DFeymU07.js +4 -0
  198. package/src/console/ui-next/dist/assets/agent-disclosure-U1rdfblp.js +1 -0
  199. package/src/console/ui-next/dist/assets/cache-glyph-BeFJeqBG.js +1 -0
  200. package/src/console/ui-next/dist/assets/call-pii-button-CVAONPii.js +1 -0
  201. package/src/console/ui-next/dist/assets/collapsible-D2A6NJ-3.js +1 -0
  202. package/src/console/ui-next/dist/assets/copy-inline-button-CAYD18cr.js +1 -0
  203. package/src/console/ui-next/dist/assets/dagre.esm-B1_XeuLP.js +1 -0
  204. package/src/console/ui-next/dist/assets/detail-header-DVWNjWjg.js +1 -0
  205. package/src/console/ui-next/dist/assets/dropdown-menu-4h2LOVXM.js +1 -0
  206. package/src/console/ui-next/dist/assets/duration-tone-Cgk_h5ja.js +9 -0
  207. package/src/console/ui-next/dist/assets/element-icons-BI8cJgdh.js +1 -0
  208. package/src/console/ui-next/dist/assets/explorer-empty-CJs5A-wm.js +1 -0
  209. package/src/console/ui-next/dist/assets/flows-page-Dss7941e.js +1 -0
  210. package/src/console/ui-next/dist/assets/highlighted-json-MYZQtRnw.js +154 -0
  211. package/src/console/ui-next/dist/assets/http-method-Jrh39p7A.js +1 -0
  212. package/src/console/ui-next/dist/assets/index-D0zS5rKO.css +2 -0
  213. package/src/console/ui-next/dist/assets/index-DXP2dBIF.js +63 -0
  214. package/src/console/ui-next/dist/assets/observability-page-HvolXxTI.js +4 -0
  215. package/src/console/ui-next/dist/assets/react-dom-Ddte4I-Q.js +9 -0
  216. package/src/console/ui-next/dist/assets/replica-lag-CSh2dzrb.js +18 -0
  217. package/src/console/ui-next/dist/assets/request-meta-BatF8KrK.js +1 -0
  218. package/src/console/ui-next/dist/assets/shortcut-keys-3ILd8oGn.js +1 -0
  219. package/src/console/ui-next/dist/assets/{sql-BskegiFM.js → sql-BsFa4tDR.js} +1 -1
  220. package/src/console/ui-next/dist/assets/store-page-eiKiHnNe.js +41 -0
  221. package/src/console/ui-next/dist/assets/trace-detail-sheet-CZkMeKS-.js +2 -0
  222. package/src/console/ui-next/dist/assets/tree-expand-toggle-CW8y5A2h.js +55 -0
  223. package/src/console/ui-next/dist/assets/units-page-B_RWJrEO.js +1 -0
  224. package/src/console/ui-next/dist/assets/{use-vault-list-uk4WVboC.js → use-vault-list-CT4-gajj.js} +1 -1
  225. package/src/console/ui-next/dist/assets/vault-page-CWrg-A68.js +2 -0
  226. package/src/console/ui-next/dist/assets/xyflow-CSyC6ryz.css +1 -0
  227. package/src/console/ui-next/dist/assets/xyflow-yApv7D4e.js +7 -0
  228. package/src/console/ui-next/dist/index.html +6 -13
  229. package/src/console/ui-next/seed-invoke-host.ts +21 -18
  230. package/src/console/ui-next/src/client.ts +7 -2
  231. package/src/console/ui-next/src/features/flows/graph/element-map.ts +2 -0
  232. package/src/console/ui-next/src/features/flows/traces/effect-kind.ts +12 -2
  233. package/src/console/ui-next/src/features/flows/traces/effect-summary.ts +4 -0
  234. package/src/console/ui-next/src/features/flows/traces/trace-detail-sheet.tsx +8 -0
  235. package/src/console/ui-next/src/features/flows/traces/waterfall-bars.ts +4 -0
  236. package/src/console/ui-next/src/features/flows/traces/waterfall-tooltip.ts +9 -3
  237. package/src/console/ui-next/src/features/store/detail/reveal-cell.tsx +7 -11
  238. package/src/console/ui-next/src/features/store/detail/store-row-detail-sheet.tsx +2 -2
  239. package/src/console/ui-next/src/features/store/lib/fields-from-table.ts +2 -0
  240. package/src/console/ui-next/src/features/store/lib/grid-model.test.ts +25 -1
  241. package/src/console/ui-next/src/features/store/lib/grid-model.ts +36 -1
  242. package/src/console/ui-next/src/features/store/query/query-results.tsx +3 -3
  243. package/src/console/ui-next/src/features/units/detail/effects-summary.tsx +2 -0
  244. package/src/console/ui-next/src/features/units/lib/call-read-safe.ts +3 -1
  245. package/src/console/ui-next/src/features/units/lib/fields-from-schema.ts +6 -0
  246. package/src/docker/ai-model-status.test.ts +1 -12
  247. package/src/docker/ai-model-status.ts +10 -38
  248. package/src/docker/compose-up.test.ts +100 -0
  249. package/src/docker/compose-up.ts +292 -0
  250. package/src/docker/compose.ts +4 -14
  251. package/src/docker/derive.ts +9 -34
  252. package/src/docker/docker.test.ts +16 -261
  253. package/src/docker/images-config.test.ts +13 -25
  254. package/src/docker/index.ts +1 -24
  255. package/src/docker/recipes/index.ts +0 -23
  256. package/src/docker/recipes/pgdog.ts +6 -4
  257. package/src/docker/stack-id.test.ts +2 -2
  258. package/src/docker/stack-id.ts +0 -1
  259. package/src/docker/types.ts +2 -2
  260. package/src/drivers/ai-anthropic.ts +10 -0
  261. package/src/drivers/ai-openai-compatible.ts +34 -7
  262. package/src/drivers/ai-providers.test.ts +0 -107
  263. package/src/drivers/ai-stream.test.ts +0 -34
  264. package/src/drivers/ai-types.ts +17 -8
  265. package/src/drivers/channel-fcm.ts +6 -1
  266. package/src/drivers/channel-msegat.ts +6 -1
  267. package/src/drivers/channel-resend.ts +5 -1
  268. package/src/drivers/channel-smtp.ts +5 -1
  269. package/src/drivers/channel-sndr.ts +10 -1
  270. package/src/drivers/channel-taqnyat-mail.ts +5 -1
  271. package/src/drivers/channel-taqnyat-whatsapp.ts +6 -1
  272. package/src/drivers/channel-taqnyat.ts +6 -1
  273. package/src/drivers/channel-types.ts +10 -0
  274. package/src/drivers/channel-unifonic.ts +6 -1
  275. package/src/drivers/channel-wa-cloud.ts +6 -1
  276. package/src/drivers/channel-webpush.ts +6 -1
  277. package/src/drivers/external.ts +33 -0
  278. package/src/drivers/index.ts +0 -10
  279. package/src/drivers/meilisearch.ts +6 -0
  280. package/src/drivers/oauth-types.ts +4 -0
  281. package/src/drivers/postgres.test.ts +74 -3
  282. package/src/drivers/postgres.ts +175 -6
  283. package/src/drivers/signal-types.ts +5 -5
  284. package/src/drivers/types.ts +7 -0
  285. package/src/drivers/vault-types.ts +5 -0
  286. package/src/elements/ai/declare.ts +17 -4
  287. package/src/elements/ai/eval.ts +1 -1
  288. package/src/elements/ai/mcp-http.ts +1 -1
  289. package/src/elements/ai/pii.ts +1 -1
  290. package/src/elements/ai/providers.test.ts +289 -0
  291. package/src/elements/ai/providers.ts +169 -0
  292. package/src/elements/ai/runtime.ts +68 -5
  293. package/src/elements/ai/schema.ts +2 -2
  294. package/src/elements/ai.test.ts +7 -7
  295. package/src/elements/ai.ts +17 -1
  296. package/src/elements/channel/runtime.ts +105 -12
  297. package/src/elements/clock/cron-fields.test.ts +144 -0
  298. package/src/elements/clock/cron-fields.ts +185 -0
  299. package/src/elements/clock/declare.ts +247 -3
  300. package/src/elements/clock.ts +21 -1
  301. package/src/elements/index.ts +15 -0
  302. package/src/elements/signal/chaos-child.ts +1 -2
  303. package/src/elements/signal/declare.ts +65 -37
  304. package/src/elements/signal/delivery-modes.test.ts +11 -31
  305. package/src/elements/signal/dry-run-replay.test.ts +1 -7
  306. package/src/elements/signal/dry-run-write-isolation.test.ts +1 -7
  307. package/src/elements/signal/key-ordering.test.ts +6 -26
  308. package/src/elements/signal/lease-reclaim.test.ts +2 -6
  309. package/src/elements/signal/optional-emit.test.ts +6 -9
  310. package/src/elements/signal/order-lifecycle.test.ts +4 -17
  311. package/src/elements/signal/orphan-messages.test.ts +4 -15
  312. package/src/elements/signal/reconcile.test.ts +2 -2
  313. package/src/elements/signal/runtime.ts +1 -1
  314. package/src/elements/signal/schema-emit.test.ts +4 -8
  315. package/src/elements/signal.test.ts +24 -49
  316. package/src/elements/signal.ts +9 -2
  317. package/src/elements/store/domain-ddl.test.ts +1 -1
  318. package/src/elements/store/live-http.test.ts +9 -4
  319. package/src/elements/store/prepare-row.test.ts +123 -0
  320. package/src/elements/store/resource.ts +43 -12
  321. package/src/elements/store/schema-decl.ts +117 -0
  322. package/src/elements/store/search-backfill.ts +205 -0
  323. package/src/elements/store/search-bind.ts +66 -0
  324. package/src/elements/store/search-bm25.ts +78 -0
  325. package/src/elements/store/search-ddl.ts +156 -0
  326. package/src/elements/store/search-embed-flow.ts +141 -0
  327. package/src/elements/store/search-errors.ts +34 -0
  328. package/src/elements/store/search-fusion.ts +112 -0
  329. package/src/elements/store/search-lsh.ts +179 -0
  330. package/src/elements/store/search-runtime.ts +300 -0
  331. package/src/elements/store/search.test.ts +144 -0
  332. package/src/elements/store/sql-session.test.ts +1 -0
  333. package/src/elements/store/sql-session.ts +83 -3
  334. package/src/elements/store/table.ts +23 -2
  335. package/src/elements/store/upsert-app.test.ts +1 -3
  336. package/src/elements/store.ts +50 -0
  337. package/src/full.ts +4 -2
  338. package/src/http.ts +4 -1
  339. package/src/i18n/catalogs/ar.ts +14 -6
  340. package/src/i18n/catalogs/en.ts +14 -6
  341. package/src/index.ts +6 -1
  342. package/src/kernel/adopt-barrel-fresh.test.ts +7 -7
  343. package/src/kernel/adopt-routes.ts +9 -1
  344. package/src/kernel/app-auth.ts +5 -0
  345. package/src/kernel/app.ts +102 -9
  346. package/src/kernel/auto-cache.test.ts +6 -12
  347. package/src/kernel/auto-registry.test.ts +3 -3
  348. package/src/kernel/boot-bind/ai.test.ts +22 -19
  349. package/src/kernel/boot-bind/ai.ts +5 -43
  350. package/src/kernel/boot-bind/clock.ts +23 -5
  351. package/src/kernel/boot-bind/honor-config.test.ts +4 -4
  352. package/src/kernel/boot.test.ts +11 -6
  353. package/src/kernel/boot.ts +66 -16
  354. package/src/kernel/boundary-contract.ts +93 -0
  355. package/src/kernel/budget.test.ts +1 -1
  356. package/src/kernel/call.ts +89 -0
  357. package/src/kernel/capability.ts +6 -0
  358. package/src/kernel/client-descriptor.ts +123 -0
  359. package/src/kernel/clock-timezone.test.ts +80 -0
  360. package/src/kernel/correlation.test.ts +1 -1
  361. package/src/kernel/dry-run.ts +11 -8
  362. package/src/kernel/effects-stamping.test.ts +42 -9
  363. package/src/kernel/effects.test.ts +4 -2
  364. package/src/kernel/effects.ts +51 -9
  365. package/src/kernel/errors-channel.ts +17 -0
  366. package/src/kernel/errors-live-resume.ts +3 -2
  367. package/src/kernel/errors-tenant.ts +7 -4
  368. package/src/kernel/errors.registry-helpers.ts +96 -0
  369. package/src/kernel/errors.registry.test.ts +139 -25
  370. package/src/kernel/errors.ts +102 -23
  371. package/src/kernel/external-effects.test.ts +196 -0
  372. package/src/kernel/flow.test.ts +13 -4
  373. package/src/kernel/flow.ts +69 -71
  374. package/src/kernel/fx-ask-telemetry.test.ts +2 -2
  375. package/src/kernel/fx-dead-letters.test.ts +3 -3
  376. package/src/kernel/fx-fetch.ts +55 -0
  377. package/src/kernel/fx-live-stream.ts +2 -2
  378. package/src/kernel/fx-live.test.ts +8 -8
  379. package/src/kernel/fx.test.ts +17 -11
  380. package/src/kernel/fx.ts +180 -57
  381. package/src/kernel/horizontal-child.ts +1 -1
  382. package/src/kernel/http-query.test.ts +3 -6
  383. package/src/kernel/index.ts +13 -3
  384. package/src/kernel/instance-id.ts +1 -1
  385. package/src/kernel/instances.test.ts +40 -0
  386. package/src/kernel/instances.ts +47 -9
  387. package/src/kernel/live-http.test.ts +6 -7
  388. package/src/kernel/live-http.ts +6 -2
  389. package/src/kernel/live-resume.test.ts +1 -1
  390. package/src/kernel/mcp-tool.test.ts +3 -3
  391. package/src/kernel/on.ts +98 -4
  392. package/src/kernel/pipeline.test.ts +12 -15
  393. package/src/kernel/plugin-elements.test.ts +1 -1
  394. package/src/kernel/stamp-http.test.ts +3 -3
  395. package/src/kernel/triggers.ts +210 -95
  396. package/src/kernel-entry.ts +0 -1
  397. package/src/manifest/diff.ts +11 -1
  398. package/src/manifest/fixtures/skyport.excerpt.json +1 -1
  399. package/src/manifest/types.ts +46 -2
  400. package/src/mcp/docs-index.ts +3 -3
  401. package/src/mcp/docs-mcp.test.ts +2 -2
  402. package/src/mcp/docs-tools.ts +1 -1
  403. package/src/okid.test.ts +56 -0
  404. package/src/okid.ts +55 -11
  405. package/src/plugins/anonymous.ts +8 -4
  406. package/src/plugins/auth/shared.ts +27 -3
  407. package/src/plugins/auth-delivery.mailpit.integration.test.ts +1 -1
  408. package/src/plugins/auth-methods.security.test.ts +561 -23
  409. package/src/plugins/config-source.ts +1 -1
  410. package/src/plugins/csrf.test.ts +65 -0
  411. package/src/plugins/index.ts +2 -0
  412. package/src/plugins/magic-link.ts +36 -16
  413. package/src/plugins/oauth/shared.ts +3 -1
  414. package/src/plugins/oauth.ts +22 -14
  415. package/src/plugins/otp.ts +37 -21
  416. package/src/plugins/passkey-webauthn.ts +9 -6
  417. package/src/plugins/passkey.ts +98 -26
  418. package/src/plugins/pre-account-hijack.test.ts +223 -0
  419. package/src/plugins/two-factor.ts +466 -37
  420. package/src/plugins/username.ts +19 -7
  421. package/src/release/build-lib.ts +1 -0
  422. package/src/release/limits.ts +2 -2
  423. package/src/release/measure.ts +1 -1
  424. package/src/runs/collect.test.ts +0 -2
  425. package/src/runtime/json-code-block.test.ts +250 -20
  426. package/src/runtime/json-code-block.ts +1261 -41
  427. package/src/term.test.ts +1 -1
  428. package/src/test/create-test-app.test.ts +12 -12
  429. package/src/test/live-signals.test.ts +6 -6
  430. package/src/test/provisions.integration.test.ts +10 -14
  431. package/src/test/reset-element-registries.ts +1 -1
  432. package/src/test/tenant-isolation.test.ts +12 -6
  433. package/site/content/docs/deployment/docker-swarm.mdx +0 -164
  434. package/site/content/docs/deployment/docker.mdx +0 -227
  435. package/site/content/docs/deployment/index.mdx +0 -83
  436. package/site/content/docs/deployment/kubernetes.mdx +0 -176
  437. package/site/content/docs/deployment/meta.json +0 -5
  438. package/site/content/docs/deployment/reverse-proxy.mdx +0 -234
  439. package/site/content/docs/elements/ai.mdx +0 -385
  440. package/site/content/docs/elements/channel.mdx +0 -346
  441. package/site/content/docs/elements/clock.mdx +0 -244
  442. package/site/content/docs/elements/flow.mdx +0 -420
  443. package/site/content/docs/elements/gate.mdx +0 -436
  444. package/site/content/docs/elements/signal.mdx +0 -380
  445. package/site/content/docs/elements/store.mdx +0 -1099
  446. package/site/content/docs/elements/vault.mdx +0 -405
  447. package/site/content/docs/get-started/basic-usage.mdx +0 -173
  448. package/site/content/docs/get-started/index.mdx +0 -43
  449. package/site/content/docs/get-started/installation.mdx +0 -220
  450. package/site/content/docs/get-started/introduction.mdx +0 -132
  451. package/site/content/docs/get-started/meta.json +0 -13
  452. package/site/content/docs/get-started/project-structure.mdx +0 -925
  453. package/site/content/docs/get-started/testing.mdx +0 -328
  454. package/site/content/docs/get-started/why.mdx +0 -162
  455. package/site/content/docs/recipes/llama-cpp.mdx +0 -151
  456. package/site/content/docs/recipes/ollama.mdx +0 -142
  457. package/site/content/docs/recipes/sglang.mdx +0 -105
  458. package/site/content/docs/recipes/vllm.mdx +0 -106
  459. package/site/content/docs/reference/cli.md +0 -232
  460. package/site/content/docs/reference/client.mdx +0 -469
  461. package/site/content/docs/reference/security.md +0 -74
  462. package/src/cli/ai-setup/detect-ollama.ts +0 -213
  463. package/src/cli/ai-setup/recommend.test.ts +0 -225
  464. package/src/cli/ai-setup/recommend.ts +0 -225
  465. package/src/cli/dev-controls.test.ts +0 -122
  466. package/src/cli/dev-controls.ts +0 -164
  467. package/src/cli/tui/DevLive.tsx +0 -126
  468. package/src/console/ui-next/dist/assets/access-page-De7Lc2JC.js +0 -4
  469. package/src/console/ui-next/dist/assets/agent-disclosure-BP0Y0Sux.js +0 -1
  470. package/src/console/ui-next/dist/assets/cache-glyph-B5X-NM0-.js +0 -1
  471. package/src/console/ui-next/dist/assets/call-pii-button-ChAUiLo9.js +0 -1
  472. package/src/console/ui-next/dist/assets/collapsible-DGnOM2ph.js +0 -1
  473. package/src/console/ui-next/dist/assets/copy-inline-button-DBHhgHKP.js +0 -1
  474. package/src/console/ui-next/dist/assets/dagre.esm-ZwcdTuZZ.js +0 -1
  475. package/src/console/ui-next/dist/assets/detail-header-DhHM1iaZ.js +0 -1
  476. package/src/console/ui-next/dist/assets/dropdown-menu-_NjTEo5_.js +0 -1
  477. package/src/console/ui-next/dist/assets/duration-tone-sC3lGABz.js +0 -9
  478. package/src/console/ui-next/dist/assets/element-icons-BVXtRyd3.js +0 -1
  479. package/src/console/ui-next/dist/assets/explorer-empty-2uIhBu0_.js +0 -1
  480. package/src/console/ui-next/dist/assets/flows-page-RGy7VEA_.js +0 -1
  481. package/src/console/ui-next/dist/assets/highlighted-json-Awq7gYdu.js +0 -154
  482. package/src/console/ui-next/dist/assets/http-method-_UHM2ODJ.js +0 -1
  483. package/src/console/ui-next/dist/assets/index-Ck88Jmv8.css +0 -2
  484. package/src/console/ui-next/dist/assets/index-_rgpdVzo.js +0 -66
  485. package/src/console/ui-next/dist/assets/link-BX6Vqztd.js +0 -1
  486. package/src/console/ui-next/dist/assets/observability-page-Ds6pcnh-.js +0 -4
  487. package/src/console/ui-next/dist/assets/preload-helper-oH4irX4C.js +0 -1
  488. package/src/console/ui-next/dist/assets/react-D8E3mtu1.js +0 -1
  489. package/src/console/ui-next/dist/assets/react-dom-Bph1y7z7.js +0 -9
  490. package/src/console/ui-next/dist/assets/replica-lag-DKRrbvdo.js +0 -18
  491. package/src/console/ui-next/dist/assets/request-meta-DV0ywz7t.js +0 -1
  492. package/src/console/ui-next/dist/assets/shortcut-JQIZlWfm.js +0 -1
  493. package/src/console/ui-next/dist/assets/shortcut-keys-DKxNTe_m.js +0 -1
  494. package/src/console/ui-next/dist/assets/skeleton-D-czQJT6.js +0 -1
  495. package/src/console/ui-next/dist/assets/store-page-02xOiqIK.js +0 -41
  496. package/src/console/ui-next/dist/assets/trace-detail-sheet-B09O8rA6.js +0 -2
  497. package/src/console/ui-next/dist/assets/tree-expand-toggle-BtyhmWb4.js +0 -55
  498. package/src/console/ui-next/dist/assets/units-page-4rHOePuE.js +0 -1
  499. package/src/console/ui-next/dist/assets/useMutation-B8EO02Ej.js +0 -1
  500. package/src/console/ui-next/dist/assets/useRender-BE2A9BWC.js +0 -1
  501. package/src/console/ui-next/dist/assets/vault-page-DISPgxLM.js +0 -2
  502. package/src/console/ui-next/dist/assets/xyflow-D7n4g6go.js +0 -7
  503. package/src/console/ui-next/dist/assets/xyflow-DZ0Ws1xk.css +0 -1
  504. package/src/docker/ollama-pull.ts +0 -232
  505. package/src/docker/recipes/llama-cpp.ts +0 -298
  506. package/src/docker/recipes/ollama.ts +0 -44
  507. package/src/docker/recipes/sglang.ts +0 -55
  508. package/src/docker/recipes/vllm.ts +0 -44
  509. package/src/drivers/ai-ollama-tools.integration.test.ts +0 -109
  510. package/src/drivers/ai-ollama.integration.test.ts +0 -184
  511. package/src/drivers/ai-ollama.ts +0 -389
  512. package/src/drivers/ollama.ts +0 -14
@@ -1,142 +0,0 @@
1
- ---
2
- title: "Ollama"
3
- description: "Fully supported local AI alternative — OKE_AI_URL, pinned ≥ 0.17.1, loopback-only publish, library models only."
4
- icon: "Bot"
5
- source: "docs/spec/unified-theory.md"
6
- ---
7
-
8
- Ollama remains a **fully supported** local model server (not deprecated). The
9
- default local pin is [llama.cpp](/docs/recipes/llama-cpp); choose Ollama when you
10
- want its library pull UX. Pin `images.ai` and set `drivers.ai` to `ollama`.
11
-
12
- <Callout title="The one rule">
13
- Pin ≥ `0.17.1` (never `latest`), publish only on loopback, and load models only from Ollama’s
14
- library — never arbitrary untrusted GGUF via `/api/create`.
15
- </Callout>
16
-
17
- ## Quick start
18
-
19
- <Steps>
20
-
21
- <Step>
22
- ### Pin driver + image
23
-
24
- ```typescript title="oke.config.ts"
25
- drivers: {
26
- ai: { dev: "ollama", test: "mock", prod: "ollama" }, // or set prod deliberately
27
- },
28
- images: {
29
- ai: "ollama/ollama:0.32.13", // never :latest — floor 0.17.1 (CVE-2026-7482)
30
- },
31
- ```
32
-
33
- Or run `oke ai setup --provider ollama --yes`.
34
-
35
- </Step>
36
-
37
- <Step>
38
- ### Env written by the stack
39
-
40
- ```bash title=".env.local"
41
- OKE_AI_URL=http://127.0.0.1:11434
42
- OKE_AI_MODEL=qwen3.5:9b
43
- ```
44
-
45
- Host publish is `127.0.0.1:11434:11434`. Inside the container
46
- `OLLAMA_HOST=0.0.0.0:11434` so Docker networking works.
47
-
48
- </Step>
49
-
50
- <Step>
51
- ### Boot pulls against the container API
52
-
53
- After compose is healthy, `oke dev -d` shows `OKE_AI_MODEL` in the hero / Docker
54
- summary, POSTs `/api/pull` to **this container’s**
55
- loopback URL when the recipe is Ollama — never a host `ollama` CLI.
56
-
57
- </Step>
58
-
59
- </Steps>
60
-
61
- ## Security (hard requirements)
62
-
63
- | Control | Requirement |
64
- | -------------- | -------------------------------------------------------------------------- |
65
- | Host publish | `127.0.0.1:11434:11434` only — never `0.0.0.0` |
66
- | Image pin | Explicit tag ≥ **0.17.1** (CVE-2026-7482); never `latest` |
67
- | Model source | [Ollama library](https://ollama.com/library) only |
68
- | Untrusted GGUF | **Forbidden** — `/api/create` with crafted files is the CVE-2026-7482 path |
69
-
70
- Ollama and llama.cpp share GGUF-parser risk; Ollama also has its own Go loader
71
- CVE. Network exposure of `:11434` turns that into a remote attack.
72
-
73
- <Callout type="warn" title="Host `ollama` CLI is unrelated">
74
- A host `ollama pull` often talks to a separately installed daemon. Trust boot ensure against
75
- `OKE_AI_URL`.
76
- </Callout>
77
-
78
- ## Required env
79
-
80
- | Variable | Required? | Meaning |
81
- | -------------------------------------------- | ----------------- | ------------------------------------------------------------------ |
82
- | `OKE_AI_URL` | **Yes** in docker | Base URL — `oke boot: ollama driver needs OKE_AI_URL` when missing |
83
- | `OKE_AI_MODEL` | Recommended | Model tag to pull/serve (default `qwen3.5:9b`) |
84
- | `OLLAMA_HOST` | Set by recipe | `0.0.0.0:11434` inside the container |
85
- | `OKE_AI_VISION_MODEL` / `OKE_AI_EMBED_MODEL` | Optional | Written by `oke ai setup` for logical models |
86
-
87
- ## Data and backup
88
-
89
- | Volume | Path | What it stores |
90
- | --------- | --------------- | -------------------------------------- |
91
- | `ai-data` | `/root/.ollama` | Pulled model weights + Ollama metadata |
92
-
93
- ## Production note
94
-
95
- Local Ollama is for docker/dev (and air-gapped prod you deliberately choose).
96
- For multi-user GPU self-hosting see [vLLM](/docs/recipes/vllm) /
97
- [SGLang](/docs/recipes/sglang). Cloud drivers stay separate.
98
-
99
- PII egress rules treat `ollama` as local — see [AI · PII](/docs/elements/ai).
100
-
101
- ## What the recipe configures
102
-
103
- | Field | Value |
104
- | -------------- | ---------------------------------------------- |
105
- | Container port | `11434` |
106
- | Host publish | `127.0.0.1:11434:11434` |
107
- | Entrypoint | Image default (`ollama serve`) |
108
- | Healthcheck | `ollama list`, every 5s, 24 retries, 10s start |
109
- | Connection URL | `http://host:11434` |
110
- | Model pull | Host-side `POST /api/pull` after healthy |
111
-
112
- ## Troubleshooting
113
-
114
- <Accordions>
115
- <Accordion title="oke boot: ollama driver needs OKE_AI_URL">
116
-
117
- Docker mode expects `OKE_AI_URL` from `.env.local` when `images.ai` is pinned.
118
- Locally the default is `http://127.0.0.1:11434`. Prefer `oke ai setup` to wire everything
119
- in one pass.
120
-
121
- </Accordion>
122
- <Accordion title="Model missing / I already ran ollama pull on the host">
123
-
124
- The host CLI likely filled a **different** Ollama. Check `GET $OKE_AI_URL/api/tags`,
125
- then recreate with `oke dev -d`.
126
-
127
- </Accordion>
128
- </Accordions>
129
-
130
- ## Learn more
131
-
132
- - [llama.cpp](/docs/recipes/llama-cpp) — default local AI
133
- - [AI](/docs/elements/ai) — `fx.ask`, prompts, evals
134
- - [CLI · oke ai setup](/docs/reference/cli) — non-interactive provider wiring
135
-
136
- ## Next
137
-
138
- <Cards>
139
- <Card title="llama.cpp" description="Default local AI." href="/docs/recipes/llama-cpp" />
140
- <Card title="Meilisearch" description="Full-text index peer." href="/docs/recipes/meilisearch" />
141
- <Card title="AI" description="Prompts, models, guardrails." href="/docs/elements/ai" />
142
- </Cards>
@@ -1,105 +0,0 @@
1
- ---
2
- title: "SGLang"
3
- description: "Production-tier self-hosted inference for structured and agent workloads on GPU."
4
- icon: "Cpu"
5
- source: "docs/spec/unified-theory.md"
6
- ---
7
-
8
- SGLang is for **structured generation and agent-heavy workloads on real GPU
9
- hardware** when you self-host inference. Prefer a managed provider for most
10
- production apps. For general multi-user serving, prefer [vLLM](/docs/recipes/vllm).
11
-
12
- <Callout title="The one rule">
13
- Pin an explicit runtime tag (never `latest`), publish only on loopback, and pick SGLang only when
14
- structured / agent throughput is the reason you self-host.
15
- </Callout>
16
-
17
- ## Quick start
18
-
19
- <Steps>
20
-
21
- <Step>
22
- ### Pin driver + image
23
-
24
- ```typescript title="oke.config.ts"
25
- drivers: {
26
- ai: { dev: "openai-compatible", test: "mock", prod: "openai-compatible" },
27
- },
28
- images: {
29
- ai: "lmsysorg/sglang:v0.5.17-runtime", // never :latest
30
- },
31
- ```
32
-
33
- Or `oke ai setup --provider sglang --yes`.
34
-
35
- </Step>
36
-
37
- <Step>
38
- ### Env + GPU
39
-
40
- ```bash title=".env.local"
41
- OKE_AI_URL=http://127.0.0.1:30000/v1
42
- OKE_AI_MODEL=Qwen/Qwen3-0.6B
43
- ```
44
-
45
- Same NVIDIA reservation pattern as vLLM (`ipc: host` + device reservation).
46
-
47
- </Step>
48
-
49
- <Step>
50
- ### Decision matrix
51
-
52
- | Workload | Recipe |
53
- | -------------------------------- | -------------------------------------------------------------------------------- |
54
- | Single-user / dev | [llama.cpp](/docs/recipes/llama-cpp) (default) or [Ollama](/docs/recipes/ollama) |
55
- | Multi-user GPU serving | [vLLM](/docs/recipes/vllm) |
56
- | Structured / agent GPU workloads | **SGLang** (this recipe) |
57
- | Managed cloud | Anthropic / OpenAI / … |
58
-
59
- </Step>
60
-
61
- </Steps>
62
-
63
- ## Security
64
-
65
- | Control | Requirement |
66
- | ------------ | ---------------------------------------------- |
67
- | Host publish | `127.0.0.1:30000:30000` only — never `0.0.0.0` |
68
- | Image pin | Explicit version tag — never `latest` |
69
- | Model source | Trusted Hugging Face repos / your own weights |
70
-
71
- ## What the recipe configures
72
-
73
- | Field | Value |
74
- | -------------- | ----------------------------------------------------- |
75
- | Container port | `30000` |
76
- | Host publish | `127.0.0.1:30000:30000` |
77
- | `ipc` | `host` |
78
- | GPU | `deploy.resources.reservations.devices` (nvidia, all) |
79
- | Healthcheck | `GET /health`, long start period for model load |
80
- | Connection URL | `http://host:30000/v1` |
81
-
82
- ## Troubleshooting
83
-
84
- <Accordions>
85
- <Accordion title="GPU not visible / container exits">
86
-
87
- Install the NVIDIA Container Toolkit. Without a GPU, use
88
- [llama.cpp](/docs/recipes/llama-cpp) for local smoke tests.
89
-
90
- </Accordion>
91
- </Accordions>
92
-
93
- ## Learn more
94
-
95
- - [vLLM](/docs/recipes/vllm) — general production GPU serving
96
- - [llama.cpp](/docs/recipes/llama-cpp) — default local AI
97
- - [AI](/docs/elements/ai) — drivers and `fx.ask`
98
-
99
- ## Next
100
-
101
- <Cards>
102
- <Card title="vLLM" description="General multi-user GPU serving." href="/docs/recipes/vllm" />
103
- <Card title="llama.cpp" description="Default local AI." href="/docs/recipes/llama-cpp" />
104
- <Card title="AI" description="Prompts and guardrails." href="/docs/elements/ai" />
105
- </Cards>
@@ -1,106 +0,0 @@
1
- ---
2
- title: "vLLM"
3
- description: "Production-tier self-hosted inference — OpenAI-compatible GPU serving when you run inference yourself."
4
- icon: "Cpu"
5
- source: "docs/spec/unified-theory.md"
6
- ---
7
-
8
- vLLM is for **multi-user / production concurrency on real GPU hardware** when
9
- you choose to self-host inference instead of a managed provider. Driver id stays
10
- `openai-compatible`. Most apps should prefer Anthropic / OpenAI / … in prod.
11
-
12
- <Callout title="The one rule">
13
- Pin an explicit image tag (never `latest`), publish only on loopback, and treat this as “I run
14
- production inference myself” — not the default create path.
15
- </Callout>
16
-
17
- ## Quick start
18
-
19
- <Steps>
20
-
21
- <Step>
22
- ### Pin driver + image
23
-
24
- ```typescript title="oke.config.ts"
25
- drivers: {
26
- ai: { dev: "openai-compatible", test: "mock", prod: "openai-compatible" },
27
- },
28
- images: {
29
- ai: "vllm/vllm-openai:v0.27.1", // never :latest
30
- },
31
- ```
32
-
33
- Or `oke ai setup --provider vllm --yes`.
34
-
35
- </Step>
36
-
37
- <Step>
38
- ### Env + GPU
39
-
40
- ```bash title=".env.local"
41
- OKE_AI_URL=http://127.0.0.1:8000/v1
42
- OKE_AI_MODEL=Qwen/Qwen3-0.6B
43
- ```
44
-
45
- The recipe sets `ipc: host` and an NVIDIA device reservation. Host needs the
46
- NVIDIA Container Toolkit.
47
-
48
- </Step>
49
-
50
- <Step>
51
- ### Decide deliberately
52
-
53
- | Path | When |
54
- | ------------------------------------ | -------------------------------------------- |
55
- | Managed provider | Default for most production apps |
56
- | **vLLM** (this recipe) | Self-hosted multi-user GPU serving |
57
- | [SGLang](/docs/recipes/sglang) | Self-hosted structured / agent GPU workloads |
58
- | [llama.cpp](/docs/recipes/llama-cpp) | Single-user / dev (default local) |
59
-
60
- </Step>
61
-
62
- </Steps>
63
-
64
- ## Security
65
-
66
- | Control | Requirement |
67
- | ------------ | --------------------------------------------- |
68
- | Host publish | `127.0.0.1:8000:8000` only — never `0.0.0.0` |
69
- | Image pin | Explicit version tag — never `latest` |
70
- | Model source | Trusted Hugging Face repos / your own weights |
71
-
72
- ## What the recipe configures
73
-
74
- | Field | Value |
75
- | -------------- | ----------------------------------------------------- |
76
- | Container port | `8000` |
77
- | Host publish | `127.0.0.1:8000:8000` |
78
- | `ipc` | `host` |
79
- | GPU | `deploy.resources.reservations.devices` (nvidia, all) |
80
- | Healthcheck | `GET /health`, long start period for model load |
81
- | Connection URL | `http://host:8000/v1` |
82
-
83
- ## Troubleshooting
84
-
85
- <Accordions>
86
- <Accordion title="GPU not visible / container exits">
87
-
88
- Install the NVIDIA Container Toolkit on the host. CPU-only hosts should use
89
- [llama.cpp](/docs/recipes/llama-cpp) or [Ollama](/docs/recipes/ollama) instead.
90
-
91
- </Accordion>
92
- </Accordions>
93
-
94
- ## Learn more
95
-
96
- - [llama.cpp](/docs/recipes/llama-cpp) — default local AI
97
- - [SGLang](/docs/recipes/sglang) — structured / agent GPU path
98
- - [AI](/docs/elements/ai) — drivers and `fx.ask`
99
-
100
- ## Next
101
-
102
- <Cards>
103
- <Card title="SGLang" description="Agent / structured GPU serving." href="/docs/recipes/sglang" />
104
- <Card title="llama.cpp" description="Default local AI." href="/docs/recipes/llama-cpp" />
105
- <Card title="AI" description="Prompts and guardrails." href="/docs/elements/ai" />
106
- </Cards>
@@ -1,232 +0,0 @@
1
- ---
2
- title: "CLI Reference"
3
- description: "oke and create-oke — everyday commands and flags."
4
- icon: "Terminal"
5
- source: "docs/cli.md"
6
- ---
7
-
8
- ### Commands
9
-
10
- ```bash
11
- bun add okengine # ONE package (project)
12
- bun install -g okengine # global `oke` on PATH
13
-
14
- oke # interactive TUI (TTY) — Dashboard · Dev · Database · Docker · Navigator
15
- oke --tui # force TUI even when other args were passed
16
- oke --help # command list (also what bare `oke` prints when non-TTY / CI)
17
-
18
- oke dev # watch · hot reload · Console :6533 · app :6530 · MCP :6535 · docs MCP :6536
19
- # → always Docker Compose under docker/ + host Bun
20
- # → regenerates flows/generated.ts when the flows tree changes
21
- # → client types + domain schema push on save
22
- # → Console UI hot-reloads from source (okengine checkout; no bun run build)
23
- oke dev --no-db-push # opt out of auto oke db push on schema input save
24
- oke dev -d store.sql,signal # optional role filter (still Compose; requires Docker)
25
- oke test # bun test with PGLite posture (NODE_ENV=test, OKE_PGLITE_URL=memory://)
26
- # → does not start Docker Compose
27
- oke mode # removed — prints error; use oke dev (Compose) / oke test (PGLite)
28
-
29
- oke start # runs exactly what production runs (this is the Docker CMD)
30
- oke doctor # verify secrets, ports, drivers, tenancy, schema drift, FD headroom,
31
- # CDC outbox backlog/retention, live fan-out pressure
32
- oke console claim-code # print setup claim code from .oke/claim-code (after Console boot)
33
- # → `bun run dev:console` boots kernel + Vite with a fixed
34
- # operator (`dev@oke.dev` / `Okengine123!`) — Sign in (prefilled)
35
- # → `bun run dev:console:seed` same + keel PM (all 8 elements) + ~80 traces
36
- # + 500+ tasks + full CRUD / custom HTTP (GET·POST·PUT·PATCH·DELETE·HEAD·QUERY)
37
- # + app Gate auth / oke_* system tables
38
- # (form/github→tasks.create→notify chain, work-management
39
- # SQL/KV/files/index; `oke_console` is Console operators);
40
- # click Traces row → highlight chain on the radial hub;
41
- # click a unit / element disc → 1-hop neighborhood + filter runs;
42
- # Replay → waterfall playhead + chain pulse on the graph)
43
- # → `bun run dev:console:fresh` / `:fresh:seed` — claim from scratch
44
- # (no fixed operator; claim code printed in the boot log)
45
- # → after `bun run test:console:setup`, open the HTML report:
46
- # `bun run test:console:setup:report` (trace + screenshots + video)
47
- oke stack # preview resolved images/tags/ports — writes nothing
48
-
49
- oke schema generate # core + plugin stubs → .oke/schema/oke.ts (--check in CI)
50
- oke db push # domain schema.ts → live DB (dev; drizzle-kit)
51
- oke db generate # versioned SQL under drizzle/ (review)
52
- oke db migrate # apply migrations (explicit; never auto in prod)
53
- oke db seed # this app's defineSeed (name + essential + env) — standard CLI path
54
- oke db seed --env prod --force # CI: skip prod confirmation prompt
55
- oke db studio # drizzle-kit Studio (long-running)
56
- oke vault set STRIPE_KEY # also: list · import .env · key rotate
57
- oke client add <url> # types for a separate frontend repo
58
-
59
- oke docker # docker/Dockerfile + docker-compose.yml (prod-grade; 4 CPU / 8 GiB budget)
60
- oke docker --split # layered compose.yml + compose.<role>.yml + compose.prod.yml
61
- oke docker --stack # docker-stack.yml for docker stack deploy
62
- oke docker --cpus 8 --memory 16 # override host budget used for deploy.resources
63
- oke docker --no-prod # skip readiness / deploy / resource budget
64
- oke docker clean # TTY: pick oke-dev-* projects → down -v (containers, networks, volumes)
65
- oke docker clean --yes # non-TTY: current project only
66
- oke docker clean --all --yes # non-TTY: every oke-dev-* project on this machine
67
- oke images pin # tags → digests in oke.images.lock
68
-
69
- oke build --target edge # < 16 kB kernel profile
70
- oke eval # run prompt eval sets; fails CI on regression
71
- oke ai setup # configure AI driver + models (TTY wizard or flags)
72
- oke branch prod --at "yesterday" # fork journaled state into a sandbox
73
- oke replay --request-id <id> # re-invoke a past Flow from a Runs WideEvent (dry-run if send/ask)
74
- oke privacy erase --subject <id> # crypto-shredding: deletes the key, not the terabytes
75
- oke upgrade # run codemods for a breaking change, print the diff
76
- ```
77
-
78
- `oke replay` loads a Runs WideEvent by id and re-enters the Flow with stored
79
- input. Defaults to dry-run when the ledger has `send` / `ask` (pass `--live`
80
- to override). Needs a build that persisted `WideEvent.input`. Console Traces
81
- Replay (`POST /console/traces/replay`) uses the same `runReplay` path.
82
-
83
- `oke dev` request lines print the WideEvent / run id after the timestamp.
84
- Paste it into Traces or `oke replay --request-id`.
85
-
86
- `oke dev` bridges host-app WideEvents into Console Traces: the CLI starts
87
- Console first, mints a loopback ingest secret, and sets `OKE_RUNS_INGEST_URL` /
88
- `OKE_RUNS_INGEST_SECRET` on the host child so every recorded run POSTs to
89
- `POST /console/runs/ingest`. Console appends into its own runs store (live
90
- `feedRun` → PII-masked `projectRun` for `GET /console/runs` and
91
- `/console/live`). `listRuns` also reads host Parquet at `.oke/runs`, so
92
- Traces survive a Console restart. Production recording stays opt-in —
93
- `oke start` does not enable the bridge; set `oke({ runs })` or
94
- `drivers.runs` explicitly. `oke replay` reads the same `.oke/runs` tree.
95
-
96
- In development, app, Console, MCP, and docs MCP prefer the canonical ports and move upward
97
- when occupied. Docker infrastructure uses stable per-project offsets in disjoint ranges for
98
- each built-in service, preventing one service's offset port from overlapping another's.
99
-
100
- Bare `oke` on a TTY opens an Ink interactive shell (optional deps `ink` +
101
- `react`). The viewport is cleared before render so boot logs never sit above the
102
- frame. Chrome matches `oke dev`: green OKE wordmark on Dashboard, green active
103
- tabs, cyan focus rows. Panels cover live ports (App / Console / MCP / Docs MCP),
104
- Dev start/stop/attach with live logs, Database action cards (including Studio),
105
- Docker compose status, and a Manifest navigator. **Tab** / **←→** (on the tab
106
- strip) switch panels; **↑↓** navigate inside a panel; **Esc** returns to the tab
107
- strip, then confirms quit when a managed `oke dev` is running; **1–5** jump
108
- panels from any focus. Press `/` for the **command palette** (Tab autofill,
109
- Enter runs `oke …`; status shows in the global footer). If `oke dev` is already
110
- running, the TUI shows **Connected** via `.oke/dev.json` + port probes and will
111
- not spawn a second stack. Non-TTY / CI keeps the classic help listing
112
- (`EXIT_USAGE`).
113
-
114
- `oke dev` always starts Compose (requires a running Docker daemon). Boot chrome
115
- prints immediately (wordmark + Starting + profile), then streams background work
116
- (compose up, vault, per-service health, AI probe). Status ● is green ready ·
117
- yellow pending/loading · red error · dim idle. After bind, Backend · Console ·
118
- MCP · Docs MCP each get a box (URL + one-line purpose). Compose health keeps polling
119
- (`docker compose ps -a`); AI ● tracks model phase while the AI container is up.
120
- Boot does not wait for the model to become ready. A successful session writes
121
- `.oke/dev.json` (pid · ports · startedAt) and clears it on stop. Durable local
122
- markers live in `.oke/state.json` — not in the session lock. Console session signing uses
123
- `.oke/console.secret` (or `OKE_CONSOLE_SECRET`); that is not a Vault secret.
124
-
125
- On a TTY, Ink keyboard controls stay active after boot (`useInput` — same
126
- shortcuts as before). Press `r` to clear the log pane and reprint the latest
127
- board.
128
-
129
- | Key | Action |
130
- | --- | ----------------------------------- |
131
- | `?` | help |
132
- | `r` | refresh — clear logs, show latest ● |
133
- | `s` | `oke db seed` |
134
- | `q` | quit `oke dev` |
135
- | `u` | compose up (whole stack) |
136
- | `x` | compose stop (whole stack) |
137
-
138
- Compose stays quiet unless it fails. Process-local boot notices print once under
139
- the hero (not once per process).
140
-
141
- `oke test` sets `NODE_ENV=test` and `OKE_PGLITE_URL=memory://` when unset, checks
142
- that `@electric-sql/pglite` resolves, then forwards argv to `bun test`.
143
-
144
- `oke mode` and `oke dev --local` / `-l` are removed — they exit with an error.
145
- Rename the env keys in `oke.config.ts` to `dev` / `test` / `prod`.
146
-
147
- ### create-oke
148
-
149
- ```bash
150
- bunx create-oke@latest my-app # TTY: template → recommended / reuse / customize
151
- bunx create-oke@latest my-app --template advanced
152
- bunx create-oke@latest my-app --yes # non-interactive recommended defaults
153
- bunx create-oke@latest my-app --sql postgres
154
- bunx create-oke@latest my-app --ai # AI model wizard before install
155
- bunx create-oke@latest my-app --no-ai
156
- ```
157
-
158
- On a TTY: pick **standard** or **advanced**, then recommended defaults or
159
- customize. Customize walks **Docker-first** facets once (including `store.index`
160
- with a `none` opt-out), then **AI setup**: Recommended (llama.cpp) · Customize ·
161
- Off. Writes user-global `~/.oke/create-defaults.json` (reuse only when `template`
162
- matches). Recommended / customize also ask locales, PgDog, and reverse proxy
163
- (Caddy / Traefik / nginx / No); **reuse** applies the saved answers without
164
- re-asking. Flags: `--locales`, `--pgdog` / `--no-pgdog`, `--proxy` /
165
- `--no-proxy`. Non-TTY / `--yes` / explicit `--template` never prompt.
166
-
167
- ### Additional commands
168
-
169
- ```bash
170
- oke doctor --diff # CI gate: undeclared Manifest contract breaks
171
- oke doctor --json # -j JSON on stdout; hints on stderr (agents / MCP)
172
- oke stack --json # -j
173
- oke images list # recipe · image · tag · digest · size (--json|-j)
174
- oke gates list # Module:Action catalogue (--json|-j)
175
- oke console claim-code # first-admin claim from .oke/claim-code (--json|-j)
176
- oke ai setup --provider llama-cpp --yes # default local AI
177
- oke ai setup --provider ollama --yes # fully supported alternative
178
- # TTY: llama.cpp / Ollama → banner · tiers · manual; vLLM / SGLang / cloud → model
179
- ```
180
-
181
- ### Shell completion
182
-
183
- Generated from the command registry — not a hand-maintained script:
184
-
185
- ```bash
186
- eval "$(oke completion bash)"
187
- eval "$(oke completion zsh)"
188
- oke completion fish | source
189
- ```
190
-
191
- ### Short flags
192
-
193
- Long form is canonical in docs; short form is convenience only. Shared letters follow git’s pattern (different meanings on different subcommands — e.g. `-c` is `--check` on `schema generate`, `--config` on `stack` / `docker` / `images`).
194
-
195
- | Long | Short | Where |
196
- | -------------------- | ----- | -------------------------------------------------------------------- |
197
- | `--docker` | `-d` | `dev` (optional Compose **role filter**) |
198
- | `--no-db-push` | | `dev` |
199
- | `--prod` | `-p` | `docker` |
200
- | `--yes` | `-y` | `docker clean` |
201
- | `--all` | | `docker clean` |
202
- | `--port` | `-p` | `start` |
203
- | `--check` | `-c` | `schema generate` |
204
- | `--config` | `-c` | `stack`, `docker`, `images`, `db *` (drizzle) |
205
- | `--apply` | `-a` | `upgrade` |
206
- | `--at` | `-a` | `branch` |
207
- | `--after` | `-a` | `doctor --diff` |
208
- | `--target` | `-t` | `build` |
209
- | `--diff` | | `doctor` |
210
- | `--json` | `-j` | `doctor`, `stack`, `images list`, `gates list`, `console claim-code` |
211
- | `--manifest` | `-m` | most Manifest readers |
212
- | `--entry` | `-e` | `dev`, `start`, `build`, `replay` |
213
- | `--request-id` | `-r` | `replay` |
214
- | `--dry-run` | | `replay` |
215
- | `--live` | | `replay` |
216
- | `--out` / `--outdir` | `-o` | writers |
217
- | `--subject` | `-s` | `privacy erase` |
218
- | `--before` | `-b` | `doctor --diff` |
219
- | `--base` | `-B` | `doctor --diff` |
220
- | `--env` | | `db *` (`dev` \| `test` \| `prod`) |
221
- | `--force` | | `db seed` |
222
- | `--local` / `-l` | | **removed** on `dev` (use `oke test`) |
223
-
224
- ### Exit codes
225
-
226
- | Exit | Meaning |
227
- | ----- | ------------------------------------- |
228
- | **0** | success |
229
- | **1** | usage / validation |
230
- | **2** | runtime / environment / check failure |
231
-
232
- `oke help` prints the same flag and exit-code tables.