@nolag/agents 1.0.0 → 1.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/dist/AgentRoom.d.ts +49 -8
- package/dist/NoLagAgents.d.ts +2 -2
- package/dist/browser.js +1 -1
- package/dist/browser.js.map +1 -1
- package/dist/index.cjs +277 -79
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.mjs +277 -79
- package/dist/index.mjs.map +1 -1
- package/dist/patterns/observe.d.ts +26 -2
- package/dist/react-native.d.ts +13 -0
- package/dist/react-native.js +1752 -0
- package/dist/react-native.js.map +1 -0
- package/dist/types.d.ts +50 -0
- package/dist/utils.d.ts +49 -0
- package/package.json +11 -5
package/dist/AgentRoom.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { RoomContext } from "@nolag/js-sdk";
|
|
2
2
|
import { EventEmitter } from "./EventEmitter";
|
|
3
|
-
import type { AgentRoomEvents, TaskEnvelope, ResultEnvelope, AgentPresenceData } from "./types";
|
|
3
|
+
import type { AgentRoomEvents, TaskEnvelope, ResultEnvelope, AgentPresenceData, FilterValue, AgentFilterOptions, AgentFilterTopic, AgentPublishOptions } from "./types";
|
|
4
4
|
/**
|
|
5
5
|
* ConnectedAgent — represents an agent discovered via presence.
|
|
6
6
|
*/
|
|
@@ -55,8 +55,10 @@ export declare class AgentRoom extends EventEmitter<AgentRoomEvents> {
|
|
|
55
55
|
/** Registry of connected agents discovered via presence */
|
|
56
56
|
private _agents;
|
|
57
57
|
private _topicHandlers;
|
|
58
|
+
/** Filter values applied per topic. `results` is never included. */
|
|
59
|
+
private _filters;
|
|
58
60
|
/** @internal */
|
|
59
|
-
constructor(name: string, roomContext: RoomContext, log: (...args: unknown[]) => void, agentId: string, appName: string, isConnected: () => boolean, presence?: AgentPresenceData);
|
|
61
|
+
constructor(name: string, roomContext: RoomContext, log: (...args: unknown[]) => void, agentId: string, appName: string, isConnected: () => boolean, presence?: AgentPresenceData, filters?: FilterValue[]);
|
|
60
62
|
/** Get all currently connected agents */
|
|
61
63
|
getConnectedAgents(): ConnectedAgent[];
|
|
62
64
|
/** Find agents that have a specific capability */
|
|
@@ -72,24 +74,61 @@ export declare class AgentRoom extends EventEmitter<AgentRoomEvents> {
|
|
|
72
74
|
/** Get the underlying RoomContext for advanced usage */
|
|
73
75
|
get context(): RoomContext;
|
|
74
76
|
/** Publish to the tasks topic */
|
|
75
|
-
publishTask(envelope: TaskEnvelope): void;
|
|
77
|
+
publishTask(envelope: TaskEnvelope, opts?: AgentPublishOptions): void;
|
|
76
78
|
/** Publish to the results topic — directed to the dispatcher via filter when replyTo is set */
|
|
77
79
|
publishResult(envelope: ResultEnvelope): void;
|
|
78
80
|
/** Publish to the state topic (retained) */
|
|
79
|
-
publishState(data: Record<string, unknown
|
|
81
|
+
publishState(data: Record<string, unknown>, opts?: AgentPublishOptions): void;
|
|
80
82
|
/** Publish to the events topic */
|
|
81
|
-
publishEvent(data: Record<string, unknown
|
|
83
|
+
publishEvent(data: Record<string, unknown>, opts?: AgentPublishOptions): void;
|
|
82
84
|
/** Publish to the inbox topic */
|
|
83
|
-
publishInbox(data: Record<string, unknown
|
|
85
|
+
publishInbox(data: Record<string, unknown>, opts?: AgentPublishOptions): void;
|
|
84
86
|
/**
|
|
85
87
|
* Publish a tool message.
|
|
86
88
|
* Requests go to the tools topic (load-balanced one-of-N across server
|
|
87
89
|
* replicas). Responses are directed to the requester on the results topic
|
|
88
90
|
* via filter — never load-balanced, never broadcast.
|
|
89
91
|
*/
|
|
90
|
-
publishTools(data: Record<string, unknown
|
|
92
|
+
publishTools(data: Record<string, unknown>, opts?: AgentPublishOptions): void;
|
|
91
93
|
/** Publish to the approval topic (retained) */
|
|
92
|
-
publishApproval(data: Record<string, unknown
|
|
94
|
+
publishApproval(data: Record<string, unknown>, opts?: AgentPublishOptions): void;
|
|
95
|
+
/** The filter values currently applied to this room, by topic. */
|
|
96
|
+
get filters(): Record<AgentFilterTopic, FilterValue[]>;
|
|
97
|
+
/**
|
|
98
|
+
* Replace this room's filters — only messages published with one of these
|
|
99
|
+
* values are delivered. Applies to every filterable topic unless scoped with
|
|
100
|
+
* `{ topic }`.
|
|
101
|
+
*
|
|
102
|
+
* The usual case is a worker declaring its capabilities on `tasks`, so the
|
|
103
|
+
* broker routes only work it can do instead of every worker receiving every
|
|
104
|
+
* task and discarding the rest. Pair it with
|
|
105
|
+
* `publishTask(envelope, { filter: capability })` on the dispatcher.
|
|
106
|
+
*
|
|
107
|
+
* `results` is never filtered here: it carries directed replies keyed to
|
|
108
|
+
* this agent's id, and repointing it would strand pending results.
|
|
109
|
+
*
|
|
110
|
+
* With load balancing on, keep a worker pool uniform — the broker treats a
|
|
111
|
+
* wildcard and a filtered subscription as separate share groups, so a mixed
|
|
112
|
+
* pool delivers each task twice.
|
|
113
|
+
*
|
|
114
|
+
* Passing an empty array clears filtering and restores the wildcard
|
|
115
|
+
* subscription, which receives everything.
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```ts
|
|
119
|
+
* room.setFilters(['ocr', 'translate'], { topic: 'tasks' });
|
|
120
|
+
* room.setFilters([]); // everything
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
setFilters(values: FilterValue[], opts?: AgentFilterOptions): void;
|
|
124
|
+
/** Add filter values to the existing set. Existing AND groups are kept. */
|
|
125
|
+
addFilters(values: string[], opts?: AgentFilterOptions): void;
|
|
126
|
+
/**
|
|
127
|
+
* Remove filter values from the existing set. Removing the last value
|
|
128
|
+
* restores the wildcard subscription.
|
|
129
|
+
*/
|
|
130
|
+
removeFilters(values: string[], opts?: AgentFilterOptions): void;
|
|
131
|
+
private _targetTopics;
|
|
93
132
|
/** @internal Re-apply local presence after a reconnect (core does not restore it) */
|
|
94
133
|
_updateLocalPresence(): void;
|
|
95
134
|
/** @internal Route a presence:join event in from the parent */
|
|
@@ -106,6 +145,8 @@ export declare class AgentRoom extends EventEmitter<AgentRoomEvents> {
|
|
|
106
145
|
_cleanup(): void;
|
|
107
146
|
private _on;
|
|
108
147
|
private _publish;
|
|
148
|
+
/** @internal Subscribe honouring the topic's filter set. */
|
|
149
|
+
private _subscribeFiltered;
|
|
109
150
|
private _toConnectedAgent;
|
|
110
151
|
private _fetchInitialPresence;
|
|
111
152
|
private _wireTopicListeners;
|
package/dist/NoLagAgents.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { LobbyPresenceState, NoLagSocket } from "@nolag/js-sdk";
|
|
2
2
|
import { EventEmitter } from "./EventEmitter";
|
|
3
3
|
import { AgentRoom } from "./AgentRoom";
|
|
4
|
-
import type { NoLagAgentsOptions, AgentClientEvents } from "./types";
|
|
4
|
+
import type { NoLagAgentsOptions, AgentClientEvents, JoinAgentRoomOptions } from "./types";
|
|
5
5
|
/**
|
|
6
6
|
* NoLagAgents — high-level agent coordination SDK built on @nolag/js-sdk.
|
|
7
7
|
*
|
|
@@ -93,7 +93,7 @@ export declare class NoLagAgents extends EventEmitter<AgentClientEvents> {
|
|
|
93
93
|
* Get or create an AgentRoom wrapper.
|
|
94
94
|
* If the room hasn't been joined yet, it will be joined automatically.
|
|
95
95
|
*/
|
|
96
|
-
room(name: string): AgentRoom;
|
|
96
|
+
room(name: string, opts?: JoinAgentRoomOptions): AgentRoom;
|
|
97
97
|
/**
|
|
98
98
|
* Subscribe to a lobby for cross-room presence observation. Lobby presence
|
|
99
99
|
* events are forwarded into all AgentRooms. Prefer the `lobby` constructor
|
package/dist/browser.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
class e{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 t="tasks",o="results",s="state",n="events",i="inbox",r="tools",a="approval",c=2;class h extends e{constructor(e,t,o,s,n,i,r){super(),this._agents=new Map,this._topicHandlers=[],this.name=e,this.agentId=s,this._roomContext=t,this._log=o,this._appName=n,this._isConnected=i,this._presence=r,this._wireTopicListeners(),r&&(this._presence={protocol:2,...r},this._log(`setting presence in room ${e}:`,this._presence),this._roomContext.setPresence({...this._presence,__scope:n})),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={protocol:2,...e},this._log(`updating presence in room ${this.name}`),this._roomContext.setPresence({...this._presence,__scope:this._appName})}async fetchPresence(){try{return(await this._roomContext.fetchPresence()||[]).map(e=>this._toConnectedAgent(e))}catch{return[]}}get context(){return this._roomContext}publishTask(e){e.createdBy||(e.createdBy=this.agentId),this._publish(t,e)}publishResult(e){e.completedBy||(e.completedBy=this.agentId),e.replyTo?this._publish(o,e,{filter:e.replyTo}):this._publish(o,e)}publishState(e){e.updatedBy||(e.updatedBy=this.agentId),this._publish(s,e,{retain:!0})}publishEvent(e){e.emittedBy||(e.emittedBy=this.agentId),this._publish(n,e)}publishInbox(e){this._publish(i,e)}publishTools(e){"tool_response"===e?.type&&"string"==typeof e.replyTo&&e.replyTo?this._publish(o,e,{filter:e.replyTo}):this._publish(r,e)}publishApproval(e){this._publish(a,e,{retain:!0})}_updateLocalPresence(){this._presence&&this._roomContext.setPresence({...this._presence,__scope:this._appName})}_handlePresenceJoin(e,t){const o=t||{},s={actorId:e,name:o.name||e,role:o.role||"agent",capabilities:o.capabilities||[],metadata:o.metadata,connectedAt:Date.now(),protocol:"number"==typeof o.protocol?o.protocol:1};this._agents.set(e,s),this._log(`agent joined room ${this.name}:`,s.name,s.capabilities),this.emit("presenceJoin",e,o)}_handlePresenceLeave(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)}_handlePresenceUpdate(e,t){const o=t||{},s=this._agents.get(e),n={actorId:e,name:o.name||s?.name||e,role:o.role||s?.role||"agent",capabilities:o.capabilities||s?.capabilities||[],metadata:o.metadata||s?.metadata,connectedAt:s?.connectedAt||Date.now(),protocol:"number"==typeof o.protocol?o.protocol:s?.protocol??1};this._agents.set(e,n),this.emit("presenceUpdate",e,o)}_cleanup(){if(this._log(`room cleanup: ${this.name}`),this._isConnected()){const e=new Set(this._topicHandlers.map(e=>e.topic));for(const t of e)this._roomContext.unsubscribe(t)}for(const{topic:e,handler:t}of this._topicHandlers)this._roomContext.off(e,t);this._topicHandlers=[],this._agents.clear(),this.removeAllListeners()}_on(e,t){this._topicHandlers.push({topic:e,handler:t}),this._roomContext.on(e,t)}_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(),protocol:"number"==typeof t.protocol?t.protocol:1,status:e.status}}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{}}_wireTopicListeners(){this._roomContext.subscribe(t),this._roomContext.subscribe(r),this._roomContext.subscribe(o,{loadBalance:!1,filters:[this.agentId]});const e=[s,n,i,a];for(const t of e)this._roomContext.subscribe(t,{loadBalance:!1});const c=[{topic:t,event:"task"},{topic:s,event:"stateChange"},{topic:n,event:"event"},{topic:i,event:"inbox"}];for(const{topic:e,event:t}of c)this._on(e,o=>{this._log(`received ${e} in room ${this.name}`),this.emit(t,o)});this._on(o,e=>{this._log(`received ${o} in room ${this.name}`),"tool_response"===e?.type?this.emit("toolResponse",e):this.emit("result",e)}),this._on(a,e=>{this._log(`received ${a} in room ${this.name}`),"approval_response"===e?.type?this.emit("approvalResponse",e):this.emit("approvalRequest",e)}),this._on(r,e=>{this._log(`received ${r} in room ${this.name}`),"tool_response"===e?.type?this.emit("toolResponse",e):this.emit("toolRequest",e)})}}function l(){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 _(e,t){return t?(...t)=>{console.log(`[${e}]`,...t)}:(...e)=>{}}function d(){return Date.now()}const p=new WeakMap;class u extends e{constructor(e){if(super(),this._rooms=new Map,this._lobby=null,this._epoch=0,this._detached=!1,this._isReady=!1,this._lobbyRefreshTimer=null,this._onConnectRef=()=>this._onConnect(),this._onDisconnectRef=e=>{this._log("disconnected:",e),this.emit("disconnected",e)},this._onReconnectRef=()=>{this._log("reconnecting..."),this.emit("reconnecting")},this._onErrorRef=e=>{this._log("error:",e?.message??e),this.emit("error",e)},this._onPresenceJoinRef=e=>this._handleRoomPresenceJoin(e),this._onPresenceLeaveRef=e=>this._handleRoomPresenceLeave(e),this._onPresenceUpdateRef=e=>this._handleRoomPresenceUpdate(e),this._onLobbyJoinRef=e=>this._handleLobbyJoin(e),this._onLobbyLeaveRef=e=>this._handleLobbyLeave(e),this._onLobbyUpdateRef=e=>this._handleLobbyUpdate(e),!e?.client)throw new TypeError("NoLagAgents requires an injected NoLag client: new NoLagAgents({ client, ... })");this._client=e.client,this._options={appName:e.appName??"agents",agentId:e.agentId??l(),name:e.name,role:e.role,debug:e.debug??!1,rooms:e.rooms??["default-workflow"],lobby:e.lobby,presence:e.presence??this._presenceFromIdentity(e)},this._log=_("NoLagAgents",this._options.debug),this._readyPromise=new Promise((e,t)=>{this._readyResolve=e,this._readyReject=t}),this._readyPromise.catch(()=>{}),function(e,t,o){let s=p.get(e);s||(s=new Map,p.set(e,s));const n=s.get(t);n&&console.warn(`[${o}] Another wrapper (${n}) is already attached to this client for app "${t}". Use one wrapper per (client, app) — detach the other instance first.`),s.set(t,o)}(this._client,this._options.appName,"NoLagAgents"),this._client.on("connect",this._onConnectRef),this._client.on("disconnect",this._onDisconnectRef),this._client.on("reconnect",this._onReconnectRef),this._client.on("error",this._onErrorRef),this._client.on("presence:join",this._onPresenceJoinRef),this._client.on("presence:leave",this._onPresenceLeaveRef),this._client.on("presence:update",this._onPresenceUpdateRef),this._client.on("lobbyPresence:join",this._onLobbyJoinRef),this._client.on("lobbyPresence:leave",this._onLobbyLeaveRef),this._client.on("lobbyPresence:update",this._onLobbyUpdateRef),queueMicrotask(()=>{0===this._epoch&&!this._detached&&this._client.connected&&this._onConnect()})}get agentId(){return this._options.agentId}get connected(){return!this._detached&&this._client.connected}get client(){return this._client}get rooms(){return this._rooms}ready(){return this._readyPromise}detach(){if(!this._detached){this._log("detaching..."),this._detached=!0,this._epoch++,this._lobbyRefreshTimer&&(clearTimeout(this._lobbyRefreshTimer),this._lobbyRefreshTimer=null),this._client.off("connect",this._onConnectRef),this._client.off("disconnect",this._onDisconnectRef),this._client.off("reconnect",this._onReconnectRef),this._client.off("error",this._onErrorRef),this._client.off("presence:join",this._onPresenceJoinRef),this._client.off("presence:leave",this._onPresenceLeaveRef),this._client.off("presence:update",this._onPresenceUpdateRef),this._client.off("lobbyPresence:join",this._onLobbyJoinRef),this._client.off("lobbyPresence:leave",this._onLobbyLeaveRef),this._client.off("lobbyPresence:update",this._onLobbyUpdateRef);for(const e of[...this._rooms.keys()])this._rooms.get(e)._cleanup(),this._rooms.delete(e);if(this._lobby&&this._client.connected)try{this._lobby.unsubscribe()}catch{}var e,t;this._lobby=null,e=this._client,t=this._options.appName,p.get(e)?.delete(t),this._isReady||this._readyReject(new Error("NoLagAgents detached before ready"))}}_onConnect(){this._epoch++,this._runSetup(this._epoch)}async _runSetup(e){const t=()=>e!==this._epoch||this._detached;if(this._log(this._isReady?"restoring after reconnect...":"setting up..."),this._log("agentId:",this._options.agentId,"→ actorId:",this._client.actorId),this._isReady)for(const e of this._rooms.values())e._updateLocalPresence();else for(const e of this._options.rooms)this._joinRoomInternal(e);if(this._options.lobby){this._lobby||(this._lobby=this._client.setApp(this._options.appName).setLobby(this._options.lobby));try{const e=await this._lobby.subscribe();if(t())return;this._diffHydrateLobby(e),this._log("lobby subscribed:",this._options.lobby)}catch(e){if(t())return;this._log("lobby subscription failed:",e)}}t()||(this._isReady?this.emit("reconnected"):(this._isReady=!0,this._readyResolve(),this.emit("connected")),this._options.lobby&&this._scheduleLobbyRefresh(e))}_scheduleLobbyRefresh(e){this._lobbyRefreshTimer&&clearTimeout(this._lobbyRefreshTimer),this._lobbyRefreshTimer=setTimeout(()=>{this._lobbyRefreshTimer=null,e===this._epoch&&!this._detached&&this._client.connected&&this._lobby&&this._lobby.fetchPresence().then(t=>{e!==this._epoch||this._detached||this._diffHydrateLobby(t)}).catch(()=>{})},2e3)}room(e){this._assertUsable();const t=this._rooms.get(e);return t||this._joinRoomInternal(e)}async subscribeLobby(e){this._assertUsable(),this._log(`subscribing to lobby: ${e}`),this._options.lobby=e,this._lobby||(this._lobby=this._client.setApp(this._options.appName).setLobby(e));try{const e=await this._lobby.subscribe();return this._detached||this._diffHydrateLobby(e),e||{}}catch(e){return this._log("lobby subscription failed:",e),{}}}_assertUsable(){if(this._detached)throw new Error("NoLagAgents has been detached — construct a new instance");if(!this._isReady)throw new Error('NoLagAgents not ready — await ready() or the "connected" event')}_joinRoomInternal(e){this._log(`joining room: ${e}`);const t=this._client.setApp(this._options.appName).setRoom(e),o=new h(e,t,_(`AgentRoom:${e}`,this._options.debug),this._options.agentId,this._options.appName,()=>this._client.connected,this._options.presence);return this._rooms.set(e,o),o}_foreignScope(e){const t=e?.__scope;return"string"==typeof t&&t!==this._options.appName}_handleRoomPresenceJoin(e){if(e.actorTokenId===this._client.actorId)return;const t=e.presence||{};if(this._foreignScope(t))return;const o=e.roomId;for(const s of this._targetRooms(o))s._handlePresenceJoin(e.actorTokenId,t)}_handleRoomPresenceLeave(e){if(e.actorTokenId===this._client.actorId)return;const t=e.roomId;for(const o of this._targetRooms(t))o._handlePresenceLeave(e.actorTokenId)}_handleRoomPresenceUpdate(e){if(e.actorTokenId===this._client.actorId)return;const t=e.presence||{};if(this._foreignScope(t))return;const o=e.roomId;for(const s of this._targetRooms(o))s._handlePresenceUpdate(e.actorTokenId,t)}_targetRooms(e){return e&&this._rooms.has(e)?[this._rooms.get(e)]:e?[]:[...this._rooms.values()]}_handleLobbyJoin(e){const{actorId:t,data:o}=e;if(t===this._client.actorId)return;const s=o||{};if(!this._foreignScope(s)){this._log(`lobby presence:join — ${s.name||t}`);for(const e of this._rooms.values())e._handlePresenceJoin(t,s)}}_handleLobbyLeave(e){const{actorId:t,data:o}=e;if(t===this._client.actorId)return;const s=o||{};if(!this._foreignScope(s)){this._log(`lobby presence:leave — ${t}`);for(const e of this._rooms.values())e._handlePresenceLeave(t)}}_handleLobbyUpdate(e){const{actorId:t,data:o}=e;if(t===this._client.actorId)return;const s=o||{};if(!this._foreignScope(s))for(const e of this._rooms.values())e._handlePresenceUpdate(t,s)}_diffHydrateLobby(e){for(const t of Object.keys(e)){const o=e[t];for(const e of Object.keys(o)){if(e===this._client.actorId)continue;const t=o[e],s=t?.presence??t;if(!this._foreignScope(s))for(const t of this._rooms.values())t._handlePresenceJoin(e,s)}}}_presenceFromIdentity(e){if(e.name||e.role)return{name:e.name??e.agentId??"agent",role:e.role??"agent"}}}class m extends Error{constructor(e,t){super(`${e} cannot succeed: every relevant agent advertises agents-protocol < 2 [${t.map(e=>`${e.name} (protocol ${e.protocol})`).join(", ")}]. Protocol >= 2 responders direct replies to the requester; older ones broadcast and their replies never reach this SDK's filtered subscription. Upgrade the responders to @nolag/agents >= 0.2.0 / nolag-agents >= 0.3.0. NOTE: 0.2.x/0.3.0 responders DO have directed replies but do not yet advertise protocol — if your responders run those versions, pass { allowLegacyResponders: true }.`),this.name="IncompatibleProtocolError"}}class g{constructor(){this._pending=new Map}register(e,t,o){return new Promise((s,n)=>{let i=null;t&&t>0&&(i=setTimeout(()=>{this._pending.delete(e);n(new Error(`${o??`Correlation ${e}`} timed out after ${t}ms`))},t)),this._pending.set(e,{resolve:s,reject:n,timer:i})})}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 b(e,t,o){return{type:"task",protocol:2,taskId:l(),correlationId:l(),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 f(e,t,o,s,n,i,r){return{type:"result",protocol:2,correlationId:t,taskId:e,status:o,payload:s,error:n,completedAt:d(),completedBy:i,replyTo:r}}function y(e,t,o,s){return{type:"state",protocol:2,key:e,value:t,version:o,updatedBy:s,updatedAt:d()}}function I(e,t,o,s="info"){return{type:"event",protocol:2,eventId:l(),severity:s,category:e,emittedBy:t,payload:o,timestamp:d()}}function v(e,t,o,s){return{type:"approval_request",protocol:2,requestId:l(),correlationId:l(),action:e,context:t,urgency:s?.urgency??"medium",requestedBy:o,requestedAt:d(),expiresAt:s?.expiresAt}}function R(e,t,o,s,n){return{type:"approval_response",protocol:2,requestId:e,correlationId:t,decision:o,respondedBy:s,reason:n,respondedAt:d()}}function w(e,t,o,s){return{type:"tool_request",protocol:2,requestId:l(),correlationId:l(),replyTo:s?.replyTo,toolName:e,arguments:t,requestedBy:o,requestedAt:d()}}function T(e,t,o,s,n,i,r){return{type:"tool_response",protocol:2,requestId:e,correlationId:t,status:o,result:s,error:n,respondedBy:i,respondedAt:d(),replyTo:r}}class A{constructor(e){this._correlations=new g,this._warnedMixed=!1,this._room=e,this._room.on("result",e=>{this._correlations.resolve(e.correlationId,e)})}async dispatch(e,t,o){if(!o?.allowNoWorkers){const t=this._room.findAgents(e);if(0===(o?.requireOnline?t.filter(e=>void 0===e.status||"online"===e.status):t).length)throw new Error(`No ${o?.requireOnline?"online ":""}agent with capability "${e}" is available. Available capabilities: [${this._room.getAvailableCapabilities().join(", ")}]. Connected agents: ${this._room.getConnectedAgents().length}. Use { allowNoWorkers: true } to dispatch anyway.`)}const s=b(e,t,{...o,createdBy:o?.createdBy??this._room.agentId,replyTo:o?.replyTo??this._room.agentId});if(this._room.publishTask(s),o?.waitForResult){const t=this._room.findAgents(e);if(!o?.allowLegacyResponders&&t.length>0){const o=t.filter(e=>e.protocol>=2);if(0===o.length)throw new m(`Task '${e}' dispatch with waitForResult`,t.map(e=>({name:e.name,protocol:e.protocol})));o.length<t.length&&!this._warnedMixed&&(this._warnedMixed=!0,console.warn(`[nolag-agents] Capability '${e}' has workers on agents-protocol < 2: `+t.filter(e=>e.protocol<2).map(e=>e.name).join(", ")+". Their results may not be delivered — upgrade them."))}return this._correlations.register(s.correlationId,o.timeout,`Task '${e}' dispatch (${t.length} capable worker${1===t.length?"":"s"} visible). Likely causes: worker crashed mid-task, worker on agents-protocol < 2 (results not directed), or the room is not deliverable`)}}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=f(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 L{constructor(e,t){this._room=e,this._agentId=t}send(e,t){const o={messageId:l(),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 x{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=y(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 ${constructor(e,t){this._room=e,this._emittedBy=t}emit(e,t,o="info"){const s=I(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 P{constructor(e,t){this._correlations=new g,this._room=e,this._agentId=t,this._room.on("approvalResponse",e=>{this._correlations.resolve(e.correlationId,e)})}async request(e,t,o){const s=v(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=R(t.requestId,t.correlationId,e,this._agentId,o);this._room.publishApproval(s)})})}dispose(){this._correlations.clear()}}class C{constructor(e,t){this._correlations=new g,this._handlers=new Map,this._warnedMixed=!1,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),o=e.replyTo??e.requestedBy;if(!t){if(!this._ownsNamespace(e.toolName))return;const t=T(e.requestId,e.correlationId,"error",null,{code:"NO_HANDLER",message:`Agent '${this._agentId}' has no handler for tool '${e.toolName}'`},this._agentId,o);return void this._room.publishTools(t)}try{const s=await t(e.arguments),n=T(e.requestId,e.correlationId,"success",s,void 0,this._agentId,o);this._room.publishTools(n)}catch(t){const s=T(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)}_ownsNamespace(e){if(0===this._handlers.size)return!1;const t=e.includes(".")?e.slice(0,e.indexOf(".")):null;for(const e of this._handlers.keys()){if((e.includes(".")?e.slice(0,e.indexOf(".")):null)===t)return!0}return!1}async invoke(e,t,o){const s=this._room.getConnectedAgents().filter(e=>"tool-server"===e.role);if(!o?.allowLegacyResponders&&s.length>0){const t=s.filter(e=>e.protocol>=2);if(0===t.length)throw new m(`Tool '${e}' invocation`,s.map(e=>({name:e.name,protocol:e.protocol})));t.length<s.length&&!this._warnedMixed&&(this._warnedMixed=!0,console.warn(`[nolag-agents] Room '${this._room.name}' has tool servers on agents-protocol < 2: `+s.filter(e=>e.protocol<2).map(e=>e.name).join(", ")+". Their replies may not be delivered — upgrade them."))}const n=w(e,t,this._agentId,{replyTo:this._room.agentId});this._room.publishTools(n);const i=s.length;return this._correlations.register(n.correlationId,o?.timeout,`Tool '${e}' invocation in room '${this._room.name}' (${i} tool-server${1===i?"":"s"} visible). Likely causes: no agent has this tool registered (pre-0.3.0 responders don't NACK), the responder is offline, or the room is not deliverable (watch the room 'error' events)`)}dispose(){this._correlations.clear(),this._handlers.clear()}}const k={CAPABILITY:"capability",PRIORITY:"priority",ROLE:"role",SEVERITY:"severity",URGENCY:"urgency",TENANT:"tenant"},N={REQUIRES_HUMAN:"requires_human",REQUIRES_AUDIT:"requires_audit"};function E(e,t){return`${e}:${t}`}export{c as AGENTS_PROTOCOL_VERSION,h as AgentRoom,P as Approve,x as Blackboard,g as CorrelationManager,e as EventEmitter,A as Handoff,L as Inbox,m as IncompatibleProtocolError,u as NoLagAgents,$ as Observe,N as TAG_FLAGS,k as TAG_PREFIX,C as Tools,v as createApprovalRequest,R as createApprovalResponse,I as createEventEnvelope,f as createResultEnvelope,y as createStateEnvelope,b as createTaskEnvelope,w as createToolRequest,T as createToolResponse,E as tag};
|
|
1
|
+
class e{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{const o=s(...t);o&&"function"==typeof o.then&&o.then(void 0,t=>{console.error(`Error in async ${String(e)} handler:`,t)})}catch(t){console.error(`Error in ${String(e)} handler:`,t)}}listenerCount(e){return this._handlers.get(e)?.size??0}}function t(){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 o(e,t){return t?(...t)=>{console.log(`[${e}]`,...t)}:(...e)=>{}}function s(){return Date.now()}function i(e){return e?.filter?{filter:e.filter}:e?.filters&&e.filters.length>0?{filters:e.filters}:{}}function n(e,t){const o=new Set,s=[];for(const t of e)"string"==typeof t?o.add(t):s.push(t);for(const e of t)o.add(e);return[...o,...s]}function r(e,t){const o=new Set(t);return e.filter(e=>"string"!=typeof e||!o.has(e))}const a=new WeakMap;const c="tasks",h="results",l="state",_="events",d="inbox",p="tools",u="approval",f=2,m={tasks:c,tools:p,state:l,events:_,inbox:d,approval:u},g=Object.keys(m);class b extends e{constructor(e,t,o,s,i,n,r,a){if(super(),this._agents=new Map,this._topicHandlers=[],this._filters={tasks:[],tools:[],state:[],events:[],inbox:[],approval:[]},this.name=e,this.agentId=s,this._roomContext=t,this._log=o,this._appName=i,this._isConnected=n,this._presence=r,a&&a.length>0)for(const e of g)this._filters[e]=[...a];this._wireTopicListeners(),r&&(this._presence={protocol:2,...r},this._log(`setting presence in room ${e}:`,this._presence),this._roomContext.setPresence({...this._presence,__scope: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={protocol:2,...e},this._log(`updating presence in room ${this.name}`),this._roomContext.setPresence({...this._presence,__scope:this._appName})}async fetchPresence(){try{return(await this._roomContext.fetchPresence()||[]).map(e=>this._toConnectedAgent(e))}catch{return[]}}get context(){return this._roomContext}publishTask(e,t){e.createdBy||(e.createdBy=this.agentId),this._publish(c,e,i(t))}publishResult(e){e.completedBy||(e.completedBy=this.agentId),e.replyTo?this._publish(h,e,{filter:e.replyTo}):this._publish(h,e)}publishState(e,t){e.updatedBy||(e.updatedBy=this.agentId),this._publish(l,e,{retain:!0,...i(t)})}publishEvent(e,t){e.emittedBy||(e.emittedBy=this.agentId),this._publish(_,e,i(t))}publishInbox(e,t){this._publish(d,e,i(t))}publishTools(e,t){"tool_response"===e?.type&&"string"==typeof e.replyTo&&e.replyTo?this._publish(h,e,{filter:e.replyTo}):this._publish(p,e,i(t))}publishApproval(e,t){this._publish(u,e,{retain:!0,...i(t)})}get filters(){return{tasks:[...this._filters.tasks],tools:[...this._filters.tools],state:[...this._filters.state],events:[...this._filters.events],inbox:[...this._filters.inbox],approval:[...this._filters.approval]}}setFilters(e,t){for(const o of this._targetTopics(t))this._filters[o]=[...e],this._roomContext.setFilters(m[o],e)}addFilters(e,t){for(const o of this._targetTopics(t))this.setFilters(n(this._filters[o],e),{topic:o})}removeFilters(e,t){for(const o of this._targetTopics(t))this.setFilters(r(this._filters[o],e),{topic:o})}_targetTopics(e){return e?.topic?[e.topic]:g}_updateLocalPresence(){this._presence&&this._roomContext.setPresence({...this._presence,__scope:this._appName})}_handlePresenceJoin(e,t){const o=t||{},s={actorId:e,name:o.name||e,role:o.role||"agent",capabilities:o.capabilities||[],metadata:o.metadata,connectedAt:Date.now(),protocol:"number"==typeof o.protocol?o.protocol:1};this._agents.set(e,s),this._log(`agent joined room ${this.name}:`,s.name,s.capabilities),this.emit("presenceJoin",e,o)}_handlePresenceLeave(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)}_handlePresenceUpdate(e,t){const o=t||{},s=this._agents.get(e),i={actorId:e,name:o.name||s?.name||e,role:o.role||s?.role||"agent",capabilities:o.capabilities||s?.capabilities||[],metadata:o.metadata||s?.metadata,connectedAt:s?.connectedAt||Date.now(),protocol:"number"==typeof o.protocol?o.protocol:s?.protocol??1};this._agents.set(e,i),this.emit("presenceUpdate",e,o)}_cleanup(){if(this._log(`room cleanup: ${this.name}`),this._isConnected()){const e=new Set(this._topicHandlers.map(e=>e.topic));for(const t of e)this._roomContext.unsubscribe(t)}for(const{topic:e,handler:t}of this._topicHandlers)this._roomContext.off(e,t);this._topicHandlers=[],this._agents.clear(),this.removeAllListeners()}_on(e,t){this._topicHandlers.push({topic:e,handler:t}),this._roomContext.on(e,t)}_publish(e,t,o){this._log(`publish to ${e} in room ${this.name}`),o&&Object.keys(o).length>0?this._roomContext.emit(e,t,o):this._roomContext.emit(e,t)}_subscribeFiltered(e,t){t.length>0?this._roomContext.subscribe(e,{filters:t}):this._roomContext.subscribe(e)}_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(),protocol:"number"==typeof t.protocol?t.protocol:1,status:e.status}}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{}}_wireTopicListeners(){this._subscribeFiltered(c,this._filters.tasks),this._subscribeFiltered(p,this._filters.tools),this._roomContext.subscribe(h,{loadBalance:!1,filters:[this.agentId]});const e=["state","events","inbox","approval"];for(const t of e){const e=this._filters[t];this._roomContext.subscribe(m[t],{loadBalance:!1,...e.length>0?{filters:e}:{}})}const t=[{topic:c,event:"task"},{topic:l,event:"stateChange"},{topic:_,event:"event"},{topic:d,event:"inbox"}];for(const{topic:e,event:o}of t)this._on(e,t=>{this._log(`received ${e} in room ${this.name}`),this.emit(o,t)});this._on(h,e=>{this._log(`received ${h} in room ${this.name}`),"tool_response"===e?.type?this.emit("toolResponse",e):this.emit("result",e)}),this._on(u,e=>{this._log(`received ${u} in room ${this.name}`),"approval_response"===e?.type?this.emit("approvalResponse",e):this.emit("approvalRequest",e)}),this._on(p,e=>{this._log(`received ${p} in room ${this.name}`),"tool_response"===e?.type?this.emit("toolResponse",e):this.emit("toolRequest",e)})}}class y extends e{constructor(e){if(super(),this._rooms=new Map,this._lobby=null,this._epoch=0,this._detached=!1,this._isReady=!1,this._lobbyRefreshTimer=null,this._onConnectRef=()=>this._onConnect(),this._onDisconnectRef=e=>{this._log("disconnected:",e),this.emit("disconnected",e)},this._onReconnectRef=()=>{this._log("reconnecting..."),this.emit("reconnecting")},this._onErrorRef=e=>{this._log("error:",e?.message??e),this.emit("error",e)},this._onPresenceJoinRef=e=>this._handleRoomPresenceJoin(e),this._onPresenceLeaveRef=e=>this._handleRoomPresenceLeave(e),this._onPresenceUpdateRef=e=>this._handleRoomPresenceUpdate(e),this._onLobbyJoinRef=e=>this._handleLobbyJoin(e),this._onLobbyLeaveRef=e=>this._handleLobbyLeave(e),this._onLobbyUpdateRef=e=>this._handleLobbyUpdate(e),!e?.client)throw new TypeError("NoLagAgents requires an injected NoLag client: new NoLagAgents({ client, ... })");this._client=e.client,this._options={appName:e.appName??"agents",agentId:e.agentId??t(),name:e.name,role:e.role,debug:e.debug??!1,rooms:e.rooms??["default-workflow"],lobby:e.lobby,presence:e.presence??this._presenceFromIdentity(e)},this._log=o("NoLagAgents",this._options.debug),this._readyPromise=new Promise((e,t)=>{this._readyResolve=e,this._readyReject=t}),this._readyPromise.catch(()=>{}),function(e,t,o){let s=a.get(e);s||(s=new Map,a.set(e,s));const i=s.get(t);i&&console.warn(`[${o}] Another wrapper (${i}) is already attached to this client for app "${t}". Use one wrapper per (client, app) — detach the other instance first.`),s.set(t,o)}(this._client,this._options.appName,"NoLagAgents"),this._client.on("connect",this._onConnectRef),this._client.on("disconnect",this._onDisconnectRef),this._client.on("reconnect",this._onReconnectRef),this._client.on("error",this._onErrorRef),this._client.on("presence:join",this._onPresenceJoinRef),this._client.on("presence:leave",this._onPresenceLeaveRef),this._client.on("presence:update",this._onPresenceUpdateRef),this._client.on("lobbyPresence:join",this._onLobbyJoinRef),this._client.on("lobbyPresence:leave",this._onLobbyLeaveRef),this._client.on("lobbyPresence:update",this._onLobbyUpdateRef),queueMicrotask(()=>{0===this._epoch&&!this._detached&&this._client.connected&&this._onConnect()})}get agentId(){return this._options.agentId}get connected(){return!this._detached&&this._client.connected}get client(){return this._client}get rooms(){return this._rooms}ready(){return this._readyPromise}detach(){if(!this._detached){this._log("detaching..."),this._detached=!0,this._epoch++,this._lobbyRefreshTimer&&(clearTimeout(this._lobbyRefreshTimer),this._lobbyRefreshTimer=null),this._client.off("connect",this._onConnectRef),this._client.off("disconnect",this._onDisconnectRef),this._client.off("reconnect",this._onReconnectRef),this._client.off("error",this._onErrorRef),this._client.off("presence:join",this._onPresenceJoinRef),this._client.off("presence:leave",this._onPresenceLeaveRef),this._client.off("presence:update",this._onPresenceUpdateRef),this._client.off("lobbyPresence:join",this._onLobbyJoinRef),this._client.off("lobbyPresence:leave",this._onLobbyLeaveRef),this._client.off("lobbyPresence:update",this._onLobbyUpdateRef);for(const e of[...this._rooms.keys()])this._rooms.get(e)._cleanup(),this._rooms.delete(e);if(this._lobby&&this._client.connected)try{this._lobby.unsubscribe()}catch{}var e,t;this._lobby=null,e=this._client,t=this._options.appName,a.get(e)?.delete(t),this._isReady||this._readyReject(new Error("NoLagAgents detached before ready"))}}_onConnect(){this._epoch++,this._runSetup(this._epoch)}async _runSetup(e){const t=()=>e!==this._epoch||this._detached;if(this._log(this._isReady?"restoring after reconnect...":"setting up..."),this._log("agentId:",this._options.agentId,"→ actorId:",this._client.actorId),this._isReady)for(const e of this._rooms.values())e._updateLocalPresence();else for(const e of this._options.rooms)this._joinRoomInternal(e);if(this._options.lobby){this._lobby||(this._lobby=this._client.setApp(this._options.appName).setLobby(this._options.lobby));try{const e=await this._lobby.subscribe();if(t())return;this._diffHydrateLobby(e),this._log("lobby subscribed:",this._options.lobby)}catch(e){if(t())return;this._log("lobby subscription failed:",e)}}t()||(this._isReady?this.emit("reconnected"):(this._isReady=!0,this._readyResolve(),this.emit("connected")),this._options.lobby&&this._scheduleLobbyRefresh(e))}_scheduleLobbyRefresh(e){this._lobbyRefreshTimer&&clearTimeout(this._lobbyRefreshTimer),this._lobbyRefreshTimer=setTimeout(()=>{this._lobbyRefreshTimer=null,e===this._epoch&&!this._detached&&this._client.connected&&this._lobby&&this._lobby.fetchPresence().then(t=>{e!==this._epoch||this._detached||this._diffHydrateLobby(t)}).catch(()=>{})},2e3)}room(e,t){this._assertUsable();const o=this._rooms.get(e);return o?(t?.filters&&o.setFilters(t.filters),o):this._joinRoomInternal(e,t?.filters)}async subscribeLobby(e){this._assertUsable(),this._log(`subscribing to lobby: ${e}`),this._options.lobby=e,this._lobby||(this._lobby=this._client.setApp(this._options.appName).setLobby(e));try{const e=await this._lobby.subscribe();return this._detached||this._diffHydrateLobby(e),e||{}}catch(e){return this._log("lobby subscription failed:",e),{}}}_assertUsable(){if(this._detached)throw new Error("NoLagAgents has been detached — construct a new instance");if(!this._isReady)throw new Error('NoLagAgents not ready — await ready() or the "connected" event')}_joinRoomInternal(e,t){this._log(`joining room: ${e}`);const s=this._client.setApp(this._options.appName).setRoom(e),i=new b(e,s,o(`AgentRoom:${e}`,this._options.debug),this._options.agentId,this._options.appName,()=>this._client.connected,this._options.presence,t);return this._rooms.set(e,i),i}_foreignScope(e){const t=e?.__scope;return"string"==typeof t&&t!==this._options.appName}_handleRoomPresenceJoin(e){if(e.actorTokenId===this._client.actorId)return;const t=e.presence||{};if(this._foreignScope(t))return;const o=e.roomId;for(const s of this._targetRooms(o))s._handlePresenceJoin(e.actorTokenId,t)}_handleRoomPresenceLeave(e){if(e.actorTokenId===this._client.actorId)return;const t=e.roomId;for(const o of this._targetRooms(t))o._handlePresenceLeave(e.actorTokenId)}_handleRoomPresenceUpdate(e){if(e.actorTokenId===this._client.actorId)return;const t=e.presence||{};if(this._foreignScope(t))return;const o=e.roomId;for(const s of this._targetRooms(o))s._handlePresenceUpdate(e.actorTokenId,t)}_targetRooms(e){return e&&this._rooms.has(e)?[this._rooms.get(e)]:e?[]:[...this._rooms.values()]}_handleLobbyJoin(e){const{actorId:t,data:o}=e;if(t===this._client.actorId)return;const s=o||{};if(!this._foreignScope(s)){this._log(`lobby presence:join — ${s.name||t}`);for(const e of this._rooms.values())e._handlePresenceJoin(t,s)}}_handleLobbyLeave(e){const{actorId:t,data:o}=e;if(t===this._client.actorId)return;const s=o||{};if(!this._foreignScope(s)){this._log(`lobby presence:leave — ${t}`);for(const e of this._rooms.values())e._handlePresenceLeave(t)}}_handleLobbyUpdate(e){const{actorId:t,data:o}=e;if(t===this._client.actorId)return;const s=o||{};if(!this._foreignScope(s))for(const e of this._rooms.values())e._handlePresenceUpdate(t,s)}_diffHydrateLobby(e){for(const t of Object.keys(e)){const o=e[t];for(const e of Object.keys(o)){if(e===this._client.actorId)continue;const t=o[e],s=t?.presence??t;if(!this._foreignScope(s))for(const t of this._rooms.values())t._handlePresenceJoin(e,s)}}}_presenceFromIdentity(e){if(e.name||e.role)return{name:e.name??e.agentId??"agent",role:e.role??"agent"}}}class v extends Error{constructor(e,t){super(`${e} cannot succeed: every relevant agent advertises agents-protocol < 2 [${t.map(e=>`${e.name} (protocol ${e.protocol})`).join(", ")}]. Protocol >= 2 responders direct replies to the requester; older ones broadcast and their replies never reach this SDK's filtered subscription. Upgrade the responders to @nolag/agents >= 0.2.0 / nolag-agents >= 0.3.0. NOTE: 0.2.x/0.3.0 responders DO have directed replies but do not yet advertise protocol — if your responders run those versions, pass { allowLegacyResponders: true }.`),this.name="IncompatibleProtocolError"}}class I{constructor(){this._pending=new Map}register(e,t,o){return new Promise((s,i)=>{let n=null;t&&t>0&&(n=setTimeout(()=>{this._pending.delete(e);i(new Error(`${o??`Correlation ${e}`} timed out after ${t}ms`))},t)),this._pending.set(e,{resolve:s,reject:i,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 R(e,o,i){return{type:"task",protocol:2,taskId:t(),correlationId:t(),replyTo:i?.replyTo,capability:e,payload:o,tags:i?.tags,priority:i?.priority??"medium",metadata:i?.metadata,createdAt:s(),createdBy:i?.createdBy,timeout:i?.timeout}}function w(e,t,o,i,n,r,a){return{type:"result",protocol:2,correlationId:t,taskId:e,status:o,payload:i,error:n,completedAt:s(),completedBy:r,replyTo:a}}function T(e,t,o,i){return{type:"state",protocol:2,key:e,value:t,version:o,updatedBy:i,updatedAt:s()}}function x(e,o,i,n="info"){return{type:"event",protocol:2,eventId:t(),severity:n,category:e,emittedBy:o,payload:i,timestamp:s()}}function A(e,o,i,n){return{type:"approval_request",protocol:2,requestId:t(),correlationId:t(),action:e,context:o,urgency:n?.urgency??"medium",requestedBy:i,requestedAt:s(),expiresAt:n?.expiresAt}}function L(e,t,o,i,n){return{type:"approval_response",protocol:2,requestId:e,correlationId:t,decision:o,respondedBy:i,reason:n,respondedAt:s()}}function $(e,o,i,n){return{type:"tool_request",protocol:2,requestId:t(),correlationId:t(),replyTo:n?.replyTo,toolName:e,arguments:o,requestedBy:i,requestedAt:s()}}function P(e,t,o,i,n,r,a){return{type:"tool_response",protocol:2,requestId:e,correlationId:t,status:o,result:i,error:n,respondedBy:r,respondedAt:s(),replyTo:a}}class k{constructor(e){this._correlations=new I,this._warnedMixed=!1,this._room=e,this._room.on("result",e=>{this._correlations.resolve(e.correlationId,e)})}async dispatch(e,t,o){if(!o?.allowNoWorkers){const t=this._room.findAgents(e);if(0===(o?.requireOnline?t.filter(e=>void 0===e.status||"online"===e.status):t).length)throw new Error(`No ${o?.requireOnline?"online ":""}agent with capability "${e}" is available. Available capabilities: [${this._room.getAvailableCapabilities().join(", ")}]. Connected agents: ${this._room.getConnectedAgents().length}. Use { allowNoWorkers: true } to dispatch anyway.`)}const s=R(e,t,{...o,createdBy:o?.createdBy??this._room.agentId,replyTo:o?.replyTo??this._room.agentId});if(this._room.publishTask(s),o?.waitForResult){const t=this._room.findAgents(e);if(!o?.allowLegacyResponders&&t.length>0){const o=t.filter(e=>e.protocol>=2);if(0===o.length)throw new v(`Task '${e}' dispatch with waitForResult`,t.map(e=>({name:e.name,protocol:e.protocol})));o.length<t.length&&!this._warnedMixed&&(this._warnedMixed=!0,console.warn(`[nolag-agents] Capability '${e}' has workers on agents-protocol < 2: `+t.filter(e=>e.protocol<2).map(e=>e.name).join(", ")+". Their results may not be delivered — upgrade them."))}return this._correlations.register(s.correlationId,o.timeout,`Task '${e}' dispatch (${t.length} capable worker${1===t.length?"":"s"} visible). Likely causes: worker crashed mid-task, worker on agents-protocol < 2 (results not directed), or the room is not deliverable`)}}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 i=w(e.taskId,e.correlationId,t,o,s,this._room.agentId,e.replyTo??e.createdBy);this._room.publishResult(i)})})}getCapableAgents(e){return this._room.findAgents(e)}dispose(){this._correlations.clear()}}class C{constructor(e,t){this._room=e,this._agentId=t}send(e,o){const i={messageId:t(),from:this._agentId,to:e,payload:o,createdAt:s()};this._room.publishInbox(i)}onMessage(e){this._room.on("inbox",t=>{const o=t;o.to===this._agentId&&e(o)})}}class N{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=T(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 E{constructor(e,t){this._room=e,this._emittedBy=t}emit(e,t,o="info",s){const i=x(e,this._emittedBy,t,o);this._room.publishEvent(i,s)}setFilters(e){this._room.setFilters(e,{topic:"events"})}on(e,t){this._room.on("event",o=>{t?.category&&o.category!==t.category||t?.severity&&o.severity!==t.severity||e(o)})}}class U{constructor(e,t){this._correlations=new I,this._room=e,this._agentId=t,this._room.on("approvalResponse",e=>{this._correlations.resolve(e.correlationId,e)})}async request(e,t,o){const s=A(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=L(t.requestId,t.correlationId,e,this._agentId,o);this._room.publishApproval(s)})})}dispose(){this._correlations.clear()}}class q{constructor(e,t){this._correlations=new I,this._handlers=new Map,this._warnedMixed=!1,this._room=e,this._agentId=t,this._room.on("toolResponse",e=>{e&&"string"==typeof e.correlationId&&this._correlations.resolve(e.correlationId,e)}),this._room.on("toolRequest",async e=>{if(!e||"string"!=typeof e.toolName)return;const t=this._handlers.get(e.toolName),o=e.replyTo??e.requestedBy;if(!t){if(!this._ownsNamespace(e.toolName))return;const t=P(e.requestId,e.correlationId,"error",null,{code:"NO_HANDLER",message:`Agent '${this._agentId}' has no handler for tool '${e.toolName}'`},this._agentId,o);return void this._room.publishTools(t)}try{const s=await t(e.arguments),i=P(e.requestId,e.correlationId,"success",s,void 0,this._agentId,o);this._room.publishTools(i)}catch(t){const s=P(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)}_ownsNamespace(e){if("string"!=typeof e)return!1;if(0===this._handlers.size)return!1;const t=e.includes(".")?e.slice(0,e.indexOf(".")):null;for(const e of this._handlers.keys()){if((e.includes(".")?e.slice(0,e.indexOf(".")):null)===t)return!0}return!1}async invoke(e,t,o){const s=this._room.getConnectedAgents().filter(e=>"tool-server"===e.role);if(!o?.allowLegacyResponders&&s.length>0){const t=s.filter(e=>e.protocol>=2);if(0===t.length)throw new v(`Tool '${e}' invocation`,s.map(e=>({name:e.name,protocol:e.protocol})));t.length<s.length&&!this._warnedMixed&&(this._warnedMixed=!0,console.warn(`[nolag-agents] Room '${this._room.name}' has tool servers on agents-protocol < 2: `+s.filter(e=>e.protocol<2).map(e=>e.name).join(", ")+". Their replies may not be delivered — upgrade them."))}const i=$(e,t,this._agentId,{replyTo:this._room.agentId});this._room.publishTools(i);const n=s.length;return this._correlations.register(i.correlationId,o?.timeout,`Tool '${e}' invocation in room '${this._room.name}' (${n} tool-server${1===n?"":"s"} visible). Likely causes: no agent has this tool registered (pre-0.3.0 responders don't NACK), the responder is offline, or the room is not deliverable (watch the room 'error' events)`)}dispose(){this._correlations.clear(),this._handlers.clear()}}const j={CAPABILITY:"capability",PRIORITY:"priority",ROLE:"role",SEVERITY:"severity",URGENCY:"urgency",TENANT:"tenant"},B={REQUIRES_HUMAN:"requires_human",REQUIRES_AUDIT:"requires_audit"};function S(e,t){return`${e}:${t}`}export{f as AGENTS_PROTOCOL_VERSION,b as AgentRoom,U as Approve,N as Blackboard,I as CorrelationManager,e as EventEmitter,k as Handoff,C as Inbox,v as IncompatibleProtocolError,y as NoLagAgents,E as Observe,B as TAG_FLAGS,j as TAG_PREFIX,q as Tools,A as createApprovalRequest,L as createApprovalResponse,x as createEventEnvelope,w as createResultEnvelope,T as createStateEnvelope,R as createTaskEnvelope,$ as createToolRequest,P as createToolResponse,S as tag};
|
|
2
2
|
//# sourceMappingURL=browser.js.map
|
package/dist/browser.js.map
CHANGED
|
@@ -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/errors.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,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","AGENTS_PROTOCOL_VERSION","AgentRoom","name","roomContext","log","agentId","appName","isConnected","presence","super","_agents","_topicHandlers","_roomContext","_log","_appName","_isConnected","_presence","_wireTopicListeners","protocol","setPresence","__scope","_fetchInitialPresence","getConnectedAgents","Array","from","values","findAgents","capability","filter","a","capabilities","includes","hasCapability","length","getAvailableCapabilities","caps","agent","cap","data","fetchPresence","map","_toConnectedAgent","context","publishTask","envelope","createdBy","_publish","publishResult","completedBy","replyTo","publishState","updatedBy","retain","publishEvent","emittedBy","publishInbox","publishTools","type","publishApproval","_updateLocalPresence","_handlePresenceJoin","actorId","d","role","metadata","connectedAt","Date","now","_handlePresenceLeave","_handlePresenceUpdate","existing","_cleanup","topics","t","topic","unsubscribe","_on","push","options","actor","actorTokenId","joinedAt","status","actors","isArray","connected","subscribe","loadBalance","filters","broadcastTopics","simpleMap","generateId","crypto","randomUUID","replace","Math","floor","random","toString","createLogger","prefix","enabled","_args","createTimestamp","wrapperRegistry","WeakMap","NoLagAgents","_rooms","_lobby","_epoch","_detached","_isReady","_lobbyRefreshTimer","_onConnectRef","_onConnect","_onDisconnectRef","reason","_onReconnectRef","_onErrorRef","message","_onPresenceJoinRef","_handleRoomPresenceJoin","_onPresenceLeaveRef","_handleRoomPresenceLeave","_onPresenceUpdateRef","_handleRoomPresenceUpdate","_onLobbyJoinRef","_handleLobbyJoin","_onLobbyLeaveRef","_handleLobbyLeave","_onLobbyUpdateRef","_handleLobbyUpdate","client","TypeError","_client","_options","debug","rooms","lobby","_presenceFromIdentity","_readyPromise","Promise","resolve","reject","_readyResolve","_readyReject","catch","wrapperName","apps","warn","registerWrapper","queueMicrotask","ready","detach","clearTimeout","keys","Error","_runSetup","epoch","stale","room","roomName","_joinRoomInternal","setApp","setLobby","state","_diffHydrateLobby","err","_scheduleLobbyRefresh","setTimeout","then","_assertUsable","subscribeLobby","lobbySlug","setRoom","_foreignScope","scope","roomId","_targetRooms","Object","roomPresence","raw","IncompatibleProtocolError","operation","agents","join","CorrelationManager","_pending","register","correlationId","timeoutMs","timer","value","entry","id","createTaskEnvelope","payload","taskId","tags","priority","createdAt","timeout","createResultEnvelope","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","_warnedMixed","_room","dispatch","allowNoWorkers","capable","requireOnline","undefined","waitForResult","allowLegacyResponders","modern","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","_ownsNamespace","nack","code","ns","slice","indexOf","invoke","servers","serverCount","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/utils.ts","../src/constants.ts","../src/AgentRoom.ts","../src/NoLagAgents.ts","../src/errors.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,null],"names":["EventEmitter","constructor","this","_handlers","Map","on","event","handler","has","set","Set","get","add","off","delete","removeAllListeners","clear","emit","args","handlers","result","then","undefined","e","console","error","String","listenerCount","size","generateId","crypto","randomUUID","replace","Math","floor","random","toString","createLogger","prefix","enabled","log","_args","createTimestamp","Date","now","filterEmitOptions","opts","filter","filters","length","mergeFilters","existing","simple","groups","f","push","v","withoutFilters","remove","drop","wrapperRegistry","WeakMap","TOPIC_TASKS","TOPIC_RESULTS","TOPIC_STATE","TOPIC_EVENTS","TOPIC_INBOX","TOPIC_TOOLS","TOPIC_APPROVAL","AGENTS_PROTOCOL_VERSION","FILTER_TOPICS","tasks","tools","state","events","inbox","approval","ALL_FILTER_TOPICS","Object","keys","AgentRoom","name","roomContext","agentId","appName","isConnected","presence","super","_agents","_topicHandlers","_filters","_roomContext","_log","_appName","_isConnected","_presence","topic","_wireTopicListeners","protocol","setPresence","__scope","_fetchInitialPresence","getConnectedAgents","Array","from","values","findAgents","capability","a","capabilities","includes","hasCapability","getAvailableCapabilities","caps","agent","cap","data","fetchPresence","map","_toConnectedAgent","context","publishTask","envelope","createdBy","_publish","publishResult","completedBy","replyTo","publishState","updatedBy","retain","publishEvent","emittedBy","publishInbox","publishTools","type","publishApproval","setFilters","_targetTopics","addFilters","removeFilters","_updateLocalPresence","_handlePresenceJoin","actorId","d","role","metadata","connectedAt","_handlePresenceLeave","_handlePresenceUpdate","_cleanup","topics","t","unsubscribe","_on","options","_subscribeFiltered","subscribe","actor","actorTokenId","joinedAt","status","actors","isArray","connected","loadBalance","broadcastTopics","key","simpleMap","NoLagAgents","_rooms","_lobby","_epoch","_detached","_isReady","_lobbyRefreshTimer","_onConnectRef","_onConnect","_onDisconnectRef","reason","_onReconnectRef","_onErrorRef","message","_onPresenceJoinRef","_handleRoomPresenceJoin","_onPresenceLeaveRef","_handleRoomPresenceLeave","_onPresenceUpdateRef","_handleRoomPresenceUpdate","_onLobbyJoinRef","_handleLobbyJoin","_onLobbyLeaveRef","_handleLobbyLeave","_onLobbyUpdateRef","_handleLobbyUpdate","client","TypeError","_client","_options","debug","rooms","lobby","_presenceFromIdentity","_readyPromise","Promise","resolve","reject","_readyResolve","_readyReject","catch","wrapperName","apps","warn","registerWrapper","queueMicrotask","ready","detach","clearTimeout","Error","_runSetup","epoch","stale","room","roomName","_joinRoomInternal","setApp","setLobby","_diffHydrateLobby","err","_scheduleLobbyRefresh","setTimeout","_assertUsable","subscribeLobby","lobbySlug","setRoom","_foreignScope","scope","roomId","_targetRooms","roomPresence","raw","IncompatibleProtocolError","operation","agents","join","CorrelationManager","_pending","register","correlationId","timeoutMs","timer","value","entry","id","createTaskEnvelope","payload","taskId","tags","priority","createdAt","timeout","createResultEnvelope","completedAt","createStateEnvelope","version","updatedAt","createEventEnvelope","category","severity","eventId","timestamp","createApprovalRequest","action","requestedBy","requestId","urgency","requestedAt","expiresAt","createApprovalResponse","decision","respondedBy","respondedAt","createToolRequest","toolName","arguments","createToolResponse","Handoff","_correlations","_warnedMixed","_room","dispatch","allowNoWorkers","capable","requireOnline","waitForResult","allowLegacyResponders","modern","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","_ownsNamespace","nack","code","ns","slice","indexOf","invoke","servers","serverCount","TAG_PREFIX","CAPABILITY","PRIORITY","ROLE","SEVERITY","URGENCY","TENANT","TAG_FLAGS","REQUIRES_HUMAN","REQUIRES_AUDIT","tag"],"mappings":"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"}
|