@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.
Files changed (305) hide show
  1. package/README.md +4 -0
  2. package/dist/bin/agent-serve.js +2 -3
  3. package/dist/channels/checks.d.ts +10 -0
  4. package/dist/channels/checks.d.ts.map +1 -1
  5. package/dist/channels/origin/checks.d.ts +1 -1
  6. package/dist/channels/origin/checks.d.ts.map +1 -1
  7. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  8. package/dist/channels/slack/dispatch.js +6 -2
  9. package/dist/docs/404.html +2 -2
  10. package/dist/docs/assets/{app.DxTdhphC.js → app.BqkJwOZ-.js} +4 -4
  11. package/dist/docs/assets/chunks/@localSearchIndexroot.BnSgidYE.js +1 -0
  12. package/dist/docs/assets/chunks/{VPLocalSearchBox.CR3KTF0X.js → VPLocalSearchBox.BJAi2KiV.js} +1 -1
  13. package/dist/docs/assets/chunks/{arc.CVVqBOdS.js → arc.BZpXTgvV.js} +1 -1
  14. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.CJHGP4ki.js → architectureDiagram-Q4EWVU46.WYI-7F-Y.js} +1 -1
  15. package/dist/docs/assets/chunks/{baseUniq.r7UVVRBP.js → baseUniq.CZaUPpg0.js} +1 -1
  16. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.DKmMaTre.js → blockDiagram-DXYQGD6D.D6UES2pD.js} +1 -1
  17. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.DDJsntUO.js → c4Diagram-AHTNJAMY.cwebIe4i.js} +1 -1
  18. package/dist/docs/assets/chunks/channel.DdM5EfNW.js +1 -0
  19. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.BK2rKt6W.js → chunk-4BX2VUAB.fVyFnjxg.js} +1 -1
  20. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.DRLV8RnF.js → chunk-4TB4RGXK.BanufG1c.js} +1 -1
  21. package/dist/docs/assets/chunks/{chunk-55IACEB6.DaKjxtb7.js → chunk-55IACEB6.VaSMz5-2.js} +1 -1
  22. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.C5sPCIT1.js → chunk-EDXVE4YY.CN2diZOM.js} +1 -1
  23. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.CSGWyNTB.js → chunk-FMBD7UC4.g4ivypu3.js} +1 -1
  24. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.D5tK9XEr.js → chunk-OYMX7WX6.GZXKn9JJ.js} +1 -1
  25. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BeZGd1UZ.js → chunk-QZHKN3VN.itXxJZCd.js} +1 -1
  26. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.U_tfWwQR.js → chunk-YZCP3GAM.-rw2GfvX.js} +1 -1
  27. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CjfGHeg2.js +1 -0
  28. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CjfGHeg2.js +1 -0
  29. package/dist/docs/assets/chunks/clone.wSOICb_f.js +1 -0
  30. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.DVeRXIb6.js → cose-bilkent-S5V4N54A.CmaI5br0.js} +1 -1
  31. package/dist/docs/assets/chunks/{dagre-KV5264BT.BpKJAeRZ.js → dagre-KV5264BT.4wY9S4Kt.js} +1 -1
  32. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.BQOtrd1Z.js → diagram-5BDNPKRD.Pc3c0u9W.js} +1 -1
  33. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.CSDAhjPI.js → diagram-G4DWMVQ6.CYrWz-nj.js} +1 -1
  34. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.Dpztst2S.js → diagram-MMDJMWI5.Bgj5hukb.js} +1 -1
  35. package/dist/docs/assets/chunks/{diagram-TYMM5635.qJHRizHR.js → diagram-TYMM5635.DGMEXalS.js} +1 -1
  36. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.vbDotH3l.js → erDiagram-SMLLAGMA.GepTV9Im.js} +1 -1
  37. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.CqS_ZQr4.js → flowDiagram-DWJPFMVM.DVKywg3j.js} +1 -1
  38. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.DTLdR4pN.js → ganttDiagram-T4ZO3ILL.C7qt9Mlo.js} +1 -1
  39. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.D04lnbnr.js → gitGraphDiagram-UUTBAWPF.U30_r82P.js} +1 -1
  40. package/dist/docs/assets/chunks/{graph.BlfqLJsM.js → graph.CyyMyAWv.js} +1 -1
  41. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.tAooImWA.js → infoDiagram-42DDH7IO.Dn9ACW3y.js} +1 -1
  42. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.ClUsVqnJ.js → ishikawaDiagram-UXIWVN3A.DlIdIGOA.js} +1 -1
  43. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.C3tUgyCg.js → journeyDiagram-VCZTEJTY.DZj4vy4E.js} +1 -1
  44. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.CtD9-QCe.js → kanban-definition-6JOO6SKY.Dl63eMUV.js} +1 -1
  45. package/dist/docs/assets/chunks/{layout.D38U-LnT.js → layout.BLHZLWPH.js} +1 -1
  46. package/dist/docs/assets/chunks/{linear.BJmssyhN.js → linear.aXKGKaNw.js} +1 -1
  47. package/dist/docs/assets/chunks/{min.DNgXoouU.js → min.zWnFcpcc.js} +1 -1
  48. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.Dcp6cxeu.js → mindmap-definition-QFDTVHPH.Qs4MQBea.js} +1 -1
  49. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.CLDw6zIs.js → pieDiagram-DEJITSTG.BmPHgsk7.js} +1 -1
  50. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.CYaeeY4c.js → quadrantDiagram-34T5L4WZ.D5MQ3gwA.js} +1 -1
  51. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.gMYuRpq2.js → requirementDiagram-MS252O5E.CkdUFrO7.js} +1 -1
  52. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.CZqyHFbc.js → sankeyDiagram-XADWPNL6.KZrljrAV.js} +1 -1
  53. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.BTsCjUDN.js → sequenceDiagram-FGHM5R23.XMoEW-Lx.js} +1 -1
  54. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.CftT9mLJ.js → stateDiagram-FHFEXIEX.BmTzePLj.js} +1 -1
  55. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.Cu5X28zZ.js +1 -0
  56. package/dist/docs/assets/chunks/{theme.B_7J9ZsV.js → theme.BfQzpxsg.js} +2 -2
  57. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.DbU3WUNw.js → timeline-definition-GMOUNBTQ.Dug0oamp.js} +1 -1
  58. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.ixsq-q2u.js → vennDiagram-DHZGUBPP.BOTHrEFu.js} +1 -1
  59. package/dist/docs/assets/chunks/wardley-RL74JXVD.DXy2i1LS.js +162 -0
  60. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.C0ewvgbp.js → wardleyDiagram-NUSXRM2D.CoXKdfi6.js} +1 -1
  61. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.nAEhF4bO.js → xychartDiagram-5P7HB3ND.DXoSCjAW.js} +1 -1
  62. package/dist/docs/assets/{deployment.md.D2jQZuFx.js → deployment.md.D2YX7u_I.js} +1 -1
  63. package/dist/docs/assets/{evals.md.BYvfZ-PO.js → evals.md.D3Y3Aixt.js} +2 -2
  64. package/dist/docs/assets/{evals.md.BYvfZ-PO.lean.js → evals.md.D3Y3Aixt.lean.js} +1 -1
  65. package/dist/docs/assets/guides_agent-to-agent.md.C6kPY8nu.js +41 -0
  66. package/dist/docs/assets/guides_agent-to-agent.md.C6kPY8nu.lean.js +1 -0
  67. package/dist/docs/assets/{guides_cloud-agents.md.Cp1O3u-X.js → guides_cloud-agents.md.BPJqTZjT.js} +1 -1
  68. package/dist/docs/assets/{guides_grokbot-agents.md.CMhZNdEU.js → guides_grokbot-agents.md.CzV715v8.js} +1 -1
  69. package/dist/docs/assets/guides_hooks.md.BT9GLwEp.js +50 -0
  70. package/dist/docs/assets/guides_hooks.md.BT9GLwEp.lean.js +1 -0
  71. package/dist/docs/assets/guides_jev.md.DeSCqMaO.js +151 -0
  72. package/dist/docs/assets/guides_jev.md.DeSCqMaO.lean.js +1 -0
  73. package/dist/docs/assets/reference_agent-config.md.BRxAlnRy.js +36 -0
  74. package/dist/docs/assets/{reference_agent-config.md.DGPyw7ms.lean.js → reference_agent-config.md.BRxAlnRy.lean.js} +1 -1
  75. package/dist/docs/assets/reference_artifacts.md.KRX0sAdt.js +18 -0
  76. package/dist/docs/assets/reference_artifacts.md.KRX0sAdt.lean.js +1 -0
  77. package/dist/docs/assets/reference_channels.md.DZr14vm7.js +23 -0
  78. package/dist/docs/assets/reference_channels.md.DZr14vm7.lean.js +1 -0
  79. package/dist/docs/assets/{reference_connections.md.CmyrlXfY.js → reference_connections.md.DJGUCxrr.js} +18 -30
  80. package/dist/docs/assets/{reference_connections.md.CmyrlXfY.lean.js → reference_connections.md.DJGUCxrr.lean.js} +1 -1
  81. package/dist/docs/assets/{reference_evals.md.DNJzM_yf.js → reference_evals.md.C6umwNC6.js} +6 -7
  82. package/dist/docs/assets/reference_evals.md.C6umwNC6.lean.js +1 -0
  83. package/dist/docs/assets/{reference_extensions.md.Ceq-qT8d.js → reference_extensions.md.DbNYu-DP.js} +3 -3
  84. package/dist/docs/assets/{reference_extensions.md.Ceq-qT8d.lean.js → reference_extensions.md.DbNYu-DP.lean.js} +1 -1
  85. package/dist/docs/assets/reference_hooks.md.BfOkhTU0.js +45 -0
  86. package/dist/docs/assets/{reference_hooks.md.B7uzNENk.lean.js → reference_hooks.md.BfOkhTU0.lean.js} +1 -1
  87. package/dist/docs/assets/reference_http-api.md.DdwtBeCj.js +11 -0
  88. package/dist/docs/assets/{reference_http-api.md.CduHavZ2.lean.js → reference_http-api.md.DdwtBeCj.lean.js} +1 -1
  89. package/dist/docs/assets/reference_instructions.md.B2mcIzT6.js +14 -0
  90. package/dist/docs/assets/reference_instructions.md.B2mcIzT6.lean.js +1 -0
  91. package/dist/docs/assets/reference_playground.md.CyrQD_n3.js +1 -0
  92. package/dist/docs/assets/reference_playground.md.CyrQD_n3.lean.js +1 -0
  93. package/dist/docs/assets/reference_project-layout.md.BEMzxAkq.js +19 -0
  94. package/dist/docs/assets/{reference_project-layout.md.BGhgpy9V.lean.js → reference_project-layout.md.BEMzxAkq.lean.js} +1 -1
  95. package/dist/docs/assets/reference_prompt.md.BFrqjHFL.js +9 -0
  96. package/dist/docs/assets/reference_prompt.md.BFrqjHFL.lean.js +1 -0
  97. package/dist/docs/assets/reference_schedules.md.BB9N3tRR.js +47 -0
  98. package/dist/docs/assets/reference_schedules.md.BB9N3tRR.lean.js +1 -0
  99. package/dist/docs/assets/reference_sessions.md.BBp-GIt-.js +1 -0
  100. package/dist/docs/assets/{reference_sessions.md.1_6Vyv7x.lean.js → reference_sessions.md.BBp-GIt-.lean.js} +1 -1
  101. package/dist/docs/assets/reference_skills.md.BVmi3UJ_.js +15 -0
  102. package/dist/docs/assets/{reference_skills.md.DjQkRefx.lean.js → reference_skills.md.BVmi3UJ_.lean.js} +1 -1
  103. package/dist/docs/assets/reference_subagents.md.DRoRy2Uj.js +10 -0
  104. package/dist/docs/assets/{reference_subagents.md.BHsSMMyO.lean.js → reference_subagents.md.DRoRy2Uj.lean.js} +1 -1
  105. package/dist/docs/assets/{reference_tools.md.BYzUTeVA.js → reference_tools.md.CgocLDX1.js} +10 -7
  106. package/dist/docs/assets/{reference_tools.md.BYzUTeVA.lean.js → reference_tools.md.CgocLDX1.lean.js} +1 -1
  107. package/dist/docs/assets/troubleshooting.md.HY95rCCz.js +1 -0
  108. package/dist/docs/building-with-agents.html +35 -35
  109. package/dist/docs/deployment.html +37 -37
  110. package/dist/docs/deployment.md +1 -1
  111. package/dist/docs/evals.html +36 -36
  112. package/dist/docs/evals.md +3 -0
  113. package/dist/docs/guides/agent-to-agent.html +65 -54
  114. package/dist/docs/guides/agent-to-agent.md +73 -69
  115. package/dist/docs/guides/bitbucket.html +35 -35
  116. package/dist/docs/guides/cloud-agents.html +36 -36
  117. package/dist/docs/guides/cloud-agents.md +1 -1
  118. package/dist/docs/guides/convert-automation.html +35 -35
  119. package/dist/docs/guides/github.html +35 -35
  120. package/dist/docs/guides/gitlab.html +35 -35
  121. package/dist/docs/guides/grokbot-agents.html +37 -37
  122. package/dist/docs/guides/grokbot-agents.md +1 -1
  123. package/dist/docs/guides/hooks.html +109 -0
  124. package/dist/docs/guides/hooks.md +111 -0
  125. package/dist/docs/guides/improve.html +36 -36
  126. package/dist/docs/guides/jev.html +210 -0
  127. package/dist/docs/guides/jev.md +291 -0
  128. package/dist/docs/guides/mcp-oauth.html +36 -36
  129. package/dist/docs/guides/opentelemetry.html +35 -35
  130. package/dist/docs/guides/slack.html +35 -35
  131. package/dist/docs/guides/webhooks.html +35 -35
  132. package/dist/docs/hashmap.json +1 -1
  133. package/dist/docs/hillclimbing.html +35 -35
  134. package/dist/docs/index.html +35 -35
  135. package/dist/docs/llms-full.txt +1338 -1282
  136. package/dist/docs/llms.txt +9 -7
  137. package/dist/docs/quickstart.html +35 -35
  138. package/dist/docs/reference/agent-config.html +42 -46
  139. package/dist/docs/reference/agent-config.md +48 -81
  140. package/dist/docs/reference/artifacts.html +39 -40
  141. package/dist/docs/reference/artifacts.md +71 -70
  142. package/dist/docs/reference/channels.html +41 -61
  143. package/dist/docs/reference/channels.md +134 -201
  144. package/dist/docs/reference/cli.html +35 -35
  145. package/dist/docs/reference/connections.html +54 -66
  146. package/dist/docs/reference/connections.md +98 -134
  147. package/dist/docs/reference/evals.html +42 -43
  148. package/dist/docs/reference/evals.md +42 -50
  149. package/dist/docs/reference/extensions.html +39 -39
  150. package/dist/docs/reference/extensions.md +10 -13
  151. package/dist/docs/reference/hooks.html +39 -67
  152. package/dist/docs/reference/hooks.md +72 -146
  153. package/dist/docs/reference/http-api.html +39 -39
  154. package/dist/docs/reference/http-api.md +137 -161
  155. package/dist/docs/reference/instructions.html +39 -39
  156. package/dist/docs/reference/instructions.md +21 -36
  157. package/dist/docs/reference/playground.html +36 -36
  158. package/dist/docs/reference/playground.md +26 -43
  159. package/dist/docs/reference/project-layout.html +38 -38
  160. package/dist/docs/reference/project-layout.md +12 -17
  161. package/dist/docs/reference/prompt.html +42 -42
  162. package/dist/docs/reference/prompt.md +18 -13
  163. package/dist/docs/reference/schedules.html +56 -91
  164. package/dist/docs/reference/schedules.md +52 -99
  165. package/dist/docs/reference/sessions.html +36 -36
  166. package/dist/docs/reference/sessions.md +36 -40
  167. package/dist/docs/reference/skills.html +38 -38
  168. package/dist/docs/reference/skills.md +15 -26
  169. package/dist/docs/reference/subagents.html +38 -38
  170. package/dist/docs/reference/subagents.md +21 -31
  171. package/dist/docs/reference/tools.html +45 -42
  172. package/dist/docs/reference/tools.md +49 -64
  173. package/dist/docs/templates/agentic-owners.html +35 -35
  174. package/dist/docs/templates/pr-autofixer.html +35 -35
  175. package/dist/docs/templates/security-reviewer.html +35 -35
  176. package/dist/docs/templates/thermo-quality-review.html +35 -35
  177. package/dist/docs/templates/thermo-review.html +35 -35
  178. package/dist/docs/templates/triage.html +35 -35
  179. package/dist/docs/troubleshooting.html +36 -36
  180. package/dist/docs/troubleshooting.md +1 -1
  181. package/dist/extensions/jev/extension.d.ts +43 -0
  182. package/dist/extensions/jev/extension.d.ts.map +1 -0
  183. package/dist/extensions/jev/extension.js +47 -0
  184. package/dist/extensions/jev/lib/evaluate.d.ts +101 -0
  185. package/dist/extensions/jev/lib/evaluate.d.ts.map +1 -0
  186. package/dist/extensions/jev/lib/evaluate.js +167 -0
  187. package/dist/extensions/jev/skills/gated-write.md +25 -0
  188. package/dist/extensions/jev/skills/questions.md +33 -0
  189. package/dist/extensions/jev/tools/evaluate.d.ts +4 -0
  190. package/dist/extensions/jev/tools/evaluate.d.ts.map +1 -0
  191. package/dist/extensions/jev/tools/evaluate.js +88 -0
  192. package/dist/extensions.d.ts +1 -1
  193. package/dist/extensions.d.ts.map +1 -1
  194. package/dist/extensions.js +2 -0
  195. package/dist/internal/advertise-tools.d.ts.map +1 -1
  196. package/dist/internal/advertise-tools.js +6 -0
  197. package/dist/internal/discovery/connections.d.ts.map +1 -1
  198. package/dist/internal/discovery/connections.js +18 -0
  199. package/dist/internal/discovery/extensions.d.ts.map +1 -1
  200. package/dist/internal/discovery/extensions.js +8 -4
  201. package/dist/internal/discovery/info.d.ts.map +1 -1
  202. package/dist/internal/discovery/info.js +1 -0
  203. package/dist/internal/hosted-delivery-protocol.d.ts +3 -0
  204. package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
  205. package/dist/internal/hosted-delivery-protocol.js +1 -0
  206. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  207. package/dist/internal/hosted-delivery.js +15 -25
  208. package/dist/internal/hosted-execution-diag.d.ts +12 -4
  209. package/dist/internal/hosted-execution-diag.d.ts.map +1 -1
  210. package/dist/internal/hosted-execution-diag.js +26 -4
  211. package/dist/internal/hosted-execution-flush.d.ts +1 -0
  212. package/dist/internal/hosted-execution-flush.d.ts.map +1 -1
  213. package/dist/internal/hosted-execution-flush.js +4 -2
  214. package/dist/internal/server.d.ts.map +1 -1
  215. package/dist/internal/server.js +17 -9
  216. package/dist/internal/session-engine.d.ts +4 -1
  217. package/dist/internal/session-engine.d.ts.map +1 -1
  218. package/dist/internal/session-engine.js +28 -4
  219. package/dist/playground/assets/index-C61EWMBK.css +1 -0
  220. package/dist/playground/assets/{index-B1c1LeIf.js → index-CrMWlgUU.js} +43 -43
  221. package/dist/playground/index.html +2 -2
  222. package/dist/types.d.ts +23 -3
  223. package/dist/types.d.ts.map +1 -1
  224. package/docs/deployment.md +1 -1
  225. package/docs/evals.md +3 -0
  226. package/docs/guides/agent-to-agent.md +74 -70
  227. package/docs/guides/cloud-agents.md +1 -1
  228. package/docs/guides/grokbot-agents.md +1 -1
  229. package/docs/guides/hooks.md +116 -0
  230. package/docs/guides/jev.md +296 -0
  231. package/docs/reference/agent-config.md +48 -81
  232. package/docs/reference/artifacts.md +72 -71
  233. package/docs/reference/channels.md +135 -202
  234. package/docs/reference/connections.md +99 -135
  235. package/docs/reference/evals.md +43 -51
  236. package/docs/reference/extensions.md +10 -13
  237. package/docs/reference/hooks.md +72 -146
  238. package/docs/reference/http-api.md +137 -161
  239. package/docs/reference/instructions.md +22 -37
  240. package/docs/reference/playground.md +26 -43
  241. package/docs/reference/project-layout.md +12 -17
  242. package/docs/reference/prompt.md +20 -15
  243. package/docs/reference/schedules.md +52 -99
  244. package/docs/reference/sessions.md +36 -40
  245. package/docs/reference/skills.md +15 -26
  246. package/docs/reference/subagents.md +21 -31
  247. package/docs/reference/tools.md +49 -64
  248. package/docs/troubleshooting.md +1 -1
  249. package/package.json +8 -1
  250. package/src/bin/agent-serve.ts +2 -3
  251. package/src/channels/checks.ts +8 -0
  252. package/src/channels/origin/checks.ts +3 -1
  253. package/src/channels/slack/dispatch.ts +7 -2
  254. package/src/extensions/jev/extension.ts +95 -0
  255. package/src/extensions/jev/lib/evaluate.ts +289 -0
  256. package/src/extensions/jev/skills/gated-write.md +25 -0
  257. package/src/extensions/jev/skills/questions.md +33 -0
  258. package/src/extensions/jev/tools/evaluate.ts +90 -0
  259. package/src/extensions.ts +2 -0
  260. package/src/internal/advertise-tools.ts +6 -0
  261. package/src/internal/discovery/connections.ts +21 -0
  262. package/src/internal/discovery/extensions.ts +12 -4
  263. package/src/internal/discovery/info.ts +1 -0
  264. package/src/internal/hosted-delivery-protocol.ts +4 -0
  265. package/src/internal/hosted-delivery.ts +15 -0
  266. package/src/internal/hosted-execution-diag.ts +33 -4
  267. package/src/internal/hosted-execution-flush.ts +4 -0
  268. package/src/internal/server.ts +26 -12
  269. package/src/internal/session-engine.ts +30 -4
  270. package/src/types.ts +24 -3
  271. package/dist/docs/assets/chunks/@localSearchIndexroot.QmjDU6Jh.js +0 -1
  272. package/dist/docs/assets/chunks/channel.BjpoSbz_.js +0 -1
  273. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.BgxOlMHw.js +0 -1
  274. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.BgxOlMHw.js +0 -1
  275. package/dist/docs/assets/chunks/clone.DRuGBKZC.js +0 -1
  276. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.-43J68xB.js +0 -1
  277. package/dist/docs/assets/chunks/wardley-RL74JXVD.WRXz-Dux.js +0 -162
  278. package/dist/docs/assets/guides_agent-to-agent.md.8oDTfu-E.js +0 -30
  279. package/dist/docs/assets/guides_agent-to-agent.md.8oDTfu-E.lean.js +0 -1
  280. package/dist/docs/assets/reference_agent-config.md.DGPyw7ms.js +0 -40
  281. package/dist/docs/assets/reference_artifacts.md.Bu_4HmsD.js +0 -19
  282. package/dist/docs/assets/reference_artifacts.md.Bu_4HmsD.lean.js +0 -1
  283. package/dist/docs/assets/reference_channels.md.nFWbzAic.js +0 -43
  284. package/dist/docs/assets/reference_channels.md.nFWbzAic.lean.js +0 -1
  285. package/dist/docs/assets/reference_evals.md.DNJzM_yf.lean.js +0 -1
  286. package/dist/docs/assets/reference_hooks.md.B7uzNENk.js +0 -73
  287. package/dist/docs/assets/reference_http-api.md.CduHavZ2.js +0 -11
  288. package/dist/docs/assets/reference_instructions.md.CU1My5My.js +0 -14
  289. package/dist/docs/assets/reference_instructions.md.CU1My5My.lean.js +0 -1
  290. package/dist/docs/assets/reference_playground.md.Ch2d0Iqi.js +0 -1
  291. package/dist/docs/assets/reference_playground.md.Ch2d0Iqi.lean.js +0 -1
  292. package/dist/docs/assets/reference_project-layout.md.BGhgpy9V.js +0 -19
  293. package/dist/docs/assets/reference_prompt.md.Ccp0R53H.js +0 -1
  294. package/dist/docs/assets/reference_prompt.md.Ccp0R53H.lean.js +0 -1
  295. package/dist/docs/assets/reference_schedules.md.B2Nm6FaD.js +0 -82
  296. package/dist/docs/assets/reference_schedules.md.B2Nm6FaD.lean.js +0 -1
  297. package/dist/docs/assets/reference_sessions.md.1_6Vyv7x.js +0 -1
  298. package/dist/docs/assets/reference_skills.md.DjQkRefx.js +0 -15
  299. package/dist/docs/assets/reference_subagents.md.BHsSMMyO.js +0 -10
  300. package/dist/docs/assets/troubleshooting.md.mnfFG2Em.js +0 -1
  301. package/dist/playground/assets/index-CK2LX3iD.css +0 -1
  302. /package/dist/docs/assets/{deployment.md.D2jQZuFx.lean.js → deployment.md.D2YX7u_I.lean.js} +0 -0
  303. /package/dist/docs/assets/{guides_cloud-agents.md.Cp1O3u-X.lean.js → guides_cloud-agents.md.BPJqTZjT.lean.js} +0 -0
  304. /package/dist/docs/assets/{guides_grokbot-agents.md.CMhZNdEU.lean.js → guides_grokbot-agents.md.CzV715v8.lean.js} +0 -0
  305. /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 is its own directory under `agent/subagents/<id>/`,
10
- with the same `agent.ts` + `instructions.md` shape as the root. On the
11
- Cursor harness, subagents run as SDK custom subagents: the parent model
12
- delegates through the harness `task` tool, and the stream records
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 # the subagent's own system prompt
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. It's the only thing the parent model reads
35
- when deciding whether to delegate, so write it as a routing rule
36
- ("Background research: …"), the same discipline as a
37
- [skill](./skills.md) description. `model` is optional; omit it to
38
- inherit the parent's model, or set it to run the specialist on a
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/` (and the legacy `connections/` alias),
44
- `host-connections/`, `channels/`, `schedules/`, `hooks/`, `sandbox/`,
45
- and nested `subagents/`.
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
- ## Subagent or peer?
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
- [Agent-to-agent](../guides/agent-to-agent.md#peer-or-subagent).
55
+ [Peer agents](../guides/agent-to-agent.md#peer-or-subagent).
58
56
 
59
- ## Patterns
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
@@ -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 in-process on the serve host, and
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 in-process on the serving host with full
18
- access to `process.env` and your `agent/lib/` code. Local turns call
19
- server tools as SDK custom tools. Cloud turns reach them over
20
- authenticated HTTP MCP back to the serve host when `--public-url` or
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 harness workspace or
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`. On cloud, the catalog and script bodies travel
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
- Authored `agent/tools/` files are one catalog for every session. When
206
- the tools should come from an MCP server, including per-tenant toolsets
207
- resolved at runtime, declare the connection with
208
- `advertiseTools: true` (plus per-session `auth` when the credential
209
- depends on who the session is for) and the engine synthesizes named 1:1
210
- passthrough server tools from the connection's live `listTools` on every
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 behave exactly as they would for a
248
- model-initiated call, and no Cursor API key is needed.
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, fetching PR metadata deterministically and then `send()`ing
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
- By default the call runs against an ephemeral workspace and is removed
285
- when the call returns. Pass a `sessionId` (a body field over
286
- HTTP, `--session` on the CLI, `options.sessionId` programmatically) to
287
- run inside an existing session instead: the tool sees that session's
288
- workspace, and the call is recorded on the session's event stream.
289
- While a model turn is running, a session-bound call is admitted by its
290
- effect: a read-effect call (a declared `effect: "read"`, or an advertised
291
- MCP tool whose server annotates it read-only) runs alongside the turn,
292
- reading the workspace as the turn has left it, and is recorded under its
293
- own per-call `turnId` so trajectories keep it apart from the turn's own
294
- calls; a write-effect call including an undeclared tool, which counts
295
- as a write returns `409 session_busy` until the turn finishes, because
296
- a running turn owns the workspace. When the
297
- session's harness cwd cannot be materialized, a read-effect call runs
298
- in a scratch workspace instead and the outcome carries
299
- `scratchWorkspace: true`; a write-effect call fails with
300
- `workspace_unavailable`.
301
-
302
- A session can also be addressed by its continuation token: an optional
303
- `continuationToken` (`<channelId>:<key>`, as `/v1/sessions` lists it;
304
- mutually exclusive with `sessionId`). A token that maps to a live
305
- session behaves exactly like passing that session's id — same ownership
306
- check, same busy semantics, same event recording. A token with no
307
- session behind it runs the call scratch-bound with the token's channel
308
- id and continuation key as the call's session identity, so a deployment
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
- ## What's next
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
@@ -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#choose-a-runtime). |
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.112",
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",
@@ -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, and requires
294
- a team admin (service accounts cannot). Install-local
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.
@@ -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 matchedHandoff =
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;