cli-jaw 2.17.23 → 2.17.24

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.
@@ -0,0 +1,218 @@
1
+ // ─── Turn Delivery Claims ────────────────────────────
2
+ // One inbound turn has TWO ways to put the answer in front of the user, and
3
+ // until this module existed neither knew about the other:
4
+ //
5
+ // 1. the AGENT itself, calling POST /api/channel/send as a tool mid-turn;
6
+ // 2. the DISPATCH path, posting the collected final text when the turn settles.
7
+ //
8
+ // When the agent takes the first route the user reads the same answer twice.
9
+ // The prompt actively encourages the pairing that makes it visible ("Always
10
+ // provide normal text response alongside file delivery"), so this is the
11
+ // ordinary case for any turn that returns an image, not an exotic one.
12
+ //
13
+ // WHY NOT THE OBVIOUS KEYS
14
+ //
15
+ // A per-turn nonce echoed by the agent would be exact, and unreliable for the
16
+ // same reason #474 was: it only works when the model remembers to echo it.
17
+ // `turn_conversation` is an ADDRESS, not an identity — two consecutive turns in
18
+ // one thread serialize to identical bytes. And a bare text-equality cache is
19
+ // unsound in both directions, because the dispatch text is transformed on its
20
+ // way out (interview-tracker stripping, elicitation normalization, a possible
21
+ // stall notice, output policy) by a different sequence than the self-send.
22
+ //
23
+ // So the key is what the SERVER already knows without the model's cooperation:
24
+ // which conversation was addressed, and when. A self-delivery is remembered
25
+ // against its target for a bounded window; the dispatch path asks, just before
26
+ // posting, whether this turn's answer is already on screen.
27
+ //
28
+ // FAIL-OPEN, DELIBERATELY
29
+ //
30
+ // A duplicated answer is annoying. A SWALLOWED answer is the user losing work
31
+ // they were waiting on, and it is silent. Every uncertain case therefore
32
+ // resolves toward posting: an unrecorded send, an expired window, a digest that
33
+ // does not match, a target that does not match. Suppression happens only when
34
+ // the recorded text and the outgoing text agree after normalization — that is,
35
+ // only when the user demonstrably already has these exact words.
36
+ //
37
+ // ORDERING ACROSS TURNS
38
+ //
39
+ // Two turns addressing the SAME conversation cannot interleave here: same-target
40
+ // turns share a scope and serialize through the session lane
41
+ // (`src/orchestrator/session-lanes.ts`), which runs one turn per scope. Turns to
42
+ // DIFFERENT conversations produce different target keys and cannot see each
43
+ // other's claims at all. The safety of this module therefore rests on that lane
44
+ // invariant plus consumption below — worth knowing before anyone raises
45
+ // `maxConcurrent` per scope, because that is the assumption it would weaken.
46
+ import { createHash } from 'node:crypto';
47
+ import { buildRemoteSessionKey } from './session-key.js';
48
+ /** Outer bound on how long a self-delivery is remembered.
49
+ *
50
+ * This is a memory bound, NOT the suppression rule. The rule is the turn
51
+ * anchor below: a claim can only suppress the turn it was made during. Without
52
+ * that anchor a TTL alone degrades the key to target+text, so a later turn
53
+ * answering "완료했습니다" a second time would be swallowed — a silence, which is
54
+ * the failure this module exists to avoid causing. */
55
+ export const SELF_DELIVERY_TTL_MS = 15 * 60_000;
56
+ /** Bound on remembered deliveries, so a busy server cannot grow this without
57
+ * limit. Oldest-first eviction, as in `dedupe.ts`. */
58
+ const MAX_TRACKED = 512;
59
+ const records = [];
60
+ /**
61
+ * A strictly increasing sequence number, and the ONLY thing that decides which
62
+ * turn a claim belongs to.
63
+ *
64
+ * Wall-clock time cannot carry that decision. `Date.now()` moves backwards on an
65
+ * NTP correction, which makes an older claim look no-older-than a turn that
66
+ * began after it — and that turn's answer is then swallowed. Clamping the clock
67
+ * forward does not fix it either: after a rollback the clamp returns the
68
+ * previous maximum, so the stale claim and the new turn read the SAME value and
69
+ * a `>=` comparison still lets the claim through.
70
+ *
71
+ * A counter has no such failure: every call returns a value strictly greater
72
+ * than the last, so "recorded after this turn began" stays decidable whatever
73
+ * the system clock does. Timestamps stay on the record for the TTL only, where
74
+ * being wrong costs a duplicate instead of a silence.
75
+ */
76
+ let sequence = 0;
77
+ export function nextDeliverySeq() {
78
+ sequence += 1;
79
+ return sequence;
80
+ }
81
+ /**
82
+ * An anchor for a turn that has not started yet.
83
+ *
84
+ * A QUEUED turn must not anchor at enqueue time. The turn ahead of it is still
85
+ * running and can record a claim afterwards, which would then sort as "after
86
+ * this turn began" and suppress its answer — a silence. But the queued handler
87
+ * is a listener armed at queue time; it has no natural moment of its own.
88
+ *
89
+ * So the anchor is latched by the signal that the run actually started, and
90
+ * until that happens it reads as `Infinity` — an anchor nothing can be newer
91
+ * than, so nothing is suppressed. Both the unlatched and the mis-ordered case
92
+ * therefore fail toward posting.
93
+ */
94
+ export function pendingDeliveryAnchor() {
95
+ let latched = null;
96
+ return {
97
+ latch() {
98
+ latched ??= nextDeliverySeq();
99
+ },
100
+ value() {
101
+ return latched ?? Number.POSITIVE_INFINITY;
102
+ },
103
+ };
104
+ }
105
+ /**
106
+ * Compare-ready form of an outgoing message.
107
+ *
108
+ * Both sides of the comparison run this, so the transforms that differ between
109
+ * the two paths (trailing whitespace, blank-line runs, CRLF) cannot masquerade
110
+ * as a different message. It deliberately does NOT strip markdown or
111
+ * punctuation: two messages that differ only in emphasis are still two
112
+ * different messages, and treating them as one would suppress a real answer.
113
+ */
114
+ export function normalizeDeliveryText(text) {
115
+ return text
116
+ .replace(/\r\n/g, '\n')
117
+ .replace(/[ \t]+$/gm, '')
118
+ .replace(/\n{3,}/g, '\n\n')
119
+ .trim();
120
+ }
121
+ /** Digest of the normalized text. Empty text has no digest: a send with nothing
122
+ * in it never suppresses anything. */
123
+ export function deliveryDigest(text) {
124
+ if (typeof text !== 'string')
125
+ return null;
126
+ const normalized = normalizeDeliveryText(text);
127
+ if (!normalized)
128
+ return null;
129
+ return createHash('sha256').update(normalized).digest('hex');
130
+ }
131
+ /** Key a target for comparison. Reuses the queue/session key so "same
132
+ * conversation" means the same thing here as everywhere else — including the
133
+ * thread-vs-channel distinction, which matters: a thread reply and a channel
134
+ * post are different destinations. */
135
+ export function deliveryTargetKey(target) {
136
+ if (!target?.channel || !target.targetId)
137
+ return null;
138
+ try {
139
+ return buildRemoteSessionKey(target);
140
+ }
141
+ catch {
142
+ return null;
143
+ }
144
+ }
145
+ function evict(now) {
146
+ // A rolled-back clock can make `now - at` negative; only a genuinely aged
147
+ // entry is dropped, and the size cap below bounds the rest regardless.
148
+ while (records.length && now - records[0].at > SELF_DELIVERY_TTL_MS)
149
+ records.shift();
150
+ while (records.length > MAX_TRACKED)
151
+ records.shift();
152
+ }
153
+ /**
154
+ * Remember that the AGENT delivered something itself.
155
+ *
156
+ * Called only for sends that arrived over the HTTP surface an agent uses. The
157
+ * distinction is load-bearing: `sendChannelOutput` is also how heartbeats,
158
+ * reminders, alert escalation and the target-reply forwarder deliver, and
159
+ * recording those would let an unrelated background message suppress a real
160
+ * answer.
161
+ */
162
+ export function recordSelfDelivery(input) {
163
+ const targetKey = deliveryTargetKey(input.target);
164
+ if (!targetKey)
165
+ return null;
166
+ const digest = deliveryDigest(input.text);
167
+ // A send with no text delivers nothing this module can match later: file
168
+ // bytes cannot be proven delivered from a path, so a file-only send records
169
+ // nothing rather than sitting in the table where it can only cause pressure.
170
+ if (!digest)
171
+ return null;
172
+ const now = input.now ?? Date.now();
173
+ const record = {
174
+ targetKey, channel: input.channel, digest,
175
+ seq: nextDeliverySeq(), at: now,
176
+ };
177
+ records.push(record);
178
+ evict(now);
179
+ return record;
180
+ }
181
+ /**
182
+ * Has THIS answer already been delivered to THIS conversation by the agent?
183
+ *
184
+ * Returns false for every uncertain case. The caller uses it to skip a
185
+ * redundant post, never to decide whether the turn succeeded.
186
+ */
187
+ export function wasSelfDelivered(input) {
188
+ const targetKey = deliveryTargetKey(input.target);
189
+ const digest = deliveryDigest(input.text);
190
+ if (!targetKey || !digest || !Number.isFinite(input.since))
191
+ return false;
192
+ const now = input.now ?? Date.now();
193
+ evict(now);
194
+ const index = records.findIndex(record => record.targetKey === targetKey
195
+ && record.digest === digest
196
+ && record.seq > input.since
197
+ && now - record.at <= SELF_DELIVERY_TTL_MS);
198
+ if (index === -1)
199
+ return false;
200
+ // Consumed, not merely read. A claim answers for exactly one post; leaving
201
+ // it in place would let one self-send suppress every later turn that
202
+ // happened to produce the same words.
203
+ records.splice(index, 1);
204
+ return true;
205
+ }
206
+ /** Test seam for the sequence. Never called in production paths. */
207
+ export function resetDeliverySeq() {
208
+ sequence = 0;
209
+ }
210
+ /** Test seam. Never called in production paths. */
211
+ export function resetTurnDeliveryState() {
212
+ records.length = 0;
213
+ }
214
+ /** Diagnostics only. */
215
+ export function trackedSelfDeliveries() {
216
+ return records.length;
217
+ }
218
+ //# sourceMappingURL=turn-delivery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-delivery.js","sourceRoot":"","sources":["../../../src/messaging/turn-delivery.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,4EAA4E;AAC5E,0DAA0D;AAC1D,EAAE;AACF,4EAA4E;AAC5E,kFAAkF;AAClF,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,yEAAyE;AACzE,uEAAuE;AACvE,EAAE;AACF,2BAA2B;AAC3B,EAAE;AACF,8EAA8E;AAC9E,2EAA2E;AAC3E,gFAAgF;AAChF,6EAA6E;AAC7E,8EAA8E;AAC9E,8EAA8E;AAC9E,2EAA2E;AAC3E,EAAE;AACF,+EAA+E;AAC/E,4EAA4E;AAC5E,+EAA+E;AAC/E,4DAA4D;AAC5D,EAAE;AACF,0BAA0B;AAC1B,EAAE;AACF,8EAA8E;AAC9E,yEAAyE;AACzE,gFAAgF;AAChF,8EAA8E;AAC9E,+EAA+E;AAC/E,iEAAiE;AACjE,EAAE;AACF,wBAAwB;AACxB,EAAE;AACF,iFAAiF;AACjF,6DAA6D;AAC7D,iFAAiF;AACjF,4EAA4E;AAC5E,gFAAgF;AAChF,wEAAwE;AACxE,6EAA6E;AAE7E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD;;;;;;uDAMuD;AACvD,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,MAAM,CAAC;AAEhD;uDACuD;AACvD,MAAM,WAAW,GAAG,GAAG,CAAC;AAexB,MAAM,OAAO,GAAyB,EAAE,CAAC;AAEzC;;;;;;;;;;;;;;;GAeG;AACH,IAAI,QAAQ,GAAG,CAAC,CAAC;AACjB,MAAM,UAAU,eAAe;IAC3B,QAAQ,IAAI,CAAC,CAAC;IACd,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,qBAAqB;IACjC,IAAI,OAAO,GAAkB,IAAI,CAAC;IAClC,OAAO;QACH,KAAK;YACD,OAAO,KAAK,eAAe,EAAE,CAAC;QAClC,CAAC;QACD,KAAK;YACD,OAAO,OAAO,IAAI,MAAM,CAAC,iBAAiB,CAAC;QAC/C,CAAC;KACJ,CAAC;AACN,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAC9C,OAAO,IAAI;SACN,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;SACtB,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;SACxB,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;SAC1B,IAAI,EAAE,CAAC;AAChB,CAAC;AAED;uCACuC;AACvC,MAAM,UAAU,cAAc,CAAC,IAA+B;IAC1D,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAED;;;uCAGuC;AACvC,MAAM,UAAU,iBAAiB,CAAC,MAAuC;IACrE,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IACtD,IAAI,CAAC;QACD,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED,SAAS,KAAK,CAAC,GAAW;IACtB,0EAA0E;IAC1E,uEAAuE;IACvE,OAAO,OAAO,CAAC,MAAM,IAAI,GAAG,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC,EAAE,GAAG,oBAAoB;QAAE,OAAO,CAAC,KAAK,EAAE,CAAC;IACtF,OAAO,OAAO,CAAC,MAAM,GAAG,WAAW;QAAE,OAAO,CAAC,KAAK,EAAE,CAAC;AACzD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAKlC;IACG,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1C,yEAAyE;IACzE,4EAA4E;IAC5E,6EAA6E;IAC7E,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACpC,MAAM,MAAM,GAAuB;QAC/B,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM;QACzC,GAAG,EAAE,eAAe,EAAE,EAAE,EAAE,EAAE,GAAG;KAClC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,KAAK,CAAC,GAAG,CAAC,CAAC;IACX,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAUhC;IACG,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACzE,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACpC,KAAK,CAAC,GAAG,CAAC,CAAC;IACX,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CACrC,MAAM,CAAC,SAAS,KAAK,SAAS;WAC3B,MAAM,CAAC,MAAM,KAAK,MAAM;WACxB,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK;WACxB,GAAG,GAAG,MAAM,CAAC,EAAE,IAAI,oBAAoB,CAAC,CAAC;IAChD,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/B,2EAA2E;IAC3E,qEAAqE;IACrE,sCAAsC;IACtC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACzB,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,gBAAgB;IAC5B,QAAQ,GAAG,CAAC,CAAC;AACjB,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,sBAAsB;IAClC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,wBAAwB;AACxB,MAAM,UAAU,qBAAqB;IACjC,OAAO,OAAO,CAAC,MAAM,CAAC;AAC1B,CAAC"}
@@ -12,6 +12,30 @@ import { validateFileSize, sendTelegramFile } from '../telegram/telegram-file.js
12
12
  import { assertSendFilePath } from '../security/path-guards.js';
13
13
  import { decodeFilenameSafe } from '../security/decode.js';
14
14
  import { sendChannelOutput, normalizeChannelSendRequest, validateExplicitChatId } from '../messaging/send.js';
15
+ import { recordSelfDelivery } from '../messaging/turn-delivery.js';
16
+ /**
17
+ * The claim address for a send made through the legacy `/api/telegram/send`.
18
+ *
19
+ * It must agree field-for-field with what `buildTelegramTarget` produces on the
20
+ * dispatch side, because the claim is keyed on the whole address: a key that
21
+ * disagrees is the same as no claim at all, and the duplicate simply survives.
22
+ *
23
+ * `peerKind` is the one field this route cannot observe, having no `Context` to
24
+ * read `chat.type` from. Telegram's own id convention settles it — group and
25
+ * supergroup ids are negative, private chats positive — which is the same
26
+ * distinction `isGroup` makes there. `threadId` follows the dispatch rule of
27
+ * ignoring the General topic (id 1).
28
+ */
29
+ function telegramTargetForClaim(chatId, threadId) {
30
+ const targetId = String(chatId);
31
+ return stripUndefined({
32
+ channel: 'telegram',
33
+ targetKind: 'channel',
34
+ peerKind: targetId.startsWith('-') ? 'group' : 'direct',
35
+ targetId,
36
+ threadId: threadId !== undefined && threadId > 1 ? String(threadId) : undefined,
37
+ });
38
+ }
15
39
  import { validateChannelCredentials } from '../messaging/channel-validate.js';
16
40
  import { sendResultHttpStatus } from '../messaging/send-result.js';
17
41
  import { getSlackSendClient } from '../slack/send-only-client.js';
@@ -224,6 +248,15 @@ export function registerMessagingRoutes(app, requireAuth) {
224
248
  return;
225
249
  }
226
250
  await sendClient.client.api.sendMessage(chatId, redactOutboundText(text), stripUndefined({ message_thread_id: messageThreadId }));
251
+ // This legacy route is still advertised to agents, and it talks to
252
+ // the Bot API directly instead of going through sendChannelOutput
253
+ // — so it needs its own claim, or an answer delivered here would
254
+ // be posted a second time when the turn settles.
255
+ recordSelfDelivery({
256
+ target: telegramTargetForClaim(chatId, messageThreadId),
257
+ channel: 'telegram',
258
+ text,
259
+ });
227
260
  res.json({ ok: true, chat_id: chatId, type });
228
261
  return;
229
262
  }
@@ -248,6 +281,19 @@ export function registerMessagingRoutes(app, requireAuth) {
248
281
  });
249
282
  return;
250
283
  }
284
+ // The FILE is never claimed: whether those bytes reached the user
285
+ // cannot be proven from a path later (see messaging/turn-delivery.ts).
286
+ // The caption is different — Telegram renders it as the message text
287
+ // under the upload, so the user can see it, and an answer equal to it
288
+ // would otherwise be posted a second time. Same rule the canonical
289
+ // route follows for file sends.
290
+ if (caption) {
291
+ recordSelfDelivery({
292
+ target: telegramTargetForClaim(chatId, messageThreadId),
293
+ channel: 'telegram',
294
+ text: caption,
295
+ });
296
+ }
251
297
  res.json({ ok: true, chat_id: chatId, type, attempts: result.attempts });
252
298
  }
253
299
  catch (e) {
@@ -277,7 +323,13 @@ export function registerMessagingRoutes(app, requireAuth) {
277
323
  // Canonical channel send
278
324
  app.post('/api/channel/send', requireAuth, async (req, res) => {
279
325
  try {
280
- const result = await sendChannelOutput(normalizeChannelSendRequest(req.body));
326
+ // `fromAgentSurface` is set HERE rather than inside the normalizer:
327
+ // it is a fact about how the send arrived, not about its body, and
328
+ // an agent must not be able to claim it by putting a field in JSON.
329
+ const result = await sendChannelOutput({
330
+ ...normalizeChannelSendRequest(req.body),
331
+ fromAgentSurface: true,
332
+ });
281
333
  if (!result.ok) {
282
334
  res.status(sendResultHttpStatus(result)).json(result);
283
335
  return;
@@ -296,7 +348,11 @@ export function registerMessagingRoutes(app, requireAuth) {
296
348
  });
297
349
  app.post('/api/discord/send', requireAuth, async (req, res) => {
298
350
  try {
299
- const result = await sendChannelOutput({ ...normalizeChannelSendRequest(req.body), channel: 'discord' });
351
+ const result = await sendChannelOutput({
352
+ ...normalizeChannelSendRequest(req.body),
353
+ channel: 'discord',
354
+ fromAgentSurface: true,
355
+ });
300
356
  if (!result.ok) {
301
357
  res.status(sendResultHttpStatus(result)).json(result);
302
358
  return;
@@ -313,7 +369,11 @@ export function registerMessagingRoutes(app, requireAuth) {
313
369
  });
314
370
  app.post('/api/slack/send', requireAuth, async (req, res) => {
315
371
  try {
316
- const result = await sendChannelOutput({ ...normalizeChannelSendRequest(req.body), channel: 'slack' });
372
+ const result = await sendChannelOutput({
373
+ ...normalizeChannelSendRequest(req.body),
374
+ channel: 'slack',
375
+ fromAgentSurface: true,
376
+ });
317
377
  if (!result.ok) {
318
378
  res.status(sendResultHttpStatus(result)).json(result);
319
379
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"messaging.js","sourceRoot":"","sources":["../../../src/routes/messaging.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messaging.js","sourceRoot":"","sources":["../../../src/routes/messaging.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,7 @@ import { markThreadParticipated, threadParticipationKind, claimThreadPrefetch, c
34
34
  import { sendSlackText, getSlackSendClient } from './send-only-client.js';
35
35
  import { startSlackProgress, statusFromToolEvent } from './progress.js';
36
36
  import { createSlackForwarder, relaySlackImages } from './forwarder.js';
37
+ import { nextDeliverySeq, pendingDeliveryAnchor, wasSelfDelivered } from '../messaging/turn-delivery.js';
37
38
  import { handleSlackSlashCommand } from './commands.js';
38
39
  import { logErrorText, redactOutboundText } from '../messaging/redact.js';
39
40
  import { downloadAndSaveSlackFiles } from './inbound-file.js';
@@ -387,6 +388,10 @@ async function slackOrchestrate(target, prompt, displayMsg, signal, dedupe = {})
387
388
  };
388
389
  if (progress)
389
390
  addBroadcastListener(progressHandler);
391
+ // Anchors the delivery claim below. Taken BEFORE the agent runs,
392
+ // so only a send made during THIS turn can suppress this turn's
393
+ // post — an identical answer from an earlier turn must not.
394
+ const turnStartedAt = nextDeliverySeq();
390
395
  const text = String(await withSessionScope({ scope: ctx.scope, chatSessionId: ctx.chatSessionId }, () => orchestrateAndCollect(prompt, {
391
396
  origin: 'slack', target, chatId, requestId: ctx.requestId,
392
397
  ...(ctx.remoteKey ? { remoteKey: ctx.remoteKey } : {}),
@@ -403,7 +408,17 @@ async function slackOrchestrate(target, prompt, displayMsg, signal, dedupe = {})
403
408
  const outbound = slackOutboundRegistry.start();
404
409
  let sendResult;
405
410
  try {
406
- sendResult = await sendSlackText(token, target, text, { signal: outbound.signal });
411
+ // The agent may already have posted this exact answer itself
412
+ // through /api/channel/send while the turn was still running,
413
+ // in which case posting it again is the duplicate the user
414
+ // sees. Skipping the POST is all this does: the outcome below
415
+ // is still success, because the user has the answer — so the
416
+ // ACK still settles (#417) and the notice still closes as
417
+ // answered (#418), exactly as if we had sent it.
418
+ const alreadyDelivered = wasSelfDelivered({ target, text, since: turnStartedAt });
419
+ sendResult = alreadyDelivered
420
+ ? { ok: true }
421
+ : await sendSlackText(token, target, text, { signal: outbound.signal });
407
422
  // Recorded here, settled once in the finally below. The image
408
423
  // relay can still throw after the text is out, and the user did
409
424
  // get their answer in that case — so the outcome is success and
@@ -421,8 +436,16 @@ async function slackOrchestrate(target, prompt, displayMsg, signal, dedupe = {})
421
436
  // while the answer is already visible (#417).
422
437
  await ack?.settle(ackOutcome);
423
438
  ackSettled = true;
439
+ // Relayed even when the text above was suppressed. Whether
440
+ // the agent already uploaded these bytes cannot be proven
441
+ // from a path (see turn-delivery.ts), and a skip that cannot
442
+ // be proven is a silent drop.
424
443
  await relaySlackImages(token, target, text, { signal: outbound.signal });
425
- log.info(`[slack:out] ${target.targetId}: ${redactOutboundText(text).slice(0, 80)}`);
444
+ // Logged either way, and labelled, because the previous
445
+ // silence here is what made the duplicate hard to see: only
446
+ // the dispatch post wrote [slack:out], so the log showed one
447
+ // delivery while the user had received two.
448
+ log.info(`[slack:out${alreadyDelivered ? ':skipped-self-delivered' : ''}] ${target.targetId}: ${redactOutboundText(text).slice(0, 80)}`);
426
449
  }
427
450
  finally {
428
451
  outbound.done();
@@ -449,6 +472,22 @@ async function slackOrchestrate(target, prompt, displayMsg, signal, dedupe = {})
449
472
  if (result.action === 'queued') {
450
473
  log.info(`[slack:queue] agent busy, queued (${result.pending} pending)`);
451
474
  const requestId = result.requestId;
475
+ // Anchored when this queued run STARTS, not when it was queued: the turn
476
+ // ahead of it is still running and can record a claim after this point,
477
+ // which would otherwise sort as "after this turn began" and swallow the
478
+ // queued answer. Until it latches it reads as Infinity, so nothing is
479
+ // suppressed. A restart loses claims entirely, which keeps the #407
480
+ // orphan delivery intact.
481
+ const queuedAnchor = pendingDeliveryAnchor();
482
+ const queuedRunStarted = (type, data) => {
483
+ // Keyed on THIS request. A scope-blind "an agent started" signal can
484
+ // fire for the turn ahead of this one, latching the anchor while that
485
+ // turn is still running — and a claim it records afterwards would then
486
+ // sort as newer than the anchor and swallow this answer.
487
+ if (type === 'queued_run_started' && data['requestId'] === requestId)
488
+ queuedAnchor.latch();
489
+ };
490
+ addBroadcastListener(queuedRunStarted);
452
491
  let queueTimeout;
453
492
  let disposed = false;
454
493
  const notice = createQueueNotice({
@@ -461,6 +500,7 @@ async function slackOrchestrate(target, prompt, displayMsg, signal, dedupe = {})
461
500
  disposed = true;
462
501
  clearTimeout(queueTimeout);
463
502
  removeBroadcastListener(queueHandler);
503
+ removeBroadcastListener(queuedRunStarted);
464
504
  if (requestId)
465
505
  pendingQueueRequestIds.delete(requestId);
466
506
  };
@@ -528,8 +568,16 @@ async function slackOrchestrate(target, prompt, displayMsg, signal, dedupe = {})
528
568
  const outbound = slackOutboundRegistry.start();
529
569
  let queuedSendResult;
530
570
  try {
571
+ // Same rule as the normal dispatch: if the queued agent
572
+ // already posted this answer itself, posting it again is
573
+ // the duplicate. The notice still closes as answered
574
+ // because the user does have the answer.
575
+ const alreadyDelivered = text
576
+ && wasSelfDelivered({ target, text, since: queuedAnchor.value() });
531
577
  queuedSendResult = text
532
- ? await sendSlackText(token, target, text, { signal: outbound.signal })
578
+ ? (alreadyDelivered
579
+ ? { ok: true }
580
+ : await sendSlackText(token, target, text, { signal: outbound.signal }))
533
581
  : { ok: false };
534
582
  }
535
583
  finally {
@@ -547,7 +595,9 @@ async function slackOrchestrate(target, prompt, displayMsg, signal, dedupe = {})
547
595
  await ack?.settle(queuedSendResult.ok ? 'success' : 'failure');
548
596
  if (text) {
549
597
  const relayScope = slackOutboundRegistry.start();
550
- await relaySlackImages(token, target, text, { signal: relayScope.signal })
598
+ await relaySlackImages(token, target, text, {
599
+ signal: relayScope.signal
600
+ })
551
601
  .catch(e => log.error('[slack:queue-send]', logErrorText(e)))
552
602
  .finally(() => relayScope.done());
553
603
  }