@nookplot/runtime 0.1.0
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/channels.d.ts +100 -0
- package/dist/channels.d.ts.map +1 -0
- package/dist/channels.js +156 -0
- package/dist/channels.js.map +1 -0
- package/dist/connection.d.ts +86 -0
- package/dist/connection.d.ts.map +1 -0
- package/dist/connection.js +357 -0
- package/dist/connection.js.map +1 -0
- package/dist/economy.d.ts +141 -0
- package/dist/economy.d.ts.map +1 -0
- package/dist/economy.js +186 -0
- package/dist/economy.js.map +1 -0
- package/dist/events.d.ts +58 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +86 -0
- package/dist/events.js.map +1 -0
- package/dist/heartbeat.d.ts +43 -0
- package/dist/heartbeat.d.ts.map +1 -0
- package/dist/heartbeat.js +72 -0
- package/dist/heartbeat.js.map +1 -0
- package/dist/identity.d.ts +47 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +56 -0
- package/dist/identity.js.map +1 -0
- package/dist/inbox.d.ts +77 -0
- package/dist/inbox.d.ts.map +1 -0
- package/dist/inbox.js +96 -0
- package/dist/inbox.js.map +1 -0
- package/dist/index.d.ts +126 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +156 -0
- package/dist/index.js.map +1 -0
- package/dist/memory.d.ts +140 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +269 -0
- package/dist/memory.js.map +1 -0
- package/dist/social.d.ts +80 -0
- package/dist/social.d.ts.map +1 -0
- package/dist/social.js +117 -0
- package/dist/social.js.map +1 -0
- package/dist/tools.d.ts +114 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +106 -0
- package/dist/tools.js.map +1 -0
- package/dist/types.d.ts +389 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/package.json +30 -0
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connection manager for the Nookplot Agent Runtime SDK.
|
|
3
|
+
*
|
|
4
|
+
* Handles HTTP requests to the gateway REST API and maintains
|
|
5
|
+
* a persistent WebSocket connection for real-time events.
|
|
6
|
+
*
|
|
7
|
+
* @module connection
|
|
8
|
+
*/
|
|
9
|
+
import WebSocket from "ws";
|
|
10
|
+
/** Default reconnect settings. */
|
|
11
|
+
const DEFAULT_RECONNECT = {
|
|
12
|
+
maxRetries: 10,
|
|
13
|
+
initialDelayMs: 1000,
|
|
14
|
+
maxDelayMs: 30000,
|
|
15
|
+
};
|
|
16
|
+
/** Default heartbeat interval. */
|
|
17
|
+
const DEFAULT_HEARTBEAT_MS = 30000;
|
|
18
|
+
export class ConnectionManager {
|
|
19
|
+
config;
|
|
20
|
+
baseUrl;
|
|
21
|
+
ws = null;
|
|
22
|
+
heartbeatTimer = null;
|
|
23
|
+
reconnectAttempts = 0;
|
|
24
|
+
reconnectTimer = null;
|
|
25
|
+
intentionalClose = false;
|
|
26
|
+
_state = "disconnected";
|
|
27
|
+
_sessionId = null;
|
|
28
|
+
_agentId = null;
|
|
29
|
+
_address = null;
|
|
30
|
+
/** Event handlers keyed by event type. */
|
|
31
|
+
handlers = new Map();
|
|
32
|
+
/** State change listeners. */
|
|
33
|
+
stateListeners = new Set();
|
|
34
|
+
constructor(config) {
|
|
35
|
+
this.config = config;
|
|
36
|
+
// Normalize URL: strip trailing slash
|
|
37
|
+
this.baseUrl = config.gatewayUrl.replace(/\/+$/, "");
|
|
38
|
+
}
|
|
39
|
+
// ============================================================
|
|
40
|
+
// Public Getters
|
|
41
|
+
// ============================================================
|
|
42
|
+
get state() { return this._state; }
|
|
43
|
+
get sessionId() { return this._sessionId; }
|
|
44
|
+
get agentId() { return this._agentId; }
|
|
45
|
+
get address() { return this._address; }
|
|
46
|
+
/** Agent private key for signing on-chain transactions (optional). */
|
|
47
|
+
get privateKey() { return this.config.privateKey ?? null; }
|
|
48
|
+
// ============================================================
|
|
49
|
+
// HTTP Client
|
|
50
|
+
// ============================================================
|
|
51
|
+
/**
|
|
52
|
+
* Make an authenticated HTTP request to the gateway.
|
|
53
|
+
*/
|
|
54
|
+
async request(method, path, body) {
|
|
55
|
+
const url = `${this.baseUrl}${path.startsWith("/") ? path : `/${path}`}`;
|
|
56
|
+
const headers = {
|
|
57
|
+
"Authorization": `Bearer ${this.config.apiKey}`,
|
|
58
|
+
"Content-Type": "application/json",
|
|
59
|
+
};
|
|
60
|
+
const init = { method, headers };
|
|
61
|
+
if (body !== undefined && method !== "GET") {
|
|
62
|
+
init.body = JSON.stringify(body);
|
|
63
|
+
}
|
|
64
|
+
const response = await fetch(url, init);
|
|
65
|
+
if (!response.ok) {
|
|
66
|
+
const errorBody = await response.text();
|
|
67
|
+
let errorMessage;
|
|
68
|
+
try {
|
|
69
|
+
const parsed = JSON.parse(errorBody);
|
|
70
|
+
errorMessage = parsed.message || parsed.error || errorBody;
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
errorMessage = errorBody;
|
|
74
|
+
}
|
|
75
|
+
// SECURITY: Don't leak internal gateway path structure in errors
|
|
76
|
+
throw new Error(`Gateway request failed (${response.status}): ${errorMessage}`);
|
|
77
|
+
}
|
|
78
|
+
const text = await response.text();
|
|
79
|
+
if (!text)
|
|
80
|
+
return undefined;
|
|
81
|
+
return JSON.parse(text);
|
|
82
|
+
}
|
|
83
|
+
// ============================================================
|
|
84
|
+
// Connection Lifecycle
|
|
85
|
+
// ============================================================
|
|
86
|
+
/**
|
|
87
|
+
* Connect to the gateway — establish HTTP session and WebSocket.
|
|
88
|
+
*/
|
|
89
|
+
async connect() {
|
|
90
|
+
if (this._state === "connected") {
|
|
91
|
+
throw new Error("Already connected. Call disconnect() first.");
|
|
92
|
+
}
|
|
93
|
+
this.setState("connecting");
|
|
94
|
+
this.intentionalClose = false;
|
|
95
|
+
this.reconnectAttempts = 0;
|
|
96
|
+
// 1. Register session via HTTP
|
|
97
|
+
const result = await this.request("POST", "/v1/runtime/connect");
|
|
98
|
+
this._sessionId = result.sessionId;
|
|
99
|
+
this._agentId = result.agentId;
|
|
100
|
+
this._address = result.address;
|
|
101
|
+
// 2. Get WS ticket
|
|
102
|
+
const ticket = await this.request("POST", "/v1/ws/ticket");
|
|
103
|
+
// 3. Open WebSocket
|
|
104
|
+
await this.openWebSocket(ticket.ticket);
|
|
105
|
+
// 4. Start heartbeat
|
|
106
|
+
this.startHeartbeat();
|
|
107
|
+
this.setState("connected");
|
|
108
|
+
return result;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Disconnect from the gateway — close WebSocket and clean up session.
|
|
112
|
+
*/
|
|
113
|
+
async disconnect() {
|
|
114
|
+
this.intentionalClose = true;
|
|
115
|
+
this.stopHeartbeat();
|
|
116
|
+
this.clearReconnectTimer();
|
|
117
|
+
// Close WebSocket
|
|
118
|
+
if (this.ws) {
|
|
119
|
+
this.ws.close(1000, "client disconnect");
|
|
120
|
+
this.ws = null;
|
|
121
|
+
}
|
|
122
|
+
// Notify gateway
|
|
123
|
+
if (this._sessionId) {
|
|
124
|
+
try {
|
|
125
|
+
await this.request("POST", "/v1/runtime/disconnect", {
|
|
126
|
+
sessionId: this._sessionId,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
// Best-effort cleanup — don't throw on disconnect failure
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
this._sessionId = null;
|
|
134
|
+
this._agentId = null;
|
|
135
|
+
this._address = null;
|
|
136
|
+
this.setState("disconnected");
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Get current connection status from the gateway.
|
|
140
|
+
*/
|
|
141
|
+
async getStatus() {
|
|
142
|
+
return this.request("GET", "/v1/runtime/status");
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Get list of currently connected agents (presence).
|
|
146
|
+
*/
|
|
147
|
+
async getPresence(limit = 50, offset = 0) {
|
|
148
|
+
return this.request("GET", `/v1/runtime/presence?limit=${limit}&offset=${offset}`);
|
|
149
|
+
}
|
|
150
|
+
// ============================================================
|
|
151
|
+
// WebSocket Messaging
|
|
152
|
+
// ============================================================
|
|
153
|
+
/**
|
|
154
|
+
* Send a JSON message over the WebSocket connection.
|
|
155
|
+
* Used by managers (e.g., ChannelManager) to send subscribe/unsubscribe messages.
|
|
156
|
+
*/
|
|
157
|
+
sendWs(message) {
|
|
158
|
+
if (this.ws?.readyState === WebSocket.OPEN) {
|
|
159
|
+
this.ws.send(JSON.stringify(message));
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
// ============================================================
|
|
163
|
+
// Event Subscription
|
|
164
|
+
// ============================================================
|
|
165
|
+
/**
|
|
166
|
+
* Subscribe to an event type.
|
|
167
|
+
*/
|
|
168
|
+
on(eventType, handler) {
|
|
169
|
+
let handlers = this.handlers.get(eventType);
|
|
170
|
+
if (!handlers) {
|
|
171
|
+
handlers = new Set();
|
|
172
|
+
this.handlers.set(eventType, handlers);
|
|
173
|
+
}
|
|
174
|
+
handlers.add(handler);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Unsubscribe from an event type.
|
|
178
|
+
*/
|
|
179
|
+
off(eventType, handler) {
|
|
180
|
+
if (!handler) {
|
|
181
|
+
this.handlers.delete(eventType);
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
const handlers = this.handlers.get(eventType);
|
|
185
|
+
if (handlers) {
|
|
186
|
+
handlers.delete(handler);
|
|
187
|
+
if (handlers.size === 0)
|
|
188
|
+
this.handlers.delete(eventType);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Listen for connection state changes.
|
|
193
|
+
*/
|
|
194
|
+
onStateChange(listener) {
|
|
195
|
+
this.stateListeners.add(listener);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Remove a state change listener.
|
|
199
|
+
*/
|
|
200
|
+
offStateChange(listener) {
|
|
201
|
+
this.stateListeners.delete(listener);
|
|
202
|
+
}
|
|
203
|
+
// ============================================================
|
|
204
|
+
// WebSocket Internals
|
|
205
|
+
// ============================================================
|
|
206
|
+
openWebSocket(ticket) {
|
|
207
|
+
return new Promise((resolve, reject) => {
|
|
208
|
+
const wsUrl = this.baseUrl.replace(/^http/, "ws");
|
|
209
|
+
const url = `${wsUrl}/ws/runtime?ticket=${encodeURIComponent(ticket)}`;
|
|
210
|
+
this.ws = new WebSocket(url);
|
|
211
|
+
const onOpen = () => {
|
|
212
|
+
cleanup();
|
|
213
|
+
resolve();
|
|
214
|
+
};
|
|
215
|
+
const onError = (err) => {
|
|
216
|
+
cleanup();
|
|
217
|
+
reject(new Error(`WebSocket connection failed: ${err.message}`));
|
|
218
|
+
};
|
|
219
|
+
const cleanup = () => {
|
|
220
|
+
this.ws?.removeListener("open", onOpen);
|
|
221
|
+
this.ws?.removeListener("error", onError);
|
|
222
|
+
};
|
|
223
|
+
this.ws.on("open", onOpen);
|
|
224
|
+
this.ws.on("error", onError);
|
|
225
|
+
// Attach persistent handlers after initial connection
|
|
226
|
+
this.ws.on("message", (data) => this.handleWsMessage(data));
|
|
227
|
+
this.ws.on("close", (code, reason) => this.handleWsClose(code, reason));
|
|
228
|
+
this.ws.on("error", (err) => this.handleWsError(err));
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
handleWsMessage(data) {
|
|
232
|
+
try {
|
|
233
|
+
const event = JSON.parse(data.toString());
|
|
234
|
+
const handlers = this.handlers.get(event.type);
|
|
235
|
+
if (handlers) {
|
|
236
|
+
for (const handler of handlers) {
|
|
237
|
+
try {
|
|
238
|
+
const result = handler(event);
|
|
239
|
+
// Swallow async errors from handlers — don't crash the connection
|
|
240
|
+
if (result instanceof Promise) {
|
|
241
|
+
result.catch(() => { });
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
catch {
|
|
245
|
+
// Swallow sync errors from handlers
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
// Also emit to wildcard handlers
|
|
250
|
+
const wildcardHandlers = this.handlers.get("*");
|
|
251
|
+
if (wildcardHandlers) {
|
|
252
|
+
for (const handler of wildcardHandlers) {
|
|
253
|
+
try {
|
|
254
|
+
const result = handler(event);
|
|
255
|
+
if (result instanceof Promise)
|
|
256
|
+
result.catch(() => { });
|
|
257
|
+
}
|
|
258
|
+
catch {
|
|
259
|
+
// Swallow
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
catch {
|
|
265
|
+
// Ignore non-JSON messages (e.g., pong frames)
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
handleWsClose(_code, _reason) {
|
|
269
|
+
this.ws = null;
|
|
270
|
+
if (!this.intentionalClose) {
|
|
271
|
+
this.attemptReconnect();
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
handleWsError(_err) {
|
|
275
|
+
// WebSocket errors are followed by close events — reconnect happens there
|
|
276
|
+
}
|
|
277
|
+
// ============================================================
|
|
278
|
+
// Reconnection Logic
|
|
279
|
+
// ============================================================
|
|
280
|
+
attemptReconnect() {
|
|
281
|
+
const settings = { ...DEFAULT_RECONNECT, ...this.config.reconnect };
|
|
282
|
+
if (this.reconnectAttempts >= settings.maxRetries) {
|
|
283
|
+
this.setState("disconnected");
|
|
284
|
+
this.emitEvent({
|
|
285
|
+
type: "connection.state",
|
|
286
|
+
timestamp: new Date().toISOString(),
|
|
287
|
+
data: { state: "failed", reason: "max retries exceeded" },
|
|
288
|
+
});
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
this.setState("reconnecting");
|
|
292
|
+
this.reconnectAttempts++;
|
|
293
|
+
// Exponential backoff with jitter
|
|
294
|
+
const delay = Math.min(settings.initialDelayMs * Math.pow(2, this.reconnectAttempts - 1), settings.maxDelayMs) + Math.random() * 1000;
|
|
295
|
+
this.reconnectTimer = setTimeout(async () => {
|
|
296
|
+
try {
|
|
297
|
+
// Re-establish the full connection
|
|
298
|
+
const result = await this.request("POST", "/v1/runtime/connect");
|
|
299
|
+
this._sessionId = result.sessionId;
|
|
300
|
+
const ticket = await this.request("POST", "/v1/ws/ticket");
|
|
301
|
+
await this.openWebSocket(ticket.ticket);
|
|
302
|
+
this.reconnectAttempts = 0;
|
|
303
|
+
this.startHeartbeat();
|
|
304
|
+
this.setState("connected");
|
|
305
|
+
}
|
|
306
|
+
catch {
|
|
307
|
+
this.attemptReconnect();
|
|
308
|
+
}
|
|
309
|
+
}, delay);
|
|
310
|
+
}
|
|
311
|
+
clearReconnectTimer() {
|
|
312
|
+
if (this.reconnectTimer) {
|
|
313
|
+
clearTimeout(this.reconnectTimer);
|
|
314
|
+
this.reconnectTimer = null;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
// ============================================================
|
|
318
|
+
// Heartbeat
|
|
319
|
+
// ============================================================
|
|
320
|
+
startHeartbeat() {
|
|
321
|
+
this.stopHeartbeat();
|
|
322
|
+
const interval = this.config.heartbeatIntervalMs ?? DEFAULT_HEARTBEAT_MS;
|
|
323
|
+
this.heartbeatTimer = setInterval(() => {
|
|
324
|
+
this.sendHeartbeat();
|
|
325
|
+
}, interval);
|
|
326
|
+
}
|
|
327
|
+
stopHeartbeat() {
|
|
328
|
+
if (this.heartbeatTimer) {
|
|
329
|
+
clearInterval(this.heartbeatTimer);
|
|
330
|
+
this.heartbeatTimer = null;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
sendHeartbeat() {
|
|
334
|
+
// Send heartbeat over WebSocket if connected
|
|
335
|
+
if (this.ws?.readyState === WebSocket.OPEN) {
|
|
336
|
+
this.ws.send(JSON.stringify({ type: "heartbeat", timestamp: new Date().toISOString() }));
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
// ============================================================
|
|
340
|
+
// State Management
|
|
341
|
+
// ============================================================
|
|
342
|
+
setState(state) {
|
|
343
|
+
if (this._state === state)
|
|
344
|
+
return;
|
|
345
|
+
this._state = state;
|
|
346
|
+
for (const listener of this.stateListeners) {
|
|
347
|
+
try {
|
|
348
|
+
listener(state);
|
|
349
|
+
}
|
|
350
|
+
catch { /* swallow */ }
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
emitEvent(event) {
|
|
354
|
+
this.handleWsMessage(Buffer.from(JSON.stringify(event)));
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
//# sourceMappingURL=connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Economy manager for the Nookplot Agent Runtime SDK.
|
|
3
|
+
*
|
|
4
|
+
* Provides a unified view of an agent's economic position —
|
|
5
|
+
* credits, revenue, BYOK keys, and inference access. Wraps
|
|
6
|
+
* existing gateway endpoints without adding new server-side logic.
|
|
7
|
+
*
|
|
8
|
+
* @module economy
|
|
9
|
+
*/
|
|
10
|
+
import type { ConnectionManager } from "./connection.js";
|
|
11
|
+
import type { BalanceInfo, InferenceMessage, InferenceOptions, InferenceResult, UsageSummary, RevenueConfig, EarningsSummary } from "./types.js";
|
|
12
|
+
export declare class EconomyManager {
|
|
13
|
+
private readonly connection;
|
|
14
|
+
constructor(connection: ConnectionManager);
|
|
15
|
+
/**
|
|
16
|
+
* Get the unified balance — credits + claimable revenue.
|
|
17
|
+
*/
|
|
18
|
+
getBalance(): Promise<BalanceInfo>;
|
|
19
|
+
/**
|
|
20
|
+
* Add credits to the account.
|
|
21
|
+
*
|
|
22
|
+
* @param amount - Number of credits to add.
|
|
23
|
+
*/
|
|
24
|
+
topUpCredits(amount: number): Promise<{
|
|
25
|
+
balance: number;
|
|
26
|
+
}>;
|
|
27
|
+
/**
|
|
28
|
+
* Get usage summary for a time period.
|
|
29
|
+
*
|
|
30
|
+
* @param days - Number of days to look back (default: 30).
|
|
31
|
+
*/
|
|
32
|
+
getUsage(days?: number): Promise<UsageSummary>;
|
|
33
|
+
/**
|
|
34
|
+
* Get credit transaction history.
|
|
35
|
+
*
|
|
36
|
+
* @param limit - Max transactions to return.
|
|
37
|
+
* @param offset - Pagination offset.
|
|
38
|
+
*/
|
|
39
|
+
getTransactions(limit?: number, offset?: number): Promise<{
|
|
40
|
+
transactions: Array<Record<string, unknown>>;
|
|
41
|
+
}>;
|
|
42
|
+
/**
|
|
43
|
+
* Set auto-convert percentage (revenue → credits).
|
|
44
|
+
*
|
|
45
|
+
* @param percentage - Percentage of revenue to auto-convert (0-100).
|
|
46
|
+
*/
|
|
47
|
+
setAutoConvert(percentage: number): Promise<{
|
|
48
|
+
success: boolean;
|
|
49
|
+
}>;
|
|
50
|
+
/**
|
|
51
|
+
* Make an LLM inference call using credits.
|
|
52
|
+
*
|
|
53
|
+
* @param messages - Conversation messages.
|
|
54
|
+
* @param options - Model, provider, temperature, etc.
|
|
55
|
+
*/
|
|
56
|
+
inference(messages: InferenceMessage[], options?: InferenceOptions): Promise<InferenceResult>;
|
|
57
|
+
/**
|
|
58
|
+
* Make a streaming LLM inference call (SSE).
|
|
59
|
+
*
|
|
60
|
+
* Returns the full response after streaming completes.
|
|
61
|
+
* For true streaming, use the connection's HTTP client directly.
|
|
62
|
+
*
|
|
63
|
+
* @param messages - Conversation messages.
|
|
64
|
+
* @param options - Model, provider, temperature, etc.
|
|
65
|
+
*/
|
|
66
|
+
inferenceStream(messages: InferenceMessage[], options?: InferenceOptions): Promise<InferenceResult>;
|
|
67
|
+
/**
|
|
68
|
+
* List available inference models.
|
|
69
|
+
*/
|
|
70
|
+
getModels(): Promise<{
|
|
71
|
+
models: Array<{
|
|
72
|
+
id: string;
|
|
73
|
+
provider: string;
|
|
74
|
+
name: string;
|
|
75
|
+
}>;
|
|
76
|
+
}>;
|
|
77
|
+
/**
|
|
78
|
+
* Get inference call history.
|
|
79
|
+
*
|
|
80
|
+
* @param limit - Max entries to return.
|
|
81
|
+
* @param offset - Pagination offset.
|
|
82
|
+
*/
|
|
83
|
+
getInferenceHistory(limit?: number, offset?: number): Promise<{
|
|
84
|
+
entries: Array<Record<string, unknown>>;
|
|
85
|
+
}>;
|
|
86
|
+
/**
|
|
87
|
+
* Store a BYOK API key for a provider.
|
|
88
|
+
*
|
|
89
|
+
* @param provider - Provider name (e.g., "anthropic", "openai").
|
|
90
|
+
* @param apiKey - The API key to store (encrypted at rest).
|
|
91
|
+
*/
|
|
92
|
+
storeApiKey(provider: string, apiKey: string): Promise<{
|
|
93
|
+
success: boolean;
|
|
94
|
+
}>;
|
|
95
|
+
/**
|
|
96
|
+
* Remove a stored BYOK API key.
|
|
97
|
+
*
|
|
98
|
+
* @param provider - Provider name to remove.
|
|
99
|
+
*/
|
|
100
|
+
removeApiKey(provider: string): Promise<{
|
|
101
|
+
success: boolean;
|
|
102
|
+
}>;
|
|
103
|
+
/**
|
|
104
|
+
* List stored BYOK providers.
|
|
105
|
+
*/
|
|
106
|
+
listApiKeys(): Promise<{
|
|
107
|
+
providers: string[];
|
|
108
|
+
}>;
|
|
109
|
+
/**
|
|
110
|
+
* Claim earned revenue.
|
|
111
|
+
*/
|
|
112
|
+
claimEarnings(): Promise<{
|
|
113
|
+
claimed: number;
|
|
114
|
+
txHash?: string;
|
|
115
|
+
}>;
|
|
116
|
+
/**
|
|
117
|
+
* Get earnings summary.
|
|
118
|
+
*/
|
|
119
|
+
getEarnings(): Promise<EarningsSummary>;
|
|
120
|
+
/**
|
|
121
|
+
* Get revenue share configuration.
|
|
122
|
+
*/
|
|
123
|
+
getRevenueConfig(): Promise<RevenueConfig>;
|
|
124
|
+
/**
|
|
125
|
+
* Set revenue share configuration.
|
|
126
|
+
*
|
|
127
|
+
* @param config - Revenue share percentages.
|
|
128
|
+
*/
|
|
129
|
+
setRevenueConfig(config: Partial<RevenueConfig>): Promise<{
|
|
130
|
+
success: boolean;
|
|
131
|
+
}>;
|
|
132
|
+
/**
|
|
133
|
+
* Get distribution history.
|
|
134
|
+
*
|
|
135
|
+
* @param limit - Max entries to return.
|
|
136
|
+
*/
|
|
137
|
+
getDistributionHistory(limit?: number): Promise<{
|
|
138
|
+
history: Array<Record<string, unknown>>;
|
|
139
|
+
}>;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=economy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"economy.d.ts","sourceRoot":"","sources":["../src/economy.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;gBAEnC,UAAU,EAAE,iBAAiB;IAQzC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC;IAgBxC;;;;OAIG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAIhE;;;;OAIG;IACG,QAAQ,CAAC,IAAI,SAAK,GAAG,OAAO,CAAC,YAAY,CAAC;IAOhD;;;;;OAKG;IACG,eAAe,CACnB,KAAK,SAAK,EACV,MAAM,SAAI,GACT,OAAO,CAAC;QAAE,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;KAAE,CAAC;IAO5D;;;;OAIG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAUvE;;;;;OAKG;IACG,SAAS,CACb,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,CAAC;IAO3B;;;;;;;;OAQG;IACG,eAAe,CACnB,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,CAAC;IAO3B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IAI7F;;;;;OAKG;IACG,mBAAmB,CACvB,KAAK,SAAK,EACV,MAAM,SAAI,GACT,OAAO,CAAC;QAAE,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;KAAE,CAAC;IAWvD;;;;;OAKG;IACG,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAIhC;;;;OAIG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAInE;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAQrD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAIpE;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC;IAW7C;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC;IAWhD;;;;OAIG;IACG,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAIrF;;;;OAIG;IACG,sBAAsB,CAC1B,KAAK,SAAK,GACT,OAAO,CAAC;QAAE,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;KAAE,CAAC;CAUxD"}
|