okengine 0.18.5 → 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.
- package/AGENTS.md +18 -10
- package/README.md +2 -2
- package/package.json +51 -50
- package/site/content/docs/ai/llms-txt.mdx +1 -1
- package/site/content/docs/ai/meta.json +1 -1
- package/site/content/docs/ai/skills.mdx +4 -1
- package/site/content/docs/ai/try-it.mdx +58 -0
- package/site/content/docs/client/auth.mdx +208 -0
- package/site/content/docs/client/calling.mdx +451 -0
- package/site/content/docs/client/index.mdx +209 -0
- package/site/content/docs/client/live.mdx +234 -0
- package/site/content/docs/client/meta.json +5 -0
- package/site/content/docs/client/react.mdx +249 -0
- package/site/content/docs/elements/ai/agents.mdx +232 -0
- package/site/content/docs/elements/ai/index.mdx +341 -0
- package/site/content/docs/elements/ai/mcp.mdx +275 -0
- package/site/content/docs/elements/ai/meta.json +5 -0
- package/site/content/docs/elements/ai/models.mdx +283 -0
- package/site/content/docs/elements/ai/prompts.mdx +256 -0
- package/site/content/docs/elements/channel/email.mdx +266 -0
- package/site/content/docs/elements/channel/index.mdx +344 -0
- package/site/content/docs/elements/channel/meta.json +5 -0
- package/site/content/docs/elements/channel/push.mdx +218 -0
- package/site/content/docs/elements/channel/receipts.mdx +206 -0
- package/site/content/docs/elements/channel/sms.mdx +264 -0
- package/site/content/docs/elements/channel/whatsapp.mdx +220 -0
- package/site/content/docs/elements/clock/index.mdx +300 -0
- package/site/content/docs/elements/clock/meta.json +5 -0
- package/site/content/docs/elements/clock/schedules.mdx +508 -0
- package/site/content/docs/elements/clock/sleep.mdx +445 -0
- package/site/content/docs/elements/flow/consumers.mdx +707 -0
- package/site/content/docs/elements/flow/http.mdx +1080 -0
- package/site/content/docs/elements/flow/index.mdx +618 -0
- package/site/content/docs/elements/flow/meta.json +5 -0
- package/site/content/docs/elements/flow/routing.mdx +559 -0
- package/site/content/docs/elements/flow/workflows.mdx +640 -0
- package/site/content/docs/elements/gate/auth.mdx +371 -0
- package/site/content/docs/elements/gate/authorization.mdx +298 -0
- package/site/content/docs/elements/gate/index.mdx +418 -0
- package/site/content/docs/elements/gate/meta.json +5 -0
- package/site/content/docs/elements/gate/rate-limits.mdx +365 -0
- package/site/content/docs/elements/gate/rls.mdx +303 -0
- package/site/content/docs/elements/gate/tenancy.mdx +372 -0
- package/site/content/docs/elements/index.mdx +20 -10
- package/site/content/docs/elements/signal/broadcast.mdx +517 -0
- package/site/content/docs/elements/signal/index.mdx +352 -0
- package/site/content/docs/elements/signal/live.mdx +590 -0
- package/site/content/docs/elements/signal/meta.json +5 -0
- package/site/content/docs/elements/signal/once.mdx +596 -0
- package/site/content/docs/elements/store/files.mdx +659 -0
- package/site/content/docs/elements/store/index.mdx +310 -0
- package/site/content/docs/elements/store/kv.mdx +629 -0
- package/site/content/docs/elements/store/meta.json +5 -0
- package/site/content/docs/elements/store/search.mdx +946 -0
- package/site/content/docs/elements/store/sql.mdx +937 -0
- package/site/content/docs/elements/vault/config.mdx +256 -0
- package/site/content/docs/elements/vault/index.mdx +356 -0
- package/site/content/docs/elements/vault/meta.json +5 -0
- package/site/content/docs/elements/vault/rotation.mdx +273 -0
- package/site/content/docs/elements/vault/secrets.mdx +285 -0
- package/site/content/docs/index.mdx +63 -36
- package/site/content/docs/meta.json +8 -7
- package/site/content/docs/plugins/cors.mdx +2 -1
- package/site/content/docs/plugins/csrf.mdx +4 -1
- package/site/content/docs/plugins/headers.mdx +2 -1
- package/site/content/docs/plugins/ip-allowlist.mdx +2 -1
- package/site/content/docs/plugins/magic-link.mdx +6 -0
- package/site/content/docs/plugins/maintenance-mode.mdx +2 -1
- package/site/content/docs/plugins/oauth.mdx +1 -1
- package/site/content/docs/plugins/otp.mdx +12 -1
- package/site/content/docs/plugins/passkey.mdx +39 -15
- package/site/content/docs/plugins/two-factor.mdx +91 -34
- package/site/content/docs/plugins/username.mdx +1 -1
- package/site/content/docs/recipes/caddy.mdx +3 -3
- package/site/content/docs/recipes/index.mdx +18 -28
- package/site/content/docs/recipes/mailpit.mdx +1 -1
- package/site/content/docs/recipes/meilisearch.mdx +3 -3
- package/site/content/docs/recipes/meta.json +1 -4
- package/site/content/docs/recipes/nginx.mdx +2 -2
- package/site/content/docs/recipes/openrouter.mdx +283 -0
- package/site/content/docs/recipes/pgdog.mdx +3 -3
- package/site/content/docs/recipes/postgres.mdx +1 -2
- package/site/content/docs/recipes/rustfs.mdx +2 -2
- package/site/content/docs/recipes/traefik.mdx +3 -3
- package/site/content/docs/reference/cli.mdx +231 -0
- package/site/content/docs/reference/configuration.mdx +30 -10
- package/site/content/docs/reference/environment-variables.mdx +93 -20
- package/site/content/docs/reference/errors.mdx +132 -29
- package/site/content/docs/reference/fx.mdx +137 -73
- package/site/content/docs/reference/index.mdx +13 -21
- package/site/content/docs/reference/meta.json +4 -5
- package/site/content/docs/reference/okid.mdx +42 -17
- package/site/content/docs/reference/plugins.mdx +4 -3
- package/site/content/docs/reference/security.mdx +197 -0
- package/site/content/docs/understand/meta.json +5 -0
- package/site/content/docs/understand/the-anatomy.mdx +132 -0
- package/site/content/docs/understand/the-model.mdx +32 -0
- package/site/content/docs/understand/the-problem.mdx +74 -0
- package/site/content/docs/understand/the-vocabulary.mdx +26 -0
- package/src/auth/api-keys.ts +2 -1
- package/src/auth/bindings.ts +64 -16
- package/src/auth/gate-auth.test.ts +6 -1
- package/src/auth/identity.ts +152 -5
- package/src/auth/index.ts +29 -0
- package/src/auth/invites.ts +2 -1
- package/src/auth/method-context.ts +41 -0
- package/src/auth/oauth-as/crypto.ts +2 -1
- package/src/auth/oauth-as/stores.ts +2 -1
- package/src/auth/operator.ts +2 -1
- package/src/auth/sessions-jwt.test.ts +77 -0
- package/src/auth/sessions.ts +20 -4
- package/src/auth/tenants.ts +3 -2
- package/src/auth/two-factor-challenge.test.ts +61 -0
- package/src/auth/two-factor-challenge.ts +284 -0
- package/src/auth/verification.ts +5 -0
- package/src/bench/REPORT.md +49 -0
- package/src/bench/g03-signal-once.bench.ts +1 -1
- package/src/bench/g10-observability-contention.bench.ts +1 -1
- package/src/bench/g17-hybrid-search.bench.ts +572 -0
- package/src/bench/load-app.ts +2 -10
- package/src/cli/ai-setup/ai-setup.test.ts +331 -42
- package/src/cli/ai-setup/apply.ts +294 -52
- package/src/cli/ai-setup/catalog.ts +238 -1342
- package/src/cli/ai-setup/index.ts +14 -99
- package/src/cli/ai-setup/prompts.ts +60 -443
- package/src/cli/ask-seed.test.ts +96 -0
- package/src/cli/ask-seed.ts +82 -0
- package/src/cli/ask-vault-gaps.test.ts +84 -0
- package/src/cli/ask-vault-gaps.ts +146 -0
- package/src/cli/build.ts +2 -2
- package/src/cli/client-add.test.ts +26 -1
- package/src/cli/client-add.ts +106 -27
- package/src/cli/db-seed.ts +2 -0
- package/src/cli/db.ts +150 -11
- package/src/cli/dev.ts +119 -211
- package/src/cli/docker-clean.ts +2 -2
- package/src/cli/docker-cli.test.ts +1 -1
- package/src/cli/doctor-diff.ts +4 -2
- package/src/cli/doctor-pii.test.ts +1 -1
- package/src/cli/doctor.ts +14 -1
- package/src/cli/hero-meta.test.ts +4 -2
- package/src/cli/load-config.images.test.ts +8 -10
- package/src/cli/load-config.ts +1 -1
- package/src/cli/registry.ts +22 -10
- package/src/cli/replay.ts +3 -1
- package/src/cli/start.ts +1 -1
- package/src/cli/tui/keys.ts +2 -3
- package/src/client/auth/cookies.ts +74 -0
- package/src/client/auth/create-auth-client.ts +636 -0
- package/src/client/auth/denials.ts +99 -0
- package/src/client/auth/session.ts +283 -0
- package/src/client/auth.test.ts +251 -0
- package/src/client/auth.ts +39 -114
- package/src/client/create-with-session.ts +245 -0
- package/src/client/create.ts +51 -5
- package/src/client/index.ts +11 -1
- package/src/client/live.ts +11 -79
- package/src/client/notes-contract.test.ts +5 -10
- package/src/client/sse.ts +137 -0
- package/src/client/stream.ts +147 -0
- package/src/client/transport.test.ts +32 -0
- package/src/client/transport.ts +123 -26
- package/src/client/types.ts +118 -14
- package/src/client-react/index.ts +185 -24
- package/src/client-react/use-live-query.ts +13 -3
- package/src/compiler/aot.test.ts +7 -4
- package/src/compiler/effects-embed.test.ts +56 -0
- package/src/compiler/effects-fetch.test.ts +43 -0
- package/src/compiler/effects-infer.ts +58 -2
- package/src/compiler/extract.test.ts +257 -43
- package/src/compiler/extract.ts +566 -48
- package/src/compiler/fixtures/skyport/src/flows/bookings/index.ts +7 -4
- package/src/compiler/fixtures/skyport/src/flows/bookings/signals.ts +2 -8
- package/src/compiler/fixtures/skyport.expected.json +4 -4
- package/src/compiler/fixtures/triggers/five-triggers.ts +14 -10
- package/src/compiler/response.ts +2 -2
- package/src/compiler/search-writer-isolation.test.ts +40 -0
- package/src/config/index.ts +11 -0
- package/src/console/server/app.ts +17 -23
- package/src/console/server/bind.ts +4 -0
- package/src/console/server/console.test.ts +2 -2
- package/src/console/server/flows-invoke.test.ts +50 -34
- package/src/console/server/flows.ts +436 -255
- package/src/console/server/runs-ingest.test.ts +6 -3
- package/src/console/server/serve.ts +1 -1
- package/src/console/server/signals.test.ts +1 -5
- package/src/console/server/signals.ts +8 -6
- package/src/console/server/state.ts +6 -1
- package/src/console/server/store.ts +1 -1
- package/src/console/ui-next/dist/assets/FileExportIcon-Ck-5od4R.js +1 -0
- package/src/console/ui-next/dist/assets/MoreHorizontalCircle01Icon-gMNGsE37.js +1 -0
- package/src/console/ui-next/dist/assets/PlusSignIcon-CwG3nxfu.js +1 -0
- package/src/console/ui-next/dist/assets/UnavailableIcon-D9cvHVPr.js +1 -0
- package/src/console/ui-next/dist/assets/UserIcon-DaE2PB5_.js +1 -0
- package/src/console/ui-next/dist/assets/access-page-DFeymU07.js +4 -0
- package/src/console/ui-next/dist/assets/agent-disclosure-U1rdfblp.js +1 -0
- package/src/console/ui-next/dist/assets/cache-glyph-BeFJeqBG.js +1 -0
- package/src/console/ui-next/dist/assets/call-pii-button-CVAONPii.js +1 -0
- package/src/console/ui-next/dist/assets/collapsible-D2A6NJ-3.js +1 -0
- package/src/console/ui-next/dist/assets/copy-inline-button-CAYD18cr.js +1 -0
- package/src/console/ui-next/dist/assets/dagre.esm-B1_XeuLP.js +1 -0
- package/src/console/ui-next/dist/assets/detail-header-DVWNjWjg.js +1 -0
- package/src/console/ui-next/dist/assets/dropdown-menu-4h2LOVXM.js +1 -0
- package/src/console/ui-next/dist/assets/duration-tone-Cgk_h5ja.js +9 -0
- package/src/console/ui-next/dist/assets/element-icons-BI8cJgdh.js +1 -0
- package/src/console/ui-next/dist/assets/explorer-empty-CJs5A-wm.js +1 -0
- package/src/console/ui-next/dist/assets/flows-page-Dss7941e.js +1 -0
- package/src/console/ui-next/dist/assets/highlighted-json-MYZQtRnw.js +154 -0
- package/src/console/ui-next/dist/assets/http-method-Jrh39p7A.js +1 -0
- package/src/console/ui-next/dist/assets/index-D0zS5rKO.css +2 -0
- package/src/console/ui-next/dist/assets/index-DXP2dBIF.js +63 -0
- package/src/console/ui-next/dist/assets/observability-page-HvolXxTI.js +4 -0
- package/src/console/ui-next/dist/assets/react-dom-Ddte4I-Q.js +9 -0
- package/src/console/ui-next/dist/assets/replica-lag-CSh2dzrb.js +18 -0
- package/src/console/ui-next/dist/assets/request-meta-BatF8KrK.js +1 -0
- package/src/console/ui-next/dist/assets/shortcut-keys-3ILd8oGn.js +1 -0
- package/src/console/ui-next/dist/assets/{sql-BskegiFM.js → sql-BsFa4tDR.js} +1 -1
- package/src/console/ui-next/dist/assets/store-page-eiKiHnNe.js +41 -0
- package/src/console/ui-next/dist/assets/trace-detail-sheet-CZkMeKS-.js +2 -0
- package/src/console/ui-next/dist/assets/tree-expand-toggle-CW8y5A2h.js +55 -0
- package/src/console/ui-next/dist/assets/units-page-B_RWJrEO.js +1 -0
- package/src/console/ui-next/dist/assets/{use-vault-list-uk4WVboC.js → use-vault-list-CT4-gajj.js} +1 -1
- package/src/console/ui-next/dist/assets/vault-page-CWrg-A68.js +2 -0
- package/src/console/ui-next/dist/assets/xyflow-CSyC6ryz.css +1 -0
- package/src/console/ui-next/dist/assets/xyflow-yApv7D4e.js +7 -0
- package/src/console/ui-next/dist/index.html +6 -13
- package/src/console/ui-next/seed-invoke-host.ts +21 -18
- package/src/console/ui-next/src/client.ts +7 -2
- package/src/console/ui-next/src/features/flows/graph/element-map.ts +2 -0
- package/src/console/ui-next/src/features/flows/traces/effect-kind.ts +12 -2
- package/src/console/ui-next/src/features/flows/traces/effect-summary.ts +4 -0
- package/src/console/ui-next/src/features/flows/traces/trace-detail-sheet.tsx +8 -0
- package/src/console/ui-next/src/features/flows/traces/waterfall-bars.ts +4 -0
- package/src/console/ui-next/src/features/flows/traces/waterfall-tooltip.ts +9 -3
- package/src/console/ui-next/src/features/store/detail/reveal-cell.tsx +7 -11
- package/src/console/ui-next/src/features/store/detail/store-row-detail-sheet.tsx +2 -2
- package/src/console/ui-next/src/features/store/lib/fields-from-table.ts +2 -0
- package/src/console/ui-next/src/features/store/lib/grid-model.test.ts +25 -1
- package/src/console/ui-next/src/features/store/lib/grid-model.ts +36 -1
- package/src/console/ui-next/src/features/store/query/query-results.tsx +3 -3
- package/src/console/ui-next/src/features/units/detail/effects-summary.tsx +2 -0
- package/src/console/ui-next/src/features/units/lib/call-read-safe.ts +3 -1
- package/src/console/ui-next/src/features/units/lib/fields-from-schema.ts +6 -0
- package/src/docker/ai-model-status.test.ts +1 -12
- package/src/docker/ai-model-status.ts +10 -38
- package/src/docker/compose-up.test.ts +100 -0
- package/src/docker/compose-up.ts +292 -0
- package/src/docker/compose.ts +4 -14
- package/src/docker/derive.ts +9 -34
- package/src/docker/docker.test.ts +16 -261
- package/src/docker/images-config.test.ts +13 -25
- package/src/docker/index.ts +1 -24
- package/src/docker/recipes/index.ts +0 -23
- package/src/docker/recipes/pgdog.ts +6 -4
- package/src/docker/stack-id.test.ts +2 -2
- package/src/docker/stack-id.ts +0 -1
- package/src/docker/types.ts +2 -2
- package/src/drivers/ai-anthropic.ts +10 -0
- package/src/drivers/ai-openai-compatible.ts +34 -7
- package/src/drivers/ai-providers.test.ts +0 -107
- package/src/drivers/ai-stream.test.ts +0 -34
- package/src/drivers/ai-types.ts +17 -8
- package/src/drivers/channel-fcm.ts +6 -1
- package/src/drivers/channel-msegat.ts +6 -1
- package/src/drivers/channel-resend.ts +5 -1
- package/src/drivers/channel-smtp.ts +5 -1
- package/src/drivers/channel-sndr.ts +10 -1
- package/src/drivers/channel-taqnyat-mail.ts +5 -1
- package/src/drivers/channel-taqnyat-whatsapp.ts +6 -1
- package/src/drivers/channel-taqnyat.ts +6 -1
- package/src/drivers/channel-types.ts +10 -0
- package/src/drivers/channel-unifonic.ts +6 -1
- package/src/drivers/channel-wa-cloud.ts +6 -1
- package/src/drivers/channel-webpush.ts +6 -1
- package/src/drivers/external.ts +33 -0
- package/src/drivers/index.ts +0 -10
- package/src/drivers/meilisearch.ts +6 -0
- package/src/drivers/oauth-types.ts +4 -0
- package/src/drivers/postgres.test.ts +74 -3
- package/src/drivers/postgres.ts +175 -6
- package/src/drivers/signal-types.ts +5 -5
- package/src/drivers/types.ts +7 -0
- package/src/drivers/vault-types.ts +5 -0
- package/src/elements/ai/declare.ts +17 -4
- package/src/elements/ai/eval.ts +1 -1
- package/src/elements/ai/mcp-http.ts +1 -1
- package/src/elements/ai/pii.ts +1 -1
- package/src/elements/ai/providers.test.ts +289 -0
- package/src/elements/ai/providers.ts +169 -0
- package/src/elements/ai/runtime.ts +68 -5
- package/src/elements/ai/schema.ts +2 -2
- package/src/elements/ai.test.ts +7 -7
- package/src/elements/ai.ts +17 -1
- package/src/elements/channel/runtime.ts +105 -12
- package/src/elements/clock/cron-fields.test.ts +144 -0
- package/src/elements/clock/cron-fields.ts +185 -0
- package/src/elements/clock/declare.ts +247 -3
- package/src/elements/clock.ts +21 -1
- package/src/elements/index.ts +15 -0
- package/src/elements/signal/chaos-child.ts +1 -2
- package/src/elements/signal/declare.ts +65 -37
- package/src/elements/signal/delivery-modes.test.ts +11 -31
- package/src/elements/signal/dry-run-replay.test.ts +1 -7
- package/src/elements/signal/dry-run-write-isolation.test.ts +1 -7
- package/src/elements/signal/key-ordering.test.ts +6 -26
- package/src/elements/signal/lease-reclaim.test.ts +2 -6
- package/src/elements/signal/optional-emit.test.ts +6 -9
- package/src/elements/signal/order-lifecycle.test.ts +4 -17
- package/src/elements/signal/orphan-messages.test.ts +4 -15
- package/src/elements/signal/reconcile.test.ts +2 -2
- package/src/elements/signal/runtime.ts +1 -1
- package/src/elements/signal/schema-emit.test.ts +4 -8
- package/src/elements/signal.test.ts +24 -49
- package/src/elements/signal.ts +9 -2
- package/src/elements/store/domain-ddl.test.ts +1 -1
- package/src/elements/store/live-http.test.ts +9 -4
- package/src/elements/store/prepare-row.test.ts +123 -0
- package/src/elements/store/resource.ts +43 -12
- package/src/elements/store/schema-decl.ts +117 -0
- package/src/elements/store/search-backfill.ts +205 -0
- package/src/elements/store/search-bind.ts +66 -0
- package/src/elements/store/search-bm25.ts +78 -0
- package/src/elements/store/search-ddl.ts +156 -0
- package/src/elements/store/search-embed-flow.ts +141 -0
- package/src/elements/store/search-errors.ts +34 -0
- package/src/elements/store/search-fusion.ts +112 -0
- package/src/elements/store/search-lsh.ts +179 -0
- package/src/elements/store/search-runtime.ts +300 -0
- package/src/elements/store/search.test.ts +144 -0
- package/src/elements/store/sql-session.test.ts +1 -0
- package/src/elements/store/sql-session.ts +83 -3
- package/src/elements/store/table.ts +23 -2
- package/src/elements/store/upsert-app.test.ts +1 -3
- package/src/elements/store.ts +50 -0
- package/src/full.ts +4 -2
- package/src/http.ts +4 -1
- package/src/i18n/catalogs/ar.ts +14 -6
- package/src/i18n/catalogs/en.ts +14 -6
- package/src/index.ts +6 -1
- package/src/kernel/adopt-barrel-fresh.test.ts +7 -7
- package/src/kernel/adopt-routes.ts +9 -1
- package/src/kernel/app-auth.ts +5 -0
- package/src/kernel/app.ts +102 -9
- package/src/kernel/auto-cache.test.ts +6 -12
- package/src/kernel/auto-registry.test.ts +3 -3
- package/src/kernel/boot-bind/ai.test.ts +22 -19
- package/src/kernel/boot-bind/ai.ts +5 -43
- package/src/kernel/boot-bind/clock.ts +23 -5
- package/src/kernel/boot-bind/honor-config.test.ts +4 -4
- package/src/kernel/boot.test.ts +11 -6
- package/src/kernel/boot.ts +66 -16
- package/src/kernel/boundary-contract.ts +93 -0
- package/src/kernel/budget.test.ts +1 -1
- package/src/kernel/call.ts +89 -0
- package/src/kernel/capability.ts +6 -0
- package/src/kernel/client-descriptor.ts +123 -0
- package/src/kernel/clock-timezone.test.ts +80 -0
- package/src/kernel/correlation.test.ts +1 -1
- package/src/kernel/dry-run.ts +11 -8
- package/src/kernel/effects-stamping.test.ts +42 -9
- package/src/kernel/effects.test.ts +4 -2
- package/src/kernel/effects.ts +51 -9
- package/src/kernel/errors-channel.ts +17 -0
- package/src/kernel/errors-live-resume.ts +3 -2
- package/src/kernel/errors-tenant.ts +7 -4
- package/src/kernel/errors.registry-helpers.ts +96 -0
- package/src/kernel/errors.registry.test.ts +139 -25
- package/src/kernel/errors.ts +102 -23
- package/src/kernel/external-effects.test.ts +196 -0
- package/src/kernel/flow.test.ts +13 -4
- package/src/kernel/flow.ts +69 -71
- package/src/kernel/fx-ask-telemetry.test.ts +2 -2
- package/src/kernel/fx-dead-letters.test.ts +3 -3
- package/src/kernel/fx-fetch.ts +55 -0
- package/src/kernel/fx-live-stream.ts +2 -2
- package/src/kernel/fx-live.test.ts +8 -8
- package/src/kernel/fx.test.ts +17 -11
- package/src/kernel/fx.ts +180 -57
- package/src/kernel/horizontal-child.ts +1 -1
- package/src/kernel/http-query.test.ts +3 -6
- package/src/kernel/index.ts +13 -3
- package/src/kernel/instance-id.ts +1 -1
- package/src/kernel/instances.test.ts +40 -0
- package/src/kernel/instances.ts +47 -9
- package/src/kernel/live-http.test.ts +6 -7
- package/src/kernel/live-http.ts +6 -2
- package/src/kernel/live-resume.test.ts +1 -1
- package/src/kernel/mcp-tool.test.ts +3 -3
- package/src/kernel/on.ts +98 -4
- package/src/kernel/pipeline.test.ts +12 -15
- package/src/kernel/plugin-elements.test.ts +1 -1
- package/src/kernel/stamp-http.test.ts +3 -3
- package/src/kernel/triggers.ts +210 -95
- package/src/kernel-entry.ts +0 -1
- package/src/manifest/diff.ts +11 -1
- package/src/manifest/fixtures/skyport.excerpt.json +1 -1
- package/src/manifest/types.ts +46 -2
- package/src/mcp/docs-index.ts +3 -3
- package/src/mcp/docs-mcp.test.ts +2 -2
- package/src/mcp/docs-tools.ts +1 -1
- package/src/okid.test.ts +56 -0
- package/src/okid.ts +55 -11
- package/src/plugins/anonymous.ts +8 -4
- package/src/plugins/auth/shared.ts +27 -3
- package/src/plugins/auth-delivery.mailpit.integration.test.ts +1 -1
- package/src/plugins/auth-methods.security.test.ts +561 -23
- package/src/plugins/config-source.ts +1 -1
- package/src/plugins/csrf.test.ts +65 -0
- package/src/plugins/index.ts +2 -0
- package/src/plugins/magic-link.ts +36 -16
- package/src/plugins/oauth/shared.ts +3 -1
- package/src/plugins/oauth.ts +22 -14
- package/src/plugins/otp.ts +37 -21
- package/src/plugins/passkey-webauthn.ts +9 -6
- package/src/plugins/passkey.ts +98 -26
- package/src/plugins/pre-account-hijack.test.ts +223 -0
- package/src/plugins/two-factor.ts +466 -37
- package/src/plugins/username.ts +19 -7
- package/src/release/build-lib.ts +1 -0
- package/src/release/limits.ts +2 -2
- package/src/release/measure.ts +1 -1
- package/src/runs/collect.test.ts +0 -2
- package/src/runtime/json-code-block.test.ts +250 -20
- package/src/runtime/json-code-block.ts +1261 -41
- package/src/term.test.ts +1 -1
- package/src/test/create-test-app.test.ts +12 -12
- package/src/test/live-signals.test.ts +6 -6
- package/src/test/provisions.integration.test.ts +10 -14
- package/src/test/reset-element-registries.ts +1 -1
- package/src/test/tenant-isolation.test.ts +12 -6
- package/site/content/docs/deployment/docker-swarm.mdx +0 -164
- package/site/content/docs/deployment/docker.mdx +0 -227
- package/site/content/docs/deployment/index.mdx +0 -83
- package/site/content/docs/deployment/kubernetes.mdx +0 -176
- package/site/content/docs/deployment/meta.json +0 -5
- package/site/content/docs/deployment/reverse-proxy.mdx +0 -234
- package/site/content/docs/elements/ai.mdx +0 -385
- package/site/content/docs/elements/channel.mdx +0 -346
- package/site/content/docs/elements/clock.mdx +0 -244
- package/site/content/docs/elements/flow.mdx +0 -420
- package/site/content/docs/elements/gate.mdx +0 -436
- package/site/content/docs/elements/signal.mdx +0 -380
- package/site/content/docs/elements/store.mdx +0 -1099
- package/site/content/docs/elements/vault.mdx +0 -405
- package/site/content/docs/get-started/basic-usage.mdx +0 -173
- package/site/content/docs/get-started/index.mdx +0 -43
- package/site/content/docs/get-started/installation.mdx +0 -220
- package/site/content/docs/get-started/introduction.mdx +0 -144
- package/site/content/docs/get-started/meta.json +0 -13
- package/site/content/docs/get-started/project-structure.mdx +0 -925
- package/site/content/docs/get-started/testing.mdx +0 -328
- package/site/content/docs/get-started/why.mdx +0 -114
- package/site/content/docs/recipes/llama-cpp.mdx +0 -151
- package/site/content/docs/recipes/ollama.mdx +0 -142
- package/site/content/docs/recipes/sglang.mdx +0 -105
- package/site/content/docs/recipes/vllm.mdx +0 -106
- package/site/content/docs/reference/cli.md +0 -232
- package/site/content/docs/reference/client.mdx +0 -469
- package/site/content/docs/reference/security.md +0 -74
- package/src/cli/ai-setup/detect-ollama.ts +0 -213
- package/src/cli/ai-setup/recommend.test.ts +0 -225
- package/src/cli/ai-setup/recommend.ts +0 -225
- package/src/cli/dev-controls.test.ts +0 -122
- package/src/cli/dev-controls.ts +0 -164
- package/src/cli/tui/DevLive.tsx +0 -126
- package/src/console/ui-next/dist/assets/access-page-3-EFj-2G.js +0 -4
- package/src/console/ui-next/dist/assets/agent-disclosure-BP0Y0Sux.js +0 -1
- package/src/console/ui-next/dist/assets/cache-glyph-B5X-NM0-.js +0 -1
- package/src/console/ui-next/dist/assets/call-pii-button-ChAUiLo9.js +0 -1
- package/src/console/ui-next/dist/assets/collapsible-DGnOM2ph.js +0 -1
- package/src/console/ui-next/dist/assets/copy-inline-button-DBHhgHKP.js +0 -1
- package/src/console/ui-next/dist/assets/dagre.esm-ZwcdTuZZ.js +0 -1
- package/src/console/ui-next/dist/assets/detail-header-DhHM1iaZ.js +0 -1
- package/src/console/ui-next/dist/assets/dropdown-menu-_NjTEo5_.js +0 -1
- package/src/console/ui-next/dist/assets/duration-tone-sC3lGABz.js +0 -9
- package/src/console/ui-next/dist/assets/element-icons-BVXtRyd3.js +0 -1
- package/src/console/ui-next/dist/assets/explorer-empty-2uIhBu0_.js +0 -1
- package/src/console/ui-next/dist/assets/flows-page-cVFnA4HH.js +0 -1
- package/src/console/ui-next/dist/assets/highlighted-json-Awq7gYdu.js +0 -154
- package/src/console/ui-next/dist/assets/http-method-_UHM2ODJ.js +0 -1
- package/src/console/ui-next/dist/assets/index-CMIgUbD0.js +0 -66
- package/src/console/ui-next/dist/assets/index-Ck88Jmv8.css +0 -2
- package/src/console/ui-next/dist/assets/link-BX6Vqztd.js +0 -1
- package/src/console/ui-next/dist/assets/observability-page-CQ3p34ip.js +0 -4
- package/src/console/ui-next/dist/assets/preload-helper-oH4irX4C.js +0 -1
- package/src/console/ui-next/dist/assets/react-D8E3mtu1.js +0 -1
- package/src/console/ui-next/dist/assets/react-dom-Bph1y7z7.js +0 -9
- package/src/console/ui-next/dist/assets/replica-lag-DKRrbvdo.js +0 -18
- package/src/console/ui-next/dist/assets/request-meta-DV0ywz7t.js +0 -1
- package/src/console/ui-next/dist/assets/shortcut-JQIZlWfm.js +0 -1
- package/src/console/ui-next/dist/assets/shortcut-keys-DKxNTe_m.js +0 -1
- package/src/console/ui-next/dist/assets/skeleton-D-czQJT6.js +0 -1
- package/src/console/ui-next/dist/assets/store-page-02xOiqIK.js +0 -41
- package/src/console/ui-next/dist/assets/trace-detail-sheet-B09O8rA6.js +0 -2
- package/src/console/ui-next/dist/assets/tree-expand-toggle-BtyhmWb4.js +0 -55
- package/src/console/ui-next/dist/assets/units-page-l8FeKfnP.js +0 -1
- package/src/console/ui-next/dist/assets/useMutation-B8EO02Ej.js +0 -1
- package/src/console/ui-next/dist/assets/useRender-BE2A9BWC.js +0 -1
- package/src/console/ui-next/dist/assets/vault-page-CL-d_mLE.js +0 -2
- package/src/console/ui-next/dist/assets/xyflow-D7n4g6go.js +0 -7
- package/src/console/ui-next/dist/assets/xyflow-DZ0Ws1xk.css +0 -1
- package/src/docker/ollama-pull.ts +0 -232
- package/src/docker/recipes/llama-cpp.ts +0 -298
- package/src/docker/recipes/ollama.ts +0 -44
- package/src/docker/recipes/sglang.ts +0 -55
- package/src/docker/recipes/vllm.ts +0 -44
- package/src/drivers/ai-ollama-tools.integration.test.ts +0 -109
- package/src/drivers/ai-ollama.integration.test.ts +0 -184
- package/src/drivers/ai-ollama.ts +0 -389
- package/src/drivers/ollama.ts +0 -14
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "CLI"
|
|
3
|
+
description: "oke and create-oke commands — scaffold, develop, ship, and operate an okengine app."
|
|
4
|
+
icon: "Terminal"
|
|
5
|
+
source: "docs/spec/unified-theory.md"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
The CLI is how you scaffold, run, and operate an app. `create-oke` writes the project;
|
|
9
|
+
`oke` is the day-to-day binary (dev loop, schema, vault, docker, doctor).
|
|
10
|
+
|
|
11
|
+
For developers who already know the model — look up a command, its flags, and what it
|
|
12
|
+
writes.
|
|
13
|
+
|
|
14
|
+
<Callout title="The one rule">
|
|
15
|
+
Prefer the CLI for environment wiring (`oke dev`, `oke db`, `oke docker`). Put behavior in Flows
|
|
16
|
+
and `oke.config.ts` — never invent a ninth element or hand-edit the Manifest.
|
|
17
|
+
</Callout>
|
|
18
|
+
|
|
19
|
+
## Smallest Example
|
|
20
|
+
|
|
21
|
+
<Steps>
|
|
22
|
+
|
|
23
|
+
<Step>
|
|
24
|
+
### Scaffold an app
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
bunx create-oke@latest notes --yes
|
|
28
|
+
cd notes
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
</Step>
|
|
32
|
+
|
|
33
|
+
<Step>
|
|
34
|
+
### Run the dev loop
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
oke dev
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Compose comes up (pull / create / start progress streams into the boot status
|
|
41
|
+
lines), the backend listens on **6530**, Console on **6533**, app MCP on **6535**,
|
|
42
|
+
docs MCP on **6536**. Open `http://localhost:6533`. Quit with **Ctrl+C**.
|
|
43
|
+
|
|
44
|
+
On a TTY, after schema push, `oke dev` also:
|
|
45
|
+
|
|
46
|
+
1. Prompts one-by-one for any Vault boot gaps (writes `.env.local`) — e.g.
|
|
47
|
+
`OPENROUTER_API_KEY` when create-oke / `oke ai setup` / Keel declared the
|
|
48
|
+
OpenRouter contract without a value.
|
|
49
|
+
2. Asks to run `oke db seed` when a seed module exists and `.oke/state.json` has
|
|
50
|
+
not recorded that seed identity yet. Run `oke db seed` anytime later.
|
|
51
|
+
|
|
52
|
+
</Step>
|
|
53
|
+
|
|
54
|
+
</Steps>
|
|
55
|
+
|
|
56
|
+
## Progressive Patterns
|
|
57
|
+
|
|
58
|
+
<Tabs items={["Daily", "Schema", "Ship", "Scaffold"]}>
|
|
59
|
+
|
|
60
|
+
<Tab value="Daily">
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
oke dev # watch · Console · client types · Docker Compose
|
|
64
|
+
oke test # bun test with PGLite posture
|
|
65
|
+
oke doctor # secrets · ports · schema drift
|
|
66
|
+
oke doctor --diff # CI gate: undeclared contract breaks
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
</Tab>
|
|
70
|
+
|
|
71
|
+
<Tab value="Schema">
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
oke db push # sync domain schema (dev; auto under oke dev)
|
|
75
|
+
oke db generate # versioned SQL under drizzle/
|
|
76
|
+
oke db migrate # apply migrations (prod)
|
|
77
|
+
oke schema generate # core + plugin stub → .oke/schema/oke.ts
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Consequence:** `oke schema generate` is not `oke db generate`. The first writes the
|
|
81
|
+
framework stub; the second emits your app's Drizzle migrations.
|
|
82
|
+
|
|
83
|
+
</Tab>
|
|
84
|
+
|
|
85
|
+
<Tab value="Ship">
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
oke docker --prod # derive production Compose
|
|
89
|
+
oke build --target bun # tree-shaken bundle
|
|
90
|
+
oke start # production entry (Docker CMD)
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
</Tab>
|
|
94
|
+
|
|
95
|
+
<Tab value="Scaffold">
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
bunx create-oke@latest my-app --yes
|
|
99
|
+
bunx create-oke@latest my-app -t advanced --locales ar --proxy caddy
|
|
100
|
+
bunx create-oke@latest # interactive (TTY only)
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
</Tab>
|
|
104
|
+
|
|
105
|
+
</Tabs>
|
|
106
|
+
|
|
107
|
+
## Port Map
|
|
108
|
+
|
|
109
|
+
| Port | Surface | Who starts it |
|
|
110
|
+
| -------- | -------------------- | ----------------------- |
|
|
111
|
+
| **6530** | Backend API | `oke dev` / `oke start` |
|
|
112
|
+
| **6533** | Developer Console | `oke dev` |
|
|
113
|
+
| **6535** | App MCP | `oke dev` |
|
|
114
|
+
| **6536** | Docs MCP (read-only) | `oke dev` |
|
|
115
|
+
|
|
116
|
+
Override app / console / mcp listen ports in `oke.config.ts` `ports` — see
|
|
117
|
+
[Configuration](/docs/reference/configuration#ports).
|
|
118
|
+
|
|
119
|
+
## `oke` Commands
|
|
120
|
+
|
|
121
|
+
| Command | Purpose | Key flags / subs |
|
|
122
|
+
| ------------ | ------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
123
|
+
| `dev` | Watch · hot reload · Console · client types (Docker Compose) | `--docker\|-d [roles]`, `--no-db-push`, `--entry\|-e` |
|
|
124
|
+
| `test` | Run bun test with PGLite test posture | |
|
|
125
|
+
| `start` | Production entry (Docker CMD) | `--entry\|-e`, `--port\|-p` |
|
|
126
|
+
| `doctor` | Secrets · ports · stub/domain schema drift | `--manifest`, `--diff`, `--before`, `--after`, `--base`, `--json` |
|
|
127
|
+
| `stack` | Preview images / tags / ports (writes nothing) | `--config`, `--json` |
|
|
128
|
+
| `schema` | Core + plugin tables → `.oke/schema/oke.ts` | `generate` (`--check`, `--manifest`, `--out`) |
|
|
129
|
+
| `db` | Domain schema | `push` · `generate` · `migrate` · `seed` · `studio` · `search-backfill` |
|
|
130
|
+
| `client` | Ambient types for a separate frontend repo | `add <url>` (`--out`) |
|
|
131
|
+
| `vault` | Secrets | `set` · `list` · `import` · `key` · `init` · `status` · `seal` · `unseal` · `rotate` · `rotate-master` · `audit` · `purge-expired` · `backup` · `restore` |
|
|
132
|
+
| `docker` | Derive compose · clean leftover stacks | `--prod\|-p`, `--out`, `--config`, `--manifest`; sub `clean` |
|
|
133
|
+
| `images` | List / pin digests | `list` · `pin` |
|
|
134
|
+
| `build` | Tree-shaken bundle | `--target\|-t bun\|node\|edge`, `--entry`, `--outdir` |
|
|
135
|
+
| `eval` | Prompt eval sets (CI gate) | `--manifest` |
|
|
136
|
+
| `ai` | Configure AI driver + models | `setup` (`--provider`, `--chat`, `--vision`, `--embed`, `--yes`) |
|
|
137
|
+
| `branch` | Fork journaled state | `<name>`, `--at\|-a` |
|
|
138
|
+
| `replay` | Re-invoke a past Flow from Runs | `--request-id\|-r`, `--entry`, `--dry-run`, `--live` |
|
|
139
|
+
| `privacy` | Crypto-shred subject data | `erase` (`--subject\|-s`) |
|
|
140
|
+
| `upgrade` | Breaking-change codemods + diff | `--apply\|-a` |
|
|
141
|
+
| `console` | Console helpers | `claim-code` (`--json`) |
|
|
142
|
+
| `gates` | Gate catalogue from Manifest | `list` (`--manifest`, `--json`) |
|
|
143
|
+
| `completion` | Shell completion script | `bash` · `zsh` · `fish` |
|
|
144
|
+
| `mode` | **Deprecated** — `oke dev` always uses Docker Compose | `--help` |
|
|
145
|
+
|
|
146
|
+
Bare `oke` (TTY) opens the interactive board; `oke --help` prints the catalogue.
|
|
147
|
+
|
|
148
|
+
### `oke db` detail
|
|
149
|
+
|
|
150
|
+
Shared flags on push / generate / migrate / studio: `--config\|-c`, `--env name`
|
|
151
|
+
(`dev` · `test` · `prod`). Seed adds `--force`, `--entry`. Search-backfill adds
|
|
152
|
+
`--batch n` and a `<table>` positional.
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
oke db push --env dev
|
|
156
|
+
oke db migrate --env prod
|
|
157
|
+
oke db seed --force
|
|
158
|
+
oke db search-backfill notes --batch 500
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## `create-oke`
|
|
162
|
+
|
|
163
|
+
| Flag | Meaning |
|
|
164
|
+
| -------------------------------- | --------------------------------------------------------- |
|
|
165
|
+
| `-t, --template <id>` | `standard` (default) or `advanced` |
|
|
166
|
+
| `--sql <id>` | Store SQL dialect — only `postgres` (test stays `pglite`) |
|
|
167
|
+
| `-y, --yes` | No prompts; defaults + bun install (no `oke dev`) |
|
|
168
|
+
| `--install` / `--no-install` | Run or skip `bun install` after scaffold |
|
|
169
|
+
| `--agents-md` / `--no-agents-md` | Write `AGENTS.md` (default on) |
|
|
170
|
+
| `--ai` / `--no-ai` / `--ai skip` | Configure or skip AI setup |
|
|
171
|
+
| `--locales <tags>` | Extra languages beyond English (e.g. `ar` or `ar,fr`) |
|
|
172
|
+
| `--pgdog` / `--no-pgdog` | Pin PgDog in front of Postgres |
|
|
173
|
+
| `--proxy <id>` / `--no-proxy` | `none` · `caddy` · `traefik` · `nginx` |
|
|
174
|
+
| `-h, --help` | Show help |
|
|
175
|
+
|
|
176
|
+
## Troubleshooting
|
|
177
|
+
|
|
178
|
+
<Accordions>
|
|
179
|
+
|
|
180
|
+
<Accordion title="oke start: no entry found">
|
|
181
|
+
Set `package.json` `okengine.entry` or `main`, pass `--entry`, or keep a conventional
|
|
182
|
+
`src/app.ts`. Production imports that module; the app must call `createBunRuntime().serve` itself.
|
|
183
|
+
</Accordion>
|
|
184
|
+
|
|
185
|
+
<Accordion title="Confusion: oke schema generate vs oke db generate">
|
|
186
|
+
`oke schema generate` emits framework / plugin stub tables under `.oke/schema/`. `oke db generate`
|
|
187
|
+
emits versioned domain SQL via Drizzle. Use `db` for your app tables; use `schema` when the stub
|
|
188
|
+
drifted after a plugin change.
|
|
189
|
+
</Accordion>
|
|
190
|
+
|
|
191
|
+
<Accordion title="oke mode still in muscle memory">
|
|
192
|
+
`oke mode` is deprecated. `oke dev` always starts Docker Compose. There is no soft-compat for old
|
|
193
|
+
`local` / `docker` env map keys — rename to `dev` / `test` / `prod` in
|
|
194
|
+
[Configuration](/docs/reference/configuration).
|
|
195
|
+
</Accordion>
|
|
196
|
+
|
|
197
|
+
<Accordion title="OKE1110 after deploy">
|
|
198
|
+
Domain tables are missing in prod (no auto-DDL). Run `oke db migrate` against that environment —
|
|
199
|
+
see [Errors](/docs/reference/errors).
|
|
200
|
+
</Accordion>
|
|
201
|
+
|
|
202
|
+
<Accordion title="Claim code missing for first Console operator">
|
|
203
|
+
The setup claim code prints on the `oke dev` TTY board and is mirrored to gitignored
|
|
204
|
+
`.oke/claim-code`. Run `oke console claim-code` while setup is open.
|
|
205
|
+
</Accordion>
|
|
206
|
+
|
|
207
|
+
</Accordions>
|
|
208
|
+
|
|
209
|
+
## Learn more
|
|
210
|
+
|
|
211
|
+
- [Configuration](/docs/reference/configuration) — `oke.config.ts` drivers and ports
|
|
212
|
+
- [Environment Variables](/docs/reference/environment-variables) — what Compose writes
|
|
213
|
+
- [Security](/docs/reference/security) — Host / Origin / `allowedHosts`
|
|
214
|
+
- [The Model](/docs/understand/the-model) — one contract; `oke doctor --diff` reviews it
|
|
215
|
+
- [Vault](/docs/elements/vault) — `oke vault` rotate / unseal
|
|
216
|
+
|
|
217
|
+
## Next
|
|
218
|
+
|
|
219
|
+
<Cards>
|
|
220
|
+
<Card
|
|
221
|
+
title="Configuration"
|
|
222
|
+
description="Every option in oke.config.ts."
|
|
223
|
+
href="/docs/reference/configuration"
|
|
224
|
+
/>
|
|
225
|
+
<Card
|
|
226
|
+
title="Security"
|
|
227
|
+
description="Host, Origin, planes, and MCP posture."
|
|
228
|
+
href="/docs/reference/security"
|
|
229
|
+
/>
|
|
230
|
+
<Card title="Client" description="Typed createClient for your flows." href="/docs/client" />
|
|
231
|
+
</Cards>
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
title: "Configuration"
|
|
3
3
|
description: "Every option in oke.config.ts — three environments (dev · test · prod), drivers, images, i18n, tenancy, privacy, db sync, topology, ports, and console."
|
|
4
4
|
icon: "Settings2"
|
|
5
|
+
source: "docs/spec/unified-theory.md"
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
Complete reference for `oke.config.ts`. Options below match `defineConfig`. Driver maps use three keys: **dev** · **test** · **prod**.
|
|
@@ -14,9 +15,9 @@ export default defineConfig({
|
|
|
14
15
|
});
|
|
15
16
|
```
|
|
16
17
|
|
|
17
|
-
<Callout title="
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
<Callout title="The one rule">
|
|
19
|
+
Pin drivers and images in `oke.config.ts` for `dev` · `test` · `prod`. We test on what we deploy:
|
|
20
|
+
Docker-first local stack, PGLite for tests, same protocol ids in production.
|
|
20
21
|
</Callout>
|
|
21
22
|
|
|
22
23
|
## Environments
|
|
@@ -116,7 +117,7 @@ Built-in defaults (`DRIVER_DEFAULTS`) when a key is omitted:
|
|
|
116
117
|
| `channel.sms` | env driver map | `console` · `taqnyat` · `msegat` · `unifonic` |
|
|
117
118
|
| `channel.whatsapp` | env driver map | `console` · `wa-cloud` |
|
|
118
119
|
| `channel.push` | env driver map | `console` · `webpush` · `fcm` |
|
|
119
|
-
| `ai` | env driver map | `mock` · `anthropic` · `openai-compatible` · `bedrock` · `vertex`
|
|
120
|
+
| `ai` | env driver map | `mock` · `anthropic` · `openai-compatible` · `bedrock` · `vertex` |
|
|
120
121
|
| `runs` | env driver map | `memory` · `files` (Parquet + DuckDB at `.oke/runs`) · `postgres` · `clickhouse` |
|
|
121
122
|
| `prod` | `string[]` | flat protocol list for the Manifest — nested maps are preferred |
|
|
122
123
|
|
|
@@ -150,11 +151,10 @@ images: {
|
|
|
150
151
|
store: {
|
|
151
152
|
sql: "postgres:18-alpine",
|
|
152
153
|
kv: "redis:8-alpine",
|
|
153
|
-
files: "rustfs/rustfs:1.0.0-rc.
|
|
154
|
+
files: "rustfs/rustfs:1.0.0-rc.5",
|
|
154
155
|
},
|
|
155
|
-
channel: { email: "axllent/mailpit:v1.
|
|
156
|
-
pgdog: "ghcr.io/pgdogdev/pgdog:v0.1.
|
|
157
|
-
// ai: "ghcr.io/ggml-org/llama.cpp:server-b10450",
|
|
156
|
+
channel: { email: "axllent/mailpit:v1.31.1" },
|
|
157
|
+
pgdog: "ghcr.io/pgdogdev/pgdog:v0.1.57",
|
|
158
158
|
// proxy: "caddy:2-alpine",
|
|
159
159
|
},
|
|
160
160
|
```
|
|
@@ -163,7 +163,10 @@ Omitted image keys mean no container for that role. When both `store.sql` and `p
|
|
|
163
163
|
|
|
164
164
|
For `store.kv`, pin Redis (default), Valkey, or Dragonfly — driver id stays `redis`.
|
|
165
165
|
`{ durable: true }` KV lives in SQL (`oke_kv` on `DATABASE_URL`), not a second Redis image.
|
|
166
|
-
|
|
166
|
+
|
|
167
|
+
Compose does not manage AI inference — [OpenRouter](/docs/recipes/openrouter) or BYO
|
|
168
|
+
`OKE_AI_URL` ([Models](/docs/elements/ai/models)). For `proxy`, see [Caddy](/docs/recipes/caddy),
|
|
169
|
+
[Traefik](/docs/recipes/traefik), or [nginx](/docs/recipes/nginx).
|
|
167
170
|
|
|
168
171
|
## i18n
|
|
169
172
|
|
|
@@ -267,6 +270,23 @@ Domain schema sync for `oke db push | generate | migrate` (Drizzle). Unrelated t
|
|
|
267
270
|
|
|
268
271
|
## Learn more
|
|
269
272
|
|
|
270
|
-
- [CLI
|
|
273
|
+
- [CLI](/docs/reference/cli) — `oke dev` · `oke test` · `oke db`
|
|
271
274
|
- [Environment Variables](/docs/reference/environment-variables) — URL and secret resolution
|
|
272
275
|
- [Store](/docs/elements/store) — what the store drivers back
|
|
276
|
+
- [i18n](/docs/reference/i18n) — locale catalogs beyond the config block
|
|
277
|
+
|
|
278
|
+
## Next
|
|
279
|
+
|
|
280
|
+
<Cards>
|
|
281
|
+
<Card
|
|
282
|
+
title="Environment Variables"
|
|
283
|
+
description="URLs and secrets Compose writes."
|
|
284
|
+
href="/docs/reference/environment-variables"
|
|
285
|
+
/>
|
|
286
|
+
<Card title="CLI" description="Commands that honor this config." href="/docs/reference/cli" />
|
|
287
|
+
<Card
|
|
288
|
+
title="Security"
|
|
289
|
+
description="Host, Origin, planes, and MCP ports."
|
|
290
|
+
href="/docs/reference/security"
|
|
291
|
+
/>
|
|
292
|
+
</Cards>
|
|
@@ -1,12 +1,51 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Environment Variables"
|
|
3
|
-
description: "Every environment variable OKE reads — connection URLs, driver overrides, secrets, and CLI flags
|
|
4
|
-
icon: "
|
|
3
|
+
description: "Every environment variable OKE reads — connection URLs, driver overrides, secrets, and CLI flags."
|
|
4
|
+
icon: "Variable"
|
|
5
|
+
source: "docs/spec/unified-theory.md"
|
|
5
6
|
---
|
|
6
7
|
|
|
7
|
-
OKE reads environment variables at boot for connection detail and secrets — never for
|
|
8
|
+
OKE reads environment variables at boot for connection detail and secrets — never for
|
|
9
|
+
behavior you could declare in `oke.config.ts`. Under `oke dev`, Compose writes these
|
|
10
|
+
into `.env.local`; this page is the full map.
|
|
8
11
|
|
|
9
|
-
<Callout title="
|
|
12
|
+
<Callout title="The one rule">
|
|
13
|
+
Put drivers, images, and locale lists in `oke.config.ts`. Use env vars for URLs, credentials, and
|
|
14
|
+
runtime posture the host injects — not for inventing new behavior.
|
|
15
|
+
</Callout>
|
|
16
|
+
|
|
17
|
+
## Smallest Example
|
|
18
|
+
|
|
19
|
+
<Steps>
|
|
20
|
+
|
|
21
|
+
<Step>
|
|
22
|
+
### Let Compose write the map
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
oke dev
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Compose fills `.env.local` with `DATABASE_URL`, Redis, S3, and vault keys for the
|
|
29
|
+
pinned images.
|
|
30
|
+
|
|
31
|
+
</Step>
|
|
32
|
+
|
|
33
|
+
<Step>
|
|
34
|
+
### Override one URL when needed
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
export DATABASE_URL=postgres://user:pass@db:5432/oke
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Conventional names win over `OKE_*` aliases, then built-in defaults.
|
|
41
|
+
|
|
42
|
+
</Step>
|
|
43
|
+
|
|
44
|
+
</Steps>
|
|
45
|
+
|
|
46
|
+
## Precedence
|
|
47
|
+
|
|
48
|
+
<Callout title="Resolution order">
|
|
10
49
|
For anything with both an `OKE_*` variable and a conventional one (like `DATABASE_URL`), the
|
|
11
50
|
conventional variable wins first, then the `OKE_*` form, then the built-in default.
|
|
12
51
|
</Callout>
|
|
@@ -101,10 +140,11 @@ Read when `drivers.channel.sms` resolves to that driver id (`console` opens noth
|
|
|
101
140
|
WhatsApp (`wa-cloud`) and push (`webpush` / `fcm`) are not opened from env at
|
|
102
141
|
boot — pass them on `BootOptions.channel.drivers` with their open options.
|
|
103
142
|
|
|
104
|
-
## Live test gates (opt-in)
|
|
143
|
+
## Live test gates (opt-in, contributors)
|
|
105
144
|
|
|
106
|
-
Provider-quota-burning live suites are double-gated: the
|
|
107
|
-
provider's real credentials — credentials alone never
|
|
145
|
+
Provider-quota-burning live suites in the okengine repo are double-gated: the
|
|
146
|
+
medium flag **plus** that provider's real credentials — credentials alone never
|
|
147
|
+
send. App projects can ignore these.
|
|
108
148
|
|
|
109
149
|
| Variable | Used for |
|
|
110
150
|
| ---------------- | --------------------------------------------------------- |
|
|
@@ -113,18 +153,17 @@ provider's real credentials — credentials alone never send.
|
|
|
113
153
|
|
|
114
154
|
## AI providers
|
|
115
155
|
|
|
116
|
-
| Variable | Used for
|
|
117
|
-
| --------------------- |
|
|
118
|
-
| `ANTHROPIC_API_KEY` | `anthropic` driver credential
|
|
119
|
-
| `ANTHROPIC_MODEL` | Model override for the anthropic driver
|
|
120
|
-
| `OPENAI_API_KEY` | `openai-compatible` driver credential
|
|
121
|
-
| `OPENAI_BASE_URL` | `openai-compatible` base URL
|
|
122
|
-
| `OKE_AI_DRIVER` | Force the AI driver id (honoured under Compose / `oke dev`)
|
|
123
|
-
| `OKE_AI_URL` |
|
|
124
|
-
| `OKE_AI_MODEL` | Default model id
|
|
125
|
-
| `OKE_AI_VISION_MODEL` | Vision model id written by `oke ai setup` (logical `ai.model("vision")`)
|
|
126
|
-
| `OKE_AI_EMBED_MODEL` | Embedding model id written by `oke ai setup`
|
|
127
|
-
| `OLLAMA_HOST` | Alternate Ollama host (`host:port` or URL) when `OKE_AI_URL` is unset | — |
|
|
156
|
+
| Variable | Used for | Default when unset |
|
|
157
|
+
| --------------------- | --------------------------------------------------------------------------------------- | ------------------ |
|
|
158
|
+
| `ANTHROPIC_API_KEY` | `anthropic` driver credential | — |
|
|
159
|
+
| `ANTHROPIC_MODEL` | Model override for the anthropic driver | — |
|
|
160
|
+
| `OPENAI_API_KEY` | `openai-compatible` driver credential | — |
|
|
161
|
+
| `OPENAI_BASE_URL` | `openai-compatible` base URL | OpenAI cloud |
|
|
162
|
+
| `OKE_AI_DRIVER` | Force the AI driver id (honoured under Compose / `oke dev`) | config map |
|
|
163
|
+
| `OKE_AI_URL` | openai-compatible base URL (must end in `/v1`) — BYO; Compose does not manage inference | — |
|
|
164
|
+
| `OKE_AI_MODEL` | Default model id for openai-compatible / setup bindings | — |
|
|
165
|
+
| `OKE_AI_VISION_MODEL` | Vision model id written by `oke ai setup` (logical `ai.model("vision")`) | — |
|
|
166
|
+
| `OKE_AI_EMBED_MODEL` | Embedding model id written by `oke ai setup` | — |
|
|
128
167
|
|
|
129
168
|
## Framework behavior
|
|
130
169
|
|
|
@@ -145,8 +184,42 @@ Console operator rows are **not** stored in `.oke/console.sqlite`. With `DATABAS
|
|
|
145
184
|
`OKE_STORE_SQL_URL`) they live in Postgres schema `oke_console`. Without a Postgres URL,
|
|
146
185
|
Console uses PGlite under `.oke/console-pg` for local reopen durability.
|
|
147
186
|
|
|
187
|
+
## Troubleshooting
|
|
188
|
+
|
|
189
|
+
<Accordions>
|
|
190
|
+
|
|
191
|
+
<Accordion title="Compose did not write .env.local">
|
|
192
|
+
Run `oke dev` (not a bare `bun` entry) so Compose posture sets `OKE_DOCKER=1` and writes
|
|
193
|
+
connection URLs. Confirm `images` pins exist in [Configuration](/docs/reference/configuration).
|
|
194
|
+
</Accordion>
|
|
195
|
+
|
|
196
|
+
<Accordion title="Vault sealed / missing master key">
|
|
197
|
+
Built-in vault needs `OKE_VAULT_MASTER_KEY` (or `oke vault unseal`). See
|
|
198
|
+
[Vault](/docs/elements/vault).
|
|
199
|
+
</Accordion>
|
|
200
|
+
|
|
201
|
+
<Accordion title="Console operator store missing">
|
|
202
|
+
Operator rows need `DATABASE_URL` or `OKE_STORE_SQL_URL` (schema `oke_console`). Without Postgres,
|
|
203
|
+
Console uses PGlite under `.oke/console-pg`.
|
|
204
|
+
</Accordion>
|
|
205
|
+
|
|
206
|
+
</Accordions>
|
|
207
|
+
|
|
148
208
|
## Learn more
|
|
149
209
|
|
|
150
210
|
- [Configuration](/docs/reference/configuration) — the declarative side of the same knobs
|
|
151
211
|
- [Vault](/docs/elements/vault) — how `OKE_VAULT_*` gets minted on first boot
|
|
152
|
-
- [CLI
|
|
212
|
+
- [CLI](/docs/reference/cli) — which commands write these for you
|
|
213
|
+
- [Security](/docs/reference/security) — `OKE_CONSOLE_SECRET`
|
|
214
|
+
|
|
215
|
+
## Next
|
|
216
|
+
|
|
217
|
+
<Cards>
|
|
218
|
+
<Card
|
|
219
|
+
title="Configuration"
|
|
220
|
+
description="Drivers and images in oke.config.ts."
|
|
221
|
+
href="/docs/reference/configuration"
|
|
222
|
+
/>
|
|
223
|
+
<Card title="CLI" description="oke dev writes the env map." href="/docs/reference/cli" />
|
|
224
|
+
<Card title="Vault" description="Master key and managed providers." href="/docs/elements/vault" />
|
|
225
|
+
</Cards>
|