crewly 1.20.207 → 1.20.209
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/dist/backend/backend/src/constants.d.ts +10 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +10 -0
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +4 -0
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/session/session.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/session/session.controller.js +2 -0
- package/dist/backend/backend/src/controllers/session/session.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.js +29 -0
- package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +15 -1
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js +12 -2
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +9 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +11 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +10 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js +19 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/input-blocked-retry.service.d.ts +10 -0
- package/dist/backend/backend/src/services/messaging/input-blocked-retry.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/input-blocked-retry.service.js +16 -0
- package/dist/backend/backend/src/services/messaging/input-blocked-retry.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +10 -0
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js +21 -0
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
- package/dist/backend/backend/src/services/session/input-ledger.d.ts +115 -0
- package/dist/backend/backend/src/services/session/input-ledger.d.ts.map +1 -0
- package/dist/backend/backend/src/services/session/input-ledger.js +144 -0
- package/dist/backend/backend/src/services/session/input-ledger.js.map +1 -0
- package/dist/backend/backend/src/services/session/session-command-helper.d.ts +26 -0
- package/dist/backend/backend/src/services/session/session-command-helper.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/session-command-helper.js +167 -36
- package/dist/backend/backend/src/services/session/session-command-helper.js.map +1 -1
- package/dist/backend/backend/src/services/session/tui-input-guard.d.ts +65 -0
- package/dist/backend/backend/src/services/session/tui-input-guard.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/tui-input-guard.js +118 -0
- package/dist/backend/backend/src/services/session/tui-input-guard.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-delivery-audit.service.d.ts +156 -0
- package/dist/backend/backend/src/services/slack/slack-delivery-audit.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-delivery-audit.service.js +259 -0
- package/dist/backend/backend/src/services/slack/slack-delivery-audit.service.js.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-initializer.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.js +19 -0
- package/dist/backend/backend/src/services/slack/slack-initializer.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-instance-registry.service.d.ts +14 -1
- package/dist/backend/backend/src/services/slack/slack-instance-registry.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-instance-registry.service.js +13 -0
- package/dist/backend/backend/src/services/slack/slack-instance-registry.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +7 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +22 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +41 -4
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/backend/backend/src/types/slack.types.d.ts +48 -0
- package/dist/backend/backend/src/types/slack.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/slack.types.js.map +1 -1
- package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
- package/dist/backend/backend/src/websocket/terminal.gateway.js +4 -1
- package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/constants.d.ts +10 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +10 -0
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.js +12 -2
- package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts +9 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js +11 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts +10 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js +19 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
- package/dist/cli/backend/src/services/messaging/input-blocked-retry.service.d.ts +10 -0
- package/dist/cli/backend/src/services/messaging/input-blocked-retry.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/messaging/input-blocked-retry.service.js +16 -0
- package/dist/cli/backend/src/services/messaging/input-blocked-retry.service.js.map +1 -1
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +10 -0
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js +21 -0
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
- package/dist/cli/backend/src/services/session/input-ledger.d.ts +115 -0
- package/dist/cli/backend/src/services/session/input-ledger.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/input-ledger.js +144 -0
- package/dist/cli/backend/src/services/session/input-ledger.js.map +1 -0
- package/dist/cli/backend/src/services/session/session-command-helper.d.ts +26 -0
- package/dist/cli/backend/src/services/session/session-command-helper.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/session-command-helper.js +167 -36
- package/dist/cli/backend/src/services/session/session-command-helper.js.map +1 -1
- package/dist/cli/backend/src/services/session/tui-input-guard.d.ts +65 -0
- package/dist/cli/backend/src/services/session/tui-input-guard.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/tui-input-guard.js +118 -0
- package/dist/cli/backend/src/services/session/tui-input-guard.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +7 -1
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +22 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +41 -4
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/cli/backend/src/types/slack.types.d.ts +48 -0
- package/dist/cli/backend/src/types/slack.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/slack.types.js.map +1 -1
- package/dist/cli/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
- package/dist/cli/backend/src/websocket/terminal.gateway.js +4 -1
- package/dist/cli/backend/src/websocket/terminal.gateway.js.map +1 -1
- package/package.json +1 -1
|
@@ -331,6 +331,103 @@ export function pasteShowsAs(text, message) {
|
|
|
331
331
|
}
|
|
332
332
|
return false;
|
|
333
333
|
}
|
|
334
|
+
/**
|
|
335
|
+
* Whether input-box text is made up only of the harness's own pastes:
|
|
336
|
+
* runtime paste markers and/or the pasted texts, possibly several of them
|
|
337
|
+
* run together ("[Pasted text #2 +5 lines][Pasted text #3 +5 lines]" — a
|
|
338
|
+
* second paste landed on a first one that rendered late, 1.20.207 Ella).
|
|
339
|
+
*
|
|
340
|
+
* Each part must be accounted for, in order, by a distinct paste:
|
|
341
|
+
* - a marker that the harness saw for its own paste (`shownMarkers`, exact
|
|
342
|
+
* text: the runtime's counter makes it unique in the session), or
|
|
343
|
+
* - a marker or text with the shape of one of `pastes` — the harness's
|
|
344
|
+
* pastes since the last outside input, oldest first. With no outside
|
|
345
|
+
* input since, nothing else can have put it there.
|
|
346
|
+
*
|
|
347
|
+
* @param text - The input box text
|
|
348
|
+
* @param pastes - Harness paste messages since the last outside input, oldest first
|
|
349
|
+
* @param shownMarkers - Exact markers the box showed for harness pastes
|
|
350
|
+
* @returns The messages the box holds, in order, when every part of it is
|
|
351
|
+
* one of our pastes; null otherwise
|
|
352
|
+
*/
|
|
353
|
+
export function boxHoldsOnlyOwnPastes(text, pastes, shownMarkers = []) {
|
|
354
|
+
return attributeOwnPastes(text, pastes, shownMarkers)?.messages ?? null;
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* {@link boxHoldsOnlyOwnPastes}, also saying whether the match is certain.
|
|
358
|
+
*
|
|
359
|
+
* @param text - The input box text
|
|
360
|
+
* @param pastes - Harness paste messages since the last outside input, oldest first
|
|
361
|
+
* @param shownMarkers - Exact markers the box showed for harness pastes
|
|
362
|
+
* @returns The attribution, or null when the box is not only our pastes
|
|
363
|
+
*/
|
|
364
|
+
export function attributeOwnPastes(text, pastes, shownMarkers = []) {
|
|
365
|
+
const body = text.replace(/\s+/g, ' ').trim();
|
|
366
|
+
if (body === '')
|
|
367
|
+
return null;
|
|
368
|
+
const used = [];
|
|
369
|
+
// Messages that could stand for a shape-only match instead of the one chosen.
|
|
370
|
+
const alternatives = new Set();
|
|
371
|
+
// Split into markers and the text between them.
|
|
372
|
+
const parts = [];
|
|
373
|
+
const re = /\[Pasted (?:text|content)[^\]]*\]/gi;
|
|
374
|
+
let last = 0;
|
|
375
|
+
for (const m of body.matchAll(re)) {
|
|
376
|
+
const before = body.slice(last, m.index).trim();
|
|
377
|
+
if (before)
|
|
378
|
+
parts.push({ marker: false, text: before });
|
|
379
|
+
parts.push({ marker: true, text: m[0] });
|
|
380
|
+
last = (m.index ?? 0) + m[0].length;
|
|
381
|
+
}
|
|
382
|
+
const tail = body.slice(last).trim();
|
|
383
|
+
if (tail)
|
|
384
|
+
parts.push({ marker: false, text: tail });
|
|
385
|
+
let next = 0; // the next paste that may account for a part
|
|
386
|
+
for (const part of parts) {
|
|
387
|
+
if (part.marker) {
|
|
388
|
+
const shown = shownMarkers.find((m) => m.marker === part.text);
|
|
389
|
+
if (shown) {
|
|
390
|
+
// That paste is accounted for: it cannot stand for another part.
|
|
391
|
+
const k = pastes.indexOf(shown.message, next);
|
|
392
|
+
if (k >= 0)
|
|
393
|
+
next = k + 1;
|
|
394
|
+
used.push(shown.message);
|
|
395
|
+
continue;
|
|
396
|
+
}
|
|
397
|
+
let j = next;
|
|
398
|
+
while (j < pastes.length && !pasteShowsAs(part.text, pastes[j]))
|
|
399
|
+
j++;
|
|
400
|
+
if (j >= pastes.length)
|
|
401
|
+
return null;
|
|
402
|
+
// Another unseen paste, of a different message, with the same shape:
|
|
403
|
+
// this marker could be either of them.
|
|
404
|
+
for (let k = j + 1; k < pastes.length; k++) {
|
|
405
|
+
if (pastes[k] !== pastes[j] && pasteShowsAs(part.text, pastes[k]))
|
|
406
|
+
alternatives.add(pastes[k]);
|
|
407
|
+
}
|
|
408
|
+
used.push(pastes[j]);
|
|
409
|
+
next = j + 1;
|
|
410
|
+
continue;
|
|
411
|
+
}
|
|
412
|
+
// Plain text: one or more whole pasted messages, run together.
|
|
413
|
+
let rest = squash(part.text);
|
|
414
|
+
while (rest.length > 0) {
|
|
415
|
+
let j = next;
|
|
416
|
+
while (j < pastes.length && !(squash(pastes[j]).length > 0 && rest.startsWith(squash(pastes[j]))))
|
|
417
|
+
j++;
|
|
418
|
+
if (j >= pastes.length)
|
|
419
|
+
return null;
|
|
420
|
+
used.push(pastes[j]);
|
|
421
|
+
rest = rest.slice(squash(pastes[j]).length);
|
|
422
|
+
next = j + 1;
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
// Uncertain only when an alternative was left out: then which messages
|
|
426
|
+
// the box holds is a guess. (Two markers for two same-shaped pastes
|
|
427
|
+
// account for both, whichever is which.)
|
|
428
|
+
const ambiguous = [...alternatives].some((m) => !used.includes(m));
|
|
429
|
+
return { messages: used, ambiguous };
|
|
430
|
+
}
|
|
334
431
|
/**
|
|
335
432
|
* Classify what an input box holds relative to the message the harness
|
|
336
433
|
* wants to send (or has just pasted).
|
|
@@ -411,4 +508,25 @@ export class TuiInputGuardError extends Error {
|
|
|
411
508
|
this.reading = reading;
|
|
412
509
|
}
|
|
413
510
|
}
|
|
511
|
+
/**
|
|
512
|
+
* Raised when the harness will not paste because an earlier paste of its
|
|
513
|
+
* own may still land in the box (pasted but not yet seen, or just
|
|
514
|
+
* submitted): pasting now could put two messages in one box (1.20.207
|
|
515
|
+
* Ella). The caller queues the message; it goes out once the box is
|
|
516
|
+
* settled.
|
|
517
|
+
*/
|
|
518
|
+
export class TuiPasteHoldError extends Error {
|
|
519
|
+
/** Why the paste was held */
|
|
520
|
+
reason;
|
|
521
|
+
/**
|
|
522
|
+
* @param reason - Why the paste was held
|
|
523
|
+
*/
|
|
524
|
+
constructor(reason) {
|
|
525
|
+
super(reason === 'pending-paste'
|
|
526
|
+
? 'An earlier paste of ours may still render in the input box; holding this message'
|
|
527
|
+
: 'Just submitted an earlier paste of ours; holding this message until the box settles');
|
|
528
|
+
this.name = 'TuiPasteHoldError';
|
|
529
|
+
this.reason = reason;
|
|
530
|
+
}
|
|
531
|
+
}
|
|
414
532
|
//# sourceMappingURL=tui-input-guard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui-input-guard.js","sourceRoot":"","sources":["../../../../../../backend/src/services/session/tui-input-guard.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tui-input-guard.js","sourceRoot":"","sources":["../../../../../../backend/src/services/session/tui-input-guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slack delivery audit — owner messages Slack has that never reached a machine.
|
|
3
|
+
*
|
|
4
|
+
* Earlier audits read only the local chat.db, so a message that never
|
|
5
|
+
* reached this machine could not show up in them. The 2026-10-03 #content-team
|
|
6
|
+
* message was one: Cloud pushed it to the Air only, and the Mac, where the
|
|
7
|
+
* room's agents run, never recorded it. This audit starts from Slack instead:
|
|
8
|
+
*
|
|
9
|
+
* 1. every channel this machine maps, read with a bot that is a member
|
|
10
|
+
* (`conversations.history`, plus `conversations.replies` for threads
|
|
11
|
+
* active in the window);
|
|
12
|
+
* 2. the owner's messages in it;
|
|
13
|
+
* 3. each one checked against this machine's chat.db and against Cloud's
|
|
14
|
+
* routing log (which machine it was pushed to, and why).
|
|
15
|
+
*
|
|
16
|
+
* See specs/2026-10-04-room-delivery-audit.md.
|
|
17
|
+
*
|
|
18
|
+
* @module services/slack/slack-delivery-audit.service
|
|
19
|
+
*/
|
|
20
|
+
import type { CloudRoutingDecision } from '../../types/slack.types.js';
|
|
21
|
+
/** A mapped channel and the local agents in it. */
|
|
22
|
+
export interface AuditRoom {
|
|
23
|
+
slackChannelId: string;
|
|
24
|
+
slackChannelName: string;
|
|
25
|
+
members: string[];
|
|
26
|
+
}
|
|
27
|
+
/** Collaborators, injectable for tests. */
|
|
28
|
+
export interface SlackDeliveryAuditDeps {
|
|
29
|
+
/** Every Slack channel this machine maps, with its local members. */
|
|
30
|
+
listRooms: () => Promise<AuditRoom[]>;
|
|
31
|
+
/** A bot token that can read a channel: one of its members' own bots. */
|
|
32
|
+
tokenFor: (members: string[]) => string | null;
|
|
33
|
+
/** The owner's Slack user id; when unknown every human message is audited. */
|
|
34
|
+
ownerUserId: () => string | null | undefined;
|
|
35
|
+
/** Whether this machine recorded the Slack message. */
|
|
36
|
+
hasLocal: (slackChannelId: string, slackTs: string) => boolean;
|
|
37
|
+
/** Cloud's routing log for one channel since a time; null when Cloud cannot be asked. */
|
|
38
|
+
cloudDecisions?: (channel: string, since: Date) => Promise<CloudRoutingDecision[] | null>;
|
|
39
|
+
/** This machine's instance id (to tell "pushed here" from "pushed elsewhere"). */
|
|
40
|
+
instanceId?: () => Promise<string | null>;
|
|
41
|
+
fetchImpl?: typeof fetch;
|
|
42
|
+
now?: () => number;
|
|
43
|
+
}
|
|
44
|
+
/** What happened to one owner message. */
|
|
45
|
+
export type AuditVerdict = 'reached-here' | 'reached-other-instance' | 'pushed-here-not-recorded' | 'never-reached' | 'no-cloud-record';
|
|
46
|
+
/** One owner message and where it went. */
|
|
47
|
+
export interface AuditedMessage {
|
|
48
|
+
channel: string;
|
|
49
|
+
channelName: string;
|
|
50
|
+
ts: string;
|
|
51
|
+
threadTs: string | null;
|
|
52
|
+
at: string;
|
|
53
|
+
text: string;
|
|
54
|
+
reachedHere: boolean;
|
|
55
|
+
cloud: {
|
|
56
|
+
rule: string;
|
|
57
|
+
owner: string | null;
|
|
58
|
+
targets: string[];
|
|
59
|
+
pushedTo: string[];
|
|
60
|
+
queued: Array<{
|
|
61
|
+
instanceId: string;
|
|
62
|
+
error?: string;
|
|
63
|
+
}>;
|
|
64
|
+
reason: string;
|
|
65
|
+
} | null;
|
|
66
|
+
verdict: AuditVerdict;
|
|
67
|
+
}
|
|
68
|
+
/** The audit's result. */
|
|
69
|
+
export interface DeliveryAuditReport {
|
|
70
|
+
since: string;
|
|
71
|
+
instanceId: string | null;
|
|
72
|
+
cloudLog: 'available' | 'unavailable';
|
|
73
|
+
channels: Array<{
|
|
74
|
+
channel: string;
|
|
75
|
+
name: string;
|
|
76
|
+
readable: boolean;
|
|
77
|
+
error?: string;
|
|
78
|
+
ownerMessages: number;
|
|
79
|
+
}>;
|
|
80
|
+
messages: AuditedMessage[];
|
|
81
|
+
summary: {
|
|
82
|
+
total: number;
|
|
83
|
+
reachedHere: number;
|
|
84
|
+
reachedElsewhere: number;
|
|
85
|
+
/** pushed-here-not-recorded + never-reached + no-cloud-record */
|
|
86
|
+
missing: number;
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/** Limits. */
|
|
90
|
+
export declare const SLACK_DELIVERY_AUDIT_CONSTANTS: {
|
|
91
|
+
readonly DEFAULT_HOURS: 24;
|
|
92
|
+
readonly MAX_HOURS: 168;
|
|
93
|
+
/** Threads read per channel (each is one `conversations.replies` call). */
|
|
94
|
+
readonly MAX_THREADS_PER_CHANNEL: 20;
|
|
95
|
+
/** `conversations.history` pages per channel. */
|
|
96
|
+
readonly MAX_HISTORY_PAGES: 5;
|
|
97
|
+
readonly PAGE_SIZE: 200;
|
|
98
|
+
readonly API_BASE_URL: "https://slack.com/api";
|
|
99
|
+
readonly FETCH_TIMEOUT_MS: 10000;
|
|
100
|
+
readonly TEXT_PREVIEW_CHARS: 80;
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Service — see module docs.
|
|
104
|
+
*/
|
|
105
|
+
export declare class SlackDeliveryAuditService {
|
|
106
|
+
private readonly deps;
|
|
107
|
+
private readonly fetchImpl;
|
|
108
|
+
private readonly now;
|
|
109
|
+
constructor(deps: SlackDeliveryAuditDeps);
|
|
110
|
+
/**
|
|
111
|
+
* Audit the owner's messages of the last `hours` hours. Never throws for
|
|
112
|
+
* one channel's failure — that channel is listed with its error.
|
|
113
|
+
*
|
|
114
|
+
* @param options - `hours` (default 24, max 168)
|
|
115
|
+
* @returns The report
|
|
116
|
+
*/
|
|
117
|
+
audit(options?: {
|
|
118
|
+
hours?: number;
|
|
119
|
+
}): Promise<DeliveryAuditReport>;
|
|
120
|
+
/**
|
|
121
|
+
* History since `oldest`, plus the replies of threads active in that window.
|
|
122
|
+
*
|
|
123
|
+
* @param token - Bot token of a member
|
|
124
|
+
* @param channel - Slack channel id
|
|
125
|
+
* @param oldest - Slack ts lower bound
|
|
126
|
+
* @returns Messages (top level and thread replies), or the error
|
|
127
|
+
*/
|
|
128
|
+
private readChannel;
|
|
129
|
+
/**
|
|
130
|
+
* One Slack Web API GET; never throws.
|
|
131
|
+
*
|
|
132
|
+
* @param method - e.g. `conversations.history`
|
|
133
|
+
* @param token - Bot token
|
|
134
|
+
* @param params - Query parameters
|
|
135
|
+
* @returns The body, or the error code
|
|
136
|
+
*/
|
|
137
|
+
private call;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* What happened to one owner message.
|
|
141
|
+
*
|
|
142
|
+
* @param reachedHere - This machine recorded it
|
|
143
|
+
* @param cloud - Cloud's routing record, if any
|
|
144
|
+
* @param me - This machine's instance id
|
|
145
|
+
* @returns The verdict
|
|
146
|
+
*/
|
|
147
|
+
export declare function verdictOf(reachedHere: boolean, cloud: AuditedMessage['cloud'], me: string | null): AuditVerdict;
|
|
148
|
+
/** The process-wide audit service, if wired. */
|
|
149
|
+
export declare function getSlackDeliveryAuditService(): SlackDeliveryAuditService | null;
|
|
150
|
+
/**
|
|
151
|
+
* Set (or clear) the process-wide audit service.
|
|
152
|
+
*
|
|
153
|
+
* @param service - The service, or null
|
|
154
|
+
*/
|
|
155
|
+
export declare function setSlackDeliveryAuditService(service: SlackDeliveryAuditService | null): void;
|
|
156
|
+
//# sourceMappingURL=slack-delivery-audit.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack-delivery-audit.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/slack/slack-delivery-audit.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slack delivery audit — owner messages Slack has that never reached a machine.
|
|
3
|
+
*
|
|
4
|
+
* Earlier audits read only the local chat.db, so a message that never
|
|
5
|
+
* reached this machine could not show up in them. The 2026-10-03 #content-team
|
|
6
|
+
* message was one: Cloud pushed it to the Air only, and the Mac, where the
|
|
7
|
+
* room's agents run, never recorded it. This audit starts from Slack instead:
|
|
8
|
+
*
|
|
9
|
+
* 1. every channel this machine maps, read with a bot that is a member
|
|
10
|
+
* (`conversations.history`, plus `conversations.replies` for threads
|
|
11
|
+
* active in the window);
|
|
12
|
+
* 2. the owner's messages in it;
|
|
13
|
+
* 3. each one checked against this machine's chat.db and against Cloud's
|
|
14
|
+
* routing log (which machine it was pushed to, and why).
|
|
15
|
+
*
|
|
16
|
+
* See specs/2026-10-04-room-delivery-audit.md.
|
|
17
|
+
*
|
|
18
|
+
* @module services/slack/slack-delivery-audit.service
|
|
19
|
+
*/
|
|
20
|
+
/** Limits. */
|
|
21
|
+
export const SLACK_DELIVERY_AUDIT_CONSTANTS = {
|
|
22
|
+
DEFAULT_HOURS: 24,
|
|
23
|
+
MAX_HOURS: 168,
|
|
24
|
+
/** Threads read per channel (each is one `conversations.replies` call). */
|
|
25
|
+
MAX_THREADS_PER_CHANNEL: 20,
|
|
26
|
+
/** `conversations.history` pages per channel. */
|
|
27
|
+
MAX_HISTORY_PAGES: 5,
|
|
28
|
+
PAGE_SIZE: 200,
|
|
29
|
+
API_BASE_URL: 'https://slack.com/api',
|
|
30
|
+
FETCH_TIMEOUT_MS: 10_000,
|
|
31
|
+
TEXT_PREVIEW_CHARS: 80,
|
|
32
|
+
};
|
|
33
|
+
/** Subtypes that are still a person speaking. */
|
|
34
|
+
const HUMAN_SUBTYPES = new Set(['', 'thread_broadcast', 'file_share']);
|
|
35
|
+
/**
|
|
36
|
+
* Service — see module docs.
|
|
37
|
+
*/
|
|
38
|
+
export class SlackDeliveryAuditService {
|
|
39
|
+
deps;
|
|
40
|
+
fetchImpl;
|
|
41
|
+
now;
|
|
42
|
+
constructor(deps) {
|
|
43
|
+
this.deps = deps;
|
|
44
|
+
this.fetchImpl = deps.fetchImpl ?? fetch;
|
|
45
|
+
this.now = deps.now ?? (() => Date.now());
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Audit the owner's messages of the last `hours` hours. Never throws for
|
|
49
|
+
* one channel's failure — that channel is listed with its error.
|
|
50
|
+
*
|
|
51
|
+
* @param options - `hours` (default 24, max 168)
|
|
52
|
+
* @returns The report
|
|
53
|
+
*/
|
|
54
|
+
async audit(options = {}) {
|
|
55
|
+
const C = SLACK_DELIVERY_AUDIT_CONSTANTS;
|
|
56
|
+
const hours = Math.max(1, Math.min(Math.floor(options.hours ?? C.DEFAULT_HOURS), C.MAX_HOURS));
|
|
57
|
+
const sinceMs = this.now() - hours * 3600 * 1000;
|
|
58
|
+
const since = new Date(sinceMs);
|
|
59
|
+
const oldest = (sinceMs / 1000).toFixed(6);
|
|
60
|
+
const me = this.deps.instanceId ? await this.deps.instanceId().catch(() => null) : null;
|
|
61
|
+
const owner = this.deps.ownerUserId() ?? null;
|
|
62
|
+
const rooms = await this.deps.listRooms();
|
|
63
|
+
const report = {
|
|
64
|
+
since: since.toISOString(),
|
|
65
|
+
instanceId: me,
|
|
66
|
+
cloudLog: this.deps.cloudDecisions ? 'available' : 'unavailable',
|
|
67
|
+
channels: [],
|
|
68
|
+
messages: [],
|
|
69
|
+
summary: { total: 0, reachedHere: 0, reachedElsewhere: 0, missing: 0 },
|
|
70
|
+
};
|
|
71
|
+
const seen = new Set();
|
|
72
|
+
for (const room of rooms) {
|
|
73
|
+
if (seen.has(room.slackChannelId))
|
|
74
|
+
continue;
|
|
75
|
+
seen.add(room.slackChannelId);
|
|
76
|
+
const token = this.deps.tokenFor(room.members);
|
|
77
|
+
if (!token) {
|
|
78
|
+
report.channels.push({ channel: room.slackChannelId, name: room.slackChannelName, readable: false, error: 'no_member_bot_token', ownerMessages: 0 });
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
const read = await this.readChannel(token, room.slackChannelId, oldest);
|
|
82
|
+
if (!read.ok) {
|
|
83
|
+
report.channels.push({ channel: room.slackChannelId, name: room.slackChannelName, readable: false, error: read.error, ownerMessages: 0 });
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
const ownerMessages = read.messages.filter((m) => isPersonMessage(m) && (!owner || m.user === owner) && Number(m.ts) >= sinceMs / 1000);
|
|
87
|
+
report.channels.push({ channel: room.slackChannelId, name: room.slackChannelName, readable: true, ownerMessages: ownerMessages.length });
|
|
88
|
+
if (ownerMessages.length === 0)
|
|
89
|
+
continue;
|
|
90
|
+
let decisions = null;
|
|
91
|
+
if (this.deps.cloudDecisions) {
|
|
92
|
+
decisions = await this.deps.cloudDecisions(room.slackChannelId, since).catch(() => null);
|
|
93
|
+
if (decisions === null)
|
|
94
|
+
report.cloudLog = 'unavailable';
|
|
95
|
+
}
|
|
96
|
+
const byTs = new Map((decisions ?? []).map((d) => [d.ts, d]));
|
|
97
|
+
for (const m of ownerMessages) {
|
|
98
|
+
const ts = m.ts;
|
|
99
|
+
const reachedHere = this.deps.hasLocal(room.slackChannelId, ts);
|
|
100
|
+
const decision = byTs.get(ts) ?? null;
|
|
101
|
+
const cloud = decision ? summarise(decision) : null;
|
|
102
|
+
report.messages.push({
|
|
103
|
+
channel: room.slackChannelId,
|
|
104
|
+
channelName: room.slackChannelName,
|
|
105
|
+
ts,
|
|
106
|
+
threadTs: m.thread_ts && m.thread_ts !== ts ? m.thread_ts : null,
|
|
107
|
+
at: new Date(Number(ts) * 1000).toISOString(),
|
|
108
|
+
text: (m.text ?? '').slice(0, C.TEXT_PREVIEW_CHARS),
|
|
109
|
+
reachedHere,
|
|
110
|
+
cloud,
|
|
111
|
+
verdict: verdictOf(reachedHere, cloud, me),
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
report.messages.sort((a, b) => Number(a.ts) - Number(b.ts));
|
|
116
|
+
for (const m of report.messages) {
|
|
117
|
+
report.summary.total++;
|
|
118
|
+
if (m.verdict === 'reached-here')
|
|
119
|
+
report.summary.reachedHere++;
|
|
120
|
+
else if (m.verdict === 'reached-other-instance')
|
|
121
|
+
report.summary.reachedElsewhere++;
|
|
122
|
+
else
|
|
123
|
+
report.summary.missing++;
|
|
124
|
+
}
|
|
125
|
+
return report;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* History since `oldest`, plus the replies of threads active in that window.
|
|
129
|
+
*
|
|
130
|
+
* @param token - Bot token of a member
|
|
131
|
+
* @param channel - Slack channel id
|
|
132
|
+
* @param oldest - Slack ts lower bound
|
|
133
|
+
* @returns Messages (top level and thread replies), or the error
|
|
134
|
+
*/
|
|
135
|
+
async readChannel(token, channel, oldest) {
|
|
136
|
+
const C = SLACK_DELIVERY_AUDIT_CONSTANTS;
|
|
137
|
+
const top = [];
|
|
138
|
+
let cursor = '';
|
|
139
|
+
for (let page = 0; page < C.MAX_HISTORY_PAGES; page++) {
|
|
140
|
+
const res = await this.call('conversations.history', token, {
|
|
141
|
+
channel,
|
|
142
|
+
oldest,
|
|
143
|
+
limit: String(C.PAGE_SIZE),
|
|
144
|
+
...(cursor ? { cursor } : {}),
|
|
145
|
+
});
|
|
146
|
+
if (!res.ok)
|
|
147
|
+
return res;
|
|
148
|
+
top.push(...(res.body['messages'] ?? []));
|
|
149
|
+
cursor = (res.body['response_metadata']?.next_cursor ?? '').trim();
|
|
150
|
+
if (!cursor)
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
const out = [...top];
|
|
154
|
+
// `conversations.history` returns only top-level posts: an owner's reply
|
|
155
|
+
// inside a thread is read from the thread itself.
|
|
156
|
+
const threads = top.filter((m) => (m.reply_count ?? 0) > 0 && Number(m.latest_reply ?? m.ts ?? 0) >= Number(oldest)).slice(0, C.MAX_THREADS_PER_CHANNEL);
|
|
157
|
+
for (const parent of threads) {
|
|
158
|
+
const res = await this.call('conversations.replies', token, { channel, ts: parent.ts, oldest, limit: String(C.PAGE_SIZE) });
|
|
159
|
+
if (!res.ok)
|
|
160
|
+
continue;
|
|
161
|
+
for (const r of res.body['messages'] ?? []) {
|
|
162
|
+
if (r.ts !== parent.ts)
|
|
163
|
+
out.push(r);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return { ok: true, messages: out };
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* One Slack Web API GET; never throws.
|
|
170
|
+
*
|
|
171
|
+
* @param method - e.g. `conversations.history`
|
|
172
|
+
* @param token - Bot token
|
|
173
|
+
* @param params - Query parameters
|
|
174
|
+
* @returns The body, or the error code
|
|
175
|
+
*/
|
|
176
|
+
async call(method, token, params) {
|
|
177
|
+
const C = SLACK_DELIVERY_AUDIT_CONSTANTS;
|
|
178
|
+
const controller = new AbortController();
|
|
179
|
+
const timer = setTimeout(() => controller.abort(), C.FETCH_TIMEOUT_MS);
|
|
180
|
+
try {
|
|
181
|
+
const res = await this.fetchImpl(`${C.API_BASE_URL}/${method}?${new URLSearchParams(params).toString()}`, {
|
|
182
|
+
method: 'GET',
|
|
183
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
184
|
+
signal: controller.signal,
|
|
185
|
+
});
|
|
186
|
+
if (res.status === 429)
|
|
187
|
+
return { ok: false, error: 'rate_limited' };
|
|
188
|
+
const body = (await res.json());
|
|
189
|
+
if (!body || body['ok'] !== true)
|
|
190
|
+
return { ok: false, error: typeof body?.['error'] === 'string' ? body['error'] : `http_${res.status}` };
|
|
191
|
+
return { ok: true, body };
|
|
192
|
+
}
|
|
193
|
+
catch (err) {
|
|
194
|
+
return { ok: false, error: err instanceof Error ? err.message : String(err) };
|
|
195
|
+
}
|
|
196
|
+
finally {
|
|
197
|
+
clearTimeout(timer);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Whether a Slack message is a person speaking (not a bot, join, edit…).
|
|
203
|
+
*
|
|
204
|
+
* @param m - Raw message
|
|
205
|
+
* @returns True for a person's post
|
|
206
|
+
*/
|
|
207
|
+
function isPersonMessage(m) {
|
|
208
|
+
return !!m.ts && !!m.user && !m.bot_id && HUMAN_SUBTYPES.has(m.subtype ?? '');
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* The parts of a Cloud decision the report shows.
|
|
212
|
+
*
|
|
213
|
+
* @param d - Cloud routing decision
|
|
214
|
+
* @returns Summary
|
|
215
|
+
*/
|
|
216
|
+
function summarise(d) {
|
|
217
|
+
const deliveries = Object.entries(d.deliveries ?? {});
|
|
218
|
+
return {
|
|
219
|
+
rule: d.rule,
|
|
220
|
+
owner: d.owner,
|
|
221
|
+
targets: d.targets ?? [],
|
|
222
|
+
pushedTo: deliveries.filter(([, o]) => o.status === 'pushed').map(([id]) => id),
|
|
223
|
+
queued: deliveries.filter(([, o]) => o.status === 'queued').map(([id, o]) => ({ instanceId: id, ...(o.error ? { error: o.error } : {}) })),
|
|
224
|
+
reason: d.reason,
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* What happened to one owner message.
|
|
229
|
+
*
|
|
230
|
+
* @param reachedHere - This machine recorded it
|
|
231
|
+
* @param cloud - Cloud's routing record, if any
|
|
232
|
+
* @param me - This machine's instance id
|
|
233
|
+
* @returns The verdict
|
|
234
|
+
*/
|
|
235
|
+
export function verdictOf(reachedHere, cloud, me) {
|
|
236
|
+
if (reachedHere)
|
|
237
|
+
return 'reached-here';
|
|
238
|
+
if (!cloud)
|
|
239
|
+
return 'no-cloud-record';
|
|
240
|
+
if (me && cloud.pushedTo.includes(me))
|
|
241
|
+
return 'pushed-here-not-recorded';
|
|
242
|
+
if (cloud.pushedTo.some((id) => id !== me))
|
|
243
|
+
return 'reached-other-instance';
|
|
244
|
+
return 'never-reached';
|
|
245
|
+
}
|
|
246
|
+
let singleton = null;
|
|
247
|
+
/** The process-wide audit service, if wired. */
|
|
248
|
+
export function getSlackDeliveryAuditService() {
|
|
249
|
+
return singleton;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Set (or clear) the process-wide audit service.
|
|
253
|
+
*
|
|
254
|
+
* @param service - The service, or null
|
|
255
|
+
*/
|
|
256
|
+
export function setSlackDeliveryAuditService(service) {
|
|
257
|
+
singleton = service;
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=slack-delivery-audit.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack-delivery-audit.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/slack/slack-delivery-audit.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-initializer.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/slack/slack-initializer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"slack-initializer.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/slack/slack-initializer.ts"],"names":[],"mappings":"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"}
|