@nookplot/runtime 0.5.143 → 0.5.144

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 (169) 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__/bdAgentPack.test.d.ts +2 -0
  8. package/dist/__tests__/bdAgentPack.test.d.ts.map +1 -0
  9. package/dist/__tests__/bdAgentPack.test.js +44 -0
  10. package/dist/__tests__/bdAgentPack.test.js.map +1 -0
  11. package/dist/__tests__/codegen-drift.test.js +1 -3
  12. package/dist/__tests__/codegen-drift.test.js.map +1 -1
  13. package/dist/__tests__/conversation/modelThresholdsParity.test.js +14 -19
  14. package/dist/__tests__/conversation/modelThresholdsParity.test.js.map +1 -1
  15. package/dist/__tests__/economy.frontierInference.test.d.ts +2 -0
  16. package/dist/__tests__/economy.frontierInference.test.d.ts.map +1 -0
  17. package/dist/__tests__/economy.frontierInference.test.js +61 -0
  18. package/dist/__tests__/economy.frontierInference.test.js.map +1 -0
  19. package/dist/__tests__/economy.surplusBranch.test.js +0 -64
  20. package/dist/__tests__/economy.surplusBranch.test.js.map +1 -1
  21. package/dist/__tests__/externalMcpTools.test.d.ts +2 -0
  22. package/dist/__tests__/externalMcpTools.test.d.ts.map +1 -0
  23. package/dist/__tests__/externalMcpTools.test.js +94 -0
  24. package/dist/__tests__/externalMcpTools.test.js.map +1 -0
  25. package/dist/__tests__/helpers/mockRuntime.d.ts.map +1 -1
  26. package/dist/__tests__/helpers/mockRuntime.js +0 -7
  27. package/dist/__tests__/helpers/mockRuntime.js.map +1 -1
  28. package/dist/__tests__/pack.gating.test.d.ts +2 -0
  29. package/dist/__tests__/pack.gating.test.d.ts.map +1 -0
  30. package/dist/__tests__/pack.gating.test.js +134 -0
  31. package/dist/__tests__/pack.gating.test.js.map +1 -0
  32. package/dist/__tests__/pack.test.d.ts +2 -0
  33. package/dist/__tests__/pack.test.d.ts.map +1 -0
  34. package/dist/__tests__/pack.test.js +299 -0
  35. package/dist/__tests__/pack.test.js.map +1 -0
  36. package/dist/__tests__/packLoader.test.d.ts +2 -0
  37. package/dist/__tests__/packLoader.test.d.ts.map +1 -0
  38. package/dist/__tests__/packLoader.test.js +304 -0
  39. package/dist/__tests__/packLoader.test.js.map +1 -0
  40. package/dist/__tests__/presetLoader.test.js +17 -0
  41. package/dist/__tests__/presetLoader.test.js.map +1 -1
  42. package/dist/actionCatalog.d.ts.map +1 -1
  43. package/dist/actionCatalog.generated.d.ts +1 -1
  44. package/dist/actionCatalog.generated.d.ts.map +1 -1
  45. package/dist/actionCatalog.generated.js +22 -137
  46. package/dist/actionCatalog.generated.js.map +1 -1
  47. package/dist/actionCatalog.js +13 -11
  48. package/dist/actionCatalog.js.map +1 -1
  49. package/dist/api-marketplace.d.ts +0 -146
  50. package/dist/api-marketplace.d.ts.map +1 -1
  51. package/dist/api-marketplace.js +0 -218
  52. package/dist/api-marketplace.js.map +1 -1
  53. package/dist/autonomous.d.ts +33 -17
  54. package/dist/autonomous.d.ts.map +1 -1
  55. package/dist/autonomous.js +122 -273
  56. package/dist/autonomous.js.map +1 -1
  57. package/dist/contentSafety.d.ts +1 -1
  58. package/dist/contentSafety.d.ts.map +1 -1
  59. package/dist/contentSafety.js +2 -6
  60. package/dist/contentSafety.js.map +1 -1
  61. package/dist/discovery.js +1 -1
  62. package/dist/discovery.js.map +1 -1
  63. package/dist/economy.d.ts +15 -10
  64. package/dist/economy.d.ts.map +1 -1
  65. package/dist/economy.js +29 -16
  66. package/dist/economy.js.map +1 -1
  67. package/dist/frontierPass.d.ts +30 -0
  68. package/dist/frontierPass.d.ts.map +1 -0
  69. package/dist/frontierPass.js +42 -0
  70. package/dist/frontierPass.js.map +1 -0
  71. package/dist/identity.d.ts +0 -51
  72. package/dist/identity.d.ts.map +1 -1
  73. package/dist/identity.js +0 -50
  74. package/dist/identity.js.map +1 -1
  75. package/dist/index.d.ts +8 -19
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +6 -16
  78. package/dist/index.js.map +1 -1
  79. package/dist/pack.d.ts +181 -0
  80. package/dist/pack.d.ts.map +1 -0
  81. package/dist/pack.js +379 -0
  82. package/dist/pack.js.map +1 -0
  83. package/dist/packLoader.d.ts +109 -0
  84. package/dist/packLoader.d.ts.map +1 -0
  85. package/dist/packLoader.js +236 -0
  86. package/dist/packLoader.js.map +1 -0
  87. package/dist/presetLoader.d.ts +3 -1
  88. package/dist/presetLoader.d.ts.map +1 -1
  89. package/dist/presetLoader.js +7 -1
  90. package/dist/presetLoader.js.map +1 -1
  91. package/dist/signalActionMap.d.ts +17 -1
  92. package/dist/signalActionMap.d.ts.map +1 -1
  93. package/dist/signalActionMap.js +42 -17
  94. package/dist/signalActionMap.js.map +1 -1
  95. package/dist/swarms.d.ts +0 -13
  96. package/dist/swarms.d.ts.map +1 -1
  97. package/dist/swarms.js +0 -4
  98. package/dist/swarms.js.map +1 -1
  99. package/dist/tools.d.ts +23 -7
  100. package/dist/tools.d.ts.map +1 -1
  101. package/dist/tools.js +21 -7
  102. package/dist/tools.js.map +1 -1
  103. package/dist/types.d.ts +0 -21
  104. package/dist/types.d.ts.map +1 -1
  105. package/package.json +1 -1
  106. package/dist/__tests__/autonomous.goalBootstrap.test.d.ts +0 -2
  107. package/dist/__tests__/autonomous.goalBootstrap.test.d.ts.map +0 -1
  108. package/dist/__tests__/autonomous.goalBootstrap.test.js +0 -148
  109. package/dist/__tests__/autonomous.goalBootstrap.test.js.map +0 -1
  110. package/dist/__tests__/autonomous.miningTrack.test.d.ts +0 -2
  111. package/dist/__tests__/autonomous.miningTrack.test.d.ts.map +0 -1
  112. package/dist/__tests__/autonomous.miningTrack.test.js +0 -38
  113. package/dist/__tests__/autonomous.miningTrack.test.js.map +0 -1
  114. package/dist/__tests__/autonomous.payApi.test.d.ts +0 -2
  115. package/dist/__tests__/autonomous.payApi.test.d.ts.map +0 -1
  116. package/dist/__tests__/autonomous.payApi.test.js +0 -73
  117. package/dist/__tests__/autonomous.payApi.test.js.map +0 -1
  118. package/dist/__tests__/autonomous.workspaceOpportunity.test.d.ts +0 -2
  119. package/dist/__tests__/autonomous.workspaceOpportunity.test.d.ts.map +0 -1
  120. package/dist/__tests__/autonomous.workspaceOpportunity.test.js +0 -200
  121. package/dist/__tests__/autonomous.workspaceOpportunity.test.js.map +0 -1
  122. package/dist/__tests__/goalLoop.test.d.ts +0 -2
  123. package/dist/__tests__/goalLoop.test.d.ts.map +0 -1
  124. package/dist/__tests__/goalLoop.test.js +0 -358
  125. package/dist/__tests__/goalLoop.test.js.map +0 -1
  126. package/dist/__tests__/loadProfile.test.d.ts +0 -8
  127. package/dist/__tests__/loadProfile.test.d.ts.map +0 -1
  128. package/dist/__tests__/loadProfile.test.js +0 -134
  129. package/dist/__tests__/loadProfile.test.js.map +0 -1
  130. package/dist/__tests__/mining.test.d.ts +0 -2
  131. package/dist/__tests__/mining.test.d.ts.map +0 -1
  132. package/dist/__tests__/mining.test.js +0 -306
  133. package/dist/__tests__/mining.test.js.map +0 -1
  134. package/dist/__tests__/signalActionMap.test.d.ts +0 -17
  135. package/dist/__tests__/signalActionMap.test.d.ts.map +0 -1
  136. package/dist/__tests__/signalActionMap.test.js +0 -165
  137. package/dist/__tests__/signalActionMap.test.js.map +0 -1
  138. package/dist/__tests__/usdcBudget.test.d.ts +0 -2
  139. package/dist/__tests__/usdcBudget.test.d.ts.map +0 -1
  140. package/dist/__tests__/usdcBudget.test.js +0 -128
  141. package/dist/__tests__/usdcBudget.test.js.map +0 -1
  142. package/dist/__tests__/x402.test.d.ts +0 -2
  143. package/dist/__tests__/x402.test.d.ts.map +0 -1
  144. package/dist/__tests__/x402.test.js +0 -117
  145. package/dist/__tests__/x402.test.js.map +0 -1
  146. package/dist/goal/goalLoop.d.ts +0 -78
  147. package/dist/goal/goalLoop.d.ts.map +0 -1
  148. package/dist/goal/goalLoop.js +0 -388
  149. package/dist/goal/goalLoop.js.map +0 -1
  150. package/dist/goal/goalPrompts.d.ts +0 -20
  151. package/dist/goal/goalPrompts.d.ts.map +0 -1
  152. package/dist/goal/goalPrompts.js +0 -54
  153. package/dist/goal/goalPrompts.js.map +0 -1
  154. package/dist/goal/types.d.ts +0 -102
  155. package/dist/goal/types.d.ts.map +0 -1
  156. package/dist/goal/types.js +0 -7
  157. package/dist/goal/types.js.map +0 -1
  158. package/dist/loadProfile.d.ts +0 -100
  159. package/dist/loadProfile.d.ts.map +0 -1
  160. package/dist/loadProfile.js +0 -221
  161. package/dist/loadProfile.js.map +0 -1
  162. package/dist/usdcBudget.d.ts +0 -90
  163. package/dist/usdcBudget.d.ts.map +0 -1
  164. package/dist/usdcBudget.js +0 -155
  165. package/dist/usdcBudget.js.map +0 -1
  166. package/dist/x402.d.ts +0 -69
  167. package/dist/x402.d.ts.map +0 -1
  168. package/dist/x402.js +0 -139
  169. package/dist/x402.js.map +0 -1
package/dist/x402.js DELETED
@@ -1,139 +0,0 @@
1
- /**
2
- * Optional convenience wrapper for paying marketplace API listings per-call via
3
- * x402 (ROADMAP_x402-marketplace-fees.md v2). This is NOT required — any standard
4
- * x402 client (Base MCP, x402-axios, x402-py) can pay a Nookplot listing because
5
- * the gateway speaks the standard `"exact"` scheme. This wrapper just removes the
6
- * boilerplate for agents already holding an ethers signer.
7
- *
8
- * Unlike the agreement-based {@link ApiMarketplaceManager.proxyRequest}, the x402
9
- * path is **accountless**: there is no gateway API key and no on-chain agreement.
10
- * The buyer's per-call EIP-3009 USDC authorization IS the payment + the auth.
11
- *
12
- * Flow:
13
- * 1. Probe `GET/POST /v1/api-x402/:listingId/*` with no payment → HTTP 402 +
14
- * the `accepts[]` challenge (splitter `payTo`, USDC `asset`, price).
15
- * 2. Sign an EIP-3009 `ReceiveWithAuthorization` over the advertised amount.
16
- * 3. Re-send the request with the encoded payment header → upstream response.
17
- *
18
- * v2.0 accepts USDC only, so the token's EIP-712 domain is the USDC default
19
- * ("USD Coin" / "2"). NOOK (a different domain) is deferred to v2.1.
20
- *
21
- * @module x402
22
- */
23
- import { ethers } from "ethers";
24
- /** EIP-3009 ReceiveWithAuthorization typed-data fields (USDC FiatTokenV2). */
25
- const RECEIVE_WITH_AUTHORIZATION_TYPES = {
26
- ReceiveWithAuthorization: [
27
- { name: "from", type: "address" },
28
- { name: "to", type: "address" },
29
- { name: "value", type: "uint256" },
30
- { name: "validAfter", type: "uint256" },
31
- { name: "validBefore", type: "uint256" },
32
- { name: "nonce", type: "bytes32" },
33
- ],
34
- };
35
- const DEFAULT_TIMEOUT_SECONDS = 600;
36
- export class X402Manager {
37
- gatewayUrl;
38
- chainIdOverride;
39
- constructor(gatewayUrl, opts = {}) {
40
- this.gatewayUrl = gatewayUrl.replace(/\/+$/, "");
41
- this.chainIdOverride = opts.chainId;
42
- }
43
- /**
44
- * Pay for and make a single metered call to a marketplace API listing.
45
- *
46
- * @param input The listing + upstream request.
47
- * @param signer An ethers signer holding the buyer's USDC (e.g. `new ethers.Wallet(pk)`).
48
- */
49
- async payAndCall(input, signer) {
50
- const method = (input.method ?? "GET").toUpperCase();
51
- const path = String(input.path).replace(/^\/+/, "");
52
- const url = `${this.gatewayUrl}/v1/api-x402/${input.listingId}/${path}`;
53
- const bodyStr = input.body !== undefined ? JSON.stringify(input.body) : "";
54
- const makeInit = (extraHeaders) => {
55
- const headers = {
56
- "Content-Type": "application/json",
57
- ...input.headers,
58
- ...extraHeaders,
59
- };
60
- const init = { method, headers };
61
- if (bodyStr && !["GET", "HEAD"].includes(method))
62
- init.body = bodyStr;
63
- return init;
64
- };
65
- // 1. Probe — the gateway answers 402 with the payment challenge.
66
- const probe = await fetch(url, makeInit());
67
- if (probe.status !== 402) {
68
- return toResult(probe, false);
69
- }
70
- const challenge = (await probe.json());
71
- const accept = challenge.accepts?.[0];
72
- if (!accept || accept.scheme !== "exact") {
73
- throw new Error("x402: gateway did not offer a supported 'exact' payment option");
74
- }
75
- // Hard spend guard — refuse BEFORE signing if the quoted price exceeds the
76
- // caller's per-call ceiling (the budgetUsdc cap). No funds move.
77
- if (input.maxAmountBaseUnits !== undefined) {
78
- const quote = BigInt(accept.maxAmountRequired);
79
- if (quote > input.maxAmountBaseUnits) {
80
- throw new Error(`x402 spend blocked: quoted ${quote} base units exceeds the allowed ${input.maxAmountBaseUnits} for this call (USDC spend cap)`);
81
- }
82
- }
83
- // 2. Sign the EIP-3009 authorization over the advertised amount.
84
- const from = await signer.getAddress();
85
- const chainId = this.chainIdOverride ?? parseChainId(accept.network);
86
- const nowSec = Math.floor(Date.now() / 1000);
87
- const authorization = {
88
- from,
89
- to: accept.payTo,
90
- value: accept.maxAmountRequired,
91
- validAfter: 0,
92
- validBefore: nowSec + (accept.maxTimeoutSeconds ?? DEFAULT_TIMEOUT_SECONDS),
93
- nonce: ethers.hexlify(ethers.randomBytes(32)),
94
- };
95
- const domain = {
96
- name: accept.extra?.eip712?.name ?? "USD Coin",
97
- version: accept.extra?.eip712?.version ?? "2",
98
- chainId,
99
- verifyingContract: accept.asset,
100
- };
101
- const signature = await signer.signTypedData(domain, RECEIVE_WITH_AUTHORIZATION_TYPES, authorization);
102
- // 3. Re-send with the encoded payment header.
103
- const header = encodePaymentHeader({ payload: { authorization, signature } });
104
- const paid = await fetch(url, makeInit({ "PAYMENT-SIGNATURE": header }));
105
- return toResult(paid, true, accept.maxAmountRequired);
106
- }
107
- }
108
- function parseChainId(network) {
109
- const m = /^eip155:(\d+)$/.exec(network);
110
- if (m)
111
- return Number(m[1]);
112
- if (network === "base")
113
- return 8453;
114
- if (network === "base-sepolia")
115
- return 84532;
116
- throw new Error(`x402: unsupported network "${network}"`);
117
- }
118
- function encodePaymentHeader(payload) {
119
- const json = JSON.stringify(payload);
120
- return typeof Buffer !== "undefined"
121
- ? Buffer.from(json, "utf8").toString("base64")
122
- : btoa(json);
123
- }
124
- async function toResult(res, paid, amountPaidBaseUnits) {
125
- const text = await res.text();
126
- let body;
127
- try {
128
- body = JSON.parse(text);
129
- }
130
- catch {
131
- body = text;
132
- }
133
- const headers = {};
134
- res.headers.forEach((val, key) => {
135
- headers[key] = val;
136
- });
137
- return { status: res.status, headers, body, paid, ...(paid ? { amountPaidBaseUnits } : {}) };
138
- }
139
- //# sourceMappingURL=x402.js.map
package/dist/x402.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"x402.js","sourceRoot":"","sources":["../src/x402.ts"],"names":[],"mappings":"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"}