@open-everywhere/provider-slack 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agent/access/slack-attachment-fetch.ts +2 -1
- package/agent/app-manifest.ts +15 -1
- package/agent/channels/slack-agent-session.ts +249 -0
- package/agent/channels/slack-attachments.ts +20 -11
- package/agent/channels/slack-bot-ask.ts +101 -0
- package/agent/channels/slack-commands.ts +178 -17
- package/agent/channels/slack-context.ts +0 -5
- package/agent/channels/slack-events.ts +110 -33
- package/agent/channels/slack-follow-ups.ts +148 -0
- package/agent/channels/slack-friendly-names.ts +55 -0
- package/agent/channels/slack-front.ts +262 -27
- package/agent/channels/slack-home.ts +9 -3
- package/agent/channels/slack-identity.ts +9 -1
- package/agent/channels/slack-memory-canvas.ts +197 -54
- 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-web-api.ts +4 -2
- package/agent/channels/slack.ts +81 -19
- package/agent/docs-generated.ts +1282 -2
- package/agent/ops.ts +14 -21
- package/agent/register.ts +25 -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 +15 -1
- package/dist/agent/app-manifest.js.map +1 -1
- package/dist/agent/channels/slack-agent-session.d.ts +81 -0
- package/dist/agent/channels/slack-agent-session.d.ts.map +1 -0
- package/dist/agent/channels/slack-agent-session.js +198 -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-bot-ask.d.ts +30 -0
- package/dist/agent/channels/slack-bot-ask.d.ts.map +1 -0
- package/dist/agent/channels/slack-bot-ask.js +91 -0
- package/dist/agent/channels/slack-bot-ask.js.map +1 -0
- 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 +151 -18
- 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 +47 -97
- package/dist/agent/channels/slack-events.d.ts.map +1 -1
- package/dist/agent/channels/slack-events.js +90 -22
- 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-friendly-names.d.ts +10 -0
- package/dist/agent/channels/slack-friendly-names.d.ts.map +1 -0
- package/dist/agent/channels/slack-friendly-names.js +45 -0
- package/dist/agent/channels/slack-friendly-names.js.map +1 -0
- package/dist/agent/channels/slack-front.d.ts +38 -46
- package/dist/agent/channels/slack-front.d.ts.map +1 -1
- package/dist/agent/channels/slack-front.js +230 -23
- 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 +7 -21
- package/dist/agent/channels/slack-identity.d.ts.map +1 -1
- package/dist/agent/channels/slack-identity.js +3 -1
- 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 +166 -55
- 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-web-api.d.ts.map +1 -1
- package/dist/agent/channels/slack-web-api.js +4 -2
- package/dist/agent/channels/slack-web-api.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 +70 -16
- 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 +1282 -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 +22 -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 +40 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type MemoryWriteEvent } from "@open-everywhere/core/agent/adapter-api.js";
|
|
1
|
+
import { type MemoryWriteEvent, type OperationalStore } from "@open-everywhere/core/agent/adapter-api.js";
|
|
2
2
|
export type CanvasOutcome = "created" | "updated" | "unchanged" | "skipped-external" | "skipped-guest" | "skipped-foreign" | "skipped-disabled" | "cleared-external" | "cleared-guest" | "cleared-disabled" | "clear-failed" | "failed";
|
|
3
3
|
export interface MemoryCanvasDeps {
|
|
4
4
|
/** One Slack Web API call; undefined on any failure. */
|
|
@@ -10,6 +10,8 @@ export interface MemoryCanvasDeps {
|
|
|
10
10
|
* `users.info` probe (slack-events.ts `slackAuthorIsMember`). */
|
|
11
11
|
readonly authorIsMember: (userId: string, teamId: string | undefined) => Promise<boolean | undefined>;
|
|
12
12
|
readonly now?: () => Date;
|
|
13
|
+
/** The `memory_canvas` row (OPE-2587). The live dep is the operational store. */
|
|
14
|
+
readonly store?: Pick<OperationalStore, "getMemoryCanvas" | "setMemoryCanvas">;
|
|
13
15
|
}
|
|
14
16
|
/** The live deps: every call through `slackForm` (the one Web API seam, fail-soft), the room verdict
|
|
15
17
|
* read FRESH, and the shared per-person membership probe. */
|
|
@@ -20,21 +22,35 @@ export declare function liveMemoryCanvasDeps(): MemoryCanvasDeps;
|
|
|
20
22
|
* on some clients. A memory view must never notify anyone, so both forms are defused. PURE.
|
|
21
23
|
*/
|
|
22
24
|
export declare function defuseCanvasText(markdown: string): string;
|
|
25
|
+
/** The channel one canvas decision is about, and the org and team its `memory_canvas` row is keyed by. */
|
|
26
|
+
export interface CanvasRoom {
|
|
27
|
+
readonly org: string;
|
|
28
|
+
readonly teamId: string;
|
|
29
|
+
readonly channelId: string;
|
|
30
|
+
}
|
|
23
31
|
/**
|
|
24
32
|
* Write one channel's canvas — or, with `markdown: null`, only RECHECK it. Never throws.
|
|
25
33
|
*
|
|
26
|
-
* 🔴 THE GATE RUNS BEFORE EVERY DECISION, AND A FAILED GATE TAKES THE
|
|
34
|
+
* 🔴 THE GATE RUNS BEFORE EVERY DECISION, AND A FAILED GATE TAKES THE MEMORY CANVAS DOWN (OPE-2451,
|
|
27
35
|
* the brain's security review). A canvas the app wrote while the channel passed outlives the room's
|
|
28
36
|
* trust otherwise: once the channel is shared, or a guest joins, a refresh that merely SKIPS leaves
|
|
29
37
|
* every line of the domain's memory on screen for the new audience. So on either refusal the app
|
|
30
|
-
* replaces
|
|
31
|
-
*
|
|
38
|
+
* replaces the memory canvas with {@link withdrawnCanvasMarkdown} ({@link withdrawIfOurs}).
|
|
39
|
+
*
|
|
40
|
+
* 🔴 ONLY THE MEMORY CANVAS IS WRITTEN (OPE-2587). Slack shows a channel's canvases as tabs, and the
|
|
41
|
+
* canvas a person approves through `write_canvas` has the app's bot user as its creator too. So the app
|
|
42
|
+
* rewrites only the canvas core's {@link memoryCanvasAmong} finds: the id its `memory_canvas` row
|
|
43
|
+
* holds, or, for a canvas made before the row existed, the rule that function names. A channel with no
|
|
44
|
+
* memory canvas gets one, and the row records its id. A person's canvas and a `write_canvas` canvas are
|
|
45
|
+
* not touched, in either direction, unless a person typed the memory canvas footer line into one by
|
|
46
|
+
* hand ({@link memoryCanvasAmong} rule 3). A lookup that leaves the answer open writes nothing (`failed`),
|
|
47
|
+
* because a new canvas could then duplicate the memory canvas.
|
|
32
48
|
*
|
|
33
49
|
* `null` markdown is the recheck the trust EVENTS run: it takes the canvas down on a failed gate and
|
|
34
50
|
* writes nothing on a passing one (`unchanged`). `joinedUserId` is the person a join event named: they
|
|
35
51
|
* are probed DIRECTLY, because Slack's member list may not carry them yet when the event arrives.
|
|
36
52
|
*/
|
|
37
|
-
export declare function publishChannelCanvas(
|
|
53
|
+
export declare function publishChannelCanvas(room: CanvasRoom, markdown: string | null, botUserId: string | undefined, deps: MemoryCanvasDeps, joinedUserId?: string): Promise<CanvasOutcome>;
|
|
38
54
|
/** What woke a canvas decision: a memory write, or one of the two trust events. */
|
|
39
55
|
export type CanvasTrigger = "memory-write" | "member-joined" | "channel-shared";
|
|
40
56
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-memory-canvas.d.ts","sourceRoot":"","sources":["../../../agent/channels/slack-memory-canvas.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"slack-memory-canvas.d.ts","sourceRoot":"","sources":["../../../agent/channels/slack-memory-canvas.ts"],"names":[],"mappings":"AA4CA,OAAO,EAkBL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EAEtB,MAAM,4CAA4C,CAAC;AAcpD,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,SAAS,GACT,WAAW,GACX,kBAAkB,GAClB,eAAe,GACf,iBAAiB,GACjB,kBAAkB,GAClB,kBAAkB,GAClB,eAAe,GACf,kBAAkB,GAClB,cAAc,GACd,QAAQ,CAAC;AAMb,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;IAC/G;wGACoG;IACpG,QAAQ,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE;sEACkE;IAClE,QAAQ,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IACtG,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,iFAAiF;IACjF,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,iBAAiB,GAAG,iBAAiB,CAAC,CAAC;CAChF;AA8DD;8DAC8D;AAC9D,wBAAgB,oBAAoB,IAAI,gBAAgB,CAMvD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEzD;AAyFD,0GAA0G;AAC1G,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAqDD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,IAAI,EAAE,gBAAgB,EACtB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,CAAC,CAwBxB;AAOD,mFAAmF;AACnF,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,eAAe,GAAG,gBAAgB,CAAC;AAEhF;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE;IACL,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IACzD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC,EACD,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,aAAa,CAAC,CA8BxB;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4C1G;AAMD,mGAAmG;AACnG,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB/F"}
|
|
@@ -24,15 +24,24 @@
|
|
|
24
24
|
// reports, until the next memory write or trust event re-runs it (docs/capabilities/memory.md lists
|
|
25
25
|
// every limit).
|
|
26
26
|
//
|
|
27
|
-
// 🔴
|
|
28
|
-
//
|
|
29
|
-
// `
|
|
30
|
-
//
|
|
27
|
+
// 🔴 ONLY THE MEMORY CANVAS IS EVER TOUCHED (OPE-2587). A channel can show more than one canvas (the
|
|
28
|
+
// channel canvas and its canvas tabs). People write their own, and the agent creates canvases for
|
|
29
|
+
// people through `write_canvas`, with the app's own bot user as the creator. So the creator does not
|
|
30
|
+
// mark the memory canvas. The app records the id `conversations.canvases.create` answers in the
|
|
31
|
+
// `memory_canvas` row and rewrites only that canvas (core `memoryCanvasAmong` names the rule, and how
|
|
32
|
+
// a canvas made before the row existed is adopted). Every other canvas stays as its owner left it,
|
|
33
|
+
// unless a person types the memory canvas footer line into it by hand (core `memoryCanvasAmong` rule
|
|
34
|
+
// 3). A channel whose canvas slot another canvas holds gets no memory canvas, and the refusal is logged
|
|
35
|
+
// and audited so an operator can see why a channel shows no memory.
|
|
31
36
|
//
|
|
32
37
|
// 🔴 WHAT A CANVAS DOES NOT DO. It is a READ view. Members correct or forget a line by asking the
|
|
33
38
|
// agent in the channel, which goes through the tools and the approval card like any other change.
|
|
34
39
|
// An edit made directly in the canvas is overwritten on the next memory write — the canvas says so.
|
|
35
|
-
|
|
40
|
+
// The agent's own `write_canvas` refuses this canvas for the same reason (core
|
|
41
|
+
// channels/slack-canvas-list.ts `refuseMemoryCanvasWrite`, OPE-2585): both sides find the memory
|
|
42
|
+
// canvas through the one core rule, `memoryCanvasAmong`. It reads the `properties.canvas` field AND
|
|
43
|
+
// every canvas tab (`properties.tabs[]`, OPE-2587), because Slack can hold a channel canvas only as a tab.
|
|
44
|
+
import { agentDisplayName, appendAudit, domainForChannel, domainsNamingSilo, getConfig, getOperationalStore, MEMORY_CANVAS_MARKER, memoryCanvasAmong, memoryCanvasSurfaceKey, readDomainMemory, storedMemoryCanvas, memoryLineForReader, renderMemoryMarkdown, scrubAuditText, } from "@open-everywhere/core/agent/adapter-api.js";
|
|
36
45
|
import { confirmChannelInternalFresh, slackAuthorIsMember, slackForm } from "./slack-events.js";
|
|
37
46
|
import { encodeSlackForm } from "./slack-web-api.js";
|
|
38
47
|
/** The audit action every refresh attempt writes, one row per channel. Declared in core's registry. */
|
|
@@ -46,6 +55,53 @@ const CANVAS_MARKDOWN_MAX = 90_000;
|
|
|
46
55
|
/** The most members a canvas channel may have and still be checked person by person (one page of
|
|
47
56
|
* `conversations.members`). A larger channel is refused rather than half-checked. */
|
|
48
57
|
const MEMBER_CHECK_MAX = 200;
|
|
58
|
+
/** The longest Slack-supplied string the audit row keeps. Slack's codes and scope lists are far shorter. */
|
|
59
|
+
const SLACK_ERROR_TEXT_MAX = 120;
|
|
60
|
+
/** Slack's own text, kept only when it is a short code or scope list: never a free-text blob. */
|
|
61
|
+
function slackCode(v) {
|
|
62
|
+
return typeof v === "string" && v.length > 0 && v.length <= SLACK_ERROR_TEXT_MAX && /^[A-Za-z0-9_.:,-]+$/.test(v) ? v : undefined;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Wrap the deps of ONE canvas decision so the decision's last Slack refusal is kept (OPE-2600). Every
|
|
66
|
+
* lookup on the canvas path is fail-soft, and core's {@link memoryCanvasAmong} reads only `ok`, so
|
|
67
|
+
* without this a scope gap and a product defect both reach the audit row as a bare `failed`. The
|
|
68
|
+
* LAST refusal of the decision is kept. On most paths that is the call that decided the outcome. An
|
|
69
|
+
* earlier refusal can also have only shaped the path: a refused `auth.test` leaves the bot unknown, and
|
|
70
|
+
* a refused `conversations.members` sends the decision to the take-down. A throw is never a Slack
|
|
71
|
+
* refusal, so the callers drop the refusal on their throw path.
|
|
72
|
+
*/
|
|
73
|
+
function recordSlackRefusals(deps) {
|
|
74
|
+
let last;
|
|
75
|
+
return {
|
|
76
|
+
deps: {
|
|
77
|
+
...deps,
|
|
78
|
+
call: async (method, body) => {
|
|
79
|
+
const res = await deps.call(method, body);
|
|
80
|
+
if (res === undefined)
|
|
81
|
+
last = { method, error: "no_response" };
|
|
82
|
+
else if (res.ok !== true) {
|
|
83
|
+
const needed = slackCode(res.needed);
|
|
84
|
+
last = { method, error: slackCode(res.error) ?? "unknown", ...(needed ? { needed } : {}) };
|
|
85
|
+
}
|
|
86
|
+
return res;
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
refusal: () => last,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/** The Slack refusal behind an outcome, when it has one: present only on `failed` and `clear-failed`,
|
|
93
|
+
* and only when a Slack call was refused. A failure with no Slack refusal (a store read, a throw)
|
|
94
|
+
* answers undefined. */
|
|
95
|
+
function refusalFor(outcome, refusal) {
|
|
96
|
+
return outcome === "failed" || outcome === "clear-failed" ? refusal : undefined;
|
|
97
|
+
}
|
|
98
|
+
/** The audit detail fields for a refusal: `slackError` (Slack's code, through the audit scrub, as every
|
|
99
|
+
* error-named key must be), `slackMethod`, and `slackNeeded` when Slack names a scope. */
|
|
100
|
+
function slackErrorDetail(e) {
|
|
101
|
+
if (!e)
|
|
102
|
+
return {};
|
|
103
|
+
return { slackError: scrubAuditText(e.error), slackMethod: e.method, ...(e.needed ? { slackNeeded: scrubAuditText(e.needed) } : {}) };
|
|
104
|
+
}
|
|
49
105
|
/** The live deps: every call through `slackForm` (the one Web API seam, fail-soft), the room verdict
|
|
50
106
|
* read FRESH, and the shared per-person membership probe. */
|
|
51
107
|
export function liveMemoryCanvasDeps() {
|
|
@@ -67,9 +123,10 @@ export function defuseCanvasText(markdown) {
|
|
|
67
123
|
function memoryCanvasMarkdown(domain, groups, nowIso) {
|
|
68
124
|
const name = agentDisplayName();
|
|
69
125
|
const body = renderMemoryMarkdown(`What ${name} knows — ${domain.title ?? domain.name}`, groups, nowIso);
|
|
70
|
-
const footer = `\n---\n${name} keeps this canvas up to date
|
|
71
|
-
|
|
72
|
-
|
|
126
|
+
const footer = `\n---\n${name} keeps this canvas up to date. To correct or forget a line, ask ${name} in this channel. ` +
|
|
127
|
+
`${MEMORY_CANVAS_MARKER}\n`;
|
|
128
|
+
// OPE-2486 — the memory provenance carriers read as plain words on a canvas a whole channel reads.
|
|
129
|
+
const text = defuseCanvasText(memoryLineForReader(body));
|
|
73
130
|
const cut = text.length > CANVAS_MARKDOWN_MAX ? text.slice(0, CANVAS_MARKDOWN_MAX) + "\n\n_This canvas is full. Ask in this channel for the rest._\n" : text;
|
|
74
131
|
return cut + footer;
|
|
75
132
|
}
|
|
@@ -143,56 +200,86 @@ async function everyMemberIsFull(channelId, teamId, botUserId, deps) {
|
|
|
143
200
|
function withdrawnCanvasMarkdown() {
|
|
144
201
|
const name = agentDisplayName();
|
|
145
202
|
return (`# ${name}'s memory canvas was withdrawn\n\n` +
|
|
146
|
-
`This channel
|
|
147
|
-
`The memory itself is unchanged. Members can still ask ${name} about it
|
|
203
|
+
`This channel includes guests or people from outside your organisation, so ${name} no longer shows its memory here. ` +
|
|
204
|
+
`The memory itself is unchanged. Members can still ask ${name} about it in an internal channel. ` +
|
|
205
|
+
// The marker keeps the withdrawn canvas the memory canvas, so a later refresh rewrites it in place.
|
|
206
|
+
`${MEMORY_CANVAS_MARKER}\n`);
|
|
207
|
+
}
|
|
208
|
+
/** Slack's answer when it answered `ok`, else undefined: the read shape core's rule takes. */
|
|
209
|
+
function readOk(deps) {
|
|
210
|
+
return async (method, params) => {
|
|
211
|
+
const res = await deps.call(method, params);
|
|
212
|
+
return res?.ok === true ? res : undefined;
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
/** The memory canvas among the channel's canvases, by core's one rule (OPE-2587). */
|
|
216
|
+
async function findMemoryCanvas(room, info, botUserId, deps) {
|
|
217
|
+
const stored = await storedMemoryCanvas(deps.store ?? getOperationalStore(), room.org, memoryCanvasSurfaceKey(room.teamId, room.channelId));
|
|
218
|
+
return memoryCanvasAmong(readOk(deps), info, stored, botUserId);
|
|
219
|
+
}
|
|
220
|
+
/** Record the room's memory canvas id. A failed write is not an outcome: the row then names an older id
|
|
221
|
+
* or none, the canvas carries {@link MEMORY_CANVAS_MARKER}, and core's rule scans for the marker
|
|
222
|
+
* whenever the row's id is not on screen. So the next decision finds this canvas again. */
|
|
223
|
+
async function recordMemoryCanvas(room, canvasId, deps) {
|
|
224
|
+
const at = (deps.now?.() ?? new Date()).toISOString();
|
|
225
|
+
await (deps.store ?? getOperationalStore()).setMemoryCanvas(room.org, memoryCanvasSurfaceKey(room.teamId, room.channelId), canvasId, at).catch(() => undefined);
|
|
148
226
|
}
|
|
149
227
|
/**
|
|
150
|
-
* Take the
|
|
151
|
-
* `conversations.info`,
|
|
152
|
-
* a skip — the caller cannot rule out that the
|
|
153
|
-
* say so. `skipped-*` is kept for the
|
|
154
|
-
*
|
|
228
|
+
* Take the memory canvas down in one channel, if it has one. FAIL-CLOSED ON EVERY LOOKUP: a failed
|
|
229
|
+
* `conversations.info`, store read, `files.info` or section lookup, or an unknown bot identity, answers
|
|
230
|
+
* `clear-failed`, never a skip — the caller cannot rule out that the memory canvas is still on screen,
|
|
231
|
+
* and the audit row must say so. `skipped-*` is kept for the answer that PROVES no memory canvas is on
|
|
232
|
+
* screen ({@link memoryCanvasAmong} answers `none`). Only the memory canvas is cleared: a person's
|
|
233
|
+
* canvas, and a canvas the agent made for a person through `write_canvas`, are not touched (OPE-2587),
|
|
234
|
+
* unless a person typed the memory canvas footer line into one by hand ({@link memoryCanvasAmong} rule 3).
|
|
155
235
|
*/
|
|
156
|
-
async function withdrawIfOurs(
|
|
157
|
-
const info = await deps.call("conversations.info", { channel: channelId });
|
|
236
|
+
async function withdrawIfOurs(room, reason, botUserId, deps) {
|
|
237
|
+
const info = await deps.call("conversations.info", { channel: room.channelId });
|
|
158
238
|
if (info?.ok !== true)
|
|
159
239
|
return "clear-failed";
|
|
160
|
-
const
|
|
161
|
-
if (
|
|
162
|
-
return `skipped-${reason}`;
|
|
163
|
-
const file = await deps.call("files.info", { file: existing });
|
|
164
|
-
if (file?.ok !== true)
|
|
165
|
-
return "clear-failed";
|
|
166
|
-
const creator = file.file?.user;
|
|
167
|
-
if (botUserId === undefined)
|
|
240
|
+
const match = await findMemoryCanvas(room, info, botUserId, deps);
|
|
241
|
+
if (match.kind === "unsure")
|
|
168
242
|
return "clear-failed";
|
|
169
|
-
if (
|
|
243
|
+
if (match.kind === "none")
|
|
170
244
|
return `skipped-${reason}`;
|
|
171
245
|
const cleared = await deps.call("canvases.edit", {
|
|
172
|
-
canvas_id:
|
|
246
|
+
canvas_id: match.canvasId,
|
|
173
247
|
changes: [{ operation: "replace", document_content: { type: "markdown", markdown: withdrawnCanvasMarkdown() } }],
|
|
174
248
|
});
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
return
|
|
249
|
+
if (cleared?.ok !== true)
|
|
250
|
+
return "clear-failed";
|
|
251
|
+
if (match.adopt)
|
|
252
|
+
await recordMemoryCanvas(room, match.canvasId, deps);
|
|
253
|
+
return `cleared-${reason}`;
|
|
180
254
|
}
|
|
255
|
+
/** Slack's refusals of `conversations.canvases.create` that mean the channel's canvas slot holds a
|
|
256
|
+
* canvas that is not the memory canvas: a person's channel canvas, or the one tab a free plan allows,
|
|
257
|
+
* which a person's canvas or a canvas the agent made through `write_canvas` can hold. */
|
|
258
|
+
const CANVAS_SLOT_TAKEN = new Set(["channel_canvas_already_exists", "free_team_canvas_tab_already_exists"]);
|
|
181
259
|
/**
|
|
182
260
|
* Write one channel's canvas — or, with `markdown: null`, only RECHECK it. Never throws.
|
|
183
261
|
*
|
|
184
|
-
* 🔴 THE GATE RUNS BEFORE EVERY DECISION, AND A FAILED GATE TAKES THE
|
|
262
|
+
* 🔴 THE GATE RUNS BEFORE EVERY DECISION, AND A FAILED GATE TAKES THE MEMORY CANVAS DOWN (OPE-2451,
|
|
185
263
|
* the brain's security review). A canvas the app wrote while the channel passed outlives the room's
|
|
186
264
|
* trust otherwise: once the channel is shared, or a guest joins, a refresh that merely SKIPS leaves
|
|
187
265
|
* every line of the domain's memory on screen for the new audience. So on either refusal the app
|
|
188
|
-
* replaces
|
|
189
|
-
*
|
|
266
|
+
* replaces the memory canvas with {@link withdrawnCanvasMarkdown} ({@link withdrawIfOurs}).
|
|
267
|
+
*
|
|
268
|
+
* 🔴 ONLY THE MEMORY CANVAS IS WRITTEN (OPE-2587). Slack shows a channel's canvases as tabs, and the
|
|
269
|
+
* canvas a person approves through `write_canvas` has the app's bot user as its creator too. So the app
|
|
270
|
+
* rewrites only the canvas core's {@link memoryCanvasAmong} finds: the id its `memory_canvas` row
|
|
271
|
+
* holds, or, for a canvas made before the row existed, the rule that function names. A channel with no
|
|
272
|
+
* memory canvas gets one, and the row records its id. A person's canvas and a `write_canvas` canvas are
|
|
273
|
+
* not touched, in either direction, unless a person typed the memory canvas footer line into one by
|
|
274
|
+
* hand ({@link memoryCanvasAmong} rule 3). A lookup that leaves the answer open writes nothing (`failed`),
|
|
275
|
+
* because a new canvas could then duplicate the memory canvas.
|
|
190
276
|
*
|
|
191
277
|
* `null` markdown is the recheck the trust EVENTS run: it takes the canvas down on a failed gate and
|
|
192
278
|
* writes nothing on a passing one (`unchanged`). `joinedUserId` is the person a join event named: they
|
|
193
279
|
* are probed DIRECTLY, because Slack's member list may not carry them yet when the event arrives.
|
|
194
280
|
*/
|
|
195
|
-
export async function publishChannelCanvas(
|
|
281
|
+
export async function publishChannelCanvas(room, markdown, botUserId, deps, joinedUserId) {
|
|
282
|
+
const { channelId, teamId } = room;
|
|
196
283
|
const blocked = !(await deps.channelInternal(channelId))
|
|
197
284
|
? "external"
|
|
198
285
|
: (joinedUserId !== undefined && joinedUserId !== botUserId && (await deps.authorIsMember(joinedUserId, teamId)) !== true) ||
|
|
@@ -200,24 +287,33 @@ export async function publishChannelCanvas(channelId, markdown, botUserId, deps,
|
|
|
200
287
|
? "guest"
|
|
201
288
|
: undefined;
|
|
202
289
|
if (blocked)
|
|
203
|
-
return withdrawIfOurs(
|
|
290
|
+
return withdrawIfOurs(room, blocked, botUserId, deps);
|
|
204
291
|
if (markdown === null)
|
|
205
292
|
return "unchanged";
|
|
206
293
|
const info = await deps.call("conversations.info", { channel: channelId });
|
|
207
294
|
if (info?.ok !== true)
|
|
208
295
|
return "failed";
|
|
209
|
-
const
|
|
210
|
-
if (
|
|
296
|
+
const match = await findMemoryCanvas(room, info, botUserId, deps);
|
|
297
|
+
if (match.kind === "unsure")
|
|
298
|
+
return "failed";
|
|
299
|
+
if (match.kind === "none") {
|
|
211
300
|
const created = await deps.call("conversations.canvases.create", { channel_id: channelId, document_content: { type: "markdown", markdown } });
|
|
212
|
-
|
|
301
|
+
if (created?.ok !== true)
|
|
302
|
+
return typeof created?.error === "string" && CANVAS_SLOT_TAKEN.has(created.error) ? "skipped-foreign" : "failed";
|
|
303
|
+
if (typeof created.canvas_id === "string" && created.canvas_id.length > 0)
|
|
304
|
+
await recordMemoryCanvas(room, created.canvas_id, deps);
|
|
305
|
+
return "created";
|
|
213
306
|
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
if (
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
307
|
+
const edited = await deps.call("canvases.edit", { canvas_id: match.canvasId, changes: [{ operation: "replace", document_content: { type: "markdown", markdown } }] });
|
|
308
|
+
if (edited?.ok !== true)
|
|
309
|
+
return "failed";
|
|
310
|
+
if (match.adopt)
|
|
311
|
+
await recordMemoryCanvas(room, match.canvasId, deps);
|
|
312
|
+
return "updated";
|
|
313
|
+
}
|
|
314
|
+
/** The deploy-log tail for a Slack refusal: the method and code, and the scope Slack names. */
|
|
315
|
+
function slackErrorLog(e) {
|
|
316
|
+
return e ? ` (${e.method}: ${e.error}${e.needed ? `, needs ${e.needed}` : ""})` : "";
|
|
221
317
|
}
|
|
222
318
|
/**
|
|
223
319
|
* Recheck ONE channel's canvas after a trust event (a person joined it, or it was shared). The front
|
|
@@ -231,15 +327,23 @@ export async function publishChannelCanvas(channelId, markdown, botUserId, deps,
|
|
|
231
327
|
*/
|
|
232
328
|
export async function recheckChannelCanvas(input, deps) {
|
|
233
329
|
const surfaceKey = `slack/${input.teamId}/${input.channelId}`;
|
|
330
|
+
const room = { org: input.org, teamId: input.teamId, channelId: input.channelId };
|
|
234
331
|
const domain = domainForChannel(surfaceKey, getConfig().loadDomains());
|
|
235
332
|
const shows = domain !== undefined && domain.memory !== undefined && domain.memoryCanvas !== false;
|
|
236
|
-
|
|
333
|
+
// The recorder starts before `auth.test`: an unknown bot identity is a refusal the row should name.
|
|
334
|
+
const recorded = recordSlackRefusals(deps);
|
|
335
|
+
const auth = await recorded.deps.call("auth.test", {});
|
|
237
336
|
const botUserId = auth?.ok === true && typeof auth.user_id === "string" ? auth.user_id : undefined;
|
|
337
|
+
let threw = false;
|
|
238
338
|
const outcome = await (shows
|
|
239
|
-
? publishChannelCanvas(
|
|
240
|
-
: withdrawIfOurs(
|
|
339
|
+
? publishChannelCanvas(room, null, botUserId, recorded.deps, input.joinedUserId)
|
|
340
|
+
: withdrawIfOurs(room, "disabled", botUserId, recorded.deps)).catch(() => {
|
|
341
|
+
threw = true;
|
|
342
|
+
return "clear-failed";
|
|
343
|
+
});
|
|
344
|
+
const refusal = threw ? undefined : refusalFor(outcome, recorded.refusal());
|
|
241
345
|
if (outcome !== "unchanged" && outcome !== "skipped-disabled") {
|
|
242
|
-
console.log(`[open-everywhere:slack-canvas] ${input.trigger} recheck, channel ${input.channelId}: ${outcome}`);
|
|
346
|
+
console.log(`[open-everywhere:slack-canvas] ${input.trigger} recheck, channel ${input.channelId}: ${outcome}${slackErrorLog(refusal)}`);
|
|
243
347
|
}
|
|
244
348
|
await appendAudit({
|
|
245
349
|
org: input.org,
|
|
@@ -247,7 +351,7 @@ export async function recheckChannelCanvas(input, deps) {
|
|
|
247
351
|
workspace: input.teamId,
|
|
248
352
|
surface: input.channelId,
|
|
249
353
|
action: MEMORY_CANVAS_ACTION,
|
|
250
|
-
detail: { domain: domain?.name ?? null, trigger: input.trigger, outcome },
|
|
354
|
+
detail: { domain: domain?.name ?? null, trigger: input.trigger, outcome, ...slackErrorDetail(refusal) },
|
|
251
355
|
}).catch(() => undefined);
|
|
252
356
|
return outcome;
|
|
253
357
|
}
|
|
@@ -280,9 +384,16 @@ export async function refreshMemoryCanvases(event, deps) {
|
|
|
280
384
|
const markdown = shows ? memoryCanvasMarkdown(domain, await readDomainMemory(event.org, domain), nowIso) : "";
|
|
281
385
|
for (const room of rooms) {
|
|
282
386
|
// A throw on the clear-only path cannot rule out that the old canvas is still up, so it says so.
|
|
283
|
-
const
|
|
387
|
+
const canvasRoom = { org: event.org, teamId, channelId: room.channelId };
|
|
388
|
+
const recorded = recordSlackRefusals(deps);
|
|
389
|
+
let threw = false;
|
|
390
|
+
const outcome = await (shows ? publishChannelCanvas(canvasRoom, markdown, botUserId, recorded.deps) : withdrawIfOurs(canvasRoom, "disabled", botUserId, recorded.deps)).catch(() => {
|
|
391
|
+
threw = true;
|
|
392
|
+
return shows ? "failed" : "clear-failed";
|
|
393
|
+
});
|
|
394
|
+
const refusal = threw ? undefined : refusalFor(outcome, recorded.refusal());
|
|
284
395
|
if (outcome !== "created" && outcome !== "updated") {
|
|
285
|
-
console.log(`[open-everywhere:slack-canvas] domain "${domain.name}" channel ${room.channelId}: ${outcome}`);
|
|
396
|
+
console.log(`[open-everywhere:slack-canvas] domain "${domain.name}" channel ${room.channelId}: ${outcome}${slackErrorLog(refusal)}`);
|
|
286
397
|
}
|
|
287
398
|
const [platform, workspace, surface] = room.surfaceKey.split("/");
|
|
288
399
|
await appendAudit({
|
|
@@ -291,7 +402,7 @@ export async function refreshMemoryCanvases(event, deps) {
|
|
|
291
402
|
workspace: workspace,
|
|
292
403
|
surface: surface,
|
|
293
404
|
action: MEMORY_CANVAS_ACTION,
|
|
294
|
-
detail: { domain: domain.name, trigger: "memory-write", silo: event.silo, outcome, chars: markdown.length },
|
|
405
|
+
detail: { domain: domain.name, trigger: "memory-write", silo: event.silo, outcome, chars: markdown.length, ...slackErrorDetail(refusal) },
|
|
295
406
|
}).catch(() => undefined);
|
|
296
407
|
}
|
|
297
408
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-memory-canvas.js","sourceRoot":"","sources":["../../../agent/channels/slack-memory-canvas.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slack-memory-canvas.js","sourceRoot":"","sources":["../../../agent/channels/slack-memory-canvas.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-origin-codec.d.ts","sourceRoot":"","sources":["../../../agent/channels/slack-origin-codec.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAErG,KAAK,WAAW,GAAG,OAAO,CAAC,iBAAiB,EAAE;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAMrE,eAAO,MAAM,oBAAoB,EAAE,eAAe,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"slack-origin-codec.d.ts","sourceRoot":"","sources":["../../../agent/channels/slack-origin-codec.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAErG,KAAK,WAAW,GAAG,OAAO,CAAC,iBAAiB,EAAE;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAMrE,eAAO,MAAM,oBAAoB,EAAE,eAAe,CAAC,WAAW,CAyD7D,CAAC"}
|
|
@@ -55,6 +55,16 @@ export const slackWakeOriginCodec = {
|
|
|
55
55
|
const ts = typeof origin.threadTs === "string" && origin.threadTs.length > 0 ? origin.threadTs : typeof origin.replyAnchorTs === "string" && origin.replyAnchorTs.length > 0 ? origin.replyAnchorTs : undefined;
|
|
56
56
|
return ts === undefined ? undefined : { channelId: origin.channelId, messageId: ts };
|
|
57
57
|
},
|
|
58
|
+
// THE THREAD A REPLY OPENS (OPE-2532). A post that is already in a thread answers undefined, because its
|
|
59
|
+
// own `threadTs` is the key. A post placed under an anchor lands in the anchor's thread (the post arm
|
|
60
|
+
// reads `threadTs ?? replyAnchorTs`), and Slack threads do not nest, so a reply carries the anchor. A
|
|
61
|
+
// top-level post opens a thread under its own ts.
|
|
62
|
+
replyThreadUnder: (origin, messageId) => {
|
|
63
|
+
if (typeof origin.threadTs === "string" && origin.threadTs.length > 0)
|
|
64
|
+
return undefined;
|
|
65
|
+
const anchor = typeof origin.replyAnchorTs === "string" && origin.replyAnchorTs.length > 0 ? origin.replyAnchorTs : messageId;
|
|
66
|
+
return { platform: "slack", channelId: origin.channelId, threadTs: anchor };
|
|
67
|
+
},
|
|
58
68
|
// A `dmOrigin` arm lived here (OPE-306) to mint a DM delegation anchor's reply origin from the
|
|
59
69
|
// binding. OPE-368 deleted the anchor and the interface member with it — a Slack 1:1 or group DM
|
|
60
70
|
// now diverts into its own first-class window (OPE-351 stages 2 + 4), so its origin is minted and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-origin-codec.js","sourceRoot":"","sources":["../../../agent/channels/slack-origin-codec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slack-origin-codec.js","sourceRoot":"","sources":["../../../agent/channels/slack-origin-codec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PostArm, ReplierLabel, UnifiedWakeOrigin } from "@open-everywhere/core/agent/adapter-api.js";
|
|
1
|
+
import type { PostArm, PostIntent, ReplierLabel, EditLocus, UnifiedWakeOrigin } from "@open-everywhere/core/agent/adapter-api.js";
|
|
2
2
|
type SlackOrigin = Extract<UnifiedWakeOrigin, {
|
|
3
3
|
platform: "slack";
|
|
4
4
|
}>;
|
|
@@ -30,6 +30,14 @@ export type SlackPostFn = (body: URLSearchParams) => Promise<SlackPostResult | u
|
|
|
30
30
|
* double can't reach — see slack-replier-label-test.ts).
|
|
31
31
|
*/
|
|
32
32
|
export declare function postSlackMessage(base: URLSearchParams, replier: ReplierLabel | undefined, errPrefix: string, post?: SlackPostFn, resolveDisplayName?: () => Promise<string | undefined>): Promise<string>;
|
|
33
|
+
/**
|
|
34
|
+
* Post an ANSWER (OPE-2520): `base` carries the channel, the thread and the mrkdwn `text`; when the
|
|
35
|
+
* intent asks for source links or the native thumbs, the first attempt adds the answer's `blocks`
|
|
36
|
+
* (slack-reply-blocks.ts). A post Slack refuses FOR ITS BLOCKS is retried once without them, so a
|
|
37
|
+
* workspace that rejects a block still gets the answer. Only that refusal retries: Slack answered
|
|
38
|
+
* `ok:false`, so nothing posted and the plain retry cannot double the message.
|
|
39
|
+
*/
|
|
40
|
+
export declare function postSlackAnswer(base: URLSearchParams, intent: PostIntent | undefined, replier: ReplierLabel | undefined, errPrefix: string, post?: SlackPostFn, resolveDisplayName?: () => Promise<string | undefined>): Promise<string>;
|
|
33
41
|
/**
|
|
34
42
|
* The `thread_ts` a unified reply posts under, or undefined for a top-level post. PURE, and the ONE
|
|
35
43
|
* statement of Slack's reply placement:
|
|
@@ -42,6 +50,18 @@ export declare function postSlackMessage(base: URLSearchParams, replier: Replier
|
|
|
42
50
|
* un-injectable network call (scripts/slack-replier-label-test.ts).
|
|
43
51
|
*/
|
|
44
52
|
export declare function slackThreadTarget(origin: Pick<SlackOrigin, "threadTs" | "replyAnchorTs">): string | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* EDIT (OPE-793): rewrite one of our own posted messages via `chat.update` (channel + ts + text).
|
|
55
|
+
* Slack renders an "(edited)" marker on the message, so the room sees that it changed.
|
|
56
|
+
*
|
|
57
|
+
* Ownership is NOT decided here — channels/reply-edit.ts already refused anything outside the
|
|
58
|
+
* own-post ledger before this runs. Slack's own rule (an app may only update a message its own token
|
|
59
|
+
* posted) is the backstop under that, and its refusal arrives as a token-free throw the model reads.
|
|
60
|
+
* `chat.update` needs the same `chat:write` scope the post path already has.
|
|
61
|
+
*/
|
|
62
|
+
export declare function editSlackMessage(locus: EditLocus, messageId: string, text: string, intent?: PostIntent,
|
|
63
|
+
/** The `chat.update` write — the live `slackForm` client; a test supplies a scripted one. */
|
|
64
|
+
form?: (method: string, body: string) => Promise<Record<string, unknown> | undefined>): Promise<void>;
|
|
45
65
|
export declare const slackPostArm: PostArm;
|
|
46
66
|
export {};
|
|
47
67
|
//# sourceMappingURL=slack-post-arm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-post-arm.d.ts","sourceRoot":"","sources":["../../../agent/channels/slack-post-arm.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"slack-post-arm.d.ts","sourceRoot":"","sources":["../../../agent/channels/slack-post-arm.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,OAAO,EACP,UAAU,EAGV,YAAY,EACZ,SAAS,EACT,iBAAiB,EAKlB,MAAM,4CAA4C,CAAC;AAGpD,KAAK,WAAW,GAAG,OAAO,CAAC,iBAAiB,EAAE;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAyBrE;;;;qCAIqC;AACrC,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAG3H;AAED;kGACkG;AAClG,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;0DAC0D;AAC1D,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,eAAe,KAAK,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;AAI1F;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,YAAY,GAAG,SAAS,EACjC,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,WAAsB,EAC5B,kBAAkB,GAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAkB,GACrE,OAAO,CAAC,MAAM,CAAC,CAuBjB;AAqBD;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,UAAU,GAAG,SAAS,EAC9B,OAAO,EAAE,YAAY,GAAG,SAAS,EACjC,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,WAAsB,EAC5B,kBAAkB,GAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAkB,GACrE,OAAO,CAAC,MAAM,CAAC,CAYjB;AASD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,eAAe,CAAC,GAAG,MAAM,GAAG,SAAS,CAG7G;AA6ED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,UAAU;AACnB,6FAA6F;AAC7F,IAAI,GAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAa,GAC/F,OAAO,CAAC,IAAI,CAAC,CAyBf;AAED,eAAO,MAAM,YAAY,EAAE,OAyB1B,CAAC"}
|