cli-jaw 2.17.43 → 2.17.44

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 (223) hide show
  1. package/README.md +13 -2
  2. package/dist/bin/commands/slack.js +73 -7
  3. package/dist/bin/commands/slack.js.map +1 -1
  4. package/dist/server.js +46 -1
  5. package/dist/server.js.map +1 -1
  6. package/dist/src/agent/calendar-context.js +23 -0
  7. package/dist/src/agent/calendar-context.js.map +1 -0
  8. package/dist/src/agent/claude-runtime-run.js +10 -1
  9. package/dist/src/agent/claude-runtime-run.js.map +1 -1
  10. package/dist/src/agent/cursor-acp-models.js +139 -0
  11. package/dist/src/agent/cursor-acp-models.js.map +1 -0
  12. package/dist/src/agent/events/cursor.js +28 -4
  13. package/dist/src/agent/events/cursor.js.map +1 -1
  14. package/dist/src/agent/lifecycle-handler.js +8 -2
  15. package/dist/src/agent/lifecycle-handler.js.map +1 -1
  16. package/dist/src/agent/native-runtime-run.js +22 -1
  17. package/dist/src/agent/native-runtime-run.js.map +1 -1
  18. package/dist/src/agent/runtime/acp/config.js +76 -11
  19. package/dist/src/agent/runtime/acp/config.js.map +1 -1
  20. package/dist/src/agent/runtime/acp/cursor-session.js +6 -1
  21. package/dist/src/agent/runtime/acp/cursor-session.js.map +1 -1
  22. package/dist/src/agent/runtime/liveness.js +24 -0
  23. package/dist/src/agent/runtime/liveness.js.map +1 -0
  24. package/dist/src/agent/runtime/start-failure.js +61 -0
  25. package/dist/src/agent/runtime/start-failure.js.map +1 -0
  26. package/dist/src/agent/spawn/queue.js +11 -6
  27. package/dist/src/agent/spawn/queue.js.map +1 -1
  28. package/dist/src/agent/spawn.js +59 -17
  29. package/dist/src/agent/spawn.js.map +1 -1
  30. package/dist/src/cli/api-auth.js +6 -0
  31. package/dist/src/cli/api-auth.js.map +1 -1
  32. package/dist/src/manager/design/watcher.js +10 -2
  33. package/dist/src/manager/design/watcher.js.map +1 -1
  34. package/dist/src/memory/heartbeat.js +6 -0
  35. package/dist/src/memory/heartbeat.js.map +1 -1
  36. package/dist/src/messaging/channel-validate.js +5 -3
  37. package/dist/src/messaging/channel-validate.js.map +1 -1
  38. package/dist/src/messaging/redact.js +30 -8
  39. package/dist/src/messaging/redact.js.map +1 -1
  40. package/dist/src/messaging/send.js +7 -0
  41. package/dist/src/messaging/send.js.map +1 -1
  42. package/dist/src/orchestrator/collect.js +5 -3
  43. package/dist/src/orchestrator/collect.js.map +1 -1
  44. package/dist/src/orchestrator/gateway.js +10 -3
  45. package/dist/src/orchestrator/gateway.js.map +1 -1
  46. package/dist/src/orchestrator/pipeline.js +21 -9
  47. package/dist/src/orchestrator/pipeline.js.map +1 -1
  48. package/dist/src/orchestrator/request-registry.js +2 -0
  49. package/dist/src/orchestrator/request-registry.js.map +1 -1
  50. package/dist/src/prompt/builder.js +74 -6
  51. package/dist/src/prompt/builder.js.map +1 -1
  52. package/dist/src/prompt/templates/a1-system.md +22 -5
  53. package/dist/src/routes/messaging.js +105 -27
  54. package/dist/src/routes/messaging.js.map +1 -1
  55. package/dist/src/routes/settings.js +20 -8
  56. package/dist/src/routes/settings.js.map +1 -1
  57. package/dist/src/routes/slack-tools.js +176 -0
  58. package/dist/src/routes/slack-tools.js.map +1 -0
  59. package/dist/src/slack/action-rate.js +43 -0
  60. package/dist/src/slack/action-rate.js.map +1 -0
  61. package/dist/src/slack/action-runtime.js +243 -0
  62. package/dist/src/slack/action-runtime.js.map +1 -0
  63. package/dist/src/slack/action-store.js +84 -0
  64. package/dist/src/slack/action-store.js.map +1 -0
  65. package/dist/src/slack/action-types.js +6 -0
  66. package/dist/src/slack/action-types.js.map +1 -0
  67. package/dist/src/slack/actions-canvas.js +108 -0
  68. package/dist/src/slack/actions-canvas.js.map +1 -0
  69. package/dist/src/slack/actions-channel.js +88 -0
  70. package/dist/src/slack/actions-channel.js.map +1 -0
  71. package/dist/src/slack/actions-interactions.js +204 -0
  72. package/dist/src/slack/actions-interactions.js.map +1 -0
  73. package/dist/src/slack/actions-lists.js +308 -0
  74. package/dist/src/slack/actions-lists.js.map +1 -0
  75. package/dist/src/slack/actions-message.js +117 -0
  76. package/dist/src/slack/actions-message.js.map +1 -0
  77. package/dist/src/slack/actions-resources.js +62 -0
  78. package/dist/src/slack/actions-resources.js.map +1 -0
  79. package/dist/src/slack/actions-rts.js +88 -0
  80. package/dist/src/slack/actions-rts.js.map +1 -0
  81. package/dist/src/slack/actions-schedule.js +214 -0
  82. package/dist/src/slack/actions-schedule.js.map +1 -0
  83. package/dist/src/slack/actions.js +17 -0
  84. package/dist/src/slack/actions.js.map +1 -0
  85. package/dist/src/slack/api.js +56 -9
  86. package/dist/src/slack/api.js.map +1 -1
  87. package/dist/src/slack/blocks.js +162 -0
  88. package/dist/src/slack/blocks.js.map +1 -0
  89. package/dist/src/slack/bot.js +562 -378
  90. package/dist/src/slack/bot.js.map +1 -1
  91. package/dist/src/slack/commands.js +24 -5
  92. package/dist/src/slack/commands.js.map +1 -1
  93. package/dist/src/slack/context.js +15 -4
  94. package/dist/src/slack/context.js.map +1 -1
  95. package/dist/src/slack/conversation.js +135 -33
  96. package/dist/src/slack/conversation.js.map +1 -1
  97. package/dist/src/slack/events.js +41 -17
  98. package/dist/src/slack/events.js.map +1 -1
  99. package/dist/src/slack/format.js +181 -0
  100. package/dist/src/slack/format.js.map +1 -1
  101. package/dist/src/slack/history.js +133 -8
  102. package/dist/src/slack/history.js.map +1 -1
  103. package/dist/src/slack/ingress.js +26 -9
  104. package/dist/src/slack/ingress.js.map +1 -1
  105. package/dist/src/slack/interaction-store.js +56 -0
  106. package/dist/src/slack/interaction-store.js.map +1 -0
  107. package/dist/src/slack/manifest.js +3 -0
  108. package/dist/src/slack/manifest.js.map +1 -1
  109. package/dist/src/slack/message-content.js +132 -0
  110. package/dist/src/slack/message-content.js.map +1 -0
  111. package/dist/src/slack/message.js +58 -0
  112. package/dist/src/slack/message.js.map +1 -0
  113. package/dist/src/slack/notice-transport.js +49 -19
  114. package/dist/src/slack/notice-transport.js.map +1 -1
  115. package/dist/src/slack/operator-auth.js +62 -0
  116. package/dist/src/slack/operator-auth.js.map +1 -0
  117. package/dist/src/slack/progress-activity.js +210 -0
  118. package/dist/src/slack/progress-activity.js.map +1 -0
  119. package/dist/src/slack/progress-detail.js +473 -0
  120. package/dist/src/slack/progress-detail.js.map +1 -0
  121. package/dist/src/slack/progress-files.js +70 -0
  122. package/dist/src/slack/progress-files.js.map +1 -0
  123. package/dist/src/slack/progress-lifecycle.js +223 -0
  124. package/dist/src/slack/progress-lifecycle.js.map +1 -0
  125. package/dist/src/slack/progress-restore.js +81 -0
  126. package/dist/src/slack/progress-restore.js.map +1 -0
  127. package/dist/src/slack/progress.js +325 -143
  128. package/dist/src/slack/progress.js.map +1 -1
  129. package/dist/src/slack/quote.js +227 -0
  130. package/dist/src/slack/quote.js.map +1 -0
  131. package/dist/src/slack/render-features.js +105 -0
  132. package/dist/src/slack/render-features.js.map +1 -0
  133. package/dist/src/slack/reply-delivery.js +110 -0
  134. package/dist/src/slack/reply-delivery.js.map +1 -0
  135. package/dist/src/slack/rts-output-store.js +143 -0
  136. package/dist/src/slack/rts-output-store.js.map +1 -0
  137. package/dist/src/slack/scope-status.js +17 -3
  138. package/dist/src/slack/scope-status.js.map +1 -1
  139. package/dist/src/slack/search-quote.js +70 -0
  140. package/dist/src/slack/search-quote.js.map +1 -0
  141. package/dist/src/slack/search.js +54 -0
  142. package/dist/src/slack/search.js.map +1 -0
  143. package/dist/src/slack/send-handler.js +11 -7
  144. package/dist/src/slack/send-handler.js.map +1 -1
  145. package/dist/src/slack/send-only-client.js +116 -79
  146. package/dist/src/slack/send-only-client.js.map +1 -1
  147. package/dist/src/slack/table-content.js +253 -0
  148. package/dist/src/slack/table-content.js.map +1 -0
  149. package/dist/src/slack/table-verification.js +64 -0
  150. package/dist/src/slack/table-verification.js.map +1 -0
  151. package/dist/src/slack/task-input.js +55 -0
  152. package/dist/src/slack/task-input.js.map +1 -0
  153. package/dist/src/slack/tool-access.js +127 -0
  154. package/dist/src/slack/tool-access.js.map +1 -0
  155. package/dist/src/slack/tool-capabilities.js +47 -0
  156. package/dist/src/slack/tool-capabilities.js.map +1 -0
  157. package/dist/src/slack/tool-context.js +91 -0
  158. package/dist/src/slack/tool-context.js.map +1 -0
  159. package/dist/src/slack/verified-workspace.js +17 -6
  160. package/dist/src/slack/verified-workspace.js.map +1 -1
  161. package/dist/src/trace/redact.js +2 -1
  162. package/dist/src/trace/redact.js.map +1 -1
  163. package/package.json +1 -1
  164. package/public/dist/.vite/manifest.json +102 -102
  165. package/public/dist/assets/{Agent-CQ4EBgY8.js → Agent-CNad_A6t.js} +1 -1
  166. package/public/dist/assets/{ChannelEnablementControl-JsYvNMlM.js → ChannelEnablementControl-DwUDKjX9.js} +4 -4
  167. package/public/dist/assets/{ChannelSetupEntry-BpyRWEUE.js → ChannelSetupEntry-DH0AuNNX.js} +1 -1
  168. package/public/dist/assets/{ChannelsDiscord-DNfvz1jn.js → ChannelsDiscord-7NmoTjR7.js} +1 -1
  169. package/public/dist/assets/{ChannelsSlack-DzpxIdgW.js → ChannelsSlack-Ba0ax6iT.js} +1 -1
  170. package/public/dist/assets/{ChannelsTelegram-CUhFc5s6.js → ChannelsTelegram-DKA9atf2.js} +1 -1
  171. package/public/dist/assets/{app-Q0prKOFx.js → app-9OQNfmqw.js} +4 -4
  172. package/public/dist/assets/{bgtask-badge-DAcWaUfS.js → bgtask-badge-BvxHqMGi.js} +1 -1
  173. package/public/dist/assets/bgtask-badge-DeSZJGNN.js +1 -0
  174. package/public/dist/assets/{employees-CWS3Juca.js → employees-CkUqN4oh.js} +1 -1
  175. package/public/dist/assets/{iframe-renderer-DCDKBMb7.js → iframe-renderer-C2gchtOj.js} +2 -2
  176. package/public/dist/assets/iframe-renderer-DfvACXIn.js +1 -0
  177. package/public/dist/assets/{manager-v6GYfoPB.js → manager-rb5X-4DJ.js} +1 -1
  178. package/public/dist/assets/{memory-DhNdKZLO.js → memory-BiWzpoBq.js} +1 -1
  179. package/public/dist/assets/memory-Ckp1Eq5a.js +1 -0
  180. package/public/dist/assets/message-history-Bv0l_t7O.js +1 -0
  181. package/public/dist/assets/{message-history-DbRTl1P0.js → message-history-CuFefS02.js} +1 -1
  182. package/public/dist/assets/{render-DP8SJtdZ.js → render-DUGqq9Mu.js} +1 -1
  183. package/public/dist/assets/{settings-85n9NjvX.js → settings-BqUHavbH.js} +1 -1
  184. package/public/dist/assets/settings-C81Kf9uX.js +1 -0
  185. package/public/dist/assets/{settings-C9_D-pn0.js → settings-DQ1fLygB.js} +31 -30
  186. package/public/dist/assets/{settings-core-BcVD2FgV.js → settings-core-CzdXfoOK.js} +1 -1
  187. package/public/dist/assets/settings-core-DO_5M7Lv.js +1 -0
  188. package/public/dist/assets/{settings-embedding-BSpq785l.js → settings-embedding-BAKFrVLV.js} +1 -1
  189. package/public/dist/assets/{settings-types-B09BmpYe.js → settings-types-D3cd6SWy.js} +1 -1
  190. package/public/dist/assets/{sidebar-BVhLb5Ft.js → sidebar-CvGbp9x5.js} +3 -3
  191. package/public/dist/assets/skills-DFpPmMUR.js +1 -0
  192. package/public/dist/assets/{skills-X7qxmHka.js → skills-abLMqY5_.js} +1 -1
  193. package/public/dist/assets/slash-commands-BU58xYih.js +1 -0
  194. package/public/dist/assets/{slash-commands-BnDH4IU_.js → slash-commands-D8o9pqOS.js} +1 -1
  195. package/public/dist/assets/{trace-drawer-DasaS1z4.js → trace-drawer-C6RvkUAd.js} +1 -1
  196. package/public/dist/assets/{ui-BtiBTXng.js → ui-Bxapl_Eu.js} +1 -1
  197. package/public/dist/assets/ui-CUB4iwz3.js +1 -0
  198. package/public/dist/index.html +1 -1
  199. package/public/dist/manager/index.html +1 -1
  200. package/public/dist/settings/index.html +1 -1
  201. package/public/js/features/settings-cli-status.ts +11 -1
  202. package/public/js/features/settings-types.ts +21 -0
  203. package/public/locales/en.json +34 -1
  204. package/public/locales/ja.json +34 -1
  205. package/public/locales/ko.json +34 -1
  206. package/public/locales/zh.json +34 -1
  207. package/scripts/check-native-load.cjs +17 -4
  208. package/scripts/release-gates.mjs +84 -3
  209. package/scripts/service-artifact.mjs +157 -0
  210. package/scripts/service-shell/zsh/.zlogin +23 -0
  211. package/scripts/service-shell/zsh/.zlogout +23 -0
  212. package/scripts/service-shell/zsh/.zprofile +23 -0
  213. package/scripts/service-shell/zsh/.zshenv +23 -0
  214. package/scripts/service-shell/zsh/.zshrc +23 -0
  215. package/public/dist/assets/bgtask-badge-DHA2OQm8.js +0 -1
  216. package/public/dist/assets/iframe-renderer-RpvBly2x.js +0 -1
  217. package/public/dist/assets/memory-4YH8sz0L.js +0 -1
  218. package/public/dist/assets/message-history-lVcLpAw8.js +0 -1
  219. package/public/dist/assets/settings--EGy3_B9.js +0 -1
  220. package/public/dist/assets/settings-core-8wBl1mg-.js +0 -1
  221. package/public/dist/assets/skills-6GFkHTlQ.js +0 -1
  222. package/public/dist/assets/slash-commands-qu8fPAZ3.js +0 -1
  223. package/public/dist/assets/ui-BucJ1zMA.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions-channel.js","sourceRoot":"","sources":["../../../src/slack/actions-channel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,204 @@
1
+ import { randomBytes } from 'node:crypto';
2
+ import { defineAction } from './action-types.js';
3
+ import { baseAction, boundedInteger, enumValue, messageTs, onlyFields, opaqueId, requiredText, strictRecord } from './task-input.js';
4
+ import { redactChannelSecrets, redactOutboundText } from '../messaging/redact.js';
5
+ import { slackToolDenied } from './tool-access.js';
6
+ import { slackApi } from './api.js';
7
+ import { slackCredentialKey } from './tool-context.js';
8
+ import { getSlackInteractionConfiguration } from './interaction-store.js';
9
+ const opaque = () => randomBytes(16).toString('hex');
10
+ const plain = (text) => ({ type: 'plain_text', text });
11
+ const record = (value) => value && typeof value === 'object' && !Array.isArray(value) ? value : undefined;
12
+ function safeText(value, max) { return requiredText(redactOutboundText(requiredText(value, max)), max); }
13
+ function safeUrl(value) {
14
+ const url = requiredText(value, 2048);
15
+ let parsed;
16
+ try {
17
+ parsed = new URL(url);
18
+ }
19
+ catch {
20
+ throw slackToolDenied('slack_link_invalid', 400);
21
+ }
22
+ if (url !== url.trim() || /[\x00-\x20\\]/.test(url) || parsed.protocol !== 'https:' || parsed.username || parsed.password || redactChannelSecrets(url) !== url)
23
+ throw slackToolDenied('slack_link_unsafe', 400);
24
+ return url;
25
+ }
26
+ function parsePost(raw, fields) {
27
+ const base = baseAction(raw, ['text', 'threadTs', ...fields], true);
28
+ return { ...base, text: safeText(raw['text'], 3000), ...(raw['threadTs'] === undefined ? {} : { threadTs: messageTs(raw['threadTs']) }) };
29
+ }
30
+ function array(value) {
31
+ if (!Array.isArray(value) || value.length < 1 || value.length > 10)
32
+ throw slackToolDenied('slack_interaction_choices_invalid', 400);
33
+ return value;
34
+ }
35
+ /** Compare chosen rendering/behavior fields; tolerate Slack's optional emoji and generated IDs. */
36
+ function sameElement(expected, actual) {
37
+ const found = record(actual);
38
+ if (!found || found['type'] !== expected['type'] || found['action_id'] !== expected['action_id'])
39
+ return false;
40
+ for (const key of ['url', 'value'])
41
+ if (found[key] !== expected[key])
42
+ return false;
43
+ if (found['agent_prompt'] !== undefined || found['confirm'] !== undefined)
44
+ return false;
45
+ if (expected['type'] === 'button')
46
+ return record(found['text'])?.['type'] === 'plain_text' && record(found['text'])?.['text'] === record(expected['text'])?.['text'];
47
+ const options = found['options'];
48
+ const wanted = expected['options'];
49
+ return found['initial_option'] === undefined && found['option_groups'] === undefined && Array.isArray(options) && options.length === wanted.length
50
+ && record(found['placeholder'])?.['type'] === 'plain_text' && record(found['placeholder'])?.['text'] === 'Choose an option'
51
+ && wanted.every((o, i) => record(options[i])?.['value'] === o['value'] && record(record(options[i])?.['text'])?.['type'] === 'plain_text' && record(record(options[i])?.['text'])?.['text'] === record(o['text'])?.['text']);
52
+ }
53
+ async function post(ctx, args, blockId, elements, interaction) {
54
+ const config = getSlackInteractionConfiguration();
55
+ const ids = interaction ? [interaction.id] : [];
56
+ try {
57
+ const sent = await ctx.api('chat.postMessage', {
58
+ channel: args.channel, text: args.text, blocks: [{ type: 'section', text: plain(args.text) }, { type: 'actions', block_id: blockId, elements }],
59
+ ...(args.threadTs ? { thread_ts: args.threadTs } : {}),
60
+ }, () => {
61
+ if (interaction && (getSlackInteractionConfiguration() !== config || ctx.now() >= interaction.expiresAt))
62
+ throw slackToolDenied('slack_interaction_expired', 409);
63
+ });
64
+ const ts = sent.data?.ts;
65
+ if (!sent.ok || typeof ts !== 'string' || !/^\d{1,13}\.\d{1,6}$/.test(ts) || sent.data?.channel !== args.channel)
66
+ return ctx.result('unknown', { interactionId: interaction?.id, reason: 'interaction_post_unconfirmed' }, ids);
67
+ ids.push(ts);
68
+ if (interaction && !config?.store.bind(interaction.id, ts))
69
+ return ctx.result('unknown', { interactionId: interaction.id, reason: 'interaction_binding_failed' }, ids);
70
+ const read = await ctx.api(args.threadTs ? 'conversations.replies' : 'conversations.history', {
71
+ channel: args.channel, ...(args.threadTs ? { ts: args.threadTs } : {}), oldest: ts, latest: ts, inclusive: true, limit: 100,
72
+ });
73
+ const matches = read.data?.messages?.filter(m => record(m)?.['ts'] === ts);
74
+ const message = matches?.length === 1 ? record(matches[0]) : undefined;
75
+ if (!read.ok || !message || message['contentExcluded'] === true)
76
+ return ctx.result('unknown', { interactionId: interaction?.id, reason: 'interaction_readback_unavailable' }, ids);
77
+ const blocks = message['blocks'];
78
+ const actionBlocks = Array.isArray(blocks) ? blocks.filter(b => record(b)?.['block_id'] === blockId) : [];
79
+ const got = actionBlocks.length === 1 ? record(actionBlocks[0]) : undefined;
80
+ const actual = got?.['elements'];
81
+ const verified = message['user'] === ctx.botUserId && message['text'] === args.text && (!args.threadTs || message['thread_ts'] === args.threadTs)
82
+ && got?.['type'] === 'actions' && Array.isArray(actual) && actual.length === elements.length && elements.every((e, i) => sameElement(e, actual[i]));
83
+ return ctx.result(verified ? 'verified' : 'failed', { ...(interaction ? { interactionId: interaction.id, expiresAt: interaction.expiresAt } : {}), channel: args.channel, ts, controls: verified ? 'verified' : 'mismatch' }, ids);
84
+ }
85
+ catch {
86
+ return ctx.result('unknown', { interactionId: interaction?.id, reason: 'interaction_delivery_unconfirmed' }, ids);
87
+ }
88
+ }
89
+ const postMethods = ['chat.postMessage', 'conversations.history', 'conversations.replies'];
90
+ export const interactionActions = [
91
+ defineAction({ operation: 'interaction.url', scopes: ['chat:write'], methods: postMethods, mutates: true,
92
+ parse(raw) {
93
+ const args = parsePost(raw, ['buttons']);
94
+ const buttons = array(raw['buttons']).map(value => { const b = strictRecord(value); onlyFields(b, ['text', 'url']); return { text: safeText(b['text'], 75), url: safeUrl(b['url']) }; });
95
+ return { ...args, buttons };
96
+ },
97
+ execute(ctx, args) { return post(ctx, args, `jaw_url_${opaque()}`, args.buttons.map(b => ({ type: 'button', text: plain(b.text), url: b.url, action_id: `jaw_url_${opaque()}` }))); },
98
+ }),
99
+ defineAction({ operation: 'interaction.choice', scopes: ['chat:write'], methods: postMethods, mutates: true, requiresInbound: true,
100
+ parse(raw) {
101
+ const args = parsePost(raw, ['choices', 'style', 'expiresInSeconds']);
102
+ const choices = array(raw['choices']).map(value => { const c = strictRecord(value); onlyFields(c, ['label', 'value']); const v = opaqueId(c['value']); if (redactChannelSecrets(v) !== v)
103
+ throw slackToolDenied('slack_interaction_value_unsafe', 400); return { label: safeText(c['label'], 75), value: v }; });
104
+ if (new Set(choices.map(c => c.value)).size !== choices.length)
105
+ throw slackToolDenied('slack_interaction_duplicate_choice', 400);
106
+ return { ...args, choices, style: raw['style'] === undefined ? 'buttons' : enumValue(raw['style'], ['buttons', 'select']), expiresInSeconds: raw['expiresInSeconds'] === undefined ? 900 : boundedInteger(raw['expiresInSeconds'], 1, 900) };
107
+ },
108
+ execute(ctx, args) {
109
+ if (ctx.operator || !/^[UW][A-Z0-9]+$/.test(ctx.actor))
110
+ return Promise.resolve(ctx.fail('slack_interaction_turn_required', 403));
111
+ const config = getSlackInteractionConfiguration();
112
+ if (!config || slackCredentialKey(config.getToken()) !== ctx.credentialKey)
113
+ return Promise.resolve(ctx.fail('slack_interaction_unavailable', 503));
114
+ const id = opaque();
115
+ const actionId = `jaw_choice_${opaque()}`;
116
+ const row = { id, workspace: ctx.workspace, channel: args.channel, actor: ctx.actor, botUserId: ctx.botUserId, credentialKey: ctx.credentialKey,
117
+ blockId: `jaw_choice_${id}`, style: args.style, options: args.choices.map(c => ({ actionId: args.style === 'select' ? actionId : `jaw_choice_${opaque()}`, wireValue: opaque(), value: c.value })),
118
+ expiresAt: ctx.now() + args.expiresInSeconds * 1000, messageTs: null, selectedValue: null };
119
+ config.store.create(row, ctx.now());
120
+ const elements = args.style === 'buttons' ? args.choices.map((c, i) => ({ type: 'button', text: plain(c.label), action_id: row.options[i].actionId, value: row.options[i].wireValue }))
121
+ : [{ type: 'static_select', action_id: actionId, placeholder: plain('Choose an option'), options: args.choices.map((c, i) => ({ text: plain(c.label), value: row.options[i].wireValue })) }];
122
+ return post(ctx, args, row.blockId, elements, row);
123
+ },
124
+ }),
125
+ defineAction({ operation: 'interaction.get', scopes: [], methods: [], mutates: false,
126
+ parse(raw) { return { ...baseAction(raw, ['interactionId'], false), interactionId: opaqueId(raw['interactionId']) }; },
127
+ async execute(ctx, args) {
128
+ const row = getSlackInteractionConfiguration()?.store.get(args.interactionId);
129
+ if (ctx.operator || !row || row.workspace !== ctx.workspace || row.channel !== args.channel || row.actor !== ctx.actor || row.botUserId !== ctx.botUserId || row.credentialKey !== ctx.credentialKey)
130
+ return ctx.fail('slack_interaction_owner_unverified', 403);
131
+ return ctx.result('verified', { interactionId: row.id, status: row.selectedValue !== null ? 'selected' : ctx.now() >= row.expiresAt ? 'expired' : row.messageTs === null ? 'unbound' : 'pending', selectedValue: row.selectedValue, expiresAt: row.expiresAt }, [row.id]);
132
+ },
133
+ }),
134
+ ];
135
+ /** Authenticated Socket transport ONLY; payload.token and response_url are never credentials or destinations. */
136
+ export async function consumeSlackInteractionCallback(payload, token, fetchImpl) {
137
+ const config = getSlackInteractionConfiguration();
138
+ if (!config)
139
+ return { accepted: false };
140
+ const p = record(payload);
141
+ const actions = p?.['actions'];
142
+ if (p?.['type'] !== 'block_actions' || !Array.isArray(actions) || actions.length !== 1)
143
+ return { accepted: false };
144
+ const action = record(actions[0]);
145
+ const block = action?.['block_id'];
146
+ if (typeof block !== 'string' || !/^jaw_choice_[a-f0-9]{32}$/.test(block))
147
+ return { accepted: false };
148
+ const row = config.store.get(block.slice('jaw_choice_'.length));
149
+ const container = record(p['container']);
150
+ const user = record(p['user']);
151
+ const team = record(p['team']);
152
+ const value = action?.['type'] === 'static_select' ? record(action['selected_option'])?.['value'] : action?.['value'];
153
+ if (!row || !row.messageTs || row.selectedValue !== null || container?.['type'] !== 'message' || container['is_ephemeral'] === true
154
+ || container['channel_id'] !== row.channel || container['message_ts'] !== row.messageTs || user?.['id'] !== row.actor || team?.['id'] !== row.workspace
155
+ || (record(p['channel']) && record(p['channel'])?.['id'] !== row.channel) || (record(p['message']) && record(p['message'])?.['ts'] !== row.messageTs)
156
+ || action?.['type'] !== (row.style === 'buttons' ? 'button' : 'static_select') || typeof value !== 'string' || typeof action['action_id'] !== 'string'
157
+ || !row.options.some(o => o.actionId === action['action_id'] && o.wireValue === value))
158
+ return { accepted: false };
159
+ const current = () => getSlackInteractionConfiguration() === config && config.now() < row.expiresAt && slackCredentialKey(token) === row.credentialKey && slackCredentialKey(config.getToken()) === row.credentialKey;
160
+ if (!current())
161
+ return { accepted: false };
162
+ try {
163
+ const options = { ...(fetchImpl ? { fetchImpl } : {}), sensitiveResponse: true, maxResponseBytes: 65536, timeoutMs: 5000, form: true };
164
+ const auth = await slackApi(token, 'auth.test', {}, options);
165
+ if (!current() || !auth.ok || auth.data?.team_id !== row.workspace || auth.data.user_id !== row.botUserId)
166
+ return { accepted: false };
167
+ const info = await slackApi(token, 'conversations.info', { channel: row.channel }, options);
168
+ const channel = info.data?.channel;
169
+ if (!current() || !info.ok || channel?.['id'] !== row.channel || channel['is_shared'] === true || channel['is_ext_shared'] === true || channel['is_org_shared'] === true)
170
+ return { accepted: false };
171
+ if (channel['is_im'] === true) {
172
+ if (channel['user'] !== row.actor || channel['is_org_shared'] !== false
173
+ || (channel['is_shared'] !== undefined && channel['is_shared'] !== false)
174
+ || (channel['is_ext_shared'] !== undefined && channel['is_ext_shared'] !== false)
175
+ || (channel['context_team_id'] !== undefined && channel['context_team_id'] !== row.workspace))
176
+ return { accepted: false };
177
+ const actor = await slackApi(token, 'users.info', { user: row.actor }, options);
178
+ if (!current() || !actor.ok || actor.data?.user?.id !== row.actor || actor.data.user.team_id !== row.workspace || actor.data.user.deleted !== false)
179
+ return { accepted: false };
180
+ }
181
+ else if (channel['is_shared'] !== false || channel['is_ext_shared'] !== false || channel['context_team_id'] !== row.workspace)
182
+ return { accepted: false };
183
+ const members = await slackApi(token, 'conversations.members', { channel: row.channel, limit: 200 }, options);
184
+ if (!current() || !members.ok || !Array.isArray(members.data?.members) || members.data.members.length > 200 || !members.data.members.includes(row.actor) || !members.data.members.includes(row.botUserId))
185
+ return { accepted: false };
186
+ if (channel['is_im'] === true && (members.data.members.length !== 2 || members.data.has_more === true || members.data.response_metadata?.next_cursor !== ''))
187
+ return { accepted: false };
188
+ const accepted = config.store.consume(row, action['action_id'], value, config.now());
189
+ if (accepted && config.onVerified) {
190
+ // Evidence failure cannot undo the durable choice or make a replay eligible.
191
+ try {
192
+ config.onVerified(row.workspace, row.credentialKey, 'interaction.choice');
193
+ }
194
+ catch {
195
+ return { accepted: true };
196
+ }
197
+ }
198
+ return { accepted };
199
+ }
200
+ catch {
201
+ return { accepted: false };
202
+ }
203
+ }
204
+ //# sourceMappingURL=actions-interactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions-interactions.js","sourceRoot":"","sources":["../../../src/slack/actions-interactions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,308 @@
1
+ import { isDeepStrictEqual } from 'node:util';
2
+ import { defineAction } from './action-types.js';
3
+ import { baseAction, boundedInteger, enumValue, finiteNumber, opaqueId, onlyFields, optionalText, requiredText, strictRecord } from './task-input.js';
4
+ import { acknowledgedFailure, fileAccess, preserve, record, responseId } from './actions-resources.js';
5
+ import { redactOutboundText } from '../messaging/redact.js';
6
+ import { slackToolDenied } from './tool-access.js';
7
+ function invalid() { throw slackToolDenied('invalid_list_action', 400); }
8
+ const aclMethods = ['files.info', 'users.info'];
9
+ const aclScopes = ['files:read', 'users:read'];
10
+ function parseFields(value) {
11
+ if (!Array.isArray(value) || value.length < 1 || value.length > 20)
12
+ return invalid();
13
+ const ids = new Set();
14
+ return value.map(item => {
15
+ const raw = strictRecord(item);
16
+ onlyFields(raw, ['columnId', 'type', 'value']);
17
+ const columnId = opaqueId(raw['columnId']);
18
+ const type = enumValue(raw['type'], ['text', 'number', 'checkbox', 'date', 'user']);
19
+ if (ids.has(columnId))
20
+ invalid();
21
+ ids.add(columnId);
22
+ let result;
23
+ if (type === 'number')
24
+ result = finiteNumber(raw['value']);
25
+ else if (type === 'checkbox') {
26
+ if (typeof raw['value'] !== 'boolean')
27
+ invalid();
28
+ result = raw['value'];
29
+ }
30
+ else if (type === 'user') {
31
+ if (!Array.isArray(raw['value']) || raw['value'].length > 20 || raw['value'].length < 1)
32
+ invalid();
33
+ result = raw['value'].map(v => { const id = opaqueId(v); if (!/^[UW][A-Z0-9]+$/.test(id))
34
+ invalid(); return id; });
35
+ if (new Set(result).size !== result.length)
36
+ invalid();
37
+ }
38
+ else {
39
+ result = requiredText(raw['value'], type === 'date' ? 10 : 2000);
40
+ if (type === 'date' && (!/^\d{4}-\d{2}-\d{2}$/.test(result) || !Number.isFinite(Date.parse(result)) || new Date(result).toISOString().slice(0, 10) !== result))
41
+ invalid();
42
+ if (type === 'text')
43
+ result = redactOutboundText(result);
44
+ }
45
+ return { columnId, type, value: result };
46
+ });
47
+ }
48
+ function wire(field) {
49
+ const base = { column_id: field.columnId };
50
+ if (field.type === 'text')
51
+ return { ...base, rich_text: [{ type: 'rich_text', elements: [{ type: 'rich_text_section', elements: [{ type: 'text', text: field.value }] }] }] };
52
+ if (field.type === 'checkbox')
53
+ return { ...base, checkbox: field.value };
54
+ return { ...base, [field.type]: field.type === 'user' ? field.value : [field.value] };
55
+ }
56
+ function plainRich(value) {
57
+ if (!Array.isArray(value) || value.length !== 1)
58
+ return undefined;
59
+ const block = record(value[0]);
60
+ const sections = block?.['elements'];
61
+ if (block?.['type'] !== 'rich_text' || !Array.isArray(sections) || sections.length !== 1)
62
+ return undefined;
63
+ const section = record(sections[0]);
64
+ const elements = section?.['elements'];
65
+ if (section?.['type'] !== 'rich_text_section' || !Array.isArray(elements) || elements.length > 2000)
66
+ return undefined;
67
+ let text = '';
68
+ for (const node of elements) {
69
+ const e = record(node);
70
+ if (!e || e['type'] !== 'text' || typeof e['text'] !== 'string' || Object.keys(e).some(k => !['type', 'text', 'style'].includes(k)))
71
+ return undefined;
72
+ if (e['style'] !== undefined) {
73
+ const style = record(e['style']);
74
+ if (!style || Object.entries(style).some(([k, v]) => !['bold', 'italic', 'strike', 'code'].includes(k) || v !== false))
75
+ return undefined;
76
+ }
77
+ text += e['text'];
78
+ if (text.length > 2000)
79
+ return undefined;
80
+ }
81
+ return text;
82
+ }
83
+ function matches(item, listId, rowId, fields) {
84
+ const row = record(item);
85
+ const stored = row?.['fields'];
86
+ if (row?.['id'] !== rowId || row['list_id'] !== listId || !Array.isArray(stored) || stored.length > 100)
87
+ return false;
88
+ return fields.every(field => {
89
+ const found = stored.map(record).filter(f => f?.['column_id'] === field.columnId);
90
+ if (found.length !== 1)
91
+ return false;
92
+ const value = found[0];
93
+ if (field.type === 'text')
94
+ return plainRich(value['rich_text']) === field.value;
95
+ const expected = field.type === 'user' ? field.value : [field.value];
96
+ return isDeepStrictEqual(value[field.type], expected);
97
+ });
98
+ }
99
+ async function info(ctx, listId, rowId) {
100
+ const read = await ctx.api('slackLists.items.info', { list_id: listId, id: rowId });
101
+ ctx.checkCurrent();
102
+ const row = record(read.data?.['record']);
103
+ return read.ok && row?.['id'] === rowId && row['list_id'] === listId ? row : undefined;
104
+ }
105
+ function schemaMatches(file, fields) {
106
+ const schema = record(file['list_metadata'])?.['schema'];
107
+ if (!Array.isArray(schema) || schema.length > 100)
108
+ return false;
109
+ return fields.every(field => {
110
+ const columns = schema.map(record).filter(c => c?.['id'] === field.columnId);
111
+ const allowed = { text: ['text'], number: ['number'], checkbox: ['checkbox', 'todo_completed', 'completed'], date: ['date', 'todo_due_date'], user: ['user', 'todo_assignee'] };
112
+ return columns.length === 1 && allowed[field.type].includes(String(columns[0]?.['type']));
113
+ });
114
+ }
115
+ function publicSchema(file) {
116
+ const schema = record(record(file)?.['list_metadata'])?.['schema'];
117
+ if (!Array.isArray(schema) || schema.length > 100)
118
+ return [];
119
+ return schema.slice(0, 20).flatMap(value => {
120
+ const column = record(value);
121
+ const id = responseId(column?.['id']);
122
+ if (!column || !id || typeof column['type'] !== 'string')
123
+ return [];
124
+ return [{ id, type: column['type'].slice(0, 32),
125
+ name: typeof column['name'] === 'string' ? redactOutboundText(column['name']).slice(0, 64) : undefined,
126
+ key: typeof column['key'] === 'string' ? redactOutboundText(column['key']).slice(0, 64) : undefined,
127
+ primary: column['is_primary_column'] === true }];
128
+ });
129
+ }
130
+ function readFields(value) {
131
+ if (!Array.isArray(value) || value.length > 100)
132
+ return { fields: [], unsupported: true };
133
+ const fields = [];
134
+ let unsupported = false;
135
+ for (const entry of value) {
136
+ const field = record(entry);
137
+ const columnId = responseId(field?.['column_id']);
138
+ if (!field || !columnId) {
139
+ unsupported = true;
140
+ continue;
141
+ }
142
+ const keys = ['rich_text', 'number', 'checkbox', 'date', 'user'].filter(key => field[key] !== undefined);
143
+ if (keys.length !== 1) {
144
+ unsupported = true;
145
+ continue;
146
+ }
147
+ const key = keys[0];
148
+ const raw = field[key];
149
+ if (key === 'rich_text') {
150
+ const text = plainRich(raw);
151
+ if (text === undefined) {
152
+ unsupported = true;
153
+ continue;
154
+ }
155
+ fields.push({ columnId, type: 'text', value: redactOutboundText(text) });
156
+ }
157
+ else if (Array.isArray(raw) && raw.length <= 20 && raw.every(v => key === 'number' ? typeof v === 'number' && Number.isFinite(v) : key === 'checkbox' ? typeof v === 'boolean'
158
+ : typeof v === 'string' && (key === 'user' ? /^[UW][A-Z0-9]+$/.test(v) : /^\d{4}-\d{2}-\d{2}$/.test(v)))) {
159
+ fields.push({ columnId, type: key, value: raw });
160
+ }
161
+ else
162
+ unsupported = true;
163
+ }
164
+ return { fields, unsupported };
165
+ }
166
+ export const listActions = [
167
+ defineAction({ operation: 'list.create', scopes: ['lists:write', 'lists:read', ...aclScopes], methods: ['slackLists.create', 'slackLists.access.set', 'slackLists.items.list', ...aclMethods], mutates: true,
168
+ parse(raw) { return { ...baseAction(raw, ['name'], true), name: redactOutboundText(requiredText(raw['name'], 256)) }; },
169
+ execute(ctx, args) {
170
+ const ids = [];
171
+ return preserve(ctx, ids, async () => {
172
+ ctx.checkCurrent();
173
+ const created = await ctx.api('slackLists.create', { name: args.name, schema: [{ key: 'name', name: 'Name', type: 'text', is_primary_column: true }] });
174
+ const id = responseId(created.data?.['list_id']);
175
+ if (id) {
176
+ ids.push(id);
177
+ ctx.remember('list', id);
178
+ }
179
+ ctx.checkCurrent();
180
+ if (!created.ok || !id)
181
+ return ctx.result('unknown', { creation: 'unconfirmed' }, ids);
182
+ let sharing = 'not_requested';
183
+ if (!ctx.operator) {
184
+ if (!/^[UW][A-Z0-9]+$/.test(ctx.actor))
185
+ return acknowledgedFailure(ctx, ids, 'requester_identity_unavailable');
186
+ const shared = await ctx.api('slackLists.access.set', { list_id: id, access_level: 'write', user_ids: [ctx.actor] });
187
+ ctx.checkCurrent();
188
+ if (!shared.ok)
189
+ return acknowledgedFailure(ctx, ids, 'sharing_unconfirmed');
190
+ sharing = 'acknowledged';
191
+ }
192
+ const file = await fileAccess(ctx, 'list', id, false);
193
+ if (!file)
194
+ return acknowledgedFailure(ctx, ids, 'requester_access_unverified');
195
+ const read = await ctx.api('slackLists.items.list', { list_id: id, include_list: true, limit: 100, archived: false });
196
+ ctx.checkCurrent();
197
+ const list = record(read.data?.['list']);
198
+ return ctx.result('partial', { creation: 'acknowledged', sharing, requesterView: 'not_checked',
199
+ metadata: read.ok && list?.['id'] === id && list['title'] === args.name ? 'verified' : 'not_checked',
200
+ columns: publicSchema(file), schemaCompleteness: 'partial' }, ids);
201
+ });
202
+ } }),
203
+ defineAction({ operation: 'list.read', scopes: ['lists:read', ...aclScopes], methods: ['slackLists.items.list', ...aclMethods], mutates: false,
204
+ parse(raw) { return { ...baseAction(raw, ['listId', 'cursor', 'limit'], false), listId: opaqueId(raw['listId']), cursor: optionalText(raw['cursor'], 2048), limit: raw['limit'] === undefined ? 100 : boundedInteger(raw['limit'], 1, 100) }; },
205
+ execute(ctx, args) {
206
+ return preserve(ctx, [], async () => {
207
+ const file = await fileAccess(ctx, 'list', args.listId, false);
208
+ if (!file)
209
+ return ctx.fail('resource_requester_access_denied', 403);
210
+ const read = await ctx.api('slackLists.items.list', { list_id: args.listId, include_list: true, limit: args.limit, archived: false, ...(args.cursor ? { cursor: args.cursor } : {}) });
211
+ ctx.checkCurrent();
212
+ if (!read.ok || !Array.isArray(read.data?.['items']) || read.data['items'].length > args.limit)
213
+ return ctx.fail('list_read_unavailable', 502);
214
+ if (!await fileAccess(ctx, 'list', args.listId, false))
215
+ return ctx.fail('resource_requester_access_denied', 403);
216
+ const items = read.data['items'].map(record);
217
+ if (items.some(row => !row || row['list_id'] !== args.listId || !responseId(row['id'])))
218
+ return ctx.fail('list_read_invalid', 502);
219
+ // Project supported typed fields only; cap the complete action receipt independently.
220
+ const cursor = record(read.data['response_metadata'])?.['next_cursor'];
221
+ if (typeof cursor !== 'string' || cursor.length > 2048)
222
+ return ctx.fail('list_cursor_unavailable', 502);
223
+ const projected = [];
224
+ let bytes = 0;
225
+ let truncated = false;
226
+ let unsupported = false;
227
+ for (const row of items) {
228
+ const parsed = readFields(row['fields']);
229
+ unsupported ||= parsed.unsupported;
230
+ const item = { id: row['id'], fields: parsed.fields, updatedTimestamp: typeof row['updated_timestamp'] === 'string' ? row['updated_timestamp'].slice(0, 32) : undefined };
231
+ bytes += Buffer.byteLength(JSON.stringify(item));
232
+ if (bytes > 8000) {
233
+ truncated = true;
234
+ break;
235
+ }
236
+ projected.push(item);
237
+ }
238
+ return ctx.result('partial', { items: projected, columns: publicSchema(file), schemaCompleteness: 'partial', nextCursor: cursor, hasMore: cursor !== '', truncated, unsupported,
239
+ content: 'partial', requesterView: 'not_checked' }, [args.listId]);
240
+ });
241
+ } }),
242
+ ...['add', 'update'].map(mode => defineAction({ operation: `list.item.${mode}`, scopes: ['lists:write', 'lists:read', ...aclScopes],
243
+ methods: [...aclMethods, 'slackLists.items.info', mode === 'add' ? 'slackLists.items.create' : 'slackLists.items.update'], mutates: true,
244
+ parse(raw) {
245
+ return { ...baseAction(raw, mode === 'add' ? ['listId', 'fields'] : ['listId', 'rowId', 'fields', 'updatedTimestamp'], true),
246
+ listId: opaqueId(raw['listId']), fields: parseFields(raw['fields']), rowId: mode === 'update' ? opaqueId(raw['rowId']) : undefined,
247
+ updatedTimestamp: mode === 'update' ? optionalText(raw['updatedTimestamp'], 32) : undefined };
248
+ },
249
+ execute(ctx, args) {
250
+ const ids = [];
251
+ return preserve(ctx, ids, async () => {
252
+ let file = await fileAccess(ctx, 'list', args.listId, true);
253
+ if (!file)
254
+ return ctx.fail('resource_requester_write_denied', 403);
255
+ if (!schemaMatches(file, args.fields))
256
+ return ctx.fail('list_schema_unsupported', 400);
257
+ if (args.rowId) {
258
+ const before = await info(ctx, args.listId, args.rowId);
259
+ if (!before)
260
+ return ctx.fail('list_row_unavailable', 404);
261
+ if (args.updatedTimestamp !== undefined && before['updated_timestamp'] !== args.updatedTimestamp)
262
+ return ctx.fail('list_row_changed', 409);
263
+ // Recheck ACL after the precondition await, immediately before dispatch.
264
+ file = await fileAccess(ctx, 'list', args.listId, true);
265
+ if (!file || !schemaMatches(file, args.fields))
266
+ return ctx.fail('resource_requester_write_denied', 403);
267
+ }
268
+ ctx.checkCurrent();
269
+ const beforeDispatch = async () => {
270
+ const fresh = await fileAccess(ctx, 'list', args.listId, true);
271
+ if (!fresh || !schemaMatches(fresh, args.fields))
272
+ throw slackToolDenied('resource_requester_write_denied', 403);
273
+ ctx.checkCurrent();
274
+ };
275
+ let rowId = args.rowId;
276
+ if (mode === 'add') {
277
+ const created = await ctx.api('slackLists.items.create', { list_id: args.listId, initial_fields: args.fields.map(wire) }, beforeDispatch);
278
+ const item = record(created.data?.['item']);
279
+ rowId = responseId(item?.['id']);
280
+ if (rowId) {
281
+ ids.push(args.listId, rowId);
282
+ if (item?.['list_id'] === args.listId)
283
+ ctx.remember('list.item', rowId, { listId: args.listId });
284
+ }
285
+ ctx.checkCurrent();
286
+ if (!created.ok || !rowId || item?.['list_id'] !== args.listId)
287
+ return ctx.result('unknown', { creation: 'unconfirmed' }, ids);
288
+ }
289
+ else {
290
+ ids.push(args.listId, rowId);
291
+ const updated = await ctx.api('slackLists.items.update', { list_id: args.listId, cells: args.fields.map(field => ({ ...wire(field), row_id: rowId })) }, beforeDispatch);
292
+ ctx.checkCurrent();
293
+ if (!updated.ok)
294
+ return ctx.result('unknown', { update: 'unconfirmed' }, ids);
295
+ }
296
+ const after = await info(ctx, args.listId, rowId);
297
+ if (!after)
298
+ return acknowledgedFailure(ctx, ids, 'readback_unavailable');
299
+ if (!await fileAccess(ctx, 'list', args.listId, true))
300
+ return acknowledgedFailure(ctx, ids, 'requester_access_changed');
301
+ if (!matches(after, args.listId, rowId, args.fields))
302
+ return ctx.fail('list_typed_content_mismatch', 502, ids);
303
+ return ctx.result('verified', { mutation: 'acknowledged', typedContent: 'verified', requesterAcl: 'write', requesterView: 'not_checked',
304
+ updatedTimestamp: typeof after['updated_timestamp'] === 'string' ? after['updated_timestamp'] : undefined }, ids);
305
+ });
306
+ } })),
307
+ ];
308
+ //# sourceMappingURL=actions-lists.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions-lists.js","sourceRoot":"","sources":["../../../src/slack/actions-lists.ts"],"names":[],"mappings":"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"}