@memberjunction/messaging-adapters 6.1.0-edge.4 → 6.1.0-edge.6

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 (34) hide show
  1. package/README.md +2 -1
  2. package/dist/base/BaseMessagingAdapter.d.ts +82 -1
  3. package/dist/base/BaseMessagingAdapter.d.ts.map +1 -1
  4. package/dist/base/BaseMessagingAdapter.js +222 -14
  5. package/dist/base/BaseMessagingAdapter.js.map +1 -1
  6. package/dist/base/message-formatter.d.ts +31 -1
  7. package/dist/base/message-formatter.d.ts.map +1 -1
  8. package/dist/base/message-formatter.js +66 -1
  9. package/dist/base/message-formatter.js.map +1 -1
  10. package/dist/base/types.d.ts +14 -0
  11. package/dist/base/types.d.ts.map +1 -1
  12. package/dist/index.d.ts +2 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +1 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/slack/SlackAdapter.d.ts +60 -4
  17. package/dist/slack/SlackAdapter.d.ts.map +1 -1
  18. package/dist/slack/SlackAdapter.js +141 -8
  19. package/dist/slack/SlackAdapter.js.map +1 -1
  20. package/dist/slack/SlackMessagingExtension.d.ts.map +1 -1
  21. package/dist/slack/SlackMessagingExtension.js +35 -0
  22. package/dist/slack/SlackMessagingExtension.js.map +1 -1
  23. package/dist/slack/slack-block-builder.d.ts.map +1 -1
  24. package/dist/slack/slack-block-builder.js +129 -38
  25. package/dist/slack/slack-block-builder.js.map +1 -1
  26. package/dist/teams/TeamsAdapter.d.ts +7 -0
  27. package/dist/teams/TeamsAdapter.d.ts.map +1 -1
  28. package/dist/teams/TeamsAdapter.js +33 -0
  29. package/dist/teams/TeamsAdapter.js.map +1 -1
  30. package/dist/teams/teams-card-builder.d.ts +9 -1
  31. package/dist/teams/teams-card-builder.d.ts.map +1 -1
  32. package/dist/teams/teams-card-builder.js +41 -28
  33. package/dist/teams/teams-card-builder.js.map +1 -1
  34. package/package.json +11 -11
@@ -1 +1 @@
1
- {"version":3,"file":"message-formatter.d.ts","sourceRoot":"","sources":["../../src/base/message-formatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,EAAE,CAiD7E;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKzD;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAMpE;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAiC7E"}
1
+ {"version":3,"file":"message-formatter.d.ts","sourceRoot":"","sources":["../../src/base/message-formatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,EAAE,CAiD7E;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKzD;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAMpE;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAiC7E;AAiDD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAQnD;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,mBAAmB,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAwBvG"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @module @memberjunction/messaging-adapters
3
- * @description Shared Markdown parsing utilities used by all platform-specific formatters.
3
+ * @description Shared formatting utilities used by all platform-specific formatters.
4
4
  */
5
5
  /**
6
6
  * Split Markdown text into typed sections for platform-specific formatting.
@@ -198,4 +198,69 @@ function forceChunkByLength(text, maxLength) {
198
198
  }
199
199
  return chunks;
200
200
  }
201
+ /**
202
+ * Can this URI be opened from a chat client at all?
203
+ *
204
+ * An ALLOW-list of `http:`/`https:`, deliberately, because the answer has to hold for a hostile
205
+ * URL as well as a broken one. Two separate problems:
206
+ *
207
+ * - `data:` (and `blob:`/`file:`) URIs are inert: Slack rejects the whole message and Adaptive
208
+ * Cards silently do nothing, so a button over one is indistinguishable from a broken bot. Agents
209
+ * do emit them — MJ's document actions inline a whole generated file as `data:<mime>;base64,...`
210
+ * whenever no file storage account is configured, which is the normal local-dev state.
211
+ * - `javascript:`, `vbscript:` and OS handler schemes such as `ms-msdt:` are *worse* than inert.
212
+ * Teams desktop hands an unknown scheme to the operating system's URI handler, so a deny-list
213
+ * naming only the inert schemes would turn an agent-authored URL into a local code-execution
214
+ * surface. An allow-list cannot be outflanked by a scheme nobody thought to enumerate.
215
+ *
216
+ * Localhost stays allowed: dev "View in MJ Explorer" links depend on it, and Teams opens it.
217
+ * Whether a platform will additionally refuse an openable URL — Slack rejects non-public http(s)
218
+ * — is a separate screen; see `isButtonSafeURL` in the Slack builder.
219
+ */
220
+ export function isOpenableURI(url) {
221
+ if (typeof url !== 'string')
222
+ return false;
223
+ try {
224
+ const { protocol } = new URL(url.trim());
225
+ return protocol === 'http:' || protocol === 'https:';
226
+ }
227
+ catch {
228
+ return false;
229
+ }
230
+ }
231
+ /**
232
+ * Build an MJ Explorer deep link for an `open:resource` command.
233
+ *
234
+ * Returns `null` when there is nothing safe to link to — no configured Explorer base URL, or a
235
+ * resource kind whose identifier is absent. `resourceId` is optional on the shared `UICommand`
236
+ * type (a Record can be addressed by `keys` instead), so every branch checks it rather than
237
+ * emitting a `/resource/dashboard/undefined` URL that 404s on click.
238
+ */
239
+ export function buildExplorerDeepLink(cmd, explorerBaseURL) {
240
+ if (!explorerBaseURL)
241
+ return null;
242
+ const base = explorerBaseURL.replace(/\/+$/, '');
243
+ switch (cmd.resourceType) {
244
+ case 'Record':
245
+ if (cmd.entityName && cmd.resourceId) {
246
+ const entity = encodeURIComponent(cmd.entityName);
247
+ const id = encodeURIComponent(cmd.resourceId);
248
+ return `${base}/resource/record/${entity}/${id}`;
249
+ }
250
+ break;
251
+ case 'Dashboard':
252
+ if (!cmd.resourceId)
253
+ break;
254
+ return `${base}/resource/dashboard/${encodeURIComponent(cmd.resourceId)}`;
255
+ case 'Report':
256
+ if (!cmd.resourceId)
257
+ break;
258
+ return `${base}/resource/report/${encodeURIComponent(cmd.resourceId)}`;
259
+ case 'View':
260
+ if (!cmd.resourceId)
261
+ break;
262
+ return `${base}/resource/view/${encodeURIComponent(cmd.resourceId)}`;
263
+ }
264
+ return null;
265
+ }
201
266
  //# sourceMappingURL=message-formatter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"message-formatter.js","sourceRoot":"","sources":["../../src/base/message-formatter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message-formatter.js","sourceRoot":"","sources":["../../src/base/message-formatter.ts"],"names":[],"mappings":"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"}
@@ -78,6 +78,20 @@ export interface MessagingAdapterSettings {
78
78
  * Without this, `open:resource` commands render as informational context blocks.
79
79
  */
80
80
  ExplorerBaseURL?: string;
81
+ /**
82
+ * Disable automatic agent-to-agent delegation for this extension instance.
83
+ *
84
+ * Delegation is detected three ways (see `detectDelegation`), the third of which SCANS THE
85
+ * REPLY TEXT for delegation phrases plus any known agent name. That makes an orchestrator
86
+ * agent's own self-description ("I can route you to ... Betty") trigger a real handoff, so
87
+ * the user gets a different agent's answer under this bot's identity — with no attribution.
88
+ *
89
+ * Set this on a bot that is pinned to one agent (the one-app-per-agent deployment, where each
90
+ * platform app has its own `DefaultAgentName`): the pinned agent's reply is always what posts.
91
+ *
92
+ * @default false
93
+ */
94
+ DisableDelegation?: boolean;
81
95
  /**
82
96
  * Slash command to agent name mapping for Slack.
83
97
  * Keys are command names (e.g., `/research`), values are MJ Agent names.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/base/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/base/types.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -40,6 +40,7 @@
40
40
  * @see {@link TeamsMessagingExtension} for Teams integration
41
41
  */
42
42
  export { BaseMessagingAdapter } from './base/BaseMessagingAdapter.js';
43
+ export type { UploadableFile } from './base/BaseMessagingAdapter.js';
43
44
  export { MessagingAdapterSettings, IncomingMessage, FormattedResponse, AgentIdentity, ThreadHistoryResult, MarkdownSection, RequestWithRawBody, } from './base/types.js';
44
45
  export { splitMarkdownIntoSections, convertToSlackMrkdwn, convertBoldToSlackFormat, convertLinksToSlackFormat, truncateText, splitTextIntoChunks, } from './base/message-formatter.js';
45
46
  export { SlackMessagingExtension } from './slack/SlackMessagingExtension.js';
@@ -52,7 +53,7 @@ export type { BuildRichResponseOptions } from './slack/slack-block-builder.js';
52
53
  export { TeamsMessagingExtension } from './teams/TeamsMessagingExtension.js';
53
54
  export { TeamsAdapter } from './teams/TeamsAdapter.js';
54
55
  export { markdownToAdaptiveCard } from './teams/teams-formatter.js';
55
- export { buildRichAdaptiveCard, buildAgentHeader as buildTeamsAgentHeader, buildTextBody as buildTeamsTextBody, buildArtifactCard as buildTeamsArtifactCard, buildActionButtons as buildTeamsActionButtons, buildExplorerLink as buildTeamsExplorerLink, buildMetadataFooter as buildTeamsMetadataFooter, buildErrorCard as buildTeamsErrorCard, buildResponseFormElements as buildTeamsResponseFormElements, } from './teams/teams-card-builder.js';
56
+ export { buildRichAdaptiveCard, buildAgentHeader as buildTeamsAgentHeader, buildTextBody as buildTeamsTextBody, buildArtifactCard as buildTeamsArtifactCard, buildActionButtons as buildTeamsActionButtons, buildExplorerLink as buildTeamsExplorerLink, buildMetadataFooter as buildTeamsMetadataFooter, buildErrorCard as buildTeamsErrorCard, buildResponseFormElements as buildTeamsResponseFormElements, buildUnopenableResourceNotes as buildTeamsUnopenableResourceNotes, } from './teams/teams-card-builder.js';
56
57
  export type { BuildRichCardOptions } from './teams/teams-card-builder.js';
57
58
  /**
58
59
  * Tree-shaking prevention function.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EACH,wBAAwB,EACxB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,kBAAkB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACH,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,YAAY,EACZ,mBAAmB,GACtB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAC5F,OAAO,EACH,iBAAiB,EACjB,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,mBAAmB,GACtB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAG/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EACH,qBAAqB,EACrB,gBAAgB,IAAI,qBAAqB,EACzC,aAAa,IAAI,kBAAkB,EACnC,iBAAiB,IAAI,sBAAsB,EAC3C,kBAAkB,IAAI,uBAAuB,EAC7C,iBAAiB,IAAI,sBAAsB,EAC3C,mBAAmB,IAAI,wBAAwB,EAC/C,cAAc,IAAI,mBAAmB,EACrC,yBAAyB,IAAI,8BAA8B,GAC9D,MAAM,+BAA+B,CAAC;AACvC,YAAY,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAE1E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAI5C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,YAAY,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EACH,wBAAwB,EACxB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,kBAAkB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACH,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,YAAY,EACZ,mBAAmB,GACtB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAC5F,OAAO,EACH,iBAAiB,EACjB,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,mBAAmB,GACtB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAG/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EACH,qBAAqB,EACrB,gBAAgB,IAAI,qBAAqB,EACzC,aAAa,IAAI,kBAAkB,EACnC,iBAAiB,IAAI,sBAAsB,EAC3C,kBAAkB,IAAI,uBAAuB,EAC7C,iBAAiB,IAAI,sBAAsB,EAC3C,mBAAmB,IAAI,wBAAwB,EAC/C,cAAc,IAAI,mBAAmB,EACrC,yBAAyB,IAAI,8BAA8B,EAC3D,4BAA4B,IAAI,iCAAiC,GACpE,MAAM,+BAA+B,CAAC;AACvC,YAAY,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAE1E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAI5C"}
package/dist/index.js CHANGED
@@ -53,7 +53,7 @@ export { buildRichResponse, buildAgentContextBlock, buildTextBlocks, buildArtifa
53
53
  export { TeamsMessagingExtension } from './teams/TeamsMessagingExtension.js';
54
54
  export { TeamsAdapter } from './teams/TeamsAdapter.js';
55
55
  export { markdownToAdaptiveCard } from './teams/teams-formatter.js';
56
- export { buildRichAdaptiveCard, buildAgentHeader as buildTeamsAgentHeader, buildTextBody as buildTeamsTextBody, buildArtifactCard as buildTeamsArtifactCard, buildActionButtons as buildTeamsActionButtons, buildExplorerLink as buildTeamsExplorerLink, buildMetadataFooter as buildTeamsMetadataFooter, buildErrorCard as buildTeamsErrorCard, buildResponseFormElements as buildTeamsResponseFormElements, } from './teams/teams-card-builder.js';
56
+ export { buildRichAdaptiveCard, buildAgentHeader as buildTeamsAgentHeader, buildTextBody as buildTeamsTextBody, buildArtifactCard as buildTeamsArtifactCard, buildActionButtons as buildTeamsActionButtons, buildExplorerLink as buildTeamsExplorerLink, buildMetadataFooter as buildTeamsMetadataFooter, buildErrorCard as buildTeamsErrorCard, buildResponseFormElements as buildTeamsResponseFormElements, buildUnopenableResourceNotes as buildTeamsUnopenableResourceNotes, } from './teams/teams-card-builder.js';
57
57
  /**
58
58
  * Tree-shaking prevention function.
59
59
  *
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,yBAAyB;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAUtE,OAAO,EACH,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,YAAY,EACZ,mBAAmB,GACtB,MAAM,6BAA6B,CAAC;AAErC,gBAAgB;AAChB,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAC5F,OAAO,EACH,iBAAiB,EACjB,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,mBAAmB,GACtB,MAAM,gCAAgC,CAAC;AAGxC,gBAAgB;AAChB,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EACH,qBAAqB,EACrB,gBAAgB,IAAI,qBAAqB,EACzC,aAAa,IAAI,kBAAkB,EACnC,iBAAiB,IAAI,sBAAsB,EAC3C,kBAAkB,IAAI,uBAAuB,EAC7C,iBAAiB,IAAI,sBAAsB,EAC3C,mBAAmB,IAAI,wBAAwB,EAC/C,cAAc,IAAI,mBAAmB,EACrC,yBAAyB,IAAI,8BAA8B,GAC9D,MAAM,+BAA+B,CAAC;AAGvC;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,qBAAqB;IACjC,gEAAgE;IAChE,qEAAqE;IACrE,gEAAgE;AACpE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,yBAAyB;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAWtE,OAAO,EACH,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,YAAY,EACZ,mBAAmB,GACtB,MAAM,6BAA6B,CAAC;AAErC,gBAAgB;AAChB,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAC5F,OAAO,EACH,iBAAiB,EACjB,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,mBAAmB,GACtB,MAAM,gCAAgC,CAAC;AAGxC,gBAAgB;AAChB,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EACH,qBAAqB,EACrB,gBAAgB,IAAI,qBAAqB,EACzC,aAAa,IAAI,kBAAkB,EACnC,iBAAiB,IAAI,sBAAsB,EAC3C,kBAAkB,IAAI,uBAAuB,EAC7C,iBAAiB,IAAI,sBAAsB,EAC3C,mBAAmB,IAAI,wBAAwB,EAC/C,cAAc,IAAI,mBAAmB,EACrC,yBAAyB,IAAI,8BAA8B,EAC3D,4BAA4B,IAAI,iCAAiC,GACpE,MAAM,+BAA+B,CAAC;AAGvC;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,qBAAqB;IACjC,gEAAgE;IAChE,qEAAqE;IACrE,gEAAgE;AACpE,CAAC"}
@@ -11,7 +11,7 @@
11
11
  * - Stripping bot @mentions from message text
12
12
  */
13
13
  import { ExecuteAgentResult, MJAIAgentEntityExtended } from '@memberjunction/ai-core-plus';
14
- import { BaseMessagingAdapter } from '../base/BaseMessagingAdapter.js';
14
+ import { BaseMessagingAdapter, type UploadableFile } from '../base/BaseMessagingAdapter.js';
15
15
  import { IncomingMessage, FormattedResponse, MessagingAdapterSettings, AgentResponseMetadata } from '../base/types.js';
16
16
  /**
17
17
  * Slack-specific adapter that implements all platform operations
@@ -39,15 +39,24 @@ export declare class SlackAdapter extends BaseMessagingAdapter {
39
39
  private client;
40
40
  /** The bot's own Slack user ID (e.g., `U0123456`). */
41
41
  private botUserID;
42
+ /** The `B…` id Slack reports for posts made with a username/icon override. */
43
+ private botID;
42
44
  /**
43
45
  * Message IDs of "Thinking..." indicators, keyed by `channelId:threadTs`.
44
46
  * Per-thread keying prevents concurrent messages from overwriting each other's indicator.
45
47
  */
46
48
  private thinkingMessageIds;
47
49
  /**
48
- * Slack's maximum message text length. Messages exceeding this cause `msg_too_long`.
49
- * The `text` field is the plain-text fallback when blocks are present; the rich
50
- * content is in Block Kit blocks (already limited to 50 blocks with "View Full" button).
50
+ * Maximum length of a message's `text` field.
51
+ *
52
+ * Slack rejects `chat.postMessage`/`chat.update` with `msg_too_long` past roughly 4,000
53
+ * characters — NOT the ~40,000 that applies to a message's total block payload. The higher
54
+ * figure meant this limit never engaged before Slack refused the call, so streaming updates
55
+ * failed continuously for any long output: the model streams its raw envelope (which can
56
+ * include base64 file data), every progress update was rejected, and the placeholder sat
57
+ * frozen mid-flight while the log filled with `msg_too_long`.
58
+ *
59
+ * 3,900 leaves room for the truncation notice appended below.
51
60
  */
52
61
  private static readonly MAX_TEXT_LENGTH;
53
62
  protected get PlatformName(): string;
@@ -67,6 +76,25 @@ export declare class SlackAdapter extends BaseMessagingAdapter {
67
76
  * This is needed to identify bot messages in thread history.
68
77
  */
69
78
  protected onInitialize(): Promise<void>;
79
+ /**
80
+ * Was this history message written by ANY bot, not just this one?
81
+ *
82
+ * Slack's Events API marks them three different ways depending on how the message was posted:
83
+ * a `bot_id`, a `bot_profile`, or the `bot_message` subtype. Kept here rather than on the base
84
+ * class because these are Slack payload fields; other platforms answer the question their own
85
+ * way.
86
+ */
87
+ protected isBotAuthored(message: IncomingMessage): boolean;
88
+ /**
89
+ * Either identifier counts as this bot.
90
+ *
91
+ * `chat:write.customize` is required for per-agent identity, and a post made with it comes
92
+ * back as `subtype: 'bot_message'` with a `bot_id` and no `user`. Comparing only against
93
+ * `user_id` therefore never matched this adapter's own replies — which silently made the
94
+ * multi-bot thread gate decline threads this bot was actively holding, and dropped the
95
+ * agent's own turns from its context.
96
+ */
97
+ protected isSelf(senderId: string | null | undefined): boolean;
70
98
  protected getBotUserId(): string;
71
99
  /**
72
100
  * Post a "Thinking..." message as the typing indicator.
@@ -83,6 +111,34 @@ export declare class SlackAdapter extends BaseMessagingAdapter {
83
111
  * Shows the agent's identity on new messages.
84
112
  */
85
113
  protected sendOrUpdateStreamingMessage(originalMessage: IncomingMessage, currentContent: string, existingMessageId: string | null, agent?: MJAIAgentEntityExtended): Promise<string>;
114
+ /**
115
+ * Extensions for MIME types whose subtype is not a usable file extension.
116
+ *
117
+ * `mimeType.split('/')[1]` yields "vnd.openxmlformats-officedocument.wordprocessingml.document"
118
+ * for a .docx, which Slack shows as an unopenable blob.
119
+ */
120
+ private static readonly EXTENSION_BY_MIME_TYPE;
121
+ /** A reply delivers files, it does not become a file dump. Mirrors the media-block limit. */
122
+ private static readonly MAX_UPLOADS_PER_REPLY;
123
+ /**
124
+ * Extensions recognised as already present on a filename.
125
+ *
126
+ * Derived from the map above so the two cannot drift, plus common types an agent may name
127
+ * directly without our having a MIME mapping for them.
128
+ */
129
+ private static readonly KNOWN_FILE_EXTENSIONS;
130
+ /**
131
+ * Upload an agent's binary output as real Slack files, threaded under the reply.
132
+ *
133
+ * Slack's `image` blocks can only reference a public https URL, so base64 media — every
134
+ * generated image, and any file inlined as a `data:` URI — could not be rendered and was
135
+ * silently dropped: the agent did the work, the artifact existed, and the user saw nothing.
136
+ * Uploading makes it an ordinary attachment the user can open or download.
137
+ *
138
+ * Requires the `files:write` bot scope; without it Slack answers `missing_scope`, which the
139
+ * caller logs (the text reply has already posted by then).
140
+ */
141
+ protected uploadMediaOutputs(originalMessage: IncomingMessage, files: readonly UploadableFile[]): Promise<void>;
86
142
  /**
87
143
  * Send the final formatted response. If a "Thinking..." message exists
88
144
  * (no streaming occurred), update it in-place instead of posting a new message.
@@ -1 +1 @@
1
- {"version":3,"file":"SlackAdapter.d.ts","sourceRoot":"","sources":["../../src/slack/SlackAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAE3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAIvH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,YAAa,SAAQ,oBAAoB;IAClD,4BAA4B;IAC5B,OAAO,CAAC,MAAM,CAAY;IAE1B,sDAAsD;IACtD,OAAO,CAAC,SAAS,CAAc;IAE/B;;;OAGG;IACH,OAAO,CAAC,kBAAkB,CAA6B;IAEvD;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAU;IAEjD,SAAS,KAAK,YAAY,IAAI,MAAM,CAAoB;gBAE5C,QAAQ,EAAE,wBAAwB;IAK9C;;;;;;;;OAQG;IACI,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe;IAiBrE;;;OAGG;cACa,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAK7C,SAAS,CAAC,YAAY,IAAI,MAAM;IAIhC;;;;OAIG;cACa,mBAAmB,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7G;;OAEG;cACa,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAqBnG;;;OAGG;cACa,4BAA4B,CACxC,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,MAAM,EACtB,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,KAAK,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,MAAM,CAAC;IA2BlB;;;OAGG;cACa,gBAAgB,CAAC,eAAe,EAAE,eAAe,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB9G;;OAEG;cACa,kBAAkB,CAC9B,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,iBAAiB,GAC5B,OAAO,CAAC,IAAI,CAAC;IAShB;;;;;;OAMG;cACa,cAAc,CAC1B,MAAM,EAAE,kBAAkB,GAAG,IAAI,EACjC,KAAK,EAAE,uBAAuB,EAC9B,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,qBAAqB,GACjC,OAAO,CAAC,iBAAiB,CAAC;IAiB7B;;;OAGG;IACH,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI/C;;;;;;;OAOG;cACa,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAY/E,oEAAoE;IACpE,OAAO,CAAC,SAAS;IAIjB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IAMhC;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAS3B,kDAAkD;IAClD,OAAO,CAAC,wBAAwB;IAIhC,0DAA0D;IAC1D,OAAO,CAAC,oCAAoC;CAG/C"}
1
+ {"version":3,"file":"SlackAdapter.d.ts","sourceRoot":"","sources":["../../src/slack/SlackAdapter.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@
11
11
  * - Stripping bot @mentions from message text
12
12
  */
13
13
  import { WebClient } from '@slack/web-api';
14
- import { LogStatus } from '@memberjunction/core';
14
+ import { LogError, LogStatus } from '@memberjunction/core';
15
15
  import { BaseMessagingAdapter } from '../base/BaseMessagingAdapter.js';
16
16
  import { buildRichResponse } from './slack-block-builder.js';
17
17
  /**
@@ -37,16 +37,25 @@ import { buildRichResponse } from './slack-block-builder.js';
37
37
  */
38
38
  export class SlackAdapter extends BaseMessagingAdapter {
39
39
  /**
40
- * Slack's maximum message text length. Messages exceeding this cause `msg_too_long`.
41
- * The `text` field is the plain-text fallback when blocks are present; the rich
42
- * content is in Block Kit blocks (already limited to 50 blocks with "View Full" button).
40
+ * Maximum length of a message's `text` field.
41
+ *
42
+ * Slack rejects `chat.postMessage`/`chat.update` with `msg_too_long` past roughly 4,000
43
+ * characters — NOT the ~40,000 that applies to a message's total block payload. The higher
44
+ * figure meant this limit never engaged before Slack refused the call, so streaming updates
45
+ * failed continuously for any long output: the model streams its raw envelope (which can
46
+ * include base64 file data), every progress update was rejected, and the placeholder sat
47
+ * frozen mid-flight while the log filled with `msg_too_long`.
48
+ *
49
+ * 3,900 leaves room for the truncation notice appended below.
43
50
  */
44
- static { this.MAX_TEXT_LENGTH = 39_000; }
51
+ static { this.MAX_TEXT_LENGTH = 3_900; }
45
52
  get PlatformName() { return 'Slack'; }
46
53
  constructor(settings) {
47
54
  super(settings);
48
55
  /** The bot's own Slack user ID (e.g., `U0123456`). */
49
56
  this.botUserID = '';
57
+ /** The `B…` id Slack reports for posts made with a username/icon override. */
58
+ this.botID = '';
50
59
  /**
51
60
  * Message IDs of "Thinking..." indicators, keyed by `channelId:threadTs`.
52
61
  * Per-thread keying prevents concurrent messages from overwriting each other's indicator.
@@ -86,6 +95,42 @@ export class SlackAdapter extends BaseMessagingAdapter {
86
95
  async onInitialize() {
87
96
  const authResult = await this.client.auth.test();
88
97
  this.botUserID = authResult.user_id;
98
+ // Captured alongside user_id because they are NOT interchangeable in history: a reply
99
+ // posted with a username override (which every agent reply uses) returns `bot_id` and no
100
+ // `user`, so fetchThreadHistory records the B… id while auth.test() reports the U… one.
101
+ this.botID = authResult.bot_id ?? '';
102
+ }
103
+ /**
104
+ * Was this history message written by ANY bot, not just this one?
105
+ *
106
+ * Slack's Events API marks them three different ways depending on how the message was posted:
107
+ * a `bot_id`, a `bot_profile`, or the `bot_message` subtype. Kept here rather than on the base
108
+ * class because these are Slack payload fields; other platforms answer the question their own
109
+ * way.
110
+ */
111
+ isBotAuthored(message) {
112
+ const raw = message.RawEvent;
113
+ if (raw && typeof raw === 'object') {
114
+ if (raw['bot_id'] || raw['bot_profile'])
115
+ return true;
116
+ if (raw['subtype'] === 'bot_message')
117
+ return true;
118
+ }
119
+ return false;
120
+ }
121
+ /**
122
+ * Either identifier counts as this bot.
123
+ *
124
+ * `chat:write.customize` is required for per-agent identity, and a post made with it comes
125
+ * back as `subtype: 'bot_message'` with a `bot_id` and no `user`. Comparing only against
126
+ * `user_id` therefore never matched this adapter's own replies — which silently made the
127
+ * multi-bot thread gate decline threads this bot was actively holding, and dropped the
128
+ * agent's own turns from its context.
129
+ */
130
+ isSelf(senderId) {
131
+ if (!senderId)
132
+ return false;
133
+ return senderId === this.botUserID || (!!this.botID && senderId === this.botID);
89
134
  }
90
135
  getBotUserId() {
91
136
  return this.botUserID;
@@ -159,6 +204,93 @@ export class SlackAdapter extends BaseMessagingAdapter {
159
204
  return result.ts;
160
205
  }
161
206
  }
207
+ /**
208
+ * Extensions for MIME types whose subtype is not a usable file extension.
209
+ *
210
+ * `mimeType.split('/')[1]` yields "vnd.openxmlformats-officedocument.wordprocessingml.document"
211
+ * for a .docx, which Slack shows as an unopenable blob.
212
+ */
213
+ static { this.EXTENSION_BY_MIME_TYPE = {
214
+ 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': 'docx',
215
+ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': 'xlsx',
216
+ 'application/vnd.openxmlformats-officedocument.presentationml.presentation': 'pptx',
217
+ 'application/msword': 'doc',
218
+ 'application/vnd.ms-excel': 'xls',
219
+ 'application/vnd.ms-powerpoint': 'ppt',
220
+ 'application/pdf': 'pdf',
221
+ 'application/json': 'json',
222
+ 'text/markdown': 'md',
223
+ 'text/plain': 'txt',
224
+ 'text/csv': 'csv',
225
+ 'image/jpeg': 'jpg',
226
+ 'image/svg+xml': 'svg',
227
+ }; }
228
+ /** A reply delivers files, it does not become a file dump. Mirrors the media-block limit. */
229
+ static { this.MAX_UPLOADS_PER_REPLY = 5; }
230
+ /**
231
+ * Extensions recognised as already present on a filename.
232
+ *
233
+ * Derived from the map above so the two cannot drift, plus common types an agent may name
234
+ * directly without our having a MIME mapping for them.
235
+ */
236
+ static { this.KNOWN_FILE_EXTENSIONS = new Set([
237
+ ...Object.values(SlackAdapter.EXTENSION_BY_MIME_TYPE),
238
+ 'jpeg', 'png', 'gif', 'webp', 'html', 'zip', 'mp3', 'mp4', 'wav', 'xml', 'yaml',
239
+ ]); }
240
+ /**
241
+ * Upload an agent's binary output as real Slack files, threaded under the reply.
242
+ *
243
+ * Slack's `image` blocks can only reference a public https URL, so base64 media — every
244
+ * generated image, and any file inlined as a `data:` URI — could not be rendered and was
245
+ * silently dropped: the agent did the work, the artifact existed, and the user saw nothing.
246
+ * Uploading makes it an ordinary attachment the user can open or download.
247
+ *
248
+ * Requires the `files:write` bot scope; without it Slack answers `missing_scope`, which the
249
+ * caller logs (the text reply has already posted by then).
250
+ */
251
+ async uploadMediaOutputs(originalMessage, files) {
252
+ const threadTs = originalMessage.ThreadID ?? originalMessage.MessageID;
253
+ // Capped to mirror the media-block limit — a reply should not become a file dump.
254
+ // Filtered BEFORE the cap, not inside the loop: an entry carrying only a URL has no bytes
255
+ // to upload, and counting it against the budget silently shrank how many real files got
256
+ // through.
257
+ const deliverable = files.filter((f) => !!f && typeof f.data === 'string' && f.data.length > 0);
258
+ const batch = deliverable.slice(0, SlackAdapter.MAX_UPLOADS_PER_REPLY);
259
+ if (deliverable.length > batch.length) {
260
+ LogStatus(`Slack: delivering ${batch.length} of ${deliverable.length} generated files (per-reply cap)`);
261
+ }
262
+ for (const file of batch) {
263
+ const mimeType = (file.mimeType ?? 'image/png').toLowerCase();
264
+ const extension = (Object.hasOwn(SlackAdapter.EXTENSION_BY_MIME_TYPE, mimeType)
265
+ ? SlackAdapter.EXTENSION_BY_MIME_TYPE[mimeType]
266
+ : undefined)
267
+ ?? (mimeType.split('/')[1] ?? 'bin').split('+')[0];
268
+ const preferredName = (file.fileName?.trim() || file.label || `generated-${file.modality ?? 'media'}`)
269
+ .replace(/[^\w.-]+/g, '_')
270
+ .slice(0, 80) || 'generated-file';
271
+ // Only treat a trailing token as an extension if it IS one: a bare
272
+ // /\.[A-Za-z0-9]{1,5}$/ reads "Q3 Report v1.2" as already-extensioned and uploads it
273
+ // without .docx — the unopenable blob the mapping above exists to prevent.
274
+ const trailing = /\.([A-Za-z0-9]{1,5})$/.exec(preferredName)?.[1]?.toLowerCase();
275
+ const filename = trailing && SlackAdapter.KNOWN_FILE_EXTENSIONS.has(trailing)
276
+ ? preferredName
277
+ : `${preferredName}.${extension}`;
278
+ try {
279
+ await this.client.files.uploadV2({
280
+ channel_id: originalMessage.ChannelID,
281
+ thread_ts: threadTs,
282
+ file: Buffer.from(file.data, 'base64'),
283
+ filename,
284
+ title: file.label ?? file.fileName ?? undefined,
285
+ });
286
+ }
287
+ catch (error) {
288
+ // Per file: one rejected upload (a bad MIME type, a size cap) must not cost the
289
+ // user the other files in the same reply.
290
+ LogError(`Failed to upload ${filename} to Slack:`, undefined, error);
291
+ }
292
+ }
293
+ }
162
294
  /**
163
295
  * Send the final formatted response. If a "Thinking..." message exists
164
296
  * (no streaming occurred), update it in-place instead of posting a new message.
@@ -260,10 +392,11 @@ export class SlackAdapter extends BaseMessagingAdapter {
260
392
  * the rich content. Keeping it short avoids `msg_too_long` when blocks are large.
261
393
  */
262
394
  truncateForSlackFallback(text) {
263
- const MAX_FALLBACK = 4000;
264
- if (text.length <= MAX_FALLBACK)
395
+ // Same ceiling as the primary path: Slack refuses a `text` field past ~4,000, and this
396
+ // fallback is what sendFinalMessage/updateFinalMessage actually post.
397
+ if (text.length <= SlackAdapter.MAX_TEXT_LENGTH)
265
398
  return text;
266
- return text.slice(0, MAX_FALLBACK - 30) + '\n\n(See full response above)';
399
+ return text.slice(0, SlackAdapter.MAX_TEXT_LENGTH - 30) + '\n\n(See full response above)';
267
400
  }
268
401
  /**
269
402
  * Build Slack API params for per-agent identity.
@@ -1 +1 @@
1
- {"version":3,"file":"SlackAdapter.js","sourceRoot":"","sources":["../../src/slack/SlackAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SlackAdapter.js","sourceRoot":"","sources":["../../src/slack/SlackAdapter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SlackMessagingExtension.d.ts","sourceRoot":"","sources":["../../src/slack/SlackMessagingExtension.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAgB,EAAE,WAAW,EAA6B,MAAM,SAAS,CAAC;AAK1E,OAAO,EACH,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACxB,MAAM,wCAAwC,CAAC;AAMhD;;;;;;;;;;;;;;GAcG;AACH,qBACa,uBAAwB,SAAQ,mBAAmB;IAC5D,qDAAqD;IACrD,OAAO,CAAC,OAAO,CAA6B;IAE5C,iEAAiE;IACjE,OAAO,CAAC,cAAc,CAA0B;IAEhD,mDAAmD;IACnD,OAAO,CAAC,aAAa,CAAc;IAEnC,sDAAsD;IACtD,OAAO,CAAC,aAAa,CAA8B;IAEnD,sEAAsE;IACtE,OAAO,CAAC,gBAAgB,CAAiC;IAEzD,uDAAuD;IACvD,OAAO,CAAC,cAAc,CAA6B;IAEnD;;;;;;OAMG;IACG,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA0C/F;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAsB1B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAS/B;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAenD;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA0C1B;;;;;;;OAOG;YACW,aAAa;IAsB3B;;;;;OAKG;YACW,oBAAoB;IAkClC;;;OAGG;YACW,iBAAiB;IAwB/B;;;;;;;;OAQG;YACW,kBAAkB;IA2BhC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAiBhC;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAe5B,gEAAgE;IAChE,OAAO,CAAC,iBAAiB;IAMzB;;;OAGG;YACW,wBAAwB;IAwDtC;;OAEG;YACW,iBAAiB;CAiClC"}
1
+ {"version":3,"file":"SlackMessagingExtension.d.ts","sourceRoot":"","sources":["../../src/slack/SlackMessagingExtension.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAgB,EAAE,WAAW,EAA6B,MAAM,SAAS,CAAC;AAK1E,OAAO,EACH,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACxB,MAAM,wCAAwC,CAAC;AAMhD;;;;;;;;;;;;;;GAcG;AACH,qBACa,uBAAwB,SAAQ,mBAAmB;IAC5D,qDAAqD;IACrD,OAAO,CAAC,OAAO,CAA6B;IAE5C,iEAAiE;IACjE,OAAO,CAAC,cAAc,CAA0B;IAEhD,mDAAmD;IACnD,OAAO,CAAC,aAAa,CAAc;IAEnC,sDAAsD;IACtD,OAAO,CAAC,aAAa,CAA8B;IAEnD,sEAAsE;IACtE,OAAO,CAAC,gBAAgB,CAAiC;IAEzD,uDAAuD;IACvD,OAAO,CAAC,cAAc,CAA6B;IAEnD;;;;;;OAMG;IACG,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA0C/F;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAsB1B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAS/B;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAenD;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA0C1B;;;;;;;OAOG;YACW,aAAa;IAsB3B;;;;;OAKG;YACW,oBAAoB;IAqElC;;;OAGG;YACW,iBAAiB;IAwB/B;;;;;;;;OAQG;YACW,kBAAkB;IA2BhC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAiBhC;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAe5B,gEAAgE;IAChE,OAAO,CAAC,iBAAiB;IAMzB;;;OAGG;YACW,wBAAwB;IAwDtC;;OAEG;YACW,iBAAiB;CAiClC"}
@@ -268,6 +268,41 @@ let SlackMessagingExtension = class SlackMessagingExtension extends BaseServerEx
268
268
  await ack();
269
269
  await this.processSlackEvent(event);
270
270
  });
271
+ // Interactivity. Only 'message' and 'app_mention' were subscribed, so in Socket Mode every
272
+ // interactive element the block builder renders — the "Fill Out Form" button, choice
273
+ // buttons, action buttons — was inert: the click produced an event nothing listened for,
274
+ // and a human-in-the-loop agent could not be answered at all. `handleSlackInteraction`
275
+ // (with its full modal build/submit path) was wired only to the HTTP route, which
276
+ // additionally needs a SigningSecret that Socket Mode deployments have no reason to set.
277
+ //
278
+ // Only the envelope type is subscribed. @slack/socket-mode emits the INNER event type for
279
+ // an `events_api` envelope and the ENVELOPE type for everything else, and Slack labels
280
+ // every block action and view submission `interactive` — so 'block_actions' and
281
+ // 'view_submission' subscriptions never fire, and had they fired, a view submission would
282
+ // have run the agent twice.
283
+ const handleInteractiveEnvelope = async ({ body, ack }) => {
284
+ await ack();
285
+ if (!this.interactClient || !this.adapter) {
286
+ LogStatus('Slack interact: extension not fully initialized');
287
+ return;
288
+ }
289
+ try {
290
+ // handleSlackInteraction parses a JSON string (its HTTP contract); Socket Mode
291
+ // hands us the payload already parsed.
292
+ const payload = body?.['payload'];
293
+ const raw = typeof payload === 'string' ? payload : JSON.stringify(payload ?? body ?? {});
294
+ await handleSlackInteraction(raw, this.interactClient, this.adapter);
295
+ }
296
+ catch (error) {
297
+ LogError('Error handling Slack interaction (Socket Mode):', undefined, error);
298
+ }
299
+ };
300
+ // Only 'interactive'. For an events_api envelope the SDK emits the INNER event type
301
+ // (`message`, `app_mention`); for every other envelope it emits the envelope type itself,
302
+ // and Slack labels all block actions and view submissions `interactive`. Subscribing to
303
+ // 'block_actions'/'view_submission' as well never fired — and had it fired, a view
304
+ // submission would have run the agent twice.
305
+ this.socketModeClient.on('interactive', handleInteractiveEnvelope);
271
306
  await this.socketModeClient.start();
272
307
  LogStatus('Slack Socket Mode connected');
273
308
  return {