@nookplot/runtime 0.5.109 → 0.5.114
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/__tests__/autonomous.doomLoop.test.d.ts +2 -0
- package/dist/__tests__/autonomous.doomLoop.test.d.ts.map +1 -0
- package/dist/__tests__/autonomous.doomLoop.test.js +126 -0
- package/dist/__tests__/autonomous.doomLoop.test.js.map +1 -0
- package/dist/__tests__/autonomous.getAvailableActions.test.js +41 -0
- package/dist/__tests__/autonomous.getAvailableActions.test.js.map +1 -1
- package/dist/__tests__/autonomous.loadedSkillRefs.test.d.ts +2 -0
- package/dist/__tests__/autonomous.loadedSkillRefs.test.d.ts.map +1 -0
- package/dist/__tests__/autonomous.loadedSkillRefs.test.js +150 -0
- package/dist/__tests__/autonomous.loadedSkillRefs.test.js.map +1 -0
- package/dist/__tests__/codegen-drift.test.d.ts +23 -0
- package/dist/__tests__/codegen-drift.test.d.ts.map +1 -0
- package/dist/__tests__/codegen-drift.test.js +185 -0
- package/dist/__tests__/codegen-drift.test.js.map +1 -0
- package/dist/__tests__/doomLoop.test.d.ts +6 -0
- package/dist/__tests__/doomLoop.test.d.ts.map +1 -0
- package/dist/__tests__/doomLoop.test.js +144 -0
- package/dist/__tests__/doomLoop.test.js.map +1 -0
- package/dist/__tests__/goalLoop.test.js +111 -0
- package/dist/__tests__/goalLoop.test.js.map +1 -1
- package/dist/__tests__/hooks.test.js +4 -0
- package/dist/__tests__/hooks.test.js.map +1 -1
- package/dist/__tests__/onChainActions.parity.test.d.ts +12 -0
- package/dist/__tests__/onChainActions.parity.test.d.ts.map +1 -0
- package/dist/__tests__/onChainActions.parity.test.js +104 -0
- package/dist/__tests__/onChainActions.parity.test.js.map +1 -0
- package/dist/__tests__/presetLoader.test.js +42 -42
- package/dist/__tests__/sandbox.test.js +24 -24
- package/dist/__tests__/signing.test.d.ts +2 -0
- package/dist/__tests__/signing.test.d.ts.map +1 -0
- package/dist/__tests__/signing.test.js +260 -0
- package/dist/__tests__/signing.test.js.map +1 -0
- package/dist/actionCatalog.generated.d.ts +1 -1
- package/dist/actionCatalog.generated.d.ts.map +1 -1
- package/dist/actionCatalog.generated.js +117 -22
- package/dist/actionCatalog.generated.js.map +1 -1
- package/dist/actionCatalog.js +1 -1
- package/dist/actionCatalog.js.map +1 -1
- package/dist/autonomous.d.ts +11 -0
- package/dist/autonomous.d.ts.map +1 -1
- package/dist/autonomous.js +93 -0
- package/dist/autonomous.js.map +1 -1
- package/dist/conversation/modelLimits.js +17 -17
- package/dist/doomLoop.d.ts +52 -0
- package/dist/doomLoop.d.ts.map +1 -0
- package/dist/doomLoop.js +173 -0
- package/dist/doomLoop.js.map +1 -0
- package/dist/goal/goalLoop.d.ts +3 -0
- package/dist/goal/goalLoop.d.ts.map +1 -1
- package/dist/goal/goalLoop.js +30 -1
- package/dist/goal/goalLoop.js.map +1 -1
- package/dist/goal/goalPrompts.js +27 -27
- package/dist/hooks.d.ts +10 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js.map +1 -1
- package/dist/signalActionMap.d.ts +13 -1
- package/dist/signalActionMap.d.ts.map +1 -1
- package/dist/signalActionMap.js +25 -2
- package/dist/signalActionMap.js.map +1 -1
- package/dist/signing.js +2 -2
- package/dist/signing.js.map +1 -1
- package/package.json +60 -60
- package/dist/__tests__/lineage.test.d.ts +0 -2
- package/dist/__tests__/lineage.test.d.ts.map +0 -1
- package/dist/__tests__/lineage.test.js +0 -131
- package/dist/__tests__/lineage.test.js.map +0 -1
- package/dist/lineage.d.ts +0 -69
- package/dist/lineage.d.ts.map +0 -1
- package/dist/lineage.js +0 -72
- package/dist/lineage.js.map +0 -1
|
@@ -27,28 +27,28 @@ function createMockRuntime() {
|
|
|
27
27
|
identity: { getAddress: vi.fn().mockReturnValue("0xtest") },
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
|
-
const SAMPLE_YAML = `
|
|
31
|
-
version: "1.0"
|
|
32
|
-
gateway: https://gateway.nookplot.com
|
|
33
|
-
agent:
|
|
34
|
-
name: TestAgent
|
|
35
|
-
preset:
|
|
36
|
-
id: "research-biology"
|
|
37
|
-
version: 1
|
|
38
|
-
trustLevel: "verified"
|
|
39
|
-
failurePolicy: "continue"
|
|
40
|
-
maxCostNook: 5000000
|
|
41
|
-
sources:
|
|
42
|
-
- type: "mining"
|
|
43
|
-
label: "Biology traces"
|
|
44
|
-
config:
|
|
45
|
-
domainTags: ["biology"]
|
|
46
|
-
minScore: 0.6
|
|
47
|
-
maxTraces: 10
|
|
48
|
-
- type: "bundle"
|
|
49
|
-
label: "Bio papers"
|
|
50
|
-
config:
|
|
51
|
-
bundleId: 42
|
|
30
|
+
const SAMPLE_YAML = `
|
|
31
|
+
version: "1.0"
|
|
32
|
+
gateway: https://gateway.nookplot.com
|
|
33
|
+
agent:
|
|
34
|
+
name: TestAgent
|
|
35
|
+
preset:
|
|
36
|
+
id: "research-biology"
|
|
37
|
+
version: 1
|
|
38
|
+
trustLevel: "verified"
|
|
39
|
+
failurePolicy: "continue"
|
|
40
|
+
maxCostNook: 5000000
|
|
41
|
+
sources:
|
|
42
|
+
- type: "mining"
|
|
43
|
+
label: "Biology traces"
|
|
44
|
+
config:
|
|
45
|
+
domainTags: ["biology"]
|
|
46
|
+
minScore: 0.6
|
|
47
|
+
maxTraces: 10
|
|
48
|
+
- type: "bundle"
|
|
49
|
+
label: "Bio papers"
|
|
50
|
+
config:
|
|
51
|
+
bundleId: 42
|
|
52
52
|
`;
|
|
53
53
|
const FETCH_RESPONSE = {
|
|
54
54
|
presetId: "research-biology",
|
|
@@ -696,26 +696,26 @@ describe("E2E: forge data/fetch → KG batch ingest → self-model memory", () =
|
|
|
696
696
|
totalItems: 2,
|
|
697
697
|
totalCostNook: 50000,
|
|
698
698
|
};
|
|
699
|
-
const YAML_WITH_AGG = `
|
|
700
|
-
version: "1.0"
|
|
701
|
-
gateway: https://gateway.nookplot.com
|
|
702
|
-
agent:
|
|
703
|
-
name: GenomicsAgent
|
|
704
|
-
preset:
|
|
705
|
-
id: "genomics-researcher"
|
|
706
|
-
version: 1
|
|
707
|
-
trustLevel: "verified"
|
|
708
|
-
failurePolicy: "continue"
|
|
709
|
-
maxCostNook: 5000000
|
|
710
|
-
sources:
|
|
711
|
-
- type: "mining"
|
|
712
|
-
label: "Genomics traces"
|
|
713
|
-
config:
|
|
714
|
-
domainTags: ["genomics"]
|
|
715
|
-
- type: "aggregate"
|
|
716
|
-
label: "Genomics aggregates"
|
|
717
|
-
config:
|
|
718
|
-
domainTags: ["genomics"]
|
|
699
|
+
const YAML_WITH_AGG = `
|
|
700
|
+
version: "1.0"
|
|
701
|
+
gateway: https://gateway.nookplot.com
|
|
702
|
+
agent:
|
|
703
|
+
name: GenomicsAgent
|
|
704
|
+
preset:
|
|
705
|
+
id: "genomics-researcher"
|
|
706
|
+
version: 1
|
|
707
|
+
trustLevel: "verified"
|
|
708
|
+
failurePolicy: "continue"
|
|
709
|
+
maxCostNook: 5000000
|
|
710
|
+
sources:
|
|
711
|
+
- type: "mining"
|
|
712
|
+
label: "Genomics traces"
|
|
713
|
+
config:
|
|
714
|
+
domainTags: ["genomics"]
|
|
715
|
+
- type: "aggregate"
|
|
716
|
+
label: "Genomics aggregates"
|
|
717
|
+
config:
|
|
718
|
+
domainTags: ["genomics"]
|
|
719
719
|
`;
|
|
720
720
|
setupReadFileMocks(YAML_WITH_AGG);
|
|
721
721
|
setupKgAvailable(runtime, AGGREGATE_FETCH_RESPONSE);
|
|
@@ -299,30 +299,30 @@ describe("DockerSandbox lifecycle (via fake docker shim)", () => {
|
|
|
299
299
|
// `exec id sh -c CMD` -> exec sh -c CMD
|
|
300
300
|
// `cp SRC DST` -> cp SRC DST
|
|
301
301
|
// `rm -f id` -> exit 0
|
|
302
|
-
const script = `#!/bin/sh
|
|
303
|
-
case "$1" in
|
|
304
|
-
run) echo "fake-container-abc123"; exit 0 ;;
|
|
305
|
-
port) echo "0.0.0.0:54321"; exit 0 ;;
|
|
306
|
-
inspect) echo "true"; exit 0 ;;
|
|
307
|
-
rm) exit 0 ;;
|
|
308
|
-
exec)
|
|
309
|
-
# Skip "exec", any flags (-i, -w X, -e K=V), and the container id.
|
|
310
|
-
shift
|
|
311
|
-
while [ "$1" = "-i" ] || [ "$1" = "-w" ] || [ "$1" = "-e" ]; do
|
|
312
|
-
if [ "$1" = "-w" ] || [ "$1" = "-e" ]; then shift; fi
|
|
313
|
-
shift
|
|
314
|
-
done
|
|
315
|
-
shift # container id
|
|
316
|
-
exec "$@"
|
|
317
|
-
;;
|
|
318
|
-
cp)
|
|
319
|
-
shift
|
|
320
|
-
src=\${1#*:}
|
|
321
|
-
dst=\${2#*:}
|
|
322
|
-
cp "$src" "$dst"
|
|
323
|
-
;;
|
|
324
|
-
*) echo "shim: unknown $1" 1>&2; exit 2 ;;
|
|
325
|
-
esac
|
|
302
|
+
const script = `#!/bin/sh
|
|
303
|
+
case "$1" in
|
|
304
|
+
run) echo "fake-container-abc123"; exit 0 ;;
|
|
305
|
+
port) echo "0.0.0.0:54321"; exit 0 ;;
|
|
306
|
+
inspect) echo "true"; exit 0 ;;
|
|
307
|
+
rm) exit 0 ;;
|
|
308
|
+
exec)
|
|
309
|
+
# Skip "exec", any flags (-i, -w X, -e K=V), and the container id.
|
|
310
|
+
shift
|
|
311
|
+
while [ "$1" = "-i" ] || [ "$1" = "-w" ] || [ "$1" = "-e" ]; do
|
|
312
|
+
if [ "$1" = "-w" ] || [ "$1" = "-e" ]; then shift; fi
|
|
313
|
+
shift
|
|
314
|
+
done
|
|
315
|
+
shift # container id
|
|
316
|
+
exec "$@"
|
|
317
|
+
;;
|
|
318
|
+
cp)
|
|
319
|
+
shift
|
|
320
|
+
src=\${1#*:}
|
|
321
|
+
dst=\${2#*:}
|
|
322
|
+
cp "$src" "$dst"
|
|
323
|
+
;;
|
|
324
|
+
*) echo "shim: unknown $1" 1>&2; exit 2 ;;
|
|
325
|
+
esac
|
|
326
326
|
`;
|
|
327
327
|
await fs.writeFile(shimBin, script, { mode: 0o755 });
|
|
328
328
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signing.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/signing.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for runtime/src/signing.ts — EIP-712 ForwardRequest signing
|
|
3
|
+
* and the prepare→sign→relay / prepare→sign→send flows.
|
|
4
|
+
*
|
|
5
|
+
* Uses real ethers for signature production; mocks ConnectionManager.request.
|
|
6
|
+
* TEST_PRIVATE_KEY is a Hardhat default account (well-known public key).
|
|
7
|
+
*/
|
|
8
|
+
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
9
|
+
import { ethers } from "ethers";
|
|
10
|
+
import { signForwardRequest, prepareSignRelay, prepareSignSend, } from "../signing.js";
|
|
11
|
+
const TEST_PRIVATE_KEY = "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80";
|
|
12
|
+
const TEST_ADDRESS = "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266";
|
|
13
|
+
const DOMAIN = {
|
|
14
|
+
name: "NookplotForwarder",
|
|
15
|
+
version: "1",
|
|
16
|
+
chainId: 8453,
|
|
17
|
+
verifyingContract: "0x0000000000000000000000000000000000000001",
|
|
18
|
+
};
|
|
19
|
+
const TYPES = {
|
|
20
|
+
ForwardRequest: [
|
|
21
|
+
{ name: "from", type: "address" },
|
|
22
|
+
{ name: "to", type: "address" },
|
|
23
|
+
{ name: "value", type: "uint256" },
|
|
24
|
+
{ name: "gas", type: "uint256" },
|
|
25
|
+
{ name: "nonce", type: "uint256" },
|
|
26
|
+
{ name: "deadline", type: "uint48" },
|
|
27
|
+
{ name: "data", type: "bytes" },
|
|
28
|
+
],
|
|
29
|
+
};
|
|
30
|
+
const FORWARD_REQUEST = {
|
|
31
|
+
from: TEST_ADDRESS,
|
|
32
|
+
to: "0x0000000000000000000000000000000000000002",
|
|
33
|
+
value: "0",
|
|
34
|
+
gas: "100000",
|
|
35
|
+
nonce: "0",
|
|
36
|
+
deadline: 9999999999,
|
|
37
|
+
data: "0xabcd",
|
|
38
|
+
};
|
|
39
|
+
function buildPrep(overrides = {}) {
|
|
40
|
+
return {
|
|
41
|
+
forwardRequest: { ...FORWARD_REQUEST },
|
|
42
|
+
domain: { ...DOMAIN },
|
|
43
|
+
types: { ...TYPES },
|
|
44
|
+
...overrides,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function makeConn(privateKey = TEST_PRIVATE_KEY) {
|
|
48
|
+
const request = vi.fn();
|
|
49
|
+
const conn = {
|
|
50
|
+
privateKey,
|
|
51
|
+
request,
|
|
52
|
+
config: { rpcUrl: "https://mainnet.base.org" },
|
|
53
|
+
};
|
|
54
|
+
return { conn, request };
|
|
55
|
+
}
|
|
56
|
+
describe("signForwardRequest", () => {
|
|
57
|
+
it("produces a 65-byte hex signature", async () => {
|
|
58
|
+
const sig = await signForwardRequest(TEST_PRIVATE_KEY, DOMAIN, TYPES, FORWARD_REQUEST);
|
|
59
|
+
expect(sig).toMatch(/^0x[0-9a-fA-F]{130}$/);
|
|
60
|
+
});
|
|
61
|
+
it("signature recovers the signer address", async () => {
|
|
62
|
+
const sig = await signForwardRequest(TEST_PRIVATE_KEY, DOMAIN, TYPES, FORWARD_REQUEST);
|
|
63
|
+
const recovered = ethers.verifyTypedData(DOMAIN, TYPES, FORWARD_REQUEST, sig);
|
|
64
|
+
expect(recovered.toLowerCase()).toBe(TEST_ADDRESS.toLowerCase());
|
|
65
|
+
});
|
|
66
|
+
it("is deterministic for identical inputs", async () => {
|
|
67
|
+
const sig1 = await signForwardRequest(TEST_PRIVATE_KEY, DOMAIN, TYPES, FORWARD_REQUEST);
|
|
68
|
+
const sig2 = await signForwardRequest(TEST_PRIVATE_KEY, DOMAIN, TYPES, FORWARD_REQUEST);
|
|
69
|
+
expect(sig1).toBe(sig2);
|
|
70
|
+
});
|
|
71
|
+
it("differs across chain IDs (cross-chain replay protection)", async () => {
|
|
72
|
+
const sig1 = await signForwardRequest(TEST_PRIVATE_KEY, DOMAIN, TYPES, FORWARD_REQUEST);
|
|
73
|
+
const sig2 = await signForwardRequest(TEST_PRIVATE_KEY, { ...DOMAIN, chainId: 1 }, TYPES, FORWARD_REQUEST);
|
|
74
|
+
expect(sig1).not.toBe(sig2);
|
|
75
|
+
});
|
|
76
|
+
it("differs across verifyingContracts (cross-contract replay protection)", async () => {
|
|
77
|
+
const sig1 = await signForwardRequest(TEST_PRIVATE_KEY, DOMAIN, TYPES, FORWARD_REQUEST);
|
|
78
|
+
const sig2 = await signForwardRequest(TEST_PRIVATE_KEY, { ...DOMAIN, verifyingContract: "0x000000000000000000000000000000000000dEaD" }, TYPES, FORWARD_REQUEST);
|
|
79
|
+
expect(sig1).not.toBe(sig2);
|
|
80
|
+
});
|
|
81
|
+
it("differs across nonces (replay protection)", async () => {
|
|
82
|
+
const sig1 = await signForwardRequest(TEST_PRIVATE_KEY, DOMAIN, TYPES, FORWARD_REQUEST);
|
|
83
|
+
const sig2 = await signForwardRequest(TEST_PRIVATE_KEY, DOMAIN, TYPES, { ...FORWARD_REQUEST, nonce: "1" });
|
|
84
|
+
expect(sig1).not.toBe(sig2);
|
|
85
|
+
});
|
|
86
|
+
it("differs across data payloads", async () => {
|
|
87
|
+
const sig1 = await signForwardRequest(TEST_PRIVATE_KEY, DOMAIN, TYPES, FORWARD_REQUEST);
|
|
88
|
+
const sig2 = await signForwardRequest(TEST_PRIVATE_KEY, DOMAIN, TYPES, { ...FORWARD_REQUEST, data: "0xdeadbeef" });
|
|
89
|
+
expect(sig1).not.toBe(sig2);
|
|
90
|
+
});
|
|
91
|
+
it("rejects on invalid private key", async () => {
|
|
92
|
+
await expect(signForwardRequest("not-a-key", DOMAIN, TYPES, FORWARD_REQUEST)).rejects.toThrow();
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
describe("prepareSignRelay", () => {
|
|
96
|
+
let conn;
|
|
97
|
+
let request;
|
|
98
|
+
beforeEach(() => {
|
|
99
|
+
const m = makeConn();
|
|
100
|
+
conn = m.conn;
|
|
101
|
+
request = m.request;
|
|
102
|
+
vi.spyOn(console, "warn").mockImplementation(() => { });
|
|
103
|
+
});
|
|
104
|
+
it("posts to prepare path then to /v1/relay", async () => {
|
|
105
|
+
request
|
|
106
|
+
.mockResolvedValueOnce(buildPrep())
|
|
107
|
+
.mockResolvedValueOnce({ txHash: "0xRELAY", status: "ok" });
|
|
108
|
+
const result = await prepareSignRelay(conn, "/v1/prepare/follow", { target: "0xT" });
|
|
109
|
+
expect(request).toHaveBeenNthCalledWith(1, "POST", "/v1/prepare/follow", { target: "0xT" });
|
|
110
|
+
expect(request).toHaveBeenNthCalledWith(2, "POST", "/v1/relay", expect.objectContaining({
|
|
111
|
+
from: TEST_ADDRESS,
|
|
112
|
+
to: FORWARD_REQUEST.to,
|
|
113
|
+
value: "0",
|
|
114
|
+
gas: "100000",
|
|
115
|
+
nonce: "0",
|
|
116
|
+
deadline: 9999999999,
|
|
117
|
+
data: "0xabcd",
|
|
118
|
+
signature: expect.stringMatching(/^0x[0-9a-fA-F]{130}$/),
|
|
119
|
+
}));
|
|
120
|
+
expect(result).toEqual({ txHash: "0xRELAY" });
|
|
121
|
+
});
|
|
122
|
+
it("relay body signature recovers to the agent address", async () => {
|
|
123
|
+
request
|
|
124
|
+
.mockResolvedValueOnce(buildPrep())
|
|
125
|
+
.mockResolvedValueOnce({ txHash: "0xRELAY", status: "ok" });
|
|
126
|
+
await prepareSignRelay(conn, "/v1/prepare/follow", {});
|
|
127
|
+
const relayBody = request.mock.calls[1][2];
|
|
128
|
+
const recovered = ethers.verifyTypedData(DOMAIN, TYPES, FORWARD_REQUEST, relayBody.signature);
|
|
129
|
+
expect(recovered.toLowerCase()).toBe(TEST_ADDRESS.toLowerCase());
|
|
130
|
+
});
|
|
131
|
+
it("throws synchronously if private key not configured", () => {
|
|
132
|
+
const { conn: noKeyConn } = makeConn(null);
|
|
133
|
+
expect(() => prepareSignRelay(noKeyConn, "/v1/prepare/follow", {})).toThrow(/Private key not configured/i);
|
|
134
|
+
});
|
|
135
|
+
it("rejects if prepare response missing forwardRequest", async () => {
|
|
136
|
+
request.mockResolvedValueOnce({ domain: DOMAIN, types: TYPES });
|
|
137
|
+
await expect(prepareSignRelay(conn, "/v1/prepare/follow", {})).rejects.toThrow(/did not return a ForwardRequest/i);
|
|
138
|
+
});
|
|
139
|
+
it("rejects if prepare response missing domain", async () => {
|
|
140
|
+
request.mockResolvedValueOnce({ forwardRequest: FORWARD_REQUEST, types: TYPES });
|
|
141
|
+
await expect(prepareSignRelay(conn, "/v1/prepare/follow", {})).rejects.toThrow(/did not return a ForwardRequest/i);
|
|
142
|
+
});
|
|
143
|
+
it("rejects if prepare response missing types", async () => {
|
|
144
|
+
request.mockResolvedValueOnce({ forwardRequest: FORWARD_REQUEST, domain: DOMAIN });
|
|
145
|
+
await expect(prepareSignRelay(conn, "/v1/prepare/follow", {})).rejects.toThrow(/did not return a ForwardRequest/i);
|
|
146
|
+
});
|
|
147
|
+
it("retries once on 'signature verification failed' error", async () => {
|
|
148
|
+
request
|
|
149
|
+
.mockResolvedValueOnce(buildPrep())
|
|
150
|
+
.mockRejectedValueOnce(new Error("relay failed: signature verification failed"))
|
|
151
|
+
.mockResolvedValueOnce(buildPrep())
|
|
152
|
+
.mockResolvedValueOnce({ txHash: "0xRETRY", status: "ok" });
|
|
153
|
+
const result = await prepareSignRelay(conn, "/v1/prepare/follow", {});
|
|
154
|
+
expect(result).toEqual({ txHash: "0xRETRY" });
|
|
155
|
+
expect(request).toHaveBeenCalledTimes(4);
|
|
156
|
+
});
|
|
157
|
+
it("retries once on nonce-related error", async () => {
|
|
158
|
+
request
|
|
159
|
+
.mockResolvedValueOnce(buildPrep())
|
|
160
|
+
.mockRejectedValueOnce(new Error("invalid nonce: expected 5, got 3"))
|
|
161
|
+
.mockResolvedValueOnce(buildPrep())
|
|
162
|
+
.mockResolvedValueOnce({ txHash: "0xRETRY", status: "ok" });
|
|
163
|
+
const result = await prepareSignRelay(conn, "/v1/prepare/follow", {});
|
|
164
|
+
expect(result).toEqual({ txHash: "0xRETRY" });
|
|
165
|
+
expect(request).toHaveBeenCalledTimes(4);
|
|
166
|
+
});
|
|
167
|
+
it("does not retry on unrelated errors", async () => {
|
|
168
|
+
request
|
|
169
|
+
.mockResolvedValueOnce(buildPrep())
|
|
170
|
+
.mockRejectedValueOnce(new Error("HTTP 500: internal server error"));
|
|
171
|
+
await expect(prepareSignRelay(conn, "/v1/prepare/follow", {})).rejects.toThrow(/HTTP 500/);
|
|
172
|
+
expect(request).toHaveBeenCalledTimes(2);
|
|
173
|
+
});
|
|
174
|
+
it("does not retry beyond once when retry also fails", async () => {
|
|
175
|
+
request
|
|
176
|
+
.mockResolvedValueOnce(buildPrep())
|
|
177
|
+
.mockRejectedValueOnce(new Error("nonce too low"))
|
|
178
|
+
.mockResolvedValueOnce(buildPrep())
|
|
179
|
+
.mockRejectedValueOnce(new Error("nonce too low"));
|
|
180
|
+
await expect(prepareSignRelay(conn, "/v1/prepare/follow", {})).rejects.toThrow(/nonce too low/);
|
|
181
|
+
expect(request).toHaveBeenCalledTimes(4);
|
|
182
|
+
});
|
|
183
|
+
it("serializes concurrent calls for the same private key", async () => {
|
|
184
|
+
let inFlight = 0;
|
|
185
|
+
let maxInFlight = 0;
|
|
186
|
+
request.mockImplementation(async (_method, path) => {
|
|
187
|
+
inFlight++;
|
|
188
|
+
maxInFlight = Math.max(maxInFlight, inFlight);
|
|
189
|
+
await new Promise((r) => setTimeout(r, 10));
|
|
190
|
+
inFlight--;
|
|
191
|
+
if (path === "/v1/relay") {
|
|
192
|
+
return { txHash: "0x" + path.length.toString(16).padStart(64, "0"), status: "ok" };
|
|
193
|
+
}
|
|
194
|
+
return buildPrep();
|
|
195
|
+
});
|
|
196
|
+
await Promise.all([
|
|
197
|
+
prepareSignRelay(conn, "/v1/prepare/a", {}),
|
|
198
|
+
prepareSignRelay(conn, "/v1/prepare/b", {}),
|
|
199
|
+
prepareSignRelay(conn, "/v1/prepare/c", {}),
|
|
200
|
+
]);
|
|
201
|
+
expect(maxInFlight).toBe(1);
|
|
202
|
+
});
|
|
203
|
+
it("does not serialize across different private keys", async () => {
|
|
204
|
+
const m1 = makeConn(TEST_PRIVATE_KEY);
|
|
205
|
+
const m2 = makeConn("0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d");
|
|
206
|
+
let inFlight = 0;
|
|
207
|
+
let maxInFlight = 0;
|
|
208
|
+
const handler = async (_method, path) => {
|
|
209
|
+
inFlight++;
|
|
210
|
+
maxInFlight = Math.max(maxInFlight, inFlight);
|
|
211
|
+
await new Promise((r) => setTimeout(r, 10));
|
|
212
|
+
inFlight--;
|
|
213
|
+
if (path === "/v1/relay")
|
|
214
|
+
return { txHash: "0xOK", status: "ok" };
|
|
215
|
+
return buildPrep();
|
|
216
|
+
};
|
|
217
|
+
m1.request.mockImplementation(handler);
|
|
218
|
+
m2.request.mockImplementation(handler);
|
|
219
|
+
await Promise.all([
|
|
220
|
+
prepareSignRelay(m1.conn, "/v1/prepare/a", {}),
|
|
221
|
+
prepareSignRelay(m2.conn, "/v1/prepare/b", {}),
|
|
222
|
+
]);
|
|
223
|
+
expect(maxInFlight).toBeGreaterThan(1);
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
describe("prepareSignSend", () => {
|
|
227
|
+
it("returns empty txHashes when prepare yields no txRequests", async () => {
|
|
228
|
+
const { conn, request } = makeConn();
|
|
229
|
+
request.mockResolvedValueOnce({ txRequests: [], meta: { reason: "nothing-to-claim" } });
|
|
230
|
+
const result = await prepareSignSend(conn, "/v1/prepare/raw/claim", {});
|
|
231
|
+
expect(result).toEqual({ txHashes: [], meta: { reason: "nothing-to-claim" } });
|
|
232
|
+
});
|
|
233
|
+
it("throws synchronously if private key not configured", () => {
|
|
234
|
+
const { conn } = makeConn(null);
|
|
235
|
+
expect(() => prepareSignSend(conn, "/v1/prepare/raw/claim", {})).toThrow(/Private key not configured/i);
|
|
236
|
+
});
|
|
237
|
+
it("rejects if prepare returns no txRequests array", async () => {
|
|
238
|
+
const { conn, request } = makeConn();
|
|
239
|
+
request.mockResolvedValueOnce({ meta: {} });
|
|
240
|
+
await expect(prepareSignSend(conn, "/v1/prepare/raw/claim", {})).rejects.toThrow(/did not return txRequests/i);
|
|
241
|
+
});
|
|
242
|
+
it("rejects if prepare returns non-array txRequests", async () => {
|
|
243
|
+
const { conn, request } = makeConn();
|
|
244
|
+
request.mockResolvedValueOnce({ txRequests: "not-an-array" });
|
|
245
|
+
await expect(prepareSignSend(conn, "/v1/prepare/raw/claim", {})).rejects.toThrow(/did not return txRequests/i);
|
|
246
|
+
});
|
|
247
|
+
it("returns empty meta object when meta absent and txRequests empty", async () => {
|
|
248
|
+
const { conn, request } = makeConn();
|
|
249
|
+
request.mockResolvedValueOnce({ txRequests: [] });
|
|
250
|
+
const result = await prepareSignSend(conn, "/v1/prepare/raw/claim", {});
|
|
251
|
+
expect(result.meta).toEqual({});
|
|
252
|
+
});
|
|
253
|
+
it("posts to prepare path with body", async () => {
|
|
254
|
+
const { conn, request } = makeConn();
|
|
255
|
+
request.mockResolvedValueOnce({ txRequests: [] });
|
|
256
|
+
await prepareSignSend(conn, "/v1/prepare/raw/claim", { epoch: 42 });
|
|
257
|
+
expect(request).toHaveBeenCalledWith("POST", "/v1/prepare/raw/claim", { epoch: 42 });
|
|
258
|
+
});
|
|
259
|
+
});
|
|
260
|
+
//# sourceMappingURL=signing.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signing.test.js","sourceRoot":"","sources":["../../src/__tests__/signing.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { ActionInfo } from "./actionCatalog.js";
|
|
2
|
-
/** MCP-derived action catalog entries (
|
|
2
|
+
/** MCP-derived action catalog entries (435 tools). */
|
|
3
3
|
export declare const GENERATED_CATALOG: Record<string, ActionInfo>;
|
|
4
4
|
//# sourceMappingURL=actionCatalog.generated.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actionCatalog.generated.d.ts","sourceRoot":"","sources":["../src/actionCatalog.generated.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"actionCatalog.generated.d.ts","sourceRoot":"","sources":["../src/actionCatalog.generated.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CA2lExD,CAAC"}
|