@ekairos/structure 1.21.53-beta.0 → 1.21.54-beta.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.
@@ -1 +1 @@
1
- {"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/dataset/steps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/dataset/steps.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { resolveStoryRuntime } from "@ekairos/story/runtime";
1
+ import { getStoryRuntime } from "../runtime";
2
2
  export async function structureGetOrCreateContextStep(params) {
3
3
  "use step";
4
4
  try {
5
- const runtime = await resolveStoryRuntime(params.env);
5
+ const runtime = await getStoryRuntime(params.env);
6
6
  const ctx = await runtime.store.getOrCreateContext({ key: params.contextKey });
7
7
  return { ok: true, data: ctx };
8
8
  }
@@ -14,7 +14,7 @@ export async function structureGetOrCreateContextStep(params) {
14
14
  export async function structureGetContextStep(params) {
15
15
  "use step";
16
16
  try {
17
- const runtime = await resolveStoryRuntime(params.env);
17
+ const runtime = await getStoryRuntime(params.env);
18
18
  const ctx = await runtime.store.getContext({ key: params.contextKey });
19
19
  if (!ctx)
20
20
  return { ok: false, error: "Context not found" };
@@ -28,7 +28,7 @@ export async function structureGetContextStep(params) {
28
28
  export async function structureUpdateContextContentStep(params) {
29
29
  "use step";
30
30
  try {
31
- const runtime = await resolveStoryRuntime(params.env);
31
+ const runtime = await getStoryRuntime(params.env);
32
32
  const updated = await runtime.store.updateContextContent({ key: params.contextKey }, params.content);
33
33
  return { ok: true, data: updated };
34
34
  }
@@ -40,7 +40,7 @@ export async function structureUpdateContextContentStep(params) {
40
40
  export async function structurePatchContextContentStep(params) {
41
41
  "use step";
42
42
  try {
43
- const runtime = await resolveStoryRuntime(params.env);
43
+ const runtime = await getStoryRuntime(params.env);
44
44
  const existing = await runtime.store.getOrCreateContext({ key: params.contextKey });
45
45
  const existingContent = (existing?.content ?? {});
46
46
  const existingStructure = (existingContent?.structure ?? {});
@@ -61,7 +61,7 @@ export async function structurePatchContextContentStep(params) {
61
61
  export async function structureUploadRowsOutputJsonlStep(params) {
62
62
  "use step";
63
63
  try {
64
- const runtime = await resolveStoryRuntime(params.env);
64
+ const runtime = await getStoryRuntime(params.env);
65
65
  const db = runtime.db;
66
66
  const storagePath = `/structure/${params.structureId}/output.jsonl`;
67
67
  const fileBuffer = Buffer.from(params.contentBase64 ?? "", "base64");
@@ -82,7 +82,7 @@ export async function structureUploadRowsOutputJsonlStep(params) {
82
82
  export async function structureLinkRowsOutputFileToContextStep(params) {
83
83
  "use step";
84
84
  try {
85
- const runtime = await resolveStoryRuntime(params.env);
85
+ const runtime = await getStoryRuntime(params.env);
86
86
  const store = runtime.store;
87
87
  const db = runtime.db;
88
88
  const ctx = await store.getOrCreateContext({ key: params.contextKey });
@@ -100,7 +100,7 @@ export async function structureLinkRowsOutputFileToContextStep(params) {
100
100
  export async function structureUnlinkRowsOutputFileFromContextStep(params) {
101
101
  "use step";
102
102
  try {
103
- const runtime = await resolveStoryRuntime(params.env);
103
+ const runtime = await getStoryRuntime(params.env);
104
104
  const store = runtime.store;
105
105
  const db = runtime.db;
106
106
  const ctx = await store.getOrCreateContext({ key: params.contextKey });
@@ -118,7 +118,7 @@ export async function structureUnlinkRowsOutputFileFromContextStep(params) {
118
118
  export async function structureGetContextWithRowsOutputFileStep(params) {
119
119
  "use step";
120
120
  try {
121
- const runtime = await resolveStoryRuntime(params.env);
121
+ const runtime = await getStoryRuntime(params.env);
122
122
  const db = runtime.db;
123
123
  const query = (await db.query({
124
124
  context_contexts: {
@@ -140,7 +140,7 @@ export async function structureReadRowsOutputJsonlStep(params) {
140
140
  "use step";
141
141
  try {
142
142
  const contextKey = `structure:${params.structureId}`;
143
- const runtime = await resolveStoryRuntime(params.env);
143
+ const runtime = await getStoryRuntime(params.env);
144
144
  const db = runtime.db;
145
145
  const query = (await db.query({
146
146
  context_contexts: {
@@ -1 +1 @@
1
- {"version":3,"file":"steps.js","sourceRoot":"","sources":["../../src/dataset/steps.ts"],"names":[],"mappings":"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","sourcesContent":["import { resolveStoryRuntime, type StoryRuntime } from \"@ekairos/story/runtime\"\n\nexport type StructureContextContent = {\n /**\n * IMPORTANT:\n * Story engine persists its own runtime state into `context.content`.\n * To avoid clobbering, all structure metadata is namespaced under `structure`.\n */\n structure?: {\n kind?: \"ekairos.structure\"\n version?: number\n structureId?: string\n orgId?: string\n createdAt?: number\n updatedAt?: number\n mode?: \"auto\" | \"schema\"\n output?: \"rows\" | \"object\"\n instructions?: string\n sources?: any[]\n outputSchema?: { title?: string; description?: string; schema: any }\n state?: string\n metrics?: { calculatedTotalRows?: number; actualGeneratedRowCount?: number }\n outputs?: {\n rows?: { format: \"jsonl\"; fileId: string; storagePath: string; rowCount?: number }\n object?: { value: any }\n }\n error?: { message: string }\n }\n}\n\nexport async function structureGetOrCreateContextStep(params: {\n env: any\n contextKey: string\n}): Promise<{ ok: true; data: any } | { ok: false; error: string }> {\n \"use step\"\n try {\n const runtime: StoryRuntime = await resolveStoryRuntime(params.env)\n const ctx = await runtime.store.getOrCreateContext({ key: params.contextKey })\n return { ok: true, data: ctx }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n return { ok: false, error: message }\n }\n}\n\nexport async function structureGetContextStep(params: {\n env: any\n contextKey: string\n}): Promise<{ ok: true; data: any } | { ok: false; error: string }> {\n \"use step\"\n try {\n const runtime: StoryRuntime = await resolveStoryRuntime(params.env)\n const ctx = await runtime.store.getContext({ key: params.contextKey })\n if (!ctx) return { ok: false, error: \"Context not found\" }\n return { ok: true, data: ctx }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n return { ok: false, error: message }\n }\n}\n\nexport async function structureUpdateContextContentStep(params: {\n env: any\n contextKey: string\n content: StructureContextContent\n}): Promise<{ ok: true; data: any } | { ok: false; error: string }> {\n \"use step\"\n try {\n const runtime: StoryRuntime = await resolveStoryRuntime(params.env)\n const updated = await runtime.store.updateContextContent({ key: params.contextKey }, params.content)\n return { ok: true, data: updated }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n return { ok: false, error: message }\n }\n}\n\nexport async function structurePatchContextContentStep(params: {\n env: any\n contextKey: string\n patch: Partial<StructureContextContent>\n}): Promise<{ ok: true; data: any } | { ok: false; error: string }> {\n \"use step\"\n try {\n const runtime: StoryRuntime = await resolveStoryRuntime(params.env)\n const existing = await runtime.store.getOrCreateContext({ key: params.contextKey })\n const existingContent = (existing?.content ?? {}) as Record<string, unknown>\n const existingStructure = (existingContent?.structure ?? {}) as Record<string, unknown>\n const patchStructure = ((params.patch as StructureContextContent)?.structure ?? {}) as Record<string, unknown>\n\n const next = {\n ...existingContent,\n ...params.patch,\n structure: { ...existingStructure, ...patchStructure },\n }\n const updated = await runtime.store.updateContextContent({ key: params.contextKey }, next as any)\n return { ok: true, data: updated }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n return { ok: false, error: message }\n }\n}\n\nexport async function structureUploadRowsOutputJsonlStep(params: {\n env: any\n structureId: string\n contentBase64: string\n}): Promise<{ ok: true; data: { fileId: string; storagePath: string } } | { ok: false; error: string }> {\n \"use step\"\n try {\n const runtime: StoryRuntime = await resolveStoryRuntime(params.env)\n const db = runtime.db\n const storagePath = `/structure/${params.structureId}/output.jsonl`\n const fileBuffer = Buffer.from(params.contentBase64 ?? \"\", \"base64\")\n const uploadResult = await db.storage.uploadFile(storagePath, fileBuffer, {\n contentType: \"application/x-ndjson\",\n contentDisposition: \"output.jsonl\",\n })\n const fileId = uploadResult?.data?.id\n if (!fileId) return { ok: false, error: \"Failed to upload file to storage\" }\n return { ok: true, data: { fileId, storagePath } }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n return { ok: false, error: message }\n }\n}\n\nexport async function structureLinkRowsOutputFileToContextStep(params: {\n env: any\n contextKey: string\n fileId: string\n}): Promise<{ ok: true } | { ok: false; error: string }> {\n \"use step\"\n try {\n const runtime: StoryRuntime = await resolveStoryRuntime(params.env)\n const store = runtime.store\n const db = runtime.db\n const ctx = await store.getOrCreateContext({ key: params.contextKey })\n const ctxId = ctx?.id\n if (!ctxId) return { ok: false, error: \"Context not found\" }\n\n await db.transact([db.tx.context_contexts[ctxId].link({ structure_output_file: params.fileId })])\n return { ok: true }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n return { ok: false, error: message }\n }\n}\n\nexport async function structureUnlinkRowsOutputFileFromContextStep(params: {\n env: any\n contextKey: string\n fileId: string\n}): Promise<{ ok: true } | { ok: false; error: string }> {\n \"use step\"\n try {\n const runtime: StoryRuntime = await resolveStoryRuntime(params.env)\n const store = runtime.store\n const db = runtime.db\n const ctx = await store.getOrCreateContext({ key: params.contextKey })\n const ctxId = ctx?.id\n if (!ctxId) return { ok: false, error: \"Context not found\" }\n\n await db.transact([db.tx.context_contexts[ctxId].unlink({ structure_output_file: params.fileId })])\n return { ok: true }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n return { ok: false, error: message }\n }\n}\n\nexport async function structureGetContextWithRowsOutputFileStep(params: {\n env: any\n contextKey: string\n}): Promise<{ ok: true; data: any } | { ok: false; error: string }> {\n \"use step\"\n try {\n const runtime: StoryRuntime = await resolveStoryRuntime(params.env)\n const db = runtime.db\n const query = (await db.query({\n context_contexts: {\n $: { where: { key: params.contextKey }, limit: 1 },\n structure_output_file: {},\n },\n })) as any\n const row = query.context_contexts?.[0]\n if (!row) return { ok: false, error: \"Context not found\" }\n return { ok: true, data: row }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n return { ok: false, error: message }\n }\n}\n\nexport async function structureReadRowsOutputJsonlStep(params: {\n env: any\n structureId: string\n}): Promise<{ ok: true; data: { contentBase64: string } } | { ok: false; error: string }> {\n \"use step\"\n try {\n const contextKey = `structure:${params.structureId}`\n const runtime: StoryRuntime = await resolveStoryRuntime(params.env)\n const db = runtime.db\n const query = (await db.query({\n context_contexts: {\n $: { where: { key: contextKey }, limit: 1 },\n structure_output_file: {},\n },\n })) as any\n const ctx = query.context_contexts?.[0]\n if (!ctx) return { ok: false, error: \"Context not found\" }\n const linked = Array.isArray(ctx?.structure_output_file) ? ctx.structure_output_file[0] : ctx.structure_output_file\n const url = linked?.url\n if (!url) return { ok: false, error: \"Rows output file not found\" }\n\n const fileBuffer = await fetch(url).then((r) => r.arrayBuffer())\n return { ok: true, data: { contentBase64: Buffer.from(fileBuffer).toString(\"base64\") } }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n return { ok: false, error: message }\n }\n}\n\n"]}
1
+ {"version":3,"file":"steps.js","sourceRoot":"","sources":["../../src/dataset/steps.ts"],"names":[],"mappings":"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","sourcesContent":["import type { StoryRuntime } from \"@ekairos/story/runtime\"\nimport { getStoryRuntime } from \"../runtime\"\n\nexport type StructureContextContent = {\n /**\n * IMPORTANT:\n * Story engine persists its own runtime state into `context.content`.\n * To avoid clobbering, all structure metadata is namespaced under `structure`.\n */\n structure?: {\n kind?: \"ekairos.structure\"\n version?: number\n structureId?: string\n orgId?: string\n createdAt?: number\n updatedAt?: number\n mode?: \"auto\" | \"schema\"\n output?: \"rows\" | \"object\"\n instructions?: string\n sources?: any[]\n outputSchema?: { title?: string; description?: string; schema: any }\n state?: string\n metrics?: { calculatedTotalRows?: number; actualGeneratedRowCount?: number }\n outputs?: {\n rows?: { format: \"jsonl\"; fileId: string; storagePath: string; rowCount?: number }\n object?: { value: any }\n }\n error?: { message: string }\n }\n}\n\nexport async function structureGetOrCreateContextStep(params: {\n env: any\n contextKey: string\n}): Promise<{ ok: true; data: any } | { ok: false; error: string }> {\n \"use step\"\n try {\n const runtime: StoryRuntime = await getStoryRuntime(params.env)\n const ctx = await runtime.store.getOrCreateContext({ key: params.contextKey })\n return { ok: true, data: ctx }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n return { ok: false, error: message }\n }\n}\n\nexport async function structureGetContextStep(params: {\n env: any\n contextKey: string\n}): Promise<{ ok: true; data: any } | { ok: false; error: string }> {\n \"use step\"\n try {\n const runtime: StoryRuntime = await getStoryRuntime(params.env)\n const ctx = await runtime.store.getContext({ key: params.contextKey })\n if (!ctx) return { ok: false, error: \"Context not found\" }\n return { ok: true, data: ctx }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n return { ok: false, error: message }\n }\n}\n\nexport async function structureUpdateContextContentStep(params: {\n env: any\n contextKey: string\n content: StructureContextContent\n}): Promise<{ ok: true; data: any } | { ok: false; error: string }> {\n \"use step\"\n try {\n const runtime: StoryRuntime = await getStoryRuntime(params.env)\n const updated = await runtime.store.updateContextContent({ key: params.contextKey }, params.content)\n return { ok: true, data: updated }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n return { ok: false, error: message }\n }\n}\n\nexport async function structurePatchContextContentStep(params: {\n env: any\n contextKey: string\n patch: Partial<StructureContextContent>\n}): Promise<{ ok: true; data: any } | { ok: false; error: string }> {\n \"use step\"\n try {\n const runtime: StoryRuntime = await getStoryRuntime(params.env)\n const existing = await runtime.store.getOrCreateContext({ key: params.contextKey })\n const existingContent = (existing?.content ?? {}) as Record<string, unknown>\n const existingStructure = (existingContent?.structure ?? {}) as Record<string, unknown>\n const patchStructure = ((params.patch as StructureContextContent)?.structure ?? {}) as Record<string, unknown>\n\n const next = {\n ...existingContent,\n ...params.patch,\n structure: { ...existingStructure, ...patchStructure },\n }\n const updated = await runtime.store.updateContextContent({ key: params.contextKey }, next as any)\n return { ok: true, data: updated }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n return { ok: false, error: message }\n }\n}\n\nexport async function structureUploadRowsOutputJsonlStep(params: {\n env: any\n structureId: string\n contentBase64: string\n}): Promise<{ ok: true; data: { fileId: string; storagePath: string } } | { ok: false; error: string }> {\n \"use step\"\n try {\n const runtime: StoryRuntime = await getStoryRuntime(params.env)\n const db = runtime.db\n const storagePath = `/structure/${params.structureId}/output.jsonl`\n const fileBuffer = Buffer.from(params.contentBase64 ?? \"\", \"base64\")\n const uploadResult = await db.storage.uploadFile(storagePath, fileBuffer, {\n contentType: \"application/x-ndjson\",\n contentDisposition: \"output.jsonl\",\n })\n const fileId = uploadResult?.data?.id\n if (!fileId) return { ok: false, error: \"Failed to upload file to storage\" }\n return { ok: true, data: { fileId, storagePath } }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n return { ok: false, error: message }\n }\n}\n\nexport async function structureLinkRowsOutputFileToContextStep(params: {\n env: any\n contextKey: string\n fileId: string\n}): Promise<{ ok: true } | { ok: false; error: string }> {\n \"use step\"\n try {\n const runtime: StoryRuntime = await getStoryRuntime(params.env)\n const store = runtime.store\n const db = runtime.db\n const ctx = await store.getOrCreateContext({ key: params.contextKey })\n const ctxId = ctx?.id\n if (!ctxId) return { ok: false, error: \"Context not found\" }\n\n await db.transact([db.tx.context_contexts[ctxId].link({ structure_output_file: params.fileId })])\n return { ok: true }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n return { ok: false, error: message }\n }\n}\n\nexport async function structureUnlinkRowsOutputFileFromContextStep(params: {\n env: any\n contextKey: string\n fileId: string\n}): Promise<{ ok: true } | { ok: false; error: string }> {\n \"use step\"\n try {\n const runtime: StoryRuntime = await getStoryRuntime(params.env)\n const store = runtime.store\n const db = runtime.db\n const ctx = await store.getOrCreateContext({ key: params.contextKey })\n const ctxId = ctx?.id\n if (!ctxId) return { ok: false, error: \"Context not found\" }\n\n await db.transact([db.tx.context_contexts[ctxId].unlink({ structure_output_file: params.fileId })])\n return { ok: true }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n return { ok: false, error: message }\n }\n}\n\nexport async function structureGetContextWithRowsOutputFileStep(params: {\n env: any\n contextKey: string\n}): Promise<{ ok: true; data: any } | { ok: false; error: string }> {\n \"use step\"\n try {\n const runtime: StoryRuntime = await getStoryRuntime(params.env)\n const db = runtime.db\n const query = (await db.query({\n context_contexts: {\n $: { where: { key: params.contextKey }, limit: 1 },\n structure_output_file: {},\n },\n })) as any\n const row = query.context_contexts?.[0]\n if (!row) return { ok: false, error: \"Context not found\" }\n return { ok: true, data: row }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n return { ok: false, error: message }\n }\n}\n\nexport async function structureReadRowsOutputJsonlStep(params: {\n env: any\n structureId: string\n}): Promise<{ ok: true; data: { contentBase64: string } } | { ok: false; error: string }> {\n \"use step\"\n try {\n const contextKey = `structure:${params.structureId}`\n const runtime: StoryRuntime = await getStoryRuntime(params.env)\n const db = runtime.db\n const query = (await db.query({\n context_contexts: {\n $: { where: { key: contextKey }, limit: 1 },\n structure_output_file: {},\n },\n })) as any\n const ctx = query.context_contexts?.[0]\n if (!ctx) return { ok: false, error: \"Context not found\" }\n const linked = Array.isArray(ctx?.structure_output_file) ? ctx.structure_output_file[0] : ctx.structure_output_file\n const url = linked?.url\n if (!url) return { ok: false, error: \"Rows output file not found\" }\n\n const fileBuffer = await fetch(url).then((r) => r.arrayBuffer())\n return { ok: true, data: { contentBase64: Buffer.from(fileBuffer).toString(\"base64\") } }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n return { ok: false, error: message }\n }\n}\n\n"]}
@@ -1,8 +1,8 @@
1
- import { resolveStoryRuntime } from "@ekairos/story/runtime";
1
+ import { getStoryRuntime } from "../runtime";
2
2
  import { DatasetService } from "../service";
3
3
  export async function readInstantFileStep(params) {
4
4
  "use step";
5
- const runtime = (await resolveStoryRuntime(params.env));
5
+ const runtime = (await getStoryRuntime(params.env));
6
6
  const db = runtime.db;
7
7
  const service = new DatasetService(db);
8
8
  const file = await service.getFileById(params.fileId);
@@ -1 +1 @@
1
- {"version":3,"file":"steps.js","sourceRoot":"","sources":["../../src/file/steps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAGzC;IACC,UAAU,CAAA;IACV,MAAM,OAAO,GAAG,CAAC,MAAM,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAoB,CAAA;IAC1E,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAA;IACrB,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,EAAE,CAAC,CAAA;IACtC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACrD,MAAM,OAAO,GAAI,IAAuE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAA;IACrG,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,CAAA;IACxB,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;IAC9E,OAAO;QACL,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACzD,kBAAkB,EAAG,OAAmC,CAAC,qBAAqB,CAAuB;KACtG,CAAA;AACH,CAAC","sourcesContent":["import { resolveStoryRuntime } from \"@ekairos/story/runtime\"\nimport { DatasetService } from \"../service\"\n\nexport async function readInstantFileStep(params: {\n env: any\n fileId: string\n}): Promise<{ contentBase64: string; contentDisposition?: string }> {\n \"use step\"\n const runtime = (await resolveStoryRuntime(params.env)) as { db: unknown }\n const db = runtime.db\n const service = new DatasetService(db)\n const file = await service.getFileById(params.fileId)\n const fileRow = (file as { $files?: Array<{ url?: string } & Record<string, unknown>> })?.$files?.[0]\n const url = fileRow?.url\n if (!url) {\n throw new Error(\"File not found or URL missing\")\n }\n const fileBuffer = await fetch(url).then((response) => response.arrayBuffer())\n return {\n contentBase64: Buffer.from(fileBuffer).toString(\"base64\"),\n contentDisposition: (fileRow as Record<string, unknown>)[\"content-disposition\"] as string | undefined,\n }\n}\n\n"]}
1
+ {"version":3,"file":"steps.js","sourceRoot":"","sources":["../../src/file/steps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAGzC;IACC,UAAU,CAAA;IACV,MAAM,OAAO,GAAG,CAAC,MAAM,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAoB,CAAA;IACtE,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAA;IACrB,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,EAAE,CAAC,CAAA;IACtC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACrD,MAAM,OAAO,GAAI,IAAuE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAA;IACrG,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,CAAA;IACxB,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;IAC9E,OAAO;QACL,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACzD,kBAAkB,EAAG,OAAmC,CAAC,qBAAqB,CAAuB;KACtG,CAAA;AACH,CAAC","sourcesContent":["import { getStoryRuntime } from \"../runtime\"\nimport { DatasetService } from \"../service\"\n\nexport async function readInstantFileStep(params: {\n env: any\n fileId: string\n}): Promise<{ contentBase64: string; contentDisposition?: string }> {\n \"use step\"\n const runtime = (await getStoryRuntime(params.env)) as { db: unknown }\n const db = runtime.db\n const service = new DatasetService(db)\n const file = await service.getFileById(params.fileId)\n const fileRow = (file as { $files?: Array<{ url?: string } & Record<string, unknown>> })?.$files?.[0]\n const url = fileRow?.url\n if (!url) {\n throw new Error(\"File not found or URL missing\")\n }\n const fileBuffer = await fetch(url).then((response) => response.arrayBuffer())\n return {\n contentBase64: Buffer.from(fileBuffer).toString(\"base64\"),\n contentDisposition: (fileRow as Record<string, unknown>)[\"content-disposition\"] as string | undefined,\n }\n}\n\n"]}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Internal helper to resolve Story runtime from within workflow steps.
3
+ *
4
+ * Why dynamic import?
5
+ * - Some bundlers (notably Turbopack step bundles) can drop/hoist static imports in "use step" modules,
6
+ * causing `ReferenceError: resolveStoryRuntime is not defined`.
7
+ * - Using a dynamic import keeps the symbol resolution local to the step runtime.
8
+ */
9
+ export declare function getStoryRuntime(env: any): Promise<import("@ekairos/story/runtime").StoryRuntime>;
10
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,GAAG,0DAG7C"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Internal helper to resolve Story runtime from within workflow steps.
3
+ *
4
+ * Why dynamic import?
5
+ * - Some bundlers (notably Turbopack step bundles) can drop/hoist static imports in "use step" modules,
6
+ * causing `ReferenceError: resolveStoryRuntime is not defined`.
7
+ * - Using a dynamic import keeps the symbol resolution local to the step runtime.
8
+ */
9
+ export async function getStoryRuntime(env) {
10
+ const { resolveStoryRuntime } = await import("@ekairos/story/runtime");
11
+ return await resolveStoryRuntime(env);
12
+ }
13
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAQ;IAC5C,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAA;IACtE,OAAO,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAA;AACvC,CAAC","sourcesContent":["/**\r\n * Internal helper to resolve Story runtime from within workflow steps.\r\n *\r\n * Why dynamic import?\r\n * - Some bundlers (notably Turbopack step bundles) can drop/hoist static imports in \"use step\" modules,\r\n * causing `ReferenceError: resolveStoryRuntime is not defined`.\r\n * - Using a dynamic import keeps the symbol resolution local to the step runtime.\r\n */\r\nexport async function getStoryRuntime(env: any) {\r\n const { resolveStoryRuntime } = await import(\"@ekairos/story/runtime\")\r\n return await resolveStoryRuntime(env)\r\n}\r\n\r\n"]}
@@ -1,9 +1,9 @@
1
- import { resolveStoryRuntime } from "@ekairos/story/runtime";
1
+ import { getStoryRuntime } from "../runtime";
2
2
  export async function createDatasetSandboxStep(params) {
3
3
  "use step";
4
4
  console.log("[ekairos/structure] sandbox.step createSandbox begin");
5
5
  console.log("[ekairos/structure] sandbox.step createSandbox runtime", params.runtime);
6
- const db = (await resolveStoryRuntime(params.env)).db;
6
+ const db = (await getStoryRuntime(params.env)).db;
7
7
  const { SandboxService } = (await import("@ekairos/sandbox"));
8
8
  const service = new SandboxService(db);
9
9
  const created = await service.createSandbox(params);
@@ -18,7 +18,7 @@ export async function runDatasetSandboxCommandStep(params) {
18
18
  console.log("[ekairos/structure] sandbox.step runCommand begin");
19
19
  console.log("[ekairos/structure] sandbox.step runCommand sandboxId", params.sandboxId);
20
20
  console.log("[ekairos/structure] sandbox.step runCommand cmd", params.cmd);
21
- const db = (await resolveStoryRuntime(params.env)).db;
21
+ const db = (await getStoryRuntime(params.env)).db;
22
22
  const { SandboxService } = (await import("@ekairos/sandbox"));
23
23
  const service = new SandboxService(db);
24
24
  const result = await service.runCommand(params.sandboxId, params.cmd, params.args ?? []);
@@ -38,7 +38,7 @@ export async function writeDatasetSandboxFilesStep(params) {
38
38
  console.log("[ekairos/structure] sandbox.step writeFiles begin");
39
39
  console.log("[ekairos/structure] sandbox.step writeFiles sandboxId", params.sandboxId);
40
40
  console.log("[ekairos/structure] sandbox.step writeFiles paths", params.files.map((f) => f.path));
41
- const db = (await resolveStoryRuntime(params.env)).db;
41
+ const db = (await getStoryRuntime(params.env)).db;
42
42
  const { SandboxService } = (await import("@ekairos/sandbox"));
43
43
  const service = new SandboxService(db);
44
44
  const result = await service.writeFiles(params.sandboxId, params.files);
@@ -67,7 +67,7 @@ export async function readDatasetSandboxFileStep(params) {
67
67
  console.log("[ekairos/structure] sandbox.step readFile begin");
68
68
  console.log("[ekairos/structure] sandbox.step readFile sandboxId", params.sandboxId);
69
69
  console.log("[ekairos/structure] sandbox.step readFile path", params.path);
70
- const db = (await resolveStoryRuntime(params.env)).db;
70
+ const db = (await getStoryRuntime(params.env)).db;
71
71
  const { SandboxService } = (await import("@ekairos/sandbox"));
72
72
  const service = new SandboxService(db);
73
73
  const result = await service.readFile(params.sandboxId, params.path);
@@ -93,7 +93,7 @@ export async function stopDatasetSandboxStep(params) {
93
93
  "use step";
94
94
  console.log("[ekairos/structure] sandbox.step stopSandbox begin");
95
95
  console.log("[ekairos/structure] sandbox.step stopSandbox sandboxId", params.sandboxId);
96
- const db = (await resolveStoryRuntime(params.env)).db;
96
+ const db = (await getStoryRuntime(params.env)).db;
97
97
  const { SandboxService } = (await import("@ekairos/sandbox"));
98
98
  const service = new SandboxService(db);
99
99
  const result = await service.stopSandbox(params.sandboxId);
@@ -1 +1 @@
1
- {"version":3,"file":"steps.js","sourceRoot":"","sources":["../../src/sandbox/steps.ts"],"names":[],"mappings":"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","sourcesContent":["import { resolveStoryRuntime } from \"@ekairos/story/runtime\"\n\nexport type DatasetSandboxId = string\n\nexport type CreateDatasetSandboxParams = {\n runtime?: string\n timeoutMs?: number\n ports?: number[]\n resources?: { vcpus?: number }\n purpose?: string\n params?: Record<string, any>\n}\n\nexport type DatasetSandboxRunCommandResult = {\n exitCode: number\n stdout: string\n stderr: string\n}\n\nexport async function createDatasetSandboxStep(\n params: { env: any } & CreateDatasetSandboxParams,\n): Promise<{ sandboxId: DatasetSandboxId }> {\n \"use step\"\n console.log(\"[ekairos/structure] sandbox.step createSandbox begin\")\n console.log(\"[ekairos/structure] sandbox.step createSandbox runtime\", params.runtime)\n const db = (await resolveStoryRuntime(params.env) as any).db\n const { SandboxService } = (await import(\"@ekairos/sandbox\")) as any\n const service = new SandboxService(db)\n const created = await service.createSandbox(params)\n if (!created.ok) throw new Error(created.error)\n console.log(\"[ekairos/structure] sandbox.step createSandbox ok\")\n console.log(\"[ekairos/structure] sandbox.step createSandbox sandboxId\", created.data.sandboxId)\n return { sandboxId: created.data.sandboxId }\n}\n\nexport async function runDatasetSandboxCommandStep(params: {\n env: any\n sandboxId: DatasetSandboxId\n cmd: string\n args?: string[]\n}): Promise<DatasetSandboxRunCommandResult> {\n \"use step\"\n console.log(\"[ekairos/structure] sandbox.step runCommand begin\")\n console.log(\"[ekairos/structure] sandbox.step runCommand sandboxId\", params.sandboxId)\n console.log(\"[ekairos/structure] sandbox.step runCommand cmd\", params.cmd)\n const db = (await resolveStoryRuntime(params.env) as any).db\n const { SandboxService } = (await import(\"@ekairos/sandbox\")) as any\n const service = new SandboxService(db)\n const result = await service.runCommand(params.sandboxId, params.cmd, params.args ?? [])\n if (!result.ok) throw new Error(result.error)\n const normalized = {\n exitCode: result.data.exitCode ?? (result.data.success ? 0 : 1),\n stdout: result.data.output ?? \"\",\n stderr: result.data.error ?? \"\",\n }\n console.log(\"[ekairos/structure] sandbox.step runCommand ok\")\n console.log(\"[ekairos/structure] sandbox.step runCommand exitCode\", normalized.exitCode)\n return normalized\n}\n\nexport async function writeDatasetSandboxFilesStep(params: {\n env: any\n sandboxId: DatasetSandboxId\n files: Array<{ path: string; contentBase64: string }>\n}): Promise<void> {\n \"use step\"\n console.log(\"[ekairos/structure] sandbox.step writeFiles begin\")\n console.log(\"[ekairos/structure] sandbox.step writeFiles sandboxId\", params.sandboxId)\n console.log(\n \"[ekairos/structure] sandbox.step writeFiles paths\",\n params.files.map((f) => f.path),\n )\n const db = (await resolveStoryRuntime(params.env) as any).db\n const { SandboxService } = (await import(\"@ekairos/sandbox\")) as any\n const service = new SandboxService(db)\n const result = await service.writeFiles(params.sandboxId, params.files)\n if (!result.ok) throw new Error(result.error)\n console.log(\"[ekairos/structure] sandbox.step writeFiles ok\")\n}\n\n/**\n * Workflow-safe helper:\n * Keep base64 encoding inside the step runtime (Node),\n * so the workflow runtime never needs `Buffer`.\n *\n * Input/Output are serializable.\n */\nexport async function writeDatasetSandboxTextFileStep(params: {\n env: any\n sandboxId: DatasetSandboxId\n path: string\n text: string\n}): Promise<void> {\n \"use step\"\n const contentBase64 = Buffer.from(String(params.text ?? \"\"), \"utf-8\").toString(\"base64\")\n await writeDatasetSandboxFilesStep({\n env: params.env,\n sandboxId: params.sandboxId,\n files: [{ path: params.path, contentBase64 }],\n })\n}\n\nexport async function readDatasetSandboxFileStep(params: {\n env: any\n sandboxId: DatasetSandboxId\n path: string\n}): Promise<{ contentBase64: string }> {\n \"use step\"\n console.log(\"[ekairos/structure] sandbox.step readFile begin\")\n console.log(\"[ekairos/structure] sandbox.step readFile sandboxId\", params.sandboxId)\n console.log(\"[ekairos/structure] sandbox.step readFile path\", params.path)\n const db = (await resolveStoryRuntime(params.env) as any).db\n const { SandboxService } = (await import(\"@ekairos/sandbox\")) as any\n const service = new SandboxService(db)\n const result = await service.readFile(params.sandboxId, params.path)\n if (!result.ok) throw new Error(result.error)\n console.log(\"[ekairos/structure] sandbox.step readFile ok\")\n return result.data\n}\n\n/**\n * Workflow-safe helper:\n * Decode base64 -> utf-8 inside the step runtime (Node),\n * so the workflow runtime never needs `Buffer`.\n *\n * Input/Output are serializable.\n */\nexport async function readDatasetSandboxTextFileStep(params: {\n env: any\n sandboxId: DatasetSandboxId\n path: string\n}): Promise<{ text: string }> {\n \"use step\"\n const res = await readDatasetSandboxFileStep(params)\n const text = Buffer.from(res.contentBase64 ?? \"\", \"base64\").toString(\"utf-8\")\n return { text }\n}\n\nexport async function stopDatasetSandboxStep(params: { env: any; sandboxId: DatasetSandboxId }): Promise<void> {\n \"use step\"\n console.log(\"[ekairos/structure] sandbox.step stopSandbox begin\")\n console.log(\"[ekairos/structure] sandbox.step stopSandbox sandboxId\", params.sandboxId)\n const db = (await resolveStoryRuntime(params.env) as any).db\n const { SandboxService } = (await import(\"@ekairos/sandbox\")) as any\n const service = new SandboxService(db)\n const result = await service.stopSandbox(params.sandboxId)\n if (!result.ok) throw new Error(result.error)\n console.log(\"[ekairos/structure] sandbox.step stopSandbox ok\")\n}\n\n"]}
1
+ {"version":3,"file":"steps.js","sourceRoot":"","sources":["../../src/sandbox/steps.ts"],"names":[],"mappings":"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","sourcesContent":["import { getStoryRuntime } from \"../runtime\"\n\nexport type DatasetSandboxId = string\n\nexport type CreateDatasetSandboxParams = {\n runtime?: string\n timeoutMs?: number\n ports?: number[]\n resources?: { vcpus?: number }\n purpose?: string\n params?: Record<string, any>\n}\n\nexport type DatasetSandboxRunCommandResult = {\n exitCode: number\n stdout: string\n stderr: string\n}\n\nexport async function createDatasetSandboxStep(\n params: { env: any } & CreateDatasetSandboxParams,\n): Promise<{ sandboxId: DatasetSandboxId }> {\n \"use step\"\n console.log(\"[ekairos/structure] sandbox.step createSandbox begin\")\n console.log(\"[ekairos/structure] sandbox.step createSandbox runtime\", params.runtime)\n const db = (await getStoryRuntime(params.env) as any).db\n const { SandboxService } = (await import(\"@ekairos/sandbox\")) as any\n const service = new SandboxService(db)\n const created = await service.createSandbox(params)\n if (!created.ok) throw new Error(created.error)\n console.log(\"[ekairos/structure] sandbox.step createSandbox ok\")\n console.log(\"[ekairos/structure] sandbox.step createSandbox sandboxId\", created.data.sandboxId)\n return { sandboxId: created.data.sandboxId }\n}\n\nexport async function runDatasetSandboxCommandStep(params: {\n env: any\n sandboxId: DatasetSandboxId\n cmd: string\n args?: string[]\n}): Promise<DatasetSandboxRunCommandResult> {\n \"use step\"\n console.log(\"[ekairos/structure] sandbox.step runCommand begin\")\n console.log(\"[ekairos/structure] sandbox.step runCommand sandboxId\", params.sandboxId)\n console.log(\"[ekairos/structure] sandbox.step runCommand cmd\", params.cmd)\n const db = (await getStoryRuntime(params.env) as any).db\n const { SandboxService } = (await import(\"@ekairos/sandbox\")) as any\n const service = new SandboxService(db)\n const result = await service.runCommand(params.sandboxId, params.cmd, params.args ?? [])\n if (!result.ok) throw new Error(result.error)\n const normalized = {\n exitCode: result.data.exitCode ?? (result.data.success ? 0 : 1),\n stdout: result.data.output ?? \"\",\n stderr: result.data.error ?? \"\",\n }\n console.log(\"[ekairos/structure] sandbox.step runCommand ok\")\n console.log(\"[ekairos/structure] sandbox.step runCommand exitCode\", normalized.exitCode)\n return normalized\n}\n\nexport async function writeDatasetSandboxFilesStep(params: {\n env: any\n sandboxId: DatasetSandboxId\n files: Array<{ path: string; contentBase64: string }>\n}): Promise<void> {\n \"use step\"\n console.log(\"[ekairos/structure] sandbox.step writeFiles begin\")\n console.log(\"[ekairos/structure] sandbox.step writeFiles sandboxId\", params.sandboxId)\n console.log(\n \"[ekairos/structure] sandbox.step writeFiles paths\",\n params.files.map((f) => f.path),\n )\n const db = (await getStoryRuntime(params.env) as any).db\n const { SandboxService } = (await import(\"@ekairos/sandbox\")) as any\n const service = new SandboxService(db)\n const result = await service.writeFiles(params.sandboxId, params.files)\n if (!result.ok) throw new Error(result.error)\n console.log(\"[ekairos/structure] sandbox.step writeFiles ok\")\n}\n\n/**\n * Workflow-safe helper:\n * Keep base64 encoding inside the step runtime (Node),\n * so the workflow runtime never needs `Buffer`.\n *\n * Input/Output are serializable.\n */\nexport async function writeDatasetSandboxTextFileStep(params: {\n env: any\n sandboxId: DatasetSandboxId\n path: string\n text: string\n}): Promise<void> {\n \"use step\"\n const contentBase64 = Buffer.from(String(params.text ?? \"\"), \"utf-8\").toString(\"base64\")\n await writeDatasetSandboxFilesStep({\n env: params.env,\n sandboxId: params.sandboxId,\n files: [{ path: params.path, contentBase64 }],\n })\n}\n\nexport async function readDatasetSandboxFileStep(params: {\n env: any\n sandboxId: DatasetSandboxId\n path: string\n}): Promise<{ contentBase64: string }> {\n \"use step\"\n console.log(\"[ekairos/structure] sandbox.step readFile begin\")\n console.log(\"[ekairos/structure] sandbox.step readFile sandboxId\", params.sandboxId)\n console.log(\"[ekairos/structure] sandbox.step readFile path\", params.path)\n const db = (await getStoryRuntime(params.env) as any).db\n const { SandboxService } = (await import(\"@ekairos/sandbox\")) as any\n const service = new SandboxService(db)\n const result = await service.readFile(params.sandboxId, params.path)\n if (!result.ok) throw new Error(result.error)\n console.log(\"[ekairos/structure] sandbox.step readFile ok\")\n return result.data\n}\n\n/**\n * Workflow-safe helper:\n * Decode base64 -> utf-8 inside the step runtime (Node),\n * so the workflow runtime never needs `Buffer`.\n *\n * Input/Output are serializable.\n */\nexport async function readDatasetSandboxTextFileStep(params: {\n env: any\n sandboxId: DatasetSandboxId\n path: string\n}): Promise<{ text: string }> {\n \"use step\"\n const res = await readDatasetSandboxFileStep(params)\n const text = Buffer.from(res.contentBase64 ?? \"\", \"base64\").toString(\"utf-8\")\n return { text }\n}\n\nexport async function stopDatasetSandboxStep(params: { env: any; sandboxId: DatasetSandboxId }): Promise<void> {\n \"use step\"\n console.log(\"[ekairos/structure] sandbox.step stopSandbox begin\")\n console.log(\"[ekairos/structure] sandbox.step stopSandbox sandboxId\", params.sandboxId)\n const db = (await getStoryRuntime(params.env) as any).db\n const { SandboxService } = (await import(\"@ekairos/sandbox\")) as any\n const service = new SandboxService(db)\n const result = await service.stopSandbox(params.sandboxId)\n if (!result.ok) throw new Error(result.error)\n console.log(\"[ekairos/structure] sandbox.step stopSandbox ok\")\n}\n\n"]}
@@ -1,4 +1,4 @@
1
- import { resolveStoryRuntime } from "@ekairos/story/runtime";
1
+ import { getStoryRuntime } from "../runtime";
2
2
  function isToolCompletePart(value) {
3
3
  if (!value || typeof value !== "object")
4
4
  return false;
@@ -23,7 +23,7 @@ export async function structureCommitFromEventsStep(params) {
23
23
  "use step";
24
24
  const contextKey = `structure:${params.structureId}`;
25
25
  try {
26
- const runtime = (await resolveStoryRuntime(params.env));
26
+ const runtime = (await getStoryRuntime(params.env));
27
27
  const store = runtime.store;
28
28
  const db = runtime.db;
29
29
  const events = await store.getEvents({ key: contextKey });
@@ -1 +1 @@
1
- {"version":3,"file":"commitFromEvents.step.js","sourceRoot":"","sources":["../../src/steps/commitFromEvents.step.ts"],"names":[],"mappings":"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","sourcesContent":["import { resolveStoryRuntime } from \"@ekairos/story/runtime\"\n\ntype ToolCompletePart = { type: \"tool-complete\"; state: \"output-available\"; output?: unknown }\n\nfunction isToolCompletePart(value: unknown): value is ToolCompletePart {\n if (!value || typeof value !== \"object\") return false\n const v = value as { type?: unknown; state?: unknown }\n return v.type === \"tool-complete\" && v.state === \"output-available\"\n}\n\nfunction findLatestCompleteToolOutput(events: unknown[]) {\n for (let i = events.length - 1; i >= 0; i--) {\n const parts = (events[i] as { content?: { parts?: unknown } })?.content?.parts\n if (!Array.isArray(parts)) continue\n for (let j = parts.length - 1; j >= 0; j--) {\n const p = parts[j]\n if (!isToolCompletePart(p)) continue\n return p.output\n }\n }\n return null\n}\n\nexport async function structureCommitFromEventsStep(params: {\n env: any\n structureId: string\n}): Promise<{ ok: true; data: { committed: boolean } } | { ok: false; error: string }> {\n \"use step\"\n const contextKey = `structure:${params.structureId}`\n\n try {\n const runtime = (await resolveStoryRuntime(params.env)) as {\n store: { getEvents(p: { key: string }): Promise<unknown[]>; getContext(p: { key: string }): Promise<{ id: string; content?: unknown } | null>; updateContextContent(p: { key: string }, c: unknown): Promise<unknown> }\n db: { transact(tx: unknown): Promise<unknown>; tx: { context_contexts: Record<string, { link(d: { structure_output_file: string }): unknown }> } }\n }\n const store = runtime.store\n const db = runtime.db\n\n const events = await store.getEvents({ key: contextKey })\n const output = findLatestCompleteToolOutput(events ?? [])\n const out = output as { success?: boolean; result?: unknown; fileId?: string; storagePath?: string; validRows?: unknown } | null\n if (!out || out.success !== true) return { ok: true, data: { committed: false } }\n\n const ctx = await store.getContext({ key: contextKey })\n const prevContent = ((ctx?.content ?? {}) as Record<string, unknown>) ?? {}\n const prevStructure = (prevContent?.structure ?? {}) as Record<string, unknown>\n\n const nextStructure: Record<string, unknown> = {\n ...prevStructure,\n kind: \"ekairos.structure\",\n version: 1,\n structureId: params.structureId,\n updatedAt: Date.now(),\n state: \"completed\",\n }\n\n // Object completion\n if (out.result !== undefined) {\n nextStructure.outputs = {\n ...(((prevStructure as any)?.outputs ?? {}) as Record<string, unknown>),\n object: { value: out.result },\n } as unknown\n }\n\n // Rows completion\n if (out.fileId && out.storagePath) {\n nextStructure.metrics = {\n ...(((prevStructure as any)?.metrics ?? {}) as Record<string, unknown>),\n calculatedTotalRows:\n typeof out.validRows === \"number\" ? out.validRows : (prevStructure as any)?.metrics?.calculatedTotalRows,\n actualGeneratedRowCount:\n typeof out.validRows === \"number\" ? out.validRows : (prevStructure as any)?.metrics?.actualGeneratedRowCount,\n } as unknown\n nextStructure.outputs = {\n ...(((prevStructure as any)?.outputs ?? {}) as Record<string, unknown>),\n rows: {\n format: \"jsonl\",\n fileId: out.fileId,\n storagePath: out.storagePath,\n rowCount: typeof out.validRows === \"number\" ? out.validRows : undefined,\n },\n } as unknown\n\n // Link output file to context (domain-prefixed link)\n const ctxId = ctx?.id\n if (!ctxId) return { ok: false, error: \"Context not found\" }\n await db.transact(db.tx.context_contexts[ctxId].link({ structure_output_file: out.fileId }))\n }\n\n await store.updateContextContent({ key: contextKey }, { ...prevContent, structure: nextStructure })\n\n return { ok: true, data: { committed: true } }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n return { ok: false, error: message }\n }\n}\n\n"]}
1
+ {"version":3,"file":"commitFromEvents.step.js","sourceRoot":"","sources":["../../src/steps/commitFromEvents.step.ts"],"names":[],"mappings":"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","sourcesContent":["import { getStoryRuntime } from \"../runtime\"\n\ntype ToolCompletePart = { type: \"tool-complete\"; state: \"output-available\"; output?: unknown }\n\nfunction isToolCompletePart(value: unknown): value is ToolCompletePart {\n if (!value || typeof value !== \"object\") return false\n const v = value as { type?: unknown; state?: unknown }\n return v.type === \"tool-complete\" && v.state === \"output-available\"\n}\n\nfunction findLatestCompleteToolOutput(events: unknown[]) {\n for (let i = events.length - 1; i >= 0; i--) {\n const parts = (events[i] as { content?: { parts?: unknown } })?.content?.parts\n if (!Array.isArray(parts)) continue\n for (let j = parts.length - 1; j >= 0; j--) {\n const p = parts[j]\n if (!isToolCompletePart(p)) continue\n return p.output\n }\n }\n return null\n}\n\nexport async function structureCommitFromEventsStep(params: {\n env: any\n structureId: string\n}): Promise<{ ok: true; data: { committed: boolean } } | { ok: false; error: string }> {\n \"use step\"\n const contextKey = `structure:${params.structureId}`\n\n try {\n const runtime = (await getStoryRuntime(params.env)) as {\n store: { getEvents(p: { key: string }): Promise<unknown[]>; getContext(p: { key: string }): Promise<{ id: string; content?: unknown } | null>; updateContextContent(p: { key: string }, c: unknown): Promise<unknown> }\n db: { transact(tx: unknown): Promise<unknown>; tx: { context_contexts: Record<string, { link(d: { structure_output_file: string }): unknown }> } }\n }\n const store = runtime.store\n const db = runtime.db\n\n const events = await store.getEvents({ key: contextKey })\n const output = findLatestCompleteToolOutput(events ?? [])\n const out = output as { success?: boolean; result?: unknown; fileId?: string; storagePath?: string; validRows?: unknown } | null\n if (!out || out.success !== true) return { ok: true, data: { committed: false } }\n\n const ctx = await store.getContext({ key: contextKey })\n const prevContent = ((ctx?.content ?? {}) as Record<string, unknown>) ?? {}\n const prevStructure = (prevContent?.structure ?? {}) as Record<string, unknown>\n\n const nextStructure: Record<string, unknown> = {\n ...prevStructure,\n kind: \"ekairos.structure\",\n version: 1,\n structureId: params.structureId,\n updatedAt: Date.now(),\n state: \"completed\",\n }\n\n // Object completion\n if (out.result !== undefined) {\n nextStructure.outputs = {\n ...(((prevStructure as any)?.outputs ?? {}) as Record<string, unknown>),\n object: { value: out.result },\n } as unknown\n }\n\n // Rows completion\n if (out.fileId && out.storagePath) {\n nextStructure.metrics = {\n ...(((prevStructure as any)?.metrics ?? {}) as Record<string, unknown>),\n calculatedTotalRows:\n typeof out.validRows === \"number\" ? out.validRows : (prevStructure as any)?.metrics?.calculatedTotalRows,\n actualGeneratedRowCount:\n typeof out.validRows === \"number\" ? out.validRows : (prevStructure as any)?.metrics?.actualGeneratedRowCount,\n } as unknown\n nextStructure.outputs = {\n ...(((prevStructure as any)?.outputs ?? {}) as Record<string, unknown>),\n rows: {\n format: \"jsonl\",\n fileId: out.fileId,\n storagePath: out.storagePath,\n rowCount: typeof out.validRows === \"number\" ? out.validRows : undefined,\n },\n } as unknown\n\n // Link output file to context (domain-prefixed link)\n const ctxId = ctx?.id\n if (!ctxId) return { ok: false, error: \"Context not found\" }\n await db.transact(db.tx.context_contexts[ctxId].link({ structure_output_file: out.fileId }))\n }\n\n await store.updateContextContent({ key: contextKey }, { ...prevContent, structure: nextStructure })\n\n return { ok: true, data: { committed: true } }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n return { ok: false, error: message }\n }\n}\n\n"]}
@@ -1,4 +1,4 @@
1
- import { resolveStoryRuntime } from "@ekairos/story/runtime";
1
+ import { getStoryRuntime } from "../runtime";
2
2
  import { structurePatchContextContentStep, structureGetContextStep } from "../dataset/steps";
3
3
  function extractJsonObject(text) {
4
4
  const trimmed = text.trim();
@@ -38,7 +38,7 @@ function extractJsonObject(text) {
38
38
  }
39
39
  export async function persistObjectResultFromStoryStep(params) {
40
40
  "use step";
41
- const runtime = (await resolveStoryRuntime(params.env));
41
+ const runtime = (await getStoryRuntime(params.env));
42
42
  const store = runtime.store;
43
43
  console.log("[ekairos/structure] persistObjectFromStory.step execute begin");
44
44
  console.log("[ekairos/structure] persistObjectFromStory.step execute datasetId", params.datasetId);
@@ -1 +1 @@
1
- {"version":3,"file":"persistObjectFromStory.step.js","sourceRoot":"","sources":["../../src/steps/persistObjectFromStory.step.ts"],"names":[],"mappings":"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","sourcesContent":["import { resolveStoryRuntime } from \"@ekairos/story/runtime\"\nimport { structurePatchContextContentStep, structureGetContextStep } from \"../dataset/steps\"\n\nfunction extractJsonObject(text: string): any | null {\n const trimmed = text.trim()\n if (!trimmed) return null\n\n // strip ```json fences\n const fenceStart = trimmed.startsWith(\"```\") ? trimmed : \"\"\n if (fenceStart) {\n const withoutFirst = trimmed.replace(/^```[a-zA-Z]*\\s*/i, \"\")\n const withoutLast = withoutFirst.replace(/\\s*```$/i, \"\")\n try {\n return JSON.parse(withoutLast.trim())\n } catch {\n // fall through\n }\n }\n\n // direct parse\n try {\n return JSON.parse(trimmed)\n } catch {\n // fall through\n }\n\n // best-effort: extract first {...} block\n const first = trimmed.indexOf(\"{\")\n const last = trimmed.lastIndexOf(\"}\")\n if (first === -1 || last === -1 || last <= first) return null\n const candidate = trimmed.slice(first, last + 1)\n try {\n return JSON.parse(candidate)\n } catch {\n return null\n }\n}\n\nexport async function persistObjectResultFromStoryStep(params: { env: any; datasetId: string }): Promise<{ ok: boolean }> {\n \"use step\"\n const runtime = (await resolveStoryRuntime(params.env)) as any\n const store = runtime.store\n\n console.log(\"[ekairos/structure] persistObjectFromStory.step execute begin\")\n console.log(\"[ekairos/structure] persistObjectFromStory.step execute datasetId\", params.datasetId)\n const contextKey = `structure:${params.datasetId}`\n const events = await store.getEvents({ key: contextKey })\n console.log(\"[ekairos/structure] persistObjectFromStory.step execute eventsCount\", Array.isArray(events) ? events.length : -1)\n\n const ctxResult = await structureGetContextStep({ env: params.env, contextKey })\n const existingContent = ctxResult.ok ? ((ctxResult.data?.content ?? {}) as any) : ({} as any)\n\n for (let i = events.length - 1; i >= 0; i--) {\n const e: any = events[i]\n const parts = e?.content?.parts\n if (!Array.isArray(parts)) continue\n const text = parts\n .map((p: any) => (p?.type === \"text\" ? String(p.text ?? \"\") : \"\"))\n .join(\"\\n\")\n .trim()\n const obj = extractJsonObject(text)\n if (obj) {\n console.log(\"[ekairos/structure] persistObjectFromStory.step execute parsedJsonOk\")\n const patchResult = await structurePatchContextContentStep({\n env: params.env,\n contextKey,\n patch: {\n structure: {\n kind: \"ekairos.structure\",\n version: 1,\n structureId: params.datasetId,\n updatedAt: Date.now(),\n state: \"completed\",\n outputs: {\n ...(existingContent?.structure?.outputs ?? {}),\n object: { value: obj },\n },\n },\n } as any,\n })\n if (!(patchResult as any)?.ok) {\n const err = (patchResult as any)?.error ?? \"Failed to persist object result\"\n throw new Error(err)\n }\n console.log(\"[ekairos/structure] persistObjectFromStory.step execute savedOk\")\n return { ok: true }\n }\n }\n\n console.log(\"[ekairos/structure] persistObjectFromStory.step execute noJsonFound\")\n return { ok: false }\n}\n\n"]}
1
+ {"version":3,"file":"persistObjectFromStory.step.js","sourceRoot":"","sources":["../../src/steps/persistObjectFromStory.step.ts"],"names":[],"mappings":"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","sourcesContent":["import { getStoryRuntime } from \"../runtime\"\nimport { structurePatchContextContentStep, structureGetContextStep } from \"../dataset/steps\"\n\nfunction extractJsonObject(text: string): any | null {\n const trimmed = text.trim()\n if (!trimmed) return null\n\n // strip ```json fences\n const fenceStart = trimmed.startsWith(\"```\") ? trimmed : \"\"\n if (fenceStart) {\n const withoutFirst = trimmed.replace(/^```[a-zA-Z]*\\s*/i, \"\")\n const withoutLast = withoutFirst.replace(/\\s*```$/i, \"\")\n try {\n return JSON.parse(withoutLast.trim())\n } catch {\n // fall through\n }\n }\n\n // direct parse\n try {\n return JSON.parse(trimmed)\n } catch {\n // fall through\n }\n\n // best-effort: extract first {...} block\n const first = trimmed.indexOf(\"{\")\n const last = trimmed.lastIndexOf(\"}\")\n if (first === -1 || last === -1 || last <= first) return null\n const candidate = trimmed.slice(first, last + 1)\n try {\n return JSON.parse(candidate)\n } catch {\n return null\n }\n}\n\nexport async function persistObjectResultFromStoryStep(params: { env: any; datasetId: string }): Promise<{ ok: boolean }> {\n \"use step\"\n const runtime = (await getStoryRuntime(params.env)) as any\n const store = runtime.store\n\n console.log(\"[ekairos/structure] persistObjectFromStory.step execute begin\")\n console.log(\"[ekairos/structure] persistObjectFromStory.step execute datasetId\", params.datasetId)\n const contextKey = `structure:${params.datasetId}`\n const events = await store.getEvents({ key: contextKey })\n console.log(\"[ekairos/structure] persistObjectFromStory.step execute eventsCount\", Array.isArray(events) ? events.length : -1)\n\n const ctxResult = await structureGetContextStep({ env: params.env, contextKey })\n const existingContent = ctxResult.ok ? ((ctxResult.data?.content ?? {}) as any) : ({} as any)\n\n for (let i = events.length - 1; i >= 0; i--) {\n const e: any = events[i]\n const parts = e?.content?.parts\n if (!Array.isArray(parts)) continue\n const text = parts\n .map((p: any) => (p?.type === \"text\" ? String(p.text ?? \"\") : \"\"))\n .join(\"\\n\")\n .trim()\n const obj = extractJsonObject(text)\n if (obj) {\n console.log(\"[ekairos/structure] persistObjectFromStory.step execute parsedJsonOk\")\n const patchResult = await structurePatchContextContentStep({\n env: params.env,\n contextKey,\n patch: {\n structure: {\n kind: \"ekairos.structure\",\n version: 1,\n structureId: params.datasetId,\n updatedAt: Date.now(),\n state: \"completed\",\n outputs: {\n ...(existingContent?.structure?.outputs ?? {}),\n object: { value: obj },\n },\n },\n } as any,\n })\n if (!(patchResult as any)?.ok) {\n const err = (patchResult as any)?.error ?? \"Failed to persist object result\"\n throw new Error(err)\n }\n console.log(\"[ekairos/structure] persistObjectFromStory.step execute savedOk\")\n return { ok: true }\n }\n }\n\n console.log(\"[ekairos/structure] persistObjectFromStory.step execute noJsonFound\")\n return { ok: false }\n}\n\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ekairos/structure",
3
- "version": "1.21.53-beta.0",
3
+ "version": "1.21.54-beta.0",
4
4
  "description": "Ekairos Structure - Unified structured extraction (rows or object) from file/text/dataset inputs",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -30,8 +30,8 @@
30
30
  "typecheck": "tsc --noEmit"
31
31
  },
32
32
  "dependencies": {
33
- "@ekairos/story": "^1.21.53-beta.0",
34
- "@ekairos/domain": "^1.21.53-beta.0",
33
+ "@ekairos/story": "^1.21.54-beta.0",
34
+ "@ekairos/domain": "^1.21.54-beta.0",
35
35
  "@ekairos/sandbox": "^1.21.53-beta.0",
36
36
  "@instantdb/admin": "^0.22.13",
37
37
  "@instantdb/core": "^0.22.13",