@cursor/july 0.1.111 → 0.1.112
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.
- package/dist/bin/agent-serve.js +18 -1
- package/dist/channels/github/github-channel.d.ts +29 -19
- package/dist/channels/github/github-channel.d.ts.map +1 -1
- package/dist/channels/github/github-channel.js +29 -19
- package/dist/channels/slack/agentic-delivery.d.ts.map +1 -1
- package/dist/channels/slack/agentic-delivery.js +2 -0
- package/dist/channels/slack/dispatch.d.ts +11 -1
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +142 -39
- package/dist/channels/slack/placeholder.d.ts +26 -0
- package/dist/channels/slack/placeholder.d.ts.map +1 -1
- package/dist/channels/slack/placeholder.js +28 -0
- package/dist/channels/slack/slack-channel.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.js +9 -16
- package/dist/docs/404.html +2 -2
- package/dist/docs/assets/{app.Drol6mi6.js → app.DxTdhphC.js} +4 -4
- package/dist/docs/assets/building-with-agents.md.BBCx0AUo.js +9 -0
- package/dist/docs/assets/building-with-agents.md.BBCx0AUo.lean.js +1 -0
- package/dist/docs/assets/chunks/@localSearchIndexroot.QmjDU6Jh.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.CdqoBZJX.js → VPLocalSearchBox.CR3KTF0X.js} +1 -1
- package/dist/docs/assets/chunks/{arc.BVX3ycTn.js → arc.CVVqBOdS.js} +1 -1
- package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.CcChnMxX.js → architectureDiagram-Q4EWVU46.CJHGP4ki.js} +1 -1
- package/dist/docs/assets/chunks/{baseUniq.xwtXO-yt.js → baseUniq.r7UVVRBP.js} +1 -1
- package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.CijZ_taK.js → blockDiagram-DXYQGD6D.DKmMaTre.js} +1 -1
- package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.0FBvwBvK.js → c4Diagram-AHTNJAMY.DDJsntUO.js} +1 -1
- package/dist/docs/assets/chunks/channel.BjpoSbz_.js +1 -0
- package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CELMmMDA.js → chunk-4BX2VUAB.BK2rKt6W.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-4TB4RGXK.C4bhFtSm.js → chunk-4TB4RGXK.DRLV8RnF.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-55IACEB6.ZnQ9gRRQ.js → chunk-55IACEB6.DaKjxtb7.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-EDXVE4YY.DPlmglG-.js → chunk-EDXVE4YY.C5sPCIT1.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-FMBD7UC4.BrUk8pff.js → chunk-FMBD7UC4.CSGWyNTB.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-OYMX7WX6.CcmWIncu.js → chunk-OYMX7WX6.D5tK9XEr.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-QZHKN3VN.D65-cs8I.js → chunk-QZHKN3VN.BeZGd1UZ.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-YZCP3GAM.qoXZpG9F.js → chunk-YZCP3GAM.U_tfWwQR.js} +1 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.BgxOlMHw.js +1 -0
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.BgxOlMHw.js +1 -0
- package/dist/docs/assets/chunks/clone.DRuGBKZC.js +1 -0
- package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.8rYtqudO.js → cose-bilkent-S5V4N54A.DVeRXIb6.js} +1 -1
- package/dist/docs/assets/chunks/{dagre-KV5264BT.DrRP1fOh.js → dagre-KV5264BT.BpKJAeRZ.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-5BDNPKRD.DHj_xA2_.js → diagram-5BDNPKRD.BQOtrd1Z.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.Bz_6nAKj.js → diagram-G4DWMVQ6.CSDAhjPI.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-MMDJMWI5.BWA0xSW9.js → diagram-MMDJMWI5.Dpztst2S.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-TYMM5635.CpTJLNJI.js → diagram-TYMM5635.qJHRizHR.js} +1 -1
- package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.-7AWWSrP.js → erDiagram-SMLLAGMA.vbDotH3l.js} +1 -1
- package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.BTnQ742_.js → flowDiagram-DWJPFMVM.CqS_ZQr4.js} +1 -1
- package/dist/docs/assets/chunks/framework.BNw1pucY.js +19 -0
- package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.B5_HiiQ5.js → ganttDiagram-T4ZO3ILL.DTLdR4pN.js} +1 -1
- package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.CZcNTFZd.js → gitGraphDiagram-UUTBAWPF.D04lnbnr.js} +1 -1
- package/dist/docs/assets/chunks/{graph.V2GLaab4.js → graph.BlfqLJsM.js} +1 -1
- package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.7pZOkCCU.js → infoDiagram-42DDH7IO.tAooImWA.js} +1 -1
- package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.DSMo3Qa3.js → ishikawaDiagram-UXIWVN3A.ClUsVqnJ.js} +1 -1
- package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.BNEgWN1S.js → journeyDiagram-VCZTEJTY.C3tUgyCg.js} +1 -1
- package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.B-4d4tC7.js → kanban-definition-6JOO6SKY.CtD9-QCe.js} +1 -1
- package/dist/docs/assets/chunks/{layout.Dvbn9nSb.js → layout.D38U-LnT.js} +1 -1
- package/dist/docs/assets/chunks/{linear.D2GM4p4b.js → linear.BJmssyhN.js} +1 -1
- package/dist/docs/assets/chunks/{min.DVBtLK-B.js → min.DNgXoouU.js} +1 -1
- package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.CnJRI55x.js → mindmap-definition-QFDTVHPH.Dcp6cxeu.js} +1 -1
- package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.CtoaTFlA.js → pieDiagram-DEJITSTG.CLDw6zIs.js} +1 -1
- package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.DtT24_vN.js → quadrantDiagram-34T5L4WZ.CYaeeY4c.js} +1 -1
- package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.CjSO4o8f.js → requirementDiagram-MS252O5E.gMYuRpq2.js} +1 -1
- package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.-wWiIVWa.js → sankeyDiagram-XADWPNL6.CZqyHFbc.js} +1 -1
- package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.DSk8s4gX.js → sequenceDiagram-FGHM5R23.BTsCjUDN.js} +1 -1
- package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.BFKAsdkN.js → stateDiagram-FHFEXIEX.CftT9mLJ.js} +1 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.-43J68xB.js +1 -0
- package/dist/docs/assets/chunks/{theme.C0MctGaz.js → theme.B_7J9ZsV.js} +2 -2
- package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.TUNJbAFe.js → timeline-definition-GMOUNBTQ.DbU3WUNw.js} +1 -1
- package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.C-RGNnk4.js → vennDiagram-DHZGUBPP.ixsq-q2u.js} +1 -1
- package/dist/docs/assets/chunks/wardley-RL74JXVD.WRXz-Dux.js +162 -0
- package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.DH4zt73Y.js → wardleyDiagram-NUSXRM2D.C0ewvgbp.js} +1 -1
- package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.B-3k6bF6.js → xychartDiagram-5P7HB3ND.nAEhF4bO.js} +1 -1
- package/dist/docs/assets/deployment.md.D2jQZuFx.js +32 -0
- package/dist/docs/assets/deployment.md.D2jQZuFx.lean.js +1 -0
- package/dist/docs/assets/evals.md.BYvfZ-PO.js +72 -0
- package/dist/docs/assets/evals.md.BYvfZ-PO.lean.js +1 -0
- package/dist/docs/assets/guides_agent-to-agent.md.8oDTfu-E.js +30 -0
- package/dist/docs/assets/guides_agent-to-agent.md.8oDTfu-E.lean.js +1 -0
- package/dist/docs/assets/guides_bitbucket.md.mpevW-VP.js +145 -0
- package/dist/docs/assets/guides_bitbucket.md.mpevW-VP.lean.js +1 -0
- package/dist/docs/assets/guides_cloud-agents.md.Cp1O3u-X.js +15 -0
- package/dist/docs/assets/guides_cloud-agents.md.Cp1O3u-X.lean.js +1 -0
- package/dist/docs/assets/guides_convert-automation.md.CqEyfP6Y.js +43 -0
- package/dist/docs/assets/guides_convert-automation.md.CqEyfP6Y.lean.js +1 -0
- package/dist/docs/assets/guides_github.md.BwpBp3ed.js +156 -0
- package/dist/docs/assets/guides_github.md.BwpBp3ed.lean.js +1 -0
- package/dist/docs/assets/guides_gitlab.md.DaEC3nMk.js +153 -0
- package/dist/docs/assets/guides_gitlab.md.DaEC3nMk.lean.js +1 -0
- package/dist/docs/assets/guides_grokbot-agents.md.CMhZNdEU.js +16 -0
- package/dist/docs/assets/guides_grokbot-agents.md.CMhZNdEU.lean.js +1 -0
- package/dist/docs/assets/guides_improve.md.Bnp4F99w.js +22 -0
- package/dist/docs/assets/guides_improve.md.Bnp4F99w.lean.js +1 -0
- package/dist/docs/assets/guides_mcp-oauth.md.bSFakfCY.js +50 -0
- package/dist/docs/assets/guides_mcp-oauth.md.bSFakfCY.lean.js +1 -0
- package/dist/docs/assets/guides_opentelemetry.md.BKDxQmmd.js +35 -0
- package/dist/docs/assets/guides_opentelemetry.md.BKDxQmmd.lean.js +1 -0
- package/dist/docs/assets/guides_slack.md.Bo96y42E.js +70 -0
- package/dist/docs/assets/guides_slack.md.Bo96y42E.lean.js +1 -0
- package/dist/docs/assets/guides_webhooks.md.1A72_VEE.js +92 -0
- package/dist/docs/assets/guides_webhooks.md.1A72_VEE.lean.js +1 -0
- package/dist/docs/assets/hillclimbing.md.D4E1o5Sa.js +7 -0
- package/dist/docs/assets/hillclimbing.md.D4E1o5Sa.lean.js +1 -0
- package/dist/docs/assets/{index.md.BFVyY2KT.js → index.md.C-t81M5J.js} +2 -2
- package/dist/docs/assets/{index.md.BFVyY2KT.lean.js → index.md.C-t81M5J.lean.js} +1 -1
- package/dist/docs/assets/{quickstart.md.D3MjSZN-.js → quickstart.md.DAvVhuuU.js} +1 -1
- package/dist/docs/assets/{quickstart.md.D3MjSZN-.lean.js → quickstart.md.DAvVhuuU.lean.js} +1 -1
- package/dist/docs/assets/{reference_agent-config.md.CfVA-LZJ.js → reference_agent-config.md.DGPyw7ms.js} +1 -1
- package/dist/docs/assets/{reference_agent-config.md.CfVA-LZJ.lean.js → reference_agent-config.md.DGPyw7ms.lean.js} +1 -1
- package/dist/docs/assets/{reference_artifacts.md.Vf7qyIZ-.js → reference_artifacts.md.Bu_4HmsD.js} +1 -1
- package/dist/docs/assets/{reference_artifacts.md.Vf7qyIZ-.lean.js → reference_artifacts.md.Bu_4HmsD.lean.js} +1 -1
- package/dist/docs/assets/{reference_channels.md.icqLKcTc.js → reference_channels.md.nFWbzAic.js} +1 -1
- package/dist/docs/assets/{reference_channels.md.icqLKcTc.lean.js → reference_channels.md.nFWbzAic.lean.js} +1 -1
- package/dist/docs/assets/{reference_cli.md.B2dBL6L8.js → reference_cli.md.DLWDz9ij.js} +3 -1
- package/dist/docs/assets/{reference_cli.md.B2dBL6L8.lean.js → reference_cli.md.DLWDz9ij.lean.js} +1 -1
- package/dist/docs/assets/{reference_connections.md.Cb3U_c8n.js → reference_connections.md.CmyrlXfY.js} +1 -1
- package/dist/docs/assets/{reference_connections.md.Cb3U_c8n.lean.js → reference_connections.md.CmyrlXfY.lean.js} +1 -1
- package/dist/docs/assets/reference_evals.md.DNJzM_yf.js +57 -0
- package/dist/docs/assets/reference_evals.md.DNJzM_yf.lean.js +1 -0
- package/dist/docs/assets/reference_extensions.md.Ceq-qT8d.js +58 -0
- package/dist/docs/assets/reference_extensions.md.Ceq-qT8d.lean.js +1 -0
- package/dist/docs/assets/{reference_hooks.md.CZuynAxj.js → reference_hooks.md.B7uzNENk.js} +2 -2
- package/dist/docs/assets/{reference_hooks.md.CZuynAxj.lean.js → reference_hooks.md.B7uzNENk.lean.js} +1 -1
- package/dist/docs/assets/{reference_http-api.md.DTKcYE6L.js → reference_http-api.md.CduHavZ2.js} +1 -1
- package/dist/docs/assets/{reference_http-api.md.DTKcYE6L.lean.js → reference_http-api.md.CduHavZ2.lean.js} +1 -1
- package/dist/docs/assets/{reference_instructions.md.D7gkckK-.js → reference_instructions.md.CU1My5My.js} +1 -1
- package/dist/docs/assets/{reference_instructions.md.D7gkckK-.lean.js → reference_instructions.md.CU1My5My.lean.js} +1 -1
- package/dist/docs/assets/{reference_playground.md.D2YExv5K.js → reference_playground.md.Ch2d0Iqi.js} +1 -1
- package/dist/docs/assets/{reference_playground.md.D2YExv5K.lean.js → reference_playground.md.Ch2d0Iqi.lean.js} +1 -1
- package/dist/docs/assets/{reference_project-layout.md.DPxbUJyt.js → reference_project-layout.md.BGhgpy9V.js} +1 -1
- package/dist/docs/assets/{reference_project-layout.md.DPxbUJyt.lean.js → reference_project-layout.md.BGhgpy9V.lean.js} +1 -1
- package/dist/docs/assets/{reference_prompt.md.BQ5uAv1F.js → reference_prompt.md.Ccp0R53H.js} +1 -1
- package/dist/docs/assets/{reference_prompt.md.BQ5uAv1F.lean.js → reference_prompt.md.Ccp0R53H.lean.js} +1 -1
- package/dist/docs/assets/{reference_schedules.md.BasfZWO-.js → reference_schedules.md.B2Nm6FaD.js} +1 -1
- package/dist/docs/assets/{reference_schedules.md.BasfZWO-.lean.js → reference_schedules.md.B2Nm6FaD.lean.js} +1 -1
- package/dist/docs/assets/{reference_sessions.md.YKvIsWAx.js → reference_sessions.md.1_6Vyv7x.js} +1 -1
- package/dist/docs/assets/{reference_sessions.md.YKvIsWAx.lean.js → reference_sessions.md.1_6Vyv7x.lean.js} +1 -1
- package/dist/docs/assets/{reference_skills.md.rNgpsGd0.js → reference_skills.md.DjQkRefx.js} +1 -1
- package/dist/docs/assets/{reference_skills.md.rNgpsGd0.lean.js → reference_skills.md.DjQkRefx.lean.js} +1 -1
- package/dist/docs/assets/{reference_subagents.md.e5qitjJt.js → reference_subagents.md.BHsSMMyO.js} +1 -1
- package/dist/docs/assets/{reference_subagents.md.e5qitjJt.lean.js → reference_subagents.md.BHsSMMyO.lean.js} +1 -1
- package/dist/docs/assets/{reference_tools.md.BdCO2aHZ.js → reference_tools.md.BYzUTeVA.js} +1 -1
- package/dist/docs/assets/{reference_tools.md.BdCO2aHZ.lean.js → reference_tools.md.BYzUTeVA.lean.js} +1 -1
- package/dist/docs/assets/{templates_agentic-owners.md.Da_AGDlH.js → templates_agentic-owners.md.9M575F5C.js} +1 -1
- package/dist/docs/assets/{templates_agentic-owners.md.Da_AGDlH.lean.js → templates_agentic-owners.md.9M575F5C.lean.js} +1 -1
- package/dist/docs/assets/{templates_pr-autofixer.md.DqxocIGh.js → templates_pr-autofixer.md.ws0DDXDy.js} +1 -1
- package/dist/docs/assets/{templates_pr-autofixer.md.DqxocIGh.lean.js → templates_pr-autofixer.md.ws0DDXDy.lean.js} +1 -1
- package/dist/docs/assets/{templates_security-reviewer.md.Bhnvd8VE.js → templates_security-reviewer.md.KEFYXzfK.js} +1 -1
- package/dist/docs/assets/{templates_security-reviewer.md.Bhnvd8VE.lean.js → templates_security-reviewer.md.KEFYXzfK.lean.js} +1 -1
- package/dist/docs/assets/templates_thermo-quality-review.md.VNJ_mohX.js +3 -0
- package/dist/docs/assets/templates_thermo-quality-review.md.VNJ_mohX.lean.js +1 -0
- package/dist/docs/assets/templates_thermo-review.md.Hi3zWOkP.js +3 -0
- package/dist/docs/assets/templates_thermo-review.md.Hi3zWOkP.lean.js +1 -0
- package/dist/docs/assets/{templates_triage.md.BdBWO9Ic.js → templates_triage.md.CVGe_FG6.js} +1 -1
- package/dist/docs/assets/{templates_triage.md.BdBWO9Ic.lean.js → templates_triage.md.CVGe_FG6.lean.js} +1 -1
- package/dist/docs/assets/troubleshooting.md.mnfFG2Em.js +1 -0
- package/dist/docs/assets/troubleshooting.md.mnfFG2Em.lean.js +1 -0
- package/dist/docs/building-with-agents.html +44 -48
- package/dist/docs/building-with-agents.md +94 -82
- package/dist/docs/deployment.html +59 -78
- package/dist/docs/deployment.md +117 -363
- package/dist/docs/evals.html +85 -224
- package/dist/docs/evals.md +146 -673
- package/dist/docs/guides/agent-to-agent.html +58 -42
- package/dist/docs/guides/agent-to-agent.md +112 -35
- package/dist/docs/guides/bitbucket.html +179 -44
- package/dist/docs/guides/bitbucket.md +249 -48
- package/dist/docs/guides/cloud-agents.html +46 -40
- package/dist/docs/guides/cloud-agents.md +119 -66
- package/dist/docs/guides/convert-automation.html +80 -49
- package/dist/docs/guides/convert-automation.md +156 -147
- package/dist/docs/guides/github.html +184 -92
- package/dist/docs/guides/github.md +260 -245
- package/dist/docs/guides/gitlab.html +184 -45
- package/dist/docs/guides/gitlab.md +249 -50
- package/dist/docs/guides/grokbot-agents.html +48 -41
- package/dist/docs/guides/grokbot-agents.md +99 -53
- package/dist/docs/guides/improve.html +48 -40
- package/dist/docs/guides/improve.md +111 -58
- package/dist/docs/guides/mcp-oauth.html +74 -52
- package/dist/docs/guides/mcp-oauth.md +111 -121
- package/dist/docs/guides/opentelemetry.html +63 -54
- package/dist/docs/guides/opentelemetry.md +96 -165
- package/dist/docs/guides/slack.html +83 -59
- package/dist/docs/guides/slack.md +157 -227
- package/dist/docs/guides/webhooks.html +97 -230
- package/dist/docs/guides/webhooks.md +154 -385
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +44 -38
- package/dist/docs/hillclimbing.md +101 -55
- package/dist/docs/index.html +38 -38
- package/dist/docs/index.md +2 -0
- package/dist/docs/llms-full.txt +3082 -3104
- package/dist/docs/llms.txt +21 -18
- package/dist/docs/quickstart.html +37 -37
- package/dist/docs/reference/agent-config.html +37 -37
- package/dist/docs/reference/artifacts.html +38 -38
- package/dist/docs/reference/channels.html +37 -37
- package/dist/docs/reference/cli.html +39 -37
- package/dist/docs/reference/cli.md +2 -0
- package/dist/docs/reference/connections.html +37 -37
- package/dist/docs/reference/evals.html +116 -0
- package/dist/docs/reference/evals.md +293 -0
- package/dist/docs/reference/extensions.html +80 -84
- package/dist/docs/reference/extensions.md +127 -199
- package/dist/docs/reference/hooks.html +39 -39
- package/dist/docs/reference/hooks.md +34 -34
- package/dist/docs/reference/http-api.html +37 -37
- package/dist/docs/reference/instructions.html +37 -37
- package/dist/docs/reference/playground.html +37 -37
- package/dist/docs/reference/project-layout.html +37 -37
- package/dist/docs/reference/prompt.html +37 -37
- package/dist/docs/reference/schedules.html +37 -37
- package/dist/docs/reference/sessions.html +37 -37
- package/dist/docs/reference/skills.html +37 -37
- package/dist/docs/reference/subagents.html +37 -37
- package/dist/docs/reference/tools.html +37 -37
- package/dist/docs/templates/agentic-owners.html +38 -38
- package/dist/docs/templates/pr-autofixer.html +37 -37
- package/dist/docs/templates/security-reviewer.html +38 -38
- package/dist/docs/templates/thermo-quality-review.html +62 -0
- package/dist/docs/templates/thermo-quality-review.md +75 -0
- package/dist/docs/templates/thermo-review.html +62 -0
- package/dist/docs/templates/thermo-review.md +74 -0
- package/dist/docs/templates/triage.html +37 -37
- package/dist/docs/troubleshooting.html +38 -38
- package/dist/docs/troubleshooting.md +97 -66
- package/dist/extensions/cursor-cloud-agents/skills/handoff.md +3 -7
- package/dist/extensions/improve/extension.d.ts +3 -1
- package/dist/extensions/improve/extension.d.ts.map +1 -1
- package/dist/extensions/improve/extension.js +4 -2
- package/dist/extensions/improve/skills/yourself.js +1 -1
- package/dist/filesystem.d.ts +46 -2
- package/dist/filesystem.d.ts.map +1 -1
- package/dist/filesystem.js +149 -102
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/internal/cli-ax.d.ts +6 -0
- package/dist/internal/cli-ax.d.ts.map +1 -1
- package/dist/internal/cli-ax.js +72 -14
- package/dist/internal/continuation-identity.d.ts.map +1 -1
- package/dist/internal/continuation-identity.js +1 -0
- package/dist/internal/cursor-agent-template.d.ts +1 -1
- package/dist/internal/cursor-agent-template.d.ts.map +1 -1
- package/dist/internal/cursor-agent-template.js +2 -0
- package/dist/internal/filesystem/tools.d.ts.map +1 -1
- package/dist/internal/filesystem/tools.js +2 -2
- package/dist/internal/filesystem/walk.d.ts +7 -4
- package/dist/internal/filesystem/walk.d.ts.map +1 -1
- package/dist/internal/filesystem/walk.js +34 -11
- package/dist/internal/hosted-admission-adapter.d.ts +3 -0
- package/dist/internal/hosted-admission-adapter.d.ts.map +1 -1
- package/dist/internal/hosted-delivery-protocol.d.ts +17 -0
- package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
- package/dist/internal/hosted-delivery-protocol.js +50 -1
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +8 -0
- package/dist/internal/init-project.d.ts.map +1 -1
- package/dist/internal/init-project.js +4 -0
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +94 -39
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +11 -5
- package/dist/internal/skill-catalog.d.ts +28 -0
- package/dist/internal/skill-catalog.d.ts.map +1 -0
- package/dist/internal/skill-catalog.js +44 -0
- package/dist/playground/assets/index-B1c1LeIf.js +67 -0
- package/dist/playground/assets/index-CK2LX3iD.css +1 -0
- package/dist/playground/index.html +2 -2
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +2 -0
- package/docs/building-with-agents.md +96 -84
- package/docs/deployment.md +118 -364
- package/docs/evals.md +147 -674
- package/docs/guides/agent-to-agent.md +113 -36
- package/docs/guides/bitbucket.md +250 -49
- package/docs/guides/cloud-agents.md +119 -67
- package/docs/guides/convert-automation.md +157 -148
- package/docs/guides/github.md +261 -246
- package/docs/guides/gitlab.md +250 -51
- package/docs/guides/grokbot-agents.md +100 -55
- package/docs/guides/improve.md +112 -59
- package/docs/guides/mcp-oauth.md +112 -122
- package/docs/guides/opentelemetry.md +97 -166
- package/docs/guides/slack.md +158 -228
- package/docs/guides/webhooks.md +155 -386
- package/docs/hillclimbing.md +102 -56
- package/docs/reference/cli.md +2 -0
- package/docs/reference/evals.md +298 -0
- package/docs/reference/extensions.md +128 -200
- package/docs/reference/hooks.md +34 -34
- package/docs/templates/thermo-quality-review.md +80 -0
- package/docs/templates/thermo-review.md +79 -0
- package/docs/troubleshooting.md +98 -67
- package/package.json +1 -1
- package/skills/github/SKILL.md +21 -13
- package/src/bin/agent-serve.ts +22 -0
- package/src/channels/github/github-channel.ts +29 -19
- package/src/channels/slack/agentic-delivery.ts +2 -0
- package/src/channels/slack/dispatch.ts +126 -4
- package/src/channels/slack/placeholder.ts +51 -0
- package/src/channels/slack/slack-channel.ts +9 -2
- package/src/extensions/cursor-cloud-agents/skills/handoff.md +3 -7
- package/src/extensions/improve/extension.ts +4 -2
- package/src/extensions/improve/skills/yourself.ts +1 -1
- package/src/filesystem.ts +168 -65
- package/src/index.ts +3 -0
- package/src/internal/cli-ax.ts +88 -15
- package/src/internal/continuation-identity.ts +1 -0
- package/src/internal/cursor-agent-template.ts +2 -0
- package/src/internal/filesystem/tools.ts +2 -0
- package/src/internal/filesystem/walk.ts +60 -15
- package/src/internal/hosted-admission-adapter.ts +3 -0
- package/src/internal/hosted-delivery-protocol.ts +78 -1
- package/src/internal/hosted-delivery.ts +8 -0
- package/src/internal/init-project.ts +4 -0
- package/src/internal/server.ts +104 -41
- package/src/internal/session-engine.ts +16 -4
- package/src/internal/skill-catalog.ts +69 -0
- package/src/types.ts +9 -0
- package/templates/thermo-quality-review/README.md +35 -0
- package/templates/thermo-quality-review/agent/agent.ts +8 -0
- package/templates/thermo-quality-review/agent/channels/github.ts +42 -0
- package/templates/thermo-quality-review/agent/instructions.md +43 -0
- package/templates/thermo-quality-review/agent/tools/post_findings.ts +70 -0
- package/templates/thermo-quality-review/evals/evals.config.ts +5 -0
- package/templates/thermo-quality-review/evals/review.eval.ts +62 -0
- package/templates/thermo-quality-review/package.json +18 -0
- package/templates/thermo-quality-review/tsconfig.json +12 -0
- package/templates/thermo-review/README.md +35 -0
- package/templates/thermo-review/agent/agent.ts +8 -0
- package/templates/thermo-review/agent/channels/github.ts +42 -0
- package/templates/thermo-review/agent/instructions.md +40 -0
- package/templates/thermo-review/agent/tools/post_findings.ts +70 -0
- package/templates/thermo-review/evals/evals.config.ts +5 -0
- package/templates/thermo-review/evals/review.eval.ts +53 -0
- package/templates/thermo-review/package.json +18 -0
- package/templates/thermo-review/tsconfig.json +12 -0
- package/dist/docs/assets/building-with-agents.md.CEGVXkmO.js +0 -13
- package/dist/docs/assets/building-with-agents.md.CEGVXkmO.lean.js +0 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.DtXk1hy-.js +0 -1
- package/dist/docs/assets/chunks/channel.Bkv1N-gK.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CZDco1o8.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CZDco1o8.js +0 -1
- package/dist/docs/assets/chunks/clone.YSt_40_s.js +0 -1
- package/dist/docs/assets/chunks/framework.dypDpWZ3.js +0 -19
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.C4CLm481.js +0 -1
- package/dist/docs/assets/chunks/wardley-RL74JXVD.g5efOWmT.js +0 -162
- package/dist/docs/assets/deployment.md.Dm4Qo3hp.js +0 -51
- package/dist/docs/assets/deployment.md.Dm4Qo3hp.lean.js +0 -1
- package/dist/docs/assets/evals.md.BLDRt5LH.js +0 -211
- package/dist/docs/assets/evals.md.BLDRt5LH.lean.js +0 -1
- package/dist/docs/assets/guides_agent-to-agent.md.BI0xclmy.js +0 -14
- package/dist/docs/assets/guides_agent-to-agent.md.BI0xclmy.lean.js +0 -1
- package/dist/docs/assets/guides_bitbucket.md.CTpCl__f.js +0 -10
- package/dist/docs/assets/guides_bitbucket.md.CTpCl__f.lean.js +0 -1
- package/dist/docs/assets/guides_cloud-agents.md.lSE_l7lH.js +0 -9
- package/dist/docs/assets/guides_cloud-agents.md.lSE_l7lH.lean.js +0 -1
- package/dist/docs/assets/guides_convert-automation.md.Ck6Cr68A.js +0 -12
- package/dist/docs/assets/guides_convert-automation.md.Ck6Cr68A.lean.js +0 -1
- package/dist/docs/assets/guides_github.md.D6ER29dG.js +0 -64
- package/dist/docs/assets/guides_github.md.D6ER29dG.lean.js +0 -1
- package/dist/docs/assets/guides_gitlab.md.P-TjBnS5.js +0 -14
- package/dist/docs/assets/guides_gitlab.md.P-TjBnS5.lean.js +0 -1
- package/dist/docs/assets/guides_grokbot-agents.md.WBZIOvkz.js +0 -9
- package/dist/docs/assets/guides_grokbot-agents.md.WBZIOvkz.lean.js +0 -1
- package/dist/docs/assets/guides_improve.md.BKaDuKKK.js +0 -14
- package/dist/docs/assets/guides_improve.md.BKaDuKKK.lean.js +0 -1
- package/dist/docs/assets/guides_mcp-oauth.md.DMNMpXtO.js +0 -28
- package/dist/docs/assets/guides_mcp-oauth.md.DMNMpXtO.lean.js +0 -1
- package/dist/docs/assets/guides_opentelemetry.md._CRfDyzH.js +0 -26
- package/dist/docs/assets/guides_opentelemetry.md._CRfDyzH.lean.js +0 -1
- package/dist/docs/assets/guides_slack.md.DdT8rmsj.js +0 -46
- package/dist/docs/assets/guides_slack.md.DdT8rmsj.lean.js +0 -1
- package/dist/docs/assets/guides_webhooks.md.aQW10HRe.js +0 -225
- package/dist/docs/assets/guides_webhooks.md.aQW10HRe.lean.js +0 -1
- package/dist/docs/assets/hillclimbing.md.Dq4kkVIL.js +0 -1
- package/dist/docs/assets/hillclimbing.md.Dq4kkVIL.lean.js +0 -1
- package/dist/docs/assets/reference_extensions.md.wlFD3cUR.js +0 -62
- package/dist/docs/assets/reference_extensions.md.wlFD3cUR.lean.js +0 -1
- package/dist/docs/assets/troubleshooting.md.BcgNoYtJ.js +0 -1
- package/dist/docs/assets/troubleshooting.md.BcgNoYtJ.lean.js +0 -1
- package/dist/playground/assets/index-BLlKgZtI.css +0 -1
- package/dist/playground/assets/index-CDS5p9sR.js +0 -67
|
@@ -13,6 +13,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
13
13
|
import { continuationSource, normalizeIdentity, } from "../../internal/continuation-identity.js";
|
|
14
14
|
import { isDeferredChannelSession } from "../../internal/deferred-channel-session.js";
|
|
15
15
|
import { routeLocalIngressContinuation } from "../../internal/local-ingress.js";
|
|
16
|
+
import { mapThrownRequestError } from "../../internal/request-error-status.js";
|
|
16
17
|
import { isSlackImChannel } from "../../internal/slack-thread-key.js";
|
|
17
18
|
import { steeringEnabled } from "../../internal/steering.js";
|
|
18
19
|
import { buildSlackBinding, slackContinuationKey } from "./api.js";
|
|
@@ -23,7 +24,7 @@ import { isExternalSlackSender } from "./external-policy.js";
|
|
|
23
24
|
import { describeSlackEventShape, formatSlackContextBlock, parseAppHomeOpened, parseAppMentionEvent, parseAssistantThreadStarted, parseChannelMessageEvent, parseDirectMessageEvent, parseReactionAddedEvent, } from "./inbound.js";
|
|
24
25
|
import { defaultSlackLog } from "./log.js";
|
|
25
26
|
import { paintTurnStart, retractTurnStart } from "./paint-start.js";
|
|
26
|
-
import { startPlaceholder } from "./placeholder.js";
|
|
27
|
+
import { adoptPlaceholder, retractPlaceholderMessage, retractPlaceholderSlot, startPlaceholder, } from "./placeholder.js";
|
|
27
28
|
import { isWholeMessageStop } from "./stop.js";
|
|
28
29
|
import { loadSlackThreadContextBlock, loadSlackThreadDeltaBlock, } from "./thread-context.js";
|
|
29
30
|
const FOLLOWUP_TYPING = "Saw your follow-up…";
|
|
@@ -104,7 +105,9 @@ function inboundContinuation(deps) {
|
|
|
104
105
|
: { interruptContinuation: deps.interruptContinuation }));
|
|
105
106
|
}
|
|
106
107
|
function scheduleInbound(deps, log, args) {
|
|
107
|
-
deps.waitUntil(dispatchInboundMessage(Object.assign(Object.assign({ kind: args.kind, message: args.message, handler: args.handler, propagateHandlerErrors: deps.propagateHandlerErrors, send: deps.send, credentials: deps.credentials, host: deps.host, artifacts: deps.artifacts, log, evalCommandsEnabled: args.evalCommandsEnabled, followUpStatus: deps.followUpStatus, ack: deps.ack, placeholder: deps.placeholder, blockExternals: deps.blockExternals }, inboundContinuation(deps)), (args.eventId === undefined ? {} : { eventId: args.eventId }))
|
|
108
|
+
deps.waitUntil(dispatchInboundMessage(Object.assign(Object.assign(Object.assign({ kind: args.kind, message: args.message, handler: args.handler, propagateHandlerErrors: deps.propagateHandlerErrors, send: deps.send, credentials: deps.credentials, host: deps.host, artifacts: deps.artifacts, log, evalCommandsEnabled: args.evalCommandsEnabled, followUpStatus: deps.followUpStatus, ack: deps.ack, placeholder: deps.placeholder, blockExternals: deps.blockExternals }, inboundContinuation(deps)), (args.eventId === undefined ? {} : { eventId: args.eventId })), (args.platformHandoff === undefined
|
|
109
|
+
? {}
|
|
110
|
+
: { platformHandoff: args.platformHandoff }))));
|
|
108
111
|
}
|
|
109
112
|
function slackSessionContinuation(identity, channelId, threadTs) {
|
|
110
113
|
if (continuationSource(identity, "slack") === "engine") {
|
|
@@ -125,10 +128,10 @@ function slackSessionContinuation(identity, channelId, threadTs) {
|
|
|
125
128
|
}
|
|
126
129
|
export function dispatchInboundMessage(args) {
|
|
127
130
|
return __awaiter(this, void 0, void 0, function* () {
|
|
128
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0;
|
|
129
|
-
var
|
|
131
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2;
|
|
132
|
+
var _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17;
|
|
130
133
|
const { message, kind } = args;
|
|
131
|
-
const log = (
|
|
134
|
+
const log = (_3 = args.log) !== null && _3 !== void 0 ? _3 : defaultSlackLog;
|
|
132
135
|
const binding = buildSlackBinding({
|
|
133
136
|
botToken: (_a = args.credentials) === null || _a === void 0 ? void 0 : _a.botToken,
|
|
134
137
|
channelId: message.channelId,
|
|
@@ -147,10 +150,72 @@ export function dispatchInboundMessage(args) {
|
|
|
147
150
|
user: (_b = message.author) === null || _b === void 0 ? void 0 : _b.userId,
|
|
148
151
|
team: message.teamId,
|
|
149
152
|
});
|
|
150
|
-
const
|
|
153
|
+
const handoff = (_c = args.platformHandoff) === null || _c === void 0 ? void 0 : _c.slackPlaceholder;
|
|
154
|
+
const matchedHandoff = args.placeholder !== undefined &&
|
|
155
|
+
kind !== "channel_post" &&
|
|
156
|
+
handoff !== undefined &&
|
|
157
|
+
handoff.channelId === message.channelId &&
|
|
158
|
+
handoff.threadTs === message.threadTs
|
|
159
|
+
? handoff
|
|
160
|
+
: undefined;
|
|
161
|
+
let adoptedPlaceholder = false;
|
|
162
|
+
let handoffRetracted = false;
|
|
163
|
+
const retractUnadoptedHandoff = () => __awaiter(this, void 0, void 0, function* () {
|
|
164
|
+
var _a;
|
|
165
|
+
if (matchedHandoff === undefined || handoffRetracted) {
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
handoffRetracted = true;
|
|
169
|
+
yield retractPlaceholderMessage({
|
|
170
|
+
botToken: (_a = args.credentials) === null || _a === void 0 ? void 0 : _a.botToken,
|
|
171
|
+
channelId: matchedHandoff.channelId,
|
|
172
|
+
ts: matchedHandoff.messageTs,
|
|
173
|
+
streamed: matchedHandoff.streamed,
|
|
174
|
+
log,
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
const adoptMatchedHandoff = () => __awaiter(this, void 0, void 0, function* () {
|
|
178
|
+
if (matchedHandoff === undefined) {
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
const adoption = adoptPlaceholder({
|
|
182
|
+
channelId: matchedHandoff.channelId,
|
|
183
|
+
threadTs: matchedHandoff.threadTs,
|
|
184
|
+
ts: matchedHandoff.messageTs,
|
|
185
|
+
streamed: matchedHandoff.streamed,
|
|
186
|
+
});
|
|
187
|
+
if (adoption === "adopted") {
|
|
188
|
+
adoptedPlaceholder = true;
|
|
189
|
+
log.info("placeholder adopted from control-plane handoff", {
|
|
190
|
+
channel: message.channelId,
|
|
191
|
+
thread_ts: message.threadTs,
|
|
192
|
+
message_ts: matchedHandoff.messageTs,
|
|
193
|
+
});
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
if (adoption === "occupied") {
|
|
197
|
+
// Another delivery owns this thread's slot. Remove only this delivery's
|
|
198
|
+
// redundant CP post.
|
|
199
|
+
yield retractUnadoptedHandoff();
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
const retractAdoptedPlaceholder = () => __awaiter(this, void 0, void 0, function* () {
|
|
203
|
+
var _a;
|
|
204
|
+
if (!adoptedPlaceholder) {
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
adoptedPlaceholder = false;
|
|
208
|
+
yield retractPlaceholderSlot({
|
|
209
|
+
channelId: message.channelId,
|
|
210
|
+
threadTs: message.threadTs,
|
|
211
|
+
botToken: (_a = args.credentials) === null || _a === void 0 ? void 0 : _a.botToken,
|
|
212
|
+
log,
|
|
213
|
+
});
|
|
214
|
+
});
|
|
215
|
+
const userId = (_4 = (_d = message.author) === null || _d === void 0 ? void 0 : _d.userId) !== null && _4 !== void 0 ? _4 : "";
|
|
151
216
|
const teamId = message.teamId;
|
|
152
217
|
let membership;
|
|
153
|
-
if (args.blockExternals !== false && ((
|
|
218
|
+
if (args.blockExternals !== false && ((_e = message.author) === null || _e === void 0 ? void 0 : _e.isBot) !== true) {
|
|
154
219
|
if (teamId === undefined || teamId === "") {
|
|
155
220
|
log.info("inbound dropped (missing team)", {
|
|
156
221
|
kind,
|
|
@@ -159,10 +224,11 @@ export function dispatchInboundMessage(args) {
|
|
|
159
224
|
user: userId,
|
|
160
225
|
event_id: args.eventId,
|
|
161
226
|
});
|
|
227
|
+
yield retractUnadoptedHandoff();
|
|
162
228
|
return;
|
|
163
229
|
}
|
|
164
230
|
membership = isExternalSlackSender({
|
|
165
|
-
botToken: (
|
|
231
|
+
botToken: (_f = args.credentials) === null || _f === void 0 ? void 0 : _f.botToken,
|
|
166
232
|
slackTeamId: teamId,
|
|
167
233
|
userId,
|
|
168
234
|
});
|
|
@@ -188,6 +254,7 @@ export function dispatchInboundMessage(args) {
|
|
|
188
254
|
isWholeMessageStop(message.markdown)) {
|
|
189
255
|
if (membership !== undefined && (yield membership)) {
|
|
190
256
|
dropExternal();
|
|
257
|
+
yield retractUnadoptedHandoff();
|
|
191
258
|
return;
|
|
192
259
|
}
|
|
193
260
|
log.info("stop directive", {
|
|
@@ -197,16 +264,17 @@ export function dispatchInboundMessage(args) {
|
|
|
197
264
|
continuation,
|
|
198
265
|
event_id: args.eventId,
|
|
199
266
|
});
|
|
200
|
-
yield (
|
|
267
|
+
yield (_g = args.host.slackNudges) === null || _g === void 0 ? void 0 : _g.clear(continuation);
|
|
201
268
|
const interrupted = args.interruptContinuation === undefined
|
|
202
269
|
? false
|
|
203
270
|
: yield args.interruptContinuation(continuation);
|
|
204
271
|
try {
|
|
205
272
|
yield binding.thread.startTyping(interrupted ? "Stopped." : "Nothing to stop.");
|
|
206
273
|
}
|
|
207
|
-
catch (
|
|
274
|
+
catch (_18) {
|
|
208
275
|
// best-effort status
|
|
209
276
|
}
|
|
277
|
+
yield retractUnadoptedHandoff();
|
|
210
278
|
return;
|
|
211
279
|
}
|
|
212
280
|
// Built-in eval directive: run playground batches without an agent turn.
|
|
@@ -215,11 +283,12 @@ export function dispatchInboundMessage(args) {
|
|
|
215
283
|
const evalCommandsEnabled = args.evalCommandsEnabled !== false &&
|
|
216
284
|
(kind === "app_mention" || kind === "direct_message");
|
|
217
285
|
const evalDirective = evalCommandsEnabled && args.host.evals !== undefined
|
|
218
|
-
? ((
|
|
286
|
+
? ((_5 = parseSlackEvalDirective(message.text)) !== null && _5 !== void 0 ? _5 : parseSlackEvalDirective(message.markdown))
|
|
219
287
|
: null;
|
|
220
288
|
if (evalDirective !== null && args.host.evals !== undefined) {
|
|
221
289
|
if (membership !== undefined && (yield membership)) {
|
|
222
290
|
dropExternal();
|
|
291
|
+
yield retractUnadoptedHandoff();
|
|
223
292
|
return;
|
|
224
293
|
}
|
|
225
294
|
log.info("eval directive", {
|
|
@@ -235,6 +304,7 @@ export function dispatchInboundMessage(args) {
|
|
|
235
304
|
evals: args.host.evals,
|
|
236
305
|
binding,
|
|
237
306
|
});
|
|
307
|
+
yield retractUnadoptedHandoff();
|
|
238
308
|
return;
|
|
239
309
|
}
|
|
240
310
|
let decision;
|
|
@@ -249,8 +319,12 @@ export function dispatchInboundMessage(args) {
|
|
|
249
319
|
event_id: args.eventId,
|
|
250
320
|
});
|
|
251
321
|
if (args.propagateHandlerErrors === true) {
|
|
322
|
+
if (((_h = mapThrownRequestError(error)) === null || _h === void 0 ? void 0 : _h.retry) !== "transient") {
|
|
323
|
+
yield retractUnadoptedHandoff();
|
|
324
|
+
}
|
|
252
325
|
throw error;
|
|
253
326
|
}
|
|
327
|
+
yield retractUnadoptedHandoff();
|
|
254
328
|
return;
|
|
255
329
|
}
|
|
256
330
|
if (decision === null || decision === undefined) {
|
|
@@ -260,10 +334,11 @@ export function dispatchInboundMessage(args) {
|
|
|
260
334
|
thread_ts: message.threadTs,
|
|
261
335
|
event_id: args.eventId,
|
|
262
336
|
});
|
|
337
|
+
yield retractUnadoptedHandoff();
|
|
263
338
|
return;
|
|
264
339
|
}
|
|
265
340
|
// Reply-once / delayed parent: claim channel:ts after the handler accepts.
|
|
266
|
-
const claimed = yield (
|
|
341
|
+
const claimed = yield (_j = args.host.slackNudges) === null || _j === void 0 ? void 0 : _j.tryClaimAsk(message.channelId, message.ts);
|
|
267
342
|
if (claimed === false) {
|
|
268
343
|
log.info("inbound ask dedupe drop", {
|
|
269
344
|
kind,
|
|
@@ -274,10 +349,11 @@ export function dispatchInboundMessage(args) {
|
|
|
274
349
|
});
|
|
275
350
|
return;
|
|
276
351
|
}
|
|
352
|
+
yield adoptMatchedHandoff();
|
|
277
353
|
const painted = args.ack === undefined
|
|
278
354
|
? undefined
|
|
279
355
|
: paintTurnStart({
|
|
280
|
-
botToken: (
|
|
356
|
+
botToken: (_k = args.credentials) === null || _k === void 0 ? void 0 : _k.botToken,
|
|
281
357
|
channelId: message.channelId,
|
|
282
358
|
threadTs: message.threadTs,
|
|
283
359
|
ack: args.ack,
|
|
@@ -285,7 +361,7 @@ export function dispatchInboundMessage(args) {
|
|
|
285
361
|
});
|
|
286
362
|
if (message.ts === message.threadTs && !isSlackImChannel(message.channelId)) {
|
|
287
363
|
void maybeSetThreadTitle({
|
|
288
|
-
botToken: (
|
|
364
|
+
botToken: (_l = args.credentials) === null || _l === void 0 ? void 0 : _l.botToken,
|
|
289
365
|
channelId: message.channelId,
|
|
290
366
|
threadTs: message.threadTs,
|
|
291
367
|
title: firstLineTitle(message.markdown),
|
|
@@ -294,13 +370,13 @@ export function dispatchInboundMessage(args) {
|
|
|
294
370
|
}
|
|
295
371
|
const excludeThreadTimestamps = [
|
|
296
372
|
message.ts,
|
|
297
|
-
...((
|
|
373
|
+
...((_6 = decision.excludeThreadTimestamps) !== null && _6 !== void 0 ? _6 : []),
|
|
298
374
|
];
|
|
299
375
|
const mergeMessages = [triggeringMergeMessage(message)];
|
|
300
376
|
const mediaTask = slackTurnMedia({
|
|
301
377
|
message,
|
|
302
378
|
decision,
|
|
303
|
-
botToken: (
|
|
379
|
+
botToken: (_m = args.credentials) === null || _m === void 0 ? void 0 : _m.botToken,
|
|
304
380
|
log,
|
|
305
381
|
});
|
|
306
382
|
const continuationExists = existsP === undefined ? false : yield existsP;
|
|
@@ -314,10 +390,10 @@ export function dispatchInboundMessage(args) {
|
|
|
314
390
|
const threadTask = !loadThread
|
|
315
391
|
? Promise.resolve(undefined)
|
|
316
392
|
: hasSession
|
|
317
|
-
? loadSlackThreadDeltaBlock(Object.assign(Object.assign({ botToken: (
|
|
393
|
+
? loadSlackThreadDeltaBlock(Object.assign(Object.assign({ botToken: (_o = args.credentials) === null || _o === void 0 ? void 0 : _o.botToken, channelId: message.channelId, threadTs: message.threadTs }, (afterTs === undefined ? {} : { afterTs })), { excludeTs: excludeThreadTimestamps, mergeMessages,
|
|
318
394
|
log }))
|
|
319
395
|
: loadSlackThreadContextBlock({
|
|
320
|
-
botToken: (
|
|
396
|
+
botToken: (_p = args.credentials) === null || _p === void 0 ? void 0 : _p.botToken,
|
|
321
397
|
channelId: message.channelId,
|
|
322
398
|
threadTs: message.threadTs,
|
|
323
399
|
excludeTs: excludeThreadTimestamps,
|
|
@@ -334,14 +410,15 @@ export function dispatchInboundMessage(args) {
|
|
|
334
410
|
if (painted !== undefined) {
|
|
335
411
|
yield painted;
|
|
336
412
|
yield retractTurnStart({
|
|
337
|
-
botToken: (
|
|
413
|
+
botToken: (_q = args.credentials) === null || _q === void 0 ? void 0 : _q.botToken,
|
|
338
414
|
channelId: message.channelId,
|
|
339
415
|
threadTs: message.threadTs,
|
|
340
|
-
ack: (
|
|
416
|
+
ack: (_7 = args.ack) !== null && _7 !== void 0 ? _7 : "",
|
|
341
417
|
log,
|
|
342
418
|
});
|
|
343
419
|
}
|
|
344
|
-
yield (
|
|
420
|
+
yield (_r = args.host.slackNudges) === null || _r === void 0 ? void 0 : _r.releaseAsk(message.channelId, message.ts);
|
|
421
|
+
yield retractAdoptedPlaceholder();
|
|
345
422
|
return;
|
|
346
423
|
}
|
|
347
424
|
if (message.files !== undefined && message.files.length > 0) {
|
|
@@ -349,8 +426,8 @@ export function dispatchInboundMessage(args) {
|
|
|
349
426
|
kind,
|
|
350
427
|
channel: message.channelId,
|
|
351
428
|
thread_ts: message.threadTs,
|
|
352
|
-
images: (
|
|
353
|
-
workspace_files: Object.keys((
|
|
429
|
+
images: (_8 = (_s = media.images) === null || _s === void 0 ? void 0 : _s.length) !== null && _8 !== void 0 ? _8 : 0,
|
|
430
|
+
workspace_files: Object.keys((_9 = media.workspaceFiles) !== null && _9 !== void 0 ? _9 : {}).length,
|
|
354
431
|
event_id: args.eventId,
|
|
355
432
|
});
|
|
356
433
|
}
|
|
@@ -358,11 +435,11 @@ export function dispatchInboundMessage(args) {
|
|
|
358
435
|
log.info(hasSession ? "thread delta loaded" : "thread context loaded", Object.assign({ kind, channel: message.channelId, thread_ts: message.threadTs, chars: threadContext.length, event_id: args.eventId }, (afterTs === undefined ? {} : { after_ts: afterTs })));
|
|
359
436
|
}
|
|
360
437
|
const prompt = [
|
|
361
|
-
formatSlackContextBlock(Object.assign(Object.assign({ userId: (
|
|
438
|
+
formatSlackContextBlock(Object.assign(Object.assign({ userId: (_10 = (_t = message.author) === null || _t === void 0 ? void 0 : _t.userId) !== null && _10 !== void 0 ? _10 : "", channelId: message.channelId, threadTs: message.threadTs }, (((_u = message.author) === null || _u === void 0 ? void 0 : _u.userName) === undefined
|
|
362
439
|
? {}
|
|
363
440
|
: { userName: message.author.userName })), (message.teamId === undefined ? {} : { teamId: message.teamId }))),
|
|
364
441
|
...(threadContext === undefined ? [] : [threadContext]),
|
|
365
|
-
...((
|
|
442
|
+
...((_11 = decision.context) !== null && _11 !== void 0 ? _11 : []),
|
|
366
443
|
"",
|
|
367
444
|
media.userText,
|
|
368
445
|
]
|
|
@@ -374,34 +451,36 @@ export function dispatchInboundMessage(args) {
|
|
|
374
451
|
const hostedFollowup = hosted &&
|
|
375
452
|
hasPlaceholder &&
|
|
376
453
|
(message.ts !== message.threadTs || continuationExists);
|
|
377
|
-
|
|
454
|
+
// Adopted slots already exist in Slack; skip a second post. Cold hosted
|
|
455
|
+
// without a handoff still defers to `turn.started`.
|
|
456
|
+
const placeholder = !adoptedPlaceholder && hasPlaceholder && (!hosted || hostedFollowup)
|
|
378
457
|
? startPlaceholder({
|
|
379
458
|
line: placeholderLine,
|
|
380
|
-
botToken: (
|
|
459
|
+
botToken: (_v = args.credentials) === null || _v === void 0 ? void 0 : _v.botToken,
|
|
381
460
|
channelId: message.channelId,
|
|
382
461
|
threadTs: message.threadTs,
|
|
383
462
|
log,
|
|
384
|
-
recipientUserId: (
|
|
463
|
+
recipientUserId: (_w = message.author) === null || _w === void 0 ? void 0 : _w.userId,
|
|
385
464
|
recipientTeamId: message.teamId,
|
|
386
465
|
})
|
|
387
466
|
: undefined;
|
|
388
|
-
const posted = placeholder !== undefined;
|
|
467
|
+
const posted = adoptedPlaceholder || placeholder !== undefined;
|
|
389
468
|
const state = emptySlackChannelState({
|
|
390
469
|
channelId: message.channelId,
|
|
391
470
|
threadTs: message.threadTs,
|
|
392
|
-
teamId: (
|
|
393
|
-
triggeringUserId: (
|
|
471
|
+
teamId: (_12 = message.teamId) !== null && _12 !== void 0 ? _12 : null,
|
|
472
|
+
triggeringUserId: (_13 = (_x = message.author) === null || _x === void 0 ? void 0 : _x.userId) !== null && _13 !== void 0 ? _13 : null,
|
|
394
473
|
startPainted: paintedStart,
|
|
395
474
|
placeholderPosted: posted,
|
|
396
475
|
});
|
|
397
476
|
const sendOptions = Object.assign(Object.assign({ auth: decision.auth }, sendPatch), { admission: "coalesce", coalesceSourceTs: message.ts, state: state, refreshState: slackWakeChannelState({
|
|
398
477
|
channelId: message.channelId,
|
|
399
478
|
threadTs: message.threadTs,
|
|
400
|
-
teamId: (
|
|
401
|
-
triggeringUserId: (
|
|
479
|
+
teamId: (_14 = message.teamId) !== null && _14 !== void 0 ? _14 : null,
|
|
480
|
+
triggeringUserId: (_15 = (_y = message.author) === null || _y === void 0 ? void 0 : _y.userId) !== null && _15 !== void 0 ? _15 : null,
|
|
402
481
|
startPainted: paintedStart,
|
|
403
482
|
placeholderPosted: posted,
|
|
404
|
-
}), title: (
|
|
483
|
+
}), title: (_16 = decision.title) !== null && _16 !== void 0 ? _16 : `slack:${message.channelId}:${message.threadTs}`, workspaceDir: decision.workspaceDir, workspaceFiles: media.workspaceFiles, images: media.images, cloud: decision.cloud, sdkAgentId: decision.sdkAgentId });
|
|
405
484
|
try {
|
|
406
485
|
const session = yield args.send(prompt, sendOptions);
|
|
407
486
|
if (isDeferredChannelSession(session)) {
|
|
@@ -438,11 +517,11 @@ export function dispatchInboundMessage(args) {
|
|
|
438
517
|
});
|
|
439
518
|
if (!steeringEnabled()) {
|
|
440
519
|
try {
|
|
441
|
-
yield (
|
|
520
|
+
yield (_z = args.host.slackNudges) === null || _z === void 0 ? void 0 : _z.append({
|
|
442
521
|
continuationKey: continuation,
|
|
443
522
|
sourceTs: message.ts,
|
|
444
523
|
text: media.userText,
|
|
445
|
-
author: (
|
|
524
|
+
author: (_0 = message.author) === null || _0 === void 0 ? void 0 : _0.userName,
|
|
446
525
|
});
|
|
447
526
|
}
|
|
448
527
|
catch (nudgeError) {
|
|
@@ -472,17 +551,18 @@ export function dispatchInboundMessage(args) {
|
|
|
472
551
|
}
|
|
473
552
|
}
|
|
474
553
|
catch (error) {
|
|
475
|
-
yield (
|
|
554
|
+
yield (_1 = args.host.slackNudges) === null || _1 === void 0 ? void 0 : _1.releaseAsk(message.channelId, message.ts);
|
|
476
555
|
if (placeholder !== undefined) {
|
|
477
556
|
yield placeholder.retract();
|
|
478
557
|
}
|
|
558
|
+
yield retractAdoptedPlaceholder();
|
|
479
559
|
if (painted !== undefined) {
|
|
480
560
|
yield painted;
|
|
481
561
|
yield retractTurnStart({
|
|
482
|
-
botToken: (
|
|
562
|
+
botToken: (_2 = args.credentials) === null || _2 === void 0 ? void 0 : _2.botToken,
|
|
483
563
|
channelId: message.channelId,
|
|
484
564
|
threadTs: message.threadTs,
|
|
485
|
-
ack: (
|
|
565
|
+
ack: (_17 = args.ack) !== null && _17 !== void 0 ? _17 : "",
|
|
486
566
|
log,
|
|
487
567
|
});
|
|
488
568
|
}
|
|
@@ -510,12 +590,27 @@ export function dispatchInboundFromEventBody(body, deps) {
|
|
|
510
590
|
var _e, _f, _g, _h, _j;
|
|
511
591
|
const log = (_e = deps.log) !== null && _e !== void 0 ? _e : defaultSlackLog;
|
|
512
592
|
let eventId;
|
|
593
|
+
const retractUnscheduledHandoff = () => {
|
|
594
|
+
var _a, _b;
|
|
595
|
+
const placeholder = (_a = deps.platformHandoff) === null || _a === void 0 ? void 0 : _a.slackPlaceholder;
|
|
596
|
+
if (placeholder === undefined) {
|
|
597
|
+
return;
|
|
598
|
+
}
|
|
599
|
+
deps.waitUntil(retractPlaceholderMessage({
|
|
600
|
+
botToken: (_b = deps.credentials) === null || _b === void 0 ? void 0 : _b.botToken,
|
|
601
|
+
channelId: placeholder.channelId,
|
|
602
|
+
ts: placeholder.messageTs,
|
|
603
|
+
streamed: placeholder.streamed,
|
|
604
|
+
log,
|
|
605
|
+
}));
|
|
606
|
+
};
|
|
513
607
|
if (body !== null && typeof body === "object" && !Array.isArray(body)) {
|
|
514
608
|
const root = body;
|
|
515
609
|
if (typeof root.event_id === "string" && root.event_id.length > 0) {
|
|
516
610
|
eventId = root.event_id;
|
|
517
611
|
if (!deps.eventIds.tryHandle(root.event_id)) {
|
|
518
612
|
log.debug("inbound dedupe drop", { event_id: eventId });
|
|
613
|
+
retractUnscheduledHandoff();
|
|
519
614
|
return false;
|
|
520
615
|
}
|
|
521
616
|
}
|
|
@@ -526,6 +621,7 @@ export function dispatchInboundFromEventBody(body, deps) {
|
|
|
526
621
|
if (mention !== null) {
|
|
527
622
|
if (deps.mentionsEnabled === false) {
|
|
528
623
|
log.debug("inbound ignored (mentions disabled)", { event_id: eventId });
|
|
624
|
+
retractUnscheduledHandoff();
|
|
529
625
|
return false;
|
|
530
626
|
}
|
|
531
627
|
if (((_a = mention.author) === null || _a === void 0 ? void 0 : _a.isBot) === true) {
|
|
@@ -543,6 +639,7 @@ export function dispatchInboundFromEventBody(body, deps) {
|
|
|
543
639
|
from_bot: (_g = mention.author.botId) !== null && _g !== void 0 ? _g : mention.author.userId,
|
|
544
640
|
reason: verdict.reason,
|
|
545
641
|
});
|
|
642
|
+
retractUnscheduledHandoff();
|
|
546
643
|
return false;
|
|
547
644
|
}
|
|
548
645
|
}
|
|
@@ -552,6 +649,7 @@ export function dispatchInboundFromEventBody(body, deps) {
|
|
|
552
649
|
handler: deps.onAppMention,
|
|
553
650
|
evalCommandsEnabled: deps.evalCommandsEnabled,
|
|
554
651
|
eventId,
|
|
652
|
+
platformHandoff: deps.platformHandoff,
|
|
555
653
|
});
|
|
556
654
|
return true;
|
|
557
655
|
}
|
|
@@ -561,6 +659,7 @@ export function dispatchInboundFromEventBody(body, deps) {
|
|
|
561
659
|
log.debug("inbound ignored (direct messages disabled)", {
|
|
562
660
|
event_id: eventId,
|
|
563
661
|
});
|
|
662
|
+
retractUnscheduledHandoff();
|
|
564
663
|
return false;
|
|
565
664
|
}
|
|
566
665
|
scheduleInbound(deps, log, {
|
|
@@ -569,11 +668,13 @@ export function dispatchInboundFromEventBody(body, deps) {
|
|
|
569
668
|
handler: deps.onDirectMessage,
|
|
570
669
|
evalCommandsEnabled: deps.evalCommandsEnabled,
|
|
571
670
|
eventId,
|
|
671
|
+
platformHandoff: deps.platformHandoff,
|
|
572
672
|
});
|
|
573
673
|
return true;
|
|
574
674
|
}
|
|
575
675
|
const reaction = parseReactionAddedEvent(body);
|
|
576
676
|
if (reaction !== null && deps.onReactionAdded !== undefined) {
|
|
677
|
+
retractUnscheduledHandoff();
|
|
577
678
|
scheduleInbound(deps, log, {
|
|
578
679
|
kind: "reaction_added",
|
|
579
680
|
message: reaction,
|
|
@@ -631,9 +732,11 @@ export function dispatchInboundFromEventBody(body, deps) {
|
|
|
631
732
|
includeBotAuthored: true,
|
|
632
733
|
});
|
|
633
734
|
if (channelEvent !== null) {
|
|
735
|
+
retractUnscheduledHandoff();
|
|
634
736
|
return deps.channelWatch.handle(channelEvent, eventId);
|
|
635
737
|
}
|
|
636
738
|
}
|
|
637
739
|
log.debug("inbound ignored (unhandled event shape)", Object.assign(Object.assign({}, describeSlackEventShape(body)), { event_id: eventId }));
|
|
740
|
+
retractUnscheduledHandoff();
|
|
638
741
|
return false;
|
|
639
742
|
}
|
|
@@ -9,6 +9,13 @@
|
|
|
9
9
|
import { type SlackLog } from "./log.js";
|
|
10
10
|
import type { SlackBotToken } from "./types.js";
|
|
11
11
|
export declare function resetPlaceholderSlots(): void;
|
|
12
|
+
/** Retract only one thread's slot; admission cleanup must not sweep DM peers. */
|
|
13
|
+
export declare function retractPlaceholderSlot(args: {
|
|
14
|
+
channelId: string;
|
|
15
|
+
threadTs: string;
|
|
16
|
+
botToken: SlackBotToken | undefined;
|
|
17
|
+
log?: SlackLog;
|
|
18
|
+
}): Promise<void>;
|
|
12
19
|
export declare function finishPlaceholder(args: {
|
|
13
20
|
channelId: string;
|
|
14
21
|
threadTs: string;
|
|
@@ -27,6 +34,25 @@ export declare function startPlaceholder(args: {
|
|
|
27
34
|
done: Promise<void>;
|
|
28
35
|
retract: () => Promise<void>;
|
|
29
36
|
} | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Seed the in-process placeholder slot with a control-plane-posted message
|
|
39
|
+
* ts so the first agentic update overlays that exact Slack message.
|
|
40
|
+
*/
|
|
41
|
+
export type PlaceholderAdoption = "adopted" | "already_adopted" | "occupied";
|
|
42
|
+
export declare function adoptPlaceholder(args: {
|
|
43
|
+
channelId: string;
|
|
44
|
+
threadTs: string;
|
|
45
|
+
ts: string;
|
|
46
|
+
streamed?: boolean;
|
|
47
|
+
}): PlaceholderAdoption;
|
|
48
|
+
/** Delete a control-plane placeholder that this process could not adopt. */
|
|
49
|
+
export declare function retractPlaceholderMessage(args: {
|
|
50
|
+
botToken: SlackBotToken | undefined;
|
|
51
|
+
channelId: string;
|
|
52
|
+
ts: string;
|
|
53
|
+
streamed: boolean;
|
|
54
|
+
log?: SlackLog;
|
|
55
|
+
}): Promise<void>;
|
|
30
56
|
export declare function overlayPlaceholder(args: {
|
|
31
57
|
channelId: string;
|
|
32
58
|
threadTs: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"placeholder.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/placeholder.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAyChD,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AA+DD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,aAAa,GAAG,SAAS,CAAC;IACpC,GAAG,CAAC,EAAE,QAAQ,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAMhB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,aAAa,GAAG,SAAS,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,GAAG,SAAS,CAUpE;AAkFD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,aAAa,GAAG,SAAS,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAO9B"}
|
|
1
|
+
{"version":3,"file":"placeholder.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/placeholder.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAyChD,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AA+DD,iFAAiF;AACjF,wBAAsB,sBAAsB,CAAC,IAAI,EAAE;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,aAAa,GAAG,SAAS,CAAC;IACpC,GAAG,CAAC,EAAE,QAAQ,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhB;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,aAAa,GAAG,SAAS,CAAC;IACpC,GAAG,CAAC,EAAE,QAAQ,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAMhB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,aAAa,GAAG,SAAS,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,GAAG,SAAS,CAUpE;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,iBAAiB,GAAG,UAAU,CAAC;AAE7E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,mBAAmB,CAiBtB;AAED,4EAA4E;AAC5E,wBAAsB,yBAAyB,CAAC,IAAI,EAAE;IACpD,QAAQ,EAAE,aAAa,GAAG,SAAS,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,QAAQ,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhB;AAkFD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,aAAa,GAAG,SAAS,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAO9B"}
|
|
@@ -86,6 +86,12 @@ function retractKey(key, args) {
|
|
|
86
86
|
});
|
|
87
87
|
});
|
|
88
88
|
}
|
|
89
|
+
/** Retract only one thread's slot; admission cleanup must not sweep DM peers. */
|
|
90
|
+
export function retractPlaceholderSlot(args) {
|
|
91
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
92
|
+
yield retractKey(slotKey(args.channelId, args.threadTs), args);
|
|
93
|
+
});
|
|
94
|
+
}
|
|
89
95
|
export function finishPlaceholder(args) {
|
|
90
96
|
return __awaiter(this, void 0, void 0, function* () {
|
|
91
97
|
const first = slotKey(args.channelId, args.threadTs);
|
|
@@ -107,6 +113,28 @@ export function startPlaceholder(args) {
|
|
|
107
113
|
retract: () => retractKey(key, Object.assign(Object.assign({}, args), { log })),
|
|
108
114
|
};
|
|
109
115
|
}
|
|
116
|
+
export function adoptPlaceholder(args) {
|
|
117
|
+
const key = slotKey(args.channelId, args.threadTs);
|
|
118
|
+
const existing = slots.get(key);
|
|
119
|
+
if (existing !== undefined &&
|
|
120
|
+
!existing.claimed &&
|
|
121
|
+
existing.ts === args.ts &&
|
|
122
|
+
existing.streamed === (args.streamed === true)) {
|
|
123
|
+
return "already_adopted";
|
|
124
|
+
}
|
|
125
|
+
if (!openPlaceholder(key)) {
|
|
126
|
+
return "occupied";
|
|
127
|
+
}
|
|
128
|
+
return rememberPlaceholder(key, args.ts, args.streamed === true)
|
|
129
|
+
? "adopted"
|
|
130
|
+
: "occupied";
|
|
131
|
+
}
|
|
132
|
+
/** Delete a control-plane placeholder that this process could not adopt. */
|
|
133
|
+
export function retractPlaceholderMessage(args) {
|
|
134
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
135
|
+
yield retractPosted(args);
|
|
136
|
+
});
|
|
137
|
+
}
|
|
110
138
|
function postPlaceholder(args) {
|
|
111
139
|
return __awaiter(this, void 0, void 0, function* () {
|
|
112
140
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-channel.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/slack-channel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAaH,OAAO,KAAK,EAEV,iBAAiB,EAMlB,MAAM,gBAAgB,CAAC;AA+CxB,OAAO,KAAK,EAEV,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AAQpB;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,GACjB,mBAAmB,GAAG,SAAS,CAEjC;AAED,0EAA0E;AAC1E,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,aAAa,CAAC;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,GAC9C,uBAAuB,GAAG,SAAS,CAYrC;AAaD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,GAAE,mBAAwB,GACjC,iBAAiB,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"slack-channel.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/slack-channel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAaH,OAAO,KAAK,EAEV,iBAAiB,EAMlB,MAAM,gBAAgB,CAAC;AA+CxB,OAAO,KAAK,EAEV,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AAQpB;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,GACjB,mBAAmB,GAAG,SAAS,CAEjC;AAED,0EAA0E;AAC1E,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,aAAa,CAAC;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,GAC9C,uBAAuB,GAAG,SAAS,CAYrC;AAaD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,GAAE,mBAAwB,GACjC,iBAAiB,CAAC,iBAAiB,CAAC,CAohBtC"}
|
|
@@ -163,11 +163,13 @@ export function slackChannel(authored = {}) {
|
|
|
163
163
|
let botMentionGate;
|
|
164
164
|
function inboundDeps(args) {
|
|
165
165
|
var _a;
|
|
166
|
-
return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ send: args.send, continuation: options.continuation, waitUntil: args.waitUntil, onAppMention,
|
|
166
|
+
return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ send: args.send, continuation: options.continuation, waitUntil: args.waitUntil, onAppMention,
|
|
167
167
|
onDirectMessage }, (onReactionAdded === undefined ? {} : { onReactionAdded })), { credentials, eventIds: (_a = args.eventIds) !== null && _a !== void 0 ? _a : eventIds, propagateHandlerErrors: args.propagateHandlerErrors, host: args.host, artifacts: args.artifacts, log: getLog(), mentionsEnabled,
|
|
168
168
|
directMessagesEnabled,
|
|
169
169
|
evalCommandsEnabled,
|
|
170
|
-
followUpStatus, ack: reply.ack, placeholder: reply.placeholder, blockExternals }), (args.
|
|
170
|
+
followUpStatus, ack: reply.ack, placeholder: reply.placeholder, blockExternals }), (args.platformHandoff === undefined
|
|
171
|
+
? {}
|
|
172
|
+
: { platformHandoff: args.platformHandoff })), (args.hasContinuationSession === undefined
|
|
171
173
|
? {}
|
|
172
174
|
: { hasContinuationSession: args.hasContinuationSession })), (args.isContinuationBusy === undefined
|
|
173
175
|
? {}
|
|
@@ -190,7 +192,9 @@ export function slackChannel(authored = {}) {
|
|
|
190
192
|
? {
|
|
191
193
|
slackReply: Object.assign({ mode: "agentic", ack: (_g = reply.ack) !== null && _g !== void 0 ? _g : DEFAULT_ACK }, (reply.placeholder === undefined
|
|
192
194
|
? {}
|
|
193
|
-
: {
|
|
195
|
+
: {
|
|
196
|
+
placeholder: reply.placeholder,
|
|
197
|
+
})),
|
|
194
198
|
}
|
|
195
199
|
: {})), (channelPosts === undefined
|
|
196
200
|
? {}
|
|
@@ -449,19 +453,8 @@ export function slackChannel(authored = {}) {
|
|
|
449
453
|
// claim already dedupes Slack retries, and on a warm pod the local set
|
|
450
454
|
// would otherwise swallow the control plane's own retry of a delivery
|
|
451
455
|
// that failed after the id was marked handled.
|
|
452
|
-
dispatch: (_a) => __awaiter(this, [_a], void 0, function* ({ payload, args }) {
|
|
453
|
-
const dispatched = dispatchInboundFromEventBody(payload, inboundDeps({
|
|
454
|
-
send: args.send,
|
|
455
|
-
waitUntil: args.waitUntil,
|
|
456
|
-
host: args.host,
|
|
457
|
-
artifacts: args.artifacts,
|
|
458
|
-
eventIds: createEventIdDedupe(),
|
|
459
|
-
propagateHandlerErrors: true,
|
|
460
|
-
hasContinuationSession: args.hasContinuationSession,
|
|
461
|
-
isContinuationBusy: args.isContinuationBusy,
|
|
462
|
-
getContinuationLastBotMessageTs: args.getContinuationLastBotMessageTs,
|
|
463
|
-
interruptContinuation: args.interruptContinuation,
|
|
464
|
-
}));
|
|
456
|
+
dispatch: (_a) => __awaiter(this, [_a], void 0, function* ({ payload, args, platformHandoff }) {
|
|
457
|
+
const dispatched = dispatchInboundFromEventBody(payload, inboundDeps(Object.assign({ send: args.send, waitUntil: args.waitUntil, host: args.host, artifacts: args.artifacts, eventIds: createEventIdDedupe(), propagateHandlerErrors: true, hasContinuationSession: args.hasContinuationSession, isContinuationBusy: args.isContinuationBusy, getContinuationLastBotMessageTs: args.getContinuationLastBotMessageTs, interruptContinuation: args.interruptContinuation }, (platformHandoff === undefined ? {} : { platformHandoff }))));
|
|
465
458
|
return skipped(dispatched ? "not_engaged" : "not_dispatchable");
|
|
466
459
|
}),
|
|
467
460
|
});
|