@cursor/bdk 0.2.9 → 0.2.10

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 (570) hide show
  1. package/dist/artifacts.js +3 -5
  2. package/dist/bin/agent-serve.js +803 -812
  3. package/dist/channels/bitbucket/api.js +305 -321
  4. package/dist/channels/bitbucket/binding.js +97 -61
  5. package/dist/channels/bitbucket/bitbucket-channel.d.ts +15 -1
  6. package/dist/channels/bitbucket/bitbucket-channel.d.ts.map +1 -1
  7. package/dist/channels/bitbucket/bitbucket-channel.js +95 -42
  8. package/dist/channels/bitbucket/bitbucket-webhook.d.ts +11 -0
  9. package/dist/channels/bitbucket/bitbucket-webhook.d.ts.map +1 -1
  10. package/dist/channels/bitbucket/bitbucket-webhook.js +214 -204
  11. package/dist/channels/bitbucket/checks.js +9 -21
  12. package/dist/channels/bitbucket/cursor-account.js +1 -1
  13. package/dist/channels/bitbucket/defaults.js +14 -4
  14. package/dist/channels/bitbucket/events.js +1 -2
  15. package/dist/channels/bitbucket/index.d.ts +6 -2
  16. package/dist/channels/bitbucket/index.d.ts.map +1 -1
  17. package/dist/channels/bitbucket/index.js +6 -2
  18. package/dist/channels/bitbucket/replay.js +80 -56
  19. package/dist/channels/bitbucket/state.js +16 -7
  20. package/dist/channels/bitbucket/types.d.ts +11 -2
  21. package/dist/channels/bitbucket/types.d.ts.map +1 -1
  22. package/dist/channels/checks.js +18 -28
  23. package/dist/channels/deployments/deployments-channel.js +26 -34
  24. package/dist/channels/github/api.js +216 -210
  25. package/dist/channels/github/auth.d.ts +5 -1
  26. package/dist/channels/github/auth.d.ts.map +1 -1
  27. package/dist/channels/github/auth.js +157 -174
  28. package/dist/channels/github/binding.js +48 -39
  29. package/dist/channels/github/checks.js +9 -14
  30. package/dist/channels/github/cursor-account.js +6 -11
  31. package/dist/channels/github/defaults.js +105 -130
  32. package/dist/channels/github/forward.js +13 -17
  33. package/dist/channels/github/github-channel.d.ts +43 -2
  34. package/dist/channels/github/github-channel.d.ts.map +1 -1
  35. package/dist/channels/github/github-channel.js +1228 -958
  36. package/dist/channels/github/progress.js +145 -146
  37. package/dist/channels/github/replay.js +30 -39
  38. package/dist/channels/github/state.js +40 -16
  39. package/dist/channels/github/types.d.ts +30 -6
  40. package/dist/channels/github/types.d.ts.map +1 -1
  41. package/dist/channels/gitlab/api.js +100 -114
  42. package/dist/channels/gitlab/binding.js +52 -33
  43. package/dist/channels/gitlab/checks.js +28 -29
  44. package/dist/channels/gitlab/cursor-account.js +1 -1
  45. package/dist/channels/gitlab/defaults.js +9 -3
  46. package/dist/channels/gitlab/gitlab-channel.d.ts +16 -1
  47. package/dist/channels/gitlab/gitlab-channel.d.ts.map +1 -1
  48. package/dist/channels/gitlab/gitlab-channel.js +95 -42
  49. package/dist/channels/gitlab/gitlab-webhook.d.ts +10 -1
  50. package/dist/channels/gitlab/gitlab-webhook.d.ts.map +1 -1
  51. package/dist/channels/gitlab/gitlab-webhook.js +282 -249
  52. package/dist/channels/gitlab/index.d.ts +6 -2
  53. package/dist/channels/gitlab/index.d.ts.map +1 -1
  54. package/dist/channels/gitlab/index.js +6 -2
  55. package/dist/channels/gitlab/replay.js +50 -27
  56. package/dist/channels/gitlab/state.js +14 -6
  57. package/dist/channels/gitlab/types.d.ts +13 -2
  58. package/dist/channels/gitlab/types.d.ts.map +1 -1
  59. package/dist/channels/origin/api.js +100 -116
  60. package/dist/channels/origin/binding.js +15 -16
  61. package/dist/channels/origin/checks.js +30 -28
  62. package/dist/channels/origin/defaults.js +50 -65
  63. package/dist/channels/origin/origin-channel.js +266 -272
  64. package/dist/channels/origin/origin-webhook.js +70 -88
  65. package/dist/channels/origin/reactions.js +9 -21
  66. package/dist/channels/origin/state.js +13 -5
  67. package/dist/channels/slack/agentic-delivery.js +426 -478
  68. package/dist/channels/slack/agentic-posted.js +9 -10
  69. package/dist/channels/slack/agentic-signals.js +2 -3
  70. package/dist/channels/slack/api.js +417 -427
  71. package/dist/channels/slack/approvals.js +1 -1
  72. package/dist/channels/slack/assistant.js +37 -47
  73. package/dist/channels/slack/attachments.js +188 -206
  74. package/dist/channels/slack/auth.js +8 -6
  75. package/dist/channels/slack/bot-mentions.js +31 -45
  76. package/dist/channels/slack/channel-watch.js +42 -48
  77. package/dist/channels/slack/cli-project.js +112 -137
  78. package/dist/channels/slack/code-fences.js +3 -5
  79. package/dist/channels/slack/constants.js +2 -2
  80. package/dist/channels/slack/credentials.js +23 -38
  81. package/dist/channels/slack/defaults.js +292 -331
  82. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  83. package/dist/channels/slack/dispatch.js +533 -460
  84. package/dist/channels/slack/doctor.js +200 -214
  85. package/dist/channels/slack/eval-directive.js +79 -96
  86. package/dist/channels/slack/event-id-dedupe.js +1 -1
  87. package/dist/channels/slack/external-policy.js +26 -39
  88. package/dist/channels/slack/footer.js +28 -41
  89. package/dist/channels/slack/inbound.d.ts +1 -0
  90. package/dist/channels/slack/inbound.d.ts.map +1 -1
  91. package/dist/channels/slack/inbound.js +50 -31
  92. package/dist/channels/slack/init.d.ts +1 -5
  93. package/dist/channels/slack/init.d.ts.map +1 -1
  94. package/dist/channels/slack/init.js +42 -59
  95. package/dist/channels/slack/interactive.d.ts +9 -3
  96. package/dist/channels/slack/interactive.d.ts.map +1 -1
  97. package/dist/channels/slack/interactive.js +160 -162
  98. package/dist/channels/slack/links.js +1 -2
  99. package/dist/channels/slack/live-delivery.js +172 -190
  100. package/dist/channels/slack/manifest.d.ts.map +1 -1
  101. package/dist/channels/slack/manifest.js +44 -23
  102. package/dist/channels/slack/message-body.js +2 -2
  103. package/dist/channels/slack/nudge-carrier.js +30 -42
  104. package/dist/channels/slack/nudge-store.js +164 -191
  105. package/dist/channels/slack/paint-start.js +66 -81
  106. package/dist/channels/slack/placeholder.js +123 -152
  107. package/dist/channels/slack/pr-ref.js +1 -1
  108. package/dist/channels/slack/progress-delivery.js +65 -78
  109. package/dist/channels/slack/reasoning-card.js +36 -49
  110. package/dist/channels/slack/recording-sink.js +12 -24
  111. package/dist/channels/slack/reply-options.js +7 -12
  112. package/dist/channels/slack/self-identity.js +27 -35
  113. package/dist/channels/slack/sender-name.d.ts +12 -3
  114. package/dist/channels/slack/sender-name.d.ts.map +1 -1
  115. package/dist/channels/slack/sender-name.js +57 -61
  116. package/dist/channels/slack/setup.js +2 -4
  117. package/dist/channels/slack/slack-channel.d.ts +6 -4
  118. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  119. package/dist/channels/slack/slack-channel.js +441 -308
  120. package/dist/channels/slack/socket-mode.js +38 -52
  121. package/dist/channels/slack/thread-context.js +143 -160
  122. package/dist/channels/slack/tool-approval-events.js +149 -166
  123. package/dist/channels/slack/tool-cards.js +6 -11
  124. package/dist/channels/slack/tool-chip.js +1 -2
  125. package/dist/channels/slack/types.d.ts +15 -17
  126. package/dist/channels/slack/types.d.ts.map +1 -1
  127. package/dist/channels/slack/upload.js +84 -97
  128. package/dist/channels/slack/user-info.js +27 -41
  129. package/dist/channels.js +9 -20
  130. package/dist/dashboard-session-url.js +3 -4
  131. package/dist/docs/404.html +2 -2
  132. package/dist/docs/assets/{app.BNhEdGa8.js → app.DXI7bwox.js} +4 -4
  133. package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.js → building-with-agents.md.Df87rAe1.js} +1 -1
  134. package/dist/docs/assets/chunks/@localSearchIndexroot.CtLtpWcx.js +1 -0
  135. package/dist/docs/assets/chunks/{VPLocalSearchBox.DIdUV1Ph.js → VPLocalSearchBox.BrbO5mEe.js} +1 -1
  136. package/dist/docs/assets/chunks/{arc.lELI4_SR.js → arc.BOG1yms8.js} +1 -1
  137. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.iCMdvuoM.js → architectureDiagram-Q4EWVU46.C0hsMZnZ.js} +1 -1
  138. package/dist/docs/assets/chunks/{baseUniq.C1-nDJBf.js → baseUniq.H044KjKs.js} +1 -1
  139. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.ClemzBox.js → blockDiagram-DXYQGD6D.BsRW6GoB.js} +1 -1
  140. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.BqTak6cR.js → c4Diagram-AHTNJAMY.B9HV5PFR.js} +1 -1
  141. package/dist/docs/assets/chunks/channel.CBwrU9rP.js +1 -0
  142. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CUS3qs_R.js → chunk-4BX2VUAB.CPoT_ajl.js} +1 -1
  143. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.dz5fdHcl.js → chunk-4TB4RGXK.DZBwWuCL.js} +1 -1
  144. package/dist/docs/assets/chunks/{chunk-55IACEB6.D6BEBmve.js → chunk-55IACEB6.CZ3yTiyq.js} +1 -1
  145. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.B5uK4ID9.js → chunk-EDXVE4YY.6DfvHSd8.js} +1 -1
  146. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.PgOJgNQs.js → chunk-FMBD7UC4.CpBj8HfK.js} +1 -1
  147. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.CvkTrCii.js → chunk-OYMX7WX6.BdKo8YqS.js} +1 -1
  148. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BnSfKYsB.js → chunk-QZHKN3VN.BnXNyxJx.js} +1 -1
  149. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.MZH6v5UC.js → chunk-YZCP3GAM.Cg1OcF8G.js} +1 -1
  150. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CbC_mrvB.js +1 -0
  151. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CbC_mrvB.js +1 -0
  152. package/dist/docs/assets/chunks/clone.BTvFyY1a.js +1 -0
  153. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.BBbw_YZi.js → cose-bilkent-S5V4N54A.1SP8al9c.js} +1 -1
  154. package/dist/docs/assets/chunks/{dagre-KV5264BT.CNJB2l7E.js → dagre-KV5264BT.DS1L6hJt.js} +1 -1
  155. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.BQzlnFfq.js → diagram-5BDNPKRD.ChsausbG.js} +1 -1
  156. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.DkgqqZMz.js → diagram-G4DWMVQ6.3XsptNWj.js} +1 -1
  157. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.DIT8L7H_.js → diagram-MMDJMWI5.DPA9Dk_P.js} +1 -1
  158. package/dist/docs/assets/chunks/{diagram-TYMM5635.3xLPZWGJ.js → diagram-TYMM5635.BVswXWrB.js} +1 -1
  159. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.5_IHz8jF.js → erDiagram-SMLLAGMA.BSak5OSP.js} +1 -1
  160. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.BGUCXz8A.js → flowDiagram-DWJPFMVM.CQgN4TTz.js} +1 -1
  161. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.DbfFavS1.js → ganttDiagram-T4ZO3ILL.GrT0kA4a.js} +1 -1
  162. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.D2yKdeNW.js → gitGraphDiagram-UUTBAWPF.CdS7Ucll.js} +1 -1
  163. package/dist/docs/assets/chunks/{graph.CSCxwHba.js → graph.BVqKRmRo.js} +1 -1
  164. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.FDeb6xHY.js → infoDiagram-42DDH7IO.C3C9FRto.js} +1 -1
  165. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.DbeYs9VL.js → ishikawaDiagram-UXIWVN3A.2FuAh_Zj.js} +1 -1
  166. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.CWjKINpx.js → journeyDiagram-VCZTEJTY.CaHMfK4b.js} +1 -1
  167. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.B4FrAlwz.js → kanban-definition-6JOO6SKY.CjhIUwcA.js} +1 -1
  168. package/dist/docs/assets/chunks/{layout.DFGxQ9ab.js → layout.CGU3gfSf.js} +1 -1
  169. package/dist/docs/assets/chunks/{linear.BmjZ-G59.js → linear.DaihpW_n.js} +1 -1
  170. package/dist/docs/assets/chunks/{min.DZSxulMW.js → min.BS-j8kHQ.js} +1 -1
  171. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.CHLi3-aN.js → mindmap-definition-QFDTVHPH.BVJ1Bbnk.js} +1 -1
  172. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.DteG-CkU.js → pieDiagram-DEJITSTG.Cz1WIv9r.js} +1 -1
  173. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.D458ipN3.js → quadrantDiagram-34T5L4WZ.DKLFxcjy.js} +1 -1
  174. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.DcFgUxst.js → requirementDiagram-MS252O5E.BHegiK7x.js} +1 -1
  175. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.BwQAMmSA.js → sankeyDiagram-XADWPNL6.DYkY6yPc.js} +1 -1
  176. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.B_Xdsrh9.js → sequenceDiagram-FGHM5R23.DYQ1QUrI.js} +1 -1
  177. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.CdfDW6-C.js → stateDiagram-FHFEXIEX.Iru8BsFo.js} +1 -1
  178. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.BYXl4LW6.js +1 -0
  179. package/dist/docs/assets/chunks/{theme.sfdL3srp.js → theme.DaplWQhQ.js} +2 -2
  180. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.56-4hXaC.js → timeline-definition-GMOUNBTQ.BwFA8hiX.js} +1 -1
  181. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.CvZSQBO7.js → vennDiagram-DHZGUBPP.CZ60W1C_.js} +1 -1
  182. package/dist/docs/assets/chunks/{wardley-RL74JXVD.C9qc8k39.js → wardley-RL74JXVD.iXazD3Z7.js} +1 -1
  183. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.D9s0nihi.js → wardleyDiagram-NUSXRM2D.B69D2r8-.js} +1 -1
  184. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.BVJSpYrC.js → xychartDiagram-5P7HB3ND.CLPZEIU9.js} +1 -1
  185. package/dist/docs/assets/{deployment.md.BdqTiGdc.js → deployment.md.BYuEcDBv.js} +2 -2
  186. package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.js → guides_bitbucket.md.CKUayYtD.js} +3 -3
  187. package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.lean.js → guides_bitbucket.md.CKUayYtD.lean.js} +1 -1
  188. package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.js → guides_github.md.TuNiZAOQ.js} +4 -4
  189. package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.lean.js → guides_github.md.TuNiZAOQ.lean.js} +1 -1
  190. package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.js → guides_gitlab.md.CtNI4fSH.js} +4 -4
  191. package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.lean.js → guides_gitlab.md.CtNI4fSH.lean.js} +1 -1
  192. package/dist/docs/assets/guides_migrate.md.sCAvvlC6.js +7 -0
  193. package/dist/docs/assets/guides_migrate.md.sCAvvlC6.lean.js +1 -0
  194. package/dist/docs/assets/{reference_cli.md.GwugN3n-.js → reference_cli.md.dYCAL2lB.js} +4 -3
  195. package/dist/docs/assets/reference_cli.md.dYCAL2lB.lean.js +1 -0
  196. package/dist/docs/assets/{reference_skills.md.ClkMoQsV.js → reference_skills.md.C0guGcH0.js} +3 -3
  197. package/dist/docs/assets/troubleshooting.md.x-GBa7wN.js +1 -0
  198. package/dist/docs/assets/{troubleshooting.md.Bscj6ODe.lean.js → troubleshooting.md.x-GBa7wN.lean.js} +1 -1
  199. package/dist/docs/building-with-agents.html +37 -37
  200. package/dist/docs/building-with-agents.md +2 -0
  201. package/dist/docs/deployment.html +38 -38
  202. package/dist/docs/deployment.md +7 -0
  203. package/dist/docs/evals.html +36 -36
  204. package/dist/docs/guides/agent-to-agent.html +35 -35
  205. package/dist/docs/guides/bitbucket.html +38 -38
  206. package/dist/docs/guides/bitbucket.md +9 -1
  207. package/dist/docs/guides/cloud-agents.html +35 -35
  208. package/dist/docs/guides/convert-automation.html +35 -35
  209. package/dist/docs/guides/github.html +39 -39
  210. package/dist/docs/guides/github.md +20 -4
  211. package/dist/docs/guides/gitlab.html +38 -38
  212. package/dist/docs/guides/gitlab.md +9 -1
  213. package/dist/docs/guides/grokbot-agents.html +35 -35
  214. package/dist/docs/guides/hooks.html +35 -35
  215. package/dist/docs/guides/improve.html +35 -35
  216. package/dist/docs/guides/jev.html +35 -35
  217. package/dist/docs/guides/mcp-oauth.html +35 -35
  218. package/dist/docs/guides/migrate.html +66 -0
  219. package/dist/docs/guides/migrate.md +122 -0
  220. package/dist/docs/guides/opentelemetry.html +35 -35
  221. package/dist/docs/guides/slack.html +35 -35
  222. package/dist/docs/guides/webhooks.html +35 -35
  223. package/dist/docs/hashmap.json +1 -1
  224. package/dist/docs/hillclimbing.html +35 -35
  225. package/dist/docs/index.html +35 -35
  226. package/dist/docs/llms-full.txt +214 -6
  227. package/dist/docs/llms.txt +1 -0
  228. package/dist/docs/quickstart.html +35 -35
  229. package/dist/docs/reference/agent-config.html +35 -35
  230. package/dist/docs/reference/artifacts.html +35 -35
  231. package/dist/docs/reference/channels.html +35 -35
  232. package/dist/docs/reference/cli.html +39 -38
  233. package/dist/docs/reference/cli.md +39 -0
  234. package/dist/docs/reference/connections.html +35 -35
  235. package/dist/docs/reference/evals.html +35 -35
  236. package/dist/docs/reference/extensions.html +35 -35
  237. package/dist/docs/reference/hooks.html +35 -35
  238. package/dist/docs/reference/http-api.html +35 -35
  239. package/dist/docs/reference/instructions.html +35 -35
  240. package/dist/docs/reference/playground.html +35 -35
  241. package/dist/docs/reference/project-layout.html +35 -35
  242. package/dist/docs/reference/prompt.html +35 -35
  243. package/dist/docs/reference/schedules.html +35 -35
  244. package/dist/docs/reference/sessions.html +35 -35
  245. package/dist/docs/reference/skills.html +38 -38
  246. package/dist/docs/reference/subagents.html +35 -35
  247. package/dist/docs/reference/tools.html +35 -35
  248. package/dist/docs/templates/agentic-owners.html +35 -35
  249. package/dist/docs/templates/grokbot-agents.html +35 -35
  250. package/dist/docs/templates/security-reviewer.html +35 -35
  251. package/dist/docs/templates/thermo-quality-review.html +35 -35
  252. package/dist/docs/templates/thermo-review.html +35 -35
  253. package/dist/docs/templates/triage.html +35 -35
  254. package/dist/docs/troubleshooting.html +36 -36
  255. package/dist/docs/troubleshooting.md +1 -0
  256. package/dist/evals/assertions.js +20 -34
  257. package/dist/evals/expect.js +3 -6
  258. package/dist/evals/judge.js +5 -8
  259. package/dist/evals/loaders.js +45 -62
  260. package/dist/evals/matchers.js +2 -3
  261. package/dist/evals/reporters.js +43 -67
  262. package/dist/evals/results.js +1 -1
  263. package/dist/evals/run-facts.js +5 -6
  264. package/dist/evals.js +27 -15
  265. package/dist/extensions/cursor-cloud-agents/extension.js +4 -1
  266. package/dist/extensions/cursor-cloud-agents/lib/backend.js +100 -126
  267. package/dist/extensions/cursor-cloud-agents/lib/fleet.js +22 -38
  268. package/dist/extensions/cursor-cloud-agents/lib/repos.js +8 -10
  269. package/dist/extensions/cursor-cloud-agents/lib/transcript.js +2 -3
  270. package/dist/extensions/cursor-cloud-agents/lib/watch.js +52 -66
  271. package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.js +29 -40
  272. package/dist/extensions/cursor-cloud-agents/tools/cancel.js +6 -17
  273. package/dist/extensions/cursor-cloud-agents/tools/dump.js +25 -36
  274. package/dist/extensions/cursor-cloud-agents/tools/get.js +3 -14
  275. package/dist/extensions/cursor-cloud-agents/tools/launch.js +13 -21
  276. package/dist/extensions/cursor-cloud-agents/tools/list.js +8 -19
  277. package/dist/extensions/cursor-cloud-agents/tools/reply.js +5 -16
  278. package/dist/extensions/cursor-grokbot-agents/extension.js +4 -1
  279. package/dist/extensions/cursor-grokbot-agents/lib/agents.js +3 -3
  280. package/dist/extensions/cursor-grokbot-agents/lib/backend.js +53 -73
  281. package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +10 -23
  282. package/dist/extensions/cursor-grokbot-agents/lib/conversation.js +112 -132
  283. package/dist/extensions/cursor-grokbot-agents/lib/lock.js +1 -2
  284. package/dist/extensions/cursor-grokbot-agents/tools/ask.js +5 -16
  285. package/dist/extensions/cursor-grokbot-agents/tools/check.js +4 -15
  286. package/dist/extensions/cursor-grokbot-agents/tools/interrupt.js +2 -13
  287. package/dist/extensions/cursor-grokbot-agents/tools/list.js +11 -23
  288. package/dist/extensions/jev/extension.js +3 -3
  289. package/dist/extensions/jev/lib/evaluate.js +43 -60
  290. package/dist/extensions/jev/tools/evaluate.js +6 -17
  291. package/dist/extensions/slack-communication/tools/post-file.js +1 -1
  292. package/dist/extensions.js +3 -5
  293. package/dist/files-backends/cursor-hosted.js +504 -523
  294. package/dist/files-backends/local-fs.js +72 -134
  295. package/dist/files.js +3 -3
  296. package/dist/filesystem.js +562 -861
  297. package/dist/index.js +16 -35
  298. package/dist/internal/advertise-tools.js +74 -86
  299. package/dist/internal/artifacts-store.js +298 -361
  300. package/dist/internal/as-of.js +2 -4
  301. package/dist/internal/authored-alias-hooks.js +6 -4
  302. package/dist/internal/authored-loaders.js +37 -52
  303. package/dist/internal/bounded-int.js +1 -2
  304. package/dist/internal/bounded.js +13 -24
  305. package/dist/internal/brand.js +1 -1
  306. package/dist/internal/browser-origin-guard.js +4 -4
  307. package/dist/internal/builtin-tools/artifacts.js +15 -27
  308. package/dist/internal/builtin-tools/index.js +2 -3
  309. package/dist/internal/builtin-tools/reminders.js +33 -52
  310. package/dist/internal/channel-architecture.d.ts +21 -0
  311. package/dist/internal/channel-architecture.d.ts.map +1 -0
  312. package/dist/internal/channel-architecture.js +41 -0
  313. package/dist/internal/channel-dispatch.js +3 -4
  314. package/dist/internal/channel-route-dispatch.js +40 -51
  315. package/dist/internal/channel-state.js +1 -1
  316. package/dist/internal/chat-client.js +319 -340
  317. package/dist/internal/cli-ax.js +1262 -1294
  318. package/dist/internal/cli-bitbucket.js +244 -272
  319. package/dist/internal/cli-convert-automation.js +137 -151
  320. package/dist/internal/cli-cursor.js +126 -147
  321. package/dist/internal/cli-deploy.d.ts.map +1 -1
  322. package/dist/internal/cli-deploy.js +1457 -1507
  323. package/dist/internal/cli-docs.js +130 -147
  324. package/dist/internal/cli-github.js +437 -476
  325. package/dist/internal/cli-gitlab.js +259 -288
  326. package/dist/internal/cli-images.js +266 -334
  327. package/dist/internal/cli-manifest.js +25 -37
  328. package/dist/internal/cli-mcp-oauth.js +228 -247
  329. package/dist/internal/cli-mcp.js +358 -383
  330. package/dist/internal/cli-migrate.js +73 -90
  331. package/dist/internal/cli-skills.js +35 -47
  332. package/dist/internal/cli-slack-manual.d.ts +0 -1
  333. package/dist/internal/cli-slack-manual.d.ts.map +1 -1
  334. package/dist/internal/cli-slack-manual.js +175 -204
  335. package/dist/internal/cli-slack.d.ts +1 -1
  336. package/dist/internal/cli-slack.d.ts.map +1 -1
  337. package/dist/internal/cli-slack.js +416 -456
  338. package/dist/internal/cloud-merge.js +7 -3
  339. package/dist/internal/cloud-turn-cost.js +8 -1
  340. package/dist/internal/connection-env.js +5 -6
  341. package/dist/internal/continuation-channel.js +10 -7
  342. package/dist/internal/continuation-identity.js +85 -67
  343. package/dist/internal/conversation-mirror.js +112 -131
  344. package/dist/internal/convert-automation/convert-workflow.js +21 -31
  345. package/dist/internal/cron.js +3 -3
  346. package/dist/internal/cursor/account-mcp.js +147 -146
  347. package/dist/internal/cursor/backend-client.js +290 -320
  348. package/dist/internal/cursor/bound-secret-file.js +3 -3
  349. package/dist/internal/cursor/credentials.js +127 -142
  350. package/dist/internal/cursor/cursor-api-transport.js +4 -8
  351. package/dist/internal/cursor/github-credentials.js +91 -108
  352. package/dist/internal/cursor/hosted-bound-secrets.js +3 -4
  353. package/dist/internal/cursor/hosted-deployment-secrets.js +1 -1
  354. package/dist/internal/cursor/hosted-store-secrets.js +5 -9
  355. package/dist/internal/cursor/session-token.js +36 -48
  356. package/dist/internal/cursor/store-api-client.js +77 -92
  357. package/dist/internal/cursor-account-mcp-auth.js +132 -149
  358. package/dist/internal/cursor-agent-template.js +1 -1
  359. package/dist/internal/cursor-deployment-relay.js +33 -54
  360. package/dist/internal/cursor-event-relay.js +65 -59
  361. package/dist/internal/cursor-relay-core.js +258 -286
  362. package/dist/internal/deferred-channel-session.js +3 -12
  363. package/dist/internal/deploy-client.js +410 -475
  364. package/dist/internal/deploy-manifest.d.ts +17 -0
  365. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  366. package/dist/internal/deploy-manifest.js +71 -21
  367. package/dist/internal/deploy-source.js +31 -43
  368. package/dist/internal/discovery/agent-config.js +45 -59
  369. package/dist/internal/discovery/agent.js +276 -280
  370. package/dist/internal/discovery/channels.js +67 -80
  371. package/dist/internal/discovery/connections.js +286 -296
  372. package/dist/internal/discovery/context.js +2 -13
  373. package/dist/internal/discovery/cursor-plugin.js +223 -259
  374. package/dist/internal/discovery/extension-overlay.js +104 -131
  375. package/dist/internal/discovery/extensions.js +276 -281
  376. package/dist/internal/discovery/fs.js +56 -79
  377. package/dist/internal/discovery/hooks.js +39 -50
  378. package/dist/internal/discovery/info.js +17 -19
  379. package/dist/internal/discovery/instructions.js +58 -71
  380. package/dist/internal/discovery/modules.js +45 -58
  381. package/dist/internal/discovery/project.d.ts.map +1 -1
  382. package/dist/internal/discovery/project.js +192 -215
  383. package/dist/internal/discovery/reminders.js +41 -52
  384. package/dist/internal/discovery/runtime.js +1 -1
  385. package/dist/internal/discovery/schedules.js +71 -82
  386. package/dist/internal/discovery/seed-files.js +21 -32
  387. package/dist/internal/discovery/services.js +74 -96
  388. package/dist/internal/discovery/skills.js +77 -94
  389. package/dist/internal/discovery/subagent.js +79 -95
  390. package/dist/internal/discovery/tools.js +12 -23
  391. package/dist/internal/distribution.js +2 -2
  392. package/dist/internal/docs-site.js +30 -45
  393. package/dist/internal/duration.js +1 -1
  394. package/dist/internal/env-file.js +48 -64
  395. package/dist/internal/eval-judge-model.js +17 -28
  396. package/dist/internal/eval-run-store.js +265 -254
  397. package/dist/internal/eval-runner.d.ts +8 -0
  398. package/dist/internal/eval-runner.d.ts.map +1 -1
  399. package/dist/internal/eval-runner.js +406 -408
  400. package/dist/internal/eval-transport.d.ts +24 -0
  401. package/dist/internal/eval-transport.d.ts.map +1 -0
  402. package/dist/internal/eval-transport.js +22 -0
  403. package/dist/internal/evals-client.js +242 -246
  404. package/dist/internal/event-log.js +72 -120
  405. package/dist/internal/event-mapper.js +30 -31
  406. package/dist/internal/factory-resource-channel.js +16 -30
  407. package/dist/internal/filesystem/errors.js +6 -6
  408. package/dist/internal/filesystem/format.js +10 -13
  409. package/dist/internal/filesystem/merge.js +52 -94
  410. package/dist/internal/filesystem/nearest.js +15 -27
  411. package/dist/internal/filesystem/scratch.js +65 -85
  412. package/dist/internal/filesystem/tools.js +221 -241
  413. package/dist/internal/filesystem/walk.js +76 -143
  414. package/dist/internal/framework-file-storage.js +118 -139
  415. package/dist/internal/framework-storage-selection.js +21 -13
  416. package/dist/internal/frontmatter.js +4 -6
  417. package/dist/internal/github-fanout.js +50 -64
  418. package/dist/internal/guest-network.js +96 -109
  419. package/dist/internal/handleAgentServeTrigger.js +121 -126
  420. package/dist/internal/host-files.js +73 -88
  421. package/dist/internal/host-kv.js +21 -36
  422. package/dist/internal/host-otel.js +22 -19
  423. package/dist/internal/host-platforms.js +49 -63
  424. package/dist/internal/hosted-catch-protocol.d.ts +1 -0
  425. package/dist/internal/hosted-catch-protocol.d.ts.map +1 -1
  426. package/dist/internal/hosted-catch-protocol.js +1 -0
  427. package/dist/internal/hosted-catch.d.ts +5 -3
  428. package/dist/internal/hosted-catch.d.ts.map +1 -1
  429. package/dist/internal/hosted-catch.js +84 -93
  430. package/dist/internal/hosted-delivery-protocol.js +32 -8
  431. package/dist/internal/hosted-delivery.d.ts +13 -1
  432. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  433. package/dist/internal/hosted-delivery.js +614 -584
  434. package/dist/internal/hosted-eval-cases.d.ts +21 -0
  435. package/dist/internal/hosted-eval-cases.d.ts.map +1 -0
  436. package/dist/internal/hosted-eval-cases.js +162 -0
  437. package/dist/internal/hosted-execution-diag.js +38 -30
  438. package/dist/internal/hosted-execution-flush.js +75 -66
  439. package/dist/internal/hosted-execution-latency.js +16 -8
  440. package/dist/internal/hosted-managed-automation.js +2 -2
  441. package/dist/internal/hosting.js +2 -3
  442. package/dist/internal/http-channel-define.js +4 -1
  443. package/dist/internal/http-channel.js +101 -112
  444. package/dist/internal/http-control-plane-session.d.ts +18 -1
  445. package/dist/internal/http-control-plane-session.d.ts.map +1 -1
  446. package/dist/internal/http-control-plane-session.js +66 -32
  447. package/dist/internal/incoming-headers-to-fetch.js +1 -2
  448. package/dist/internal/init-interview.js +73 -93
  449. package/dist/internal/init-project.js +182 -214
  450. package/dist/internal/init-scaffold.js +10 -21
  451. package/dist/internal/inline-stdio-mcp.js +80 -86
  452. package/dist/internal/install-cursor-skills.js +231 -273
  453. package/dist/internal/legacy-command-guard.js +18 -31
  454. package/dist/internal/listen-port.js +34 -45
  455. package/dist/internal/local-control-plane.js +293 -307
  456. package/dist/internal/local-env.js +1 -1
  457. package/dist/internal/local-ingress.js +15 -9
  458. package/dist/internal/log-ring.js +1 -2
  459. package/dist/internal/logs-client.js +207 -227
  460. package/dist/internal/map-pool.js +24 -38
  461. package/dist/internal/mcp-endpoint.js +204 -180
  462. package/dist/internal/mcp-host.js +165 -168
  463. package/dist/internal/mcp-oauth-on-demand.js +170 -207
  464. package/dist/internal/mcp-oauth-persist.js +15 -29
  465. package/dist/internal/mcp-oauth.js +209 -266
  466. package/dist/internal/named-webhook-secret.d.ts +39 -0
  467. package/dist/internal/named-webhook-secret.d.ts.map +1 -0
  468. package/dist/internal/named-webhook-secret.js +47 -0
  469. package/dist/internal/open-browser.js +2 -3
  470. package/dist/internal/otel/collector.js +104 -68
  471. package/dist/internal/otel/config.js +24 -37
  472. package/dist/internal/otel/http.js +5 -7
  473. package/dist/internal/otel/mcp.js +3 -12
  474. package/dist/internal/otel/runtime.js +69 -83
  475. package/dist/internal/package-inline-stdio.js +57 -65
  476. package/dist/internal/peer-connections.js +9 -5
  477. package/dist/internal/platform-schedule-sync.js +39 -54
  478. package/dist/internal/platform-timers.js +176 -210
  479. package/dist/internal/playground/static.js +1 -2
  480. package/dist/internal/playground/toolchain.js +37 -53
  481. package/dist/internal/playground-proxy.js +230 -270
  482. package/dist/internal/process-memory-telemetry.js +33 -51
  483. package/dist/internal/prompt-context.js +3 -6
  484. package/dist/internal/reminder-control-plane-protocol.js +46 -13
  485. package/dist/internal/reminder-runner.js +770 -785
  486. package/dist/internal/reminder-schedule.js +1 -1
  487. package/dist/internal/reminder-store.js +57 -78
  488. package/dist/internal/request-error-status.js +1 -3
  489. package/dist/internal/request-headers.js +2 -2
  490. package/dist/internal/resolve-prod-target.js +119 -135
  491. package/dist/internal/resolved-connections.js +16 -6
  492. package/dist/internal/run-client.js +221 -229
  493. package/dist/internal/runtime-dispatch-runner.js +18 -43
  494. package/dist/internal/schedule-runner.js +49 -58
  495. package/dist/internal/scm/pr-url.js +7 -6
  496. package/dist/internal/sdk-runner.js +388 -363
  497. package/dist/internal/serve-restart.js +26 -39
  498. package/dist/internal/server.d.ts.map +1 -1
  499. package/dist/internal/server.js +1283 -1244
  500. package/dist/internal/session-cost.js +7 -9
  501. package/dist/internal/session-engine.d.ts +3 -1
  502. package/dist/internal/session-engine.d.ts.map +1 -1
  503. package/dist/internal/session-engine.js +2801 -2777
  504. package/dist/internal/session-links.js +12 -16
  505. package/dist/internal/session-run-log.js +134 -82
  506. package/dist/internal/session-store.js +133 -164
  507. package/dist/internal/sessions-client.js +97 -118
  508. package/dist/internal/skill-catalog.js +18 -23
  509. package/dist/internal/skills-sync.js +16 -30
  510. package/dist/internal/slack-provision-client.js +90 -116
  511. package/dist/internal/start-log-store.js +48 -67
  512. package/dist/internal/steering.js +1 -2
  513. package/dist/internal/storage-coordinator.js +160 -196
  514. package/dist/internal/store-mirror.js +16 -30
  515. package/dist/internal/stream-progress.js +6 -8
  516. package/dist/internal/terminal-style.js +3 -4
  517. package/dist/internal/testing/scm-continuation-fixtures.js +6 -2
  518. package/dist/internal/testing/slack-continuation-fixtures.d.ts +26 -0
  519. package/dist/internal/testing/slack-continuation-fixtures.d.ts.map +1 -0
  520. package/dist/internal/testing/slack-continuation-fixtures.js +136 -0
  521. package/dist/internal/tool-catalog.js +11 -5
  522. package/dist/internal/tool-result.js +1 -1
  523. package/dist/internal/trajectory.js +19 -22
  524. package/dist/internal/turn-cost.js +52 -62
  525. package/dist/internal/turn-governor.js +5 -8
  526. package/dist/internal/turn-lease-store.js +85 -105
  527. package/dist/internal/turn-outbox.js +28 -43
  528. package/dist/internal/update-check.js +231 -259
  529. package/dist/internal/v2-hosting.js +1 -2
  530. package/dist/internal/workspace-sync.js +25 -41
  531. package/dist/internal/workspace.js +111 -139
  532. package/dist/kv/memory-kv.js +27 -51
  533. package/dist/memory.js +106 -148
  534. package/dist/otel.js +5 -8
  535. package/dist/playground/assets/index-DXm_VXAQ.css +1 -0
  536. package/dist/playground/assets/{index-Co4CUVTQ.js → index-JekUQERK.js} +45 -45
  537. package/dist/playground/index.html +2 -2
  538. package/dist/prompt.js +2 -4
  539. package/dist/storage-backends/cursor-hosted-v2.js +53 -83
  540. package/dist/storage-backends/cursor-hosted.js +105 -145
  541. package/dist/storage-backends/file-kv.js +100 -128
  542. package/dist/storage-protocol.js +3 -5
  543. package/dist/storage.js +17 -26
  544. package/dist/types.d.ts +68 -0
  545. package/dist/types.d.ts.map +1 -1
  546. package/dist/types.js +20 -18
  547. package/docs/building-with-agents.md +2 -0
  548. package/docs/deployment.md +7 -0
  549. package/docs/guides/bitbucket.md +9 -1
  550. package/docs/guides/github.md +20 -4
  551. package/docs/guides/gitlab.md +9 -1
  552. package/docs/guides/migrate.md +127 -0
  553. package/docs/reference/cli.md +39 -0
  554. package/docs/troubleshooting.md +1 -0
  555. package/package.json +1 -1
  556. package/skills/debug/SKILL.md +1 -0
  557. package/skills/github/SKILL.md +23 -0
  558. package/skills/migrate-v2/SKILL.md +51 -10
  559. package/dist/docs/assets/chunks/@localSearchIndexroot.BJ8UZggu.js +0 -1
  560. package/dist/docs/assets/chunks/channel.BTJ5J9FI.js +0 -1
  561. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.D4BZ3cVV.js +0 -1
  562. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.D4BZ3cVV.js +0 -1
  563. package/dist/docs/assets/chunks/clone.62tX-O-1.js +0 -1
  564. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DkTs1aEU.js +0 -1
  565. package/dist/docs/assets/reference_cli.md.GwugN3n-.lean.js +0 -1
  566. package/dist/docs/assets/troubleshooting.md.Bscj6ODe.js +0 -1
  567. package/dist/playground/assets/index-C1g_PTTZ.css +0 -1
  568. /package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.lean.js → building-with-agents.md.Df87rAe1.lean.js} +0 -0
  569. /package/dist/docs/assets/{deployment.md.BdqTiGdc.lean.js → deployment.md.BYuEcDBv.lean.js} +0 -0
  570. /package/dist/docs/assets/{reference_skills.md.ClkMoQsV.lean.js → reference_skills.md.C0guGcH0.lean.js} +0 -0
@@ -7,15 +7,6 @@
7
7
  * / `reasoning.appended` / `actions.requested`, not from model `react` /
8
8
  * `set-status`. Prefer the last assistant line before a `tool_call`.
9
9
  */
10
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
11
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12
- return new (P || (P = Promise))(function (resolve, reject) {
13
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
14
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
15
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
16
- step((generator = generator.apply(thisArg, _arguments || [])).next());
17
- });
18
- };
19
10
  import { markHostedFirstVisibleReply, noteHostedVisibleReplyError, } from "../../internal/hosted-execution-latency.js";
20
11
  import { begin, bind, end, has, latest, latestPosted, remove, resolve, setPostedText, } from "./agentic-posted.js";
21
12
  import { DELETE_MESSAGE, EDIT_MESSAGE, isOwnedSignal, isSignal, POST_CARD, POST_FILE, POST_UPDATE, parseCard, parseDelete, parseEdit, parseReaction, parseStagedFile, parseUpdate, REACT, } from "./agentic-signals.js";
@@ -44,523 +35,480 @@ function thread(state) {
44
35
  }
45
36
  return { channelId: state.channelId, threadTs: state.threadTs };
46
37
  }
47
- function postStaticPlaceholder(args) {
48
- return __awaiter(this, void 0, void 0, function* () {
49
- if (args.channel.state.placeholderPosted === true) {
50
- return;
51
- }
52
- if (args.placeholder === undefined) {
53
- return;
54
- }
55
- const target = thread(args.channel.state);
56
- if (target === undefined) {
57
- return;
58
- }
59
- const started = startPlaceholder({
60
- line: args.placeholder,
61
- botToken: args.botToken,
62
- channelId: target.channelId,
63
- threadTs: target.threadTs,
64
- log: args.log,
65
- recipientUserId: args.channel.state.triggeringUserId,
66
- recipientTeamId: args.channel.state.teamId,
67
- });
68
- yield started === null || started === void 0 ? void 0 : started.done;
38
+ async function postStaticPlaceholder(args) {
39
+ if (args.channel.state.placeholderPosted === true) {
40
+ return;
41
+ }
42
+ if (args.placeholder === undefined) {
43
+ return;
44
+ }
45
+ const target = thread(args.channel.state);
46
+ if (target === undefined) {
47
+ return;
48
+ }
49
+ const started = startPlaceholder({
50
+ line: args.placeholder,
51
+ botToken: args.botToken,
52
+ channelId: target.channelId,
53
+ threadTs: target.threadTs,
54
+ log: args.log,
55
+ recipientUserId: args.channel.state.triggeringUserId,
56
+ recipientTeamId: args.channel.state.teamId,
69
57
  });
58
+ await started?.done;
70
59
  }
71
- function setChip(channel, status, botToken, getLog, loadingMessages) {
72
- return __awaiter(this, void 0, void 0, function* () {
73
- const target = thread(channel.state);
74
- if (target === undefined) {
75
- return false;
76
- }
77
- const result = yield setThreadStatus({
78
- botToken,
79
- channelId: target.channelId,
80
- threadTs: target.threadTs,
81
- status,
82
- loadingMessages: loadingMessages === undefined ? undefined : [...loadingMessages],
83
- });
84
- if (!result.ok) {
85
- getLog().warn(`agentic status failed: ${result.error}`, {
86
- channel: target.channelId,
87
- thread_ts: target.threadTs,
88
- });
89
- return false;
90
- }
91
- return true;
60
+ async function setChip(channel, status, botToken, getLog, loadingMessages) {
61
+ const target = thread(channel.state);
62
+ if (target === undefined) {
63
+ return false;
64
+ }
65
+ const result = await setThreadStatus({
66
+ botToken,
67
+ channelId: target.channelId,
68
+ threadTs: target.threadTs,
69
+ status,
70
+ loadingMessages: loadingMessages === undefined ? undefined : [...loadingMessages],
92
71
  });
72
+ if (!result.ok) {
73
+ getLog().warn(`agentic status failed: ${result.error}`, {
74
+ channel: target.channelId,
75
+ thread_ts: target.threadTs,
76
+ });
77
+ return false;
78
+ }
79
+ return true;
93
80
  }
94
- function postNew(args) {
95
- return __awaiter(this, void 0, void 0, function* () {
96
- var _a, _b;
97
- const state = args.channel.state;
98
- const target = thread(state);
99
- if (target === undefined) {
100
- return;
101
- }
102
- const log = args.getLog();
103
- const overlaid = yield overlayPlaceholder({
104
- channelId: target.channelId,
105
- threadTs: target.threadTs,
81
+ async function postNew(args) {
82
+ const state = args.channel.state;
83
+ const target = thread(state);
84
+ if (target === undefined) {
85
+ return;
86
+ }
87
+ const log = args.getLog();
88
+ const overlaid = await overlayPlaceholder({
89
+ channelId: target.channelId,
90
+ threadTs: target.threadTs,
91
+ botToken: args.botToken,
92
+ text: args.text,
93
+ });
94
+ if (overlaid !== undefined) {
95
+ state.lastPostedText = args.text;
96
+ state.lastBotMessageTs = overlaid;
97
+ bind(args.sessionId, args.ts ?? overlaid, overlaid, args.text);
98
+ log.info("placeholder replaced", {
99
+ channel: target.channelId,
100
+ thread_ts: target.threadTs,
101
+ message_ts: overlaid,
102
+ session: args.sessionId,
103
+ chars: args.text.length,
104
+ });
105
+ markHostedFirstVisibleReply({
106
+ outcome: "progress_update",
107
+ deliverySurface: "slack",
108
+ });
109
+ await setChip(args.channel, "", args.botToken, args.getLog);
110
+ return;
111
+ }
112
+ try {
113
+ const posted = await postMessage({
106
114
  botToken: args.botToken,
115
+ channel: target.channelId,
107
116
  text: args.text,
117
+ threadTs: target.threadTs,
108
118
  });
109
- if (overlaid !== undefined) {
110
- state.lastPostedText = args.text;
111
- state.lastBotMessageTs = overlaid;
112
- bind(args.sessionId, (_a = args.ts) !== null && _a !== void 0 ? _a : overlaid, overlaid, args.text);
113
- log.info("placeholder replaced", {
114
- channel: target.channelId,
115
- thread_ts: target.threadTs,
116
- message_ts: overlaid,
117
- session: args.sessionId,
118
- chars: args.text.length,
119
- });
120
- markHostedFirstVisibleReply({
121
- outcome: "progress_update",
122
- deliverySurface: "slack",
123
- });
124
- yield setChip(args.channel, "", args.botToken, args.getLog);
125
- return;
126
- }
127
- try {
128
- const posted = yield postMessage({
129
- botToken: args.botToken,
130
- channel: target.channelId,
131
- text: args.text,
132
- threadTs: target.threadTs,
133
- });
134
- state.lastPostedText = args.text;
135
- state.lastBotMessageTs = posted.ts;
136
- bind(args.sessionId, (_b = args.ts) !== null && _b !== void 0 ? _b : posted.ts, posted.ts, args.text);
137
- log.info("agentic reply posted", {
138
- channel: target.channelId,
139
- thread_ts: target.threadTs,
140
- message_ts: posted.ts,
141
- session: args.sessionId,
142
- chars: args.text.length,
143
- });
144
- markHostedFirstVisibleReply({
145
- outcome: "final_post",
146
- deliverySurface: "slack",
147
- });
148
- yield setChip(args.channel, "", args.botToken, args.getLog);
149
- }
150
- catch (error) {
151
- log.warn(`agentic reply failed: ${error instanceof Error ? error.message : String(error)}`, {
152
- channel: target.channelId,
153
- thread_ts: target.threadTs,
154
- });
155
- noteHostedVisibleReplyError({ deliverySurface: "slack" });
156
- }
157
- });
119
+ state.lastPostedText = args.text;
120
+ state.lastBotMessageTs = posted.ts;
121
+ bind(args.sessionId, args.ts ?? posted.ts, posted.ts, args.text);
122
+ log.info("agentic reply posted", {
123
+ channel: target.channelId,
124
+ thread_ts: target.threadTs,
125
+ message_ts: posted.ts,
126
+ session: args.sessionId,
127
+ chars: args.text.length,
128
+ });
129
+ markHostedFirstVisibleReply({
130
+ outcome: "final_post",
131
+ deliverySurface: "slack",
132
+ });
133
+ await setChip(args.channel, "", args.botToken, args.getLog);
134
+ }
135
+ catch (error) {
136
+ log.warn(`agentic reply failed: ${error instanceof Error ? error.message : String(error)}`, {
137
+ channel: target.channelId,
138
+ thread_ts: target.threadTs,
139
+ });
140
+ noteHostedVisibleReplyError({ deliverySurface: "slack" });
141
+ }
158
142
  }
159
143
  export function buildAgenticEvents(options) {
160
- var _a;
161
- var _b, _c;
162
- const botToken = (_a = options.credentials) === null || _a === void 0 ? void 0 : _a.botToken;
163
- const getLog = (_b = options.getLog) !== null && _b !== void 0 ? _b : (() => defaultSlackLog);
164
- const ack = (_c = options.ack) !== null && _c !== void 0 ? _c : DEFAULT_ACK;
144
+ const botToken = options.credentials?.botToken;
145
+ const getLog = options.getLog ?? (() => defaultSlackLog);
146
+ const ack = options.ack ?? DEFAULT_ACK;
165
147
  const placeholder = options.placeholder;
166
148
  const status = options.status;
167
149
  const stream = createStreamDeliveryStrategy({ botToken, getLog });
168
150
  return {
169
- "turn.started"(event, channel, ctx) {
170
- return __awaiter(this, void 0, void 0, function* () {
171
- yield stream.cleanupOrphan({ channel });
172
- channel.state.agenticFiles = [];
173
- channel.state.streamTs = null;
174
- channel.state.streamChannelId = null;
175
- channel.state.streamFull = false;
176
- channel.state.streamingUnavailable = false;
177
- channel.state.streamAppendedChunks = 0;
178
- channel.state.lastReasoningTypingAtMs = null;
179
- channel.state.lastReasoningTypingStatus = null;
180
- channel.state.pendingToolCallMessage = null;
181
- channel.state.turnStartedAtMs = Date.now();
182
- begin(event.sessionId);
183
- if (ctx.session.dryRun === true) {
184
- return;
185
- }
186
- const target = thread(channel.state);
187
- if (target === undefined) {
188
- return;
189
- }
190
- if (channel.state.startPainted !== true) {
191
- yield paintTurnStart({
192
- botToken,
193
- channelId: target.channelId,
194
- threadTs: target.threadTs,
195
- ack,
196
- log: getLog(),
197
- });
198
- }
199
- yield postStaticPlaceholder({
200
- channel,
201
- placeholder,
151
+ async "turn.started"(event, channel, ctx) {
152
+ await stream.cleanupOrphan({ channel });
153
+ channel.state.agenticFiles = [];
154
+ channel.state.streamTs = null;
155
+ channel.state.streamChannelId = null;
156
+ channel.state.streamFull = false;
157
+ channel.state.streamingUnavailable = false;
158
+ channel.state.streamAppendedChunks = 0;
159
+ channel.state.lastReasoningTypingAtMs = null;
160
+ channel.state.lastReasoningTypingStatus = null;
161
+ channel.state.pendingToolCallMessage = null;
162
+ channel.state.turnStartedAtMs = Date.now();
163
+ begin(event.sessionId);
164
+ if (ctx.session.dryRun === true) {
165
+ return;
166
+ }
167
+ const target = thread(channel.state);
168
+ if (target === undefined) {
169
+ return;
170
+ }
171
+ if (channel.state.startPainted !== true) {
172
+ await paintTurnStart({
202
173
  botToken,
174
+ channelId: target.channelId,
175
+ threadTs: target.threadTs,
176
+ ack,
203
177
  log: getLog(),
204
178
  });
179
+ }
180
+ await postStaticPlaceholder({
181
+ channel,
182
+ placeholder,
183
+ botToken,
184
+ log: getLog(),
205
185
  });
206
186
  },
207
- "message.received"(_event, channel, ctx) {
208
- return __awaiter(this, void 0, void 0, function* () {
209
- if (ctx.session.dryRun === true) {
210
- return;
211
- }
212
- yield postStaticPlaceholder({
213
- channel,
214
- placeholder,
215
- botToken,
216
- log: getLog(),
217
- });
187
+ async "message.received"(_event, channel, ctx) {
188
+ if (ctx.session.dryRun === true) {
189
+ return;
190
+ }
191
+ await postStaticPlaceholder({
192
+ channel,
193
+ placeholder,
194
+ botToken,
195
+ log: getLog(),
218
196
  });
219
197
  },
220
- "reasoning.appended"(event, channel, ctx) {
221
- return __awaiter(this, void 0, void 0, function* () {
222
- if (nested(event) || ctx.session.dryRun === true) {
223
- return;
224
- }
225
- if (status.reasoning === false) {
226
- return;
227
- }
228
- const now = Date.now();
229
- const line = nextReasoningChip(channel.state, event.data.text, now);
230
- if (line === undefined) {
231
- return;
232
- }
233
- if (yield setChip(channel, line, botToken, getLog, [line])) {
234
- commitReasoningChip(channel.state, line, now);
235
- }
236
- });
198
+ async "reasoning.appended"(event, channel, ctx) {
199
+ if (nested(event) || ctx.session.dryRun === true) {
200
+ return;
201
+ }
202
+ if (status.reasoning === false) {
203
+ return;
204
+ }
205
+ const now = Date.now();
206
+ const line = nextReasoningChip(channel.state, event.data.text, now);
207
+ if (line === undefined) {
208
+ return;
209
+ }
210
+ if (await setChip(channel, line, botToken, getLog, [line])) {
211
+ commitReasoningChip(channel.state, line, now);
212
+ }
237
213
  },
238
- "message.completed"(event, channel, ctx) {
239
- return __awaiter(this, void 0, void 0, function* () {
240
- if (nested(event) || ctx.session.dryRun === true) {
241
- return;
242
- }
243
- rememberPendingToolCall(channel.state, event.data.finishReason, event.data.text);
244
- });
214
+ async "message.completed"(event, channel, ctx) {
215
+ if (nested(event) || ctx.session.dryRun === true) {
216
+ return;
217
+ }
218
+ rememberPendingToolCall(channel.state, event.data.finishReason, event.data.text);
245
219
  },
246
- "actions.requested"(event, channel, ctx) {
247
- return __awaiter(this, void 0, void 0, function* () {
248
- if (skip(event, ctx.session.dryRun)) {
249
- return;
250
- }
251
- const calls = event.data.calls.filter(call => !isOwnedSignal(call.toolName));
252
- const line = takeToolChipLine(channel.state, status.tools, calls);
253
- if (line === undefined) {
254
- return;
255
- }
256
- yield setChip(channel, line, botToken, getLog, [line]);
257
- });
220
+ async "actions.requested"(event, channel, ctx) {
221
+ if (skip(event, ctx.session.dryRun)) {
222
+ return;
223
+ }
224
+ const calls = event.data.calls.filter(call => !isOwnedSignal(call.toolName));
225
+ const line = takeToolChipLine(channel.state, status.tools, calls);
226
+ if (line === undefined) {
227
+ return;
228
+ }
229
+ await setChip(channel, line, botToken, getLog, [line]);
258
230
  },
259
- "action.result"(event, channel, ctx) {
260
- return __awaiter(this, void 0, void 0, function* () {
261
- var _a;
262
- if (skip(event, ctx.session.dryRun)) {
263
- return;
264
- }
265
- if (event.data.isError || event.data.stubbed === true) {
266
- return;
267
- }
268
- if (isSignal(event.data.toolName, POST_UPDATE)) {
269
- const update = parseUpdate(event.data.output);
270
- if (update === undefined) {
271
- return;
272
- }
273
- yield postNew({
274
- channel,
275
- text: update.message,
276
- ts: update.ts,
277
- sessionId: ctx.session.id,
278
- botToken,
279
- getLog,
280
- });
281
- return;
282
- }
283
- if (isSignal(event.data.toolName, EDIT_MESSAGE)) {
284
- yield applyEdit({
285
- channel,
286
- output: event.data.output,
287
- sessionId: ctx.session.id,
288
- botToken,
289
- getLog,
290
- });
291
- return;
292
- }
293
- if (isSignal(event.data.toolName, DELETE_MESSAGE)) {
294
- yield applyDelete({
295
- channel,
296
- output: event.data.output,
297
- sessionId: ctx.session.id,
298
- botToken,
299
- getLog,
300
- });
301
- return;
302
- }
303
- if (isSignal(event.data.toolName, POST_CARD)) {
304
- const card = parseCard(event.data.output);
305
- const channelId = channel.state.channelId;
306
- if (card === undefined || channelId === null || channelId === "") {
307
- return;
308
- }
309
- yield stream.appendChunks({
310
- channel,
311
- channelId,
312
- sessionId: ctx.session.id,
313
- chunks: [
314
- {
315
- type: "task_update",
316
- id: card.id,
317
- title: card.title,
318
- status: card.status,
319
- details: card.details,
320
- },
321
- ],
322
- });
231
+ async "action.result"(event, channel, ctx) {
232
+ if (skip(event, ctx.session.dryRun)) {
233
+ return;
234
+ }
235
+ if (event.data.isError || event.data.stubbed === true) {
236
+ return;
237
+ }
238
+ if (isSignal(event.data.toolName, POST_UPDATE)) {
239
+ const update = parseUpdate(event.data.output);
240
+ if (update === undefined) {
323
241
  return;
324
242
  }
325
- if (isSignal(event.data.toolName, REACT)) {
326
- yield applyReaction({
327
- channel,
328
- output: event.data.output,
329
- sessionId: ctx.session.id,
330
- botToken,
331
- getLog,
332
- });
333
- return;
334
- }
335
- if (!isSignal(event.data.toolName, POST_FILE)) {
336
- return;
337
- }
338
- const file = parseStagedFile(event.data.output);
339
- if (file === undefined) {
243
+ await postNew({
244
+ channel,
245
+ text: update.message,
246
+ ts: update.ts,
247
+ sessionId: ctx.session.id,
248
+ botToken,
249
+ getLog,
250
+ });
251
+ return;
252
+ }
253
+ if (isSignal(event.data.toolName, EDIT_MESSAGE)) {
254
+ await applyEdit({
255
+ channel,
256
+ output: event.data.output,
257
+ sessionId: ctx.session.id,
258
+ botToken,
259
+ getLog,
260
+ });
261
+ return;
262
+ }
263
+ if (isSignal(event.data.toolName, DELETE_MESSAGE)) {
264
+ await applyDelete({
265
+ channel,
266
+ output: event.data.output,
267
+ sessionId: ctx.session.id,
268
+ botToken,
269
+ getLog,
270
+ });
271
+ return;
272
+ }
273
+ if (isSignal(event.data.toolName, POST_CARD)) {
274
+ const card = parseCard(event.data.output);
275
+ const channelId = channel.state.channelId;
276
+ if (card === undefined || channelId === null || channelId === "") {
340
277
  return;
341
278
  }
342
- const staged = (_a = channel.state.agenticFiles) !== null && _a !== void 0 ? _a : [];
343
- staged.push(file);
344
- channel.state.agenticFiles = staged;
345
- });
279
+ await stream.appendChunks({
280
+ channel,
281
+ channelId,
282
+ sessionId: ctx.session.id,
283
+ chunks: [
284
+ {
285
+ type: "task_update",
286
+ id: card.id,
287
+ title: card.title,
288
+ status: card.status,
289
+ details: card.details,
290
+ },
291
+ ],
292
+ });
293
+ return;
294
+ }
295
+ if (isSignal(event.data.toolName, REACT)) {
296
+ await applyReaction({
297
+ channel,
298
+ output: event.data.output,
299
+ sessionId: ctx.session.id,
300
+ botToken,
301
+ getLog,
302
+ });
303
+ return;
304
+ }
305
+ if (!isSignal(event.data.toolName, POST_FILE)) {
306
+ return;
307
+ }
308
+ const file = parseStagedFile(event.data.output);
309
+ if (file === undefined) {
310
+ return;
311
+ }
312
+ const staged = channel.state.agenticFiles ?? [];
313
+ staged.push(file);
314
+ channel.state.agenticFiles = staged;
346
315
  },
347
- "turn.completed"(_event, channel, ctx) {
348
- return __awaiter(this, void 0, void 0, function* () {
349
- var _a;
350
- yield stream.cleanupOrphan({ channel });
351
- if (ctx.session.dryRun !== true) {
352
- yield setChip(channel, "", botToken, getLog);
353
- yield paintFooter({
354
- channel,
355
- sessionId: ctx.session.id,
356
- status: "completed",
357
- footer: options.footer,
358
- botToken,
359
- getLog,
360
- host: ctx.host,
361
- });
362
- }
363
- yield retractUnclaimed(channel, botToken, getLog);
364
- end(ctx.session.id);
365
- const files = (_a = channel.state.agenticFiles) !== null && _a !== void 0 ? _a : [];
366
- channel.state.agenticFiles = [];
367
- yield uploadStaged(files, channel, botToken, getLog);
368
- });
316
+ async "turn.completed"(_event, channel, ctx) {
317
+ await stream.cleanupOrphan({ channel });
318
+ if (ctx.session.dryRun !== true) {
319
+ await setChip(channel, "", botToken, getLog);
320
+ await paintFooter({
321
+ channel,
322
+ sessionId: ctx.session.id,
323
+ status: "completed",
324
+ footer: options.footer,
325
+ botToken,
326
+ getLog,
327
+ host: ctx.host,
328
+ });
329
+ }
330
+ await retractUnclaimed(channel, botToken, getLog);
331
+ end(ctx.session.id);
332
+ const files = channel.state.agenticFiles ?? [];
333
+ channel.state.agenticFiles = [];
334
+ await uploadStaged(files, channel, botToken, getLog);
369
335
  },
370
- "turn.failed"(_event, channel, ctx) {
371
- return __awaiter(this, void 0, void 0, function* () {
372
- yield stream.cleanupOrphan({ channel });
373
- channel.state.agenticFiles = [];
374
- if (ctx.session.dryRun !== true) {
375
- yield setChip(channel, "", botToken, getLog);
376
- yield paintFooter({
377
- channel,
378
- sessionId: ctx.session.id,
379
- status: "failed",
380
- footer: options.footer,
381
- botToken,
382
- getLog,
383
- host: ctx.host,
384
- });
385
- }
386
- yield retractUnclaimed(channel, botToken, getLog);
387
- end(ctx.session.id);
388
- });
336
+ async "turn.failed"(_event, channel, ctx) {
337
+ await stream.cleanupOrphan({ channel });
338
+ channel.state.agenticFiles = [];
339
+ if (ctx.session.dryRun !== true) {
340
+ await setChip(channel, "", botToken, getLog);
341
+ await paintFooter({
342
+ channel,
343
+ sessionId: ctx.session.id,
344
+ status: "failed",
345
+ footer: options.footer,
346
+ botToken,
347
+ getLog,
348
+ host: ctx.host,
349
+ });
350
+ }
351
+ await retractUnclaimed(channel, botToken, getLog);
352
+ end(ctx.session.id);
389
353
  },
390
354
  };
391
355
  }
392
- function paintFooter(args) {
393
- return __awaiter(this, void 0, void 0, function* () {
394
- const posted = latestPosted(args.sessionId);
395
- const target = thread(args.channel.state);
396
- if (posted === undefined || target === undefined) {
397
- return;
398
- }
399
- const result = yield paintSlackFooter({
400
- footer: args.footer,
401
- ctx: {
402
- sessionId: args.sessionId,
403
- channelId: target.channelId,
404
- threadTs: target.threadTs,
405
- text: posted.text,
406
- status: args.status,
407
- durationMs: turnDurationMs(args.channel.state.turnStartedAtMs),
408
- host: args.host,
409
- },
410
- ts: posted.ts,
411
- botToken: args.botToken,
412
- });
413
- if (result !== undefined && !result.ok) {
414
- args.getLog().warn(`agentic footer failed: ${result.error}`, {
415
- channel: target.channelId,
416
- ts: posted.ts,
417
- });
418
- }
419
- });
420
- }
421
- function retractUnclaimed(channel, botToken, getLog) {
422
- return __awaiter(this, void 0, void 0, function* () {
423
- const target = thread(channel.state);
424
- if (target === undefined) {
425
- return;
426
- }
427
- yield finishPlaceholder({
356
+ async function paintFooter(args) {
357
+ const posted = latestPosted(args.sessionId);
358
+ const target = thread(args.channel.state);
359
+ if (posted === undefined || target === undefined) {
360
+ return;
361
+ }
362
+ const result = await paintSlackFooter({
363
+ footer: args.footer,
364
+ ctx: {
365
+ sessionId: args.sessionId,
428
366
  channelId: target.channelId,
429
367
  threadTs: target.threadTs,
430
- botToken,
431
- log: getLog(),
432
- });
368
+ text: posted.text,
369
+ status: args.status,
370
+ durationMs: turnDurationMs(args.channel.state.turnStartedAtMs),
371
+ host: args.host,
372
+ },
373
+ ts: posted.ts,
374
+ botToken: args.botToken,
433
375
  });
376
+ if (result !== undefined && !result.ok) {
377
+ args.getLog().warn(`agentic footer failed: ${result.error}`, {
378
+ channel: target.channelId,
379
+ ts: posted.ts,
380
+ });
381
+ }
434
382
  }
435
- function applyOwned(args) {
436
- return __awaiter(this, void 0, void 0, function* () {
437
- const target = thread(args.channel.state);
438
- if (target === undefined) {
439
- return;
440
- }
441
- const log = args.getLog();
442
- if (!has(args.sessionId, args.ts)) {
443
- log.warn(`agentic ${args.verb} rejected: ts is not a message this turn posted`, {
444
- channel: target.channelId,
445
- ts: args.ts,
446
- });
447
- return;
448
- }
449
- const slackTs = resolve(args.sessionId, args.ts);
450
- if (slackTs === undefined) {
451
- return;
452
- }
453
- const result = yield args.write(target.channelId, slackTs);
454
- if (!result.ok) {
455
- log.warn(`agentic ${args.verb} failed: ${result.error}`, {
456
- channel: target.channelId,
457
- ts: args.ts,
458
- });
459
- return;
460
- }
461
- if (args.ok !== undefined) {
462
- args.ok(slackTs);
463
- }
383
+ async function retractUnclaimed(channel, botToken, getLog) {
384
+ const target = thread(channel.state);
385
+ if (target === undefined) {
386
+ return;
387
+ }
388
+ await finishPlaceholder({
389
+ channelId: target.channelId,
390
+ threadTs: target.threadTs,
391
+ botToken,
392
+ log: getLog(),
464
393
  });
465
394
  }
466
- function applyEdit(args) {
467
- return __awaiter(this, void 0, void 0, function* () {
468
- const edit = parseEdit(args.output);
469
- if (edit === undefined) {
470
- return;
471
- }
472
- yield applyOwned({
473
- channel: args.channel,
474
- sessionId: args.sessionId,
475
- ts: edit.ts,
476
- botToken: args.botToken,
477
- getLog: args.getLog,
478
- verb: "edit",
479
- write: (channelId, ts) => updateMessage({
480
- botToken: args.botToken,
481
- channel: channelId,
482
- ts,
483
- text: edit.message,
484
- }),
485
- ok: slackTs => {
486
- setPostedText(args.sessionId, slackTs, edit.message);
487
- },
395
+ async function applyOwned(args) {
396
+ const target = thread(args.channel.state);
397
+ if (target === undefined) {
398
+ return;
399
+ }
400
+ const log = args.getLog();
401
+ if (!has(args.sessionId, args.ts)) {
402
+ log.warn(`agentic ${args.verb} rejected: ts is not a message this turn posted`, {
403
+ channel: target.channelId,
404
+ ts: args.ts,
488
405
  });
489
- });
406
+ return;
407
+ }
408
+ const slackTs = resolve(args.sessionId, args.ts);
409
+ if (slackTs === undefined) {
410
+ return;
411
+ }
412
+ const result = await args.write(target.channelId, slackTs);
413
+ if (!result.ok) {
414
+ log.warn(`agentic ${args.verb} failed: ${result.error}`, {
415
+ channel: target.channelId,
416
+ ts: args.ts,
417
+ });
418
+ return;
419
+ }
420
+ if (args.ok !== undefined) {
421
+ args.ok(slackTs);
422
+ }
490
423
  }
491
- function applyDelete(args) {
492
- return __awaiter(this, void 0, void 0, function* () {
493
- const removed = parseDelete(args.output);
494
- if (removed === undefined) {
495
- return;
496
- }
497
- yield applyOwned({
498
- channel: args.channel,
499
- sessionId: args.sessionId,
500
- ts: removed.ts,
424
+ async function applyEdit(args) {
425
+ const edit = parseEdit(args.output);
426
+ if (edit === undefined) {
427
+ return;
428
+ }
429
+ await applyOwned({
430
+ channel: args.channel,
431
+ sessionId: args.sessionId,
432
+ ts: edit.ts,
433
+ botToken: args.botToken,
434
+ getLog: args.getLog,
435
+ verb: "edit",
436
+ write: (channelId, ts) => updateMessage({
501
437
  botToken: args.botToken,
502
- getLog: args.getLog,
503
- verb: "delete",
504
- write: (channelId, ts) => deleteMessage({
505
- botToken: args.botToken,
506
- channel: channelId,
507
- ts,
508
- }),
509
- ok: slackTs => {
510
- var _a;
511
- remove(args.sessionId, removed.ts);
512
- if (args.channel.state.lastBotMessageTs === slackTs) {
513
- args.channel.state.lastBotMessageTs = (_a = latest(args.sessionId)) !== null && _a !== void 0 ? _a : null;
514
- }
515
- },
516
- });
438
+ channel: channelId,
439
+ ts,
440
+ text: edit.message,
441
+ }),
442
+ ok: slackTs => {
443
+ setPostedText(args.sessionId, slackTs, edit.message);
444
+ },
517
445
  });
518
446
  }
519
- function applyReaction(args) {
520
- return __awaiter(this, void 0, void 0, function* () {
521
- var _a;
522
- const reaction = parseReaction(args.output);
523
- const target = thread(args.channel.state);
524
- if (reaction === undefined || target === undefined) {
525
- return;
526
- }
527
- const ts = (_a = reaction.ts) !== null && _a !== void 0 ? _a : target.threadTs;
528
- const result = yield addReaction({
447
+ async function applyDelete(args) {
448
+ const removed = parseDelete(args.output);
449
+ if (removed === undefined) {
450
+ return;
451
+ }
452
+ await applyOwned({
453
+ channel: args.channel,
454
+ sessionId: args.sessionId,
455
+ ts: removed.ts,
456
+ botToken: args.botToken,
457
+ getLog: args.getLog,
458
+ verb: "delete",
459
+ write: (channelId, ts) => deleteMessage({
529
460
  botToken: args.botToken,
530
- channel: target.channelId,
461
+ channel: channelId,
531
462
  ts,
532
- name: reaction.emoji,
533
- });
534
- if (!result.ok) {
535
- args.getLog().warn(`agentic react failed: ${result.error}`, {
536
- channel: target.channelId,
537
- ts,
538
- });
539
- }
463
+ }),
464
+ ok: slackTs => {
465
+ remove(args.sessionId, removed.ts);
466
+ if (args.channel.state.lastBotMessageTs === slackTs) {
467
+ args.channel.state.lastBotMessageTs = latest(args.sessionId) ?? null;
468
+ }
469
+ },
540
470
  });
541
471
  }
542
- function uploadStaged(files, channel, botToken, getLog) {
543
- return __awaiter(this, void 0, void 0, function* () {
544
- if (files.length === 0) {
545
- return;
546
- }
547
- const target = thread(channel.state);
548
- if (target === undefined) {
549
- return;
550
- }
551
- const failures = yield uploadThreadFiles({
552
- botToken,
553
- channelId: target.channelId,
554
- threadTs: target.threadTs,
555
- files,
556
- });
557
- if (failures.length === 0) {
558
- return;
559
- }
560
- getLog().warn("agentic file upload failed", {
472
+ async function applyReaction(args) {
473
+ const reaction = parseReaction(args.output);
474
+ const target = thread(args.channel.state);
475
+ if (reaction === undefined || target === undefined) {
476
+ return;
477
+ }
478
+ const ts = reaction.ts ?? target.threadTs;
479
+ const result = await addReaction({
480
+ botToken: args.botToken,
481
+ channel: target.channelId,
482
+ ts,
483
+ name: reaction.emoji,
484
+ });
485
+ if (!result.ok) {
486
+ args.getLog().warn(`agentic react failed: ${result.error}`, {
561
487
  channel: target.channelId,
562
- thread_ts: target.threadTs,
563
- failures: failures.join("; "),
488
+ ts,
564
489
  });
490
+ }
491
+ }
492
+ async function uploadStaged(files, channel, botToken, getLog) {
493
+ if (files.length === 0) {
494
+ return;
495
+ }
496
+ const target = thread(channel.state);
497
+ if (target === undefined) {
498
+ return;
499
+ }
500
+ const failures = await uploadThreadFiles({
501
+ botToken,
502
+ channelId: target.channelId,
503
+ threadTs: target.threadTs,
504
+ files,
505
+ });
506
+ if (failures.length === 0) {
507
+ return;
508
+ }
509
+ getLog().warn("agentic file upload failed", {
510
+ channel: target.channelId,
511
+ thread_ts: target.threadTs,
512
+ failures: failures.join("; "),
565
513
  });
566
514
  }