@polpo-ai/core 0.15.59 → 0.15.60
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/README.md +41 -0
- package/dist/adapter.d.ts +8 -0
- package/dist/adapter.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/loop/run-store.d.ts +3 -0
- package/dist/loop/run-store.d.ts.map +1 -1
- package/dist/loop/run-store.js.map +1 -1
- package/dist/loop/runner.d.ts +11 -0
- package/dist/loop/runner.d.ts.map +1 -1
- package/dist/loop/runner.js +56 -4
- package/dist/loop/runner.js.map +1 -1
- package/dist/loop/runner.test.js +149 -0
- package/dist/loop/runner.test.js.map +1 -1
- package/dist/steering.d.ts +144 -0
- package/dist/steering.d.ts.map +1 -0
- package/dist/steering.js +403 -0
- package/dist/steering.js.map +1 -0
- package/dist/steering.test.d.ts +2 -0
- package/dist/steering.test.d.ts.map +1 -0
- package/dist/steering.test.js +163 -0
- package/dist/steering.test.js.map +1 -0
- package/package.json +5 -1
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { InMemorySteeringController, InMemorySteeringRunRegistry, SteeringAbortError, SteeringClosedError, SteeringQueueFullError, SteeringRunConflictError, SteeringRunNotFoundError, SteeringValidationError, } from "./steering.js";
|
|
3
|
+
describe("InMemorySteeringController", () => {
|
|
4
|
+
it("keeps eligible messages in FIFO order and defers follow-ups", () => {
|
|
5
|
+
const controller = new InMemorySteeringController();
|
|
6
|
+
controller.enqueue({ id: "s1", mode: "steer", content: { text: "change direction" } });
|
|
7
|
+
controller.enqueue({ id: "f1", mode: "follow_up", content: { text: "then summarize" } });
|
|
8
|
+
controller.enqueue({ id: "s2", mode: "steer", content: { text: "use the API" } });
|
|
9
|
+
expect(controller.drain({ includeFollowUps: false }).map((message) => message.id)).toEqual(["s1", "s2"]);
|
|
10
|
+
expect(controller.snapshot().pending.map((message) => message.id)).toEqual(["f1"]);
|
|
11
|
+
expect(controller.drain({ includeFollowUps: true }).map((message) => message.id)).toEqual(["f1"]);
|
|
12
|
+
});
|
|
13
|
+
it("deduplicates message ids across delivery and restore", () => {
|
|
14
|
+
const controller = new InMemorySteeringController();
|
|
15
|
+
const first = controller.enqueue({ id: "same", mode: "steer", content: { text: "first" } });
|
|
16
|
+
const duplicate = controller.enqueue({ id: "same", mode: "steer", content: { text: "second" } });
|
|
17
|
+
expect(first.accepted).toBe(true);
|
|
18
|
+
expect(duplicate).toMatchObject({ accepted: false, duplicate: true });
|
|
19
|
+
controller.drain({ includeFollowUps: false });
|
|
20
|
+
const restored = InMemorySteeringController.fromSnapshot(controller.snapshot());
|
|
21
|
+
expect(restored.enqueue({ id: "same", mode: "steer", content: { text: "third" } })).toMatchObject({
|
|
22
|
+
accepted: false,
|
|
23
|
+
duplicate: true,
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
it("supports one-at-a-time delivery without reordering the queue", () => {
|
|
27
|
+
const controller = new InMemorySteeringController({ delivery: "one-at-a-time" });
|
|
28
|
+
controller.enqueue({ id: "s1", mode: "steer", content: { text: "one" } });
|
|
29
|
+
controller.enqueue({ id: "s2", mode: "steer", content: { text: "two" } });
|
|
30
|
+
expect(controller.drain({ includeFollowUps: false }).map((message) => message.id)).toEqual(["s1"]);
|
|
31
|
+
expect(controller.drain({ includeFollowUps: false }).map((message) => message.id)).toEqual(["s2"]);
|
|
32
|
+
});
|
|
33
|
+
it("round-trips pending messages and delivery policy through JSON", () => {
|
|
34
|
+
const controller = new InMemorySteeringController({ delivery: "one-at-a-time" });
|
|
35
|
+
controller.enqueue({
|
|
36
|
+
id: "with-file",
|
|
37
|
+
mode: "follow_up",
|
|
38
|
+
content: {
|
|
39
|
+
text: "inspect this",
|
|
40
|
+
attachments: [{ type: "image", url: "https://example.com/a.png", mediaType: "image/png" }],
|
|
41
|
+
},
|
|
42
|
+
metadata: { channel: "telegram" },
|
|
43
|
+
});
|
|
44
|
+
const serialized = JSON.stringify(controller.snapshot());
|
|
45
|
+
const restored = InMemorySteeringController.fromSnapshot(JSON.parse(serialized));
|
|
46
|
+
expect(restored.snapshot()).toEqual(controller.snapshot());
|
|
47
|
+
});
|
|
48
|
+
it("rejects empty, malformed, and oversized messages", () => {
|
|
49
|
+
const controller = new InMemorySteeringController({ maxContentBytes: 16 });
|
|
50
|
+
expect(() => controller.enqueue({ id: "empty", mode: "steer", content: {} })).toThrow(SteeringValidationError);
|
|
51
|
+
expect(() => controller.enqueue({ id: "bad-url", mode: "steer", content: {
|
|
52
|
+
attachments: [{ type: "file", url: "javascript:alert(1)" }],
|
|
53
|
+
} })).toThrow(SteeringValidationError);
|
|
54
|
+
expect(() => controller.enqueue({ id: "insecure-url", mode: "steer", content: {
|
|
55
|
+
attachments: [{ type: "file", url: "http://example.com/private.txt" }],
|
|
56
|
+
} })).toThrow(SteeringValidationError);
|
|
57
|
+
expect(() => controller.enqueue({ id: "large", mode: "steer", content: { text: "x".repeat(100) } }))
|
|
58
|
+
.toThrow(SteeringValidationError);
|
|
59
|
+
});
|
|
60
|
+
it("rejects non-JSON metadata and normalizes runtime-invalid input errors", () => {
|
|
61
|
+
const controller = new InMemorySteeringController();
|
|
62
|
+
const cyclic = {};
|
|
63
|
+
cyclic.self = cyclic;
|
|
64
|
+
expect(() => controller.enqueue({
|
|
65
|
+
id: "cyclic",
|
|
66
|
+
mode: "steer",
|
|
67
|
+
content: { text: "hello" },
|
|
68
|
+
metadata: cyclic,
|
|
69
|
+
})).toThrow(SteeringValidationError);
|
|
70
|
+
expect(() => controller.enqueue({
|
|
71
|
+
id: 42,
|
|
72
|
+
mode: "steer",
|
|
73
|
+
content: { text: "hello" },
|
|
74
|
+
})).toThrow(SteeringValidationError);
|
|
75
|
+
});
|
|
76
|
+
it("enforces queue capacity without losing accepted messages", () => {
|
|
77
|
+
const controller = new InMemorySteeringController({ maxPending: 1 });
|
|
78
|
+
controller.enqueue({ id: "first", mode: "steer", content: { text: "one" } });
|
|
79
|
+
expect(() => controller.enqueue({ id: "second", mode: "steer", content: { text: "two" } }))
|
|
80
|
+
.toThrow(SteeringQueueFullError);
|
|
81
|
+
expect(controller.snapshot().pending.map((message) => message.id)).toEqual(["first"]);
|
|
82
|
+
});
|
|
83
|
+
it("restores atomically when a snapshot contains malformed pending data", () => {
|
|
84
|
+
const controller = new InMemorySteeringController();
|
|
85
|
+
controller.enqueue({ id: "existing", mode: "steer", content: { text: "keep" } });
|
|
86
|
+
const before = controller.snapshot();
|
|
87
|
+
expect(() => controller.restore({
|
|
88
|
+
...before,
|
|
89
|
+
pending: [
|
|
90
|
+
...before.pending,
|
|
91
|
+
{ id: "bad", mode: "steer", content: {}, createdAt: new Date().toISOString() },
|
|
92
|
+
],
|
|
93
|
+
})).toThrow(SteeringValidationError);
|
|
94
|
+
expect(controller.snapshot()).toEqual(before);
|
|
95
|
+
});
|
|
96
|
+
it("aborts once and rejects new messages after abort or close", () => {
|
|
97
|
+
const controller = new InMemorySteeringController();
|
|
98
|
+
controller.abort("user cancelled");
|
|
99
|
+
controller.abort("ignored");
|
|
100
|
+
expect(controller.signal.aborted).toBe(true);
|
|
101
|
+
expect(controller.signal.reason).toBe("user cancelled");
|
|
102
|
+
expect(() => controller.enqueue({ id: "after-abort", mode: "steer", content: { text: "too late" } }))
|
|
103
|
+
.toThrow(SteeringAbortError);
|
|
104
|
+
controller.close();
|
|
105
|
+
expect(() => controller.enqueue({ id: "late", mode: "steer", content: { text: "too late" } }))
|
|
106
|
+
.toThrow(SteeringClosedError);
|
|
107
|
+
});
|
|
108
|
+
it("seals ingress atomically only after pending messages are drained", () => {
|
|
109
|
+
const controller = new InMemorySteeringController();
|
|
110
|
+
controller.enqueue({ id: "pending", mode: "steer", content: { text: "deliver me" } });
|
|
111
|
+
expect(controller.sealIfIdle()).toBe(false);
|
|
112
|
+
expect(controller.drain({ includeFollowUps: true })).toMatchObject([{ id: "pending" }]);
|
|
113
|
+
expect(controller.sealIfIdle()).toBe(true);
|
|
114
|
+
expect(controller.sealIfIdle()).toBe(true);
|
|
115
|
+
expect(() => controller.enqueue({ id: "late", mode: "steer", content: { text: "too late" } }))
|
|
116
|
+
.toThrow(SteeringClosedError);
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
describe("InMemorySteeringRunRegistry", () => {
|
|
120
|
+
it("routes messages and aborts to the controller registered for one run", async () => {
|
|
121
|
+
const registry = new InMemorySteeringRunRegistry();
|
|
122
|
+
const controller = new InMemorySteeringController();
|
|
123
|
+
const unregister = registry.register("run-1", controller);
|
|
124
|
+
await expect(registry.enqueue("run-1", {
|
|
125
|
+
id: "message-1",
|
|
126
|
+
mode: "steer",
|
|
127
|
+
content: { text: "change direction" },
|
|
128
|
+
})).resolves.toMatchObject({ accepted: true });
|
|
129
|
+
expect(controller.snapshot().pending).toMatchObject([{ id: "message-1" }]);
|
|
130
|
+
registry.abort("run-1", "stop now");
|
|
131
|
+
expect(controller.signal.reason).toBe("stop now");
|
|
132
|
+
unregister();
|
|
133
|
+
await expect(registry.enqueue("run-1", {
|
|
134
|
+
id: "late",
|
|
135
|
+
mode: "steer",
|
|
136
|
+
content: { text: "too late" },
|
|
137
|
+
})).rejects.toBeInstanceOf(SteeringRunNotFoundError);
|
|
138
|
+
});
|
|
139
|
+
it("rejects run-id collisions and stale unregister callbacks cannot remove replacements", async () => {
|
|
140
|
+
const registry = new InMemorySteeringRunRegistry();
|
|
141
|
+
const first = new InMemorySteeringController();
|
|
142
|
+
const unregisterFirst = registry.register("same-run", first);
|
|
143
|
+
expect(() => registry.register("same-run", new InMemorySteeringController()))
|
|
144
|
+
.toThrow(SteeringRunConflictError);
|
|
145
|
+
unregisterFirst();
|
|
146
|
+
const second = new InMemorySteeringController();
|
|
147
|
+
registry.register("same-run", second);
|
|
148
|
+
unregisterFirst();
|
|
149
|
+
await registry.enqueue("same-run", {
|
|
150
|
+
id: "current",
|
|
151
|
+
mode: "steer",
|
|
152
|
+
content: { text: "still registered" },
|
|
153
|
+
});
|
|
154
|
+
expect(second.snapshot().pending).toMatchObject([{ id: "current" }]);
|
|
155
|
+
});
|
|
156
|
+
it("bounds active runs", () => {
|
|
157
|
+
const registry = new InMemorySteeringRunRegistry({ maxActiveRuns: 1 });
|
|
158
|
+
registry.register("run-1", new InMemorySteeringController());
|
|
159
|
+
expect(() => registry.register("run-2", new InMemorySteeringController()))
|
|
160
|
+
.toThrow(SteeringRunConflictError);
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
//# sourceMappingURL=steering.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"steering.test.js","sourceRoot":"","sources":["../src/steering.test.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.
|
|
3
|
+
"version": "0.15.60",
|
|
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",
|
|
@@ -66,6 +66,10 @@
|
|
|
66
66
|
"types": "./dist/runtime-context/index.d.ts",
|
|
67
67
|
"import": "./dist/runtime-context/index.js"
|
|
68
68
|
},
|
|
69
|
+
"./steering": {
|
|
70
|
+
"types": "./dist/steering.d.ts",
|
|
71
|
+
"import": "./dist/steering.js"
|
|
72
|
+
},
|
|
69
73
|
"./execution-router": {
|
|
70
74
|
"types": "./dist/execution-router.d.ts",
|
|
71
75
|
"import": "./dist/execution-router.js"
|