@cursor/bdk 0.2.3 → 0.2.4
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 +9 -1
- package/dist/channels/slack/attachments.d.ts +2 -1
- package/dist/channels/slack/attachments.d.ts.map +1 -1
- package/dist/channels/slack/attachments.js +19 -9
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +26 -24
- package/dist/channels/slack/thread-context.d.ts +21 -11
- package/dist/channels/slack/thread-context.d.ts.map +1 -1
- package/dist/channels/slack/thread-context.js +75 -27
- package/dist/docs/404.html +2 -2
- package/dist/docs/assets/{app.BOIHhrKi.js → app.4kQ8Db_q.js} +4 -4
- package/dist/docs/assets/chunks/@localSearchIndexroot.CvuAJ0My.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.D49zVZqM.js → VPLocalSearchBox.DY1RwB8Q.js} +1 -1
- package/dist/docs/assets/chunks/{arc.hmjb-sc4.js → arc.CxE_fSPK.js} +1 -1
- package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.CxEI1KqM.js → architectureDiagram-Q4EWVU46.CPX426ui.js} +1 -1
- package/dist/docs/assets/chunks/{baseUniq.DHHvBWoV.js → baseUniq.CB52JrKG.js} +1 -1
- package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.DnXW-3bu.js → blockDiagram-DXYQGD6D.J0cNaQCL.js} +1 -1
- package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.e-47O2jM.js → c4Diagram-AHTNJAMY.DJn3vEGT.js} +1 -1
- package/dist/docs/assets/chunks/channel.BoNycAoN.js +1 -0
- package/dist/docs/assets/chunks/{chunk-4BX2VUAB.3ry4pYXB.js → chunk-4BX2VUAB.Dao618F6.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-4TB4RGXK.DGIZFRx6.js → chunk-4TB4RGXK.QW8Rhjai.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-55IACEB6.DKBnqg9U.js → chunk-55IACEB6.DfRLLKF_.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-EDXVE4YY.BIU8Ue5k.js → chunk-EDXVE4YY.CIV2ApKQ.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-FMBD7UC4.DP-TFhjI.js → chunk-FMBD7UC4.BEheSuxp.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-OYMX7WX6.Ux0OYj5v.js → chunk-OYMX7WX6.CUN88ENB.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BzHMwYox.js → chunk-QZHKN3VN.CgqCs8b_.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-YZCP3GAM.D4OGAsSP.js → chunk-YZCP3GAM.iCH0nnTJ.js} +1 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.C4x07Gkj.js +1 -0
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.C4x07Gkj.js +1 -0
- package/dist/docs/assets/chunks/clone.Db22cH_-.js +1 -0
- package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.Jq_7BUNx.js → cose-bilkent-S5V4N54A.BLcUxhWE.js} +1 -1
- package/dist/docs/assets/chunks/{dagre-KV5264BT.Di-skR2x.js → dagre-KV5264BT.Ep7LofOm.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-5BDNPKRD.DeREHIdH.js → diagram-5BDNPKRD.Bzf4GSQ4.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.C7Kcqxro.js → diagram-G4DWMVQ6.DD6Jh-eM.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-MMDJMWI5.BK3eohyo.js → diagram-MMDJMWI5.oOIl8bWd.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-TYMM5635.C6TyymXT.js → diagram-TYMM5635.DHs85Ade.js} +1 -1
- package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.DYGG-gGx.js → erDiagram-SMLLAGMA.BIb5ghCk.js} +1 -1
- package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.C9nBcSV4.js → flowDiagram-DWJPFMVM.DV4paY9k.js} +1 -1
- package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.wAg_ymsp.js → ganttDiagram-T4ZO3ILL.AyEKA6_v.js} +1 -1
- package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.B87j9Oeg.js → gitGraphDiagram-UUTBAWPF.BltiCDFo.js} +1 -1
- package/dist/docs/assets/chunks/{graph.CuFMj31w.js → graph.DzuEYGdC.js} +1 -1
- package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.P_mLGumP.js → infoDiagram-42DDH7IO.BV2l981J.js} +1 -1
- package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.DyuL_MsT.js → ishikawaDiagram-UXIWVN3A.BA4Izf-m.js} +1 -1
- package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.CtP09IoJ.js → journeyDiagram-VCZTEJTY.DjaFbFS3.js} +1 -1
- package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.BoeSYPZo.js → kanban-definition-6JOO6SKY.CfTFieDs.js} +1 -1
- package/dist/docs/assets/chunks/{layout.B0lMMtNo.js → layout.DzfWqTBV.js} +1 -1
- package/dist/docs/assets/chunks/{linear.HxRBiAFX.js → linear.BO6mpulV.js} +1 -1
- package/dist/docs/assets/chunks/{min.BGlFFHwS.js → min.BGgTadgT.js} +1 -1
- package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.JyLBD9M8.js → mindmap-definition-QFDTVHPH.DPuIXVWY.js} +1 -1
- package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.DnSmNZF8.js → pieDiagram-DEJITSTG.BOnl3bBg.js} +1 -1
- package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.CUCnbfCa.js → quadrantDiagram-34T5L4WZ.DNB6Ckdc.js} +1 -1
- package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.py0IVUn5.js → requirementDiagram-MS252O5E.D5-Qo7vb.js} +1 -1
- package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.Bkc-HWYp.js → sankeyDiagram-XADWPNL6.8t65cesf.js} +1 -1
- package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.Dqn8Mlv2.js → sequenceDiagram-FGHM5R23.CaG07BdS.js} +1 -1
- package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.JikkoQUU.js → stateDiagram-FHFEXIEX.TKOweTB6.js} +1 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.CuqmyQc4.js +1 -0
- package/dist/docs/assets/chunks/{theme.b6HQ6zG_.js → theme.Dx-JhpTB.js} +2 -2
- package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.BvpSXiBj.js → timeline-definition-GMOUNBTQ.fE53zQ2s.js} +1 -1
- package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.CU7MVnZx.js → vennDiagram-DHZGUBPP.DJsZZaJg.js} +1 -1
- package/dist/docs/assets/chunks/{wardley-RL74JXVD.BKwC4ctG.js → wardley-RL74JXVD.844kyrjl.js} +1 -1
- package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.BfaF6Uhe.js → wardleyDiagram-NUSXRM2D.CMZ-Ru_t.js} +1 -1
- package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.Bg5dcpj4.js → xychartDiagram-5P7HB3ND.XXrhBc7a.js} +1 -1
- package/dist/docs/assets/{deployment.md.BJ8i7Q6p.js → deployment.md.UhnJIMr-.js} +2 -2
- package/dist/docs/assets/{deployment.md.BJ8i7Q6p.lean.js → deployment.md.UhnJIMr-.lean.js} +1 -1
- package/dist/docs/assets/{guides_jev.md.BNDm14Gy.js → guides_jev.md.CRcgmjDb.js} +2 -2
- package/dist/docs/assets/{guides_jev.md.BNDm14Gy.lean.js → guides_jev.md.CRcgmjDb.lean.js} +1 -1
- package/dist/docs/assets/{reference_agent-config.md.DzGI777n.js → reference_agent-config.md.Cj5uBKp4.js} +1 -1
- package/dist/docs/assets/{reference_extensions.md.CPPrkWlJ.js → reference_extensions.md.pa2tN-e4.js} +4 -3
- package/dist/docs/assets/{reference_extensions.md.CPPrkWlJ.lean.js → reference_extensions.md.pa2tN-e4.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +35 -35
- package/dist/docs/deployment.html +37 -37
- package/dist/docs/deployment.md +4 -1
- package/dist/docs/evals.html +35 -35
- package/dist/docs/guides/agent-to-agent.html +35 -35
- package/dist/docs/guides/bitbucket.html +35 -35
- package/dist/docs/guides/cloud-agents.html +35 -35
- package/dist/docs/guides/convert-automation.html +35 -35
- package/dist/docs/guides/github.html +35 -35
- package/dist/docs/guides/gitlab.html +35 -35
- package/dist/docs/guides/grokbot-agents.html +35 -35
- package/dist/docs/guides/hooks.html +35 -35
- package/dist/docs/guides/improve.html +35 -35
- package/dist/docs/guides/jev.html +37 -37
- package/dist/docs/guides/jev.md +7 -0
- package/dist/docs/guides/mcp-oauth.html +35 -35
- package/dist/docs/guides/opentelemetry.html +35 -35
- package/dist/docs/guides/slack.html +35 -35
- package/dist/docs/guides/webhooks.html +35 -35
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +35 -35
- package/dist/docs/index.html +35 -35
- package/dist/docs/llms-full.txt +25 -2
- package/dist/docs/quickstart.html +35 -35
- package/dist/docs/reference/agent-config.html +37 -37
- package/dist/docs/reference/agent-config.md +1 -1
- package/dist/docs/reference/artifacts.html +35 -35
- package/dist/docs/reference/channels.html +35 -35
- package/dist/docs/reference/cli.html +35 -35
- package/dist/docs/reference/connections.html +35 -35
- package/dist/docs/reference/evals.html +35 -35
- package/dist/docs/reference/extensions.html +39 -38
- package/dist/docs/reference/extensions.md +13 -0
- package/dist/docs/reference/hooks.html +35 -35
- package/dist/docs/reference/http-api.html +35 -35
- package/dist/docs/reference/instructions.html +35 -35
- package/dist/docs/reference/playground.html +35 -35
- package/dist/docs/reference/project-layout.html +35 -35
- package/dist/docs/reference/prompt.html +35 -35
- package/dist/docs/reference/schedules.html +35 -35
- package/dist/docs/reference/sessions.html +35 -35
- package/dist/docs/reference/skills.html +35 -35
- package/dist/docs/reference/subagents.html +35 -35
- package/dist/docs/reference/tools.html +35 -35
- package/dist/docs/templates/agentic-owners.html +35 -35
- package/dist/docs/templates/security-reviewer.html +35 -35
- package/dist/docs/templates/thermo-quality-review.html +35 -35
- package/dist/docs/templates/thermo-review.html +35 -35
- package/dist/docs/templates/triage.html +35 -35
- package/dist/docs/troubleshooting.html +35 -35
- package/dist/extensions/jev/extension.d.ts +3 -0
- package/dist/extensions/jev/extension.d.ts.map +1 -1
- package/dist/extensions/jev/extension.js +10 -1
- package/dist/extensions/jev/lib/evaluate.d.ts +4 -0
- package/dist/extensions/jev/lib/evaluate.d.ts.map +1 -1
- package/dist/extensions/jev/lib/evaluate.js +6 -2
- package/dist/extensions.d.ts +4 -2
- package/dist/extensions.d.ts.map +1 -1
- package/dist/extensions.js +5 -2
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +19 -5
- package/dist/internal/discovery/agent-config.d.ts +6 -5
- package/dist/internal/discovery/agent-config.d.ts.map +1 -1
- package/dist/internal/discovery/agent-config.js +29 -28
- package/dist/internal/discovery/agent.js +1 -1
- package/dist/internal/discovery/extensions.d.ts.map +1 -1
- package/dist/internal/discovery/extensions.js +12 -0
- package/dist/internal/hosting.d.ts +8 -0
- package/dist/internal/hosting.d.ts.map +1 -1
- package/dist/internal/hosting.js +24 -0
- package/dist/types.d.ts +18 -2
- package/dist/types.d.ts.map +1 -1
- package/docs/deployment.md +4 -1
- package/docs/guides/jev.md +7 -0
- package/docs/reference/agent-config.md +1 -1
- package/docs/reference/extensions.md +13 -0
- package/package.json +1 -9
- package/dist/docs/assets/chunks/@localSearchIndexroot.D5L-b34G.js +0 -1
- package/dist/docs/assets/chunks/channel.BbOGaJQP.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.Db58HCb1.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.Db58HCb1.js +0 -1
- package/dist/docs/assets/chunks/clone.Co4MBflG.js +0 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.CMsKhrW0.js +0 -1
- package/src/artifacts.ts +0 -68
- package/src/bin/agent-serve.ts +0 -1854
- package/src/channels/bitbucket/api.ts +0 -891
- package/src/channels/bitbucket/binding.ts +0 -417
- package/src/channels/bitbucket/bitbucket-channel.ts +0 -162
- package/src/channels/bitbucket/bitbucket-webhook.ts +0 -519
- package/src/channels/bitbucket/checks.ts +0 -146
- package/src/channels/bitbucket/cursor-account.ts +0 -106
- package/src/channels/bitbucket/defaults.ts +0 -100
- package/src/channels/bitbucket/events.ts +0 -74
- package/src/channels/bitbucket/index.ts +0 -51
- package/src/channels/bitbucket/replay.ts +0 -421
- package/src/channels/bitbucket/state.ts +0 -59
- package/src/channels/bitbucket/types.ts +0 -261
- package/src/channels/change-monitors/change-monitors-channel.ts +0 -63
- package/src/channels/change-monitors/index.ts +0 -8
- package/src/channels/change-monitors/types.ts +0 -42
- package/src/channels/checks.ts +0 -185
- package/src/channels/deployments/deployments-channel.ts +0 -224
- package/src/channels/deployments/index.ts +0 -25
- package/src/channels/deployments/types.ts +0 -92
- package/src/channels/github/api.ts +0 -526
- package/src/channels/github/auth.ts +0 -293
- package/src/channels/github/binding.ts +0 -233
- package/src/channels/github/checks.ts +0 -145
- package/src/channels/github/cursor-account.ts +0 -303
- package/src/channels/github/defaults.ts +0 -168
- package/src/channels/github/events.ts +0 -67
- package/src/channels/github/forward.ts +0 -359
- package/src/channels/github/github-channel.ts +0 -2334
- package/src/channels/github/index.ts +0 -54
- package/src/channels/github/progress.ts +0 -365
- package/src/channels/github/replay.ts +0 -372
- package/src/channels/github/state.ts +0 -124
- package/src/channels/github/types.ts +0 -590
- package/src/channels/gitlab/api.ts +0 -329
- package/src/channels/gitlab/binding.ts +0 -231
- package/src/channels/gitlab/checks.ts +0 -228
- package/src/channels/gitlab/cursor-account.ts +0 -105
- package/src/channels/gitlab/defaults.ts +0 -80
- package/src/channels/gitlab/events.ts +0 -37
- package/src/channels/gitlab/gitlab-channel.ts +0 -160
- package/src/channels/gitlab/gitlab-webhook.ts +0 -509
- package/src/channels/gitlab/index.ts +0 -44
- package/src/channels/gitlab/replay.ts +0 -328
- package/src/channels/gitlab/state.ts +0 -55
- package/src/channels/gitlab/types.ts +0 -247
- package/src/channels/issues/index.ts +0 -9
- package/src/channels/issues/issues-channel.ts +0 -45
- package/src/channels/issues/types.ts +0 -38
- package/src/channels/origin/api.ts +0 -507
- package/src/channels/origin/binding.ts +0 -114
- package/src/channels/origin/checks.ts +0 -250
- package/src/channels/origin/cursor-account.ts +0 -58
- package/src/channels/origin/defaults.ts +0 -140
- package/src/channels/origin/events.ts +0 -35
- package/src/channels/origin/index.ts +0 -35
- package/src/channels/origin/origin-channel.ts +0 -815
- package/src/channels/origin/origin-webhook.ts +0 -296
- package/src/channels/origin/reactions.ts +0 -72
- package/src/channels/origin/state.ts +0 -54
- package/src/channels/origin/types.ts +0 -295
- package/src/channels/slack/agentic-delivery.ts +0 -634
- package/src/channels/slack/agentic-posted.ts +0 -135
- package/src/channels/slack/agentic-signals.ts +0 -231
- package/src/channels/slack/api.ts +0 -761
- package/src/channels/slack/approvals.ts +0 -279
- package/src/channels/slack/assistant.ts +0 -76
- package/src/channels/slack/attachments.ts +0 -596
- package/src/channels/slack/auth.ts +0 -127
- package/src/channels/slack/blocks.ts +0 -131
- package/src/channels/slack/bot-mentions.ts +0 -318
- package/src/channels/slack/channel-watch.ts +0 -314
- package/src/channels/slack/cli-project.ts +0 -249
- package/src/channels/slack/code-fences.ts +0 -171
- package/src/channels/slack/constants.ts +0 -38
- package/src/channels/slack/credentials.ts +0 -88
- package/src/channels/slack/defaults.ts +0 -714
- package/src/channels/slack/dispatch.ts +0 -1060
- package/src/channels/slack/doctor.ts +0 -338
- package/src/channels/slack/eval-directive.ts +0 -306
- package/src/channels/slack/event-id-dedupe.ts +0 -30
- package/src/channels/slack/external-policy.ts +0 -75
- package/src/channels/slack/footer.ts +0 -106
- package/src/channels/slack/inbound.ts +0 -416
- package/src/channels/slack/index.ts +0 -53
- package/src/channels/slack/init.ts +0 -169
- package/src/channels/slack/interactive.ts +0 -406
- package/src/channels/slack/links.ts +0 -23
- package/src/channels/slack/live-delivery.ts +0 -489
- package/src/channels/slack/log.ts +0 -70
- package/src/channels/slack/manifest.ts +0 -240
- package/src/channels/slack/message-body.ts +0 -82
- package/src/channels/slack/nudge-carrier.ts +0 -224
- package/src/channels/slack/nudge-store.ts +0 -334
- package/src/channels/slack/paint-start.ts +0 -93
- package/src/channels/slack/placeholder.ts +0 -358
- package/src/channels/slack/pr-ref.ts +0 -74
- package/src/channels/slack/progress-delivery.ts +0 -138
- package/src/channels/slack/reasoning-card.ts +0 -125
- package/src/channels/slack/reasoning-chip.ts +0 -41
- package/src/channels/slack/recording-sink.ts +0 -167
- package/src/channels/slack/redact.ts +0 -6
- package/src/channels/slack/reply-options.ts +0 -279
- package/src/channels/slack/setup.ts +0 -125
- package/src/channels/slack/slack-channel.ts +0 -744
- package/src/channels/slack/socket-mode.ts +0 -140
- package/src/channels/slack/stop.ts +0 -25
- package/src/channels/slack/stream.ts +0 -66
- package/src/channels/slack/thread-context.ts +0 -485
- package/src/channels/slack/tool-approval-events.ts +0 -233
- package/src/channels/slack/tool-cards.ts +0 -198
- package/src/channels/slack/tool-chip.ts +0 -34
- package/src/channels/slack/types.ts +0 -787
- package/src/channels/slack/upload.ts +0 -137
- package/src/channels.ts +0 -543
- package/src/connections.ts +0 -153
- package/src/dashboard-session-url.ts +0 -30
- package/src/evals/assertions.ts +0 -688
- package/src/evals/expect.ts +0 -250
- package/src/evals/judge.ts +0 -329
- package/src/evals/loaders.ts +0 -111
- package/src/evals/matchers.ts +0 -223
- package/src/evals/reporters.ts +0 -257
- package/src/evals/results.ts +0 -130
- package/src/evals/run-facts.ts +0 -306
- package/src/evals.ts +0 -709
- package/src/extensions/cursor-cloud-agents/extension.ts +0 -131
- package/src/extensions/cursor-cloud-agents/lib/backend.ts +0 -386
- package/src/extensions/cursor-cloud-agents/lib/channels.ts +0 -11
- package/src/extensions/cursor-cloud-agents/lib/fleet.ts +0 -98
- package/src/extensions/cursor-cloud-agents/lib/inputs.ts +0 -5
- package/src/extensions/cursor-cloud-agents/lib/repos.ts +0 -80
- package/src/extensions/cursor-cloud-agents/lib/transcript.ts +0 -19
- package/src/extensions/cursor-cloud-agents/skills/handoff.md +0 -37
- package/src/extensions/cursor-cloud-agents/tools/cancel.ts +0 -21
- package/src/extensions/cursor-cloud-agents/tools/dump.ts +0 -47
- package/src/extensions/cursor-cloud-agents/tools/get.ts +0 -18
- package/src/extensions/cursor-cloud-agents/tools/launch.ts +0 -62
- package/src/extensions/cursor-cloud-agents/tools/list.ts +0 -31
- package/src/extensions/cursor-cloud-agents/tools/reply.ts +0 -36
- package/src/extensions/cursor-grokbot-agents/extension.ts +0 -132
- package/src/extensions/cursor-grokbot-agents/lib/agents.ts +0 -42
- package/src/extensions/cursor-grokbot-agents/lib/backend.ts +0 -208
- package/src/extensions/cursor-grokbot-agents/lib/contacts.ts +0 -74
- package/src/extensions/cursor-grokbot-agents/lib/conversation.ts +0 -260
- package/src/extensions/cursor-grokbot-agents/lib/inputs.ts +0 -21
- package/src/extensions/cursor-grokbot-agents/lib/lock.ts +0 -26
- package/src/extensions/cursor-grokbot-agents/skills/consult.md +0 -40
- package/src/extensions/cursor-grokbot-agents/tools/ask.ts +0 -32
- package/src/extensions/cursor-grokbot-agents/tools/check.ts +0 -25
- package/src/extensions/cursor-grokbot-agents/tools/interrupt.ts +0 -17
- package/src/extensions/cursor-grokbot-agents/tools/list.ts +0 -26
- package/src/extensions/improve/extension.ts +0 -69
- package/src/extensions/improve/skills/yourself.ts +0 -50
- package/src/extensions/jev/extension.ts +0 -95
- package/src/extensions/jev/lib/evaluate.ts +0 -266
- package/src/extensions/jev/skills/gated-write.md +0 -25
- package/src/extensions/jev/skills/questions.md +0 -33
- package/src/extensions/jev/tools/evaluate.ts +0 -82
- package/src/extensions/slack-communication/evals/harness.ts +0 -705
- package/src/extensions/slack-communication/evals/slack-communication.eval.ts +0 -830
- package/src/extensions/slack-communication/evals/slack-placeholder.eval.ts +0 -172
- package/src/extensions/slack-communication/extension.ts +0 -44
- package/src/extensions/slack-communication/skills/slack-voice.ts +0 -56
- package/src/extensions/slack-communication/tools/delete-message.ts +0 -33
- package/src/extensions/slack-communication/tools/edit-message.ts +0 -42
- package/src/extensions/slack-communication/tools/post-card.ts +0 -28
- package/src/extensions/slack-communication/tools/post-file.ts +0 -82
- package/src/extensions/slack-communication/tools/post-update.ts +0 -40
- package/src/extensions/slack-communication/tools/react.ts +0 -30
- package/src/extensions/slack-communication/tools/set-status.ts +0 -21
- package/src/extensions.ts +0 -179
- package/src/files-backends/agent-store-presigned-url.ts +0 -11
- package/src/files-backends/cursor-hosted.ts +0 -1212
- package/src/files-backends/local-fs.ts +0 -163
- package/src/files.ts +0 -293
- package/src/filesystem.ts +0 -2005
- package/src/hooks.ts +0 -30
- package/src/index.ts +0 -259
- package/src/internal/advertise-tools.ts +0 -370
- package/src/internal/approval-gate.ts +0 -103
- package/src/internal/artifacts-store.ts +0 -836
- package/src/internal/as-of.ts +0 -257
- package/src/internal/auth.ts +0 -46
- package/src/internal/authored-alias-hooks.ts +0 -138
- package/src/internal/authored-loaders.ts +0 -188
- package/src/internal/bounded-int.ts +0 -24
- package/src/internal/bounded.ts +0 -25
- package/src/internal/brand.ts +0 -28
- package/src/internal/browser-origin-guard.ts +0 -67
- package/src/internal/builtin-tools/artifacts.ts +0 -62
- package/src/internal/builtin-tools/index.ts +0 -53
- package/src/internal/builtin-tools/reminders.ts +0 -145
- package/src/internal/channel-dispatch.ts +0 -129
- package/src/internal/channel-route-dispatch.ts +0 -58
- package/src/internal/channel-state.ts +0 -83
- package/src/internal/chat-client.ts +0 -594
- package/src/internal/cli-ax.ts +0 -2318
- package/src/internal/cli-bitbucket.ts +0 -438
- package/src/internal/cli-convert-automation.ts +0 -335
- package/src/internal/cli-cursor.ts +0 -282
- package/src/internal/cli-deploy.ts +0 -2519
- package/src/internal/cli-docs.ts +0 -192
- package/src/internal/cli-github.ts +0 -806
- package/src/internal/cli-gitlab.ts +0 -452
- package/src/internal/cli-images.ts +0 -672
- package/src/internal/cli-manifest.ts +0 -56
- package/src/internal/cli-mcp-oauth.ts +0 -396
- package/src/internal/cli-mcp.ts +0 -808
- package/src/internal/cli-skills.ts +0 -98
- package/src/internal/cli-slack-manual.ts +0 -418
- package/src/internal/cli-slack.ts +0 -874
- package/src/internal/cloud-merge.ts +0 -51
- package/src/internal/cloud-turn-cost.ts +0 -159
- package/src/internal/connection-env.ts +0 -106
- package/src/internal/continuation-channel.ts +0 -233
- package/src/internal/continuation-identity.ts +0 -935
- package/src/internal/conversation-mirror.ts +0 -423
- package/src/internal/convert-automation/convert-workflow.ts +0 -1377
- package/src/internal/convert-automation/slug.ts +0 -29
- package/src/internal/convert-automation/types.ts +0 -212
- package/src/internal/cron.ts +0 -76
- package/src/internal/cursor/account-mcp.ts +0 -692
- package/src/internal/cursor/backend-client.ts +0 -984
- package/src/internal/cursor/bound-secret-file.ts +0 -101
- package/src/internal/cursor/credentials.ts +0 -560
- package/src/internal/cursor/cursor-api-transport.ts +0 -65
- package/src/internal/cursor/github-credentials.ts +0 -228
- package/src/internal/cursor/hosted-bound-secrets.ts +0 -71
- package/src/internal/cursor/hosted-deployment-secrets.ts +0 -100
- package/src/internal/cursor/hosted-store-secrets.ts +0 -152
- package/src/internal/cursor/session-token.ts +0 -111
- package/src/internal/cursor/store-api-client.ts +0 -323
- package/src/internal/cursor-account-mcp-auth.ts +0 -303
- package/src/internal/cursor-agent-template.ts +0 -50
- package/src/internal/cursor-deployment-relay.ts +0 -315
- package/src/internal/cursor-event-relay.ts +0 -675
- package/src/internal/cursor-relay-core.ts +0 -563
- package/src/internal/deferred-channel-session.ts +0 -61
- package/src/internal/deploy-client.ts +0 -1574
- package/src/internal/deploy-manifest.ts +0 -361
- package/src/internal/deploy-source.ts +0 -144
- package/src/internal/describe-error.ts +0 -32
- package/src/internal/dev-mode.ts +0 -20
- package/src/internal/discovery/agent-config.ts +0 -288
- package/src/internal/discovery/agent.ts +0 -381
- package/src/internal/discovery/channels.ts +0 -100
- package/src/internal/discovery/connections.ts +0 -516
- package/src/internal/discovery/context.ts +0 -38
- package/src/internal/discovery/cursor-plugin.ts +0 -628
- package/src/internal/discovery/extension-overlay.ts +0 -247
- package/src/internal/discovery/extensions.ts +0 -490
- package/src/internal/discovery/fs.ts +0 -103
- package/src/internal/discovery/hooks.ts +0 -63
- package/src/internal/discovery/info.ts +0 -174
- package/src/internal/discovery/instructions.ts +0 -98
- package/src/internal/discovery/modules.ts +0 -107
- package/src/internal/discovery/names.ts +0 -45
- package/src/internal/discovery/project.ts +0 -319
- package/src/internal/discovery/reminders.ts +0 -65
- package/src/internal/discovery/runtime.ts +0 -158
- package/src/internal/discovery/schedules.ts +0 -120
- package/src/internal/discovery/seed-files.ts +0 -34
- package/src/internal/discovery/services.ts +0 -151
- package/src/internal/discovery/skills.ts +0 -174
- package/src/internal/discovery/subagent.ts +0 -138
- package/src/internal/discovery/tools.ts +0 -170
- package/src/internal/discovery.ts +0 -27
- package/src/internal/distribution.ts +0 -126
- package/src/internal/docs-site.ts +0 -248
- package/src/internal/duration.ts +0 -37
- package/src/internal/env-file.ts +0 -83
- package/src/internal/eval-judge-model.ts +0 -142
- package/src/internal/eval-run-store.ts +0 -585
- package/src/internal/eval-runner.ts +0 -823
- package/src/internal/evals-client.ts +0 -475
- package/src/internal/event-log.ts +0 -342
- package/src/internal/event-mapper.ts +0 -811
- package/src/internal/expected-delivery-failure.ts +0 -34
- package/src/internal/factory-resource-channel.ts +0 -103
- package/src/internal/filesystem/errors.ts +0 -207
- package/src/internal/filesystem/format.ts +0 -253
- package/src/internal/filesystem/merge.ts +0 -192
- package/src/internal/filesystem/nearest.ts +0 -112
- package/src/internal/filesystem/scratch.ts +0 -239
- package/src/internal/filesystem/sdk-schemas.ts +0 -204
- package/src/internal/filesystem/tools.ts +0 -804
- package/src/internal/filesystem/walk.ts +0 -366
- package/src/internal/fixtures/units-server.ts +0 -52
- package/src/internal/framework-file-storage.ts +0 -357
- package/src/internal/framework-storage-selection.ts +0 -156
- package/src/internal/frontmatter.ts +0 -108
- package/src/internal/github-fanout.ts +0 -144
- package/src/internal/guest-network.ts +0 -391
- package/src/internal/handleAgentServeTrigger.ts +0 -286
- package/src/internal/host-files.ts +0 -341
- package/src/internal/host-kv.ts +0 -81
- package/src/internal/host-otel.ts +0 -231
- package/src/internal/host-platforms.ts +0 -170
- package/src/internal/hosted-admission-adapter.ts +0 -47
- package/src/internal/hosted-admission-context.ts +0 -37
- package/src/internal/hosted-catch-protocol.ts +0 -112
- package/src/internal/hosted-catch.ts +0 -179
- package/src/internal/hosted-delivery-protocol.ts +0 -824
- package/src/internal/hosted-delivery.ts +0 -1410
- package/src/internal/hosted-execution-diag.ts +0 -291
- package/src/internal/hosted-execution-flush.ts +0 -136
- package/src/internal/hosted-execution-latency.ts +0 -301
- package/src/internal/hosted-managed-automation.ts +0 -116
- package/src/internal/hosting.ts +0 -114
- package/src/internal/http-channel-define.ts +0 -25
- package/src/internal/http-channel.ts +0 -669
- package/src/internal/http-control-plane-session.ts +0 -110
- package/src/internal/ids.ts +0 -39
- package/src/internal/incoming-headers-to-fetch.ts +0 -45
- package/src/internal/init-interview.ts +0 -360
- package/src/internal/init-project.ts +0 -711
- package/src/internal/init-scaffold.ts +0 -182
- package/src/internal/inline-stdio-define-stub.ts +0 -4
- package/src/internal/inline-stdio-mcp.ts +0 -230
- package/src/internal/install-cursor-skills.ts +0 -604
- package/src/internal/is-record.ts +0 -3
- package/src/internal/json-schema.ts +0 -95
- package/src/internal/legacy-command-guard.ts +0 -66
- package/src/internal/listen-port.ts +0 -85
- package/src/internal/local-control-plane.ts +0 -442
- package/src/internal/local-env.ts +0 -59
- package/src/internal/local-ingress.ts +0 -90
- package/src/internal/log-ring.ts +0 -59
- package/src/internal/logs-client.ts +0 -477
- package/src/internal/map-pool.ts +0 -39
- package/src/internal/mcp-endpoint.ts +0 -747
- package/src/internal/mcp-host.ts +0 -509
- package/src/internal/mcp-oauth-on-demand.ts +0 -337
- package/src/internal/mcp-oauth-persist.ts +0 -118
- package/src/internal/mcp-oauth.ts +0 -549
- package/src/internal/net.ts +0 -29
- package/src/internal/open-browser.ts +0 -41
- package/src/internal/otel/attrs.ts +0 -16
- package/src/internal/otel/collector.ts +0 -937
- package/src/internal/otel/config.ts +0 -287
- package/src/internal/otel/http.ts +0 -122
- package/src/internal/otel/mcp.ts +0 -56
- package/src/internal/otel/propagation.ts +0 -17
- package/src/internal/otel/runtime.ts +0 -441
- package/src/internal/package-inline-stdio.ts +0 -114
- package/src/internal/peer-connections.ts +0 -96
- package/src/internal/platform-schedule-sync.ts +0 -75
- package/src/internal/platform-timers.ts +0 -365
- package/src/internal/playground/static.ts +0 -278
- package/src/internal/playground/toolchain.ts +0 -270
- package/src/internal/playground-proxy.ts +0 -564
- package/src/internal/process-memory-telemetry.ts +0 -334
- package/src/internal/project-layout.ts +0 -31
- package/src/internal/prompt-context.ts +0 -116
- package/src/internal/reminder-control-plane-protocol.ts +0 -482
- package/src/internal/reminder-runner.ts +0 -1559
- package/src/internal/reminder-schedule.ts +0 -104
- package/src/internal/reminder-store.ts +0 -176
- package/src/internal/request-error-status.ts +0 -95
- package/src/internal/request-headers.ts +0 -21
- package/src/internal/resolve-prod-target.ts +0 -334
- package/src/internal/resolved-connections.ts +0 -190
- package/src/internal/router.ts +0 -143
- package/src/internal/run-client.ts +0 -354
- package/src/internal/runtime-dispatch-runner.ts +0 -50
- package/src/internal/sanitize-mcp-tool-name.ts +0 -31
- package/src/internal/schedule-runner.ts +0 -154
- package/src/internal/scm/pr-url.ts +0 -245
- package/src/internal/sdk-runner.ts +0 -959
- package/src/internal/serve-restart.ts +0 -113
- package/src/internal/server.ts +0 -3147
- package/src/internal/session-cost.ts +0 -208
- package/src/internal/session-engine.ts +0 -5622
- package/src/internal/session-links.ts +0 -84
- package/src/internal/session-run-log.ts +0 -535
- package/src/internal/session-store.ts +0 -307
- package/src/internal/session-urls.ts +0 -32
- package/src/internal/sessions-client.ts +0 -239
- package/src/internal/skill-catalog.ts +0 -66
- package/src/internal/skills-sync.ts +0 -55
- package/src/internal/slack-provision-client.ts +0 -544
- package/src/internal/slack-thread-key.ts +0 -11
- package/src/internal/sleep.ts +0 -3
- package/src/internal/start-log-store.ts +0 -164
- package/src/internal/steering.ts +0 -17
- package/src/internal/storage-coordinator.ts +0 -800
- package/src/internal/storage-roles.ts +0 -86
- package/src/internal/storage.ts +0 -1
- package/src/internal/store-api-protocol.ts +0 -205
- package/src/internal/store-mirror.ts +0 -73
- package/src/internal/stream-progress.ts +0 -294
- package/src/internal/terminal-style.ts +0 -133
- package/src/internal/testing/factory-resource-fixtures.ts +0 -84
- package/src/internal/testing/scm-continuation-fixtures.ts +0 -285
- package/src/internal/tool-catalog.ts +0 -104
- package/src/internal/tool-policy.ts +0 -222
- package/src/internal/tool-result.ts +0 -50
- package/src/internal/trajectory.ts +0 -418
- package/src/internal/turn-cost.ts +0 -136
- package/src/internal/turn-governor.ts +0 -145
- package/src/internal/turn-lease-store.ts +0 -144
- package/src/internal/turn-outbox.ts +0 -77
- package/src/internal/update-check.ts +0 -517
- package/src/internal/v2-hosting.ts +0 -52
- package/src/internal/workspace-sync.ts +0 -114
- package/src/internal/workspace.ts +0 -505
- package/src/kv/memory-kv.ts +0 -94
- package/src/kv.ts +0 -18
- package/src/memory.ts +0 -487
- package/src/otel-public.ts +0 -24
- package/src/otel.ts +0 -320
- package/src/prompt.ts +0 -80
- package/src/reminders.ts +0 -65
- package/src/schedules.ts +0 -31
- package/src/skills.ts +0 -27
- package/src/storage-backends/cursor-hosted-v2.ts +0 -204
- package/src/storage-backends/cursor-hosted.ts +0 -388
- package/src/storage-backends/file-kv.ts +0 -276
- package/src/storage-protocol.ts +0 -261
- package/src/storage.ts +0 -408
- package/src/tools.ts +0 -166
- package/src/types.ts +0 -3776
- /package/dist/docs/assets/{reference_agent-config.md.DzGI777n.lean.js → reference_agent-config.md.Cj5uBKp4.lean.js} +0 -0
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Keep control-plane Temporal calendars aligned with authored
|
|
3
|
-
* `agent/schedules/*`. Upsert current names and delete ones that disappeared
|
|
4
|
-
* since the last successful sync (persisted under the engine state root).
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
8
|
-
import { dirname } from "node:path";
|
|
9
|
-
|
|
10
|
-
import type { PlatformTimers } from "./platform-timers.js";
|
|
11
|
-
|
|
12
|
-
export const PLATFORM_SCHEDULE_CATALOG_FILENAME = "platform-schedule-names.json";
|
|
13
|
-
|
|
14
|
-
export async function syncHostedPlatformSchedules(args: {
|
|
15
|
-
timers: PlatformTimers;
|
|
16
|
-
schedules: ReadonlyArray<{ name: string; cron: string }>;
|
|
17
|
-
catalogPath: string;
|
|
18
|
-
logger: (line: string) => void;
|
|
19
|
-
}): Promise<void> {
|
|
20
|
-
const previous = await readScheduleCatalog(args.catalogPath);
|
|
21
|
-
const currentNames = args.schedules.map(schedule => schedule.name);
|
|
22
|
-
const currentSet = new Set(currentNames);
|
|
23
|
-
|
|
24
|
-
const failedDeletes: string[] = [];
|
|
25
|
-
for (const name of previous) {
|
|
26
|
-
if (currentSet.has(name)) {
|
|
27
|
-
continue;
|
|
28
|
-
}
|
|
29
|
-
try {
|
|
30
|
-
await args.timers.deleteSchedule(name);
|
|
31
|
-
} catch (error) {
|
|
32
|
-
failedDeletes.push(name);
|
|
33
|
-
args.logger(
|
|
34
|
-
`[agent-sdk] platform timer delete failed for schedule "${name}": ${
|
|
35
|
-
error instanceof Error ? error.message : String(error)
|
|
36
|
-
}`,
|
|
37
|
-
);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
for (const schedule of args.schedules) {
|
|
42
|
-
try {
|
|
43
|
-
await args.timers.upsertSchedule({
|
|
44
|
-
name: schedule.name,
|
|
45
|
-
cron: schedule.cron,
|
|
46
|
-
});
|
|
47
|
-
} catch (error) {
|
|
48
|
-
args.logger(
|
|
49
|
-
`[agent-sdk] platform timer upsert failed for schedule "${schedule.name}": ${
|
|
50
|
-
error instanceof Error ? error.message : String(error)
|
|
51
|
-
}`,
|
|
52
|
-
);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// Keep failed removals in the catalog so the next boot retries them.
|
|
57
|
-
await writeScheduleCatalog(args.catalogPath, [...new Set([...currentNames, ...failedDeletes])]);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
async function readScheduleCatalog(catalogPath: string): Promise<string[]> {
|
|
61
|
-
try {
|
|
62
|
-
const parsed: unknown = JSON.parse(await readFile(catalogPath, "utf8"));
|
|
63
|
-
if (!Array.isArray(parsed)) {
|
|
64
|
-
return [];
|
|
65
|
-
}
|
|
66
|
-
return parsed.filter((entry): entry is string => typeof entry === "string");
|
|
67
|
-
} catch {
|
|
68
|
-
return [];
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
async function writeScheduleCatalog(catalogPath: string, names: readonly string[]): Promise<void> {
|
|
73
|
-
await mkdir(dirname(catalogPath), { recursive: true });
|
|
74
|
-
await writeFile(catalogPath, `${JSON.stringify(names)}\n`, "utf8");
|
|
75
|
-
}
|
|
@@ -1,365 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Timed-work client used by the kit. Local serve implements this in-process
|
|
3
|
-
* (`createLocalControlPlane`). Cursor hosting (`--no-control-plane`) uses
|
|
4
|
-
* the HTTP client below against the Cursor backend. Authors never see this
|
|
5
|
-
* surface.
|
|
6
|
-
*
|
|
7
|
-
* The control plane owns reminder *documents* and clocks. The kit only
|
|
8
|
-
* executes fires.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import {
|
|
12
|
-
REMINDER_CP_PROTOCOL_VERSION,
|
|
13
|
-
type ReminderControlPlane,
|
|
14
|
-
type ReminderCreateIntent,
|
|
15
|
-
type ReminderExecutionOutcome,
|
|
16
|
-
type ReminderFireClaim,
|
|
17
|
-
type ReminderOutcomeApplyResult,
|
|
18
|
-
} from "./reminder-control-plane-protocol.js";
|
|
19
|
-
import { isReminderRecord, type ReminderRecord } from "./reminder-store.js";
|
|
20
|
-
|
|
21
|
-
const DEFAULT_CURSOR_EXTERNAL_API_URL = "https://api.cursor.com";
|
|
22
|
-
|
|
23
|
-
export interface PlatformTimers {
|
|
24
|
-
upsertSchedule(input: { name: string; cron: string }): Promise<void>;
|
|
25
|
-
deleteSchedule(name: string): Promise<void>;
|
|
26
|
-
putReminder(record: ReminderRecord): Promise<void>;
|
|
27
|
-
getReminder(id: string): Promise<ReminderRecord | undefined>;
|
|
28
|
-
listReminders(): Promise<ReminderRecord[]>;
|
|
29
|
-
deleteReminder(id: string): Promise<void>;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export interface CursorHostedPlatformTimersOptions {
|
|
33
|
-
baseUrl?: string;
|
|
34
|
-
apiKey?: string;
|
|
35
|
-
fetch?: typeof fetch;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
function resolveApiKey(options: CursorHostedPlatformTimersOptions): string {
|
|
39
|
-
const key = (options.apiKey ?? process.env.CURSOR_API_KEY)?.trim();
|
|
40
|
-
if (key === undefined || key === "") {
|
|
41
|
-
throw new Error(
|
|
42
|
-
"platform timers require CURSOR_API_KEY (deployment pod credential on Cursor hosting)",
|
|
43
|
-
);
|
|
44
|
-
}
|
|
45
|
-
return key;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
function resolveBaseUrl(options: CursorHostedPlatformTimersOptions): string {
|
|
49
|
-
const raw = (
|
|
50
|
-
options.baseUrl ??
|
|
51
|
-
process.env.CURSOR_API_BASE_URL ??
|
|
52
|
-
DEFAULT_CURSOR_EXTERNAL_API_URL
|
|
53
|
-
).trim();
|
|
54
|
-
return raw.endsWith("/") ? raw.slice(0, -1) : raw;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
async function timedWorkFetch(
|
|
58
|
-
options: CursorHostedPlatformTimersOptions,
|
|
59
|
-
method: "GET" | "PUT" | "DELETE",
|
|
60
|
-
path: string,
|
|
61
|
-
body?: unknown,
|
|
62
|
-
): Promise<Response> {
|
|
63
|
-
const fetchImpl = options.fetch ?? globalThis.fetch;
|
|
64
|
-
if (typeof fetchImpl !== "function") {
|
|
65
|
-
throw new Error("platform timers require fetch");
|
|
66
|
-
}
|
|
67
|
-
return fetchImpl(`${resolveBaseUrl(options)}${path}`, {
|
|
68
|
-
method,
|
|
69
|
-
headers: {
|
|
70
|
-
Authorization: `Bearer ${resolveApiKey(options)}`,
|
|
71
|
-
...(body === undefined ? {} : { "Content-Type": "application/json" }),
|
|
72
|
-
},
|
|
73
|
-
...(body === undefined ? {} : { body: JSON.stringify(body) }),
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
async function timedWorkRpc(
|
|
78
|
-
options: CursorHostedPlatformTimersOptions,
|
|
79
|
-
method: "PUT" | "DELETE",
|
|
80
|
-
path: string,
|
|
81
|
-
body?: unknown,
|
|
82
|
-
): Promise<void> {
|
|
83
|
-
const response = await timedWorkFetch(options, method, path, body);
|
|
84
|
-
if (response.ok) {
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
const text = await response.text();
|
|
88
|
-
let detail = `HTTP ${response.status}`;
|
|
89
|
-
try {
|
|
90
|
-
const parsed: unknown = text.length === 0 ? {} : JSON.parse(text);
|
|
91
|
-
if (
|
|
92
|
-
parsed !== null &&
|
|
93
|
-
typeof parsed === "object" &&
|
|
94
|
-
"error" in parsed &&
|
|
95
|
-
typeof (parsed as { error: unknown }).error === "string"
|
|
96
|
-
) {
|
|
97
|
-
detail = (parsed as { error: string }).error;
|
|
98
|
-
}
|
|
99
|
-
} catch {
|
|
100
|
-
// Keep the status-only detail.
|
|
101
|
-
}
|
|
102
|
-
throw new Error(`platform timers ${method} ${path}: ${detail}`);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
export function createCursorHostedPlatformTimers(
|
|
106
|
-
options: CursorHostedPlatformTimersOptions = {},
|
|
107
|
-
): PlatformTimers {
|
|
108
|
-
return {
|
|
109
|
-
async upsertSchedule(input) {
|
|
110
|
-
await timedWorkRpc(
|
|
111
|
-
options,
|
|
112
|
-
"PUT",
|
|
113
|
-
`/internal/agent-serve/timed-work/schedules/${encodeURIComponent(input.name)}`,
|
|
114
|
-
{ cron: input.cron },
|
|
115
|
-
);
|
|
116
|
-
},
|
|
117
|
-
async deleteSchedule(name) {
|
|
118
|
-
await timedWorkRpc(
|
|
119
|
-
options,
|
|
120
|
-
"DELETE",
|
|
121
|
-
`/internal/agent-serve/timed-work/schedules/${encodeURIComponent(name)}`,
|
|
122
|
-
);
|
|
123
|
-
},
|
|
124
|
-
async putReminder(record) {
|
|
125
|
-
await timedWorkRpc(
|
|
126
|
-
options,
|
|
127
|
-
"PUT",
|
|
128
|
-
`/internal/agent-serve/timed-work/reminders/${encodeURIComponent(record.id)}`,
|
|
129
|
-
record,
|
|
130
|
-
);
|
|
131
|
-
},
|
|
132
|
-
async getReminder(id) {
|
|
133
|
-
const response = await timedWorkFetch(
|
|
134
|
-
options,
|
|
135
|
-
"GET",
|
|
136
|
-
`/internal/agent-serve/timed-work/reminders/${encodeURIComponent(id)}`,
|
|
137
|
-
);
|
|
138
|
-
if (response.status === 404) {
|
|
139
|
-
return undefined;
|
|
140
|
-
}
|
|
141
|
-
if (!response.ok) {
|
|
142
|
-
throw new Error(`platform timers GET /reminders/${id}: HTTP ${response.status}`);
|
|
143
|
-
}
|
|
144
|
-
const parsed: unknown = await response.json();
|
|
145
|
-
return isReminderRecord(parsed) ? parsed : undefined;
|
|
146
|
-
},
|
|
147
|
-
async listReminders() {
|
|
148
|
-
const response = await timedWorkFetch(
|
|
149
|
-
options,
|
|
150
|
-
"GET",
|
|
151
|
-
"/internal/agent-serve/timed-work/reminders",
|
|
152
|
-
);
|
|
153
|
-
if (!response.ok) {
|
|
154
|
-
throw new Error(`platform timers GET /reminders: HTTP ${response.status}`);
|
|
155
|
-
}
|
|
156
|
-
const parsed: unknown = await response.json();
|
|
157
|
-
if (
|
|
158
|
-
parsed === null ||
|
|
159
|
-
typeof parsed !== "object" ||
|
|
160
|
-
!("reminders" in parsed) ||
|
|
161
|
-
!Array.isArray((parsed as { reminders: unknown }).reminders)
|
|
162
|
-
) {
|
|
163
|
-
return [];
|
|
164
|
-
}
|
|
165
|
-
return (parsed as { reminders: unknown[] }).reminders.filter(isReminderRecord);
|
|
166
|
-
},
|
|
167
|
-
async deleteReminder(id) {
|
|
168
|
-
await timedWorkRpc(
|
|
169
|
-
options,
|
|
170
|
-
"DELETE",
|
|
171
|
-
`/internal/agent-serve/timed-work/reminders/${encodeURIComponent(id)}`,
|
|
172
|
-
);
|
|
173
|
-
},
|
|
174
|
-
};
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
/** v2 reminder CP is factory ECS (`/internal/agentsdk/*`), not timed-work. */
|
|
178
|
-
const AGENTSDK_REMINDERS_PREFIX = "/internal/agentsdk";
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* Bounded retries for idempotent CP outcome writes after the guest handler
|
|
182
|
-
* has already run. Delivery is at-least-once: a transient apply failure may
|
|
183
|
-
* re-enter the handler on the next Temporal admission. Do not claim
|
|
184
|
-
* exactly-once handler execution.
|
|
185
|
-
*/
|
|
186
|
-
const APPLY_REMINDER_OUTCOME_MAX_ATTEMPTS = 3;
|
|
187
|
-
const APPLY_REMINDER_OUTCOME_RETRY_DELAY_MS = 50;
|
|
188
|
-
|
|
189
|
-
async function sleepMs(ms: number): Promise<void> {
|
|
190
|
-
await new Promise(resolve => setTimeout(resolve, ms));
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
async function withBoundedApplyRetries<T>(run: () => Promise<T>): Promise<T> {
|
|
194
|
-
let lastError: unknown;
|
|
195
|
-
for (let attempt = 1; attempt <= APPLY_REMINDER_OUTCOME_MAX_ATTEMPTS; attempt++) {
|
|
196
|
-
try {
|
|
197
|
-
return await run();
|
|
198
|
-
} catch (error) {
|
|
199
|
-
lastError = error;
|
|
200
|
-
if (attempt >= APPLY_REMINDER_OUTCOME_MAX_ATTEMPTS) {
|
|
201
|
-
break;
|
|
202
|
-
}
|
|
203
|
-
await sleepMs(APPLY_REMINDER_OUTCOME_RETRY_DELAY_MS * attempt);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
throw lastError;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
async function timedWorkJsonFetch(
|
|
210
|
-
options: CursorHostedPlatformTimersOptions,
|
|
211
|
-
method: "GET" | "POST" | "PUT" | "DELETE",
|
|
212
|
-
path: string,
|
|
213
|
-
body?: unknown,
|
|
214
|
-
): Promise<Response> {
|
|
215
|
-
const fetchImpl = options.fetch ?? globalThis.fetch;
|
|
216
|
-
if (typeof fetchImpl !== "function") {
|
|
217
|
-
throw new Error("reminder control plane requires fetch");
|
|
218
|
-
}
|
|
219
|
-
return fetchImpl(`${resolveBaseUrl(options)}${path}`, {
|
|
220
|
-
method,
|
|
221
|
-
headers: {
|
|
222
|
-
Authorization: `Bearer ${resolveApiKey(options)}`,
|
|
223
|
-
...(body === undefined ? {} : { "Content-Type": "application/json" }),
|
|
224
|
-
},
|
|
225
|
-
...(body === undefined ? {} : { body: JSON.stringify(body) }),
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
const CP_ERROR_BODY_LIMIT = 512;
|
|
230
|
-
|
|
231
|
-
/**
|
|
232
|
-
* Read failures carry status and a bounded body: the guest logs them once
|
|
233
|
-
* per process, and a 405 body names the route the caller should be on.
|
|
234
|
-
*/
|
|
235
|
-
async function reminderCpReadError(what: string, response: Response): Promise<Error> {
|
|
236
|
-
let body = "";
|
|
237
|
-
try {
|
|
238
|
-
body = (await response.text()).trim();
|
|
239
|
-
} catch {
|
|
240
|
-
// Status-only detail.
|
|
241
|
-
}
|
|
242
|
-
const detail = body === "" ? "" : ` ${body.slice(0, CP_ERROR_BODY_LIMIT)}`;
|
|
243
|
-
return new Error(`reminder CP ${what} failed: HTTP ${response.status}${detail}`);
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
/**
|
|
247
|
-
* Cursor-hosted HTTP ReminderControlPlane for architecture v2.
|
|
248
|
-
* Speaks factory `/internal/agentsdk/reminders` (ELB → factory ECS).
|
|
249
|
-
* CP owns ids and time. v1 PUT/DELETE reminders stay on timed-work.
|
|
250
|
-
*/
|
|
251
|
-
export function createCursorHostedReminderControlPlane(
|
|
252
|
-
options: CursorHostedPlatformTimersOptions = {},
|
|
253
|
-
): ReminderControlPlane {
|
|
254
|
-
return {
|
|
255
|
-
protocolVersion: REMINDER_CP_PROTOCOL_VERSION,
|
|
256
|
-
async createReminder(intent: ReminderCreateIntent) {
|
|
257
|
-
const response = await timedWorkJsonFetch(
|
|
258
|
-
options,
|
|
259
|
-
"POST",
|
|
260
|
-
`${AGENTSDK_REMINDERS_PREFIX}/reminders`,
|
|
261
|
-
intent,
|
|
262
|
-
);
|
|
263
|
-
if (!response.ok) {
|
|
264
|
-
const text = await response.text();
|
|
265
|
-
throw new Error(`reminder CP create failed: HTTP ${response.status} ${text}`);
|
|
266
|
-
}
|
|
267
|
-
const parsed: unknown = await response.json();
|
|
268
|
-
if (!isReminderRecord(parsed)) {
|
|
269
|
-
throw new Error("reminder CP create returned invalid record");
|
|
270
|
-
}
|
|
271
|
-
return parsed;
|
|
272
|
-
},
|
|
273
|
-
async getReminder(id) {
|
|
274
|
-
const response = await timedWorkJsonFetch(
|
|
275
|
-
options,
|
|
276
|
-
"GET",
|
|
277
|
-
`${AGENTSDK_REMINDERS_PREFIX}/reminders/${encodeURIComponent(id)}`,
|
|
278
|
-
);
|
|
279
|
-
if (response.status === 404) {
|
|
280
|
-
return undefined;
|
|
281
|
-
}
|
|
282
|
-
if (!response.ok) {
|
|
283
|
-
throw await reminderCpReadError("get", response);
|
|
284
|
-
}
|
|
285
|
-
const parsed: unknown = await response.json();
|
|
286
|
-
return isReminderRecord(parsed) ? parsed : undefined;
|
|
287
|
-
},
|
|
288
|
-
async listReminders() {
|
|
289
|
-
const response = await timedWorkJsonFetch(
|
|
290
|
-
options,
|
|
291
|
-
"GET",
|
|
292
|
-
`${AGENTSDK_REMINDERS_PREFIX}/reminders`,
|
|
293
|
-
);
|
|
294
|
-
if (!response.ok) {
|
|
295
|
-
throw await reminderCpReadError("list", response);
|
|
296
|
-
}
|
|
297
|
-
const parsed: unknown = await response.json();
|
|
298
|
-
if (
|
|
299
|
-
parsed === null ||
|
|
300
|
-
typeof parsed !== "object" ||
|
|
301
|
-
!("reminders" in parsed) ||
|
|
302
|
-
!Array.isArray((parsed as { reminders: unknown }).reminders)
|
|
303
|
-
) {
|
|
304
|
-
return [];
|
|
305
|
-
}
|
|
306
|
-
return (parsed as { reminders: unknown[] }).reminders.filter(isReminderRecord);
|
|
307
|
-
},
|
|
308
|
-
async cancelReminder(id, reason) {
|
|
309
|
-
const response = await timedWorkJsonFetch(
|
|
310
|
-
options,
|
|
311
|
-
"POST",
|
|
312
|
-
`${AGENTSDK_REMINDERS_PREFIX}/reminders/${encodeURIComponent(id)}/cancel`,
|
|
313
|
-
reason === undefined ? {} : { reason },
|
|
314
|
-
);
|
|
315
|
-
if (response.status === 404) {
|
|
316
|
-
return undefined;
|
|
317
|
-
}
|
|
318
|
-
if (!response.ok) {
|
|
319
|
-
throw new Error(`reminder CP cancel failed: HTTP ${response.status}`);
|
|
320
|
-
}
|
|
321
|
-
const parsed: unknown = await response.json();
|
|
322
|
-
return isReminderRecord(parsed) ? parsed : undefined;
|
|
323
|
-
},
|
|
324
|
-
async rekeyReminders(channelId, oldToken, newToken) {
|
|
325
|
-
const response = await timedWorkJsonFetch(
|
|
326
|
-
options,
|
|
327
|
-
"POST",
|
|
328
|
-
`${AGENTSDK_REMINDERS_PREFIX}/reminders/rekey`,
|
|
329
|
-
{ channelId, oldToken, newToken },
|
|
330
|
-
);
|
|
331
|
-
if (!response.ok) {
|
|
332
|
-
throw new Error(`reminder CP rekey failed: HTTP ${response.status}`);
|
|
333
|
-
}
|
|
334
|
-
const parsed: unknown = await response.json();
|
|
335
|
-
if (
|
|
336
|
-
parsed === null ||
|
|
337
|
-
typeof parsed !== "object" ||
|
|
338
|
-
typeof (parsed as { count?: unknown }).count !== "number"
|
|
339
|
-
) {
|
|
340
|
-
throw new Error("reminder CP rekey returned invalid body");
|
|
341
|
-
}
|
|
342
|
-
return (parsed as { count: number }).count;
|
|
343
|
-
},
|
|
344
|
-
async applyReminderOutcome(
|
|
345
|
-
claim: ReminderFireClaim,
|
|
346
|
-
outcome: ReminderExecutionOutcome,
|
|
347
|
-
): Promise<ReminderOutcomeApplyResult> {
|
|
348
|
-
// Handler side effects may already have run; retry only the idempotent
|
|
349
|
-
// CP write. Exhausted failures stay thrown so Temporal can re-admit
|
|
350
|
-
// (at-least-once — not exactly-once).
|
|
351
|
-
return await withBoundedApplyRetries(async () => {
|
|
352
|
-
const response = await timedWorkJsonFetch(
|
|
353
|
-
options,
|
|
354
|
-
"POST",
|
|
355
|
-
`${AGENTSDK_REMINDERS_PREFIX}/reminders/outcome`,
|
|
356
|
-
{ claim, outcome },
|
|
357
|
-
);
|
|
358
|
-
if (!response.ok) {
|
|
359
|
-
throw new Error(`reminder CP outcome apply failed: HTTP ${response.status}`);
|
|
360
|
-
}
|
|
361
|
-
return (await response.json()) as ReminderOutcomeApplyResult;
|
|
362
|
-
});
|
|
363
|
-
},
|
|
364
|
-
};
|
|
365
|
-
}
|