@cursor/july 0.1.112 → 0.1.114
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/README.md +4 -0
- package/dist/bin/agent-serve.js +2 -3
- package/dist/channels/checks.d.ts +10 -0
- package/dist/channels/checks.d.ts.map +1 -1
- package/dist/channels/origin/checks.d.ts +1 -1
- package/dist/channels/origin/checks.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +6 -2
- package/dist/docs/404.html +2 -2
- package/dist/docs/assets/{app.DxTdhphC.js → app.BqkJwOZ-.js} +4 -4
- package/dist/docs/assets/chunks/@localSearchIndexroot.BnSgidYE.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.CR3KTF0X.js → VPLocalSearchBox.BJAi2KiV.js} +1 -1
- package/dist/docs/assets/chunks/{arc.CVVqBOdS.js → arc.BZpXTgvV.js} +1 -1
- package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.CJHGP4ki.js → architectureDiagram-Q4EWVU46.WYI-7F-Y.js} +1 -1
- package/dist/docs/assets/chunks/{baseUniq.r7UVVRBP.js → baseUniq.CZaUPpg0.js} +1 -1
- package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.DKmMaTre.js → blockDiagram-DXYQGD6D.D6UES2pD.js} +1 -1
- package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.DDJsntUO.js → c4Diagram-AHTNJAMY.cwebIe4i.js} +1 -1
- package/dist/docs/assets/chunks/channel.DdM5EfNW.js +1 -0
- package/dist/docs/assets/chunks/{chunk-4BX2VUAB.BK2rKt6W.js → chunk-4BX2VUAB.fVyFnjxg.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-4TB4RGXK.DRLV8RnF.js → chunk-4TB4RGXK.BanufG1c.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-55IACEB6.DaKjxtb7.js → chunk-55IACEB6.VaSMz5-2.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-EDXVE4YY.C5sPCIT1.js → chunk-EDXVE4YY.CN2diZOM.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-FMBD7UC4.CSGWyNTB.js → chunk-FMBD7UC4.g4ivypu3.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-OYMX7WX6.D5tK9XEr.js → chunk-OYMX7WX6.GZXKn9JJ.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BeZGd1UZ.js → chunk-QZHKN3VN.itXxJZCd.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-YZCP3GAM.U_tfWwQR.js → chunk-YZCP3GAM.-rw2GfvX.js} +1 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CjfGHeg2.js +1 -0
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CjfGHeg2.js +1 -0
- package/dist/docs/assets/chunks/clone.wSOICb_f.js +1 -0
- package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.DVeRXIb6.js → cose-bilkent-S5V4N54A.CmaI5br0.js} +1 -1
- package/dist/docs/assets/chunks/{dagre-KV5264BT.BpKJAeRZ.js → dagre-KV5264BT.4wY9S4Kt.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-5BDNPKRD.BQOtrd1Z.js → diagram-5BDNPKRD.Pc3c0u9W.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.CSDAhjPI.js → diagram-G4DWMVQ6.CYrWz-nj.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-MMDJMWI5.Dpztst2S.js → diagram-MMDJMWI5.Bgj5hukb.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-TYMM5635.qJHRizHR.js → diagram-TYMM5635.DGMEXalS.js} +1 -1
- package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.vbDotH3l.js → erDiagram-SMLLAGMA.GepTV9Im.js} +1 -1
- package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.CqS_ZQr4.js → flowDiagram-DWJPFMVM.DVKywg3j.js} +1 -1
- package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.DTLdR4pN.js → ganttDiagram-T4ZO3ILL.C7qt9Mlo.js} +1 -1
- package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.D04lnbnr.js → gitGraphDiagram-UUTBAWPF.U30_r82P.js} +1 -1
- package/dist/docs/assets/chunks/{graph.BlfqLJsM.js → graph.CyyMyAWv.js} +1 -1
- package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.tAooImWA.js → infoDiagram-42DDH7IO.Dn9ACW3y.js} +1 -1
- package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.ClUsVqnJ.js → ishikawaDiagram-UXIWVN3A.DlIdIGOA.js} +1 -1
- package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.C3tUgyCg.js → journeyDiagram-VCZTEJTY.DZj4vy4E.js} +1 -1
- package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.CtD9-QCe.js → kanban-definition-6JOO6SKY.Dl63eMUV.js} +1 -1
- package/dist/docs/assets/chunks/{layout.D38U-LnT.js → layout.BLHZLWPH.js} +1 -1
- package/dist/docs/assets/chunks/{linear.BJmssyhN.js → linear.aXKGKaNw.js} +1 -1
- package/dist/docs/assets/chunks/{min.DNgXoouU.js → min.zWnFcpcc.js} +1 -1
- package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.Dcp6cxeu.js → mindmap-definition-QFDTVHPH.Qs4MQBea.js} +1 -1
- package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.CLDw6zIs.js → pieDiagram-DEJITSTG.BmPHgsk7.js} +1 -1
- package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.CYaeeY4c.js → quadrantDiagram-34T5L4WZ.D5MQ3gwA.js} +1 -1
- package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.gMYuRpq2.js → requirementDiagram-MS252O5E.CkdUFrO7.js} +1 -1
- package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.CZqyHFbc.js → sankeyDiagram-XADWPNL6.KZrljrAV.js} +1 -1
- package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.BTsCjUDN.js → sequenceDiagram-FGHM5R23.XMoEW-Lx.js} +1 -1
- package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.CftT9mLJ.js → stateDiagram-FHFEXIEX.BmTzePLj.js} +1 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.Cu5X28zZ.js +1 -0
- package/dist/docs/assets/chunks/{theme.B_7J9ZsV.js → theme.BfQzpxsg.js} +2 -2
- package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.DbU3WUNw.js → timeline-definition-GMOUNBTQ.Dug0oamp.js} +1 -1
- package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.ixsq-q2u.js → vennDiagram-DHZGUBPP.BOTHrEFu.js} +1 -1
- package/dist/docs/assets/chunks/wardley-RL74JXVD.DXy2i1LS.js +162 -0
- package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.C0ewvgbp.js → wardleyDiagram-NUSXRM2D.CoXKdfi6.js} +1 -1
- package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.nAEhF4bO.js → xychartDiagram-5P7HB3ND.DXoSCjAW.js} +1 -1
- package/dist/docs/assets/{deployment.md.D2jQZuFx.js → deployment.md.D2YX7u_I.js} +1 -1
- package/dist/docs/assets/{evals.md.BYvfZ-PO.js → evals.md.D3Y3Aixt.js} +2 -2
- package/dist/docs/assets/{evals.md.BYvfZ-PO.lean.js → evals.md.D3Y3Aixt.lean.js} +1 -1
- package/dist/docs/assets/guides_agent-to-agent.md.C6kPY8nu.js +41 -0
- package/dist/docs/assets/guides_agent-to-agent.md.C6kPY8nu.lean.js +1 -0
- package/dist/docs/assets/{guides_cloud-agents.md.Cp1O3u-X.js → guides_cloud-agents.md.BPJqTZjT.js} +1 -1
- package/dist/docs/assets/{guides_grokbot-agents.md.CMhZNdEU.js → guides_grokbot-agents.md.CzV715v8.js} +1 -1
- package/dist/docs/assets/guides_hooks.md.BT9GLwEp.js +50 -0
- package/dist/docs/assets/guides_hooks.md.BT9GLwEp.lean.js +1 -0
- package/dist/docs/assets/guides_jev.md.DeSCqMaO.js +151 -0
- package/dist/docs/assets/guides_jev.md.DeSCqMaO.lean.js +1 -0
- package/dist/docs/assets/reference_agent-config.md.BRxAlnRy.js +36 -0
- package/dist/docs/assets/{reference_agent-config.md.DGPyw7ms.lean.js → reference_agent-config.md.BRxAlnRy.lean.js} +1 -1
- package/dist/docs/assets/reference_artifacts.md.KRX0sAdt.js +18 -0
- package/dist/docs/assets/reference_artifacts.md.KRX0sAdt.lean.js +1 -0
- package/dist/docs/assets/reference_channels.md.DZr14vm7.js +23 -0
- package/dist/docs/assets/reference_channels.md.DZr14vm7.lean.js +1 -0
- package/dist/docs/assets/{reference_connections.md.CmyrlXfY.js → reference_connections.md.DJGUCxrr.js} +18 -30
- package/dist/docs/assets/{reference_connections.md.CmyrlXfY.lean.js → reference_connections.md.DJGUCxrr.lean.js} +1 -1
- package/dist/docs/assets/{reference_evals.md.DNJzM_yf.js → reference_evals.md.C6umwNC6.js} +6 -7
- package/dist/docs/assets/reference_evals.md.C6umwNC6.lean.js +1 -0
- package/dist/docs/assets/{reference_extensions.md.Ceq-qT8d.js → reference_extensions.md.DbNYu-DP.js} +3 -3
- package/dist/docs/assets/{reference_extensions.md.Ceq-qT8d.lean.js → reference_extensions.md.DbNYu-DP.lean.js} +1 -1
- package/dist/docs/assets/reference_hooks.md.BfOkhTU0.js +45 -0
- package/dist/docs/assets/{reference_hooks.md.B7uzNENk.lean.js → reference_hooks.md.BfOkhTU0.lean.js} +1 -1
- package/dist/docs/assets/reference_http-api.md.DdwtBeCj.js +11 -0
- package/dist/docs/assets/{reference_http-api.md.CduHavZ2.lean.js → reference_http-api.md.DdwtBeCj.lean.js} +1 -1
- package/dist/docs/assets/reference_instructions.md.B2mcIzT6.js +14 -0
- package/dist/docs/assets/reference_instructions.md.B2mcIzT6.lean.js +1 -0
- package/dist/docs/assets/reference_playground.md.CyrQD_n3.js +1 -0
- package/dist/docs/assets/reference_playground.md.CyrQD_n3.lean.js +1 -0
- package/dist/docs/assets/reference_project-layout.md.BEMzxAkq.js +19 -0
- package/dist/docs/assets/{reference_project-layout.md.BGhgpy9V.lean.js → reference_project-layout.md.BEMzxAkq.lean.js} +1 -1
- package/dist/docs/assets/reference_prompt.md.BFrqjHFL.js +9 -0
- package/dist/docs/assets/reference_prompt.md.BFrqjHFL.lean.js +1 -0
- package/dist/docs/assets/reference_schedules.md.BB9N3tRR.js +47 -0
- package/dist/docs/assets/reference_schedules.md.BB9N3tRR.lean.js +1 -0
- package/dist/docs/assets/reference_sessions.md.BBp-GIt-.js +1 -0
- package/dist/docs/assets/{reference_sessions.md.1_6Vyv7x.lean.js → reference_sessions.md.BBp-GIt-.lean.js} +1 -1
- package/dist/docs/assets/reference_skills.md.BVmi3UJ_.js +15 -0
- package/dist/docs/assets/{reference_skills.md.DjQkRefx.lean.js → reference_skills.md.BVmi3UJ_.lean.js} +1 -1
- package/dist/docs/assets/reference_subagents.md.DRoRy2Uj.js +10 -0
- package/dist/docs/assets/{reference_subagents.md.BHsSMMyO.lean.js → reference_subagents.md.DRoRy2Uj.lean.js} +1 -1
- package/dist/docs/assets/{reference_tools.md.BYzUTeVA.js → reference_tools.md.CgocLDX1.js} +10 -7
- package/dist/docs/assets/{reference_tools.md.BYzUTeVA.lean.js → reference_tools.md.CgocLDX1.lean.js} +1 -1
- package/dist/docs/assets/troubleshooting.md.HY95rCCz.js +1 -0
- package/dist/docs/building-with-agents.html +35 -35
- package/dist/docs/deployment.html +37 -37
- package/dist/docs/deployment.md +1 -1
- package/dist/docs/evals.html +36 -36
- package/dist/docs/evals.md +3 -0
- package/dist/docs/guides/agent-to-agent.html +65 -54
- package/dist/docs/guides/agent-to-agent.md +73 -69
- package/dist/docs/guides/bitbucket.html +35 -35
- package/dist/docs/guides/cloud-agents.html +36 -36
- package/dist/docs/guides/cloud-agents.md +1 -1
- 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 +37 -37
- package/dist/docs/guides/grokbot-agents.md +1 -1
- package/dist/docs/guides/hooks.html +109 -0
- package/dist/docs/guides/hooks.md +111 -0
- package/dist/docs/guides/improve.html +36 -36
- package/dist/docs/guides/jev.html +210 -0
- package/dist/docs/guides/jev.md +291 -0
- package/dist/docs/guides/mcp-oauth.html +36 -36
- 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 +1338 -1282
- package/dist/docs/llms.txt +9 -7
- package/dist/docs/quickstart.html +35 -35
- package/dist/docs/reference/agent-config.html +42 -46
- package/dist/docs/reference/agent-config.md +48 -81
- package/dist/docs/reference/artifacts.html +39 -40
- package/dist/docs/reference/artifacts.md +71 -70
- package/dist/docs/reference/channels.html +41 -61
- package/dist/docs/reference/channels.md +134 -201
- package/dist/docs/reference/cli.html +35 -35
- package/dist/docs/reference/connections.html +54 -66
- package/dist/docs/reference/connections.md +98 -134
- package/dist/docs/reference/evals.html +42 -43
- package/dist/docs/reference/evals.md +42 -50
- package/dist/docs/reference/extensions.html +39 -39
- package/dist/docs/reference/extensions.md +10 -13
- package/dist/docs/reference/hooks.html +39 -67
- package/dist/docs/reference/hooks.md +72 -146
- package/dist/docs/reference/http-api.html +39 -39
- package/dist/docs/reference/http-api.md +137 -161
- package/dist/docs/reference/instructions.html +39 -39
- package/dist/docs/reference/instructions.md +21 -36
- package/dist/docs/reference/playground.html +36 -36
- package/dist/docs/reference/playground.md +26 -43
- package/dist/docs/reference/project-layout.html +38 -38
- package/dist/docs/reference/project-layout.md +12 -17
- package/dist/docs/reference/prompt.html +42 -42
- package/dist/docs/reference/prompt.md +18 -13
- package/dist/docs/reference/schedules.html +56 -91
- package/dist/docs/reference/schedules.md +52 -99
- package/dist/docs/reference/sessions.html +36 -36
- package/dist/docs/reference/sessions.md +36 -40
- package/dist/docs/reference/skills.html +38 -38
- package/dist/docs/reference/skills.md +15 -26
- package/dist/docs/reference/subagents.html +38 -38
- package/dist/docs/reference/subagents.md +21 -31
- package/dist/docs/reference/tools.html +45 -42
- package/dist/docs/reference/tools.md +49 -64
- package/dist/docs/templates/agentic-owners.html +35 -35
- package/dist/docs/templates/pr-autofixer.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 +36 -36
- package/dist/docs/troubleshooting.md +1 -1
- package/dist/extensions/jev/extension.d.ts +43 -0
- package/dist/extensions/jev/extension.d.ts.map +1 -0
- package/dist/extensions/jev/extension.js +47 -0
- package/dist/extensions/jev/lib/evaluate.d.ts +101 -0
- package/dist/extensions/jev/lib/evaluate.d.ts.map +1 -0
- package/dist/extensions/jev/lib/evaluate.js +167 -0
- package/dist/extensions/jev/skills/gated-write.md +25 -0
- package/dist/extensions/jev/skills/questions.md +33 -0
- package/dist/extensions/jev/tools/evaluate.d.ts +4 -0
- package/dist/extensions/jev/tools/evaluate.d.ts.map +1 -0
- package/dist/extensions/jev/tools/evaluate.js +88 -0
- package/dist/extensions.d.ts +1 -1
- package/dist/extensions.d.ts.map +1 -1
- package/dist/extensions.js +2 -0
- package/dist/internal/advertise-tools.d.ts.map +1 -1
- package/dist/internal/advertise-tools.js +6 -0
- package/dist/internal/discovery/connections.d.ts.map +1 -1
- package/dist/internal/discovery/connections.js +18 -0
- package/dist/internal/discovery/extensions.d.ts.map +1 -1
- package/dist/internal/discovery/extensions.js +8 -4
- package/dist/internal/discovery/info.d.ts.map +1 -1
- package/dist/internal/discovery/info.js +1 -0
- package/dist/internal/hosted-delivery-protocol.d.ts +3 -0
- package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
- package/dist/internal/hosted-delivery-protocol.js +1 -0
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +15 -25
- package/dist/internal/hosted-execution-diag.d.ts +12 -4
- package/dist/internal/hosted-execution-diag.d.ts.map +1 -1
- package/dist/internal/hosted-execution-diag.js +26 -4
- package/dist/internal/hosted-execution-flush.d.ts +1 -0
- package/dist/internal/hosted-execution-flush.d.ts.map +1 -1
- package/dist/internal/hosted-execution-flush.js +4 -2
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +17 -9
- package/dist/internal/session-engine.d.ts +4 -1
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +28 -4
- package/dist/playground/assets/index-C61EWMBK.css +1 -0
- package/dist/playground/assets/{index-B1c1LeIf.js → index-CrMWlgUU.js} +43 -43
- package/dist/playground/index.html +2 -2
- package/dist/types.d.ts +23 -3
- package/dist/types.d.ts.map +1 -1
- package/docs/deployment.md +1 -1
- package/docs/evals.md +3 -0
- package/docs/guides/agent-to-agent.md +74 -70
- package/docs/guides/cloud-agents.md +1 -1
- package/docs/guides/grokbot-agents.md +1 -1
- package/docs/guides/hooks.md +116 -0
- package/docs/guides/jev.md +296 -0
- package/docs/reference/agent-config.md +48 -81
- package/docs/reference/artifacts.md +72 -71
- package/docs/reference/channels.md +135 -202
- package/docs/reference/connections.md +99 -135
- package/docs/reference/evals.md +43 -51
- package/docs/reference/extensions.md +10 -13
- package/docs/reference/hooks.md +72 -146
- package/docs/reference/http-api.md +137 -161
- package/docs/reference/instructions.md +22 -37
- package/docs/reference/playground.md +26 -43
- package/docs/reference/project-layout.md +12 -17
- package/docs/reference/prompt.md +20 -15
- package/docs/reference/schedules.md +52 -99
- package/docs/reference/sessions.md +36 -40
- package/docs/reference/skills.md +15 -26
- package/docs/reference/subagents.md +21 -31
- package/docs/reference/tools.md +49 -64
- package/docs/troubleshooting.md +1 -1
- package/package.json +8 -1
- package/src/bin/agent-serve.ts +2 -3
- package/src/channels/checks.ts +8 -0
- package/src/channels/origin/checks.ts +3 -1
- package/src/channels/slack/dispatch.ts +7 -2
- package/src/extensions/jev/extension.ts +95 -0
- package/src/extensions/jev/lib/evaluate.ts +289 -0
- package/src/extensions/jev/skills/gated-write.md +25 -0
- package/src/extensions/jev/skills/questions.md +33 -0
- package/src/extensions/jev/tools/evaluate.ts +90 -0
- package/src/extensions.ts +2 -0
- package/src/internal/advertise-tools.ts +6 -0
- package/src/internal/discovery/connections.ts +21 -0
- package/src/internal/discovery/extensions.ts +12 -4
- package/src/internal/discovery/info.ts +1 -0
- package/src/internal/hosted-delivery-protocol.ts +4 -0
- package/src/internal/hosted-delivery.ts +15 -0
- package/src/internal/hosted-execution-diag.ts +33 -4
- package/src/internal/hosted-execution-flush.ts +4 -0
- package/src/internal/server.ts +26 -12
- package/src/internal/session-engine.ts +30 -4
- package/src/types.ts +24 -3
- package/dist/docs/assets/chunks/@localSearchIndexroot.QmjDU6Jh.js +0 -1
- package/dist/docs/assets/chunks/channel.BjpoSbz_.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.BgxOlMHw.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.BgxOlMHw.js +0 -1
- package/dist/docs/assets/chunks/clone.DRuGBKZC.js +0 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.-43J68xB.js +0 -1
- package/dist/docs/assets/chunks/wardley-RL74JXVD.WRXz-Dux.js +0 -162
- package/dist/docs/assets/guides_agent-to-agent.md.8oDTfu-E.js +0 -30
- package/dist/docs/assets/guides_agent-to-agent.md.8oDTfu-E.lean.js +0 -1
- package/dist/docs/assets/reference_agent-config.md.DGPyw7ms.js +0 -40
- package/dist/docs/assets/reference_artifacts.md.Bu_4HmsD.js +0 -19
- package/dist/docs/assets/reference_artifacts.md.Bu_4HmsD.lean.js +0 -1
- package/dist/docs/assets/reference_channels.md.nFWbzAic.js +0 -43
- package/dist/docs/assets/reference_channels.md.nFWbzAic.lean.js +0 -1
- package/dist/docs/assets/reference_evals.md.DNJzM_yf.lean.js +0 -1
- package/dist/docs/assets/reference_hooks.md.B7uzNENk.js +0 -73
- package/dist/docs/assets/reference_http-api.md.CduHavZ2.js +0 -11
- package/dist/docs/assets/reference_instructions.md.CU1My5My.js +0 -14
- package/dist/docs/assets/reference_instructions.md.CU1My5My.lean.js +0 -1
- package/dist/docs/assets/reference_playground.md.Ch2d0Iqi.js +0 -1
- package/dist/docs/assets/reference_playground.md.Ch2d0Iqi.lean.js +0 -1
- package/dist/docs/assets/reference_project-layout.md.BGhgpy9V.js +0 -19
- package/dist/docs/assets/reference_prompt.md.Ccp0R53H.js +0 -1
- package/dist/docs/assets/reference_prompt.md.Ccp0R53H.lean.js +0 -1
- package/dist/docs/assets/reference_schedules.md.B2Nm6FaD.js +0 -82
- package/dist/docs/assets/reference_schedules.md.B2Nm6FaD.lean.js +0 -1
- package/dist/docs/assets/reference_sessions.md.1_6Vyv7x.js +0 -1
- package/dist/docs/assets/reference_skills.md.DjQkRefx.js +0 -15
- package/dist/docs/assets/reference_subagents.md.BHsSMMyO.js +0 -10
- package/dist/docs/assets/troubleshooting.md.mnfFG2Em.js +0 -1
- package/dist/playground/assets/index-CK2LX3iD.css +0 -1
- /package/dist/docs/assets/{deployment.md.D2jQZuFx.lean.js → deployment.md.D2YX7u_I.lean.js} +0 -0
- /package/dist/docs/assets/{guides_cloud-agents.md.Cp1O3u-X.lean.js → guides_cloud-agents.md.BPJqTZjT.lean.js} +0 -0
- /package/dist/docs/assets/{guides_grokbot-agents.md.CMhZNdEU.lean.js → guides_grokbot-agents.md.CzV715v8.lean.js} +0 -0
- /package/dist/docs/assets/{troubleshooting.md.mnfFG2Em.lean.js → troubleshooting.md.HY95rCCz.lean.js} +0 -0
|
@@ -6,16 +6,15 @@ description: "Specialist child agents the model delegates to mid-turn, each its
|
|
|
6
6
|
# Subagents
|
|
7
7
|
|
|
8
8
|
A subagent is a specialist child agent the model can delegate to
|
|
9
|
-
mid-turn. Each one
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
`subagent.called` and `subagent.completed`.
|
|
9
|
+
mid-turn. Each one lives under `agent/subagents/<id>/` with a required
|
|
10
|
+
`agent.ts`. Add `instructions.md` or inline `instructions` in `agent.ts`
|
|
11
|
+
for a custom prompt. The parent model delegates through the `task` tool,
|
|
12
|
+
and the stream records `subagent.called` and `subagent.completed`.
|
|
14
13
|
|
|
15
14
|
```text
|
|
16
15
|
agent/subagents/researcher/
|
|
17
16
|
├── agent.ts # description (required), model (optional)
|
|
18
|
-
└── instructions.md #
|
|
17
|
+
└── instructions.md # optional custom system prompt
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
```ts
|
|
@@ -31,44 +30,35 @@ export default defineAgent({
|
|
|
31
30
|
|
|
32
31
|
## Subagent rules
|
|
33
32
|
|
|
34
|
-
`description` is required.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
different one.
|
|
33
|
+
`description` is required. The parent model uses it to decide whether
|
|
34
|
+
to delegate, so write it as a routing rule ("Background research: …"),
|
|
35
|
+
following the same discipline as a [skill](./skills.md) description.
|
|
36
|
+
`model` is optional; omit it to inherit the parent's model, or set it
|
|
37
|
+
to run the specialist on a different model.
|
|
40
38
|
|
|
41
39
|
Subagents inherit the parent's execution surface. Every per-subagent
|
|
42
40
|
capability directory is reported as a warning and ignored: `tools/`,
|
|
43
|
-
`skills/`, `mcp-connections
|
|
44
|
-
`
|
|
45
|
-
|
|
41
|
+
`skills/`, `extensions/`, `mcp-connections/`, `host-connections/`,
|
|
42
|
+
`channels/`, `schedules/`, `reminders/`, `hooks/`, `sandbox/`, and
|
|
43
|
+
nested `subagents/`.
|
|
46
44
|
|
|
47
45
|
Delegation needs both halves: the description makes it possible, and the
|
|
48
46
|
parent's [instructions](./instructions.md) make it happen. "When a
|
|
49
47
|
request needs background research, delegate to the `researcher`
|
|
50
|
-
subagent."
|
|
48
|
+
subagent." The parent routes; the specialist executes.
|
|
51
49
|
|
|
52
|
-
##
|
|
50
|
+
## Subagents and peers
|
|
53
51
|
|
|
54
52
|
Subagents split one job into roles inside a single agent. When the
|
|
55
53
|
specialist is independently useful, with its own tools, sessions, and
|
|
56
54
|
playground, make it a full agent. See
|
|
57
|
-
[
|
|
55
|
+
[Peer agents](../guides/agent-to-agent.md#peer-or-subagent).
|
|
58
56
|
|
|
59
|
-
##
|
|
60
|
-
|
|
61
|
-
Fan-out reviews: a PR-approval agent can delegate to two review
|
|
62
|
-
subagents that read a host-prepared `pr/` evidence tree and report
|
|
63
|
-
prioritized findings, which the parent embeds in its approval comment.
|
|
64
|
-
|
|
65
|
-
Keep the parent lean: a subagent with focused instructions usually
|
|
66
|
-
works better than a longer parent prompt with conditional sections. The
|
|
67
|
-
parent routes; the specialist executes.
|
|
68
|
-
|
|
69
|
-
## What's next
|
|
70
|
-
|
|
71
|
-
Continue with these pages:
|
|
57
|
+
## Related
|
|
72
58
|
|
|
73
59
|
- [Skills](./skills.md): when a procedure is enough and a child agent
|
|
74
60
|
is overkill
|
|
61
|
+
- [Peer agents](../guides/agent-to-agent.md): independently useful
|
|
62
|
+
specialists
|
|
63
|
+
- [Agent config](./agent-config.md#harness-tools): `"task"` on the
|
|
64
|
+
parent's tool allowlist
|
package/docs/reference/tools.md
CHANGED
|
@@ -8,18 +8,16 @@ description: "Define typed actions the model can call, gate the sensitive ones o
|
|
|
8
8
|
A tool is a typed action the model can call: hit an API, run a query,
|
|
9
9
|
write a file. Each file in `agent/tools/` defines one tool, and the
|
|
10
10
|
filename becomes the tool name the model sees. Tools come in two
|
|
11
|
-
execution flavors: server tools run
|
|
11
|
+
execution flavors: server tools run on the serving host, and
|
|
12
12
|
agent tools run as scripts where the agent runs. Every server tool can
|
|
13
13
|
also be called directly, with no model turn.
|
|
14
14
|
|
|
15
15
|
## Define a server tool
|
|
16
16
|
|
|
17
|
-
By default, `execute` runs
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
`--cloud-tools-url` is set; without either, the server warns at startup
|
|
22
|
-
and cloud turns omit them.
|
|
17
|
+
By default, `execute` runs on the serving host with full access to
|
|
18
|
+
`process.env` and your `agent/lib/` code. Set `--public-url` or
|
|
19
|
+
`--cloud-tools-url` to make server tools available to cloud turns;
|
|
20
|
+
without either, startup warns and cloud turns omit them.
|
|
23
21
|
|
|
24
22
|
```ts
|
|
25
23
|
// agent/tools/inspect_pr.ts
|
|
@@ -42,6 +40,10 @@ code that runs it. With a Zod `inputSchema`, the input is validated before
|
|
|
42
40
|
`execute` runs and the input type is inferred. A plain JSON Schema
|
|
43
41
|
object is forwarded as-is and the input arrives as raw JSON.
|
|
44
42
|
|
|
43
|
+
A server tool can call `decide` from
|
|
44
|
+
[`@cursor/july/extensions/jev`](../guides/jev.md) for a risk tier or a
|
|
45
|
+
finding gate without a second model turn.
|
|
46
|
+
|
|
45
47
|
For multi-line descriptions, reminder prompts, and error messages, use
|
|
46
48
|
[`prompt`](./prompt.md) so the string can sit indented with the surrounding
|
|
47
49
|
TypeScript:
|
|
@@ -174,7 +176,7 @@ check nothing.
|
|
|
174
176
|
## Define an agent tool
|
|
175
177
|
|
|
176
178
|
Set `execution: "agent"` and the tool materializes as a shell script
|
|
177
|
-
that runs where the Cursor agent runs: the local
|
|
179
|
+
that runs where the Cursor agent runs: the local session workspace or
|
|
178
180
|
the cloud VM. The script receives JSON arguments on stdin and prints its
|
|
179
181
|
result on stdout. Use this flavor when the tool must run next to the
|
|
180
182
|
checkout the agent works in; on cloud, server tools stay available too
|
|
@@ -197,23 +199,16 @@ printf '%s\\n' "$message"
|
|
|
197
199
|
```
|
|
198
200
|
|
|
199
201
|
On the local runtime, scripts land in the session workspace with a
|
|
200
|
-
catalog in `AGENTS.md`.
|
|
201
|
-
on the first prompt.
|
|
202
|
+
catalog in `AGENTS.md`.
|
|
202
203
|
|
|
203
204
|
## Tools from an MCP connection, advertised by name
|
|
204
205
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
local turn. See
|
|
212
|
-
[MCP Connections](connections.md#advertise-tools).
|
|
213
|
-
Advertised tools ride the same execution path as authored server tools,
|
|
214
|
-
and [direct tool calls](#call-a-tool-without-a-model-turn) address them
|
|
215
|
-
by the same model-facing names: the call's session identity resolves the
|
|
216
|
-
advertised listing when the authored lookup misses.
|
|
206
|
+
Set `advertiseTools: true` on a connection to expose its MCP tools by
|
|
207
|
+
name. Add per-session `auth` when credentials depend on the caller.
|
|
208
|
+
Model calls and [direct tool calls](#call-a-tool-without-a-model-turn)
|
|
209
|
+
use the same exposed names. See
|
|
210
|
+
[MCP connections](./connections.md#advertise-tools) for the full
|
|
211
|
+
contract.
|
|
217
212
|
|
|
218
213
|
## Gate a tool on human approval
|
|
219
214
|
|
|
@@ -244,8 +239,8 @@ runtime only, and parked calls don't survive a host restart.
|
|
|
244
239
|
## Call a tool without a model turn
|
|
245
240
|
|
|
246
241
|
Server tools can be called deterministically. You pick the tool and the
|
|
247
|
-
input. Validation and execution
|
|
248
|
-
|
|
242
|
+
input. Validation and execution match a model-initiated call, and no
|
|
243
|
+
Cursor API key is needed.
|
|
249
244
|
|
|
250
245
|
Over HTTP, with the same auth chain as the session API:
|
|
251
246
|
|
|
@@ -271,51 +266,43 @@ agent-sdk call inspect_pr \
|
|
|
271
266
|
Programmatically, `callTool(toolName, input, options?)` is available on
|
|
272
267
|
the serve handle, on channel route handlers and `onStart` args, and on
|
|
273
268
|
schedule `run` handlers, so a channel can mix deterministic calls with
|
|
274
|
-
model turns
|
|
275
|
-
the review prompt:
|
|
269
|
+
model turns:
|
|
276
270
|
|
|
277
271
|
```ts
|
|
278
272
|
const outcome = await handle.callTool("inspect_pr", {
|
|
279
273
|
prUrl: "https://github.com/acme/checkout/pull/42",
|
|
280
274
|
});
|
|
275
|
+
if (outcome.isError) {
|
|
276
|
+
return outcome;
|
|
277
|
+
}
|
|
281
278
|
// { toolName, callId, isError, result, durationMs }
|
|
282
279
|
```
|
|
283
280
|
|
|
284
|
-
|
|
285
|
-
when the call returns. Pass
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
`
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
whose tools resolve state from the continuation key can serve it with
|
|
310
|
-
no live session. Malformed tokens are rejected with
|
|
311
|
-
`400 invalid_continuation_token`.
|
|
312
|
-
|
|
313
|
-
The error semantics match the model path. Unknown tools are rejected
|
|
314
|
-
with the available names, agent-execution tools cannot be called on the
|
|
315
|
-
host (`400`), schema-invalid input is a `400` before the tool body runs
|
|
316
|
-
(Zod validates; plain JSON Schema passes through unvalidated), and a
|
|
317
|
-
tool body that throws reports `isError: true` in the same envelope the
|
|
318
|
-
model would see.
|
|
281
|
+
Omit both identifiers to run against an ephemeral workspace that is
|
|
282
|
+
removed when the call returns. Pass `sessionId` (HTTP body, `--session`,
|
|
283
|
+
or `options.sessionId`) or `continuationToken` (`<channelId>:<key>` as
|
|
284
|
+
`/v1/sessions` lists it) to bind the call. The two are mutually
|
|
285
|
+
exclusive.
|
|
286
|
+
|
|
287
|
+
| Rule | What happens |
|
|
288
|
+
| --- | --- |
|
|
289
|
+
| Existing `sessionId`, or a token that maps to an existing session | Session workspace, owner check, and event recording |
|
|
290
|
+
| Token with no matching session | Scratch workspace; the token's channel id and key are the call identity |
|
|
291
|
+
| Busy session, `effect: "read"` (or an advertised MCP tool marked read-only) | Runs alongside the turn, reading the workspace as the turn left it; recorded under its own `turnId` |
|
|
292
|
+
| Busy session, write or undeclared | `409 session_busy` until the turn finishes |
|
|
293
|
+
| Session workspace cannot be created, read | Scratch workspace; the outcome has `scratchWorkspace: true` |
|
|
294
|
+
| Session workspace cannot be created, write | `500 workspace_unavailable` |
|
|
295
|
+
|
|
296
|
+
| Error | When |
|
|
297
|
+
| --- | --- |
|
|
298
|
+
| `404 unknown_tool` | Name is not a callable server tool; the response lists available names |
|
|
299
|
+
| `400 tool_not_callable` | Agent-execution tools cannot run on the host |
|
|
300
|
+
| `400 invalid_tool_input` | Zod rejected the input before `execute`. Plain JSON Schema is forwarded unvalidated |
|
|
301
|
+
| `400 invalid_continuation_token` | Malformed token, or passed together with `sessionId` |
|
|
302
|
+
| `404 session_not_found` | `sessionId` does not exist |
|
|
303
|
+
| `409 session_busy` | Write-effect call while a model turn is running |
|
|
304
|
+
| `500 workspace_unavailable` | Write-effect call when the session workspace cannot be created |
|
|
305
|
+
| `isError: true` | The tool body threw; same envelope the model would see |
|
|
319
306
|
|
|
320
307
|
## Design habits
|
|
321
308
|
|
|
@@ -333,9 +320,7 @@ wrong, no instruction change fixes it.
|
|
|
333
320
|
Gate side effects with `needsApproval`. Declare each tool's `effect` so
|
|
334
321
|
dry-run sessions can execute reads and stub writes.
|
|
335
322
|
|
|
336
|
-
##
|
|
337
|
-
|
|
338
|
-
Continue with these pages:
|
|
323
|
+
## Related
|
|
339
324
|
|
|
340
325
|
- [MCP connections](./connections.md): tools that come from MCP servers
|
|
341
326
|
instead
|
package/docs/troubleshooting.md
CHANGED
|
@@ -32,7 +32,7 @@ Match the visible symptom below. If `agent-sdk` is not on `PATH`, use
|
|
|
32
32
|
| File reads and greps fail repeatedly with `NGHTTP2_FRAME_SIZE_ERROR` | Run the agent under Node 22.13 or newer, never Bun. |
|
|
33
33
|
| The turn immediately reports a missing API key | Set `CURSOR_API_KEY`, `CURSOR_API_KEY_FILE`, or `CURSOR_SERVICE_ACCOUNT_KEY`, or run `agent-sdk login`. |
|
|
34
34
|
| Login succeeds but the model host rejects the key | Point login and model traffic at the same API host; check `CURSOR_API_BASE_URL` and `CURSOR_BACKEND_URL`. |
|
|
35
|
-
| Cloud turns cannot reach local tools or skills | Give the cloud runtime a reachable `--public-url` and protected tool bridge, or move the required capability into the cloud checkout. See [agent runtime](./reference/agent-config.md#
|
|
35
|
+
| Cloud turns cannot reach local tools or skills | Give the cloud runtime a reachable `--public-url` and protected tool bridge, or move the required capability into the cloud checkout. See [agent runtime](./reference/agent-config.md#runtime). |
|
|
36
36
|
|
|
37
37
|
## A turn behaves unexpectedly
|
|
38
38
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cursor/july",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.114",
|
|
4
4
|
"description": "(early alpha) Filesystem-first framework for defining Cursor agents as markdown and TypeScript and serving them over channels with the Cursor SDK.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"repository": {
|
|
@@ -190,6 +190,13 @@
|
|
|
190
190
|
"import": "./dist/extensions/improve/extension.js",
|
|
191
191
|
"default": "./dist/extensions/improve/extension.js"
|
|
192
192
|
},
|
|
193
|
+
"./extensions/jev": {
|
|
194
|
+
"anysphere-source": "./src/extensions/jev/extension.ts",
|
|
195
|
+
"bun": "./dist/extensions/jev/extension.js",
|
|
196
|
+
"types": "./dist/extensions/jev/extension.d.ts",
|
|
197
|
+
"import": "./dist/extensions/jev/extension.js",
|
|
198
|
+
"default": "./dist/extensions/jev/extension.js"
|
|
199
|
+
},
|
|
193
200
|
"./extensions/slack-communication": {
|
|
194
201
|
"anysphere-source": "./src/extensions/slack-communication/extension.ts",
|
|
195
202
|
"bun": "./dist/extensions/slack-communication/extension.js",
|
package/src/bin/agent-serve.ts
CHANGED
|
@@ -290,9 +290,8 @@ Commands:
|
|
|
290
290
|
cancel-runs Request cancellation for active Agent SDK v2 session runs
|
|
291
291
|
and reminder clocks, and mark factory creating/active
|
|
292
292
|
sessions failed. For a multi-tenant application this
|
|
293
|
-
cancels every install, not just the caller's
|
|
294
|
-
|
|
295
|
-
cancel is stop --cancel-runs.
|
|
293
|
+
cancels every install, not just the caller's.
|
|
294
|
+
Install-local cancel is stop --cancel-runs.
|
|
296
295
|
event-repos Set the repositories a multi-tenant install receives events
|
|
297
296
|
for. A deploy cannot carry these; pass every repository you
|
|
298
297
|
want, since the list is replaced rather than merged.
|
package/src/channels/checks.ts
CHANGED
|
@@ -90,6 +90,14 @@ export interface CiCheckCreateInput {
|
|
|
90
90
|
name: string;
|
|
91
91
|
/** Commit the check attaches to (usually the PR head SHA). */
|
|
92
92
|
sha: string;
|
|
93
|
+
/**
|
|
94
|
+
* Check suite the check files under, on forges that have one. Origin
|
|
95
|
+
* renders every check as `suite / check` and groups the checks tab by
|
|
96
|
+
* suite, so name it after the posting app (GitHub groups an app's checks
|
|
97
|
+
* under the app); without it the suite mirrors the check name. GitHub,
|
|
98
|
+
* GitLab and Bitbucket have no app-named suite and ignore it.
|
|
99
|
+
*/
|
|
100
|
+
suite?: { name?: string };
|
|
93
101
|
/** Initial status. Defaults to `"in_progress"`. */
|
|
94
102
|
status?: "queued" | "in_progress";
|
|
95
103
|
/** "Details" link on the check, e.g. the agent session run URL. */
|
|
@@ -88,8 +88,10 @@ export interface OriginCheckIdentityInput {
|
|
|
88
88
|
externalId?: string;
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
+
// The identity input's `suite` also carries Origin's key and details URL, so
|
|
92
|
+
// the forge-agnostic `suite` label is replaced rather than merged.
|
|
91
93
|
export interface OriginCheckCreateInput
|
|
92
|
-
extends OriginCheckIdentityInput, CiCheckCreateInput {}
|
|
94
|
+
extends OriginCheckIdentityInput, Omit<CiCheckCreateInput, "suite"> {}
|
|
93
95
|
|
|
94
96
|
/**
|
|
95
97
|
* Origin rejects the whole upsert when `output.title` exceeds 255 characters
|
|
@@ -434,14 +434,15 @@ export async function dispatchInboundMessage(args: {
|
|
|
434
434
|
});
|
|
435
435
|
|
|
436
436
|
const handoff = args.platformHandoff?.slackPlaceholder;
|
|
437
|
-
const
|
|
438
|
-
args.placeholder !== undefined &&
|
|
437
|
+
const handoffInThread =
|
|
439
438
|
kind !== "channel_post" &&
|
|
440
439
|
handoff !== undefined &&
|
|
441
440
|
handoff.channelId === message.channelId &&
|
|
442
441
|
handoff.threadTs === message.threadTs
|
|
443
442
|
? handoff
|
|
444
443
|
: undefined;
|
|
444
|
+
const matchedHandoff =
|
|
445
|
+
args.placeholder !== undefined ? handoffInThread : undefined;
|
|
445
446
|
let adoptedPlaceholder = false;
|
|
446
447
|
let handoffRetracted = false;
|
|
447
448
|
const retractUnadoptedHandoff = async (): Promise<void> => {
|
|
@@ -674,8 +675,12 @@ export async function dispatchInboundMessage(args: {
|
|
|
674
675
|
});
|
|
675
676
|
}
|
|
676
677
|
|
|
678
|
+
// A control-plane placeholder is turn scaffolding, not thread history: the
|
|
679
|
+
// guest posts the reply over that exact ts, so hydrating it would feed the
|
|
680
|
+
// model its own "still working" line as an already-sent reply.
|
|
677
681
|
const excludeThreadTimestamps = [
|
|
678
682
|
message.ts,
|
|
683
|
+
...(handoffInThread === undefined ? [] : [handoffInThread.messageTs]),
|
|
679
684
|
...(decision.excludeThreadTimestamps ?? []),
|
|
680
685
|
];
|
|
681
686
|
const mergeMessages = [triggeringMergeMessage(message)];
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Jev decisions as an extension. Mount it and the agent can ask Jev for
|
|
3
|
+
* typed boolean, choice, and score answers, then call `decide` from your
|
|
4
|
+
* own channel hooks and tools before they start a turn or write.
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* // agent/extensions/jev.ts
|
|
8
|
+
* import jev from "@cursor/july/extensions/jev";
|
|
9
|
+
*
|
|
10
|
+
* export default jev();
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* Contributes `<namespace>__evaluate` plus the `questions` and
|
|
14
|
+
* `gated-write` skills (the namespace is the mount filename). Auth is
|
|
15
|
+
* `TYPESAFE_API_KEY`. The default model is `jev-latest`. Custom tools
|
|
16
|
+
* import `decide`, `above`, and `needsHuman` from this same module. Set
|
|
17
|
+
* `harnessTools` or `skills` to false when the agent should not see those
|
|
18
|
+
* contributions.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
import { z } from "zod";
|
|
22
|
+
import { defineExtension } from "../../extensions.js";
|
|
23
|
+
import type { Extension } from "../../types.js";
|
|
24
|
+
import { DEFAULT_EVALUATION_MODEL } from "./lib/evaluate.js";
|
|
25
|
+
|
|
26
|
+
/** Mount options; every field is optional. */
|
|
27
|
+
export interface JevOptions {
|
|
28
|
+
/** TypeSafe API key. Defaults to `TYPESAFE_API_KEY`. */
|
|
29
|
+
apiKey?: string;
|
|
30
|
+
/** TypeSafe model id. Defaults to `jev-latest`. */
|
|
31
|
+
model?: string;
|
|
32
|
+
/** Mount the namespaced `evaluate` harness tool. Defaults to true. */
|
|
33
|
+
harnessTools?: boolean;
|
|
34
|
+
/** Mount the `questions` and `gated-write` skills. Defaults to true. */
|
|
35
|
+
skills?: boolean;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/** {@link JevOptions} with defaults applied. */
|
|
39
|
+
export interface JevConfig {
|
|
40
|
+
apiKey?: string;
|
|
41
|
+
model: string;
|
|
42
|
+
harnessTools: boolean;
|
|
43
|
+
skills: boolean;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const config: z.ZodType<JevConfig, z.ZodTypeDef, JevOptions | undefined> = z
|
|
47
|
+
.object({
|
|
48
|
+
apiKey: z.string().min(1).optional(),
|
|
49
|
+
model: z.string().min(1).optional(),
|
|
50
|
+
harnessTools: z.boolean().default(true),
|
|
51
|
+
skills: z.boolean().default(true),
|
|
52
|
+
})
|
|
53
|
+
.default({})
|
|
54
|
+
.transform(options => ({
|
|
55
|
+
apiKey: options.apiKey,
|
|
56
|
+
model: options.model ?? DEFAULT_EVALUATION_MODEL,
|
|
57
|
+
harnessTools: options.harnessTools,
|
|
58
|
+
skills: options.skills,
|
|
59
|
+
}));
|
|
60
|
+
|
|
61
|
+
const jev: Extension<JevConfig, JevOptions | undefined> = defineExtension({
|
|
62
|
+
root: import.meta.dirname,
|
|
63
|
+
description: "Ask Jev for typed choice, score, and boolean answers.",
|
|
64
|
+
config,
|
|
65
|
+
contributions: options => ({
|
|
66
|
+
tools: options.harnessTools,
|
|
67
|
+
skills: options.skills,
|
|
68
|
+
}),
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
export type {
|
|
72
|
+
AnswersFor,
|
|
73
|
+
BooleanAnswer,
|
|
74
|
+
BooleanQuestion,
|
|
75
|
+
ChoiceAnswer,
|
|
76
|
+
ChoiceQuestion,
|
|
77
|
+
EvaluateArgs,
|
|
78
|
+
EvaluateResult,
|
|
79
|
+
EvaluationAnswer,
|
|
80
|
+
EvaluationQuestion,
|
|
81
|
+
EvaluationState,
|
|
82
|
+
QuestionMap,
|
|
83
|
+
ScoreAnswer,
|
|
84
|
+
ScoreQuestion,
|
|
85
|
+
} from "./lib/evaluate.js";
|
|
86
|
+
export {
|
|
87
|
+
above,
|
|
88
|
+
DEFAULT_EVALUATION_MODEL,
|
|
89
|
+
DEFAULT_HUMAN_THRESHOLD,
|
|
90
|
+
decide,
|
|
91
|
+
evaluate,
|
|
92
|
+
needsHuman,
|
|
93
|
+
} from "./lib/evaluate.js";
|
|
94
|
+
|
|
95
|
+
export default jev;
|