@ekairos/dataset 1.22.39-beta.development.0 → 1.22.40-beta.development.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +347 -0
  2. package/dist/builder/instructions.d.ts +6 -0
  3. package/dist/builder/instructions.d.ts.map +1 -0
  4. package/dist/builder/instructions.js +46 -0
  5. package/dist/builder/instructions.js.map +1 -0
  6. package/dist/builder/materialize.d.ts +16 -0
  7. package/dist/builder/materialize.d.ts.map +1 -0
  8. package/dist/builder/materialize.js +205 -0
  9. package/dist/builder/materialize.js.map +1 -0
  10. package/dist/builder/persistence.d.ts +18 -0
  11. package/dist/builder/persistence.d.ts.map +1 -0
  12. package/dist/builder/persistence.js +147 -0
  13. package/dist/builder/persistence.js.map +1 -0
  14. package/dist/builder/schemaInference.d.ts +4 -0
  15. package/dist/builder/schemaInference.d.ts.map +1 -0
  16. package/dist/builder/schemaInference.js +69 -0
  17. package/dist/builder/schemaInference.js.map +1 -0
  18. package/dist/builder/sourceRows.d.ts +8 -0
  19. package/dist/builder/sourceRows.d.ts.map +1 -0
  20. package/dist/builder/sourceRows.js +62 -0
  21. package/dist/builder/sourceRows.js.map +1 -0
  22. package/dist/builder/types.d.ts +130 -0
  23. package/dist/builder/types.d.ts.map +1 -0
  24. package/dist/builder/types.js +3 -0
  25. package/dist/builder/types.js.map +1 -0
  26. package/dist/dataset.d.ts +3 -66
  27. package/dist/dataset.d.ts.map +1 -1
  28. package/dist/dataset.js +85 -499
  29. package/dist/dataset.js.map +1 -1
  30. package/dist/file/file-dataset.agent.d.ts.map +1 -1
  31. package/dist/file/file-dataset.agent.js +3 -1
  32. package/dist/file/file-dataset.agent.js.map +1 -1
  33. package/dist/materializeDataset.tool.d.ts +18 -5
  34. package/dist/materializeDataset.tool.d.ts.map +1 -1
  35. package/dist/materializeDataset.tool.js +14 -4
  36. package/dist/materializeDataset.tool.js.map +1 -1
  37. package/dist/schema.d.ts +1 -10
  38. package/dist/schema.d.ts.map +1 -1
  39. package/dist/schema.js +1 -12
  40. package/dist/schema.js.map +1 -1
  41. package/dist/transform/transform-dataset.agent.d.ts.map +1 -1
  42. package/dist/transform/transform-dataset.agent.js +3 -1
  43. package/dist/transform/transform-dataset.agent.js.map +1 -1
  44. package/package.json +5 -4
package/README.md ADDED
@@ -0,0 +1,347 @@
1
+ # @ekairos/dataset
2
+
3
+ Runtime-first dataset materialization for Ekairos domains.
4
+
5
+ `@ekairos/dataset` replaces the older `@ekairos/structure` flow with a domain-owned dataset API. It persists dataset metadata and output rows in InstantDB, while file parsing and transformations run through sandbox-backed reactors when work cannot be materialized directly.
6
+
7
+ ## Mental Model
8
+
9
+ A dataset build has two responsibilities:
10
+
11
+ 1. Read or produce source rows from one or more sources.
12
+ 2. Persist the resulting dataset under `datasetDomain`.
13
+
14
+ The caller passes a typed `EkairosRuntime`. The runtime must include `datasetDomain`; query sources also require the runtime to include the queried source domain.
15
+
16
+ ```ts
17
+ import { domain } from "@ekairos/domain"
18
+ import { EkairosRuntime } from "@ekairos/domain/runtime"
19
+ import { dataset, datasetDomain } from "@ekairos/dataset"
20
+
21
+ import { sourceDomain } from "./source.domain"
22
+
23
+ const appDomain = domain("app")
24
+ .includes(datasetDomain)
25
+ .includes(sourceDomain)
26
+ .withSchema({ entities: {}, links: {}, rooms: {} })
27
+
28
+ class AppRuntime extends EkairosRuntime<{ orgId: string }, typeof appDomain, any> {
29
+ protected getDomain() {
30
+ return appDomain
31
+ }
32
+
33
+ protected resolveDb() {
34
+ return db
35
+ }
36
+ }
37
+
38
+ const runtime = new AppRuntime({ orgId: "org_1" })
39
+ ```
40
+
41
+ Use `appDomain.toInstantSchema()` to provision or push the InstantDB schema. Dataset itself does not own global DB access; it uses `runtime.use(datasetDomain)` internally.
42
+
43
+ ## Basic Usage
44
+
45
+ ```ts
46
+ const result = await dataset(runtime, { datasetId: "products_v1" })
47
+ .from({ kind: "text", text: "sku,price\nA1,10", mimeType: "text/csv" })
48
+ .auto()
49
+ .asRows()
50
+ .sandbox({ sandboxId })
51
+ .reactor(reactor)
52
+ .build()
53
+
54
+ console.log(result.datasetId)
55
+ console.log(result.previewRows)
56
+ ```
57
+
58
+ `dataset(runtime, { datasetId })` mirrors the old `structure(env, { datasetId })` style. You can also pass the id at build time:
59
+
60
+ ```ts
61
+ await dataset(runtime)
62
+ .from({ kind: "dataset", datasetId: "source_dataset_v1" })
63
+ .schema(productSchema)
64
+ .sandbox({ sandboxId })
65
+ .reactor(reactor)
66
+ .build({ datasetId: "normalized_products_v1" })
67
+ ```
68
+
69
+ ## Sources
70
+
71
+ Use `.from(...)` for structure-compatible sources:
72
+
73
+ ```ts
74
+ dataset(runtime).from(
75
+ { kind: "file", fileId: "file_1", description: "Supplier CSV" },
76
+ { kind: "text", text: "sku,price\nA1,10", mimeType: "text/csv", name: "inline.csv" },
77
+ { kind: "dataset", datasetId: "existing_dataset_v1" },
78
+ )
79
+ ```
80
+
81
+ The builder also keeps explicit source methods:
82
+
83
+ ```ts
84
+ dataset(runtime)
85
+ .fromFile({ fileId: "file_1" })
86
+ .fromText({ text: "raw input", name: "input.txt" })
87
+ .fromDataset({ datasetId: "existing_dataset_v1" })
88
+ ```
89
+
90
+ Query sources must use `.fromQuery(sourceDomain, ...)` because they need a second domain:
91
+
92
+ ```ts
93
+ const snapshot = await dataset(runtime, { datasetId: "open_items_v1" })
94
+ .fromQuery(sourceDomain, {
95
+ query: {
96
+ source_items: {
97
+ $: {
98
+ where: { status: "open" },
99
+ fields: ["title", "quantity"],
100
+ limit: 100,
101
+ },
102
+ },
103
+ },
104
+ title: "Open items",
105
+ explanation: "Snapshot of open source items",
106
+ })
107
+ .build()
108
+ ```
109
+
110
+ The query is typed with the same InstantDB query types used by `db.query`. Unknown entities, fields, filters, and link shapes fail at compile time.
111
+
112
+ ## Runtime Compatibility
113
+
114
+ The runtime check is name plus schema, not name only.
115
+
116
+ ```ts
117
+ const appDomain = domain("app")
118
+ .includes(datasetDomain)
119
+ .includes(sourceDomain)
120
+ .withSchema({ entities: {}, links: {}, rooms: {} })
121
+
122
+ dataset(runtime).fromQuery(sourceDomain, { query: { source_items: {} } })
123
+ ```
124
+
125
+ Subdomains are supported transitively. If domain `B` includes domain `A`, and the runtime root includes `B`, then `.fromQuery(A, ...)` is accepted.
126
+
127
+ A different domain with the same name but incompatible schema is rejected. A runtime that includes only `datasetDomain` can persist datasets but cannot query a source domain through `.fromQuery(...)`.
128
+
129
+ ## Output Modes
130
+
131
+ Rows are the default output:
132
+
133
+ ```ts
134
+ await dataset(runtime)
135
+ .from({ kind: "dataset", datasetId: "source_v1" })
136
+ .asRows()
137
+ .build({ datasetId: "rows_v1" })
138
+ ```
139
+
140
+ Object output is represented as a single-row dataset:
141
+
142
+ ```ts
143
+ const result = await dataset(runtime, { datasetId: "summary_v1" })
144
+ .from({ kind: "dataset", datasetId: "orders_v1" })
145
+ .instructions("Summarize orders by currency.")
146
+ .schema(summarySchema)
147
+ .asObject()
148
+ .sandbox({ sandboxId })
149
+ .reactor(reactor)
150
+ .build()
151
+
152
+ console.log(result.object)
153
+ ```
154
+
155
+ `asObject()` forces a one-row output contract. The persisted dataset still uses JSONL rows, and the returned result exposes the row as both `firstRow` and `object`.
156
+
157
+ ## Schema Modes
158
+
159
+ Use `schema(...)` when the output contract is known:
160
+
161
+ ```ts
162
+ const productSchema = {
163
+ title: "ProductRow",
164
+ description: "One product row",
165
+ schema: {
166
+ type: "object",
167
+ additionalProperties: false,
168
+ properties: {
169
+ sku: { type: "string" },
170
+ price: { type: "number" },
171
+ },
172
+ required: ["sku", "price"],
173
+ },
174
+ }
175
+
176
+ await dataset(runtime)
177
+ .from({ kind: "file", fileId })
178
+ .schema(productSchema)
179
+ .sandbox({ sandboxId })
180
+ .reactor(reactor)
181
+ .build({ datasetId: "products_v1" })
182
+ ```
183
+
184
+ Use `auto()` or `inferSchema()` when the builder should infer a schema from the materialized rows:
185
+
186
+ ```ts
187
+ await dataset(runtime)
188
+ .from({ kind: "text", text: csv, mimeType: "text/csv" })
189
+ .auto()
190
+ .sandbox({ sandboxId })
191
+ .reactor(reactor)
192
+ .build({ datasetId: "auto_products_v1" })
193
+ ```
194
+
195
+ `auto()` is an alias for `inferSchema()`.
196
+
197
+ ## Sandbox And Reactor Requirements
198
+
199
+ Some builds can materialize directly:
200
+
201
+ - A single query source without custom instructions can run without sandbox or reactor.
202
+
203
+ Other builds require sandbox execution and a reactor:
204
+
205
+ - File sources
206
+ - Text sources
207
+ - Existing dataset transformations
208
+ - Multiple sources
209
+ - Query sources with custom instructions
210
+ - Any build that needs agent-driven parsing or transformation
211
+
212
+ If these are missing, the builder throws `dataset_sandbox_required` or `dataset_reactor_required`.
213
+
214
+ ## Build Result
215
+
216
+ ```ts
217
+ type DatasetBuildResult = {
218
+ datasetId: string
219
+ dataset: any
220
+ previewRows: any[]
221
+ reader: {
222
+ read(cursor?: number, limit?: number): Promise<{
223
+ rows: any[]
224
+ cursor: number
225
+ done: boolean
226
+ }>
227
+ read(params?: { cursor?: number; limit?: number }): Promise<{
228
+ rows: any[]
229
+ cursor: number
230
+ done: boolean
231
+ }>
232
+ }
233
+ firstRow?: any | null
234
+ object?: any | null
235
+ }
236
+ ```
237
+
238
+ Read more rows with the returned reader:
239
+
240
+ ```ts
241
+ const page = await result.reader.read({ cursor: 0, limit: 100 })
242
+ ```
243
+
244
+ Use `.first()` when the build must produce zero or one row:
245
+
246
+ ```ts
247
+ const result = await dataset(runtime)
248
+ .fromQuery(sourceDomain, { query: { source_items: { $: { limit: 1 } } } })
249
+ .first()
250
+ .build({ datasetId: "single_item_v1" })
251
+
252
+ console.log(result.firstRow)
253
+ ```
254
+
255
+ If more than one row is produced, the builder throws `dataset_first_expected_zero_or_one_row`.
256
+
257
+ ## Declarative Tool
258
+
259
+ `createMaterializeDatasetTool` exposes the same materialization contract as an AI SDK tool. It is useful when a reactor or agent needs to request dataset builds declaratively.
260
+
261
+ ```ts
262
+ import { createMaterializeDatasetTool } from "@ekairos/dataset"
263
+
264
+ const materializeDataset = createMaterializeDatasetTool({
265
+ runtime,
266
+ reactor,
267
+ queryDomain: sourceDomain,
268
+ })
269
+ ```
270
+
271
+ Tool input:
272
+
273
+ ```ts
274
+ {
275
+ datasetId?: string
276
+ sandboxId?: string
277
+ title?: string
278
+ sources: Array<
279
+ | { kind: "file"; fileId: string; description?: string }
280
+ | { kind: "text"; text: string; mimeType?: string; name?: string; description?: string }
281
+ | { kind: "dataset"; datasetId: string; description?: string }
282
+ | { kind: "query"; query: Record<string, any>; title?: string; explanation?: string }
283
+ >
284
+ instructions?: string
285
+ mode?: "auto" | "schema"
286
+ output?: "rows" | "object"
287
+ schema?: DatasetSchemaInput
288
+ first?: boolean
289
+ }
290
+ ```
291
+
292
+ The tool returns only `{ datasetId }`.
293
+
294
+ The tool runtime must include `datasetDomain`, and its `queryDomain` must also be compatible with that same runtime.
295
+
296
+ ## Replacing Structure
297
+
298
+ Old structure-style chain:
299
+
300
+ ```ts
301
+ await structure(env, { datasetId: "summary_v1" })
302
+ .from({ kind: "text", text, mimeType: "text/plain", name: "input.txt" })
303
+ .instructions("Return a summary object.")
304
+ .schema(summarySchema)
305
+ .asObject()
306
+ .build()
307
+ ```
308
+
309
+ Dataset replacement:
310
+
311
+ ```ts
312
+ await dataset(runtime, { datasetId: "summary_v1" })
313
+ .from({ kind: "text", text, mimeType: "text/plain", name: "input.txt" })
314
+ .instructions("Return a summary object.")
315
+ .schema(summarySchema)
316
+ .asObject()
317
+ .sandbox({ sandboxId })
318
+ .reactor(reactor)
319
+ .build()
320
+ ```
321
+
322
+ Key differences:
323
+
324
+ - Pass `runtime`, not `env`.
325
+ - The runtime must include `datasetDomain`.
326
+ - Query sources must be explicit: `.fromQuery(sourceDomain, { query })`.
327
+ - Object output is stored as a one-row dataset, not as structure context content.
328
+ - Sandbox and reactor are explicit when parsing or transforming is required.
329
+
330
+ ## Exports
331
+
332
+ Main exports:
333
+
334
+ - `dataset`
335
+ - `datasetDomain`
336
+ - `createMaterializeDatasetTool`
337
+ - `materializeDatasetToolInputSchema`
338
+ - `DatasetBuilder`
339
+ - `DatasetBuildResult`
340
+ - `DatasetSourceInput`
341
+ - `DatasetSchemaInput`
342
+ - `DatasetOutput`
343
+ - `DatasetMode`
344
+
345
+ ## Internal Notes
346
+
347
+ Implementation notes live in `src/README.md`. Public callers should use the root package API from `@ekairos/dataset`.
@@ -0,0 +1,6 @@
1
+ import type { DatasetSchemaInput } from "./types";
2
+ export declare function buildFileDefaultInstructions(schema?: DatasetSchemaInput): "Create a dataset from the source file and ensure each output row matches the provided dataset schema exactly." | "Create a dataset representing the source content as structured rows.";
3
+ export declare function buildRawSourceInstructions(sourceKind: "file" | "text"): "Create a dataset representing the raw text content as structured rows without applying business transformations." | "Create a dataset representing the raw file content as structured rows without applying business transformations.";
4
+ export declare function buildTransformInstructions(sourceCount: number, userInstructions?: string, schema?: DatasetSchemaInput): string;
5
+ export declare function buildObjectOutputInstructions(userInstructions?: string): string;
6
+ //# sourceMappingURL=instructions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../../src/builder/instructions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAEjD,wBAAgB,4BAA4B,CAAC,MAAM,CAAC,EAAE,kBAAkB,4LAKvE;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,2OAKrE;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,UAarH;AAED,wBAAgB,6BAA6B,CAAC,gBAAgB,CAAC,EAAE,MAAM,UAWtE"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildFileDefaultInstructions = buildFileDefaultInstructions;
4
+ exports.buildRawSourceInstructions = buildRawSourceInstructions;
5
+ exports.buildTransformInstructions = buildTransformInstructions;
6
+ exports.buildObjectOutputInstructions = buildObjectOutputInstructions;
7
+ function buildFileDefaultInstructions(schema) {
8
+ if (schema) {
9
+ return "Create a dataset from the source file and ensure each output row matches the provided dataset schema exactly.";
10
+ }
11
+ return "Create a dataset representing the source content as structured rows.";
12
+ }
13
+ function buildRawSourceInstructions(sourceKind) {
14
+ if (sourceKind === "text") {
15
+ return "Create a dataset representing the raw text content as structured rows without applying business transformations.";
16
+ }
17
+ return "Create a dataset representing the raw file content as structured rows without applying business transformations.";
18
+ }
19
+ function buildTransformInstructions(sourceCount, userInstructions, schema) {
20
+ const explicit = String(userInstructions ?? "").trim();
21
+ if (explicit)
22
+ return explicit;
23
+ if (sourceCount > 1) {
24
+ if (schema) {
25
+ return "Combine the source datasets into a new dataset that matches the provided output schema exactly.";
26
+ }
27
+ return "Combine the source datasets into one coherent dataset.";
28
+ }
29
+ if (schema) {
30
+ return "Transform the source dataset into a new dataset that matches the provided output schema exactly.";
31
+ }
32
+ return "Transform the source dataset into a new useful dataset.";
33
+ }
34
+ function buildObjectOutputInstructions(userInstructions) {
35
+ const base = String(userInstructions ?? "").trim();
36
+ const objectContract = [
37
+ "Output mode is object.",
38
+ "Produce exactly one JSONL row in output.jsonl.",
39
+ "That row must be {\"type\":\"row\",\"data\":<the final object>}.",
40
+ "Do not emit multiple rows, headers, summaries, or metadata rows.",
41
+ ].join("\n");
42
+ if (!base)
43
+ return objectContract;
44
+ return [base, "", objectContract].join("\n");
45
+ }
46
+ //# sourceMappingURL=instructions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../src/builder/instructions.ts"],"names":[],"mappings":";;AAEA,oEAKC;AAED,gEAKC;AAED,gEAaC;AAED,sEAWC;AAxCD,SAAgB,4BAA4B,CAAC,MAA2B;IACtE,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,+GAA+G,CAAA;IACxH,CAAC;IACD,OAAO,sEAAsE,CAAA;AAC/E,CAAC;AAED,SAAgB,0BAA0B,CAAC,UAA2B;IACpE,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,kHAAkH,CAAA;IAC3H,CAAC;IACD,OAAO,kHAAkH,CAAA;AAC3H,CAAC;AAED,SAAgB,0BAA0B,CAAC,WAAmB,EAAE,gBAAyB,EAAE,MAA2B;IACpH,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IACtD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAC7B,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACpB,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,iGAAiG,CAAA;QAC1G,CAAC;QACD,OAAO,wDAAwD,CAAA;IACjE,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,kGAAkG,CAAA;IAC3G,CAAC;IACD,OAAO,yDAAyD,CAAA;AAClE,CAAC;AAED,SAAgB,6BAA6B,CAAC,gBAAyB;IACrE,MAAM,IAAI,GAAG,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAClD,MAAM,cAAc,GAAG;QACrB,wBAAwB;QACxB,gDAAgD;QAChD,kEAAkE;QAClE,kEAAkE;KACnE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEZ,IAAI,CAAC,IAAI;QAAE,OAAO,cAAc,CAAA;IAChC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC9C,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { AnyDatasetRuntime, DatasetBuilderState, DatasetSchemaInput, InternalSource } from "./types";
2
+ export declare function materializeQuerySource<Runtime extends AnyDatasetRuntime>(runtime: DatasetBuilderState<Runtime>["runtime"], source: Extract<InternalSource, {
3
+ kind: "query";
4
+ }>, params: {
5
+ datasetId: string;
6
+ sandboxId?: string;
7
+ schema?: DatasetSchemaInput;
8
+ title?: string;
9
+ instructions?: string;
10
+ first?: boolean;
11
+ }): Promise<string>;
12
+ export declare function materializeSingleFileLikeSource<Runtime extends AnyDatasetRuntime>(state: DatasetBuilderState<Runtime>, source: Extract<InternalSource, {
13
+ kind: "file" | "text";
14
+ }>, targetDatasetId: string): Promise<string>;
15
+ export declare function materializeDerivedDataset<Runtime extends AnyDatasetRuntime>(state: DatasetBuilderState<Runtime>, targetDatasetId: string): Promise<string>;
16
+ //# sourceMappingURL=materialize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"materialize.d.ts","sourceRoot":"","sources":["../../src/builder/materialize.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACf,MAAM,SAAS,CAAA;AAMhB,wBAAsB,sBAAsB,CAAC,OAAO,SAAS,iBAAiB,EAC5E,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,EAChD,MAAM,EAAE,OAAO,CAAC,cAAc,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,EAClD,MAAM,EAAE;IACN,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,kBAAkB,CAAA;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,mBAgCF;AAED,wBAAsB,+BAA+B,CAAC,OAAO,SAAS,iBAAiB,EACrF,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,EACnC,MAAM,EAAE,OAAO,CAAC,cAAc,EAAE;IAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC,EAC1D,eAAe,EAAE,MAAM,mBAuExB;AAqCD,wBAAsB,yBAAyB,CAAC,OAAO,SAAS,iBAAiB,EAC/E,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,EACnC,eAAe,EAAE,MAAM,mBAoFxB"}
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.materializeQuerySource = materializeQuerySource;
4
+ exports.materializeSingleFileLikeSource = materializeSingleFileLikeSource;
5
+ exports.materializeDerivedDataset = materializeDerivedDataset;
6
+ const file_dataset_agent_1 = require("../file/file-dataset.agent");
7
+ const service_1 = require("../service");
8
+ const transform_dataset_agent_1 = require("../transform/transform-dataset.agent");
9
+ const instructions_1 = require("./instructions");
10
+ const persistence_1 = require("./persistence");
11
+ const schemaInference_1 = require("./schemaInference");
12
+ const sourceRows_1 = require("./sourceRows");
13
+ function makeIntermediateDatasetId(targetDatasetId, sourceKind, index) {
14
+ return `${targetDatasetId}__${sourceKind}_${index}`;
15
+ }
16
+ async function materializeQuerySource(runtime, source, params) {
17
+ const scoped = await runtime.use(source.domain);
18
+ const result = await scoped.db.query(source.query);
19
+ const rows = (0, sourceRows_1.normalizeQueryRows)(result);
20
+ const domainDescriptor = (0, sourceRows_1.getDomainDescriptor)(source.domain);
21
+ return await (0, persistence_1.materializeRowsToDataset)(runtime, {
22
+ datasetId: params.datasetId,
23
+ sandboxId: params.sandboxId,
24
+ title: params.title ?? source.title,
25
+ instructions: params.instructions,
26
+ sources: [
27
+ {
28
+ kind: "query",
29
+ query: source.query,
30
+ title: source.title,
31
+ explanation: source.explanation,
32
+ ...domainDescriptor,
33
+ },
34
+ ],
35
+ sourceKinds: ["query"],
36
+ analysis: {
37
+ query: source.query,
38
+ explanation: source.explanation,
39
+ ...domainDescriptor,
40
+ },
41
+ rows,
42
+ schema: params.schema,
43
+ inferSchema: !params.schema,
44
+ first: params.first,
45
+ });
46
+ }
47
+ async function materializeSingleFileLikeSource(state, source, targetDatasetId) {
48
+ if (!state.reactor) {
49
+ throw new Error("dataset_reactor_required");
50
+ }
51
+ if (!state.sandboxId) {
52
+ throw new Error("dataset_sandbox_required");
53
+ }
54
+ const fileId = source.kind === "file"
55
+ ? source.fileId
56
+ : await (0, persistence_1.uploadInlineTextSource)(state.runtime, targetDatasetId, source);
57
+ await (0, persistence_1.createOrUpdateDatasetMetadata)(state.runtime, {
58
+ datasetId: targetDatasetId,
59
+ sandboxId: state.sandboxId,
60
+ title: state.title ?? targetDatasetId,
61
+ instructions: state.instructions,
62
+ sources: [
63
+ source.kind === "file"
64
+ ? { kind: "file", fileId: source.fileId, description: source.description }
65
+ : {
66
+ kind: "text",
67
+ mimeType: source.mimeType,
68
+ name: source.name,
69
+ description: source.description,
70
+ },
71
+ ],
72
+ sourceKinds: [source.kind],
73
+ schema: state.outputSchema,
74
+ status: "building",
75
+ });
76
+ const parseStory = (0, file_dataset_agent_1.createFileParseStory)(fileId, {
77
+ datasetId: targetDatasetId,
78
+ instructions: state.instructions ?? (0, instructions_1.buildFileDefaultInstructions)(state.outputSchema),
79
+ reactor: state.reactor,
80
+ sandboxId: state.sandboxId,
81
+ });
82
+ await parseStory.parse(state.env);
83
+ if (!state.outputSchema) {
84
+ const db = await (0, persistence_1.getDatasetDb)(state.runtime);
85
+ const service = new service_1.DatasetService(db);
86
+ const readResult = await service.readRows({ datasetId: targetDatasetId, cursor: 0, limit: 1000 });
87
+ if (!readResult.ok) {
88
+ throw new Error(readResult.error);
89
+ }
90
+ const inferred = (0, schemaInference_1.inferDatasetSchema)(readResult.data.rows, `${targetDatasetId}Row`, "One dataset row");
91
+ const updateResult = await service.updateDatasetSchema({
92
+ datasetId: targetDatasetId,
93
+ schema: inferred,
94
+ status: "completed",
95
+ });
96
+ if (!updateResult.ok) {
97
+ throw new Error(updateResult.error);
98
+ }
99
+ }
100
+ if (state.first) {
101
+ const db = await (0, persistence_1.getDatasetDb)(state.runtime);
102
+ const service = new service_1.DatasetService(db);
103
+ const firstResult = await service.readOne(targetDatasetId);
104
+ if (!firstResult.ok) {
105
+ throw new Error(firstResult.error);
106
+ }
107
+ }
108
+ return targetDatasetId;
109
+ }
110
+ async function normalizeSourceToDatasetId(state, source, targetDatasetId, sourceIndex) {
111
+ if (source.kind === "dataset") {
112
+ return source.datasetId;
113
+ }
114
+ const intermediateDatasetId = makeIntermediateDatasetId(targetDatasetId, source.kind, sourceIndex);
115
+ if (source.kind === "query") {
116
+ await materializeQuerySource(state.runtime, source, {
117
+ datasetId: intermediateDatasetId,
118
+ sandboxId: state.sandboxId,
119
+ title: source.title,
120
+ first: false,
121
+ });
122
+ return intermediateDatasetId;
123
+ }
124
+ await materializeSingleFileLikeSource({
125
+ ...state,
126
+ outputSchema: undefined,
127
+ first: false,
128
+ instructions: (0, instructions_1.buildRawSourceInstructions)(source.kind),
129
+ }, source, intermediateDatasetId);
130
+ return intermediateDatasetId;
131
+ }
132
+ async function materializeDerivedDataset(state, targetDatasetId) {
133
+ if (!state.reactor) {
134
+ throw new Error("dataset_reactor_required");
135
+ }
136
+ if (!state.sandboxId) {
137
+ throw new Error("dataset_sandbox_required");
138
+ }
139
+ const normalizedSources = [];
140
+ for (let index = 0; index < state.sources.length; index++) {
141
+ normalizedSources.push(await normalizeSourceToDatasetId(state, state.sources[index], targetDatasetId, index));
142
+ }
143
+ const transformSchema = state.outputSchema ??
144
+ {
145
+ title: "DatasetRow",
146
+ description: "One dataset row",
147
+ schema: {
148
+ type: "object",
149
+ additionalProperties: true,
150
+ properties: {},
151
+ },
152
+ };
153
+ await (0, persistence_1.createOrUpdateDatasetMetadata)(state.runtime, {
154
+ datasetId: targetDatasetId,
155
+ sandboxId: state.sandboxId,
156
+ title: state.title ?? targetDatasetId,
157
+ instructions: state.instructions,
158
+ sources: state.sources.map((source) => source.kind === "query"
159
+ ? {
160
+ kind: "query",
161
+ query: source.query,
162
+ title: source.title,
163
+ explanation: source.explanation,
164
+ ...(0, sourceRows_1.getDomainDescriptor)(source.domain),
165
+ }
166
+ : source),
167
+ sourceKinds: state.sources.map((source) => source.kind),
168
+ schema: transformSchema,
169
+ status: "building",
170
+ });
171
+ const transformStory = (0, transform_dataset_agent_1.createTransformDatasetStory)({
172
+ sourceDatasetIds: normalizedSources,
173
+ outputSchema: transformSchema,
174
+ instructions: (0, instructions_1.buildTransformInstructions)(normalizedSources.length, state.instructions, state.outputSchema),
175
+ datasetId: targetDatasetId,
176
+ reactor: state.reactor,
177
+ sandboxId: state.sandboxId,
178
+ });
179
+ await transformStory.transform(state.env);
180
+ const db = await (0, persistence_1.getDatasetDb)(state.runtime);
181
+ const service = new service_1.DatasetService(db);
182
+ if (!state.outputSchema) {
183
+ const readResult = await service.readRows({ datasetId: targetDatasetId, cursor: 0, limit: 1000 });
184
+ if (!readResult.ok) {
185
+ throw new Error(readResult.error);
186
+ }
187
+ const inferred = (0, schemaInference_1.inferDatasetSchema)(readResult.data.rows, `${targetDatasetId}Row`, "One dataset row");
188
+ const updateResult = await service.updateDatasetSchema({
189
+ datasetId: targetDatasetId,
190
+ schema: inferred,
191
+ status: "completed",
192
+ });
193
+ if (!updateResult.ok) {
194
+ throw new Error(updateResult.error);
195
+ }
196
+ }
197
+ if (state.first) {
198
+ const firstResult = await service.readOne(targetDatasetId);
199
+ if (!firstResult.ok) {
200
+ throw new Error(firstResult.error);
201
+ }
202
+ }
203
+ return targetDatasetId;
204
+ }
205
+ //# sourceMappingURL=materialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"materialize.js","sourceRoot":"","sources":["../../src/builder/materialize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { AnyDatasetRuntime, DatasetBuildResult, DatasetTextSourceInput, MaterializeRowsParams } from "./types";
2
+ export declare function defaultTextSourceName(source: DatasetTextSourceInput): string;
3
+ export declare function getDatasetDb<Runtime extends AnyDatasetRuntime>(runtime: Runtime): Promise<any>;
4
+ export declare function createOrUpdateDatasetMetadata<Runtime extends AnyDatasetRuntime>(runtime: Runtime, params: {
5
+ datasetId: string;
6
+ sandboxId?: string;
7
+ title?: string;
8
+ instructions?: string;
9
+ sources: any[];
10
+ sourceKinds: string[];
11
+ analysis?: any;
12
+ schema?: any;
13
+ status?: string;
14
+ }): Promise<void>;
15
+ export declare function materializeRowsToDataset<Runtime extends AnyDatasetRuntime>(runtime: Runtime, params: MaterializeRowsParams): Promise<string>;
16
+ export declare function uploadInlineTextSource<Runtime extends AnyDatasetRuntime>(runtime: Runtime, datasetId: string, source: DatasetTextSourceInput): Promise<string>;
17
+ export declare function finalizeBuildResult<Runtime extends AnyDatasetRuntime>(runtime: Runtime, datasetId: string, withFirst: boolean): Promise<DatasetBuildResult>;
18
+ //# sourceMappingURL=persistence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../src/builder/persistence.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAElB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAEhB,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAO5E;AAED,wBAAsB,YAAY,CAAC,OAAO,SAAS,iBAAiB,EAClE,OAAO,EAAE,OAAO,gBAIjB;AAED,wBAAsB,6BAA6B,CAAC,OAAO,SAAS,iBAAiB,EACnF,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE;IACN,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,GAAG,EAAE,CAAA;IACd,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,QAAQ,CAAC,EAAE,GAAG,CAAA;IACd,MAAM,CAAC,EAAE,GAAG,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,iBAmBF;AAED,wBAAsB,wBAAwB,CAAC,OAAO,SAAS,iBAAiB,EAC9E,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAgDjB;AAED,wBAAsB,sBAAsB,CAAC,OAAO,SAAS,iBAAiB,EAC5E,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,sBAAsB,mBAc/B;AAED,wBAAsB,mBAAmB,CAAC,OAAO,SAAS,iBAAiB,EACzE,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,kBAAkB,CAAC,CAmD7B"}