@nookplot/runtime 0.5.144 → 0.5.145
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 +189 -2
- package/dist/__tests__/apiMarketplace.test.js.map +1 -1
- package/dist/__tests__/autonomous.dedup.test.js +11 -0
- package/dist/__tests__/autonomous.dedup.test.js.map +1 -1
- package/dist/__tests__/autonomous.getAvailableActions.test.js +13 -1
- package/dist/__tests__/autonomous.getAvailableActions.test.js.map +1 -1
- package/dist/__tests__/autonomous.goalBootstrap.test.d.ts +2 -0
- package/dist/__tests__/autonomous.goalBootstrap.test.d.ts.map +1 -0
- package/dist/__tests__/autonomous.goalBootstrap.test.js +148 -0
- package/dist/__tests__/autonomous.goalBootstrap.test.js.map +1 -0
- package/dist/__tests__/autonomous.miningTrack.test.d.ts +2 -0
- package/dist/__tests__/autonomous.miningTrack.test.d.ts.map +1 -0
- package/dist/__tests__/autonomous.miningTrack.test.js +38 -0
- package/dist/__tests__/autonomous.miningTrack.test.js.map +1 -0
- package/dist/__tests__/autonomous.payApi.test.d.ts +2 -0
- package/dist/__tests__/autonomous.payApi.test.d.ts.map +1 -0
- package/dist/__tests__/autonomous.payApi.test.js +73 -0
- package/dist/__tests__/autonomous.payApi.test.js.map +1 -0
- package/dist/__tests__/autonomous.workspaceOpportunity.test.d.ts +2 -0
- package/dist/__tests__/autonomous.workspaceOpportunity.test.d.ts.map +1 -0
- package/dist/__tests__/autonomous.workspaceOpportunity.test.js +212 -0
- package/dist/__tests__/autonomous.workspaceOpportunity.test.js.map +1 -0
- package/dist/__tests__/bdAgentPack.test.js +1 -1
- package/dist/__tests__/bdAgentPack.test.js.map +1 -1
- package/dist/__tests__/bounties.test.d.ts +11 -0
- package/dist/__tests__/bounties.test.d.ts.map +1 -0
- package/dist/__tests__/bounties.test.js +78 -0
- package/dist/__tests__/bounties.test.js.map +1 -0
- package/dist/__tests__/codegen-drift.test.js +3 -1
- package/dist/__tests__/codegen-drift.test.js.map +1 -1
- package/dist/__tests__/conversation/modelThresholdsParity.test.js +19 -14
- package/dist/__tests__/conversation/modelThresholdsParity.test.js.map +1 -1
- package/dist/__tests__/economy.surplusBranch.test.js +64 -0
- package/dist/__tests__/economy.surplusBranch.test.js.map +1 -1
- package/dist/__tests__/goalLoop.test.d.ts +2 -0
- package/dist/__tests__/goalLoop.test.d.ts.map +1 -0
- package/dist/__tests__/goalLoop.test.js +358 -0
- package/dist/__tests__/goalLoop.test.js.map +1 -0
- package/dist/__tests__/helpers/mockRuntime.d.ts.map +1 -1
- package/dist/__tests__/helpers/mockRuntime.js +7 -0
- package/dist/__tests__/helpers/mockRuntime.js.map +1 -1
- package/dist/__tests__/loadProfile.test.d.ts +8 -0
- package/dist/__tests__/loadProfile.test.d.ts.map +1 -0
- package/dist/__tests__/loadProfile.test.js +134 -0
- package/dist/__tests__/loadProfile.test.js.map +1 -0
- package/dist/__tests__/mining.test.d.ts +2 -0
- package/dist/__tests__/mining.test.d.ts.map +1 -0
- package/dist/__tests__/mining.test.js +306 -0
- package/dist/__tests__/mining.test.js.map +1 -0
- package/dist/__tests__/pack.test.js +14 -14
- package/dist/__tests__/packLoader.test.js +4 -4
- package/dist/__tests__/presetLoader.test.js +42 -42
- package/dist/__tests__/runtimeConstructor.test.d.ts +18 -0
- package/dist/__tests__/runtimeConstructor.test.d.ts.map +1 -0
- package/dist/__tests__/runtimeConstructor.test.js +57 -0
- package/dist/__tests__/runtimeConstructor.test.js.map +1 -0
- package/dist/__tests__/sandbox.test.js +24 -24
- package/dist/__tests__/signalActionMap.test.d.ts +17 -0
- package/dist/__tests__/signalActionMap.test.d.ts.map +1 -0
- package/dist/__tests__/signalActionMap.test.js +165 -0
- package/dist/__tests__/signalActionMap.test.js.map +1 -0
- package/dist/__tests__/usdcBudget.test.d.ts +2 -0
- package/dist/__tests__/usdcBudget.test.d.ts.map +1 -0
- package/dist/__tests__/usdcBudget.test.js +128 -0
- package/dist/__tests__/usdcBudget.test.js.map +1 -0
- package/dist/__tests__/x402.test.d.ts +2 -0
- package/dist/__tests__/x402.test.d.ts.map +1 -0
- package/dist/__tests__/x402.test.js +117 -0
- package/dist/__tests__/x402.test.js.map +1 -0
- 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 +154 -29
- package/dist/actionCatalog.generated.js.map +1 -1
- package/dist/actionCatalog.js +0 -10
- package/dist/actionCatalog.js.map +1 -1
- package/dist/api-marketplace.d.ts +146 -0
- package/dist/api-marketplace.d.ts.map +1 -1
- package/dist/api-marketplace.js +218 -0
- package/dist/api-marketplace.js.map +1 -1
- package/dist/autonomous.d.ts +16 -9
- package/dist/autonomous.d.ts.map +1 -1
- package/dist/autonomous.js +278 -59
- package/dist/autonomous.js.map +1 -1
- package/dist/bounties.d.ts +21 -1
- package/dist/bounties.d.ts.map +1 -1
- package/dist/bounties.js +5 -1
- package/dist/bounties.js.map +1 -1
- package/dist/contentSafety.d.ts +1 -1
- package/dist/contentSafety.d.ts.map +1 -1
- package/dist/contentSafety.js +6 -2
- package/dist/contentSafety.js.map +1 -1
- package/dist/conversation/modelLimits.js +17 -17
- package/dist/discovery.js +1 -1
- package/dist/discovery.js.map +1 -1
- package/dist/economy.d.ts +10 -15
- package/dist/economy.d.ts.map +1 -1
- package/dist/economy.js +16 -29
- package/dist/economy.js.map +1 -1
- package/dist/goal/goalLoop.d.ts +78 -0
- package/dist/goal/goalLoop.d.ts.map +1 -0
- package/dist/goal/goalLoop.js +388 -0
- package/dist/goal/goalLoop.js.map +1 -0
- package/dist/goal/goalPrompts.d.ts +20 -0
- package/dist/goal/goalPrompts.d.ts.map +1 -0
- package/dist/goal/goalPrompts.js +54 -0
- package/dist/goal/goalPrompts.js.map +1 -0
- package/dist/goal/types.d.ts +102 -0
- package/dist/goal/types.d.ts.map +1 -0
- package/dist/goal/types.js +7 -0
- package/dist/goal/types.js.map +1 -0
- package/dist/identity.d.ts +51 -0
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +50 -0
- package/dist/identity.js.map +1 -1
- package/dist/index.d.ts +18 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -2
- package/dist/index.js.map +1 -1
- package/dist/loadProfile.d.ts +100 -0
- package/dist/loadProfile.d.ts.map +1 -0
- package/dist/loadProfile.js +221 -0
- package/dist/loadProfile.js.map +1 -0
- package/dist/signalActionMap.d.ts.map +1 -1
- package/dist/signalActionMap.js +16 -5
- package/dist/signalActionMap.js.map +1 -1
- package/dist/swarms.d.ts +13 -0
- package/dist/swarms.d.ts.map +1 -1
- package/dist/swarms.js +4 -0
- package/dist/swarms.js.map +1 -1
- package/dist/tools.js +1 -1
- package/dist/tools.js.map +1 -1
- package/dist/types.d.ts +21 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/usdcBudget.d.ts +90 -0
- package/dist/usdcBudget.d.ts.map +1 -0
- package/dist/usdcBudget.js +155 -0
- package/dist/usdcBudget.js.map +1 -0
- package/dist/x402.d.ts +69 -0
- package/dist/x402.d.ts.map +1 -0
- package/dist/x402.js +139 -0
- package/dist/x402.js.map +1 -0
- package/package.json +1 -1
- package/dist/__tests__/economy.frontierInference.test.d.ts +0 -2
- package/dist/__tests__/economy.frontierInference.test.d.ts.map +0 -1
- package/dist/__tests__/economy.frontierInference.test.js +0 -61
- package/dist/__tests__/economy.frontierInference.test.js.map +0 -1
- package/dist/frontierPass.d.ts +0 -30
- package/dist/frontierPass.d.ts.map +0 -1
- package/dist/frontierPass.js +0 -42
- package/dist/frontierPass.js.map +0 -1
|
@@ -36,6 +36,15 @@ export interface ApiRegisterEndpointInput {
|
|
|
36
36
|
rateLimitRpm?: number;
|
|
37
37
|
allowedMethods?: string[];
|
|
38
38
|
maxPayloadBytes?: number;
|
|
39
|
+
/** Optional per-listing streaming wall-time, [1, 600] seconds. */
|
|
40
|
+
maxStreamSeconds?: number;
|
|
41
|
+
/**
|
|
42
|
+
* Full upstream Authorization header value (e.g. "Bearer sk-..." or
|
|
43
|
+
* "Basic base64(user:pass)"). Encrypted at rest by the gateway with
|
|
44
|
+
* SECRET_ENCRYPTION_KEY. Pass `null` to clear an existing value; omit
|
|
45
|
+
* to leave it untouched on re-registration.
|
|
46
|
+
*/
|
|
47
|
+
upstreamAuth?: string | null;
|
|
39
48
|
}
|
|
40
49
|
/** Input for sending a provider heartbeat. */
|
|
41
50
|
export interface ApiHeartbeatInput {
|
|
@@ -43,6 +52,44 @@ export interface ApiHeartbeatInput {
|
|
|
43
52
|
latencyMs?: number;
|
|
44
53
|
activeAgreements?: number;
|
|
45
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Sampler for per-tick numeric fields on the heartbeat loop. Either a
|
|
57
|
+
* static value, a sync function, or an async function. Returning
|
|
58
|
+
* `undefined` (or throwing) omits the field from that tick's payload.
|
|
59
|
+
*/
|
|
60
|
+
export type ApiHeartbeatSampler = number | (() => number | undefined | Promise<number | undefined>);
|
|
61
|
+
/** Input for the long-running heartbeat helper {@link ApiMarketplaceManager.startHeartbeat}. */
|
|
62
|
+
export interface ApiStartHeartbeatInput {
|
|
63
|
+
listingId: number;
|
|
64
|
+
/**
|
|
65
|
+
* Interval between heartbeats in milliseconds. The gateway flips a
|
|
66
|
+
* listing to `degraded` after 5 min without one and `offline` after
|
|
67
|
+
* 15 min — choose well under 5 min (default in the CLI flag is 240000 = 4 min).
|
|
68
|
+
*/
|
|
69
|
+
intervalMs: number;
|
|
70
|
+
/** Optional p95 latency to attach to each heartbeat. Re-sampled per tick. */
|
|
71
|
+
latencyMs?: ApiHeartbeatSampler;
|
|
72
|
+
/** Optional active-agreement count. Re-sampled per tick. */
|
|
73
|
+
activeAgreements?: ApiHeartbeatSampler;
|
|
74
|
+
/**
|
|
75
|
+
* When `true`, wait one `intervalMs` before the first heartbeat instead
|
|
76
|
+
* of firing immediately. Defaults to `false` so the listing flips to
|
|
77
|
+
* `online` as soon as the loop starts.
|
|
78
|
+
*/
|
|
79
|
+
skipImmediate?: boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Called when a heartbeat throws. Receives the raw error. Defaults to
|
|
82
|
+
* `console.warn`. Return value is ignored; the loop always continues.
|
|
83
|
+
*/
|
|
84
|
+
onError?: (err: unknown) => void;
|
|
85
|
+
/** Called after each successful heartbeat with the gateway response. */
|
|
86
|
+
onSuccess?: (response: unknown) => void;
|
|
87
|
+
}
|
|
88
|
+
/** Handle returned by {@link ApiMarketplaceManager.startHeartbeat}. */
|
|
89
|
+
export interface ApiStartHeartbeatHandle {
|
|
90
|
+
/** Stop the loop. Idempotent. In-flight requests are NOT aborted but their result is discarded. */
|
|
91
|
+
stop: () => void;
|
|
92
|
+
}
|
|
46
93
|
/** Input for making a proxied API request. */
|
|
47
94
|
export interface ApiProxyRequestInput {
|
|
48
95
|
agreementId: number;
|
|
@@ -51,13 +98,35 @@ export interface ApiProxyRequestInput {
|
|
|
51
98
|
body?: unknown;
|
|
52
99
|
headers?: Record<string, string>;
|
|
53
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Quota snapshot parsed from `X-Nookplot-Quota-*` response headers
|
|
103
|
+
* (Phase 14.4). Present on every 2xx/4xx api-category proxy response;
|
|
104
|
+
* absent on 5xx responses and non-api agreements.
|
|
105
|
+
*/
|
|
106
|
+
export interface ApiProxyQuotaSnapshot {
|
|
107
|
+
/** Pricing model declared on the agreement's listing. */
|
|
108
|
+
model: string;
|
|
109
|
+
/** Total requests allowed for the bundle, or null for uncountable models. */
|
|
110
|
+
cap: number | null;
|
|
111
|
+
/** Requests remaining after this call, or null for uncountable models. */
|
|
112
|
+
remaining: number | null;
|
|
113
|
+
/** ISO 8601 reset timestamp, set on `per-month` pricing only. */
|
|
114
|
+
resetAt: string | null;
|
|
115
|
+
}
|
|
54
116
|
/** Result from a proxied API request. */
|
|
55
117
|
export interface ApiProxyResult {
|
|
56
118
|
status: number;
|
|
57
119
|
headers: Record<string, string>;
|
|
58
120
|
body: unknown;
|
|
59
121
|
requestId: string;
|
|
122
|
+
/** Parsed quota snapshot, when present. See `ApiProxyQuotaSnapshot`. */
|
|
123
|
+
quota: ApiProxyQuotaSnapshot | null;
|
|
60
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Parse `X-Nookplot-Quota-*` headers into a structured snapshot.
|
|
127
|
+
* Returns null when none of the expected headers are present.
|
|
128
|
+
*/
|
|
129
|
+
export declare function parseQuotaHeaders(headers: Record<string, string>): ApiProxyQuotaSnapshot | null;
|
|
61
130
|
export declare class ApiMarketplaceManager {
|
|
62
131
|
private readonly connection;
|
|
63
132
|
constructor(connection: ConnectionManager);
|
|
@@ -77,10 +146,54 @@ export declare class ApiMarketplaceManager {
|
|
|
77
146
|
* Register or update a proxy endpoint for an API listing.
|
|
78
147
|
*/
|
|
79
148
|
registerEndpoint(input: ApiRegisterEndpointInput): Promise<unknown>;
|
|
149
|
+
/**
|
|
150
|
+
* Unregister a proxy endpoint (Phase 11.1).
|
|
151
|
+
*
|
|
152
|
+
* Stops serving traffic on this listing immediately:
|
|
153
|
+
* - `api_proxy_config` row is deleted
|
|
154
|
+
* - `api_availability.status` is flipped to `offline`
|
|
155
|
+
* - subsequent proxy calls return 502 `provider has unregistered`
|
|
156
|
+
*
|
|
157
|
+
* Active agreements are NOT cancelled — the provider remains liable
|
|
158
|
+
* for any pre-paid escrow and must settle/cancel/let-expire each one
|
|
159
|
+
* on-chain. The returned `activeAgreements` count + `warning` string
|
|
160
|
+
* surface that liability to the caller.
|
|
161
|
+
*/
|
|
162
|
+
unregisterEndpoint(listingId: number): Promise<{
|
|
163
|
+
ok: true;
|
|
164
|
+
activeAgreements: number;
|
|
165
|
+
warning: string;
|
|
166
|
+
}>;
|
|
80
167
|
/**
|
|
81
168
|
* Send a heartbeat to indicate API is available.
|
|
82
169
|
*/
|
|
83
170
|
heartbeat(input: ApiHeartbeatInput): Promise<unknown>;
|
|
171
|
+
/**
|
|
172
|
+
* Long-running heartbeat loop for providers running on traditional
|
|
173
|
+
* (non-serverless) hosts. Fires {@link heartbeat} immediately, then
|
|
174
|
+
* every `intervalMs`. Returns a `stop()` callable.
|
|
175
|
+
*
|
|
176
|
+
* Errors are swallowed (logged via `onError` or `console.warn`) so a
|
|
177
|
+
* transient network blip never tears down the loop. The timer is
|
|
178
|
+
* `unref()`'d on Node so the process can still exit if nothing else
|
|
179
|
+
* is keeping it alive.
|
|
180
|
+
*
|
|
181
|
+
* Serverless agents (GH Actions, Vercel cron, k8s CronJob, AWS Lambda
|
|
182
|
+
* scheduled invokes) should keep calling the single-shot
|
|
183
|
+
* {@link heartbeat} from their own scheduler instead — the loop only
|
|
184
|
+
* makes sense for long-running processes.
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* ```ts
|
|
188
|
+
* const { stop } = runtime.apiMarketplace.startHeartbeat({
|
|
189
|
+
* listingId: 42,
|
|
190
|
+
* intervalMs: 4 * 60 * 1000, // 4 min, under the 5-min degraded threshold
|
|
191
|
+
* latencyMs: () => latencyTracker.p95(),
|
|
192
|
+
* });
|
|
193
|
+
* process.on("SIGINT", () => { stop(); process.exit(0); });
|
|
194
|
+
* ```
|
|
195
|
+
*/
|
|
196
|
+
startHeartbeat(input: ApiStartHeartbeatInput): ApiStartHeartbeatHandle;
|
|
84
197
|
/**
|
|
85
198
|
* Make a proxied API request through the gateway.
|
|
86
199
|
*
|
|
@@ -88,6 +201,14 @@ export declare class ApiMarketplaceManager {
|
|
|
88
201
|
* The gateway validates the signature, checks the agreement,
|
|
89
202
|
* meters usage, and forwards to the provider.
|
|
90
203
|
*
|
|
204
|
+
* **Idempotency (status-only).** If the same (signature, request_id) pair
|
|
205
|
+
* is submitted twice within the freshness window, the gateway returns
|
|
206
|
+
* `{ idempotent: true, status_code, request_id }` for the second call —
|
|
207
|
+
* the original response body is NOT replayed. Quota and billing increment
|
|
208
|
+
* exactly once. Pass a fresh `requestId` per logical request, or rely on
|
|
209
|
+
* the gateway to mint one. Body-level idempotency is the caller's
|
|
210
|
+
* responsibility (persist the first response and re-use it client-side).
|
|
211
|
+
*
|
|
91
212
|
* @param input - The proxy request parameters
|
|
92
213
|
* @param privateKey - The buyer's private key for signing
|
|
93
214
|
* @returns The proxied API response
|
|
@@ -106,6 +227,31 @@ export declare class ApiMarketplaceManager {
|
|
|
106
227
|
requestHash: string;
|
|
107
228
|
};
|
|
108
229
|
};
|
|
230
|
+
/**
|
|
231
|
+
* Phase 17.1 — open a streaming proxy request and yield decoded chunks
|
|
232
|
+
* as they arrive. The agent stays in control of when to stop reading;
|
|
233
|
+
* the underlying `fetch` Response is exposed via the optional `onResponse`
|
|
234
|
+
* callback so the caller can read trailer headers (request id, quota
|
|
235
|
+
* headers, etc.) once the stream completes.
|
|
236
|
+
*
|
|
237
|
+
* The gateway aborts streams that exceed the provider's declared
|
|
238
|
+
* `maxStreamSeconds` (capped at 600s); callers can also abort early by
|
|
239
|
+
* passing an `AbortSignal`.
|
|
240
|
+
*
|
|
241
|
+
* @example
|
|
242
|
+
* ```ts
|
|
243
|
+
* for await (const chunk of client.proxyRequestStream({
|
|
244
|
+
* agreementId: 1, path: "v1/chat/completions",
|
|
245
|
+
* body: { messages: [...], stream: true },
|
|
246
|
+
* }, privateKey)) {
|
|
247
|
+
* process.stdout.write(chunk);
|
|
248
|
+
* }
|
|
249
|
+
* ```
|
|
250
|
+
*/
|
|
251
|
+
proxyRequestStream(input: ApiProxyRequestInput & {
|
|
252
|
+
signal?: AbortSignal;
|
|
253
|
+
onResponse?: (r: Response) => void;
|
|
254
|
+
}, privateKey: string): AsyncGenerator<string, void, void>;
|
|
109
255
|
}
|
|
110
256
|
export {};
|
|
111
257
|
//# sourceMappingURL=api-marketplace.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-marketplace.d.ts","sourceRoot":"","sources":["../src/api-marketplace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"api-marketplace.d.ts","sourceRoot":"","sources":["../src/api-marketplace.ts"],"names":[],"mappings":"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"}
|
package/dist/api-marketplace.js
CHANGED
|
@@ -11,6 +11,13 @@
|
|
|
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.
|
|
14
21
|
const API_PROXY_DOMAIN = {
|
|
15
22
|
name: "NookplotApiProxy",
|
|
16
23
|
version: "1",
|
|
@@ -23,6 +30,28 @@ const API_REQUEST_TYPES = {
|
|
|
23
30
|
{ name: "requestHash", type: "bytes32" },
|
|
24
31
|
],
|
|
25
32
|
};
|
|
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
|
+
}
|
|
26
55
|
// ── Manager ─────────────────────────────────────────────────
|
|
27
56
|
export class ApiMarketplaceManager {
|
|
28
57
|
connection;
|
|
@@ -69,12 +98,124 @@ export class ApiMarketplaceManager {
|
|
|
69
98
|
async registerEndpoint(input) {
|
|
70
99
|
return this.connection.request("POST", "/v1/api/register-endpoint", input);
|
|
71
100
|
}
|
|
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
|
+
}
|
|
72
117
|
/**
|
|
73
118
|
* Send a heartbeat to indicate API is available.
|
|
74
119
|
*/
|
|
75
120
|
async heartbeat(input) {
|
|
76
121
|
return this.connection.request("POST", "/v1/api/heartbeat", input);
|
|
77
122
|
}
|
|
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
|
+
}
|
|
78
219
|
// ============================================================
|
|
79
220
|
// Proxy Request (Buyer)
|
|
80
221
|
// ============================================================
|
|
@@ -85,6 +226,14 @@ export class ApiMarketplaceManager {
|
|
|
85
226
|
* The gateway validates the signature, checks the agreement,
|
|
86
227
|
* meters usage, and forwards to the provider.
|
|
87
228
|
*
|
|
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
|
+
*
|
|
88
237
|
* @param input - The proxy request parameters
|
|
89
238
|
* @param privateKey - The buyer's private key for signing
|
|
90
239
|
* @returns The proxied API response
|
|
@@ -131,6 +280,7 @@ export class ApiMarketplaceManager {
|
|
|
131
280
|
headers: responseHeaders,
|
|
132
281
|
body: responseBody,
|
|
133
282
|
requestId: responseHeaders["x-nookplot-request-id"] ?? "",
|
|
283
|
+
quota: parseQuotaHeaders(responseHeaders),
|
|
134
284
|
};
|
|
135
285
|
}
|
|
136
286
|
/**
|
|
@@ -150,5 +300,73 @@ export class ApiMarketplaceManager {
|
|
|
150
300
|
},
|
|
151
301
|
};
|
|
152
302
|
}
|
|
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
|
+
}
|
|
153
371
|
}
|
|
154
372
|
//# 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
|
@@ -191,6 +191,21 @@ export declare class AutonomousAgent {
|
|
|
191
191
|
start(): void;
|
|
192
192
|
/** Stop the autonomous agent. */
|
|
193
193
|
stop(): void;
|
|
194
|
+
/**
|
|
195
|
+
* Check whether this agent has an initial_goal + pending status, and
|
|
196
|
+
* if so, spin up a GoalLoop in the background. Non-blocking — start()
|
|
197
|
+
* returns immediately so WebSocket signal subscriptions are live even
|
|
198
|
+
* while the goal loop is running its first step.
|
|
199
|
+
*/
|
|
200
|
+
private maybeBootstrapGoal;
|
|
201
|
+
/**
|
|
202
|
+
* Dispatch on the terminal state of a GoalLoop run:
|
|
203
|
+
* - complete → store artifact in private KG, pause agent
|
|
204
|
+
* - blocked_budget → create pending task (budget_exhausted), pause
|
|
205
|
+
* - blocked_stuck → create pending task (stuck_3x), pause
|
|
206
|
+
* - blocked_capability → create pending task (needs_capability), pause
|
|
207
|
+
*/
|
|
208
|
+
private handleGoalResult;
|
|
194
209
|
/**
|
|
195
210
|
* Build a stable dedup key from a signal so we can detect duplicates.
|
|
196
211
|
* DMs dedup on sender, followers dedup on address, channels dedup on channel+sender.
|
|
@@ -206,6 +221,7 @@ export declare class AutonomousAgent {
|
|
|
206
221
|
private handleAttestationOpportunity;
|
|
207
222
|
private handleBounty;
|
|
208
223
|
private handleGuildOpportunity;
|
|
224
|
+
private handleWorkspaceOpportunity;
|
|
209
225
|
private handleMiningOpportunity;
|
|
210
226
|
private handleSubmissionVerified;
|
|
211
227
|
private handleLearningCommentReceived;
|
|
@@ -235,7 +251,6 @@ export declare class AutonomousAgent {
|
|
|
235
251
|
private handleOnboardingSuggestion;
|
|
236
252
|
private handleSpecializationPath;
|
|
237
253
|
private handleCommunityGap;
|
|
238
|
-
private handleDirective;
|
|
239
254
|
private handleFilesCommitted;
|
|
240
255
|
private handleReviewSubmitted;
|
|
241
256
|
private handleCollaboratorAdded;
|
|
@@ -267,14 +282,6 @@ export declare class AutonomousAgent {
|
|
|
267
282
|
* the agent collaborates on have no reviews yet.
|
|
268
283
|
*/
|
|
269
284
|
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;
|
|
278
285
|
private handleActionRequest;
|
|
279
286
|
private handleTeachingProposed;
|
|
280
287
|
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;AAMlD,OAAO,EAAsB,KAAK,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"autonomous.d.ts","sourceRoot":"","sources":["../src/autonomous.ts"],"names":[],"mappings":"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"}
|