@zerox1/client 0.4.2
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/AggregatorClient.d.ts +57 -0
- package/dist/AggregatorClient.d.ts.map +1 -0
- package/dist/AggregatorClient.js +141 -0
- package/dist/AggregatorClient.js.map +1 -0
- package/dist/HostedFleet.d.ts +232 -0
- package/dist/HostedFleet.d.ts.map +1 -0
- package/dist/HostedFleet.js +375 -0
- package/dist/HostedFleet.js.map +1 -0
- package/dist/NodeClient.d.ts +72 -0
- package/dist/NodeClient.d.ts.map +1 -0
- package/dist/NodeClient.js +151 -0
- package/dist/NodeClient.js.map +1 -0
- package/dist/codec.d.ts +5 -0
- package/dist/codec.d.ts.map +1 -0
- package/dist/codec.js +23 -0
- package/dist/codec.js.map +1 -0
- package/dist/index.d.ts +52 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +72 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +54 -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 +46 -0
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* HostedFleet — manages a pool of hosted agents on a single node.
|
|
4
|
+
*
|
|
5
|
+
* Hosted agents are sub-identities created by the node with their own
|
|
6
|
+
* Ed25519 keypairs. Apps use them to participate in the mesh without
|
|
7
|
+
* running their own node processes. The fleet handles:
|
|
8
|
+
*
|
|
9
|
+
* - Registration + token caching (survives app restarts via TokenStore)
|
|
10
|
+
* - Per-agent inbox WebSocket with auto-reconnect
|
|
11
|
+
* - Conversation thread tracking (both inbound and outbound)
|
|
12
|
+
* - Re-registration when node restarts (token invalidation)
|
|
13
|
+
*
|
|
14
|
+
* For multi-node deployments (distributing agents across different nodes),
|
|
15
|
+
* see `MultiFleet`.
|
|
16
|
+
*/
|
|
17
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
18
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
19
|
+
};
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.MultiFleet = exports.HostedFleet = exports.HostedAgent = exports.Conversation = void 0;
|
|
22
|
+
const ws_1 = __importDefault(require("ws"));
|
|
23
|
+
const codec_js_1 = require("./codec.js");
|
|
24
|
+
// ============================================================================
|
|
25
|
+
// Conversation
|
|
26
|
+
// ============================================================================
|
|
27
|
+
/** A tracked message thread between agents. */
|
|
28
|
+
class Conversation {
|
|
29
|
+
constructor(id) {
|
|
30
|
+
this.messages = [];
|
|
31
|
+
this.participants = new Set();
|
|
32
|
+
this.id = id;
|
|
33
|
+
}
|
|
34
|
+
/** @internal */
|
|
35
|
+
_push(env) {
|
|
36
|
+
this.messages.push(env);
|
|
37
|
+
this.participants.add(env.sender);
|
|
38
|
+
this.participants.add(env.recipient);
|
|
39
|
+
}
|
|
40
|
+
lastMessage() {
|
|
41
|
+
return this.messages[this.messages.length - 1];
|
|
42
|
+
}
|
|
43
|
+
history() {
|
|
44
|
+
return [...this.messages];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.Conversation = Conversation;
|
|
48
|
+
/** A single hosted agent identity on a node. */
|
|
49
|
+
class HostedAgent {
|
|
50
|
+
constructor(opts) {
|
|
51
|
+
this.conversations = new Map();
|
|
52
|
+
this.handlers = new Map();
|
|
53
|
+
this.ws = null;
|
|
54
|
+
this.wsClosed = false;
|
|
55
|
+
this.wsReconnectTimer = null;
|
|
56
|
+
this.agentId = opts.agentId;
|
|
57
|
+
this.token = opts.token;
|
|
58
|
+
this.nodeUrl = opts.nodeUrl.replace(/\/$/, '');
|
|
59
|
+
}
|
|
60
|
+
// ── Subscribe ─────────────────────────────────────────────────────────────
|
|
61
|
+
/** Register a message handler. Use '*' to catch all types. Returns `this` for chaining. */
|
|
62
|
+
on(msgType, handler) {
|
|
63
|
+
const set = this.handlers.get(msgType) ?? new Set();
|
|
64
|
+
set.add(handler);
|
|
65
|
+
this.handlers.set(msgType, set);
|
|
66
|
+
return this;
|
|
67
|
+
}
|
|
68
|
+
off(msgType, handler) {
|
|
69
|
+
this.handlers.get(msgType)?.delete(handler);
|
|
70
|
+
return this;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Start listening to the inbox WebSocket.
|
|
74
|
+
* Call this once after registering all handlers.
|
|
75
|
+
* Returns an unsubscribe/cleanup function.
|
|
76
|
+
*/
|
|
77
|
+
listen() {
|
|
78
|
+
this.wsClosed = false;
|
|
79
|
+
this._connectWs();
|
|
80
|
+
return () => this.dispose();
|
|
81
|
+
}
|
|
82
|
+
_connectWs() {
|
|
83
|
+
if (this.wsClosed)
|
|
84
|
+
return;
|
|
85
|
+
const wsBase = this.nodeUrl.replace(/^http/, 'ws');
|
|
86
|
+
const url = `${wsBase}/ws/hosted/inbox?token=${this.token}`;
|
|
87
|
+
this.ws = new ws_1.default(url);
|
|
88
|
+
this.ws.on('message', (data) => {
|
|
89
|
+
try {
|
|
90
|
+
const env = JSON.parse(data.toString());
|
|
91
|
+
const conv = this._getOrCreateConv(env.conversation_id);
|
|
92
|
+
conv._push(env);
|
|
93
|
+
this._emit(env.msg_type, env, conv);
|
|
94
|
+
this._emit('*', env, conv);
|
|
95
|
+
}
|
|
96
|
+
catch (e) {
|
|
97
|
+
console.error('[HostedAgent] failed to parse inbound message:', e);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
this.ws.on('close', () => {
|
|
101
|
+
if (!this.wsClosed) {
|
|
102
|
+
this.wsReconnectTimer = setTimeout(() => this._connectWs(), 3000);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
this.ws.on('error', (e) => {
|
|
106
|
+
console.error('[HostedAgent] WebSocket error:', e);
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
_emit(type, env, conv) {
|
|
110
|
+
this.handlers.get(type)?.forEach((h) => {
|
|
111
|
+
try {
|
|
112
|
+
h(env, conv);
|
|
113
|
+
}
|
|
114
|
+
catch (e) {
|
|
115
|
+
console.error(`[HostedAgent] handler error:`, e);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
_getOrCreateConv(id) {
|
|
120
|
+
if (!this.conversations.has(id))
|
|
121
|
+
this.conversations.set(id, new Conversation(id));
|
|
122
|
+
return this.conversations.get(id);
|
|
123
|
+
}
|
|
124
|
+
// ── Conversation access ───────────────────────────────────────────────────
|
|
125
|
+
/**
|
|
126
|
+
* Get a conversation by ID.
|
|
127
|
+
*
|
|
128
|
+
* Available immediately after any outbound send (propose/counter/accept/send)
|
|
129
|
+
* that uses or generates a conversation_id — not just after the first inbound
|
|
130
|
+
* reply arrives.
|
|
131
|
+
*/
|
|
132
|
+
conversation(id) {
|
|
133
|
+
return this.conversations.get(id);
|
|
134
|
+
}
|
|
135
|
+
allConversations() {
|
|
136
|
+
return Array.from(this.conversations.values());
|
|
137
|
+
}
|
|
138
|
+
// ── HTTP helpers ──────────────────────────────────────────────────────────
|
|
139
|
+
async _post(path, body) {
|
|
140
|
+
const res = await fetch(`${this.nodeUrl}${path}`, {
|
|
141
|
+
method: 'POST',
|
|
142
|
+
headers: {
|
|
143
|
+
'Content-Type': 'application/json',
|
|
144
|
+
Authorization: `Bearer ${this.token}`,
|
|
145
|
+
},
|
|
146
|
+
body: JSON.stringify(body),
|
|
147
|
+
});
|
|
148
|
+
if (!res.ok)
|
|
149
|
+
throw new Error(`POST ${path} → ${res.status}: ${await res.text()}`);
|
|
150
|
+
if (res.status === 204)
|
|
151
|
+
return undefined;
|
|
152
|
+
return res.json();
|
|
153
|
+
}
|
|
154
|
+
// ── Send ──────────────────────────────────────────────────────────────────
|
|
155
|
+
/**
|
|
156
|
+
* Send a raw message to a recipient (or broadcast if recipient omitted).
|
|
157
|
+
* Pre-creates a Conversation so `agent.conversation(conversationId)` is
|
|
158
|
+
* available immediately after this call.
|
|
159
|
+
*/
|
|
160
|
+
async send(params) {
|
|
161
|
+
const conversation_id = params.conversationId ?? (0, codec_js_1.newConversationId)();
|
|
162
|
+
await this._post('/hosted/send', {
|
|
163
|
+
msg_type: params.msgType,
|
|
164
|
+
recipient: params.recipient ?? null,
|
|
165
|
+
conversation_id,
|
|
166
|
+
payload_hex: Buffer.from(params.payload).toString('hex'),
|
|
167
|
+
});
|
|
168
|
+
this._getOrCreateConv(conversation_id);
|
|
169
|
+
return { conversation_id };
|
|
170
|
+
}
|
|
171
|
+
// ── Negotiate shortcuts ───────────────────────────────────────────────────
|
|
172
|
+
/**
|
|
173
|
+
* Propose a deal to a recipient.
|
|
174
|
+
* The returned conversation_id is immediately available via `agent.conversation(id)`.
|
|
175
|
+
*
|
|
176
|
+
* ```ts
|
|
177
|
+
* const { conversation_id } = await agent.propose({
|
|
178
|
+
* recipient: otherAgent.agentId,
|
|
179
|
+
* message: 'Build a REST API for our product',
|
|
180
|
+
* amountMicro: 10_000_000n, // 10 USDC
|
|
181
|
+
* })
|
|
182
|
+
* // conversation is already tracked:
|
|
183
|
+
* console.log(agent.conversation(conversation_id))
|
|
184
|
+
* ```
|
|
185
|
+
*/
|
|
186
|
+
async propose(params) {
|
|
187
|
+
const result = await this._post('/hosted/negotiate/propose', {
|
|
188
|
+
recipient: params.recipient,
|
|
189
|
+
conversation_id: params.conversationId ?? null,
|
|
190
|
+
amount_usdc_micro: params.amountMicro !== undefined ? Number(params.amountMicro) : 0,
|
|
191
|
+
max_rounds: params.maxRounds ?? 2,
|
|
192
|
+
message: params.message,
|
|
193
|
+
});
|
|
194
|
+
this._getOrCreateConv(result.conversation_id);
|
|
195
|
+
return result;
|
|
196
|
+
}
|
|
197
|
+
async counter(params) {
|
|
198
|
+
const result = await this._post('/hosted/negotiate/counter', {
|
|
199
|
+
recipient: params.recipient,
|
|
200
|
+
conversation_id: params.conversationId,
|
|
201
|
+
amount_usdc_micro: Number(params.amountMicro),
|
|
202
|
+
round: params.round,
|
|
203
|
+
max_rounds: params.maxRounds ?? null,
|
|
204
|
+
message: params.message ?? null,
|
|
205
|
+
});
|
|
206
|
+
this._getOrCreateConv(result.conversation_id);
|
|
207
|
+
return result;
|
|
208
|
+
}
|
|
209
|
+
async accept(params) {
|
|
210
|
+
const result = await this._post('/hosted/negotiate/accept', {
|
|
211
|
+
recipient: params.recipient,
|
|
212
|
+
conversation_id: params.conversationId,
|
|
213
|
+
amount_usdc_micro: Number(params.amountMicro),
|
|
214
|
+
message: params.message ?? null,
|
|
215
|
+
});
|
|
216
|
+
this._getOrCreateConv(result.conversation_id);
|
|
217
|
+
return result;
|
|
218
|
+
}
|
|
219
|
+
// ── Lifecycle ─────────────────────────────────────────────────────────────
|
|
220
|
+
async ping() {
|
|
221
|
+
try {
|
|
222
|
+
const res = await fetch(`${this.nodeUrl}/hosted/ping`, {
|
|
223
|
+
headers: { Authorization: `Bearer ${this.token}` },
|
|
224
|
+
});
|
|
225
|
+
return res.ok;
|
|
226
|
+
}
|
|
227
|
+
catch {
|
|
228
|
+
return false;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
dispose() {
|
|
232
|
+
this.wsClosed = true;
|
|
233
|
+
if (this.wsReconnectTimer)
|
|
234
|
+
clearTimeout(this.wsReconnectTimer);
|
|
235
|
+
this.ws?.close();
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
exports.HostedAgent = HostedAgent;
|
|
239
|
+
/**
|
|
240
|
+
* Manages a named pool of hosted agents on a single node.
|
|
241
|
+
*
|
|
242
|
+
* ```ts
|
|
243
|
+
* const fleet = new HostedFleet({ nodeUrl: 'http://localhost:9090', store })
|
|
244
|
+
* const ceo = await fleet.register('ceo')
|
|
245
|
+
* const dev = await fleet.register('dev')
|
|
246
|
+
*
|
|
247
|
+
* ceo.on('PROPOSE', async (env, conv) => {
|
|
248
|
+
* const p = decodeProposePayload(env.payload_b64)
|
|
249
|
+
* if (!p) return
|
|
250
|
+
* await ceo.accept({ recipient: env.sender, conversationId: env.conversation_id, amountMicro: p.amount_micro })
|
|
251
|
+
* }).listen()
|
|
252
|
+
*
|
|
253
|
+
* // propose() returns a conversation_id that is immediately trackable
|
|
254
|
+
* const { conversation_id } = await ceo.propose({
|
|
255
|
+
* recipient: dev.agentId,
|
|
256
|
+
* message: 'Build a REST API',
|
|
257
|
+
* amountMicro: 10_000_000n,
|
|
258
|
+
* })
|
|
259
|
+
* console.log(ceo.conversation(conversation_id)) // already exists
|
|
260
|
+
* ```
|
|
261
|
+
*/
|
|
262
|
+
class HostedFleet {
|
|
263
|
+
constructor(opts) {
|
|
264
|
+
this.agents = new Map();
|
|
265
|
+
this.nodeUrl = opts.nodeUrl.replace(/\/$/, '');
|
|
266
|
+
this.store = opts.store;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Register a named hosted agent.
|
|
270
|
+
* Reuses a cached token if valid (ping-validates first).
|
|
271
|
+
* Re-registers automatically on token expiry or node restart.
|
|
272
|
+
*/
|
|
273
|
+
async register(name) {
|
|
274
|
+
const cached = await this.store?.get(name);
|
|
275
|
+
if (cached) {
|
|
276
|
+
const agent = new HostedAgent({ nodeUrl: this.nodeUrl, ...cached });
|
|
277
|
+
if (await agent.ping()) {
|
|
278
|
+
this.agents.set(name, agent);
|
|
279
|
+
return agent;
|
|
280
|
+
}
|
|
281
|
+
await this.store?.delete(name);
|
|
282
|
+
}
|
|
283
|
+
const res = await fetch(`${this.nodeUrl}/hosted/register`, { method: 'POST' });
|
|
284
|
+
if (!res.ok)
|
|
285
|
+
throw new Error(`HostedFleet.register: /hosted/register → ${res.status}`);
|
|
286
|
+
const { agent_id, token } = await res.json();
|
|
287
|
+
await this.store?.set(name, { agentId: agent_id, token });
|
|
288
|
+
const agent = new HostedAgent({ nodeUrl: this.nodeUrl, agentId: agent_id, token });
|
|
289
|
+
this.agents.set(name, agent);
|
|
290
|
+
return agent;
|
|
291
|
+
}
|
|
292
|
+
get(name) {
|
|
293
|
+
return this.agents.get(name);
|
|
294
|
+
}
|
|
295
|
+
all() {
|
|
296
|
+
return Array.from(this.agents.values());
|
|
297
|
+
}
|
|
298
|
+
dispose() {
|
|
299
|
+
for (const agent of this.agents.values())
|
|
300
|
+
agent.dispose();
|
|
301
|
+
this.agents.clear();
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
exports.HostedFleet = HostedFleet;
|
|
305
|
+
/**
|
|
306
|
+
* Manages hosted agents distributed across multiple nodes.
|
|
307
|
+
*
|
|
308
|
+
* Use this when different agent roles run on different zerox1-node instances —
|
|
309
|
+
* for example, public-facing agents on one node and internal agents on another.
|
|
310
|
+
*
|
|
311
|
+
* ```ts
|
|
312
|
+
* const multi = new MultiFleet({
|
|
313
|
+
* nodes: {
|
|
314
|
+
* us: 'http://us-node:9090',
|
|
315
|
+
* eu: 'http://eu-node:9090',
|
|
316
|
+
* },
|
|
317
|
+
* store,
|
|
318
|
+
* })
|
|
319
|
+
*
|
|
320
|
+
* const ceo = await multi.register('ceo', 'us')
|
|
321
|
+
* const dev = await multi.register('dev', 'us')
|
|
322
|
+
* const sales = await multi.register('sales', 'eu')
|
|
323
|
+
* const analyst = await multi.register('analyst', 'eu')
|
|
324
|
+
*
|
|
325
|
+
* // All agents work exactly like single-fleet HostedAgent instances
|
|
326
|
+
* ceo.on('PROPOSE', handler).listen()
|
|
327
|
+
* ```
|
|
328
|
+
*/
|
|
329
|
+
class MultiFleet {
|
|
330
|
+
constructor(opts) {
|
|
331
|
+
this.fleets = new Map();
|
|
332
|
+
this.agents = new Map();
|
|
333
|
+
const scopedStore = (nodeName) => {
|
|
334
|
+
if (!opts.store)
|
|
335
|
+
return undefined;
|
|
336
|
+
return {
|
|
337
|
+
get: (key) => opts.store.get(`${nodeName}:${key}`),
|
|
338
|
+
set: (key, val) => opts.store.set(`${nodeName}:${key}`, val),
|
|
339
|
+
delete: (key) => opts.store.delete(`${nodeName}:${key}`),
|
|
340
|
+
};
|
|
341
|
+
};
|
|
342
|
+
for (const [name, url] of Object.entries(opts.nodes)) {
|
|
343
|
+
this.fleets.set(name, new HostedFleet({ nodeUrl: url, store: scopedStore(name) }));
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Register a named agent on a specific node.
|
|
348
|
+
* @param agentName - Unique name for this agent (e.g. 'ceo', 'dev')
|
|
349
|
+
* @param nodeName - Which node to register on (must be in `nodes` config)
|
|
350
|
+
*/
|
|
351
|
+
async register(agentName, nodeName) {
|
|
352
|
+
const fleet = this.fleets.get(nodeName);
|
|
353
|
+
if (!fleet)
|
|
354
|
+
throw new Error(`MultiFleet: unknown node "${nodeName}"`);
|
|
355
|
+
const agent = await fleet.register(agentName);
|
|
356
|
+
this.agents.set(agentName, agent);
|
|
357
|
+
return agent;
|
|
358
|
+
}
|
|
359
|
+
get(agentName) {
|
|
360
|
+
return this.agents.get(agentName);
|
|
361
|
+
}
|
|
362
|
+
all() {
|
|
363
|
+
return Array.from(this.agents.values());
|
|
364
|
+
}
|
|
365
|
+
fleet(nodeName) {
|
|
366
|
+
return this.fleets.get(nodeName);
|
|
367
|
+
}
|
|
368
|
+
dispose() {
|
|
369
|
+
for (const fleet of this.fleets.values())
|
|
370
|
+
fleet.dispose();
|
|
371
|
+
this.agents.clear();
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
exports.MultiFleet = MultiFleet;
|
|
375
|
+
//# sourceMappingURL=HostedFleet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HostedFleet.js","sourceRoot":"","sources":["../src/HostedFleet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NodeClient — HTTP + WebSocket client for the zerox1-node REST API.
|
|
3
|
+
*
|
|
4
|
+
* Works with both local nodes (127.0.0.1:9090) and remote nodes.
|
|
5
|
+
* Does not manage the node binary — use @zerox1/sdk for that.
|
|
6
|
+
*/
|
|
7
|
+
import type { NodeIdentity, PeerSnapshot, ReputationSnapshot, SendResult, NegotiateResult, SkillMeta, ApiEvent, InboundEnvelope, MsgType } from './types.js';
|
|
8
|
+
export interface NodeClientOptions {
|
|
9
|
+
/** Node API base URL, e.g. "http://127.0.0.1:9090" or "https://my-node.com" */
|
|
10
|
+
url: string;
|
|
11
|
+
/** Master secret (--api-secret / ZX01_API_SECRET). Required for send/negotiate. */
|
|
12
|
+
secret?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface SendParams {
|
|
15
|
+
msgType: MsgType;
|
|
16
|
+
/** Recipient agent ID (64-char hex). Omit for broadcast messages. */
|
|
17
|
+
recipient?: string;
|
|
18
|
+
conversationId?: string;
|
|
19
|
+
/** Raw payload bytes. Will be base64-encoded automatically. */
|
|
20
|
+
payload: Uint8Array;
|
|
21
|
+
}
|
|
22
|
+
export interface ProposeParams {
|
|
23
|
+
recipient: string;
|
|
24
|
+
message: string;
|
|
25
|
+
conversationId?: string;
|
|
26
|
+
amountMicro?: bigint;
|
|
27
|
+
maxRounds?: number;
|
|
28
|
+
}
|
|
29
|
+
export interface CounterParams {
|
|
30
|
+
recipient: string;
|
|
31
|
+
conversationId: string;
|
|
32
|
+
amountMicro: bigint;
|
|
33
|
+
round: number;
|
|
34
|
+
maxRounds?: number;
|
|
35
|
+
message?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface AcceptParams {
|
|
38
|
+
recipient: string;
|
|
39
|
+
conversationId: string;
|
|
40
|
+
amountMicro: bigint;
|
|
41
|
+
message?: string;
|
|
42
|
+
}
|
|
43
|
+
export declare class NodeClient {
|
|
44
|
+
private readonly baseUrl;
|
|
45
|
+
private readonly secret;
|
|
46
|
+
constructor(opts: NodeClientOptions);
|
|
47
|
+
private headers;
|
|
48
|
+
private get;
|
|
49
|
+
private post;
|
|
50
|
+
identity(): Promise<NodeIdentity>;
|
|
51
|
+
peers(): Promise<PeerSnapshot[]>;
|
|
52
|
+
reputation(agentId: string): Promise<ReputationSnapshot>;
|
|
53
|
+
send(params: SendParams): Promise<SendResult>;
|
|
54
|
+
propose(params: ProposeParams): Promise<NegotiateResult>;
|
|
55
|
+
counter(params: CounterParams): Promise<NegotiateResult>;
|
|
56
|
+
accept(params: AcceptParams): Promise<NegotiateResult>;
|
|
57
|
+
listSkills(): Promise<SkillMeta[]>;
|
|
58
|
+
installSkill(url: string, name?: string): Promise<void>;
|
|
59
|
+
removeSkill(name: string): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Subscribe to the local agent inbox.
|
|
62
|
+
* Returns an unsubscribe function.
|
|
63
|
+
*/
|
|
64
|
+
inbox(handler: (env: InboundEnvelope) => void): () => void;
|
|
65
|
+
/**
|
|
66
|
+
* Subscribe to node events (peer connect/disconnect, etc.).
|
|
67
|
+
* Returns an unsubscribe function.
|
|
68
|
+
*/
|
|
69
|
+
events(handler: (event: ApiEvent) => void): () => void;
|
|
70
|
+
private _wsSubscribe;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=NodeClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeClient.d.ts","sourceRoot":"","sources":["../src/NodeClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,UAAU,EACV,eAAe,EACf,SAAS,EACT,QAAQ,EACR,eAAe,EACf,OAAO,EACR,MAAM,YAAY,CAAA;AAGnB,MAAM,WAAW,iBAAiB;IAChC,+EAA+E;IAC/E,GAAG,EAAE,MAAM,CAAA;IACX,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,+DAA+D;IAC/D,OAAO,EAAE,UAAU,CAAA;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;gBAE/B,IAAI,EAAE,iBAAiB;IAOnC,OAAO,CAAC,OAAO;YAMD,GAAG;YAMH,IAAI;IAYZ,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC;IAIjC,KAAK,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAIhC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAMxD,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAW7C,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC;IAUxD,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC;IAWxD,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;IAWtD,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAIlC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM9C;;;OAGG;IACH,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,GAAG,MAAM,IAAI;IAI1D;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,MAAM,IAAI;IAItD,OAAO,CAAC,YAAY;CA+BrB"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* NodeClient — HTTP + WebSocket client for the zerox1-node REST API.
|
|
4
|
+
*
|
|
5
|
+
* Works with both local nodes (127.0.0.1:9090) and remote nodes.
|
|
6
|
+
* Does not manage the node binary — use @zerox1/sdk for that.
|
|
7
|
+
*/
|
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.NodeClient = void 0;
|
|
13
|
+
const ws_1 = __importDefault(require("ws"));
|
|
14
|
+
const codec_js_1 = require("./codec.js");
|
|
15
|
+
class NodeClient {
|
|
16
|
+
constructor(opts) {
|
|
17
|
+
this.baseUrl = opts.url.replace(/\/$/, '');
|
|
18
|
+
this.secret = opts.secret;
|
|
19
|
+
}
|
|
20
|
+
// ── HTTP helpers ──────────────────────────────────────────────────────────
|
|
21
|
+
headers(extra) {
|
|
22
|
+
const h = { 'Content-Type': 'application/json' };
|
|
23
|
+
if (this.secret)
|
|
24
|
+
h['Authorization'] = `Bearer ${this.secret}`;
|
|
25
|
+
return { ...h, ...extra };
|
|
26
|
+
}
|
|
27
|
+
async get(path) {
|
|
28
|
+
const res = await fetch(`${this.baseUrl}${path}`, { headers: this.headers() });
|
|
29
|
+
if (!res.ok)
|
|
30
|
+
throw new Error(`GET ${path} → ${res.status}: ${await res.text()}`);
|
|
31
|
+
return res.json();
|
|
32
|
+
}
|
|
33
|
+
async post(path, body) {
|
|
34
|
+
const res = await fetch(`${this.baseUrl}${path}`, {
|
|
35
|
+
method: 'POST',
|
|
36
|
+
headers: this.headers(),
|
|
37
|
+
body: JSON.stringify(body),
|
|
38
|
+
});
|
|
39
|
+
if (!res.ok)
|
|
40
|
+
throw new Error(`POST ${path} → ${res.status}: ${await res.text()}`);
|
|
41
|
+
return res.json();
|
|
42
|
+
}
|
|
43
|
+
// ── Identity & status ─────────────────────────────────────────────────────
|
|
44
|
+
async identity() {
|
|
45
|
+
return this.get('/identity');
|
|
46
|
+
}
|
|
47
|
+
async peers() {
|
|
48
|
+
return this.get('/peers');
|
|
49
|
+
}
|
|
50
|
+
async reputation(agentId) {
|
|
51
|
+
return this.get(`/reputation/${agentId}`);
|
|
52
|
+
}
|
|
53
|
+
// ── Send ──────────────────────────────────────────────────────────────────
|
|
54
|
+
async send(params) {
|
|
55
|
+
return this.post('/envelopes/send', {
|
|
56
|
+
msg_type: params.msgType,
|
|
57
|
+
recipient: params.recipient ?? null,
|
|
58
|
+
conversation_id: params.conversationId ?? (0, codec_js_1.newConversationId)(),
|
|
59
|
+
payload_b64: (0, codec_js_1.bytesToBase64)(params.payload),
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
// ── Negotiate shortcuts ───────────────────────────────────────────────────
|
|
63
|
+
async propose(params) {
|
|
64
|
+
return this.post('/negotiate/propose', {
|
|
65
|
+
recipient: params.recipient,
|
|
66
|
+
conversation_id: params.conversationId ?? null,
|
|
67
|
+
amount_usdc_micro: params.amountMicro !== undefined ? Number(params.amountMicro) : 0,
|
|
68
|
+
max_rounds: params.maxRounds ?? 2,
|
|
69
|
+
message: params.message,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
async counter(params) {
|
|
73
|
+
return this.post('/negotiate/counter', {
|
|
74
|
+
recipient: params.recipient,
|
|
75
|
+
conversation_id: params.conversationId,
|
|
76
|
+
amount_usdc_micro: Number(params.amountMicro),
|
|
77
|
+
round: params.round,
|
|
78
|
+
max_rounds: params.maxRounds ?? null,
|
|
79
|
+
message: params.message ?? null,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
async accept(params) {
|
|
83
|
+
return this.post('/negotiate/accept', {
|
|
84
|
+
recipient: params.recipient,
|
|
85
|
+
conversation_id: params.conversationId,
|
|
86
|
+
amount_usdc_micro: Number(params.amountMicro),
|
|
87
|
+
message: params.message ?? null,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
// ── Skills ────────────────────────────────────────────────────────────────
|
|
91
|
+
async listSkills() {
|
|
92
|
+
return this.get('/skill/list');
|
|
93
|
+
}
|
|
94
|
+
async installSkill(url, name) {
|
|
95
|
+
await this.post('/skill/install-url', { url, name: name ?? null });
|
|
96
|
+
}
|
|
97
|
+
async removeSkill(name) {
|
|
98
|
+
await this.post('/skill/remove', { name });
|
|
99
|
+
}
|
|
100
|
+
// ── WebSocket subscriptions ───────────────────────────────────────────────
|
|
101
|
+
/**
|
|
102
|
+
* Subscribe to the local agent inbox.
|
|
103
|
+
* Returns an unsubscribe function.
|
|
104
|
+
*/
|
|
105
|
+
inbox(handler) {
|
|
106
|
+
return this._wsSubscribe('/ws/inbox', handler);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Subscribe to node events (peer connect/disconnect, etc.).
|
|
110
|
+
* Returns an unsubscribe function.
|
|
111
|
+
*/
|
|
112
|
+
events(handler) {
|
|
113
|
+
return this._wsSubscribe('/ws/events', handler);
|
|
114
|
+
}
|
|
115
|
+
_wsSubscribe(path, handler) {
|
|
116
|
+
const wsUrl = this.baseUrl.replace(/^http/, 'ws') + path;
|
|
117
|
+
const params = this.secret ? `?token=${this.secret}` : '';
|
|
118
|
+
let ws = null;
|
|
119
|
+
let closed = false;
|
|
120
|
+
let reconnectTimer = null;
|
|
121
|
+
const connect = () => {
|
|
122
|
+
if (closed)
|
|
123
|
+
return;
|
|
124
|
+
ws = new ws_1.default(`${wsUrl}${params}`);
|
|
125
|
+
ws.on('message', (data) => {
|
|
126
|
+
try {
|
|
127
|
+
handler(JSON.parse(data.toString()));
|
|
128
|
+
}
|
|
129
|
+
catch (e) {
|
|
130
|
+
console.error('[NodeClient] failed to parse message:', e);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
ws.on('close', () => {
|
|
134
|
+
if (!closed)
|
|
135
|
+
reconnectTimer = setTimeout(connect, 3000);
|
|
136
|
+
});
|
|
137
|
+
ws.on('error', (e) => {
|
|
138
|
+
console.error('[NodeClient] WebSocket error:', e);
|
|
139
|
+
});
|
|
140
|
+
};
|
|
141
|
+
connect();
|
|
142
|
+
return () => {
|
|
143
|
+
closed = true;
|
|
144
|
+
if (reconnectTimer)
|
|
145
|
+
clearTimeout(reconnectTimer);
|
|
146
|
+
ws?.close();
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
exports.NodeClient = NodeClient;
|
|
151
|
+
//# sourceMappingURL=NodeClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeClient.js","sourceRoot":"","sources":["../src/NodeClient.ts"],"names":[],"mappings":"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"}
|
package/dist/codec.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codec re-export — all negotiation codec lives in @zerox1/core.
|
|
3
|
+
*/
|
|
4
|
+
export { encodeProposePayload, decodeProposePayload, encodeCounterPayload, decodeCounterPayload, encodeAcceptPayload, decodeAcceptPayload, encodeFeedbackPayload, decodeDeliverPayload, encodeJsonPayload, decodeJsonPayload, newConversationId, bytesToBase64, base64ToBytes, hexToBase64, base64ToHex, } from '@zerox1/core';
|
|
5
|
+
//# sourceMappingURL=codec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,cAAc,CAAA"}
|
package/dist/codec.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Codec re-export — all negotiation codec lives in @zerox1/core.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.base64ToHex = exports.hexToBase64 = exports.base64ToBytes = exports.bytesToBase64 = exports.newConversationId = exports.decodeJsonPayload = exports.encodeJsonPayload = exports.decodeDeliverPayload = exports.encodeFeedbackPayload = exports.decodeAcceptPayload = exports.encodeAcceptPayload = exports.decodeCounterPayload = exports.encodeCounterPayload = exports.decodeProposePayload = exports.encodeProposePayload = void 0;
|
|
7
|
+
var core_1 = require("@zerox1/core");
|
|
8
|
+
Object.defineProperty(exports, "encodeProposePayload", { enumerable: true, get: function () { return core_1.encodeProposePayload; } });
|
|
9
|
+
Object.defineProperty(exports, "decodeProposePayload", { enumerable: true, get: function () { return core_1.decodeProposePayload; } });
|
|
10
|
+
Object.defineProperty(exports, "encodeCounterPayload", { enumerable: true, get: function () { return core_1.encodeCounterPayload; } });
|
|
11
|
+
Object.defineProperty(exports, "decodeCounterPayload", { enumerable: true, get: function () { return core_1.decodeCounterPayload; } });
|
|
12
|
+
Object.defineProperty(exports, "encodeAcceptPayload", { enumerable: true, get: function () { return core_1.encodeAcceptPayload; } });
|
|
13
|
+
Object.defineProperty(exports, "decodeAcceptPayload", { enumerable: true, get: function () { return core_1.decodeAcceptPayload; } });
|
|
14
|
+
Object.defineProperty(exports, "encodeFeedbackPayload", { enumerable: true, get: function () { return core_1.encodeFeedbackPayload; } });
|
|
15
|
+
Object.defineProperty(exports, "decodeDeliverPayload", { enumerable: true, get: function () { return core_1.decodeDeliverPayload; } });
|
|
16
|
+
Object.defineProperty(exports, "encodeJsonPayload", { enumerable: true, get: function () { return core_1.encodeJsonPayload; } });
|
|
17
|
+
Object.defineProperty(exports, "decodeJsonPayload", { enumerable: true, get: function () { return core_1.decodeJsonPayload; } });
|
|
18
|
+
Object.defineProperty(exports, "newConversationId", { enumerable: true, get: function () { return core_1.newConversationId; } });
|
|
19
|
+
Object.defineProperty(exports, "bytesToBase64", { enumerable: true, get: function () { return core_1.bytesToBase64; } });
|
|
20
|
+
Object.defineProperty(exports, "base64ToBytes", { enumerable: true, get: function () { return core_1.base64ToBytes; } });
|
|
21
|
+
Object.defineProperty(exports, "hexToBase64", { enumerable: true, get: function () { return core_1.hexToBase64; } });
|
|
22
|
+
Object.defineProperty(exports, "base64ToHex", { enumerable: true, get: function () { return core_1.base64ToHex; } });
|
|
23
|
+
//# sourceMappingURL=codec.js.map
|