crewly 1.20.66 → 1.20.68

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 (60) hide show
  1. package/config/skills/agent/core/drive-read/SKILL.md +1 -10
  2. package/config/skills/agent/core/drive-search/SKILL.md +0 -9
  3. package/config/skills/agent/core/drive-upload/SKILL.md +0 -9
  4. package/dist/backend/backend/src/constants.d.ts +44 -0
  5. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  6. package/dist/backend/backend/src/constants.js +44 -0
  7. package/dist/backend/backend/src/constants.js.map +1 -1
  8. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  9. package/dist/backend/backend/src/controllers/team/team.controller.js +6 -19
  10. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  11. package/dist/backend/backend/src/index.d.ts +16 -0
  12. package/dist/backend/backend/src/index.d.ts.map +1 -1
  13. package/dist/backend/backend/src/index.js +32 -0
  14. package/dist/backend/backend/src/index.js.map +1 -1
  15. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +17 -0
  16. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  17. package/dist/backend/backend/src/services/agent/agent-registration.service.js +57 -9
  18. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  19. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +23 -0
  20. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
  21. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js +50 -0
  22. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
  23. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +20 -2
  24. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  25. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +63 -6
  26. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  27. package/dist/backend/backend/src/services/v3/trigger-engine.service.d.ts +28 -1
  28. package/dist/backend/backend/src/services/v3/trigger-engine.service.d.ts.map +1 -1
  29. package/dist/backend/backend/src/services/v3/trigger-engine.service.js +66 -30
  30. package/dist/backend/backend/src/services/v3/trigger-engine.service.js.map +1 -1
  31. package/dist/backend/backend/src/services/workflow/cron-task.service.d.ts +11 -1
  32. package/dist/backend/backend/src/services/workflow/cron-task.service.d.ts.map +1 -1
  33. package/dist/backend/backend/src/services/workflow/cron-task.service.js +68 -18
  34. package/dist/backend/backend/src/services/workflow/cron-task.service.js.map +1 -1
  35. package/dist/backend/build-info.json +2 -2
  36. package/dist/cli/backend/src/constants.d.ts +44 -0
  37. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  38. package/dist/cli/backend/src/constants.js +44 -0
  39. package/dist/cli/backend/src/constants.js.map +1 -1
  40. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +17 -0
  41. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  42. package/dist/cli/backend/src/services/agent/agent-registration.service.js +57 -9
  43. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
  44. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +23 -0
  45. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
  46. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js +50 -0
  47. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
  48. package/dist/cli/backend/src/services/monitoring/activity-monitor.service.d.ts +162 -0
  49. package/dist/cli/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -0
  50. package/dist/cli/backend/src/services/monitoring/activity-monitor.service.js +708 -0
  51. package/dist/cli/backend/src/services/monitoring/activity-monitor.service.js.map +1 -0
  52. package/dist/cli/backend/src/services/monitoring/runtime-token-parser.service.d.ts +73 -0
  53. package/dist/cli/backend/src/services/monitoring/runtime-token-parser.service.d.ts.map +1 -0
  54. package/dist/cli/backend/src/services/monitoring/runtime-token-parser.service.js +199 -0
  55. package/dist/cli/backend/src/services/monitoring/runtime-token-parser.service.js.map +1 -0
  56. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +20 -2
  57. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  58. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +63 -6
  59. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  60. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-monitor.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/monitoring/activity-monitor.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Runtime Token Parser Service
3
+ *
4
+ * Parses token usage data from terminal output of different AI CLI runtimes.
5
+ * Each runtime (Claude Code, Gemini CLI, Codex CLI) has a distinct output
6
+ * format for reporting token consumption. This service extracts structured
7
+ * token data from those formats.
8
+ *
9
+ * @module services/monitoring/runtime-token-parser.service
10
+ */
11
+ /** Parsed token usage data from runtime output */
12
+ export interface ParsedTokenUsage {
13
+ /** Number of input/prompt tokens consumed */
14
+ inputTokens: number;
15
+ /** Number of output/completion tokens generated */
16
+ outputTokens: number;
17
+ /** Total cost in USD (if reported by the runtime) */
18
+ cost?: number;
19
+ /** Model identifier (if reported by the runtime) */
20
+ model?: string;
21
+ /** Which runtime produced this data */
22
+ runtime: 'claude-code' | 'gemini-cli' | 'codex-cli';
23
+ }
24
+ /**
25
+ * Parse Claude Code terminal output for token usage data.
26
+ *
27
+ * Claude Code reports token usage in several formats:
28
+ * - Status line: "↑ 15234 ↓ 3456" or "15234↑ 3456↓"
29
+ * - Summary: "Total: 15,234 input / 3,456 output tokens"
30
+ * - Cost line: "Total cost: $0.05" or "Cost: $0.0523"
31
+ * - Compact: "tokens: 15234 in, 3456 out"
32
+ *
33
+ * @param output - Raw terminal output from Claude Code session
34
+ * @returns Parsed token usage or null if no token data found
35
+ */
36
+ export declare function parseClaudeCodeTokens(output: string): ParsedTokenUsage | null;
37
+ /**
38
+ * Parse Gemini CLI terminal output for token usage data.
39
+ *
40
+ * Gemini CLI reports token usage in formats like:
41
+ * - "Input tokens: 1234, Output tokens: 456"
42
+ * - "Cost for this turn: $0.0012 (Input: 1234 tokens, Output: 456 tokens)"
43
+ * - "Tokens used: 1234 input, 456 output"
44
+ * - "prompt_tokens: 1234, completion_tokens: 456"
45
+ *
46
+ * @param output - Raw terminal output from Gemini CLI session
47
+ * @returns Parsed token usage or null if no token data found
48
+ */
49
+ export declare function parseGeminiCliTokens(output: string): ParsedTokenUsage | null;
50
+ /**
51
+ * Parse Codex CLI terminal output for token usage data.
52
+ *
53
+ * Codex CLI reports token usage in formats like:
54
+ * - "Tokens: 1234 prompt + 456 completion = 1690 total"
55
+ * - "prompt_tokens=1234 completion_tokens=456"
56
+ * - "Usage: 1234 input, 456 output"
57
+ *
58
+ * @param output - Raw terminal output from Codex CLI session
59
+ * @returns Parsed token usage or null if no token data found
60
+ */
61
+ export declare function parseCodexCliTokens(output: string): ParsedTokenUsage | null;
62
+ /**
63
+ * Parse terminal output for token usage data from any supported runtime.
64
+ *
65
+ * Tries all runtime parsers in order and returns the first match.
66
+ * The runtime type hint narrows the search for efficiency.
67
+ *
68
+ * @param output - Raw terminal output
69
+ * @param runtimeType - Runtime type hint to try first
70
+ * @returns Parsed token usage or null if no token data found
71
+ */
72
+ export declare function parseRuntimeTokens(output: string, runtimeType?: 'claude-code' | 'gemini-cli' | 'codex-cli'): ParsedTokenUsage | null;
73
+ //# sourceMappingURL=runtime-token-parser.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-token-parser.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/monitoring/runtime-token-parser.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,kDAAkD;AAClD,MAAM,WAAW,gBAAgB;IAC/B,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,YAAY,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,OAAO,EAAE,aAAa,GAAG,YAAY,GAAG,WAAW,CAAC;CACrD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAkD7E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAwC5E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAmC3E;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,aAAa,GAAG,YAAY,GAAG,WAAW,GACvD,gBAAgB,GAAG,IAAI,CA0BzB"}
@@ -0,0 +1,199 @@
1
+ /**
2
+ * Runtime Token Parser Service
3
+ *
4
+ * Parses token usage data from terminal output of different AI CLI runtimes.
5
+ * Each runtime (Claude Code, Gemini CLI, Codex CLI) has a distinct output
6
+ * format for reporting token consumption. This service extracts structured
7
+ * token data from those formats.
8
+ *
9
+ * @module services/monitoring/runtime-token-parser.service
10
+ */
11
+ /**
12
+ * Parse Claude Code terminal output for token usage data.
13
+ *
14
+ * Claude Code reports token usage in several formats:
15
+ * - Status line: "↑ 15234 ↓ 3456" or "15234↑ 3456↓"
16
+ * - Summary: "Total: 15,234 input / 3,456 output tokens"
17
+ * - Cost line: "Total cost: $0.05" or "Cost: $0.0523"
18
+ * - Compact: "tokens: 15234 in, 3456 out"
19
+ *
20
+ * @param output - Raw terminal output from Claude Code session
21
+ * @returns Parsed token usage or null if no token data found
22
+ */
23
+ export function parseClaudeCodeTokens(output) {
24
+ // Pattern 1: "Total: X input / Y output tokens" or "X input, Y output"
25
+ const summaryPattern = /(\d[\d,]*)\s*input\s*[/,]\s*(\d[\d,]*)\s*output/i;
26
+ const summaryMatch = output.match(summaryPattern);
27
+ if (summaryMatch) {
28
+ const inputTokens = parseInt(summaryMatch[1].replace(/,/g, ''), 10);
29
+ const outputTokens = parseInt(summaryMatch[2].replace(/,/g, ''), 10);
30
+ if (inputTokens > 0 || outputTokens > 0) {
31
+ const result = { inputTokens, outputTokens, runtime: 'claude-code' };
32
+ const costMatch = output.match(/(?:total\s+)?cost[:\s]+\$?([\d.]+)/i);
33
+ if (costMatch) {
34
+ result.cost = parseFloat(costMatch[1]);
35
+ }
36
+ return result;
37
+ }
38
+ }
39
+ // Pattern 2: Arrow notation "↑ 15234 ↓ 3456" or "15234↑ 3456↓"
40
+ const arrowPattern1 = /↑\s*(\d[\d,]*)\s*↓\s*(\d[\d,]*)/;
41
+ const arrowMatch1 = output.match(arrowPattern1);
42
+ if (arrowMatch1) {
43
+ return {
44
+ inputTokens: parseInt(arrowMatch1[1].replace(/,/g, ''), 10),
45
+ outputTokens: parseInt(arrowMatch1[2].replace(/,/g, ''), 10),
46
+ runtime: 'claude-code',
47
+ };
48
+ }
49
+ const arrowPattern2 = /(\d[\d,]*)↑\s*(\d[\d,]*)↓/;
50
+ const arrowMatch2 = output.match(arrowPattern2);
51
+ if (arrowMatch2) {
52
+ return {
53
+ inputTokens: parseInt(arrowMatch2[1].replace(/,/g, ''), 10),
54
+ outputTokens: parseInt(arrowMatch2[2].replace(/,/g, ''), 10),
55
+ runtime: 'claude-code',
56
+ };
57
+ }
58
+ // Pattern 3: "tokens: X in, Y out" or "tokens: X in / Y out"
59
+ const compactPattern = /tokens[:\s]+(\d[\d,]*)\s*in\s*[/,]\s*(\d[\d,]*)\s*out/i;
60
+ const compactMatch = output.match(compactPattern);
61
+ if (compactMatch) {
62
+ return {
63
+ inputTokens: parseInt(compactMatch[1].replace(/,/g, ''), 10),
64
+ outputTokens: parseInt(compactMatch[2].replace(/,/g, ''), 10),
65
+ runtime: 'claude-code',
66
+ };
67
+ }
68
+ return null;
69
+ }
70
+ /**
71
+ * Parse Gemini CLI terminal output for token usage data.
72
+ *
73
+ * Gemini CLI reports token usage in formats like:
74
+ * - "Input tokens: 1234, Output tokens: 456"
75
+ * - "Cost for this turn: $0.0012 (Input: 1234 tokens, Output: 456 tokens)"
76
+ * - "Tokens used: 1234 input, 456 output"
77
+ * - "prompt_tokens: 1234, completion_tokens: 456"
78
+ *
79
+ * @param output - Raw terminal output from Gemini CLI session
80
+ * @returns Parsed token usage or null if no token data found
81
+ */
82
+ export function parseGeminiCliTokens(output) {
83
+ // Pattern 1: "Input tokens: X, Output tokens: Y" or "Input: X tokens, Output: Y tokens"
84
+ const ioPattern = /input(?:\s+tokens)?[:\s]+(\d[\d,]*)\s*(?:tokens)?\s*[,;]\s*output(?:\s+tokens)?[:\s]+(\d[\d,]*)/i;
85
+ const ioMatch = output.match(ioPattern);
86
+ if (ioMatch) {
87
+ const result = {
88
+ inputTokens: parseInt(ioMatch[1].replace(/,/g, ''), 10),
89
+ outputTokens: parseInt(ioMatch[2].replace(/,/g, ''), 10),
90
+ runtime: 'gemini-cli',
91
+ };
92
+ const costMatch = output.match(/cost[^$]*\$?([\d.]+)/i);
93
+ if (costMatch) {
94
+ result.cost = parseFloat(costMatch[1]);
95
+ }
96
+ return result;
97
+ }
98
+ // Pattern 2: "prompt_tokens: X, completion_tokens: Y" (API-style)
99
+ const apiPattern = /prompt_tokens[:\s]+(\d[\d,]*)\s*[,;]\s*completion_tokens[:\s]+(\d[\d,]*)/i;
100
+ const apiMatch = output.match(apiPattern);
101
+ if (apiMatch) {
102
+ return {
103
+ inputTokens: parseInt(apiMatch[1].replace(/,/g, ''), 10),
104
+ outputTokens: parseInt(apiMatch[2].replace(/,/g, ''), 10),
105
+ runtime: 'gemini-cli',
106
+ };
107
+ }
108
+ // Pattern 3: "Tokens used: X input, Y output"
109
+ const usedPattern = /tokens?\s+used[:\s]+(\d[\d,]*)\s*input\s*[,;]\s*(\d[\d,]*)\s*output/i;
110
+ const usedMatch = output.match(usedPattern);
111
+ if (usedMatch) {
112
+ return {
113
+ inputTokens: parseInt(usedMatch[1].replace(/,/g, ''), 10),
114
+ outputTokens: parseInt(usedMatch[2].replace(/,/g, ''), 10),
115
+ runtime: 'gemini-cli',
116
+ };
117
+ }
118
+ return null;
119
+ }
120
+ /**
121
+ * Parse Codex CLI terminal output for token usage data.
122
+ *
123
+ * Codex CLI reports token usage in formats like:
124
+ * - "Tokens: 1234 prompt + 456 completion = 1690 total"
125
+ * - "prompt_tokens=1234 completion_tokens=456"
126
+ * - "Usage: 1234 input, 456 output"
127
+ *
128
+ * @param output - Raw terminal output from Codex CLI session
129
+ * @returns Parsed token usage or null if no token data found
130
+ */
131
+ export function parseCodexCliTokens(output) {
132
+ // Pattern 1: "Tokens: X prompt + Y completion" or "X prompt, Y completion"
133
+ const promptCompPattern = /(\d[\d,]*)\s*prompt\s*[+,]\s*(\d[\d,]*)\s*completion/i;
134
+ const promptCompMatch = output.match(promptCompPattern);
135
+ if (promptCompMatch) {
136
+ return {
137
+ inputTokens: parseInt(promptCompMatch[1].replace(/,/g, ''), 10),
138
+ outputTokens: parseInt(promptCompMatch[2].replace(/,/g, ''), 10),
139
+ runtime: 'codex-cli',
140
+ };
141
+ }
142
+ // Pattern 2: "prompt_tokens=X completion_tokens=Y"
143
+ const eqPattern = /prompt_tokens\s*=\s*(\d[\d,]*)\s+completion_tokens\s*=\s*(\d[\d,]*)/i;
144
+ const eqMatch = output.match(eqPattern);
145
+ if (eqMatch) {
146
+ return {
147
+ inputTokens: parseInt(eqMatch[1].replace(/,/g, ''), 10),
148
+ outputTokens: parseInt(eqMatch[2].replace(/,/g, ''), 10),
149
+ runtime: 'codex-cli',
150
+ };
151
+ }
152
+ // Pattern 3: "Usage: X input, Y output"
153
+ const usagePattern = /usage[:\s]+(\d[\d,]*)\s*input\s*[,;]\s*(\d[\d,]*)\s*output/i;
154
+ const usageMatch = output.match(usagePattern);
155
+ if (usageMatch) {
156
+ return {
157
+ inputTokens: parseInt(usageMatch[1].replace(/,/g, ''), 10),
158
+ outputTokens: parseInt(usageMatch[2].replace(/,/g, ''), 10),
159
+ runtime: 'codex-cli',
160
+ };
161
+ }
162
+ return null;
163
+ }
164
+ /**
165
+ * Parse terminal output for token usage data from any supported runtime.
166
+ *
167
+ * Tries all runtime parsers in order and returns the first match.
168
+ * The runtime type hint narrows the search for efficiency.
169
+ *
170
+ * @param output - Raw terminal output
171
+ * @param runtimeType - Runtime type hint to try first
172
+ * @returns Parsed token usage or null if no token data found
173
+ */
174
+ export function parseRuntimeTokens(output, runtimeType) {
175
+ if (!output || output.trim().length === 0)
176
+ return null;
177
+ // Try the hinted runtime first for efficiency
178
+ const parsers = [];
179
+ switch (runtimeType) {
180
+ case 'claude-code':
181
+ parsers.push(parseClaudeCodeTokens, parseGeminiCliTokens, parseCodexCliTokens);
182
+ break;
183
+ case 'gemini-cli':
184
+ parsers.push(parseGeminiCliTokens, parseClaudeCodeTokens, parseCodexCliTokens);
185
+ break;
186
+ case 'codex-cli':
187
+ parsers.push(parseCodexCliTokens, parseClaudeCodeTokens, parseGeminiCliTokens);
188
+ break;
189
+ default:
190
+ parsers.push(parseClaudeCodeTokens, parseGeminiCliTokens, parseCodexCliTokens);
191
+ }
192
+ for (const parser of parsers) {
193
+ const result = parser(output);
194
+ if (result)
195
+ return result;
196
+ }
197
+ return null;
198
+ }
199
+ //# sourceMappingURL=runtime-token-parser.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-token-parser.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/monitoring/runtime-token-parser.service.ts"],"names":[],"mappings":"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"}
@@ -64,6 +64,15 @@ export declare function deriveSlackThreadName(content: string | undefined): stri
64
64
  * await bridge.notifyTaskCompleted('Fix bug', 'Developer', 'MyProject');
65
65
  * ```
66
66
  */
67
+ /**
68
+ * The Slack bot user ids a message `@`-mentions, in order.
69
+ *
70
+ * @param text - Raw Slack message text
71
+ * @returns Distinct `Uxxxx` ids
72
+ * @example
73
+ * mentionedBotUserIds('<@U01> hi <@U02>') // ['U01', 'U02']
74
+ */
75
+ export declare function mentionedBotUserIds(text: string | undefined): string[];
67
76
  export declare class SlackOrchestratorBridge extends EventEmitter {
68
77
  private logger;
69
78
  private slackService;
@@ -297,9 +306,18 @@ export declare class SlackOrchestratorBridge extends EventEmitter {
297
306
  * message the agent could read but an image it could not
298
307
  * (2026-09-20, #steamfun-portal: "Download failed with status 403").
299
308
  *
309
+ * `agentSession` is only set for a DM to an agent's own bot. A channel
310
+ * message has none, so it fell straight through to the workspace token —
311
+ * and in a private channel the workspace bot is not a member, so
312
+ * `files.info` answered `file_not_found` and the download took a 403. The
313
+ * agent got the text with no sign that an image had been attached, and
314
+ * answered about the previous topic (2026-09-21, #daily-info). An agent
315
+ * the message @-mentions is in that channel by definition, so its token
316
+ * can read the file.
317
+ *
300
318
  * @param message - The inbound message
301
- * @returns The agent's bot token when the event came through its app,
302
- * otherwise the workspace token
319
+ * @returns A bot token that can read the file: the agent the DM was for,
320
+ * else an @-mentioned agent's, else the workspace token
303
321
  */
304
322
  private fileTokenFor;
305
323
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"slack-orchestrator-bridge.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/slack/slack-orchestrator-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slack-orchestrator-bridge.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/slack/slack-orchestrator-bridge.ts"],"names":[],"mappings":"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"}
@@ -126,6 +126,25 @@ export function deriveSlackThreadName(content) {
126
126
  * await bridge.notifyTaskCompleted('Fix bug', 'Developer', 'MyProject');
127
127
  * ```
128
128
  */
129
+ /**
130
+ * The Slack bot user ids a message `@`-mentions, in order.
131
+ *
132
+ * @param text - Raw Slack message text
133
+ * @returns Distinct `Uxxxx` ids
134
+ * @example
135
+ * mentionedBotUserIds('<@U01> hi <@U02>') // ['U01', 'U02']
136
+ */
137
+ export function mentionedBotUserIds(text) {
138
+ if (!text)
139
+ return [];
140
+ const out = [];
141
+ for (const m of text.matchAll(/<@([UW][A-Z0-9]+)(?:\|[^>]*)?>/g)) {
142
+ const id = m[1];
143
+ if (id && !out.includes(id))
144
+ out.push(id);
145
+ }
146
+ return out;
147
+ }
129
148
  export class SlackOrchestratorBridge extends EventEmitter {
130
149
  logger = LoggerService.getInstance().createComponentLogger('SlackBridge');
131
150
  slackService;
@@ -1142,18 +1161,39 @@ Just type naturally to chat with the orchestrator!`;
1142
1161
  * message the agent could read but an image it could not
1143
1162
  * (2026-09-20, #steamfun-portal: "Download failed with status 403").
1144
1163
  *
1164
+ * `agentSession` is only set for a DM to an agent's own bot. A channel
1165
+ * message has none, so it fell straight through to the workspace token —
1166
+ * and in a private channel the workspace bot is not a member, so
1167
+ * `files.info` answered `file_not_found` and the download took a 403. The
1168
+ * agent got the text with no sign that an image had been attached, and
1169
+ * answered about the previous topic (2026-09-21, #daily-info). An agent
1170
+ * the message @-mentions is in that channel by definition, so its token
1171
+ * can read the file.
1172
+ *
1145
1173
  * @param message - The inbound message
1146
- * @returns The agent's bot token when the event came through its app,
1147
- * otherwise the workspace token
1174
+ * @returns A bot token that can read the file: the agent the DM was for,
1175
+ * else an @-mentioned agent's, else the workspace token
1148
1176
  */
1149
1177
  fileTokenFor(message) {
1150
1178
  const workspaceToken = this.slackService.getBotToken() ?? undefined;
1151
- if (!message.agentSession)
1179
+ const identities = getSlackAgentIdentityService();
1180
+ if (!identities)
1152
1181
  return workspaceToken;
1153
- const installed = getSlackAgentIdentityService()?.getInstalled(message.agentSession);
1154
- if (!installed?.botToken)
1182
+ if (message.agentSession) {
1183
+ const installed = identities.getInstalled(message.agentSession);
1184
+ if (installed?.botToken)
1185
+ return installed.botToken;
1155
1186
  return workspaceToken;
1156
- return installed.botToken;
1187
+ }
1188
+ for (const botUserId of mentionedBotUserIds(message.text)) {
1189
+ const session = identities.findByBotUserId(botUserId);
1190
+ if (!session)
1191
+ continue;
1192
+ const installed = identities.getInstalled(session);
1193
+ if (installed?.botToken)
1194
+ return installed.botToken;
1195
+ }
1196
+ return workspaceToken;
1157
1197
  }
1158
1198
  /**
1159
1199
  * Refresh file download URLs via the Slack files.info API.
@@ -1412,6 +1452,23 @@ Just type naturally to chat with the orchestrator!`;
1412
1452
  }
1413
1453
  }
1414
1454
  }
1455
+ // A download that failed left no trace in the text at all, so the agent
1456
+ // saw "have a look at this" with nothing to look at and answered about
1457
+ // the previous topic instead of saying it could not see the attachment
1458
+ // (2026-09-21, #daily-info). Name what is missing.
1459
+ const delivered = (message.images?.length ?? 0) + (message.attachments?.length ?? 0);
1460
+ const attached = message.files?.length ?? 0;
1461
+ if (attached > delivered) {
1462
+ const undelivered = (message.files ?? [])
1463
+ .filter((f) => {
1464
+ const name = f.name ?? '';
1465
+ return (!(message.images ?? []).some((i) => i.name === name) &&
1466
+ !(message.attachments ?? []).some((a) => a.name === name));
1467
+ })
1468
+ .map((f) => f.name || 'unnamed')
1469
+ .join(', ');
1470
+ text += `\n[Slack: ${attached - delivered} attachment(s) could not be read${undelivered ? ` — ${undelivered}` : ''}. Say so rather than guessing what they contained; the owner may need to invite your Slack app to this channel.]`;
1471
+ }
1415
1472
  return text;
1416
1473
  }
1417
1474
  /**