@polpo-ai/core 0.18.7 → 0.18.9
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 +11 -3
- package/dist/adapter.d.ts +8 -2
- package/dist/adapter.d.ts.map +1 -1
- package/dist/loop/normalize.d.ts.map +1 -1
- package/dist/loop/normalize.js +1 -0
- package/dist/loop/normalize.js.map +1 -1
- package/dist/loop/pipeline.d.ts +9 -1
- package/dist/loop/pipeline.d.ts.map +1 -1
- package/dist/loop/pipeline.js +1 -0
- package/dist/loop/pipeline.js.map +1 -1
- package/dist/loop/pipeline.test.js +41 -0
- package/dist/loop/pipeline.test.js.map +1 -1
- package/dist/loop/runner.d.ts +5 -1
- package/dist/loop/runner.d.ts.map +1 -1
- package/dist/loop/runner.js +36 -2
- package/dist/loop/runner.js.map +1 -1
- package/dist/loop/runner.test.js +46 -3
- package/dist/loop/runner.test.js.map +1 -1
- package/dist/loop/types.d.ts +7 -0
- package/dist/loop/types.d.ts.map +1 -1
- package/dist/loop/types.js.map +1 -1
- package/dist/runtime-hooks.d.ts +32 -1
- package/dist/runtime-hooks.d.ts.map +1 -1
- package/dist/runtime-hooks.js +107 -21
- package/dist/runtime-hooks.js.map +1 -1
- package/dist/runtime-hooks.test.js +78 -1
- package/dist/runtime-hooks.test.js.map +1 -1
- package/dist/schemas.d.ts +168 -0
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +25 -0
- package/dist/schemas.js.map +1 -1
- package/dist/steering.d.ts +99 -5
- package/dist/steering.d.ts.map +1 -1
- package/dist/steering.js +381 -14
- package/dist/steering.js.map +1 -1
- package/dist/steering.test.js +82 -16
- package/dist/steering.test.js.map +1 -1
- package/dist/types/agent.d.ts +3 -0
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/agent.js.map +1 -1
- package/package.json +1 -1
package/dist/steering.js
CHANGED
|
@@ -85,18 +85,150 @@ function assertFinitePositiveInteger(value, field) {
|
|
|
85
85
|
throw new SteeringValidationError(`${field} must be a positive integer`);
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
|
+
const DEFAULT_STEERING_OUTCOME_MESSAGES = {
|
|
89
|
+
rejected: "This step cannot accept new instructions.",
|
|
90
|
+
too_late: "The step had already finished.",
|
|
91
|
+
};
|
|
92
|
+
export function normalizeSteeringLocale(locale) {
|
|
93
|
+
if (typeof locale !== "string")
|
|
94
|
+
throw new SteeringValidationError("Steering locale must be a string");
|
|
95
|
+
const candidate = locale.trim();
|
|
96
|
+
if (!candidate || candidate.length > 35 || /[\u0000-\u001f\u007f]/u.test(candidate)) {
|
|
97
|
+
throw new SteeringValidationError("Steering locale must be a valid BCP 47 language tag");
|
|
98
|
+
}
|
|
99
|
+
try {
|
|
100
|
+
const [normalized] = Intl.getCanonicalLocales(candidate);
|
|
101
|
+
if (!normalized)
|
|
102
|
+
throw new Error("missing locale");
|
|
103
|
+
return normalized;
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
throw new SteeringValidationError("Steering locale must be a valid BCP 47 language tag");
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
export function resolveSteeringOutcomeMessage(messages, requestedLocale, outcome) {
|
|
110
|
+
const entries = Object.entries(messages ?? {});
|
|
111
|
+
if (entries.length > 32)
|
|
112
|
+
throw new SteeringValidationError("Steering outcome messages support at most 32 locales");
|
|
113
|
+
const normalized = new Map();
|
|
114
|
+
for (const [locale, text] of entries) {
|
|
115
|
+
const key = normalizeSteeringLocale(locale);
|
|
116
|
+
if (typeof text !== "string" || !text.trim() || text.length > 2_000) {
|
|
117
|
+
throw new SteeringValidationError("Steering outcome messages must contain 1-2000 characters");
|
|
118
|
+
}
|
|
119
|
+
normalized.set(key, text);
|
|
120
|
+
}
|
|
121
|
+
const requested = requestedLocale ? normalizeSteeringLocale(requestedLocale) : "en";
|
|
122
|
+
const primary = requested.split("-")[0];
|
|
123
|
+
for (const candidate of [requested, primary, "en"]) {
|
|
124
|
+
const text = normalized.get(candidate);
|
|
125
|
+
if (text !== undefined)
|
|
126
|
+
return { locale: candidate, text };
|
|
127
|
+
}
|
|
128
|
+
const first = normalized.entries().next().value;
|
|
129
|
+
if (first)
|
|
130
|
+
return { locale: first[0], text: first[1] };
|
|
131
|
+
return { locale: "en", text: DEFAULT_STEERING_OUTCOME_MESSAGES[outcome] };
|
|
132
|
+
}
|
|
133
|
+
export function resolveSteeringPolicy(candidates) {
|
|
134
|
+
const selected = candidates.find((candidate) => candidate.policy !== undefined);
|
|
135
|
+
return normalizeResolvedSteeringPolicy(selected
|
|
136
|
+
? {
|
|
137
|
+
acceptance: selected.policy?.acceptance ?? "best_effort",
|
|
138
|
+
source: selected.source,
|
|
139
|
+
...(selected.policy?.outcomes ? { outcomes: selected.policy.outcomes } : {}),
|
|
140
|
+
}
|
|
141
|
+
: { acceptance: "best_effort", source: "platform" });
|
|
142
|
+
}
|
|
143
|
+
function normalizeResolvedSteeringPolicy(policy) {
|
|
144
|
+
if (!["accept", "reject", "best_effort"].includes(policy.acceptance)) {
|
|
145
|
+
throw new SteeringValidationError("Steering acceptance must be accept, reject, or best_effort");
|
|
146
|
+
}
|
|
147
|
+
if (!["node", "loop", "agent", "project", "platform"].includes(policy.source)) {
|
|
148
|
+
throw new SteeringValidationError("Steering policy source is invalid");
|
|
149
|
+
}
|
|
150
|
+
const outcomes = {};
|
|
151
|
+
for (const outcome of ["rejected", "too_late"]) {
|
|
152
|
+
const behavior = policy.outcomes?.[outcome];
|
|
153
|
+
if (!behavior)
|
|
154
|
+
continue;
|
|
155
|
+
if (behavior.action !== "reply" && behavior.action !== "return") {
|
|
156
|
+
throw new SteeringValidationError("Steering outcome action must be reply or return");
|
|
157
|
+
}
|
|
158
|
+
// Validate and canonicalize keys while retaining every configured message.
|
|
159
|
+
const messages = {};
|
|
160
|
+
for (const [locale, text] of Object.entries(behavior.messages ?? {})) {
|
|
161
|
+
const normalizedLocale = normalizeSteeringLocale(locale);
|
|
162
|
+
if (typeof text !== "string" || !text.trim() || text.length > 2_000) {
|
|
163
|
+
throw new SteeringValidationError("Steering outcome messages must contain 1-2000 characters");
|
|
164
|
+
}
|
|
165
|
+
messages[normalizedLocale] = text;
|
|
166
|
+
}
|
|
167
|
+
if (Object.keys(messages).length > 32) {
|
|
168
|
+
throw new SteeringValidationError("Steering outcome messages support at most 32 locales");
|
|
169
|
+
}
|
|
170
|
+
outcomes[outcome] = { action: behavior.action, messages };
|
|
171
|
+
}
|
|
172
|
+
return jsonClone({
|
|
173
|
+
acceptance: policy.acceptance,
|
|
174
|
+
source: policy.source,
|
|
175
|
+
...(Object.keys(outcomes).length > 0 ? { outcomes } : {}),
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
function steeringMessageFingerprint(message) {
|
|
179
|
+
return JSON.stringify({
|
|
180
|
+
id: message.id,
|
|
181
|
+
mode: message.mode,
|
|
182
|
+
locale: message.locale,
|
|
183
|
+
content: message.content,
|
|
184
|
+
metadata: message.metadata,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
function normalizeSteeringReceipts(receipts, runId) {
|
|
188
|
+
if (!Array.isArray(receipts))
|
|
189
|
+
throw new SteeringValidationError("Malformed steering snapshot receipts");
|
|
190
|
+
return receipts.map((receipt) => {
|
|
191
|
+
if (!receipt || receipt.version !== 1 || typeof receipt.messageId !== "string") {
|
|
192
|
+
throw new SteeringValidationError("Malformed steering receipt");
|
|
193
|
+
}
|
|
194
|
+
if (!["accepted", "duplicate", "rejected", "too_late"].includes(receipt.admission)
|
|
195
|
+
|| !["pending", "delivered", "too_late", "cancelled", "failed"].includes(receipt.delivery)) {
|
|
196
|
+
throw new SteeringValidationError("Malformed steering receipt state");
|
|
197
|
+
}
|
|
198
|
+
return jsonClone({ ...receipt, runId: receipt.runId === "unbound" ? runId : normalizeRunId(receipt.runId) });
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
function normalizeSteeringFingerprints(input) {
|
|
202
|
+
if (!input || typeof input !== "object" || Array.isArray(input)) {
|
|
203
|
+
throw new SteeringValidationError("Malformed steering snapshot fingerprints");
|
|
204
|
+
}
|
|
205
|
+
const result = new Map();
|
|
206
|
+
for (const [id, fingerprint] of Object.entries(input)) {
|
|
207
|
+
if (!id || typeof fingerprint !== "string")
|
|
208
|
+
throw new SteeringValidationError("Malformed steering fingerprint");
|
|
209
|
+
result.set(id, fingerprint);
|
|
210
|
+
}
|
|
211
|
+
return result;
|
|
212
|
+
}
|
|
88
213
|
export class InMemorySteeringController {
|
|
89
214
|
abortController = new AbortController();
|
|
90
215
|
pending = [];
|
|
91
216
|
seen = new Set();
|
|
92
217
|
seenOrder = [];
|
|
218
|
+
receipts = new Map();
|
|
219
|
+
fingerprints = new Map();
|
|
93
220
|
delivery;
|
|
94
221
|
maxContentBytes;
|
|
95
222
|
maxPending;
|
|
96
223
|
maxSeenIds;
|
|
97
224
|
maxAttachments;
|
|
98
225
|
now;
|
|
226
|
+
onReceipt;
|
|
99
227
|
abortReason;
|
|
228
|
+
runId;
|
|
229
|
+
policy;
|
|
230
|
+
boundaryOpen = false;
|
|
231
|
+
boundaryReservable = false;
|
|
100
232
|
closed = false;
|
|
101
233
|
constructor(options = {}) {
|
|
102
234
|
this.delivery = options.delivery ?? "all";
|
|
@@ -105,6 +237,12 @@ export class InMemorySteeringController {
|
|
|
105
237
|
this.maxSeenIds = options.maxSeenIds ?? DEFAULT_STEERING_MAX_SEEN_IDS;
|
|
106
238
|
this.maxAttachments = options.maxAttachments ?? DEFAULT_STEERING_MAX_ATTACHMENTS;
|
|
107
239
|
this.now = options.now ?? (() => new Date());
|
|
240
|
+
this.runId = options.runId === undefined ? "unbound" : normalizeRunId(options.runId);
|
|
241
|
+
this.policy = normalizeResolvedSteeringPolicy(options.policy ?? {
|
|
242
|
+
acceptance: "best_effort",
|
|
243
|
+
source: "platform",
|
|
244
|
+
});
|
|
245
|
+
this.onReceipt = options.onReceipt;
|
|
108
246
|
assertFinitePositiveInteger(this.maxContentBytes, "maxContentBytes");
|
|
109
247
|
assertFinitePositiveInteger(this.maxPending, "maxPending");
|
|
110
248
|
assertFinitePositiveInteger(this.maxSeenIds, "maxSeenIds");
|
|
@@ -130,14 +268,55 @@ export class InMemorySteeringController {
|
|
|
130
268
|
throw new SteeringValidationError("Steering message id must be a string");
|
|
131
269
|
}
|
|
132
270
|
const message = this.normalizeMessage(input);
|
|
133
|
-
|
|
134
|
-
|
|
271
|
+
const fingerprint = steeringMessageFingerprint(message);
|
|
272
|
+
if (this.seen.has(message.id)) {
|
|
273
|
+
const existingFingerprint = this.fingerprints.get(message.id);
|
|
274
|
+
if (existingFingerprint !== undefined && existingFingerprint !== fingerprint) {
|
|
275
|
+
throw new SteeringValidationError(`Steering message id "${message.id}" was already used with different content`);
|
|
276
|
+
}
|
|
277
|
+
const existing = this.receipts.get(message.id);
|
|
278
|
+
if (!existing) {
|
|
279
|
+
throw new SteeringValidationError(`Steering message id "${message.id}" has no recoverable receipt`);
|
|
280
|
+
}
|
|
281
|
+
return {
|
|
282
|
+
accepted: false,
|
|
283
|
+
duplicate: true,
|
|
284
|
+
receipt: jsonClone({ ...existing, admission: "duplicate" }),
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
const immediate = this.immediateAdmission(message);
|
|
288
|
+
if (immediate) {
|
|
289
|
+
this.remember(message.id);
|
|
290
|
+
this.fingerprints.set(message.id, fingerprint);
|
|
291
|
+
this.recordReceipt(immediate);
|
|
292
|
+
return {
|
|
293
|
+
accepted: false,
|
|
294
|
+
duplicate: false,
|
|
295
|
+
message: jsonClone(message),
|
|
296
|
+
receipt: jsonClone(immediate),
|
|
297
|
+
};
|
|
298
|
+
}
|
|
135
299
|
if (this.pending.length >= this.maxPending) {
|
|
136
300
|
throw new SteeringQueueFullError(`Steering queue is full (max ${this.maxPending})`);
|
|
137
301
|
}
|
|
138
302
|
this.pending.push(message);
|
|
139
303
|
this.remember(message.id);
|
|
140
|
-
|
|
304
|
+
this.fingerprints.set(message.id, fingerprint);
|
|
305
|
+
const admittedAt = this.now().toISOString();
|
|
306
|
+
const receipt = {
|
|
307
|
+
version: 1,
|
|
308
|
+
runId: this.runId,
|
|
309
|
+
messageId: message.id,
|
|
310
|
+
mode: message.mode,
|
|
311
|
+
acceptance: this.policy.acceptance,
|
|
312
|
+
policySource: this.policy.source,
|
|
313
|
+
admission: "accepted",
|
|
314
|
+
delivery: "pending",
|
|
315
|
+
...(message.locale ? { locale: message.locale } : {}),
|
|
316
|
+
admittedAt,
|
|
317
|
+
};
|
|
318
|
+
this.recordReceipt(receipt);
|
|
319
|
+
return { accepted: true, duplicate: false, message: jsonClone(message), receipt: jsonClone(receipt) };
|
|
141
320
|
}
|
|
142
321
|
drain(options) {
|
|
143
322
|
if (this.pending.length === 0)
|
|
@@ -166,6 +345,8 @@ export class InMemorySteeringController {
|
|
|
166
345
|
if (this.pending.length > 0)
|
|
167
346
|
return false;
|
|
168
347
|
this.closed = true;
|
|
348
|
+
this.boundaryOpen = false;
|
|
349
|
+
this.boundaryReservable = false;
|
|
169
350
|
return true;
|
|
170
351
|
}
|
|
171
352
|
snapshot() {
|
|
@@ -174,6 +355,9 @@ export class InMemorySteeringController {
|
|
|
174
355
|
delivery: this.delivery,
|
|
175
356
|
pending: this.pending,
|
|
176
357
|
seenIds: this.seenOrder,
|
|
358
|
+
receipts: [...this.receipts.values()],
|
|
359
|
+
fingerprints: Object.fromEntries(this.fingerprints),
|
|
360
|
+
policy: this.policy,
|
|
177
361
|
...(this.signal.aborted
|
|
178
362
|
? {
|
|
179
363
|
aborted: true,
|
|
@@ -220,6 +404,13 @@ export class InMemorySteeringController {
|
|
|
220
404
|
const abortReason = snapshot.abortReason === undefined
|
|
221
405
|
? undefined
|
|
222
406
|
: jsonClone(snapshot.abortReason, "abortReason");
|
|
407
|
+
const receipts = normalizeSteeringReceipts(snapshot.receipts ?? [], this.runId);
|
|
408
|
+
const fingerprints = snapshot.fingerprints === undefined
|
|
409
|
+
? new Map()
|
|
410
|
+
: normalizeSteeringFingerprints(snapshot.fingerprints);
|
|
411
|
+
const policy = snapshot.policy === undefined
|
|
412
|
+
? this.policy
|
|
413
|
+
: normalizeResolvedSteeringPolicy(snapshot.policy);
|
|
223
414
|
const existingById = new Map(this.pending.map((message) => [message.id, JSON.stringify(message)]));
|
|
224
415
|
let additions = 0;
|
|
225
416
|
for (const message of pending) {
|
|
@@ -240,19 +431,101 @@ export class InMemorySteeringController {
|
|
|
240
431
|
this.pending.push(message);
|
|
241
432
|
this.remember(message.id);
|
|
242
433
|
}
|
|
434
|
+
for (const receipt of receipts)
|
|
435
|
+
this.receipts.set(receipt.messageId, receipt);
|
|
436
|
+
for (const [id, fingerprint] of fingerprints)
|
|
437
|
+
this.fingerprints.set(id, fingerprint);
|
|
438
|
+
for (const message of pending) {
|
|
439
|
+
if (!this.fingerprints.has(message.id))
|
|
440
|
+
this.fingerprints.set(message.id, steeringMessageFingerprint(message));
|
|
441
|
+
if (!this.receipts.has(message.id)) {
|
|
442
|
+
this.receipts.set(message.id, {
|
|
443
|
+
version: 1,
|
|
444
|
+
runId: this.runId,
|
|
445
|
+
messageId: message.id,
|
|
446
|
+
mode: message.mode,
|
|
447
|
+
acceptance: policy.acceptance,
|
|
448
|
+
policySource: policy.source,
|
|
449
|
+
admission: "accepted",
|
|
450
|
+
delivery: "pending",
|
|
451
|
+
...(message.locale ? { locale: message.locale } : {}),
|
|
452
|
+
admittedAt: message.createdAt,
|
|
453
|
+
});
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
this.policy = policy;
|
|
243
457
|
if (snapshot.aborted)
|
|
244
458
|
this.abort(abortReason);
|
|
245
459
|
}
|
|
460
|
+
bindRun(runId) {
|
|
461
|
+
const normalized = normalizeRunId(runId);
|
|
462
|
+
if (this.runId !== "unbound" && this.runId !== normalized) {
|
|
463
|
+
throw new SteeringRunConflictError(`Steering controller is already bound to run "${this.runId}"`);
|
|
464
|
+
}
|
|
465
|
+
this.runId = normalized;
|
|
466
|
+
for (const [id, receipt] of this.receipts) {
|
|
467
|
+
this.receipts.set(id, { ...receipt, runId: normalized });
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
configure(policy) {
|
|
471
|
+
this.policy = normalizeResolvedSteeringPolicy(policy);
|
|
472
|
+
}
|
|
473
|
+
setBoundary(input) {
|
|
474
|
+
this.boundaryOpen = input.open && !this.closed && !this.signal.aborted;
|
|
475
|
+
this.boundaryReservable = this.boundaryOpen && input.reservable;
|
|
476
|
+
}
|
|
477
|
+
settle(messageIds, delivery, reasonCode) {
|
|
478
|
+
const settledIds = new Set(messageIds);
|
|
479
|
+
for (let index = this.pending.length - 1; index >= 0; index--) {
|
|
480
|
+
if (settledIds.has(this.pending[index].id))
|
|
481
|
+
this.pending.splice(index, 1);
|
|
482
|
+
}
|
|
483
|
+
const now = this.now().toISOString();
|
|
484
|
+
for (const messageId of messageIds) {
|
|
485
|
+
const receipt = this.receipts.get(messageId);
|
|
486
|
+
if (!receipt || receipt.delivery !== "pending")
|
|
487
|
+
continue;
|
|
488
|
+
const next = {
|
|
489
|
+
...receipt,
|
|
490
|
+
delivery,
|
|
491
|
+
...(delivery === "delivered" ? { deliveredAt: now } : {}),
|
|
492
|
+
settledAt: now,
|
|
493
|
+
...(reasonCode ? { reasonCode } : {}),
|
|
494
|
+
...(delivery === "too_late" ? this.localizedResponse(receipt.locale, "too_late") : {}),
|
|
495
|
+
};
|
|
496
|
+
this.recordReceipt(next);
|
|
497
|
+
}
|
|
498
|
+
this.pruneSeen();
|
|
499
|
+
}
|
|
500
|
+
settlePending(delivery, reasonCode) {
|
|
501
|
+
const ids = this.pending.map((message) => message.id);
|
|
502
|
+
this.pending.splice(0, this.pending.length);
|
|
503
|
+
this.settle(ids, delivery, reasonCode);
|
|
504
|
+
}
|
|
505
|
+
getReceipt(messageId) {
|
|
506
|
+
const receipt = this.receipts.get(messageId);
|
|
507
|
+
return receipt ? jsonClone(receipt) : undefined;
|
|
508
|
+
}
|
|
509
|
+
listReceipts() {
|
|
510
|
+
return jsonClone([...this.receipts.values()]);
|
|
511
|
+
}
|
|
246
512
|
abort(reason) {
|
|
247
513
|
if (!this.signal.aborted) {
|
|
248
514
|
this.abortReason = reason === undefined
|
|
249
515
|
? "Run aborted through steering"
|
|
250
516
|
: jsonClone(reason, "abortReason");
|
|
251
517
|
this.abortController.abort(this.abortReason);
|
|
518
|
+
this.boundaryOpen = false;
|
|
519
|
+
this.boundaryReservable = false;
|
|
520
|
+
this.settlePending("cancelled", "run_aborted");
|
|
252
521
|
}
|
|
253
522
|
}
|
|
254
|
-
close() {
|
|
523
|
+
close(delivery = "too_late", reasonCode = "run_closed") {
|
|
524
|
+
if (!this.closed)
|
|
525
|
+
this.settlePending(delivery, reasonCode);
|
|
255
526
|
this.closed = true;
|
|
527
|
+
this.boundaryOpen = false;
|
|
528
|
+
this.boundaryReservable = false;
|
|
256
529
|
}
|
|
257
530
|
normalizeMessage(input) {
|
|
258
531
|
if (!input || typeof input !== "object") {
|
|
@@ -308,6 +581,7 @@ export class InMemorySteeringController {
|
|
|
308
581
|
const metadata = input.metadata === undefined
|
|
309
582
|
? undefined
|
|
310
583
|
: jsonClone(input.metadata, "metadata");
|
|
584
|
+
const locale = input.locale === undefined ? undefined : normalizeSteeringLocale(input.locale);
|
|
311
585
|
const content = jsonClone({
|
|
312
586
|
...(text !== undefined ? { text } : {}),
|
|
313
587
|
...(attachments.length > 0 ? { attachments } : {}),
|
|
@@ -323,6 +597,7 @@ export class InMemorySteeringController {
|
|
|
323
597
|
return {
|
|
324
598
|
id,
|
|
325
599
|
mode: input.mode,
|
|
600
|
+
...(locale ? { locale } : {}),
|
|
326
601
|
content,
|
|
327
602
|
...(metadata !== undefined ? { metadata } : {}),
|
|
328
603
|
createdAt,
|
|
@@ -333,12 +608,72 @@ export class InMemorySteeringController {
|
|
|
333
608
|
return;
|
|
334
609
|
this.seen.add(id);
|
|
335
610
|
this.seenOrder.push(id);
|
|
611
|
+
this.pruneSeen(id);
|
|
612
|
+
}
|
|
613
|
+
pruneSeen(protectedId) {
|
|
336
614
|
while (this.seenOrder.length > this.maxSeenIds) {
|
|
337
|
-
const
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
615
|
+
const index = this.seenOrder.findIndex((candidate) => candidate !== protectedId
|
|
616
|
+
&& !this.pending.some((message) => message.id === candidate));
|
|
617
|
+
if (index < 0)
|
|
618
|
+
break;
|
|
619
|
+
const [oldest] = this.seenOrder.splice(index, 1);
|
|
620
|
+
if (oldest === undefined)
|
|
621
|
+
break;
|
|
622
|
+
this.seen.delete(oldest);
|
|
623
|
+
this.fingerprints.delete(oldest);
|
|
624
|
+
this.receipts.delete(oldest);
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
immediateAdmission(message) {
|
|
628
|
+
let admission;
|
|
629
|
+
let delivery;
|
|
630
|
+
let reasonCode;
|
|
631
|
+
if (this.policy.acceptance === "reject") {
|
|
632
|
+
admission = "rejected";
|
|
633
|
+
delivery = "cancelled";
|
|
634
|
+
reasonCode = "policy_rejected";
|
|
635
|
+
}
|
|
636
|
+
else if (this.policy.acceptance === "accept" && (!this.boundaryOpen || !this.boundaryReservable)) {
|
|
637
|
+
admission = "too_late";
|
|
638
|
+
delivery = "too_late";
|
|
639
|
+
reasonCode = "no_reservable_boundary";
|
|
640
|
+
}
|
|
641
|
+
if (!admission || !delivery)
|
|
642
|
+
return undefined;
|
|
643
|
+
const admittedAt = this.now().toISOString();
|
|
644
|
+
return {
|
|
645
|
+
version: 1,
|
|
646
|
+
runId: this.runId,
|
|
647
|
+
messageId: message.id,
|
|
648
|
+
mode: message.mode,
|
|
649
|
+
acceptance: this.policy.acceptance,
|
|
650
|
+
policySource: this.policy.source,
|
|
651
|
+
admission,
|
|
652
|
+
delivery,
|
|
653
|
+
...(message.locale ? { locale: message.locale } : {}),
|
|
654
|
+
admittedAt,
|
|
655
|
+
settledAt: admittedAt,
|
|
656
|
+
reasonCode,
|
|
657
|
+
...this.localizedResponse(message.locale, admission),
|
|
658
|
+
};
|
|
659
|
+
}
|
|
660
|
+
localizedResponse(locale, outcome) {
|
|
661
|
+
const behavior = this.policy.outcomes?.[outcome];
|
|
662
|
+
if (!behavior)
|
|
663
|
+
return {};
|
|
664
|
+
const selected = resolveSteeringOutcomeMessage(behavior.messages, locale, outcome);
|
|
665
|
+
return {
|
|
666
|
+
selectedLocale: selected.locale,
|
|
667
|
+
response: { action: behavior.action, text: selected.text, locale: selected.locale },
|
|
668
|
+
};
|
|
669
|
+
}
|
|
670
|
+
recordReceipt(receipt) {
|
|
671
|
+
const stored = jsonClone(receipt);
|
|
672
|
+
this.receipts.set(receipt.messageId, stored);
|
|
673
|
+
try {
|
|
674
|
+
this.onReceipt?.(jsonClone(stored));
|
|
341
675
|
}
|
|
676
|
+
catch { /* observability cannot change steering */ }
|
|
342
677
|
}
|
|
343
678
|
}
|
|
344
679
|
export function throwIfSteeringAborted(steering) {
|
|
@@ -353,12 +688,16 @@ export function throwIfSteeringAborted(steering) {
|
|
|
353
688
|
*/
|
|
354
689
|
export class InMemorySteeringRunRegistry {
|
|
355
690
|
controllers = new Map();
|
|
691
|
+
archivedReceipts = new Map();
|
|
356
692
|
maxActiveRuns;
|
|
693
|
+
maxArchivedReceipts;
|
|
357
694
|
constructor(options = {}) {
|
|
358
695
|
this.maxActiveRuns = options.maxActiveRuns ?? 10_000;
|
|
696
|
+
this.maxArchivedReceipts = options.maxArchivedReceipts ?? 10_000;
|
|
359
697
|
assertFinitePositiveInteger(this.maxActiveRuns, "maxActiveRuns");
|
|
698
|
+
assertFinitePositiveInteger(this.maxArchivedReceipts, "maxArchivedReceipts");
|
|
360
699
|
}
|
|
361
|
-
register(runId, controller) {
|
|
700
|
+
async register(runId, controller) {
|
|
362
701
|
const id = normalizeRunId(runId);
|
|
363
702
|
const existing = this.controllers.get(id);
|
|
364
703
|
if (existing && existing !== controller) {
|
|
@@ -367,17 +706,34 @@ export class InMemorySteeringRunRegistry {
|
|
|
367
706
|
if (!existing && this.controllers.size >= this.maxActiveRuns) {
|
|
368
707
|
throw new SteeringRunConflictError(`Steering registry is full (max ${this.maxActiveRuns})`);
|
|
369
708
|
}
|
|
709
|
+
await controller.bindRun(id);
|
|
370
710
|
this.controllers.set(id, controller);
|
|
371
|
-
return () => {
|
|
372
|
-
if (this.controllers.get(id)
|
|
373
|
-
|
|
711
|
+
return async () => {
|
|
712
|
+
if (this.controllers.get(id) !== controller)
|
|
713
|
+
return;
|
|
714
|
+
const receipts = await controller.listReceipts();
|
|
715
|
+
if (this.controllers.get(id) !== controller)
|
|
716
|
+
return;
|
|
717
|
+
for (const receipt of receipts)
|
|
718
|
+
this.archive(receipt);
|
|
719
|
+
this.controllers.delete(id);
|
|
374
720
|
};
|
|
375
721
|
}
|
|
376
722
|
async enqueue(runId, input) {
|
|
377
723
|
return await this.require(runId).enqueue(input);
|
|
378
724
|
}
|
|
379
|
-
|
|
380
|
-
|
|
725
|
+
async getReceipt(runId, messageId) {
|
|
726
|
+
const id = normalizeRunId(runId);
|
|
727
|
+
if (typeof messageId !== "string" || !messageId.trim()) {
|
|
728
|
+
throw new SteeringValidationError("Steering message id must contain 1-128 characters");
|
|
729
|
+
}
|
|
730
|
+
const controller = this.controllers.get(id);
|
|
731
|
+
const active = controller ? await controller.getReceipt(messageId) : undefined;
|
|
732
|
+
const receipt = active ?? this.archivedReceipts.get(`${id}\u0000${messageId}`);
|
|
733
|
+
return receipt ? jsonClone(receipt) : undefined;
|
|
734
|
+
}
|
|
735
|
+
async abort(runId, reason) {
|
|
736
|
+
await this.require(runId).abort(reason);
|
|
381
737
|
}
|
|
382
738
|
has(runId) {
|
|
383
739
|
return this.controllers.has(normalizeRunId(runId));
|
|
@@ -389,6 +745,17 @@ export class InMemorySteeringRunRegistry {
|
|
|
389
745
|
throw new SteeringRunNotFoundError(`Active run "${id}" was not found`);
|
|
390
746
|
return controller;
|
|
391
747
|
}
|
|
748
|
+
archive(receipt) {
|
|
749
|
+
const key = `${receipt.runId}\u0000${receipt.messageId}`;
|
|
750
|
+
this.archivedReceipts.delete(key);
|
|
751
|
+
this.archivedReceipts.set(key, jsonClone(receipt));
|
|
752
|
+
while (this.archivedReceipts.size > this.maxArchivedReceipts) {
|
|
753
|
+
const oldest = this.archivedReceipts.keys().next().value;
|
|
754
|
+
if (oldest === undefined)
|
|
755
|
+
break;
|
|
756
|
+
this.archivedReceipts.delete(oldest);
|
|
757
|
+
}
|
|
758
|
+
}
|
|
392
759
|
}
|
|
393
760
|
function normalizeRunId(runId) {
|
|
394
761
|
if (typeof runId !== "string") {
|
package/dist/steering.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"steering.js","sourceRoot":"","sources":["../src/steering.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"steering.js","sourceRoot":"","sources":["../src/steering.ts"],"names":[],"mappings":"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"}
|