@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.
- package/dist/__tests__/apiMarketplace.test.js +2 -189
- package/dist/__tests__/apiMarketplace.test.js.map +1 -1
- package/dist/__tests__/autonomous.dedup.test.js +0 -11
- package/dist/__tests__/autonomous.dedup.test.js.map +1 -1
- package/dist/__tests__/autonomous.getAvailableActions.test.js +1 -13
- package/dist/__tests__/autonomous.getAvailableActions.test.js.map +1 -1
- package/dist/__tests__/bdAgentPack.test.d.ts +2 -0
- package/dist/__tests__/bdAgentPack.test.d.ts.map +1 -0
- package/dist/__tests__/bdAgentPack.test.js +44 -0
- package/dist/__tests__/bdAgentPack.test.js.map +1 -0
- package/dist/__tests__/codegen-drift.test.js +1 -3
- package/dist/__tests__/codegen-drift.test.js.map +1 -1
- package/dist/__tests__/conversation/modelThresholdsParity.test.js +14 -19
- package/dist/__tests__/conversation/modelThresholdsParity.test.js.map +1 -1
- package/dist/__tests__/economy.frontierInference.test.d.ts +2 -0
- package/dist/__tests__/economy.frontierInference.test.d.ts.map +1 -0
- package/dist/__tests__/economy.frontierInference.test.js +61 -0
- package/dist/__tests__/economy.frontierInference.test.js.map +1 -0
- package/dist/__tests__/economy.surplusBranch.test.js +0 -64
- package/dist/__tests__/economy.surplusBranch.test.js.map +1 -1
- package/dist/__tests__/externalMcpTools.test.d.ts +2 -0
- package/dist/__tests__/externalMcpTools.test.d.ts.map +1 -0
- package/dist/__tests__/externalMcpTools.test.js +94 -0
- package/dist/__tests__/externalMcpTools.test.js.map +1 -0
- package/dist/__tests__/helpers/mockRuntime.d.ts.map +1 -1
- package/dist/__tests__/helpers/mockRuntime.js +0 -7
- package/dist/__tests__/helpers/mockRuntime.js.map +1 -1
- package/dist/__tests__/pack.gating.test.d.ts +2 -0
- package/dist/__tests__/pack.gating.test.d.ts.map +1 -0
- package/dist/__tests__/pack.gating.test.js +134 -0
- package/dist/__tests__/pack.gating.test.js.map +1 -0
- package/dist/__tests__/pack.test.d.ts +2 -0
- package/dist/__tests__/pack.test.d.ts.map +1 -0
- package/dist/__tests__/pack.test.js +299 -0
- package/dist/__tests__/pack.test.js.map +1 -0
- package/dist/__tests__/packLoader.test.d.ts +2 -0
- package/dist/__tests__/packLoader.test.d.ts.map +1 -0
- package/dist/__tests__/packLoader.test.js +304 -0
- package/dist/__tests__/packLoader.test.js.map +1 -0
- package/dist/__tests__/presetLoader.test.js +17 -0
- package/dist/__tests__/presetLoader.test.js.map +1 -1
- package/dist/actionCatalog.d.ts.map +1 -1
- package/dist/actionCatalog.generated.d.ts +1 -1
- package/dist/actionCatalog.generated.d.ts.map +1 -1
- package/dist/actionCatalog.generated.js +22 -137
- package/dist/actionCatalog.generated.js.map +1 -1
- package/dist/actionCatalog.js +13 -11
- package/dist/actionCatalog.js.map +1 -1
- package/dist/api-marketplace.d.ts +0 -146
- package/dist/api-marketplace.d.ts.map +1 -1
- package/dist/api-marketplace.js +0 -218
- package/dist/api-marketplace.js.map +1 -1
- package/dist/autonomous.d.ts +33 -17
- package/dist/autonomous.d.ts.map +1 -1
- package/dist/autonomous.js +122 -273
- package/dist/autonomous.js.map +1 -1
- package/dist/contentSafety.d.ts +1 -1
- package/dist/contentSafety.d.ts.map +1 -1
- package/dist/contentSafety.js +2 -6
- package/dist/contentSafety.js.map +1 -1
- package/dist/discovery.js +1 -1
- package/dist/discovery.js.map +1 -1
- package/dist/economy.d.ts +15 -10
- package/dist/economy.d.ts.map +1 -1
- package/dist/economy.js +29 -16
- package/dist/economy.js.map +1 -1
- package/dist/frontierPass.d.ts +30 -0
- package/dist/frontierPass.d.ts.map +1 -0
- package/dist/frontierPass.js +42 -0
- package/dist/frontierPass.js.map +1 -0
- package/dist/identity.d.ts +0 -51
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +0 -50
- package/dist/identity.js.map +1 -1
- package/dist/index.d.ts +8 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -16
- package/dist/index.js.map +1 -1
- package/dist/pack.d.ts +181 -0
- package/dist/pack.d.ts.map +1 -0
- package/dist/pack.js +379 -0
- package/dist/pack.js.map +1 -0
- package/dist/packLoader.d.ts +109 -0
- package/dist/packLoader.d.ts.map +1 -0
- package/dist/packLoader.js +236 -0
- package/dist/packLoader.js.map +1 -0
- package/dist/presetLoader.d.ts +3 -1
- package/dist/presetLoader.d.ts.map +1 -1
- package/dist/presetLoader.js +7 -1
- package/dist/presetLoader.js.map +1 -1
- package/dist/signalActionMap.d.ts +17 -1
- package/dist/signalActionMap.d.ts.map +1 -1
- package/dist/signalActionMap.js +42 -17
- package/dist/signalActionMap.js.map +1 -1
- package/dist/swarms.d.ts +0 -13
- package/dist/swarms.d.ts.map +1 -1
- package/dist/swarms.js +0 -4
- package/dist/swarms.js.map +1 -1
- package/dist/tools.d.ts +23 -7
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +21 -7
- package/dist/tools.js.map +1 -1
- package/dist/types.d.ts +0 -21
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/__tests__/autonomous.goalBootstrap.test.d.ts +0 -2
- package/dist/__tests__/autonomous.goalBootstrap.test.d.ts.map +0 -1
- package/dist/__tests__/autonomous.goalBootstrap.test.js +0 -148
- package/dist/__tests__/autonomous.goalBootstrap.test.js.map +0 -1
- package/dist/__tests__/autonomous.miningTrack.test.d.ts +0 -2
- package/dist/__tests__/autonomous.miningTrack.test.d.ts.map +0 -1
- package/dist/__tests__/autonomous.miningTrack.test.js +0 -38
- package/dist/__tests__/autonomous.miningTrack.test.js.map +0 -1
- package/dist/__tests__/autonomous.payApi.test.d.ts +0 -2
- package/dist/__tests__/autonomous.payApi.test.d.ts.map +0 -1
- package/dist/__tests__/autonomous.payApi.test.js +0 -73
- package/dist/__tests__/autonomous.payApi.test.js.map +0 -1
- package/dist/__tests__/autonomous.workspaceOpportunity.test.d.ts +0 -2
- package/dist/__tests__/autonomous.workspaceOpportunity.test.d.ts.map +0 -1
- package/dist/__tests__/autonomous.workspaceOpportunity.test.js +0 -200
- package/dist/__tests__/autonomous.workspaceOpportunity.test.js.map +0 -1
- package/dist/__tests__/goalLoop.test.d.ts +0 -2
- package/dist/__tests__/goalLoop.test.d.ts.map +0 -1
- package/dist/__tests__/goalLoop.test.js +0 -358
- package/dist/__tests__/goalLoop.test.js.map +0 -1
- package/dist/__tests__/loadProfile.test.d.ts +0 -8
- package/dist/__tests__/loadProfile.test.d.ts.map +0 -1
- package/dist/__tests__/loadProfile.test.js +0 -134
- package/dist/__tests__/loadProfile.test.js.map +0 -1
- package/dist/__tests__/mining.test.d.ts +0 -2
- package/dist/__tests__/mining.test.d.ts.map +0 -1
- package/dist/__tests__/mining.test.js +0 -306
- package/dist/__tests__/mining.test.js.map +0 -1
- package/dist/__tests__/signalActionMap.test.d.ts +0 -17
- package/dist/__tests__/signalActionMap.test.d.ts.map +0 -1
- package/dist/__tests__/signalActionMap.test.js +0 -165
- package/dist/__tests__/signalActionMap.test.js.map +0 -1
- package/dist/__tests__/usdcBudget.test.d.ts +0 -2
- package/dist/__tests__/usdcBudget.test.d.ts.map +0 -1
- package/dist/__tests__/usdcBudget.test.js +0 -128
- package/dist/__tests__/usdcBudget.test.js.map +0 -1
- package/dist/__tests__/x402.test.d.ts +0 -2
- package/dist/__tests__/x402.test.d.ts.map +0 -1
- package/dist/__tests__/x402.test.js +0 -117
- package/dist/__tests__/x402.test.js.map +0 -1
- package/dist/goal/goalLoop.d.ts +0 -78
- package/dist/goal/goalLoop.d.ts.map +0 -1
- package/dist/goal/goalLoop.js +0 -388
- package/dist/goal/goalLoop.js.map +0 -1
- package/dist/goal/goalPrompts.d.ts +0 -20
- package/dist/goal/goalPrompts.d.ts.map +0 -1
- package/dist/goal/goalPrompts.js +0 -54
- package/dist/goal/goalPrompts.js.map +0 -1
- package/dist/goal/types.d.ts +0 -102
- package/dist/goal/types.d.ts.map +0 -1
- package/dist/goal/types.js +0 -7
- package/dist/goal/types.js.map +0 -1
- package/dist/loadProfile.d.ts +0 -100
- package/dist/loadProfile.d.ts.map +0 -1
- package/dist/loadProfile.js +0 -221
- package/dist/loadProfile.js.map +0 -1
- package/dist/usdcBudget.d.ts +0 -90
- package/dist/usdcBudget.d.ts.map +0 -1
- package/dist/usdcBudget.js +0 -155
- package/dist/usdcBudget.js.map +0 -1
- package/dist/x402.d.ts +0 -69
- package/dist/x402.d.ts.map +0 -1
- package/dist/x402.js +0 -139
- package/dist/x402.js.map +0 -1
package/dist/api-marketplace.js
CHANGED
|
@@ -11,13 +11,6 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { ethers } from "ethers";
|
|
13
13
|
// ── EIP-712 constants for proxy request signing ─────────────
|
|
14
|
-
//
|
|
15
|
-
// `verifyingContract` is intentionally omitted. The signature is verified
|
|
16
|
-
// off-chain at the gateway (see gateway/src/routes/api-marketplace.ts),
|
|
17
|
-
// not by any deployed contract, so EIP-712's optional verifyingContract
|
|
18
|
-
// field has no value to point at. The domain shape here must stay byte-
|
|
19
|
-
// identical to the gateway and Python runtime — any added field changes
|
|
20
|
-
// the typed-data digest and breaks signature verification.
|
|
21
14
|
const API_PROXY_DOMAIN = {
|
|
22
15
|
name: "NookplotApiProxy",
|
|
23
16
|
version: "1",
|
|
@@ -30,28 +23,6 @@ const API_REQUEST_TYPES = {
|
|
|
30
23
|
{ name: "requestHash", type: "bytes32" },
|
|
31
24
|
],
|
|
32
25
|
};
|
|
33
|
-
/**
|
|
34
|
-
* Parse `X-Nookplot-Quota-*` headers into a structured snapshot.
|
|
35
|
-
* Returns null when none of the expected headers are present.
|
|
36
|
-
*/
|
|
37
|
-
export function parseQuotaHeaders(headers) {
|
|
38
|
-
const model = headers["x-nookplot-quota-model"];
|
|
39
|
-
if (!model)
|
|
40
|
-
return null;
|
|
41
|
-
const resetAt = headers["x-nookplot-quota-reset-at"] ?? null;
|
|
42
|
-
const parseIntOrNull = (raw) => {
|
|
43
|
-
if (raw === undefined || raw === "")
|
|
44
|
-
return null;
|
|
45
|
-
const n = Number(raw);
|
|
46
|
-
return Number.isFinite(n) ? n : null;
|
|
47
|
-
};
|
|
48
|
-
return {
|
|
49
|
-
model,
|
|
50
|
-
cap: parseIntOrNull(headers["x-nookplot-quota-cap"]),
|
|
51
|
-
remaining: parseIntOrNull(headers["x-nookplot-quota-remaining"]),
|
|
52
|
-
resetAt,
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
26
|
// ── Manager ─────────────────────────────────────────────────
|
|
56
27
|
export class ApiMarketplaceManager {
|
|
57
28
|
connection;
|
|
@@ -98,124 +69,12 @@ export class ApiMarketplaceManager {
|
|
|
98
69
|
async registerEndpoint(input) {
|
|
99
70
|
return this.connection.request("POST", "/v1/api/register-endpoint", input);
|
|
100
71
|
}
|
|
101
|
-
/**
|
|
102
|
-
* Unregister a proxy endpoint (Phase 11.1).
|
|
103
|
-
*
|
|
104
|
-
* Stops serving traffic on this listing immediately:
|
|
105
|
-
* - `api_proxy_config` row is deleted
|
|
106
|
-
* - `api_availability.status` is flipped to `offline`
|
|
107
|
-
* - subsequent proxy calls return 502 `provider has unregistered`
|
|
108
|
-
*
|
|
109
|
-
* Active agreements are NOT cancelled — the provider remains liable
|
|
110
|
-
* for any pre-paid escrow and must settle/cancel/let-expire each one
|
|
111
|
-
* on-chain. The returned `activeAgreements` count + `warning` string
|
|
112
|
-
* surface that liability to the caller.
|
|
113
|
-
*/
|
|
114
|
-
async unregisterEndpoint(listingId) {
|
|
115
|
-
return this.connection.request("DELETE", `/v1/api/register-endpoint/${listingId}`);
|
|
116
|
-
}
|
|
117
72
|
/**
|
|
118
73
|
* Send a heartbeat to indicate API is available.
|
|
119
74
|
*/
|
|
120
75
|
async heartbeat(input) {
|
|
121
76
|
return this.connection.request("POST", "/v1/api/heartbeat", input);
|
|
122
77
|
}
|
|
123
|
-
/**
|
|
124
|
-
* Long-running heartbeat loop for providers running on traditional
|
|
125
|
-
* (non-serverless) hosts. Fires {@link heartbeat} immediately, then
|
|
126
|
-
* every `intervalMs`. Returns a `stop()` callable.
|
|
127
|
-
*
|
|
128
|
-
* Errors are swallowed (logged via `onError` or `console.warn`) so a
|
|
129
|
-
* transient network blip never tears down the loop. The timer is
|
|
130
|
-
* `unref()`'d on Node so the process can still exit if nothing else
|
|
131
|
-
* is keeping it alive.
|
|
132
|
-
*
|
|
133
|
-
* Serverless agents (GH Actions, Vercel cron, k8s CronJob, AWS Lambda
|
|
134
|
-
* scheduled invokes) should keep calling the single-shot
|
|
135
|
-
* {@link heartbeat} from their own scheduler instead — the loop only
|
|
136
|
-
* makes sense for long-running processes.
|
|
137
|
-
*
|
|
138
|
-
* @example
|
|
139
|
-
* ```ts
|
|
140
|
-
* const { stop } = runtime.apiMarketplace.startHeartbeat({
|
|
141
|
-
* listingId: 42,
|
|
142
|
-
* intervalMs: 4 * 60 * 1000, // 4 min, under the 5-min degraded threshold
|
|
143
|
-
* latencyMs: () => latencyTracker.p95(),
|
|
144
|
-
* });
|
|
145
|
-
* process.on("SIGINT", () => { stop(); process.exit(0); });
|
|
146
|
-
* ```
|
|
147
|
-
*/
|
|
148
|
-
startHeartbeat(input) {
|
|
149
|
-
if (!Number.isFinite(input.intervalMs) || input.intervalMs <= 0) {
|
|
150
|
-
throw new Error(`startHeartbeat: intervalMs must be a positive finite number (got ${input.intervalMs})`);
|
|
151
|
-
}
|
|
152
|
-
if (!Number.isFinite(input.listingId) || input.listingId < 0) {
|
|
153
|
-
throw new Error(`startHeartbeat: listingId must be a non-negative number (got ${input.listingId})`);
|
|
154
|
-
}
|
|
155
|
-
let stopped = false;
|
|
156
|
-
let timer = null;
|
|
157
|
-
const resolveSample = async (s) => {
|
|
158
|
-
if (s === undefined)
|
|
159
|
-
return undefined;
|
|
160
|
-
if (typeof s === "number")
|
|
161
|
-
return s;
|
|
162
|
-
try {
|
|
163
|
-
const v = await s();
|
|
164
|
-
return typeof v === "number" && Number.isFinite(v) ? v : undefined;
|
|
165
|
-
}
|
|
166
|
-
catch {
|
|
167
|
-
return undefined;
|
|
168
|
-
}
|
|
169
|
-
};
|
|
170
|
-
const schedule = (delayMs) => {
|
|
171
|
-
timer = setTimeout(tick, delayMs);
|
|
172
|
-
// Node-only: don't keep the event loop alive just for the heartbeat.
|
|
173
|
-
const t = timer;
|
|
174
|
-
if (typeof t.unref === "function")
|
|
175
|
-
t.unref();
|
|
176
|
-
};
|
|
177
|
-
const tick = async () => {
|
|
178
|
-
if (stopped)
|
|
179
|
-
return;
|
|
180
|
-
try {
|
|
181
|
-
const beat = { listingId: input.listingId };
|
|
182
|
-
const latencyMs = await resolveSample(input.latencyMs);
|
|
183
|
-
if (latencyMs !== undefined)
|
|
184
|
-
beat.latencyMs = latencyMs;
|
|
185
|
-
const activeAgreements = await resolveSample(input.activeAgreements);
|
|
186
|
-
if (activeAgreements !== undefined)
|
|
187
|
-
beat.activeAgreements = activeAgreements;
|
|
188
|
-
const response = await this.heartbeat(beat);
|
|
189
|
-
if (!stopped)
|
|
190
|
-
input.onSuccess?.(response);
|
|
191
|
-
}
|
|
192
|
-
catch (err) {
|
|
193
|
-
if (stopped)
|
|
194
|
-
return;
|
|
195
|
-
if (input.onError) {
|
|
196
|
-
input.onError(err);
|
|
197
|
-
}
|
|
198
|
-
else {
|
|
199
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
200
|
-
console.warn(`[nookplot] heartbeat failed for listing ${input.listingId}: ${msg}`);
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
finally {
|
|
204
|
-
if (!stopped)
|
|
205
|
-
schedule(input.intervalMs);
|
|
206
|
-
}
|
|
207
|
-
};
|
|
208
|
-
schedule(input.skipImmediate ? input.intervalMs : 0);
|
|
209
|
-
return {
|
|
210
|
-
stop: () => {
|
|
211
|
-
stopped = true;
|
|
212
|
-
if (timer !== null) {
|
|
213
|
-
clearTimeout(timer);
|
|
214
|
-
timer = null;
|
|
215
|
-
}
|
|
216
|
-
},
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
78
|
// ============================================================
|
|
220
79
|
// Proxy Request (Buyer)
|
|
221
80
|
// ============================================================
|
|
@@ -226,14 +85,6 @@ export class ApiMarketplaceManager {
|
|
|
226
85
|
* The gateway validates the signature, checks the agreement,
|
|
227
86
|
* meters usage, and forwards to the provider.
|
|
228
87
|
*
|
|
229
|
-
* **Idempotency (status-only).** If the same (signature, request_id) pair
|
|
230
|
-
* is submitted twice within the freshness window, the gateway returns
|
|
231
|
-
* `{ idempotent: true, status_code, request_id }` for the second call —
|
|
232
|
-
* the original response body is NOT replayed. Quota and billing increment
|
|
233
|
-
* exactly once. Pass a fresh `requestId` per logical request, or rely on
|
|
234
|
-
* the gateway to mint one. Body-level idempotency is the caller's
|
|
235
|
-
* responsibility (persist the first response and re-use it client-side).
|
|
236
|
-
*
|
|
237
88
|
* @param input - The proxy request parameters
|
|
238
89
|
* @param privateKey - The buyer's private key for signing
|
|
239
90
|
* @returns The proxied API response
|
|
@@ -280,7 +131,6 @@ export class ApiMarketplaceManager {
|
|
|
280
131
|
headers: responseHeaders,
|
|
281
132
|
body: responseBody,
|
|
282
133
|
requestId: responseHeaders["x-nookplot-request-id"] ?? "",
|
|
283
|
-
quota: parseQuotaHeaders(responseHeaders),
|
|
284
134
|
};
|
|
285
135
|
}
|
|
286
136
|
/**
|
|
@@ -300,73 +150,5 @@ export class ApiMarketplaceManager {
|
|
|
300
150
|
},
|
|
301
151
|
};
|
|
302
152
|
}
|
|
303
|
-
/**
|
|
304
|
-
* Phase 17.1 — open a streaming proxy request and yield decoded chunks
|
|
305
|
-
* as they arrive. The agent stays in control of when to stop reading;
|
|
306
|
-
* the underlying `fetch` Response is exposed via the optional `onResponse`
|
|
307
|
-
* callback so the caller can read trailer headers (request id, quota
|
|
308
|
-
* headers, etc.) once the stream completes.
|
|
309
|
-
*
|
|
310
|
-
* The gateway aborts streams that exceed the provider's declared
|
|
311
|
-
* `maxStreamSeconds` (capped at 600s); callers can also abort early by
|
|
312
|
-
* passing an `AbortSignal`.
|
|
313
|
-
*
|
|
314
|
-
* @example
|
|
315
|
-
* ```ts
|
|
316
|
-
* for await (const chunk of client.proxyRequestStream({
|
|
317
|
-
* agreementId: 1, path: "v1/chat/completions",
|
|
318
|
-
* body: { messages: [...], stream: true },
|
|
319
|
-
* }, privateKey)) {
|
|
320
|
-
* process.stdout.write(chunk);
|
|
321
|
-
* }
|
|
322
|
-
* ```
|
|
323
|
-
*/
|
|
324
|
-
async *proxyRequestStream(input, privateKey) {
|
|
325
|
-
const method = input.method ?? "POST";
|
|
326
|
-
const bodyStr = input.body ? JSON.stringify(input.body) : "";
|
|
327
|
-
const timestamp = Math.floor(Date.now() / 1000);
|
|
328
|
-
const requestHash = ethers.keccak256(ethers.toUtf8Bytes(`${method}:${input.path}:${bodyStr}`));
|
|
329
|
-
const wallet = new ethers.Wallet(privateKey);
|
|
330
|
-
const signature = await wallet.signTypedData(API_PROXY_DOMAIN, API_REQUEST_TYPES, {
|
|
331
|
-
agreementId: BigInt(input.agreementId),
|
|
332
|
-
timestamp: BigInt(timestamp),
|
|
333
|
-
requestHash,
|
|
334
|
-
});
|
|
335
|
-
const url = `${this.connection.gatewayUrl}/v1/api-proxy/${input.agreementId}/${input.path}`;
|
|
336
|
-
const headers = {
|
|
337
|
-
"Authorization": `Bearer ${this.connection.apiKey}`,
|
|
338
|
-
"Content-Type": "application/json",
|
|
339
|
-
"X-Nookplot-Signature": signature,
|
|
340
|
-
"X-Nookplot-Timestamp": String(timestamp),
|
|
341
|
-
"Accept": "text/event-stream",
|
|
342
|
-
...input.headers,
|
|
343
|
-
};
|
|
344
|
-
const init = { method, headers, signal: input.signal };
|
|
345
|
-
if (bodyStr && !["GET", "HEAD"].includes(method)) {
|
|
346
|
-
init.body = bodyStr;
|
|
347
|
-
}
|
|
348
|
-
const response = await fetch(url, init);
|
|
349
|
-
input.onResponse?.(response);
|
|
350
|
-
if (!response.body)
|
|
351
|
-
return;
|
|
352
|
-
const decoder = new TextDecoder();
|
|
353
|
-
const reader = response.body.getReader();
|
|
354
|
-
try {
|
|
355
|
-
// eslint-disable-next-line no-constant-condition
|
|
356
|
-
while (true) {
|
|
357
|
-
const { done, value } = await reader.read();
|
|
358
|
-
if (done)
|
|
359
|
-
break;
|
|
360
|
-
if (value)
|
|
361
|
-
yield decoder.decode(value, { stream: true });
|
|
362
|
-
}
|
|
363
|
-
const tail = decoder.decode();
|
|
364
|
-
if (tail)
|
|
365
|
-
yield tail;
|
|
366
|
-
}
|
|
367
|
-
finally {
|
|
368
|
-
reader.releaseLock();
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
153
|
}
|
|
372
154
|
//# sourceMappingURL=api-marketplace.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-marketplace.js","sourceRoot":"","sources":["../src/api-marketplace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,+DAA+D;
|
|
1
|
+
{"version":3,"file":"api-marketplace.js","sourceRoot":"","sources":["../src/api-marketplace.ts"],"names":[],"mappings":"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"}
|
package/dist/autonomous.d.ts
CHANGED
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
* @module autonomous
|
|
41
41
|
*/
|
|
42
42
|
import type { NookplotRuntime } from "./index.js";
|
|
43
|
+
import { type Pack } from "./pack.js";
|
|
43
44
|
import { WakeUpStack } from "./wakeUpStack.js";
|
|
44
45
|
/** Signal event payload from the gateway. */
|
|
45
46
|
export interface SignalEvent {
|
|
@@ -107,6 +108,15 @@ export interface AutonomousAgentOptions {
|
|
|
107
108
|
onApproval?: ApprovalCallback;
|
|
108
109
|
/** Per-channel response cooldown in seconds (default: 120). */
|
|
109
110
|
responseCooldown?: number;
|
|
111
|
+
/**
|
|
112
|
+
* Loaded pack (ROADMAP_external-mcp-connectors Phase 3). When set, the
|
|
113
|
+
* agent's action surface is gated to CORE_ACTIONS ∪ the pack's resolved
|
|
114
|
+
* actions ∪ mounted external MCP tools — both in prompts
|
|
115
|
+
* (getAvailableActions) and at dispatch (handleActionRequest refuses
|
|
116
|
+
* anything outside the set). Mount the pack's servers first with
|
|
117
|
+
* PackLoader; this option only gates.
|
|
118
|
+
*/
|
|
119
|
+
pack?: Pack;
|
|
110
120
|
}
|
|
111
121
|
/**
|
|
112
122
|
* Get the list of available actions for a given signal type.
|
|
@@ -125,7 +135,7 @@ export interface AutonomousAgentOptions {
|
|
|
125
135
|
* // → "- reply: Send a text reply in the current context. Params: content (string)\n..."
|
|
126
136
|
* ```
|
|
127
137
|
*/
|
|
128
|
-
export declare function getAvailableActions(signalType: string, loadedCategories?: Set<string
|
|
138
|
+
export declare function getAvailableActions(signalType: string, loadedCategories?: Set<string>, externalActions?: readonly string[], packActions?: readonly string[] | null): string[];
|
|
129
139
|
/**
|
|
130
140
|
* Maps a `mining_opportunity` signal's optional `track` field to the
|
|
131
141
|
* track-specific action set the agent's brain should consider. Values are
|
|
@@ -164,25 +174,23 @@ export declare class AutonomousAgent {
|
|
|
164
174
|
/** Tiered knowledge context: L0 identity + L1 essentials (session-cached) + L2 on-demand. */
|
|
165
175
|
readonly wakeUpStack: WakeUpStack;
|
|
166
176
|
constructor(runtime: NookplotRuntime, options?: AutonomousAgentOptions);
|
|
167
|
-
/**
|
|
168
|
-
|
|
169
|
-
/** Stop the autonomous agent. */
|
|
170
|
-
stop(): void;
|
|
177
|
+
/** External MCP tools (mounted servers) exposed as `mcp__<server>__<tool>` actions. */
|
|
178
|
+
private externalMcpActions;
|
|
171
179
|
/**
|
|
172
|
-
*
|
|
173
|
-
*
|
|
174
|
-
* returns immediately so WebSocket signal subscriptions are live even
|
|
175
|
-
* while the goal loop is running its first step.
|
|
180
|
+
* Resolved action set of the loaded pack (null = no pack, ungated).
|
|
181
|
+
* Set once at construction from options.pack — packs are immutable per load.
|
|
176
182
|
*/
|
|
177
|
-
private
|
|
183
|
+
private readonly packActions;
|
|
178
184
|
/**
|
|
179
|
-
*
|
|
180
|
-
*
|
|
181
|
-
*
|
|
182
|
-
* - blocked_stuck → create pending task (stuck_3x), pause
|
|
183
|
-
* - blocked_capability → create pending task (needs_capability), pause
|
|
185
|
+
* Fetch the agent's mounted external MCP tools and expose them as
|
|
186
|
+
* available actions (ROADMAP_external-mcp-connectors Phase 1). Runs at
|
|
187
|
+
* start(); call again after connectMcpServer to pick up new mounts.
|
|
184
188
|
*/
|
|
185
|
-
|
|
189
|
+
refreshExternalMcpActions(): Promise<string[]>;
|
|
190
|
+
/** Start listening for proactive signals and action requests. */
|
|
191
|
+
start(): void;
|
|
192
|
+
/** Stop the autonomous agent. */
|
|
193
|
+
stop(): void;
|
|
186
194
|
/**
|
|
187
195
|
* Build a stable dedup key from a signal so we can detect duplicates.
|
|
188
196
|
* DMs dedup on sender, followers dedup on address, channels dedup on channel+sender.
|
|
@@ -198,7 +206,6 @@ export declare class AutonomousAgent {
|
|
|
198
206
|
private handleAttestationOpportunity;
|
|
199
207
|
private handleBounty;
|
|
200
208
|
private handleGuildOpportunity;
|
|
201
|
-
private handleWorkspaceOpportunity;
|
|
202
209
|
private handleMiningOpportunity;
|
|
203
210
|
private handleSubmissionVerified;
|
|
204
211
|
private handleLearningCommentReceived;
|
|
@@ -228,6 +235,7 @@ export declare class AutonomousAgent {
|
|
|
228
235
|
private handleOnboardingSuggestion;
|
|
229
236
|
private handleSpecializationPath;
|
|
230
237
|
private handleCommunityGap;
|
|
238
|
+
private handleDirective;
|
|
231
239
|
private handleFilesCommitted;
|
|
232
240
|
private handleReviewSubmitted;
|
|
233
241
|
private handleCollaboratorAdded;
|
|
@@ -259,6 +267,14 @@ export declare class AutonomousAgent {
|
|
|
259
267
|
* the agent collaborates on have no reviews yet.
|
|
260
268
|
*/
|
|
261
269
|
private handlePendingReview;
|
|
270
|
+
/**
|
|
271
|
+
* Execute a `use_frontier_model` action — delegates to the shared
|
|
272
|
+
* {@link runFrontierPass} so the runtime + CLI dispatch paths can't drift on
|
|
273
|
+
* this money path. Consumes an owner-reserved pass, runs a one-shot Surplus
|
|
274
|
+
* completion paid by the agent's OWN x402 key, finalizes (or reverts on
|
|
275
|
+
* failure). Returns the frontier answer, or an `{ error }` tool result.
|
|
276
|
+
*/
|
|
277
|
+
private executeFrontierPass;
|
|
262
278
|
private handleActionRequest;
|
|
263
279
|
private handleTeachingProposed;
|
|
264
280
|
private handleTeachingAccepted;
|
package/dist/autonomous.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autonomous.d.ts","sourceRoot":"","sources":["../src/autonomous.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"autonomous.d.ts","sourceRoot":"","sources":["../src/autonomous.ts"],"names":[],"mappings":"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"}
|