@nookplot/runtime 0.5.145 → 0.5.147

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 (153) hide show
  1. package/dist/__tests__/apiMarketplace.test.js +2 -189
  2. package/dist/__tests__/apiMarketplace.test.js.map +1 -1
  3. package/dist/__tests__/autonomous.dedup.test.js +0 -11
  4. package/dist/__tests__/autonomous.dedup.test.js.map +1 -1
  5. package/dist/__tests__/autonomous.getAvailableActions.test.js +1 -13
  6. package/dist/__tests__/autonomous.getAvailableActions.test.js.map +1 -1
  7. package/dist/__tests__/autonomous.v11OpenSignals.test.js +10 -0
  8. package/dist/__tests__/autonomous.v11OpenSignals.test.js.map +1 -1
  9. package/dist/__tests__/bdAgentPack.test.js +1 -1
  10. package/dist/__tests__/bdAgentPack.test.js.map +1 -1
  11. package/dist/__tests__/bounties.test.js +0 -12
  12. package/dist/__tests__/bounties.test.js.map +1 -1
  13. package/dist/__tests__/codegen-drift.test.js +1 -3
  14. package/dist/__tests__/codegen-drift.test.js.map +1 -1
  15. package/dist/__tests__/conversation/modelThresholdsParity.test.js +14 -19
  16. package/dist/__tests__/conversation/modelThresholdsParity.test.js.map +1 -1
  17. package/dist/__tests__/economy.frontierInference.test.d.ts +2 -0
  18. package/dist/__tests__/economy.frontierInference.test.d.ts.map +1 -0
  19. package/dist/__tests__/economy.frontierInference.test.js +61 -0
  20. package/dist/__tests__/economy.frontierInference.test.js.map +1 -0
  21. package/dist/__tests__/economy.surplusBranch.test.js +2 -66
  22. package/dist/__tests__/economy.surplusBranch.test.js.map +1 -1
  23. package/dist/__tests__/helpers/mockRuntime.d.ts.map +1 -1
  24. package/dist/__tests__/helpers/mockRuntime.js +0 -7
  25. package/dist/__tests__/helpers/mockRuntime.js.map +1 -1
  26. package/dist/__tests__/pack.test.js +14 -14
  27. package/dist/__tests__/packLoader.test.js +4 -4
  28. package/dist/__tests__/presetLoader.test.js +42 -42
  29. package/dist/__tests__/sandbox.test.js +24 -24
  30. package/dist/__tests__/surplusInference.test.js +54 -8
  31. package/dist/__tests__/surplusInference.test.js.map +1 -1
  32. package/dist/actionCatalog.d.ts.map +1 -1
  33. package/dist/actionCatalog.generated.d.ts +1 -1
  34. package/dist/actionCatalog.generated.d.ts.map +1 -1
  35. package/dist/actionCatalog.generated.js +27 -152
  36. package/dist/actionCatalog.generated.js.map +1 -1
  37. package/dist/actionCatalog.js +10 -0
  38. package/dist/actionCatalog.js.map +1 -1
  39. package/dist/api-marketplace.d.ts +0 -146
  40. package/dist/api-marketplace.d.ts.map +1 -1
  41. package/dist/api-marketplace.js +0 -218
  42. package/dist/api-marketplace.js.map +1 -1
  43. package/dist/autonomous.d.ts +9 -16
  44. package/dist/autonomous.d.ts.map +1 -1
  45. package/dist/autonomous.js +59 -276
  46. package/dist/autonomous.js.map +1 -1
  47. package/dist/bounties.d.ts +0 -8
  48. package/dist/bounties.d.ts.map +1 -1
  49. package/dist/bounties.js +0 -2
  50. package/dist/bounties.js.map +1 -1
  51. package/dist/contentSafety.d.ts +1 -1
  52. package/dist/contentSafety.d.ts.map +1 -1
  53. package/dist/contentSafety.js +2 -6
  54. package/dist/contentSafety.js.map +1 -1
  55. package/dist/conversation/modelLimits.js +17 -17
  56. package/dist/discovery.js +1 -1
  57. package/dist/discovery.js.map +1 -1
  58. package/dist/economy.d.ts +15 -10
  59. package/dist/economy.d.ts.map +1 -1
  60. package/dist/economy.js +29 -16
  61. package/dist/economy.js.map +1 -1
  62. package/dist/frontierPass.d.ts +30 -0
  63. package/dist/frontierPass.d.ts.map +1 -0
  64. package/dist/frontierPass.js +42 -0
  65. package/dist/frontierPass.js.map +1 -0
  66. package/dist/identity.d.ts +0 -51
  67. package/dist/identity.d.ts.map +1 -1
  68. package/dist/identity.js +0 -50
  69. package/dist/identity.js.map +1 -1
  70. package/dist/index.d.ts +3 -18
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +2 -15
  73. package/dist/index.js.map +1 -1
  74. package/dist/inference/surplusInference.d.ts +29 -1
  75. package/dist/inference/surplusInference.d.ts.map +1 -1
  76. package/dist/inference/surplusInference.js +132 -15
  77. package/dist/inference/surplusInference.js.map +1 -1
  78. package/dist/signalActionMap.d.ts.map +1 -1
  79. package/dist/signalActionMap.js +13 -15
  80. package/dist/signalActionMap.js.map +1 -1
  81. package/dist/swarms.d.ts +0 -13
  82. package/dist/swarms.d.ts.map +1 -1
  83. package/dist/swarms.js +0 -4
  84. package/dist/swarms.js.map +1 -1
  85. package/dist/tools.js +1 -1
  86. package/dist/tools.js.map +1 -1
  87. package/dist/types.d.ts +1 -22
  88. package/dist/types.d.ts.map +1 -1
  89. package/package.json +1 -1
  90. package/dist/__tests__/autonomous.goalBootstrap.test.d.ts +0 -2
  91. package/dist/__tests__/autonomous.goalBootstrap.test.d.ts.map +0 -1
  92. package/dist/__tests__/autonomous.goalBootstrap.test.js +0 -148
  93. package/dist/__tests__/autonomous.goalBootstrap.test.js.map +0 -1
  94. package/dist/__tests__/autonomous.miningTrack.test.d.ts +0 -2
  95. package/dist/__tests__/autonomous.miningTrack.test.d.ts.map +0 -1
  96. package/dist/__tests__/autonomous.miningTrack.test.js +0 -38
  97. package/dist/__tests__/autonomous.miningTrack.test.js.map +0 -1
  98. package/dist/__tests__/autonomous.payApi.test.d.ts +0 -2
  99. package/dist/__tests__/autonomous.payApi.test.d.ts.map +0 -1
  100. package/dist/__tests__/autonomous.payApi.test.js +0 -73
  101. package/dist/__tests__/autonomous.payApi.test.js.map +0 -1
  102. package/dist/__tests__/autonomous.workspaceOpportunity.test.d.ts +0 -2
  103. package/dist/__tests__/autonomous.workspaceOpportunity.test.d.ts.map +0 -1
  104. package/dist/__tests__/autonomous.workspaceOpportunity.test.js +0 -212
  105. package/dist/__tests__/autonomous.workspaceOpportunity.test.js.map +0 -1
  106. package/dist/__tests__/goalLoop.test.d.ts +0 -2
  107. package/dist/__tests__/goalLoop.test.d.ts.map +0 -1
  108. package/dist/__tests__/goalLoop.test.js +0 -358
  109. package/dist/__tests__/goalLoop.test.js.map +0 -1
  110. package/dist/__tests__/loadProfile.test.d.ts +0 -8
  111. package/dist/__tests__/loadProfile.test.d.ts.map +0 -1
  112. package/dist/__tests__/loadProfile.test.js +0 -134
  113. package/dist/__tests__/loadProfile.test.js.map +0 -1
  114. package/dist/__tests__/mining.test.d.ts +0 -2
  115. package/dist/__tests__/mining.test.d.ts.map +0 -1
  116. package/dist/__tests__/mining.test.js +0 -306
  117. package/dist/__tests__/mining.test.js.map +0 -1
  118. package/dist/__tests__/signalActionMap.test.d.ts +0 -17
  119. package/dist/__tests__/signalActionMap.test.d.ts.map +0 -1
  120. package/dist/__tests__/signalActionMap.test.js +0 -165
  121. package/dist/__tests__/signalActionMap.test.js.map +0 -1
  122. package/dist/__tests__/usdcBudget.test.d.ts +0 -2
  123. package/dist/__tests__/usdcBudget.test.d.ts.map +0 -1
  124. package/dist/__tests__/usdcBudget.test.js +0 -128
  125. package/dist/__tests__/usdcBudget.test.js.map +0 -1
  126. package/dist/__tests__/x402.test.d.ts +0 -2
  127. package/dist/__tests__/x402.test.d.ts.map +0 -1
  128. package/dist/__tests__/x402.test.js +0 -117
  129. package/dist/__tests__/x402.test.js.map +0 -1
  130. package/dist/goal/goalLoop.d.ts +0 -78
  131. package/dist/goal/goalLoop.d.ts.map +0 -1
  132. package/dist/goal/goalLoop.js +0 -388
  133. package/dist/goal/goalLoop.js.map +0 -1
  134. package/dist/goal/goalPrompts.d.ts +0 -20
  135. package/dist/goal/goalPrompts.d.ts.map +0 -1
  136. package/dist/goal/goalPrompts.js +0 -54
  137. package/dist/goal/goalPrompts.js.map +0 -1
  138. package/dist/goal/types.d.ts +0 -102
  139. package/dist/goal/types.d.ts.map +0 -1
  140. package/dist/goal/types.js +0 -7
  141. package/dist/goal/types.js.map +0 -1
  142. package/dist/loadProfile.d.ts +0 -100
  143. package/dist/loadProfile.d.ts.map +0 -1
  144. package/dist/loadProfile.js +0 -221
  145. package/dist/loadProfile.js.map +0 -1
  146. package/dist/usdcBudget.d.ts +0 -90
  147. package/dist/usdcBudget.d.ts.map +0 -1
  148. package/dist/usdcBudget.js +0 -155
  149. package/dist/usdcBudget.js.map +0 -1
  150. package/dist/x402.d.ts +0 -69
  151. package/dist/x402.d.ts.map +0 -1
  152. package/dist/x402.js +0 -139
  153. package/dist/x402.js.map +0 -1
@@ -0,0 +1,61 @@
1
+ /**
2
+ * EconomyManager.frontierInference() — the one-shot frontier (Surplus) call that
3
+ * backs the `use_frontier_model` autonomous action (spends an owner-reserved
4
+ * pass). Contract:
5
+ * 1. ALWAYS routes to Surplus regardless of the configured default source.
6
+ * 2. Returns `costUsdcMicros` = the spend-tracker delta for this call (so the
7
+ * caller can finalize the reserved pass with the real settled spend).
8
+ * 3. Throws a keyless SurplusError (no network) when there's no private key.
9
+ *
10
+ * `surplusInference` is mocked here so the test doesn't require the optional
11
+ * x402/viem peers (the real-client path is covered by economy.surplusBranch).
12
+ */
13
+ import { describe, it, expect, vi, beforeEach } from "vitest";
14
+ vi.mock("../inference/surplusInference.js", async (importOriginal) => {
15
+ const actual = await importOriginal();
16
+ return {
17
+ ...actual,
18
+ // Simulate an x402 spend of $0.042 by bumping the shared tracker, and echo
19
+ // the requested model so we can assert the override took effect.
20
+ surplusInference: vi.fn(async (params) => {
21
+ if (params.tracker)
22
+ params.tracker.spentBaseUnits += 42000n;
23
+ return {
24
+ content: "frontier says hi",
25
+ model: params.options?.model ?? "unknown",
26
+ provider: "surplus",
27
+ usage: { promptTokens: 1, completionTokens: 1, totalTokens: 2, creditsCost: 0 },
28
+ };
29
+ }),
30
+ };
31
+ });
32
+ const { ConnectionManager } = await import("../connection.js");
33
+ const { EconomyManager } = await import("../economy.js");
34
+ const surplusMod = await import("../inference/surplusInference.js");
35
+ const TEST_PK = "0x" + "ab".repeat(32);
36
+ const TEST_BASE = "https://gateway.example.com";
37
+ const MSGS = [{ role: "user", content: "Prove the theorem." }];
38
+ beforeEach(() => vi.clearAllMocks());
39
+ describe("EconomyManager.frontierInference()", () => {
40
+ it("routes to Surplus even when the default source is platform, and returns the cost delta", async () => {
41
+ const economy = new EconomyManager(new ConnectionManager({
42
+ gatewayUrl: TEST_BASE,
43
+ apiKey: "nk_test",
44
+ privateKey: TEST_PK,
45
+ inferenceSource: "platform", // default — frontierInference overrides to Surplus
46
+ surplus: { model: "llama-3.3-70b-instruct" },
47
+ }));
48
+ const result = await economy.frontierInference(MSGS, { model: "claude-opus-4.8" });
49
+ expect(surplusMod.surplusInference).toHaveBeenCalledTimes(1);
50
+ expect(result.provider).toBe("surplus");
51
+ expect(result.content).toBe("frontier says hi");
52
+ expect(result.model).toBe("claude-opus-4.8"); // the per-call override won
53
+ expect(result.costUsdcMicros).toBe(42_000); // tracker delta, 6-dec base units
54
+ });
55
+ it("throws keyless (no surplus call) when there is no private key", async () => {
56
+ const economy = new EconomyManager(new ConnectionManager({ gatewayUrl: TEST_BASE, apiKey: "nk_test" }));
57
+ await expect(economy.frontierInference(MSGS, { model: "claude-opus-4.8" })).rejects.toMatchObject({ code: "keyless" });
58
+ expect(surplusMod.surplusInference).not.toHaveBeenCalled();
59
+ });
60
+ });
61
+ //# sourceMappingURL=economy.frontierInference.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"economy.frontierInference.test.js","sourceRoot":"","sources":["../../src/__tests__/economy.frontierInference.test.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,7 @@ function urlOf(args) {
32
32
  }
33
33
  const SURPLUS_OK = () => new Response(JSON.stringify({
34
34
  choices: [{ message: { content: "surplus says hi" } }],
35
- model: "llama-3.3-70b",
35
+ model: "llama-3.3-70b-instruct",
36
36
  usage: { prompt_tokens: 3, completion_tokens: 2, total_tokens: 5 },
37
37
  }), { status: 200, headers: { "Content-Type": "application/json" } });
38
38
  const GATEWAY_OK = () => new Response(JSON.stringify({
@@ -57,7 +57,7 @@ describe("EconomyManager.inference() — source routing", () => {
57
57
  apiKey: "nk_test",
58
58
  privateKey: TEST_PK,
59
59
  inferenceSource: "surplus",
60
- surplus: { model: "llama-3.3-70b" },
60
+ surplus: { model: "llama-3.3-70b-instruct" },
61
61
  }));
62
62
  const result = await economy.inference(MSGS);
63
63
  expect(result.provider).toBe("surplus");
@@ -92,68 +92,4 @@ describe("EconomyManager.inference() — source routing", () => {
92
92
  expect(calls.some((u) => u.includes("surplusintelligence"))).toBe(false);
93
93
  });
94
94
  });
95
- /**
96
- * Phase 4 — per-call source override. `options.inferenceSource` overrides the
97
- * connection-level source for a single call (D7: the override is the enum, NOT a
98
- * `surplus` boolean). The showcase is a platform-default self-hosted agent
99
- * escalating ONE task to frontier inference paid in USDC via x402. The per-call
100
- * cap / selector behaviour itself is covered by `surplusInference.test.ts`; here
101
- * we assert only the routing decision the override controls.
102
- */
103
- describe("EconomyManager.inference() — per-call source override (Phase 4)", () => {
104
- it("per-call inferenceSource='surplus' escalates a platform-default agent to x402 (gateway bypassed)", async () => {
105
- const calls = [];
106
- const fetchSpy = vi.fn(async (...args) => {
107
- calls.push(urlOf(args));
108
- return SURPLUS_OK();
109
- });
110
- vi.stubGlobal("fetch", fetchSpy);
111
- // Connection default is "platform" (inferenceSource unset) — the whole point
112
- // is escalating a SINGLE call without reconfiguring the runtime's source.
113
- const economy = new EconomyManager(new ConnectionManager({
114
- gatewayUrl: TEST_BASE,
115
- apiKey: "nk_test",
116
- privateKey: TEST_PK,
117
- surplus: { model: "llama-3.3-70b" },
118
- }));
119
- const result = await economy.inference(MSGS, { inferenceSource: "surplus" });
120
- expect(result.provider).toBe("surplus");
121
- expect(result.content).toBe("surplus says hi");
122
- expect(result.usage.creditsCost).toBe(0);
123
- expect(calls.some((u) => u.startsWith(SURPLUS_URL))).toBe(true);
124
- expect(calls.some((u) => u.includes("/v1/inference/chat"))).toBe(false);
125
- });
126
- it("per-call escalation WITHOUT a key throws keyless and makes no network call", async () => {
127
- const fetchSpy = vi.fn(async () => SURPLUS_OK());
128
- vi.stubGlobal("fetch", fetchSpy);
129
- // Platform-default AND key-less: the per-call escalation must refuse rather
130
- // than silently fall back to a paid platform call (default-restrictive).
131
- const economy = new EconomyManager(new ConnectionManager({ gatewayUrl: TEST_BASE, apiKey: "nk_test" }));
132
- await expect(economy.inference(MSGS, { inferenceSource: "surplus" })).rejects.toMatchObject({ code: "keyless" });
133
- expect(fetchSpy).not.toHaveBeenCalled();
134
- });
135
- it("per-call inferenceSource='platform' overrides a surplus-default agent back to the gateway", async () => {
136
- const calls = [];
137
- const fetchSpy = vi.fn(async (...args) => {
138
- calls.push(urlOf(args));
139
- return GATEWAY_OK();
140
- });
141
- vi.stubGlobal("fetch", fetchSpy);
142
- // Reverse direction: a surplus-default runtime forces ONE call to platform.
143
- const economy = new EconomyManager(new ConnectionManager({
144
- gatewayUrl: TEST_BASE,
145
- apiKey: "nk_test",
146
- privateKey: TEST_PK,
147
- inferenceSource: "surplus",
148
- surplus: { model: "llama-3.3-70b" },
149
- }));
150
- const result = await economy.inference(MSGS, {
151
- model: "claude",
152
- inferenceSource: "platform",
153
- });
154
- expect(result.provider).toBe("anthropic");
155
- expect(calls.some((u) => u === `${TEST_BASE}/v1/inference/chat`)).toBe(true);
156
- expect(calls.some((u) => u.includes("surplusintelligence"))).toBe(false);
157
- });
158
- });
159
95
  //# sourceMappingURL=economy.surplusBranch.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"economy.surplusBranch.test.js","sourceRoot":"","sources":["../../src/__tests__/economy.surplusBranch.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"economy.surplusBranch.test.js","sourceRoot":"","sources":["../../src/__tests__/economy.surplusBranch.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mockRuntime.d.ts","sourceRoot":"","sources":["../../../src/__tests__/helpers/mockRuntime.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAKtD,6EAA6E;AAC7E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IAC5C,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;CAC7C;AAED,wBAAgB,iBAAiB,IAAI;IAAE,OAAO,EAAE,eAAe,CAAC;IAAC,SAAS,EAAE,iBAAiB,CAAA;CAAE,CAgJ9F"}
1
+ {"version":3,"file":"mockRuntime.d.ts","sourceRoot":"","sources":["../../../src/__tests__/helpers/mockRuntime.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAKtD,6EAA6E;AAC7E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IAC5C,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;CAC7C;AAED,wBAAgB,iBAAiB,IAAI;IAAE,OAAO,EAAE,eAAe,CAAC;IAAC,SAAS,EAAE,iBAAiB,CAAA;CAAE,CAyI9F"}
@@ -17,13 +17,6 @@ export function createMockRuntime() {
17
17
  identity: {
18
18
  getAddress: vi.fn().mockReturnValue("0xAGENT0000000000000000000000000000000001"),
19
19
  updateProfile: vi.fn().mockResolvedValue(ok),
20
- // Goal execution (L3 — migration 247). Defaults to "no goal" so existing
21
- // tests don't accidentally trigger bootstrap paths.
22
- getGoal: vi.fn().mockResolvedValue(null),
23
- updateGoalStatus: vi.fn().mockResolvedValue(undefined),
24
- completeGoal: vi.fn().mockResolvedValue(undefined),
25
- recordGoalStep: vi.fn().mockResolvedValue({ id: "step-1" }),
26
- createPendingTask: vi.fn().mockResolvedValue({ id: "task-1" }),
27
20
  },
28
21
  memory: {
29
22
  publishKnowledge: vi.fn().mockResolvedValue({ cid: "Qm_mock_cid", txHash: "0xMOCK_TX" }),
@@ -1 +1 @@
1
- {"version":3,"file":"mockRuntime.js","sourceRoot":"","sources":["../../../src/__tests__/helpers/mockRuntime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mockRuntime.js","sourceRoot":"","sources":["../../../src/__tests__/helpers/mockRuntime.ts"],"names":[],"mappings":"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"}
@@ -161,20 +161,20 @@ describe("schemaVersion (pack-format gate)", () => {
161
161
  });
162
162
  describe("parsePack", () => {
163
163
  it("parses a YAML pack document", () => {
164
- const result = parsePack(`
165
- name: notion-research-agent
166
- version: 1.0.0
167
- tools: [search_knowledge, send_dm]
168
- mcpServers:
169
- - name: notion
170
- url: https://mcp.notion.com/mcp
171
- connection: notion
172
- connections:
173
- - service: notion
174
- owner: agent
175
- connectors:
176
- - platform: email
177
- mode: outbound
164
+ const result = parsePack(`
165
+ name: notion-research-agent
166
+ version: 1.0.0
167
+ tools: [search_knowledge, send_dm]
168
+ mcpServers:
169
+ - name: notion
170
+ url: https://mcp.notion.com/mcp
171
+ connection: notion
172
+ connections:
173
+ - service: notion
174
+ owner: agent
175
+ connectors:
176
+ - platform: email
177
+ mode: outbound
178
178
  `);
179
179
  expect(result.errors).toEqual([]);
180
180
  expect(result.ok).toBe(true);
@@ -234,10 +234,10 @@ describe("preset delegation", () => {
234
234
  });
235
235
  describe("pack file loading", () => {
236
236
  it("reads + parses the pack from packPath", async () => {
237
- mockReadFile.mockResolvedValueOnce(`
238
- name: from-file
239
- version: 1.0.0
240
- tools: [search_knowledge]
237
+ mockReadFile.mockResolvedValueOnce(`
238
+ name: from-file
239
+ version: 1.0.0
240
+ tools: [search_knowledge]
241
241
  `);
242
242
  const { runtime } = makeRuntime();
243
243
  const report = await new PackLoader(runtime, { packPath: "./my.pack.yaml" }).load();
@@ -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",
@@ -713,26 +713,26 @@ describe("E2E: forge data/fetch → KG batch ingest → self-model memory", () =
713
713
  totalItems: 2,
714
714
  totalCostNook: 50000,
715
715
  };
716
- const YAML_WITH_AGG = `
717
- version: "1.0"
718
- gateway: https://gateway.nookplot.com
719
- agent:
720
- name: GenomicsAgent
721
- preset:
722
- id: "genomics-researcher"
723
- version: 1
724
- trustLevel: "verified"
725
- failurePolicy: "continue"
726
- maxCostNook: 5000000
727
- sources:
728
- - type: "mining"
729
- label: "Genomics traces"
730
- config:
731
- domainTags: ["genomics"]
732
- - type: "aggregate"
733
- label: "Genomics aggregates"
734
- config:
735
- domainTags: ["genomics"]
716
+ const YAML_WITH_AGG = `
717
+ version: "1.0"
718
+ gateway: https://gateway.nookplot.com
719
+ agent:
720
+ name: GenomicsAgent
721
+ preset:
722
+ id: "genomics-researcher"
723
+ version: 1
724
+ trustLevel: "verified"
725
+ failurePolicy: "continue"
726
+ maxCostNook: 5000000
727
+ sources:
728
+ - type: "mining"
729
+ label: "Genomics traces"
730
+ config:
731
+ domainTags: ["genomics"]
732
+ - type: "aggregate"
733
+ label: "Genomics aggregates"
734
+ config:
735
+ domainTags: ["genomics"]
736
736
  `;
737
737
  setupReadFileMocks(YAML_WITH_AGG);
738
738
  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
  });
@@ -11,7 +11,7 @@ import { describe, it, expect, vi } from "vitest";
11
11
  import { mkdtempSync, readFileSync, writeFileSync, rmSync } from "node:fs";
12
12
  import { tmpdir } from "node:os";
13
13
  import { join } from "node:path";
14
- import { surplusInference, makeSurplusSelector, buildSurplusBody, parseSurplusResponse, usdcToBaseUnits, resolveSurplusPayTo, createSurplusSpendTracker, SurplusError, SURPLUS_URL, SURPLUS_PAYTO, BASE_USDC, DEFAULT_MAX_USDC_PER_SESSION, } from "../inference/surplusInference.js";
14
+ import { surplusInference, makeSurplusSelector, buildSurplusBody, buildExactPaymentHeader, parseSurplusResponse, usdcToBaseUnits, resolveSurplusPayTo, createSurplusSpendTracker, SurplusError, SURPLUS_URL, SURPLUS_PAYTO, SURPLUS_NETWORK_NAME, BASE_USDC, DEFAULT_MAX_USDC_PER_SESSION, } from "../inference/surplusInference.js";
15
15
  const DAY_MS = 24 * 60 * 60 * 1000;
16
16
  const TEST_PK = "0x" + "ab".repeat(32);
17
17
  function req(over = {}) {
@@ -33,7 +33,7 @@ function openAIResponse(body, init) {
33
33
  }
34
34
  const OK_BODY = {
35
35
  choices: [{ message: { role: "assistant", content: "hello from surplus" } }],
36
- model: "llama-3.3-70b",
36
+ model: "llama-3.3-70b-instruct",
37
37
  usage: { prompt_tokens: 12, completion_tokens: 7, total_tokens: 19 },
38
38
  };
39
39
  // ─────────────────────────────────────────────────────────────────────────
@@ -219,9 +219,9 @@ describe("buildSurplusBody", () => {
219
219
  { role: "assistant", content: "hello" },
220
220
  ];
221
221
  it("maps messages and forces non-streaming", () => {
222
- const body = buildSurplusBody(msgs, undefined, "llama-3.3-70b");
222
+ const body = buildSurplusBody(msgs, undefined, "llama-3.3-70b-instruct");
223
223
  expect(body).toMatchObject({
224
- model: "llama-3.3-70b",
224
+ model: "llama-3.3-70b-instruct",
225
225
  stream: false,
226
226
  messages: [
227
227
  { role: "user", content: "hi" },
@@ -248,10 +248,10 @@ describe("buildSurplusBody", () => {
248
248
  // ─────────────────────────────────────────────────────────────────────────
249
249
  describe("parseSurplusResponse", () => {
250
250
  it("maps a 200 OpenAI body to an InferenceResult (creditsCost = 0)", async () => {
251
- const result = await parseSurplusResponse(openAIResponse(OK_BODY), "llama-3.3-70b");
251
+ const result = await parseSurplusResponse(openAIResponse(OK_BODY), "llama-3.3-70b-instruct");
252
252
  expect(result).toEqual({
253
253
  content: "hello from surplus",
254
- model: "llama-3.3-70b",
254
+ model: "llama-3.3-70b-instruct",
255
255
  provider: "surplus",
256
256
  usage: { promptTokens: 12, completionTokens: 7, totalTokens: 19, creditsCost: 0 },
257
257
  });
@@ -281,6 +281,14 @@ describe("parseSurplusResponse", () => {
281
281
  const settle = Buffer.from(JSON.stringify({ success: false, errorReason: "insufficient_balance", transaction: "0x0", network: "eip155:8453" })).toString("base64");
282
282
  await expect(parseSurplusResponse(openAIResponse(OK_BODY, { settleHeader: settle }), "m")).rejects.toMatchObject({ code: "settle_failed" });
283
283
  });
284
+ it("also reads the non-prefixed PAYMENT-RESPONSE header (Surplus's form)", async () => {
285
+ const settle = Buffer.from(JSON.stringify({ success: false, errorReason: "x" })).toString("base64");
286
+ const res = new Response(JSON.stringify(OK_BODY), {
287
+ status: 200,
288
+ headers: { "Content-Type": "application/json", "PAYMENT-RESPONSE": settle },
289
+ });
290
+ await expect(parseSurplusResponse(res, "m")).rejects.toMatchObject({ code: "settle_failed" });
291
+ });
284
292
  it("ignores an undecodable or successful settlement header", async () => {
285
293
  const ok = Buffer.from(JSON.stringify({ success: true, transaction: "0xabc", network: "eip155:8453" })).toString("base64");
286
294
  await expect(parseSurplusResponse(openAIResponse(OK_BODY, { settleHeader: ok }), "m")).resolves.toBeTruthy();
@@ -288,6 +296,44 @@ describe("parseSurplusResponse", () => {
288
296
  });
289
297
  });
290
298
  // ─────────────────────────────────────────────────────────────────────────
299
+ describe("buildExactPaymentHeader — flat x402 payload Surplus accepts", () => {
300
+ // Stub signer (no viem needed here — signature-recovery correctness is proven
301
+ // in the gateway's surplusServerInference test, which shares this exact logic).
302
+ const account = {
303
+ address: "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
304
+ signTypedData: vi.fn(async (_args) => ("0x" + "11".repeat(65))),
305
+ };
306
+ const identityGetAddress = (a) => a;
307
+ function decode(b64) {
308
+ return JSON.parse(Buffer.from(b64, "base64").toString("utf8"));
309
+ }
310
+ it("emits the FLAT shape with the short network name (not the nested v2 envelope)", async () => {
311
+ const decoded = decode(await buildExactPaymentHeader(account, identityGetAddress, req({ extra: { name: "USD Coin", version: "2" } })));
312
+ expect(decoded.x402Version).toBe(1);
313
+ expect(decoded.scheme).toBe("exact");
314
+ expect(decoded.network).toBe(SURPLUS_NETWORK_NAME); // "base", NOT "eip155:8453"
315
+ expect(decoded.network).toBe("base");
316
+ // The bug we fixed: 2.14.0 buried scheme/network under `accepted` + added `resource`.
317
+ expect(decoded).not.toHaveProperty("accepted");
318
+ expect(decoded).not.toHaveProperty("resource");
319
+ const payload = decoded.payload;
320
+ expect(payload.authorization.from).toBe(account.address);
321
+ expect(payload.authorization.value).toBe("3306");
322
+ expect(payload.signature).toMatch(/^0x[0-9a-f]+$/i);
323
+ });
324
+ it("signs the EIP-3009 TransferWithAuthorization with the USDC domain from `extra`", async () => {
325
+ account.signTypedData.mockClear();
326
+ await buildExactPaymentHeader(account, identityGetAddress, req({ extra: { name: "USD Coin", version: "2" } }));
327
+ const arg = account.signTypedData.mock.calls[0][0];
328
+ expect(arg.primaryType).toBe("TransferWithAuthorization");
329
+ expect(arg.domain).toMatchObject({ name: "USD Coin", version: "2", chainId: 8453 });
330
+ expect(arg.message.value).toBe(3306n); // bigint uint256
331
+ });
332
+ it("throws bad_quote when the EIP-712 token domain is missing", async () => {
333
+ await expect(buildExactPaymentHeader(account, identityGetAddress, req())).rejects.toThrow(expect.objectContaining({ code: "bad_quote" }));
334
+ });
335
+ });
336
+ // ─────────────────────────────────────────────────────────────────────────
291
337
  describe("surplusInference — orchestration & gate (injected paymentFetch)", () => {
292
338
  it("MANDATORY keyless gate: throws and makes NO call when privateKey is absent", async () => {
293
339
  const spy = vi.fn();
@@ -301,7 +347,7 @@ describe("surplusInference — orchestration & gate (injected paymentFetch)", ()
301
347
  const result = await surplusInference({
302
348
  privateKey: TEST_PK,
303
349
  messages: [{ role: "user", content: "hi" }],
304
- options: { model: "llama-3.3-70b", maxTokens: 128 },
350
+ options: { model: "llama-3.3-70b-instruct", maxTokens: 128 },
305
351
  paymentFetch: spy,
306
352
  });
307
353
  expect(result.provider).toBe("surplus");
@@ -310,7 +356,7 @@ describe("surplusInference — orchestration & gate (injected paymentFetch)", ()
310
356
  expect(url).toBe(SURPLUS_URL);
311
357
  expect(init.method).toBe("POST");
312
358
  const sent = JSON.parse(init.body);
313
- expect(sent).toMatchObject({ model: "llama-3.3-70b", max_tokens: 128, stream: false });
359
+ expect(sent).toMatchObject({ model: "llama-3.3-70b-instruct", max_tokens: 128, stream: false });
314
360
  });
315
361
  it("honors model precedence (options.model > config.model > default) and a baseUrl override", async () => {
316
362
  const spy = vi.fn(async (_url, _init) => openAIResponse(OK_BODY));