@polpo-ai/core 0.18.14 → 0.18.16
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 +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/run-delivery-owner.d.ts.map +1 -1
- package/dist/run-delivery-owner.js +68 -4
- package/dist/run-delivery-owner.js.map +1 -1
- package/dist/run-delivery-owner.test.js +251 -4
- package/dist/run-delivery-owner.test.js.map +1 -1
- package/dist/session-client-tool-settlement.d.ts +93 -0
- package/dist/session-client-tool-settlement.d.ts.map +1 -0
- package/dist/session-client-tool-settlement.js +195 -0
- package/dist/session-client-tool-settlement.js.map +1 -0
- package/dist/session-client-tool-settlement.test.d.ts +2 -0
- package/dist/session-client-tool-settlement.test.d.ts.map +1 -0
- package/dist/session-client-tool-settlement.test.js +143 -0
- package/dist/session-client-tool-settlement.test.js.map +1 -0
- package/dist/session-store.d.ts +7 -0
- package/dist/session-store.d.ts.map +1 -1
- package/dist/session-store.js.map +1 -1
- package/dist/tool-execution-receipts.d.ts +23 -0
- package/dist/tool-execution-receipts.d.ts.map +1 -1
- package/dist/tool-execution-receipts.js +108 -0
- package/dist/tool-execution-receipts.js.map +1 -1
- package/dist/tool-execution-receipts.test.js +135 -2
- package/dist/tool-execution-receipts.test.js.map +1 -1
- package/package.json +5 -1
|
@@ -1,3 +1,111 @@
|
|
|
1
|
+
const TOOL_RECEIPT_SETTLEMENT_MAX_ATTEMPTS = 3;
|
|
2
|
+
const TOOL_RECEIPT_SETTLEMENT_RETRY_DELAYS_MS = [50, 150];
|
|
3
|
+
const SQLSTATE_CAUSE_CODE = /^[0-9A-Z]{5}$/;
|
|
4
|
+
const SAFE_TRANSPORT_CAUSE_CODES = new Set([
|
|
5
|
+
"EAI_AGAIN",
|
|
6
|
+
"ECONNREFUSED",
|
|
7
|
+
"ECONNRESET",
|
|
8
|
+
"ENOTFOUND",
|
|
9
|
+
"EPIPE",
|
|
10
|
+
"ETIMEDOUT",
|
|
11
|
+
"UND_ERR_BODY_TIMEOUT",
|
|
12
|
+
"UND_ERR_CONNECT_TIMEOUT",
|
|
13
|
+
"UND_ERR_HEADERS_TIMEOUT",
|
|
14
|
+
"UND_ERR_SOCKET",
|
|
15
|
+
]);
|
|
16
|
+
/**
|
|
17
|
+
* Safe terminal error for a tool whose result exists but whose durable receipt
|
|
18
|
+
* could not be confirmed. The original database error is retained as a
|
|
19
|
+
* non-enumerable cause and must never be serialized into public Run events.
|
|
20
|
+
*/
|
|
21
|
+
export class ToolReceiptSettlementError extends Error {
|
|
22
|
+
name = "ToolReceiptSettlementError";
|
|
23
|
+
code = "tool_receipt_settlement_failed";
|
|
24
|
+
operation = "tool_receipt_settle";
|
|
25
|
+
attempts;
|
|
26
|
+
causeCode;
|
|
27
|
+
constructor(attempts, cause) {
|
|
28
|
+
super("Tool receipt settlement failed", { cause });
|
|
29
|
+
this.attempts = attempts;
|
|
30
|
+
const causeCode = safeCauseCode(cause);
|
|
31
|
+
if (causeCode)
|
|
32
|
+
this.causeCode = causeCode;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Confirm the same terminal receipt with bounded retries. A retry never claims
|
|
37
|
+
* or executes the tool again. Atomic stores can therefore recover both a
|
|
38
|
+
* failure before commit and a lost acknowledgement after commit.
|
|
39
|
+
*/
|
|
40
|
+
export async function settleToolExecutionReceiptWithRetry(store, input, options = {}) {
|
|
41
|
+
let lastError;
|
|
42
|
+
for (let attempt = 1; attempt <= TOOL_RECEIPT_SETTLEMENT_MAX_ATTEMPTS; attempt += 1) {
|
|
43
|
+
if (attempt > 1 && options.signal?.aborted) {
|
|
44
|
+
throw new ToolReceiptSettlementError(attempt - 1, lastError);
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
return await store.settle(input);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
lastError = error;
|
|
51
|
+
if (attempt === TOOL_RECEIPT_SETTLEMENT_MAX_ATTEMPTS || options.signal?.aborted) {
|
|
52
|
+
throw new ToolReceiptSettlementError(attempt, error);
|
|
53
|
+
}
|
|
54
|
+
const shouldRetry = await waitForSettlementRetry(TOOL_RECEIPT_SETTLEMENT_RETRY_DELAYS_MS[attempt - 1], options.signal);
|
|
55
|
+
if (!shouldRetry)
|
|
56
|
+
throw new ToolReceiptSettlementError(attempt, error);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
throw new ToolReceiptSettlementError(TOOL_RECEIPT_SETTLEMENT_MAX_ATTEMPTS, lastError);
|
|
60
|
+
}
|
|
61
|
+
function waitForSettlementRetry(delayMs, signal) {
|
|
62
|
+
if (signal?.aborted)
|
|
63
|
+
return Promise.resolve(false);
|
|
64
|
+
return new Promise((resolve) => {
|
|
65
|
+
let settled = false;
|
|
66
|
+
let timer;
|
|
67
|
+
const finish = (shouldRetry) => {
|
|
68
|
+
if (settled)
|
|
69
|
+
return;
|
|
70
|
+
settled = true;
|
|
71
|
+
if (timer)
|
|
72
|
+
clearTimeout(timer);
|
|
73
|
+
signal?.removeEventListener("abort", onAbort);
|
|
74
|
+
resolve(shouldRetry);
|
|
75
|
+
};
|
|
76
|
+
const onAbort = () => finish(false);
|
|
77
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
78
|
+
timer = setTimeout(() => finish(true), delayMs);
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
function safeCauseCode(error) {
|
|
82
|
+
const seen = new Set();
|
|
83
|
+
let current = error;
|
|
84
|
+
for (let depth = 0; depth < 5 && current !== null && typeof current === "object"; depth += 1) {
|
|
85
|
+
if (seen.has(current))
|
|
86
|
+
return undefined;
|
|
87
|
+
seen.add(current);
|
|
88
|
+
const candidate = current;
|
|
89
|
+
let code;
|
|
90
|
+
try {
|
|
91
|
+
code = candidate.code;
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
// Diagnostic extraction must never replace the settlement failure.
|
|
95
|
+
}
|
|
96
|
+
if (typeof code === "string"
|
|
97
|
+
&& (SQLSTATE_CAUSE_CODE.test(code) || SAFE_TRANSPORT_CAUSE_CODES.has(code))) {
|
|
98
|
+
return code;
|
|
99
|
+
}
|
|
100
|
+
try {
|
|
101
|
+
current = candidate.cause;
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
return undefined;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return undefined;
|
|
108
|
+
}
|
|
1
109
|
function hashText(value) {
|
|
2
110
|
// Deterministic 64-bit FNV-1a. The fingerprint is an opaque correlation key,
|
|
3
111
|
// not a credential or authenticity primitive.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-execution-receipts.js","sourceRoot":"","sources":["../src/tool-execution-receipts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tool-execution-receipts.js","sourceRoot":"","sources":["../src/tool-execution-receipts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { InMemoryToolExecutionReceiptStore, toolArgumentsFingerprint, } from "./tool-execution-receipts.js";
|
|
1
|
+
import { describe, expect, it, vi } from "vitest";
|
|
2
|
+
import { InMemoryToolExecutionReceiptStore, ToolReceiptSettlementError, settleToolExecutionReceiptWithRetry, toolArgumentsFingerprint, } from "./tool-execution-receipts.js";
|
|
3
3
|
describe("tool execution receipts", () => {
|
|
4
4
|
it("replays a completed receipt without admitting a second execution", async () => {
|
|
5
5
|
const store = new InMemoryToolExecutionReceiptStore();
|
|
@@ -33,5 +33,138 @@ describe("tool execution receipts", () => {
|
|
|
33
33
|
argumentsFingerprint: fingerprint,
|
|
34
34
|
})).resolves.toMatchObject({ action: "reject", code: "resume_contract_mismatch" });
|
|
35
35
|
});
|
|
36
|
+
it("retries only the same settlement after a failure before commit", async () => {
|
|
37
|
+
const input = { callId: "call-1", state: "completed", result: "created" };
|
|
38
|
+
const settle = vi.fn()
|
|
39
|
+
.mockRejectedValueOnce(new Error("temporary write failure"))
|
|
40
|
+
.mockResolvedValueOnce({
|
|
41
|
+
callId: "call-1",
|
|
42
|
+
toolName: "create",
|
|
43
|
+
contractFingerprint: "contract-1",
|
|
44
|
+
argumentsFingerprint: "arguments-1",
|
|
45
|
+
state: "completed",
|
|
46
|
+
result: "created",
|
|
47
|
+
});
|
|
48
|
+
await expect(settleToolExecutionReceiptWithRetry({ claim: vi.fn(), settle }, input)).resolves.toMatchObject({ state: "completed", result: "created" });
|
|
49
|
+
expect(settle).toHaveBeenCalledTimes(2);
|
|
50
|
+
expect(settle.mock.calls).toEqual([[input], [input]]);
|
|
51
|
+
});
|
|
52
|
+
it("confirms the same settlement after the first acknowledgement is lost", async () => {
|
|
53
|
+
const store = new InMemoryToolExecutionReceiptStore();
|
|
54
|
+
await store.claim({
|
|
55
|
+
callId: "call-1",
|
|
56
|
+
toolName: "create",
|
|
57
|
+
contractFingerprint: "contract-1",
|
|
58
|
+
argumentsFingerprint: "arguments-1",
|
|
59
|
+
});
|
|
60
|
+
const settle = vi.fn(async (...args) => {
|
|
61
|
+
const receipt = await store.settle(...args);
|
|
62
|
+
if (settle.mock.calls.length === 1)
|
|
63
|
+
throw new Error("acknowledgement lost");
|
|
64
|
+
return receipt;
|
|
65
|
+
});
|
|
66
|
+
const input = { callId: "call-1", state: "completed", result: "created" };
|
|
67
|
+
await expect(settleToolExecutionReceiptWithRetry({ claim: store.claim.bind(store), settle }, input)).resolves.toMatchObject({ state: "completed", result: "created" });
|
|
68
|
+
expect(settle).toHaveBeenCalledTimes(2);
|
|
69
|
+
await expect(store.claim({
|
|
70
|
+
callId: "call-1",
|
|
71
|
+
toolName: "create",
|
|
72
|
+
contractFingerprint: "contract-1",
|
|
73
|
+
argumentsFingerprint: "arguments-1",
|
|
74
|
+
})).resolves.toMatchObject({ action: "replay", result: "created" });
|
|
75
|
+
});
|
|
76
|
+
it("bounds failed settlement attempts and exposes only structured safe diagnostics", async () => {
|
|
77
|
+
const databaseError = Object.assign(new Error("UPDATE tool_execution_receipts params: secret customer payload"), { code: "40001" });
|
|
78
|
+
const settle = vi.fn(async () => { throw databaseError; });
|
|
79
|
+
const failure = await settleToolExecutionReceiptWithRetry({ claim: vi.fn(), settle }, { callId: "call-1", state: "completed", result: "secret customer payload" }).catch((error) => error);
|
|
80
|
+
expect(settle).toHaveBeenCalledTimes(3);
|
|
81
|
+
expect(failure).toBeInstanceOf(ToolReceiptSettlementError);
|
|
82
|
+
expect(failure).toMatchObject({
|
|
83
|
+
message: "Tool receipt settlement failed",
|
|
84
|
+
code: "tool_receipt_settlement_failed",
|
|
85
|
+
operation: "tool_receipt_settle",
|
|
86
|
+
attempts: 3,
|
|
87
|
+
causeCode: "40001",
|
|
88
|
+
});
|
|
89
|
+
expect(JSON.stringify(failure)).not.toContain("secret customer payload");
|
|
90
|
+
});
|
|
91
|
+
it("does not begin another settlement attempt after abort", async () => {
|
|
92
|
+
const controller = new AbortController();
|
|
93
|
+
const settle = vi.fn(async () => {
|
|
94
|
+
controller.abort("run_lease_lost");
|
|
95
|
+
throw new Error("write interrupted");
|
|
96
|
+
});
|
|
97
|
+
const failure = await settleToolExecutionReceiptWithRetry({ claim: vi.fn(), settle }, { callId: "call-1", state: "completed", result: "created" }, { signal: controller.signal }).catch((error) => error);
|
|
98
|
+
expect(settle).toHaveBeenCalledTimes(1);
|
|
99
|
+
expect(failure).toMatchObject({
|
|
100
|
+
code: "tool_receipt_settlement_failed",
|
|
101
|
+
attempts: 1,
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
it("still makes the first settlement attempt for a result obtained before abort", async () => {
|
|
105
|
+
const controller = new AbortController();
|
|
106
|
+
controller.abort("run_lease_lost");
|
|
107
|
+
const settle = vi.fn(async () => ({
|
|
108
|
+
callId: "call-1",
|
|
109
|
+
toolName: "create",
|
|
110
|
+
contractFingerprint: "contract-1",
|
|
111
|
+
argumentsFingerprint: "arguments-1",
|
|
112
|
+
state: "completed",
|
|
113
|
+
result: "created",
|
|
114
|
+
}));
|
|
115
|
+
await expect(settleToolExecutionReceiptWithRetry({ claim: vi.fn(), settle }, { callId: "call-1", state: "completed", result: "created" }, { signal: controller.signal })).resolves.toMatchObject({ state: "completed", result: "created" });
|
|
116
|
+
expect(settle).toHaveBeenCalledOnce();
|
|
117
|
+
});
|
|
118
|
+
it("rechecks abort immediately before a retry after its timer resolves", async () => {
|
|
119
|
+
let abortReads = 0;
|
|
120
|
+
const signal = {
|
|
121
|
+
get aborted() {
|
|
122
|
+
abortReads += 1;
|
|
123
|
+
return abortReads >= 3;
|
|
124
|
+
},
|
|
125
|
+
addEventListener: vi.fn(),
|
|
126
|
+
removeEventListener: vi.fn(),
|
|
127
|
+
};
|
|
128
|
+
const settle = vi.fn()
|
|
129
|
+
.mockRejectedValueOnce(new Error("temporary write failure"))
|
|
130
|
+
.mockResolvedValueOnce({ state: "completed", result: "created" });
|
|
131
|
+
const failure = await settleToolExecutionReceiptWithRetry({ claim: vi.fn(), settle }, { callId: "call-1", state: "completed", result: "created" }, { signal }).catch((error) => error);
|
|
132
|
+
expect(settle).toHaveBeenCalledOnce();
|
|
133
|
+
expect(failure).toMatchObject({
|
|
134
|
+
code: "tool_receipt_settlement_failed",
|
|
135
|
+
attempts: 1,
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
it("does not expose arbitrary alphanumeric error codes", async () => {
|
|
139
|
+
const controller = new AbortController();
|
|
140
|
+
controller.abort("run_lease_lost");
|
|
141
|
+
const settle = vi.fn(async () => {
|
|
142
|
+
throw Object.assign(new Error("database failure"), { code: "INTERNAL42" });
|
|
143
|
+
});
|
|
144
|
+
const failure = await settleToolExecutionReceiptWithRetry({ claim: vi.fn(), settle }, { callId: "call-1", state: "completed", result: "secret" }, { signal: controller.signal }).catch((error) => error);
|
|
145
|
+
expect(failure).toMatchObject({
|
|
146
|
+
code: "tool_receipt_settlement_failed",
|
|
147
|
+
attempts: 1,
|
|
148
|
+
});
|
|
149
|
+
expect(failure.causeCode).toBeUndefined();
|
|
150
|
+
expect(JSON.stringify(failure)).not.toContain("INTERNAL42");
|
|
151
|
+
});
|
|
152
|
+
it("keeps diagnostic extraction best-effort when code and cause getters throw", async () => {
|
|
153
|
+
const controller = new AbortController();
|
|
154
|
+
controller.abort("run_lease_lost");
|
|
155
|
+
const hostile = new Error("database failure");
|
|
156
|
+
Object.defineProperties(hostile, {
|
|
157
|
+
code: { get: () => { throw new Error("code getter failure"); } },
|
|
158
|
+
cause: { get: () => { throw new Error("cause getter failure"); } },
|
|
159
|
+
});
|
|
160
|
+
const settle = vi.fn(async () => { throw hostile; });
|
|
161
|
+
const failure = await settleToolExecutionReceiptWithRetry({ claim: vi.fn(), settle }, { callId: "call-1", state: "completed", result: "secret" }, { signal: controller.signal }).catch((error) => error);
|
|
162
|
+
expect(failure).toMatchObject({
|
|
163
|
+
message: "Tool receipt settlement failed",
|
|
164
|
+
code: "tool_receipt_settlement_failed",
|
|
165
|
+
attempts: 1,
|
|
166
|
+
});
|
|
167
|
+
expect(failure.causeCode).toBeUndefined();
|
|
168
|
+
});
|
|
36
169
|
});
|
|
37
170
|
//# sourceMappingURL=tool-execution-receipts.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-execution-receipts.test.js","sourceRoot":"","sources":["../src/tool-execution-receipts.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-execution-receipts.test.js","sourceRoot":"","sources":["../src/tool-execution-receipts.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.18.
|
|
3
|
+
"version": "0.18.16",
|
|
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",
|
|
@@ -353,6 +353,10 @@
|
|
|
353
353
|
"./run-state-monitor": {
|
|
354
354
|
"types": "./dist/run-state-monitor.d.ts",
|
|
355
355
|
"import": "./dist/run-state-monitor.js"
|
|
356
|
+
},
|
|
357
|
+
"./session-client-tool-settlement": {
|
|
358
|
+
"types": "./dist/session-client-tool-settlement.d.ts",
|
|
359
|
+
"import": "./dist/session-client-tool-settlement.js"
|
|
356
360
|
}
|
|
357
361
|
},
|
|
358
362
|
"sideEffects": false,
|