@agent-relay/daemon 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-manager.d.ts +134 -0
- package/dist/agent-manager.d.ts.map +1 -0
- package/dist/agent-manager.js +578 -0
- package/dist/agent-manager.js.map +1 -0
- package/dist/agent-registry.d.ts +99 -0
- package/dist/agent-registry.d.ts.map +1 -0
- package/dist/agent-registry.js +213 -0
- package/dist/agent-registry.js.map +1 -0
- package/dist/agent-signing.d.ts +158 -0
- package/dist/agent-signing.d.ts.map +1 -0
- package/dist/agent-signing.js +523 -0
- package/dist/agent-signing.js.map +1 -0
- package/dist/api.d.ts +106 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +876 -0
- package/dist/api.js.map +1 -0
- package/dist/auth.d.ts +94 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +197 -0
- package/dist/auth.js.map +1 -0
- package/dist/channel-membership-store.d.ts +55 -0
- package/dist/channel-membership-store.d.ts.map +1 -0
- package/dist/channel-membership-store.js +176 -0
- package/dist/channel-membership-store.js.map +1 -0
- package/dist/cli-auth.d.ts +89 -0
- package/dist/cli-auth.d.ts.map +1 -0
- package/dist/cli-auth.js +792 -0
- package/dist/cli-auth.js.map +1 -0
- package/dist/cloud-sync.d.ts +150 -0
- package/dist/cloud-sync.d.ts.map +1 -0
- package/dist/cloud-sync.js +446 -0
- package/dist/cloud-sync.js.map +1 -0
- package/dist/connection.d.ts +130 -0
- package/dist/connection.d.ts.map +1 -0
- package/dist/connection.js +438 -0
- package/dist/connection.js.map +1 -0
- package/dist/consensus-integration.d.ts +167 -0
- package/dist/consensus-integration.d.ts.map +1 -0
- package/dist/consensus-integration.js +371 -0
- package/dist/consensus-integration.js.map +1 -0
- package/dist/consensus.d.ts +271 -0
- package/dist/consensus.d.ts.map +1 -0
- package/dist/consensus.js +632 -0
- package/dist/consensus.js.map +1 -0
- package/dist/delivery-tracker.d.ts +34 -0
- package/dist/delivery-tracker.d.ts.map +1 -0
- package/dist/delivery-tracker.js +104 -0
- package/dist/delivery-tracker.js.map +1 -0
- package/dist/enhanced-features.d.ts +118 -0
- package/dist/enhanced-features.d.ts.map +1 -0
- package/dist/enhanced-features.js +176 -0
- package/dist/enhanced-features.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/migrations/index.d.ts +73 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +241 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/orchestrator.d.ts +217 -0
- package/dist/orchestrator.d.ts.map +1 -0
- package/dist/orchestrator.js +1143 -0
- package/dist/orchestrator.js.map +1 -0
- package/dist/rate-limiter.d.ts +68 -0
- package/dist/rate-limiter.d.ts.map +1 -0
- package/dist/rate-limiter.js +130 -0
- package/dist/rate-limiter.js.map +1 -0
- package/dist/registry.d.ts +9 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +9 -0
- package/dist/registry.js.map +1 -0
- package/dist/relay-ledger.d.ts +261 -0
- package/dist/relay-ledger.d.ts.map +1 -0
- package/dist/relay-ledger.js +532 -0
- package/dist/relay-ledger.js.map +1 -0
- package/dist/relay-watchdog.d.ts +125 -0
- package/dist/relay-watchdog.d.ts.map +1 -0
- package/dist/relay-watchdog.js +611 -0
- package/dist/relay-watchdog.js.map +1 -0
- package/dist/repo-manager.d.ts +116 -0
- package/dist/repo-manager.d.ts.map +1 -0
- package/dist/repo-manager.js +384 -0
- package/dist/repo-manager.js.map +1 -0
- package/dist/router.d.ts +370 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +1437 -0
- package/dist/router.js.map +1 -0
- package/dist/server.d.ts +174 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +1001 -0
- package/dist/server.js.map +1 -0
- package/dist/spawn-manager.d.ts +78 -0
- package/dist/spawn-manager.d.ts.map +1 -0
- package/dist/spawn-manager.js +165 -0
- package/dist/spawn-manager.js.map +1 -0
- package/dist/sync-queue.d.ts +116 -0
- package/dist/sync-queue.d.ts.map +1 -0
- package/dist/sync-queue.js +361 -0
- package/dist/sync-queue.js.map +1 -0
- package/dist/types.d.ts +133 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/workspace-manager.d.ts +80 -0
- package/dist/workspace-manager.d.ts.map +1 -0
- package/dist/workspace-manager.js +314 -0
- package/dist/workspace-manager.js.map +1 -0
- package/package.json +52 -0
package/dist/router.d.ts
ADDED
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Message router for the agent relay daemon.
|
|
3
|
+
* Handles routing messages between agents, topic subscriptions, and broadcast.
|
|
4
|
+
*/
|
|
5
|
+
import { type Envelope, type SendEnvelope, type AckPayload, type ShadowConfig, type SpeakOnTrigger, type EntityType } from '@agent-relay/protocol/types';
|
|
6
|
+
import type { ChannelJoinPayload, ChannelLeavePayload, ChannelMessagePayload } from '@agent-relay/protocol/channels';
|
|
7
|
+
import type { StorageAdapter } from '@agent-relay/storage/adapter';
|
|
8
|
+
import type { AgentRegistry } from './agent-registry.js';
|
|
9
|
+
import { type RateLimitConfig } from './rate-limiter.js';
|
|
10
|
+
import { type DeliveryReliabilityOptions } from './delivery-tracker.js';
|
|
11
|
+
import type { ChannelMembershipStore } from './channel-membership-store.js';
|
|
12
|
+
export interface RoutableConnection {
|
|
13
|
+
id: string;
|
|
14
|
+
agentName?: string;
|
|
15
|
+
/** Entity type: 'agent' (default) or 'user' for human users */
|
|
16
|
+
entityType?: EntityType;
|
|
17
|
+
cli?: string;
|
|
18
|
+
program?: string;
|
|
19
|
+
model?: string;
|
|
20
|
+
task?: string;
|
|
21
|
+
workingDirectory?: string;
|
|
22
|
+
sessionId: string;
|
|
23
|
+
close(): void;
|
|
24
|
+
send(envelope: Envelope): boolean;
|
|
25
|
+
getNextSeq(topic: string, peer: string): number;
|
|
26
|
+
}
|
|
27
|
+
export interface RemoteAgentInfo {
|
|
28
|
+
name: string;
|
|
29
|
+
status: string;
|
|
30
|
+
daemonId: string;
|
|
31
|
+
daemonName: string;
|
|
32
|
+
machineId: string;
|
|
33
|
+
}
|
|
34
|
+
export interface CrossMachineHandler {
|
|
35
|
+
sendCrossMachineMessage(targetDaemonId: string, targetAgent: string, fromAgent: string, content: string, metadata?: Record<string, unknown>): Promise<boolean>;
|
|
36
|
+
isRemoteAgent(agentName: string): RemoteAgentInfo | undefined;
|
|
37
|
+
/** Check if a user is on a remote machine (connected via cloud dashboard) */
|
|
38
|
+
isRemoteUser?(userName: string): RemoteAgentInfo | undefined;
|
|
39
|
+
}
|
|
40
|
+
/** Internal shadow relationship with resolved defaults */
|
|
41
|
+
interface ShadowRelationship extends ShadowConfig {
|
|
42
|
+
shadowAgent: string;
|
|
43
|
+
}
|
|
44
|
+
export declare class Router {
|
|
45
|
+
private storage?;
|
|
46
|
+
private channelMembershipStore?;
|
|
47
|
+
private connections;
|
|
48
|
+
private agents;
|
|
49
|
+
private subscriptions;
|
|
50
|
+
private processingAgents;
|
|
51
|
+
private registry?;
|
|
52
|
+
private crossMachineHandler?;
|
|
53
|
+
private deliveryTracker;
|
|
54
|
+
/** Shadow relationships: primaryAgent -> list of shadow configs */
|
|
55
|
+
private shadowsByPrimary;
|
|
56
|
+
/** Reverse lookup: shadowAgent -> primaryAgent (for cleanup) */
|
|
57
|
+
private primaryByShadow;
|
|
58
|
+
/** Channel membership: channel -> Set of member names */
|
|
59
|
+
private channels;
|
|
60
|
+
/** User entities (human users, not agents) */
|
|
61
|
+
private users;
|
|
62
|
+
/** Reverse lookup: member name -> Set of channels they're in */
|
|
63
|
+
private memberChannels;
|
|
64
|
+
/**
|
|
65
|
+
* Agents that are currently being spawned but haven't completed HELLO yet.
|
|
66
|
+
* Maps agent name to timestamp when spawn started.
|
|
67
|
+
* Messages sent to these agents will be queued for delivery after HELLO completes.
|
|
68
|
+
*/
|
|
69
|
+
private spawningAgents;
|
|
70
|
+
/** Default timeout for processing indicator (30 seconds) */
|
|
71
|
+
private static readonly PROCESSING_TIMEOUT_MS;
|
|
72
|
+
/** Timeout for spawning agent entries (60 seconds) */
|
|
73
|
+
private static readonly SPAWNING_TIMEOUT_MS;
|
|
74
|
+
/** Callback when processing state changes (for real-time dashboard updates) */
|
|
75
|
+
private onProcessingStateChange?;
|
|
76
|
+
/** Rate limiter for per-agent throttling */
|
|
77
|
+
private rateLimiter;
|
|
78
|
+
constructor(options?: {
|
|
79
|
+
storage?: StorageAdapter;
|
|
80
|
+
delivery?: Partial<DeliveryReliabilityOptions>;
|
|
81
|
+
registry?: AgentRegistry;
|
|
82
|
+
onProcessingStateChange?: () => void;
|
|
83
|
+
crossMachineHandler?: CrossMachineHandler;
|
|
84
|
+
/** Rate limit configuration. Set to null to disable rate limiting. */
|
|
85
|
+
rateLimit?: Partial<RateLimitConfig> | null;
|
|
86
|
+
channelMembershipStore?: ChannelMembershipStore;
|
|
87
|
+
});
|
|
88
|
+
/**
|
|
89
|
+
* Restore channel memberships from persisted storage.
|
|
90
|
+
*/
|
|
91
|
+
restoreChannelMemberships(): Promise<void>;
|
|
92
|
+
/**
|
|
93
|
+
* Set or update the cross-machine handler.
|
|
94
|
+
*/
|
|
95
|
+
setCrossMachineHandler(handler: CrossMachineHandler): void;
|
|
96
|
+
/**
|
|
97
|
+
* Mark an agent as spawning (before HELLO completes).
|
|
98
|
+
* Messages sent to this agent will be queued for delivery after registration.
|
|
99
|
+
*/
|
|
100
|
+
markSpawning(agentName: string): void;
|
|
101
|
+
/**
|
|
102
|
+
* Clear the spawning flag for an agent.
|
|
103
|
+
* Called when agent completes registration or spawn fails.
|
|
104
|
+
*/
|
|
105
|
+
clearSpawning(agentName: string): void;
|
|
106
|
+
/**
|
|
107
|
+
* Check if an agent is currently spawning.
|
|
108
|
+
*/
|
|
109
|
+
isSpawning(agentName: string): boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Clean up spawning entries older than SPAWNING_TIMEOUT_MS.
|
|
112
|
+
*/
|
|
113
|
+
private cleanupStaleSpawning;
|
|
114
|
+
/**
|
|
115
|
+
* Register a connection after successful handshake.
|
|
116
|
+
*/
|
|
117
|
+
register(connection: RoutableConnection): void;
|
|
118
|
+
/**
|
|
119
|
+
* Unregister a connection.
|
|
120
|
+
*/
|
|
121
|
+
unregister(connection: RoutableConnection): void;
|
|
122
|
+
/**
|
|
123
|
+
* Remove a member from all channels they're in.
|
|
124
|
+
*/
|
|
125
|
+
private removeFromAllChannels;
|
|
126
|
+
/**
|
|
127
|
+
* Subscribe an agent to a topic.
|
|
128
|
+
*/
|
|
129
|
+
subscribe(agentName: string, topic: string): void;
|
|
130
|
+
/**
|
|
131
|
+
* Unsubscribe an agent from a topic.
|
|
132
|
+
*/
|
|
133
|
+
unsubscribe(agentName: string, topic: string): void;
|
|
134
|
+
/**
|
|
135
|
+
* Bind a shadow agent to a primary agent.
|
|
136
|
+
* The shadow will receive copies of messages to/from the primary.
|
|
137
|
+
*/
|
|
138
|
+
bindShadow(shadowAgent: string, primaryAgent: string, options?: {
|
|
139
|
+
speakOn?: SpeakOnTrigger[];
|
|
140
|
+
receiveIncoming?: boolean;
|
|
141
|
+
receiveOutgoing?: boolean;
|
|
142
|
+
}): void;
|
|
143
|
+
/**
|
|
144
|
+
* Unbind a shadow agent from its primary.
|
|
145
|
+
*/
|
|
146
|
+
unbindShadow(shadowAgent: string): void;
|
|
147
|
+
/**
|
|
148
|
+
* Get all shadows for a primary agent.
|
|
149
|
+
*/
|
|
150
|
+
getShadowsForPrimary(primaryAgent: string): ShadowRelationship[];
|
|
151
|
+
/**
|
|
152
|
+
* Get the primary agent for a shadow, if any.
|
|
153
|
+
*/
|
|
154
|
+
getPrimaryForShadow(shadowAgent: string): string | undefined;
|
|
155
|
+
/**
|
|
156
|
+
* Emit a trigger event for an agent's shadows.
|
|
157
|
+
* Shadows configured to speakOn this trigger will receive a notification.
|
|
158
|
+
* @param primaryAgent The agent whose shadows should be notified
|
|
159
|
+
* @param trigger The trigger event that occurred
|
|
160
|
+
* @param context Optional context data about the trigger
|
|
161
|
+
*/
|
|
162
|
+
emitShadowTrigger(primaryAgent: string, trigger: SpeakOnTrigger, context?: Record<string, unknown>): void;
|
|
163
|
+
/**
|
|
164
|
+
* Check if a shadow should speak based on a specific trigger.
|
|
165
|
+
*/
|
|
166
|
+
shouldShadowSpeak(shadowAgent: string, trigger: SpeakOnTrigger): boolean;
|
|
167
|
+
/**
|
|
168
|
+
* Route a SEND message to its destination(s).
|
|
169
|
+
*/
|
|
170
|
+
route(from: RoutableConnection, envelope: SendEnvelope): void;
|
|
171
|
+
/**
|
|
172
|
+
* Route a copy of a message to shadows of an agent.
|
|
173
|
+
* @param primaryAgent The primary agent whose shadows should receive the message
|
|
174
|
+
* @param envelope The original message envelope
|
|
175
|
+
* @param direction Whether this is an 'incoming' or 'outgoing' message for the primary
|
|
176
|
+
* @param actualFrom Override the 'from' field (for incoming messages, use original sender)
|
|
177
|
+
*/
|
|
178
|
+
private routeToShadows;
|
|
179
|
+
/**
|
|
180
|
+
* Send a direct message to a specific agent.
|
|
181
|
+
*
|
|
182
|
+
* If the target agent is offline but known (has connected before),
|
|
183
|
+
* the message is persisted for delivery when the agent reconnects.
|
|
184
|
+
* This prevents silent message drops during brief disconnections or spawn timing issues.
|
|
185
|
+
*/
|
|
186
|
+
private sendDirect;
|
|
187
|
+
/**
|
|
188
|
+
* Send a message to an agent on a remote machine via cloud.
|
|
189
|
+
*/
|
|
190
|
+
private sendToRemoteAgent;
|
|
191
|
+
/**
|
|
192
|
+
* Broadcast to all agents (optionally filtered by topic subscription).
|
|
193
|
+
*/
|
|
194
|
+
private broadcast;
|
|
195
|
+
/**
|
|
196
|
+
* Broadcast a message to all human users (not agents).
|
|
197
|
+
* Used for system notifications that only humans should see.
|
|
198
|
+
*/
|
|
199
|
+
private broadcastToUsers;
|
|
200
|
+
/**
|
|
201
|
+
* Create a DELIVER envelope from a SEND.
|
|
202
|
+
*/
|
|
203
|
+
private createDeliverEnvelope;
|
|
204
|
+
/**
|
|
205
|
+
* Persist a delivered message if storage is configured.
|
|
206
|
+
*/
|
|
207
|
+
private persistDeliverEnvelope;
|
|
208
|
+
/**
|
|
209
|
+
* Persist a message for an offline agent.
|
|
210
|
+
* Called when a message is sent to a known agent that is not currently connected.
|
|
211
|
+
* The message is marked with _offlineQueued and will be delivered when the agent reconnects.
|
|
212
|
+
*/
|
|
213
|
+
private persistMessageForOfflineAgent;
|
|
214
|
+
/**
|
|
215
|
+
* Deliver pending messages to an agent that just connected.
|
|
216
|
+
* Queries for unread messages addressed to this agent that were queued while offline.
|
|
217
|
+
* This handles messages that were sent while the agent was offline.
|
|
218
|
+
*/
|
|
219
|
+
deliverPendingMessages(connection: RoutableConnection): Promise<void>;
|
|
220
|
+
/**
|
|
221
|
+
* Get list of connected agent names.
|
|
222
|
+
*/
|
|
223
|
+
getAgents(): string[];
|
|
224
|
+
/**
|
|
225
|
+
* Get connection by agent name.
|
|
226
|
+
*/
|
|
227
|
+
getConnection(agentName: string): RoutableConnection | undefined;
|
|
228
|
+
/**
|
|
229
|
+
* Get number of active connections.
|
|
230
|
+
*/
|
|
231
|
+
get connectionCount(): number;
|
|
232
|
+
get pendingDeliveryCount(): number;
|
|
233
|
+
/**
|
|
234
|
+
* Get rate limiter statistics.
|
|
235
|
+
*/
|
|
236
|
+
getRateLimiterStats(): {
|
|
237
|
+
agentCount: number;
|
|
238
|
+
config: RateLimitConfig;
|
|
239
|
+
};
|
|
240
|
+
/**
|
|
241
|
+
* Reset rate limit for a specific agent (admin operation).
|
|
242
|
+
*/
|
|
243
|
+
resetRateLimit(agentName: string): void;
|
|
244
|
+
/**
|
|
245
|
+
* Get list of agents currently processing (thinking).
|
|
246
|
+
* Returns an object with agent names as keys and processing info as values.
|
|
247
|
+
*/
|
|
248
|
+
getProcessingAgents(): Record<string, {
|
|
249
|
+
startedAt: number;
|
|
250
|
+
messageId: string;
|
|
251
|
+
}>;
|
|
252
|
+
/**
|
|
253
|
+
* Check if a specific agent is processing.
|
|
254
|
+
*/
|
|
255
|
+
isAgentProcessing(agentName: string): boolean;
|
|
256
|
+
/**
|
|
257
|
+
* Mark an agent as processing (called when they receive a message).
|
|
258
|
+
*/
|
|
259
|
+
private setProcessing;
|
|
260
|
+
/**
|
|
261
|
+
* Clear processing state for an agent (called when they send a message).
|
|
262
|
+
*/
|
|
263
|
+
private clearProcessing;
|
|
264
|
+
/**
|
|
265
|
+
* Handle ACK for previously delivered messages.
|
|
266
|
+
*/
|
|
267
|
+
handleAck(connection: RoutableConnection, envelope: Envelope<AckPayload>): void;
|
|
268
|
+
/**
|
|
269
|
+
* Clear pending deliveries for a connection (e.g., on disconnect).
|
|
270
|
+
*/
|
|
271
|
+
clearPendingForConnection(connectionId: string): void;
|
|
272
|
+
/**
|
|
273
|
+
* Track a delivery and schedule retries until ACKed or TTL/attempts exhausted.
|
|
274
|
+
*/
|
|
275
|
+
private trackDelivery;
|
|
276
|
+
/**
|
|
277
|
+
* Broadcast a system message to all connected agents.
|
|
278
|
+
* Used for system notifications like agent death announcements.
|
|
279
|
+
*/
|
|
280
|
+
broadcastSystemMessage(message: string, data?: Record<string, unknown>): void;
|
|
281
|
+
/**
|
|
282
|
+
* Replay any pending (unacked) messages for a resumed session.
|
|
283
|
+
*/
|
|
284
|
+
replayPending(connection: RoutableConnection): Promise<void>;
|
|
285
|
+
/**
|
|
286
|
+
* Handle a CHANNEL_JOIN message.
|
|
287
|
+
* Adds the member to the channel and notifies existing members.
|
|
288
|
+
* If payload.member is set, adds that member (admin mode).
|
|
289
|
+
* Otherwise, adds the connection's agent name.
|
|
290
|
+
*/
|
|
291
|
+
handleChannelJoin(connection: RoutableConnection, envelope: Envelope<ChannelJoinPayload>): void;
|
|
292
|
+
/**
|
|
293
|
+
* Handle a CHANNEL_LEAVE message.
|
|
294
|
+
* Removes the member from the channel and notifies remaining members.
|
|
295
|
+
* If payload.member is provided, removes that member instead (admin mode).
|
|
296
|
+
*/
|
|
297
|
+
handleChannelLeave(connection: RoutableConnection, envelope: Envelope<ChannelLeavePayload>): void;
|
|
298
|
+
/**
|
|
299
|
+
* Route a channel message to all members except the sender.
|
|
300
|
+
*/
|
|
301
|
+
routeChannelMessage(connection: RoutableConnection, envelope: Envelope<ChannelMessagePayload>): void;
|
|
302
|
+
/**
|
|
303
|
+
* Persist a channel message to storage.
|
|
304
|
+
*/
|
|
305
|
+
private persistChannelMessage;
|
|
306
|
+
private persistChannelMembership;
|
|
307
|
+
/**
|
|
308
|
+
* Get all members of a channel.
|
|
309
|
+
*/
|
|
310
|
+
getChannelMembers(channel: string): string[];
|
|
311
|
+
/**
|
|
312
|
+
* Get all channels.
|
|
313
|
+
*/
|
|
314
|
+
getChannels(): string[];
|
|
315
|
+
/**
|
|
316
|
+
* Get all channels a member is in.
|
|
317
|
+
*/
|
|
318
|
+
getChannelsForMember(memberName: string): string[];
|
|
319
|
+
/**
|
|
320
|
+
* Check if a name belongs to a user (not an agent).
|
|
321
|
+
*/
|
|
322
|
+
isUser(name: string): boolean;
|
|
323
|
+
/**
|
|
324
|
+
* Check if a name belongs to an agent (not a user).
|
|
325
|
+
*/
|
|
326
|
+
isAgent(name: string): boolean;
|
|
327
|
+
/**
|
|
328
|
+
* Get list of connected user names (human users only).
|
|
329
|
+
*/
|
|
330
|
+
getUsers(): string[];
|
|
331
|
+
/**
|
|
332
|
+
* Get a connection by name (checks both agents and users).
|
|
333
|
+
* Uses case-insensitive lookup to handle mismatched casing.
|
|
334
|
+
*/
|
|
335
|
+
private getConnectionByName;
|
|
336
|
+
/**
|
|
337
|
+
* Check if a member is in a Set (case-insensitive).
|
|
338
|
+
* Returns the actual stored name if found, undefined otherwise.
|
|
339
|
+
*/
|
|
340
|
+
private findMemberInSet;
|
|
341
|
+
/**
|
|
342
|
+
* Check if two names match (case-insensitive).
|
|
343
|
+
*/
|
|
344
|
+
private namesMatch;
|
|
345
|
+
/**
|
|
346
|
+
* Auto-join a member to a channel without notifications.
|
|
347
|
+
* Used for default channel membership (e.g., #general).
|
|
348
|
+
* @param memberName - The agent or user name to add
|
|
349
|
+
* @param channel - The channel to join (e.g., '#general')
|
|
350
|
+
*/
|
|
351
|
+
autoJoinChannel(memberName: string, channel: string, options?: {
|
|
352
|
+
persist?: boolean;
|
|
353
|
+
}): void;
|
|
354
|
+
private addChannelMember;
|
|
355
|
+
private removeChannelMember;
|
|
356
|
+
handleMembershipUpdate(update: {
|
|
357
|
+
channel: string;
|
|
358
|
+
member: string;
|
|
359
|
+
action: 'join' | 'leave' | 'invite';
|
|
360
|
+
}): void;
|
|
361
|
+
/**
|
|
362
|
+
* Auto-rejoin an agent to their persisted channels on reconnect.
|
|
363
|
+
* This handles daemon restarts where in-memory channel state is lost.
|
|
364
|
+
* Queries both cloud DB (if available) and SQLite storage for memberships.
|
|
365
|
+
* Uses silent/admin mode to avoid spamming join notifications.
|
|
366
|
+
*/
|
|
367
|
+
autoRejoinChannelsForAgent(agentName: string): Promise<void>;
|
|
368
|
+
}
|
|
369
|
+
export {};
|
|
370
|
+
//# sourceMappingURL=router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
|