@grovina/brian 0.2.2 → 0.2.4

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 (43) hide show
  1. package/dist/agent.js +57 -13
  2. package/dist/agent.js.map +1 -1
  3. package/dist/channels/slack-tools.js +96 -0
  4. package/dist/channels/slack-tools.js.map +1 -0
  5. package/dist/channels/slack.js +44 -3
  6. package/dist/channels/slack.js.map +1 -1
  7. package/dist/channels/telegram-tools.js +60 -0
  8. package/dist/channels/telegram-tools.js.map +1 -0
  9. package/dist/channels/telegram.js +58 -5
  10. package/dist/channels/telegram.js.map +1 -1
  11. package/dist/client.js +15 -2
  12. package/dist/client.js.map +1 -1
  13. package/dist/downloads/resolve.js +21 -0
  14. package/dist/downloads/resolve.js.map +1 -0
  15. package/dist/downloads/save.js +36 -0
  16. package/dist/downloads/save.js.map +1 -0
  17. package/dist/downloads/ttl.js +39 -0
  18. package/dist/downloads/ttl.js.map +1 -0
  19. package/dist/model.js +73 -10
  20. package/dist/model.js.map +1 -1
  21. package/dist/start.js +63 -23
  22. package/dist/start.js.map +1 -1
  23. package/dist/tools/channel-history-tool.js +38 -0
  24. package/dist/tools/channel-history-tool.js.map +1 -0
  25. package/dist/tools/channel-router.js +2 -0
  26. package/dist/tools/channel-router.js.map +1 -0
  27. package/dist/tools/mcp.js +149 -0
  28. package/dist/tools/mcp.js.map +1 -0
  29. package/dist/tools/read-image.js +50 -0
  30. package/dist/tools/read-image.js.map +1 -0
  31. package/dist/tools/registry.js +23 -0
  32. package/dist/tools/registry.js.map +1 -0
  33. package/dist/tools/wait.js +25 -2
  34. package/dist/tools/wait.js.map +1 -1
  35. package/dist/tools/web.js +237 -0
  36. package/dist/tools/web.js.map +1 -0
  37. package/dist/web/playwright-session.js +59 -0
  38. package/dist/web/playwright-session.js.map +1 -0
  39. package/dist/web/url-policy.js +117 -0
  40. package/dist/web/url-policy.js.map +1 -0
  41. package/package.json +6 -2
  42. package/dist/tools/communication.js +0 -132
  43. package/dist/tools/communication.js.map +0 -1
@@ -0,0 +1,21 @@
1
+ import fs from 'fs/promises';
2
+ import path from 'path';
3
+ import { downloadsRoot } from './save.js';
4
+ /**
5
+ * Ensures the path is a real file under stateDir/downloads (after resolving symlinks).
6
+ */
7
+ export async function assertDownloadsImagePath(stateDir, userPath) {
8
+ const trimmed = userPath.trim();
9
+ const resolved = path.resolve(trimmed);
10
+ const root = downloadsRoot(stateDir);
11
+ const rootWithSep = root.endsWith(path.sep) ? root : root + path.sep;
12
+ const real = await fs.realpath(resolved).catch(() => resolved);
13
+ if (real !== root && !real.startsWith(rootWithSep)) {
14
+ throw new Error('Image path must be under Brian state downloads (use the absolute path from [image: …] in updates).');
15
+ }
16
+ const st = await fs.stat(real);
17
+ if (!st.isFile())
18
+ throw new Error('Not a file.');
19
+ return real;
20
+ }
21
+ //# sourceMappingURL=resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/downloads/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,QAAgB,EAAE,QAAgB;IAC/E,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;IACrE,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC/D,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACb,oGAAoG,CACrG,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IACjD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,36 @@
1
+ import fs from 'fs/promises';
2
+ import path from 'path';
3
+ export const DOWNLOADS_DIR = 'downloads';
4
+ const MAX_BYTES = 15 * 1024 * 1024;
5
+ function mimeToExt(mime) {
6
+ const m = mime.toLowerCase().split(';')[0]?.trim() ?? '';
7
+ if (m === 'image/png')
8
+ return 'png';
9
+ if (m === 'image/gif')
10
+ return 'gif';
11
+ if (m === 'image/webp')
12
+ return 'webp';
13
+ if (m === 'image/jpeg' || m === 'image/jpg')
14
+ return 'jpg';
15
+ return 'jpg';
16
+ }
17
+ /**
18
+ * Writes under stateDir/downloads/. Returns absolute path for `[image: …]` and read_image.
19
+ */
20
+ export async function saveDownloadsImage(stateDir, opts) {
21
+ if (opts.buffer.length > MAX_BYTES) {
22
+ throw new Error(`Image exceeds ${MAX_BYTES} bytes`);
23
+ }
24
+ const safeStem = opts.stem.replace(/[^a-zA-Z0-9._-]+/g, '_').slice(0, 120);
25
+ const ext = mimeToExt(opts.mimeType);
26
+ const filename = `${safeStem}_${opts.index}.${ext}`;
27
+ const dir = path.join(stateDir, DOWNLOADS_DIR);
28
+ await fs.mkdir(dir, { recursive: true });
29
+ const abs = path.join(dir, filename);
30
+ await fs.writeFile(abs, opts.buffer);
31
+ return abs;
32
+ }
33
+ export function downloadsRoot(stateDir) {
34
+ return path.resolve(stateDir, DOWNLOADS_DIR);
35
+ }
36
+ //# sourceMappingURL=save.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"save.js","sourceRoot":"","sources":["../../src/downloads/save.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC;AACzC,MAAM,SAAS,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAEnC,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACzD,IAAI,CAAC,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,CAAC,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,CAAC,KAAK,YAAY;QAAE,OAAO,MAAM,CAAC;IACtC,IAAI,CAAC,KAAK,YAAY,IAAI,CAAC,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IAC1D,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAgB,EAChB,IAAuE;IAEvE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,iBAAiB,SAAS,QAAQ,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3E,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,GAAG,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC;IACpD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAC/C,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACrC,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,39 @@
1
+ import fs from 'fs/promises';
2
+ import path from 'path';
3
+ import { log } from '../logs.js';
4
+ import { downloadsRoot } from './save.js';
5
+ const DEFAULT_MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000;
6
+ /**
7
+ * Deletes files in stateDir/downloads older than maxAgeMs (best-effort).
8
+ */
9
+ export async function sweepOldDownloads(stateDir, maxAgeMs = DEFAULT_MAX_AGE_MS) {
10
+ const root = downloadsRoot(stateDir);
11
+ let names;
12
+ try {
13
+ names = await fs.readdir(root);
14
+ }
15
+ catch {
16
+ return;
17
+ }
18
+ const now = Date.now();
19
+ let removed = 0;
20
+ for (const name of names) {
21
+ const abs = path.join(root, name);
22
+ try {
23
+ const st = await fs.stat(abs);
24
+ if (!st.isFile())
25
+ continue;
26
+ if (now - st.mtimeMs > maxAgeMs) {
27
+ await fs.unlink(abs);
28
+ removed++;
29
+ }
30
+ }
31
+ catch {
32
+ /* ignore per-file errors */
33
+ }
34
+ }
35
+ if (removed > 0) {
36
+ log(`downloads: removed ${removed} file(s) older than ${Math.round(maxAgeMs / 86_400_000)}d`);
37
+ }
38
+ }
39
+ //# sourceMappingURL=ttl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ttl.js","sourceRoot":"","sources":["../../src/downloads/ttl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEnD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,QAAgB,EAAE,QAAQ,GAAG,kBAAkB;IACrF,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE;gBAAE,SAAS;YAC3B,IAAI,GAAG,GAAG,EAAE,CAAC,OAAO,GAAG,QAAQ,EAAE,CAAC;gBAChC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACrB,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,4BAA4B;QAC9B,CAAC;IACH,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,GAAG,CAAC,sBAAsB,OAAO,uBAAuB,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAChG,CAAC;AACH,CAAC"}
package/dist/model.js CHANGED
@@ -60,17 +60,40 @@ class VertexModelAdapter {
60
60
  response: { result: tr.result },
61
61
  },
62
62
  });
63
+ if (tr.images?.length) {
64
+ for (const img of tr.images) {
65
+ parts.push({
66
+ inlineData: { mimeType: img.mimeType, data: img.data },
67
+ });
68
+ }
69
+ }
63
70
  }
64
71
  if (msg.text) {
65
72
  parts.push({ text: msg.text });
66
73
  }
74
+ if (msg.images?.length) {
75
+ for (const img of msg.images) {
76
+ parts.push({
77
+ inlineData: { mimeType: img.mimeType, data: img.data },
78
+ });
79
+ }
80
+ }
67
81
  contents.push({ role: 'user', parts });
68
82
  }
69
83
  else {
70
- contents.push({
71
- role: 'user',
72
- parts: [{ text: msg.text ?? '' }],
73
- });
84
+ const parts = [];
85
+ if (msg.text)
86
+ parts.push({ text: msg.text });
87
+ if (msg.images?.length) {
88
+ for (const img of msg.images) {
89
+ parts.push({
90
+ inlineData: { mimeType: img.mimeType, data: img.data },
91
+ });
92
+ }
93
+ }
94
+ if (parts.length === 0)
95
+ parts.push({ text: '' });
96
+ contents.push({ role: 'user', parts });
74
97
  }
75
98
  }
76
99
  else if (Array.isArray(msg.metadata) && msg.metadata.length > 0) {
@@ -140,18 +163,51 @@ class AnthropicModelAdapter {
140
163
  for (const msg of messages) {
141
164
  if (msg.role === 'user') {
142
165
  if (msg.toolResults && msg.toolResults.length > 0) {
143
- const content = msg.toolResults.map((tr) => ({
144
- type: 'tool_result',
145
- tool_use_id: tr.toolCallId,
146
- content: tr.result,
147
- }));
166
+ const content = [];
167
+ for (const tr of msg.toolResults) {
168
+ if (tr.images?.length) {
169
+ const blocks = [
170
+ { type: 'text', text: tr.result },
171
+ ];
172
+ for (const img of tr.images) {
173
+ blocks.push(anthropicImageBlock(img));
174
+ }
175
+ content.push({
176
+ type: 'tool_result',
177
+ tool_use_id: tr.toolCallId,
178
+ content: blocks,
179
+ });
180
+ }
181
+ else {
182
+ content.push({
183
+ type: 'tool_result',
184
+ tool_use_id: tr.toolCallId,
185
+ content: tr.result,
186
+ });
187
+ }
188
+ }
148
189
  if (msg.text) {
149
190
  content.push({ type: 'text', text: msg.text });
150
191
  }
192
+ if (msg.images?.length) {
193
+ for (const img of msg.images) {
194
+ content.push(anthropicImageBlock(img));
195
+ }
196
+ }
151
197
  result.push({ role: 'user', content });
152
198
  }
153
199
  else {
154
- result.push({ role: 'user', content: msg.text ?? '' });
200
+ const blocks = [];
201
+ if (msg.text)
202
+ blocks.push({ type: 'text', text: msg.text });
203
+ if (msg.images?.length) {
204
+ for (const img of msg.images) {
205
+ blocks.push(anthropicImageBlock(img));
206
+ }
207
+ }
208
+ if (blocks.length === 0)
209
+ blocks.push({ type: 'text', text: '' });
210
+ result.push({ role: 'user', content: blocks });
155
211
  }
156
212
  }
157
213
  else {
@@ -177,6 +233,13 @@ class AnthropicModelAdapter {
177
233
  return result;
178
234
  }
179
235
  }
236
+ function anthropicImageBlock(img) {
237
+ const mediaType = img.mimeType;
238
+ return {
239
+ type: 'image',
240
+ source: { type: 'base64', media_type: mediaType, data: img.data },
241
+ };
242
+ }
180
243
  function asString(value) {
181
244
  return typeof value === 'string' && value.trim().length > 0 ? value.trim() : null;
182
245
  }
package/dist/model.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
package/dist/start.js CHANGED
@@ -4,14 +4,19 @@ import { workerApi } from './client.js';
4
4
  import { runtimeEnv } from './env.js';
5
5
  import { createModelAdapter } from './model.js';
6
6
  import { SlackChannelAdapter } from './channels/slack.js';
7
+ import { slackTools } from './channels/slack-tools.js';
7
8
  import { TelegramChannelAdapter } from './channels/telegram.js';
9
+ import { telegramTools } from './channels/telegram-tools.js';
8
10
  import { UpdateQueue } from './updates.js';
9
11
  import { bashTool } from './tools/bash.js';
10
12
  import { waitTool } from './tools/wait.js';
11
13
  import { createMindTools } from './tools/mind.js';
12
14
  import { terminalTools } from './tools/terminal.js';
13
- import { communicationTools } from './tools/communication.js';
14
15
  import { fileTools } from './tools/file.js';
16
+ import { createWebTools } from './tools/web.js';
17
+ import { createMcpToolingForAgent } from './tools/mcp.js';
18
+ import { createReadImageTool } from './tools/read-image.js';
19
+ import { sweepOldDownloads } from './downloads/ttl.js';
15
20
  import { log, logError } from './logs.js';
16
21
  import { buildSystemPrompt, setRuntimeConfiguredChannels } from './prompt.js';
17
22
  import { BRIAN_RUNTIME_VERSION } from './version.js';
@@ -24,9 +29,17 @@ function heartbeatMeta() {
24
29
  async function main() {
25
30
  log('runtime starting');
26
31
  await workerApi.register();
27
- await workerApi.heartbeat('alive', 'Runtime online', heartbeatMeta());
32
+ const { sessionId } = await workerApi.sessionStart({
33
+ runtimeVersion: BRIAN_RUNTIME_VERSION,
34
+ });
35
+ await workerApi.heartbeat('alive', 'Runtime online', heartbeatMeta(), sessionId);
28
36
  const config = await workerApi.getConfig();
29
37
  log(`agent: ${config.agent.name} (${config.agent.id})`);
38
+ const stateDir = runtimeEnv.stateDir;
39
+ void sweepOldDownloads(stateDir);
40
+ setInterval(() => {
41
+ void sweepOldDownloads(stateDir);
42
+ }, 6 * 60 * 60 * 1000);
30
43
  const llmModule = config.modules.find((m) => m.type === 'llm');
31
44
  if (!llmModule) {
32
45
  throw new Error('No LLM module configured');
@@ -42,7 +55,7 @@ async function main() {
42
55
  if (!token) {
43
56
  throw new Error('Slack module is configured but missing secrets.userToken');
44
57
  }
45
- const adapter = new SlackChannelAdapter(token);
58
+ const adapter = new SlackChannelAdapter(stateDir, token);
46
59
  channels.push({ name: 'slack', adapter });
47
60
  channelMap.set('slack', adapter);
48
61
  log('channel: slack');
@@ -54,7 +67,7 @@ async function main() {
54
67
  if (!botToken || !conversationId) {
55
68
  throw new Error('Telegram module is configured but missing secrets.botToken or config.conversationId');
56
69
  }
57
- const adapter = new TelegramChannelAdapter(botToken, conversationId);
70
+ const adapter = new TelegramChannelAdapter(stateDir, botToken, conversationId);
58
71
  channels.push({ name: 'telegram', adapter });
59
72
  channelMap.set('telegram', adapter);
60
73
  log('channel: telegram');
@@ -76,16 +89,25 @@ async function main() {
76
89
  }
77
90
  }
78
91
  else if (module.kind === 'slack') {
79
- configuredChannelLines.push('Slack — user token is configured; use Slack channel IDs with `channel_history` and thread using routing from channel updates.');
92
+ configuredChannelLines.push('Slack — user token is configured; use `slack_send` / `slack_history` with channel ids; reply in thread via `source_event_id` from inbound events.');
80
93
  }
81
94
  }
82
95
  setRuntimeConfiguredChannels(configuredChannelLines);
83
96
  const updates = new UpdateQueue();
97
+ /** Maps inbound `eventId` → adapter + message for tool routing (see tools/channel-router.ts). */
84
98
  const eventRoutes = new Map();
85
99
  const routeLimit = 5_000;
100
+ const channelRouter = {
101
+ getByEventId(eventId) {
102
+ return eventRoutes.get(eventId) ?? null;
103
+ },
104
+ getAdapter(channel) {
105
+ return channelMap.get(channel) ?? null;
106
+ },
107
+ };
86
108
  const heartbeatIntervalMs = Math.max(5, runtimeEnv.heartbeatSeconds) * 1000;
87
109
  const heartbeatHandle = setInterval(() => {
88
- void workerApi.heartbeat('alive', undefined, heartbeatMeta()).catch(() => { });
110
+ void workerApi.heartbeat('alive', undefined, heartbeatMeta(), sessionId).catch(() => { });
89
111
  }, heartbeatIntervalMs);
90
112
  const pollOnce = async () => {
91
113
  for (const channel of channels) {
@@ -117,7 +139,9 @@ async function main() {
117
139
  if (consecutivePollErrors > 0) {
118
140
  log(`polling recovered after ${consecutivePollErrors} consecutive errors`);
119
141
  if (pollErrorReported) {
120
- void workerApi.heartbeat('alive', 'Channel polling recovered', heartbeatMeta()).catch(() => { });
142
+ void workerApi
143
+ .heartbeat('alive', 'Channel polling recovered', heartbeatMeta(), sessionId)
144
+ .catch(() => { });
121
145
  pollErrorReported = false;
122
146
  }
123
147
  consecutivePollErrors = 0;
@@ -129,25 +153,34 @@ async function main() {
129
153
  logError(`poll error (${consecutivePollErrors} consecutive): ${msg}`);
130
154
  if (consecutivePollErrors === 3 && !pollErrorReported) {
131
155
  pollErrorReported = true;
132
- void workerApi.heartbeat('error', `Channel polling failing: ${msg}`, heartbeatMeta()).catch(() => { });
156
+ void workerApi
157
+ .heartbeat('error', `Channel polling failing: ${msg}`, heartbeatMeta(), sessionId)
158
+ .catch(() => { });
133
159
  }
134
160
  });
135
161
  }, runtimeEnv.pollSeconds * 1000);
136
162
  await pollOnce();
137
- const stateDir = runtimeEnv.stateDir;
138
- const historyChannels = ['slack', 'telegram'].filter((ch) => {
139
- const adapter = channelMap.get(ch);
140
- return Boolean(adapter && adapter.getHistory);
141
- });
163
+ const telemetryEmit = (event) => {
164
+ void workerApi.appendEvents(sessionId, [event]).catch(() => { });
165
+ };
166
+ const webModule = config.modules.find((m) => m.type === 'tooling' && m.kind === 'web');
167
+ let disposeWeb = null;
168
+ const webTooling = webModule ? createWebTools(webModule) : null;
169
+ if (webTooling) {
170
+ disposeWeb = webTooling.dispose;
171
+ log('module: web');
172
+ }
173
+ const mcpModuleCount = config.modules.filter((m) => m.type === 'tooling' && m.kind === 'mcp').length;
174
+ const mcpTooling = await createMcpToolingForAgent(config.modules);
175
+ let disposeMcp = null;
176
+ if (mcpModuleCount > 0) {
177
+ disposeMcp = mcpTooling.dispose;
178
+ log(`module: mcp (${mcpModuleCount} server(s), ${mcpTooling.tools.length} tools)`);
179
+ }
142
180
  const tools = [
143
- ...communicationTools({
144
- getByEventId(eventId) {
145
- return eventRoutes.get(eventId) ?? null;
146
- },
147
- getAdapter(channel) {
148
- return channelMap.get(channel) ?? null;
149
- },
150
- }, { historyChannels }),
181
+ createReadImageTool(stateDir),
182
+ ...telegramTools(channelRouter),
183
+ ...slackTools(channelRouter),
151
184
  ...createMindTools({
152
185
  isKnownSourceId(sourceId) {
153
186
  return eventRoutes.has(sourceId);
@@ -156,7 +189,9 @@ async function main() {
156
189
  ...fileTools,
157
190
  ...terminalTools,
158
191
  bashTool,
159
- waitTool(updates),
192
+ waitTool(updates, { telemetryEmit }),
193
+ ...(webTooling?.tools ?? []),
194
+ ...mcpTooling.tools,
160
195
  ];
161
196
  log(`tools: ${tools.map((t) => t.name).join(', ')}`);
162
197
  const agent = new Agent({
@@ -165,11 +200,16 @@ async function main() {
165
200
  updates,
166
201
  model,
167
202
  tools,
203
+ telemetryEmit,
168
204
  });
169
205
  const shutdown = async (kind, message) => {
170
206
  clearInterval(heartbeatHandle);
171
207
  clearInterval(pollingHandle);
172
- await workerApi.heartbeat(kind, message, heartbeatMeta()).catch(() => null);
208
+ await disposeWeb?.().catch(() => null);
209
+ await disposeMcp?.().catch(() => null);
210
+ await workerApi
211
+ .sessionEnd(sessionId, kind === 'stopped' ? 'shutdown' : 'error', { message })
212
+ .catch(() => null);
173
213
  };
174
214
  process.on('SIGINT', async () => {
175
215
  try {
package/dist/start.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACpF,CAAC;AAED,SAAS,aAAa;IACpB,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,CAAC;AACnD,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACxB,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC3B,MAAM,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,CAAC,CAAC;IAEtE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,CAAC;IAC3C,GAAG,CAAC,UAAU,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;IAExD,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;IAC/D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IACD,MAAM,KAAK,GAAG,kBAAkB,CAAC,SAA0B,CAAC,CAAC;IAE7D,MAAM,UAAU,GAAG,IAAI,GAAG,EAA6C,CAAC;IACxE,MAAM,QAAQ,GAAwE,EAAE,CAAC;IAEzF,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe;YAAE,SAAS;QAC9C,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACjD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;YAC9E,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YAC1C,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACjC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YACtB,SAAS;QACX,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnD,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAC9D,IAAI,CAAC,QAAQ,IAAI,CAAC,cAAc,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CACb,qFAAqF,CACtF,CAAC;YACJ,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,sBAAsB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;YACrE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;YAC7C,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACpC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,sBAAsB,GAAa,EAAE,CAAC;IAC5C,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe;YAAE,SAAS;QAC9C,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAClD,IAAI,EAAE,EAAE,CAAC;gBACP,sBAAsB,CAAC,IAAI,CACzB,mDAAmD,EAAE,IAAI,CAC1D,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACnC,sBAAsB,CAAC,IAAI,CACzB,+HAA+H,CAChI,CAAC;QACJ,CAAC;IACH,CAAC;IACD,4BAA4B,CAAC,sBAAsB,CAAC,CAAC;IAErD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAgE,CAAC;IAC5F,MAAM,UAAU,GAAG,KAAK,CAAC;IAEzB,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;IAC5E,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE;QACvC,KAAK,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAChF,CAAC,EAAE,mBAAmB,CAAC,CAAC;IAExB,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC9C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;gBACxE,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe;oBACpC,CAAC,CAAC,GAAG,OAAO,CAAC,eAAe,KAAK,OAAO,CAAC,MAAM,GAAG;oBAClD,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;gBACnB,OAAO,CAAC,IAAI,CAAC;oBACX,EAAE,EAAE,OAAO,CAAC,OAAO;oBACnB,MAAM,EAAE,OAAO,CAAC,OAAO;oBACvB,IAAI,EAAE,GAAG,OAAO,CAAC,cAAc,IAAI,MAAM,KAAK,OAAO,CAAC,IAAI,EAAE;oBAC5D,SAAS,EAAE,OAAO,CAAC,UAAU;iBAC9B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,IAAI,WAAW,CAAC,IAAI,GAAG,UAAU,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAA2B,CAAC;YACpE,IAAI,KAAK;gBAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,qBAAqB,GAAG,CAAC,CAAC;IAC9B,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAE9B,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;QACrC,KAAK,QAAQ,EAAE;aACZ,IAAI,CAAC,GAAG,EAAE;YACT,IAAI,qBAAqB,GAAG,CAAC,EAAE,CAAC;gBAC9B,GAAG,CAAC,2BAA2B,qBAAqB,qBAAqB,CAAC,CAAC;gBAC3E,IAAI,iBAAiB,EAAE,CAAC;oBACtB,KAAK,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,2BAA2B,EAAE,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;oBAChG,iBAAiB,GAAG,KAAK,CAAC;gBAC5B,CAAC;gBACD,qBAAqB,GAAG,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,qBAAqB,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,QAAQ,CAAC,eAAe,qBAAqB,kBAAkB,GAAG,EAAE,CAAC,CAAC;YACtE,IAAI,qBAAqB,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACtD,iBAAiB,GAAG,IAAI,CAAC;gBACzB,KAAK,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,4BAA4B,GAAG,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACxG,CAAC;QACH,CAAC,CAAC,CAAC;IACP,CAAC,EAAE,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAElC,MAAM,QAAQ,EAAE,CAAC;IAEjB,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;IAErC,MAAM,eAAe,GAAI,CAAC,OAAO,EAAE,UAAU,CAAW,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;QACrE,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG;QACZ,GAAG,kBAAkB,CACnB;YACE,YAAY,CAAC,OAAO;gBAClB,OAAO,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;YAC1C,CAAC;YACD,UAAU,CAAC,OAAO;gBAChB,OAAO,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;YACzC,CAAC;SACF,EACD,EAAE,eAAe,EAAE,CACpB;QACD,GAAG,eAAe,CAAC;YACjB,eAAe,CAAC,QAAQ;gBACtB,OAAO,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnC,CAAC;SACF,CAAC;QACF,GAAG,SAAS;QACZ,GAAG,aAAa;QAChB,QAAQ;QACR,QAAQ,CAAC,OAAO,CAAC;KAClB,CAAC;IAEF,GAAG,CAAC,UAAU,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAErD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI;QACvB,QAAQ;QACR,OAAO;QACP,KAAK;QACL,KAAK;KACN,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAyB,EAAE,OAAe,EAAE,EAAE;QACpE,aAAa,CAAC,eAAe,CAAC,CAAC;QAC/B,aAAa,CAAC,aAAa,CAAC,CAAC;QAC7B,MAAM,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC9E,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC9B,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;QAC/C,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAC/B,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;QAClD,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,iBAAiB,EAAE,CAAC;IAC1B,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAC3B,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACvC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,QAAQ,CAAC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,QAAQ,CAAC,mBAAmB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACtF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ export function channelHistoryTool(name, channel, router) {
2
+ return {
3
+ name,
4
+ concurrencySafe: true,
5
+ definition: {
6
+ name,
7
+ description: channel === 'telegram'
8
+ ? 'Read recent Telegram messages for a chat. `conversation_id` is the Telegram chat id (same as chat_id for sends).'
9
+ : 'Read recent Slack messages in a channel. `conversation_id` is the Slack channel id (e.g. C…).',
10
+ parameters: {
11
+ type: 'object',
12
+ properties: {
13
+ conversation_id: {
14
+ type: 'string',
15
+ description: channel === 'telegram' ? 'Telegram chat id' : 'Slack channel id',
16
+ },
17
+ limit: {
18
+ type: 'number',
19
+ description: 'Max messages to return (default 20)',
20
+ },
21
+ },
22
+ required: ['conversation_id'],
23
+ },
24
+ },
25
+ async execute(input) {
26
+ const { conversation_id, limit } = input;
27
+ const adapter = router.getAdapter(channel);
28
+ if (!adapter?.getHistory) {
29
+ throw new Error(`${name.replace('_history', '')} history is not available`);
30
+ }
31
+ const messages = await adapter.getHistory(conversation_id, limit ?? 20);
32
+ if (messages.length === 0)
33
+ return 'No recent messages.';
34
+ return messages.map((m) => `[${m.ts}] ${m.userId}: ${m.text}`).join('\n');
35
+ },
36
+ };
37
+ }
38
+ //# sourceMappingURL=channel-history-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-history-tool.js","sourceRoot":"","sources":["../../src/tools/channel-history-tool.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,kBAAkB,CAChC,IAA0C,EAC1C,OAAoB,EACpB,MAAqB;IAErB,OAAO;QACL,IAAI;QACJ,eAAe,EAAE,IAAI;QACrB,UAAU,EAAE;YACV,IAAI;YACJ,WAAW,EACT,OAAO,KAAK,UAAU;gBACpB,CAAC,CAAC,kHAAkH;gBACpH,CAAC,CAAC,+FAA+F;YACrG,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,eAAe,EAAE;wBACf,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB;qBAC9E;oBACD,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,qCAAqC;qBACnD;iBACF;gBACD,QAAQ,EAAE,CAAC,iBAAiB,CAAC;aAC9B;SACF;QACD,KAAK,CAAC,OAAO,CAAC,KAAK;YACjB,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,KAGlC,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,2BAA2B,CAAC,CAAC;YAC9E,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACxE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,qBAAqB,CAAC;YACxD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5E,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=channel-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-router.js","sourceRoot":"","sources":["../../src/tools/channel-router.ts"],"names":[],"mappings":""}