@stratusagent/channel-slack 0.9.2 → 0.11.0
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 +22 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +632 -80
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Slack adapter for Stratus agents. **One Slack app per agent** — Slack has no way to give a single bot several identities with real avatars, presence, and DMs, so each agent gets its own app, and the adapter runs one Socket Mode connection per agent (no public ingress needed; Mac Minis behind NAT are fine).
|
|
4
4
|
|
|
5
|
-
- **Resumable conversations**: session keys are `slack:<agent>:<team>:<channel>:<thread_ts ?? ts>` (DMs: the DM channel id) — a thread is a conversation, it survives daemon restarts, and two agents sharing a thread keep fully separate sessions.
|
|
5
|
+
- **Resumable conversations**: session keys are `slack:<agent>:<team>:<channel>:<thread_ts ?? ts>` (DMs: the DM channel id) — a thread is a conversation, it survives daemon restarts, and two agents sharing a thread keep fully separate sessions. A turn parked on a human when the daemon died is re-asked after the restart, and when it finishes its reply is posted into the thread as a fresh message — the placeholder it would have edited belonged to the old process.
|
|
6
6
|
- **Streaming replies**: post a placeholder, edit as deltas arrive (throttled for `chat.update` limits), show `⚙ tool…` status lines, finalize with the full reply — split across messages when it outgrows one.
|
|
7
|
+
- **Markdown is translated to Slack's mrkdwn** on the way out — `**bold**` to `*bold*`, `*italic*` to `_italic_`, `~~struck~~` to `~struck~`, `[text](https://…)` to `<https://…|text>`, and a `#` heading to a bold line, since mrkdwn has no headings. Code spans and fences are left exactly as written, an unclosed fence included, so a `**` inside a snippet stays part of the snippet — a run of N backticks opens code and only a run of exactly N closes it, which is what lets ``a span with a ` in it`` and a ````-fence holding a ```-fence work. One or two unmatched backticks are literal text, as they are in Markdown. Anything whose spelling already matches — lists, block quotes, inline code — is untouched. A marker still being streamed stays literal until its closing half arrives.
|
|
7
8
|
- **Mention-only in channels, free-form in DMs.** Inbound mentions of other users are humanized to `@Display Name` for the model; redeliveries are deduped so a slow turn never runs twice.
|
|
8
|
-
- **Approval buttons** for the gateway's `remote` permission mode: a gated tool call parks the turn and asks in its thread with **Allow once** / **Always allow** / **Deny**. See [Approving tool calls](#approving-tool-calls) — clicks are authorized by *who clicked*, never by who can see the message.
|
|
9
|
+
- **Approval buttons** for the gateway's `remote` permission mode: a gated tool call parks the turn and asks in its thread with **Allow once** / **Always allow** / **Deny**. See [Approving tool calls](#approving-tool-calls) — clicks are authorized by *who clicked*, never by who can see the message, and **Always allow** is offered only where the daemon would actually remember it.
|
|
9
10
|
- **Tokens are gateway infrastructure secrets**, stored in the `channels` namespace of `~/.stratus/credentials.json` — never in an agent's credential allowlist:
|
|
10
11
|
|
|
11
12
|
```json
|
|
@@ -54,6 +55,25 @@ parks the turn and the adapter asks here. The question goes to the thread the
|
|
|
54
55
|
turn is happening in; a turn with no Slack conversation of its own (scheduled
|
|
55
56
|
work, a delegate) asks in the configured `slackChannel`.
|
|
56
57
|
|
|
58
|
+
The request names the **site** for a call judged by one (`browser.act`),
|
|
59
|
+
because its arguments are a CSS selector and say nothing about where a click
|
|
60
|
+
lands — and that site is what **Always allow** widens.
|
|
61
|
+
|
|
62
|
+
**Always allow** is left off entirely where the daemon would remember
|
|
63
|
+
nothing: a `dangerous` tool, which asks every time whatever is answered; a
|
|
64
|
+
browser action whose conversation has no page to grant; and a shell command
|
|
65
|
+
the parser cannot reduce to a scope. The prompt says so instead, because a
|
|
66
|
+
button that does exactly what **Allow once** does, under a label promising a
|
|
67
|
+
standing grant, is worse than no button.
|
|
68
|
+
|
|
69
|
+
The resolved message describes what the daemon did rather than which button
|
|
70
|
+
was pressed — `POST /approvals` accepts `always` whatever this channel
|
|
71
|
+
rendered, so the answer can arrive from somewhere else. It states the floor
|
|
72
|
+
rather than the ceiling: a remembered answer lasts *at least* the session,
|
|
73
|
+
and whether a scoped one also survives a restart depends on the daemon
|
|
74
|
+
writing the whitelist, which is not known when the message is sent.
|
|
75
|
+
`stratus logs` has the exact line.
|
|
76
|
+
|
|
57
77
|
Who may answer is configured per agent, in `~/.stratus/config.json`:
|
|
58
78
|
|
|
59
79
|
```jsonc
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,23 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
1
2
|
import { readFile } from 'node:fs/promises';
|
|
2
3
|
import { createRequire } from 'node:module';
|
|
3
4
|
import path from 'node:path';
|
|
5
|
+
import { latestTurnReply } from '@stratusagent/core';
|
|
4
6
|
import { channelSessionKey, } from '@stratusagent/channels';
|
|
5
7
|
const SLACK_MAX_MESSAGE_CHARS = 4000;
|
|
6
8
|
const DEFAULT_EDIT_INTERVAL_MS = 1000;
|
|
7
9
|
const DEDUPE_CAPACITY = 2000;
|
|
10
|
+
/**
|
|
11
|
+
* How many files an unrendered turn may queue for its outcome. Nothing
|
|
12
|
+
* drains that queue until the outcome arrives, so a session whose outcome
|
|
13
|
+
* this process never sees would otherwise grow it for the life of the
|
|
14
|
+
* daemon. Twenty is well past what one turn produces in practice, and
|
|
15
|
+
* passing it is reported rather than swallowed.
|
|
16
|
+
*/
|
|
17
|
+
const MAX_UNRENDERED_FILES = 20;
|
|
8
18
|
const PLACEHOLDER_TEXT = '…';
|
|
19
|
+
/** What a turn that produced no text puts in its message, wherever it is posted from. */
|
|
20
|
+
const NO_REPLY_TEXT = '(no reply)';
|
|
9
21
|
// Lazy (and CJS-interoperable) so tests with injected fakes never load the
|
|
10
22
|
// real SDK stack.
|
|
11
23
|
const requireModule = createRequire(import.meta.url);
|
|
@@ -24,6 +36,22 @@ const defaultWebClient = (botToken) => {
|
|
|
24
36
|
* (split across messages when it outgrows one).
|
|
25
37
|
*/
|
|
26
38
|
class ReplyRenderer {
|
|
39
|
+
/**
|
|
40
|
+
* Whether the gateway has begun the turn this renderer was opened for.
|
|
41
|
+
* A renderer is queued at intake, before the gateway starts its turn,
|
|
42
|
+
* so until the session reports `running` again the turn at the head of
|
|
43
|
+
* the session's chain may be somebody else's — a recovery still parked
|
|
44
|
+
* on a human — and its completion is not this renderer's to swallow.
|
|
45
|
+
*/
|
|
46
|
+
turnStarted = false;
|
|
47
|
+
/**
|
|
48
|
+
* The id this renderer's turn is dispatched under. A gateway that reports
|
|
49
|
+
* its active turn (`activeTurnId`) lets the adapter match an outcome to
|
|
50
|
+
* this renderer exactly, rather than to whichever turn reported `running`
|
|
51
|
+
* next — which, for a session another surface can also dispatch to, may
|
|
52
|
+
* not be this one.
|
|
53
|
+
*/
|
|
54
|
+
turnId = randomUUID();
|
|
27
55
|
buffer = '';
|
|
28
56
|
turnBreakPending = false;
|
|
29
57
|
toolLine;
|
|
@@ -32,6 +60,19 @@ class ReplyRenderer {
|
|
|
32
60
|
pendingEdit;
|
|
33
61
|
editChain = Promise.resolve();
|
|
34
62
|
uploadChain = Promise.resolve();
|
|
63
|
+
/**
|
|
64
|
+
* A handover in progress (`yieldTo`): edits and the finalize wait for it,
|
|
65
|
+
* so a turn that finishes while its placeholder is being given away
|
|
66
|
+
* writes into the fresh one rather than over the reply it was given to.
|
|
67
|
+
*/
|
|
68
|
+
handover = Promise.resolve();
|
|
69
|
+
/**
|
|
70
|
+
* Bumped by a handover. An edit scheduled before it carries the text of
|
|
71
|
+
* the turn that was handed over — the recovery's stream, routed to this
|
|
72
|
+
* renderer while it was at the head of the queue — and must not land in
|
|
73
|
+
* the placeholder opened for this turn.
|
|
74
|
+
*/
|
|
75
|
+
generation = 0;
|
|
35
76
|
finalized = false;
|
|
36
77
|
web;
|
|
37
78
|
channel;
|
|
@@ -45,6 +86,24 @@ class ReplyRenderer {
|
|
|
45
86
|
this.editIntervalMs = editIntervalMs;
|
|
46
87
|
this.warn = warn;
|
|
47
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* The gateway has begun this renderer's turn. Whatever was streamed here
|
|
91
|
+
* before now belonged to the turn ahead of it on the session chain — a
|
|
92
|
+
* recovery's stream, routed to this renderer because it was at the head
|
|
93
|
+
* of the queue — and is dropped, edits already scheduled for it
|
|
94
|
+
* included, so this turn's placeholder starts empty.
|
|
95
|
+
*/
|
|
96
|
+
beginTurn() {
|
|
97
|
+
this.turnStarted = true;
|
|
98
|
+
if (this.pendingEdit) {
|
|
99
|
+
clearTimeout(this.pendingEdit);
|
|
100
|
+
this.pendingEdit = undefined;
|
|
101
|
+
}
|
|
102
|
+
this.buffer = '';
|
|
103
|
+
this.toolLine = undefined;
|
|
104
|
+
this.turnBreakPending = false;
|
|
105
|
+
this.generation += 1;
|
|
106
|
+
}
|
|
48
107
|
async open() {
|
|
49
108
|
const posted = await this.web.chat.postMessage({
|
|
50
109
|
channel: this.channel,
|
|
@@ -55,7 +114,7 @@ class ReplyRenderer {
|
|
|
55
114
|
this.ref = { channel: posted.channel ?? this.channel, ts: posted.ts };
|
|
56
115
|
}
|
|
57
116
|
}
|
|
58
|
-
onEvent(event) {
|
|
117
|
+
onEvent(event, ofThisTurn = true) {
|
|
59
118
|
if (this.finalized) {
|
|
60
119
|
return;
|
|
61
120
|
}
|
|
@@ -115,7 +174,11 @@ class ReplyRenderer {
|
|
|
115
174
|
// non-streaming or slow to its first delta, and the message must not
|
|
116
175
|
// claim a finished tool is still running that whole time.
|
|
117
176
|
this.scheduleEdit();
|
|
118
|
-
|
|
177
|
+
// Only this turn's files: a result the caller knows belongs to the
|
|
178
|
+
// turn ahead of this one on the session chain — a recovery's
|
|
179
|
+
// screenshot — would otherwise be uploaded in this turn's place in
|
|
180
|
+
// the thread. The adapter holds it for the turn that produced it.
|
|
181
|
+
if (event.result.ok && ofThisTurn) {
|
|
119
182
|
for (const filePath of collectFilePaths(event.result)) {
|
|
120
183
|
this.queueUpload(filePath);
|
|
121
184
|
}
|
|
@@ -127,7 +190,17 @@ class ReplyRenderer {
|
|
|
127
190
|
// channel contract's upload operation. Uploads chain so they land in
|
|
128
191
|
// order and finalize() waits for them.
|
|
129
192
|
queueUpload(filePath) {
|
|
193
|
+
// Behind a handover in progress, for the same reason edits and the
|
|
194
|
+
// finalize are: the turn being handed the placeholder has its own
|
|
195
|
+
// attachments to put in the thread first, and an upload is a message
|
|
196
|
+
// of its own — one sent now would sit above them and read as this
|
|
197
|
+
// turn's answer arriving first. Captured at queue time, not read when
|
|
198
|
+
// the chain runs: a handover that begins after this upload waits for
|
|
199
|
+
// it, and an upload that then waited for that handover would be a
|
|
200
|
+
// cycle nothing breaks (see `queueEdit`).
|
|
201
|
+
const handover = this.handover;
|
|
130
202
|
this.uploadChain = this.uploadChain
|
|
203
|
+
.then(() => handover)
|
|
131
204
|
// Read as file DATA inside the chain: the Web API takes contents,
|
|
132
205
|
// not a path, and a missing file surfaces as this upload's own
|
|
133
206
|
// failure instead of an unhandled stream error.
|
|
@@ -147,7 +220,9 @@ class ReplyRenderer {
|
|
|
147
220
|
return parts.length > 0 ? parts.join('\n\n') : PLACEHOLDER_TEXT;
|
|
148
221
|
}
|
|
149
222
|
scheduleEdit() {
|
|
150
|
-
|
|
223
|
+
// Not gated on having a placeholder: during a handover there is none
|
|
224
|
+
// for a moment, and the edit reads the fresh one when its turn comes.
|
|
225
|
+
if (this.pendingEdit) {
|
|
151
226
|
return;
|
|
152
227
|
}
|
|
153
228
|
const elapsed = Date.now() - this.lastEditAt;
|
|
@@ -158,33 +233,50 @@ class ReplyRenderer {
|
|
|
158
233
|
return;
|
|
159
234
|
}
|
|
160
235
|
this.lastEditAt = Date.now();
|
|
161
|
-
this.queueEdit(
|
|
236
|
+
this.queueEdit(messageText(this.currentText()));
|
|
162
237
|
}, delay);
|
|
163
238
|
this.pendingEdit.unref?.();
|
|
164
239
|
}
|
|
165
240
|
queueEdit(text) {
|
|
166
|
-
const
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
241
|
+
const generation = this.generation;
|
|
242
|
+
// The handover as it stands when the edit is queued, not when it runs:
|
|
243
|
+
// a handover that begins after this edit waits for this edit, and an
|
|
244
|
+
// edit that then waited for that handover would be a cycle nothing
|
|
245
|
+
// could break.
|
|
246
|
+
const handover = this.handover;
|
|
170
247
|
this.editChain = this.editChain
|
|
171
|
-
.then(() =>
|
|
248
|
+
.then(() => handover)
|
|
249
|
+
.then(() => {
|
|
250
|
+
// Read after the handover, not before: the placeholder may have
|
|
251
|
+
// changed hands while this edit waited its turn — and the text
|
|
252
|
+
// may belong to the turn that was handed over.
|
|
253
|
+
const ref = this.ref;
|
|
254
|
+
return ref && generation === this.generation
|
|
255
|
+
? this.web.chat.update({ channel: ref.channel, ts: ref.ts, text })
|
|
256
|
+
: undefined;
|
|
257
|
+
})
|
|
172
258
|
.then(() => undefined)
|
|
173
259
|
.catch((error) => this.warn(`chat.update failed: ${error instanceof Error ? error.message : String(error)}`));
|
|
174
260
|
}
|
|
175
261
|
/** Replace the placeholder with the final reply, splitting if oversized. */
|
|
176
262
|
async finalize(reply) {
|
|
263
|
+
await this.handover;
|
|
177
264
|
this.finalized = true;
|
|
178
265
|
if (this.pendingEdit) {
|
|
179
266
|
clearTimeout(this.pendingEdit);
|
|
180
267
|
this.pendingEdit = undefined;
|
|
181
268
|
}
|
|
182
|
-
const text = reply.trim().length > 0 ? reply :
|
|
183
|
-
const chunks =
|
|
184
|
-
|
|
269
|
+
const text = reply.trim().length > 0 ? reply : NO_REPLY_TEXT;
|
|
270
|
+
const chunks = messageChunks(text);
|
|
271
|
+
// No placeholder — a handover could not open a fresh one — and the
|
|
272
|
+
// reply is a message of its own rather than nothing at all.
|
|
273
|
+
const rest = this.ref ? chunks.slice(1) : chunks;
|
|
274
|
+
if (this.ref) {
|
|
275
|
+
this.queueEdit(chunks[0] ?? NO_REPLY_TEXT);
|
|
276
|
+
}
|
|
185
277
|
await this.editChain;
|
|
186
278
|
await this.uploadChain;
|
|
187
|
-
for (const chunk of
|
|
279
|
+
for (const chunk of rest) {
|
|
188
280
|
try {
|
|
189
281
|
await this.web.chat.postMessage({
|
|
190
282
|
channel: this.channel,
|
|
@@ -200,6 +292,112 @@ class ReplyRenderer {
|
|
|
200
292
|
async fail(message) {
|
|
201
293
|
await this.finalize(`Something went wrong: ${message}`);
|
|
202
294
|
}
|
|
295
|
+
/**
|
|
296
|
+
* Claim the placeholder for a turn that finished ahead of this one — the
|
|
297
|
+
* recovery this renderer was queued behind — without yet knowing what
|
|
298
|
+
* that turn has to say. Slack keeps a message's place when it is edited,
|
|
299
|
+
* so the earlier turn's reply lands above this turn's, in the order the
|
|
300
|
+
* conversation happened; posted as a new message instead, it would sit
|
|
301
|
+
* below a placeholder that was posted first.
|
|
302
|
+
*
|
|
303
|
+
* The claim is made synchronously, so it is in place before the caller
|
|
304
|
+
* awaits anything (see `HandoverClaim`).
|
|
305
|
+
*/
|
|
306
|
+
reserveHandover() {
|
|
307
|
+
// One handover at a time: two turns ahead of this one finishing close
|
|
308
|
+
// together would otherwise both take the placeholder as they found it,
|
|
309
|
+
// and the second would write over the first's reply. Each waits for
|
|
310
|
+
// the one before it and takes the placeholder that reopen left.
|
|
311
|
+
// The edits to let through first are the ones queued before this
|
|
312
|
+
// handover existed; those queued after it wait for it (see `queueEdit`),
|
|
313
|
+
// so waiting on the live chain here would wait on them in return.
|
|
314
|
+
const drained = this.editChain;
|
|
315
|
+
const previous = this.handover;
|
|
316
|
+
let release;
|
|
317
|
+
const held = new Promise((resolve) => {
|
|
318
|
+
release = resolve;
|
|
319
|
+
});
|
|
320
|
+
this.handover = previous.then(() => held);
|
|
321
|
+
let spent = false;
|
|
322
|
+
const settle = () => {
|
|
323
|
+
if (!spent) {
|
|
324
|
+
spent = true;
|
|
325
|
+
release();
|
|
326
|
+
}
|
|
327
|
+
};
|
|
328
|
+
return {
|
|
329
|
+
take: async (chunks, between) => {
|
|
330
|
+
if (spent) {
|
|
331
|
+
return false;
|
|
332
|
+
}
|
|
333
|
+
try {
|
|
334
|
+
await previous;
|
|
335
|
+
return await this.handoverTo(chunks, drained, between);
|
|
336
|
+
}
|
|
337
|
+
finally {
|
|
338
|
+
settle();
|
|
339
|
+
}
|
|
340
|
+
},
|
|
341
|
+
release: settle,
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* The body of a handover, running with the placeholder already claimed:
|
|
346
|
+
* edit it to the earlier turn's first chunk, post the rest, run whatever
|
|
347
|
+
* else that turn has to put in the thread, and reopen a placeholder for
|
|
348
|
+
* this turn below it all.
|
|
349
|
+
*/
|
|
350
|
+
async handoverTo(chunks, drained, between) {
|
|
351
|
+
const [first, ...rest] = chunks;
|
|
352
|
+
const given = this.ref;
|
|
353
|
+
if (first === undefined || this.finalized || !given) {
|
|
354
|
+
return false;
|
|
355
|
+
}
|
|
356
|
+
await drained;
|
|
357
|
+
try {
|
|
358
|
+
await this.web.chat.update({ channel: given.channel, ts: given.ts, text: first });
|
|
359
|
+
}
|
|
360
|
+
catch (error) {
|
|
361
|
+
// Not handed over: the placeholder is still this turn's, and the
|
|
362
|
+
// caller posts the reply as messages of its own.
|
|
363
|
+
this.warn(`chat.update failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
364
|
+
return false;
|
|
365
|
+
}
|
|
366
|
+
// The placeholder is the earlier turn's now, and the reference goes
|
|
367
|
+
// before the reopen, so a reopen that fails cannot leave this turn
|
|
368
|
+
// writing over the reply just handed over. (What was streamed into
|
|
369
|
+
// it is dealt with by `beginTurn`, at the boundary that actually
|
|
370
|
+
// separates the two turns' output.)
|
|
371
|
+
this.ref = undefined;
|
|
372
|
+
for (const chunk of rest) {
|
|
373
|
+
try {
|
|
374
|
+
await this.web.chat.postMessage({
|
|
375
|
+
channel: this.channel,
|
|
376
|
+
text: chunk,
|
|
377
|
+
...(this.threadTs ? { thread_ts: this.threadTs } : {}),
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
catch (error) {
|
|
381
|
+
this.warn(`chat.postMessage failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
// Anything else the earlier turn has to put in the thread goes here,
|
|
385
|
+
// while this renderer still has no placeholder of its own: a message
|
|
386
|
+
// posted after the reopen would sit below this turn's answer, which
|
|
387
|
+
// is the order the handover exists to keep.
|
|
388
|
+
if (between) {
|
|
389
|
+
await between();
|
|
390
|
+
}
|
|
391
|
+
try {
|
|
392
|
+
await this.open();
|
|
393
|
+
}
|
|
394
|
+
catch (error) {
|
|
395
|
+
// No placeholder for this turn, then: its reply is posted as a
|
|
396
|
+
// message of its own when it comes (see `finalize`).
|
|
397
|
+
this.warn(`could not reopen a placeholder: ${error instanceof Error ? error.message : String(error)}`);
|
|
398
|
+
}
|
|
399
|
+
return true;
|
|
400
|
+
}
|
|
203
401
|
}
|
|
204
402
|
// The adapter-level convention for file-bearing tool results: an ok result
|
|
205
403
|
// whose object output carries `file: string` or `files: string[]` refers to
|
|
@@ -234,6 +432,135 @@ const safeCutIndex = (text, index) => {
|
|
|
234
432
|
const truncateForSlack = (text) => text.length <= SLACK_MAX_MESSAGE_CHARS
|
|
235
433
|
? text
|
|
236
434
|
: `${text.slice(0, safeCutIndex(text, SLACK_MAX_MESSAGE_CHARS - 1))}…`;
|
|
435
|
+
/**
|
|
436
|
+
* Where the run of exactly `length` backticks that closes an open one
|
|
437
|
+
* begins, or -1. Exactly: a longer run is not a closer, which is the whole
|
|
438
|
+
* point of writing a span as ``code with a ` in it`` and a fence as ````
|
|
439
|
+
* when the block itself contains ```.
|
|
440
|
+
*/
|
|
441
|
+
const closingBacktickRun = (text, from, length) => {
|
|
442
|
+
const run = '`'.repeat(length);
|
|
443
|
+
for (let at = text.indexOf(run, from); at !== -1; at = text.indexOf(run, at + 1)) {
|
|
444
|
+
if (text[at - 1] !== '`' && text[at + length] !== '`') {
|
|
445
|
+
return at;
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
return -1;
|
|
449
|
+
};
|
|
450
|
+
/**
|
|
451
|
+
* The text as alternating prose and code — even indices prose, odd code.
|
|
452
|
+
*
|
|
453
|
+
* Code is the one place a reader means the characters themselves: `**` in a
|
|
454
|
+
* shell snippet is the snippet, so nothing below rewrites it. A run of N
|
|
455
|
+
* backticks opens code and the next run of exactly N closes it, which is
|
|
456
|
+
* the same rule for a span and for a fence and is why a longer delimiter
|
|
457
|
+
* can carry a shorter one inside it.
|
|
458
|
+
*
|
|
459
|
+
* A fence with no closer runs to the end on purpose: a model that forgets
|
|
460
|
+
* to close one, and every partially streamed block on its way to being
|
|
461
|
+
* closed, would otherwise have its contents rewritten as prose. One or two
|
|
462
|
+
* unmatched backticks are the opposite case — literal text, as they are in
|
|
463
|
+
* Markdown, since "use the ` character" must not swallow the rest of the
|
|
464
|
+
* message.
|
|
465
|
+
*/
|
|
466
|
+
const proseAndCode = (text) => {
|
|
467
|
+
const segments = [];
|
|
468
|
+
let prose = 0;
|
|
469
|
+
let cursor = 0;
|
|
470
|
+
while (cursor < text.length) {
|
|
471
|
+
const open = text.indexOf('`', cursor);
|
|
472
|
+
if (open === -1) {
|
|
473
|
+
break;
|
|
474
|
+
}
|
|
475
|
+
let length = 1;
|
|
476
|
+
while (text[open + length] === '`') {
|
|
477
|
+
length += 1;
|
|
478
|
+
}
|
|
479
|
+
const close = closingBacktickRun(text, open + length, length);
|
|
480
|
+
if (close === -1) {
|
|
481
|
+
if (length < 3) {
|
|
482
|
+
cursor = open + length;
|
|
483
|
+
continue;
|
|
484
|
+
}
|
|
485
|
+
segments.push(text.slice(prose, open), text.slice(open));
|
|
486
|
+
return segments;
|
|
487
|
+
}
|
|
488
|
+
segments.push(text.slice(prose, open), text.slice(open, close + length));
|
|
489
|
+
prose = close + length;
|
|
490
|
+
cursor = prose;
|
|
491
|
+
}
|
|
492
|
+
segments.push(text.slice(prose));
|
|
493
|
+
return segments;
|
|
494
|
+
};
|
|
495
|
+
/**
|
|
496
|
+
* The spellings that differ, applied to prose only, in an order that matters.
|
|
497
|
+
*
|
|
498
|
+
* Single-asterisk emphasis goes first and is barred from crossing a `*`, so
|
|
499
|
+
* `**bold**` cannot be read as an italic run that happens to begin with one.
|
|
500
|
+
* Bold then rewrites what is left, and its output is never rescanned.
|
|
501
|
+
*
|
|
502
|
+
* Each delimiter has to hug its content — `3 * 4 * 5` is arithmetic, not
|
|
503
|
+
* emphasis — and none may span a line, so one stray marker cannot italicize
|
|
504
|
+
* the rest of a message.
|
|
505
|
+
*/
|
|
506
|
+
const MRKDWN_REWRITES = [
|
|
507
|
+
// Both at once, before either rule can take half of it and leave the
|
|
508
|
+
// other half as literal asterisks. Its output is why the italic rule
|
|
509
|
+
// below refuses content that already opens with an underscore.
|
|
510
|
+
[/\*\*\*([^\s*][^*\n]*[^\s*]|[^\s*])\*\*\*/g, '*_$1_*'],
|
|
511
|
+
[/(^|[^*])\*([^\s*_][^*\n]*[^\s*]|[^\s*_])\*(?!\*)/g, '$1_$2_'],
|
|
512
|
+
[/\*\*([^\s*][^*\n]*[^\s*]|[^\s*])\*\*/g, '*$1*'],
|
|
513
|
+
[/(^|[^_])__([^\s_][^_\n]*[^\s_]|[^\s_])__(?!_)/g, '$1*$2*'],
|
|
514
|
+
[/~~([^\s~][^~\n]*[^\s~]|[^\s~])~~/g, '~$1~'],
|
|
515
|
+
// The one construct Slack spells backwards. A scheme is required: a
|
|
516
|
+
// bare `[1](2)` in prose is not a link anybody meant to follow.
|
|
517
|
+
[/\[([^\]\n]+)\]\(((?:https?:\/\/|mailto:)[^()\s]+)\)/g, '<$2|$1>'],
|
|
518
|
+
];
|
|
519
|
+
/**
|
|
520
|
+
* `## Heading`, which mrkdwn has no spelling for at all.
|
|
521
|
+
*
|
|
522
|
+
* The optional closing hashes have to be spaced off the text, as Markdown
|
|
523
|
+
* requires: without that, `# C#` is a heading whose name loses its last
|
|
524
|
+
* character.
|
|
525
|
+
*/
|
|
526
|
+
const MARKDOWN_HEADING = /^ {0,3}#{1,6}[ \t]+(.+?)(?:[ \t]+#+)?[ \t]*$/gm;
|
|
527
|
+
/** One emphasis run and nothing else — `*Title*`, not `Some *word* here`. */
|
|
528
|
+
const WHOLLY_BOLD = /^\*[^*]+\*$/;
|
|
529
|
+
const convertProse = (segment) => {
|
|
530
|
+
let converted = segment;
|
|
531
|
+
for (const [pattern, replacement] of MRKDWN_REWRITES) {
|
|
532
|
+
converted = converted.replace(pattern, replacement);
|
|
533
|
+
}
|
|
534
|
+
// Last, so the heading's own text is already converted. A heading a model
|
|
535
|
+
// wrote as `## **Title**` is bold by then, and wrapping it again would
|
|
536
|
+
// print the asterisks rather than render them. Nothing is stripped to get
|
|
537
|
+
// there: an asterisk in a heading may be the text itself (`# glob *.ts`),
|
|
538
|
+
// and a reply that reads oddly beats a reply that says something else.
|
|
539
|
+
return converted.replace(MARKDOWN_HEADING, (line, body) => {
|
|
540
|
+
const text = body.trim();
|
|
541
|
+
if (text.length === 0) {
|
|
542
|
+
return line;
|
|
543
|
+
}
|
|
544
|
+
return WHOLLY_BOLD.test(text) ? text : `*${text}*`;
|
|
545
|
+
});
|
|
546
|
+
};
|
|
547
|
+
/**
|
|
548
|
+
* Markdown as a model writes it, in the spelling Slack actually renders.
|
|
549
|
+
*
|
|
550
|
+
* Slack's mrkdwn is not Markdown, and the gap is not cosmetic: `**bold**`
|
|
551
|
+
* reaches a reader as four literal asterisks, and `## Heading` as a line
|
|
552
|
+
* that starts with two hashes. Models write Markdown because that is what
|
|
553
|
+
* every other surface here renders, and a soul should not have to know
|
|
554
|
+
* which channel is carrying it, so the translation happens at the edge that
|
|
555
|
+
* does know.
|
|
556
|
+
*
|
|
557
|
+
* Only what differs is touched. Lists, block quotes, and inline code
|
|
558
|
+
* already mean in mrkdwn what they mean in Markdown; rewriting them would
|
|
559
|
+
* add ways to be wrong and fix nothing.
|
|
560
|
+
*/
|
|
561
|
+
const toSlackMrkdwn = (text) => proseAndCode(text)
|
|
562
|
+
.map((segment, index) => (index % 2 === 1 ? segment : convertProse(segment)))
|
|
563
|
+
.join('');
|
|
237
564
|
const splitForSlack = (text) => {
|
|
238
565
|
if (text.length <= SLACK_MAX_MESSAGE_CHARS) {
|
|
239
566
|
return [text];
|
|
@@ -254,37 +581,52 @@ const splitForSlack = (text) => {
|
|
|
254
581
|
}
|
|
255
582
|
return chunks;
|
|
256
583
|
};
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
584
|
+
/**
|
|
585
|
+
* Agent text as one Slack message: converted, then sized.
|
|
586
|
+
*
|
|
587
|
+
* These two are the only ways anything an agent wrote reaches Slack, so
|
|
588
|
+
* mrkdwn is a property of the send path rather than something each call
|
|
589
|
+
* site has to remember — the reason the streamed placeholder and the final
|
|
590
|
+
* reply cannot end up in different markup.
|
|
591
|
+
*/
|
|
592
|
+
const messageText = (text) => truncateForSlack(toSlackMrkdwn(text));
|
|
593
|
+
/**
|
|
594
|
+
* Agent text as however many Slack messages it takes. Converted before it
|
|
595
|
+
* is split, so a chunk is measured at the length it will be sent at, and so
|
|
596
|
+
* no rewrite is ever asked to span a boundary.
|
|
597
|
+
*/
|
|
598
|
+
const messageChunks = (text) => splitForSlack(toSlackMrkdwn(text));
|
|
599
|
+
// One rule with the gateway's `sessionRouting`, which posts the same
|
|
600
|
+
// message for a turn this adapter did not start.
|
|
601
|
+
const lastAssistantReply = (session) => latestTurnReply(session) ?? NO_REPLY_TEXT;
|
|
274
602
|
const APPROVAL_ACTIONS = {
|
|
275
603
|
stratus_approve_once: 'once',
|
|
276
604
|
stratus_approve_always: 'always',
|
|
277
605
|
stratus_deny: 'deny',
|
|
278
606
|
};
|
|
279
607
|
/**
|
|
280
|
-
* How an approval request reads once it is settled. `always`
|
|
281
|
-
*
|
|
282
|
-
*
|
|
283
|
-
*
|
|
608
|
+
* How an approval request reads once it is settled. `always` says out loud
|
|
609
|
+
* how long it lasts: the button is the shortest path to widening what an
|
|
610
|
+
* agent does unattended, and an approver should see the scope they granted
|
|
611
|
+
* in the record of granting it.
|
|
612
|
+
*
|
|
613
|
+
* It states the **floor**, because that is the only thing true in every
|
|
614
|
+
* case. A call judged by a scope — a shell command, a browser site —
|
|
615
|
+
* persists that scope in the agent's whitelist and normally keeps it
|
|
616
|
+
* across restarts, but not when the daemon cannot write the file (a
|
|
617
|
+
* hand-edit that will not parse) or was built without one, and by then
|
|
618
|
+
* this message has already been sent. Nothing on the bus distinguishes
|
|
619
|
+
* any of it: the policy returns a boolean, and `tool.approval-resolved`
|
|
620
|
+
* carries the answer that was submitted, not how long the grant lasts.
|
|
621
|
+
*
|
|
622
|
+
* So it says what is always so and no more. Claiming only the session
|
|
623
|
+
* lifetime, as this line first did, tells an approver a durable grant
|
|
624
|
+
* revokes itself; claiming the restart, as it then did, promises one the
|
|
625
|
+
* daemon may have failed to save. The daemon's log has the exact line.
|
|
284
626
|
*/
|
|
285
627
|
const OUTCOME_TEXT = {
|
|
286
628
|
'decided:once': 'Allowed once',
|
|
287
|
-
'decided:always': 'Allowed
|
|
629
|
+
'decided:always': 'Allowed and remembered — for this session at least',
|
|
288
630
|
'decided:deny': 'Denied',
|
|
289
631
|
'timeout:deny': 'Expired without an answer — denied',
|
|
290
632
|
// Covers both endings that reach here: the turn was aborted, and the
|
|
@@ -331,14 +673,20 @@ const renderInvocation = (input) => {
|
|
|
331
673
|
truncated,
|
|
332
674
|
};
|
|
333
675
|
};
|
|
334
|
-
const approvalBlocks = (agentName, toolName, risk, requestId, input) => {
|
|
676
|
+
const approvalBlocks = (agentName, toolName, risk, requestId, input, origin, oneShot) => {
|
|
335
677
|
const invocation = renderInvocation(input);
|
|
336
678
|
return [
|
|
337
679
|
{
|
|
338
680
|
type: 'section',
|
|
339
681
|
text: {
|
|
340
682
|
type: 'mrkdwn',
|
|
341
|
-
|
|
683
|
+
// The site, when the call is judged by one. It is not in the
|
|
684
|
+
// arguments and cannot be: a `browser.act` request shows a CSS
|
|
685
|
+
// selector, which says nothing about where the click lands — and
|
|
686
|
+
// **Always allow** widens exactly that site, so an approver who was
|
|
687
|
+
// not shown it is being asked to grant something they cannot see.
|
|
688
|
+
text: `*${escapeSlackText(agentName)}* wants to run \`${escapeSlackText(toolName)}\` (${risk})`
|
|
689
|
+
+ `${origin ? ` on \`${escapeSlackText(origin)}\`` : ''}.`,
|
|
342
690
|
},
|
|
343
691
|
},
|
|
344
692
|
...(invocation.detail
|
|
@@ -353,15 +701,33 @@ const approvalBlocks = (agentName, toolName, risk, requestId, input) => {
|
|
|
353
701
|
elements: [{ type: 'mrkdwn', text: ':warning: Arguments shown are truncated — the full call is longer than this.' }],
|
|
354
702
|
}]
|
|
355
703
|
: []),
|
|
704
|
+
// Why there is no second button, when there is no second button.
|
|
705
|
+
...(oneShot
|
|
706
|
+
? [{
|
|
707
|
+
type: 'context',
|
|
708
|
+
elements: [{
|
|
709
|
+
type: 'mrkdwn',
|
|
710
|
+
text: ':lock: An approval covers this call only — nothing about it is remembered.',
|
|
711
|
+
}],
|
|
712
|
+
}]
|
|
713
|
+
: []),
|
|
356
714
|
{
|
|
357
715
|
type: 'actions',
|
|
358
716
|
// The request id rides on every button rather than in the message
|
|
359
717
|
// reference: Slack gives the value back verbatim, so the gateway is
|
|
360
718
|
// asked about the request that was actually rendered, never one
|
|
361
719
|
// re-derived from a channel and timestamp.
|
|
720
|
+
//
|
|
721
|
+
// **Always allow** is absent when the engine would not remember the
|
|
722
|
+
// answer — a `dangerous` tool, or a browser action with no page to
|
|
723
|
+
// grant. Offering it there is worse than useless: it does exactly
|
|
724
|
+
// what **Allow once** does, under a label promising a standing grant
|
|
725
|
+
// nobody gets.
|
|
362
726
|
elements: [
|
|
363
|
-
{ type: 'button', action_id: 'stratus_approve_once', text: { type: 'plain_text', text: 'Allow once' }, value: requestId },
|
|
364
|
-
|
|
727
|
+
{ type: 'button', action_id: 'stratus_approve_once', text: { type: 'plain_text', text: 'Allow once' }, value: requestId, ...(oneShot ? { style: 'primary' } : {}) },
|
|
728
|
+
...(oneShot
|
|
729
|
+
? []
|
|
730
|
+
: [{ type: 'button', action_id: 'stratus_approve_always', text: { type: 'plain_text', text: 'Always allow' }, value: requestId, style: 'primary' }]),
|
|
365
731
|
{ type: 'button', action_id: 'stratus_deny', text: { type: 'plain_text', text: 'Deny' }, value: requestId, style: 'danger' },
|
|
366
732
|
],
|
|
367
733
|
},
|
|
@@ -393,6 +759,13 @@ export const createSlackChannelAdapter = (options) => {
|
|
|
393
759
|
// to the FIRST registered renderer (the running turn), never a later
|
|
394
760
|
// message's placeholder. Each handler removes exactly its own renderer.
|
|
395
761
|
const renderers = new Map();
|
|
762
|
+
/**
|
|
763
|
+
* Files a turn nobody here rendered produced — a recovery's screenshot,
|
|
764
|
+
* say — keyed by session, waiting for the turn's outcome to be posted so
|
|
765
|
+
* they can follow it into the thread. A rendered turn's files go through
|
|
766
|
+
* its renderer as they are produced; these have no renderer to go through.
|
|
767
|
+
*/
|
|
768
|
+
const unrenderedFiles = new Map();
|
|
396
769
|
// In-flight turns, so stop() can drain: a reply mid-render should reach
|
|
397
770
|
// Slack before the sockets go away.
|
|
398
771
|
const inflight = new Set();
|
|
@@ -523,7 +896,7 @@ export const createSlackChannelAdapter = (options) => {
|
|
|
523
896
|
const web = connection.web;
|
|
524
897
|
return {
|
|
525
898
|
async post(text) {
|
|
526
|
-
const chunks =
|
|
899
|
+
const chunks = messageChunks(text.trim().length > 0 ? text : '(empty message)');
|
|
527
900
|
let first;
|
|
528
901
|
for (const chunk of chunks) {
|
|
529
902
|
const posted = await web.chat.postMessage({ channel: channelId, text: chunk });
|
|
@@ -534,7 +907,7 @@ export const createSlackChannelAdapter = (options) => {
|
|
|
534
907
|
return first ?? { channel: channelId, ts: '' };
|
|
535
908
|
},
|
|
536
909
|
async edit(ref, text) {
|
|
537
|
-
await web.chat.update({ channel: ref.channel, ts: ref.ts, text:
|
|
910
|
+
await web.chat.update({ channel: ref.channel, ts: ref.ts, text: messageText(text) });
|
|
538
911
|
},
|
|
539
912
|
async upload(filePath, title) {
|
|
540
913
|
// File DATA, read here, for the same reason the renderer does it:
|
|
@@ -624,9 +997,10 @@ export const createSlackChannelAdapter = (options) => {
|
|
|
624
997
|
// Fallback text for notifications and clients that do not render
|
|
625
998
|
// blocks — an approval nobody can read is an approval nobody gives.
|
|
626
999
|
text: escapeSlackText(`${agentName} wants to run ${event.call.toolName} (${event.risk})`
|
|
1000
|
+
+ `${event.origin ? ` on ${event.origin}` : ''}`
|
|
627
1001
|
+ `${invocationSummary ? `: ${invocationSummary}` : ''}.`),
|
|
628
1002
|
...(thread ? { thread_ts: thread } : {}),
|
|
629
|
-
blocks: approvalBlocks(agentName, event.call.toolName, event.risk, event.requestId, event.call.input),
|
|
1003
|
+
blocks: approvalBlocks(agentName, event.call.toolName, event.risk, event.requestId, event.call.input, event.origin, event.oneShot === true),
|
|
630
1004
|
});
|
|
631
1005
|
post = posted.ts
|
|
632
1006
|
? {
|
|
@@ -637,6 +1011,7 @@ export const createSlackChannelAdapter = (options) => {
|
|
|
637
1011
|
agentName,
|
|
638
1012
|
toolName: event.call.toolName,
|
|
639
1013
|
risk: event.risk,
|
|
1014
|
+
oneShot: event.oneShot === true,
|
|
640
1015
|
approvers,
|
|
641
1016
|
}
|
|
642
1017
|
: undefined;
|
|
@@ -722,7 +1097,26 @@ export const createSlackChannelAdapter = (options) => {
|
|
|
722
1097
|
return;
|
|
723
1098
|
}
|
|
724
1099
|
approvalPosts.delete(event.requestId);
|
|
725
|
-
|
|
1100
|
+
// The one lifetime this adapter *can* tell, because it rode in on the
|
|
1101
|
+
// request: a one-shot call remembers nothing whatever is answered. Both
|
|
1102
|
+
// shapes reach here — a `dangerous` tool, and a call judged by an
|
|
1103
|
+
// origin with no page to grant — and this channel offers no **Always
|
|
1104
|
+
// allow** for either, but `POST /approvals` still takes all three
|
|
1105
|
+
// answers, so another client can submit one. The general line below has
|
|
1106
|
+
// to hedge between two lifetimes it cannot distinguish; this one must
|
|
1107
|
+
// not, or the record of the decision claims a grant that does not exist.
|
|
1108
|
+
// Three shapes are one-shot and only one of them is knowable from here:
|
|
1109
|
+
// `risk` rode in on the request, so a `dangerous` tool can say why. The
|
|
1110
|
+
// other two — a browser action with no page to grant, and a command the
|
|
1111
|
+
// parser cannot reduce to a scope — are not distinguishable without
|
|
1112
|
+
// carrying a reason this adapter would only ever print, so they share a
|
|
1113
|
+
// line that is true of both. Naming one of them by guess is how this
|
|
1114
|
+
// read "there was no page to remember" for a shell pipeline.
|
|
1115
|
+
const outcome = post.oneShot && event.reason === 'decided' && event.answer === 'always'
|
|
1116
|
+
? post.risk === 'dangerous'
|
|
1117
|
+
? 'Allowed once — a dangerous tool is never remembered'
|
|
1118
|
+
: 'Allowed once — nothing about this call could be remembered'
|
|
1119
|
+
: OUTCOME_TEXT[`${event.reason}:${event.answer}`] ?? 'Resolved';
|
|
726
1120
|
const by = event.actor ? ` by <@${event.actor}>` : '';
|
|
727
1121
|
const text = `*${escapeSlackText(post.agentName)}* — \`${escapeSlackText(post.toolName)}\` (${post.risk}): ${outcome}${by}.`;
|
|
728
1122
|
try {
|
|
@@ -750,7 +1144,61 @@ export const createSlackChannelAdapter = (options) => {
|
|
|
750
1144
|
* The routing has to come from the durable session, because the only
|
|
751
1145
|
* in-memory copy died with the process that had it.
|
|
752
1146
|
*/
|
|
753
|
-
|
|
1147
|
+
/**
|
|
1148
|
+
* Post a turn's outcome into its thread ahead of a renderer queued behind
|
|
1149
|
+
* it, when there is one — through that renderer's placeholder, so the
|
|
1150
|
+
* thread reads in order — and as fresh messages otherwise. Each chunk on
|
|
1151
|
+
* its own, the way `finalize` posts overflow: one refused chunk must not
|
|
1152
|
+
* cost the rest of the answer.
|
|
1153
|
+
*/
|
|
1154
|
+
const postAheadOf = async (behind, connection, channel, thread, chunks, between) => {
|
|
1155
|
+
if (behind && await behind.take(chunks, between)) {
|
|
1156
|
+
return;
|
|
1157
|
+
}
|
|
1158
|
+
for (const chunk of chunks) {
|
|
1159
|
+
try {
|
|
1160
|
+
await connection.web.chat.postMessage({
|
|
1161
|
+
channel,
|
|
1162
|
+
text: chunk,
|
|
1163
|
+
...(thread ? { thread_ts: thread } : {}),
|
|
1164
|
+
});
|
|
1165
|
+
}
|
|
1166
|
+
catch (error) {
|
|
1167
|
+
warn(`slack: could not post part of a turn's outcome: ${error instanceof Error ? error.message : String(error)}`);
|
|
1168
|
+
}
|
|
1169
|
+
}
|
|
1170
|
+
if (between) {
|
|
1171
|
+
await between();
|
|
1172
|
+
}
|
|
1173
|
+
};
|
|
1174
|
+
/**
|
|
1175
|
+
* The files an unrendered turn produced, taken off the session the moment
|
|
1176
|
+
* its outcome arrives — before anything is awaited, so a next turn's files
|
|
1177
|
+
* arriving while this outcome waits on Slack are never mistaken for its.
|
|
1178
|
+
*/
|
|
1179
|
+
const takeUnrenderedFiles = (sessionId) => {
|
|
1180
|
+
const paths = unrenderedFiles.get(sessionId) ?? [];
|
|
1181
|
+
unrenderedFiles.delete(sessionId);
|
|
1182
|
+
return paths;
|
|
1183
|
+
};
|
|
1184
|
+
/** Post the files an unrendered turn produced into its thread, in order. */
|
|
1185
|
+
const uploadUnrenderedFiles = async (connection, channel, thread, paths) => {
|
|
1186
|
+
for (const filePath of paths) {
|
|
1187
|
+
try {
|
|
1188
|
+
const data = await readFile(filePath);
|
|
1189
|
+
await connection.web.files.uploadV2({
|
|
1190
|
+
channel_id: channel,
|
|
1191
|
+
file: data,
|
|
1192
|
+
filename: path.basename(filePath),
|
|
1193
|
+
...(thread ? { thread_ts: thread } : {}),
|
|
1194
|
+
});
|
|
1195
|
+
}
|
|
1196
|
+
catch (error) {
|
|
1197
|
+
warn(`files.uploadV2 failed for ${filePath}: ${error instanceof Error ? error.message : String(error)}`);
|
|
1198
|
+
}
|
|
1199
|
+
}
|
|
1200
|
+
};
|
|
1201
|
+
const reportUnrenderedFailure = async (event, behind, files) => {
|
|
754
1202
|
const gateway = gatewayRef;
|
|
755
1203
|
if (!gateway?.sessionRouting) {
|
|
756
1204
|
return;
|
|
@@ -776,17 +1224,58 @@ export const createSlackChannelAdapter = (options) => {
|
|
|
776
1224
|
if (!connection) {
|
|
777
1225
|
return;
|
|
778
1226
|
}
|
|
1227
|
+
const channel = metadata.slackChannel;
|
|
779
1228
|
const thread = typeof metadata.slackThread === 'string' ? metadata.slackThread : undefined;
|
|
1229
|
+
await postAheadOf(behind, connection, channel, thread, messageChunks(`Something went wrong: ${event.error}`), () => uploadUnrenderedFiles(connection, channel, thread, files));
|
|
1230
|
+
};
|
|
1231
|
+
/**
|
|
1232
|
+
* The other half of `reportUnrenderedFailure`: a turn nobody here was
|
|
1233
|
+
* rendering that *finished*. A turn parked on a human when the daemon
|
|
1234
|
+
* died is re-asked after the restart, approved, and completed by a
|
|
1235
|
+
* process that never opened a placeholder for it — so the approval
|
|
1236
|
+
* survived the restart and the reply went nowhere. Posted as a fresh
|
|
1237
|
+
* message in the thread, since the placeholder it would have edited
|
|
1238
|
+
* belonged to the old process.
|
|
1239
|
+
*/
|
|
1240
|
+
const reportUnrenderedReply = async (event, behind, files) => {
|
|
1241
|
+
const gateway = gatewayRef;
|
|
1242
|
+
if (!gateway?.sessionRouting) {
|
|
1243
|
+
return;
|
|
1244
|
+
}
|
|
1245
|
+
let routing;
|
|
780
1246
|
try {
|
|
781
|
-
await
|
|
782
|
-
channel: metadata.slackChannel,
|
|
783
|
-
text: `Something went wrong: ${event.error}`,
|
|
784
|
-
...(thread ? { thread_ts: thread } : {}),
|
|
785
|
-
});
|
|
1247
|
+
routing = await gateway.sessionRouting(event.sessionId);
|
|
786
1248
|
}
|
|
787
1249
|
catch (error) {
|
|
788
|
-
warn(`slack: could not
|
|
1250
|
+
warn(`slack: could not read the routing for a finished turn: ${error instanceof Error ? error.message : String(error)}`);
|
|
1251
|
+
return;
|
|
1252
|
+
}
|
|
1253
|
+
const metadata = routing?.metadata;
|
|
1254
|
+
if (!routing || metadata?.channel !== 'slack' || typeof metadata.slackChannel !== 'string') {
|
|
1255
|
+
return;
|
|
1256
|
+
}
|
|
1257
|
+
const connection = connectionFor(routing.agentId);
|
|
1258
|
+
if (!connection) {
|
|
1259
|
+
return;
|
|
1260
|
+
}
|
|
1261
|
+
const channel = metadata.slackChannel;
|
|
1262
|
+
const thread = typeof metadata.slackThread === 'string' ? metadata.slackThread : undefined;
|
|
1263
|
+
// A turn that produced files and no text still has the files to post —
|
|
1264
|
+
// and still has to take the placeholder when one is queued behind it.
|
|
1265
|
+
// An upload is a new message, so an attachment posted while the newer
|
|
1266
|
+
// turn's placeholder sits above it reads as the older turn answering
|
|
1267
|
+
// last. `NO_REPLY_TEXT` is what a rendered turn with nothing to say
|
|
1268
|
+
// puts in its own message too. With nothing queued behind, there is no
|
|
1269
|
+
// order to keep and nothing to say, so the files go on their own.
|
|
1270
|
+
const chunks = routing.reply ? messageChunks(routing.reply) : [];
|
|
1271
|
+
const posting = chunks.length > 0 ? chunks : (behind && files.length > 0 ? [NO_REPLY_TEXT] : []);
|
|
1272
|
+
const uploads = () => uploadUnrenderedFiles(connection, channel, thread, files);
|
|
1273
|
+
if (posting.length === 0) {
|
|
1274
|
+
await uploads();
|
|
1275
|
+
return;
|
|
789
1276
|
}
|
|
1277
|
+
await postAheadOf(behind, connection, channel, thread, posting, uploads);
|
|
1278
|
+
log(`slack: posted the reply of a turn finished after a restart to ${channel}`);
|
|
790
1279
|
};
|
|
791
1280
|
const handleInteractive = async (connection, args) => {
|
|
792
1281
|
// Ack first and unconditionally: Slack retries an unacked interaction,
|
|
@@ -926,6 +1415,7 @@ export const createSlackChannelAdapter = (options) => {
|
|
|
926
1415
|
sessionId,
|
|
927
1416
|
agentId: connection.config.agentId,
|
|
928
1417
|
userMessage,
|
|
1418
|
+
turnId: renderer.turnId,
|
|
929
1419
|
metadata: {
|
|
930
1420
|
channel: 'slack',
|
|
931
1421
|
team,
|
|
@@ -998,30 +1488,84 @@ export const createSlackChannelAdapter = (options) => {
|
|
|
998
1488
|
track(retractApprovalRequest(event));
|
|
999
1489
|
return;
|
|
1000
1490
|
}
|
|
1001
|
-
// A
|
|
1002
|
-
//
|
|
1003
|
-
//
|
|
1491
|
+
// A turn ends here in one of two hands. One this adapter started
|
|
1492
|
+
// is finished by the renderer it opened at intake, from the
|
|
1493
|
+
// session `dispatch` returns. One it did not start — a recovery
|
|
1494
|
+
// of a turn parked on a human when the daemon died, or a turn the
|
|
1495
|
+
// startup sweep closed out — has no renderer, and is reported
|
|
1496
|
+
// from the session's stored routing instead.
|
|
1004
1497
|
//
|
|
1005
|
-
// A
|
|
1006
|
-
//
|
|
1007
|
-
//
|
|
1008
|
-
//
|
|
1009
|
-
//
|
|
1010
|
-
//
|
|
1011
|
-
// conservative half of that trade: the alternative reports every
|
|
1012
|
-
// ordinary failure twice.
|
|
1498
|
+
// A renderer in the queue is not proof the outcome is that turn's.
|
|
1499
|
+
// The renderer is queued at intake, before the gateway starts the
|
|
1500
|
+
// turn, so a message arriving while a recovery is still ahead of
|
|
1501
|
+
// it on the session chain has a renderer at the head while the
|
|
1502
|
+
// recovery finishes — and the recovery's reply would be swallowed
|
|
1503
|
+
// as rendered when nothing rendered it.
|
|
1013
1504
|
//
|
|
1014
|
-
//
|
|
1015
|
-
//
|
|
1016
|
-
// `
|
|
1017
|
-
//
|
|
1018
|
-
//
|
|
1019
|
-
|
|
1020
|
-
|
|
1505
|
+
// Which turn is running is exact when the gateway says so: every
|
|
1506
|
+
// turn this adapter dispatches carries its renderer's `turnId`, and
|
|
1507
|
+
// `activeTurnId` names the one on the session now (`StratusEvent`
|
|
1508
|
+
// itself carries no turn identifier), so a turn another surface
|
|
1509
|
+
// dispatched to the same session is never taken for this adapter's,
|
|
1510
|
+
// whatever order the two started in. A gateway without that answer
|
|
1511
|
+
// leaves the order of events: the session reports `running` as
|
|
1512
|
+
// each turn begins, and the next `running` is taken to be the
|
|
1513
|
+
// head renderer's — right for a recovery, which is always ahead of
|
|
1514
|
+
// the message queued behind it, and wrong only for a foreign turn
|
|
1515
|
+
// that starts after the message was queued.
|
|
1516
|
+
const head = renderers.get(event.sessionId)?.[0];
|
|
1517
|
+
const exact = gateway.activeTurnId !== undefined;
|
|
1518
|
+
const active = gateway.activeTurnId?.(event.sessionId);
|
|
1519
|
+
if (event.type === 'session.updated' && event.status === 'running' && head && (!exact || active === head.turnId)) {
|
|
1520
|
+
head.beginTurn();
|
|
1521
|
+
}
|
|
1522
|
+
// A renderer at the head that has not seen its turn start is
|
|
1523
|
+
// queued behind the turn ending now, and its placeholder is
|
|
1524
|
+
// already in the thread: the outcome goes through it, so the
|
|
1525
|
+
// thread reads in the order the conversation happened.
|
|
1526
|
+
const rendered = exact
|
|
1527
|
+
? active !== undefined && (renderers.get(event.sessionId) ?? []).some((renderer) => renderer.turnId === active)
|
|
1528
|
+
: head?.turnStarted === true;
|
|
1529
|
+
// A file belongs to the turn that produced it. A renderer queued
|
|
1530
|
+
// behind a recovery is not its renderer, and uploading through it
|
|
1531
|
+
// would put the recovery's attachment below the newer turn's
|
|
1532
|
+
// answer — so where the gateway names the running turn, a result
|
|
1533
|
+
// from another one is held for that turn's own outcome instead.
|
|
1534
|
+
// Without that answer the order of events cannot tell a foreign
|
|
1535
|
+
// turn from a renderer still waiting to start, and the renderer
|
|
1536
|
+
// keeps what it is handed, as it always has.
|
|
1537
|
+
const foreign = exact && !rendered;
|
|
1538
|
+
if (event.type === 'tool.completed' && event.result.ok && (foreign || !head)) {
|
|
1539
|
+
const produced = collectFilePaths(event.result);
|
|
1540
|
+
if (produced.length > 0) {
|
|
1541
|
+
const held = [...(unrenderedFiles.get(event.sessionId) ?? []), ...produced];
|
|
1542
|
+
// Said out loud when it bites: these are files somebody asked
|
|
1543
|
+
// for, and attachments that never arrive with nothing in the
|
|
1544
|
+
// log is the hardest kind of loss to work out afterwards.
|
|
1545
|
+
if (held.length > MAX_UNRENDERED_FILES) {
|
|
1546
|
+
warn(`slack: a turn with no renderer has produced ${held.length} files; only the last ${MAX_UNRENDERED_FILES} will be posted to its thread`);
|
|
1547
|
+
}
|
|
1548
|
+
unrenderedFiles.set(event.sessionId, held.slice(-MAX_UNRENDERED_FILES));
|
|
1549
|
+
}
|
|
1550
|
+
}
|
|
1551
|
+
// Claimed here, synchronously, rather than inside the report: the
|
|
1552
|
+
// report reads the turn's routing from the store first, and the
|
|
1553
|
+
// queued turn can finish inside that round trip (see
|
|
1554
|
+
// `HandoverClaim`). The claim is released either way, so a report
|
|
1555
|
+
// that finds nothing to post — another surface's session, no
|
|
1556
|
+
// connection — never leaves the queued reply stalled behind it.
|
|
1557
|
+
if (event.type === 'session.failed' && !rendered) {
|
|
1558
|
+
const claim = head?.reserveHandover();
|
|
1559
|
+
track(reportUnrenderedFailure(event, claim, takeUnrenderedFiles(event.sessionId)).finally(() => claim?.release()));
|
|
1560
|
+
return;
|
|
1561
|
+
}
|
|
1562
|
+
if (event.type === 'session.completed' && !rendered) {
|
|
1563
|
+
const claim = head?.reserveHandover();
|
|
1564
|
+
track(reportUnrenderedReply(event, claim, takeUnrenderedFiles(event.sessionId)).finally(() => claim?.release()));
|
|
1021
1565
|
return;
|
|
1022
1566
|
}
|
|
1023
1567
|
if ('sessionId' in event) {
|
|
1024
|
-
renderers.get(event.sessionId)?.[0]?.onEvent(event);
|
|
1568
|
+
renderers.get(event.sessionId)?.[0]?.onEvent(event, !foreign);
|
|
1025
1569
|
}
|
|
1026
1570
|
});
|
|
1027
1571
|
const known = new Set(gateway.agents().map((agent) => agent.id));
|
|
@@ -1067,18 +1611,26 @@ export const createSlackChannelAdapter = (options) => {
|
|
|
1067
1611
|
},
|
|
1068
1612
|
async stop() {
|
|
1069
1613
|
// Stop intake first, so no new INBOUND event can slip into
|
|
1070
|
-
// `inflight`
|
|
1071
|
-
//
|
|
1072
|
-
// That is narrower than it used to claim. The snapshot is taken
|
|
1073
|
-
// once, and this unsubscribes from the bus only after it, so a turn
|
|
1074
|
-
// still finishing can emit an event whose subscriber tracks work
|
|
1075
|
-
// this drain never waits for — a retraction posted after stop()
|
|
1076
|
-
// returns, or dropped with the process. Draining until `inflight`
|
|
1077
|
-
// stays empty would close it, and would make stop() wait on turns
|
|
1078
|
-
// the gateway drains after this call rather than before; worth doing
|
|
1079
|
-
// deliberately, not as a side effect.
|
|
1614
|
+
// `inflight` while the drain below runs.
|
|
1080
1615
|
await Promise.allSettled(connections.map((connection) => connection.socket.disconnect()));
|
|
1081
|
-
|
|
1616
|
+
// Until it stays empty, not once. The bus subscription is still live
|
|
1617
|
+
// here — it comes down after the drain, because a turn finishing
|
|
1618
|
+
// inside the drain still has an outcome to render — so a turn the
|
|
1619
|
+
// gateway is finishing can hand `track` work after any one snapshot
|
|
1620
|
+
// was taken. A single snapshot dropped exactly what this drain
|
|
1621
|
+
// exists to deliver: a shutdown denies every parked call, and the
|
|
1622
|
+
// retraction that takes the live buttons off the message is tracked
|
|
1623
|
+
// by a subscriber reacting to that denial, which is to say during
|
|
1624
|
+
// the drain rather than before it.
|
|
1625
|
+
//
|
|
1626
|
+
// This waits for reactions, never for turns: work enters `inflight`
|
|
1627
|
+
// only when an event arrives, so a turn that has not finished
|
|
1628
|
+
// emitting anything is not something the loop can be waiting on. It
|
|
1629
|
+
// ends when the set does, which is when a snapshot drain would have
|
|
1630
|
+
// ended, plus the tail it used to leave behind.
|
|
1631
|
+
while (inflight.size > 0) {
|
|
1632
|
+
await Promise.allSettled([...inflight]);
|
|
1633
|
+
}
|
|
1082
1634
|
unsubscribe?.();
|
|
1083
1635
|
unsubscribe = undefined;
|
|
1084
1636
|
gatewayRef = undefined;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stratusagent/channel-slack",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"@slack/socket-mode": "^2.0.4",
|
|
22
22
|
"@slack/web-api": "^7.11.0",
|
|
23
|
-
"@stratusagent/channels": "0.
|
|
24
|
-
"@stratusagent/core": "0.
|
|
23
|
+
"@stratusagent/channels": "0.11.0",
|
|
24
|
+
"@stratusagent/core": "0.11.0"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/node": "^24.6.0",
|