@ekairos/dataset 1.21.43-beta.0 → 1.21.53-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 +3 -5
- package/dist/clearDataset.tool.d.ts.map +1 -1
- package/dist/clearDataset.tool.js +8 -5
- package/dist/clearDataset.tool.js.map +1 -1
- package/dist/completeDataset.tool.d.ts +3 -5
- package/dist/completeDataset.tool.d.ts.map +1 -1
- package/dist/completeDataset.tool.js +22 -68
- package/dist/completeDataset.tool.js.map +1 -1
- package/dist/dataset/steps.d.ts +39 -0
- package/dist/dataset/steps.d.ts.map +1 -0
- package/dist/dataset/steps.js +77 -0
- package/dist/dataset/steps.js.map +1 -0
- package/dist/executeCommand.tool.d.ts +3 -5
- package/dist/executeCommand.tool.d.ts.map +1 -1
- package/dist/executeCommand.tool.js +17 -10
- package/dist/executeCommand.tool.js.map +1 -1
- package/dist/file/file-dataset.agent.d.ts +35 -36
- package/dist/file/file-dataset.agent.d.ts.map +1 -1
- package/dist/file/file-dataset.agent.js +141 -191
- package/dist/file/file-dataset.agent.js.map +1 -1
- package/dist/file/filepreview.d.ts +2 -3
- package/dist/file/filepreview.d.ts.map +1 -1
- package/dist/file/filepreview.js +36 -27
- package/dist/file/filepreview.js.map +1 -1
- package/dist/file/generateSchema.tool.d.ts +2 -5
- package/dist/file/generateSchema.tool.d.ts.map +1 -1
- package/dist/file/generateSchema.tool.js +4 -2
- package/dist/file/generateSchema.tool.js.map +1 -1
- package/dist/file/prompts.d.ts +2 -2
- package/dist/file/prompts.d.ts.map +1 -1
- package/dist/file/prompts.js.map +1 -1
- package/dist/file/steps.d.ts +9 -0
- package/dist/file/steps.d.ts.map +1 -0
- package/dist/file/steps.js +23 -0
- package/dist/file/steps.js.map +1 -0
- package/dist/sandbox/steps.d.ts +47 -0
- package/dist/sandbox/steps.d.ts.map +1 -0
- package/dist/sandbox/steps.js +94 -0
- package/dist/sandbox/steps.js.map +1 -0
- package/dist/sandbox.steps.d.ts +2 -0
- package/dist/sandbox.steps.d.ts.map +1 -0
- package/dist/sandbox.steps.js +18 -0
- package/dist/sandbox.steps.js.map +1 -0
- package/dist/schema.d.ts +5 -3
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +7 -3
- package/dist/schema.js.map +1 -1
- package/dist/service.d.ts +2 -4
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +2 -29
- package/dist/service.js.map +1 -1
- package/dist/transform/filepreview.d.ts +1 -2
- package/dist/transform/filepreview.d.ts.map +1 -1
- package/dist/transform/filepreview.js +61 -54
- package/dist/transform/filepreview.js.map +1 -1
- package/dist/transform/transform-dataset.agent.d.ts +19 -37
- package/dist/transform/transform-dataset.agent.d.ts.map +1 -1
- package/dist/transform/transform-dataset.agent.js +116 -224
- package/dist/transform/transform-dataset.agent.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-dataset.agent.d.ts","sourceRoot":"","sources":["../../src/file/file-dataset.agent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"file-dataset.agent.d.ts","sourceRoot":"","sources":["../../src/file/file-dataset.agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkD,MAAM,gBAAgB,CAAA;AAO5F,OAAO,EAAuB,kBAAkB,EAAiC,MAAM,eAAe,CAAA;AAMtG,MAAM,MAAM,qBAAqB,GAAG;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE;QACX,QAAQ,EAAE,MAAM,CAAA;KACnB,CAAA;IACD,QAAQ,EAAE,GAAG,EAAE,CAAA;IACf,MAAM,EAAE,GAAG,GAAG,IAAI,CAAA;IAClB,IAAI,EAAE,GAAG,GAAG,IAAI,CAAA;IAChB,eAAe,EAAE,GAAG,GAAG,IAAI,CAAA;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,kBAAkB,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AA0ED,MAAM,MAAM,qBAAqB,CAAC,GAAG,SAAS;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,IAAI;IAC/D,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;CAC5F,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,GAAG,CAAA;IACZ,QAAQ,CAAC,EAAE,GAAG,CAAA;IACd,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAyHD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,SAAS;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EAC9D,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB;;gBAaqB,GAAG,WAAW,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;;EAsB9E"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.createFileDatasetAgent = createFileDatasetAgent;
|
|
3
|
+
exports.createFileParseStory = createFileParseStory;
|
|
5
4
|
const story_1 = require("@ekairos/story");
|
|
5
|
+
const steps_1 = require("../sandbox/steps");
|
|
6
6
|
const generateSchema_tool_1 = require("./generateSchema.tool");
|
|
7
7
|
const completeDataset_tool_1 = require("../completeDataset.tool");
|
|
8
8
|
const executeCommand_tool_1 = require("../executeCommand.tool");
|
|
@@ -11,87 +11,93 @@ const prompts_1 = require("./prompts");
|
|
|
11
11
|
const filepreview_1 = require("./filepreview");
|
|
12
12
|
const admin_1 = require("@instantdb/admin");
|
|
13
13
|
const datasetFiles_1 = require("../datasetFiles");
|
|
14
|
-
const
|
|
15
|
-
|
|
14
|
+
const steps_2 = require("./steps");
|
|
15
|
+
const steps_3 = require("../dataset/steps");
|
|
16
|
+
async function initializeSandbox(env, sandboxId, datasetId, fileId, state) {
|
|
16
17
|
if (state.initialized) {
|
|
17
18
|
return state.filePath;
|
|
18
19
|
}
|
|
19
|
-
console.log(`[
|
|
20
|
-
await (0, filepreview_1.ensurePreviewScriptsAvailable)(
|
|
21
|
-
console.log(`[
|
|
22
|
-
const pipInstall = await
|
|
20
|
+
console.log(`[FileParseStory ${datasetId}] Initializing sandbox...`);
|
|
21
|
+
await (0, filepreview_1.ensurePreviewScriptsAvailable)(env, sandboxId);
|
|
22
|
+
console.log(`[FileParseStory ${datasetId}] Installing Python dependencies...`);
|
|
23
|
+
const pipInstall = await (0, steps_1.runDatasetSandboxCommandStep)({
|
|
24
|
+
env,
|
|
25
|
+
sandboxId,
|
|
23
26
|
cmd: "python",
|
|
24
27
|
args: ["-m", "pip", "install", "pandas", "openpyxl", "--quiet", "--upgrade"],
|
|
25
28
|
});
|
|
26
|
-
const installStderr =
|
|
29
|
+
const installStderr = pipInstall.stderr;
|
|
27
30
|
if (installStderr && (installStderr.includes("ERROR") || installStderr.includes("FAILED"))) {
|
|
28
31
|
throw new Error(`pip install failed: ${installStderr.substring(0, 300)}`);
|
|
29
32
|
}
|
|
30
|
-
console.log(`[
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
});
|
|
34
|
-
const fileRecord = fileQuery.$files?.[0];
|
|
35
|
-
if (!fileRecord || !fileRecord.url) {
|
|
36
|
-
throw new Error(`File not found: ${fileId}`);
|
|
37
|
-
}
|
|
38
|
-
console.log(`[FileDatasetAgent ${datasetId}] Creating dataset workstation...`);
|
|
33
|
+
console.log(`[FileParseStory ${datasetId}] Fetching file from InstantDB...`);
|
|
34
|
+
const file = await (0, steps_2.readInstantFileStep)({ env, fileId });
|
|
35
|
+
console.log(`[FileParseStory ${datasetId}] Creating dataset workstation...`);
|
|
39
36
|
const workstation = (0, datasetFiles_1.getDatasetWorkstation)(datasetId);
|
|
40
|
-
await
|
|
37
|
+
await (0, steps_1.runDatasetSandboxCommandStep)({
|
|
38
|
+
env,
|
|
39
|
+
sandboxId,
|
|
41
40
|
cmd: "mkdir",
|
|
42
41
|
args: ["-p", workstation],
|
|
43
42
|
});
|
|
44
|
-
const
|
|
45
|
-
const fileName = fileRecord["content-disposition"];
|
|
43
|
+
const fileName = file.contentDisposition ?? "";
|
|
46
44
|
const fileExtension = fileName.includes(".") ? fileName.substring(fileName.lastIndexOf(".")) : "";
|
|
47
45
|
const sandboxFilePath = `${workstation}/${fileId}${fileExtension}`;
|
|
48
|
-
await
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
46
|
+
await (0, steps_1.writeDatasetSandboxFilesStep)({
|
|
47
|
+
env,
|
|
48
|
+
sandboxId,
|
|
49
|
+
files: [
|
|
50
|
+
{
|
|
51
|
+
path: sandboxFilePath,
|
|
52
|
+
contentBase64: file.contentBase64,
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
});
|
|
56
|
+
console.log(`[FileParseStory ${datasetId}] ✅ Workstation created: ${workstation}`);
|
|
57
|
+
console.log(`[FileParseStory ${datasetId}] ✅ File saved: ${sandboxFilePath}`);
|
|
56
58
|
state.filePath = sandboxFilePath;
|
|
57
59
|
state.initialized = true;
|
|
58
60
|
return sandboxFilePath;
|
|
59
61
|
}
|
|
60
62
|
/**
|
|
61
|
-
*
|
|
63
|
+
* FileParseStory
|
|
64
|
+
*
|
|
65
|
+
* Uso:
|
|
66
|
+
* - Crear una instancia con `fileId`, `instructions` y un `sandbox`
|
|
67
|
+
* - Llamar `getDataset()` para crear un dataset nuevo (crea un datasetId interno)
|
|
68
|
+
* - Llamar `followUp(datasetId, feedback)` para iterar el mismo dataset con feedback
|
|
69
|
+
*
|
|
70
|
+
* Internamente corre un Story (`createStory("file.parse")`) que itera hasta que se ejecuta el tool `completeDataset`.
|
|
62
71
|
*/
|
|
63
|
-
function
|
|
64
|
-
const
|
|
65
|
-
const
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
72
|
+
function createFileParseStoryDefinition(params) {
|
|
73
|
+
const datasetId = params.datasetId ?? (0, admin_1.id)();
|
|
74
|
+
const model = params.model ?? "openai/gpt-5";
|
|
75
|
+
const story = (0, story_1.createStory)("file.parse")
|
|
76
|
+
.context(async (stored, env) => {
|
|
77
|
+
const previous = stored?.content ?? {};
|
|
78
|
+
const sandboxState = previous?.sandboxState ?? { initialized: false, filePath: "" };
|
|
79
|
+
const existingSandboxId = previous?.sandboxId ?? params.sandboxId ?? "";
|
|
80
|
+
let sandboxId = existingSandboxId;
|
|
81
|
+
if (!sandboxId) {
|
|
82
|
+
const created = await (0, steps_1.createDatasetSandboxStep)({ env, runtime: "python3.13", timeoutMs: 10 * 60 * 1000 });
|
|
83
|
+
sandboxId = created.sandboxId;
|
|
73
84
|
}
|
|
74
|
-
const sandboxFilePath = await initializeSandbox(
|
|
85
|
+
const sandboxFilePath = await initializeSandbox(env, sandboxId, datasetId, params.fileId, sandboxState);
|
|
75
86
|
let filePreview = undefined;
|
|
76
87
|
try {
|
|
77
|
-
filePreview = await (0, filepreview_1.generateFilePreview)(
|
|
88
|
+
filePreview = await (0, filepreview_1.generateFilePreview)(env, sandboxId, sandboxFilePath, datasetId);
|
|
78
89
|
}
|
|
79
|
-
catch
|
|
80
|
-
|
|
90
|
+
catch {
|
|
91
|
+
// optional
|
|
81
92
|
}
|
|
82
93
|
let schema = null;
|
|
83
|
-
const datasetResult = await
|
|
84
|
-
if (datasetResult.ok && datasetResult.data.schema)
|
|
94
|
+
const datasetResult = await (0, steps_3.datasetGetByIdStep)({ env, datasetId });
|
|
95
|
+
if (datasetResult.ok && datasetResult.data.schema)
|
|
85
96
|
schema = datasetResult.data.schema;
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
console.log(`[FileDatasetAgent ${datasetId}] ℹ️ No schema found in database yet`);
|
|
90
|
-
}
|
|
91
|
-
return {
|
|
97
|
+
const ctx = {
|
|
92
98
|
datasetId,
|
|
93
|
-
fileId,
|
|
94
|
-
instructions,
|
|
99
|
+
fileId: params.fileId,
|
|
100
|
+
instructions: params.instructions ?? "",
|
|
95
101
|
sandboxConfig: { filePath: sandboxFilePath },
|
|
96
102
|
analysis: [],
|
|
97
103
|
schema,
|
|
@@ -101,158 +107,102 @@ function createFileDatasetAgent(params) {
|
|
|
101
107
|
iterationCount: 0,
|
|
102
108
|
filePreview,
|
|
103
109
|
};
|
|
110
|
+
return {
|
|
111
|
+
...previous,
|
|
112
|
+
datasetId,
|
|
113
|
+
fileId: params.fileId,
|
|
114
|
+
instructions: params.instructions ?? "",
|
|
115
|
+
sandboxId,
|
|
116
|
+
sandboxState,
|
|
117
|
+
ctx,
|
|
118
|
+
};
|
|
104
119
|
})
|
|
105
|
-
.
|
|
106
|
-
const ctx = content;
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
120
|
+
.narrative(async (stored) => {
|
|
121
|
+
const ctx = stored?.content?.ctx;
|
|
122
|
+
const base = (0, prompts_1.buildFileDatasetPrompt)(ctx);
|
|
123
|
+
const userInstructions = String(ctx?.instructions ?? "").trim();
|
|
124
|
+
if (!userInstructions)
|
|
125
|
+
return base;
|
|
126
|
+
return [
|
|
127
|
+
"## USER INSTRUCTIONS",
|
|
128
|
+
"The following instructions were provided by the user. Apply them in addition to (and with higher priority than) the default instructions.",
|
|
129
|
+
"",
|
|
130
|
+
userInstructions,
|
|
131
|
+
"",
|
|
132
|
+
base,
|
|
133
|
+
].join("\n");
|
|
114
134
|
})
|
|
115
|
-
.
|
|
116
|
-
const ctx = content;
|
|
135
|
+
.actions(async (_stored, env) => {
|
|
117
136
|
return {
|
|
118
137
|
executeCommand: (0, executeCommand_tool_1.createExecuteCommandTool)({
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
138
|
+
datasetId,
|
|
139
|
+
sandboxId: _stored?.content?.sandboxId ?? params.sandboxId ?? "",
|
|
140
|
+
env,
|
|
122
141
|
}),
|
|
123
142
|
generateSchema: (0, generateSchema_tool_1.createGenerateSchemaTool)({
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
fileId,
|
|
143
|
+
datasetId,
|
|
144
|
+
fileId: params.fileId,
|
|
145
|
+
env,
|
|
128
146
|
}),
|
|
129
147
|
completeDataset: (0, completeDataset_tool_1.createCompleteDatasetTool)({
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
148
|
+
datasetId,
|
|
149
|
+
sandboxId: _stored?.content?.sandboxId ?? params.sandboxId ?? "",
|
|
150
|
+
env,
|
|
133
151
|
}),
|
|
134
152
|
clearDataset: (0, clearDataset_tool_1.createClearDatasetTool)({
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
153
|
+
datasetId,
|
|
154
|
+
sandboxId: _stored?.content?.sandboxId ?? params.sandboxId ?? "",
|
|
155
|
+
env,
|
|
138
156
|
}),
|
|
139
157
|
};
|
|
140
158
|
})
|
|
141
|
-
.
|
|
142
|
-
.
|
|
159
|
+
.shouldContinue(({ reactionEvent }) => {
|
|
160
|
+
return !(0, story_1.didToolExecute)(reactionEvent, "completeDataset");
|
|
161
|
+
})
|
|
162
|
+
.model(model)
|
|
163
|
+
.build();
|
|
164
|
+
return { datasetId, story };
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Factory (DX-first):
|
|
168
|
+
*
|
|
169
|
+
* Usage:
|
|
170
|
+
* const { datasetId } = await createFileParseStory(fileId, { instructions }).parse(env)
|
|
171
|
+
*
|
|
172
|
+
* - No `db` is accepted/stored (workflow-safe).
|
|
173
|
+
* - All I/O happens in `"use step"` functions via Ekairos runtime (`resolveStoryRuntime(env).db`).
|
|
174
|
+
* - `parse()` is the entrypoint; it calls `story.react(...)` internally.
|
|
175
|
+
*/
|
|
176
|
+
function createFileParseStory(fileId, opts) {
|
|
177
|
+
const params = {
|
|
178
|
+
fileId,
|
|
179
|
+
instructions: opts?.instructions,
|
|
180
|
+
sandboxId: opts?.sandboxId,
|
|
181
|
+
datasetId: opts?.datasetId,
|
|
182
|
+
model: opts?.model,
|
|
183
|
+
};
|
|
184
|
+
const { datasetId, story } = createFileParseStoryDefinition(params);
|
|
143
185
|
return {
|
|
144
|
-
build: () => builder.build(),
|
|
145
186
|
datasetId,
|
|
146
|
-
|
|
187
|
+
async parse(env, prompt) {
|
|
188
|
+
const triggerEvent = {
|
|
189
|
+
id: (0, admin_1.id)(),
|
|
190
|
+
type: story_1.USER_MESSAGE_TYPE,
|
|
191
|
+
channel: story_1.WEB_CHANNEL,
|
|
192
|
+
createdAt: new Date().toISOString(),
|
|
193
|
+
content: {
|
|
194
|
+
parts: [{ type: "text", text: prompt ?? "generate a dataset for this file" }],
|
|
195
|
+
},
|
|
196
|
+
};
|
|
197
|
+
await story.react(triggerEvent, {
|
|
198
|
+
env: (env ?? {}),
|
|
199
|
+
context: { key: `dataset:${datasetId}` },
|
|
200
|
+
options: { silent: true, preventClose: true, sendFinish: false, maxIterations: 20, maxModelSteps: 5 },
|
|
201
|
+
});
|
|
202
|
+
return { datasetId };
|
|
203
|
+
},
|
|
204
|
+
// Optional: expose the built story for advanced callers (not required for parse DX)
|
|
205
|
+
story,
|
|
147
206
|
};
|
|
148
207
|
}
|
|
149
|
-
class FileDatasetAgent {
|
|
150
|
-
constructor(params) {
|
|
151
|
-
this.fileId = params.fileId;
|
|
152
|
-
this.instructions = params.instructions;
|
|
153
|
-
this.sandbox = params.sandbox;
|
|
154
|
-
this.db = params.db;
|
|
155
|
-
this.service = new service_1.DatasetService(params.db);
|
|
156
|
-
this.agentService = new story_1.AgentService(params.db);
|
|
157
|
-
}
|
|
158
|
-
async getDataset() {
|
|
159
|
-
const agentResult = createFileDatasetAgent({
|
|
160
|
-
fileId: this.fileId,
|
|
161
|
-
instructions: this.instructions,
|
|
162
|
-
sandbox: this.sandbox,
|
|
163
|
-
db: this.db,
|
|
164
|
-
});
|
|
165
|
-
const agent = agentResult.build();
|
|
166
|
-
const datasetId = agentResult.datasetId;
|
|
167
|
-
const service = agentResult.service;
|
|
168
|
-
const userEvent = {
|
|
169
|
-
id: (0, admin_1.id)(),
|
|
170
|
-
type: story_1.USER_MESSAGE_TYPE,
|
|
171
|
-
channel: story_1.WEB_CHANNEL,
|
|
172
|
-
content: {
|
|
173
|
-
parts: [
|
|
174
|
-
{
|
|
175
|
-
type: "text",
|
|
176
|
-
text: "generate a dataset for this file",
|
|
177
|
-
},
|
|
178
|
-
],
|
|
179
|
-
},
|
|
180
|
-
createdAt: new Date().toISOString(),
|
|
181
|
-
};
|
|
182
|
-
const reaction = await agent.progressStream(userEvent, null);
|
|
183
|
-
const stream = reaction.stream;
|
|
184
|
-
const streamResult = await this.agentService.readEventStream(stream);
|
|
185
|
-
if (streamResult.persistedEvent?.status !== "completed") {
|
|
186
|
-
throw new Error(`Dataset generation failed with status: ${streamResult.persistedEvent?.status}`);
|
|
187
|
-
}
|
|
188
|
-
const datasetResult = await service.getDatasetById(datasetId);
|
|
189
|
-
if (!datasetResult.ok) {
|
|
190
|
-
throw new Error(datasetResult.error);
|
|
191
|
-
}
|
|
192
|
-
const dataset = datasetResult.data;
|
|
193
|
-
return {
|
|
194
|
-
id: dataset.id,
|
|
195
|
-
status: dataset.status,
|
|
196
|
-
title: dataset.title,
|
|
197
|
-
schema: dataset.schema,
|
|
198
|
-
analysis: dataset.analysis,
|
|
199
|
-
calculatedTotalRows: dataset.calculatedTotalRows,
|
|
200
|
-
actualGeneratedRowCount: dataset.actualGeneratedRowCount,
|
|
201
|
-
createdAt: dataset.createdAt,
|
|
202
|
-
updatedAt: dataset.updatedAt,
|
|
203
|
-
};
|
|
204
|
-
}
|
|
205
|
-
async followUp(datasetId, feedback) {
|
|
206
|
-
const agentResult = createFileDatasetAgent({
|
|
207
|
-
fileId: this.fileId,
|
|
208
|
-
instructions: this.instructions,
|
|
209
|
-
sandbox: this.sandbox,
|
|
210
|
-
db: this.db,
|
|
211
|
-
});
|
|
212
|
-
const agent = agentResult.build();
|
|
213
|
-
const service = agentResult.service;
|
|
214
|
-
const userEvent = {
|
|
215
|
-
id: (0, admin_1.id)(),
|
|
216
|
-
type: story_1.USER_MESSAGE_TYPE,
|
|
217
|
-
channel: story_1.WEB_CHANNEL,
|
|
218
|
-
content: {
|
|
219
|
-
parts: [
|
|
220
|
-
{
|
|
221
|
-
type: "text",
|
|
222
|
-
text: feedback,
|
|
223
|
-
},
|
|
224
|
-
],
|
|
225
|
-
},
|
|
226
|
-
createdAt: new Date().toISOString(),
|
|
227
|
-
};
|
|
228
|
-
const contextResult = await this.service.getContextByDatasetId(datasetId);
|
|
229
|
-
if (!contextResult.ok) {
|
|
230
|
-
throw new Error(contextResult.error);
|
|
231
|
-
}
|
|
232
|
-
const contextId = contextResult.data.id;
|
|
233
|
-
const reaction = await agent.progressStream(userEvent, { id: contextId });
|
|
234
|
-
const stream = reaction.stream;
|
|
235
|
-
const streamResult = await this.agentService.readEventStream(stream);
|
|
236
|
-
if (streamResult.persistedEvent?.status !== "completed") {
|
|
237
|
-
throw new Error(`Dataset iteration failed with status: ${streamResult.persistedEvent?.status}`);
|
|
238
|
-
}
|
|
239
|
-
const datasetResult = await service.getDatasetById(datasetId);
|
|
240
|
-
if (!datasetResult.ok) {
|
|
241
|
-
throw new Error(datasetResult.error);
|
|
242
|
-
}
|
|
243
|
-
const dataset = datasetResult.data;
|
|
244
|
-
return {
|
|
245
|
-
id: dataset.id,
|
|
246
|
-
status: dataset.status,
|
|
247
|
-
title: dataset.title,
|
|
248
|
-
schema: dataset.schema,
|
|
249
|
-
analysis: dataset.analysis,
|
|
250
|
-
calculatedTotalRows: dataset.calculatedTotalRows,
|
|
251
|
-
actualGeneratedRowCount: dataset.actualGeneratedRowCount,
|
|
252
|
-
createdAt: dataset.createdAt,
|
|
253
|
-
updatedAt: dataset.updatedAt,
|
|
254
|
-
};
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
exports.FileDatasetAgent = FileDatasetAgent;
|
|
258
208
|
//# sourceMappingURL=file-dataset.agent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-dataset.agent.js","sourceRoot":"","sources":["../../src/file/file-dataset.agent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"file-dataset.agent.js","sourceRoot":"","sources":["../../src/file/file-dataset.agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Sandbox } from "@vercel/sandbox";
|
|
2
1
|
export type FilePreviewContext = {
|
|
3
2
|
totalRows: number;
|
|
4
3
|
metadata?: {
|
|
@@ -35,7 +34,7 @@ interface PreviewOptions {
|
|
|
35
34
|
tailLines?: number;
|
|
36
35
|
midLines?: number;
|
|
37
36
|
}
|
|
38
|
-
export declare function ensurePreviewScriptsAvailable(
|
|
39
|
-
export declare function generateFilePreview(
|
|
37
|
+
export declare function ensurePreviewScriptsAvailable(env: any, sandboxId: string): Promise<void>;
|
|
38
|
+
export declare function generateFilePreview(env: any, sandboxId: string, sandboxFilePath: string, datasetId: string, options?: PreviewOptions): Promise<FilePreviewContext>;
|
|
40
39
|
export {};
|
|
41
40
|
//# sourceMappingURL=filepreview.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filepreview.d.ts","sourceRoot":"","sources":["../../src/file/filepreview.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"filepreview.d.ts","sourceRoot":"","sources":["../../src/file/filepreview.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,kBAAkB,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE;QACP,WAAW,EAAE,MAAM,CAAA;QACnB,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,MAAM,CAAA;QACf,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,IAAI,CAAC,EAAE;QACH,WAAW,EAAE,MAAM,CAAA;QACnB,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,MAAM,CAAA;QACf,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,IAAI,CAAC,EAAE;QACH,WAAW,EAAE,MAAM,CAAA;QACnB,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,MAAM,CAAA;QACf,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,GAAG,CAAC,EAAE;QACF,WAAW,EAAE,MAAM,CAAA;QACnB,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,MAAM,CAAA;QACf,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,EAAE,MAAM,CAAA;KACjB,CAAA;CACJ,CAAA;AAED,UAAU,cAAc;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CACpB;AA8CD,wBAAsB,6BAA6B,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4D9F;AAED,wBAAsB,mBAAmB,CACrC,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,cAAmB,GAC7B,OAAO,CAAC,kBAAkB,CAAC,CAoH7B"}
|