@nolag/agents 0.1.0 → 0.2.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/README.md ADDED
@@ -0,0 +1,355 @@
1
+ # @nolag/agents
2
+
3
+ Multi-agent coordination SDK for [NoLag](https://nolag.app) — dispatch tasks, share state, observe decisions, gate actions with human approval, and invoke remote tools across connected agents.
4
+
5
+ ## How It Works with NoLag
6
+
7
+ NoLag is a real-time messaging platform that handles WebSocket connections, message routing, persistence, and scaling. This SDK wraps the low-level [@nolag/js-sdk](https://www.npmjs.com/package/@nolag/js-sdk) and gives you a purpose-built multi-agent coordination API — task handoff, shared blackboard state, tool invocation, approval gates, and observability — without needing to manage topics or subscriptions yourself.
8
+
9
+ ### Getting Your Token
10
+
11
+ 1. Sign up at [nolag.app](https://nolag.app)
12
+ 2. Create a new **project** in the portal
13
+ 3. Choose the **Agents** blueprint when creating an app — this pre-configures the topics (`tasks`, `results`, `state`, `events`, `inbox`, `tools`, `approval`), rooms, and lobbies your agent workflow needs
14
+ 4. Go to the app's **Tokens** page and generate an **actor token** for each agent
15
+ 5. Use that token when connecting with this SDK
16
+
17
+ Each token identifies a unique agent (actor) in NoLag. The blueprint handles all the infrastructure setup — you just write your agent logic.
18
+
19
+ ## Install
20
+
21
+ ```bash
22
+ npm install @nolag/js-sdk @nolag/agents
23
+ ```
24
+
25
+ ## Quick Start
26
+
27
+ ```typescript
28
+ import { NoLagAgents, Handoff } from "@nolag/agents";
29
+
30
+ // --- Orchestrator ---
31
+ const orchestrator = new NoLagAgents("ORCHESTRATOR_TOKEN", {
32
+ agentId: "orchestrator-1",
33
+ presence: { name: "orchestrator-1", role: "orchestrator" },
34
+ });
35
+ await orchestrator.connect();
36
+
37
+ const room = orchestrator.room("default-workflow");
38
+ const handoff = new Handoff(room);
39
+
40
+ // Dispatch a task and wait for the result
41
+ const result = await handoff.dispatch("summarize", { text: "..." }, {
42
+ waitForResult: true,
43
+ timeout: 30_000,
44
+ });
45
+ console.log("Result:", result?.payload);
46
+
47
+ // --- Worker ---
48
+ const worker = new NoLagAgents("WORKER_TOKEN", {
49
+ agentId: "worker-1",
50
+ presence: {
51
+ name: "worker-1",
52
+ role: "agent",
53
+ capabilities: ["summarize"],
54
+ },
55
+ });
56
+ await worker.connect();
57
+
58
+ const workerRoom = worker.room("default-workflow");
59
+ const workerHandoff = new Handoff(workerRoom);
60
+
61
+ workerHandoff.onTask(["summarize"], async (task, respond) => {
62
+ const summary = await summarize(task.payload.text);
63
+ respond("success", { summary });
64
+ });
65
+ ```
66
+
67
+ ## Coordination Patterns
68
+
69
+ ### Handoff — Task Dispatch & Results
70
+
71
+ Dispatch tasks to agents by capability. The SDK uses presence-based service discovery to verify a capable agent is connected before dispatching.
72
+
73
+ ```typescript
74
+ import { Handoff } from "@nolag/agents";
75
+
76
+ const handoff = new Handoff(room);
77
+
78
+ // Orchestrator: dispatch work
79
+ const result = await handoff.dispatch("translate", { text, lang: "es" }, {
80
+ waitForResult: true,
81
+ priority: "high",
82
+ });
83
+
84
+ // Worker: handle tasks
85
+ handoff.onTask(["translate"], async (task, respond) => {
86
+ const translated = await translate(task.payload.text, task.payload.lang);
87
+ respond("success", { translated });
88
+ });
89
+
90
+ // Check who can handle a capability
91
+ const agents = handoff.getCapableAgents("translate");
92
+ ```
93
+
94
+ ### Blackboard — Shared State
95
+
96
+ Read and write key-value pairs visible to all agents in the room. State is retained so new agents receive current values on join.
97
+
98
+ ```typescript
99
+ import { Blackboard } from "@nolag/agents";
100
+
101
+ const board = new Blackboard(room, agentId);
102
+
103
+ // Write state
104
+ board.set("progress", { completed: 3, total: 10 });
105
+
106
+ // Read state
107
+ const progress = board.get("progress");
108
+
109
+ // React to changes
110
+ board.onChange("progress", (envelope) => {
111
+ console.log(`Progress updated by ${envelope.updatedBy}:`, envelope.value);
112
+ });
113
+ ```
114
+
115
+ ### Tools — Remote Tool Invocation
116
+
117
+ Register tool handlers on one agent, invoke them from another. Uses correlated request/response over pub/sub.
118
+
119
+ ```typescript
120
+ import { Tools } from "@nolag/agents";
121
+
122
+ const tools = new Tools(room, agentId);
123
+
124
+ // Tool server: register handlers
125
+ tools.register("web_search", async (args) => {
126
+ return await search(args.query as string);
127
+ });
128
+
129
+ // Caller: invoke a remote tool
130
+ const response = await tools.invoke("web_search", { query: "NoLag docs" });
131
+ console.log(response.result);
132
+ ```
133
+
134
+ ### Approve — Human-in-the-Loop Gates
135
+
136
+ Request approval before taking actions. Humans or supervisor agents approve, reject, or defer.
137
+
138
+ ```typescript
139
+ import { Approve } from "@nolag/agents";
140
+
141
+ const approve = new Approve(room, agentId);
142
+
143
+ // Agent: request approval
144
+ const response = await approve.request("delete_record", { recordId: 42 }, {
145
+ urgency: "high",
146
+ timeout: 60_000,
147
+ });
148
+ if (response.decision === "approved") {
149
+ await deleteRecord(42);
150
+ }
151
+
152
+ // Human/supervisor: handle approval requests
153
+ approve.onRequest((request, respond) => {
154
+ console.log(`Action: ${request.action}`, request.context);
155
+ respond("approved", "Looks good");
156
+ });
157
+ ```
158
+
159
+ ### Inbox — Direct Agent Messaging
160
+
161
+ Send messages directly to a specific agent. Messages are addressed by agent ID.
162
+
163
+ ```typescript
164
+ import { Inbox } from "@nolag/agents";
165
+
166
+ const inbox = new Inbox(room, agentId);
167
+
168
+ // Send a direct message
169
+ inbox.send("worker-2", { instruction: "re-process item 7" });
170
+
171
+ // Receive messages
172
+ inbox.onMessage((msg) => {
173
+ console.log(`From ${msg.from}:`, msg.payload);
174
+ });
175
+ ```
176
+
177
+ ### Observe — Observability Events
178
+
179
+ Emit structured events for monitoring dashboards. Events have severity, category, and agent attribution.
180
+
181
+ ```typescript
182
+ import { Observe } from "@nolag/agents";
183
+
184
+ const observe = new Observe(room, agentId);
185
+
186
+ // Emit events
187
+ observe.emit("task.completed", { taskId: "t-1", duration: 1200 }, "info");
188
+ observe.emit("rate_limit", { service: "openai" }, "warning");
189
+
190
+ // Listen for events (with optional filters)
191
+ observe.on((event) => {
192
+ console.log(`[${event.severity}] ${event.category}:`, event.payload);
193
+ }, { severity: "warning" });
194
+ ```
195
+
196
+ ## API Reference
197
+
198
+ ### `NoLagAgents`
199
+
200
+ #### Constructor
201
+
202
+ ```typescript
203
+ const agents = new NoLagAgents(token: string, options?: NoLagAgentsOptions);
204
+ ```
205
+
206
+ **Options:**
207
+
208
+ | Option | Type | Default | Description |
209
+ |--------|------|---------|-------------|
210
+ | `appName` | `string` | `"agents"` | App slug for the agents workflow |
211
+ | `agentId` | `string` | auto-generated | Unique agent ID |
212
+ | `debug` | `boolean` | `false` | Enable debug logging |
213
+ | `rooms` | `string[]` | `["default-workflow"]` | Rooms to auto-join on connect |
214
+ | `lobby` | `string` | — | Lobby slug for cross-room presence observation |
215
+ | `presence` | `AgentPresenceData` | — | Presence data advertised to other agents |
216
+ | `clientOptions` | `Partial<NoLagOptions>` | — | Additional options passed to `@nolag/js-sdk` |
217
+
218
+ #### Methods
219
+
220
+ | Method | Returns | Description |
221
+ |--------|---------|-------------|
222
+ | `connect()` | `Promise<void>` | Connect to NoLag and join configured rooms |
223
+ | `disconnect()` | `void` | Disconnect and clean up |
224
+ | `room(name)` | `AgentRoom` | Get or create a room (auto-joins if not already joined) |
225
+ | `subscribeLobby(slug)` | `Promise<Record>` | Subscribe to a lobby for cross-room presence |
226
+
227
+ #### Properties
228
+
229
+ | Property | Type | Description |
230
+ |----------|------|-------------|
231
+ | `agentId` | `string` | The agent's unique ID |
232
+ | `connected` | `boolean` | Whether currently connected |
233
+ | `rooms` | `ReadonlyMap<string, AgentRoom>` | All joined rooms |
234
+
235
+ #### Events
236
+
237
+ | Event | Payload | Description |
238
+ |-------|---------|-------------|
239
+ | `connected` | — | Connected to NoLag |
240
+ | `disconnected` | `reason: string` | Disconnected |
241
+ | `reconnected` | — | Reconnected after disconnect |
242
+ | `error` | `Error` | Connection or protocol error |
243
+
244
+ ### `AgentRoom`
245
+
246
+ #### Methods
247
+
248
+ | Method | Returns | Description |
249
+ |--------|---------|-------------|
250
+ | `getConnectedAgents()` | `ConnectedAgent[]` | Get all connected agents |
251
+ | `findAgents(capability)` | `ConnectedAgent[]` | Find agents with a capability |
252
+ | `hasCapability(capability)` | `boolean` | Check if any agent has a capability |
253
+ | `getAvailableCapabilities()` | `string[]` | Get all capabilities across connected agents |
254
+ | `setPresence(data)` | `void` | Update this agent's presence |
255
+ | `fetchPresence()` | `Promise<ConnectedAgent[]>` | Fetch current presence snapshot |
256
+ | `publishTask(envelope)` | `void` | Publish to tasks topic |
257
+ | `publishResult(envelope)` | `void` | Publish to results topic |
258
+ | `publishState(data)` | `void` | Publish to state topic (retained) |
259
+ | `publishEvent(data)` | `void` | Publish to events topic |
260
+ | `publishInbox(data)` | `void` | Publish to inbox topic |
261
+ | `publishTools(data)` | `void` | Publish to tools topic |
262
+ | `publishApproval(data)` | `void` | Publish to approval topic (retained) |
263
+
264
+ #### Properties
265
+
266
+ | Property | Type | Description |
267
+ |----------|------|-------------|
268
+ | `name` | `string` | Room name |
269
+ | `agentId` | `string` | This agent's ID |
270
+ | `context` | `RoomContext` | Underlying `@nolag/js-sdk` room context |
271
+
272
+ #### Events
273
+
274
+ | Event | Payload | Description |
275
+ |-------|---------|-------------|
276
+ | `task` | `TaskEnvelope` | Task dispatched |
277
+ | `result` | `ResultEnvelope` | Task result received |
278
+ | `stateChange` | `StateEnvelope` | Shared state updated |
279
+ | `event` | `EventEnvelope` | Observability event |
280
+ | `inbox` | `Record<string, unknown>` | Inbox message received |
281
+ | `approvalRequest` | `ApprovalRequestEnvelope` | Approval requested |
282
+ | `approvalResponse` | `ApprovalResponseEnvelope` | Approval decision received |
283
+ | `toolRequest` | `ToolRequestEnvelope` | Tool invocation requested |
284
+ | `toolResponse` | `ToolResponseEnvelope` | Tool result received |
285
+ | `presenceJoin` | `actorId, AgentPresenceData` | Agent joined |
286
+ | `presenceLeave` | `actorId` | Agent left |
287
+ | `presenceUpdate` | `actorId, AgentPresenceData` | Agent presence updated |
288
+
289
+ ## Types
290
+
291
+ ```typescript
292
+ interface AgentPresenceData {
293
+ name: string;
294
+ role: string; // "orchestrator" | "agent" | "observer" | "human" | "tool-server"
295
+ capabilities?: string[];
296
+ metadata?: Record<string, unknown>;
297
+ }
298
+
299
+ interface ConnectedAgent {
300
+ actorId: string;
301
+ name: string;
302
+ role: string;
303
+ capabilities: string[];
304
+ metadata?: Record<string, unknown>;
305
+ connectedAt: number;
306
+ }
307
+
308
+ interface TaskEnvelope {
309
+ type: "task";
310
+ taskId: string;
311
+ correlationId: string;
312
+ capability: string;
313
+ priority: "low" | "medium" | "high" | "critical";
314
+ payload: Record<string, unknown>;
315
+ tags?: string[];
316
+ metadata?: Record<string, unknown>;
317
+ createdAt: number;
318
+ createdBy?: string;
319
+ timeout?: number;
320
+ }
321
+
322
+ interface ResultEnvelope {
323
+ type: "result";
324
+ taskId: string;
325
+ correlationId: string;
326
+ status: "success" | "error" | "partial";
327
+ payload: Record<string, unknown>;
328
+ error?: { code: string; message: string };
329
+ completedAt: number;
330
+ completedBy?: string;
331
+ }
332
+
333
+ interface StateEnvelope {
334
+ type: "state";
335
+ key: string;
336
+ value: unknown;
337
+ version: number;
338
+ updatedAt: number;
339
+ updatedBy: string;
340
+ }
341
+
342
+ interface EventEnvelope {
343
+ type: "event";
344
+ eventId: string;
345
+ severity: "debug" | "info" | "warning" | "error" | "critical";
346
+ category: string;
347
+ payload: Record<string, unknown>;
348
+ timestamp: number;
349
+ emittedBy: string;
350
+ }
351
+ ```
352
+
353
+ ## License
354
+
355
+ MIT
@@ -59,7 +59,7 @@ export declare class AgentRoom extends EventEmitter<AgentRoomEvents> {
59
59
  get context(): any;
60
60
  /** Publish to the tasks topic */
61
61
  publishTask(envelope: TaskEnvelope): void;
62
- /** Publish to the results topic */
62
+ /** Publish to the results topic — directed to the dispatcher via filter when replyTo is set */
63
63
  publishResult(envelope: ResultEnvelope): void;
64
64
  /** Publish to the state topic (retained) */
65
65
  publishState(data: Record<string, unknown>): void;
@@ -67,7 +67,12 @@ export declare class AgentRoom extends EventEmitter<AgentRoomEvents> {
67
67
  publishEvent(data: Record<string, unknown>): void;
68
68
  /** Publish to the inbox topic */
69
69
  publishInbox(data: Record<string, unknown>): void;
70
- /** Publish to the tools topic */
70
+ /**
71
+ * Publish a tool message.
72
+ * Requests go to the tools topic (load-balanced one-of-N across server
73
+ * replicas). Responses are directed to the requester on the results topic
74
+ * via filter — never load-balanced, never broadcast.
75
+ */
71
76
  publishTools(data: Record<string, unknown>): void;
72
77
  /** Publish to the approval topic (retained) */
73
78
  publishApproval(data: Record<string, unknown>): void;
package/dist/browser.js CHANGED
@@ -1,2 +1,2 @@
1
- import{NoLag as t}from"@nolag/js-sdk";class e{constructor(){this._handlers=new Map}on(t,e){return this._handlers.has(t)||this._handlers.set(t,new Set),this._handlers.get(t).add(e),this}off(t,e){return e?this._handlers.get(t)?.delete(e):this._handlers.delete(t),this}removeAllListeners(){return this._handlers.clear(),this}emit(t,...e){const s=this._handlers.get(t);if(s)for(const o of s)try{o(...e)}catch(e){console.error(`Error in ${String(t)} handler:`,e)}}listenerCount(t){return this._handlers.get(t)?.size??0}}const s="tasks",o="results",n="state",i="events",r="inbox",a="tools",c="approval";class l extends e{constructor(t,e,s,o,n,i){super(),this._agents=new Map,this.name=t,this.agentId=n,this._roomContext=e,this._client=s,this._log=o,this._presence=i,this._wireTopicListeners(),this._wirePresenceListeners(),i&&(this._log(`setting presence in room ${t}:`,i),this._roomContext.setPresence(i)),this._fetchInitialPresence()}getConnectedAgents(){return Array.from(this._agents.values())}findAgents(t){return Array.from(this._agents.values()).filter(e=>e.capabilities.includes(t))}hasCapability(t){return this.findAgents(t).length>0}getAvailableCapabilities(){const t=new Set;for(const e of this._agents.values())for(const s of e.capabilities)t.add(s);return Array.from(t)}setPresence(t){this._presence=t,this._log(`updating presence in room ${this.name}`),this._roomContext.setPresence(t)}async fetchPresence(){try{return(await this._roomContext.fetchPresence()||[]).map(t=>this._toConnectedAgent(t))}catch{return[]}}_emitPresence(t,e,s){"presenceLeave"===t?this.emit("presenceLeave",e):this.emit(t,e,s||{})}get context(){return this._roomContext}publishTask(t){t.createdBy||(t.createdBy=this.agentId),this._publish(s,t)}publishResult(t){t.completedBy||(t.completedBy=this.agentId),this._publish(o,t)}publishState(t){t.updatedBy||(t.updatedBy=this.agentId),this._publish(n,t,{retain:!0})}publishEvent(t){t.emittedBy||(t.emittedBy=this.agentId),this._publish(i,t)}publishInbox(t){this._publish(r,t)}publishTools(t){this._publish(a,t)}publishApproval(t){this._publish(c,t,{retain:!0})}_publish(t,e,s){this._log(`publish to ${t} in room ${this.name}`),s?this._roomContext.emit(t,e,s):this._roomContext.emit(t,e)}_toConnectedAgent(t){const e=t.presence||t.data||{};return{actorId:t.actorTokenId||t.actorId||"",name:e.name||t.actorTokenId||"",role:e.role||"agent",capabilities:e.capabilities||[],metadata:e.metadata,connectedAt:t.joinedAt||Date.now()}}async _fetchInitialPresence(){try{const t=await this._roomContext.fetchPresence();if(Array.isArray(t)){for(const e of t){const t=this._toConnectedAgent(e);t.actorId&&this._agents.set(t.actorId,t)}this._log(`discovered ${this._agents.size} agents in room ${this.name}`)}}catch{}}_wirePresenceListeners(){if(!this._client)return;const t=this._client;t.on?.("presence:join",t=>{if(t?.roomId===this.name||!t?.roomId){const e=t?.actorId||t?.actorTokenId,s=t?.data||t?.presence||{};if(e){const t={actorId:e,name:s.name||e,role:s.role||"agent",capabilities:s.capabilities||[],metadata:s.metadata,connectedAt:Date.now()};this._agents.set(e,t),this._log(`agent joined room ${this.name}:`,t.name,t.capabilities),this.emit("presenceJoin",e,s)}}}),t.on?.("presence:leave",t=>{if(t?.roomId===this.name||!t?.roomId){const e=t?.actorId||t?.actorTokenId;if(e){const t=this._agents.get(e);this._agents.delete(e),this._log(`agent left room ${this.name}:`,t?.name||e),this.emit("presenceLeave",e)}}}),t.on?.("presence:update",t=>{if(t?.roomId===this.name||!t?.roomId){const e=t?.actorId||t?.actorTokenId,s=t?.data||t?.presence||{};if(e){const t=this._agents.get(e),o={actorId:e,name:s.name||t?.name||e,role:s.role||t?.role||"agent",capabilities:s.capabilities||t?.capabilities||[],metadata:s.metadata||t?.metadata,connectedAt:t?.connectedAt||Date.now()};this._agents.set(e,o),this.emit("presenceUpdate",e,s)}}})}_wireTopicListeners(){const t=[s,o,n,i,r,a,c];for(const e of t)this._roomContext.subscribe(e);const e=[{topic:s,event:"task"},{topic:o,event:"result"},{topic:n,event:"stateChange"},{topic:i,event:"event"},{topic:r,event:"inbox"}];for(const{topic:t,event:s}of e)this._roomContext.on(t,e=>{this._log(`received ${t} in room ${this.name}`),this.emit(s,e)});this._roomContext.on(c,t=>{this._log(`received ${c} in room ${this.name}`),"approval_response"===t?.type?this.emit("approvalResponse",t):this.emit("approvalRequest",t)}),this._roomContext.on(a,t=>{this._log(`received ${a} in room ${this.name}`),"tool_response"===t?.type?this.emit("toolResponse",t):this.emit("toolRequest",t)})}}function h(){return"undefined"!=typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():"xxxx-xxxx-xxxx-xxxx".replace(/x/g,()=>Math.floor(16*Math.random()).toString(16))}function d(){return Date.now()}class p extends e{constructor(t,e={}){var s;super(),this._client=null,this._appContext=null,this._rooms=new Map,this._connected=!1,this._token=t,this._options={appName:e.appName??"agents",agentId:e.agentId??h(),debug:e.debug??!1,rooms:e.rooms??["default-workflow"],lobby:e.lobby,presence:e.presence,clientOptions:e.clientOptions},this._log=(s="NoLagAgents",this._options.debug?(...t)=>{console.log(`[${s}]`,...t)}:(...t)=>{})}get agentId(){return this._options.agentId}get connected(){return this._connected}get rooms(){return this._rooms}async connect(){this._log("connecting..."),this._client=t(this._token,{...this._options.clientOptions}),this._appContext=this._client.setApp(this._options.appName),this._client.on("connected",()=>{this._connected=!0,this._log("connected"),this.emit("connected")}),this._client.on("disconnected",t=>{this._connected=!1,this._log("disconnected:",t),this.emit("disconnected",t)}),this._client.on("reconnected",()=>{this._connected=!0,this._log("reconnected"),this.emit("reconnected")}),this._client.on("error",t=>{this._log("error:",t.message),this.emit("error",t)}),await this._client.connect();for(const t of this._options.rooms)this.room(t);this._options.lobby&&await this.subscribeLobby(this._options.lobby)}async subscribeLobby(t){if(!this._appContext)throw new Error("Not connected. Call connect() before subscribing to lobbies.");this._log(`subscribing to lobby: ${t}`);const e=this._appContext.setLobby(t);this._client.on("lobbyPresence:join",t=>{const e=t?.actorId,s=t?.data||{};if(e){this._log(`lobby presence:join — ${s.name||e}`);for(const t of this._rooms.values()){const o=t._agents;o.has(e)||o.set(e,{actorId:e,name:s.name||e,role:s.role||"agent",capabilities:s.capabilities||[],metadata:s.metadata,connectedAt:Date.now()}),t._emitPresence("presenceJoin",e,s)}}}),this._client.on("lobbyPresence:leave",t=>{const e=t?.actorId;if(e){this._log(`lobby presence:leave — ${e}`);for(const t of this._rooms.values()){t._agents.delete(e),t._emitPresence("presenceLeave",e)}}}),this._client.on("lobbyPresence:update",t=>{const e=t?.actorId,s=t?.data||{};if(e)for(const t of this._rooms.values()){const o=t._agents.get(e);o&&(s.name&&(o.name=s.name),s.role&&(o.role=s.role),s.capabilities&&(o.capabilities=s.capabilities),s.metadata&&(o.metadata=s.metadata)),t._emitPresence("presenceUpdate",e,s)}});try{const t=await e.subscribe();return this._log("lobby subscribed, initial state:",Object.keys(t||{})),t||{}}catch(t){return this._log("lobby subscription failed:",t),{}}}disconnect(){this._log("disconnecting..."),this._client?.disconnect(),this._rooms.clear(),this._client=null,this._appContext=null,this._connected=!1}room(t){let e=this._rooms.get(t);if(e)return e;if(!this._appContext)throw new Error("Not connected. Call connect() before accessing rooms.");this._log(`joining room: ${t}`);const s=this._appContext.setRoom(t);return e=new l(t,s,this._client,this._log,this._options.agentId,this._options.presence),this._rooms.set(t,e),e}}class _{constructor(){this._pending=new Map}register(t,e){return new Promise((s,o)=>{let n=null;e&&e>0&&(n=setTimeout(()=>{this._pending.delete(t),o(new Error(`Correlation ${t} timed out after ${e}ms`))},e)),this._pending.set(t,{resolve:s,reject:o,timer:n})})}resolve(t,e){const s=this._pending.get(t);return!!s&&(s.timer&&clearTimeout(s.timer),this._pending.delete(t),s.resolve(e),!0)}reject(t,e){const s=this._pending.get(t);return!!s&&(s.timer&&clearTimeout(s.timer),this._pending.delete(t),s.reject(e),!0)}has(t){return this._pending.has(t)}clear(){for(const[t,e]of this._pending)e.timer&&clearTimeout(e.timer),e.reject(new Error(`Correlation ${t} cancelled`));this._pending.clear()}get size(){return this._pending.size}}function m(t,e,s){return{type:"task",taskId:h(),correlationId:h(),replyTo:s?.replyTo,capability:t,payload:e,tags:s?.tags,priority:s?.priority??"medium",metadata:s?.metadata,createdAt:d(),createdBy:s?.createdBy,timeout:s?.timeout}}function u(t,e,s,o,n,i){return{type:"result",correlationId:e,taskId:t,status:s,payload:o,error:n,completedAt:d(),completedBy:i}}function g(t,e,s,o){return{type:"state",key:t,value:e,version:s,updatedBy:o,updatedAt:d()}}function b(t,e,s,o="info"){return{type:"event",eventId:h(),severity:o,category:t,emittedBy:e,payload:s,timestamp:d()}}function y(t,e,s,o){return{type:"approval_request",requestId:h(),correlationId:h(),action:t,context:e,urgency:o?.urgency??"medium",requestedBy:s,requestedAt:d(),expiresAt:o?.expiresAt}}function I(t,e,s,o,n){return{type:"approval_response",requestId:t,correlationId:e,decision:s,respondedBy:o,reason:n,respondedAt:d()}}function f(t,e,s,o){return{type:"tool_request",requestId:h(),correlationId:h(),replyTo:o?.replyTo,toolName:t,arguments:e,requestedBy:s,requestedAt:d()}}function v(t,e,s,o,n,i){return{type:"tool_response",requestId:t,correlationId:e,status:s,result:o,error:n,respondedBy:i,respondedAt:d()}}class x{constructor(t){this._correlations=new _,this._room=t,this._room.on("result",t=>{this._correlations.resolve(t.correlationId,t)})}async dispatch(t,e,s){if(!s?.allowNoWorkers){if(0===this._room.findAgents(t).length)throw new Error(`No agent with capability "${t}" is connected. Available capabilities: [${this._room.getAvailableCapabilities().join(", ")}]. Connected agents: ${this._room.getConnectedAgents().length}. Use { allowNoWorkers: true } to dispatch anyway.`)}const o=m(t,e,{...s,createdBy:this._room.agentId});if(this._room.publishTask(o),s?.waitForResult)return this._correlations.register(o.correlationId,s.timeout)}onTask(t,e){this._room.on("task",s=>{if("*"!==t&&!t.includes(s.capability))return;e(s,(t,e,o)=>{const n=u(s.taskId,s.correlationId,t,e,o,this._room.agentId);this._room.publishResult(n)})})}getCapableAgents(t){return this._room.findAgents(t)}dispose(){this._correlations.clear()}}class A{constructor(t,e){this._room=t,this._agentId=e}send(t,e){const s={messageId:h(),from:this._agentId,to:t,payload:e,createdAt:d()};this._room.publishInbox(s)}onMessage(t){this._room.on("inbox",e=>{const s=e;s.to===this._agentId&&t(s)})}}class w{constructor(t,e){this._state=new Map,this._room=t,this._agentId=e,this._room.on("stateChange",t=>{this._state.set(t.key,t)})}set(t,e){const s=this._state.get(t),o=g(t,e,s?s.version+1:1,this._agentId);this._state.set(t,o),this._room.publishState(o)}get(t){return this._state.get(t)?.value}getEnvelope(t){return this._state.get(t)}getAll(){return this._state}onChange(t,e){this._room.on("stateChange",s=>{s.key===t&&e(s)})}}class C{constructor(t,e){this._room=t,this._emittedBy=e}emit(t,e,s="info"){const o=b(t,this._emittedBy,e,s);this._room.publishEvent(o)}on(t,e){this._room.on("event",s=>{e?.category&&s.category!==e.category||e?.severity&&s.severity!==e.severity||t(s)})}}class T{constructor(t,e){this._correlations=new _,this._room=t,this._agentId=e,this._room.on("approvalResponse",t=>{this._correlations.resolve(t.correlationId,t)})}async request(t,e,s){const o=y(t,e,this._agentId,{urgency:s?.urgency,expiresAt:s?.expiresAt});return this._room.publishApproval(o),this._correlations.register(o.correlationId,s?.timeout)}onRequest(t){this._room.on("approvalRequest",e=>{t(e,(t,s)=>{const o=I(e.requestId,e.correlationId,t,this._agentId,s);this._room.publishApproval(o)})})}dispose(){this._correlations.clear()}}class ${constructor(t,e){this._correlations=new _,this._handlers=new Map,this._room=t,this._agentId=e,this._room.on("toolResponse",t=>{this._correlations.resolve(t.correlationId,t)}),this._room.on("toolRequest",async t=>{const e=this._handlers.get(t.toolName);if(e)try{const s=await e(t.arguments),o=v(t.requestId,t.correlationId,"success",s,void 0,this._agentId);this._room.publishTools(o)}catch(e){const s=v(t.requestId,t.correlationId,"error",null,{code:"TOOL_ERROR",message:e instanceof Error?e.message:String(e)},this._agentId);this._room.publishTools(s)}})}register(t,e){this._handlers.set(t,e)}async invoke(t,e,s){const o=f(t,e,this._agentId);return this._room.publishTools(o),this._correlations.register(o.correlationId,s?.timeout)}dispose(){this._correlations.clear(),this._handlers.clear()}}const k={CAPABILITY:"capability",PRIORITY:"priority",ROLE:"role",SEVERITY:"severity",URGENCY:"urgency",TENANT:"tenant"},R={REQUIRES_HUMAN:"requires_human",REQUIRES_AUDIT:"requires_audit"};function q(t,e){return`${t}:${e}`}export{l as AgentRoom,T as Approve,w as Blackboard,_ as CorrelationManager,e as EventEmitter,x as Handoff,A as Inbox,p as NoLagAgents,C as Observe,R as TAG_FLAGS,k as TAG_PREFIX,$ as Tools,y as createApprovalRequest,I as createApprovalResponse,b as createEventEnvelope,u as createResultEnvelope,g as createStateEnvelope,m as createTaskEnvelope,f as createToolRequest,v as createToolResponse,q as tag};
1
+ import{NoLag as e}from"@nolag/js-sdk";class t{constructor(){this._handlers=new Map}on(e,t){return this._handlers.has(e)||this._handlers.set(e,new Set),this._handlers.get(e).add(t),this}off(e,t){return t?this._handlers.get(e)?.delete(t):this._handlers.delete(e),this}removeAllListeners(){return this._handlers.clear(),this}emit(e,...t){const o=this._handlers.get(e);if(o)for(const s of o)try{s(...t)}catch(t){console.error(`Error in ${String(e)} handler:`,t)}}listenerCount(e){return this._handlers.get(e)?.size??0}}const o="tasks",s="results",n="state",i="events",r="inbox",a="tools",c="approval";class l extends t{constructor(e,t,o,s,n,i){super(),this._agents=new Map,this.name=e,this.agentId=n,this._roomContext=t,this._client=o,this._log=s,this._presence=i,this._wireTopicListeners(),this._wirePresenceListeners(),i&&(this._log(`setting presence in room ${e}:`,i),this._roomContext.setPresence(i)),this._fetchInitialPresence()}getConnectedAgents(){return Array.from(this._agents.values())}findAgents(e){return Array.from(this._agents.values()).filter(t=>t.capabilities.includes(e))}hasCapability(e){return this.findAgents(e).length>0}getAvailableCapabilities(){const e=new Set;for(const t of this._agents.values())for(const o of t.capabilities)e.add(o);return Array.from(e)}setPresence(e){this._presence=e,this._log(`updating presence in room ${this.name}`),this._roomContext.setPresence(e)}async fetchPresence(){try{return(await this._roomContext.fetchPresence()||[]).map(e=>this._toConnectedAgent(e))}catch{return[]}}_emitPresence(e,t,o){"presenceLeave"===e?this.emit("presenceLeave",t):this.emit(e,t,o||{})}get context(){return this._roomContext}publishTask(e){e.createdBy||(e.createdBy=this.agentId),this._publish(o,e)}publishResult(e){e.completedBy||(e.completedBy=this.agentId),e.replyTo?this._publish(s,e,{filter:e.replyTo}):this._publish(s,e)}publishState(e){e.updatedBy||(e.updatedBy=this.agentId),this._publish(n,e,{retain:!0})}publishEvent(e){e.emittedBy||(e.emittedBy=this.agentId),this._publish(i,e)}publishInbox(e){this._publish(r,e)}publishTools(e){"tool_response"===e?.type&&"string"==typeof e.replyTo&&e.replyTo?this._publish(s,e,{filter:e.replyTo}):this._publish(a,e)}publishApproval(e){this._publish(c,e,{retain:!0})}_publish(e,t,o){this._log(`publish to ${e} in room ${this.name}`),o?this._roomContext.emit(e,t,o):this._roomContext.emit(e,t)}_toConnectedAgent(e){const t=e.presence||e.data||{};return{actorId:e.actorTokenId||e.actorId||"",name:t.name||e.actorTokenId||"",role:t.role||"agent",capabilities:t.capabilities||[],metadata:t.metadata,connectedAt:e.joinedAt||Date.now()}}async _fetchInitialPresence(){try{const e=await this._roomContext.fetchPresence();if(Array.isArray(e)){for(const t of e){const e=this._toConnectedAgent(t);e.actorId&&this._agents.set(e.actorId,e)}this._log(`discovered ${this._agents.size} agents in room ${this.name}`)}}catch{}}_wirePresenceListeners(){if(!this._client)return;const e=this._client;e.on?.("presence:join",e=>{if(e?.roomId===this.name||!e?.roomId){const t=e?.actorId||e?.actorTokenId,o=e?.data||e?.presence||{};if(t){const e={actorId:t,name:o.name||t,role:o.role||"agent",capabilities:o.capabilities||[],metadata:o.metadata,connectedAt:Date.now()};this._agents.set(t,e),this._log(`agent joined room ${this.name}:`,e.name,e.capabilities),this.emit("presenceJoin",t,o)}}}),e.on?.("presence:leave",e=>{if(e?.roomId===this.name||!e?.roomId){const t=e?.actorId||e?.actorTokenId;if(t){const e=this._agents.get(t);this._agents.delete(t),this._log(`agent left room ${this.name}:`,e?.name||t),this.emit("presenceLeave",t)}}}),e.on?.("presence:update",e=>{if(e?.roomId===this.name||!e?.roomId){const t=e?.actorId||e?.actorTokenId,o=e?.data||e?.presence||{};if(t){const e=this._agents.get(t),s={actorId:t,name:o.name||e?.name||t,role:o.role||e?.role||"agent",capabilities:o.capabilities||e?.capabilities||[],metadata:o.metadata||e?.metadata,connectedAt:e?.connectedAt||Date.now()};this._agents.set(t,s),this.emit("presenceUpdate",t,o)}}})}_wireTopicListeners(){this._roomContext.subscribe(o),this._roomContext.subscribe(a),this._roomContext.subscribe(s,{loadBalance:!1,filters:[this.agentId]});const e=[n,i,r,c];for(const t of e)this._roomContext.subscribe(t,{loadBalance:!1});const t=[{topic:o,event:"task"},{topic:n,event:"stateChange"},{topic:i,event:"event"},{topic:r,event:"inbox"}];for(const{topic:e,event:o}of t)this._roomContext.on(e,t=>{this._log(`received ${e} in room ${this.name}`),this.emit(o,t)});this._roomContext.on(s,e=>{this._log(`received ${s} in room ${this.name}`),"tool_response"===e?.type?this.emit("toolResponse",e):this.emit("result",e)}),this._roomContext.on(c,e=>{this._log(`received ${c} in room ${this.name}`),"approval_response"===e?.type?this.emit("approvalResponse",e):this.emit("approvalRequest",e)}),this._roomContext.on(a,e=>{this._log(`received ${a} in room ${this.name}`),"tool_response"===e?.type?this.emit("toolResponse",e):this.emit("toolRequest",e)})}}function h(){return"undefined"!=typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():"xxxx-xxxx-xxxx-xxxx".replace(/x/g,()=>Math.floor(16*Math.random()).toString(16))}function d(){return Date.now()}class p extends t{constructor(e,t={}){var o;super(),this._client=null,this._appContext=null,this._rooms=new Map,this._connected=!1,this._token=e,this._options={appName:t.appName??"agents",agentId:t.agentId??h(),debug:t.debug??!1,rooms:t.rooms??["default-workflow"],lobby:t.lobby,presence:t.presence,clientOptions:t.clientOptions},this._log=(o="NoLagAgents",this._options.debug?(...e)=>{console.log(`[${o}]`,...e)}:(...e)=>{})}get agentId(){return this._options.agentId}get connected(){return this._connected}get rooms(){return this._rooms}async connect(){this._log("connecting..."),this._client=e(this._token,{...this._options.clientOptions}),this._appContext=this._client.setApp(this._options.appName),this._client.on("connected",()=>{this._connected=!0,this._log("connected"),this.emit("connected")}),this._client.on("disconnected",e=>{this._connected=!1,this._log("disconnected:",e),this.emit("disconnected",e)}),this._client.on("reconnected",()=>{this._connected=!0,this._log("reconnected"),this.emit("reconnected")}),this._client.on("error",e=>{this._log("error:",e.message),this.emit("error",e)}),await this._client.connect();for(const e of this._options.rooms)this.room(e);this._options.lobby&&await this.subscribeLobby(this._options.lobby)}async subscribeLobby(e){if(!this._appContext)throw new Error("Not connected. Call connect() before subscribing to lobbies.");this._log(`subscribing to lobby: ${e}`);const t=this._appContext.setLobby(e);this._client.on("lobbyPresence:join",e=>{const t=e?.actorId,o=e?.data||{};if(t){this._log(`lobby presence:join — ${o.name||t}`);for(const e of this._rooms.values()){const s=e._agents;s.has(t)||s.set(t,{actorId:t,name:o.name||t,role:o.role||"agent",capabilities:o.capabilities||[],metadata:o.metadata,connectedAt:Date.now()}),e._emitPresence("presenceJoin",t,o)}}}),this._client.on("lobbyPresence:leave",e=>{const t=e?.actorId;if(t){this._log(`lobby presence:leave — ${t}`);for(const e of this._rooms.values()){e._agents.delete(t),e._emitPresence("presenceLeave",t)}}}),this._client.on("lobbyPresence:update",e=>{const t=e?.actorId,o=e?.data||{};if(t)for(const e of this._rooms.values()){const s=e._agents.get(t);s&&(o.name&&(s.name=o.name),o.role&&(s.role=o.role),o.capabilities&&(s.capabilities=o.capabilities),o.metadata&&(s.metadata=o.metadata)),e._emitPresence("presenceUpdate",t,o)}});try{const e=await t.subscribe();return this._log("lobby subscribed, initial state:",Object.keys(e||{})),e||{}}catch(e){return this._log("lobby subscription failed:",e),{}}}disconnect(){this._log("disconnecting..."),this._client?.disconnect(),this._rooms.clear(),this._client=null,this._appContext=null,this._connected=!1}room(e){let t=this._rooms.get(e);if(t)return t;if(!this._appContext)throw new Error("Not connected. Call connect() before accessing rooms.");this._log(`joining room: ${e}`);const o=this._appContext.setRoom(e);return t=new l(e,o,this._client,this._log,this._options.agentId,this._options.presence),this._rooms.set(e,t),t}}class _{constructor(){this._pending=new Map}register(e,t){return new Promise((o,s)=>{let n=null;t&&t>0&&(n=setTimeout(()=>{this._pending.delete(e),s(new Error(`Correlation ${e} timed out after ${t}ms`))},t)),this._pending.set(e,{resolve:o,reject:s,timer:n})})}resolve(e,t){const o=this._pending.get(e);return!!o&&(o.timer&&clearTimeout(o.timer),this._pending.delete(e),o.resolve(t),!0)}reject(e,t){const o=this._pending.get(e);return!!o&&(o.timer&&clearTimeout(o.timer),this._pending.delete(e),o.reject(t),!0)}has(e){return this._pending.has(e)}clear(){for(const[e,t]of this._pending)t.timer&&clearTimeout(t.timer),t.reject(new Error(`Correlation ${e} cancelled`));this._pending.clear()}get size(){return this._pending.size}}function m(e,t,o){return{type:"task",taskId:h(),correlationId:h(),replyTo:o?.replyTo,capability:e,payload:t,tags:o?.tags,priority:o?.priority??"medium",metadata:o?.metadata,createdAt:d(),createdBy:o?.createdBy,timeout:o?.timeout}}function u(e,t,o,s,n,i,r){return{type:"result",correlationId:t,taskId:e,status:o,payload:s,error:n,completedAt:d(),completedBy:i,replyTo:r}}function g(e,t,o,s){return{type:"state",key:e,value:t,version:o,updatedBy:s,updatedAt:d()}}function y(e,t,o,s="info"){return{type:"event",eventId:h(),severity:s,category:e,emittedBy:t,payload:o,timestamp:d()}}function b(e,t,o,s){return{type:"approval_request",requestId:h(),correlationId:h(),action:e,context:t,urgency:s?.urgency??"medium",requestedBy:o,requestedAt:d(),expiresAt:s?.expiresAt}}function f(e,t,o,s,n){return{type:"approval_response",requestId:e,correlationId:t,decision:o,respondedBy:s,reason:n,respondedAt:d()}}function I(e,t,o,s){return{type:"tool_request",requestId:h(),correlationId:h(),replyTo:s?.replyTo,toolName:e,arguments:t,requestedBy:o,requestedAt:d()}}function v(e,t,o,s,n,i,r){return{type:"tool_response",requestId:e,correlationId:t,status:o,result:s,error:n,respondedBy:i,respondedAt:d(),replyTo:r}}class x{constructor(e){this._correlations=new _,this._room=e,this._room.on("result",e=>{this._correlations.resolve(e.correlationId,e)})}async dispatch(e,t,o){if(!o?.allowNoWorkers){if(0===this._room.findAgents(e).length)throw new Error(`No agent with capability "${e}" is connected. Available capabilities: [${this._room.getAvailableCapabilities().join(", ")}]. Connected agents: ${this._room.getConnectedAgents().length}. Use { allowNoWorkers: true } to dispatch anyway.`)}const s=m(e,t,{...o,createdBy:o?.createdBy??this._room.agentId,replyTo:o?.replyTo??this._room.agentId});if(this._room.publishTask(s),o?.waitForResult)return this._correlations.register(s.correlationId,o.timeout)}onTask(e,t){const o="function"==typeof e?"*":e,s="function"==typeof e?e:t;this._room.on("task",e=>{if("*"!==o&&!o.includes(e.capability))return;s(e,(t,o,s)=>{const n=u(e.taskId,e.correlationId,t,o,s,this._room.agentId,e.replyTo??e.createdBy);this._room.publishResult(n)})})}getCapableAgents(e){return this._room.findAgents(e)}dispose(){this._correlations.clear()}}class A{constructor(e,t){this._room=e,this._agentId=t}send(e,t){const o={messageId:h(),from:this._agentId,to:e,payload:t,createdAt:d()};this._room.publishInbox(o)}onMessage(e){this._room.on("inbox",t=>{const o=t;o.to===this._agentId&&e(o)})}}class C{constructor(e,t){this._state=new Map,this._room=e,this._agentId=t,this._room.on("stateChange",e=>{this._state.set(e.key,e)})}set(e,t){const o=this._state.get(e),s=g(e,t,o?o.version+1:1,this._agentId);this._state.set(e,s),this._room.publishState(s)}get(e){return this._state.get(e)?.value}getEnvelope(e){return this._state.get(e)}getAll(){return this._state}onChange(e,t){this._room.on("stateChange",o=>{o.key===e&&t(o)})}}class w{constructor(e,t){this._room=e,this._emittedBy=t}emit(e,t,o="info"){const s=y(e,this._emittedBy,t,o);this._room.publishEvent(s)}on(e,t){this._room.on("event",o=>{t?.category&&o.category!==t.category||t?.severity&&o.severity!==t.severity||e(o)})}}class T{constructor(e,t){this._correlations=new _,this._room=e,this._agentId=t,this._room.on("approvalResponse",e=>{this._correlations.resolve(e.correlationId,e)})}async request(e,t,o){const s=b(e,t,this._agentId,{urgency:o?.urgency,expiresAt:o?.expiresAt});return this._room.publishApproval(s),this._correlations.register(s.correlationId,o?.timeout)}onRequest(e){this._room.on("approvalRequest",t=>{e(t,(e,o)=>{const s=f(t.requestId,t.correlationId,e,this._agentId,o);this._room.publishApproval(s)})})}dispose(){this._correlations.clear()}}class ${constructor(e,t){this._correlations=new _,this._handlers=new Map,this._room=e,this._agentId=t,this._room.on("toolResponse",e=>{this._correlations.resolve(e.correlationId,e)}),this._room.on("toolRequest",async e=>{const t=this._handlers.get(e.toolName);if(!t)return;const o=e.replyTo??e.requestedBy;try{const s=await t(e.arguments),n=v(e.requestId,e.correlationId,"success",s,void 0,this._agentId,o);this._room.publishTools(n)}catch(t){const s=v(e.requestId,e.correlationId,"error",null,{code:"TOOL_ERROR",message:t instanceof Error?t.message:String(t)},this._agentId,o);this._room.publishTools(s)}})}register(e,t){this._handlers.set(e,t)}async invoke(e,t,o){const s=I(e,t,this._agentId,{replyTo:this._room.agentId});return this._room.publishTools(s),this._correlations.register(s.correlationId,o?.timeout)}dispose(){this._correlations.clear(),this._handlers.clear()}}const k={CAPABILITY:"capability",PRIORITY:"priority",ROLE:"role",SEVERITY:"severity",URGENCY:"urgency",TENANT:"tenant"},B={REQUIRES_HUMAN:"requires_human",REQUIRES_AUDIT:"requires_audit"};function R(e,t){return`${e}:${t}`}export{l as AgentRoom,T as Approve,C as Blackboard,_ as CorrelationManager,t as EventEmitter,x as Handoff,A as Inbox,p as NoLagAgents,w as Observe,B as TAG_FLAGS,k as TAG_PREFIX,$ as Tools,b as createApprovalRequest,f as createApprovalResponse,y as createEventEnvelope,u as createResultEnvelope,g as createStateEnvelope,m as createTaskEnvelope,I as createToolRequest,v as createToolResponse,R as tag};
2
2
  //# sourceMappingURL=browser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sources":["../src/EventEmitter.ts","../src/constants.ts","../src/AgentRoom.ts","../src/utils.ts","../src/NoLagAgents.ts","../src/correlation.ts","../src/envelope.ts","../src/patterns/handoff.ts","../src/patterns/inbox.ts","../src/patterns/blackboard.ts","../src/patterns/observe.ts","../src/patterns/approve.ts","../src/patterns/tools.ts","../src/tags.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["EventEmitter","constructor","this","_handlers","Map","on","event","handler","has","set","Set","get","add","off","delete","removeAllListeners","clear","emit","args","handlers","e","console","error","String","listenerCount","size","TOPIC_TASKS","TOPIC_RESULTS","TOPIC_STATE","TOPIC_EVENTS","TOPIC_INBOX","TOPIC_TOOLS","TOPIC_APPROVAL","AgentRoom","name","roomContext","client","log","agentId","presence","super","_agents","_roomContext","_client","_log","_presence","_wireTopicListeners","_wirePresenceListeners","setPresence","_fetchInitialPresence","getConnectedAgents","Array","from","values","findAgents","capability","filter","a","capabilities","includes","hasCapability","length","getAvailableCapabilities","caps","agent","cap","data","fetchPresence","map","_toConnectedAgent","_emitPresence","actorId","context","publishTask","envelope","createdBy","_publish","publishResult","completedBy","publishState","updatedBy","retain","publishEvent","emittedBy","publishInbox","publishTools","publishApproval","topic","options","actor","actorTokenId","role","metadata","connectedAt","joinedAt","Date","now","actors","isArray","connected","evt","roomId","id","existing","allTopics","subscribe","simpleMap","type","generateId","crypto","randomUUID","replace","Math","floor","random","toString","createTimestamp","NoLagAgents","token","prefix","_appContext","_rooms","_connected","_token","_options","appName","debug","rooms","lobby","clientOptions","_args","connect","NoLag","setApp","reason","err","message","roomName","room","subscribeLobby","lobbySlug","Error","setLobby","agents","initialState","Object","keys","disconnect","agentRoom","setRoom","CorrelationManager","_pending","register","correlationId","timeoutMs","Promise","resolve","reject","timer","setTimeout","value","entry","clearTimeout","createTaskEnvelope","payload","taskId","replyTo","tags","priority","createdAt","timeout","createResultEnvelope","status","completedAt","createStateEnvelope","key","version","updatedAt","createEventEnvelope","category","severity","eventId","timestamp","createApprovalRequest","action","requestedBy","requestId","urgency","requestedAt","expiresAt","createApprovalResponse","decision","respondedBy","respondedAt","createToolRequest","toolName","arguments","createToolResponse","result","Handoff","_correlations","_room","dispatch","allowNoWorkers","join","waitForResult","onTask","task","getCapableAgents","dispose","Inbox","_agentId","send","to","messageId","onMessage","msg","Blackboard","_state","getEnvelope","getAll","onChange","Observe","_emittedBy","Approve","request","onRequest","response","Tools","async","undefined","code","invoke","TAG_PREFIX","CAPABILITY","PRIORITY","ROLE","SEVERITY","URGENCY","TENANT","TAG_FLAGS","REQUIRES_HUMAN","REQUIRES_AUDIT","tag"],"mappings":"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"}
1
+ {"version":3,"file":"browser.js","sources":["../src/EventEmitter.ts","../src/constants.ts","../src/AgentRoom.ts","../src/utils.ts","../src/NoLagAgents.ts","../src/correlation.ts","../src/envelope.ts","../src/patterns/handoff.ts","../src/patterns/inbox.ts","../src/patterns/blackboard.ts","../src/patterns/observe.ts","../src/patterns/approve.ts","../src/patterns/tools.ts","../src/tags.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["EventEmitter","constructor","this","_handlers","Map","on","event","handler","has","set","Set","get","add","off","delete","removeAllListeners","clear","emit","args","handlers","e","console","error","String","listenerCount","size","TOPIC_TASKS","TOPIC_RESULTS","TOPIC_STATE","TOPIC_EVENTS","TOPIC_INBOX","TOPIC_TOOLS","TOPIC_APPROVAL","AgentRoom","name","roomContext","client","log","agentId","presence","super","_agents","_roomContext","_client","_log","_presence","_wireTopicListeners","_wirePresenceListeners","setPresence","_fetchInitialPresence","getConnectedAgents","Array","from","values","findAgents","capability","filter","a","capabilities","includes","hasCapability","length","getAvailableCapabilities","caps","agent","cap","data","fetchPresence","map","_toConnectedAgent","_emitPresence","actorId","context","publishTask","envelope","createdBy","_publish","publishResult","completedBy","replyTo","publishState","updatedBy","retain","publishEvent","emittedBy","publishInbox","publishTools","type","publishApproval","topic","options","actor","actorTokenId","role","metadata","connectedAt","joinedAt","Date","now","actors","isArray","connected","evt","roomId","id","existing","subscribe","loadBalance","filters","broadcastTopics","simpleMap","generateId","crypto","randomUUID","replace","Math","floor","random","toString","createTimestamp","NoLagAgents","token","prefix","_appContext","_rooms","_connected","_token","_options","appName","debug","rooms","lobby","clientOptions","_args","connect","NoLag","setApp","reason","err","message","roomName","room","subscribeLobby","lobbySlug","Error","setLobby","agents","initialState","Object","keys","disconnect","agentRoom","setRoom","CorrelationManager","_pending","register","correlationId","timeoutMs","Promise","resolve","reject","timer","setTimeout","value","entry","clearTimeout","createTaskEnvelope","payload","taskId","tags","priority","createdAt","timeout","createResultEnvelope","status","completedAt","createStateEnvelope","key","version","updatedAt","createEventEnvelope","category","severity","eventId","timestamp","createApprovalRequest","action","requestedBy","requestId","urgency","requestedAt","expiresAt","createApprovalResponse","decision","respondedBy","respondedAt","createToolRequest","toolName","arguments","createToolResponse","result","Handoff","_correlations","_room","dispatch","allowNoWorkers","join","waitForResult","onTask","capabilitiesOrHandler","maybeHandler","task","getCapableAgents","dispose","Inbox","_agentId","send","to","messageId","onMessage","msg","Blackboard","_state","getEnvelope","getAll","onChange","Observe","_emittedBy","Approve","request","onRequest","response","Tools","async","undefined","code","invoke","TAG_PREFIX","CAPABILITY","PRIORITY","ROLE","SEVERITY","URGENCY","TENANT","TAG_FLAGS","REQUIRES_HUMAN","REQUIRES_AUDIT","tag"],"mappings":"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"}
@@ -10,7 +10,7 @@ export declare function createTaskEnvelope(capability: string, payload: Record<s
10
10
  export declare function createResultEnvelope(taskId: string, correlationId: string, status: ResultEnvelope["status"], payload: Record<string, unknown>, error?: {
11
11
  code: string;
12
12
  message: string;
13
- }, completedBy?: string): ResultEnvelope;
13
+ }, completedBy?: string, replyTo?: string): ResultEnvelope;
14
14
  export declare function createStateEnvelope(key: string, value: unknown, version: number, updatedBy: string): StateEnvelope;
15
15
  export declare function createEventEnvelope(category: string, emittedBy: string, payload: Record<string, unknown>, severity?: EventEnvelope["severity"]): EventEnvelope;
16
16
  export declare function createApprovalRequest(action: string, context: unknown, requestedBy: string, options?: {
@@ -24,4 +24,4 @@ export declare function createToolRequest(toolName: string, args: Record<string,
24
24
  export declare function createToolResponse(requestId: string, correlationId: string, status: ToolResponseEnvelope["status"], result: unknown, error?: {
25
25
  code: string;
26
26
  message: string;
27
- }, respondedBy?: string): ToolResponseEnvelope;
27
+ }, respondedBy?: string, replyTo?: string): ToolResponseEnvelope;