@polpo-ai/server 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.
package/dist/index.d.ts CHANGED
@@ -7,6 +7,7 @@
7
7
  * For routes that require Node.js (completions, files, agents avatar),
8
8
  * import from "polpo-ai" instead.
9
9
  */
10
+ export { dataRoutes, type DataServiceResolver } from "./routes/data.js";
10
11
  export { taskRoutes } from "./routes/tasks.js";
11
12
  export { missionRoutes } from "./routes/missions.js";
12
13
  export { playbookRoutes } from "./routes/playbooks.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -8,6 +8,7 @@
8
8
  * import from "polpo-ai" instead.
9
9
  */
10
10
  // Route factories
11
+ export { dataRoutes } from "./routes/data.js";
11
12
  export { taskRoutes } from "./routes/tasks.js";
12
13
  export { missionRoutes } from "./routes/missions.js";
13
14
  export { playbookRoutes } from "./routes/playbooks.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,kBAAkB;AAClB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EACL,eAAe,EACf,oBAAoB,GAIrB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,uBAAuB,EACvB,6BAA6B,GAO9B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,WAAW,GAEZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,8BAA8B,EAC9B,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,GAYvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,wBAAwB,EACxB,oCAAoC,GAWrC,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAsB,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAyB,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EACL,iBAAiB,GAElB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,iBAAiB,GAGlB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAsC,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAsB,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAuB,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EACL,gBAAgB,GAMjB,MAAM,0BAA0B,CAAC;AAoBlC,uEAAuE;AACvE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAC;AAC1I,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EACL,4BAA4B,GAI7B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAEhF,mDAAmD;AACnD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,kBAAkB;AAClB,OAAO,EAAE,UAAU,EAA4B,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EACL,eAAe,EACf,oBAAoB,GAIrB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,uBAAuB,EACvB,6BAA6B,GAO9B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,WAAW,GAEZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,8BAA8B,EAC9B,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,GAYvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,wBAAwB,EACxB,oCAAoC,GAWrC,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAsB,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAyB,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EACL,iBAAiB,GAElB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,iBAAiB,GAGlB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAsC,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAsB,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAuB,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EACL,gBAAgB,GAMjB,MAAM,0BAA0B,CAAC;AAoBlC,uEAAuE;AACvE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAC;AAC1I,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EACL,4BAA4B,GAI7B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAEhF,mDAAmD;AACnD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { OpenAPIHono } from "@hono/zod-openapi";
2
+ /** Register the schemas used by DataService without adding a second validator. */
3
+ export declare function registerDataOpenApi(app: OpenAPIHono): void;
4
+ //# sourceMappingURL=data-openapi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-openapi.d.ts","sourceRoot":"","sources":["../../src/routes/data-openapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAK,MAAM,mBAAmB,CAAC;AAYnD,kFAAkF;AAClF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,WAAW,QAgKnD"}
@@ -0,0 +1,156 @@
1
+ import { z } from "@hono/zod-openapi";
2
+ import { CreateDataSchema, DataBatchSchema, DataValueSchema, DataQuerySchema, DataSchema, DataSqlMigrationSchema, MigrateDataSchema, RenameDataSchema, } from "@polpo-ai/core/data";
3
+ /** Register the schemas used by DataService without adding a second validator. */
4
+ export function registerDataOpenApi(app) {
5
+ // JSON is recursive, but any JSON value is represented by these six types.
6
+ // Explicit metadata avoids both infinite lazy expansion and a nullable $ref
7
+ // being wrapped in oneOf(null, ref-that-already-allows-null).
8
+ // Use public Zod metadata rather than .openapi(): canonical schemas may
9
+ // have been created before the host initialized its OpenAPI extension.
10
+ DataValueSchema.register(z.globalRegistry, {
11
+ type: ["string", "number", "boolean", "object", "array", "null"],
12
+ description: "Any JSON value; arrays and objects may contain nested JSON values.",
13
+ });
14
+ const resource = z.object({
15
+ id: z.string().uuid(),
16
+ name: z.string(),
17
+ schema: DataSchema,
18
+ schemaVersion: z.number().int(),
19
+ createdAt: z.string(),
20
+ });
21
+ const row = z.record(z.string(), z.unknown());
22
+ const queryResult = z.object({
23
+ rows: z.array(row),
24
+ rowCount: z.number().int(),
25
+ truncated: z.boolean(),
26
+ });
27
+ const batchResult = z.array(z.object({
28
+ rows: z.array(row),
29
+ total: z.number().int().optional(),
30
+ nextOffset: z.number().int().nullable().optional(),
31
+ }));
32
+ const history = z.array(z.object({
33
+ id: z.string(),
34
+ checksum: z.string(),
35
+ schemaVersion: z.number().int(),
36
+ appliedAt: z.string(),
37
+ }));
38
+ const error = z.object({
39
+ ok: z.literal(false),
40
+ code: z.string(),
41
+ error: z.string(),
42
+ });
43
+ const definitions = [
44
+ {
45
+ method: "get",
46
+ path: "/",
47
+ summary: "List accessible databases",
48
+ result: z.array(resource),
49
+ },
50
+ {
51
+ method: "post",
52
+ path: "/",
53
+ summary: "Create a database and its tables",
54
+ body: CreateDataSchema,
55
+ result: resource,
56
+ status: 201,
57
+ },
58
+ {
59
+ method: "get",
60
+ path: "/{resource}",
61
+ summary: "Describe a database",
62
+ result: resource,
63
+ },
64
+ {
65
+ method: "patch",
66
+ path: "/{resource}",
67
+ summary: "Rename a database",
68
+ body: RenameDataSchema,
69
+ result: resource,
70
+ },
71
+ {
72
+ method: "put",
73
+ path: "/{resource}/schema",
74
+ summary: "Apply an additive table schema migration",
75
+ body: MigrateDataSchema,
76
+ result: resource,
77
+ },
78
+ {
79
+ method: "delete",
80
+ path: "/{resource}",
81
+ summary: "Delete a database and its records",
82
+ result: z.object({ deleted: z.literal(true) }),
83
+ query: z.object({ expectedVersion: z.string().regex(/^[1-9][0-9]*$/) }),
84
+ },
85
+ {
86
+ method: "post",
87
+ path: "/{resource}/transactions",
88
+ summary: "Run an atomic batch of structured record operations",
89
+ body: DataBatchSchema,
90
+ result: batchResult,
91
+ },
92
+ {
93
+ method: "post",
94
+ path: "/{resource}/query",
95
+ summary: "Run a scoped SQL query or mutation",
96
+ body: DataQuerySchema,
97
+ result: queryResult,
98
+ },
99
+ {
100
+ method: "get",
101
+ path: "/{resource}/migrations",
102
+ summary: "List applied SQL migrations (manage grant)",
103
+ result: history,
104
+ },
105
+ {
106
+ method: "post",
107
+ path: "/{resource}/migrations",
108
+ summary: "Apply an atomic SQL migration (manage grant)",
109
+ body: DataSqlMigrationSchema,
110
+ result: resource,
111
+ },
112
+ ];
113
+ for (const definition of definitions)
114
+ app.openAPIRegistry.registerPath({
115
+ method: definition.method,
116
+ path: definition.path,
117
+ tags: ["Databases"],
118
+ summary: definition.summary,
119
+ description: "Requires host authentication and current database grants. Names and stable UUIDs are accepted as resource references. SQL availability and dialect depend on the provider; the PostgreSQL adapter supports a bounded subset, not arbitrary server SQL.",
120
+ request: {
121
+ ...(definition.path.includes("{resource}")
122
+ ? { params: z.object({ resource: z.string().min(1).max(128) }) }
123
+ : {}),
124
+ ...("body" in definition
125
+ ? {
126
+ body: {
127
+ required: true,
128
+ content: { "application/json": { schema: definition.body } },
129
+ },
130
+ }
131
+ : {}),
132
+ ...("query" in definition ? { query: definition.query } : {}),
133
+ },
134
+ responses: {
135
+ ["status" in definition ? definition.status : 200]: {
136
+ description: "Success",
137
+ content: {
138
+ "application/json": {
139
+ schema: z.object({
140
+ ok: z.literal(true),
141
+ data: definition.result,
142
+ }),
143
+ },
144
+ },
145
+ },
146
+ ...Object.fromEntries([400, 401, 403, 404, 409, 413, 422, 503].map((status) => [
147
+ status,
148
+ {
149
+ description: "Invalid, denied, conflicting, bounded or unavailable request",
150
+ content: { "application/json": { schema: error } },
151
+ },
152
+ ])),
153
+ },
154
+ });
155
+ }
156
+ //# sourceMappingURL=data-openapi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-openapi.js","sourceRoot":"","sources":["../../src/routes/data-openapi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { OpenAPIHono } from "@hono/zod-openapi";
2
+ import { type DataService } from "@polpo-ai/core/data";
3
+ export type DataServiceResolver = (request: Request) => DataService | Promise<DataService>;
4
+ /** The host authenticates requests and resolves grants afresh before each operation. */
5
+ export declare function dataRoutes(resolve: DataServiceResolver): OpenAPIHono;
6
+ //# sourceMappingURL=data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/routes/data.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlE,MAAM,MAAM,mBAAmB,GAAG,CAChC,OAAO,EAAE,OAAO,KACb,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AACxC,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,OAAO,EAAE,mBAAmB,GAAG,WAAW,CA+HpE"}
@@ -0,0 +1,102 @@
1
+ import { OpenAPIHono } from "@hono/zod-openapi";
2
+ import { bodyLimit } from "hono/body-limit";
3
+ import { DataError } from "@polpo-ai/core/data";
4
+ import { registerDataOpenApi } from "./data-openapi.js";
5
+ /** The host authenticates requests and resolves grants afresh before each operation. */
6
+ export function dataRoutes(resolve) {
7
+ const app = new OpenAPIHono();
8
+ registerDataOpenApi(app);
9
+ app.use("*", bodyLimit({
10
+ maxSize: 262144,
11
+ onError: (c) => c.json({
12
+ ok: false,
13
+ code: "data_limit",
14
+ error: "Data request exceeds 256 KiB",
15
+ }, 413),
16
+ }));
17
+ app.onError((error, c) => {
18
+ const known = error instanceof DataError;
19
+ const code = known ? error.code : "data_unavailable";
20
+ const statuses = {
21
+ data_invalid: 400,
22
+ data_forbidden: 403,
23
+ data_not_found: 404,
24
+ data_conflict: 409,
25
+ data_constraint: 422,
26
+ data_limit: 413,
27
+ data_unavailable: 503,
28
+ };
29
+ return c.json({
30
+ ok: false,
31
+ code,
32
+ error: known ? error.message : "Data service unavailable",
33
+ }, statuses[code]);
34
+ });
35
+ const body = async (c) => {
36
+ try {
37
+ return await c.req.json();
38
+ }
39
+ catch (error) {
40
+ if (error instanceof Error && error.name === "BodyLimitError")
41
+ throw error;
42
+ throw new DataError("data_invalid", "Expected a JSON request body");
43
+ }
44
+ };
45
+ app.get("/", async (c) => c.json({ ok: true, data: await (await resolve(c.req.raw)).list() }));
46
+ app.post("/", async (c) => {
47
+ const input = await body(c);
48
+ return c.json({ ok: true, data: await (await resolve(c.req.raw)).create(input) }, 201);
49
+ });
50
+ app.get("/:resource", async (c) => c.json({
51
+ ok: true,
52
+ data: await (await resolve(c.req.raw)).describe(c.req.param("resource")),
53
+ }));
54
+ app.patch("/:resource", async (c) => {
55
+ const input = await body(c);
56
+ return c.json({
57
+ ok: true,
58
+ data: await (await resolve(c.req.raw)).rename(c.req.param("resource"), input),
59
+ });
60
+ });
61
+ app.put("/:resource/schema", async (c) => {
62
+ const input = await body(c);
63
+ return c.json({
64
+ ok: true,
65
+ data: await (await resolve(c.req.raw)).migrate(c.req.param("resource"), input),
66
+ });
67
+ });
68
+ app.delete("/:resource", async (c) => {
69
+ const version = c.req.query("expectedVersion");
70
+ if (!version || !/^[1-9][0-9]*$/.test(version))
71
+ throw new DataError("data_invalid", "expectedVersion is required");
72
+ await (await resolve(c.req.raw)).remove(c.req.param("resource"), Number(version));
73
+ return c.json({ ok: true, data: { deleted: true } });
74
+ });
75
+ app.post("/:resource/transactions", async (c) => {
76
+ const input = await body(c);
77
+ return c.json({
78
+ ok: true,
79
+ data: await (await resolve(c.req.raw)).execute(c.req.param("resource"), input),
80
+ });
81
+ });
82
+ app.post("/:resource/query", async (c) => {
83
+ const input = await body(c);
84
+ return c.json({
85
+ ok: true,
86
+ data: await (await resolve(c.req.raw)).query(c.req.param("resource"), input),
87
+ });
88
+ });
89
+ app.get("/:resource/migrations", async (c) => c.json({
90
+ ok: true,
91
+ data: await (await resolve(c.req.raw)).migrations(c.req.param("resource")),
92
+ }));
93
+ app.post("/:resource/migrations", async (c) => {
94
+ const input = await body(c);
95
+ return c.json({
96
+ ok: true,
97
+ data: await (await resolve(c.req.raw)).migrateSql(c.req.param("resource"), input),
98
+ });
99
+ });
100
+ return app;
101
+ }
102
+ //# sourceMappingURL=data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/routes/data.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.test.d.ts","sourceRoot":"","sources":["../../src/routes/data.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,51 @@
1
+ import { describe, expect, it, vi } from "vitest";
2
+ import { DataError } from "@polpo-ai/core/data";
3
+ import { dataRoutes } from "./data.js";
4
+ describe("Data HTTP boundary", () => {
5
+ it("requires an authenticated host resolver and sanitizes unexpected errors", async () => {
6
+ const app = dataRoutes(async () => {
7
+ throw new Error("postgres://secret@private");
8
+ });
9
+ const response = await app.request("/");
10
+ expect(response.status).toBe(503);
11
+ expect(await response.text()).not.toContain("secret");
12
+ });
13
+ it("preserves scoped denial without invoking another service operation", async () => {
14
+ const execute = vi
15
+ .fn()
16
+ .mockRejectedValue(new DataError("data_forbidden", "Data access is not granted"));
17
+ const app = dataRoutes(async () => ({ execute }));
18
+ const response = await app.request("/crm/transactions", {
19
+ method: "POST",
20
+ body: JSON.stringify({
21
+ operations: [{ op: "list", table: "customers" }],
22
+ }),
23
+ headers: { "Content-Type": "application/json" },
24
+ });
25
+ expect(response.status).toBe(403);
26
+ expect(await response.json()).toMatchObject({
27
+ ok: false,
28
+ code: "data_forbidden",
29
+ });
30
+ });
31
+ it("rejects malformed and oversized JSON before service resolution", async () => {
32
+ const resolve = vi.fn();
33
+ const app = dataRoutes(resolve);
34
+ const malformed = await app.request("/", { method: "POST", body: "{" });
35
+ expect(malformed.status).toBe(400);
36
+ const oversized = await app.request("/", {
37
+ method: "POST",
38
+ body: "x".repeat(262145),
39
+ });
40
+ expect(oversized.status).toBe(413);
41
+ expect(resolve).not.toHaveBeenCalled();
42
+ });
43
+ it("uses the canonical success envelope", async () => {
44
+ const app = dataRoutes(async () => ({ list: async () => [] }));
45
+ expect(await (await app.request("/")).json()).toEqual({
46
+ ok: true,
47
+ data: [],
48
+ });
49
+ });
50
+ });
51
+ //# sourceMappingURL=data.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.test.js","sourceRoot":"","sources":["../../src/routes/data.test.ts"],"names":[],"mappings":"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"}
package/dist/schemas.d.ts CHANGED
@@ -73,9 +73,9 @@ export declare const CreateTaskSchema: z.ZodObject<{
73
73
  expectedOutcomes: z.ZodOptional<z.ZodArray<z.ZodObject<{
74
74
  type: z.ZodEnum<{
75
75
  file: "file";
76
+ json: "json";
76
77
  text: "text";
77
78
  url: "url";
78
- json: "json";
79
79
  media: "media";
80
80
  }>;
81
81
  label: z.ZodString;
@@ -110,9 +110,9 @@ export declare const CreateTaskSchema: z.ZodObject<{
110
110
  includeOutcomes: z.ZodOptional<z.ZodBoolean>;
111
111
  outcomeFilter: z.ZodOptional<z.ZodArray<z.ZodEnum<{
112
112
  file: "file";
113
+ json: "json";
113
114
  text: "text";
114
115
  url: "url";
115
- json: "json";
116
116
  media: "media";
117
117
  }>>>;
118
118
  maxAttachmentSize: z.ZodOptional<z.ZodNumber>;
@@ -205,9 +205,9 @@ export declare const CreateMissionSchema: z.ZodObject<{
205
205
  includeOutcomes: z.ZodOptional<z.ZodBoolean>;
206
206
  outcomeFilter: z.ZodOptional<z.ZodArray<z.ZodEnum<{
207
207
  file: "file";
208
+ json: "json";
208
209
  text: "text";
209
210
  url: "url";
210
- json: "json";
211
211
  media: "media";
212
212
  }>>>;
213
213
  maxAttachmentSize: z.ZodOptional<z.ZodNumber>;
@@ -364,9 +364,9 @@ export declare const UpdateMissionNotificationsSchema: z.ZodObject<{
364
364
  includeOutcomes: z.ZodOptional<z.ZodBoolean>;
365
365
  outcomeFilter: z.ZodOptional<z.ZodArray<z.ZodEnum<{
366
366
  file: "file";
367
+ json: "json";
367
368
  text: "text";
368
369
  url: "url";
369
- json: "json";
370
370
  media: "media";
371
371
  }>>>;
372
372
  maxAttachmentSize: z.ZodOptional<z.ZodNumber>;
@@ -495,10 +495,10 @@ export declare const AddAgentSchema: z.ZodIntersection<z.ZodObject<{
495
495
  "invocation-user": "invocation-user";
496
496
  }>>;
497
497
  writableKinds: z.ZodOptional<z.ZodArray<z.ZodEnum<{
498
+ style: "style";
498
499
  fact: "fact";
499
500
  preference: "preference";
500
501
  open_thread: "open_thread";
501
- style: "style";
502
502
  failure_pattern: "failure_pattern";
503
503
  successful_episode: "successful_episode";
504
504
  procedure_hint: "procedure_hint";
@@ -515,10 +515,10 @@ export declare const AddAgentSchema: z.ZodIntersection<z.ZodObject<{
515
515
  chat: "chat";
516
516
  }>>>;
517
517
  kinds: z.ZodOptional<z.ZodArray<z.ZodEnum<{
518
+ style: "style";
518
519
  fact: "fact";
519
520
  preference: "preference";
520
521
  open_thread: "open_thread";
521
- style: "style";
522
522
  failure_pattern: "failure_pattern";
523
523
  successful_episode: "successful_episode";
524
524
  procedure_hint: "procedure_hint";
@@ -599,10 +599,10 @@ export declare const AddAgentSchema: z.ZodIntersection<z.ZodObject<{
599
599
  webhook: "webhook";
600
600
  }>>>;
601
601
  sources: z.ZodOptional<z.ZodArray<z.ZodEnum<{
602
+ request: "request";
602
603
  schedule: "schedule";
603
604
  task: "task";
604
605
  channel: "channel";
605
- request: "request";
606
606
  "loop-step": "loop-step";
607
607
  internal: "internal";
608
608
  }>>>;
@@ -622,10 +622,10 @@ export declare const AddAgentSchema: z.ZodIntersection<z.ZodObject<{
622
622
  webhook: "webhook";
623
623
  }>>>;
624
624
  sources: z.ZodOptional<z.ZodArray<z.ZodEnum<{
625
+ request: "request";
625
626
  schedule: "schedule";
626
627
  task: "task";
627
628
  channel: "channel";
628
- request: "request";
629
629
  "loop-step": "loop-step";
630
630
  internal: "internal";
631
631
  }>>>;
@@ -727,10 +727,10 @@ export declare const UpdateAgentSchema: z.ZodIntersection<z.ZodObject<{
727
727
  "invocation-user": "invocation-user";
728
728
  }>>;
729
729
  writableKinds: z.ZodOptional<z.ZodArray<z.ZodEnum<{
730
+ style: "style";
730
731
  fact: "fact";
731
732
  preference: "preference";
732
733
  open_thread: "open_thread";
733
- style: "style";
734
734
  failure_pattern: "failure_pattern";
735
735
  successful_episode: "successful_episode";
736
736
  procedure_hint: "procedure_hint";
@@ -747,10 +747,10 @@ export declare const UpdateAgentSchema: z.ZodIntersection<z.ZodObject<{
747
747
  chat: "chat";
748
748
  }>>>;
749
749
  kinds: z.ZodOptional<z.ZodArray<z.ZodEnum<{
750
+ style: "style";
750
751
  fact: "fact";
751
752
  preference: "preference";
752
753
  open_thread: "open_thread";
753
- style: "style";
754
754
  failure_pattern: "failure_pattern";
755
755
  successful_episode: "successful_episode";
756
756
  procedure_hint: "procedure_hint";
@@ -831,10 +831,10 @@ export declare const UpdateAgentSchema: z.ZodIntersection<z.ZodObject<{
831
831
  webhook: "webhook";
832
832
  }>>>;
833
833
  sources: z.ZodOptional<z.ZodArray<z.ZodEnum<{
834
+ request: "request";
834
835
  schedule: "schedule";
835
836
  task: "task";
836
837
  channel: "channel";
837
- request: "request";
838
838
  "loop-step": "loop-step";
839
839
  internal: "internal";
840
840
  }>>>;
@@ -854,10 +854,10 @@ export declare const UpdateAgentSchema: z.ZodIntersection<z.ZodObject<{
854
854
  webhook: "webhook";
855
855
  }>>>;
856
856
  sources: z.ZodOptional<z.ZodArray<z.ZodEnum<{
857
+ request: "request";
857
858
  schedule: "schedule";
858
859
  task: "task";
859
860
  channel: "channel";
860
- request: "request";
861
861
  "loop-step": "loop-step";
862
862
  internal: "internal";
863
863
  }>>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polpo-ai/server",
3
- "version": "0.15.143",
3
+ "version": "0.15.144",
4
4
  "description": "Polpo API route factories — edge-compatible Hono routes for tasks, agents, missions, vault, and more",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -20,12 +20,12 @@
20
20
  "hono": ">=4.0.0",
21
21
  "nanoid": ">=5.0.0",
22
22
  "typescript": "^5.7.3",
23
- "@polpo-ai/connect": "0.15.143",
24
- "@polpo-ai/channels": "0.15.143",
25
- "@polpo-ai/core": "0.15.143",
26
- "@polpo-ai/connect-server": "0.15.143",
27
- "@polpo-ai/llm": "0.15.143",
28
- "@polpo-ai/tools": "0.15.143"
23
+ "@polpo-ai/connect": "0.15.144",
24
+ "@polpo-ai/channels": "0.15.144",
25
+ "@polpo-ai/core": "0.15.144",
26
+ "@polpo-ai/llm": "0.15.144",
27
+ "@polpo-ai/tools": "0.15.144",
28
+ "@polpo-ai/connect-server": "0.15.144"
29
29
  },
30
30
  "peerDependencies": {
31
31
  "ai": ">=6.0.182 <7",