@buzzie-ai/slack-claude 0.1.0 → 0.2.1
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/README.md +1 -0
- package/dist/bot.d.ts +22 -2
- package/dist/bot.d.ts.map +1 -1
- package/dist/bot.js +120 -24
- package/dist/bot.js.map +1 -1
- package/dist/cli.js +8 -15
- package/dist/cli.js.map +1 -1
- package/dist/logger.d.ts +31 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +90 -0
- package/dist/logger.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -130,6 +130,7 @@ await bot.stop();
|
|
|
130
130
|
- **Sessions live in memory.** Restarting the process resets all conversations.
|
|
131
131
|
- **Slack message size cap is 40 000 chars.** Very long Claude replies will be truncated by Slack; chunking isn't done yet.
|
|
132
132
|
- **No streaming yet.** Replies post once Claude finishes the turn. (Open issue: stream-and-edit mode.)
|
|
133
|
+
- **Logging.** Default level is `info`: incoming Slack messages, Claude tool calls, outbound posts, lifecycle events. Run with `--log-level debug` to also see filtered-out events, reaction state, and Bolt internals. `--log-level silent` for cron jobs.
|
|
133
134
|
- **The `claude` CLI must already be logged in.** This bridge does not handle auth.
|
|
134
135
|
|
|
135
136
|
## License
|
package/dist/bot.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { LogLevel } from '@slack/bolt';
|
|
2
1
|
import { type ClaudeSessionOptions } from '@buzzie-ai/claude-inject';
|
|
2
|
+
import { type LogLevel } from './logger';
|
|
3
3
|
export interface SlackClaudeBotOptions {
|
|
4
4
|
/** Slack app-level token (xapp-...). Required for Socket Mode. */
|
|
5
5
|
appToken: string;
|
|
@@ -15,7 +15,11 @@ export interface SlackClaudeBotOptions {
|
|
|
15
15
|
cwd?: string;
|
|
16
16
|
/** Override the system prompt. Convenience for the CLI. */
|
|
17
17
|
systemPrompt?: string;
|
|
18
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* Console log level for this bot (`debug` | `info` | `warn` | `error` | `silent`).
|
|
20
|
+
* Defaults to `info`. Bolt's internal logger is kept at WARN regardless to avoid
|
|
21
|
+
* noise; flip to `debug` to see Bolt internals as well.
|
|
22
|
+
*/
|
|
19
23
|
logLevel?: LogLevel;
|
|
20
24
|
}
|
|
21
25
|
/**
|
|
@@ -28,6 +32,7 @@ export declare class SlackClaudeBot {
|
|
|
28
32
|
private readonly app;
|
|
29
33
|
private readonly opts;
|
|
30
34
|
private readonly sessions;
|
|
35
|
+
private readonly log;
|
|
31
36
|
private botUserId;
|
|
32
37
|
private started;
|
|
33
38
|
constructor(opts: SlackClaudeBotOptions);
|
|
@@ -39,6 +44,21 @@ export declare class SlackClaudeBot {
|
|
|
39
44
|
private handleIncoming;
|
|
40
45
|
private createSession;
|
|
41
46
|
private threadKey;
|
|
47
|
+
/**
|
|
48
|
+
* Neutralize broadcast mentions in Claude's reply before posting.
|
|
49
|
+
*
|
|
50
|
+
* `<!channel>`, `<!here>`, `<!everyone>` are Slack's markup for the
|
|
51
|
+
* @channel/@here/@everyone broadcasts — they ping every member of the
|
|
52
|
+
* channel/workspace. Claude has no legitimate need to emit them, and an
|
|
53
|
+
* accidental hallucination would spam thousands of people. Replace with
|
|
54
|
+
* plain text so the user can still see what Claude tried to say.
|
|
55
|
+
*
|
|
56
|
+
* User-targeted `<@U12345>` mentions are left intact: Claude may have a
|
|
57
|
+
* legitimate reason to ping a specific person. The inbound `app_mention`
|
|
58
|
+
* filter and the `bot_id` check in the message handler stop bot-to-bot
|
|
59
|
+
* loops independently of this.
|
|
60
|
+
*/
|
|
61
|
+
private sanitizeOutbound;
|
|
42
62
|
/** Strip leading bot mention and trim. Slack delivers mentions as `<@U12345>`. */
|
|
43
63
|
private cleanText;
|
|
44
64
|
private swapReaction;
|
package/dist/bot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACpF,OAAO,EAAU,KAAK,QAAQ,EAAwB,MAAM,UAAU,CAAC;AAIvE,MAAM,WAAW,qBAAqB;IACpC,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,iFAAiF;IACjF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAOD;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAM;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwB;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;IAC7D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,OAAO,CAAS;gBAEZ,IAAI,EAAE,qBAAqB;IAkBvC,mFAAmF;IAC7E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAe5B,4DAA4D;IACtD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB3B,OAAO,CAAC,gBAAgB;YA+FV,cAAc;IAuG5B,OAAO,CAAC,aAAa;IA4BrB,OAAO,CAAC,SAAS;IAIjB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,gBAAgB;IAaxB,kFAAkF;IAClF,OAAO,CAAC,SAAS;YASH,YAAY;YAWZ,SAAS;CAexB"}
|
package/dist/bot.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.SlackClaudeBot = void 0;
|
|
4
4
|
const bolt_1 = require("@slack/bolt");
|
|
5
5
|
const claude_inject_1 = require("@buzzie-ai/claude-inject");
|
|
6
|
+
const logger_1 = require("./logger");
|
|
6
7
|
const DEFAULT_SYSTEM_PROMPT = 'You are a helpful AI assistant talking to people through Slack. ' +
|
|
7
8
|
'Be concise and clear. Use Slack-flavoured markdown (bold with *one star*, italic with _underscore_, code with `backticks`, code blocks with ```). ' +
|
|
8
9
|
'Do not invent links or @-mentions.';
|
|
@@ -16,6 +17,7 @@ class SlackClaudeBot {
|
|
|
16
17
|
app;
|
|
17
18
|
opts;
|
|
18
19
|
sessions = new Map();
|
|
20
|
+
log;
|
|
19
21
|
botUserId = null;
|
|
20
22
|
started = false;
|
|
21
23
|
constructor(opts) {
|
|
@@ -24,11 +26,14 @@ class SlackClaudeBot {
|
|
|
24
26
|
if (!opts.botToken)
|
|
25
27
|
throw new Error('SlackClaudeBot: botToken is required (xoxb-...)');
|
|
26
28
|
this.opts = opts;
|
|
29
|
+
this.log = new logger_1.Logger(opts.logLevel ?? 'info');
|
|
27
30
|
this.app = new bolt_1.App({
|
|
28
31
|
token: opts.botToken,
|
|
29
32
|
appToken: opts.appToken,
|
|
30
33
|
socketMode: true,
|
|
31
|
-
|
|
34
|
+
// Bolt's INFO is chatty (every event ack, every reconnect). Keep it WARN
|
|
35
|
+
// unless the user asked for debug.
|
|
36
|
+
logLevel: opts.logLevel === 'debug' ? bolt_1.LogLevel.DEBUG : bolt_1.LogLevel.WARN,
|
|
32
37
|
});
|
|
33
38
|
this.registerHandlers();
|
|
34
39
|
}
|
|
@@ -36,22 +41,25 @@ class SlackClaudeBot {
|
|
|
36
41
|
async start() {
|
|
37
42
|
if (this.started)
|
|
38
43
|
return;
|
|
44
|
+
this.log.event('starting Bolt Socket Mode connection…');
|
|
39
45
|
await this.app.start();
|
|
40
46
|
// Resolve the bot's user ID so we can strip self-mentions and ignore our own posts.
|
|
41
47
|
const auth = await this.app.client.auth.test({ token: this.opts.botToken });
|
|
42
48
|
this.botUserId = auth.user_id ?? null;
|
|
43
49
|
this.started = true;
|
|
44
|
-
|
|
50
|
+
this.log.info(`⚡️ slack-claude online as @${auth.user ?? 'unknown'} (${this.botUserId ?? '?'}) in workspace ${auth.team ?? '?'} — listening`);
|
|
45
51
|
}
|
|
46
52
|
/** Disconnect from Slack and close every Claude session. */
|
|
47
53
|
async stop() {
|
|
48
|
-
|
|
54
|
+
this.log.event(`shutting down — closing ${this.sessions.size} Claude session(s)`);
|
|
55
|
+
const closing = Array.from(this.sessions.values()).map((s) => s.close().catch((err) => this.log.error('error closing Claude session', err)));
|
|
49
56
|
this.sessions.clear();
|
|
50
57
|
await Promise.all(closing);
|
|
51
58
|
if (this.started) {
|
|
52
59
|
await this.app.stop();
|
|
53
60
|
this.started = false;
|
|
54
61
|
}
|
|
62
|
+
this.log.event('shutdown complete');
|
|
55
63
|
}
|
|
56
64
|
// ─────────────────────────────────────────────────────────────────────────
|
|
57
65
|
// internals
|
|
@@ -60,6 +68,22 @@ class SlackClaudeBot {
|
|
|
60
68
|
// Direct @-mentions in channels the bot is invited to.
|
|
61
69
|
this.app.event('app_mention', async ({ event, client }) => {
|
|
62
70
|
try {
|
|
71
|
+
// Loop guard: don't respond to mentions from any bot — including
|
|
72
|
+
// ourselves, and including other instances of slack-claude. Without
|
|
73
|
+
// this, two bots in the same channel can ping-pong forever if Claude
|
|
74
|
+
// ever emits a `<@OtherBot>` mention in its reply.
|
|
75
|
+
if (event.bot_id) {
|
|
76
|
+
this.log.debug(`skip app_mention from bot bot_id=${event.bot_id} user=${event.user ?? '?'}`);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
if (event.subtype === 'bot_message') {
|
|
80
|
+
this.log.debug(`skip app_mention with subtype=bot_message`);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (this.botUserId && event.user === this.botUserId) {
|
|
84
|
+
this.log.debug('skip app_mention from self');
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
63
87
|
await this.handleIncoming({
|
|
64
88
|
channel: event.channel,
|
|
65
89
|
ts: event.ts,
|
|
@@ -67,11 +91,12 @@ class SlackClaudeBot {
|
|
|
67
91
|
text: event.text ?? '',
|
|
68
92
|
user: event.user,
|
|
69
93
|
channelType: 'channel',
|
|
94
|
+
source: 'mention',
|
|
70
95
|
client,
|
|
71
96
|
});
|
|
72
97
|
}
|
|
73
98
|
catch (err) {
|
|
74
|
-
|
|
99
|
+
this.log.error('app_mention handler crashed', err);
|
|
75
100
|
}
|
|
76
101
|
});
|
|
77
102
|
// Every message event: DMs, threads, channels.
|
|
@@ -79,22 +104,32 @@ class SlackClaudeBot {
|
|
|
79
104
|
this.app.message(async ({ message, client }) => {
|
|
80
105
|
try {
|
|
81
106
|
// Skip non-user messages (edits, joins, our own bot posts, etc.).
|
|
82
|
-
if (message.subtype !== undefined)
|
|
107
|
+
if (message.subtype !== undefined) {
|
|
108
|
+
this.log.debug(`skip message subtype=${message.subtype}`);
|
|
83
109
|
return;
|
|
110
|
+
}
|
|
84
111
|
const m = message;
|
|
85
|
-
if (m.bot_id)
|
|
112
|
+
if (m.bot_id) {
|
|
113
|
+
this.log.debug(`skip message from bot bot_id=${m.bot_id}`);
|
|
86
114
|
return;
|
|
87
|
-
|
|
115
|
+
}
|
|
116
|
+
if (this.botUserId && m.user === this.botUserId) {
|
|
117
|
+
this.log.debug('skip message from self');
|
|
88
118
|
return;
|
|
119
|
+
}
|
|
89
120
|
const isDm = m.channel_type === 'im';
|
|
90
121
|
const inExistingThread = m.thread_ts !== undefined && this.sessions.has(this.threadKey(m.channel, m.thread_ts, false));
|
|
91
122
|
const mentionsBot = this.botUserId !== undefined && this.botUserId !== null && (m.text ?? '').includes(`<@${this.botUserId}>`);
|
|
92
123
|
// Skip messages that app_mention will already handle.
|
|
93
|
-
if (mentionsBot)
|
|
124
|
+
if (mentionsBot) {
|
|
125
|
+
this.log.debug('skip message — will be handled by app_mention');
|
|
94
126
|
return;
|
|
127
|
+
}
|
|
95
128
|
// Outside DMs and existing threads, ignore.
|
|
96
|
-
if (!isDm && !inExistingThread)
|
|
129
|
+
if (!isDm && !inExistingThread) {
|
|
130
|
+
this.log.debug(`skip message — not a DM and no session for thread ${m.channel}:${m.thread_ts ?? '(none)'}`);
|
|
97
131
|
return;
|
|
132
|
+
}
|
|
98
133
|
await this.handleIncoming({
|
|
99
134
|
channel: m.channel,
|
|
100
135
|
ts: m.ts,
|
|
@@ -102,54 +137,62 @@ class SlackClaudeBot {
|
|
|
102
137
|
text: m.text ?? '',
|
|
103
138
|
user: m.user,
|
|
104
139
|
channelType: isDm ? 'im' : 'channel',
|
|
140
|
+
source: isDm ? 'dm' : 'thread',
|
|
105
141
|
client,
|
|
106
142
|
});
|
|
107
143
|
}
|
|
108
144
|
catch (err) {
|
|
109
|
-
|
|
145
|
+
this.log.error('message handler crashed', err);
|
|
110
146
|
}
|
|
111
147
|
});
|
|
112
148
|
this.app.error(async (err) => {
|
|
113
|
-
|
|
149
|
+
this.log.error('Bolt error', err);
|
|
114
150
|
});
|
|
115
151
|
}
|
|
116
152
|
async handleIncoming(args) {
|
|
117
|
-
const { channel, ts, threadTs, text, channelType, client } = args;
|
|
153
|
+
const { channel, ts, threadTs, text, user, channelType, source, client } = args;
|
|
118
154
|
const isDm = channelType === 'im';
|
|
119
155
|
const replyThreadTs = threadTs ?? (isDm ? undefined : ts);
|
|
120
156
|
const sessionKey = this.threadKey(channel, threadTs ?? ts, isDm && !threadTs);
|
|
121
157
|
const cleaned = this.cleanText(text);
|
|
122
158
|
if (!cleaned) {
|
|
123
|
-
|
|
159
|
+
this.log.debug(`empty message after mention strip — ignored (${sessionKey})`);
|
|
124
160
|
return;
|
|
125
161
|
}
|
|
162
|
+
this.log.inbound(`${source} ${user ?? '?'}@${channel} [${sessionKey}]: ${(0, logger_1.preview)(cleaned, 100)}`);
|
|
126
163
|
// 👀 reaction so the user knows we received it.
|
|
127
164
|
let reactionAdded = false;
|
|
128
165
|
try {
|
|
129
166
|
await client.reactions.add({ channel, timestamp: ts, name: 'eyes' });
|
|
130
167
|
reactionAdded = true;
|
|
168
|
+
this.log.debug(`reaction +eyes ${channel}:${ts}`);
|
|
131
169
|
}
|
|
132
|
-
catch {
|
|
133
|
-
|
|
134
|
-
// already reacted. Not worth failing the whole turn.
|
|
170
|
+
catch (err) {
|
|
171
|
+
this.log.debug(`reaction +eyes failed (continuing): ${err instanceof Error ? err.message : err}`);
|
|
135
172
|
}
|
|
136
173
|
let session = this.sessions.get(sessionKey);
|
|
137
174
|
let isNewSession = false;
|
|
138
175
|
if (!session) {
|
|
139
|
-
session = this.createSession();
|
|
176
|
+
session = this.createSession(sessionKey);
|
|
140
177
|
this.sessions.set(sessionKey, session);
|
|
141
178
|
isNewSession = true;
|
|
179
|
+
this.log.event(`session created [${sessionKey}] (active: ${this.sessions.size})`);
|
|
142
180
|
try {
|
|
143
181
|
await session.start();
|
|
144
182
|
}
|
|
145
183
|
catch (err) {
|
|
146
184
|
this.sessions.delete(sessionKey);
|
|
185
|
+
this.log.error(`failed to start Claude session [${sessionKey}]`, err);
|
|
147
186
|
await this.postError(client, channel, replyThreadTs, err);
|
|
148
187
|
if (reactionAdded)
|
|
149
188
|
await this.swapReaction(client, channel, ts, 'eyes', 'x');
|
|
150
189
|
return;
|
|
151
190
|
}
|
|
152
191
|
}
|
|
192
|
+
else {
|
|
193
|
+
this.log.debug(`reusing session [${sessionKey}]`);
|
|
194
|
+
}
|
|
195
|
+
const startedAt = Date.now();
|
|
153
196
|
let reply;
|
|
154
197
|
try {
|
|
155
198
|
reply = await session.send(cleaned);
|
|
@@ -160,42 +203,96 @@ class SlackClaudeBot {
|
|
|
160
203
|
if (isNewSession) {
|
|
161
204
|
this.sessions.delete(sessionKey);
|
|
162
205
|
await session.close().catch(() => { });
|
|
206
|
+
this.log.event(`session [${sessionKey}] dropped after first-send failure`);
|
|
163
207
|
}
|
|
208
|
+
this.log.error(`Claude send() failed [${sessionKey}]`, err);
|
|
164
209
|
await this.postError(client, channel, replyThreadTs, err);
|
|
165
210
|
if (reactionAdded)
|
|
166
211
|
await this.swapReaction(client, channel, ts, 'eyes', 'x');
|
|
167
212
|
return;
|
|
168
213
|
}
|
|
169
|
-
const
|
|
214
|
+
const elapsed = Date.now() - startedAt;
|
|
215
|
+
const text_out = this.sanitizeOutbound(reply.trim()) || '_(Claude returned an empty response.)_';
|
|
170
216
|
try {
|
|
171
217
|
await client.chat.postMessage({
|
|
172
218
|
channel,
|
|
173
219
|
thread_ts: replyThreadTs,
|
|
174
220
|
text: text_out,
|
|
221
|
+
// `parse: 'none'` is the modern default but be explicit — never let Slack
|
|
222
|
+
// auto-link plain "@arvind" text in Claude's reply into a real mention.
|
|
223
|
+
parse: 'none',
|
|
224
|
+
link_names: false,
|
|
175
225
|
});
|
|
226
|
+
this.log.outbound(`posted to ${channel} (thread=${replyThreadTs ?? 'top-level'}) ${reply.length}ch in ${(0, logger_1.fmtDuration)(elapsed)}`);
|
|
176
227
|
}
|
|
177
228
|
catch (err) {
|
|
178
|
-
|
|
229
|
+
this.log.error(`chat.postMessage failed [${sessionKey}]`, err);
|
|
179
230
|
}
|
|
180
231
|
finally {
|
|
181
232
|
if (reactionAdded) {
|
|
182
233
|
await client.reactions
|
|
183
234
|
.remove({ channel, timestamp: ts, name: 'eyes' })
|
|
184
|
-
.catch(() => { });
|
|
235
|
+
.catch((err) => this.log.debug(`reaction -eyes failed: ${err instanceof Error ? err.message : err}`));
|
|
185
236
|
}
|
|
186
237
|
}
|
|
187
238
|
}
|
|
188
|
-
createSession() {
|
|
239
|
+
createSession(sessionKey) {
|
|
189
240
|
const co = this.opts.claudeOptions ?? {};
|
|
190
|
-
|
|
241
|
+
const session = new claude_inject_1.ClaudeSession({
|
|
191
242
|
cwd: this.opts.cwd ?? co.cwd ?? process.cwd(),
|
|
192
243
|
systemPrompt: this.opts.systemPrompt ?? co.systemPrompt ?? DEFAULT_SYSTEM_PROMPT,
|
|
193
244
|
...co,
|
|
194
245
|
});
|
|
246
|
+
// Surface what Claude is doing turn-by-turn.
|
|
247
|
+
session.on('tool_use', ({ name, input }) => {
|
|
248
|
+
const inputStr = (0, logger_1.preview)(JSON.stringify(input ?? {}), 120);
|
|
249
|
+
this.log.tool(`[${sessionKey}] ${name} ${inputStr}`);
|
|
250
|
+
});
|
|
251
|
+
session.on('tool_result', ({ isError }) => {
|
|
252
|
+
if (isError)
|
|
253
|
+
this.log.warn(`[${sessionKey}] tool returned error`);
|
|
254
|
+
});
|
|
255
|
+
session.on('result', ({ isError, sessionId }) => {
|
|
256
|
+
if (isError)
|
|
257
|
+
this.log.warn(`[${sessionKey}] turn finished with error (claude session ${sessionId})`);
|
|
258
|
+
else
|
|
259
|
+
this.log.debug(`[${sessionKey}] turn finished (claude session ${sessionId})`);
|
|
260
|
+
});
|
|
261
|
+
session.on('error', (err) => this.log.error(`[${sessionKey}] subprocess error`, err));
|
|
262
|
+
session.on('exit', ({ code }) => {
|
|
263
|
+
this.log.event(`[${sessionKey}] claude subprocess exited (code=${code})`);
|
|
264
|
+
});
|
|
265
|
+
return session;
|
|
195
266
|
}
|
|
196
267
|
threadKey(channel, anchor, isDmRoot) {
|
|
197
268
|
return isDmRoot ? `dm:${channel}` : `${channel}:${anchor}`;
|
|
198
269
|
}
|
|
270
|
+
/**
|
|
271
|
+
* Neutralize broadcast mentions in Claude's reply before posting.
|
|
272
|
+
*
|
|
273
|
+
* `<!channel>`, `<!here>`, `<!everyone>` are Slack's markup for the
|
|
274
|
+
* @channel/@here/@everyone broadcasts — they ping every member of the
|
|
275
|
+
* channel/workspace. Claude has no legitimate need to emit them, and an
|
|
276
|
+
* accidental hallucination would spam thousands of people. Replace with
|
|
277
|
+
* plain text so the user can still see what Claude tried to say.
|
|
278
|
+
*
|
|
279
|
+
* User-targeted `<@U12345>` mentions are left intact: Claude may have a
|
|
280
|
+
* legitimate reason to ping a specific person. The inbound `app_mention`
|
|
281
|
+
* filter and the `bot_id` check in the message handler stop bot-to-bot
|
|
282
|
+
* loops independently of this.
|
|
283
|
+
*/
|
|
284
|
+
sanitizeOutbound(text) {
|
|
285
|
+
return text
|
|
286
|
+
.replace(/<!channel>/g, '@channel')
|
|
287
|
+
.replace(/<!here>/g, '@here')
|
|
288
|
+
.replace(/<!everyone>/g, '@everyone')
|
|
289
|
+
// `<!subteam^Sxxxx>` is the markup for @-mentioning a user group.
|
|
290
|
+
// Same logic — silence broadcasts.
|
|
291
|
+
.replace(/<!subteam\^[A-Z0-9]+(?:\|[^>]+)?>/g, (m) => {
|
|
292
|
+
const label = m.match(/\|([^>]+)>/)?.[1];
|
|
293
|
+
return label ? `@${label}` : '@usergroup';
|
|
294
|
+
});
|
|
295
|
+
}
|
|
199
296
|
/** Strip leading bot mention and trim. Slack delivers mentions as `<@U12345>`. */
|
|
200
297
|
cleanText(text) {
|
|
201
298
|
let out = text;
|
|
@@ -211,14 +308,13 @@ class SlackClaudeBot {
|
|
|
211
308
|
}
|
|
212
309
|
async postError(client, channel, thread_ts, err) {
|
|
213
310
|
const msg = err instanceof Error ? err.message : String(err);
|
|
214
|
-
console.error('Claude turn failed:', err);
|
|
215
311
|
await client.chat
|
|
216
312
|
.postMessage({
|
|
217
313
|
channel,
|
|
218
314
|
thread_ts,
|
|
219
315
|
text: `:warning: Claude failed to respond: \`${msg}\``,
|
|
220
316
|
})
|
|
221
|
-
.catch((postErr) =>
|
|
317
|
+
.catch((postErr) => this.log.error('failed to post error message back to Slack', postErr));
|
|
222
318
|
}
|
|
223
319
|
}
|
|
224
320
|
exports.SlackClaudeBot = SlackClaudeBot;
|
package/dist/bot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot.js","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bot.js","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":";;;AAAA,sCAAiF;AAEjF,4DAAoF;AACpF,qCAAuE;AA2BvE,MAAM,qBAAqB,GACzB,kEAAkE;IAClE,oJAAoJ;IACpJ,oCAAoC,CAAC;AAEvC;;;;;GAKG;AACH,MAAa,cAAc;IACR,GAAG,CAAM;IACT,IAAI,CAAwB;IAC5B,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC5C,GAAG,CAAS;IACrB,SAAS,GAAkB,IAAI,CAAC;IAChC,OAAO,GAAG,KAAK,CAAC;IAExB,YAAY,IAA2B;QACrC,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACvF,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACvF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,IAAI,eAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC;QAE/C,IAAI,CAAC,GAAG,GAAG,IAAI,UAAG,CAAC;YACjB,KAAK,EAAE,IAAI,CAAC,QAAQ;YACpB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,IAAI;YAChB,yEAAyE;YACzE,mCAAmC;YACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,eAAY,CAAC,KAAK,CAAC,CAAC,CAAC,eAAY,CAAC,IAAI;SAC7E,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,mFAAmF;IACnF,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QACxD,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QAEvB,oFAAoF;QACpF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,SAAS,GAAI,IAAI,CAAC,OAA8B,IAAI,IAAI,CAAC;QAE9D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,8BAA8B,IAAI,CAAC,IAAI,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS,IAAI,GAAG,kBAAkB,IAAI,CAAC,IAAI,IAAI,GAAG,cAAc,CAC/H,CAAC;IACJ,CAAC;IAED,4DAA4D;IAC5D,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,2BAA2B,IAAI,CAAC,QAAQ,CAAC,IAAI,oBAAoB,CAAC,CAAC;QAClF,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3D,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC,CAC9E,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACtC,CAAC;IAED,4EAA4E;IAC5E,YAAY;IACZ,4EAA4E;IAEpE,gBAAgB;QACtB,uDAAuD;QACvD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;YACxD,IAAI,CAAC;gBACH,iEAAiE;gBACjE,oEAAoE;gBACpE,qEAAqE;gBACrE,mDAAmD;gBACnD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;oBACjB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,oCAAoC,KAAK,CAAC,MAAM,SAAS,KAAK,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;oBAC7F,OAAO;gBACT,CAAC;gBACD,IAAI,KAAK,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;oBACpC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;oBAC5D,OAAO;gBACT,CAAC;gBACD,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;oBACpD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;oBAC7C,OAAO;gBACT,CAAC;gBAED,MAAM,IAAI,CAAC,cAAc,CAAC;oBACxB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,QAAQ,EAAE,KAAK,CAAC,SAAS;oBACzB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;oBACtB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,WAAW,EAAE,SAAS;oBACtB,MAAM,EAAE,SAAS;oBACjB,MAAM;iBACP,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;YACrD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,+CAA+C;QAC/C,sEAAsE;QACtE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;YAC7C,IAAI,CAAC;gBACH,kEAAkE;gBAClE,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBAClC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wBAAwB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC1D,OAAO;gBACT,CAAC;gBACD,MAAM,CAAC,GAAG,OAA8B,CAAC;gBAEzC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;oBACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;oBAC3D,OAAO;gBACT,CAAC;gBACD,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;oBAChD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;oBACzC,OAAO;gBACT,CAAC;gBAED,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC;gBACrC,MAAM,gBAAgB,GACpB,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;gBAChG,MAAM,WAAW,GACf,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;gBAE7G,sDAAsD;gBACtD,IAAI,WAAW,EAAE,CAAC;oBAChB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;oBAChE,OAAO;gBACT,CAAC;gBACD,4CAA4C;gBAC5C,IAAI,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBAC/B,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,qDAAqD,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,IAAI,QAAQ,EAAE,CAC5F,CAAC;oBACF,OAAO;gBACT,CAAC;gBAED,MAAM,IAAI,CAAC,cAAc,CAAC;oBACxB,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,QAAQ,EAAE,CAAC,CAAC,SAAS;oBACrB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;oBAClB,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;oBACpC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ;oBAC9B,MAAM;iBACP,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;YACjD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC3B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,IAS5B;QACC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAEhF,MAAM,IAAI,GAAG,WAAW,KAAK,IAAI,CAAC;QAClC,MAAM,aAAa,GAAG,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE9E,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gDAAgD,UAAU,GAAG,CAAC,CAAC;YAC9E,OAAO;QACT,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,GAAG,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,OAAO,KAAK,UAAU,MAAM,IAAA,gBAAO,EAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAChF,CAAC;QAEF,gDAAgD;QAChD,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YACrE,aAAa,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uCAAuC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACpG,CAAC;QAED,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACzC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACvC,YAAY,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,UAAU,cAAc,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;YAClF,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACxB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACjC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAmC,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC;gBACtE,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;gBAC1D,IAAI,aAAa;oBAAE,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;gBAC7E,OAAO;YACT,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,UAAU,GAAG,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,KAAa,CAAC;QAClB,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,iFAAiF;YACjF,wCAAwC;YACxC,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACjC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBACtC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,UAAU,oCAAoC,CAAC,CAAC;YAC7E,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,yBAAyB,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC;YAC5D,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;YAC1D,IAAI,aAAa;gBAAE,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAEvC,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,wCAAwC,CAAC;QACjG,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;gBAC5B,OAAO;gBACP,SAAS,EAAE,aAAa;gBACxB,IAAI,EAAE,QAAQ;gBACd,0EAA0E;gBAC1E,wEAAwE;gBACxE,KAAK,EAAE,MAAM;gBACb,UAAU,EAAE,KAAK;aAClB,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,QAAQ,CACf,aAAa,OAAO,YAAY,aAAa,IAAI,WAAW,KAAK,KAAK,CAAC,MAAM,SAAS,IAAA,oBAAW,EAAC,OAAO,CAAC,EAAE,CAC7G,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4BAA4B,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC;QACjE,CAAC;gBAAS,CAAC;YACT,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,MAAM,CAAC,SAAS;qBACnB,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;qBAChD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,0BAA0B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CACrF,CAAC;YACN,CAAC;QACH,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,UAAkB;QACtC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,6BAAa,CAAC;YAChC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;YAC7C,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,YAAY,IAAI,qBAAqB;YAChF,GAAG,EAAE;SACN,CAAC,CAAC;QAEH,6CAA6C;QAC7C,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;YACzC,MAAM,QAAQ,GAAG,IAAA,gBAAO,EAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YAC3D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,UAAU,KAAK,IAAI,IAAI,QAAQ,EAAE,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACxC,IAAI,OAAO;gBAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,UAAU,uBAAuB,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE;YAC9C,IAAI,OAAO;gBAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,UAAU,8CAA8C,SAAS,GAAG,CAAC,CAAC;;gBAChG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,UAAU,mCAAmC,SAAS,GAAG,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,UAAU,oBAAoB,EAAE,GAAG,CAAC,CAAC,CAAC;QACtF,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;YAC9B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,UAAU,oCAAoC,IAAI,GAAG,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,SAAS,CAAC,OAAe,EAAE,MAAc,EAAE,QAAiB;QAClE,OAAO,QAAQ,CAAC,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,MAAM,EAAE,CAAC;IAC7D,CAAC;IAED;;;;;;;;;;;;;OAaG;IACK,gBAAgB,CAAC,IAAY;QACnC,OAAO,IAAI;aACR,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC;aAClC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC;aAC5B,OAAO,CAAC,cAAc,EAAE,WAAW,CAAC;YACrC,kEAAkE;YAClE,mCAAmC;aAClC,OAAO,CAAC,oCAAoC,EAAE,CAAC,CAAC,EAAE,EAAE;YACnD,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACzC,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;QAC5C,CAAC,CAAC,CAAC;IACP,CAAC;IAED,kFAAkF;IAC1E,SAAS,CAAC,IAAY;QAC5B,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,CAAC,CAAC;YACxD,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,MAAiB,EACjB,OAAe,EACf,EAAU,EACV,IAAY,EACZ,EAAU;QAEV,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACtF,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACnF,CAAC;IAEO,KAAK,CAAC,SAAS,CACrB,MAAiB,EACjB,OAAe,EACf,SAA6B,EAC7B,GAAY;QAEZ,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,MAAM,CAAC,IAAI;aACd,WAAW,CAAC;YACX,OAAO;YACP,SAAS;YACT,IAAI,EAAE,yCAAyC,GAAG,IAAI;SACvD,CAAC;aACD,KAAK,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4CAA4C,EAAE,OAAO,CAAC,CAAC,CAAC;IACxG,CAAC;CACF;AAlWD,wCAkWC"}
|
package/dist/cli.js
CHANGED
|
@@ -36,7 +36,6 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
36
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
37
|
const fs = __importStar(require("node:fs"));
|
|
38
38
|
const path = __importStar(require("node:path"));
|
|
39
|
-
const bolt_1 = require("@slack/bolt");
|
|
40
39
|
const bot_1 = require("./bot");
|
|
41
40
|
/**
|
|
42
41
|
* Auto-load `.env` from the cwd before reading process.env.
|
|
@@ -105,7 +104,7 @@ Optional:
|
|
|
105
104
|
--dangerously-skip-permissions
|
|
106
105
|
Skip permission prompts in Claude Code
|
|
107
106
|
--tools <spec> "" (none), "default" (all), or "Bash,Edit,Read"
|
|
108
|
-
--log-level <level> debug | info | warn | error (default: info)
|
|
107
|
+
--log-level <level> debug | info | warn | error | silent (default: info)
|
|
109
108
|
-h, --help Show this help
|
|
110
109
|
-v, --version Show version
|
|
111
110
|
|
|
@@ -180,20 +179,14 @@ function parseArgs(argv) {
|
|
|
180
179
|
function resolveLogLevel(s) {
|
|
181
180
|
if (!s)
|
|
182
181
|
return undefined;
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
case 'info':
|
|
187
|
-
return bolt_1.LogLevel.INFO;
|
|
188
|
-
case 'warn':
|
|
189
|
-
case 'warning':
|
|
190
|
-
return bolt_1.LogLevel.WARN;
|
|
191
|
-
case 'error':
|
|
192
|
-
return bolt_1.LogLevel.ERROR;
|
|
193
|
-
default:
|
|
194
|
-
console.error(`Unknown log level: ${s}`);
|
|
195
|
-
process.exit(2);
|
|
182
|
+
const v = s.toLowerCase();
|
|
183
|
+
if (v === 'debug' || v === 'info' || v === 'warn' || v === 'error' || v === 'silent') {
|
|
184
|
+
return v;
|
|
196
185
|
}
|
|
186
|
+
if (v === 'warning')
|
|
187
|
+
return 'warn';
|
|
188
|
+
console.error(`Unknown log level: ${s}`);
|
|
189
|
+
process.exit(2);
|
|
197
190
|
}
|
|
198
191
|
async function main() {
|
|
199
192
|
loadEnvFileIfPresent();
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,4CAA8B;AAC9B,gDAAkC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/logger.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tiny structured logger for the bot.
|
|
3
|
+
*
|
|
4
|
+
* Why not pino/winston: this package has exactly two deps for a reason. The
|
|
5
|
+
* volume is low and the shape is fixed — a 30-line console wrapper is plenty.
|
|
6
|
+
*/
|
|
7
|
+
export type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'silent';
|
|
8
|
+
export declare class Logger {
|
|
9
|
+
private level;
|
|
10
|
+
constructor(level?: LogLevel);
|
|
11
|
+
setLevel(level: LogLevel): void;
|
|
12
|
+
private should;
|
|
13
|
+
private ts;
|
|
14
|
+
/** Inbound from Slack. */
|
|
15
|
+
inbound(msg: string): void;
|
|
16
|
+
/** Outbound to Slack. */
|
|
17
|
+
outbound(msg: string): void;
|
|
18
|
+
/** Tool call by Claude. */
|
|
19
|
+
tool(msg: string): void;
|
|
20
|
+
/** Internal lifecycle (sessions, startup, shutdown). */
|
|
21
|
+
event(msg: string): void;
|
|
22
|
+
debug(msg: string): void;
|
|
23
|
+
info(msg: string): void;
|
|
24
|
+
warn(msg: string): void;
|
|
25
|
+
error(msg: string, err?: unknown): void;
|
|
26
|
+
}
|
|
27
|
+
/** Truncate a string to `n` chars, suffixing with `…` if cut. Single-line. */
|
|
28
|
+
export declare function preview(s: string, n?: number): string;
|
|
29
|
+
/** Format a duration in ms as `1.23s` or `345ms`. */
|
|
30
|
+
export declare function fmtDuration(ms: number): string;
|
|
31
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAmBtE,qBAAa,MAAM;IACL,OAAO,CAAC,KAAK;gBAAL,KAAK,GAAE,QAAiB;IAE5C,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI/B,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,EAAE;IAIV,0BAA0B;IAC1B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI1B,yBAAyB;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI3B,2BAA2B;IAC3B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIvB,wDAAwD;IACxD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIxB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIxB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIvB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIvB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI;CAKxC;AAED,8EAA8E;AAC9E,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,SAAK,GAAG,MAAM,CAGjD;AAED,qDAAqD;AACrD,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE9C"}
|
package/dist/logger.js
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Tiny structured logger for the bot.
|
|
4
|
+
*
|
|
5
|
+
* Why not pino/winston: this package has exactly two deps for a reason. The
|
|
6
|
+
* volume is low and the shape is fixed — a 30-line console wrapper is plenty.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.Logger = void 0;
|
|
10
|
+
exports.preview = preview;
|
|
11
|
+
exports.fmtDuration = fmtDuration;
|
|
12
|
+
const LEVELS = {
|
|
13
|
+
debug: 0,
|
|
14
|
+
info: 1,
|
|
15
|
+
warn: 2,
|
|
16
|
+
error: 3,
|
|
17
|
+
silent: 99,
|
|
18
|
+
};
|
|
19
|
+
const COLOR = process.stdout.isTTY && !process.env.NO_COLOR;
|
|
20
|
+
const c = (code, s) => (COLOR ? `\x1b[${code}m${s}\x1b[0m` : s);
|
|
21
|
+
const dim = (s) => c('2', s);
|
|
22
|
+
const cyan = (s) => c('36', s);
|
|
23
|
+
const green = (s) => c('32', s);
|
|
24
|
+
const yellow = (s) => c('33', s);
|
|
25
|
+
const red = (s) => c('31', s);
|
|
26
|
+
const magenta = (s) => c('35', s);
|
|
27
|
+
class Logger {
|
|
28
|
+
level;
|
|
29
|
+
constructor(level = 'info') {
|
|
30
|
+
this.level = level;
|
|
31
|
+
}
|
|
32
|
+
setLevel(level) {
|
|
33
|
+
this.level = level;
|
|
34
|
+
}
|
|
35
|
+
should(l) {
|
|
36
|
+
return LEVELS[l] >= LEVELS[this.level];
|
|
37
|
+
}
|
|
38
|
+
ts() {
|
|
39
|
+
return dim(new Date().toISOString().slice(11, 23));
|
|
40
|
+
}
|
|
41
|
+
/** Inbound from Slack. */
|
|
42
|
+
inbound(msg) {
|
|
43
|
+
if (this.should('info'))
|
|
44
|
+
console.log(`${this.ts()} ${cyan('←')} ${msg}`);
|
|
45
|
+
}
|
|
46
|
+
/** Outbound to Slack. */
|
|
47
|
+
outbound(msg) {
|
|
48
|
+
if (this.should('info'))
|
|
49
|
+
console.log(`${this.ts()} ${green('→')} ${msg}`);
|
|
50
|
+
}
|
|
51
|
+
/** Tool call by Claude. */
|
|
52
|
+
tool(msg) {
|
|
53
|
+
if (this.should('info'))
|
|
54
|
+
console.log(`${this.ts()} ${magenta('🔧')} ${msg}`);
|
|
55
|
+
}
|
|
56
|
+
/** Internal lifecycle (sessions, startup, shutdown). */
|
|
57
|
+
event(msg) {
|
|
58
|
+
if (this.should('info'))
|
|
59
|
+
console.log(`${this.ts()} ${dim('·')} ${msg}`);
|
|
60
|
+
}
|
|
61
|
+
debug(msg) {
|
|
62
|
+
if (this.should('debug'))
|
|
63
|
+
console.log(`${this.ts()} ${dim('debug')} ${dim(msg)}`);
|
|
64
|
+
}
|
|
65
|
+
info(msg) {
|
|
66
|
+
if (this.should('info'))
|
|
67
|
+
console.log(`${this.ts()} ${msg}`);
|
|
68
|
+
}
|
|
69
|
+
warn(msg) {
|
|
70
|
+
if (this.should('warn'))
|
|
71
|
+
console.warn(`${this.ts()} ${yellow('!')} ${msg}`);
|
|
72
|
+
}
|
|
73
|
+
error(msg, err) {
|
|
74
|
+
if (!this.should('error'))
|
|
75
|
+
return;
|
|
76
|
+
const detail = err instanceof Error ? err.stack ?? err.message : err !== undefined ? String(err) : '';
|
|
77
|
+
console.error(`${this.ts()} ${red('✖')} ${msg}${detail ? '\n' + detail : ''}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.Logger = Logger;
|
|
81
|
+
/** Truncate a string to `n` chars, suffixing with `…` if cut. Single-line. */
|
|
82
|
+
function preview(s, n = 80) {
|
|
83
|
+
const oneLine = s.replace(/\s+/g, ' ').trim();
|
|
84
|
+
return oneLine.length > n ? oneLine.slice(0, n - 1) + '…' : oneLine;
|
|
85
|
+
}
|
|
86
|
+
/** Format a duration in ms as `1.23s` or `345ms`. */
|
|
87
|
+
function fmtDuration(ms) {
|
|
88
|
+
return ms >= 1000 ? `${(ms / 1000).toFixed(2)}s` : `${ms}ms`;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@buzzie-ai/slack-claude",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Slack bot that bridges a Slack workspace to Claude Code via Socket Mode and @buzzie-ai/claude-inject. Receives Slack messages, forwards them to a persistent Claude Code session per thread, and posts replies back.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|