cli-jaw 2.2.19 → 2.2.21

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 (440) hide show
  1. package/README.md +97 -3
  2. package/dist/bin/commands/dispatch.js +62 -16
  3. package/dist/bin/commands/dispatch.js.map +1 -1
  4. package/dist/server.js +14 -0
  5. package/dist/server.js.map +1 -1
  6. package/dist/src/agent/spawn/process-kill.js +96 -2
  7. package/dist/src/agent/spawn/process-kill.js.map +1 -1
  8. package/dist/src/agent/spawn.js +34 -65
  9. package/dist/src/agent/spawn.js.map +1 -1
  10. package/dist/src/bgtask/runner.js +26 -21
  11. package/dist/src/bgtask/runner.js.map +1 -1
  12. package/dist/src/cli/acp-client.js +11 -5
  13. package/dist/src/cli/acp-client.js.map +1 -1
  14. package/dist/src/cli/cli-status-worker.js +22 -3
  15. package/dist/src/cli/cli-status-worker.js.map +1 -1
  16. package/dist/src/cli/cli-status.js +7 -1
  17. package/dist/src/cli/cli-status.js.map +1 -1
  18. package/dist/src/cli/employee-handler.js +3 -2
  19. package/dist/src/cli/employee-handler.js.map +1 -1
  20. package/dist/src/cli/handlers.js +1 -0
  21. package/dist/src/cli/handlers.js.map +1 -1
  22. package/dist/src/code-mode/acp-host.js +22 -10
  23. package/dist/src/code-mode/acp-host.js.map +1 -1
  24. package/dist/src/core/config.js +23 -0
  25. package/dist/src/core/config.js.map +1 -1
  26. package/dist/src/core/db.js +16 -0
  27. package/dist/src/core/db.js.map +1 -1
  28. package/dist/src/core/dispatch-approval-ingress.js +59 -0
  29. package/dist/src/core/dispatch-approval-ingress.js.map +1 -0
  30. package/dist/src/core/dispatch-approval.js +135 -0
  31. package/dist/src/core/dispatch-approval.js.map +1 -0
  32. package/dist/src/core/employees.js +22 -4
  33. package/dist/src/core/employees.js.map +1 -1
  34. package/dist/src/core/runtime-settings.js +27 -0
  35. package/dist/src/core/runtime-settings.js.map +1 -1
  36. package/dist/src/core/serve-log.js +66 -0
  37. package/dist/src/core/serve-log.js.map +1 -0
  38. package/dist/src/core/settings-merge.js +10 -1
  39. package/dist/src/core/settings-merge.js.map +1 -1
  40. package/dist/src/core/windows-shell.js +63 -0
  41. package/dist/src/core/windows-shell.js.map +1 -0
  42. package/dist/src/discord/bot.js +214 -147
  43. package/dist/src/discord/bot.js.map +1 -1
  44. package/dist/src/discord/gateway-supervisor.js +303 -0
  45. package/dist/src/discord/gateway-supervisor.js.map +1 -0
  46. package/dist/src/discord/rest-scheduler.js +448 -0
  47. package/dist/src/discord/rest-scheduler.js.map +1 -0
  48. package/dist/src/discord/send-only-client.js +90 -43
  49. package/dist/src/discord/send-only-client.js.map +1 -1
  50. package/dist/src/manager/lifecycle.js +7 -2
  51. package/dist/src/manager/lifecycle.js.map +1 -1
  52. package/dist/src/manager/notes/capabilities.js +9 -7
  53. package/dist/src/manager/notes/capabilities.js.map +1 -1
  54. package/dist/src/memory/bootstrap.js +5 -1
  55. package/dist/src/memory/bootstrap.js.map +1 -1
  56. package/dist/src/memory/host-toolchain.js +156 -0
  57. package/dist/src/memory/host-toolchain.js.map +1 -0
  58. package/dist/src/messaging/channel-capabilities.js +30 -0
  59. package/dist/src/messaging/channel-capabilities.js.map +1 -0
  60. package/dist/src/messaging/delivery-outcome.js +73 -0
  61. package/dist/src/messaging/delivery-outcome.js.map +1 -0
  62. package/dist/src/messaging/draft-stream.js +154 -0
  63. package/dist/src/messaging/draft-stream.js.map +1 -0
  64. package/dist/src/messaging/runtime.js +3 -9
  65. package/dist/src/messaging/runtime.js.map +1 -1
  66. package/dist/src/messaging/send.js +40 -8
  67. package/dist/src/messaging/send.js.map +1 -1
  68. package/dist/src/messaging/types.js +22 -1
  69. package/dist/src/messaging/types.js.map +1 -1
  70. package/dist/src/notes/search.js +6 -4
  71. package/dist/src/notes/search.js.map +1 -1
  72. package/dist/src/prompt/builder.js +110 -6
  73. package/dist/src/prompt/builder.js.map +1 -1
  74. package/dist/src/prompt/conversation-context.js +23 -0
  75. package/dist/src/prompt/conversation-context.js.map +1 -0
  76. package/dist/src/prompt/templates/a1-system.md +28 -12
  77. package/dist/src/prompt/templates/control-system.md +19 -6
  78. package/dist/src/prompt/templates/employee.md +16 -3
  79. package/dist/src/routes/orchestrate.js +83 -0
  80. package/dist/src/routes/orchestrate.js.map +1 -1
  81. package/dist/src/security/path-guards.js +157 -27
  82. package/dist/src/security/path-guards.js.map +1 -1
  83. package/dist/src/slack/api.js +38 -5
  84. package/dist/src/slack/api.js.map +1 -1
  85. package/dist/src/slack/bot.js +244 -37
  86. package/dist/src/slack/bot.js.map +1 -1
  87. package/dist/src/slack/context.js +192 -0
  88. package/dist/src/slack/context.js.map +1 -0
  89. package/dist/src/slack/conversation.js +275 -0
  90. package/dist/src/slack/conversation.js.map +1 -0
  91. package/dist/src/slack/enrichment-cache.js +334 -0
  92. package/dist/src/slack/enrichment-cache.js.map +1 -0
  93. package/dist/src/slack/history.js +47 -8
  94. package/dist/src/slack/history.js.map +1 -1
  95. package/dist/src/slack/identity.js +99 -190
  96. package/dist/src/slack/identity.js.map +1 -1
  97. package/dist/src/slack/ingress.js +91 -3
  98. package/dist/src/slack/ingress.js.map +1 -1
  99. package/dist/src/slack/progress.js +39 -51
  100. package/dist/src/slack/progress.js.map +1 -1
  101. package/dist/src/slack/thread-tracker.js +88 -0
  102. package/dist/src/slack/thread-tracker.js.map +1 -1
  103. package/dist/src/telegram/bot.js +127 -56
  104. package/dist/src/telegram/bot.js.map +1 -1
  105. package/dist/src/telegram/update-offset.js +152 -0
  106. package/dist/src/telegram/update-offset.js.map +1 -0
  107. package/package.json +1 -1
  108. package/public/dist/assets/{AdvancedExport-c41zCkwB.js → AdvancedExport-IOkupLFE.js} +1 -1
  109. package/public/dist/assets/Agent-DtgCvkB_.js +1 -0
  110. package/public/dist/assets/{Browser-B52Bdaeu.js → Browser-J4TPo4bX.js} +1 -1
  111. package/public/dist/assets/{BrowserPanel-Bh3JpkZO.js → BrowserPanel-C0aa2gja.js} +1 -1
  112. package/public/dist/assets/{ChannelsDiscord-D9FLnZso.js → ChannelsDiscord-D4fD-9hP.js} +1 -1
  113. package/public/dist/assets/{ChannelsSlack-CVNKtoo4.js → ChannelsSlack-_KBwRonM.js} +1 -1
  114. package/public/dist/assets/{ChannelsTelegram-BOCOPrBc.js → ChannelsTelegram-tihzSWVE.js} +1 -1
  115. package/public/dist/assets/{CodeCanvas-CbfPP7Ad.js → CodeCanvas-CaeLVtZi.js} +2 -2
  116. package/public/dist/assets/{DashboardEmbeddingSection-DMgHZQnn.js → DashboardEmbeddingSection-DiqlLiLj.js} +1 -1
  117. package/public/dist/assets/{DashboardMeta-DennaaA_.js → DashboardMeta-Dsj8kEuW.js} +1 -1
  118. package/public/dist/assets/{DesignPanel-DcL369nB.js → DesignPanel-B8CAf6sH.js} +1 -1
  119. package/public/dist/assets/{DiffPanel-B_ljObDk.js → DiffPanel-BTZRq6eG.js} +1 -1
  120. package/public/dist/assets/{Display-hGuSn_W5.js → Display-nkXitDjD.js} +1 -1
  121. package/public/dist/assets/{DocPanel-K8A2pm_1.js → DocPanel-ogNttSee.js} +1 -1
  122. package/public/dist/assets/{Employees-B5YXk5ma.js → Employees-CU_1YnrA.js} +1 -1
  123. package/public/dist/assets/{FolderPanel-CV52EzwG.js → FolderPanel-D0w_zD66.js} +1 -1
  124. package/public/dist/assets/{HealthBadge-megTlF4n.js → HealthBadge-CUaJ1PQH.js} +1 -1
  125. package/public/dist/assets/{Heartbeat-DDmZARWw.js → Heartbeat-BeAP2bMO.js} +1 -1
  126. package/public/dist/assets/{InlineWarn-DDzeHxQw.js → InlineWarn-D-fmcQXD.js} +1 -1
  127. package/public/dist/assets/MarkdownRenderer-B6HbiZ6i.js +1 -0
  128. package/public/dist/assets/{MarkdownRenderer-CXrilOsG.js → MarkdownRenderer-Cd3kkg_s.js} +2 -2
  129. package/public/dist/assets/{Mcp-BHWnJ6SP.js → Mcp-2HD1qR7F.js} +1 -1
  130. package/public/dist/assets/{Memory-CUbviW7N.js → Memory-frrIhLly.js} +1 -1
  131. package/public/dist/assets/{MilkdownWysiwygEditor-BKOCDI4Z.js → MilkdownWysiwygEditor-BkEzO5cz.js} +1 -1
  132. package/public/dist/assets/{ModelProvider-ngg8xTuB.js → ModelProvider-DqUvwyZ6.js} +1 -1
  133. package/public/dist/assets/{Network-AWpSkALD.js → Network-DfzqHi9q.js} +1 -1
  134. package/public/dist/assets/{NotesGraphWorkspace-Dm1xUFl8.js → NotesGraphWorkspace-BRIiraP9.js} +1 -1
  135. package/public/dist/assets/{PanelLayoutProvider-XpTo-i_s.js → PanelLayoutProvider-B9fYsunp.js} +1 -1
  136. package/public/dist/assets/Permissions-ByUy_5DT.js +1 -0
  137. package/public/dist/assets/{Permissions-CnKt44dN.js → Permissions-RgyF1O6q.js} +1 -1
  138. package/public/dist/assets/{Profile-DnIE2ios.js → Profile-DXKtAzfg.js} +1 -1
  139. package/public/dist/assets/{Prompts-B9aKLall.js → Prompts-C7njPWCu.js} +1 -1
  140. package/public/dist/assets/{SpeechKeys-K4Be_o7z.js → SpeechKeys-B7SDWzo9.js} +1 -1
  141. package/public/dist/assets/{TelegramHub-CFwSkzHP.js → TelegramHub-C61X3f-H.js} +1 -1
  142. package/public/dist/assets/{TerminalPanel-CdlFZHAK.js → TerminalPanel-DlUFPyzc.js} +1 -1
  143. package/public/dist/assets/{TransportStatusChips-CjEySMis.js → TransportStatusChips-B0NR0ljO.js} +1 -1
  144. package/public/dist/assets/{app-is76CHGZ.js → app-DUbf-v7B.js} +4 -4
  145. package/public/dist/assets/architecture-7EHR7CIX-Byg-B8Sh.js +1 -0
  146. package/public/dist/assets/{architectureDiagram-3BPJPVTR-q8idz3H3.js → architectureDiagram-3BPJPVTR-DA7niVYs.js} +1 -1
  147. package/public/dist/assets/bgtask-badge-B8KhuBa7.js +1 -0
  148. package/public/dist/assets/{bgtask-badge-B0B1nXUs.js → bgtask-badge-jIH69Dp3.js} +1 -1
  149. package/public/dist/assets/{blockDiagram-GPEHLZMM-DGB0dsia.js → blockDiagram-GPEHLZMM-czRsW1WP.js} +1 -1
  150. package/public/dist/assets/{bounded-set-CFlZiEF4.js → bounded-set-DXkYOGnQ.js} +1 -1
  151. package/public/dist/assets/{c4Diagram-AAUBKEIU-ChP5YfVt.js → c4Diagram-AAUBKEIU-zoRyRo1y.js} +1 -1
  152. package/public/dist/assets/channel-Cr7Dmg2t.js +1 -0
  153. package/public/dist/assets/{chunk-2J33WTMH-D3OPoEHg.js → chunk-2J33WTMH-DMaZjiDe.js} +1 -1
  154. package/public/dist/assets/{chunk-3OPIFGDE-CULJ8ZHF.js → chunk-3OPIFGDE-fm0Uteda.js} +1 -1
  155. package/public/dist/assets/{chunk-4BX2VUAB-DGgktZYr.js → chunk-4BX2VUAB-DU36Vmpr.js} +1 -1
  156. package/public/dist/assets/{chunk-4EGX6M5U-BD3v8KR4.js → chunk-4EGX6M5U-CYPeQu4F.js} +1 -1
  157. package/public/dist/assets/chunk-55IACEB6-Dkm6BnqN.js +1 -0
  158. package/public/dist/assets/{chunk-5DO6E6H7-B-FbGqHn.js → chunk-5DO6E6H7-CIcLA1n6.js} +1 -1
  159. package/public/dist/assets/{chunk-5ZQYHXKU-DVpWOoGS.js → chunk-5ZQYHXKU-NjOvV6Nd.js} +1 -1
  160. package/public/dist/assets/{chunk-727SXJPM-CZjR7q6H.js → chunk-727SXJPM-CUOujQg0.js} +1 -1
  161. package/public/dist/assets/{chunk-AQP2D5EJ-BlGjnlsV.js → chunk-AQP2D5EJ-2nFXTQ0W.js} +1 -1
  162. package/public/dist/assets/{chunk-BR22UD5L-MK8KuB9X.js → chunk-BR22UD5L-BoyFFQuR.js} +1 -1
  163. package/public/dist/assets/{chunk-BSJP7CBP-ypXC4wBv.js → chunk-BSJP7CBP-B1MMwNrU.js} +1 -1
  164. package/public/dist/assets/{chunk-CSCIHK7Q-CmvetykJ.js → chunk-CSCIHK7Q-C0MOgWVt.js} +1 -1
  165. package/public/dist/assets/{chunk-FHYWG6QK-Do5csWDm.js → chunk-FHYWG6QK-CmUWtJPn.js} +1 -1
  166. package/public/dist/assets/{chunk-FMBD7UC4-BXpT25MP.js → chunk-FMBD7UC4-BEz4FhFn.js} +1 -1
  167. package/public/dist/assets/{chunk-KSCS5N6A-DtlfLqto.js → chunk-KSCS5N6A-B2XGqWQY.js} +1 -1
  168. package/public/dist/assets/{chunk-L5ZTLDWV-Czv9NkHn.js → chunk-L5ZTLDWV-CfZ2hrJ2.js} +1 -1
  169. package/public/dist/assets/{chunk-LZXEDZCA-vD7oFdiq.js → chunk-LZXEDZCA-BXuFCBsZ.js} +1 -1
  170. package/public/dist/assets/{chunk-MPE355IW-2ei0PVn0.js → chunk-MPE355IW-BdSiU-oV.js} +1 -1
  171. package/public/dist/assets/{chunk-MZUSXYTE-JO_qTk4K.js → chunk-MZUSXYTE-VYfI8Uwx.js} +1 -1
  172. package/public/dist/assets/{chunk-N66VUXT2-BXL-FniY.js → chunk-N66VUXT2-DJVNyglo.js} +1 -1
  173. package/public/dist/assets/{chunk-ND2GUHAM-B9SIO-4a.js → chunk-ND2GUHAM-1k8TCCsJ.js} +1 -1
  174. package/public/dist/assets/{chunk-NZK2D7GU-CqOo06-Z.js → chunk-NZK2D7GU-CkYWftT8.js} +1 -1
  175. package/public/dist/assets/{chunk-O5CBEL6O-BWbe_grt.js → chunk-O5CBEL6O-B5g0NbhD.js} +1 -1
  176. package/public/dist/assets/{chunk-PUPMXCY4-aFTMGBaR.js → chunk-PUPMXCY4-DJKmByz8.js} +1 -1
  177. package/public/dist/assets/chunk-QZHKN3VN-C6ktI6EQ.js +1 -0
  178. package/public/dist/assets/{chunk-UIBZB4QT-S8EH0jZR.js → chunk-UIBZB4QT-DgLbPJ3_.js} +1 -1
  179. package/public/dist/assets/{chunk-WCWK7LTN-EgrNk7Dj.js → chunk-WCWK7LTN-DWxi0w0a.js} +1 -1
  180. package/public/dist/assets/chunk-WU5MYG2G-Cwe6QZ3_.js +1 -0
  181. package/public/dist/assets/{chunk-XPW4576I-8oydVjY6.js → chunk-XPW4576I-CaTDAC52.js} +1 -1
  182. package/public/dist/assets/classDiagram-4FO5ZUOK-BzLBk9sv.js +1 -0
  183. package/public/dist/assets/classDiagram-v2-Q7XG4LA2-9K8wUz3g.js +1 -0
  184. package/public/dist/assets/{copy-text-BDs2wKjA.js → copy-text-Dy0kfmb9.js} +1 -1
  185. package/public/dist/assets/{cose-bilkent-S5V4N54A-PNmvcq_6.js → cose-bilkent-S5V4N54A-B9Tcz6qW.js} +1 -1
  186. package/public/dist/assets/{dagre-BM42HDAG-BP_m3uo9.js → dagre-BM42HDAG-OH37BMnf.js} +1 -1
  187. package/public/dist/assets/{dagre-Ct2n78X9.js → dagre-BsKKQnyU.js} +1 -1
  188. package/public/dist/assets/{diagram-2AECGRRQ-DhgfR-ol.js → diagram-2AECGRRQ-B1t73Wn1.js} +1 -1
  189. package/public/dist/assets/{diagram-5GNKFQAL-BRLvmdeK.js → diagram-5GNKFQAL-DBGIcSxH.js} +1 -1
  190. package/public/dist/assets/{diagram-KO2AKTUF-Co3C18-Q.js → diagram-KO2AKTUF-uRuKS97A.js} +1 -1
  191. package/public/dist/assets/{diagram-LMA3HP47-3SwoWQij.js → diagram-LMA3HP47-XMEHnr3B.js} +1 -1
  192. package/public/dist/assets/{diagram-OG6HWLK6-bjEryAd3.js → diagram-OG6HWLK6-B_vRUJSJ.js} +1 -1
  193. package/public/dist/assets/{dist-BvQlb9-o.js → dist-BCCaGGDY.js} +1 -1
  194. package/public/dist/assets/{dist-CvzAXxlb.js → dist-BPE4W9iX.js} +1 -1
  195. package/public/dist/assets/{dist-CFU9RsAu.js → dist-BQMBTYXL.js} +1 -1
  196. package/public/dist/assets/{dist-BlMOeJym.js → dist-BaPGPaX4.js} +1 -1
  197. package/public/dist/assets/{dist-B6T-R4xY.js → dist-Bg80xGMJ.js} +1 -1
  198. package/public/dist/assets/{dist-CS1XLdz3.js → dist-BspKh_Zg.js} +1 -1
  199. package/public/dist/assets/{dist-qUky5WRy.js → dist-CBnlLSQZ.js} +1 -1
  200. package/public/dist/assets/{dist-BMC_dTfR.js → dist-CD7tjeNO.js} +1 -1
  201. package/public/dist/assets/{dist-w2YzIhc5.js → dist-CINTuhik.js} +1 -1
  202. package/public/dist/assets/{dist-cBBDKBli.js → dist-CTpw6PFT.js} +1 -1
  203. package/public/dist/assets/{dist-BqzMcuh8.js → dist-CczLsP0o.js} +1 -1
  204. package/public/dist/assets/{dist-ph7PUr0c.js → dist-CdfDDy4r.js} +1 -1
  205. package/public/dist/assets/{dist-D8SW_REQ.js → dist-CgIOBybm.js} +1 -1
  206. package/public/dist/assets/dist-Cl_pRobr.js +1 -0
  207. package/public/dist/assets/{dist-DTcoHNXr.js → dist-CruwQXwE.js} +1 -1
  208. package/public/dist/assets/{dist-BDPUxeoi.js → dist-CuL30i1H.js} +1 -1
  209. package/public/dist/assets/{dist-DMZVNaIe.js → dist-CvE8Qa9r.js} +1 -1
  210. package/public/dist/assets/{dist-B8V2LYzt.js → dist-Cy3mcP1e.js} +1 -1
  211. package/public/dist/assets/{dist-C7pD0dEn.js → dist-CzCFEnHw.js} +1 -1
  212. package/public/dist/assets/{dist-DStWZVZ0.js → dist-D2h9T4I9.js} +1 -1
  213. package/public/dist/assets/{dist-DmjSXJAP.js → dist-D3ShDeDU.js} +1 -1
  214. package/public/dist/assets/{dist-CC2vK_6S.js → dist-D8Zky4R1.js} +1 -1
  215. package/public/dist/assets/{dist-DN-hkAIC.js → dist-DKd_hdkE.js} +1 -1
  216. package/public/dist/assets/{dist-CjzfPsGt.js → dist-DLOg6n0b.js} +1 -1
  217. package/public/dist/assets/{dist-DdJuxxG7.js → dist-DS7cuuIk.js} +1 -1
  218. package/public/dist/assets/dist-DW0I56_o.js +1 -0
  219. package/public/dist/assets/{dist-BSf40pae.js → dist-JnCmAxGR.js} +1 -1
  220. package/public/dist/assets/{dist-DhgwoIqj.js → dist-TombgBki.js} +1 -1
  221. package/public/dist/assets/dist-hBRIxDzG.js +1 -0
  222. package/public/dist/assets/dist-z5Z70wW8.js +1 -0
  223. package/public/dist/assets/{dockerfile-C0jniLkw.js → dockerfile-DkX5AHzr.js} +1 -1
  224. package/public/dist/assets/{employees-eiW0cC8z.js → employees-BNy8a6XX.js} +1 -1
  225. package/public/dist/assets/{erDiagram-TEJ5UH35-DQBxHU1q.js → erDiagram-TEJ5UH35-CTHxg4ER.js} +1 -1
  226. package/public/dist/assets/{error-normalize-BzeO0SXE.js → error-normalize-CLRJh19F.js} +1 -1
  227. package/public/dist/assets/eventmodeling-FCH6USID-LckY84Wp.js +1 -0
  228. package/public/dist/assets/{factor-nzjoQ9cK.js → factor-Xro2mWdw.js} +1 -1
  229. package/public/dist/assets/{fields-zkeByFQW.js → fields-BwOMlwS0.js} +1 -1
  230. package/public/dist/assets/{flowDiagram-I6XJVG4X-BN90fCt5.js → flowDiagram-I6XJVG4X-DgCs6PPU.js} +1 -1
  231. package/public/dist/assets/{ganttDiagram-6RSMTGT7-B-JAlIhh.js → ganttDiagram-6RSMTGT7-DGjdFJRc.js} +1 -1
  232. package/public/dist/assets/gitGraph-WXDBUCRP-DXhEIZXY.js +1 -0
  233. package/public/dist/assets/{gitGraphDiagram-PVQCEYII-CLL2G5U-.js → gitGraphDiagram-PVQCEYII-DvCWiClL.js} +1 -1
  234. package/public/dist/assets/{graphlib-B6dRm8vZ.js → graphlib-B06FTUqA.js} +1 -1
  235. package/public/dist/assets/{iframe-renderer-C7qQJX4c.js → iframe-renderer-C6Zwg9w4.js} +2 -2
  236. package/public/dist/assets/iframe-renderer-DBmV8gCQ.js +1 -0
  237. package/public/dist/assets/info-J43DQDTF-iXM3vzuR.js +1 -0
  238. package/public/dist/assets/{infoDiagram-5YYISTIA-CftYDPfc.js → infoDiagram-5YYISTIA-DxkbyTf_.js} +1 -1
  239. package/public/dist/assets/{ishikawaDiagram-YF4QCWOH-BVa5AJbz.js → ishikawaDiagram-YF4QCWOH-fyJrRZTW.js} +1 -1
  240. package/public/dist/assets/javascript-DZFdG8BN.js +1 -0
  241. package/public/dist/assets/{journeyDiagram-JHISSGLW-BeUKm6ME.js → journeyDiagram-JHISSGLW-Dd6CvR-c.js} +1 -1
  242. package/public/dist/assets/{kanban-definition-UN3LZRKU-K5DYNY4p.js → kanban-definition-UN3LZRKU-C2ZH4LXA.js} +1 -1
  243. package/public/dist/assets/{manager-Bjuh1jpq.js → manager-DzCR6Pam.js} +4 -4
  244. package/public/dist/assets/{memory--Q8Tb5SZ.js → memory-C4O44HMr.js} +1 -1
  245. package/public/dist/assets/memory-Dt_Ji6aP.js +1 -0
  246. package/public/dist/assets/mermaid-loader-CylkLQP5.js +1 -0
  247. package/public/dist/assets/{mermaid-parser.core-Cz70RgAa.js → mermaid-parser.core-C-9KB617.js} +1 -1
  248. package/public/dist/assets/{mermaid.core-Dj5GOPe1.js → mermaid.core-8XY13b72.js} +2 -2
  249. package/public/dist/assets/mermaid.core-BEuf6y5_.js +1 -0
  250. package/public/dist/assets/{message-history-CfAHmCDW.js → message-history-DCxD21J1.js} +1 -1
  251. package/public/dist/assets/message-history-DyISauiv.js +1 -0
  252. package/public/dist/assets/{mindmap-definition-RKZ34NQL-PsH0E_3e.js → mindmap-definition-RKZ34NQL-DUQBUbUA.js} +1 -1
  253. package/public/dist/assets/{nsis-BI3I3OhH.js → nsis-iX94j4T9.js} +1 -1
  254. package/public/dist/assets/packet-YPE3B663-SclsNpNx.js +1 -0
  255. package/public/dist/assets/{page-shell-LF7vVVfG.js → page-shell-GpE8A-FA.js} +1 -1
  256. package/public/dist/assets/pie-LRSECV5Y-CF43gDO6.js +1 -0
  257. package/public/dist/assets/{pieDiagram-4H26LBE5-Dtwtlr0z.js → pieDiagram-4H26LBE5-ChOXpmZ5.js} +1 -1
  258. package/public/dist/assets/{pug-DHfNwv1w.js → pug-C8nPBT90.js} +1 -1
  259. package/public/dist/assets/{quadrantDiagram-W4KKPZXB-CAFUbaV6.js → quadrantDiagram-W4KKPZXB-lbpz07e4.js} +1 -1
  260. package/public/dist/assets/radar-GUYGQ44K-BsylzLX_.js +1 -0
  261. package/public/dist/assets/{render-BDso7Yb5.js → render-A--hkukv.js} +2 -2
  262. package/public/dist/assets/{requirementDiagram-4Y6WPE33-CvBM4AjK.js → requirementDiagram-4Y6WPE33-CrApoE_l.js} +1 -1
  263. package/public/dist/assets/{sankeyDiagram-5OEKKPKP-cordQgRs.js → sankeyDiagram-5OEKKPKP-Df1lU-mT.js} +1 -1
  264. package/public/dist/assets/{sequenceDiagram-3UESZ5HK-DDAqRdga.js → sequenceDiagram-3UESZ5HK-CelQN5jY.js} +1 -1
  265. package/public/dist/assets/settings-3ZdoKHIf.js +56 -0
  266. package/public/dist/assets/settings-C6Pku2GC.js +1 -0
  267. package/public/dist/assets/{settings-core-BxuFkt4a.js → settings-core-CQe1uP6x.js} +17 -17
  268. package/public/dist/assets/settings-core-DqwLJkgP.js +1 -0
  269. package/public/dist/assets/settings-types-DPhhM-cj.js +1 -0
  270. package/public/dist/assets/{sidebar-BNT58qR0.js → sidebar-DxFp_449.js} +3 -3
  271. package/public/dist/assets/{skills-CwRBcm3m.js → skills-BU4q8Q8n.js} +1 -1
  272. package/public/dist/assets/skills-x2gH-1Ry.js +1 -0
  273. package/public/dist/assets/{slash-commands-cm0U58n7.js → slash-commands-BiXOgZ5B.js} +1 -1
  274. package/public/dist/assets/slash-commands-s8eR7Kd1.js +1 -0
  275. package/public/dist/assets/{stateDiagram-AJRCARHV-DUaoSRgZ.js → stateDiagram-AJRCARHV-CeyXWXrg.js} +1 -1
  276. package/public/dist/assets/stateDiagram-v2-BHNVJYJU-Bhb8zTjh.js +1 -0
  277. package/public/dist/assets/{timeline-definition-PNZ67QCA-D85QNy9b.js → timeline-definition-PNZ67QCA-DP0lPzQ_.js} +1 -1
  278. package/public/dist/assets/{trace-drawer-BuwO4m2P.js → trace-drawer-2BTQCor6.js} +1 -1
  279. package/public/dist/assets/treeView-BLDUP644-DHq0vQpf.js +1 -0
  280. package/public/dist/assets/treemap-LRROVOQU-vKngXIla.js +1 -0
  281. package/public/dist/assets/ui-CB0L33o0.js +1 -0
  282. package/public/dist/assets/{ui-C-LHMki1.js → ui-Csy42uNW.js} +1 -1
  283. package/public/dist/assets/{vennDiagram-CIIHVFJN-CQSILdx8.js → vennDiagram-CIIHVFJN-WB9mzv1f.js} +1 -1
  284. package/public/dist/assets/wardley-L42UT6IY-B1jQOSA5.js +1 -0
  285. package/public/dist/assets/{wardleyDiagram-YWT4CUSO-BZEVMlJ4.js → wardleyDiagram-YWT4CUSO-CapVnCz5.js} +1 -1
  286. package/public/dist/assets/{wiki-link-suggestions-Dp6kBQVu.js → wiki-link-suggestions-cvpqJp6c.js} +1 -1
  287. package/public/dist/assets/{xychartDiagram-2RQKCTM6-C8573Tgs.js → xychartDiagram-2RQKCTM6-DduDB3Cd.js} +1 -1
  288. package/public/dist/index.html +1 -1
  289. package/public/dist/manager/index.html +1 -1
  290. package/public/js/features/settings-cli-status.ts +11 -5
  291. package/public/js/features/settings-types.ts +35 -3
  292. package/public/manager/src/settings/cli-status-polling.ts +84 -0
  293. package/public/manager/src/settings/pages/Agent.tsx +111 -16
  294. package/scripts/install-officecli.ps1 +38 -2
  295. package/scripts/install.ps1 +1 -1
  296. package/public/dist/assets/Agent-nMPZsMfN.js +0 -1
  297. package/public/dist/assets/MarkdownRenderer-DZVh_xX2.js +0 -1
  298. package/public/dist/assets/Permissions-DNT0TxYL.js +0 -1
  299. package/public/dist/assets/architecture-7EHR7CIX-D-6Nx315.js +0 -1
  300. package/public/dist/assets/bgtask-badge-B2jUZ5mC.js +0 -1
  301. package/public/dist/assets/channel-ByNDsZsH.js +0 -1
  302. package/public/dist/assets/chunk-55IACEB6-CQFLXxVc.js +0 -1
  303. package/public/dist/assets/chunk-QZHKN3VN-Becu19mF.js +0 -1
  304. package/public/dist/assets/chunk-WU5MYG2G-CkoHFn0F.js +0 -1
  305. package/public/dist/assets/classDiagram-4FO5ZUOK-DVGoKviY.js +0 -1
  306. package/public/dist/assets/classDiagram-v2-Q7XG4LA2-BIZeptY-.js +0 -1
  307. package/public/dist/assets/dist-BmXnOAlo.js +0 -1
  308. package/public/dist/assets/dist-DLY5I6dK.js +0 -1
  309. package/public/dist/assets/dist-DPHcMCqI.js +0 -1
  310. package/public/dist/assets/dist-xHOEvyuU.js +0 -1
  311. package/public/dist/assets/eventmodeling-FCH6USID-BB1OVDLb.js +0 -1
  312. package/public/dist/assets/gitGraph-WXDBUCRP-DAWTa5Fn.js +0 -1
  313. package/public/dist/assets/iframe-renderer-D7PB_yrC.js +0 -1
  314. package/public/dist/assets/info-J43DQDTF-C530y5-j.js +0 -1
  315. package/public/dist/assets/javascript-DbM-pSY-.js +0 -1
  316. package/public/dist/assets/memory-rsKN0aa2.js +0 -1
  317. package/public/dist/assets/mermaid-loader-Bd9rYyxD.js +0 -1
  318. package/public/dist/assets/mermaid.core-TSG49mwm.js +0 -1
  319. package/public/dist/assets/message-history-BttkY77h.js +0 -1
  320. package/public/dist/assets/packet-YPE3B663-BHcxn4sy.js +0 -1
  321. package/public/dist/assets/pie-LRSECV5Y-DjigSia_.js +0 -1
  322. package/public/dist/assets/radar-GUYGQ44K-DPCrmsHJ.js +0 -1
  323. package/public/dist/assets/settings-CqnIqxkG.js +0 -56
  324. package/public/dist/assets/settings-core-CdZ7oKhM.js +0 -1
  325. package/public/dist/assets/settings-pPMHNs0G.js +0 -1
  326. package/public/dist/assets/skills-DiVoaVdS.js +0 -1
  327. package/public/dist/assets/slash-commands-Bx4saHwR.js +0 -1
  328. package/public/dist/assets/stateDiagram-v2-BHNVJYJU-BAesfdhr.js +0 -1
  329. package/public/dist/assets/treeView-BLDUP644-DmufUMul.js +0 -1
  330. package/public/dist/assets/treemap-LRROVOQU-Cg48uw_D.js +0 -1
  331. package/public/dist/assets/ui-XPQDPe-5.js +0 -1
  332. package/public/dist/assets/wardley-L42UT6IY-QZOEXU7f.js +0 -1
  333. /package/public/dist/assets/{agent-meta-Y3DE6sxh.js → agent-meta-Bl-Q0EgC.js} +0 -0
  334. /package/public/dist/assets/{api-B25zNNFJ.js → api-FOqKQ9fm.js} +0 -0
  335. /package/public/dist/assets/{apl-2tE96F_Y.js → apl-CYLd9I-9.js} +0 -0
  336. /package/public/dist/assets/{asciiarmor-ynSKiC17.js → asciiarmor-7YwhfGDq.js} +0 -0
  337. /package/public/dist/assets/{asn1-CfqO1VY8.js → asn1-BlhHp3qx.js} +0 -0
  338. /package/public/dist/assets/{asterisk-DSiRJoqT.js → asterisk-Q0-IBwUt.js} +0 -0
  339. /package/public/dist/assets/{brainfuck-DTcanv-8.js → brainfuck-CM8jf4Gu.js} +0 -0
  340. /package/public/dist/assets/{chunk-AGHRB4JF-BXLzSehp.js → chunk-AGHRB4JF-Cdp9MZGh.js} +0 -0
  341. /package/public/dist/assets/{chunk-NNHCCRGN-D69GtSOc.js → chunk-NNHCCRGN-ChI2WAS0.js} +0 -0
  342. /package/public/dist/assets/{clike-qn72CMAj.js → clike-BcV5UqGE.js} +0 -0
  343. /package/public/dist/assets/{clojure-m8yDiYVc.js → clojure-XHu9GAjV.js} +0 -0
  344. /package/public/dist/assets/{cmake-4AHAWHiF.js → cmake-DhPsEu0W.js} +0 -0
  345. /package/public/dist/assets/{cobol-CxxJP5eX.js → cobol-BEekiT-v.js} +0 -0
  346. /package/public/dist/assets/{coffeescript-BAB3zi48.js → coffeescript-Bgk4ZVWF.js} +0 -0
  347. /package/public/dist/assets/{commonlisp-BPbWuAds.js → commonlisp-Dw4PRJwx.js} +0 -0
  348. /package/public/dist/assets/{crystal-CGuSsWYR.js → crystal-CJ-iCD_G.js} +0 -0
  349. /package/public/dist/assets/{css-DszbR74r.js → css-BDUaiSMY.js} +0 -0
  350. /package/public/dist/assets/{cypher-GUnmv522.js → cypher-CJ05ZgAu.js} +0 -0
  351. /package/public/dist/assets/{cytoscape.esm-D_XyYSBG.js → cytoscape.esm-PBXWcYR1.js} +0 -0
  352. /package/public/dist/assets/{d-Cfm0cznj.js → d-BfHF1VVF.js} +0 -0
  353. /package/public/dist/assets/{desktop-bridge-CvdhnJQo.js → desktop-bridge-DtydAvqu.js} +0 -0
  354. /package/public/dist/assets/{diff-C6rPA7NX.js → diff-BVcHwfdB.js} +0 -0
  355. /package/public/dist/assets/{dist-AgQwqBLq.js → dist-BbhtVnRz.js} +0 -0
  356. /package/public/dist/assets/{dtd-Dxh5tS6M.js → dtd-Bg0TgBY9.js} +0 -0
  357. /package/public/dist/assets/{dylan-BdIVFR1j.js → dylan-BQ0i5j3T.js} +0 -0
  358. /package/public/dist/assets/{ebnf-iU-8xYFu.js → ebnf-QSFUkOiT.js} +0 -0
  359. /package/public/dist/assets/{ecl-DjbzOHI6.js → ecl-oXh4vhiy.js} +0 -0
  360. /package/public/dist/assets/{eiffel-B2ID8LZ3.js → eiffel-S15DDWzw.js} +0 -0
  361. /package/public/dist/assets/{elm-B6vPcfMj.js → elm-B746ZFPi.js} +0 -0
  362. /package/public/dist/assets/{erlang-nDQwRdZV.js → erlang-GRIYhTbY.js} +0 -0
  363. /package/public/dist/assets/{fcl-Bf86o55I.js → fcl-DjQMeb0v.js} +0 -0
  364. /package/public/dist/assets/{folder-drag-payload-Bhln9Mk2.js → folder-drag-payload-CJ0dxhZa.js} +0 -0
  365. /package/public/dist/assets/{forth-CeQJji0n.js → forth-DNnBFTm6.js} +0 -0
  366. /package/public/dist/assets/{fortran-Dm_CqDsH.js → fortran-yg6K9z9n.js} +0 -0
  367. /package/public/dist/assets/{gas-e3EfgE3p.js → gas-fbsH19hy.js} +0 -0
  368. /package/public/dist/assets/{gherkin-Dn_7tSzg.js → gherkin-BCy9haeT.js} +0 -0
  369. /package/public/dist/assets/{groovy-LaKuGRkK.js → groovy-Cm4gdIYU.js} +0 -0
  370. /package/public/dist/assets/{haskell-D9nNX9Mr.js → haskell-Dq28dVw2.js} +0 -0
  371. /package/public/dist/assets/{haxe-Rp176QXJ.js → haxe-BrZpr4Ca.js} +0 -0
  372. /package/public/dist/assets/{http-BOeYLbuM.js → http-B3zr0y0o.js} +0 -0
  373. /package/public/dist/assets/{idl-DHv3vdme.js → idl-C9CL9hdG.js} +0 -0
  374. /package/public/dist/assets/{javascript-Dk2fbl1a.js → javascript-DD7UxIxH.js} +0 -0
  375. /package/public/dist/assets/{jsx-runtime-gFMgZ0TQ.js → jsx-runtime-CYoNlHAD.js} +0 -0
  376. /package/public/dist/assets/{julia-D7CKCk5I.js → julia-CjwfSXBk.js} +0 -0
  377. /package/public/dist/assets/{livescript-gRbr9rhj.js → livescript-vRjI6jFU.js} +0 -0
  378. /package/public/dist/assets/{lua-CgZ_7bxf.js → lua-CxVmDfKg.js} +0 -0
  379. /package/public/dist/assets/{mathematica-B6bTyoab.js → mathematica-DJZPFt8k.js} +0 -0
  380. /package/public/dist/assets/{mbox-C8oQj1cJ.js → mbox-CxBBnlIA.js} +0 -0
  381. /package/public/dist/assets/{mirc-v6L6kZuh.js → mirc-CBWc0vcU.js} +0 -0
  382. /package/public/dist/assets/{mllike-CWu4RdWO.js → mllike-DYddHpeS.js} +0 -0
  383. /package/public/dist/assets/{modelica-B3NBpX1d.js → modelica-B94rrYMn.js} +0 -0
  384. /package/public/dist/assets/{mscgen-C8u7qRYw.js → mscgen-D0PO0iPT.js} +0 -0
  385. /package/public/dist/assets/{mumps-DHjVG4PS.js → mumps-BdPrWvs5.js} +0 -0
  386. /package/public/dist/assets/{nginx-BMt87X3t.js → nginx-C7cLiM4x.js} +0 -0
  387. /package/public/dist/assets/{notes-graph-settings-BgNrT_58.js → notes-graph-settings-Cl4lMj-A.js} +0 -0
  388. /package/public/dist/assets/{ntriples-C8U-Jud2.js → ntriples-DLMpvgb1.js} +0 -0
  389. /package/public/dist/assets/{octave-Bq37AoFm.js → octave-DeJPElAr.js} +0 -0
  390. /package/public/dist/assets/{oz-D6HxSRn3.js → oz-4dtXWqwe.js} +0 -0
  391. /package/public/dist/assets/{pascal-BBqiAVg6.js → pascal-TdeXcL-o.js} +0 -0
  392. /package/public/dist/assets/{path-utils-LsJeDCKF.js → path-utils-CHwADH-r.js} +0 -0
  393. /package/public/dist/assets/{perl-sHANlXjx.js → perl-DfpfXWOH.js} +0 -0
  394. /package/public/dist/assets/{pig-Cufgew--.js → pig-xQ4essgV.js} +0 -0
  395. /package/public/dist/assets/{powershell--Q4mDip6.js → powershell-Dfw2t4-B.js} +0 -0
  396. /package/public/dist/assets/{properties-DoVpJ-kT.js → properties-CrJLOvU2.js} +0 -0
  397. /package/public/dist/assets/{protobuf-B5OiV2Zv.js → protobuf-BYv78GYU.js} +0 -0
  398. /package/public/dist/assets/{provider-icons-VDfahiUp.js → provider-icons-CXA2mnPO.js} +0 -0
  399. /package/public/dist/assets/{puppet-Ce_CFfqW.js → puppet-DnsvBfcg.js} +0 -0
  400. /package/public/dist/assets/{python-pK7Wt6QH.js → python-mfoZJSDM.js} +0 -0
  401. /package/public/dist/assets/{q-Dd3Ltku0.js → q-BrTIu4PU.js} +0 -0
  402. /package/public/dist/assets/{r-CsX__2f0.js → r-FO7GgXB8.js} +0 -0
  403. /package/public/dist/assets/{rough.esm--LLpAgPj.js → rough.esm-DeGVhNS9.js} +0 -0
  404. /package/public/dist/assets/{rpm-D78AjDAl.js → rpm-D8Wbdep5.js} +0 -0
  405. /package/public/dist/assets/{ruby-D_-KI498.js → ruby-Cg1fwXaw.js} +0 -0
  406. /package/public/dist/assets/{sas-D-GUPiy4.js → sas-Ch1GEx-n.js} +0 -0
  407. /package/public/dist/assets/{scheme-DF9WwQDv.js → scheme-DGFmPoR2.js} +0 -0
  408. /package/public/dist/assets/{settings-client-CjbBShxm.js → settings-client-D9KY2Ufl.js} +0 -0
  409. /package/public/dist/assets/{shell-BTUwbV-w.js → shell-BBoIO9l0.js} +0 -0
  410. /package/public/dist/assets/{sieve--Z-EbGZo.js → sieve-8oEe6gDx.js} +0 -0
  411. /package/public/dist/assets/{simple-mode-BUow4bpn.js → simple-mode-BNw0K2rL.js} +0 -0
  412. /package/public/dist/assets/{smalltalk-C2YIwVx3.js → smalltalk-ChbxX23N.js} +0 -0
  413. /package/public/dist/assets/{solr-CYVq4fbf.js → solr-BwGyzi2H.js} +0 -0
  414. /package/public/dist/assets/{sparql-Ccd4fsFv.js → sparql-D9wgprRx.js} +0 -0
  415. /package/public/dist/assets/{spreadsheet-DW0WgMrS.js → spreadsheet-BySehl32.js} +0 -0
  416. /package/public/dist/assets/{sql-C71Zp6qn.js → sql-B6Phvk1R.js} +0 -0
  417. /package/public/dist/assets/{stex-CKuX0g_6.js → stex-32iK7T_9.js} +0 -0
  418. /package/public/dist/assets/{stylus-CBH8s0NO.js → stylus-C689wDNM.js} +0 -0
  419. /package/public/dist/assets/{swift-CfZoxKRA.js → swift-DZwxTp-L.js} +0 -0
  420. /package/public/dist/assets/{tcl-D5MGbeQu.js → tcl-BSOjIY_8.js} +0 -0
  421. /package/public/dist/assets/{textile-DJ3U30FW.js → textile-xOWO1SH7.js} +0 -0
  422. /package/public/dist/assets/{tiddlywiki-_fe1dHUq.js → tiddlywiki-B8jhOxrf.js} +0 -0
  423. /package/public/dist/assets/{tiki-Dd1udTrQ.js → tiki-OG7n6UAo.js} +0 -0
  424. /package/public/dist/assets/{toml-xpw8pqjz.js → toml-DkxT-aUR.js} +0 -0
  425. /package/public/dist/assets/{troff-CgWiec8m.js → troff-vE5gOX7Y.js} +0 -0
  426. /package/public/dist/assets/{ttcn-CSwmFrer.js → ttcn-CPOduycD.js} +0 -0
  427. /package/public/dist/assets/{ttcn-cfg-B5HVIC6z.js → ttcn-cfg-DmA__-R_.js} +0 -0
  428. /package/public/dist/assets/{turtle-Cl_SuWQk.js → turtle-CEzrJHdY.js} +0 -0
  429. /package/public/dist/assets/{vb-BT131bSf.js → vb-Cii5IQTv.js} +0 -0
  430. /package/public/dist/assets/{vbscript-D6S8_XkU.js → vbscript-DcZWGZ_S.js} +0 -0
  431. /package/public/dist/assets/{velocity-9HkI645n.js → velocity-BEag7EnK.js} +0 -0
  432. /package/public/dist/assets/{vendor-utils-DJY0EWnQ.js → vendor-utils-BK07iQND.js} +0 -0
  433. /package/public/dist/assets/{verilog-BzMguKeI.js → verilog-DMw8DKoT.js} +0 -0
  434. /package/public/dist/assets/{vhdl-bHScWzT1.js → vhdl-M4wLPuJt.js} +0 -0
  435. /package/public/dist/assets/{w3c-keyname-a_sRwNLm.js → w3c-keyname-hgmz1BF7.js} +0 -0
  436. /package/public/dist/assets/{webidl-CbgaVHNS.js → webidl-CjehKbx5.js} +0 -0
  437. /package/public/dist/assets/{wiki-link-resolver-DyFzBTIQ.js → wiki-link-resolver-N9fDy5zP.js} +0 -0
  438. /package/public/dist/assets/{xquery-DWZPmAiC.js → xquery-CYbd_YmJ.js} +0 -0
  439. /package/public/dist/assets/{yacas-CEdW4z4K.js → yacas-ClBNsli2.js} +0 -0
  440. /package/public/dist/assets/{z80-CMH3qxNg.js → z80-nGsPT_fm.js} +0 -0
@@ -14,6 +14,7 @@ import { settings } from '../core/config.js';
14
14
  import { log } from '../core/logger.js';
15
15
  import { slackApi, describeSlackError, neededScopeFrom } from './api.js';
16
16
  import { getSlackSendClient } from './send-only-client.js';
17
+ import { EnrichmentCache } from './enrichment-cache.js';
17
18
  const DEFAULT_TTL_MS = 6 * 60 * 60 * 1000;
18
19
  const MIN_TTL_MS = 60 * 1000;
19
20
  const MAX_TTL_MS = 7 * 24 * 60 * 60 * 1000;
@@ -37,20 +38,39 @@ const NEGATIVE_TTL_NOT_FOUND_MS = 10 * 60 * 1000;
37
38
  * fingerprint never moves and the flag would never lift (010 §R2-2).
38
39
  */
39
40
  const CAPABILITY_REPROBE_MS = 30 * 60 * 1000;
40
- const userCache = new Map();
41
- const botCache = new Map();
42
- const negativeCache = new Map();
43
- const inFlight = new Map();
44
- let capabilityDisabledUntil = 0;
41
+ /**
42
+ * ONE capability key for both users.info and bots.info.
43
+ *
44
+ * This preserves today's behavior deliberately: identity has always used a
45
+ * single global latch, so a missing users:read also suppresses bot lookups
46
+ * (both need the same scope). Splitting it per method would be a silent
47
+ * behavior change — see the characterization test that pins the shared latch.
48
+ */
49
+ const CAPABILITY_KEY = 'identity:capability';
45
50
  let missingScopeWarned = false;
46
51
  /**
47
- * Bumped by every reset. Requests capture it at dispatch, so a lookup issued
48
- * under a superseded token/workspace cannot write cache or failure state after
49
- * the reset that was supposed to invalidate it.
52
+ * Partitions keep user and bot identities in separate keyspaces, each with its
53
+ * own CACHE_CAP. Merging them would halve the effective capacity and change
54
+ * eviction order.
50
55
  */
51
- let cacheGeneration = 0;
52
- /** Admits exactly one probe when the capability lock expires. */
53
- let capabilityProbeInFlight = false;
56
+ const identityCache = new EnrichmentCache({
57
+ partitions: {
58
+ user: { ttlMs, cap: CACHE_CAP },
59
+ bot: { ttlMs, cap: CACHE_CAP },
60
+ },
61
+ suppressionCap: CACHE_CAP,
62
+ classifyFailure: (error, ctx) => {
63
+ if (error === 'missing_scope') {
64
+ return { kind: 'capability', key: CAPABILITY_KEY, ttlMs: CAPABILITY_REPROBE_MS };
65
+ }
66
+ // Keyed per identity: one unknown user must not suppress anyone else.
67
+ return {
68
+ kind: 'resource',
69
+ key: ctx.resourceKey,
70
+ ttlMs: error === 'not_found' ? NEGATIVE_TTL_NOT_FOUND_MS : NEGATIVE_TTL_TRANSIENT_MS,
71
+ };
72
+ },
73
+ });
54
74
  function ttlMs() {
55
75
  const raw = Number(settings['slack']?.identityCacheTtlMs);
56
76
  if (!Number.isFinite(raw) || raw <= 0)
@@ -63,79 +83,6 @@ function cacheKey(teamId, id) {
63
83
  // workspace, which initSlack can do without a process restart.
64
84
  return `${teamId || 'unknown'}:${id}`;
65
85
  }
66
- /**
67
- * Drop the oldest half once a map exceeds the cap.
68
- *
69
- * `expiryOf` is explicit rather than assumed: the negative cache stores bare
70
- * timestamps while the identity caches store entry objects, and casting one to
71
- * the other made every comparison read `undefined` — the sort silently did
72
- * nothing and eviction became arbitrary.
73
- */
74
- function trimTo(map, expiryOf) {
75
- if (map.size <= CACHE_CAP)
76
- return;
77
- const entries = [...map.entries()].sort((a, b) => expiryOf(a[1]) - expiryOf(b[1]));
78
- for (const [key] of entries.slice(0, Math.floor(map.size / 2)))
79
- map.delete(key);
80
- }
81
- const entryExpiry = (entry) => entry.expiresAt;
82
- const rawExpiry = (until) => until;
83
- function readCache(map, key) {
84
- const hit = map.get(key);
85
- if (!hit)
86
- return undefined;
87
- // Lazy expiry only. A sweep timer would keep the event loop alive and delay
88
- // process exit (same class of bug as the ingress drain timer).
89
- if (hit.expiresAt <= Date.now()) {
90
- map.delete(key);
91
- return undefined;
92
- }
93
- return hit.identity;
94
- }
95
- function writeCache(map, key, identity) {
96
- map.set(key, { identity, expiresAt: Date.now() + ttlMs() });
97
- trimTo(map, entryExpiry);
98
- }
99
- function isNegative(key) {
100
- const until = negativeCache.get(key);
101
- if (until === undefined)
102
- return false;
103
- if (until <= Date.now()) {
104
- negativeCache.delete(key);
105
- return false;
106
- }
107
- return true;
108
- }
109
- function markNegative(key, windowMs) {
110
- negativeCache.set(key, Date.now() + windowMs);
111
- trimTo(negativeCache, rawExpiry);
112
- }
113
- function capabilityDisabled() {
114
- return capabilityDisabledUntil > Date.now();
115
- }
116
- /**
117
- * True when this caller must degrade instead of calling Slack.
118
- *
119
- * Once the lock expires, exactly ONE caller is allowed through to re-probe.
120
- * Letting every concurrent lookup through would restore the per-message API
121
- * storm the lock exists to prevent, since none of them has answered yet.
122
- */
123
- function shouldSkipLookup() {
124
- if (capabilityDisabled())
125
- return true;
126
- if (!capabilityDisabledUntil)
127
- return false;
128
- // The lock has lapsed: the first caller probes, everyone else degrades.
129
- if (capabilityProbeInFlight)
130
- return true;
131
- capabilityProbeInFlight = true;
132
- return false;
133
- }
134
- /** A probe proved the scope is back. Unlock fully. */
135
- function clearCapabilityLock() {
136
- capabilityDisabledUntil = 0;
137
- capabilityProbeInFlight = false;
138
- }
139
86
  /**
140
87
  * Normalize an attacker-controlled name into something that cannot forge the
141
88
  * structure of a prompt context line.
@@ -243,9 +190,6 @@ export function identityFromEvent(event) {
243
190
  return ref;
244
191
  }
245
192
  function noteMissingScope(data) {
246
- capabilityDisabledUntil = Date.now() + CAPABILITY_REPROBE_MS;
247
- // The probe answered: re-latched, so the next lapse gets a fresh single probe.
248
- capabilityProbeInFlight = false;
249
193
  if (missingScopeWarned)
250
194
  return;
251
195
  missingScopeWarned = true;
@@ -254,32 +198,29 @@ function noteMissingScope(data) {
254
198
  log.warn(`[slack:identity] ${describeSlackError('missing_scope', data)} (needed: ${needed}) — `
255
199
  + 'sender names degrade to raw ids until the app is reinstalled');
256
200
  }
257
- async function lookupUser(token, userId, opts, generation = cacheGeneration) {
201
+ async function lookupUser(token, userId, opts, generation) {
258
202
  const result = await slackApi(token, 'users.info', { user: userId }, {
259
203
  form: true,
260
204
  timeoutMs: opts.timeoutMs ?? LOOKUP_TIMEOUT_MS,
261
205
  ...(opts.fetchImpl ? { fetchImpl: opts.fetchImpl } : {}),
262
206
  });
263
207
  if (result.ok && result.data?.user) {
264
- // The scope is back: release the probe slot so lookups resume freely.
265
- clearCapabilityLock();
266
- return identityFromUser(result.data.user, userId);
208
+ return { ok: true, value: identityFromUser(result.data.user, userId) };
267
209
  }
268
- // A result from a superseded generation describes the OLD token/workspace.
269
- // Report it to this caller, but never let it write shared failure state.
270
- if (generation !== cacheGeneration)
271
- return degraded(userId, 'user');
272
- if (result.error === 'missing_scope')
273
- noteMissingScope(result.data);
274
- else if (result.error === 'user_not_found') {
275
- markNegative(cacheKey(opts.teamId, userId), NEGATIVE_TTL_NOT_FOUND_MS);
210
+ // The cache owns suppression windows and the probe slot; this only names the
211
+ // failure class. Generation guarding also lives there.
212
+ if (result.error === 'missing_scope') {
213
+ // Only a CURRENT-generation failure may consume the warn-once latch. A
214
+ // stale lookup (issued under the previous token) would otherwise re-arm
215
+ // it after a reset cleared it, silencing the real warning for the new
216
+ // workspace.
217
+ if (generation === identityCache.currentGeneration())
218
+ noteMissingScope(result.data);
219
+ return { ok: false, error: 'missing_scope' };
276
220
  }
277
- else {
278
- markNegative(cacheKey(opts.teamId, userId), NEGATIVE_TTL_TRANSIENT_MS);
279
- }
280
- return degraded(userId, 'user');
221
+ return { ok: false, error: result.error === 'user_not_found' ? 'not_found' : 'transient' };
281
222
  }
282
- async function lookupBot(token, botId, opts, generation = cacheGeneration) {
223
+ async function lookupBot(token, botId, opts, generation) {
283
224
  const result = await slackApi(token, 'bots.info', { bot: botId }, {
284
225
  form: true,
285
226
  timeoutMs: opts.timeoutMs ?? LOOKUP_TIMEOUT_MS,
@@ -287,22 +228,23 @@ async function lookupBot(token, botId, opts, generation = cacheGeneration) {
287
228
  });
288
229
  const name = result.data?.bot?.name;
289
230
  if (result.ok && name) {
290
- clearCapabilityLock();
291
231
  return {
292
- id: botId,
293
- name: sanitizeIdentityName(name, botId),
294
- kind: 'bot',
295
- isBot: true,
296
- resolved: true,
232
+ ok: true,
233
+ value: {
234
+ id: botId,
235
+ name: sanitizeIdentityName(name, botId),
236
+ kind: 'bot',
237
+ isBot: true,
238
+ resolved: true,
239
+ },
297
240
  };
298
241
  }
299
- if (generation !== cacheGeneration)
300
- return degraded(botId, 'bot');
301
- if (result.error === 'missing_scope')
302
- noteMissingScope(result.data);
303
- else
304
- markNegative(cacheKey(opts.teamId, botId), NEGATIVE_TTL_TRANSIENT_MS);
305
- return degraded(botId, 'bot');
242
+ if (result.error === 'missing_scope') {
243
+ if (generation === identityCache.currentGeneration())
244
+ noteMissingScope(result.data);
245
+ return { ok: false, error: 'missing_scope' };
246
+ }
247
+ return { ok: false, error: 'transient' };
306
248
  }
307
249
  /**
308
250
  * Resolve one author.
@@ -329,76 +271,35 @@ export async function resolveSlackIdentity(token, ref, opts) {
329
271
  };
330
272
  }
331
273
  const key = cacheKey(opts.teamId, id);
332
- const cache = isBot ? botCache : userCache;
333
- const cached = readCache(cache, key);
334
- if (cached)
335
- return cached;
336
- if (shouldSkipLookup() || isNegative(key)) {
337
- return degraded(id, isBot ? 'bot' : 'user', ref.inlineName);
338
- }
274
+ const kind = isBot ? 'bot' : 'user';
275
+ const fallback = () => degraded(id, kind, ref.inlineName);
339
276
  if (!token)
340
- return degraded(id, isBot ? 'bot' : 'user', ref.inlineName);
341
- // Check the caller's signal BEFORE starting anything: an already-aborted
342
- // caller should cost zero API calls, not one it will then ignore.
343
- if (opts.signal?.aborted)
344
- return degraded(id, isBot ? 'bot' : 'user', ref.inlineName);
345
- // Share one upstream request per key. The shared request deliberately does NOT
346
- // carry any caller's signal: one caller aborting must not cancel the lookup
347
- // every other waiter is depending on. Callers race their own signal below.
348
- let pending = inFlight.get(key);
349
- if (!pending) {
350
- // Capture the generation this request belongs to. A reset (workspace
351
- // switch, token change) invalidates everything in flight: without this,
352
- // a lookup issued under the OLD token can land afterwards and re-latch
353
- // missing_scope or cache a name from the previous workspace, silently
354
- // undoing the reset.
355
- const generation = cacheGeneration;
356
- const request = (isBot ? lookupBot(token, id, opts, generation) : lookupUser(token, id, opts, generation))
357
- .catch(() => degraded(id, isBot ? 'bot' : 'user'))
358
- .then(identity => {
359
- if (identity.resolved && generation === cacheGeneration) {
360
- writeCache(cache, key, identity);
361
- }
362
- return identity;
363
- })
364
- .finally(() => {
365
- // Only clear the slot if it is still OURS. A reset plus a new
366
- // request can install a replacement, and deleting that would
367
- // strand its waiters behind a lookup nobody tracks.
368
- if (inFlight.get(key) === request)
369
- inFlight.delete(key);
370
- });
371
- pending = request;
372
- inFlight.set(key, pending);
373
- }
374
- const identity = await raceSignal(pending, opts.signal, () => degraded(id, isBot ? 'bot' : 'user', ref.inlineName));
277
+ return fallback();
278
+ // Everything below cache read, negative/capability suppression, the single
279
+ // re-probe, coalescing, per-caller cancellation and generation guarding
280
+ // belongs to the shared primitive. This adapter supplies only the Slack call
281
+ // and what its failures mean.
282
+ const identity = await identityCache.resolve({
283
+ partition: kind,
284
+ resourceKey: key,
285
+ capabilityKey: CAPABILITY_KEY,
286
+ ...(opts.signal ? { signal: opts.signal } : {}),
287
+ load: ({ generation }) => (isBot
288
+ ? lookupBot(token, id, opts, generation)
289
+ : lookupUser(token, id, opts, generation)),
290
+ degraded: fallback,
291
+ });
375
292
  if (identity.resolved)
376
293
  return identity;
377
- // Degraded upstream: the inline hint is the last resort, still marked unresolved.
378
- return degraded(id, isBot ? 'bot' : 'user', ref.inlineName);
379
- }
380
- function raceSignal(work, signal, onAbort) {
381
- if (!signal)
382
- return work;
383
- if (signal.aborted)
384
- return Promise.resolve(onAbort());
385
- return new Promise(resolve => {
386
- const finish = (value) => {
387
- signal.removeEventListener('abort', abortHandler);
388
- resolve(value);
389
- };
390
- // Abort is a quiet cancel, not a failure: no warning and no negative cache.
391
- const abortHandler = () => finish(onAbort());
392
- signal.addEventListener('abort', abortHandler, { once: true });
393
- void work.then(finish, () => finish(onAbort()));
394
- });
294
+ // Degraded upstream: the inline hint is the last resort, still unresolved.
295
+ return fallback();
395
296
  }
396
297
  /** Cache-only read. Never calls the API; misses are simply absent from the map. */
397
298
  export function getCachedSlackIdentities(teamId, ids) {
398
299
  const out = new Map();
399
300
  for (const id of ids) {
400
301
  const key = cacheKey(teamId, id);
401
- const hit = readCache(userCache, key) || readCache(botCache, key);
302
+ const hit = identityCache.get('user', key) ?? identityCache.get('bot', key);
402
303
  if (hit)
403
304
  out.set(id, hit);
404
305
  }
@@ -411,7 +312,7 @@ export function primeSlackIdentityCache(teamId, users) {
411
312
  if (!user?.id)
412
313
  continue;
413
314
  const identity = identityFromUser(user, user.id);
414
- writeCache(identity.isBot ? botCache : userCache, cacheKey(teamId, user.id), identity);
315
+ identityCache.prime(identity.isBot ? 'bot' : 'user', cacheKey(teamId, user.id), identity);
415
316
  stored += 1;
416
317
  }
417
318
  return stored;
@@ -432,7 +333,7 @@ export async function resolveSlackIdentities(token, refs, opts) {
432
333
  const id = ref.userId || ref.botId;
433
334
  if (!id)
434
335
  continue;
435
- const cached = readCache(ref.botId && !ref.userId ? botCache : userCache, cacheKey(opts.teamId, id));
336
+ const cached = identityCache.get(ref.botId && !ref.userId ? 'bot' : 'user', cacheKey(opts.teamId, id));
436
337
  if (cached)
437
338
  identities.set(id, cached);
438
339
  else
@@ -526,12 +427,26 @@ export function buildSenderDisplay(identity, text) {
526
427
  return `[👤 ${identity.name}] ${text}`.trim();
527
428
  }
528
429
  export function slackIdentityCacheStats() {
529
- return { users: userCache.size, bots: botCache.size, negative: negativeCache.size };
430
+ const stats = identityCache.stats();
431
+ return { users: stats.entries.user, bots: stats.entries.bot, negative: stats.suppressed };
530
432
  }
531
433
  /** Test hook: drive the capability lock without waiting out its 30-minute TTL. */
532
434
  export function setCapabilityLockForTest(until) {
533
- capabilityDisabledUntil = until;
534
- capabilityProbeInFlight = false;
435
+ // A lock in the past is the "lapsed" state: the next caller becomes the
436
+ // single re-probe. A future value suppresses everyone.
437
+ identityCache.clearCapability(CAPABILITY_KEY);
438
+ identityCache.suppress(CAPABILITY_KEY, until - Date.now());
439
+ }
440
+ /**
441
+ * Test hook: has the once-per-process missing-scope warning already fired?
442
+ *
443
+ * Exposed because the latch is otherwise unobservable, which let a test assert
444
+ * the wrong thing — it checked that a lookup still ran, which stays true even
445
+ * when a stale response silently consumes the latch and suppresses the real
446
+ * warning for the next workspace.
447
+ */
448
+ export function missingScopeWarnedForTest() {
449
+ return missingScopeWarned;
535
450
  }
536
451
  /**
537
452
  * Drop every cached identity. Wired to the Slack runtime lifecycle so a workspace
@@ -541,13 +456,7 @@ export function setCapabilityLockForTest(until) {
541
456
  export function resetSlackIdentityCache() {
542
457
  // Invalidate in-flight work first so late results cannot repopulate what we
543
458
  // are about to clear.
544
- cacheGeneration += 1;
545
- userCache.clear();
546
- botCache.clear();
547
- negativeCache.clear();
548
- inFlight.clear();
549
- capabilityDisabledUntil = 0;
550
- capabilityProbeInFlight = false;
459
+ identityCache.reset();
551
460
  missingScopeWarned = false;
552
461
  }
553
462
  //# sourceMappingURL=identity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../src/slack/identity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../src/slack/identity.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,9 @@ import { channelGateOn, scopeForChatSession } from '../orchestrator/scope.js';
4
4
  import { submitMessage } from '../orchestrator/gateway.js';
5
5
  import { sessionLanes } from '../orchestrator/session-lanes.js';
6
6
  import { buildRemoteBindingKey } from '../messaging/session-key.js';
7
+ import { clearSlackEventDedup, findSlackEventDedup, insertSlackEventDedup, sweepSlackEventDedup, } from '../core/db.js';
8
+ import { log } from '../core/logger.js';
9
+ import { logErrorText } from '../messaging/redact.js';
7
10
  const ingressTails = new Map();
8
11
  const controllers = new Set();
9
12
  const tracked = new Set();
@@ -32,25 +35,97 @@ const seenEvents = new Map();
32
35
  export function slackEventKey(teamId, channel, ts) {
33
36
  return `${teamId || 'unknown'}:${channel}:${ts}`;
34
37
  }
35
- /** true = already handled; the caller should drop this delivery. */
38
+ /**
39
+ * RESERVE, not commit (#321). Returns true when this delivery was already
40
+ * handled and the caller should drop it.
41
+ *
42
+ * The reservation is in memory so the same-tick test-and-set stays atomic, and
43
+ * it is checked against the durable record so a runtime that restarted before
44
+ * Slack observed our ACK does not run the redelivery a second time.
45
+ *
46
+ * Deliberately NOT durable at this point: the caller has an `await` and several
47
+ * early returns between here and admission, and Socket Mode acks before doing
48
+ * any work. Writing durably here would turn a recoverable redelivery into a
49
+ * ten-minute silent message loss — duplication is visible and cancellable, a
50
+ * vanished message is not.
51
+ */
36
52
  export function claimSlackEvent(key) {
37
53
  const now = Date.now();
38
54
  const seenAt = seenEvents.get(key);
39
55
  if (seenAt !== undefined && seenAt > now)
40
56
  return true;
57
+ if (isSlackEventCommitted(key, now))
58
+ return true;
41
59
  // Lazy sweep of expired keys only — no timer, so the loop can still exit.
42
60
  if (seenEvents.size > 500) {
43
61
  for (const [candidate, expiry] of seenEvents) {
44
62
  if (expiry <= now)
45
63
  seenEvents.delete(candidate);
46
64
  }
65
+ sweepCommittedSlackEvents(now);
47
66
  }
48
67
  seenEvents.set(key, now + EVENT_DEDUP_TTL_MS);
49
68
  return false;
50
69
  }
70
+ function isSlackEventCommitted(key, now) {
71
+ try {
72
+ const row = findSlackEventDedup.get(key);
73
+ return typeof row?.expires_at === 'number' && row.expires_at > now;
74
+ }
75
+ catch (error) {
76
+ // A broken dedupe store must never stop us receiving messages.
77
+ log.warn('[slack:dedupe] durable read failed:', logErrorText(error));
78
+ return false;
79
+ }
80
+ }
81
+ function sweepCommittedSlackEvents(now) {
82
+ try {
83
+ sweepSlackEventDedup.run(now);
84
+ }
85
+ catch { /* best-effort cleanup; expiry is enforced on read anyway */ }
86
+ }
87
+ /**
88
+ * COMMIT. Called only once a run has actually been admitted, so an event that
89
+ * died before admission is still redeliverable.
90
+ *
91
+ * Fail-open by design: if the write throws, the run is already accepted and
92
+ * cancelling it would risk losing the message. Duplication after a restart is
93
+ * the honest failure direction here.
94
+ */
95
+ export function commitSlackEvent(key) {
96
+ const expiresAt = Date.now() + EVENT_DEDUP_TTL_MS;
97
+ seenEvents.set(key, expiresAt);
98
+ try {
99
+ insertSlackEventDedup.run(key, expiresAt);
100
+ }
101
+ catch (error) {
102
+ log.warn('[slack:dedupe] durable commit failed:', logErrorText(error));
103
+ }
104
+ }
105
+ /**
106
+ * Clears the in-memory reservations only. The durable record is what makes a
107
+ * restart safe, so wiping it here would reintroduce #321; it expires by TTL.
108
+ */
51
109
  export function resetSlackEventDedup() {
52
110
  seenEvents.clear();
53
111
  }
112
+ /** Test-only: drops the durable record too. */
113
+ export function clearSlackEventDedupForTest() {
114
+ seenEvents.clear();
115
+ try {
116
+ clearSlackEventDedup.run();
117
+ }
118
+ catch { /* table may not exist in a bare fixture */ }
119
+ }
120
+ /** The ingress lifecycle counter, captured at reserve time and revalidated
121
+ * before admission: a reset in between means this delivery belongs to a dead
122
+ * generation and must not be admitted (a redelivery already re-reserved it). */
123
+ export function currentIngressGeneration() {
124
+ return generation;
125
+ }
126
+ export function isIngressGenerationCurrent(captured) {
127
+ return captured === generation;
128
+ }
54
129
  function downloadLimit() {
55
130
  const value = Number(settings["slack"]?.inboundDownloadConcurrency ?? 6);
56
131
  return Number.isInteger(value) && value >= 1 && value <= 32 ? value : 6;
@@ -97,7 +172,7 @@ export function slackIngressLaneKey(target) {
97
172
  }
98
173
  export function enqueueSlackIngress(laneKey, task) {
99
174
  if (resetting)
100
- return;
175
+ return false;
101
176
  const taskGeneration = generation;
102
177
  const controller = new AbortController();
103
178
  controllers.add(controller);
@@ -119,6 +194,17 @@ export function enqueueSlackIngress(laneKey, task) {
119
194
  if (ingressTails.get(laneKey) === tail)
120
195
  ingressTails.delete(laneKey);
121
196
  });
197
+ return true;
198
+ }
199
+ export function resolveSlackScopeForTarget(target) {
200
+ const multiSessionEnabled = settings["multiSession"]?.enabled === true;
201
+ const gateEnabled = multiSessionEnabled && channelGateOn('slack');
202
+ const remoteKey = gateEnabled ? buildRemoteBindingKey(target) : undefined;
203
+ const chatSessionId = multiSessionEnabled && !gateEnabled
204
+ ? 'default'
205
+ : remoteKey ? resolveOrCreateRemoteSession(remoteKey) : getActiveChatSession();
206
+ const scope = scopeForChatSession(chatSessionId, remoteKey, gateEnabled);
207
+ return scope === 'default' ? null : scope;
122
208
  }
123
209
  export function admitSlackRun(params) {
124
210
  const multiSessionEnabled = settings["multiSession"]?.enabled === true;
@@ -127,7 +213,9 @@ export function admitSlackRun(params) {
127
213
  const chatSessionId = multiSessionEnabled && !gateEnabled
128
214
  ? 'default'
129
215
  : remoteKey ? resolveOrCreateRemoteSession(remoteKey) : getActiveChatSession();
130
- const scope = scopeForChatSession(chatSessionId, remoteKey, gateEnabled);
216
+ const scope = params.preResolvedScope !== undefined
217
+ ? params.preResolvedScope ?? 'default'
218
+ : scopeForChatSession(chatSessionId, remoteKey, gateEnabled);
131
219
  const result = submitMessage(params.prompt, {
132
220
  origin: 'slack', displayText: params.displayText, skipOrchestrate: true,
133
221
  target: params.target, chatId: params.chatId,
@@ -1 +1 @@
1
- {"version":3,"file":"ingress.js","sourceRoot":"","sources":["../../../src/slack/ingress.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ingress.js","sourceRoot":"","sources":["../../../src/slack/ingress.ts"],"names":[],"mappings":"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"}