@polpo-ai/server 0.15.41 → 0.15.43

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 (40) hide show
  1. package/dist/deps.d.ts +12 -0
  2. package/dist/deps.d.ts.map +1 -1
  3. package/dist/index.d.ts +2 -1
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +1 -0
  6. package/dist/index.js.map +1 -1
  7. package/dist/routes/completions/agent-step-runner.d.ts +3 -2
  8. package/dist/routes/completions/agent-step-runner.d.ts.map +1 -1
  9. package/dist/routes/completions/agent-step-runner.js +29 -22
  10. package/dist/routes/completions/agent-step-runner.js.map +1 -1
  11. package/dist/routes/completions/chat-handler.d.ts +3 -1
  12. package/dist/routes/completions/chat-handler.d.ts.map +1 -1
  13. package/dist/routes/completions/chat-handler.js.map +1 -1
  14. package/dist/routes/completions/conversation-turn.d.ts +3 -1
  15. package/dist/routes/completions/conversation-turn.d.ts.map +1 -1
  16. package/dist/routes/completions/conversation-turn.js +42 -1
  17. package/dist/routes/completions/conversation-turn.js.map +1 -1
  18. package/dist/routes/completions/execution-router-runtime.test.js +74 -0
  19. package/dist/routes/completions/execution-router-runtime.test.js.map +1 -1
  20. package/dist/routes/completions/project-loop-runner.d.ts +11 -2
  21. package/dist/routes/completions/project-loop-runner.d.ts.map +1 -1
  22. package/dist/routes/completions/project-loop-runner.js +101 -3
  23. package/dist/routes/completions/project-loop-runner.js.map +1 -1
  24. package/dist/routes/completions/runtime-context-hook.test.d.ts +2 -0
  25. package/dist/routes/completions/runtime-context-hook.test.d.ts.map +1 -0
  26. package/dist/routes/completions/runtime-context-hook.test.js +250 -0
  27. package/dist/routes/completions/runtime-context-hook.test.js.map +1 -0
  28. package/dist/routes/completions.d.ts +9 -1
  29. package/dist/routes/completions.d.ts.map +1 -1
  30. package/dist/routes/completions.js +2 -0
  31. package/dist/routes/completions.js.map +1 -1
  32. package/dist/routes/memory-items.d.ts +9 -0
  33. package/dist/routes/memory-items.d.ts.map +1 -0
  34. package/dist/routes/memory-items.js +505 -0
  35. package/dist/routes/memory-items.js.map +1 -0
  36. package/dist/routes/memory-items.test.d.ts +2 -0
  37. package/dist/routes/memory-items.test.d.ts.map +1 -0
  38. package/dist/routes/memory-items.test.js +392 -0
  39. package/dist/routes/memory-items.test.js.map +1 -0
  40. package/package.json +6 -6
@@ -0,0 +1,392 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { InMemoryMemoryItemStore, MemoryAuthorizationError, } from "@polpo-ai/core";
3
+ import { memoryItemRoutes, } from "./memory-items.js";
4
+ const now = "2026-07-28T10:00:00.000Z";
5
+ function context(namespace = "project-a", externalUserId = "user-a") {
6
+ return {
7
+ namespace,
8
+ access: {
9
+ projectId: namespace,
10
+ agentName: "support",
11
+ externalUserId,
12
+ sessionId: "session-a",
13
+ },
14
+ surface: "api",
15
+ now,
16
+ };
17
+ }
18
+ function createApp(store = new InMemoryMemoryItemStore(), resolveContext = () => context(), overrides = {}) {
19
+ let nextId = 0;
20
+ return memoryItemRoutes(() => ({
21
+ memoryItemStore: store ?? undefined,
22
+ resolveMemoryContext: resolveContext,
23
+ createId: () => `memory-${++nextId}`,
24
+ createUsageId: () => `usage-${++nextId}`,
25
+ now: () => now,
26
+ ...overrides,
27
+ }));
28
+ }
29
+ function json(method, body) {
30
+ return {
31
+ method,
32
+ headers: { "content-type": "application/json" },
33
+ ...(body === undefined ? {} : { body: JSON.stringify(body) }),
34
+ };
35
+ }
36
+ function itemInput(overrides = {}) {
37
+ return {
38
+ scope: { kind: "user", subjectId: "user-a", agentName: "support" },
39
+ kind: "preference",
40
+ content: "Prefers concise weekly summaries.",
41
+ provenance: {
42
+ source: "explicit",
43
+ actor: "user",
44
+ sourceId: "request-a",
45
+ },
46
+ ...overrides,
47
+ };
48
+ }
49
+ async function createItem(app, overrides = {}) {
50
+ const response = await app.request("/agents/support/memory/items", json("POST", itemInput(overrides)));
51
+ return {
52
+ response,
53
+ body: await response.json(),
54
+ };
55
+ }
56
+ describe("memoryItemRoutes", () => {
57
+ it("returns opaque keyset cursors and traverses equal timestamps once", async () => {
58
+ const app = createApp();
59
+ for (const [id, content] of [
60
+ ["memory-c", "Third record."],
61
+ ["memory-a", "First record."],
62
+ ["memory-b", "Second record."],
63
+ ]) {
64
+ expect((await createItem(app, { id, content })).response.status).toBe(201);
65
+ }
66
+ const first = await app.request("/agents/support/memory/items?limit=2");
67
+ const firstBody = await first.json();
68
+ expect(first.status).toBe(200);
69
+ expect(firstBody.data.items.map((item) => item.id)).toEqual([
70
+ "memory-a",
71
+ "memory-b",
72
+ ]);
73
+ expect(firstBody.data.nextCursor).toEqual(expect.any(String));
74
+ expect(firstBody.data.nextCursor).not.toContain("memory-b");
75
+ const second = await app.request(`/agents/support/memory/items?limit=2&cursor=${encodeURIComponent(firstBody.data.nextCursor)}`);
76
+ const secondBody = await second.json();
77
+ expect(second.status).toBe(200);
78
+ expect(secondBody.data.items.map((item) => item.id)).toEqual([
79
+ "memory-c",
80
+ ]);
81
+ expect(secondBody.data.nextCursor).toBeNull();
82
+ });
83
+ it("rejects malformed, oversized, or cross-filter cursors", async () => {
84
+ const app = createApp();
85
+ await createItem(app, { id: "memory-a", content: "First record." });
86
+ await createItem(app, {
87
+ id: "memory-b",
88
+ kind: "instruction",
89
+ content: "Second record.",
90
+ });
91
+ await createItem(app, {
92
+ id: "memory-c",
93
+ content: "Third record.",
94
+ });
95
+ const first = await app.request("/agents/support/memory/items?kinds=preference&limit=1");
96
+ const cursor = (await first.json()).data.nextCursor;
97
+ expect(cursor).toEqual(expect.any(String));
98
+ for (const value of [
99
+ "not-a-cursor",
100
+ "m1.eyJ2IjoyfQ",
101
+ "x".repeat(4_097),
102
+ cursor,
103
+ ]) {
104
+ const suffix = value === cursor ? "&kinds=instruction" : "";
105
+ const response = await app.request(`/agents/support/memory/items?limit=1&cursor=${encodeURIComponent(value)}${suffix}`);
106
+ expect(response.status).toBe(400);
107
+ expect(await response.json()).toEqual({
108
+ ok: false,
109
+ error: "Invalid Memory request",
110
+ code: "INVALID_MEMORY_REQUEST",
111
+ });
112
+ }
113
+ });
114
+ it("preserves legacy stores and reports cursor capability explicitly", async () => {
115
+ const backing = new InMemoryMemoryItemStore();
116
+ const legacy = new Proxy(backing, {
117
+ get(target, property) {
118
+ if (property === "listPage")
119
+ return undefined;
120
+ const value = Reflect.get(target, property, target);
121
+ return typeof value === "function" ? value.bind(target) : value;
122
+ },
123
+ });
124
+ const app = createApp(legacy);
125
+ await createItem(app, { id: "memory-a", content: "Legacy record." });
126
+ const first = await app.request("/agents/support/memory/items?limit=1");
127
+ expect(first.status).toBe(200);
128
+ expect(await first.json()).toMatchObject({
129
+ ok: true,
130
+ data: {
131
+ items: [{ id: "memory-a" }],
132
+ nextCursor: null,
133
+ },
134
+ });
135
+ const next = await app.request("/agents/support/memory/items?limit=1&cursor=m1.invalid");
136
+ expect(next.status).toBe(503);
137
+ expect(await next.json()).toEqual({
138
+ ok: false,
139
+ error: "Memory pagination is not available",
140
+ code: "MEMORY_PAGINATION_UNAVAILABLE",
141
+ });
142
+ });
143
+ it("redacts invalid cursors returned by a host store", async () => {
144
+ class InvalidCursorStore extends InMemoryMemoryItemStore {
145
+ async listPage() {
146
+ return {
147
+ items: [],
148
+ nextCursor: {
149
+ createdAt: "invalid-provider-value",
150
+ id: "secret-provider-id",
151
+ },
152
+ };
153
+ }
154
+ }
155
+ const response = await createApp(new InvalidCursorStore()).request("/agents/support/memory/items?limit=1");
156
+ const raw = await response.text();
157
+ expect(response.status).toBe(500);
158
+ expect(raw).not.toContain("secret-provider-id");
159
+ expect(JSON.parse(raw)).toEqual({
160
+ ok: false,
161
+ error: "Memory operation failed",
162
+ code: "MEMORY_OPERATION_FAILED",
163
+ });
164
+ });
165
+ it("is host-neutral and unavailable until a store is explicitly wired", async () => {
166
+ const response = await createApp(null).request("/agents/support/memory/items");
167
+ expect(response.status).toBe(503);
168
+ expect(await response.json()).toEqual({
169
+ ok: false,
170
+ error: "Typed Memory is not available",
171
+ code: "MEMORY_UNAVAILABLE",
172
+ });
173
+ });
174
+ it("creates, lists, searches, updates, and softly forgets typed items", async () => {
175
+ const app = createApp();
176
+ const created = await createItem(app);
177
+ expect(created.response.status).toBe(201);
178
+ expect(created.body.data.item).toMatchObject({
179
+ id: "memory-1",
180
+ kind: "preference",
181
+ content: "Prefers concise weekly summaries.",
182
+ status: "active",
183
+ });
184
+ const listed = await app.request("/agents/support/memory/items?kinds=preference&scopeKind=user"
185
+ + "&scopeSubjectId=user-a&scopeAgentName=support&limit=10");
186
+ expect(listed.status).toBe(200);
187
+ expect((await listed.json()).data.items).toHaveLength(1);
188
+ const searched = await app.request("/agents/support/memory/search", json("POST", { query: "weekly summary", tokenBudget: 100, maxResults: 5 }));
189
+ const searchBody = await searched.json();
190
+ expect(searched.status).toBe(200);
191
+ expect(searchBody.data.results).toHaveLength(1);
192
+ expect(searchBody.data.results[0].item.id).toBe("memory-1");
193
+ const updated = await app.request("/agents/support/memory/items/memory-1", json("PATCH", { summary: "Weekly summaries", confidence: 0.9 }));
194
+ expect(updated.status).toBe(200);
195
+ expect((await updated.json()).data.item).toMatchObject({
196
+ summary: "Weekly summaries",
197
+ confidence: 0.9,
198
+ });
199
+ const forgotten = await app.request("/agents/support/memory/items/memory-1", { method: "DELETE" });
200
+ expect(forgotten.status).toBe(200);
201
+ expect(await forgotten.json()).toMatchObject({
202
+ ok: true,
203
+ data: { forgotten: true, itemId: "memory-1" },
204
+ });
205
+ const afterDelete = await app.request("/agents/support/memory/search", json("POST", { query: "weekly" }));
206
+ expect((await afterDelete.json()).data.results).toEqual([]);
207
+ });
208
+ it("records retrieval usage without exposing it in the search payload", async () => {
209
+ const store = new InMemoryMemoryItemStore();
210
+ const app = createApp(store);
211
+ await createItem(app);
212
+ await app.request("/agents/support/memory/search", json("POST", { query: "weekly" }));
213
+ expect(await store.listUsage("memory-1", context())).toEqual([
214
+ expect.objectContaining({
215
+ memoryId: "memory-1",
216
+ type: "written",
217
+ at: now,
218
+ }),
219
+ expect.objectContaining({
220
+ memoryId: "memory-1",
221
+ type: "retrieved",
222
+ at: now,
223
+ }),
224
+ ]);
225
+ });
226
+ it("returns 409 for a duplicate semantic memory instead of persisting it twice", async () => {
227
+ const app = createApp();
228
+ expect((await createItem(app)).response.status).toBe(201);
229
+ const duplicate = await createItem(app, { id: "another-id" });
230
+ expect(duplicate.response.status).toBe(409);
231
+ expect(duplicate.body).toEqual({
232
+ ok: false,
233
+ error: "An equivalent Memory item already exists",
234
+ code: "MEMORY_CONFLICT",
235
+ });
236
+ });
237
+ it.each([
238
+ ["invalid JSON", "{", 400],
239
+ ["empty body", undefined, 400],
240
+ ["unknown kind", itemInput({ kind: "guess" }), 400],
241
+ ["empty content", itemInput({ content: " " }), 400],
242
+ [
243
+ "invalid confidence",
244
+ itemInput({ confidence: 2 }),
245
+ 400,
246
+ ],
247
+ ])("rejects %s without touching the store", async (_name, body, status) => {
248
+ const app = createApp();
249
+ const response = await app.request("/agents/support/memory/items", body === "{" ? {
250
+ method: "POST",
251
+ headers: { "content-type": "application/json" },
252
+ body,
253
+ } : json("POST", body));
254
+ expect(response.status).toBe(status);
255
+ expect(await response.json()).toMatchObject({
256
+ ok: false,
257
+ code: "INVALID_MEMORY_REQUEST",
258
+ });
259
+ const listed = await app.request("/agents/support/memory/items");
260
+ expect((await listed.json()).data.items).toEqual([]);
261
+ });
262
+ it("fails closed on sensitive content and never echoes the secret", async () => {
263
+ const secret = "neutral-fixture-value-12345";
264
+ const app = createApp();
265
+ const response = await app.request("/agents/support/memory/items", json("POST", itemInput({ content: `api_key: ${secret}` })));
266
+ const raw = await response.text();
267
+ expect(response.status).toBe(422);
268
+ expect(raw).not.toContain(secret);
269
+ expect(JSON.parse(raw)).toEqual({
270
+ ok: false,
271
+ error: "Memory write denied by policy",
272
+ code: "MEMORY_POLICY_DENIED",
273
+ });
274
+ });
275
+ it("does not leak items across namespaces or external users", async () => {
276
+ const store = new InMemoryMemoryItemStore();
277
+ const projectA = createApp(store, () => context("project-a", "same-user"));
278
+ const projectB = createApp(store, () => context("project-b", "same-user"));
279
+ const anotherUser = createApp(store, () => context("project-a", "user-b"));
280
+ await createItem(projectA, {
281
+ scope: {
282
+ kind: "user",
283
+ subjectId: "same-user",
284
+ agentName: "support",
285
+ },
286
+ });
287
+ for (const app of [projectB, anotherUser]) {
288
+ const listed = await app.request("/agents/support/memory/items");
289
+ expect((await listed.json()).data.items).toEqual([]);
290
+ const update = await app.request("/agents/support/memory/items/memory-1", json("PATCH", { content: "stolen" }));
291
+ expect(update.status).toBe(404);
292
+ const remove = await app.request("/agents/support/memory/items/memory-1", { method: "DELETE" });
293
+ expect(remove.status).toBe(404);
294
+ }
295
+ });
296
+ it("maps host authorization denial without invoking the store", async () => {
297
+ const app = createApp(new InMemoryMemoryItemStore(), () => {
298
+ throw new MemoryAuthorizationError("denied by host");
299
+ });
300
+ const response = await app.request("/agents/support/memory/items");
301
+ expect(response.status).toBe(403);
302
+ expect(await response.json()).toEqual({
303
+ ok: false,
304
+ error: "Memory access denied",
305
+ code: "MEMORY_FORBIDDEN",
306
+ });
307
+ });
308
+ it("rejects an agent name mismatch between route and resolved context", async () => {
309
+ const app = createApp(new InMemoryMemoryItemStore(), () => ({
310
+ ...context(),
311
+ access: { ...context().access, agentName: "different-agent" },
312
+ }));
313
+ const response = await app.request("/agents/support/memory/items");
314
+ expect(response.status).toBe(403);
315
+ expect(await response.json()).toMatchObject({
316
+ ok: false,
317
+ code: "MEMORY_FORBIDDEN",
318
+ });
319
+ });
320
+ it("returns 404 for invisible or missing updates and deletes", async () => {
321
+ const app = createApp();
322
+ const update = await app.request("/agents/support/memory/items/missing", json("PATCH", { content: "new" }));
323
+ const remove = await app.request("/agents/support/memory/items/missing", { method: "DELETE" });
324
+ expect(update.status).toBe(404);
325
+ expect(remove.status).toBe(404);
326
+ });
327
+ it.each([
328
+ ["non-string query", { query: 42 }],
329
+ ["non-array kinds", { query: "weekly", kinds: "preference" }],
330
+ ["negative token budget", { query: "weekly", tokenBudget: -1 }],
331
+ ["client-controlled clock", { query: "weekly", now: "2020-01-01" }],
332
+ ])("maps malformed search input (%s) to 400", async (_name, body) => {
333
+ const response = await createApp().request("/agents/support/memory/search", json("POST", body));
334
+ expect(response.status).toBe(400);
335
+ expect(await response.json()).toMatchObject({
336
+ ok: false,
337
+ code: "INVALID_MEMORY_REQUEST",
338
+ });
339
+ });
340
+ it("keeps a completed operation successful when usage telemetry fails", async () => {
341
+ class UsageFailureStore extends InMemoryMemoryItemStore {
342
+ async appendUsage() {
343
+ throw new Error("usage backend unavailable");
344
+ }
345
+ }
346
+ const errors = [];
347
+ const store = new UsageFailureStore();
348
+ const app = createApp(store, () => context(), {
349
+ onUsageError: (error) => {
350
+ errors.push(error);
351
+ },
352
+ });
353
+ const created = await createItem(app);
354
+ expect(created.response.status).toBe(201);
355
+ expect(errors).toHaveLength(1);
356
+ expect(await store.list({}, context())).toHaveLength(1);
357
+ });
358
+ it("redacts unexpected store errors instead of reflecting provider details", async () => {
359
+ const secret = "database-password-super-secret";
360
+ class FailingStore extends InMemoryMemoryItemStore {
361
+ async list() {
362
+ throw new Error(`Provider failed with ${secret}`);
363
+ }
364
+ async listPage() {
365
+ throw new Error(`Provider failed with ${secret}`);
366
+ }
367
+ }
368
+ const response = await createApp(new FailingStore()).request("/agents/support/memory/items");
369
+ const raw = await response.text();
370
+ expect(response.status).toBe(500);
371
+ expect(raw).not.toContain(secret);
372
+ expect(JSON.parse(raw)).toEqual({
373
+ ok: false,
374
+ error: "Memory operation failed",
375
+ code: "MEMORY_OPERATION_FAILED",
376
+ });
377
+ });
378
+ it("decodes agent names and binds them to the resolved context", async () => {
379
+ let resolvedAgent = "";
380
+ const app = createApp(new InMemoryMemoryItemStore(), (agent) => {
381
+ resolvedAgent = agent;
382
+ return {
383
+ ...context(),
384
+ access: { ...context().access, agentName: agent },
385
+ };
386
+ });
387
+ const response = await app.request("/agents/support%20eu/memory/items");
388
+ expect(response.status).toBe(200);
389
+ expect(resolvedAgent).toBe("support eu");
390
+ });
391
+ });
392
+ //# sourceMappingURL=memory-items.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-items.test.js","sourceRoot":"","sources":["../../src/routes/memory-items.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.41",
3
+ "version": "0.15.43",
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.41",
24
- "@polpo-ai/connect-server": "0.15.41",
25
- "@polpo-ai/core": "0.15.41",
26
- "@polpo-ai/llm": "0.15.41",
27
- "@polpo-ai/tools": "0.15.41"
23
+ "@polpo-ai/connect-server": "0.15.43",
24
+ "@polpo-ai/llm": "0.15.43",
25
+ "@polpo-ai/connect": "0.15.43",
26
+ "@polpo-ai/tools": "0.15.43",
27
+ "@polpo-ai/core": "0.15.43"
28
28
  },
29
29
  "peerDependencies": {
30
30
  "ai": ">=6.0.0",