@open-everywhere/provider-slack 0.7.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agent/access/slack-attachment-fetch.ts +2 -1
- package/agent/app-manifest.ts +18 -2
- package/agent/channels/slack-agent-session.ts +338 -0
- package/agent/channels/slack-attachments.ts +20 -11
- package/agent/channels/slack-commands.ts +172 -12
- package/agent/channels/slack-context.ts +0 -5
- package/agent/channels/slack-events.ts +161 -33
- package/agent/channels/slack-follow-ups.ts +148 -0
- package/agent/channels/slack-front.ts +232 -26
- package/agent/channels/slack-home.ts +9 -3
- package/agent/channels/slack-identity.ts +43 -2
- package/agent/channels/slack-memory-canvas.ts +192 -51
- package/agent/channels/slack-origin-codec.ts +9 -0
- package/agent/channels/slack-post-arm.ts +68 -11
- package/agent/channels/slack-read.ts +27 -2
- package/agent/channels/slack-reply-blocks.ts +180 -0
- package/agent/channels/slack-reply-feedback.ts +75 -0
- package/agent/channels/slack-shortcut.ts +1 -1
- package/agent/channels/slack-voice-clips.ts +82 -0
- package/agent/channels/slack-wake-backscroll.ts +0 -5
- package/agent/channels/slack.ts +74 -13
- package/agent/docs-generated.ts +1299 -2
- package/agent/ops.ts +14 -21
- package/agent/register.ts +13 -0
- package/agent/setup/credentials.ts +17 -0
- package/agent/setup/page.ts +6 -3
- package/agent/surface-parity.ts +2 -0
- package/dist/agent/access/slack-attachment-fetch.d.ts.map +1 -1
- package/dist/agent/access/slack-attachment-fetch.js.map +1 -1
- package/dist/agent/app-manifest.d.ts.map +1 -1
- package/dist/agent/app-manifest.js +18 -2
- package/dist/agent/app-manifest.js.map +1 -1
- package/dist/agent/channels/slack-agent-session.d.ts +85 -0
- package/dist/agent/channels/slack-agent-session.d.ts.map +1 -0
- package/dist/agent/channels/slack-agent-session.js +282 -0
- package/dist/agent/channels/slack-agent-session.js.map +1 -0
- package/dist/agent/channels/slack-attachments.d.ts +11 -0
- package/dist/agent/channels/slack-attachments.d.ts.map +1 -1
- package/dist/agent/channels/slack-attachments.js +21 -14
- package/dist/agent/channels/slack-attachments.js.map +1 -1
- package/dist/agent/channels/slack-commands.d.ts +113 -10
- package/dist/agent/channels/slack-commands.d.ts.map +1 -1
- package/dist/agent/channels/slack-commands.js +146 -13
- package/dist/agent/channels/slack-commands.js.map +1 -1
- package/dist/agent/channels/slack-context.d.ts +1 -2
- package/dist/agent/channels/slack-context.d.ts.map +1 -1
- package/dist/agent/channels/slack-context.js +0 -4
- package/dist/agent/channels/slack-context.js.map +1 -1
- package/dist/agent/channels/slack-events.d.ts +53 -100
- package/dist/agent/channels/slack-events.d.ts.map +1 -1
- package/dist/agent/channels/slack-events.js +142 -26
- package/dist/agent/channels/slack-events.js.map +1 -1
- package/dist/agent/channels/slack-follow-ups.d.ts +44 -0
- package/dist/agent/channels/slack-follow-ups.d.ts.map +1 -0
- package/dist/agent/channels/slack-follow-ups.js +129 -0
- package/dist/agent/channels/slack-follow-ups.js.map +1 -0
- package/dist/agent/channels/slack-front.d.ts +28 -45
- package/dist/agent/channels/slack-front.d.ts.map +1 -1
- package/dist/agent/channels/slack-front.js +207 -22
- package/dist/agent/channels/slack-front.js.map +1 -1
- package/dist/agent/channels/slack-home.d.ts.map +1 -1
- package/dist/agent/channels/slack-home.js +10 -3
- package/dist/agent/channels/slack-home.js.map +1 -1
- package/dist/agent/channels/slack-identity.d.ts +33 -21
- package/dist/agent/channels/slack-identity.d.ts.map +1 -1
- package/dist/agent/channels/slack-identity.js +36 -2
- package/dist/agent/channels/slack-identity.js.map +1 -1
- package/dist/agent/channels/slack-memory-canvas.d.ts +21 -5
- package/dist/agent/channels/slack-memory-canvas.d.ts.map +1 -1
- package/dist/agent/channels/slack-memory-canvas.js +162 -52
- package/dist/agent/channels/slack-memory-canvas.js.map +1 -1
- package/dist/agent/channels/slack-origin-codec.d.ts.map +1 -1
- package/dist/agent/channels/slack-origin-codec.js +10 -0
- package/dist/agent/channels/slack-origin-codec.js.map +1 -1
- package/dist/agent/channels/slack-post-arm.d.ts +21 -1
- package/dist/agent/channels/slack-post-arm.d.ts.map +1 -1
- package/dist/agent/channels/slack-post-arm.js +57 -10
- package/dist/agent/channels/slack-post-arm.js.map +1 -1
- package/dist/agent/channels/slack-read.d.ts +11 -1
- package/dist/agent/channels/slack-read.d.ts.map +1 -1
- package/dist/agent/channels/slack-read.js +27 -3
- package/dist/agent/channels/slack-read.js.map +1 -1
- package/dist/agent/channels/slack-reply-blocks.d.ts +29 -0
- package/dist/agent/channels/slack-reply-blocks.d.ts.map +1 -0
- package/dist/agent/channels/slack-reply-blocks.js +172 -0
- package/dist/agent/channels/slack-reply-blocks.js.map +1 -0
- package/dist/agent/channels/slack-reply-feedback.d.ts +23 -0
- package/dist/agent/channels/slack-reply-feedback.d.ts.map +1 -0
- package/dist/agent/channels/slack-reply-feedback.js +63 -0
- package/dist/agent/channels/slack-reply-feedback.js.map +1 -0
- package/dist/agent/channels/slack-shortcut.d.ts +10 -0
- package/dist/agent/channels/slack-shortcut.d.ts.map +1 -1
- package/dist/agent/channels/slack-shortcut.js +1 -1
- package/dist/agent/channels/slack-shortcut.js.map +1 -1
- package/dist/agent/channels/slack-voice-clips.d.ts +16 -0
- package/dist/agent/channels/slack-voice-clips.d.ts.map +1 -0
- package/dist/agent/channels/slack-voice-clips.js +80 -0
- package/dist/agent/channels/slack-voice-clips.js.map +1 -0
- package/dist/agent/channels/slack-wake-backscroll.d.ts +0 -2
- package/dist/agent/channels/slack-wake-backscroll.d.ts.map +1 -1
- package/dist/agent/channels/slack-wake-backscroll.js +0 -4
- package/dist/agent/channels/slack-wake-backscroll.js.map +1 -1
- package/dist/agent/channels/slack.d.ts +22 -1
- package/dist/agent/channels/slack.d.ts.map +1 -1
- package/dist/agent/channels/slack.js +63 -13
- package/dist/agent/channels/slack.js.map +1 -1
- package/dist/agent/docs-generated.d.ts.map +1 -1
- package/dist/agent/docs-generated.js +1299 -2
- package/dist/agent/docs-generated.js.map +1 -1
- package/dist/agent/ops.d.ts +1 -1
- package/dist/agent/ops.d.ts.map +1 -1
- package/dist/agent/ops.js +15 -21
- package/dist/agent/ops.js.map +1 -1
- package/dist/agent/register.d.ts.map +1 -1
- package/dist/agent/register.js +12 -1
- package/dist/agent/register.js.map +1 -1
- package/dist/agent/setup/credentials.d.ts +12 -0
- package/dist/agent/setup/credentials.d.ts.map +1 -1
- package/dist/agent/setup/credentials.js +17 -0
- package/dist/agent/setup/credentials.js.map +1 -1
- package/dist/agent/setup/page.d.ts.map +1 -1
- package/dist/agent/setup/page.js +6 -3
- package/dist/agent/setup/page.js.map +1 -1
- package/dist/agent/surface-parity.d.ts.map +1 -1
- package/dist/agent/surface-parity.js +2 -0
- package/dist/agent/surface-parity.js.map +1 -1
- package/package.json +31 -3
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// slack-reply-feedback — a click on Slack's native thumbs up / down under an agent answer (OPE-2520).
|
|
2
|
+
//
|
|
3
|
+
// The answer carries one `feedback_buttons` element (slack-reply-blocks.ts). Slack sends a click to the
|
|
4
|
+
// app's interactivity URL as a signed `block_actions` payload whose action id is exactly
|
|
5
|
+
// `oe_feedback` and whose value is `up` or `down`. The front route classifies it (`slack-front.ts`,
|
|
6
|
+
// FrontDecision `feedback-click`), runs the tenant fence, acknowledges with an empty 200, and hands it
|
|
7
|
+
// here. This module turns it into core's surface-neutral click and writes the `reply.feedback` row.
|
|
8
|
+
//
|
|
9
|
+
// 🔴 ONLY OUR OWN MESSAGES CARRY THE BUTTON. Slack sends a `block_actions` payload only for a block the
|
|
10
|
+
// app itself posted, so a click always rates one of this app's messages: no bot-author check is needed,
|
|
11
|
+
// unlike the reaction road, where a 👍 can land on anyone's message.
|
|
12
|
+
import { recordReplyFeedback, resolvePartition } from "@open-everywhere/core/agent/adapter-api.js";
|
|
13
|
+
import { bindableForSlackIds } from "./slack-events.js";
|
|
14
|
+
import { SLACK_FEEDBACK_ACTION_ID, SLACK_FEEDBACK_VALUE_DOWN, SLACK_FEEDBACK_VALUE_UP } from "./slack-reply-blocks.js";
|
|
15
|
+
const obj = (v) => (typeof v === "object" && v !== null ? v : undefined);
|
|
16
|
+
const str = (v) => (typeof v === "string" && v.length > 0 ? v : undefined);
|
|
17
|
+
/**
|
|
18
|
+
* Parse a decoded interactivity payload into a thumbs click, or `undefined` when it is not one: not a
|
|
19
|
+
* `block_actions`, no `oe_feedback` action, a value other than `up`/`down`, or a missing user, channel
|
|
20
|
+
* or message. Pure and total: it never throws.
|
|
21
|
+
*/
|
|
22
|
+
export function parseSlackFeedbackClick(payload) {
|
|
23
|
+
const p = obj(payload);
|
|
24
|
+
if (p?.type !== "block_actions" || !Array.isArray(p.actions))
|
|
25
|
+
return undefined;
|
|
26
|
+
const action = p.actions.map(obj).find((a) => a?.action_id === SLACK_FEEDBACK_ACTION_ID);
|
|
27
|
+
if (action === undefined)
|
|
28
|
+
return undefined;
|
|
29
|
+
const value = str(action.value);
|
|
30
|
+
const rating = value === SLACK_FEEDBACK_VALUE_UP ? "up" : value === SLACK_FEEDBACK_VALUE_DOWN ? "down" : undefined;
|
|
31
|
+
if (rating === undefined)
|
|
32
|
+
return undefined;
|
|
33
|
+
const userId = str(obj(p.user)?.id);
|
|
34
|
+
const channelId = str(obj(p.channel)?.id) ?? str(obj(p.container)?.channel_id);
|
|
35
|
+
const messageTs = str(obj(p.message)?.ts) ?? str(obj(p.container)?.message_ts);
|
|
36
|
+
if (userId === undefined || channelId === undefined || messageTs === undefined)
|
|
37
|
+
return undefined;
|
|
38
|
+
const teamId = str(obj(p.team)?.id) ?? str(obj(p.user)?.team_id);
|
|
39
|
+
return { rating, userId, channelId, messageTs, ...(teamId === undefined ? {} : { teamId }) };
|
|
40
|
+
}
|
|
41
|
+
/** Record one thumbs click as a `reply.feedback` row, under the clicked conversation's partition.
|
|
42
|
+
* Answers whether the row was written. Never throws. */
|
|
43
|
+
export async function routeSlackFeedbackClick(click, deps = {}) {
|
|
44
|
+
try {
|
|
45
|
+
const p = resolvePartition(bindableForSlackIds({ teamId: click.teamId, channelId: click.channelId, userId: click.userId }));
|
|
46
|
+
const record = deps.record ?? ((c) => recordReplyFeedback(c));
|
|
47
|
+
return await record({
|
|
48
|
+
surface: "slack",
|
|
49
|
+
rating: click.rating,
|
|
50
|
+
raterId: click.userId,
|
|
51
|
+
channelId: click.channelId,
|
|
52
|
+
messageId: click.messageTs,
|
|
53
|
+
org: p.org,
|
|
54
|
+
platform: p.platform,
|
|
55
|
+
workspace: p.workspace,
|
|
56
|
+
surfaceKey: p.surfaceKey,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=slack-reply-feedback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack-reply-feedback.js","sourceRoot":"","sources":["../../../agent/channels/slack-reply-feedback.ts"],"names":[],"mappings":"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"}
|
|
@@ -113,6 +113,16 @@ export declare function shortcutWakeKey(sc: ParsedSlackShortcut): string;
|
|
|
113
113
|
* fenced as untrusted content — the same reasoning that leaves a slash-command name unfenced.
|
|
114
114
|
*/
|
|
115
115
|
export declare function globalShortcutText(sc: ParsedSlackShortcut): string;
|
|
116
|
+
/**
|
|
117
|
+
* A Slack-shaped `ts` for the one wake that has no message behind it: a global shortcut.
|
|
118
|
+
*
|
|
119
|
+
* Slack's format is `<seconds>.<microseconds>`, and the wake envelope reads it back with
|
|
120
|
+
* `Number.parseFloat` to render `sent-at`. Minting from the clock therefore makes `sent-at` say
|
|
121
|
+
* exactly what is true — when the person pressed the button. The microsecond field carries this
|
|
122
|
+
* instant's milliseconds; the last three digits are zero, because a millisecond clock cannot
|
|
123
|
+
* honestly claim more precision than it has.
|
|
124
|
+
*/
|
|
125
|
+
export declare function slackTsFromMs(nowMs: number): string;
|
|
116
126
|
/**
|
|
117
127
|
* Map a shortcut onto the shared {@link ParsedMessageEvent} shape, so the front door's existing
|
|
118
128
|
* wake spine (partition → seat → window → dedupe → gates → divert) runs over it unchanged.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-shortcut.d.ts","sourceRoot":"","sources":["../../../agent/channels/slack-shortcut.ts"],"names":[],"mappings":"AA6BA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAmB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG7E;;;;;;;;;;GAUG;AACH,MAAM,WAAW,mBAAmB;IAClC,mFAAmF;IACnF,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAC;IACpC,wFAAwF;IACxF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;;;2FAIuF;IACvF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,oFAAoF;IACpF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,4CAA4C;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE;QACjB,uFAAuF;QACvF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,kEAAkE;QAClE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAC3B,sFAAsF;QACtF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QACzB;;;;;sEAK8D;QAC9D,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;KAClD,CAAC;CACH;AAUD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,mBAAmB,GAAG,IAAI,CA6ClF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,mBAAmB,GAAG,MAAM,CAE/D;AAsCD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,mBAAmB,GAAG,MAAM,CAElE;
|
|
1
|
+
{"version":3,"file":"slack-shortcut.d.ts","sourceRoot":"","sources":["../../../agent/channels/slack-shortcut.ts"],"names":[],"mappings":"AA6BA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAmB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG7E;;;;;;;;;;GAUG;AACH,MAAM,WAAW,mBAAmB;IAClC,mFAAmF;IACnF,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAC;IACpC,wFAAwF;IACxF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;;;2FAIuF;IACvF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,oFAAoF;IACpF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,4CAA4C;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE;QACjB,uFAAuF;QACvF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,kEAAkE;QAClE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAC3B,sFAAsF;QACtF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QACzB;;;;;sEAK8D;QAC9D,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;KAClD,CAAC;CACH;AAUD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,mBAAmB,GAAG,IAAI,CA6ClF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,mBAAmB,GAAG,MAAM,CAE/D;AAsCD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,mBAAmB,GAAG,MAAM,CAElE;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAInD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,mBAAmB,EACvB,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,EACpB,KAAK,GAAE,MAAmB,EAC1B,IAAI,GAAE;IAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAO,GACjD,kBAAkB,CAuBpB"}
|
|
@@ -187,7 +187,7 @@ export function globalShortcutText(sc) {
|
|
|
187
187
|
* instant's milliseconds; the last three digits are zero, because a millisecond clock cannot
|
|
188
188
|
* honestly claim more precision than it has.
|
|
189
189
|
*/
|
|
190
|
-
function slackTsFromMs(nowMs) {
|
|
190
|
+
export function slackTsFromMs(nowMs) {
|
|
191
191
|
const seconds = Math.floor(nowMs / 1000);
|
|
192
192
|
const millis = nowMs % 1000;
|
|
193
193
|
return `${seconds}.${String(millis).padStart(3, "0")}000`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-shortcut.js","sourceRoot":"","sources":["../../../agent/channels/slack-shortcut.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"slack-shortcut.js","sourceRoot":"","sources":["../../../agent/channels/slack-shortcut.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { hearVoiceClips } from "@open-everywhere/core/agent/adapter-api.js";
|
|
2
|
+
import { type ParsedMessageEvent } from "./slack-events.js";
|
|
3
|
+
import { pullSlackAttachmentBytes } from "./slack-attachments.js";
|
|
4
|
+
export interface SlackVoiceClipDeps {
|
|
5
|
+
readonly hear?: typeof hearVoiceClips;
|
|
6
|
+
readonly pull?: typeof pullSlackAttachmentBytes;
|
|
7
|
+
}
|
|
8
|
+
/** True when the message carries a voice clip, so a road can skip the whole step on the common message. */
|
|
9
|
+
export declare function hasSlackVoiceClip(ev: ParsedMessageEvent): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* The message with its voice clips heard: the transcript appended to `text` and `authoredText`, and a `file_share`
|
|
12
|
+
* subtype cleared. A message with no clip comes back unchanged (the same object). Total: any failure gives the message
|
|
13
|
+
* back unchanged, so a broken clip never costs the person their typed words.
|
|
14
|
+
*/
|
|
15
|
+
export declare function withSlackVoiceClips(ev: ParsedMessageEvent, deps?: SlackVoiceClipDeps): Promise<ParsedMessageEvent>;
|
|
16
|
+
//# sourceMappingURL=slack-voice-clips.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack-voice-clips.d.ts","sourceRoot":"","sources":["../../../agent/channels/slack-voice-clips.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,cAAc,EAAqD,MAAM,4CAA4C,CAAC;AAC/H,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAMlE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,cAAc,CAAC;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,wBAAwB,CAAC;CACjD;AAED,2GAA2G;AAC3G,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAEjE;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,kBAAkB,EAAE,IAAI,GAAE,kBAAuB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAkC5H"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
// SLACK VOICE CLIPS (OPE-2524) — hear the voice clip on a Slack message the agent was ALREADY going to answer.
|
|
2
|
+
//
|
|
3
|
+
// The front door (slack-front.ts) calls {@link withSlackVoiceClips} on four roads, each one after the road decided to
|
|
4
|
+
// wake the agent and inside the road's own serialized queue, so the 200 to Slack never waits on a transcription:
|
|
5
|
+
// • a DM or group DM (the DM window seat);
|
|
6
|
+
// • a group-DM @mention diverted to that seat;
|
|
7
|
+
// • an addressed seat wake: a diverted @mention, or a follow-up in a thread the seat is holding;
|
|
8
|
+
// • a follow-up in an engaged thread on an unseated deployment.
|
|
9
|
+
// "Holding" means an engaged thread that was not stood down: the threads where a typed follow-up reaches the agent
|
|
10
|
+
// (slack-front.ts `threadHearsClips`).
|
|
11
|
+
//
|
|
12
|
+
// 🔴 A CLIP IN A ROOM THAT DID NOT ADDRESS THE AGENT IS NEVER DOWNLOADED. A top-level channel message, an unengaged
|
|
13
|
+
// thread and an ambient (unaddressed) seat wake all skip this. The name-drop judge reads typed words only, so a person
|
|
14
|
+
// who wants the agent to hear a clip in a channel @mentions it or replies in its thread. That keeps a room's audio out
|
|
15
|
+
// of a speech-to-text provider unless somebody pointed it at the agent.
|
|
16
|
+
//
|
|
17
|
+
// THE FETCH is the same bot-token, host-pinned, size-guarded read `read_file_upload` uses
|
|
18
|
+
// (slack-attachments.ts `pullSlackAttachmentBytes`), over the EVENT's own `url_private`. The bytes go to the
|
|
19
|
+
// transcriber and are dropped.
|
|
20
|
+
//
|
|
21
|
+
// 🔴 THE HEARD MESSAGE IS A PLAIN MESSAGE. Slack sends an upload as subtype `file_share`, and every thread gate drops a
|
|
22
|
+
// subtype (`shouldDeliverReply`, `shouldSupervisorWake`). Once a clip is heard, the message is what the person said,
|
|
23
|
+
// so the subtype is cleared. Only `file_share` is cleared. An edit (`message_changed`) is not heard again at all.
|
|
24
|
+
import { hearVoiceClips, isVoiceClip, voiceClipBody } from "@open-everywhere/core/agent/adapter-api.js";
|
|
25
|
+
import { bindableFor } from "./slack-events.js";
|
|
26
|
+
import { pullSlackAttachmentBytes } from "./slack-attachments.js";
|
|
27
|
+
import { slackTenantAdmission } from "./slack-tenant-fence.js";
|
|
28
|
+
/** Slack records a voice clip as `audio/webm` or `audio/mp4`. A clip that names no type is sent as mp4. */
|
|
29
|
+
const FALLBACK_MEDIA_TYPE = "audio/mp4";
|
|
30
|
+
/** True when the message carries a voice clip, so a road can skip the whole step on the common message. */
|
|
31
|
+
export function hasSlackVoiceClip(ev) {
|
|
32
|
+
return (ev.attachments ?? []).some(isVoiceClip);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The message with its voice clips heard: the transcript appended to `text` and `authoredText`, and a `file_share`
|
|
36
|
+
* subtype cleared. A message with no clip comes back unchanged (the same object). Total: any failure gives the message
|
|
37
|
+
* back unchanged, so a broken clip never costs the person their typed words.
|
|
38
|
+
*/
|
|
39
|
+
export async function withSlackVoiceClips(ev, deps = {}) {
|
|
40
|
+
if (!hasSlackVoiceClip(ev))
|
|
41
|
+
return ev;
|
|
42
|
+
// An EDIT is not heard again: the clip was heard on first delivery, and a caption edit must not pay for the same audio
|
|
43
|
+
// twice. The edit's own text goes on as typed.
|
|
44
|
+
if (ev.subtype === "message_changed")
|
|
45
|
+
return ev;
|
|
46
|
+
// 🔴 THE TENANT FENCE, ASKED AGAIN HERE. Every road refuses an undeclared workspace on its own, but the group-DM
|
|
47
|
+
// mention road reaches its fence (`scheduleDmWake`) only AFTER this step. So a foreign workspace's clip must not be
|
|
48
|
+
// downloaded or billed here. The question is pure: the refusal's audit row stays with the road's own fence.
|
|
49
|
+
if (slackTenantAdmission(ev.teamId, ev.enterpriseId) === "unadmitted")
|
|
50
|
+
return ev;
|
|
51
|
+
const pull = deps.pull ?? pullSlackAttachmentBytes;
|
|
52
|
+
let outcomes;
|
|
53
|
+
try {
|
|
54
|
+
const bindable = bindableFor(ev);
|
|
55
|
+
outcomes = await (deps.hear ?? hearVoiceClips)({
|
|
56
|
+
attachments: ev.attachments,
|
|
57
|
+
bindable,
|
|
58
|
+
load: async (clip, maxBytes) => {
|
|
59
|
+
if (clip.url === undefined)
|
|
60
|
+
throw new Error("the clip carries no download URL");
|
|
61
|
+
const audio = await pull(bindable, { urlPrivate: clip.url, ...(clip.id ? { id: clip.id } : {}) }, maxBytes);
|
|
62
|
+
return { audio, mediaType: clip.mimeType ?? FALLBACK_MEDIA_TYPE };
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
console.warn(`[open-everywhere:slack-voice-clips] ${ev.channelId}/${ev.ts}: voice clip step failed — the message goes on as typed: ${String(err)}`);
|
|
68
|
+
return ev;
|
|
69
|
+
}
|
|
70
|
+
if (outcomes.length === 0)
|
|
71
|
+
return ev;
|
|
72
|
+
const { subtype, ...rest } = ev;
|
|
73
|
+
return {
|
|
74
|
+
...rest,
|
|
75
|
+
...(subtype === undefined || subtype === "file_share" ? {} : { subtype }),
|
|
76
|
+
text: voiceClipBody(ev.text, outcomes),
|
|
77
|
+
authoredText: voiceClipBody(ev.authoredText, outcomes),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=slack-voice-clips.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack-voice-clips.js","sourceRoot":"","sources":["../../../agent/channels/slack-voice-clips.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,8 +48,6 @@ export interface WakeBackscrollDeps {
|
|
|
48
48
|
readonly request: SlackRequester;
|
|
49
49
|
readonly identity: () => Promise<WakeBotIdentity>;
|
|
50
50
|
}
|
|
51
|
-
/** Reset the cached wake bot identity (tests only). */
|
|
52
|
-
export declare function _resetWakeBotIdentity(): void;
|
|
53
51
|
/** The RAW-lines result of a name-drop backscroll fetch (W3): the oldest-first
|
|
54
52
|
* {@link ContextLine}s — capped at {@link WAKE_BACKSCROLL_MAX}, or at the wider
|
|
55
53
|
* {@link THREAD_ADMISSION_MAX} where the caller asked for the thread leg's admission slice
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-wake-backscroll.d.ts","sourceRoot":"","sources":["../../../agent/channels/slack-wake-backscroll.ts"],"names":[],"mappings":"AA4BA,OAAO,EAGL,mBAAmB,EAGnB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EAEtB,MAAM,4CAA4C,CAAC;AAIpD,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,QAA0B,CAAC;AAE5D,gGAAgG;AAChG,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;8FAC8F;AAC9F,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;AAE9H,mEAAmE;AACnE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,mCAAmC;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,6FAA6F;IAC7F,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;CACzC;AAED,+FAA+F;AAC/F,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAC;CACnD;
|
|
1
|
+
{"version":3,"file":"slack-wake-backscroll.d.ts","sourceRoot":"","sources":["../../../agent/channels/slack-wake-backscroll.ts"],"names":[],"mappings":"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"}
|
|
@@ -79,10 +79,6 @@ function liveWakeBotIdentity() {
|
|
|
79
79
|
}
|
|
80
80
|
return wakeBotIdentityPromise;
|
|
81
81
|
}
|
|
82
|
-
/** Reset the cached wake bot identity (tests only). */
|
|
83
|
-
export function _resetWakeBotIdentity() {
|
|
84
|
-
wakeBotIdentityPromise = undefined;
|
|
85
|
-
}
|
|
86
82
|
const liveDeps = { request: liveRequest, identity: liveWakeBotIdentity };
|
|
87
83
|
/**
|
|
88
84
|
* Fetch recent conversation history for a name-drop wake as RAW ContextLines + source + hint (W3) —
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-wake-backscroll.js","sourceRoot":"","sources":["../../../agent/channels/slack-wake-backscroll.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slack-wake-backscroll.js","sourceRoot":"","sources":["../../../agent/channels/slack-wake-backscroll.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type SlackContext, type SlackMessage } from "eve/channels/slack";
|
|
2
|
-
import { type OpenEverywhereSlackAuth } from "./slack-identity.js";
|
|
2
|
+
import { type ChannelFacts, type OpenEverywhereSlackAuth } from "./slack-identity.js";
|
|
3
|
+
import { type SlackMemberProbe } from "./slack-events.js";
|
|
3
4
|
/**
|
|
4
5
|
* The `chat.postMessage` form body for a channel-supervisor's host-side reply post (OPE-878).
|
|
5
6
|
*
|
|
@@ -16,6 +17,26 @@ type InboundOutcome = {
|
|
|
16
17
|
readonly auth: OpenEverywhereSlackAuth | null;
|
|
17
18
|
readonly context?: readonly string[];
|
|
18
19
|
} | null;
|
|
20
|
+
/**
|
|
21
|
+
* THE AUTHOR LEG ON THE NATIVE MENTION DOOR (OPE-2572). Every other Slack wake road probes who wrote
|
|
22
|
+
* the trigger and stamps `oe_chat_nonmember` on a positive refutation (slack-events.ts
|
|
23
|
+
* `slackWakeAuthorFacts`, the front's DM and group-DM legs). This door did neither, so a guest who
|
|
24
|
+
* @mentioned the agent in an internal channel woke an unmarked turn: no taint seed, no member-plane
|
|
25
|
+
* refusal, and a check-in that counted (hooks/routine-report-reply.ts). This runs the SAME probe and
|
|
26
|
+
* the SAME join (`stampNonMemberChatAuth`), so the native door and the windowed doors cannot disagree
|
|
27
|
+
* about one author.
|
|
28
|
+
*
|
|
29
|
+
* 🔴 IT STAMPS, IT DOES NOT DEMOTE THE ROOM. The auth keeps the room's verdict (`trust_checked` /
|
|
30
|
+
* `is_ext_shared`), the rule `slackWakeAuthorFacts` states for the channel routes: one guest's message
|
|
31
|
+
* must not demote the channel's memory tier. The stamp is what the consumers read.
|
|
32
|
+
*
|
|
33
|
+
* The room leg rides along exactly as on the channel routes: a channel the operator declared `public`
|
|
34
|
+
* marks the turn whoever wrote it. A DM or group DM contributes no room leg (`dm: true`).
|
|
35
|
+
*
|
|
36
|
+
* FAIL-OPEN, like every carriage leg: a probe that cannot answer refutes nobody. `probe` is injectable
|
|
37
|
+
* for the unit test only.
|
|
38
|
+
*/
|
|
39
|
+
export declare function stampNativeAuthorLeg(message: SlackMessage, facts: ChannelFacts, isDm: boolean, auth: OpenEverywhereSlackAuth | null, probe?: SlackMemberProbe): Promise<OpenEverywhereSlackAuth | null>;
|
|
19
40
|
/**
|
|
20
41
|
* THE WAKE-ADMISSION CHOKEPOINT for eve's native mention/DM door (OPE-33) — the only thing wired
|
|
21
42
|
* into `onAppMention`/`onDirectMessage`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../../../agent/channels/slack.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../../../agent/channels/slack.ts"],"names":[],"mappings":"AAsBA,OAAO,EAEL,KAAK,YAAY,EAGjB,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAOL,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC7B,MAAM,qBAAqB,CAAC;AAmE7B,OAAO,EAAoL,KAAK,gBAAgB,EAA8B,MAAM,mBAAmB,CAAC;AAiHxQ;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAI5G;AAmRD;mDACmD;AACnD,KAAK,cAAc,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAAC;AA8OrH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,uBAAuB,GAAG,IAAI,EACpC,KAAK,GAAE,gBAAsC,GAC5C,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAkBzC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,YAAY,EACjB,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,OAAO,EACb,GAAG,GAAE,CAAC,OAAO,EAAE;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,KAAK,OAAO,CAAC,cAAc,CAAuD,GAClH,OAAO,CAAC,cAAc,CAAC,CAYzB"}
|
|
@@ -17,10 +17,11 @@
|
|
|
17
17
|
// encrypted credential store, which is where a `/setup` run puts them. They used to be omitted, which
|
|
18
18
|
// left eve reading `process.env` on a path OE no longer does. Capturing channel_type/is_private is a RAW-fact job; the
|
|
19
19
|
// security-critical interpretation (fail-closed to private) lives in the binding.
|
|
20
|
+
import { auditErrorDetail } from "@open-everywhere/core/agent/adapter-api.js";
|
|
20
21
|
import { SLACK_EVE_CREDENTIALS } from "../setup/eve-credentials.js";
|
|
21
22
|
import { slackChannel, } from "eve/channels/slack";
|
|
22
23
|
import { buildSlackAuth, channelFactsFromInfo, channelFactsFromRaw, forwardedSlackEnterpriseId, partnerFactsFromInfo, slackMode, } from "./slack-identity.js";
|
|
23
|
-
import { resolvePartition, getOperationalStore, postOnce, outboundKey, statusVerbsFor, getConfig, finalMessageActionForTurn, NO_REPLY_SENTINEL_REASON, auditNoReplySentinelObserved, isBareStop, supervisorTextDelivery, isSupervisorProseLeak, capabilitiesForPlatform, consumeCardPostedThisTurn, consumeReactedThisTurn, consumeRepliedThisTurn, dropClosingProse, markThreadEngaged, disengageThread, getThreadEngagement, bumpThreadSilentStreak, WARM_SILENT_LIMIT, SURFACE, tierId, getProvider, providerById, writeMemoryTier, surfaceProvider, upsertUnderSection, bindFrom, authPrincipalId, isAllowedSlackDriver, planFor, extractPinnedInstructions, introMessage, instructionBullet, ONBOARDED_MARKER, STATUS_REACTION, renderPinned, isPinnedStatusMessage, classifyWakeMapping, unmappedWakeCopy, UNMAPPED_WAKE_DROP_REASON, admittedTenantsFromConfig, unadmittedTenantLog, UNADMITTED_TENANT_DROP_REASON, dmTrustTtlMs, swallowRoomOp, domainRoster, } from "@open-everywhere/core/agent/adapter-api.js";
|
|
24
|
+
import { resolvePartition, auditSurfaceModeFrom, getOperationalStore, postOnce, outboundKey, statusVerbsFor, getConfig, finalMessageActionForTurn, NO_REPLY_SENTINEL_REASON, auditNoReplySentinelObserved, isBareStop, supervisorTextDelivery, isSupervisorProseLeak, capabilitiesForPlatform, consumeCardPostedThisTurn, consumeReactedThisTurn, consumeRepliedThisTurn, dropClosingProse, markThreadEngaged, disengageThread, getThreadEngagement, bumpThreadSilentStreak, WARM_SILENT_LIMIT, SURFACE, tierId, getProvider, providerById, writeMemoryTier, surfaceProvider, upsertUnderSection, bindFrom, authPrincipalId, isAllowedSlackDriver, planFor, extractPinnedInstructions, introMessage, instructionBullet, ONBOARDED_MARKER, STATUS_REACTION, renderPinned, isPinnedStatusMessage, classifyWakeMapping, unmappedWakeCopy, UNMAPPED_WAKE_DROP_REASON, admittedTenantsFromConfig, unadmittedTenantLog, UNADMITTED_TENANT_DROP_REASON, dmTrustTtlMs, swallowRoomOp, domainRoster, domainKeyOf, resolveWakeTrust, stampNonMemberChatAuth, } from "@open-everywhere/core/agent/adapter-api.js";
|
|
24
25
|
import { TURN_FAILED_TEXT, withEndsTurnFinalChannel } from "@open-everywhere/core/agent/adapter-api.js";
|
|
25
26
|
import { loadConversationContext } from "./slack-context.js";
|
|
26
27
|
import { slackSpendGate } from "./slack-spend-gate.js";
|
|
@@ -29,7 +30,7 @@ import { holdRouteWork } from "./slack-route-hold.js";
|
|
|
29
30
|
import { frontSlackChannel, INTERNAL_SLACK_ROUTE } from "./slack-front.js";
|
|
30
31
|
import { admitSlackInputResponse } from "./slack-input-response.js";
|
|
31
32
|
import { taskCardConfidentiality } from "./slack-task-card.js";
|
|
32
|
-
import { turnEffectsFor, botDisplayName, slackForm, isSupervisorReplyTurn, deliverSupervisorReply, dmWakeThreadOverride, replyThreadTsForState } from "./slack-events.js";
|
|
33
|
+
import { turnEffectsFor, botDisplayName, slackForm, isSupervisorReplyTurn, deliverSupervisorReply, dmWakeThreadOverride, replyThreadTsForState, slackAuthorIsMember, slackWakeAuthorFacts } from "./slack-events.js";
|
|
33
34
|
import { markdownToSlackMrkdwn } from "./slack-mrkdwn.js";
|
|
34
35
|
import { stepStatusFor } from "./slack-step-label.js";
|
|
35
36
|
// WARM_SILENT_LIMIT (the warm-thread shed threshold) now lives in channels/engagement.ts so
|
|
@@ -168,18 +169,20 @@ function isUninvited(state) {
|
|
|
168
169
|
async function recordQuietFailure(state, event, message) {
|
|
169
170
|
console.warn(`[open-everywhere:slack] ${event} on an uninvited turn — suppressed on-surface (${message})`);
|
|
170
171
|
try {
|
|
171
|
-
const
|
|
172
|
+
const bindable = {
|
|
172
173
|
channel: { kind: "slack" },
|
|
173
174
|
session: { auth: { current: { attributes: { team_id: state.teamId ?? "", channel_id: state.channelId ?? "" }, principalId: "", principalType: "slack-user" } } },
|
|
174
|
-
}
|
|
175
|
+
};
|
|
176
|
+
const p = resolvePartition(bindable);
|
|
175
177
|
await getOperationalStore().appendAudit({
|
|
176
178
|
ts: new Date().toISOString(),
|
|
177
179
|
org: p.org,
|
|
178
180
|
platform: p.platform,
|
|
179
181
|
workspace: p.workspace,
|
|
180
182
|
surface: p.surface,
|
|
183
|
+
...auditSurfaceModeFrom(bindable),
|
|
181
184
|
action: "surface.quiet_fail",
|
|
182
|
-
detail: { event, threadTs: state.threadTs ?? undefined, message: message.
|
|
185
|
+
detail: { event, threadTs: state.threadTs ?? undefined, message: auditErrorDetail(message).error },
|
|
183
186
|
});
|
|
184
187
|
}
|
|
185
188
|
catch (err) {
|
|
@@ -371,6 +374,7 @@ async function maybeOnboard(ctx, where) {
|
|
|
371
374
|
silo: target.silo,
|
|
372
375
|
access: target.access,
|
|
373
376
|
road: "pinned-instructions",
|
|
377
|
+
...auditSurfaceModeFrom(where),
|
|
374
378
|
});
|
|
375
379
|
adopted = true;
|
|
376
380
|
}
|
|
@@ -388,6 +392,7 @@ async function maybeOnboard(ctx, where) {
|
|
|
388
392
|
message: `onboarding ${p.surfaceKey}`,
|
|
389
393
|
road: "onboarding-marker",
|
|
390
394
|
kind: "operational",
|
|
395
|
+
...auditSurfaceModeFrom(where),
|
|
391
396
|
});
|
|
392
397
|
try {
|
|
393
398
|
// Introduce as the bot's actual workspace name (fail-soft → product-name fallback).
|
|
@@ -463,16 +468,18 @@ const DROP = null;
|
|
|
463
468
|
function auditWakeDropped(message, reason, detail = {}) {
|
|
464
469
|
return holdRouteWork((async () => {
|
|
465
470
|
try {
|
|
466
|
-
const
|
|
471
|
+
const bindable = {
|
|
467
472
|
channel: { kind: "slack" },
|
|
468
473
|
session: { auth: { current: { attributes: { team_id: message.teamId ?? "", channel_id: message.channelId }, principalId: "", principalType: "slack-user" } } },
|
|
469
|
-
}
|
|
474
|
+
};
|
|
475
|
+
const p = resolvePartition(bindable);
|
|
470
476
|
await getOperationalStore().appendAudit({
|
|
471
477
|
ts: new Date().toISOString(),
|
|
472
478
|
org: p.org,
|
|
473
479
|
platform: p.platform,
|
|
474
480
|
workspace: p.workspace,
|
|
475
481
|
surface: p.surface,
|
|
482
|
+
...auditSurfaceModeFrom(bindable),
|
|
476
483
|
action: "surface.wake_dropped",
|
|
477
484
|
detail: { reason, channel: message.channelId, ts: message.ts, ...detail },
|
|
478
485
|
});
|
|
@@ -639,7 +646,46 @@ consult) {
|
|
|
639
646
|
// its silent streak, and exempts it from warm auto-disengage).
|
|
640
647
|
await markThreadEngaged(partitionForMessage(message, facts), message.threadTs, new Date().toISOString(), { participating: true });
|
|
641
648
|
}
|
|
642
|
-
return { auth: authFromFacts(message, facts), context };
|
|
649
|
+
return { auth: await stampNativeAuthorLeg(message, facts, isDm, authFromFacts(message, facts)), context };
|
|
650
|
+
}
|
|
651
|
+
/**
|
|
652
|
+
* THE AUTHOR LEG ON THE NATIVE MENTION DOOR (OPE-2572). Every other Slack wake road probes who wrote
|
|
653
|
+
* the trigger and stamps `oe_chat_nonmember` on a positive refutation (slack-events.ts
|
|
654
|
+
* `slackWakeAuthorFacts`, the front's DM and group-DM legs). This door did neither, so a guest who
|
|
655
|
+
* @mentioned the agent in an internal channel woke an unmarked turn: no taint seed, no member-plane
|
|
656
|
+
* refusal, and a check-in that counted (hooks/routine-report-reply.ts). This runs the SAME probe and
|
|
657
|
+
* the SAME join (`stampNonMemberChatAuth`), so the native door and the windowed doors cannot disagree
|
|
658
|
+
* about one author.
|
|
659
|
+
*
|
|
660
|
+
* 🔴 IT STAMPS, IT DOES NOT DEMOTE THE ROOM. The auth keeps the room's verdict (`trust_checked` /
|
|
661
|
+
* `is_ext_shared`), the rule `slackWakeAuthorFacts` states for the channel routes: one guest's message
|
|
662
|
+
* must not demote the channel's memory tier. The stamp is what the consumers read.
|
|
663
|
+
*
|
|
664
|
+
* The room leg rides along exactly as on the channel routes: a channel the operator declared `public`
|
|
665
|
+
* marks the turn whoever wrote it. A DM or group DM contributes no room leg (`dm: true`).
|
|
666
|
+
*
|
|
667
|
+
* FAIL-OPEN, like every carriage leg: a probe that cannot answer refutes nobody. `probe` is injectable
|
|
668
|
+
* for the unit test only.
|
|
669
|
+
*/
|
|
670
|
+
export async function stampNativeAuthorLeg(message, facts, isDm, auth, probe = slackAuthorIsMember) {
|
|
671
|
+
if (auth === null)
|
|
672
|
+
return null;
|
|
673
|
+
const mode = slackMode(facts.channelType, message.channelId);
|
|
674
|
+
// The surface fact `resolveWakeTrust` takes: on a 1:1 the partner probe, elsewhere the room's own
|
|
675
|
+
// confirmed-internal verdict (the expression `channelInternalAndMeta` uses).
|
|
676
|
+
const surfaceInternal = isDm ? facts.dmPartnerTrust === "internal" : facts.trustChecked === true && facts.isExternal === false;
|
|
677
|
+
const authorFacts = await slackWakeAuthorFacts(surfaceInternal, message.author?.userId, message.teamId, probe);
|
|
678
|
+
const channelKey = domainKeyOf(partitionForMessage(message, facts));
|
|
679
|
+
const rawBotId = typeof message.raw?.bot_id === "string" ? message.raw.bot_id : undefined;
|
|
680
|
+
const enterpriseId = forwardedSlackEnterpriseId(message);
|
|
681
|
+
const trust = resolveWakeTrust({
|
|
682
|
+
authorIsBot: Boolean(message.author?.isBot) && !isAllowedSlackDriver(message.teamId, rawBotId),
|
|
683
|
+
authorId: message.author?.userId,
|
|
684
|
+
surfaceInternal: authorFacts.surfaceInternal,
|
|
685
|
+
channelKey,
|
|
686
|
+
...(enterpriseId === undefined ? {} : { enterpriseId }),
|
|
687
|
+
});
|
|
688
|
+
return stampNonMemberChatAuth(auth, [{ trust, refuted: authorFacts.refuted }], mode === "channel" ? { surfaceKey: channelKey } : { dm: true });
|
|
643
689
|
}
|
|
644
690
|
/**
|
|
645
691
|
* THE WAKE-ADMISSION CHOKEPOINT for eve's native mention/DM door (OPE-33) — the only thing wired
|
|
@@ -916,16 +962,18 @@ const slackMentionChannel = slackChannel({
|
|
|
916
962
|
console.warn(`[open-everywhere:slack] BARE STOP — turn ended with no reply, no react, and no no_reply ` +
|
|
917
963
|
`(${channelId ?? "?"}/${threadTs ?? "?"}) — this usually means a judgment call went missing, not that one was made.`);
|
|
918
964
|
try {
|
|
919
|
-
const
|
|
965
|
+
const bindable = {
|
|
920
966
|
channel: { kind: "slack" },
|
|
921
967
|
session: { auth: { current: { attributes: { team_id: channel.state.teamId ?? "", channel_id: channelId ?? "" }, principalId: "", principalType: "slack-user" } } },
|
|
922
|
-
}
|
|
968
|
+
};
|
|
969
|
+
const p = resolvePartition(bindable);
|
|
923
970
|
await getOperationalStore().appendAudit({
|
|
924
971
|
ts: new Date().toISOString(),
|
|
925
972
|
org: p.org,
|
|
926
973
|
platform: p.platform,
|
|
927
974
|
workspace: p.workspace,
|
|
928
975
|
surface: p.surface,
|
|
976
|
+
...auditSurfaceModeFrom(bindable),
|
|
929
977
|
action: "turn.bare_stop",
|
|
930
978
|
detail: { threadTs, ...(sessionId ? { sessionId } : {}) },
|
|
931
979
|
});
|
|
@@ -1002,12 +1050,13 @@ const slackMentionChannel = slackChannel({
|
|
|
1002
1050
|
// partition from the session state, independent of whether a reply target resolved.
|
|
1003
1051
|
const channelId = channel.state.channelId ?? undefined;
|
|
1004
1052
|
const teamId = channel.state.teamId;
|
|
1005
|
-
const
|
|
1006
|
-
?
|
|
1053
|
+
const supervisorBindable = channelId
|
|
1054
|
+
? {
|
|
1007
1055
|
channel: { kind: "slack" },
|
|
1008
1056
|
session: { auth: { current: { attributes: { team_id: teamId ?? "", channel_id: channelId }, principalId: "", principalType: "slack-user" } } },
|
|
1009
|
-
}
|
|
1057
|
+
}
|
|
1010
1058
|
: undefined;
|
|
1059
|
+
const partition = supervisorBindable ? resolvePartition(supervisorBindable) : undefined;
|
|
1011
1060
|
// --- MESSAGE-TOOL-ONLY hard-silence gate (OpenClaw steal, slack-events.ts) -----------
|
|
1012
1061
|
// A supervisor's terminal completion text is NOT a reply: a visible reply must come from
|
|
1013
1062
|
// the `reply` tool (which posted mid-turn via reply-post.ts + marked repliedThisTurn).
|
|
@@ -1029,6 +1078,7 @@ const slackMentionChannel = slackChannel({
|
|
|
1029
1078
|
platform: partition.platform,
|
|
1030
1079
|
workspace: partition.workspace,
|
|
1031
1080
|
surface: partition.surface,
|
|
1081
|
+
...(supervisorBindable ? auditSurfaceModeFrom(supervisorBindable) : {}),
|
|
1032
1082
|
action: "turn.supervisor_prose_dropped",
|
|
1033
1083
|
detail: { threadTs: target?.threadTs, chars: action.text.length, ...(sessionId ? { sessionId } : {}) },
|
|
1034
1084
|
});
|