@polpo-ai/core 0.15.143 → 0.15.144

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.
@@ -0,0 +1,598 @@
1
+ import { z } from "zod";
2
+ export class DataError extends Error {
3
+ code;
4
+ constructor(code, message) {
5
+ super(message);
6
+ this.code = code;
7
+ this.name = "DataError";
8
+ }
9
+ }
10
+ const invalid = (message) => {
11
+ throw new DataError("data_invalid", message);
12
+ };
13
+ const forbidden = () => {
14
+ throw new DataError("data_forbidden", "Data access is not granted");
15
+ };
16
+ const forbiddenNames = new Set(["constructor", "prototype", "__proto__"]);
17
+ export const DataIdentifier = z
18
+ .string()
19
+ .regex(/^[a-z][a-z0-9_]{0,47}$/)
20
+ .refine((v) => !forbiddenNames.has(v), "Reserved identifier");
21
+ export const DataIndexName = z
22
+ .string()
23
+ .regex(/^[a-z][a-z0-9_]{0,62}$/)
24
+ .refine((v) => !forbiddenNames.has(v), "Reserved index name");
25
+ export const DataName = z
26
+ .string()
27
+ .regex(/^[a-z][a-z0-9_-]{0,62}$/)
28
+ .refine((v) => !forbiddenNames.has(v), "Reserved name")
29
+ .refine((v) => !/^[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$/i.test(v), "UUIDs are reserved for resource identities");
30
+ const columnRef = z
31
+ .string()
32
+ .refine((v) => ["_id", "_version", "_created_at", "_updated_at"].includes(v) ||
33
+ DataIdentifier.safeParse(v).success, "Invalid column");
34
+ const uuid = z.string().uuid();
35
+ export const DataColumnSchema = z
36
+ .object({
37
+ type: z.enum([
38
+ "text",
39
+ "integer",
40
+ "number",
41
+ "boolean",
42
+ "timestamp",
43
+ "uuid",
44
+ "json",
45
+ ]),
46
+ nullable: z.boolean().optional(),
47
+ unique: z.boolean().optional(),
48
+ references: z
49
+ .object({ table: DataIdentifier, column: columnRef })
50
+ .strict()
51
+ .optional(),
52
+ })
53
+ .strict();
54
+ export const DataTableSchema = z
55
+ .object({
56
+ columns: z
57
+ .record(DataIdentifier, DataColumnSchema)
58
+ .refine((v) => Object.keys(v).length <= 64, "At most 64 columns"),
59
+ indexes: z
60
+ .array(z
61
+ .object({
62
+ name: DataIndexName.optional(),
63
+ columns: z.array(DataIdentifier).min(1).max(4),
64
+ unique: z.boolean().optional(),
65
+ })
66
+ .strict())
67
+ .max(16)
68
+ .optional(),
69
+ })
70
+ .strict();
71
+ export const DataSchema = z
72
+ .object({
73
+ tables: z
74
+ .record(DataIdentifier, DataTableSchema)
75
+ .refine((v) => Object.keys(v).length <= 32, "At most 32 tables"),
76
+ })
77
+ .strict()
78
+ .superRefine((schema, ctx) => {
79
+ const indexNames = new Set();
80
+ for (const [tableName, table] of Object.entries(schema.tables)) {
81
+ for (const [position, index] of (table.indexes ?? []).entries()) {
82
+ const indexName = index.name ?? `idx_${tableName}_${position}`;
83
+ if (indexNames.has(indexName))
84
+ ctx.addIssue({
85
+ code: "custom",
86
+ message: "Index names must be unique within a database",
87
+ path: ["tables", tableName, "indexes", position, "name"],
88
+ });
89
+ indexNames.add(indexName);
90
+ if (new Set(index.columns).size !== index.columns.length ||
91
+ index.columns.some((c) => !Object.hasOwn(table.columns, c)))
92
+ ctx.addIssue({
93
+ code: "custom",
94
+ message: "Index must reference distinct existing columns",
95
+ path: ["tables", tableName, "indexes"],
96
+ });
97
+ if (index.columns.some((c) => table.columns[c]?.type === "json"))
98
+ ctx.addIssue({
99
+ code: "custom",
100
+ message: "JSON indexes are not supported",
101
+ path: ["tables", tableName, "indexes"],
102
+ });
103
+ }
104
+ for (const [name, column] of Object.entries(table.columns)) {
105
+ if (column.type === "json" && (column.unique || column.references))
106
+ ctx.addIssue({
107
+ code: "custom",
108
+ message: "JSON cannot be a unique key or reference",
109
+ path: ["tables", tableName, "columns", name],
110
+ });
111
+ if (!column.references)
112
+ continue;
113
+ const target = schema.tables[column.references.table];
114
+ const targetColumn = column.references.column === "_id"
115
+ ? { type: "uuid", unique: true }
116
+ : target?.columns[column.references.column];
117
+ const unique = targetColumn?.unique ||
118
+ target?.indexes?.some((i) => i.unique &&
119
+ i.columns.length === 1 &&
120
+ i.columns[0] === column.references.column);
121
+ if (!target ||
122
+ !targetColumn ||
123
+ !unique ||
124
+ targetColumn.type !== column.type)
125
+ ctx.addIssue({
126
+ code: "custom",
127
+ message: "Reference must target a unique column of the same type",
128
+ path: ["tables", tableName, "columns", name],
129
+ });
130
+ }
131
+ }
132
+ });
133
+ export const CreateDataSchema = z
134
+ .object({ name: DataName, schema: DataSchema })
135
+ .strict();
136
+ export const MigrateDataSchema = z
137
+ .object({ expectedVersion: z.number().int().positive(), schema: DataSchema })
138
+ .strict();
139
+ export const RenameDataSchema = z
140
+ .object({ expectedVersion: z.number().int().positive(), name: DataName })
141
+ .strict();
142
+ /** Canonical recursive JSON values, also named by API schema generators. */
143
+ export const DataValueSchema = z.json();
144
+ const json = DataValueSchema;
145
+ const filterOperators = z
146
+ .object({
147
+ eq: json.optional(),
148
+ ne: json.optional(),
149
+ gt: json.optional(),
150
+ gte: json.optional(),
151
+ lt: json.optional(),
152
+ lte: json.optional(),
153
+ in: z.array(json).min(1).max(100).optional(),
154
+ isNull: z.boolean().optional(),
155
+ })
156
+ .strict()
157
+ .refine((v) => Object.keys(v).length > 0, "Empty filter");
158
+ export const DataFilterSchema = z
159
+ .record(columnRef, filterOperators)
160
+ .refine((v) => Object.keys(v).length <= 16, "At most 16 filters");
161
+ const values = z.record(DataIdentifier, json);
162
+ export const DataOperationSchema = z.discriminatedUnion("op", [
163
+ z
164
+ .object({
165
+ op: z.literal("list"),
166
+ table: DataIdentifier,
167
+ filter: DataFilterSchema.optional(),
168
+ orderBy: z
169
+ .array(z
170
+ .object({ column: columnRef, direction: z.enum(["asc", "desc"]) })
171
+ .strict())
172
+ .max(3)
173
+ .optional(),
174
+ limit: z.number().int().min(1).max(200).optional(),
175
+ offset: z.number().int().min(0).max(10000).optional(),
176
+ })
177
+ .strict(),
178
+ z.object({ op: z.literal("insert"), table: DataIdentifier, values }).strict(),
179
+ z
180
+ .object({
181
+ op: z.literal("upsert"),
182
+ table: DataIdentifier,
183
+ values,
184
+ onConflict: z.array(DataIdentifier).min(1).max(4),
185
+ })
186
+ .strict(),
187
+ z
188
+ .object({
189
+ op: z.literal("update"),
190
+ table: DataIdentifier,
191
+ id: uuid,
192
+ expectedVersion: z.number().int().positive(),
193
+ values,
194
+ })
195
+ .strict(),
196
+ z
197
+ .object({
198
+ op: z.literal("delete"),
199
+ table: DataIdentifier,
200
+ id: uuid,
201
+ expectedVersion: z.number().int().positive(),
202
+ })
203
+ .strict(),
204
+ ]);
205
+ export const DataBatchSchema = z
206
+ .object({
207
+ operations: z.array(DataOperationSchema).min(1).max(100),
208
+ idempotencyKey: z
209
+ .string()
210
+ .min(1)
211
+ .max(200)
212
+ .regex(/^[\x21-\x7e]+$/)
213
+ .optional(),
214
+ })
215
+ .strict();
216
+ const sqlStatement = z
217
+ .object({
218
+ sql: z.string().trim().min(1).max(65536),
219
+ params: z
220
+ .array(z.union([
221
+ z.string().max(65536),
222
+ z.number().finite(),
223
+ z.boolean(),
224
+ z.null(),
225
+ ]))
226
+ .max(1000)
227
+ .optional(),
228
+ })
229
+ .strict();
230
+ export const DataQuerySchema = sqlStatement.extend({
231
+ mode: z.enum(["read", "write"]).optional(),
232
+ maxRows: z.number().int().min(1).max(200).optional(),
233
+ idempotencyKey: z
234
+ .string()
235
+ .min(1)
236
+ .max(200)
237
+ .regex(/^[\x21-\x7e]+$/)
238
+ .optional(),
239
+ });
240
+ export const DataSqlMigrationSchema = z
241
+ .object({
242
+ id: DataIdentifier,
243
+ expectedVersion: z.number().int().positive(),
244
+ statements: z.array(sqlStatement).min(1).max(100),
245
+ allowDestructive: z.boolean().optional(),
246
+ })
247
+ .strict();
248
+ export const DataGrantSchema = z
249
+ .object({
250
+ resource: z.union([uuid, z.literal("*")]),
251
+ tables: z.array(DataIdentifier).min(1).max(32).optional(),
252
+ actions: z
253
+ .array(z.enum(["read", "write", "manage"]))
254
+ .min(1)
255
+ .max(3),
256
+ })
257
+ .strict();
258
+ /** Re-resolve authorization on each call; expose no provider or host internals. */
259
+ export function createDataCapability(resolve) {
260
+ return Object.freeze({
261
+ list: async () => (await resolve()).list(),
262
+ describe: async (reference) => (await resolve()).describe(reference),
263
+ execute: async (reference, batch) => (await resolve()).execute(reference, batch),
264
+ query: async (reference, input) => {
265
+ const client = await resolve();
266
+ if (!client.query)
267
+ throw new DataError("data_invalid", "SQL queries are not supported by this provider");
268
+ return client.query(reference, input);
269
+ },
270
+ });
271
+ }
272
+ export function parseData(schema, input) {
273
+ let serialized;
274
+ try {
275
+ serialized = JSON.stringify(input);
276
+ }
277
+ catch {
278
+ return invalid("Expected JSON input");
279
+ }
280
+ if (!serialized || new TextEncoder().encode(serialized).length > 262144)
281
+ throw new DataError("data_limit", "Data request exceeds 256 KiB");
282
+ const parsed = schema.safeParse(input);
283
+ if (!parsed.success)
284
+ return invalid(parsed.error.issues
285
+ .map((i) => `${i.path.join(".")}: ${i.message}`)
286
+ .slice(0, 5)
287
+ .join("; "));
288
+ return parsed.data;
289
+ }
290
+ export function dataColumn(table, name) {
291
+ const system = {
292
+ _id: { type: "uuid" },
293
+ _version: { type: "integer" },
294
+ _created_at: { type: "timestamp" },
295
+ _updated_at: { type: "timestamp" },
296
+ };
297
+ const column = Object.hasOwn(system, name)
298
+ ? system[name]
299
+ : Object.hasOwn(table.columns, name)
300
+ ? table.columns[name]
301
+ : undefined;
302
+ return column ?? invalid(`Unknown column: ${name}`);
303
+ }
304
+ function validateValue(column, value, name) {
305
+ if (value === null) {
306
+ if (column.nullable)
307
+ return;
308
+ return invalid(`${name} cannot be null`);
309
+ }
310
+ const valid = column.type === "json"
311
+ ? json.safeParse(value).success
312
+ : column.type === "text"
313
+ ? typeof value === "string" &&
314
+ new TextEncoder().encode(value).byteLength <= 65536
315
+ : column.type === "boolean"
316
+ ? typeof value === "boolean"
317
+ : column.type === "integer"
318
+ ? typeof value === "number" &&
319
+ Number.isSafeInteger(value) &&
320
+ value >= -2147483648 &&
321
+ value <= 2147483647
322
+ : column.type === "number"
323
+ ? typeof value === "number" && Number.isFinite(value)
324
+ : column.type === "uuid"
325
+ ? uuid.safeParse(value).success
326
+ : typeof value === "string" &&
327
+ z.iso.datetime({ offset: true }).safeParse(value).success;
328
+ if (!valid)
329
+ invalid(`Invalid ${column.type} value for ${name}`);
330
+ }
331
+ export function validateDataOperation(schema, input) {
332
+ const operation = parseData(DataOperationSchema, input);
333
+ const table = Object.hasOwn(schema.tables, operation.table)
334
+ ? schema.tables[operation.table]
335
+ : undefined;
336
+ if (!table)
337
+ return invalid(`Unknown table: ${operation.table}`);
338
+ if (operation.op === "list") {
339
+ for (const order of operation.orderBy ?? [])
340
+ if (dataColumn(table, order.column).type === "json")
341
+ invalid("JSON ordering is not supported");
342
+ if (new Set(operation.orderBy?.map((o) => o.column)).size !==
343
+ (operation.orderBy?.length ?? 0))
344
+ invalid("Duplicate ordering column");
345
+ for (const [name, operators] of Object.entries(operation.filter ?? {})) {
346
+ const column = dataColumn(table, name);
347
+ for (const [operator, value] of Object.entries(operators)) {
348
+ if (operator === "isNull")
349
+ continue;
350
+ if (column.type === "json" && !["eq", "ne", "in"].includes(operator))
351
+ invalid("JSON only supports equality filters");
352
+ if (column.type === "boolean" && !["eq", "ne", "in"].includes(operator))
353
+ invalid("Boolean only supports equality filters");
354
+ for (const item of operator === "in" ? value : [value]) {
355
+ if (item === null) {
356
+ if (!["eq", "ne", "in"].includes(operator))
357
+ invalid("Null cannot be ordered");
358
+ }
359
+ else
360
+ validateValue(column, item, name);
361
+ }
362
+ }
363
+ }
364
+ }
365
+ else if (operation.op !== "delete") {
366
+ if (Object.keys(operation.values).length === 0)
367
+ invalid("Values cannot be empty");
368
+ for (const [name, value] of Object.entries(operation.values)) {
369
+ if (!Object.hasOwn(table.columns, name))
370
+ invalid(`Unknown column: ${name}`);
371
+ validateValue(table.columns[name], value, name);
372
+ }
373
+ if (operation.op !== "update")
374
+ for (const [name, column] of Object.entries(table.columns))
375
+ if (!column.nullable && !Object.hasOwn(operation.values, name))
376
+ invalid(`Missing required column: ${name}`);
377
+ if (operation.op === "upsert") {
378
+ const keys = operation.onConflict;
379
+ const unique = (keys.length === 1 && table.columns[keys[0]]?.unique) ||
380
+ table.indexes?.some((i) => i.unique &&
381
+ i.columns.length === keys.length &&
382
+ i.columns.every((c) => keys.includes(c)));
383
+ if (!unique ||
384
+ new Set(keys).size !== keys.length ||
385
+ keys.some((k) => operation.values[k] == null))
386
+ invalid("Upsert conflict columns must form a populated unique key");
387
+ }
388
+ }
389
+ return operation;
390
+ }
391
+ export function canonicalDataJson(value) {
392
+ if (value === null || typeof value !== "object")
393
+ return JSON.stringify(value);
394
+ if (Array.isArray(value))
395
+ return `[${value.map(canonicalDataJson).join(",")}]`;
396
+ return `{${Object.keys(value)
397
+ .sort()
398
+ .map((k) => `${JSON.stringify(k)}:${canonicalDataJson(value[k])}`)
399
+ .join(",")}}`;
400
+ }
401
+ export class DataService {
402
+ provider;
403
+ #access;
404
+ constructor(provider, access) {
405
+ this.provider = provider;
406
+ if (!access.scope ||
407
+ !access.principalId ||
408
+ access.scope.length > 200 ||
409
+ access.principalId.length > 200)
410
+ invalid("A bounded host scope and principal are required");
411
+ this.#access = {
412
+ scope: access.scope,
413
+ principalId: access.principalId,
414
+ grants: parseData(z.array(DataGrantSchema).max(100), access.grants),
415
+ };
416
+ }
417
+ allows(resource, action, table) {
418
+ return this.#access.grants.some((g) => (g.resource === "*" || g.resource === resource) &&
419
+ (g.actions.includes(action) || g.actions.includes("manage")) &&
420
+ (action === "manage"
421
+ ? !g.tables
422
+ : !table || !g.tables || g.tables.includes(table)));
423
+ }
424
+ async resolve(reference) {
425
+ if (!this.#access.grants.length)
426
+ return forbidden();
427
+ if (typeof reference !== "string" ||
428
+ !(DataName.safeParse(reference).success ||
429
+ uuid.safeParse(reference).success))
430
+ invalid("Invalid Data reference");
431
+ const resource = await this.provider.get(this.#access.scope, reference);
432
+ if (!resource)
433
+ throw new DataError("data_not_found", "Data resource not found");
434
+ if (!["read", "write", "manage"].some((action) => this.allows(resource.id, action)))
435
+ return forbidden();
436
+ return resource;
437
+ }
438
+ visible(resource) {
439
+ return {
440
+ ...resource,
441
+ schema: {
442
+ tables: Object.fromEntries(Object.entries(resource.schema.tables).filter(([table]) => this.allows(resource.id, "read", table) ||
443
+ this.allows(resource.id, "write", table))),
444
+ },
445
+ };
446
+ }
447
+ async list() {
448
+ if (!this.#access.grants.length)
449
+ return [];
450
+ return (await this.provider.list(this.#access.scope))
451
+ .filter((r) => this.allows(r.id, "read") ||
452
+ this.allows(r.id, "write") ||
453
+ this.allows(r.id, "manage"))
454
+ .map((r) => this.visible(r));
455
+ }
456
+ async describe(reference) {
457
+ return this.visible(await this.resolve(reference));
458
+ }
459
+ async create(input) {
460
+ if (!this.allows("*", "manage"))
461
+ return forbidden();
462
+ return this.provider.create(this.#access.scope, parseData(CreateDataSchema, input));
463
+ }
464
+ async migrate(reference, input) {
465
+ const resource = await this.resolve(reference);
466
+ if (!this.allows(resource.id, "manage"))
467
+ return forbidden();
468
+ return this.provider.migrate(this.#access.scope, resource.id, parseData(MigrateDataSchema, input));
469
+ }
470
+ async rename(reference, input) {
471
+ const resource = await this.resolve(reference);
472
+ if (!this.allows(resource.id, "manage"))
473
+ return forbidden();
474
+ return this.provider.rename(this.#access.scope, resource.id, parseData(RenameDataSchema, input));
475
+ }
476
+ async remove(reference, expectedVersion) {
477
+ const resource = await this.resolve(reference);
478
+ if (!this.allows(resource.id, "manage"))
479
+ return forbidden();
480
+ return this.provider.remove(this.#access.scope, resource.id, parseData(z.number().int().positive(), expectedVersion));
481
+ }
482
+ async execute(reference, input) {
483
+ const batch = parseData(DataBatchSchema, input);
484
+ const resource = await this.resolve(reference);
485
+ for (const operation of batch.operations) {
486
+ if (!this.allows(resource.id, operation.op === "list" ? "read" : "write", operation.table))
487
+ return forbidden();
488
+ validateDataOperation(resource.schema, operation);
489
+ }
490
+ if (batch.operations.length > 1 && !this.provider.capabilities.transactions)
491
+ invalid("Provider does not support atomic batches");
492
+ return this.provider.execute(this.#access.scope, resource.id, this.#access.principalId, batch);
493
+ }
494
+ async query(reference, input) {
495
+ const query = parseData(DataQuerySchema, input);
496
+ const resource = await this.resolve(reference);
497
+ const action = query.mode === "write" ? "write" : "read";
498
+ if (!this.allows(resource.id, action))
499
+ return forbidden();
500
+ if (!this.provider.capabilities.sql || !this.provider.query)
501
+ return invalid("SQL queries are not supported by this provider");
502
+ const tables = Object.keys(resource.schema.tables);
503
+ return this.provider.query(this.#access.scope, resource.id, this.#access.principalId, query, {
504
+ readTables: tables.filter((table) => this.allows(resource.id, "read", table)),
505
+ writeTables: tables.filter((table) => this.allows(resource.id, "write", table)),
506
+ });
507
+ }
508
+ async migrateSql(reference, input) {
509
+ const resource = await this.resolve(reference);
510
+ if (!this.allows(resource.id, "manage"))
511
+ return forbidden();
512
+ if (!this.provider.capabilities.sql?.migrations ||
513
+ !this.provider.migrateSql)
514
+ return invalid("SQL migrations are not supported by this provider");
515
+ return this.provider.migrateSql(this.#access.scope, resource.id, parseData(DataSqlMigrationSchema, input));
516
+ }
517
+ async migrations(reference) {
518
+ const resource = await this.resolve(reference);
519
+ if (!this.allows(resource.id, "manage"))
520
+ return forbidden();
521
+ if (!this.provider.migrations)
522
+ return invalid("SQL migrations are not supported by this provider");
523
+ return this.provider.migrations(this.#access.scope, resource.id);
524
+ }
525
+ }
526
+ /** Credential-bearing transport for a trusted host. Returned tools see only DataClient. */
527
+ export function createRemoteDataClient(options) {
528
+ const url = new URL(options.url);
529
+ if (!["http:", "https:"].includes(url.protocol) ||
530
+ url.username ||
531
+ url.password ||
532
+ !options.token)
533
+ throw new DataError("data_invalid", "Invalid remote Data binding");
534
+ const headers = Object.freeze({
535
+ ...options.headers,
536
+ Authorization: `Bearer ${options.token}`,
537
+ "Content-Type": "application/json",
538
+ });
539
+ const fetcher = options.fetch ?? fetch;
540
+ const call = async (input) => {
541
+ let response;
542
+ try {
543
+ response = await fetcher(url.toString(), {
544
+ method: "POST",
545
+ headers,
546
+ body: JSON.stringify(input),
547
+ redirect: "error",
548
+ signal: AbortSignal.timeout(30000),
549
+ });
550
+ }
551
+ catch {
552
+ throw new DataError("data_unavailable", "Data gateway unavailable; retry writes with the same idempotency key");
553
+ }
554
+ let body;
555
+ try {
556
+ body = await response.json();
557
+ }
558
+ catch {
559
+ throw new DataError("data_unavailable", "Invalid Data gateway response");
560
+ }
561
+ if (!response.ok || !body?.ok) {
562
+ const codes = [
563
+ "data_invalid",
564
+ "data_forbidden",
565
+ "data_not_found",
566
+ "data_conflict",
567
+ "data_constraint",
568
+ "data_limit",
569
+ "data_unavailable",
570
+ ];
571
+ const code = codes.includes(body?.code ?? "")
572
+ ? body.code
573
+ : "data_unavailable";
574
+ throw new DataError(code, codes.includes(body?.code ?? "") && typeof body.error === "string"
575
+ ? body.error
576
+ : "Data gateway unavailable");
577
+ }
578
+ if (!Object.hasOwn(body, "data"))
579
+ throw new DataError("data_unavailable", "Invalid Data gateway response");
580
+ return body.data;
581
+ };
582
+ const reference = (ref) => parseData(z.union([DataName, uuid]), ref);
583
+ return Object.freeze({
584
+ list: () => call({ operation: "list" }),
585
+ describe: (ref) => call({ operation: "describe", resource: reference(ref) }),
586
+ execute: (ref, batch) => call({
587
+ operation: "execute",
588
+ resource: reference(ref),
589
+ batch: parseData(DataBatchSchema, batch),
590
+ }),
591
+ query: (ref, query) => call({
592
+ operation: "query",
593
+ resource: reference(ref),
594
+ query: parseData(DataQuerySchema, query),
595
+ }),
596
+ });
597
+ }
598
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polpo-ai/core",
3
- "version": "0.15.143",
3
+ "version": "0.15.144",
4
4
  "description": "Pure business logic, types, schemas, and store interfaces for the Polpo AI agent orchestration platform",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -309,6 +309,10 @@
309
309
  "./context-compactor": {
310
310
  "types": "./dist/context-compactor.d.ts",
311
311
  "import": "./dist/context-compactor.js"
312
+ },
313
+ "./data": {
314
+ "types": "./dist/data/index.d.ts",
315
+ "import": "./dist/data/index.js"
312
316
  }
313
317
  },
314
318
  "sideEffects": false,