@stratusagent/channel-slack 0.10.0 → 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 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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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
- if (event.result.ok) {
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
- if (!this.ref || this.pendingEdit) {
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(truncateForSlack(this.currentText()));
236
+ this.queueEdit(messageText(this.currentText()));
162
237
  }, delay);
163
238
  this.pendingEdit.unref?.();
164
239
  }
165
240
  queueEdit(text) {
166
- const ref = this.ref;
167
- if (!ref) {
168
- return;
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(() => this.web.chat.update({ channel: ref.channel, ts: ref.ts, text }))
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 : '(no reply)';
183
- const chunks = splitForSlack(text);
184
- this.queueEdit(chunks[0] ?? '(no reply)');
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 chunks.slice(1)) {
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
- const lastAssistantReply = (session) => {
258
- for (let index = session.messages.length - 1; index >= 0; index -= 1) {
259
- const message = session.messages[index];
260
- if (!message) {
261
- continue;
262
- }
263
- // Stop at the current turn's input: an earlier turn's answer must not
264
- // be replayed as this turn's reply when the provider returned no text.
265
- if (message.role === 'user') {
266
- break;
267
- }
268
- if (message.role === 'assistant' && message.content.trim().length > 0) {
269
- return message.content;
270
- }
271
- }
272
- return '(no reply)';
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` deliberately
281
- * says "this session" out loud: the button is the shortest path to widening
282
- * what an agent does unattended, and an approver should see the scope they
283
- * granted in the record of granting it.
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 for the rest of this session',
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
- text: `*${escapeSlackText(agentName)}* wants to run \`${escapeSlackText(toolName)}\` (${risk}).`,
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
- { type: 'button', action_id: 'stratus_approve_always', text: { type: 'plain_text', text: 'Always allow' }, value: requestId, style: 'primary' },
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 = splitForSlack(text.trim().length > 0 ? text : '(empty message)');
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: truncateForSlack(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
- const outcome = OUTCOME_TEXT[`${event.reason}:${event.answer}`] ?? 'Resolved';
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
- const reportUnrenderedFailure = async (event) => {
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 connection.web.chat.postMessage({
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 report a failed turn: ${error instanceof Error ? error.message : String(error)}`);
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 failure with no renderer is not a turn this process is
1002
- // serving — it is one the startup sweep or a failed recovery
1003
- // closed out. Nothing downstream would say anything about it.
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 non-empty queue is not proof the failure belongs to a turn
1006
- // this adapter dispatched, only that it has one for this session.
1007
- // A renderer is queued at intake, before the gateway starts the
1008
- // turn it belongs to, so a message arriving while a recovery is
1009
- // still ahead of it on the session chain leaves the recovery's
1010
- // failure looking rendered when it is not. Suppressing is the
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
- // Telling them apart needs a turn identifier, which `StratusEvent`
1015
- // does not carry — the same gap 05's WS envelope closes with
1016
- // `{ sessionId, turnId, event }`. The routing a line below has it
1017
- // too: recovery events are already delivered to whichever renderer
1018
- // is at the head of the queue, whether or not it is theirs.
1019
- if (event.type === 'session.failed' && !renderers.get(event.sessionId)?.length) {
1020
- track(reportUnrenderedFailure(event));
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` after the drain snapshot below.
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
- await Promise.allSettled([...inflight]);
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.10.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.10.0",
24
- "@stratusagent/core": "0.10.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",