@ekairos/dataset 1.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/clearDataset.tool.d.ts +22 -0
- package/dist/clearDataset.tool.d.ts.map +1 -0
- package/dist/clearDataset.tool.js +58 -0
- package/dist/clearDataset.tool.js.map +1 -0
- package/dist/completeDataset.tool.d.ts +27 -0
- package/dist/completeDataset.tool.d.ts.map +1 -0
- package/dist/completeDataset.tool.js +258 -0
- package/dist/completeDataset.tool.js.map +1 -0
- package/dist/datasetFiles.d.ts +4 -0
- package/dist/datasetFiles.d.ts.map +1 -0
- package/dist/datasetFiles.js +13 -0
- package/dist/datasetFiles.js.map +1 -0
- package/dist/domain.d.ts +2 -0
- package/dist/domain.d.ts.map +1 -0
- package/dist/domain.js +6 -0
- package/dist/domain.js.map +1 -0
- package/dist/executeCommand.tool.d.ts +37 -0
- package/dist/executeCommand.tool.d.ts.map +1 -0
- package/dist/executeCommand.tool.js +123 -0
- package/dist/executeCommand.tool.js.map +1 -0
- package/dist/file/file-dataset.agent.d.ts +51 -0
- package/dist/file/file-dataset.agent.d.ts.map +1 -0
- package/dist/file/file-dataset.agent.js +272 -0
- package/dist/file/file-dataset.agent.js.map +1 -0
- package/dist/file/filepreview.d.ts +41 -0
- package/dist/file/filepreview.d.ts.map +1 -0
- package/dist/file/filepreview.js +188 -0
- package/dist/file/filepreview.js.map +1 -0
- package/dist/file/generateSchema.tool.d.ts +31 -0
- package/dist/file/generateSchema.tool.d.ts.map +1 -0
- package/dist/file/generateSchema.tool.js +108 -0
- package/dist/file/generateSchema.tool.js.map +1 -0
- package/dist/file/index.d.ts +2 -0
- package/dist/file/index.d.ts.map +1 -0
- package/dist/file/index.js +18 -0
- package/dist/file/index.js.map +1 -0
- package/dist/file/prompts.d.ts +3 -0
- package/dist/file/prompts.d.ts.map +1 -0
- package/dist/file/prompts.js +194 -0
- package/dist/file/prompts.js.map +1 -0
- package/dist/file/scripts/file_metadata.py +71 -0
- package/dist/file/scripts/preview_head_csv.py +24 -0
- package/dist/file/scripts/preview_head_excel.py +30 -0
- package/dist/file/scripts/preview_mid_csv.py +36 -0
- package/dist/file/scripts/preview_mid_excel.py +39 -0
- package/dist/file/scripts/preview_tail_csv.py +27 -0
- package/dist/file/scripts/preview_tail_excel.py +29 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/schema.d.ts +62 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +46 -0
- package/dist/schema.js.map +1 -0
- package/dist/service.d.ts +73 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +423 -0
- package/dist/service.js.map +1 -0
- package/dist/transform/filepreview.d.ts +24 -0
- package/dist/transform/filepreview.d.ts.map +1 -0
- package/dist/transform/filepreview.js +92 -0
- package/dist/transform/filepreview.js.map +1 -0
- package/dist/transform/index.d.ts +2 -0
- package/dist/transform/index.d.ts.map +1 -0
- package/dist/transform/index.js +18 -0
- package/dist/transform/index.js.map +1 -0
- package/dist/transform/prompts.d.ts +35 -0
- package/dist/transform/prompts.d.ts.map +1 -0
- package/dist/transform/prompts.js +137 -0
- package/dist/transform/prompts.js.map +1 -0
- package/dist/transform/transform-dataset.agent.d.ts +58 -0
- package/dist/transform/transform-dataset.agent.d.ts.map +1 -0
- package/dist/transform/transform-dataset.agent.js +283 -0
- package/dist/transform/transform-dataset.agent.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { AgentOptions } from "@ekairos/story";
|
|
2
|
+
import { Sandbox } from "@vercel/sandbox";
|
|
3
|
+
import { FilePreviewContext } from "./filepreview";
|
|
4
|
+
import { DatasetService } from "../service";
|
|
5
|
+
export type FileDatasetContext = {
|
|
6
|
+
datasetId: string;
|
|
7
|
+
fileId: string;
|
|
8
|
+
instructions: string;
|
|
9
|
+
sandboxConfig: {
|
|
10
|
+
filePath: string;
|
|
11
|
+
};
|
|
12
|
+
analysis: any[];
|
|
13
|
+
schema: any | null;
|
|
14
|
+
plan: any | null;
|
|
15
|
+
executionResult: any | null;
|
|
16
|
+
errors: string[];
|
|
17
|
+
iterationCount: number;
|
|
18
|
+
filePreview?: FilePreviewContext;
|
|
19
|
+
};
|
|
20
|
+
export type FileDatasetAgentOptions = {
|
|
21
|
+
fileId: string;
|
|
22
|
+
instructions: string;
|
|
23
|
+
sandbox: Sandbox;
|
|
24
|
+
service: DatasetService;
|
|
25
|
+
} & AgentOptions;
|
|
26
|
+
export type DatasetResult = {
|
|
27
|
+
id: string;
|
|
28
|
+
status?: string;
|
|
29
|
+
title?: string;
|
|
30
|
+
schema?: any;
|
|
31
|
+
analysis?: any;
|
|
32
|
+
calculatedTotalRows?: number;
|
|
33
|
+
actualGeneratedRowCount?: number;
|
|
34
|
+
createdAt?: number;
|
|
35
|
+
updatedAt?: number;
|
|
36
|
+
};
|
|
37
|
+
export declare class FileDatasetAgent {
|
|
38
|
+
private fileId;
|
|
39
|
+
private instructions;
|
|
40
|
+
private sandbox;
|
|
41
|
+
private service;
|
|
42
|
+
private agentService;
|
|
43
|
+
constructor(params: {
|
|
44
|
+
fileId: string;
|
|
45
|
+
instructions: string;
|
|
46
|
+
sandbox: Sandbox;
|
|
47
|
+
});
|
|
48
|
+
getDataset(): Promise<DatasetResult>;
|
|
49
|
+
followUp(datasetId: string, feedback: string): Promise<DatasetResult>;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=file-dataset.agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-dataset.agent.d.ts","sourceRoot":"","sources":["../../src/file/file-dataset.agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,YAAY,EAAoB,MAAM,gBAAgB,CAAA;AAGtE,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAMzC,OAAO,EAAuB,kBAAkB,EAAiC,MAAM,eAAe,CAAA;AAItG,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAG3C,MAAM,MAAM,kBAAkB,GAAG;IAC7B,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,uBAAuB,GAAG;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,cAAc,CAAA;CAC1B,GAAG,YAAY,CAAA;AAyMhB,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;AAED,qBAAa,gBAAgB;IACzB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAAc;gBAEtB,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE;IAQxE,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;IAqDpC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;CAyD9E"}
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FileDatasetAgent = void 0;
|
|
4
|
+
const story_1 = require("@ekairos/story");
|
|
5
|
+
const story_2 = require("@ekairos/story");
|
|
6
|
+
const generateSchema_tool_1 = require("./generateSchema.tool");
|
|
7
|
+
const completeDataset_tool_1 = require("../completeDataset.tool");
|
|
8
|
+
const executeCommand_tool_1 = require("../executeCommand.tool");
|
|
9
|
+
const clearDataset_tool_1 = require("../clearDataset.tool");
|
|
10
|
+
const prompts_1 = require("./prompts");
|
|
11
|
+
const filepreview_1 = require("./filepreview");
|
|
12
|
+
const admin_1 = require("@instantdb/admin");
|
|
13
|
+
const story_3 = require("@ekairos/story");
|
|
14
|
+
const datasetFiles_1 = require("../datasetFiles");
|
|
15
|
+
const service_1 = require("../service");
|
|
16
|
+
class InternalFileDatasetAgent extends story_1.Agent {
|
|
17
|
+
constructor(opts) {
|
|
18
|
+
super(opts);
|
|
19
|
+
this.isSandboxInitialized = false;
|
|
20
|
+
this.sandboxFilePath = "";
|
|
21
|
+
this.datasetId = (0, admin_1.id)();
|
|
22
|
+
this.fileId = opts.fileId;
|
|
23
|
+
this.instructions = opts.instructions;
|
|
24
|
+
this.sandbox = opts.sandbox;
|
|
25
|
+
this.service = opts.service;
|
|
26
|
+
}
|
|
27
|
+
getDatasetId() {
|
|
28
|
+
return this.datasetId;
|
|
29
|
+
}
|
|
30
|
+
async initializeSandbox() {
|
|
31
|
+
try {
|
|
32
|
+
if (this.isSandboxInitialized) {
|
|
33
|
+
return this.sandboxFilePath;
|
|
34
|
+
}
|
|
35
|
+
console.log(`[FileDatasetAgent ${this.datasetId}] Initializing sandbox...`);
|
|
36
|
+
await (0, filepreview_1.ensurePreviewScriptsAvailable)(this.sandbox);
|
|
37
|
+
console.log(`[FileDatasetAgent ${this.datasetId}] Installing Python dependencies...`);
|
|
38
|
+
const pipInstall = await this.sandbox.runCommand({
|
|
39
|
+
cmd: "python",
|
|
40
|
+
args: ["-m", "pip", "install", "pandas", "openpyxl", "--quiet", "--upgrade"],
|
|
41
|
+
});
|
|
42
|
+
const installStderr = await pipInstall.stderr();
|
|
43
|
+
if (installStderr && (installStderr.includes("ERROR") || installStderr.includes("FAILED"))) {
|
|
44
|
+
throw new Error(`pip install failed: ${installStderr.substring(0, 300)}`);
|
|
45
|
+
}
|
|
46
|
+
console.log(`[FileDatasetAgent ${this.datasetId}] Fetching file from InstantDB...`);
|
|
47
|
+
const fileQuery = await this.db.query({
|
|
48
|
+
$files: { $: { where: { id: this.fileId }, limit: 1 } },
|
|
49
|
+
});
|
|
50
|
+
const fileRecord = fileQuery.$files?.[0];
|
|
51
|
+
if (!fileRecord || !fileRecord.url) {
|
|
52
|
+
throw new Error(`File not found: ${this.fileId}`);
|
|
53
|
+
}
|
|
54
|
+
console.log(`[FileDatasetAgent ${this.datasetId}] Creating dataset workstation...`);
|
|
55
|
+
const workstation = (0, datasetFiles_1.getDatasetWorkstation)(this.datasetId);
|
|
56
|
+
await this.sandbox.runCommand({
|
|
57
|
+
cmd: "mkdir",
|
|
58
|
+
args: ["-p", workstation],
|
|
59
|
+
});
|
|
60
|
+
const fileBuffer = await fetch(fileRecord.url).then((response) => response.arrayBuffer());
|
|
61
|
+
const fileName = fileRecord["content-disposition"];
|
|
62
|
+
const fileExtension = fileName.includes(".") ? fileName.substring(fileName.lastIndexOf(".")) : "";
|
|
63
|
+
const sandboxFilePath = `${workstation}/${this.fileId}${fileExtension}`;
|
|
64
|
+
await this.sandbox.writeFiles([
|
|
65
|
+
{
|
|
66
|
+
path: sandboxFilePath,
|
|
67
|
+
content: Buffer.from(fileBuffer),
|
|
68
|
+
},
|
|
69
|
+
]);
|
|
70
|
+
console.log(`[FileDatasetAgent ${this.datasetId}] ✅ Workstation created: ${workstation}`);
|
|
71
|
+
console.log(`[FileDatasetAgent ${this.datasetId}] ✅ File saved: ${sandboxFilePath}`);
|
|
72
|
+
this.sandboxFilePath = sandboxFilePath;
|
|
73
|
+
this.isSandboxInitialized = true;
|
|
74
|
+
return sandboxFilePath;
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
78
|
+
console.error(`[FileDatasetAgent ${this.datasetId}] ❌ Failed to initialize sandbox:`, msg);
|
|
79
|
+
throw error;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
async initialize(context) {
|
|
83
|
+
const sandboxFilePath = await this.initializeSandbox();
|
|
84
|
+
let filePreview = undefined;
|
|
85
|
+
try {
|
|
86
|
+
filePreview = await (0, filepreview_1.generateFilePreview)(this.sandbox, sandboxFilePath, this.datasetId);
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
console.error(`[Dataset ${this.datasetId}] Failed to generate preview:`, error);
|
|
90
|
+
}
|
|
91
|
+
let schema = null;
|
|
92
|
+
const datasetResult = await this.service.getDatasetById(this.datasetId);
|
|
93
|
+
if (datasetResult.ok && datasetResult.data.schema) {
|
|
94
|
+
schema = datasetResult.data.schema;
|
|
95
|
+
console.log(`[FileDatasetAgent ${this.datasetId}] ✅ Schema loaded from database`);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
console.log(`[FileDatasetAgent ${this.datasetId}] ℹ️ No schema found in database yet`);
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
datasetId: this.datasetId,
|
|
102
|
+
fileId: this.fileId,
|
|
103
|
+
instructions: this.instructions,
|
|
104
|
+
sandboxConfig: {
|
|
105
|
+
filePath: sandboxFilePath,
|
|
106
|
+
},
|
|
107
|
+
analysis: [],
|
|
108
|
+
schema: schema,
|
|
109
|
+
plan: null,
|
|
110
|
+
executionResult: null,
|
|
111
|
+
errors: [],
|
|
112
|
+
iterationCount: 0,
|
|
113
|
+
filePreview,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
async buildSystemPrompt(context) {
|
|
117
|
+
console.log(`[FileDatasetAgent ${this.datasetId}] Building system prompt...`);
|
|
118
|
+
console.log(`[FileDatasetAgent ${this.datasetId}] Schema present: ${!!context.content.schema}`);
|
|
119
|
+
console.log(`[FileDatasetAgent ${this.datasetId}] ExecutionResult present: ${!!context.content.executionResult}`);
|
|
120
|
+
console.log(`[FileDatasetAgent ${this.datasetId}] Iteration count: ${context.content.iterationCount}`);
|
|
121
|
+
const prompt = (0, prompts_1.buildFileDatasetPrompt)(context.content);
|
|
122
|
+
console.log(`[FileDatasetAgent ${this.datasetId}] Prompt length: ${prompt.length} chars`);
|
|
123
|
+
return prompt;
|
|
124
|
+
}
|
|
125
|
+
async buildTools(context, dataStream) {
|
|
126
|
+
const ctx = context.content;
|
|
127
|
+
return {
|
|
128
|
+
executeCommand: (0, executeCommand_tool_1.createExecuteCommandTool)({
|
|
129
|
+
service: this.service,
|
|
130
|
+
datasetId: ctx.datasetId,
|
|
131
|
+
sandbox: this.sandbox,
|
|
132
|
+
}),
|
|
133
|
+
generateSchema: (0, generateSchema_tool_1.createGenerateSchemaTool)({
|
|
134
|
+
service: this.service,
|
|
135
|
+
datasetId: ctx.datasetId,
|
|
136
|
+
sandbox: this.sandbox,
|
|
137
|
+
fileId: this.fileId,
|
|
138
|
+
}),
|
|
139
|
+
completeDataset: (0, completeDataset_tool_1.createCompleteDatasetTool)({
|
|
140
|
+
service: this.service,
|
|
141
|
+
datasetId: ctx.datasetId,
|
|
142
|
+
sandbox: this.sandbox,
|
|
143
|
+
}),
|
|
144
|
+
clearDataset: (0, clearDataset_tool_1.createClearDatasetTool)({
|
|
145
|
+
service: this.service,
|
|
146
|
+
datasetId: ctx.datasetId,
|
|
147
|
+
sandbox: this.sandbox,
|
|
148
|
+
}),
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
getModel(context) {
|
|
152
|
+
return "gpt-5-codex";
|
|
153
|
+
}
|
|
154
|
+
includeBaseTools() {
|
|
155
|
+
return { createMessage: false, requestDirection: false, end: false };
|
|
156
|
+
}
|
|
157
|
+
async getFinalizationToolNames() {
|
|
158
|
+
return ["completeDataset"];
|
|
159
|
+
}
|
|
160
|
+
async onEnd(lastEvent) {
|
|
161
|
+
console.log(`[FileDatasetAgent ${this.datasetId}] On end called`);
|
|
162
|
+
return { end: false }; // dont stop on error, only when finished
|
|
163
|
+
}
|
|
164
|
+
async onToolCallExecuted(executionEvent) {
|
|
165
|
+
console.log(`[FileDatasetAgent ${this.datasetId}] Tool call executed: ${executionEvent.toolCall.name}`);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
class FileDatasetAgent {
|
|
169
|
+
constructor(params) {
|
|
170
|
+
this.fileId = params.fileId;
|
|
171
|
+
this.instructions = params.instructions;
|
|
172
|
+
this.sandbox = params.sandbox;
|
|
173
|
+
this.service = new service_1.DatasetService();
|
|
174
|
+
this.agentService = new story_2.AgentService();
|
|
175
|
+
}
|
|
176
|
+
async getDataset() {
|
|
177
|
+
const internalAgent = new InternalFileDatasetAgent({
|
|
178
|
+
fileId: this.fileId,
|
|
179
|
+
instructions: this.instructions,
|
|
180
|
+
sandbox: this.sandbox,
|
|
181
|
+
service: this.service,
|
|
182
|
+
});
|
|
183
|
+
const datasetId = internalAgent.getDatasetId();
|
|
184
|
+
const userEvent = {
|
|
185
|
+
id: (0, admin_1.id)(),
|
|
186
|
+
type: story_3.USER_MESSAGE_TYPE,
|
|
187
|
+
channel: story_3.WEB_CHANNEL,
|
|
188
|
+
content: {
|
|
189
|
+
parts: [
|
|
190
|
+
{
|
|
191
|
+
type: "text",
|
|
192
|
+
text: "generate a dataset for this file",
|
|
193
|
+
},
|
|
194
|
+
],
|
|
195
|
+
},
|
|
196
|
+
createdAt: new Date().toISOString(),
|
|
197
|
+
};
|
|
198
|
+
const reaction = await internalAgent.progressStream(userEvent, null);
|
|
199
|
+
const stream = reaction.stream;
|
|
200
|
+
const streamResult = await this.agentService.readEventStream(stream);
|
|
201
|
+
if (streamResult.persistedEvent?.status !== "completed") {
|
|
202
|
+
throw new Error(`Dataset generation failed with status: ${streamResult.persistedEvent?.status}`);
|
|
203
|
+
}
|
|
204
|
+
const datasetResult = await this.service.getDatasetById(datasetId);
|
|
205
|
+
if (!datasetResult.ok) {
|
|
206
|
+
throw new Error(datasetResult.error);
|
|
207
|
+
}
|
|
208
|
+
const dataset = datasetResult.data;
|
|
209
|
+
return {
|
|
210
|
+
id: dataset.id,
|
|
211
|
+
status: dataset.status,
|
|
212
|
+
title: dataset.title,
|
|
213
|
+
schema: dataset.schema,
|
|
214
|
+
analysis: dataset.analysis,
|
|
215
|
+
calculatedTotalRows: dataset.calculatedTotalRows,
|
|
216
|
+
actualGeneratedRowCount: dataset.actualGeneratedRowCount,
|
|
217
|
+
createdAt: dataset.createdAt,
|
|
218
|
+
updatedAt: dataset.updatedAt,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
async followUp(datasetId, feedback) {
|
|
222
|
+
const internalAgent = new InternalFileDatasetAgent({
|
|
223
|
+
fileId: this.fileId,
|
|
224
|
+
instructions: this.instructions,
|
|
225
|
+
sandbox: this.sandbox,
|
|
226
|
+
service: this.service,
|
|
227
|
+
});
|
|
228
|
+
const userEvent = {
|
|
229
|
+
id: (0, admin_1.id)(),
|
|
230
|
+
type: story_3.USER_MESSAGE_TYPE,
|
|
231
|
+
channel: story_3.WEB_CHANNEL,
|
|
232
|
+
content: {
|
|
233
|
+
parts: [
|
|
234
|
+
{
|
|
235
|
+
type: "text",
|
|
236
|
+
text: feedback,
|
|
237
|
+
},
|
|
238
|
+
],
|
|
239
|
+
},
|
|
240
|
+
createdAt: new Date().toISOString(),
|
|
241
|
+
};
|
|
242
|
+
const contextResult = await this.service.getContextByDatasetId(datasetId);
|
|
243
|
+
if (!contextResult.ok) {
|
|
244
|
+
throw new Error(contextResult.error);
|
|
245
|
+
}
|
|
246
|
+
const contextId = contextResult.data.id;
|
|
247
|
+
const reaction = await internalAgent.progressStream(userEvent, { id: contextId });
|
|
248
|
+
const stream = reaction.stream;
|
|
249
|
+
const streamResult = await this.agentService.readEventStream(stream);
|
|
250
|
+
if (streamResult.persistedEvent?.status !== "completed") {
|
|
251
|
+
throw new Error(`Dataset iteration failed with status: ${streamResult.persistedEvent?.status}`);
|
|
252
|
+
}
|
|
253
|
+
const datasetResult = await this.service.getDatasetById(datasetId);
|
|
254
|
+
if (!datasetResult.ok) {
|
|
255
|
+
throw new Error(datasetResult.error);
|
|
256
|
+
}
|
|
257
|
+
const dataset = datasetResult.data;
|
|
258
|
+
return {
|
|
259
|
+
id: dataset.id,
|
|
260
|
+
status: dataset.status,
|
|
261
|
+
title: dataset.title,
|
|
262
|
+
schema: dataset.schema,
|
|
263
|
+
analysis: dataset.analysis,
|
|
264
|
+
calculatedTotalRows: dataset.calculatedTotalRows,
|
|
265
|
+
actualGeneratedRowCount: dataset.actualGeneratedRowCount,
|
|
266
|
+
createdAt: dataset.createdAt,
|
|
267
|
+
updatedAt: dataset.updatedAt,
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
exports.FileDatasetAgent = FileDatasetAgent;
|
|
272
|
+
//# sourceMappingURL=file-dataset.agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-dataset.agent.js","sourceRoot":"","sources":["../../src/file/file-dataset.agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Sandbox } from "@vercel/sandbox";
|
|
2
|
+
export type FilePreviewContext = {
|
|
3
|
+
totalRows: number;
|
|
4
|
+
metadata?: {
|
|
5
|
+
description: string;
|
|
6
|
+
script: string;
|
|
7
|
+
command: string;
|
|
8
|
+
stdout: string;
|
|
9
|
+
stderr: string;
|
|
10
|
+
};
|
|
11
|
+
head?: {
|
|
12
|
+
description: string;
|
|
13
|
+
script: string;
|
|
14
|
+
command: string;
|
|
15
|
+
stdout: string;
|
|
16
|
+
stderr: string;
|
|
17
|
+
};
|
|
18
|
+
tail?: {
|
|
19
|
+
description: string;
|
|
20
|
+
script: string;
|
|
21
|
+
command: string;
|
|
22
|
+
stdout: string;
|
|
23
|
+
stderr: string;
|
|
24
|
+
};
|
|
25
|
+
mid?: {
|
|
26
|
+
description: string;
|
|
27
|
+
script: string;
|
|
28
|
+
command: string;
|
|
29
|
+
stdout: string;
|
|
30
|
+
stderr: string;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
interface PreviewOptions {
|
|
34
|
+
headLines?: number;
|
|
35
|
+
tailLines?: number;
|
|
36
|
+
midLines?: number;
|
|
37
|
+
}
|
|
38
|
+
export declare function ensurePreviewScriptsAvailable(sandbox: Sandbox): Promise<void>;
|
|
39
|
+
export declare function generateFilePreview(sandbox: Sandbox, sandboxFilePath: string, datasetId: string, options?: PreviewOptions): Promise<FilePreviewContext>;
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=filepreview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filepreview.d.ts","sourceRoot":"","sources":["../../src/file/filepreview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAIzC,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;AA+CD,wBAAsB,6BAA6B,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDnF;AAED,wBAAsB,mBAAmB,CACrC,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,cAAmB,GAC7B,OAAO,CAAC,kBAAkB,CAAC,CA8G7B"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ensurePreviewScriptsAvailable = ensurePreviewScriptsAvailable;
|
|
4
|
+
exports.generateFilePreview = generateFilePreview;
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
|
+
const DEFAULT_HEAD_LINES = 50;
|
|
7
|
+
const DEFAULT_TAIL_LINES = 20;
|
|
8
|
+
const DEFAULT_MID_LINES = 20;
|
|
9
|
+
const SANDBOX_SCRIPT_DIRECTORY = "/vercel/sandbox/lib/domain/dataset/file/scripts";
|
|
10
|
+
const PYTHON_SCRIPT_FILES = [
|
|
11
|
+
"file_metadata.py",
|
|
12
|
+
"preview_head_csv.py",
|
|
13
|
+
"preview_head_excel.py",
|
|
14
|
+
"preview_mid_csv.py",
|
|
15
|
+
"preview_mid_excel.py",
|
|
16
|
+
"preview_tail_csv.py",
|
|
17
|
+
"preview_tail_excel.py",
|
|
18
|
+
];
|
|
19
|
+
const nodeRequire = eval("require");
|
|
20
|
+
function resolveScriptPath(scriptName) {
|
|
21
|
+
return nodeRequire.resolve(`@pulz-ar/core/dataset/file/scripts/${scriptName}`);
|
|
22
|
+
}
|
|
23
|
+
const preparedSandboxes = new WeakSet();
|
|
24
|
+
const sandboxSetupPromises = new WeakMap();
|
|
25
|
+
function validateScriptResult(result, context) {
|
|
26
|
+
if (!result.stderr) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const stderr = result.stderr.trim();
|
|
30
|
+
if (stderr.length === 0) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
if (stderr.includes("ModuleNotFoundError") || stderr.includes("Traceback") || stderr.includes("Error")) {
|
|
34
|
+
throw new Error(`${context} failed: ${stderr.substring(0, 500)}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
async function ensurePreviewScriptsAvailable(sandbox) {
|
|
38
|
+
if (preparedSandboxes.has(sandbox)) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const inFlight = sandboxSetupPromises.get(sandbox);
|
|
42
|
+
if (inFlight) {
|
|
43
|
+
await inFlight;
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const setupPromise = (async () => {
|
|
47
|
+
try {
|
|
48
|
+
await sandbox.runCommand({
|
|
49
|
+
cmd: "mkdir",
|
|
50
|
+
args: ["-p", SANDBOX_SCRIPT_DIRECTORY],
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
console.warn("[Dataset Scripts] Failed to create sandbox scripts directory", error);
|
|
55
|
+
}
|
|
56
|
+
const filesToWrite = [];
|
|
57
|
+
for (const scriptName of PYTHON_SCRIPT_FILES) {
|
|
58
|
+
try {
|
|
59
|
+
const scriptPath = resolveScriptPath(scriptName);
|
|
60
|
+
const fileBuffer = (0, fs_1.readFileSync)(scriptPath);
|
|
61
|
+
filesToWrite.push({
|
|
62
|
+
path: `${SANDBOX_SCRIPT_DIRECTORY}/${scriptName}`,
|
|
63
|
+
content: Buffer.from(fileBuffer),
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
console.error(`[Dataset Scripts] Failed to read script ${scriptName}`, error);
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (filesToWrite.length > 0) {
|
|
72
|
+
await sandbox.writeFiles(filesToWrite);
|
|
73
|
+
}
|
|
74
|
+
})();
|
|
75
|
+
sandboxSetupPromises.set(sandbox, setupPromise);
|
|
76
|
+
try {
|
|
77
|
+
await setupPromise;
|
|
78
|
+
preparedSandboxes.add(sandbox);
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
sandboxSetupPromises.delete(sandbox);
|
|
82
|
+
throw error;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
async function generateFilePreview(sandbox, sandboxFilePath, datasetId, options = {}) {
|
|
86
|
+
const context = {
|
|
87
|
+
totalRows: 0,
|
|
88
|
+
};
|
|
89
|
+
try {
|
|
90
|
+
await ensurePreviewScriptsAvailable(sandbox);
|
|
91
|
+
const metadataResult = await runScript(sandbox, "file_metadata.py", [sandboxFilePath], "Extracts file metadata: name, extension, size, row count estimate, column count, and header preview");
|
|
92
|
+
context.metadata = metadataResult;
|
|
93
|
+
let isExcel = false;
|
|
94
|
+
if (metadataResult.stdout) {
|
|
95
|
+
try {
|
|
96
|
+
const metadataJson = JSON.parse(metadataResult.stdout);
|
|
97
|
+
context.totalRows = metadataJson.row_count_estimate || 0;
|
|
98
|
+
const extension = metadataJson.extension || "";
|
|
99
|
+
isExcel = extension === ".xlsx" || extension === ".xls";
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
console.warn(`[Dataset ${datasetId}] Failed to parse metadata JSON`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
const totalRows = context.totalRows;
|
|
106
|
+
const headLines = options.headLines || DEFAULT_HEAD_LINES;
|
|
107
|
+
const tailLines = options.tailLines || DEFAULT_TAIL_LINES;
|
|
108
|
+
if (totalRows === 0) {
|
|
109
|
+
console.log(`[Dataset ${datasetId}] No rows detected, skipping preview`);
|
|
110
|
+
return context;
|
|
111
|
+
}
|
|
112
|
+
const headScript = isExcel ? "preview_head_excel.py" : "preview_head_csv.py";
|
|
113
|
+
const tailScript = isExcel ? "preview_tail_excel.py" : "preview_tail_csv.py";
|
|
114
|
+
const midScript = isExcel ? "preview_mid_excel.py" : "preview_mid_csv.py";
|
|
115
|
+
if (totalRows <= headLines) {
|
|
116
|
+
console.log(`[Dataset ${datasetId}] File has ${totalRows} rows, reading all with head only`);
|
|
117
|
+
const headResult = await runScript(sandbox, headScript, [sandboxFilePath, String(totalRows)], `Reads the first ${totalRows} rows (entire file)`);
|
|
118
|
+
validateScriptResult(headResult, `preview_head for ${datasetId}`);
|
|
119
|
+
context.head = headResult;
|
|
120
|
+
return context;
|
|
121
|
+
}
|
|
122
|
+
if (headLines + tailLines >= totalRows) {
|
|
123
|
+
console.log(`[Dataset ${datasetId}] Head + tail would cover entire file (${totalRows} rows), reading all with head only`);
|
|
124
|
+
const headResult = await runScript(sandbox, headScript, [sandboxFilePath, String(totalRows)], `Reads the first ${totalRows} rows (entire file)`);
|
|
125
|
+
validateScriptResult(headResult, `preview_head for ${datasetId}`);
|
|
126
|
+
context.head = headResult;
|
|
127
|
+
return context;
|
|
128
|
+
}
|
|
129
|
+
console.log(`[Dataset ${datasetId}] Reading head (${headLines} rows) and tail (${tailLines} rows) from ${totalRows} total rows`);
|
|
130
|
+
const headResult = await runScript(sandbox, headScript, [sandboxFilePath, String(headLines)], `Reads the first ${headLines} rows of the file`);
|
|
131
|
+
validateScriptResult(headResult, `preview_head for ${datasetId}`);
|
|
132
|
+
context.head = headResult;
|
|
133
|
+
const tailResult = await runScript(sandbox, tailScript, [sandboxFilePath, String(tailLines)], `Reads the last ${tailLines} rows of the file`);
|
|
134
|
+
validateScriptResult(tailResult, `preview_tail for ${datasetId}`);
|
|
135
|
+
context.tail = tailResult;
|
|
136
|
+
const midLines = options.midLines || DEFAULT_MID_LINES;
|
|
137
|
+
const gapSize = totalRows - headLines - tailLines;
|
|
138
|
+
if (gapSize > midLines) {
|
|
139
|
+
const midStart = headLines;
|
|
140
|
+
const midEnd = totalRows - tailLines;
|
|
141
|
+
console.log(`[Dataset ${datasetId}] Large gap (${gapSize} rows), adding mid sample (${midLines} rows)`);
|
|
142
|
+
const midResult = await runScript(sandbox, midScript, [sandboxFilePath, String(midStart), String(midEnd), String(midLines)], `Samples ${midLines} rows from the middle section (rows ${midStart + 1} to ${midEnd})`);
|
|
143
|
+
validateScriptResult(midResult, `preview_mid for ${datasetId}`);
|
|
144
|
+
context.mid = midResult;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
console.error(`[Dataset ${datasetId}] Error generating file preview:`, error);
|
|
149
|
+
}
|
|
150
|
+
return context;
|
|
151
|
+
}
|
|
152
|
+
async function runScript(sandbox, scriptName, args, description) {
|
|
153
|
+
const scriptPath = `/vercel/sandbox/lib/domain/dataset/file/scripts/${scriptName}`;
|
|
154
|
+
const command = `python ${scriptPath} ${args.join(" ")}`;
|
|
155
|
+
let scriptContent = "";
|
|
156
|
+
try {
|
|
157
|
+
const localScriptPath = resolveScriptPath(scriptName);
|
|
158
|
+
scriptContent = (0, fs_1.readFileSync)(localScriptPath, 'utf-8');
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
console.warn(`Failed to read script ${scriptName}:`, error);
|
|
162
|
+
}
|
|
163
|
+
try {
|
|
164
|
+
const result = await sandbox.runCommand({
|
|
165
|
+
cmd: "python",
|
|
166
|
+
args: [scriptPath, ...args],
|
|
167
|
+
});
|
|
168
|
+
const stdout = await result.stdout();
|
|
169
|
+
const stderr = await result.stderr();
|
|
170
|
+
return {
|
|
171
|
+
description,
|
|
172
|
+
script: scriptContent,
|
|
173
|
+
command,
|
|
174
|
+
stdout: stdout || "",
|
|
175
|
+
stderr: stderr || "",
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
return {
|
|
180
|
+
description,
|
|
181
|
+
script: scriptContent,
|
|
182
|
+
command,
|
|
183
|
+
stdout: "",
|
|
184
|
+
stderr: error instanceof Error ? error.message : String(error),
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=filepreview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filepreview.js","sourceRoot":"","sources":["../../src/file/filepreview.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Sandbox } from "@vercel/sandbox";
|
|
2
|
+
import { DatasetService } from "../service";
|
|
3
|
+
interface GenerateSchemaToolParams {
|
|
4
|
+
service: DatasetService;
|
|
5
|
+
datasetId: string;
|
|
6
|
+
sandbox?: Sandbox;
|
|
7
|
+
isNested?: boolean;
|
|
8
|
+
fileId?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function createGenerateSchemaTool({ service, datasetId, sandbox, isNested, fileId }: GenerateSchemaToolParams): import("ai").Tool<{
|
|
11
|
+
schemaTitle: string;
|
|
12
|
+
schemaDescription: string;
|
|
13
|
+
schemaJson: string;
|
|
14
|
+
}, {
|
|
15
|
+
success: boolean;
|
|
16
|
+
error: string;
|
|
17
|
+
schema?: undefined;
|
|
18
|
+
message?: undefined;
|
|
19
|
+
} | {
|
|
20
|
+
success: boolean;
|
|
21
|
+
schema: {
|
|
22
|
+
title: string;
|
|
23
|
+
description: string;
|
|
24
|
+
schema: any;
|
|
25
|
+
generatedAt: string;
|
|
26
|
+
};
|
|
27
|
+
message: string;
|
|
28
|
+
error?: undefined;
|
|
29
|
+
}>;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=generateSchema.tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateSchema.tool.d.ts","sourceRoot":"","sources":["../../src/file/generateSchema.tool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAG3C,UAAU,wBAAwB;IAC9B,OAAO,EAAE,cAAc,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,wBAAwB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,wBAAwB;;;;;;;;;;;;;;;;;;;GAmHnH"}
|