@polpo-ai/server 0.15.47 → 0.15.49

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
@@ -18,6 +18,7 @@ export { ScheduleService, ScheduleServiceError, type ManualScheduleTriggerInput,
18
18
  export { legacyMissionScheduleId, migrateLegacyMissionSchedules, type LegacyMissionMigrationCode, type LegacyMissionMigrationItem, type LegacyMissionMigrationOptions, type LegacyMissionMigrationResult, type LegacyMissionMigrationStatus, type LegacyMissionScheduleRecord, } from "./services/schedules-migration.js";
19
19
  export { watcherRoutes } from "./routes/watchers.js";
20
20
  export { stateRoutes } from "./routes/state.js";
21
+ export { brainRoutes, type BrainRouteDeps, } from "./routes/brain.js";
21
22
  export { healthRoutes } from "./routes/health.js";
22
23
  export { completionRoutes, resumeProjectLoopRun, buildChatRunInjection, prepareChatCompletionExecution, runConversationTurn, runChatTurnViaRun, type ConversationTurnResult, type ChatViaRunTurnResult, type PreparedConversationTurn, type CompletionRouteDeps, type CompletionRuntimeInvocation, type CompletionRuntimePlanInput, } from "./routes/completions.js";
23
24
  export { agentRoutes } from "./routes/agents.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
@@ -19,6 +19,7 @@ export { ScheduleService, ScheduleServiceError, } from "./services/schedules.js"
19
19
  export { legacyMissionScheduleId, migrateLegacyMissionSchedules, } from "./services/schedules-migration.js";
20
20
  export { watcherRoutes } from "./routes/watchers.js";
21
21
  export { stateRoutes } from "./routes/state.js";
22
+ export { brainRoutes, } from "./routes/brain.js";
22
23
  export { healthRoutes } from "./routes/health.js";
23
24
  export { completionRoutes, resumeProjectLoopRun, buildChatRunInjection, prepareChatCompletionExecution, runConversationTurn, runChatTurnViaRun, } from "./routes/completions.js";
24
25
  export { agentRoutes } from "./routes/agents.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,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,8BAA8B,EAC9B,mBAAmB,EACnB,iBAAiB,GAOlB,MAAM,yBAAyB,CAAC;AACjC,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,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,EACL,gBAAgB,GAMjB,MAAM,0BAA0B,CAAC;AAmBlC,uEAAuE;AACvE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAC;AAC1I,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,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,GAOlB,MAAM,yBAAyB,CAAC;AACjC,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,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,EACL,gBAAgB,GAMjB,MAAM,0BAA0B,CAAC;AAmBlC,uEAAuE;AACvE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAC;AAC1I,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAEhF,mDAAmD;AACnD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { OpenAPIHono } from "@hono/zod-openapi";
2
+ import type { Context } from "hono";
3
+ import { type BrainManagementService, type BrainServiceContext } from "@polpo-ai/core/brain";
4
+ export interface BrainRouteDeps {
5
+ readonly service: BrainManagementService;
6
+ readonly context: BrainServiceContext;
7
+ }
8
+ type BrainRouteDepsResolver = (context: Context) => BrainRouteDeps | Promise<BrainRouteDeps>;
9
+ export declare function brainRoutes(resolveDeps: BrainRouteDepsResolver): OpenAPIHono;
10
+ export {};
11
+ //# sourceMappingURL=brain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brain.d.ts","sourceRoot":"","sources":["../../src/routes/brain.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAGZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAUL,KAAK,sBAAsB,EAE3B,KAAK,mBAAmB,EACzB,MAAM,sBAAsB,CAAC;AA6N9B,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;CACvC;AAED,KAAK,sBAAsB,GAAG,CAC5B,OAAO,EAAE,OAAO,KACb,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAsH9C,wBAAgB,WAAW,CACzB,WAAW,EAAE,sBAAsB,GAClC,WAAW,CA6Lb"}
@@ -0,0 +1,442 @@
1
+ import { OpenAPIHono, createRoute, z, } from "@hono/zod-openapi";
2
+ import { BRAIN_SOURCE_STATUSES, BRAIN_SOURCE_TYPES, BRAIN_TRUST_LEVELS, BrainContractError, BrainIngestionError, BrainStoreAuthorizationError, BrainStoreConflictError, BrainStoreValidationError, normalizeBrainScope, } from "@polpo-ai/core/brain";
3
+ const ScopeSchema = z.object({
4
+ kind: z.enum(["org", "project"]),
5
+ subjectId: z.string().trim().min(1).max(512),
6
+ }).strict();
7
+ const PasteContentSchema = z.object({
8
+ kind: z.literal("paste"),
9
+ text: z.string().min(1),
10
+ contentType: z.string().trim().min(1).max(256).optional(),
11
+ }).strict();
12
+ const FileContentSchema = z.object({
13
+ kind: z.literal("file"),
14
+ path: z.string().trim().min(1).max(8_192),
15
+ }).strict();
16
+ const UrlContentSchema = z.object({
17
+ kind: z.literal("url"),
18
+ url: z.string().trim().min(1).max(8_192),
19
+ }).strict();
20
+ const ConnectionContentSchema = z.object({
21
+ kind: z.literal("connection"),
22
+ connectionId: z.string().trim().min(1).max(512),
23
+ locator: z.string().trim().min(1).max(8_192).optional(),
24
+ }).strict();
25
+ const ContentSchema = z.discriminatedUnion("kind", [
26
+ PasteContentSchema,
27
+ FileContentSchema,
28
+ UrlContentSchema,
29
+ ConnectionContentSchema,
30
+ ]);
31
+ const CreateSourceSchema = z.object({
32
+ scope: ScopeSchema.optional(),
33
+ id: z.string().trim().min(1).max(512).optional(),
34
+ label: z.string().trim().min(1).max(512),
35
+ trust: z.enum(BRAIN_TRUST_LEVELS),
36
+ metadata: z.record(z.string(), z.unknown()).optional(),
37
+ content: ContentSchema,
38
+ }).strict();
39
+ const UpdateSourceSchema = z.object({
40
+ label: z.string().trim().min(1).max(512).optional(),
41
+ trust: z.enum(BRAIN_TRUST_LEVELS).optional(),
42
+ metadata: z.record(z.string(), z.unknown()).optional(),
43
+ }).strict().refine((value) => Object.keys(value).length > 0, "At least one source field is required");
44
+ const ReindexSourceSchema = z.object({
45
+ content: ContentSchema,
46
+ }).strict();
47
+ const SearchSchema = z.object({
48
+ query: z.string().trim().min(1).max(16_384),
49
+ scopes: z.array(ScopeSchema).min(1).max(100).optional(),
50
+ limit: z.number().int().min(1).max(1_000).optional(),
51
+ tokenBudget: z.number().int().min(0).max(1_000_000).optional(),
52
+ }).strict();
53
+ const SourceParamsSchema = z.object({
54
+ sourceId: z.string().trim().min(1).max(512),
55
+ });
56
+ const ScopeQuerySchema = z.object({
57
+ scopeKind: z.enum(["org", "project"]).optional(),
58
+ scopeId: z.string().trim().min(1).max(512).optional(),
59
+ }).strict();
60
+ const ListQuerySchema = ScopeQuerySchema.extend({
61
+ status: z.string().trim().min(1).optional(),
62
+ type: z.string().trim().min(1).optional(),
63
+ limit: z.coerce.number().int().min(1).max(1_000).optional(),
64
+ cursor: z.string().trim().min(1).max(8_192).optional(),
65
+ });
66
+ const ReadSourceQuerySchema = ScopeQuerySchema.extend({
67
+ version: z.string().trim().min(1).max(512).optional(),
68
+ offset: z.coerce.number().int().min(0).max(1_000_000).optional(),
69
+ limit: z.coerce.number().int().min(1).max(100).optional(),
70
+ tokenBudget: z.coerce.number().int().min(1).max(100_000).optional(),
71
+ });
72
+ const SuccessSchema = z.object({
73
+ ok: z.literal(true),
74
+ data: z.any(),
75
+ });
76
+ const ErrorSchema = z.object({
77
+ ok: z.literal(false),
78
+ error: z.string(),
79
+ code: z.string(),
80
+ });
81
+ function responses(successStatus) {
82
+ return {
83
+ [successStatus]: {
84
+ content: { "application/json": { schema: SuccessSchema } },
85
+ description: "Success",
86
+ },
87
+ 400: {
88
+ content: { "application/json": { schema: ErrorSchema } },
89
+ description: "Invalid request",
90
+ },
91
+ 403: {
92
+ content: { "application/json": { schema: ErrorSchema } },
93
+ description: "Forbidden",
94
+ },
95
+ 404: {
96
+ content: { "application/json": { schema: ErrorSchema } },
97
+ description: "Not found",
98
+ },
99
+ 409: {
100
+ content: { "application/json": { schema: ErrorSchema } },
101
+ description: "Conflict",
102
+ },
103
+ };
104
+ }
105
+ const listRoute = createRoute({
106
+ method: "get",
107
+ path: "/sources",
108
+ tags: ["Brain"],
109
+ summary: "List Brain sources",
110
+ request: { query: ListQuerySchema },
111
+ responses: responses(200),
112
+ });
113
+ const createRouteDefinition = createRoute({
114
+ method: "post",
115
+ path: "/sources",
116
+ tags: ["Brain"],
117
+ summary: "Create and ingest a Brain source",
118
+ request: {
119
+ body: {
120
+ content: { "application/json": { schema: CreateSourceSchema } },
121
+ },
122
+ },
123
+ responses: responses(201),
124
+ });
125
+ const getRoute = createRoute({
126
+ method: "get",
127
+ path: "/sources/{sourceId}",
128
+ tags: ["Brain"],
129
+ summary: "Get a Brain source",
130
+ request: {
131
+ params: SourceParamsSchema,
132
+ query: ScopeQuerySchema,
133
+ },
134
+ responses: responses(200),
135
+ });
136
+ const updateRoute = createRoute({
137
+ method: "patch",
138
+ path: "/sources/{sourceId}",
139
+ tags: ["Brain"],
140
+ summary: "Update Brain source metadata",
141
+ request: {
142
+ params: SourceParamsSchema,
143
+ query: ScopeQuerySchema,
144
+ body: {
145
+ content: { "application/json": { schema: UpdateSourceSchema } },
146
+ },
147
+ },
148
+ responses: responses(200),
149
+ });
150
+ const deleteRoute = createRoute({
151
+ method: "delete",
152
+ path: "/sources/{sourceId}",
153
+ tags: ["Brain"],
154
+ summary: "Delete a Brain source",
155
+ request: {
156
+ params: SourceParamsSchema,
157
+ query: ScopeQuerySchema,
158
+ },
159
+ responses: responses(200),
160
+ });
161
+ const reindexRoute = createRoute({
162
+ method: "post",
163
+ path: "/sources/{sourceId}/reindex",
164
+ tags: ["Brain"],
165
+ summary: "Build and publish a new Brain source version",
166
+ request: {
167
+ params: SourceParamsSchema,
168
+ query: ScopeQuerySchema,
169
+ body: {
170
+ content: { "application/json": { schema: ReindexSourceSchema } },
171
+ },
172
+ },
173
+ responses: responses(202),
174
+ });
175
+ const listVersionsRoute = createRoute({
176
+ method: "get",
177
+ path: "/sources/{sourceId}/versions",
178
+ tags: ["Brain"],
179
+ summary: "List Brain source versions",
180
+ request: {
181
+ params: SourceParamsSchema,
182
+ query: ScopeQuerySchema,
183
+ },
184
+ responses: responses(200),
185
+ });
186
+ const readSourceRoute = createRoute({
187
+ method: "get",
188
+ path: "/sources/{sourceId}/read",
189
+ tags: ["Brain"],
190
+ summary: "Read bounded chunks from a Brain source",
191
+ request: {
192
+ params: SourceParamsSchema,
193
+ query: ReadSourceQuerySchema,
194
+ },
195
+ responses: responses(200),
196
+ });
197
+ const searchRoute = createRoute({
198
+ method: "post",
199
+ path: "/search",
200
+ tags: ["Brain"],
201
+ summary: "Search granted Brain sources",
202
+ request: {
203
+ body: {
204
+ content: { "application/json": { schema: SearchSchema } },
205
+ },
206
+ },
207
+ responses: responses(200),
208
+ });
209
+ const publicInputCodes = new Set([
210
+ "content_too_large",
211
+ "empty_content",
212
+ "fetch_failed",
213
+ "file_outside_root",
214
+ "too_many_redirects",
215
+ "unsafe_url",
216
+ "unsupported_file",
217
+ "unsupported_mime",
218
+ ]);
219
+ function errorResponse(c, error) {
220
+ if (error instanceof BrainStoreAuthorizationError
221
+ || (error instanceof BrainIngestionError
222
+ && error.code === "access_denied")) {
223
+ return c.json({
224
+ ok: false,
225
+ error: "Brain access denied",
226
+ code: "forbidden",
227
+ }, 403);
228
+ }
229
+ if (error instanceof BrainIngestionError
230
+ && (error.code === "source_not_found"
231
+ || error.code === "version_not_found")) {
232
+ return c.json({
233
+ ok: false,
234
+ error: "Brain source not found",
235
+ code: "not_found",
236
+ }, 404);
237
+ }
238
+ if (error instanceof BrainStoreConflictError) {
239
+ return c.json({
240
+ ok: false,
241
+ error: "Brain source changed; retry the request",
242
+ code: "conflict",
243
+ }, 409);
244
+ }
245
+ if (error instanceof BrainContractError
246
+ || error instanceof BrainStoreValidationError
247
+ || (error instanceof BrainIngestionError
248
+ && error.code !== "ingestion_failed")
249
+ || (error
250
+ && typeof error === "object"
251
+ && "code" in error
252
+ && publicInputCodes.has(String(error.code)))) {
253
+ return c.json({
254
+ ok: false,
255
+ error: "Invalid Brain request",
256
+ code: "invalid_request",
257
+ }, 400);
258
+ }
259
+ throw error;
260
+ }
261
+ function parseList(value, allowed, label) {
262
+ if (!value)
263
+ return undefined;
264
+ const values = [...new Set(value.split(",").map((item) => item.trim()))];
265
+ if (values.some((item) => !allowed.includes(item))) {
266
+ throw new BrainStoreValidationError(`Unknown Brain ${label}`);
267
+ }
268
+ return values;
269
+ }
270
+ function explicitScope(input) {
271
+ if ((input.scopeKind === undefined) !== (input.scopeId === undefined)) {
272
+ throw new BrainStoreValidationError("scopeKind and scopeId must be provided together");
273
+ }
274
+ return input.scopeKind && input.scopeId
275
+ ? normalizeBrainScope({
276
+ kind: input.scopeKind,
277
+ subjectId: input.scopeId,
278
+ })
279
+ : undefined;
280
+ }
281
+ function inferredScope(context, mode, requested) {
282
+ if (requested)
283
+ return normalizeBrainScope(requested);
284
+ if (mode === "write" && context.defaultWriteScope) {
285
+ return normalizeBrainScope(context.defaultWriteScope);
286
+ }
287
+ const scopes = mode === "write" ? context.writeScopes : context.readScopes;
288
+ if (scopes.length !== 1) {
289
+ throw new BrainStoreValidationError(`An explicit Brain ${mode} scope is required`);
290
+ }
291
+ return normalizeBrainScope(scopes[0]);
292
+ }
293
+ export function brainRoutes(resolveDeps) {
294
+ const app = new OpenAPIHono();
295
+ app.openapi(listRoute, async (c) => {
296
+ try {
297
+ const { service, context } = await resolveDeps(c);
298
+ const query = c.req.valid("query");
299
+ const scope = explicitScope(query);
300
+ const statuses = parseList(query.status, BRAIN_SOURCE_STATUSES, "source status");
301
+ const types = parseList(query.type, BRAIN_SOURCE_TYPES, "source type");
302
+ const data = await service.listSources(context, {
303
+ ...(scope ? { scopes: [scope] } : {}),
304
+ ...(statuses ? { statuses } : {}),
305
+ ...(types ? { types } : {}),
306
+ ...(query.limit === undefined ? {} : { limit: query.limit }),
307
+ ...(query.cursor === undefined ? {} : { cursor: query.cursor }),
308
+ });
309
+ return c.json({ ok: true, data }, 200);
310
+ }
311
+ catch (error) {
312
+ return errorResponse(c, error);
313
+ }
314
+ });
315
+ app.openapi(createRouteDefinition, async (c) => {
316
+ try {
317
+ const { service, context } = await resolveDeps(c);
318
+ const body = c.req.valid("json");
319
+ const scope = inferredScope(context, "write", body.scope);
320
+ const data = await service.createSource(context, {
321
+ scope,
322
+ ...(body.id === undefined ? {} : { id: body.id }),
323
+ label: body.label,
324
+ trust: body.trust,
325
+ ...(body.metadata === undefined ? {} : { metadata: body.metadata }),
326
+ content: body.content,
327
+ });
328
+ return c.json({ ok: true, data }, 201);
329
+ }
330
+ catch (error) {
331
+ return errorResponse(c, error);
332
+ }
333
+ });
334
+ app.openapi(getRoute, async (c) => {
335
+ try {
336
+ const { service, context } = await resolveDeps(c);
337
+ const { sourceId } = c.req.valid("param");
338
+ const scope = inferredScope(context, "read", explicitScope(c.req.valid("query")));
339
+ const data = await service.getSource(context, { scope, sourceId });
340
+ if (!data) {
341
+ return c.json({
342
+ ok: false,
343
+ error: "Brain source not found",
344
+ code: "not_found",
345
+ }, 404);
346
+ }
347
+ return c.json({ ok: true, data }, 200);
348
+ }
349
+ catch (error) {
350
+ return errorResponse(c, error);
351
+ }
352
+ });
353
+ app.openapi(updateRoute, async (c) => {
354
+ try {
355
+ const { service, context } = await resolveDeps(c);
356
+ const { sourceId } = c.req.valid("param");
357
+ const scope = inferredScope(context, "write", explicitScope(c.req.valid("query")));
358
+ const body = c.req.valid("json");
359
+ const data = await service.updateSource(context, { scope, sourceId }, body);
360
+ return c.json({ ok: true, data }, 200);
361
+ }
362
+ catch (error) {
363
+ return errorResponse(c, error);
364
+ }
365
+ });
366
+ app.openapi(deleteRoute, async (c) => {
367
+ try {
368
+ const { service, context } = await resolveDeps(c);
369
+ const { sourceId } = c.req.valid("param");
370
+ const scope = inferredScope(context, "write", explicitScope(c.req.valid("query")));
371
+ await service.deleteSource(context, { scope, sourceId });
372
+ return c.json({
373
+ ok: true,
374
+ data: { deleted: true },
375
+ }, 200);
376
+ }
377
+ catch (error) {
378
+ return errorResponse(c, error);
379
+ }
380
+ });
381
+ app.openapi(reindexRoute, async (c) => {
382
+ try {
383
+ const { service, context } = await resolveDeps(c);
384
+ const { sourceId } = c.req.valid("param");
385
+ const scope = inferredScope(context, "write", explicitScope(c.req.valid("query")));
386
+ const body = c.req.valid("json");
387
+ const data = await service.reindexSource(context, { scope, sourceId }, body);
388
+ return c.json({ ok: true, data }, 202);
389
+ }
390
+ catch (error) {
391
+ return errorResponse(c, error);
392
+ }
393
+ });
394
+ app.openapi(listVersionsRoute, async (c) => {
395
+ try {
396
+ const { service, context } = await resolveDeps(c);
397
+ const { sourceId } = c.req.valid("param");
398
+ const scope = inferredScope(context, "read", explicitScope(c.req.valid("query")));
399
+ const data = await service.listVersions(context, { scope, sourceId });
400
+ return c.json({ ok: true, data }, 200);
401
+ }
402
+ catch (error) {
403
+ return errorResponse(c, error);
404
+ }
405
+ });
406
+ app.openapi(readSourceRoute, async (c) => {
407
+ try {
408
+ const { service, context } = await resolveDeps(c);
409
+ const { sourceId } = c.req.valid("param");
410
+ const query = c.req.valid("query");
411
+ const scope = inferredScope(context, "read", explicitScope(query));
412
+ const data = await service.readSource(context, {
413
+ ref: { scope, sourceId },
414
+ ...(query.version === undefined
415
+ ? {}
416
+ : { version: query.version }),
417
+ ...(query.offset === undefined ? {} : { offset: query.offset }),
418
+ ...(query.limit === undefined ? {} : { limit: query.limit }),
419
+ ...(query.tokenBudget === undefined
420
+ ? {}
421
+ : { tokenBudget: query.tokenBudget }),
422
+ });
423
+ return c.json({ ok: true, data }, 200);
424
+ }
425
+ catch (error) {
426
+ return errorResponse(c, error);
427
+ }
428
+ });
429
+ app.openapi(searchRoute, async (c) => {
430
+ try {
431
+ const { service, context } = await resolveDeps(c);
432
+ const body = c.req.valid("json");
433
+ const data = await service.search(context, body);
434
+ return c.json({ ok: true, data }, 200);
435
+ }
436
+ catch (error) {
437
+ return errorResponse(c, error);
438
+ }
439
+ });
440
+ return app;
441
+ }
442
+ //# sourceMappingURL=brain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brain.js","sourceRoot":"","sources":["../../src/routes/brain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=brain.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brain.test.d.ts","sourceRoot":"","sources":["../../src/routes/brain.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,303 @@
1
+ import { describe, expect, it, vi } from "vitest";
2
+ import { BrainIngestionError, BrainStoreAuthorizationError, BrainStoreConflictError, } from "@polpo-ai/core/brain";
3
+ import { brainRoutes } from "./brain.js";
4
+ const projectA = { kind: "project", subjectId: "project-a" };
5
+ const projectB = { kind: "project", subjectId: "project-b" };
6
+ const context = {
7
+ actor: {
8
+ actor: "user",
9
+ actorId: "user-1",
10
+ projectId: "project-a",
11
+ },
12
+ readScopes: [projectA],
13
+ writeScopes: [projectA],
14
+ defaultWriteScope: projectA,
15
+ };
16
+ const source = {
17
+ id: "source-1",
18
+ scope: projectA,
19
+ type: "paste",
20
+ label: "Runbook",
21
+ status: "indexed",
22
+ trust: "user_provided",
23
+ currentVersion: "v1",
24
+ metadata: {},
25
+ createdAt: "2026-07-28T12:00:00.000Z",
26
+ updatedAt: "2026-07-28T12:00:01.000Z",
27
+ };
28
+ const version = {
29
+ sourceId: source.id,
30
+ version: "v1",
31
+ status: "indexed",
32
+ contentType: "text/plain",
33
+ byteSize: 15,
34
+ contentHash: "a".repeat(64),
35
+ metadata: {},
36
+ createdAt: "2026-07-28T12:00:00.000Z",
37
+ updatedAt: "2026-07-28T12:00:01.000Z",
38
+ indexedAt: "2026-07-28T12:00:01.000Z",
39
+ };
40
+ function service() {
41
+ return {
42
+ listSources: vi.fn(async () => ({ sources: [source] })),
43
+ createSource: vi.fn(async () => source),
44
+ getSource: vi.fn(async () => source),
45
+ updateSource: vi.fn(async () => source),
46
+ deleteSource: vi.fn(async () => undefined),
47
+ reindexSource: vi.fn(async () => source),
48
+ listVersions: vi.fn(async () => [version]),
49
+ search: vi.fn(async () => []),
50
+ readSource: vi.fn(async () => ({
51
+ source,
52
+ version,
53
+ chunks: [{
54
+ id: "chunk-1",
55
+ sourceId: source.id,
56
+ version: version.version,
57
+ index: 0,
58
+ content: "Support policy.",
59
+ citation: {
60
+ sourceId: source.id,
61
+ version: version.version,
62
+ chunkId: "chunk-1",
63
+ label: source.label,
64
+ },
65
+ metadata: {},
66
+ }],
67
+ })),
68
+ };
69
+ }
70
+ function app(overrides = {}) {
71
+ const runtime = overrides.service ?? service();
72
+ return {
73
+ runtime,
74
+ app: brainRoutes(async () => ({
75
+ service: runtime,
76
+ context: overrides.context ?? context,
77
+ })),
78
+ };
79
+ }
80
+ describe("brainRoutes", () => {
81
+ it("lists sources using host scopes and bounded query filters", async () => {
82
+ const runtime = app();
83
+ const response = await runtime.app.request("/sources?status=indexed&type=paste&limit=25");
84
+ expect(response.status).toBe(200);
85
+ expect(await response.json()).toMatchObject({
86
+ ok: true,
87
+ data: { sources: [{ id: "source-1" }] },
88
+ });
89
+ expect(runtime.runtime.listSources).toHaveBeenCalledWith(context, {
90
+ statuses: ["indexed"],
91
+ types: ["paste"],
92
+ limit: 25,
93
+ });
94
+ });
95
+ it("creates a source in the default write scope without accepting model context", async () => {
96
+ const runtime = app();
97
+ const response = await runtime.app.request("/sources", {
98
+ method: "POST",
99
+ headers: { "content-type": "application/json" },
100
+ body: JSON.stringify({
101
+ label: "Runbook",
102
+ trust: "user_provided",
103
+ content: { kind: "paste", text: "Support policy." },
104
+ }),
105
+ });
106
+ expect(response.status).toBe(201);
107
+ expect(runtime.runtime.createSource).toHaveBeenCalledWith(context, {
108
+ scope: projectA,
109
+ label: "Runbook",
110
+ trust: "user_provided",
111
+ content: { kind: "paste", text: "Support policy." },
112
+ });
113
+ });
114
+ it("requires an explicit scope when the host grants multiple write scopes", async () => {
115
+ const runtime = app({
116
+ context: {
117
+ ...context,
118
+ readScopes: [projectA, projectB],
119
+ writeScopes: [projectA, projectB],
120
+ defaultWriteScope: undefined,
121
+ },
122
+ });
123
+ const response = await runtime.app.request("/sources", {
124
+ method: "POST",
125
+ headers: { "content-type": "application/json" },
126
+ body: JSON.stringify({
127
+ label: "Runbook",
128
+ trust: "user_provided",
129
+ content: { kind: "paste", text: "Support policy." },
130
+ }),
131
+ });
132
+ expect(response.status).toBe(400);
133
+ expect(await response.json()).toMatchObject({
134
+ ok: false,
135
+ code: "invalid_request",
136
+ });
137
+ expect(runtime.runtime.createSource).not.toHaveBeenCalled();
138
+ });
139
+ it("gets, updates, reindexes, and deletes by an exact inferred scope", async () => {
140
+ const runtime = app();
141
+ expect((await runtime.app.request("/sources/source-1")).status).toBe(200);
142
+ expect((await runtime.app.request("/sources/source-1", {
143
+ method: "PATCH",
144
+ headers: { "content-type": "application/json" },
145
+ body: JSON.stringify({ label: "Updated" }),
146
+ })).status).toBe(200);
147
+ expect((await runtime.app.request("/sources/source-1/reindex", {
148
+ method: "POST",
149
+ headers: { "content-type": "application/json" },
150
+ body: JSON.stringify({
151
+ content: { kind: "url", url: "https://example.com/runbook" },
152
+ }),
153
+ })).status).toBe(202);
154
+ expect((await runtime.app.request("/sources/source-1", {
155
+ method: "DELETE",
156
+ })).status).toBe(200);
157
+ const ref = { scope: projectA, sourceId: "source-1" };
158
+ expect(runtime.runtime.getSource).toHaveBeenCalledWith(context, ref);
159
+ expect(runtime.runtime.updateSource).toHaveBeenCalledWith(context, ref, { label: "Updated" });
160
+ expect(runtime.runtime.reindexSource).toHaveBeenCalledWith(context, ref, { content: { kind: "url", url: "https://example.com/runbook" } });
161
+ expect(runtime.runtime.deleteSource).toHaveBeenCalledWith(context, ref);
162
+ });
163
+ it("searches only the scopes resolved by the host", async () => {
164
+ const runtime = app();
165
+ const response = await runtime.app.request("/search", {
166
+ method: "POST",
167
+ headers: { "content-type": "application/json" },
168
+ body: JSON.stringify({
169
+ query: "refund policy",
170
+ limit: 4,
171
+ tokenBudget: 900,
172
+ }),
173
+ });
174
+ expect(response.status).toBe(200);
175
+ expect(runtime.runtime.search).toHaveBeenCalledWith(context, {
176
+ query: "refund policy",
177
+ limit: 4,
178
+ tokenBudget: 900,
179
+ });
180
+ });
181
+ it("lists versions and reads bounded source chunks in an exact scope", async () => {
182
+ const runtime = app();
183
+ const versions = await runtime.app.request("/sources/source-1/versions");
184
+ const read = await runtime.app.request("/sources/source-1/read?offset=2&limit=4&tokenBudget=900");
185
+ expect(versions.status).toBe(200);
186
+ expect(await versions.json()).toMatchObject({
187
+ ok: true,
188
+ data: [{ version: "v1", status: "indexed" }],
189
+ });
190
+ expect(read.status).toBe(200);
191
+ expect(await read.json()).toMatchObject({
192
+ ok: true,
193
+ data: {
194
+ source: { id: "source-1" },
195
+ chunks: [{ id: "chunk-1" }],
196
+ },
197
+ });
198
+ const ref = { scope: projectA, sourceId: "source-1" };
199
+ expect(runtime.runtime.listVersions).toHaveBeenCalledWith(context, ref);
200
+ expect(runtime.runtime.readSource).toHaveBeenCalledWith(context, {
201
+ ref,
202
+ offset: 2,
203
+ limit: 4,
204
+ tokenBudget: 900,
205
+ });
206
+ });
207
+ it("validates source inspection bounds before calling the service", async () => {
208
+ const runtime = app();
209
+ const responses = await Promise.all([
210
+ runtime.app.request("/sources/source-1/read?offset=-1"),
211
+ runtime.app.request("/sources/source-1/read?limit=0"),
212
+ runtime.app.request("/sources/source-1/read?limit=101"),
213
+ runtime.app.request("/sources/source-1/read?tokenBudget=0"),
214
+ runtime.app.request("/sources/source-1/read?unexpected=true"),
215
+ runtime.app.request("/sources/source-1/versions?scopeKind=project"),
216
+ ]);
217
+ for (const response of responses) {
218
+ expect(response.status).toBe(400);
219
+ }
220
+ expect(runtime.runtime.readSource).not.toHaveBeenCalled();
221
+ expect(runtime.runtime.listVersions).not.toHaveBeenCalled();
222
+ });
223
+ it("returns 404 without leaking whether an inaccessible source exists", async () => {
224
+ const runtime = service();
225
+ vi.mocked(runtime.getSource).mockResolvedValue(null);
226
+ const routes = app({ service: runtime });
227
+ const response = await routes.app.request("/sources/missing");
228
+ expect(response.status).toBe(404);
229
+ expect(await response.json()).toEqual({
230
+ ok: false,
231
+ error: "Brain source not found",
232
+ code: "not_found",
233
+ });
234
+ });
235
+ it.each([
236
+ [
237
+ new BrainStoreAuthorizationError("internal policy detail"),
238
+ 403,
239
+ "forbidden",
240
+ ],
241
+ [
242
+ new BrainIngestionError("internal source detail", "source_not_found"),
243
+ 404,
244
+ "not_found",
245
+ ],
246
+ [
247
+ new BrainStoreConflictError("internal version detail"),
248
+ 409,
249
+ "conflict",
250
+ ],
251
+ ])("maps domain failures without exposing internals", async (error, status, code) => {
252
+ const runtime = service();
253
+ vi.mocked(runtime.createSource).mockRejectedValue(error);
254
+ const routes = app({ service: runtime });
255
+ const response = await routes.app.request("/sources", {
256
+ method: "POST",
257
+ headers: { "content-type": "application/json" },
258
+ body: JSON.stringify({
259
+ label: "Runbook",
260
+ trust: "user_provided",
261
+ content: { kind: "paste", text: "Support policy." },
262
+ }),
263
+ });
264
+ const payload = await response.json();
265
+ expect(response.status).toBe(status);
266
+ expect(payload).toMatchObject({ ok: false, code });
267
+ expect(JSON.stringify(payload)).not.toContain("internal");
268
+ });
269
+ it("rejects malformed content, unknown fields, and invalid bounds", async () => {
270
+ const runtime = app();
271
+ const requests = [
272
+ runtime.app.request("/sources", {
273
+ method: "POST",
274
+ headers: { "content-type": "application/json" },
275
+ body: JSON.stringify({
276
+ label: "Runbook",
277
+ trust: "future",
278
+ content: { kind: "paste", text: "content" },
279
+ }),
280
+ }),
281
+ runtime.app.request("/sources", {
282
+ method: "POST",
283
+ headers: { "content-type": "application/json" },
284
+ body: JSON.stringify({
285
+ label: "Runbook",
286
+ trust: "trusted",
287
+ content: { kind: "paste", text: "content", secret: "no" },
288
+ }),
289
+ }),
290
+ runtime.app.request("/search", {
291
+ method: "POST",
292
+ headers: { "content-type": "application/json" },
293
+ body: JSON.stringify({ query: "x", limit: 0 }),
294
+ }),
295
+ ];
296
+ for (const response of await Promise.all(requests)) {
297
+ expect(response.status).toBe(400);
298
+ }
299
+ expect(runtime.runtime.createSource).not.toHaveBeenCalled();
300
+ expect(runtime.runtime.search).not.toHaveBeenCalled();
301
+ });
302
+ });
303
+ //# sourceMappingURL=brain.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brain.test.js","sourceRoot":"","sources":["../../src/routes/brain.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polpo-ai/server",
3
- "version": "0.15.47",
3
+ "version": "0.15.49",
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,11 +20,11 @@
20
20
  "hono": ">=4.0.0",
21
21
  "nanoid": ">=5.0.0",
22
22
  "typescript": "^5.7.3",
23
- "@polpo-ai/connect": "0.15.47",
24
- "@polpo-ai/connect-server": "0.15.47",
25
- "@polpo-ai/core": "0.15.47",
26
- "@polpo-ai/llm": "0.15.47",
27
- "@polpo-ai/tools": "0.15.47"
23
+ "@polpo-ai/connect": "0.15.49",
24
+ "@polpo-ai/connect-server": "0.15.49",
25
+ "@polpo-ai/core": "0.15.49",
26
+ "@polpo-ai/tools": "0.15.49",
27
+ "@polpo-ai/llm": "0.15.49"
28
28
  },
29
29
  "peerDependencies": {
30
30
  "ai": ">=6.0.0",