@ekairos/dataset 1.22.49-beta.development.0 → 1.22.50-beta.development.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 (49) hide show
  1. package/dist/agents.d.ts +8 -0
  2. package/dist/agents.js +8 -0
  3. package/dist/builder/agentMaterializers.d.ts +9 -0
  4. package/dist/builder/agentMaterializers.js +10 -0
  5. package/dist/builder/materialize.d.ts +1 -11
  6. package/dist/builder/materialize.js +25 -77
  7. package/dist/builder/materializeQuery.d.ts +11 -0
  8. package/dist/builder/materializeQuery.js +40 -0
  9. package/dist/builder/persistence.js +13 -21
  10. package/dist/builder/types.d.ts +3 -0
  11. package/dist/clearDataset.tool.d.ts +2 -2
  12. package/dist/clearDataset.tool.js +3 -3
  13. package/dist/completeDataset.tool.d.ts +31 -3
  14. package/dist/completeDataset.tool.js +101 -13
  15. package/dist/dataset/steps.d.ts +32 -8
  16. package/dist/dataset/steps.js +69 -13
  17. package/dist/dataset.js +13 -7
  18. package/dist/executeCommand.tool.d.ts +2 -2
  19. package/dist/executeCommand.tool.js +3 -3
  20. package/dist/file/file-dataset.agent.d.ts +17 -11
  21. package/dist/file/file-dataset.agent.js +54 -47
  22. package/dist/file/filepreview.d.ts +2 -2
  23. package/dist/file/filepreview.js +13 -13
  24. package/dist/file/generateSchema.tool.d.ts +2 -2
  25. package/dist/file/generateSchema.tool.js +2 -2
  26. package/dist/file/prompts.d.ts +2 -2
  27. package/dist/file/prompts.js +6 -1
  28. package/dist/file/steps.d.ts +1 -1
  29. package/dist/file/steps.js +8 -2
  30. package/dist/index.d.ts +0 -1
  31. package/dist/index.js +0 -1
  32. package/dist/query/queryDomain.d.ts +3 -3
  33. package/dist/query/queryDomain.js +3 -3
  34. package/dist/query/queryDomain.step.d.ts +1 -0
  35. package/dist/query/queryDomain.step.js +8 -4
  36. package/dist/sandbox/steps.d.ts +6 -6
  37. package/dist/sandbox/steps.js +16 -12
  38. package/dist/transform/filepreview.d.ts +1 -1
  39. package/dist/transform/filepreview.js +6 -6
  40. package/dist/transform/index.d.ts +1 -1
  41. package/dist/transform/index.js +1 -1
  42. package/dist/transform/prompts.js +4 -1
  43. package/dist/transform/transform-dataset.agent.d.ts +9 -3
  44. package/dist/transform/transform-dataset.agent.js +39 -32
  45. package/dist/transform/transformDataset.d.ts +3 -2
  46. package/dist/transform/transformDataset.js +10 -9
  47. package/package.json +19 -5
  48. package/dist/eventsReactRuntime.d.ts +0 -21
  49. package/dist/eventsReactRuntime.js +0 -25
@@ -1,11 +1,11 @@
1
1
  import { getDatasetWorkstation } from "../datasetFiles.js";
2
2
  import { runDatasetSandboxCommandStep, writeDatasetSandboxFilesStep } from "../sandbox/steps.js";
3
3
  const DEFAULT_HEAD_LINES = 50;
4
- async function runPythonSnippet(env, sandboxId, datasetId, scriptName, code, args, description) {
4
+ async function runPythonSnippet(runtime, sandboxId, datasetId, scriptName, code, args, description) {
5
5
  const workstation = getDatasetWorkstation(datasetId);
6
6
  const scriptPath = `${workstation}/${scriptName}.py`;
7
7
  await writeDatasetSandboxFilesStep({
8
- env,
8
+ runtime,
9
9
  sandboxId,
10
10
  files: [
11
11
  {
@@ -15,7 +15,7 @@ async function runPythonSnippet(env, sandboxId, datasetId, scriptName, code, arg
15
15
  ],
16
16
  });
17
17
  const result = await runDatasetSandboxCommandStep({
18
- env,
18
+ runtime,
19
19
  sandboxId,
20
20
  cmd: "python",
21
21
  args: [scriptPath, ...args],
@@ -30,7 +30,7 @@ async function runPythonSnippet(env, sandboxId, datasetId, scriptName, code, arg
30
30
  stderr,
31
31
  };
32
32
  }
33
- export async function generateSourcePreview(env, sandboxId, sourcePath, datasetId, options = {}) {
33
+ export async function generateSourcePreview(runtime, sandboxId, sourcePath, datasetId, options = {}) {
34
34
  const context = {
35
35
  totalRows: 0,
36
36
  };
@@ -54,7 +54,7 @@ try:
54
54
  except Exception as e:
55
55
  print(str(e))
56
56
  `;
57
- const meta = await runPythonSnippet(env, sandboxId, datasetId, "jsonl_count", countScript, [sourcePath], "Counts number of JSONL records with type='row'");
57
+ const meta = await runPythonSnippet(runtime, sandboxId, datasetId, "jsonl_count", countScript, [sourcePath], "Counts number of JSONL records with type='row'");
58
58
  context.metadata = meta;
59
59
  try {
60
60
  if (meta.stdout) {
@@ -89,7 +89,7 @@ try:
89
89
  except Exception as e:
90
90
  print(str(e))
91
91
  `;
92
- const head = await runPythonSnippet(env, sandboxId, datasetId, "jsonl_head", headScript, [sourcePath, String(headLines)], `Reads the first ${headLines} JSONL row records`);
92
+ const head = await runPythonSnippet(runtime, sandboxId, datasetId, "jsonl_head", headScript, [sourcePath, String(headLines)], `Reads the first ${headLines} JSONL row records`);
93
93
  context.head = head;
94
94
  return context;
95
95
  }
@@ -1,2 +1,2 @@
1
- export { createTransformDatasetStory, type TransformDatasetAgentParams, type TransformDatasetContext, } from "./transform-dataset.agent.js";
1
+ export { createTransformDatasetContext, type TransformDatasetAgentParams, type TransformDatasetContext, } from "./transform-dataset.agent.js";
2
2
  export { transformDataset, type TransformDatasetInput, type TransformDatasetResult, } from "./transformDataset.js";
@@ -1,2 +1,2 @@
1
- export { createTransformDatasetStory, } from "./transform-dataset.agent.js";
1
+ export { createTransformDatasetContext, } from "./transform-dataset.agent.js";
2
2
  export { transformDataset, } from "./transformDataset.js";
@@ -97,19 +97,22 @@ function buildInstructions(context) {
97
97
  .up()
98
98
  .ele("Step", { number: "2", name: "Plan Mapping" })
99
99
  .ele("Action").txt("Plan a deterministic mapping from source data fields to the output schema fields (normalize names, types, and formats).").up()
100
- .ele("Note").txt("If fields are missing, set defaults; if types differ, coerce consistently. When working with multiple sources, decide how to combine or relate them.").up()
100
+ .ele("Note").txt("If fields are missing, set defaults; if types differ, coerce consistently. When working with multiple sources, decide how to combine or relate them. Output field names must remain exactly as declared by the output schema.").up()
101
101
  .up()
102
102
  .ele("Step", { number: "3", name: "Transform" })
103
103
  .ele("Action").txt("Use executeCommand to run a Python script that reads source JSONL file(s) and writes transformed records to output.jsonl. Keep line-per-record JSON objects with { 'type': 'row', 'data': { ... } }.").up()
104
104
  .ele("Requirement").txt(`Write file to: ${outputPath}`).up()
105
+ .ele("Requirement").txt("Every data object MUST use the exact property names from OutputSchema required/properties keys. Do not translate, localize, rename, or infer alternative field names.").up()
105
106
  .ele("Requirement").txt("Do not print large data to stdout; only progress and summaries.").up()
106
107
  .up()
107
108
  .ele("Step", { number: "4", name: "Validate and Complete" })
108
109
  .ele("Action").txt("Call completeDataset to validate against the output schema and mark as completed.").up()
110
+ .ele("Behavior").txt("If completeDataset returns success:false, inspect validation details, rewrite output.jsonl, and call completeDataset again. Do not stop until completeDataset returns success:true.").up()
109
111
  .up()
110
112
  .up()
111
113
  .ele("Rules")
112
114
  .ele("Rule").txt("Output must strictly match the output schema for each record in data.").up()
115
+ .ele("Rule").txt("OutputSchema property names are authoritative. Field names are a technical contract; only field values may preserve source language.").up()
113
116
  .ele("Rule").txt("Each line in output.jsonl must be a standalone JSON object with {type:'row', data:{...}}.").up()
114
117
  .ele("Rule").txt("Do not include headers, summaries, or metadata as records.").up()
115
118
  .ele("Rule").txt("Be robust to malformed lines in source: skip or sanitize, but do not crash.").up()
@@ -28,6 +28,10 @@ export type TransformDatasetAgentParams = {
28
28
  sandboxId?: string;
29
29
  reactor?: ContextReactor<any, any>;
30
30
  };
31
+ export type TransformDatasetRunOptions = {
32
+ prompt?: string;
33
+ durable?: boolean;
34
+ };
31
35
  export type TransformDatasetResult = {
32
36
  id: string;
33
37
  status?: string;
@@ -39,7 +43,7 @@ export type TransformDatasetResult = {
39
43
  createdAt?: number;
40
44
  updatedAt?: number;
41
45
  };
42
- export declare function createTransformDatasetStory<Env extends {
46
+ export declare function createTransformDatasetContext<Env extends {
43
47
  orgId: string;
44
48
  }>(params: {
45
49
  sourceDatasetIds: string[];
@@ -51,8 +55,10 @@ export declare function createTransformDatasetStory<Env extends {
51
55
  reactor?: ContextReactor<any, any>;
52
56
  }): {
53
57
  datasetId: string;
54
- transform(env: Env, prompt?: string): Promise<{
58
+ transform(runtime: {
59
+ env: Env;
60
+ }, options?: TransformDatasetRunOptions): Promise<{
55
61
  datasetId: string;
56
62
  }>;
57
- story: any;
63
+ context: any;
58
64
  };
@@ -1,5 +1,5 @@
1
- import { createContext, didToolExecute, INPUT_TEXT_ITEM_TYPE, WEB_CHANNEL } from "@ekairos/events";
2
- import { createCompleteDatasetTool } from "../completeDataset.tool.js";
1
+ import { createContext, INPUT_TEXT_ITEM_TYPE, WEB_CHANNEL } from "@ekairos/events";
2
+ import { createCompleteDatasetTool, didCompleteDatasetSucceed } from "../completeDataset.tool.js";
3
3
  import { createExecuteCommandTool } from "../executeCommand.tool.js";
4
4
  import { createClearDatasetTool } from "../clearDataset.tool.js";
5
5
  import { buildTransformDatasetPrompt } from "./prompts.js";
@@ -8,19 +8,27 @@ import { id } from "@instantdb/admin";
8
8
  import { generateSourcePreview } from "./filepreview.js";
9
9
  import { datasetReadOutputJsonlStep, datasetUpdateSchemaStep } from "../dataset/steps.js";
10
10
  import { runDatasetSandboxCommandStep, writeDatasetSandboxFilesStep } from "../sandbox/steps.js";
11
- import { createEventsReactRuntime } from "../eventsReactRuntime.js";
12
- async function ensureSourcesInSandbox(env, sandboxId, datasetId, sourceDatasetIds, state) {
11
+ async function awaitContextRun(run) {
12
+ if (!run)
13
+ return;
14
+ if (run.returnValue) {
15
+ await run.returnValue;
16
+ return;
17
+ }
18
+ await run;
19
+ }
20
+ async function ensureSourcesInSandbox(runtime, sandboxId, datasetId, sourceDatasetIds, state) {
13
21
  if (state.initialized) {
14
22
  return { sourcePaths: state.sourcePaths, outputPath: getDatasetOutputPath(datasetId) };
15
23
  }
16
24
  const workstation = getDatasetWorkstation(datasetId);
17
- await runDatasetSandboxCommandStep({ env, sandboxId, cmd: "mkdir", args: ["-p", workstation] });
25
+ await runDatasetSandboxCommandStep({ runtime, sandboxId, cmd: "mkdir", args: ["-p", workstation] });
18
26
  const sourcePaths = [];
19
27
  for (const sourceDatasetId of sourceDatasetIds) {
20
28
  const sourcePath = `${workstation}/source_${sourceDatasetId}.jsonl`;
21
- const source = await datasetReadOutputJsonlStep({ env, datasetId: sourceDatasetId });
29
+ const source = await datasetReadOutputJsonlStep({ runtime, datasetId: sourceDatasetId });
22
30
  await writeDatasetSandboxFilesStep({
23
- env,
31
+ runtime,
24
32
  sandboxId,
25
33
  files: [{ path: sourcePath, contentBase64: source.contentBase64 }],
26
34
  });
@@ -30,22 +38,22 @@ async function ensureSourcesInSandbox(env, sandboxId, datasetId, sourceDatasetId
30
38
  state.initialized = true;
31
39
  return { sourcePaths, outputPath: getDatasetOutputPath(datasetId) };
32
40
  }
33
- function createTransformDatasetStoryDefinition(params) {
41
+ function createTransformDatasetContextDefinition(params) {
34
42
  const datasetId = params.datasetId ?? id();
35
43
  const model = params.model ?? "openai/gpt-5";
36
- let storyBuilder = createContext("dataset.transform")
37
- .context(async (stored, env) => {
44
+ let contextBuilder = createContext("dataset.transform")
45
+ .context(async (stored, _env, runtime) => {
38
46
  const previous = stored?.content ?? {};
39
47
  const sandboxState = previous?.sandboxState ?? { initialized: false, sourcePaths: [] };
40
48
  const sandboxId = previous?.sandboxId ?? params.sandboxId ?? "";
41
49
  if (!sandboxId) {
42
50
  throw new Error("dataset_sandbox_required");
43
51
  }
44
- const { sourcePaths, outputPath } = await ensureSourcesInSandbox(env, sandboxId, datasetId, params.sourceDatasetIds, sandboxState);
52
+ const { sourcePaths, outputPath } = await ensureSourcesInSandbox(runtime, sandboxId, datasetId, params.sourceDatasetIds, sandboxState);
45
53
  const sourcePreviews = [];
46
54
  for (const sp of sourcePaths) {
47
55
  try {
48
- const preview = await generateSourcePreview(env, sandboxId, sp.path, datasetId);
56
+ const preview = await generateSourcePreview(runtime, sandboxId, sp.path, datasetId);
49
57
  sourcePreviews.push({ datasetId: sp.datasetId, preview });
50
58
  }
51
59
  catch {
@@ -54,7 +62,7 @@ function createTransformDatasetStoryDefinition(params) {
54
62
  }
55
63
  // Persist output schema on the dataset record (so completeDataset validates against it)
56
64
  await datasetUpdateSchemaStep({
57
- env,
65
+ runtime,
58
66
  datasetId,
59
67
  schema: params.outputSchema,
60
68
  status: "schema_complete",
@@ -91,40 +99,40 @@ function createTransformDatasetStoryDefinition(params) {
91
99
  .narrative(async (stored) => {
92
100
  return String(stored?.content?.system ?? "");
93
101
  })
94
- .actions(async (stored, env) => {
102
+ .actions(async (stored, _env, runtime) => {
95
103
  const sandboxId = stored?.content?.sandboxId ?? params.sandboxId ?? "";
96
104
  return {
97
105
  executeCommand: createExecuteCommandTool({
98
106
  datasetId,
99
107
  sandboxId,
100
- env,
108
+ runtime,
101
109
  }),
102
110
  completeDataset: createCompleteDatasetTool({
103
111
  datasetId,
104
112
  sandboxId,
105
- env,
113
+ runtime,
106
114
  }),
107
115
  clearDataset: createClearDatasetTool({
108
116
  datasetId,
109
117
  sandboxId,
110
- env,
118
+ runtime,
111
119
  }),
112
120
  };
113
121
  })
114
122
  .shouldContinue(({ reactionEvent }) => {
115
- return !didToolExecute(reactionEvent, "completeDataset");
123
+ return !didCompleteDatasetSucceed(reactionEvent);
116
124
  });
117
125
  if (params.reactor) {
118
- storyBuilder = storyBuilder.reactor(params.reactor);
126
+ contextBuilder = contextBuilder.reactor(params.reactor);
119
127
  }
120
128
  else {
121
- storyBuilder = storyBuilder.model(model);
129
+ contextBuilder = contextBuilder.model(model);
122
130
  }
123
- const story = storyBuilder.build();
124
- return { datasetId, story };
131
+ const context = contextBuilder.build();
132
+ return { datasetId, context };
125
133
  }
126
- export function createTransformDatasetStory(params) {
127
- const { datasetId, story } = createTransformDatasetStoryDefinition({
134
+ export function createTransformDatasetContext(params) {
135
+ const { datasetId, context } = createTransformDatasetContextDefinition({
128
136
  sourceDatasetIds: params.sourceDatasetIds,
129
137
  outputSchema: params.outputSchema,
130
138
  instructions: params.instructions,
@@ -135,7 +143,7 @@ export function createTransformDatasetStory(params) {
135
143
  });
136
144
  return {
137
145
  datasetId,
138
- async transform(env, prompt) {
146
+ async transform(runtime, options = {}) {
139
147
  const datasetCountText = params.sourceDatasetIds.length === 1
140
148
  ? "the source dataset"
141
149
  : `${params.sourceDatasetIds.length} source datasets`;
@@ -148,22 +156,21 @@ export function createTransformDatasetStory(params) {
148
156
  parts: [
149
157
  {
150
158
  type: "text",
151
- text: prompt ??
159
+ text: options.prompt ??
152
160
  `Transform ${datasetCountText} into a new dataset matching the provided output schema`,
153
161
  },
154
162
  ],
155
163
  },
156
164
  };
157
- const runtime = createEventsReactRuntime(env);
158
- const shell = await story.react(triggerEvent, {
159
- runtime,
165
+ const shell = await context.react(triggerEvent, {
166
+ runtime: runtime,
160
167
  context: { key: `dataset:${datasetId}` },
161
- durable: false,
168
+ durable: options.durable ?? false,
162
169
  options: { silent: true, preventClose: true, sendFinish: false, maxIterations: 20, maxModelSteps: 5 },
163
170
  });
164
- await shell.run;
171
+ await awaitContextRun(shell.run);
165
172
  return { datasetId };
166
173
  },
167
- story,
174
+ context,
168
175
  };
169
176
  }
@@ -1,3 +1,4 @@
1
+ import type { AnyDatasetRuntime } from "../builder/types.js";
1
2
  export type TransformDatasetInput = {
2
3
  datasets: Array<{
3
4
  id: string;
@@ -14,6 +15,6 @@ export type TransformDatasetResult = {
14
15
  };
15
16
  /**
16
17
  * Workflow-compatible dataset transform.
17
- * Executes the transform story and returns datasetId + preview rows.
18
+ * Executes the transform context and returns datasetId + preview rows.
18
19
  */
19
- export declare function transformDataset(input: TransformDatasetInput): Promise<TransformDatasetResult>;
20
+ export declare function transformDataset(runtime: AnyDatasetRuntime, input: TransformDatasetInput): Promise<TransformDatasetResult>;
@@ -1,6 +1,5 @@
1
- import { getContextEnv } from "@ekairos/events/runtime";
2
1
  import { datasetPreviewRowsStep } from "../dataset/steps.js";
3
- import { createTransformDatasetStory } from "./transform-dataset.agent.js";
2
+ import { createTransformDatasetContext } from "./transform-dataset.agent.js";
4
3
  function buildInstructions(input) {
5
4
  const sources = input.datasets
6
5
  .map((d, idx) => {
@@ -22,18 +21,20 @@ function buildInstructions(input) {
22
21
  }
23
22
  /**
24
23
  * Workflow-compatible dataset transform.
25
- * Executes the transform story and returns datasetId + preview rows.
24
+ * Executes the transform context and returns datasetId + preview rows.
26
25
  */
27
- export async function transformDataset(input) {
28
- const env = await getContextEnv();
29
- const { datasetId, story } = createTransformDatasetStory({
26
+ export async function transformDataset(runtime, input) {
27
+ const transformContext = createTransformDatasetContext({
30
28
  sourceDatasetIds: input.datasets.map((d) => d.id),
31
29
  outputSchema: input.outputSchema,
32
30
  instructions: buildInstructions(input),
33
31
  datasetId: input.datasetId,
34
32
  model: input.model,
35
33
  });
36
- await story.transform(env);
37
- const preview = await datasetPreviewRowsStep({ datasetId });
38
- return { datasetId, previewRows: preview.rows };
34
+ await transformContext.transform(runtime);
35
+ const preview = await datasetPreviewRowsStep({
36
+ runtime,
37
+ datasetId: transformContext.datasetId,
38
+ });
39
+ return { datasetId: transformContext.datasetId, previewRows: preview.rows };
39
40
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ekairos/dataset",
3
- "version": "1.22.49-beta.development.0",
3
+ "version": "1.22.50-beta.development.0",
4
4
  "description": "Pulzar Dataset Tools",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -35,6 +35,16 @@
35
35
  "import": "./dist/query/index.js",
36
36
  "default": "./dist/query/index.js"
37
37
  },
38
+ "./agents": {
39
+ "types": "./dist/agents.d.ts",
40
+ "import": "./dist/agents.js",
41
+ "default": "./dist/agents.js"
42
+ },
43
+ "./skill": {
44
+ "types": "./dist/skill.d.ts",
45
+ "import": "./dist/skill.js",
46
+ "default": "./dist/skill.js"
47
+ },
38
48
  "./file/scripts": {
39
49
  "default": "./dist/file/scripts"
40
50
  },
@@ -49,14 +59,15 @@
49
59
  "typecheck": "tsc --noEmit",
50
60
  "typecheck:tests": "tsc --noEmit -p tsconfig.typecheck.json",
51
61
  "test": "vitest run -c vitest.config.mts",
62
+ "test:workflow": "vitest run -c vitest.workflow.config.mts",
52
63
  "test:direct": "vitest run -c vitest.config.mts src/tests/dataset.builder.instant.test.ts",
53
64
  "test:tool": "vitest run -c vitest.config.mts src/tests/materializeDataset.tool.instant.test.ts",
54
65
  "test:ai-sdk:instant": "vitest run -c vitest.codex.config.mts src/tests/materializeDataset.ai-sdk.instant.test.ts"
55
66
  },
56
67
  "dependencies": {
57
- "@ekairos/domain": "^1.22.49-beta.development.0",
58
- "@ekairos/events": "^1.22.49-beta.development.0",
59
- "@ekairos/sandbox": "^1.22.49-beta.development.0",
68
+ "@ekairos/domain": "^1.22.50-beta.development.0",
69
+ "@ekairos/events": "^1.22.50-beta.development.0",
70
+ "@ekairos/sandbox": "^1.22.50-beta.development.0",
60
71
  "@instantdb/admin": "0.22.158",
61
72
  "@instantdb/core": "0.22.142",
62
73
  "ai": "^5.0.44",
@@ -69,7 +80,10 @@
69
80
  "@ekairos/openai-reactor": "workspace:*",
70
81
  "@ekairos/tsconfig": "workspace:*",
71
82
  "@types/node": "^24.5.0",
83
+ "@workflow/serde": "5.0.0-beta.0",
84
+ "@workflow/vitest": "5.0.0-beta.1",
72
85
  "dotenv": "^17.2.3",
73
- "typescript": "^5.9.2"
86
+ "typescript": "^5.9.2",
87
+ "workflow": "5.0.0-beta.1"
74
88
  }
75
89
  }
@@ -1,21 +0,0 @@
1
- import { eventsDomain } from "@ekairos/events";
2
- export type EventsReactRuntime<Env extends Record<string, unknown>> = {
3
- env: Env;
4
- db(): Promise<any>;
5
- resolve(): Promise<{
6
- db: any;
7
- meta: () => {
8
- domain: typeof eventsDomain;
9
- schema: ReturnType<typeof eventsDomain.toInstantSchema>;
10
- context?: unknown;
11
- contextString?: string;
12
- };
13
- }>;
14
- meta: () => {
15
- domain: typeof eventsDomain;
16
- schema: ReturnType<typeof eventsDomain.toInstantSchema>;
17
- context?: unknown;
18
- contextString?: string;
19
- };
20
- };
21
- export declare function createEventsReactRuntime<Env extends Record<string, unknown>>(env: Env): EventsReactRuntime<Env>;
@@ -1,25 +0,0 @@
1
- import { eventsDomain } from "@ekairos/events";
2
- import { getContextRuntime } from "@ekairos/events/runtime";
3
- export function createEventsReactRuntime(env) {
4
- const meta = () => ({
5
- domain: eventsDomain,
6
- schema: eventsDomain.toInstantSchema(),
7
- context: typeof eventsDomain.context === "function" ? eventsDomain.context() : undefined,
8
- contextString: typeof eventsDomain.contextString === "function"
9
- ? eventsDomain.contextString()
10
- : undefined,
11
- });
12
- const runtime = {
13
- env,
14
- async db() {
15
- const resolved = (await getContextRuntime(env));
16
- return resolved.db;
17
- },
18
- async resolve() {
19
- const db = await runtime.db();
20
- return { db, meta };
21
- },
22
- meta,
23
- };
24
- return runtime;
25
- }