@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.
Files changed (127) hide show
  1. package/agent/access/slack-attachment-fetch.ts +2 -1
  2. package/agent/app-manifest.ts +18 -2
  3. package/agent/channels/slack-agent-session.ts +338 -0
  4. package/agent/channels/slack-attachments.ts +20 -11
  5. package/agent/channels/slack-commands.ts +172 -12
  6. package/agent/channels/slack-context.ts +0 -5
  7. package/agent/channels/slack-events.ts +161 -33
  8. package/agent/channels/slack-follow-ups.ts +148 -0
  9. package/agent/channels/slack-front.ts +232 -26
  10. package/agent/channels/slack-home.ts +9 -3
  11. package/agent/channels/slack-identity.ts +43 -2
  12. package/agent/channels/slack-memory-canvas.ts +192 -51
  13. package/agent/channels/slack-origin-codec.ts +9 -0
  14. package/agent/channels/slack-post-arm.ts +68 -11
  15. package/agent/channels/slack-read.ts +27 -2
  16. package/agent/channels/slack-reply-blocks.ts +180 -0
  17. package/agent/channels/slack-reply-feedback.ts +75 -0
  18. package/agent/channels/slack-shortcut.ts +1 -1
  19. package/agent/channels/slack-voice-clips.ts +82 -0
  20. package/agent/channels/slack-wake-backscroll.ts +0 -5
  21. package/agent/channels/slack.ts +74 -13
  22. package/agent/docs-generated.ts +1299 -2
  23. package/agent/ops.ts +14 -21
  24. package/agent/register.ts +13 -0
  25. package/agent/setup/credentials.ts +17 -0
  26. package/agent/setup/page.ts +6 -3
  27. package/agent/surface-parity.ts +2 -0
  28. package/dist/agent/access/slack-attachment-fetch.d.ts.map +1 -1
  29. package/dist/agent/access/slack-attachment-fetch.js.map +1 -1
  30. package/dist/agent/app-manifest.d.ts.map +1 -1
  31. package/dist/agent/app-manifest.js +18 -2
  32. package/dist/agent/app-manifest.js.map +1 -1
  33. package/dist/agent/channels/slack-agent-session.d.ts +85 -0
  34. package/dist/agent/channels/slack-agent-session.d.ts.map +1 -0
  35. package/dist/agent/channels/slack-agent-session.js +282 -0
  36. package/dist/agent/channels/slack-agent-session.js.map +1 -0
  37. package/dist/agent/channels/slack-attachments.d.ts +11 -0
  38. package/dist/agent/channels/slack-attachments.d.ts.map +1 -1
  39. package/dist/agent/channels/slack-attachments.js +21 -14
  40. package/dist/agent/channels/slack-attachments.js.map +1 -1
  41. package/dist/agent/channels/slack-commands.d.ts +113 -10
  42. package/dist/agent/channels/slack-commands.d.ts.map +1 -1
  43. package/dist/agent/channels/slack-commands.js +146 -13
  44. package/dist/agent/channels/slack-commands.js.map +1 -1
  45. package/dist/agent/channels/slack-context.d.ts +1 -2
  46. package/dist/agent/channels/slack-context.d.ts.map +1 -1
  47. package/dist/agent/channels/slack-context.js +0 -4
  48. package/dist/agent/channels/slack-context.js.map +1 -1
  49. package/dist/agent/channels/slack-events.d.ts +53 -100
  50. package/dist/agent/channels/slack-events.d.ts.map +1 -1
  51. package/dist/agent/channels/slack-events.js +142 -26
  52. package/dist/agent/channels/slack-events.js.map +1 -1
  53. package/dist/agent/channels/slack-follow-ups.d.ts +44 -0
  54. package/dist/agent/channels/slack-follow-ups.d.ts.map +1 -0
  55. package/dist/agent/channels/slack-follow-ups.js +129 -0
  56. package/dist/agent/channels/slack-follow-ups.js.map +1 -0
  57. package/dist/agent/channels/slack-front.d.ts +28 -45
  58. package/dist/agent/channels/slack-front.d.ts.map +1 -1
  59. package/dist/agent/channels/slack-front.js +207 -22
  60. package/dist/agent/channels/slack-front.js.map +1 -1
  61. package/dist/agent/channels/slack-home.d.ts.map +1 -1
  62. package/dist/agent/channels/slack-home.js +10 -3
  63. package/dist/agent/channels/slack-home.js.map +1 -1
  64. package/dist/agent/channels/slack-identity.d.ts +33 -21
  65. package/dist/agent/channels/slack-identity.d.ts.map +1 -1
  66. package/dist/agent/channels/slack-identity.js +36 -2
  67. package/dist/agent/channels/slack-identity.js.map +1 -1
  68. package/dist/agent/channels/slack-memory-canvas.d.ts +21 -5
  69. package/dist/agent/channels/slack-memory-canvas.d.ts.map +1 -1
  70. package/dist/agent/channels/slack-memory-canvas.js +162 -52
  71. package/dist/agent/channels/slack-memory-canvas.js.map +1 -1
  72. package/dist/agent/channels/slack-origin-codec.d.ts.map +1 -1
  73. package/dist/agent/channels/slack-origin-codec.js +10 -0
  74. package/dist/agent/channels/slack-origin-codec.js.map +1 -1
  75. package/dist/agent/channels/slack-post-arm.d.ts +21 -1
  76. package/dist/agent/channels/slack-post-arm.d.ts.map +1 -1
  77. package/dist/agent/channels/slack-post-arm.js +57 -10
  78. package/dist/agent/channels/slack-post-arm.js.map +1 -1
  79. package/dist/agent/channels/slack-read.d.ts +11 -1
  80. package/dist/agent/channels/slack-read.d.ts.map +1 -1
  81. package/dist/agent/channels/slack-read.js +27 -3
  82. package/dist/agent/channels/slack-read.js.map +1 -1
  83. package/dist/agent/channels/slack-reply-blocks.d.ts +29 -0
  84. package/dist/agent/channels/slack-reply-blocks.d.ts.map +1 -0
  85. package/dist/agent/channels/slack-reply-blocks.js +172 -0
  86. package/dist/agent/channels/slack-reply-blocks.js.map +1 -0
  87. package/dist/agent/channels/slack-reply-feedback.d.ts +23 -0
  88. package/dist/agent/channels/slack-reply-feedback.d.ts.map +1 -0
  89. package/dist/agent/channels/slack-reply-feedback.js +63 -0
  90. package/dist/agent/channels/slack-reply-feedback.js.map +1 -0
  91. package/dist/agent/channels/slack-shortcut.d.ts +10 -0
  92. package/dist/agent/channels/slack-shortcut.d.ts.map +1 -1
  93. package/dist/agent/channels/slack-shortcut.js +1 -1
  94. package/dist/agent/channels/slack-shortcut.js.map +1 -1
  95. package/dist/agent/channels/slack-voice-clips.d.ts +16 -0
  96. package/dist/agent/channels/slack-voice-clips.d.ts.map +1 -0
  97. package/dist/agent/channels/slack-voice-clips.js +80 -0
  98. package/dist/agent/channels/slack-voice-clips.js.map +1 -0
  99. package/dist/agent/channels/slack-wake-backscroll.d.ts +0 -2
  100. package/dist/agent/channels/slack-wake-backscroll.d.ts.map +1 -1
  101. package/dist/agent/channels/slack-wake-backscroll.js +0 -4
  102. package/dist/agent/channels/slack-wake-backscroll.js.map +1 -1
  103. package/dist/agent/channels/slack.d.ts +22 -1
  104. package/dist/agent/channels/slack.d.ts.map +1 -1
  105. package/dist/agent/channels/slack.js +63 -13
  106. package/dist/agent/channels/slack.js.map +1 -1
  107. package/dist/agent/docs-generated.d.ts.map +1 -1
  108. package/dist/agent/docs-generated.js +1299 -2
  109. package/dist/agent/docs-generated.js.map +1 -1
  110. package/dist/agent/ops.d.ts +1 -1
  111. package/dist/agent/ops.d.ts.map +1 -1
  112. package/dist/agent/ops.js +15 -21
  113. package/dist/agent/ops.js.map +1 -1
  114. package/dist/agent/register.d.ts.map +1 -1
  115. package/dist/agent/register.js +12 -1
  116. package/dist/agent/register.js.map +1 -1
  117. package/dist/agent/setup/credentials.d.ts +12 -0
  118. package/dist/agent/setup/credentials.d.ts.map +1 -1
  119. package/dist/agent/setup/credentials.js +17 -0
  120. package/dist/agent/setup/credentials.js.map +1 -1
  121. package/dist/agent/setup/page.d.ts.map +1 -1
  122. package/dist/agent/setup/page.js +6 -3
  123. package/dist/agent/setup/page.js.map +1 -1
  124. package/dist/agent/surface-parity.d.ts.map +1 -1
  125. package/dist/agent/surface-parity.js +2 -0
  126. package/dist/agent/surface-parity.js.map +1 -1
  127. package/package.json +31 -3
@@ -28,6 +28,8 @@ export function buildSlackAuth(input) {
28
28
  attributes.trust_checked = String(input.trustChecked);
29
29
  if (input.dmPartnerTrust)
30
30
  attributes.dm_partner_trust = input.dmPartnerTrust;
31
+ if (input.agentSessionTs)
32
+ attributes.agent_session_ts = input.agentSessionTs;
31
33
  // Root-DM grain stamp (window-tool-gating §D-DM, widened to group DMs): a 1:1 DM OR an mpim (group
32
34
  // DM) is a STANDING seat ⇒ narrowed hands — both are closed multi-party conversations with no
33
35
  // channel identity. A DM is unambiguously channelType "im" (the DM path always sets it); the
@@ -95,7 +97,7 @@ function enterpriseIdOfUser(u) {
95
97
  * PURE and SYNCHRONOUS — the register read is (identity/trust.ts's own contract), so this adds no
96
98
  * I/O to a leg that already pays for one `users.info`.
97
99
  */
98
- export function slackWorkspaceVouched(teamId, enterpriseId) {
100
+ function slackWorkspaceVouched(teamId, enterpriseId) {
99
101
  const team = surfaceKeySegment(teamId);
100
102
  if (team.length === 0)
101
103
  return false; // no workspace named ⇒ nothing to ask about ⇒ not vouched
@@ -155,7 +157,7 @@ export function partnerFactsFromInfo(info, expectedTeamId) {
155
157
  const u = info?.user;
156
158
  if (!u || typeof u !== "object")
157
159
  return { dmPartnerTrust: "external" }; // lookup failed → fail closed
158
- const guestOrStranger = Boolean(u["is_restricted"] || u["is_ultra_restricted"] || u["is_stranger"]);
160
+ const guestOrStranger = slackUserGuestFlagged(u);
159
161
  const deleted = Boolean(u["deleted"]);
160
162
  const homeTeamId = typeof u["team_id"] === "string" ? u["team_id"] : undefined;
161
163
  // 🔴 NO EXPECTED WORKSPACE IS NOT AN OWN-WORKSPACE ANSWER. This used to read the absence as
@@ -177,6 +179,38 @@ export function partnerFactsFromInfo(info, expectedTeamId) {
177
179
  const internal = !guestOrStranger && !deleted && admittedWorkspace;
178
180
  return { dmPartnerTrust: internal ? "internal" : "external" };
179
181
  }
182
+ /** Slack's own guest flags on a `users.info` user object: a multi-channel guest (`is_restricted`), a
183
+ * single-channel guest (`is_ultra_restricted`) or a Slack Connect stranger (`is_stranger`). The ONE
184
+ * reader of these three flags, so {@link partnerFactsFromInfo} and the 1:1 DM roster
185
+ * ({@link imRosterFactsFromInfo}) cannot disagree on what Slack calls a guest. It reads no workspace
186
+ * and no declaration: it is what Slack OBSERVED about the person, nothing inferred. */
187
+ export function slackUserGuestFlagged(u) {
188
+ return Boolean(u["is_restricted"] || u["is_ultra_restricted"] || u["is_stranger"]);
189
+ }
190
+ /**
191
+ * The room facts of a 1:1 DM (`is_im`) from a `conversations.info` response, or `undefined` for any
192
+ * other conversation (OPE-2630). The DM roster reads these instead of
193
+ * {@link ChannelFacts.isExternal}.
194
+ *
195
+ * 🔴 WHY A DM DOES NOT READ `isExternal`. `isExternal` is true on ANY of the four share bits.
196
+ * `is_org_shared` marks a share across the workspaces of ONE Enterprise Grid organisation. `is_shared`
197
+ * marks ANY share, a Slack Connect one included, so it alone does not tell a Grid share from a Connect
198
+ * one. A Connect DM also carries `is_ext_shared` (or `is_pending_ext_shared`), and this function reads
199
+ * those two bits. A 1:1 DM has exactly two parties, the app and one person, so `is_org_shared` or `is_shared` on it
200
+ * says nothing about an outside audience. Read as "external", they floored a full member's own DM to
201
+ * `guest`, and the card-disclosure floor refused every approval card there (OPE-2630, a Grid install).
202
+ * So a DM's audience is judged by the two facts that do name an outside party: the Slack Connect bits
203
+ * (`is_ext_shared`, `is_pending_ext_shared`) here, and the partner's own guest flags
204
+ * ({@link slackUserGuestFlagged}), which the roster reads with `users.info`.
205
+ */
206
+ export function imRosterFactsFromInfo(info) {
207
+ const ch = info?.channel;
208
+ if (!ch || typeof ch !== "object" || ch["is_im"] !== true)
209
+ return undefined;
210
+ const partnerId = typeof ch["user"] === "string" && ch["user"].length > 0 ? ch["user"] : undefined;
211
+ const connectShared = Boolean(ch["is_ext_shared"] || ch["is_pending_ext_shared"]);
212
+ return { ...(partnerId === undefined ? {} : { partnerId }), connectShared };
213
+ }
180
214
  /** What an app_mention envelope tells us directly (often just channel_type). */
181
215
  export function channelFactsFromRaw(raw) {
182
216
  const channelType = typeof raw["channel_type"] === "string" ? raw["channel_type"] : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"slack-identity.js","sourceRoot":"","sources":["../../../agent/channels/slack-identity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slack-identity.js","sourceRoot":"","sources":["../../../agent/channels/slack-identity.ts"],"names":[],"mappings":"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"}
@@ -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 APP'S OWN CANVAS DOWN (OPE-2451,
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 its own canvas with {@link withdrawnCanvasMarkdown} ({@link withdrawIfOurs}). A canvas a
31
- * PERSON made is never touched, in either direction.
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(channelId: string, markdown: string | null, botUserId: string | undefined, deps: MemoryCanvasDeps, teamId?: string, joinedUserId?: string): Promise<CanvasOutcome>;
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":"AAmCA,OAAO,EAUL,KAAK,gBAAgB,EACtB,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;CAC3B;AAED;8DAC8D;AAC9D,wBAAgB,oBAAoB,IAAI,gBAAgB,CAMvD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEzD;AAoHD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,IAAI,EAAE,gBAAgB,EACtB,MAAM,CAAC,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,CAAC,CAsBxB;AAED,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,CAsBxB;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqC1G;AAMD,mGAAmG;AACnG,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB/F"}
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
- // 🔴 A CANVAS THE APP DID NOT CREATE IS NEVER TOUCHED. A channel has at most one channel canvas, and
28
- // people write their own. When the channel already has one, the app rewrites it only when
29
- // `files.info` names the app's own bot user as its creator. A person's canvas stays theirs, and the
30
- // refusal is logged and audited so an operator can see why a channel shows no memory.
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
- import { agentDisplayName, appendAudit, domainForChannel, domainsNamingSilo, getConfig, readDomainMemory, memoryLineForReader, renderMemoryMarkdown, } from "@open-everywhere/core/agent/adapter-api.js";
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() {
@@ -68,7 +124,7 @@ 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
126
  const footer = `\n---\n${name} keeps this canvas up to date. To correct or forget a line, ask ${name} in this channel. ` +
71
- `Edits made directly to this canvas get replaced.\n`;
127
+ `${MEMORY_CANVAS_MARKER}\n`;
72
128
  // OPE-2486 — the memory provenance carriers read as plain words on a canvas a whole channel reads.
73
129
  const text = defuseCanvasText(memoryLineForReader(body));
74
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;
@@ -145,55 +201,85 @@ function withdrawnCanvasMarkdown() {
145
201
  const name = agentDisplayName();
146
202
  return (`# ${name}'s memory canvas was withdrawn\n\n` +
147
203
  `This channel includes guests or people from outside your organisation, so ${name} no longer shows its memory here. ` +
148
- `The memory itself is unchanged. Members can still ask ${name} about it in an internal channel.\n`);
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);
149
226
  }
150
227
  /**
151
- * Take the app's OWN canvas down in one channel, if it has one. FAIL-CLOSED ON EVERY LOOKUP: a failed
152
- * `conversations.info`, a failed `files.info`, or an unknown bot identity answers `clear-failed`, never
153
- * a skip — the caller cannot rule out that the app's canvas is still on screen, and the audit row must
154
- * say so. `skipped-*` is kept for the two answers that PROVE nothing of ours is there: no channel
155
- * canvas at all, or a canvas whose creator is somebody else.
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).
156
235
  */
157
- async function withdrawIfOurs(channelId, reason, botUserId, deps) {
158
- 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 });
159
238
  if (info?.ok !== true)
160
239
  return "clear-failed";
161
- const existing = canvasIdOf(info);
162
- if (!existing)
163
- return `skipped-${reason}`;
164
- const file = await deps.call("files.info", { file: existing });
165
- if (file?.ok !== true)
166
- return "clear-failed";
167
- const creator = file.file?.user;
168
- if (botUserId === undefined)
240
+ const match = await findMemoryCanvas(room, info, botUserId, deps);
241
+ if (match.kind === "unsure")
169
242
  return "clear-failed";
170
- if (creator !== botUserId)
243
+ if (match.kind === "none")
171
244
  return `skipped-${reason}`;
172
245
  const cleared = await deps.call("canvases.edit", {
173
- canvas_id: existing,
246
+ canvas_id: match.canvasId,
174
247
  changes: [{ operation: "replace", document_content: { type: "markdown", markdown: withdrawnCanvasMarkdown() } }],
175
248
  });
176
- return cleared?.ok === true ? `cleared-${reason}` : "clear-failed";
177
- }
178
- function canvasIdOf(info) {
179
- const props = info.channel?.properties;
180
- return typeof props?.canvas?.file_id === "string" ? props.canvas.file_id : undefined;
249
+ if (cleared?.ok !== true)
250
+ return "clear-failed";
251
+ if (match.adopt)
252
+ await recordMemoryCanvas(room, match.canvasId, deps);
253
+ return `cleared-${reason}`;
181
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"]);
182
259
  /**
183
260
  * Write one channel's canvas — or, with `markdown: null`, only RECHECK it. Never throws.
184
261
  *
185
- * 🔴 THE GATE RUNS BEFORE EVERY DECISION, AND A FAILED GATE TAKES THE APP'S OWN CANVAS DOWN (OPE-2451,
262
+ * 🔴 THE GATE RUNS BEFORE EVERY DECISION, AND A FAILED GATE TAKES THE MEMORY CANVAS DOWN (OPE-2451,
186
263
  * the brain's security review). A canvas the app wrote while the channel passed outlives the room's
187
264
  * trust otherwise: once the channel is shared, or a guest joins, a refresh that merely SKIPS leaves
188
265
  * every line of the domain's memory on screen for the new audience. So on either refusal the app
189
- * replaces its own canvas with {@link withdrawnCanvasMarkdown} ({@link withdrawIfOurs}). A canvas a
190
- * PERSON made is never touched, in either direction.
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.
191
276
  *
192
277
  * `null` markdown is the recheck the trust EVENTS run: it takes the canvas down on a failed gate and
193
278
  * writes nothing on a passing one (`unchanged`). `joinedUserId` is the person a join event named: they
194
279
  * are probed DIRECTLY, because Slack's member list may not carry them yet when the event arrives.
195
280
  */
196
- export async function publishChannelCanvas(channelId, markdown, botUserId, deps, teamId, joinedUserId) {
281
+ export async function publishChannelCanvas(room, markdown, botUserId, deps, joinedUserId) {
282
+ const { channelId, teamId } = room;
197
283
  const blocked = !(await deps.channelInternal(channelId))
198
284
  ? "external"
199
285
  : (joinedUserId !== undefined && joinedUserId !== botUserId && (await deps.authorIsMember(joinedUserId, teamId)) !== true) ||
@@ -201,24 +287,33 @@ export async function publishChannelCanvas(channelId, markdown, botUserId, deps,
201
287
  ? "guest"
202
288
  : undefined;
203
289
  if (blocked)
204
- return withdrawIfOurs(channelId, blocked, botUserId, deps);
290
+ return withdrawIfOurs(room, blocked, botUserId, deps);
205
291
  if (markdown === null)
206
292
  return "unchanged";
207
293
  const info = await deps.call("conversations.info", { channel: channelId });
208
294
  if (info?.ok !== true)
209
295
  return "failed";
210
- const existing = canvasIdOf(info);
211
- if (!existing) {
296
+ const match = await findMemoryCanvas(room, info, botUserId, deps);
297
+ if (match.kind === "unsure")
298
+ return "failed";
299
+ if (match.kind === "none") {
212
300
  const created = await deps.call("conversations.canvases.create", { channel_id: channelId, document_content: { type: "markdown", markdown } });
213
- return created?.ok === true ? "created" : "failed";
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";
214
306
  }
215
- // Ownership before any write: only a canvas the app's own bot user created is the app's to replace.
216
- const file = await deps.call("files.info", { file: existing });
217
- const creator = file?.ok === true ? file.file?.user : undefined;
218
- if (botUserId === undefined || creator !== botUserId)
219
- return "skipped-foreign";
220
- const edited = await deps.call("canvases.edit", { canvas_id: existing, changes: [{ operation: "replace", document_content: { type: "markdown", markdown } }] });
221
- return edited?.ok === true ? "updated" : "failed";
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}` : ""})` : "";
222
317
  }
223
318
  /**
224
319
  * Recheck ONE channel's canvas after a trust event (a person joined it, or it was shared). The front
@@ -232,15 +327,23 @@ export async function publishChannelCanvas(channelId, markdown, botUserId, deps,
232
327
  */
233
328
  export async function recheckChannelCanvas(input, deps) {
234
329
  const surfaceKey = `slack/${input.teamId}/${input.channelId}`;
330
+ const room = { org: input.org, teamId: input.teamId, channelId: input.channelId };
235
331
  const domain = domainForChannel(surfaceKey, getConfig().loadDomains());
236
332
  const shows = domain !== undefined && domain.memory !== undefined && domain.memoryCanvas !== false;
237
- const auth = await deps.call("auth.test", {});
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", {});
238
336
  const botUserId = auth?.ok === true && typeof auth.user_id === "string" ? auth.user_id : undefined;
337
+ let threw = false;
239
338
  const outcome = await (shows
240
- ? publishChannelCanvas(input.channelId, null, botUserId, deps, input.teamId, input.joinedUserId)
241
- : withdrawIfOurs(input.channelId, "disabled", botUserId, deps)).catch(() => "clear-failed");
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());
242
345
  if (outcome !== "unchanged" && outcome !== "skipped-disabled") {
243
- 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)}`);
244
347
  }
245
348
  await appendAudit({
246
349
  org: input.org,
@@ -248,7 +351,7 @@ export async function recheckChannelCanvas(input, deps) {
248
351
  workspace: input.teamId,
249
352
  surface: input.channelId,
250
353
  action: MEMORY_CANVAS_ACTION,
251
- detail: { domain: domain?.name ?? null, trigger: input.trigger, outcome },
354
+ detail: { domain: domain?.name ?? null, trigger: input.trigger, outcome, ...slackErrorDetail(refusal) },
252
355
  }).catch(() => undefined);
253
356
  return outcome;
254
357
  }
@@ -281,9 +384,16 @@ export async function refreshMemoryCanvases(event, deps) {
281
384
  const markdown = shows ? memoryCanvasMarkdown(domain, await readDomainMemory(event.org, domain), nowIso) : "";
282
385
  for (const room of rooms) {
283
386
  // A throw on the clear-only path cannot rule out that the old canvas is still up, so it says so.
284
- const outcome = await (shows ? publishChannelCanvas(room.channelId, markdown, botUserId, deps, teamId) : withdrawIfOurs(room.channelId, "disabled", botUserId, deps)).catch(() => (shows ? "failed" : "clear-failed"));
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());
285
395
  if (outcome !== "created" && outcome !== "updated") {
286
- 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)}`);
287
397
  }
288
398
  const [platform, workspace, surface] = room.surfaceKey.split("/");
289
399
  await appendAudit({
@@ -292,7 +402,7 @@ export async function refreshMemoryCanvases(event, deps) {
292
402
  workspace: workspace,
293
403
  surface: surface,
294
404
  action: MEMORY_CANVAS_ACTION,
295
- 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) },
296
406
  }).catch(() => undefined);
297
407
  }
298
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,CAgD7D,CAAC"}
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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"}