aibroker 0.6.1 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/README.md +263 -104
  2. package/dist/adapters/iterm/sessions.d.ts +1 -0
  3. package/dist/adapters/iterm/sessions.d.ts.map +1 -1
  4. package/dist/adapters/iterm/sessions.js +23 -0
  5. package/dist/adapters/iterm/sessions.js.map +1 -1
  6. package/dist/adapters/pailot/gateway.d.ts.map +1 -1
  7. package/dist/adapters/pailot/gateway.js +267 -52
  8. package/dist/adapters/pailot/gateway.js.map +1 -1
  9. package/dist/aibp/bridge.d.ts +123 -0
  10. package/dist/aibp/bridge.d.ts.map +1 -0
  11. package/dist/aibp/bridge.js +363 -0
  12. package/dist/aibp/bridge.js.map +1 -0
  13. package/dist/aibp/envelope.d.ts +26 -0
  14. package/dist/aibp/envelope.d.ts.map +1 -0
  15. package/dist/aibp/envelope.js +101 -0
  16. package/dist/aibp/envelope.js.map +1 -0
  17. package/dist/aibp/index.d.ts +11 -0
  18. package/dist/aibp/index.d.ts.map +1 -0
  19. package/dist/aibp/index.js +10 -0
  20. package/dist/aibp/index.js.map +1 -0
  21. package/dist/aibp/registry.d.ts +71 -0
  22. package/dist/aibp/registry.d.ts.map +1 -0
  23. package/dist/aibp/registry.js +408 -0
  24. package/dist/aibp/registry.js.map +1 -0
  25. package/dist/aibp/types.d.ts +91 -0
  26. package/dist/aibp/types.d.ts.map +1 -0
  27. package/dist/aibp/types.js +8 -0
  28. package/dist/aibp/types.js.map +1 -0
  29. package/dist/core/state.d.ts +12 -0
  30. package/dist/core/state.d.ts.map +1 -1
  31. package/dist/core/state.js +34 -0
  32. package/dist/core/state.js.map +1 -1
  33. package/dist/daemon/adapter-registry.d.ts.map +1 -1
  34. package/dist/daemon/adapter-registry.js +32 -3
  35. package/dist/daemon/adapter-registry.js.map +1 -1
  36. package/dist/daemon/command-context.d.ts +4 -0
  37. package/dist/daemon/command-context.d.ts.map +1 -1
  38. package/dist/daemon/commands.d.ts.map +1 -1
  39. package/dist/daemon/commands.js +239 -22
  40. package/dist/daemon/commands.js.map +1 -1
  41. package/dist/daemon/core-handlers.d.ts.map +1 -1
  42. package/dist/daemon/core-handlers.js +276 -15
  43. package/dist/daemon/core-handlers.js.map +1 -1
  44. package/dist/daemon/image-context.d.ts +56 -0
  45. package/dist/daemon/image-context.d.ts.map +1 -0
  46. package/dist/daemon/image-context.js +116 -0
  47. package/dist/daemon/image-context.js.map +1 -0
  48. package/dist/daemon/image-gen/index.d.ts +22 -0
  49. package/dist/daemon/image-gen/index.d.ts.map +1 -0
  50. package/dist/daemon/image-gen/index.js +129 -0
  51. package/dist/daemon/image-gen/index.js.map +1 -0
  52. package/dist/daemon/image-gen/providers/cloudflare.d.ts +13 -0
  53. package/dist/daemon/image-gen/providers/cloudflare.d.ts.map +1 -0
  54. package/dist/daemon/image-gen/providers/cloudflare.js +63 -0
  55. package/dist/daemon/image-gen/providers/cloudflare.js.map +1 -0
  56. package/dist/daemon/image-gen/providers/huggingface.d.ts +12 -0
  57. package/dist/daemon/image-gen/providers/huggingface.d.ts.map +1 -0
  58. package/dist/daemon/image-gen/providers/huggingface.js +58 -0
  59. package/dist/daemon/image-gen/providers/huggingface.js.map +1 -0
  60. package/dist/daemon/image-gen/providers/pollinations.d.ts +11 -0
  61. package/dist/daemon/image-gen/providers/pollinations.d.ts.map +1 -0
  62. package/dist/daemon/image-gen/providers/pollinations.js +39 -0
  63. package/dist/daemon/image-gen/providers/pollinations.js.map +1 -0
  64. package/dist/daemon/image-gen/providers/replicate.d.ts +9 -0
  65. package/dist/daemon/image-gen/providers/replicate.d.ts.map +1 -0
  66. package/dist/daemon/image-gen/providers/replicate.js +158 -0
  67. package/dist/daemon/image-gen/providers/replicate.js.map +1 -0
  68. package/dist/daemon/image-gen/types.d.ts +41 -0
  69. package/dist/daemon/image-gen/types.d.ts.map +1 -0
  70. package/dist/daemon/image-gen/types.js +5 -0
  71. package/dist/daemon/image-gen/types.js.map +1 -0
  72. package/dist/daemon/index.d.ts.map +1 -1
  73. package/dist/daemon/index.js +157 -4
  74. package/dist/daemon/index.js.map +1 -1
  75. package/dist/index.d.ts +1 -1
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +1 -1
  78. package/dist/index.js.map +1 -1
  79. package/dist/mcp/index.js +129 -2
  80. package/dist/mcp/index.js.map +1 -1
  81. package/package.json +1 -1
  82. package/dist/adapters/pailot/gateway (SFConflict mnott 2026-03-06-21-13-56).d.ts +0 -49
  83. package/dist/adapters/pailot/gateway (SFConflict mnott 2026-03-06-21-13-56).d.ts.map +0 -1
  84. package/dist/adapters/pailot/gateway (SFConflict mnott 2026-03-06-21-13-56).js +0 -632
  85. package/dist/adapters/pailot/gateway (SFConflict mnott 2026-03-06-21-13-56).js.map +0 -1
  86. package/dist/adapters/pailot/gateway (SFConflict mnott 2026-03-06-21-13-59).js +0 -632
  87. package/dist/adapters/pailot/gateway (SFConflict mnott 2026-03-06-21-15-36).d.ts +0 -49
  88. package/dist/adapters/pailot/gateway (SFConflict mnott 2026-03-06-21-15-36).d.ts.map +0 -1
  89. package/dist/adapters/pailot/gateway (SFConflict mnott 2026-03-06-21-15-36).js +0 -614
  90. package/dist/adapters/pailot/gateway (SFConflict mnott 2026-03-06-21-15-36).js.map +0 -1
  91. package/dist/adapters/pailot/gateway (SFConflict mnott 2026-03-06-21-15-46).js +0 -614
  92. package/dist/adapters/pailot/gateway.d.ts (SFConflict mnott 2026-03-06-21-13-59).map +0 -1
  93. package/dist/adapters/pailot/gateway.d.ts (SFConflict mnott 2026-03-06-21-15-46).map +0 -1
  94. package/dist/adapters/pailot/gateway.js (SFConflict mnott 2026-03-06-21-13-59).map +0 -1
  95. package/dist/adapters/pailot/gateway.js (SFConflict mnott 2026-03-06-21-15-46).map +0 -1
  96. package/dist/daemon/adapter-registry (SFConflict mnott 2026-03-06-21-15-36).d.ts +0 -63
  97. package/dist/daemon/adapter-registry (SFConflict mnott 2026-03-06-21-15-36).d.ts.map +0 -1
  98. package/dist/daemon/adapter-registry (SFConflict mnott 2026-03-06-21-15-36).js +0 -229
  99. package/dist/daemon/adapter-registry (SFConflict mnott 2026-03-06-21-15-36).js.map +0 -1
  100. package/dist/daemon/image-gen.d.ts +0 -28
  101. package/dist/daemon/image-gen.d.ts.map +0 -1
  102. package/dist/daemon/image-gen.js +0 -97
  103. package/dist/daemon/image-gen.js.map +0 -1
  104. package/dist/daemon/screenshot (SFConflict mnott 2026-03-06-21-13-56).d.ts +0 -12
  105. package/dist/daemon/screenshot (SFConflict mnott 2026-03-06-21-13-56).d.ts.map +0 -1
  106. package/dist/daemon/screenshot (SFConflict mnott 2026-03-06-21-13-56).js +0 -252
  107. package/dist/daemon/screenshot (SFConflict mnott 2026-03-06-21-13-56).js.map +0 -1
  108. package/dist/daemon/screenshot (SFConflict mnott 2026-03-06-21-13-59).js +0 -252
  109. package/dist/daemon/screenshot (SFConflict mnott 2026-03-06-21-15-36).d.ts +0 -12
  110. package/dist/daemon/screenshot (SFConflict mnott 2026-03-06-21-15-36).d.ts.map +0 -1
  111. package/dist/daemon/screenshot (SFConflict mnott 2026-03-06-21-15-36).js +0 -240
  112. package/dist/daemon/screenshot (SFConflict mnott 2026-03-06-21-15-36).js.map +0 -1
  113. package/dist/daemon/screenshot (SFConflict mnott 2026-03-06-21-15-46).js +0 -240
  114. package/dist/daemon/screenshot.d.ts (SFConflict mnott 2026-03-06-21-13-59).map +0 -1
  115. package/dist/daemon/screenshot.d.ts (SFConflict mnott 2026-03-06-21-15-46).map +0 -1
  116. package/dist/daemon/screenshot.js (SFConflict mnott 2026-03-06-21-13-59).map +0 -1
  117. package/dist/daemon/screenshot.js (SFConflict mnott 2026-03-06-21-15-46).map +0 -1
  118. package/dist/mcp/index (SFConflict mnott 2026-03-06-21-13-56).d.ts +0 -23
  119. package/dist/mcp/index (SFConflict mnott 2026-03-06-21-13-56).d.ts.map +0 -1
  120. package/dist/mcp/index (SFConflict mnott 2026-03-06-21-13-56).js +0 -595
  121. package/dist/mcp/index (SFConflict mnott 2026-03-06-21-13-56).js.map +0 -1
  122. package/dist/mcp/index (SFConflict mnott 2026-03-06-21-13-59).js +0 -595
  123. package/dist/mcp/index (SFConflict mnott 2026-03-06-21-15-36).d.ts +0 -23
  124. package/dist/mcp/index (SFConflict mnott 2026-03-06-21-15-36).d.ts.map +0 -1
  125. package/dist/mcp/index (SFConflict mnott 2026-03-06-21-15-36).js +0 -592
  126. package/dist/mcp/index (SFConflict mnott 2026-03-06-21-15-36).js.map +0 -1
  127. package/dist/mcp/index (SFConflict mnott 2026-03-06-21-15-46).js +0 -592
  128. package/dist/mcp/index.js (SFConflict mnott 2026-03-06-21-13-59).map +0 -1
  129. package/dist/mcp/index.js (SFConflict mnott 2026-03-06-21-15-46).map +0 -1
@@ -0,0 +1,408 @@
1
+ /**
2
+ * AIBP Plugin Registry — manages plugin connections, channels, and routing.
3
+ *
4
+ * This is the hub's brain. It knows:
5
+ * - Which plugins are registered and their capabilities
6
+ * - Which channels exist and who has joined them
7
+ * - Where to route each message based on dst address
8
+ * - What to buffer when a recipient is offline
9
+ */
10
+ import { log } from "../core/log.js";
11
+ import * as envelope from "./envelope.js";
12
+ const MAX_OUTBOX = 50;
13
+ const HEARTBEAT_INTERVAL_MS = 30_000;
14
+ const HEARTBEAT_MISS_DEGRADED = 3;
15
+ const HEARTBEAT_MISS_DEAD = 5;
16
+ export class PluginRegistry {
17
+ /** address → connection */
18
+ plugins = new Map();
19
+ /** channel name → membership */
20
+ channels = new Map();
21
+ /** command name → plugin address */
22
+ commands = new Map();
23
+ // -------------------------------------------------------------------------
24
+ // Plugin lifecycle
25
+ // -------------------------------------------------------------------------
26
+ /**
27
+ * Register a plugin. Returns the REGISTER_ACK message to send back,
28
+ * or an ERROR message if registration fails.
29
+ */
30
+ register(spec, send) {
31
+ const address = this.resolveAddress(spec);
32
+ // Reject duplicate
33
+ if (this.plugins.has(address)) {
34
+ log(`[AIBP] REGISTER rejected: ${address} already registered`);
35
+ return envelope.system("hub:local", address, "ERROR", {
36
+ code: "REGISTER_REJECTED",
37
+ reason: `Plugin address ${address} already registered`,
38
+ });
39
+ }
40
+ const plugin = {
41
+ spec,
42
+ address,
43
+ connectedAt: Date.now(),
44
+ missedPings: 0,
45
+ status: "active",
46
+ joinedChannels: new Set(),
47
+ };
48
+ this.plugins.set(address, { plugin, send });
49
+ // Register commands
50
+ if (spec.commands) {
51
+ for (const cmd of spec.commands) {
52
+ this.commands.set(cmd.name, address);
53
+ }
54
+ }
55
+ // Auto-join declared channels
56
+ for (const ch of spec.channels) {
57
+ this.join(address, ch);
58
+ }
59
+ log(`[AIBP] REGISTER ${spec.type}:${spec.id} → ${address}`);
60
+ const peers = Array.from(this.plugins.keys()).filter((a) => a !== address);
61
+ return envelope.system("hub:local", address, "REGISTER_ACK", {
62
+ assignedAddress: address,
63
+ hubVersion: "0.1",
64
+ peers,
65
+ });
66
+ }
67
+ /**
68
+ * Unregister a plugin (graceful disconnect or crash cleanup).
69
+ */
70
+ unregister(address, reason = "disconnected") {
71
+ const conn = this.plugins.get(address);
72
+ if (!conn)
73
+ return;
74
+ // Part all joined channels
75
+ for (const ch of conn.plugin.joinedChannels) {
76
+ this.part(address, ch, reason);
77
+ }
78
+ // Remove commands
79
+ if (conn.plugin.spec.commands) {
80
+ for (const cmd of conn.plugin.spec.commands) {
81
+ if (this.commands.get(cmd.name) === address) {
82
+ this.commands.delete(cmd.name);
83
+ }
84
+ }
85
+ }
86
+ this.plugins.delete(address);
87
+ log(`[AIBP] UNREGISTER ${address} (${reason})`);
88
+ // Notify all remaining plugins
89
+ for (const [, other] of this.plugins) {
90
+ other.send(envelope.system("hub:local", other.plugin.address, "PLUGIN_OFFLINE", {
91
+ plugin: address,
92
+ reason,
93
+ }));
94
+ }
95
+ }
96
+ // -------------------------------------------------------------------------
97
+ // Channel management
98
+ // -------------------------------------------------------------------------
99
+ /**
100
+ * Join a channel. Creates the channel if it doesn't exist.
101
+ */
102
+ join(address, channel) {
103
+ let membership = this.channels.get(channel);
104
+ if (!membership) {
105
+ membership = { channel, members: new Set(), outbox: [] };
106
+ this.channels.set(channel, membership);
107
+ }
108
+ membership.members.add(address);
109
+ const conn = this.plugins.get(address);
110
+ if (conn) {
111
+ conn.plugin.joinedChannels.add(channel);
112
+ }
113
+ log(`[AIBP] JOIN ${address} → ${channel} (${membership.members.size} members)`);
114
+ // Drain outbox for this member
115
+ const buffered = membership.outbox.length;
116
+ if (buffered > 0) {
117
+ this.drainOutbox(address, channel);
118
+ }
119
+ return envelope.system("hub:local", address, "JOIN_ACK", {
120
+ channel,
121
+ members: Array.from(membership.members),
122
+ unreadCount: buffered,
123
+ });
124
+ }
125
+ /**
126
+ * Part a channel.
127
+ */
128
+ part(address, channel, reason = "left") {
129
+ const membership = this.channels.get(channel);
130
+ if (membership) {
131
+ membership.members.delete(address);
132
+ // Clean up empty channels (except persistent session channels)
133
+ if (membership.members.size === 0 && !channel.startsWith("session:")) {
134
+ this.channels.delete(channel);
135
+ }
136
+ }
137
+ const conn = this.plugins.get(address);
138
+ if (conn) {
139
+ conn.plugin.joinedChannels.delete(channel);
140
+ }
141
+ log(`[AIBP] PART ${address} ← ${channel} (${reason})`);
142
+ return envelope.system("hub:local", address, "PART_ACK", {
143
+ channel,
144
+ reason,
145
+ });
146
+ }
147
+ // -------------------------------------------------------------------------
148
+ // Message routing — the core of AIBP
149
+ // -------------------------------------------------------------------------
150
+ /**
151
+ * Route a message to its destination.
152
+ *
153
+ * Routing rules:
154
+ * 1. If dst is a direct address (plugin/session/mobile), deliver to that plugin
155
+ * 2. If dst is a channel, fan out to all members
156
+ * 3. If dst is "hub:local", handle as a hub command
157
+ * 4. If dst contains "/" (mesh), forward to bridge plugin
158
+ * 5. If recipient is offline, buffer in outbox
159
+ */
160
+ route(msg) {
161
+ const { dst } = msg;
162
+ // Mesh routing — forward to the appropriate bridge
163
+ const mesh = envelope.parseMeshAddress(dst);
164
+ if (mesh) {
165
+ this.routeToMesh(msg, mesh.hub, mesh.local);
166
+ return;
167
+ }
168
+ // Hub command
169
+ if (dst === "hub:local") {
170
+ this.handleHubMessage(msg);
171
+ return;
172
+ }
173
+ // Direct plugin address
174
+ const directConn = this.plugins.get(dst);
175
+ if (directConn) {
176
+ directConn.send(msg);
177
+ return;
178
+ }
179
+ // Channel fan-out
180
+ const membership = this.channels.get(dst);
181
+ if (membership) {
182
+ this.fanOut(msg, membership);
183
+ return;
184
+ }
185
+ // Try to match as a session channel
186
+ if (dst.startsWith("session:")) {
187
+ // Auto-create the channel and buffer
188
+ const newMembership = {
189
+ channel: dst,
190
+ members: new Set(),
191
+ outbox: [],
192
+ };
193
+ this.channels.set(dst, newMembership);
194
+ this.bufferMessage(newMembership, msg);
195
+ return;
196
+ }
197
+ log(`[AIBP] ROUTE FAIL: no destination for ${dst} (from ${msg.src})`);
198
+ }
199
+ fanOut(msg, membership) {
200
+ membership.lastMessageId = msg.id;
201
+ membership.lastMessageTs = msg.ts;
202
+ let delivered = 0;
203
+ for (const member of membership.members) {
204
+ // Don't echo back to sender
205
+ if (member === msg.src)
206
+ continue;
207
+ const conn = this.plugins.get(member);
208
+ if (conn) {
209
+ conn.send(msg);
210
+ delivered++;
211
+ }
212
+ }
213
+ // Buffer for offline members who have joined this channel before
214
+ if (delivered === 0 && membership.members.size === 0) {
215
+ this.bufferMessage(membership, msg);
216
+ }
217
+ }
218
+ routeToMesh(msg, hubAddress, localDst) {
219
+ // Extract the hub ID from hub address (e.g., "hub:mac-mini" → "mac-mini")
220
+ const hubId = hubAddress.startsWith("hub:") ? hubAddress.slice(4) : hubAddress;
221
+ // Try to find the specific bridge for this hub first
222
+ const specificBridge = this.plugins.get(`bridge:${hubId}`);
223
+ if (specificBridge) {
224
+ specificBridge.send(msg);
225
+ return;
226
+ }
227
+ // Fallback: find any bridge plugin
228
+ for (const [, conn] of this.plugins) {
229
+ if (conn.plugin.spec.type === "bridge") {
230
+ conn.send(msg);
231
+ return;
232
+ }
233
+ }
234
+ log(`[AIBP] MESH FAIL: no bridge plugin for ${hubAddress}`);
235
+ }
236
+ handleHubMessage(msg) {
237
+ if (msg.type === "COMMAND") {
238
+ const payload = msg.payload;
239
+ const cmdOwner = this.commands.get(payload.command);
240
+ if (cmdOwner) {
241
+ const conn = this.plugins.get(cmdOwner);
242
+ if (conn) {
243
+ conn.send(msg);
244
+ return;
245
+ }
246
+ }
247
+ // Built-in hub commands
248
+ this.handleBuiltinCommand(msg, payload.command, payload.args);
249
+ return;
250
+ }
251
+ if (msg.type === "SYSTEM") {
252
+ const payload = msg.payload;
253
+ if (payload.event === "PING") {
254
+ const conn = this.plugins.get(msg.src);
255
+ if (conn) {
256
+ conn.plugin.lastPing = Date.now();
257
+ conn.plugin.missedPings = 0;
258
+ conn.plugin.status = "active";
259
+ conn.send(envelope.system("hub:local", msg.src, "PONG"));
260
+ }
261
+ }
262
+ }
263
+ }
264
+ handleBuiltinCommand(msg, cmd, args) {
265
+ const src = msg.src;
266
+ switch (cmd) {
267
+ case "list_channels": {
268
+ const channels = Array.from(this.channels.entries()).map(([name, m]) => ({
269
+ name,
270
+ members: m.members.size,
271
+ lastActivity: m.lastMessageTs,
272
+ outboxSize: m.outbox.length,
273
+ }));
274
+ const reply = envelope.system("hub:local", src, "REGISTER_ACK", { channels });
275
+ this.sendTo(src, reply);
276
+ break;
277
+ }
278
+ case "list_plugins": {
279
+ const plugins = Array.from(this.plugins.entries()).map(([addr, c]) => ({
280
+ address: addr,
281
+ type: c.plugin.spec.type,
282
+ name: c.plugin.spec.name,
283
+ status: c.plugin.status,
284
+ channels: Array.from(c.plugin.joinedChannels),
285
+ }));
286
+ const reply = envelope.system("hub:local", src, "REGISTER_ACK", { plugins });
287
+ this.sendTo(src, reply);
288
+ break;
289
+ }
290
+ default:
291
+ log(`[AIBP] Unknown hub command: ${cmd}`);
292
+ this.sendTo(src, envelope.system("hub:local", src, "ERROR", {
293
+ code: "UNKNOWN_COMMAND",
294
+ command: cmd,
295
+ }));
296
+ }
297
+ }
298
+ // -------------------------------------------------------------------------
299
+ // Outbox
300
+ // -------------------------------------------------------------------------
301
+ bufferMessage(membership, msg) {
302
+ // Don't buffer typing indicators or pings
303
+ if (msg.type === "TYPING" || msg.type === "SYSTEM")
304
+ return;
305
+ if (membership.outbox.length >= MAX_OUTBOX) {
306
+ membership.outbox.shift(); // Drop oldest
307
+ }
308
+ membership.outbox.push(msg);
309
+ log(`[AIBP] OUTBOX ${msg.dst}: ${membership.outbox.length} buffered`);
310
+ }
311
+ drainOutbox(address, channel) {
312
+ const membership = this.channels.get(channel);
313
+ if (!membership || membership.outbox.length === 0)
314
+ return;
315
+ const conn = this.plugins.get(address);
316
+ if (!conn)
317
+ return;
318
+ const count = membership.outbox.length;
319
+ // Send drain header
320
+ conn.send(envelope.system("hub:local", address, "OUTBOX_DRAIN", {
321
+ channel,
322
+ count,
323
+ summary: `${count} message${count > 1 ? "s" : ""} while offline`,
324
+ }));
325
+ // Deliver buffered messages
326
+ for (const msg of membership.outbox) {
327
+ conn.send(msg);
328
+ }
329
+ membership.outbox = [];
330
+ log(`[AIBP] OUTBOX DRAIN ${channel} → ${address}: ${count} messages`);
331
+ }
332
+ // -------------------------------------------------------------------------
333
+ // Heartbeat monitoring
334
+ // -------------------------------------------------------------------------
335
+ /**
336
+ * Call periodically (e.g., every 30s) to check plugin health.
337
+ */
338
+ heartbeatCheck() {
339
+ for (const [address, conn] of this.plugins) {
340
+ conn.plugin.missedPings++;
341
+ if (conn.plugin.missedPings >= HEARTBEAT_MISS_DEAD) {
342
+ log(`[AIBP] Plugin dead: ${address} (${conn.plugin.missedPings} missed pings)`);
343
+ this.unregister(address, "heartbeat timeout");
344
+ }
345
+ else if (conn.plugin.missedPings >= HEARTBEAT_MISS_DEGRADED) {
346
+ conn.plugin.status = "degraded";
347
+ log(`[AIBP] Plugin degraded: ${address}`);
348
+ }
349
+ }
350
+ }
351
+ // -------------------------------------------------------------------------
352
+ // Queries
353
+ // -------------------------------------------------------------------------
354
+ getPlugin(address) {
355
+ return this.plugins.get(address)?.plugin;
356
+ }
357
+ getChannel(channel) {
358
+ return this.channels.get(channel);
359
+ }
360
+ getPluginByType(type) {
361
+ return Array.from(this.plugins.values())
362
+ .filter((c) => c.plugin.spec.type === type)
363
+ .map((c) => c.plugin);
364
+ }
365
+ getCommandOwner(command) {
366
+ return this.commands.get(command);
367
+ }
368
+ listPlugins() {
369
+ return Array.from(this.plugins.values()).map((c) => c.plugin);
370
+ }
371
+ listChannels() {
372
+ return Array.from(this.channels.values());
373
+ }
374
+ listCommands() {
375
+ return Array.from(this.commands.entries()).map(([name, owner]) => {
376
+ const conn = this.plugins.get(owner);
377
+ const spec = conn?.plugin.spec.commands?.find((c) => c.name === name);
378
+ return { name, owner, spec };
379
+ });
380
+ }
381
+ // -------------------------------------------------------------------------
382
+ // Internal helpers
383
+ // -------------------------------------------------------------------------
384
+ sendTo(address, msg) {
385
+ const conn = this.plugins.get(address);
386
+ if (conn)
387
+ conn.send(msg);
388
+ }
389
+ resolveAddress(spec) {
390
+ switch (spec.type) {
391
+ case "transport":
392
+ return `transport:${spec.id}`;
393
+ case "terminal":
394
+ return `terminal:${spec.id}`;
395
+ case "mobile":
396
+ return `mobile:${spec.id}`;
397
+ case "bridge":
398
+ return `bridge:${spec.id}`;
399
+ case "mcp":
400
+ return `mcp:${spec.id}`;
401
+ case "hub":
402
+ return `hub:${spec.id}`;
403
+ default:
404
+ return `plugin:${spec.id}`;
405
+ }
406
+ }
407
+ }
408
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/aibp/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * AIBP — AIBroker Interchange Protocol
3
+ *
4
+ * Canonical types for the protocol. Source of truth is SPEC-aibp-protocol.md.
5
+ * Every message has explicit src/dst addressing — no guessing.
6
+ */
7
+ export type MessageType = "TEXT" | "VOICE" | "IMAGE" | "COMMAND" | "SYSTEM" | "TYPING" | "STATUS" | "FILE";
8
+ export type SystemEvent = "REGISTER" | "REGISTER_ACK" | "JOIN" | "JOIN_ACK" | "PART" | "PART_ACK" | "PING" | "PONG" | "ERROR" | "SHUTDOWN" | "OUTBOX_DRAIN" | "PLUGIN_OFFLINE";
9
+ export interface TextPayload {
10
+ content: string;
11
+ }
12
+ export interface VoicePayload {
13
+ audioBase64: string;
14
+ transcript: string;
15
+ transcriptConfidence?: number;
16
+ durationMs?: number;
17
+ }
18
+ export interface ImagePayload {
19
+ imageBase64: string;
20
+ mimeType: string;
21
+ caption?: string;
22
+ }
23
+ export interface TypingPayload {
24
+ active: boolean;
25
+ }
26
+ export interface StatusPayload {
27
+ subject: string;
28
+ state: "idle" | "busy" | "error" | "disconnected";
29
+ summary?: string;
30
+ }
31
+ export interface CommandPayload {
32
+ command: string;
33
+ args: Record<string, unknown>;
34
+ }
35
+ export interface SystemPayload {
36
+ event: SystemEvent;
37
+ [key: string]: unknown;
38
+ }
39
+ export interface FilePayload {
40
+ filename: string;
41
+ mimeType: string;
42
+ dataBase64?: string;
43
+ path?: string;
44
+ sizeBytes?: number;
45
+ }
46
+ export type AibpPayload = TextPayload | VoicePayload | ImagePayload | TypingPayload | StatusPayload | CommandPayload | SystemPayload | FilePayload;
47
+ export interface AibpMessage<P extends AibpPayload = AibpPayload> {
48
+ aibp: "0.1";
49
+ id: string;
50
+ ts: number;
51
+ src: string;
52
+ dst: string;
53
+ type: MessageType;
54
+ payload: P;
55
+ }
56
+ export type PluginType = "transport" | "terminal" | "mobile" | "bridge" | "mcp" | "hub";
57
+ export interface CommandSpec {
58
+ name: string;
59
+ description: string;
60
+ args: string;
61
+ subcommands?: CommandSpec[];
62
+ }
63
+ export interface PluginSpec {
64
+ id: string;
65
+ type: PluginType;
66
+ name: string;
67
+ version?: string;
68
+ capabilities: MessageType[];
69
+ channels: string[];
70
+ commands?: CommandSpec[];
71
+ }
72
+ export interface PluginAuth {
73
+ token?: string;
74
+ }
75
+ export interface ChannelMembership {
76
+ channel: string;
77
+ members: Set<string>;
78
+ lastMessageId?: string;
79
+ lastMessageTs?: number;
80
+ outbox: AibpMessage[];
81
+ }
82
+ export interface RegisteredPlugin {
83
+ spec: PluginSpec;
84
+ address: string;
85
+ connectedAt: number;
86
+ lastPing?: number;
87
+ missedPings: number;
88
+ status: "active" | "degraded" | "dead";
89
+ joinedChannels: Set<string>;
90
+ }
91
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/aibp/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * AIBP — AIBroker Interchange Protocol
3
+ *
4
+ * Canonical types for the protocol. Source of truth is SPEC-aibp-protocol.md.
5
+ * Every message has explicit src/dst addressing — no guessing.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/aibp/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -14,6 +14,8 @@ export declare const managedSessions: Map<string, {
14
14
  export declare const sessionTtyCache: Map<string, string>;
15
15
  export declare let activeClientId: string | null;
16
16
  export declare let activeItermSessionId: string;
17
+ export declare let lastRoutedSessionId: string;
18
+ export declare function setLastRoutedSessionId(id: string): void;
17
19
  export declare function setActiveClientId(id: string | null): void;
18
20
  export declare function setActiveItermSessionId(id: string): void;
19
21
  export declare function updateSessionTtyCache(entries: Array<{
@@ -36,6 +38,9 @@ export declare const contactMessageQueues: Map<string, QueuedMessage[]>;
36
38
  export declare const contactDirectory: Map<string, ContactEntry>;
37
39
  export declare let voiceConfig: VoiceConfig;
38
40
  export declare function setVoiceConfig(cfg: VoiceConfig): void;
41
+ import type { AibpBridge } from "../aibp/bridge.js";
42
+ export declare function setAibpBridge(bridge: AibpBridge): void;
43
+ export declare function getAibpBridge(): AibpBridge | null;
39
44
  export type CommandHandler = (text: string, timestamp: number) => void | Promise<void>;
40
45
  export declare let commandHandler: CommandHandler | null;
41
46
  export declare function setCommandHandler(handler: CommandHandler | null): void;
@@ -43,6 +48,13 @@ export type MessageSource = string;
43
48
  export declare let messageSource: MessageSource;
44
49
  export declare function setMessageSource(src: MessageSource): void;
45
50
  export declare const sentMessageIds: Set<string | number>;
51
+ export interface MailboxMessage {
52
+ from: string;
53
+ content: string;
54
+ timestamp: number;
55
+ }
56
+ export declare function depositToSessionMailbox(itermSessionId: string, from: string, content: string): void;
57
+ export declare function drainSessionMailbox(itermSessionId: string): MailboxMessage[];
46
58
  export declare function dispatchIncomingMessage(body: string, timestamp: number): void;
47
59
  export declare function enqueueContactMessage(contactId: string, body: string, timestamp: number): void;
48
60
  //# sourceMappingURL=state.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/core/state.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAI3B,eAAO,MAAM,eAAe,gCAAuC,CAAC;AACpE,eAAO,MAAM,eAAe;UAA2B,MAAM;eAAa,MAAM;EAAK,CAAC;AACtF,eAAO,MAAM,eAAe,qBAA4B,CAAC;AAEzD,eAAO,IAAI,cAAc,EAAE,MAAM,GAAG,IAAW,CAAC;AAChD,eAAO,IAAI,oBAAoB,QAAK,CAAC;AAErC,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAEzD;AAED,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAExD;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,IAAI,CAIvF;AAID,eAAO,IAAI,iBAAiB,EAAE,KAAK,CAAC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC5B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC,GAAG,IAAW,CAAC;AAEjB,eAAO,IAAI,qBAAqB,QAAI,CAAC;AAErC,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,iBAAiB,EAC9B,IAAI,EAAE,MAAM,GACX,IAAI,CAGN;AAID,eAAO,MAAM,YAAY,8BAAqC,CAAC;AAC/D,eAAO,MAAM,aAAa,6BAAoC,CAAC;AAC/D,eAAO,MAAM,oBAAoB,8BAAqC,CAAC;AAIvE,eAAO,MAAM,gBAAgB,2BAAkC,CAAC;AAIhE,eAAO,IAAI,WAAW,EAAE,WAKvB,CAAC;AAEF,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAErD;AAID,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEvF,eAAO,IAAI,cAAc,EAAE,cAAc,GAAG,IAAW,CAAC;AAExD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI,CAEtE;AAID,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AACnC,eAAO,IAAI,aAAa,EAAE,aAA0B,CAAC;AAErD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAEzD;AAID,eAAO,MAAM,cAAc,sBAA6B,CAAC;AAIzD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAiB7E;AAED,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,IAAI,CAON"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/core/state.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,13 @@ export const managedSessions = new Map();
11
11
  export const sessionTtyCache = new Map();
12
12
  export let activeClientId = null;
13
13
  export let activeItermSessionId = "";
14
+ // Track the session that last received user input from PAILot.
15
+ // Used to tag responses correctly even if the user switches sessions
16
+ // before the response arrives (race condition prevention).
17
+ export let lastRoutedSessionId = "";
18
+ export function setLastRoutedSessionId(id) {
19
+ lastRoutedSessionId = id;
20
+ }
14
21
  export function setActiveClientId(id) {
15
22
  activeClientId = id;
16
23
  }
@@ -46,6 +53,13 @@ export let voiceConfig = {
46
53
  export function setVoiceConfig(cfg) {
47
54
  voiceConfig = cfg;
48
55
  }
56
+ let _aibpBridge = null;
57
+ export function setAibpBridge(bridge) {
58
+ _aibpBridge = bridge;
59
+ }
60
+ export function getAibpBridge() {
61
+ return _aibpBridge;
62
+ }
49
63
  export let commandHandler = null;
50
64
  export function setCommandHandler(handler) {
51
65
  commandHandler = handler;
@@ -56,6 +70,26 @@ export function setMessageSource(src) {
56
70
  }
57
71
  // ── Self-Echo Suppression ──
58
72
  export const sentMessageIds = new Set();
73
+ const sessionMailboxes = new Map();
74
+ const MAX_MAILBOX = 100;
75
+ export function depositToSessionMailbox(itermSessionId, from, content) {
76
+ let queue = sessionMailboxes.get(itermSessionId);
77
+ if (!queue) {
78
+ queue = [];
79
+ sessionMailboxes.set(itermSessionId, queue);
80
+ }
81
+ if (queue.length >= MAX_MAILBOX) {
82
+ queue.shift(); // drop oldest
83
+ }
84
+ queue.push({ from, content, timestamp: Date.now() });
85
+ }
86
+ export function drainSessionMailbox(itermSessionId) {
87
+ const queue = sessionMailboxes.get(itermSessionId);
88
+ if (!queue || queue.length === 0)
89
+ return [];
90
+ const messages = queue.splice(0);
91
+ return messages;
92
+ }
59
93
  // ── Message Dispatch ──
60
94
  export function dispatchIncomingMessage(body, timestamp) {
61
95
  if (!activeClientId)
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/core/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/core/state.ts"],"names":[],"mappings":"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"}