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.
- package/config/skills/agent/core/drive-read/SKILL.md +1 -10
- package/config/skills/agent/core/drive-search/SKILL.md +0 -9
- package/config/skills/agent/core/drive-upload/SKILL.md +0 -9
- package/dist/backend/backend/src/constants.d.ts +44 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +44 -0
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.js +6 -19
- package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts +16 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +32 -0
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +17 -0
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js +57 -9
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +23 -0
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js +50 -0
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +20 -2
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +63 -6
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/v3/trigger-engine.service.d.ts +28 -1
- package/dist/backend/backend/src/services/v3/trigger-engine.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/trigger-engine.service.js +66 -30
- package/dist/backend/backend/src/services/v3/trigger-engine.service.js.map +1 -1
- package/dist/backend/backend/src/services/workflow/cron-task.service.d.ts +11 -1
- package/dist/backend/backend/src/services/workflow/cron-task.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/workflow/cron-task.service.js +68 -18
- package/dist/backend/backend/src/services/workflow/cron-task.service.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/constants.d.ts +44 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +44 -0
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +17 -0
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.js +57 -9
- package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +23 -0
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js +50 -0
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
- package/dist/cli/backend/src/services/monitoring/activity-monitor.service.d.ts +162 -0
- package/dist/cli/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/monitoring/activity-monitor.service.js +708 -0
- package/dist/cli/backend/src/services/monitoring/activity-monitor.service.js.map +1 -0
- package/dist/cli/backend/src/services/monitoring/runtime-token-parser.service.d.ts +73 -0
- package/dist/cli/backend/src/services/monitoring/runtime-token-parser.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/monitoring/runtime-token-parser.service.js +199 -0
- package/dist/cli/backend/src/services/monitoring/runtime-token-parser.service.js.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +20 -2
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +63 -6
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- 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
|
|
302
|
-
*
|
|
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":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAkBtC,OAAO,EAEL,iBAAiB,EAQjB,kBAAkB,EAEnB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAQ/E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AAG5F;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,gCAAgC;IAChC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,+BAA+B;IAC/B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gDAAgD;IAChD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,6BAA6B;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uEAAuE;IACvE,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AA6ED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMrE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG/D;AAOD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAKzE;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,uBAAwB,SAAQ,YAAY;IACvD,OAAO,CAAC,MAAM,CAAoE;IAClF,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,mBAAmB,CAAoC;IAC/D,OAAO,CAAC,iBAAiB,CAAyC;IAClE,OAAO,CAAC,WAAW,CAAwC;IAC3D,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,WAAW,CAAS;IAC5B,8DAA8D;IAC9D,OAAO,CAAC,kBAAkB,CAAS;IAEnC;;;;OAIG;IACH,OAAO,CAAC,gBAAgB,CAA6B;IAErD;;;;OAIG;IAEH;;;;OAIG;gBACS,MAAM,GAAE,OAAO,CAAC,iBAAiB,CAAM;IAOnD;;;;;;OAMG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBjC;;;;OAIG;IACH,aAAa,IAAI,OAAO;IAIxB;;;;;OAKG;IACH,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAI1D;;;;;OAKG;IACH,oBAAoB,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAI7D;;;;;OAKG;IACH,mBAAmB,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI;IAIzD;;;;OAIG;IACH,SAAS,IAAI,iBAAiB;IAI9B;;;;;;OAMG;YACW,kBAAkB;IAwThC;;;;;OAKG;YACW,yBAAyB;IA0CvC;;;;;;;OAOG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB;IAW9C;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAwBzB;;;;OAIG;IACH,cAAc,IAAI,MAAM;IAuBxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;YACW,yBAAyB;IAwCvC;;;;;;OAMG;YACW,mBAAmB;IAUjC;;;;;;OAMG;YACW,iBAAiB;IAgB/B;;;;;;OAMG;YACW,oBAAoB;IAUlC;;;;;;;;;;;;;;;;;;;;;OAqBG;YACW,mBAAmB;IAsBjC;;;;;;;;;OASG;YACW,kBAAkB;IA4QhC;;;;;;;;;;;;;;;;;;;;;OAqBG;YACW,qBAAqB;IA0EnC
|
|
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
|
|
1147
|
-
*
|
|
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
|
-
|
|
1179
|
+
const identities = getSlackAgentIdentityService();
|
|
1180
|
+
if (!identities)
|
|
1152
1181
|
return workspaceToken;
|
|
1153
|
-
|
|
1154
|
-
|
|
1182
|
+
if (message.agentSession) {
|
|
1183
|
+
const installed = identities.getInstalled(message.agentSession);
|
|
1184
|
+
if (installed?.botToken)
|
|
1185
|
+
return installed.botToken;
|
|
1155
1186
|
return workspaceToken;
|
|
1156
|
-
|
|
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
|
/**
|