okengine 0.3.5 → 0.4.3

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 (144) hide show
  1. package/AGENTS.md +6 -0
  2. package/manifest.v1.schema.json +43 -1
  3. package/package.json +27 -12
  4. package/site/content/docs/ai/skills.mdx +11 -7
  5. package/site/content/docs/console/vault.mdx +4 -0
  6. package/site/content/docs/elements/ai.mdx +2 -0
  7. package/site/content/docs/elements/channel.mdx +7 -4
  8. package/site/content/docs/elements/clock.mdx +2 -4
  9. package/site/content/docs/elements/flow.mdx +19 -10
  10. package/site/content/docs/elements/gate.mdx +18 -11
  11. package/site/content/docs/elements/signal.mdx +9 -12
  12. package/site/content/docs/elements/store.mdx +69 -8
  13. package/site/content/docs/elements/vault.mdx +11 -12
  14. package/site/content/docs/get-started/basic-usage.mdx +76 -41
  15. package/site/content/docs/get-started/installation.mdx +95 -43
  16. package/site/content/docs/get-started/introduction.mdx +128 -75
  17. package/site/content/docs/get-started/meta.json +1 -1
  18. package/site/content/docs/get-started/why.mdx +141 -0
  19. package/site/content/docs/plugins/ip-allowlist.mdx +1 -2
  20. package/site/content/docs/plugins/security-headers.mdx +1 -1
  21. package/site/content/docs/reference/configuration.mdx +2 -2
  22. package/site/content/docs/reference/environment-variables.mdx +10 -0
  23. package/site/content/docs/reference/fx.mdx +56 -3
  24. package/site/content/docs/reference/plugins.mdx +18 -18
  25. package/src/cli/competitor-mention-removal.test.ts +117 -0
  26. package/src/cli/dev.ts +20 -0
  27. package/src/cli/meilisearch-local.test.ts +69 -0
  28. package/src/cli/meilisearch-local.ts +188 -0
  29. package/src/compiler/extract.test.ts +63 -0
  30. package/src/compiler/extract.ts +36 -15
  31. package/src/compiler/fixtures/skyport/src/flows/payments/index.ts +5 -1
  32. package/src/console/server/channels.ts +2 -0
  33. package/src/console/server/clock.ts +3 -0
  34. package/src/console/server/flows.ts +13 -0
  35. package/src/console/server/gates.ts +2 -0
  36. package/src/console/server/plugins.ts +20 -1
  37. package/src/console/server/signals.ts +5 -0
  38. package/src/console/server/store.test.ts +17 -0
  39. package/src/console/server/store.ts +35 -1
  40. package/src/console/ui/channels/types.ts +1 -0
  41. package/src/console/ui/clock/types.ts +1 -0
  42. package/src/console/ui/display.test.ts +14 -0
  43. package/src/console/ui/display.ts +9 -0
  44. package/src/console/ui/dist/assets/index-CjxwRGVv.js +10 -0
  45. package/src/console/ui/dist/assets/panel-access-BGv45snf.js +64 -0
  46. package/src/console/ui/dist/assets/{panel-ai-D_m6WQI8.js → panel-ai-B2S7LEii.js} +1 -1
  47. package/src/console/ui/dist/assets/{panel-architecture-CKnXFyUx.js → panel-architecture-D7UJh91v.js} +1 -1
  48. package/src/console/ui/dist/assets/panel-channels-9T3ybqRu.js +1 -0
  49. package/src/console/ui/dist/assets/panel-clock-Cb1UXGRQ.js +1 -0
  50. package/src/console/ui/dist/assets/{panel-diff-cdonmH8c.js → panel-diff-DmYbKWmN.js} +1 -1
  51. package/src/console/ui/dist/assets/panel-flows-PiHwT55z.js +48 -0
  52. package/src/console/ui/dist/assets/panel-gates-BQGYXvjT.js +1 -0
  53. package/src/console/ui/dist/assets/panel-overview-BBnRO18l.js +1 -0
  54. package/src/console/ui/dist/assets/panel-plugins-D0PsmVw2.js +1 -0
  55. package/src/console/ui/dist/assets/panel-runs-CWuRDe0r.js +1 -0
  56. package/src/console/ui/dist/assets/panel-signals-Bbg4ewpP.js +1 -0
  57. package/src/console/ui/dist/assets/panel-store-CPCbsDRa.js +1 -0
  58. package/src/console/ui/dist/assets/panel-traces-DVAzuA_S.js +1 -0
  59. package/src/console/ui/dist/assets/panel-vault-D1_MvOmo.js +1 -0
  60. package/src/console/ui/dist/assets/{rolldown-runtime-CNC7AqOf.js → rolldown-runtime-B0Z9INg1.js} +1 -1
  61. package/src/console/ui/dist/index.html +2 -2
  62. package/src/console/ui/gates/types.ts +1 -0
  63. package/src/console/ui/plugins/fixture.ts +7 -0
  64. package/src/console/ui/plugins/types.ts +3 -0
  65. package/src/console/ui/shell/client.ts +3 -0
  66. package/src/console/ui/shell/panels/channels/ChannelsPanel.tsx +7 -2
  67. package/src/console/ui/shell/panels/clock/ClockPanel.tsx +9 -2
  68. package/src/console/ui/shell/panels/gates/GatesPanel.tsx +12 -5
  69. package/src/console/ui/shell/panels/plugins/PluginsPanel.tsx +18 -4
  70. package/src/console/ui/shell/panels/signals/SignalsPanel.tsx +13 -2
  71. package/src/console/ui/shell/panels/store/StorePanel.tsx +11 -4
  72. package/src/console/ui/shell/panels/vault/VaultPanel.tsx +9 -3
  73. package/src/console/ui/signals/types.ts +1 -0
  74. package/src/console/ui/store/fixture.ts +5 -0
  75. package/src/console/ui/store/types.ts +2 -0
  76. package/src/docker/compose.ts +5 -0
  77. package/src/docker/docker.test.ts +41 -0
  78. package/src/docker/recipes/index.ts +10 -2
  79. package/src/docker/recipes/meilisearch.ts +31 -0
  80. package/src/drivers/conformance.test.ts +26 -0
  81. package/src/drivers/conformance.ts +40 -3
  82. package/src/drivers/drizzle-dialect.test.ts +4 -0
  83. package/src/drivers/drizzle-dialect.ts +8 -4
  84. package/src/drivers/index.ts +18 -2
  85. package/src/drivers/libsql.ts +179 -0
  86. package/src/drivers/meilisearch.integration.test.ts +77 -0
  87. package/src/drivers/meilisearch.test.ts +181 -0
  88. package/src/drivers/meilisearch.ts +208 -0
  89. package/src/drivers/memory.ts +4 -4
  90. package/src/drivers/pglite.ts +79 -0
  91. package/src/drivers/pgvector.ts +60 -25
  92. package/src/drivers/types.ts +106 -16
  93. package/src/drivers/vault-driver-removal.test.ts +6 -0
  94. package/src/drivers/vault-types.ts +4 -4
  95. package/src/elements/ai/runtime.ts +6 -0
  96. package/src/elements/ai.test.ts +22 -0
  97. package/src/elements/channel/declare.ts +5 -0
  98. package/src/elements/clock/declare.ts +5 -0
  99. package/src/elements/clock/durable.ts +7 -1
  100. package/src/elements/gate/declare.ts +28 -5
  101. package/src/elements/gate.ts +1 -0
  102. package/src/elements/signal/declare.ts +5 -0
  103. package/src/elements/store/declare.ts +10 -2
  104. package/src/elements/store/index-boot.test.ts +299 -0
  105. package/src/elements/store/runtime.ts +110 -17
  106. package/src/elements/store/schema-decl.ts +7 -0
  107. package/src/elements/store.ts +2 -0
  108. package/src/elements/vault.test.ts +27 -4
  109. package/src/elements/vault.ts +1 -1
  110. package/src/index.ts +4 -0
  111. package/src/kernel/abort-scope.ts +116 -0
  112. package/src/kernel/app.ts +12 -2
  113. package/src/kernel/boot-bind/store.test.ts +68 -1
  114. package/src/kernel/boot-bind/store.ts +92 -2
  115. package/src/kernel/concurrency.test.ts +294 -0
  116. package/src/kernel/concurrency.ts +220 -0
  117. package/src/kernel/flow.ts +9 -0
  118. package/src/kernel/fx.test.ts +23 -2
  119. package/src/kernel/fx.ts +80 -4
  120. package/src/kernel/index.ts +23 -0
  121. package/src/kernel/journal.ts +9 -0
  122. package/src/kernel/plugin/capabilities.test.ts +18 -0
  123. package/src/kernel/plugin.ts +11 -3
  124. package/src/kernel/redacted.ts +74 -0
  125. package/src/kernel/registry.ts +29 -6
  126. package/src/kernel/router.ts +3 -3
  127. package/src/manifest/types.ts +21 -0
  128. package/src/release/measure.ts +4 -0
  129. package/src/test/provisions.integration.test.ts +1 -1
  130. package/site/content/docs/get-started/comparison.mdx +0 -65
  131. package/src/console/ui/dist/assets/index-BWo8R7NR.js +0 -10
  132. package/src/console/ui/dist/assets/panel-access-C0J2D-a2.js +0 -64
  133. package/src/console/ui/dist/assets/panel-channels-BOmQ-onL.js +0 -1
  134. package/src/console/ui/dist/assets/panel-clock-giAq0Ccv.js +0 -1
  135. package/src/console/ui/dist/assets/panel-flows-DlCU5zjA.js +0 -45
  136. package/src/console/ui/dist/assets/panel-gates-XclZxWD5.js +0 -1
  137. package/src/console/ui/dist/assets/panel-overview-BznEOTnb.js +0 -1
  138. package/src/console/ui/dist/assets/panel-plugins-CcGM1g64.js +0 -1
  139. package/src/console/ui/dist/assets/panel-runs-CGWNHLR4.js +0 -1
  140. package/src/console/ui/dist/assets/panel-signals-CNywkdak.js +0 -1
  141. package/src/console/ui/dist/assets/panel-store-KmTbFHMH.js +0 -1
  142. package/src/console/ui/dist/assets/panel-traces-DBLx2ilD.js +0 -1
  143. package/src/console/ui/dist/assets/panel-vault-CEnFc0dk.js +0 -1
  144. package/src/drivers/vault-infisical.ts +0 -57
@@ -69,6 +69,8 @@ export interface ConsoleStoreChild {
69
69
  readonly cache: ConsoleStoreCacheView;
70
70
  readonly willNotFire: ConsoleWillNotFire;
71
71
  readonly piiColumns: readonly string[];
72
+ /** Column key → optional human description (SQL tables). */
73
+ readonly columnDescriptions: Readonly<Record<string, string>>;
72
74
  }
73
75
 
74
76
  /** One row in `console.store.list`. */
@@ -76,6 +78,7 @@ export interface ConsoleStoreRow {
76
78
  readonly ref: ResourceRef;
77
79
  readonly facet: StoreFacet;
78
80
  readonly name: string;
81
+ readonly description?: string;
79
82
  readonly children: readonly ConsoleStoreChild[];
80
83
  readonly replicaLagMs: number | null;
81
84
  readonly migrationDrift: ConsoleMigrationDrift | null;
@@ -152,6 +155,7 @@ export async function projectStoresList(options: ProjectStoresOptions): Promise<
152
155
  ref,
153
156
  facet,
154
157
  name,
158
+ ...(store.description !== undefined ? { description: store.description } : {}),
155
159
  children,
156
160
  replicaLagMs,
157
161
  migrationDrift: facet === "sql" ? drift : null,
@@ -219,10 +223,27 @@ function childrenOf(
219
223
  },
220
224
  willNotFire,
221
225
  piiColumns,
226
+ columnDescriptions: columnDescriptionsFor(store, childName),
222
227
  };
223
228
  });
224
229
  }
225
230
 
231
+ function columnDescriptionsFor(
232
+ store: NonNullable<Manifest["stores"]>[string],
233
+ tableName: string,
234
+ ): Readonly<Record<string, string>> {
235
+ const cols = store.tables?.[tableName]?.columns;
236
+ if (!cols) return {};
237
+ const out: Record<string, string> = {};
238
+ for (const [key, col] of Object.entries(cols)) {
239
+ if (col && typeof col === "object" && "description" in col) {
240
+ const d = (col as { description?: string }).description;
241
+ if (typeof d === "string" && d.length > 0) out[key] = d;
242
+ }
243
+ }
244
+ return out;
245
+ }
246
+
226
247
  function flowsTouching(manifest: Manifest, ref: ResourceRef, kind: "reads" | "writes"): string[] {
227
248
  const out: string[] = [];
228
249
  for (const [flowId, flow] of Object.entries(manifest.flows ?? {})) {
@@ -308,6 +329,7 @@ export interface StoreQueryInput {
308
329
  readonly prefix?: string;
309
330
  readonly limit?: number;
310
331
  readonly vector?: readonly number[];
332
+ readonly q?: string;
311
333
  readonly topK?: number;
312
334
  readonly revealPii?: boolean;
313
335
  }
@@ -329,6 +351,7 @@ export interface StoreQueryResult {
329
351
  readonly score: number;
330
352
  readonly meta?: Record<string, unknown>;
331
353
  }>;
354
+ readonly facetDistribution?: Record<string, Record<string, number>>;
332
355
  readonly masked: boolean;
333
356
  readonly routedRole?: "primary" | "replica";
334
357
  }
@@ -417,12 +440,20 @@ export async function queryStore(
417
440
 
418
441
  // index
419
442
  const idx = handle as IndexStoreFxHandle;
443
+ void manifest;
444
+ if (idx.driverId === "meilisearch") {
445
+ const q = input.q ?? "";
446
+ if (q.trim().length === 0) {
447
+ return { facet, hits: [], masked: false };
448
+ }
449
+ const result = await idx.search(q, { topK: input.topK ?? 5 });
450
+ return { facet, hits: result.hits, facetDistribution: result.facetDistribution, masked: false };
451
+ }
420
452
  const vector = input.vector ?? [];
421
453
  if (vector.length === 0) {
422
454
  return { facet, hits: [], masked: false };
423
455
  }
424
456
  const hits = await idx.search(vector, input.topK ?? 5);
425
- void manifest;
426
457
  return { facet, hits, masked: false };
427
458
  }
428
459
 
@@ -779,6 +810,9 @@ export function cacheKeyInvalidatedBy(key: string, writeRef: ResourceRef): boole
779
810
  /**
780
811
  * Open a memory StoreRuntime seeded from Manifest stores (Console default).
781
812
  *
813
+ * The Console Manifest sandbox uses memory drivers for every facet. Real app
814
+ * boot resolves configured drivers before the Console binds to live runtimes.
815
+ *
782
816
  * @param manifest - Manifest snapshot
783
817
  * @param now - Clock
784
818
  */
@@ -29,6 +29,7 @@ export interface OutcomeRow {
29
29
  /** Template row. */
30
30
  export interface ChannelTemplate {
31
31
  readonly name: string;
32
+ readonly description?: string;
32
33
  readonly medium: string;
33
34
  readonly locales: readonly string[];
34
35
  readonly from: string | null;
@@ -29,6 +29,7 @@ export interface DstAmbiguityView {
29
29
  /** One cron row from `console.clock.list`. */
30
30
  export interface ClockCronRecord {
31
31
  readonly name: string;
32
+ readonly description?: string;
32
33
  readonly status: CronStatus;
33
34
  readonly timezone: string;
34
35
  readonly overridable: boolean;
@@ -0,0 +1,14 @@
1
+ import { describe, expect, test } from "bun:test";
2
+ import { displayLabel } from "./display.ts";
3
+
4
+ describe("displayLabel", () => {
5
+ test("falls back to the raw key when description is absent", () => {
6
+ expect(displayLabel("DATABASE_URL")).toBe("DATABASE_URL");
7
+ expect(displayLabel("DATABASE_URL", undefined)).toBe("DATABASE_URL");
8
+ expect(displayLabel("DATABASE_URL", "")).toBe("DATABASE_URL");
9
+ });
10
+
11
+ test("prefers a non-empty description", () => {
12
+ expect(displayLabel("DATABASE_URL", "Primary database URL")).toBe("Primary database URL");
13
+ });
14
+ });
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Human-facing label for a technical key when an optional description exists.
3
+ *
4
+ * @param key - Technical identifier (Manifest map key / declaration name)
5
+ * @param description - Optional human description
6
+ */
7
+ export function displayLabel(key: string, description?: string | null): string {
8
+ return description && description.length > 0 ? description : key;
9
+ }