@ekairos/structure 1.21.53-beta.0 → 1.21.56-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.
- package/dist/clearDataset.tool.d.ts +0 -1
- package/dist/clearDataset.tool.js +0 -1
- package/dist/completeObject.tool.d.ts +0 -1
- package/dist/completeObject.tool.js +0 -1
- package/dist/completeRows.tool.d.ts +0 -1
- package/dist/completeRows.tool.js +0 -1
- package/dist/dataset/steps.d.ts +0 -1
- package/dist/dataset/steps.js +39 -3
- package/dist/datasetFiles.d.ts +0 -1
- package/dist/datasetFiles.js +0 -1
- package/dist/datasetReader.d.ts +16 -0
- package/dist/datasetReader.js +25 -0
- package/dist/domain.d.ts +0 -1
- package/dist/domain.js +0 -1
- package/dist/executeCommand.tool.d.ts +0 -1
- package/dist/executeCommand.tool.js +0 -1
- package/dist/file/steps.d.ts +0 -1
- package/dist/file/steps.js +2 -3
- package/dist/generateSchema.tool.d.ts +0 -1
- package/dist/generateSchema.tool.js +0 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/prompts.d.ts +0 -1
- package/dist/prompts.js +0 -1
- package/dist/rowsOutputPaging.d.ts +57 -0
- package/dist/rowsOutputPaging.js +148 -0
- package/dist/rowsOutputPaging.steps.d.ts +37 -0
- package/dist/rowsOutputPaging.steps.js +125 -0
- package/dist/rowsPagination.steps.d.ts +59 -0
- package/dist/rowsPagination.steps.js +190 -0
- package/dist/runtime.d.ts +9 -0
- package/dist/runtime.js +12 -0
- package/dist/sandbox/steps.d.ts +0 -1
- package/dist/sandbox/steps.js +5 -2
- package/dist/schema.d.ts +0 -1
- package/dist/schema.js +3 -2
- package/dist/service.d.ts +0 -1
- package/dist/service.js +43 -34
- package/dist/steps/commitFromEvents.step.d.ts +0 -1
- package/dist/steps/commitFromEvents.step.js +1 -2
- package/dist/steps/persistObjectFromStory.step.d.ts +0 -1
- package/dist/steps/persistObjectFromStory.step.js +2 -3
- package/dist/structure.d.ts +29 -4
- package/dist/structure.js +35 -5
- package/package.json +14 -4
- package/dist/clearDataset.tool.d.ts.map +0 -1
- package/dist/clearDataset.tool.js.map +0 -1
- package/dist/completeObject.tool.d.ts.map +0 -1
- package/dist/completeObject.tool.js.map +0 -1
- package/dist/completeRows.tool.d.ts.map +0 -1
- package/dist/completeRows.tool.js.map +0 -1
- package/dist/dataset/steps.d.ts.map +0 -1
- package/dist/dataset/steps.js.map +0 -1
- package/dist/datasetFiles.d.ts.map +0 -1
- package/dist/datasetFiles.js.map +0 -1
- package/dist/domain.d.ts.map +0 -1
- package/dist/domain.js.map +0 -1
- package/dist/executeCommand.tool.d.ts.map +0 -1
- package/dist/executeCommand.tool.js.map +0 -1
- package/dist/file/steps.d.ts.map +0 -1
- package/dist/file/steps.js.map +0 -1
- package/dist/generateSchema.tool.d.ts.map +0 -1
- package/dist/generateSchema.tool.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/prompts.d.ts.map +0 -1
- package/dist/prompts.js.map +0 -1
- package/dist/sandbox/steps.d.ts.map +0 -1
- package/dist/sandbox/steps.js.map +0 -1
- package/dist/schema.d.ts.map +0 -1
- package/dist/schema.js.map +0 -1
- package/dist/service.d.ts.map +0 -1
- package/dist/service.js.map +0 -1
- package/dist/steps/commitFromEvents.step.d.ts.map +0 -1
- package/dist/steps/commitFromEvents.step.js.map +0 -1
- package/dist/steps/persistObjectFromStory.step.d.ts.map +0 -1
- package/dist/steps/persistObjectFromStory.step.js.map +0 -1
- package/dist/structure.d.ts.map +0 -1
- package/dist/structure.js.map +0 -1
- package/dist/types/runtime.d.ts +0 -56
- package/dist/types/runtime.d.ts.map +0 -1
- package/dist/types/runtime.js +0 -2
- package/dist/types/runtime.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ekairos/structure",
|
|
3
|
-
"version": "1.21.
|
|
3
|
+
"version": "1.21.56-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",
|
|
@@ -22,25 +22,35 @@
|
|
|
22
22
|
"types": "./dist/index.d.ts",
|
|
23
23
|
"import": "./dist/index.js",
|
|
24
24
|
"default": "./dist/index.js"
|
|
25
|
+
},
|
|
26
|
+
"./schema": {
|
|
27
|
+
"types": "./dist/schema.d.ts",
|
|
28
|
+
"import": "./dist/schema.js",
|
|
29
|
+
"default": "./dist/schema.js"
|
|
25
30
|
}
|
|
26
31
|
},
|
|
27
32
|
"scripts": {
|
|
28
33
|
"build": "tsc -p tsconfig.json",
|
|
34
|
+
"dev": "tsc -p tsconfig.json --watch",
|
|
29
35
|
"clean": "node -e \"require('fs').rmSync('dist', {recursive:true, force:true})\"",
|
|
30
36
|
"typecheck": "tsc --noEmit"
|
|
31
37
|
},
|
|
32
38
|
"dependencies": {
|
|
33
|
-
"@ekairos/
|
|
34
|
-
"@ekairos/
|
|
35
|
-
"@ekairos/sandbox": "^1.21.53-beta.0",
|
|
39
|
+
"@ekairos/domain": "^1.21.56-beta.0",
|
|
40
|
+
"@ekairos/sandbox": "^1.21.54-beta.0",
|
|
36
41
|
"@instantdb/admin": "^0.22.13",
|
|
37
42
|
"@instantdb/core": "^0.22.13",
|
|
38
43
|
"ai": "^5.0.95",
|
|
39
44
|
"ajv": "^8.17.1",
|
|
40
45
|
"zod": "^4.1.8"
|
|
41
46
|
},
|
|
47
|
+
"peerDependencies": {
|
|
48
|
+
"@ekairos/story": "^1.21.54-beta.0"
|
|
49
|
+
},
|
|
42
50
|
"devDependencies": {
|
|
43
51
|
"@ekairos/tsconfig": "workspace:*",
|
|
52
|
+
"@ekairos/story": "workspace:*",
|
|
53
|
+
"@ekairos/sandbox": "workspace:*",
|
|
44
54
|
"@types/node": "^24.5.0",
|
|
45
55
|
"typescript": "^5.9.2",
|
|
46
56
|
"vitest": "^3.2.4",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clearDataset.tool.d.ts","sourceRoot":"","sources":["../src/clearDataset.tool.ts"],"names":[],"mappings":"AAKA,UAAU,sBAAsB;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,GAAG,CAAA;CACV;AAED,wBAAgB,sBAAsB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,sBAAsB;;;;;;GAqB3F"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clearDataset.tool.js","sourceRoot":"","sources":["../src/clearDataset.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAA;AACzB,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAC1B,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAQrD,MAAM,UAAU,sBAAsB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAA0B;IAC1F,OAAO,IAAI,CAAC;QACV,WAAW,EAAE,8CAA8C;QAC3D,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;SACnD,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAsB,EAAE,EAAE;YAChD,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAA;YAClE,OAAO,CAAC,GAAG,CAAC,yDAAyD,EAAE,SAAS,CAAC,CAAA;YACjF,MAAM,UAAU,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAA;YAElD,IAAI,CAAC;gBACH,MAAM,4BAA4B,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,CAAA;YAC7F,CAAC;YAAC,MAAM,CAAC;gBACP,cAAc;YAChB,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAA;YAC/D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAA;QACtD,CAAC;KACF,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import { tool } from \"ai\"\nimport { z } from \"zod/v4\"\nimport { runDatasetSandboxCommandStep } from \"./sandbox/steps\"\nimport { getDatasetOutputPath } from \"./datasetFiles\"\n\ninterface ClearDatasetToolParams {\n datasetId: string\n sandboxId: string\n env?: any\n}\n\nexport function createClearDatasetTool({ datasetId, sandboxId, env }: ClearDatasetToolParams) {\n return tool({\n description: \"Clear output files and reset dataset status.\",\n inputSchema: z.object({\n reason: z.string().describe(\"Reason for clearing\"),\n }),\n execute: async ({ reason }: { reason: string }) => {\n console.log(\"[ekairos/structure] clearDataset.tool execute begin\")\n console.log(\"[ekairos/structure] clearDataset.tool execute datasetId\", datasetId)\n const outputPath = getDatasetOutputPath(datasetId)\n\n try {\n await runDatasetSandboxCommandStep({ env, sandboxId, cmd: \"rm\", args: [\"-f\", outputPath] })\n } catch {\n // best-effort\n }\n\n console.log(\"[ekairos/structure] clearDataset.tool execute ok\")\n return { success: true, message: \"Cleared\", reason }\n },\n })\n}\n\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"completeObject.tool.d.ts","sourceRoot":"","sources":["../src/completeObject.tool.ts"],"names":[],"mappings":"AAeA,UAAU,wBAAwB;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,GAAG,CAAA;CACV;AAED,wBAAgB,wBAAwB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,wBAAwB;;;;;;;;;;;;;;;GAmE/F"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"completeObject.tool.js","sourceRoot":"","sources":["../src/completeObject.tool.ts"],"names":[],"mappings":"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","sourcesContent":["import { tool } from \"ai\"\nimport { z } from \"zod/v4\"\nimport Ajv from \"ajv\"\nimport { structureGetContextStep } from \"./dataset/steps\"\nimport { readDatasetSandboxTextFileStep } from \"./sandbox/steps\"\n\nlet ajvInstance: Ajv | null = null\n\nfunction getAjv(): Ajv {\n if (!ajvInstance) {\n ajvInstance = new Ajv({ allErrors: true, strict: false })\n }\n return ajvInstance\n}\n\ninterface CompleteObjectToolParams {\n datasetId: string\n sandboxId: string\n env?: any\n}\n\nexport function createCompleteObjectTool({ datasetId, sandboxId, env }: CompleteObjectToolParams) {\n return tool({\n description:\n \"Complete an object result. Provide either resultJson (inline JSON) or resultPath (path to a JSON file in the sandbox). If a schema exists in the dataset record, the object is validated against it.\",\n inputSchema: z\n .object({\n summary: z.string().describe(\"Short summary\"),\n result: z.any().optional().describe(\"Result object (preferred)\"),\n resultJson: z.string().optional().describe(\"JSON string for the result object\"),\n resultPath: z.string().optional().describe(\"Sandbox path to a JSON file containing the object\"),\n })\n .refine((v) => v.result !== undefined || Boolean(v.resultJson) || Boolean(v.resultPath), {\n message: \"Provide result, resultJson or resultPath\",\n }),\n execute: async (input: { summary: string; result?: any; resultJson?: string; resultPath?: string }) => {\n console.log(\"[ekairos/structure] completeObject.tool execute begin\")\n console.log(\"[ekairos/structure] completeObject.tool execute datasetId\", datasetId)\n const contextKey = `structure:${datasetId}`\n const ctxResult = await structureGetContextStep({ env, contextKey })\n if (!ctxResult.ok) return { success: false, error: ctxResult.error }\n\n let obj: any\n if (input.result !== undefined) {\n obj = input.result\n } else {\n let jsonText = input.resultJson ?? \"\"\n if (!jsonText && input.resultPath) {\n console.log(\"[ekairos/structure] completeObject.tool execute readingResultPath\")\n const fileRead = await readDatasetSandboxTextFileStep({ env, sandboxId, path: input.resultPath })\n jsonText = fileRead.text ?? \"\"\n }\n\n try {\n obj = JSON.parse(jsonText)\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n console.log(\"[ekairos/structure] completeObject.tool execute invalidJson\")\n return { success: false, error: `Invalid JSON: ${message}` }\n }\n }\n\n const content = (ctxResult.data?.content ?? {}) as any\n const outputSchema = content?.structure?.outputSchema\n const mode = content?.structure?.mode\n // Schema validation is strict only in `.schema(...)` mode. Auto is best-effort.\n if (mode === \"schema\" && outputSchema?.schema) {\n try {\n const validator = getAjv().compile(outputSchema.schema)\n const valid = validator(obj)\n if (!valid) {\n const errors = Array.isArray(validator.errors)\n ? validator.errors.map((err) => err.message || \"Unknown validation error\")\n : [\"Unknown validation error\"]\n console.log(\"[ekairos/structure] completeObject.tool execute schemaValidationFailed\")\n return { success: false, error: errors.slice(0, 5).join(\"; \") }\n }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n console.log(\"[ekairos/structure] completeObject.tool execute schemaValidateThrew\")\n return { success: false, error: `Failed to validate schema: ${message}` }\n }\n }\n\n console.log(\"[ekairos/structure] completeObject.tool execute ok\")\n return { success: true, summary: input.summary, result: obj }\n },\n })\n}\n\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"completeRows.tool.d.ts","sourceRoot":"","sources":["../src/completeRows.tool.ts"],"names":[],"mappings":"AAgBA,UAAU,sBAAsB;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,GAAG,CAAA;CACV;AAED,wBAAgB,sBAAsB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,sBAAsB;;;aA4FrE,OAAO;oBAAkB,MAAM;YAAU,MAAM;;;;;;;GAjBrE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"completeRows.tool.js","sourceRoot":"","sources":["../src/completeRows.tool.ts"],"names":[],"mappings":"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","sourcesContent":["import { tool } from \"ai\"\nimport { z } from \"zod/v4\"\nimport Ajv, { ValidateFunction } from \"ajv\"\nimport { readDatasetSandboxFileStep, readDatasetSandboxTextFileStep, runDatasetSandboxCommandStep } from \"./sandbox/steps\"\nimport { getDatasetOutputPath } from \"./datasetFiles\"\nimport { structureGetContextStep, structureUploadRowsOutputJsonlStep } from \"./dataset/steps\"\n\nlet ajvInstance: Ajv | null = null\n\nfunction getAjv(): Ajv {\n if (!ajvInstance) {\n ajvInstance = new Ajv({ allErrors: true, strict: false })\n }\n return ajvInstance\n}\n\ninterface CompleteRowsToolParams {\n datasetId: string\n sandboxId: string\n env?: any\n}\n\nexport function createCompleteRowsTool({ datasetId, sandboxId, env }: CompleteRowsToolParams) {\n return tool({\n description: \"Complete a rows dataset. Requires output.jsonl in the workstation and a saved schema.\",\n inputSchema: z.object({\n summary: z.string().describe(\"Summary of the completed dataset\"),\n }),\n execute: async ({ summary }: { summary: string }) => {\n console.log(\"[ekairos/structure] completeRows.tool execute begin\")\n console.log(\"[ekairos/structure] completeRows.tool execute datasetId\", datasetId)\n const contextKey = `structure:${datasetId}`\n const outputPath = getDatasetOutputPath(datasetId)\n\n try {\n await ensureFileExists(env, sandboxId, outputPath)\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n console.log(\"[ekairos/structure] completeRows.tool execute missingOutputFile\")\n return { success: false, error: message }\n }\n\n const ctxResult = await structureGetContextStep({ env, contextKey })\n if (!ctxResult.ok) return { success: false, error: ctxResult.error }\n\n const content = (ctxResult.data?.content ?? {}) as any\n const outputSchema = content?.structure?.outputSchema\n if (!outputSchema?.schema) {\n console.log(\"[ekairos/structure] completeRows.tool execute schemaMissing\")\n return { success: false, error: \"Schema not found in database. Please generate schema first.\" }\n }\n\n const schemaJson = outputSchema.schema\n const mode = content?.structure?.mode\n let validator: ValidateFunction | null = null\n try {\n validator = getAjv().compile(schemaJson)\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n if (mode === \"auto\") {\n console.log(\"[ekairos/structure] completeRows.tool execute schemaCompileSkippedAuto\")\n validator = null\n } else {\n console.log(\"[ekairos/structure] completeRows.tool execute schemaCompileFailed\")\n return { success: false, error: `Failed to compile schema: ${message}` }\n }\n }\n\n let totalValidRows = 0\n if (validator) {\n const validationResult = await validateJsonlRows({ env, sandboxId, outputPath, validator })\n if (!validationResult.success) return validationResult\n totalValidRows = validationResult.validRowCount ?? 0\n }\n console.log(\"[ekairos/structure] completeRows.tool execute validRowCount\", totalValidRows)\n\n const fileRead = await readDatasetSandboxFileStep({ env, sandboxId, path: outputPath })\n if (!fileRead.contentBase64) return { success: false, error: \"Empty file content\" }\n\n const uploadResult = await structureUploadRowsOutputJsonlStep({\n env,\n structureId: datasetId,\n contentBase64: fileRead.contentBase64,\n })\n if (!uploadResult.ok) return { success: false, error: uploadResult.error }\n console.log(\"[ekairos/structure] completeRows.tool execute uploadedFileId\", uploadResult.data.fileId)\n\n console.log(\"[ekairos/structure] completeRows.tool execute ok\")\n return {\n success: true,\n summary,\n validRows: totalValidRows,\n fileId: uploadResult.data.fileId,\n storagePath: uploadResult.data.storagePath,\n }\n },\n })\n}\n\nasync function ensureFileExists(env: any, sandboxId: string, path: string): Promise<void> {\n const result = await runDatasetSandboxCommandStep({\n env,\n sandboxId,\n cmd: \"test\",\n args: [\"-f\", path],\n })\n if (result.exitCode !== 0) throw new Error(\"Required file not found\")\n}\n\nasync function validateJsonlRows(params: {\n env: any\n sandboxId: string\n outputPath: string\n validator: ValidateFunction\n}): Promise<{ success: boolean; validRowCount?: number; error?: string }> {\n const { env, sandboxId, outputPath, validator } = params\n const fileRead = await readDatasetSandboxTextFileStep({ env, sandboxId, path: outputPath })\n const fileContent = fileRead.text ?? \"\"\n if (!fileContent) return { success: true, validRowCount: 0 }\n const lines = fileContent.split(\"\\n\")\n\n let validRowCount = 0\n for (let index = 0; index < lines.length; index++) {\n const trimmed = lines[index].trim()\n if (!trimmed) continue\n\n let record: any\n try {\n record = JSON.parse(trimmed)\n } catch {\n continue\n }\n\n if (record.type !== \"row\") continue\n const data = record.data\n if (data === undefined || data === null) continue\n\n const valid = validator(data)\n if (!valid) {\n const errors = Array.isArray(validator.errors)\n ? validator.errors.map((err) => err.message || \"Unknown validation error\")\n : [\"Unknown validation error\"]\n return { success: false, error: errors.slice(0, 3).join(\"; \") }\n }\n\n validRowCount++\n }\n\n return { success: true, validRowCount }\n}\n\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/dataset/steps.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"datasetFiles.d.ts","sourceRoot":"","sources":["../src/datasetFiles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB,iBAAiB,CAAA;AACtD,eAAO,MAAM,+BAA+B,uBAAuB,CAAA;AAEnE,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpE"}
|
package/dist/datasetFiles.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"datasetFiles.js","sourceRoot":"","sources":["../src/datasetFiles.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,wBAAwB,GAAG,cAAc,CAAA;AACtD,MAAM,CAAC,MAAM,+BAA+B,GAAG,oBAAoB,CAAA;AAEnE,MAAM,UAAU,qBAAqB,CAAC,SAAiB;IACrD,OAAO,4BAA4B,SAAS,EAAE,CAAA;AAChD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACpD,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,IAAI,wBAAwB,EAAE,CAAA;AAC1E,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,SAAiB;IAC1D,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,IAAI,+BAA+B,EAAE,CAAA;AACjF,CAAC","sourcesContent":["export const DATASET_OUTPUT_FILE_NAME = \"output.jsonl\"\nexport const DATASET_OUTPUT_SCHEMA_FILE_NAME = \"output_schema.json\"\n\nexport function getDatasetWorkstation(datasetId: string): string {\n return `/vercel/sandbox/datasets/${datasetId}`\n}\n\nexport function getDatasetOutputPath(datasetId: string): string {\n return `${getDatasetWorkstation(datasetId)}/${DATASET_OUTPUT_FILE_NAME}`\n}\n\nexport function getDatasetOutputSchemaPath(datasetId: string): string {\n return `${getDatasetWorkstation(datasetId)}/${DATASET_OUTPUT_SCHEMA_FILE_NAME}`\n}\n\n"]}
|
package/dist/domain.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../src/domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA"}
|
package/dist/domain.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"domain.js","sourceRoot":"","sources":["../src/domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA","sourcesContent":["export { structureDomain } from \"./schema\"\n\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"executeCommand.tool.d.ts","sourceRoot":"","sources":["../src/executeCommand.tool.ts"],"names":[],"mappings":"AAQA,UAAU,wBAAwB;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,GAAG,CAAA;CACV;AAiBD,wBAAgB,wBAAwB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiG/F"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"executeCommand.tool.js","sourceRoot":"","sources":["../src/executeCommand.tool.ts"],"names":[],"mappings":"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","sourcesContent":["import { tool } from \"ai\"\nimport { z } from \"zod/v4\"\nimport { runDatasetSandboxCommandStep, writeDatasetSandboxTextFileStep } from \"./sandbox/steps\"\nimport { getDatasetWorkstation } from \"./datasetFiles\"\n\nconst MAX_STDOUT_CHARS = 20000\nconst MAX_STDERR_CHARS = 5000\n\ninterface ExecuteCommandToolParams {\n datasetId: string\n sandboxId: string\n env?: any\n}\n\nfunction normalizeScriptName(scriptName: string): string {\n // Keep the AI-provided scriptName, but:\n // - strip a trailing \".py\" if it was included\n // - avoid extra dots/spaces in filenames\n const raw = String(scriptName ?? \"\").trim()\n const noExt = raw.toLowerCase().endsWith(\".py\") ? raw.slice(0, -3) : raw\n const cleaned = noExt\n .replace(/\\\\/g, \"_\")\n .replace(/\\//g, \"_\")\n .replace(/\\s+/g, \"_\")\n .replace(/\\./g, \"_\")\n .replace(/[^a-zA-Z0-9_-]/g, \"\")\n return cleaned.length > 0 ? cleaned : \"script\"\n}\n\nexport function createExecuteCommandTool({ datasetId, sandboxId, env }: ExecuteCommandToolParams) {\n return tool({\n description:\n \"Execute Python scripts in the sandbox. Always saves script to a file before executing. The tool's output is EXACTLY the script's stdout and includes the script file path for traceability. CRITICAL: Print concise, human-readable summaries only; do NOT print raw large data. For big results, write artifacts to files in the workstation and print their file paths. Always include progress/result prints.\",\n inputSchema: z.object({\n pythonCode: z\n .string()\n .describe(\n \"Python code to execute. Saved to a file before running. MANDATORY: Use print() to report progress and final results. Keep prints concise; avoid dumping rows/JSON.\",\n ),\n scriptName: z\n .string()\n .describe(\n \"Name for the script file in snake_case (e.g., 'inspect_file', 'parse_csv', 'generate_output'). The file will be saved as <scriptName>.py in the workstation.\",\n ),\n }),\n execute: async ({ pythonCode, scriptName }: { pythonCode: string; scriptName: string }) => {\n console.log(\"[ekairos/structure] executeCommand.tool execute begin\")\n console.log(\"[ekairos/structure] executeCommand.tool execute datasetId\", datasetId)\n console.log(\"[ekairos/structure] executeCommand.tool execute scriptName\", scriptName)\n const workstation = getDatasetWorkstation(datasetId)\n const scriptNameWithExt = `${normalizeScriptName(scriptName)}.py`\n const scriptFile = `${workstation}/${scriptNameWithExt}`\n\n console.log(\"[ekairos/structure] executeCommand.tool execute writingScript\")\n await writeDatasetSandboxTextFileStep({\n env,\n sandboxId,\n path: scriptFile,\n text: pythonCode,\n })\n\n console.log(\"[ekairos/structure] executeCommand.tool execute runningPython\")\n const result = await runDatasetSandboxCommandStep({\n env,\n sandboxId,\n cmd: \"python\",\n args: [scriptFile],\n })\n\n const stdout = result.stdout || \"\"\n const stderr = result.stderr || \"\"\n const exitCode = result.exitCode\n\n const isStdoutTruncated = stdout.length > MAX_STDOUT_CHARS\n const isStderrTruncated = stderr.length > MAX_STDERR_CHARS\n\n const stdoutCapped = isStdoutTruncated ? stdout.slice(0, MAX_STDOUT_CHARS) : stdout\n const stderrCapped = isStderrTruncated ? stderr.slice(0, MAX_STDERR_CHARS) : stderr\n\n if (exitCode !== 0) {\n console.log(\"[ekairos/structure] executeCommand.tool execute failedExitCode\")\n return {\n success: false,\n exitCode,\n stdout: stdoutCapped,\n stderr: stderrCapped,\n scriptPath: scriptFile,\n error: \"Command failed\",\n stdoutTruncated: isStdoutTruncated,\n stderrTruncated: isStderrTruncated,\n stdoutOriginalLength: stdout.length,\n stderrOriginalLength: stderr.length,\n }\n }\n\n if (stderr && (stderr.includes(\"Traceback\") || stderr.toLowerCase().includes(\"error\"))) {\n console.log(\"[ekairos/structure] executeCommand.tool execute pythonErrorDetected\")\n return {\n success: false,\n exitCode,\n stdout: stdoutCapped,\n stderr: stderrCapped,\n scriptPath: scriptFile,\n error: \"Python error detected\",\n stdoutTruncated: isStdoutTruncated,\n stderrTruncated: isStderrTruncated,\n stdoutOriginalLength: stdout.length,\n stderrOriginalLength: stderr.length,\n }\n }\n\n console.log(\"[ekairos/structure] executeCommand.tool execute ok\")\n return {\n success: true,\n exitCode,\n stdout: stdoutCapped,\n stderr: stderrCapped,\n scriptPath: scriptFile,\n message: \"Command executed successfully\",\n stdoutTruncated: isStdoutTruncated,\n stderrTruncated: isStderrTruncated,\n stdoutOriginalLength: stdout.length,\n stderrOriginalLength: stderr.length,\n }\n },\n })\n}\n\n"]}
|
package/dist/file/steps.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/file/steps.ts"],"names":[],"mappings":"AAGA,wBAAsB,mBAAmB,CAAC,MAAM,EAAE;IAChD,GAAG,EAAE,GAAG,CAAA;IACR,MAAM,EAAE,MAAM,CAAA;CACf,GAAG,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgBlE"}
|
package/dist/file/steps.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generateSchema.tool.d.ts","sourceRoot":"","sources":["../src/generateSchema.tool.ts"],"names":[],"mappings":"AAKA,UAAU,wBAAwB;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,GAAG,CAAA;CACV;AAED,wBAAgB,wBAAwB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,wBAAwB;;;;;;;;;;;;;;GAwD/F"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generateSchema.tool.js","sourceRoot":"","sources":["../src/generateSchema.tool.ts"],"names":[],"mappings":"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","sourcesContent":["import { tool } from \"ai\"\nimport { z } from \"zod/v4\"\nimport { writeDatasetSandboxTextFileStep } from \"./sandbox/steps\"\nimport { getDatasetOutputSchemaPath } from \"./datasetFiles\"\n\ninterface GenerateSchemaToolParams {\n datasetId: string\n sandboxId: string\n env?: any\n}\n\nexport function createGenerateSchemaTool({ datasetId, sandboxId, env }: GenerateSchemaToolParams) {\n return tool({\n description:\n \"Write the output JSON Schema to the sandbox so the story loop can lift it into context state. IMPORTANT: Field names must be lowerCamelCase. For rows output, schema should describe a single record. For object output, schema should describe the whole object.\",\n inputSchema: z.object({\n schemaTitle: z.string().describe(\"Short schema title\"),\n schemaDescription: z.string().describe(\"Short schema description\"),\n schemaJson: z.string().describe(\"A JSON Schema string\"),\n }),\n execute: async ({ schemaTitle, schemaDescription, schemaJson }: { schemaTitle: string; schemaDescription: string; schemaJson: string }) => {\n console.log(\"[ekairos/structure] generateSchema.tool execute begin\")\n console.log(\"[ekairos/structure] generateSchema.tool execute datasetId\", datasetId)\n console.log(\"[ekairos/structure] generateSchema.tool execute sandboxId\", sandboxId)\n console.log(\"[ekairos/structure] generateSchema.tool execute schemaTitle\", schemaTitle)\n console.log(\"[ekairos/structure] generateSchema.tool execute schemaJsonLength\", String(schemaJson ?? \"\").length)\n const schemaData = {\n title: schemaTitle,\n description: schemaDescription,\n schema: (() => {\n try {\n return JSON.parse(schemaJson)\n } catch (e) {\n const message = e instanceof Error ? e.message : String(e)\n console.log(\"[ekairos/structure] generateSchema.tool execute invalidSchemaJson\")\n console.log(\"[ekairos/structure] generateSchema.tool execute invalidSchemaJsonMessage\", message)\n console.log(\"[ekairos/structure] generateSchema.tool execute invalidSchemaJsonPreview\", String(schemaJson ?? \"\").slice(0, 300))\n throw e\n }\n })(),\n }\n\n const schemaPath = getDatasetOutputSchemaPath(datasetId)\n try {\n console.log(\"[ekairos/structure] generateSchema.tool execute writingSchemaPath\", schemaPath)\n await writeDatasetSandboxTextFileStep({\n env,\n sandboxId,\n path: schemaPath,\n text: JSON.stringify(schemaData, null, 2),\n })\n } catch (e) {\n console.log(\"[ekairos/structure] generateSchema.tool execute failed\")\n const message = e instanceof Error ? e.message : String(e)\n console.log(\"[ekairos/structure] generateSchema.tool execute failedMessage\", message)\n if (e instanceof Error && e.stack) {\n console.log(\"[ekairos/structure] generateSchema.tool execute failedStack\", e.stack)\n }\n console.log(\"[ekairos/structure] generateSchema.tool execute failedSchemaPath\", schemaPath)\n console.log(\"[ekairos/structure] generateSchema.tool execute failedHasEnv\", Boolean(env))\n return { success: false, error: message }\n }\n\n console.log(\"[ekairos/structure] generateSchema.tool execute ok\")\n return { success: true, message: \"Schema written\", schemaPath }\n },\n })\n}\n\n"]}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA","sourcesContent":["export * from \"./structure\"\nexport * from \"./schema\"\nexport * from \"./service\"\nexport * from \"./datasetFiles\"\n\n"]}
|
package/dist/prompts.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAA;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;IACvB,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAA;IACzB,YAAY,CAAC,EAAE,GAAG,CAAA;IAClB,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,sBAAsB,GAAG,MAAM,CA4DxE"}
|
package/dist/prompts.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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","sourcesContent":["export type PreparedSource = {\n kind: \"file\" | \"dataset\" | \"text\"\n id: string\n path: string\n name?: string\n mimeType?: string\n}\n\nexport type StructurePromptContext = {\n datasetId: string\n mode: \"auto\" | \"schema\"\n output: \"rows\" | \"object\"\n outputSchema?: any\n sources: PreparedSource[]\n workstation: string\n outputPath: string\n}\n\nexport function buildStructurePrompt(ctx: StructurePromptContext): string {\n const goalText =\n ctx.output === \"rows\"\n ? \"Generate a JSONL dataset (output.jsonl) where each line is a JSON object: {\\\"type\\\":\\\"row\\\",\\\"data\\\":{...}}.\"\n : \"Generate a single JSON object result that matches the output schema (when provided).\"\n\n const lines: string[] = []\n lines.push(\"## ROLE\")\n lines.push(\"You are an AI system that produces structured outputs from mixed sources (files, text, and existing datasets).\")\n lines.push(\"\")\n lines.push(\"## GOAL\")\n lines.push(goalText)\n lines.push(\"\")\n lines.push(\"## CONTEXT\")\n lines.push(`DatasetId: ${ctx.datasetId}`)\n lines.push(\"\")\n lines.push(\"## SOURCES\")\n for (const s of ctx.sources) {\n lines.push(`- kind: ${s.kind}`)\n lines.push(` id: ${s.id}`)\n lines.push(` path: ${s.path}`)\n if (s.name) lines.push(` name: ${s.name}`)\n if (s.mimeType) lines.push(` mimeType: ${s.mimeType}`)\n }\n lines.push(\"\")\n lines.push(\"## SANDBOX\")\n lines.push(`Workstation: ${ctx.workstation}`)\n lines.push(`OutputPath: ${ctx.outputPath}`)\n lines.push(\"\")\n\n if (ctx.mode === \"schema\" && ctx.outputSchema) {\n lines.push(\"## OUTPUT SCHEMA (JSON Schema)\")\n lines.push(JSON.stringify(ctx.outputSchema, null, 2))\n lines.push(\"\")\n }\n\n lines.push(\"## INSTRUCTIONS\")\n if (ctx.mode === \"auto\") {\n lines.push(\"1) Inspect the Sources. If needed, use executeCommand to open/read files and explore structure (do not guess). Keep stdout concise.\")\n lines.push(\"2) Propose an output JSON Schema (lowerCamelCase field names). You may add derived fields if helpful, but justify them. Then call generateSchema.\")\n if (ctx.output === \"rows\") {\n lines.push(\"3) Use executeCommand to read the sources and write output.jsonl at OutputPath. Each line must be {\\\"type\\\":\\\"row\\\",\\\"data\\\":{...}}. Keep prints concise.\")\n lines.push(\"4) Call complete to validate and persist the output.jsonl to Instant Storage and mark the dataset completed.\")\n } else {\n lines.push(\"3) Produce the final JSON object. If needed, use executeCommand to compute it. Then you MUST call complete. Prefer resultJson (inline JSON) for small objects; use resultPath only if the object is large.\")\n }\n } else {\n if (ctx.output === \"rows\") {\n lines.push(\"1) Use executeCommand to read the sources and write output.jsonl at OutputPath. Each line must be {\\\"type\\\":\\\"row\\\",\\\"data\\\":{...}}. Keep prints concise.\")\n lines.push(\"2) Call complete to validate and persist the output.jsonl to Instant Storage and mark the dataset completed.\")\n } else {\n lines.push(\"1) Produce the final JSON object. If needed, use executeCommand to compute it. Then you MUST call complete. Prefer resultJson (inline JSON) for small objects; use resultPath only if the object is large.\")\n }\n }\n lines.push(\"\")\n lines.push(\"## RULES\")\n lines.push(\"- Field names must be lowerCamelCase.\")\n lines.push(\"- Do not leak secrets. Do not print large raw datasets to stdout.\")\n\n return lines.join(\"\\n\")\n}\n\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/sandbox/steps.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAA;AAErC,MAAM,MAAM,0BAA0B,GAAG;IACvC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,SAAS,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,8BAA8B,GAAG;IAC3C,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE;IAAE,GAAG,EAAE,GAAG,CAAA;CAAE,GAAG,0BAA0B,GAChD,OAAO,CAAC;IAAE,SAAS,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAY1C;AAED,wBAAsB,4BAA4B,CAAC,MAAM,EAAE;IACzD,GAAG,EAAE,GAAG,CAAA;IACR,SAAS,EAAE,gBAAgB,CAAA;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAChB,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAkB1C;AAED,wBAAsB,4BAA4B,CAAC,MAAM,EAAE;IACzD,GAAG,EAAE,GAAG,CAAA;IACR,SAAS,EAAE,gBAAgB,CAAA;IAC3B,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACtD,GAAG,OAAO,CAAC,IAAI,CAAC,CAchB;AAED;;;;;;GAMG;AACH,wBAAsB,+BAA+B,CAAC,MAAM,EAAE;IAC5D,GAAG,EAAE,GAAG,CAAA;IACR,SAAS,EAAE,gBAAgB,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,OAAO,CAAC,IAAI,CAAC,CAQhB;AAED,wBAAsB,0BAA0B,CAAC,MAAM,EAAE;IACvD,GAAG,EAAE,GAAG,CAAA;IACR,SAAS,EAAE,gBAAgB,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,CAYrC;AAED;;;;;;GAMG;AACH,wBAAsB,8BAA8B,CAAC,MAAM,EAAE;IAC3D,GAAG,EAAE,GAAG,CAAA;IACR,SAAS,EAAE,gBAAgB,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAK5B;AAED,wBAAsB,sBAAsB,CAAC,MAAM,EAAE;IAAE,GAAG,EAAE,GAAG,CAAC;IAAC,SAAS,EAAE,gBAAgB,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAU7G"}
|
|
@@ -1 +0,0 @@
|
|
|
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"]}
|
package/dist/schema.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAiCA,eAAO,MAAM,eAAe,EAAE,GAEO,CAAA"}
|
package/dist/schema.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,MAAM,QAAQ,GAAG;IACf,kFAAkF;IAClF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE;QACrC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAClC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE;QAC1C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE;QAC1C,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC7C,CAAC;CACM,CAAA;AAEV,MAAM,KAAK,GAAG;IACZ;;;;;OAKG;IACH,0BAA0B,EAAE;QAC1B,OAAO,EAAE,EAAE,EAAE,EAAE,kBAAkB,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE;QAC/E,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,EAAE;KACpE;CACO,CAAA;AAEV,MAAM,KAAK,GAAG,EAAW,CAAA;AAEzB,MAAM,CAAC,MAAM,eAAe,GAAQ,MAAM,CAAC,WAAW,CAAC;KACpD,QAAQ,CAAC,WAAW,CAAC;KACrB,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA","sourcesContent":["import { i } from \"@instantdb/core\"\nimport { domain } from \"@ekairos/domain\"\nimport { storyDomain } from \"@ekairos/story\"\n\nconst entities = {\n // Keep $files compatible with Instant's base file fields used by structure flows.\n $files: i.entity({\n path: i.string().optional().indexed(),\n url: i.string().optional(),\n name: i.string().optional(),\n contentType: i.string().optional(),\n size: i.number().optional(),\n createdAt: i.number().optional().indexed(),\n updatedAt: i.number().optional().indexed(),\n \"content-disposition\": i.string().optional(),\n }),\n} as const\n\nconst links = {\n /**\n * Structure output link (rows):\n *\n * - `context_contexts.structure_output_file` points to the `$files` record for `output.jsonl`.\n * - Reverse label is prefixed to avoid collisions across domains.\n */\n structureContextOutputFile: {\n forward: { on: \"context_contexts\", has: \"one\", label: \"structure_output_file\" },\n reverse: { on: \"$files\", has: \"many\", label: \"structure_contexts\" },\n },\n} as const\n\nconst rooms = {} as const\n\nexport const structureDomain: any = domain(\"structure\")\n .includes(storyDomain)\n .schema({ entities, links, rooms })\n\n"]}
|
package/dist/service.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,GAAG,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAIzF;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAK;gBAEZ,EAAE,EAAE,GAAG;IAInB,OAAO,CAAC,UAAU;IAIZ,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAkB9D,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAYzC,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAmExG;;;OAGG;IACG,aAAa,CAAC,MAAM,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IA2BrF,uBAAuB,CAAC,MAAM,EAAE;QACpC,SAAS,EAAE,MAAM,CAAA;QACjB,UAAU,EAAE,MAAM,CAAA;KACnB,GAAG,OAAO,CAAC,aAAa,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAoB7D,iBAAiB,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;CAiBrG"}
|
package/dist/service.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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","sourcesContent":["import { SchemaOf } from \"@ekairos/domain\"\nimport { structureDomain } from \"./schema\"\n\nexport type ServiceResult<T = any> = { ok: true; data: T } | { ok: false; error: string }\n\ntype StructureSchemaType = SchemaOf<typeof structureDomain>\n\n/**\n * Back-compat helper for reading structure outputs outside the workflow runtime.\n *\n * IMPORTANT: The source of truth is `context_contexts` (Story context) keyed by `structure:<id>`.\n */\nexport class DatasetService {\n private readonly db: any\n\n constructor(db: any) {\n this.db = db\n }\n\n private contextKey(structureId: string) {\n return `structure:${structureId}`\n }\n\n async getDatasetById(datasetId: string): Promise<ServiceResult<any>> {\n try {\n const key = this.contextKey(datasetId)\n const res: any = await (this.db as any).query({\n context_contexts: {\n $: { where: { key } as any, limit: 1 },\n structure_output_file: {},\n } as any,\n } as any)\n const ctx = res.context_contexts?.[0]\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\n async getFileById(fileId: string): Promise<any> {\n const fileQuery: any = await (this.db as any).query({\n $files: {\n $: {\n where: { id: fileId } as any,\n limit: 1,\n },\n },\n } as any)\n return fileQuery\n }\n\n async readRecordsFromFile(datasetId: string): Promise<ServiceResult<AsyncGenerator<any, void, unknown>>> {\n try {\n const key = this.contextKey(datasetId)\n const res: any = await (this.db as any).query({\n context_contexts: {\n $: { where: { key } as any, limit: 1 },\n structure_output_file: {},\n } as any,\n } as any)\n\n const ctx = res.context_contexts?.[0]\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 async function* createGenerator(fileUrl: string): AsyncGenerator<any, void, unknown> {\n const response = await fetch(fileUrl)\n if (!response.ok || !response.body) {\n throw new Error(\"Failed to download rows output file\")\n }\n\n const reader = response.body.getReader()\n const decoder = new TextDecoder(\"utf-8\")\n let buffer = \"\"\n\n while (true) {\n const { value, done } = await reader.read()\n if (done) break\n\n buffer += decoder.decode(value, { stream: true })\n let newlineIndex = buffer.indexOf(\"\\n\")\n\n while (newlineIndex !== -1) {\n const line = buffer.slice(0, newlineIndex)\n buffer = buffer.slice(newlineIndex + 1)\n\n const trimmed = line.trim()\n if (trimmed) {\n try {\n const record = JSON.parse(trimmed)\n yield record\n } catch {\n // skip invalid\n }\n }\n\n newlineIndex = buffer.indexOf(\"\\n\")\n }\n }\n\n const remaining = buffer.trim()\n if (remaining) {\n try {\n yield JSON.parse(remaining)\n } catch {\n // skip invalid\n }\n }\n }\n\n return { ok: true, data: createGenerator(url) }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n return { ok: false, error: message }\n }\n }\n\n /**\n * Back-compat: create a new structure context keyed by `structure:<id>`.\n * This is not used by the primary `structure()` API, which creates contexts via Story runtime.\n */\n async createDataset(params: { id?: string }): Promise<ServiceResult<{ datasetId: string }>> {\n try {\n const datasetId = params.id ?? createUuidV4()\n const key = this.contextKey(datasetId)\n\n const existing: any = await (this.db as any).query({\n context_contexts: { $: { where: { key } as any, limit: 1 } },\n } as any)\n const ctx = existing.context_contexts?.[0]\n if (ctx) return { ok: true, data: { datasetId } }\n\n await this.db.transact([\n this.db.tx.context_contexts[createUuidV4()].create({\n createdAt: new Date(),\n content: {},\n key,\n status: \"open\",\n } as any),\n ])\n\n return { ok: true, data: { datasetId } }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n return { ok: false, error: message }\n }\n }\n\n async uploadDatasetOutputFile(params: {\n datasetId: string\n fileBuffer: Buffer\n }): Promise<ServiceResult<{ fileId: string; storagePath: string }>> {\n try {\n const storagePath = `/structure/${params.datasetId}/output.jsonl`\n const uploadResult = await this.db.storage.uploadFile(storagePath, params.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\n const linkResult = await this.linkFileToDataset({ datasetId: params.datasetId, fileId })\n if (!linkResult.ok) return linkResult\n\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\n async linkFileToDataset(params: { datasetId: string; fileId: string }): Promise<ServiceResult<void>> {\n try {\n const key = this.contextKey(params.datasetId)\n const res: any = await (this.db as any).query({\n context_contexts: { $: { where: { key } as any, limit: 1 } },\n } as any)\n const ctx = res?.context_contexts?.[0]\n const ctxId = ctx?.id\n if (!ctxId) return { ok: false, error: \"Context not found\" }\n\n await this.db.transact([this.db.tx.context_contexts[ctxId].link({ structure_output_file: params.fileId })])\n return { ok: true, data: undefined }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n return { ok: false, error: message }\n }\n }\n}\n\nfunction createUuidV4(): string {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0\n const v = c === \"x\" ? r : (r & 0x3) | 0x8\n return v.toString(16)\n })\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"commitFromEvents.step.d.ts","sourceRoot":"","sources":["../../src/steps/commitFromEvents.step.ts"],"names":[],"mappings":"AAuBA,wBAAsB,6BAA6B,CAAC,MAAM,EAAE;IAC1D,GAAG,EAAE,GAAG,CAAA;IACR,WAAW,EAAE,MAAM,CAAA;CACpB,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAsErF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"commitFromEvents.step.js","sourceRoot":"","sources":["../../src/steps/commitFromEvents.step.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAI5D,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACrD,MAAM,CAAC,GAAG,KAA4C,CAAA;IACtD,OAAO,CAAC,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,CAAC,KAAK,KAAK,kBAAkB,CAAA;AACrE,CAAC;AAED,SAAS,4BAA4B,CAAC,MAAiB;IACrD,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAI,MAAM,CAAC,CAAC,CAAuC,EAAE,OAAO,EAAE,KAAK,CAAA;QAC9E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,SAAQ;QACnC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YAClB,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAAE,SAAQ;YACpC,OAAO,CAAC,CAAC,MAAM,CAAA;QACjB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,MAGnD;IACC,UAAU,CAAA;IACV,MAAM,UAAU,GAAG,aAAa,MAAM,CAAC,WAAW,EAAE,CAAA;IAEpD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,CAAC,MAAM,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAGrD,CAAA;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;QAC3B,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAA;QAErB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAA;QACzD,MAAM,MAAM,GAAG,4BAA4B,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;QACzD,MAAM,GAAG,GAAG,MAAoH,CAAA;QAChI,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,CAAA;QAEjF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAA;QACvD,MAAM,WAAW,GAAI,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,CAA6B,IAAI,EAAE,CAAA;QAC3E,MAAM,aAAa,GAAG,CAAC,WAAW,EAAE,SAAS,IAAI,EAAE,CAA4B,CAAA;QAE/E,MAAM,aAAa,GAA4B;YAC7C,GAAG,aAAa;YAChB,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,KAAK,EAAE,WAAW;SACnB,CAAA;QAED,oBAAoB;QACpB,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC7B,aAAa,CAAC,OAAO,GAAG;gBACtB,GAAI,CAAE,aAAqB,EAAE,OAAO,IAAI,EAAE,CAA6B;gBACvE,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE;aACnB,CAAA;QACd,CAAC;QAED,kBAAkB;QAClB,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;YAClC,aAAa,CAAC,OAAO,GAAG;gBACtB,GAAI,CAAE,aAAqB,EAAE,OAAO,IAAI,EAAE,CAA6B;gBACvE,mBAAmB,EACjB,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAE,aAAqB,EAAE,OAAO,EAAE,mBAAmB;gBAC1G,uBAAuB,EACrB,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAE,aAAqB,EAAE,OAAO,EAAE,uBAAuB;aACpG,CAAA;YACZ,aAAa,CAAC,OAAO,GAAG;gBACtB,GAAI,CAAE,aAAqB,EAAE,OAAO,IAAI,EAAE,CAA6B;gBACvE,IAAI,EAAE;oBACJ,MAAM,EAAE,OAAO;oBACf,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,WAAW,EAAE,GAAG,CAAC,WAAW;oBAC5B,QAAQ,EAAE,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;iBACxE;aACS,CAAA;YAEZ,qDAAqD;YACrD,MAAM,KAAK,GAAG,GAAG,EAAE,EAAE,CAAA;YACrB,IAAI,CAAC,KAAK;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAA;YAC5D,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAC9F,CAAC;QAED,MAAM,KAAK,CAAC,oBAAoB,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAA;QAEnG,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAA;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACtE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;IACtC,CAAC;AACH,CAAC","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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"persistObjectFromStory.step.d.ts","sourceRoot":"","sources":["../../src/steps/persistObjectFromStory.step.ts"],"names":[],"mappings":"AAsCA,wBAAsB,gCAAgC,CAAC,MAAM,EAAE;IAAE,GAAG,EAAE,GAAG,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAA;CAAE,CAAC,CAqDxH"}
|
|
@@ -1 +0,0 @@
|
|
|
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"]}
|
package/dist/structure.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"structure.d.ts","sourceRoot":"","sources":["../src/structure.ts"],"names":[],"mappings":"AA0BA,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,CAAA;AAC7C,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,CAAA;AAE/C,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AA2UD,wBAAgB,SAAS,CAAC,GAAG,SAAS;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EACrD,GAAG,EAAE,GAAG,EACR,IAAI,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE;;iBAYd,eAAe,EAAE;wBAKV,MAAM;;mBAWX,GAAG;;;uBAgBO,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG;QAAE,OAAO,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;EAmJtF"}
|
package/dist/structure.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"structure.js","sourceRoot":"","sources":["../src/structure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5F,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AACxG,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,8BAA8B,EAC9B,4BAA4B,EAC5B,4BAA4B,EAC5B,+BAA+B,GAChC,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EACL,uBAAuB,EACvB,yCAAyC,EAEzC,gCAAgC,GACjC,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,oBAAoB,EAAkB,MAAM,WAAW,CAAA;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,gCAAgC,EAAE,MAAM,qCAAqC,CAAA;AACtF,OAAO,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAA;AAc7E,SAAS,YAAY;IACnB,6EAA6E;IAC7E,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;QACnE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;QAClC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;QACzC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;AACJ,CAAC;AAuBD,SAAS,sBAAsB,CAAC,QAAiB,EAAE,IAAa;IAC9D,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;IAC1C,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;IAC3D,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;IAC/C,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAA;IACrC,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,OAAO,CAAA;IACvC,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAA;IAC7D,OAAO,MAAM,CAAA;AACf,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,MAMpC;IACC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;IAE5D,MAAM,WAAW,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAA;IACpD,MAAM,UAAU,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAA;IAElD,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAA;QACxF,OAAO,EAAE,eAAe,EAAE,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAA;IACpE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;IAC3E,OAAO,CAAC,GAAG,CAAC,kEAAkE,EAAE,SAAS,CAAC,CAAA;IAC1F,OAAO,CAAC,GAAG,CAAC,qEAAqE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IAClG,OAAO,CAAC,GAAG,CAAC,sEAAsE,EAAE,WAAW,CAAC,CAAA;IAChG,MAAM,QAAQ,GAAG,MAAM,4BAA4B,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,CAAA;IAChH,OAAO,CAAC,GAAG,CAAC,+EAA+E,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAE/G,gGAAgG;IAChG,6FAA6F;IAC7F,OAAO,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAA;IACjG,MAAM,UAAU,GAAG,MAAM,4BAA4B,CAAC;QACpD,GAAG;QACH,SAAS;QACT,GAAG,EAAE,QAAQ;QACb,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC;KACjE,CAAC,CAAA;IACF,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,IAAI,EAAE,CAAA;IAC7C,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAC3F,MAAM,IAAI,KAAK,CAAC,uBAAuB,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;IAC3E,CAAC;IAED,MAAM,QAAQ,GAAqB,EAAE,CAAA;IAErC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAQ,CAAA;QAE7B,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAA;YACzF,OAAO,CAAC,GAAG,CAAC,+DAA+D,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;YACxF,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;YACnE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAA;YACtD,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YACvF,MAAM,IAAI,GAAG,GAAG,WAAW,SAAS,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAA;YAE3D,MAAM,4BAA4B,CAAC;gBACjC,GAAG;gBACH,SAAS;gBACT,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;aACrD,CAAC,CAAA;YACF,OAAO,CAAC,GAAG,CAAC,uEAAuE,EAAE,IAAI,CAAC,CAAA;YAE1F,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;YACrD,SAAQ;QACV,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,+EAA+E,CAAC,CAAA;YAC5F,OAAO,CAAC,GAAG,CAAC,wEAAwE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;YACpG,MAAM,OAAO,GAAG,MAAM,gCAAgC,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAA;YAC3F,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YAChC,CAAC;YACD,MAAM,IAAI,GAAG,GAAG,WAAW,YAAY,GAAG,CAAC,SAAS,QAAQ,CAAA;YAE5D,MAAM,4BAA4B,CAAC;gBACjC,GAAG;gBACH,SAAS;gBACT,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;aAC7D,CAAC,CAAA;YACF,OAAO,CAAC,GAAG,CAAC,+EAA+E,EAAE,IAAI,CAAC,CAAA;YAElG,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YAC3D,SAAQ;QACV,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAA;YACzF,MAAM,GAAG,GAAG,sBAAsB,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;YAC1D,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAA;YAC1B,MAAM,IAAI,GAAG,GAAG,WAAW,IAAI,MAAM,GAAG,GAAG,EAAE,CAAA;YAC7C,MAAM,+BAA+B,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;YAC7F,OAAO,CAAC,GAAG,CAAC,uEAAuE,EAAE,IAAI,CAAC,CAAA;YAE1F,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;YACzF,SAAQ;QACV,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,GAAG,IAAI,CAAA;IACxB,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAA;IAExB,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAA;IACxE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,CAAA;AAC/D,CAAC;AAED,KAAK,UAAU,8BAA8B,CAAC,MAI7C;IACC,MAAM,UAAU,GAAG,0BAA0B,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAC/D,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAA;IACpF,OAAO,CAAC,GAAG,CAAC,2EAA2E,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;IAC1G,OAAO,CAAC,GAAG,CAAC,4EAA4E,EAAE,UAAU,CAAC,CAAA;IACrG,MAAM,MAAM,GAAG,MAAM,4BAA4B,CAAC;QAChD,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,GAAG,EAAE,MAAM;QACX,IAAI,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC;KACzB,CAAC,CAAA;IACF,OAAO,CAAC,GAAG,CAAC,gFAAgF,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC9G,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAEtC,MAAM,QAAQ,GAAG,MAAM,0BAA0B,CAAC;QAChD,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,IAAI,EAAE,UAAU;KACjB,CAAC,CAAA;IACF,iFAAiF;IACjF,MAAM,OAAO,GAAG,MAAM,8BAA8B,CAAC;QACnD,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,IAAI,EAAE,UAAU;KACjB,CAAC,CAAA;IACF,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAClD,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC1B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACnC,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAA;QACvF,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAA;QAC3F,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,SAAS,8BAA8B,CAAgC,MAA4B;IACjG,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAA;IAClC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,cAAc,CAAA;IAE5C,MAAM,KAAK,GAAG,WAAW,CAAM,mBAAmB,CAAC;SAChD,OAAO,CAAC,KAAK,EAAE,MAAW,EAAE,GAAQ,EAAE,EAAE;QACvC,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAA;QACnE,MAAM,IAAI,GAAI,MAAM,EAAE,OAAgC,IAAI,EAAE,CAAA;QAC5D,MAAM,YAAY,GAAiB,IAAI,CAAC,YAAY,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;QAC3F,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,IAAI,EAAE,CAAA;QAElE,IAAI,SAAS,GAAG,iBAAiB,CAAA;QACjC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAA;YAC7E,MAAM,OAAO,GAAG,MAAM,wBAAwB,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;YACzG,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;QAC/B,CAAC;QAED,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,qBAAqB,CAAC;YAC/E,GAAG;YACH,SAAS;YACT,SAAS;YACT,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,KAAK,EAAE,YAAY;SACpB,CAAC,CAAA;QAEF,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAAA;QAC/F,CAAC;QAED,MAAM,aAAa,GAAG;YACpB,SAAS;YACT,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,OAAO,EAAE,eAAe;YACxB,WAAW;YACX,UAAU;SACX,CAAA;QAED,MAAM,UAAU,GAAG,aAAa,SAAS,EAAE,CAAA;QAC3C,aAAa;QACb,qFAAqF;QACrF,6EAA6E;QAC7E,gFAAgF;QAChF,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAA;QACjE,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAS,CAAC,CAAC,CAAE,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAS,CAAA;QACxG,MAAM,aAAa,GAAG,CAAC,WAAW,EAAE,SAAS,IAAI,EAAE,CAAQ,CAAA;QAE3D,MAAM,aAAa,GAAQ;YACzB,GAAG,aAAa;YAChB,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,SAAS;YACtB,KAAK,EAAG,GAAW,EAAE,KAAK;YAC1B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAA;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;YACnF,aAAa,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAA;QAClD,CAAC;QAED,yEAAyE;QACzE,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;YAC1D,MAAM,MAAM,GAAG,MAAM,8BAA8B,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAA;YAClF,IAAI,MAAM,EAAE,CAAC;gBACX,aAAa,CAAC,YAAY,GAAG,MAAM,CAAA;gBACnC,aAAa,CAAC,KAAK,GAAG,iBAAiB,CAAA;YACzC,CAAC;QACH,CAAC;QAED,oGAAoG;QACpG,IAAI,aAAa,CAAC,YAAY,EAAE,CAAC;YAC/B,CAAC;YAAC,aAAqB,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY,CAAA;QACnE,CAAC;QAED,OAAO;YACL,GAAG,WAAW;YACd,GAAG,IAAI;YACP,SAAS;YACT,YAAY;YACZ,aAAa;YACb,SAAS,EAAE,aAAa;SACzB,CAAA;IACH,CAAC,CAAC;SACD,SAAS,CAAC,KAAK,EAAE,MAAW,EAAE,EAAE;QAC/B,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAA;QACrE,MAAM,aAAa,GAAI,MAAM,EAAE,OAAe,EAAE,aAAa,CAAA;QAC7D,MAAM,IAAI,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAA;QAChD,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;QACjE,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAA;YACpF,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAA;QACtF,OAAO;YACL,sBAAsB;YACtB,2IAA2I;YAC3I,EAAE;YACF,gBAAgB;YAChB,EAAE;YACF,IAAI;SACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACd,CAAC,CAAC;SACD,OAAO,CAAC,KAAK,EAAE,MAAW,EAAE,GAAQ,EAAE,EAAE;QACvC,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAA;QACnE,MAAM,SAAS,GAAI,MAAM,EAAE,OAAe,EAAE,SAAmB,CAAA;QAC/D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;QAC5B,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAQ,CAAA;QAC9C,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;QACzE,OAAO,CAAC,GAAG,CAAC,0DAA0D,EAAE,SAAS,CAAC,CAAA;QAClF,OAAO,CAAC,GAAG,CAAC,qDAAqD,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;QAC/E,OAAO,CAAC,GAAG,CAAC,gEAAgE,EAAE,eAAe,CAAC,CAAA;QAE9F,MAAM,OAAO,GAAQ;YACnB,cAAc,EAAE,wBAAwB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;YACvE,KAAK,EAAE,sBAAsB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;SAC7D,CAAA;QAED,4CAA4C;QAC5C,qEAAqE;QACrE,qCAAqC;QACrC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAC/C,OAAO,CAAC,cAAc,GAAG,wBAAwB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAA;QAClF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,QAAQ;gBACd,MAAM,KAAK,MAAM;oBACf,CAAC,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;oBACvD,CAAC,CAAC,wBAAwB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAA;QAC/D,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAA;QAChE,OAAO,OAAO,CAAA;IAChB,CAAC,CAAC;SACD,cAAc,CAAC,CAAC,EAAE,aAAa,EAA0B,EAAE,EAAE;QAC5D,OAAO,CAAC,cAAc,CAAC,aAAoB,EAAE,UAAU,CAAC,CAAA;IAC1D,CAAC,CAAC;SACD,KAAK,CAAC,KAAK,CAAC,CAAA;IAEf,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,GAAQ,EACR,IAA6B;IAE7B,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,YAAY,EAAE,CAAA;IACnD,MAAM,OAAO,GAAsB,EAAE,CAAA;IACrC,IAAI,YAAgC,CAAA;IACpC,IAAI,IAAI,GAAkB,MAAM,CAAA;IAChC,IAAI,MAAM,GAAoB,MAAM,CAAA;IACpC,IAAI,YAA6B,CAAA;IAEjC,MAAM,GAAG,GAAG;QACV,SAAS;QAET,IAAI,CAAC,GAAG,GAAsB;YAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAA;YACpB,OAAO,GAAG,CAAA;QACZ,CAAC;QAED,YAAY,CAAC,IAAa;YACxB,YAAY,GAAG,IAAI,CAAA;YACnB,OAAO,GAAG,CAAA;QACZ,CAAC;QAED,IAAI;YACF,IAAI,GAAG,MAAM,CAAA;YACb,YAAY,GAAG,SAAS,CAAA;YACxB,OAAO,GAAG,CAAA;QACZ,CAAC;QAED,MAAM,CAAC,MAAW;YAChB,IAAI,GAAG,QAAQ,CAAA;YACf,YAAY,GAAG,MAAM,CAAA;YACrB,OAAO,GAAG,CAAA;QACZ,CAAC;QAED,MAAM;YACJ,MAAM,GAAG,MAAM,CAAA;YACf,OAAO,GAAG,CAAA;QACZ,CAAC;QAED,QAAQ;YACN,MAAM,GAAG,QAAQ,CAAA;YACjB,OAAO,GAAG,CAAA;QACZ,CAAC;QAED,KAAK,CAAC,KAAK,CAAC,UAAmB;YAC7B,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAA;YAC3D,OAAO,CAAC,GAAG,CAAC,kDAAkD,EAAE,SAAS,CAAC,CAAA;YAC1E,OAAO,CAAC,GAAG,CAAC,6CAA6C,EAAE,IAAI,CAAC,CAAA;YAChE,OAAO,CAAC,GAAG,CAAC,+CAA+C,EAAE,MAAM,CAAC,CAAA;YACpE,OAAO,CAAC,GAAG,CAAC,qDAAqD,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;YAClF,MAAM,UAAU,GAAG,aAAa,SAAS,EAAE,CAAA;YAC3C,MAAM,WAAW,GAAyB;gBACxC,SAAS;gBACT,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC;gBACrB,YAAY;gBACZ,IAAI;gBACJ,MAAM;gBACN,YAAY;aACb,CAAA;YAED,MAAM,EAAE,KAAK,EAAE,GAAG,8BAA8B,CAAM,WAAW,CAAC,CAAA;YAElE,SAAS,oBAAoB,CAAC,IAAY;gBACxC,OAAO;oBACL,EAAE,EAAE,YAAY,EAAE;oBAClB,IAAI,EAAE,iBAAiB;oBACvB,OAAO,EAAE,WAAW;oBACpB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;iBACtC,CAAA;YACV,CAAC;YAED,KAAK,UAAU,QAAQ,CAAC,GAAQ;gBAC9B,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAA;gBACtE,OAAO,CAAC,GAAG,CAAC,8DAA8D,EAAE,UAAU,CAAC,CAAA;gBACvF,OAAO,CAAC,GAAG,CAAC,0DAA0D,EAAE,IAAI,CAAC,CAAA;gBAC7E,OAAO,CAAC,GAAG,CAAC,2DAA2D,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA;gBACjF,OAAO,CAAC,GAAG,CAAC,6DAA6D,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;gBACrF,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;oBACrB,GAAG;oBACH,OAAO,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE;oBAC5B,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE;iBACvG,CAAC,CAAA;gBACF,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAA;gBAEpE,2GAA2G;gBAC3G,MAAM,MAAM,GAAG,MAAM,6BAA6B,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAA;gBACnF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;oBACf,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAA;oBAC7E,OAAO,CAAC,GAAG,CAAC,+DAA+D,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;gBAC5F,CAAC;YACH,CAAC;YAED,KAAK,UAAU,iBAAiB;gBAC9B,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAA;gBACpE,IAAI,CAAC,SAAS,CAAC,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;gBACnD,OAAO,SAAS,CAAC,IAAI,CAAA;YACvB,CAAC;YAED,KAAK,UAAU,eAAe;gBAC5B,MAAM,GAAG,GAAG,MAAM,yCAAyC,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAA;gBAChF,IAAI,CAAC,GAAG,CAAC,EAAE;oBAAE,OAAO,KAAK,CAAA;gBACzB,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,qBAAqB,CAAA;gBACzC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC1C,OAAO,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;YAC7B,CAAC;YAED,SAAS,iBAAiB,CAAC,GAAQ;gBACjC,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,CAAQ,CAAA;gBAC3C,OAAO,CACL,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,KAAK,SAAS;oBACxD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,KAAK,IAAI,CACpD,CAAA;YACH,CAAC;YAED,MAAM,QAAQ,CAAC,oBAAoB,CAAC,UAAU,IAAI,2BAA2B,CAAC,CAAC,CAAA;YAC/E,IAAI,GAAG,GAAG,MAAM,iBAAiB,EAAE,CAAA;YAEnC,2GAA2G;YAC3G,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACpB,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,CAAQ,CAAA;gBAC3C,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;gBACnE,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAA;oBAChF,MAAM,QAAQ,CACZ,oBAAoB,CAClB;wBACE,8CAA8C;wBAC9C,2FAA2F;wBAC3F,yBAAyB;wBACzB,uEAAuE;qBACxE,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CACF,CAAA;oBACD,GAAG,GAAG,MAAM,iBAAiB,EAAE,CAAA;gBACjC,CAAC;YACH,CAAC;YAED,MAAM,eAAe,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAA;YAEhG,OAAO,CAAC,GAAG,CAAC,wDAAwD,EAAE,eAAe,CAAC,CAAA;YAEtF,IAAI,eAAe,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAA;gBACtE,MAAM,YAAY,GAChB,MAAM,KAAK,MAAM;oBACf,CAAC,CAAC,mEAAmE;oBACrE,CAAC,CAAC,wEAAwE,CAAA;gBAE9E,MAAM,QAAQ,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,CAAA;gBAClD,GAAG,GAAG,MAAM,iBAAiB,EAAE,CAAA;gBAC/B,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAA;YACtE,CAAC;YAED,MAAM,8BAA8B,GAClC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAA;YAC1E,IAAI,8BAA8B,EAAE,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAA;gBACrE,MAAM,SAAS,GACb,MAAM,KAAK,MAAM;oBACf,CAAC,CAAC,4GAA4G;oBAC9G,CAAC,CAAC,yGAAyG,CAAA;gBAC/G,MAAM,QAAQ,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAA;gBAC/C,GAAG,GAAG,MAAM,iBAAiB,EAAE,CAAA;gBAC/B,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAA;YACrE,CAAC;YAED,IAAI,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,eAAe,EAAE,CAAC,EAAE,CAAC;gBACpD,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;YAC9C,CAAC;YACD,IAAI,MAAM,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnD,OAAO,CAAC,GAAG,CAAC,iFAAiF,CAAC,CAAA;gBAC9F,MAAM,SAAS,GAAG,MAAM,gCAAgC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAA;gBAC5E,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC;oBACjB,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAA;oBACxE,GAAG,GAAG,MAAM,iBAAiB,EAAE,CAAA;gBACjC,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAA;gBAC9E,CAAC;YACH,CAAC;YAED,IAAI,MAAM,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnD,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;YAChD,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAA;YACxD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAA;QACpC,CAAC;KACF,CAAA;IAED,OAAO,GAAG,CAAA;AACZ,CAAC","sourcesContent":["import { createStory, didToolExecute, USER_MESSAGE_TYPE, WEB_CHANNEL } from \"@ekairos/story\"\nimport { getDatasetOutputPath, getDatasetOutputSchemaPath, getDatasetWorkstation } from \"./datasetFiles\"\nimport {\n createDatasetSandboxStep,\n readDatasetSandboxFileStep,\n readDatasetSandboxTextFileStep,\n runDatasetSandboxCommandStep,\n writeDatasetSandboxFilesStep,\n writeDatasetSandboxTextFileStep,\n} from \"./sandbox/steps\"\nimport { readInstantFileStep } from \"./file/steps\"\nimport {\n structureGetContextStep,\n structureGetContextWithRowsOutputFileStep,\n structurePatchContextContentStep,\n structureReadRowsOutputJsonlStep,\n} from \"./dataset/steps\"\nimport { buildStructurePrompt, PreparedSource } from \"./prompts\"\nimport { createExecuteCommandTool } from \"./executeCommand.tool\"\nimport { createGenerateSchemaTool } from \"./generateSchema.tool\"\nimport { createClearDatasetTool } from \"./clearDataset.tool\"\nimport { createCompleteRowsTool } from \"./completeRows.tool\"\nimport { createCompleteObjectTool } from \"./completeObject.tool\"\nimport { persistObjectResultFromStoryStep } from \"./steps/persistObjectFromStory.step\"\nimport { structureCommitFromEventsStep } from \"./steps/commitFromEvents.step\"\n\nexport type StructureSource =\n | { kind: \"file\"; fileId: string }\n | { kind: \"dataset\"; datasetId: string }\n | { kind: \"text\"; text: string; mimeType?: string; name?: string }\n\nexport type StructureMode = \"auto\" | \"schema\"\nexport type StructureOutput = \"rows\" | \"object\"\n\nexport type StructureBuildResult = {\n datasetId: string\n}\n\nfunction createUuidV4(): string {\n // Pure JS uuidv4 (workflow-safe: avoids Node built-ins and @instantdb/admin)\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0\n const v = c === \"x\" ? r : (r & 0x3) | 0x8\n return v.toString(16)\n })\n}\n\ntype SandboxState = {\n initialized: boolean\n sources: PreparedSource[]\n}\n\ntype StructureStoryStored = {\n sandboxId?: string\n sandboxState?: SandboxState\n}\n\ntype StructureStoryConfig = {\n datasetId: string\n sources: StructureSource[]\n instructions?: string\n mode: StructureMode\n output: StructureOutput\n outputSchema?: any\n sandboxId?: string\n model?: string\n}\n\nfunction guessTextFileExtension(mimeType?: string, name?: string): string {\n const n = String(name ?? \"\").toLowerCase()\n if (n.includes(\".\")) return n.substring(n.lastIndexOf(\".\"))\n const mt = String(mimeType ?? \"\").toLowerCase()\n if (mt.includes(\"csv\")) return \".csv\"\n if (mt.includes(\"json\")) return \".json\"\n if (mt.includes(\"yaml\") || mt.includes(\"yml\")) return \".yaml\"\n return \".txt\"\n}\n\nasync function ensureSandboxPrepared(params: {\n env: any\n datasetId: string\n sandboxId: string\n sources: StructureSource[]\n state: SandboxState\n}): Promise<{ preparedSources: PreparedSource[]; workstation: string; outputPath: string }> {\n const { env, datasetId, sandboxId, sources, state } = params\n\n const workstation = getDatasetWorkstation(datasetId)\n const outputPath = getDatasetOutputPath(datasetId)\n\n if (state.initialized) {\n console.log(\"[ekairos/structure] structure.ts ensureSandboxPrepared alreadyInitialized\")\n return { preparedSources: state.sources, workstation, outputPath }\n }\n\n console.log(\"[ekairos/structure] structure.ts ensureSandboxPrepared begin\")\n console.log(\"[ekairos/structure] structure.ts ensureSandboxPrepared datasetId\", datasetId)\n console.log(\"[ekairos/structure] structure.ts ensureSandboxPrepared sourcesCount\", sources.length)\n console.log(\"[ekairos/structure] structure.ts ensureSandboxPrepared sandbox.mkdir\", workstation)\n const mkdirRes = await runDatasetSandboxCommandStep({ env, sandboxId, cmd: \"mkdir\", args: [\"-p\", workstation] })\n console.log(\"[ekairos/structure] structure.ts ensureSandboxPrepared sandbox.mkdir exitCode\", mkdirRes.exitCode)\n\n // Align with dataset sandbox behavior: install python deps up-front (once per dataset sandbox).\n // This avoids tool-level \"install if used\" heuristics and ensures scripts can import pandas.\n console.log(\"[ekairos/structure] structure.ts ensureSandboxPrepared installingPythonDeps pandas\")\n const pipInstall = await runDatasetSandboxCommandStep({\n env,\n sandboxId,\n cmd: \"python\",\n args: [\"-m\", \"pip\", \"install\", \"pandas\", \"--quiet\", \"--upgrade\"],\n })\n const installStderr = pipInstall.stderr ?? \"\"\n if (installStderr && (installStderr.includes(\"ERROR\") || installStderr.includes(\"FAILED\"))) {\n throw new Error(`pip install failed: ${installStderr.substring(0, 300)}`)\n }\n\n const prepared: PreparedSource[] = []\n\n for (let i = 0; i < sources.length; i++) {\n const src = sources[i] as any\n\n if (src.kind === \"file\") {\n console.log(\"[ekairos/structure] structure.ts ensureSandboxPrepared preparingFileSource\")\n console.log(\"[ekairos/structure] structure.ts ensureSandboxPrepared fileId\", src.fileId)\n const file = await readInstantFileStep({ env, fileId: src.fileId })\n const fileName = String(file.contentDisposition ?? \"\")\n const ext = fileName.includes(\".\") ? fileName.substring(fileName.lastIndexOf(\".\")) : \"\"\n const path = `${workstation}/file_${i}_${src.fileId}${ext}`\n\n await writeDatasetSandboxFilesStep({\n env,\n sandboxId,\n files: [{ path, contentBase64: file.contentBase64 }],\n })\n console.log(\"[ekairos/structure] structure.ts ensureSandboxPrepared wroteFile path\", path)\n\n prepared.push({ kind: \"file\", id: src.fileId, path })\n continue\n }\n\n if (src.kind === \"dataset\") {\n console.log(\"[ekairos/structure] structure.ts ensureSandboxPrepared preparingDatasetSource\")\n console.log(\"[ekairos/structure] structure.ts ensureSandboxPrepared sourceDatasetId\", src.datasetId)\n const content = await structureReadRowsOutputJsonlStep({ env, structureId: src.datasetId })\n if (!content.ok) {\n throw new Error(content.error)\n }\n const path = `${workstation}/dataset_${src.datasetId}.jsonl`\n\n await writeDatasetSandboxFilesStep({\n env,\n sandboxId,\n files: [{ path, contentBase64: content.data.contentBase64 }],\n })\n console.log(\"[ekairos/structure] structure.ts ensureSandboxPrepared wroteDatasetJsonl path\", path)\n\n prepared.push({ kind: \"dataset\", id: src.datasetId, path })\n continue\n }\n\n if (src.kind === \"text\") {\n console.log(\"[ekairos/structure] structure.ts ensureSandboxPrepared preparingTextSource\")\n const ext = guessTextFileExtension(src.mimeType, src.name)\n const textId = `text_${i}`\n const path = `${workstation}/${textId}${ext}`\n await writeDatasetSandboxTextFileStep({ env, sandboxId, path, text: String(src.text ?? \"\") })\n console.log(\"[ekairos/structure] structure.ts ensureSandboxPrepared wroteText path\", path)\n\n prepared.push({ kind: \"text\", id: textId, path, name: src.name, mimeType: src.mimeType })\n continue\n }\n }\n\n state.initialized = true\n state.sources = prepared\n\n console.log(\"[ekairos/structure] structure.ts ensureSandboxPrepared ok\")\n return { preparedSources: prepared, workstation, outputPath }\n}\n\nasync function readSchemaFromSandboxIfPresent(params: {\n env: any\n sandboxId: string\n datasetId: string\n}): Promise<any | null> {\n const schemaPath = getDatasetOutputSchemaPath(params.datasetId)\n console.log(\"[ekairos/structure] structure.ts readSchemaFromSandboxIfPresent begin\")\n console.log(\"[ekairos/structure] structure.ts readSchemaFromSandboxIfPresent datasetId\", params.datasetId)\n console.log(\"[ekairos/structure] structure.ts readSchemaFromSandboxIfPresent schemaPath\", schemaPath)\n const exists = await runDatasetSandboxCommandStep({\n env: params.env,\n sandboxId: params.sandboxId,\n cmd: \"test\",\n args: [\"-f\", schemaPath],\n })\n console.log(\"[ekairos/structure] structure.ts readSchemaFromSandboxIfPresent existsExitCode\", exists.exitCode)\n if (exists.exitCode !== 0) return null\n\n const fileRead = await readDatasetSandboxFileStep({\n env: params.env,\n sandboxId: params.sandboxId,\n path: schemaPath,\n })\n // Decode inside step runtime (Node) to avoid `Buffer` usage in workflow runtime.\n const decoded = await readDatasetSandboxTextFileStep({\n env: params.env,\n sandboxId: params.sandboxId,\n path: schemaPath,\n })\n const jsonText = String(decoded.text ?? \"\").trim()\n if (!jsonText) return null\n try {\n const parsed = JSON.parse(jsonText)\n console.log(\"[ekairos/structure] structure.ts readSchemaFromSandboxIfPresent parsedOk\")\n return parsed\n } catch {\n console.log(\"[ekairos/structure] structure.ts readSchemaFromSandboxIfPresent parsedFailed\")\n return null\n }\n}\n\nfunction createStructureStoryDefinition<Env extends { orgId: string }>(config: StructureStoryConfig): { datasetId: string; story: any } {\n const datasetId = config.datasetId\n const model = config.model ?? \"openai/gpt-5\"\n\n const story = createStory<Env>(\"ekairos.structure\")\n .context(async (stored: any, env: Env) => {\n console.log(\"[ekairos/structure] structure.ts story.context begin\")\n const prev = (stored?.content as StructureStoryStored) ?? {}\n const sandboxState: SandboxState = prev.sandboxState ?? { initialized: false, sources: [] }\n const existingSandboxId = prev.sandboxId ?? config.sandboxId ?? \"\"\n\n let sandboxId = existingSandboxId\n if (!sandboxId) {\n console.log(\"[ekairos/structure] structure.ts story.context creatingSandbox\")\n const created = await createDatasetSandboxStep({ env, runtime: \"python3.13\", timeoutMs: 10 * 60 * 1000 })\n sandboxId = created.sandboxId\n }\n\n const { preparedSources, workstation, outputPath } = await ensureSandboxPrepared({\n env,\n datasetId,\n sandboxId,\n sources: config.sources,\n state: sandboxState,\n })\n\n if (config.mode === \"schema\" && config.outputSchema) {\n console.log(\"[ekairos/structure] structure.ts story.context schemaMode outputSchemaProvided\")\n }\n\n const promptContext = {\n datasetId,\n mode: config.mode,\n output: config.output,\n outputSchema: config.outputSchema,\n sources: preparedSources,\n workstation,\n outputPath,\n }\n\n const contextKey = `structure:${datasetId}`\n // IMPORTANT:\n // The Story engine keeps an in-memory context snapshot from *before* tool execution.\n // Tools may have updated `context.content` via steps in the same story turn.\n // To avoid clobbering those updates, re-read the latest persisted content here.\n const latest = await structureGetContextStep({ env, contextKey })\n const prevContent = latest.ok ? ((latest.data?.content ?? {}) as any) : ((stored?.content ?? {}) as any)\n const prevStructure = (prevContent?.structure ?? {}) as any\n\n const nextStructure: any = {\n ...prevStructure,\n kind: \"ekairos.structure\",\n version: 1,\n structureId: datasetId,\n orgId: (env as any)?.orgId,\n updatedAt: Date.now(),\n mode: config.mode,\n output: config.output,\n instructions: config.instructions,\n sources: config.sources,\n }\n\n if (config.mode === \"schema\" && config.outputSchema && !nextStructure.outputSchema) {\n nextStructure.outputSchema = config.outputSchema\n }\n\n // Auto mode: lift schema produced by tools from the sandbox, if present.\n if (config.mode === \"auto\" && !nextStructure.outputSchema) {\n const lifted = await readSchemaFromSandboxIfPresent({ env, sandboxId, datasetId })\n if (lifted) {\n nextStructure.outputSchema = lifted\n nextStructure.state = \"schema_complete\"\n }\n }\n\n // Ensure the prompt always reflects the currently known schema (schema mode or lifted auto schema).\n if (nextStructure.outputSchema) {\n ;(promptContext as any).outputSchema = nextStructure.outputSchema\n }\n\n return {\n ...prevContent,\n ...prev,\n sandboxId,\n sandboxState,\n promptContext,\n structure: nextStructure,\n }\n })\n .narrative(async (stored: any) => {\n console.log(\"[ekairos/structure] structure.ts story.narrative begin\")\n const promptContext = (stored?.content as any)?.promptContext\n const base = buildStructurePrompt(promptContext)\n const userInstructions = String(config.instructions ?? \"\").trim()\n if (!userInstructions) {\n console.log(\"[ekairos/structure] structure.ts story.narrative okNoUserInstructions\")\n return base\n }\n console.log(\"[ekairos/structure] structure.ts story.narrative okWithUserInstructions\")\n return [\n \"## USER INSTRUCTIONS\",\n \"The following instructions were provided by the user. Apply them in addition to (and with higher priority than) the default instructions.\",\n \"\",\n userInstructions,\n \"\",\n base,\n ].join(\"\\n\")\n })\n .actions(async (stored: any, env: Env) => {\n console.log(\"[ekairos/structure] structure.ts story.actions begin\")\n const sandboxId = (stored?.content as any)?.sandboxId as string\n const output = config.output\n const content = (stored?.content ?? {}) as any\n const hasOutputSchema = Boolean(content?.structure?.outputSchema?.schema)\n console.log(\"[ekairos/structure] structure.ts story.actions datasetId\", datasetId)\n console.log(\"[ekairos/structure] structure.ts story.actions mode\", config.mode)\n console.log(\"[ekairos/structure] structure.ts story.actions hasOutputSchema\", hasOutputSchema)\n\n const actions: any = {\n executeCommand: createExecuteCommandTool({ datasetId, sandboxId, env }),\n clear: createClearDatasetTool({ datasetId, sandboxId, env }),\n }\n\n // In auto() mode we force a two-phase flow:\n // 1) Model MUST call generateSchema (to persist schema into context)\n // 2) Only then do we expose complete\n if (config.mode === \"auto\" && !hasOutputSchema) {\n actions.generateSchema = createGenerateSchemaTool({ datasetId, sandboxId, env })\n } else {\n actions.complete =\n output === \"rows\"\n ? createCompleteRowsTool({ datasetId, sandboxId, env })\n : createCompleteObjectTool({ datasetId, sandboxId, env })\n }\n\n console.log(\"[ekairos/structure] structure.ts story.actions ok\")\n return actions\n })\n .shouldContinue(({ reactionEvent }: { reactionEvent: any }) => {\n return !didToolExecute(reactionEvent as any, \"complete\")\n })\n .model(model)\n\n return { datasetId, story }\n}\n\nexport function structure<Env extends { orgId: string }>(\n env: Env,\n opts?: { datasetId?: string },\n) {\n const datasetId = opts?.datasetId ?? createUuidV4()\n const sources: StructureSource[] = []\n let instructions: string | undefined\n let mode: StructureMode = \"auto\"\n let output: StructureOutput = \"rows\"\n let outputSchema: any | undefined\n\n const api = {\n datasetId,\n\n from(...src: StructureSource[]) {\n sources.push(...src)\n return api\n },\n\n instructions(text?: string) {\n instructions = text\n return api\n },\n\n auto() {\n mode = \"auto\"\n outputSchema = undefined\n return api\n },\n\n schema(schema: any) {\n mode = \"schema\"\n outputSchema = schema\n return api\n },\n\n asRows() {\n output = \"rows\"\n return api\n },\n\n asObject() {\n output = \"object\"\n return api\n },\n\n async build(userPrompt?: string): Promise<StructureBuildResult & { dataset?: any }> {\n console.log(\"[ekairos/structure] structure.ts build begin\")\n console.log(\"[ekairos/structure] structure.ts build datasetId\", datasetId)\n console.log(\"[ekairos/structure] structure.ts build mode\", mode)\n console.log(\"[ekairos/structure] structure.ts build output\", output)\n console.log(\"[ekairos/structure] structure.ts build sourcesCount\", sources.length)\n const contextKey = `structure:${datasetId}`\n const storyConfig: StructureStoryConfig = {\n datasetId,\n sources: [...sources],\n instructions,\n mode,\n output,\n outputSchema,\n }\n\n const { story } = createStructureStoryDefinition<Env>(storyConfig)\n\n function makeUserMessageEvent(text: string) {\n return {\n id: createUuidV4(),\n type: USER_MESSAGE_TYPE,\n channel: WEB_CHANNEL,\n createdAt: new Date().toISOString(),\n content: { parts: [{ type: \"text\", text }] },\n } as any\n }\n\n async function runStory(evt: any) {\n console.log(\"[ekairos/structure] structure.ts build storyReact begin\")\n console.log(\"[ekairos/structure] structure.ts build storyReact contextKey\", contextKey)\n console.log(\"[ekairos/structure] structure.ts build storyReact silent\", true)\n console.log(\"[ekairos/structure] structure.ts build storyReact eventId\", evt?.id)\n console.log(\"[ekairos/structure] structure.ts build storyReact eventType\", evt?.type)\n await story.react(evt, {\n env,\n context: { key: contextKey },\n options: { silent: true, preventClose: true, sendFinish: false, maxIterations: 40, maxModelSteps: 10 },\n })\n console.log(\"[ekairos/structure] structure.ts build storyReact end\")\n\n // Tools are intentionally pure: persist completion outputs post-react by reading tool results from events.\n const commit = await structureCommitFromEventsStep({ env, structureId: datasetId })\n if (!commit.ok) {\n console.log(\"[ekairos/structure] structure.ts build commitFromEvents failed\")\n console.log(\"[ekairos/structure] structure.ts build commitFromEvents error\", commit.error)\n }\n }\n\n async function getContextOrThrow() {\n const ctxResult = await structureGetContextStep({ env, contextKey })\n if (!ctxResult.ok) throw new Error(ctxResult.error)\n return ctxResult.data\n }\n\n async function isRowsCompleted() {\n const res = await structureGetContextWithRowsOutputFileStep({ env, contextKey })\n if (!res.ok) return false\n const f = res.data?.structure_output_file\n const linked = Array.isArray(f) ? f[0] : f\n return Boolean(linked?.url)\n }\n\n function isObjectCompleted(ctx: any) {\n const content = (ctx?.content ?? {}) as any\n return (\n content?.structure?.outputs?.object?.value !== undefined &&\n content?.structure?.outputs?.object?.value !== null\n )\n }\n\n await runStory(makeUserMessageEvent(userPrompt ?? \"produce structured output\"))\n let ctx = await getContextOrThrow()\n\n // Auto-mode: if schema is missing after the first pass, explicitly request investigation + generateSchema.\n if (mode === \"auto\") {\n const content = (ctx?.content ?? {}) as any\n const hasSchema = Boolean(content?.structure?.outputSchema?.schema)\n if (!hasSchema) {\n console.log(\"[ekairos/structure] structure.ts build autoSchemaMissing followUp\")\n await runStory(\n makeUserMessageEvent(\n [\n \"CRITICAL: You did not generate a schema yet.\",\n \"1) Investigate Sources using executeCommand (inspect paths, read files, infer structure).\",\n \"2) Call generateSchema.\",\n \"3) After schema is saved, produce the final output and call complete.\",\n ].join(\"\\n\"),\n ),\n )\n ctx = await getContextOrThrow()\n }\n }\n\n const needsSecondPass = output === \"rows\" ? !(await isRowsCompleted()) : !isObjectCompleted(ctx)\n\n console.log(\"[ekairos/structure] structure.ts build needsSecondPass\", needsSecondPass)\n\n if (needsSecondPass) {\n console.log(\"[ekairos/structure] structure.ts build secondPass begin\")\n const followUpText =\n output === \"rows\"\n ? \"Finalize now: write output.jsonl to OutputPath and call complete.\"\n : \"Finalize now: call complete with summary and resultJson (inline JSON).\"\n\n await runStory(makeUserMessageEvent(followUpText))\n ctx = await getContextOrThrow()\n console.log(\"[ekairos/structure] structure.ts build secondPass end\")\n }\n\n const stillIncompleteAfterSecondPass =\n output === \"rows\" ? !(await isRowsCompleted()) : !isObjectCompleted(ctx)\n if (stillIncompleteAfterSecondPass) {\n console.log(\"[ekairos/structure] structure.ts build thirdPass begin\")\n const finalText =\n output === \"rows\"\n ? \"CRITICAL: Do not do anything else. Ensure output.jsonl exists at OutputPath and immediately call complete.\"\n : \"CRITICAL: Do not do anything else. Immediately call complete with summary and resultJson (inline JSON).\"\n await runStory(makeUserMessageEvent(finalText))\n ctx = await getContextOrThrow()\n console.log(\"[ekairos/structure] structure.ts build thirdPass end\")\n }\n\n if (output === \"rows\" && !(await isRowsCompleted())) {\n throw new Error(\"Rows output not completed\")\n }\n if (output === \"object\" && !isObjectCompleted(ctx)) {\n console.log(\"[ekairos/structure] structure.ts build objectNotCompleted tryingPersistFallback\")\n const persisted = await persistObjectResultFromStoryStep({ env, datasetId })\n if (persisted.ok) {\n console.log(\"[ekairos/structure] structure.ts build persistFallback ok\")\n ctx = await getContextOrThrow()\n } else {\n console.log(\"[ekairos/structure] structure.ts build persistFallback failed\")\n }\n }\n\n if (output === \"object\" && !isObjectCompleted(ctx)) {\n throw new Error(\"Object output not completed\")\n }\n\n console.log(\"[ekairos/structure] structure.ts build ok\")\n return { datasetId, dataset: ctx }\n },\n }\n\n return api\n}\n\n"]}
|
package/dist/types/runtime.d.ts
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
export type StoryRuntimeStore = {
|
|
2
|
-
getOrCreateContext(params: {
|
|
3
|
-
key: string;
|
|
4
|
-
}): Promise<{
|
|
5
|
-
id: string;
|
|
6
|
-
key: string;
|
|
7
|
-
content?: unknown;
|
|
8
|
-
}>;
|
|
9
|
-
getContext(params: {
|
|
10
|
-
key: string;
|
|
11
|
-
}): Promise<{
|
|
12
|
-
id: string;
|
|
13
|
-
key: string;
|
|
14
|
-
content?: unknown;
|
|
15
|
-
} | null>;
|
|
16
|
-
updateContextContent(params: {
|
|
17
|
-
key: string;
|
|
18
|
-
}, content: unknown): Promise<{
|
|
19
|
-
id: string;
|
|
20
|
-
key: string;
|
|
21
|
-
content?: unknown;
|
|
22
|
-
}>;
|
|
23
|
-
getEvents(params: {
|
|
24
|
-
key: string;
|
|
25
|
-
}): Promise<unknown[]>;
|
|
26
|
-
};
|
|
27
|
-
export type InstantTxCollection<TLinkLabel extends string = string> = Record<string, {
|
|
28
|
-
link(data: Record<TLinkLabel, string>): unknown;
|
|
29
|
-
unlink(data: Record<TLinkLabel, string>): unknown;
|
|
30
|
-
update(data: unknown): unknown;
|
|
31
|
-
delete(): unknown;
|
|
32
|
-
create(data: unknown): unknown;
|
|
33
|
-
}>;
|
|
34
|
-
export type InstantDbLike = {
|
|
35
|
-
query(query: unknown): Promise<unknown>;
|
|
36
|
-
transact(tx: unknown | unknown[]): Promise<unknown>;
|
|
37
|
-
tx: {
|
|
38
|
-
context_contexts: InstantTxCollection<"structure_output_file">;
|
|
39
|
-
$files?: InstantTxCollection<string>;
|
|
40
|
-
};
|
|
41
|
-
storage: {
|
|
42
|
-
uploadFile(path: string, file: Buffer, opts?: {
|
|
43
|
-
contentType?: string;
|
|
44
|
-
contentDisposition?: string;
|
|
45
|
-
}): Promise<{
|
|
46
|
-
data?: {
|
|
47
|
-
id?: string;
|
|
48
|
-
};
|
|
49
|
-
}>;
|
|
50
|
-
};
|
|
51
|
-
};
|
|
52
|
-
export type StoryRuntime = {
|
|
53
|
-
db: InstantDbLike;
|
|
54
|
-
store: StoryRuntimeStore;
|
|
55
|
-
};
|
|
56
|
-
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/types/runtime.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,kBAAkB,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACrG,UAAU,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IACpG,oBAAoB,CAClB,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,EACvB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC3D,SAAS,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CACxD,CAAC;AAEF,MAAM,MAAM,mBAAmB,CAAC,UAAU,SAAS,MAAM,GAAG,MAAM,IAAI,MAAM,CAC1E,MAAM,EACN;IACE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC;IAChD,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC;IAClD,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IAC/B,MAAM,IAAI,OAAO,CAAC;IAClB,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;CAChC,CACF,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,EAAE,EAAE;QACF,gBAAgB,EAAE,mBAAmB,CAAC,uBAAuB,CAAC,CAAC;QAC/D,MAAM,CAAC,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;KACtC,CAAC;IACF,OAAO,EAAE;QACP,UAAU,CACR,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;YAAE,WAAW,CAAC,EAAE,MAAM,CAAC;YAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;SAAE,GAC3D,OAAO,CAAC;YAAE,IAAI,CAAC,EAAE;gBAAE,EAAE,CAAC,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CAAC,CAAC;KACxC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,aAAa,CAAC;IAClB,KAAK,EAAE,iBAAiB,CAAC;CAC1B,CAAC"}
|
package/dist/types/runtime.js
DELETED