@nookplot/runtime 0.5.146 → 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 (151) 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.js +1 -1
  8. package/dist/__tests__/bdAgentPack.test.js.map +1 -1
  9. package/dist/__tests__/bounties.test.js +0 -12
  10. package/dist/__tests__/bounties.test.js.map +1 -1
  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 +2 -66
  20. package/dist/__tests__/economy.surplusBranch.test.js.map +1 -1
  21. package/dist/__tests__/helpers/mockRuntime.d.ts.map +1 -1
  22. package/dist/__tests__/helpers/mockRuntime.js +0 -7
  23. package/dist/__tests__/helpers/mockRuntime.js.map +1 -1
  24. package/dist/__tests__/pack.test.js +14 -14
  25. package/dist/__tests__/packLoader.test.js +4 -4
  26. package/dist/__tests__/presetLoader.test.js +42 -42
  27. package/dist/__tests__/sandbox.test.js +24 -24
  28. package/dist/__tests__/surplusInference.test.js +54 -8
  29. package/dist/__tests__/surplusInference.test.js.map +1 -1
  30. package/dist/actionCatalog.d.ts.map +1 -1
  31. package/dist/actionCatalog.generated.d.ts +1 -1
  32. package/dist/actionCatalog.generated.d.ts.map +1 -1
  33. package/dist/actionCatalog.generated.js +26 -151
  34. package/dist/actionCatalog.generated.js.map +1 -1
  35. package/dist/actionCatalog.js +10 -0
  36. package/dist/actionCatalog.js.map +1 -1
  37. package/dist/api-marketplace.d.ts +0 -146
  38. package/dist/api-marketplace.d.ts.map +1 -1
  39. package/dist/api-marketplace.js +0 -218
  40. package/dist/api-marketplace.js.map +1 -1
  41. package/dist/autonomous.d.ts +9 -16
  42. package/dist/autonomous.d.ts.map +1 -1
  43. package/dist/autonomous.js +59 -276
  44. package/dist/autonomous.js.map +1 -1
  45. package/dist/bounties.d.ts +0 -8
  46. package/dist/bounties.d.ts.map +1 -1
  47. package/dist/bounties.js +0 -2
  48. package/dist/bounties.js.map +1 -1
  49. package/dist/contentSafety.d.ts +1 -1
  50. package/dist/contentSafety.d.ts.map +1 -1
  51. package/dist/contentSafety.js +2 -6
  52. package/dist/contentSafety.js.map +1 -1
  53. package/dist/conversation/modelLimits.js +17 -17
  54. package/dist/discovery.js +1 -1
  55. package/dist/discovery.js.map +1 -1
  56. package/dist/economy.d.ts +15 -10
  57. package/dist/economy.d.ts.map +1 -1
  58. package/dist/economy.js +29 -16
  59. package/dist/economy.js.map +1 -1
  60. package/dist/frontierPass.d.ts +30 -0
  61. package/dist/frontierPass.d.ts.map +1 -0
  62. package/dist/frontierPass.js +42 -0
  63. package/dist/frontierPass.js.map +1 -0
  64. package/dist/identity.d.ts +0 -51
  65. package/dist/identity.d.ts.map +1 -1
  66. package/dist/identity.js +0 -50
  67. package/dist/identity.js.map +1 -1
  68. package/dist/index.d.ts +3 -18
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +2 -15
  71. package/dist/index.js.map +1 -1
  72. package/dist/inference/surplusInference.d.ts +29 -1
  73. package/dist/inference/surplusInference.d.ts.map +1 -1
  74. package/dist/inference/surplusInference.js +132 -15
  75. package/dist/inference/surplusInference.js.map +1 -1
  76. package/dist/signalActionMap.d.ts.map +1 -1
  77. package/dist/signalActionMap.js +5 -15
  78. package/dist/signalActionMap.js.map +1 -1
  79. package/dist/swarms.d.ts +0 -13
  80. package/dist/swarms.d.ts.map +1 -1
  81. package/dist/swarms.js +0 -4
  82. package/dist/swarms.js.map +1 -1
  83. package/dist/tools.js +1 -1
  84. package/dist/tools.js.map +1 -1
  85. package/dist/types.d.ts +1 -22
  86. package/dist/types.d.ts.map +1 -1
  87. package/package.json +75 -75
  88. package/dist/__tests__/autonomous.goalBootstrap.test.d.ts +0 -2
  89. package/dist/__tests__/autonomous.goalBootstrap.test.d.ts.map +0 -1
  90. package/dist/__tests__/autonomous.goalBootstrap.test.js +0 -148
  91. package/dist/__tests__/autonomous.goalBootstrap.test.js.map +0 -1
  92. package/dist/__tests__/autonomous.miningTrack.test.d.ts +0 -2
  93. package/dist/__tests__/autonomous.miningTrack.test.d.ts.map +0 -1
  94. package/dist/__tests__/autonomous.miningTrack.test.js +0 -38
  95. package/dist/__tests__/autonomous.miningTrack.test.js.map +0 -1
  96. package/dist/__tests__/autonomous.payApi.test.d.ts +0 -2
  97. package/dist/__tests__/autonomous.payApi.test.d.ts.map +0 -1
  98. package/dist/__tests__/autonomous.payApi.test.js +0 -73
  99. package/dist/__tests__/autonomous.payApi.test.js.map +0 -1
  100. package/dist/__tests__/autonomous.workspaceOpportunity.test.d.ts +0 -2
  101. package/dist/__tests__/autonomous.workspaceOpportunity.test.d.ts.map +0 -1
  102. package/dist/__tests__/autonomous.workspaceOpportunity.test.js +0 -212
  103. package/dist/__tests__/autonomous.workspaceOpportunity.test.js.map +0 -1
  104. package/dist/__tests__/goalLoop.test.d.ts +0 -2
  105. package/dist/__tests__/goalLoop.test.d.ts.map +0 -1
  106. package/dist/__tests__/goalLoop.test.js +0 -358
  107. package/dist/__tests__/goalLoop.test.js.map +0 -1
  108. package/dist/__tests__/loadProfile.test.d.ts +0 -8
  109. package/dist/__tests__/loadProfile.test.d.ts.map +0 -1
  110. package/dist/__tests__/loadProfile.test.js +0 -134
  111. package/dist/__tests__/loadProfile.test.js.map +0 -1
  112. package/dist/__tests__/mining.test.d.ts +0 -2
  113. package/dist/__tests__/mining.test.d.ts.map +0 -1
  114. package/dist/__tests__/mining.test.js +0 -306
  115. package/dist/__tests__/mining.test.js.map +0 -1
  116. package/dist/__tests__/signalActionMap.test.d.ts +0 -17
  117. package/dist/__tests__/signalActionMap.test.d.ts.map +0 -1
  118. package/dist/__tests__/signalActionMap.test.js +0 -165
  119. package/dist/__tests__/signalActionMap.test.js.map +0 -1
  120. package/dist/__tests__/usdcBudget.test.d.ts +0 -2
  121. package/dist/__tests__/usdcBudget.test.d.ts.map +0 -1
  122. package/dist/__tests__/usdcBudget.test.js +0 -128
  123. package/dist/__tests__/usdcBudget.test.js.map +0 -1
  124. package/dist/__tests__/x402.test.d.ts +0 -2
  125. package/dist/__tests__/x402.test.d.ts.map +0 -1
  126. package/dist/__tests__/x402.test.js +0 -117
  127. package/dist/__tests__/x402.test.js.map +0 -1
  128. package/dist/goal/goalLoop.d.ts +0 -78
  129. package/dist/goal/goalLoop.d.ts.map +0 -1
  130. package/dist/goal/goalLoop.js +0 -388
  131. package/dist/goal/goalLoop.js.map +0 -1
  132. package/dist/goal/goalPrompts.d.ts +0 -20
  133. package/dist/goal/goalPrompts.d.ts.map +0 -1
  134. package/dist/goal/goalPrompts.js +0 -54
  135. package/dist/goal/goalPrompts.js.map +0 -1
  136. package/dist/goal/types.d.ts +0 -102
  137. package/dist/goal/types.d.ts.map +0 -1
  138. package/dist/goal/types.js +0 -7
  139. package/dist/goal/types.js.map +0 -1
  140. package/dist/loadProfile.d.ts +0 -100
  141. package/dist/loadProfile.d.ts.map +0 -1
  142. package/dist/loadProfile.js +0 -221
  143. package/dist/loadProfile.js.map +0 -1
  144. package/dist/usdcBudget.d.ts +0 -90
  145. package/dist/usdcBudget.d.ts.map +0 -1
  146. package/dist/usdcBudget.js +0 -155
  147. package/dist/usdcBudget.js.map +0 -1
  148. package/dist/x402.d.ts +0 -69
  149. package/dist/x402.d.ts.map +0 -1
  150. package/dist/x402.js +0 -139
  151. 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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"}