pi-cursor-sdk 0.4.0 → 0.5.2

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 (799) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/README.md +169 -37
  3. package/dist/context-window-cache.js +0 -6
  4. package/dist/context.js +61 -34
  5. package/dist/cursor-api-key.js +34 -19
  6. package/dist/cursor-cloud-lifecycle.js +122 -98
  7. package/dist/cursor-cloud-options.js +1 -0
  8. package/dist/cursor-config.js +59 -0
  9. package/dist/cursor-custom-store-path.js +177 -0
  10. package/dist/cursor-custom-subagent-definitions.js +14 -0
  11. package/dist/cursor-durable-fs.js +97 -3
  12. package/dist/cursor-fallback-models.generated.js +288 -1
  13. package/dist/cursor-fallback-warning.js +10 -4
  14. package/dist/cursor-http1.js +8 -8
  15. package/dist/cursor-live-run-coordinator.js +31 -15
  16. package/dist/cursor-mcp-timeout-override.js +3 -1
  17. package/dist/cursor-native-replay-routing.js +1 -1
  18. package/dist/cursor-native-tool-display-registration.js +46 -22
  19. package/dist/cursor-native-tool-display-state.js +57 -22
  20. package/dist/cursor-native-tool-display-tools.js +5 -6
  21. package/dist/cursor-pi-tool-bridge-constants.js +23 -2
  22. package/dist/cursor-pi-tool-bridge-run.js +28 -3
  23. package/dist/cursor-pi-tool-bridge-server.js +1 -1
  24. package/dist/cursor-pi-tool-bridge-snapshot.js +1 -1
  25. package/dist/cursor-pi-tool-bridge.js +31 -9
  26. package/dist/cursor-provider-binding.js +118 -0
  27. package/dist/cursor-provider-errors.js +61 -33
  28. package/dist/cursor-provider-lazy.js +23 -11
  29. package/dist/cursor-provider-live-run-drain.js +25 -16
  30. package/dist/cursor-provider-run-finalizer.js +21 -9
  31. package/dist/cursor-provider-turn-coordinator.js +1 -0
  32. package/dist/cursor-provider-turn-display-router.js +4 -0
  33. package/dist/cursor-provider-turn-emit.js +1 -0
  34. package/dist/cursor-provider-turn-finalize.js +29 -20
  35. package/dist/cursor-provider-turn-prepare.js +49 -20
  36. package/dist/cursor-provider-turn-runner.js +37 -11
  37. package/dist/cursor-provider-turn-send.js +22 -9
  38. package/dist/cursor-provider-turn-summary.js +89 -0
  39. package/dist/cursor-provider-turn-tool-ledger.js +13 -7
  40. package/dist/cursor-provider.js +10 -3
  41. package/dist/cursor-question-tool.js +5 -5
  42. package/dist/cursor-request-provenance.js +53 -0
  43. package/dist/cursor-ripgrep-path.js +14 -3
  44. package/dist/cursor-runtime-state.js +50 -43
  45. package/dist/cursor-sdk-billed-usage.js +54 -75
  46. package/dist/cursor-sdk-event-debug-session.js +5 -6
  47. package/dist/cursor-sdk-event-debug.js +9 -6
  48. package/dist/cursor-sdk-output-filter.js +1 -1
  49. package/dist/cursor-sdk-process-error-guard.js +9 -10
  50. package/dist/cursor-sdk-runtime.js +13 -1
  51. package/dist/cursor-sdk-vendor-env.js +20 -0
  52. package/dist/cursor-session-agent-cleanup.js +31 -28
  53. package/dist/cursor-session-agent-lifecycle.js +18 -9
  54. package/dist/cursor-session-agent-lineage.js +28 -12
  55. package/dist/cursor-session-agent-resume.js +51 -35
  56. package/dist/cursor-session-agent.js +47 -25
  57. package/dist/cursor-session-compaction-prep.js +2 -7
  58. package/dist/cursor-session-scope.js +71 -39
  59. package/dist/cursor-session-send-policy.js +2 -2
  60. package/dist/cursor-session-settings.js +61 -0
  61. package/dist/cursor-session-store.js +235 -45
  62. package/dist/cursor-skill-tool.js +32 -49
  63. package/dist/cursor-state.js +78 -65
  64. package/dist/cursor-tool-manifest.js +1 -1
  65. package/dist/cursor-usage-accounting.js +13 -70
  66. package/dist/cursor-usage-command.js +89 -0
  67. package/dist/cursor-usage-ledger.js +512 -0
  68. package/dist/index.js +29 -35
  69. package/dist/model-discovery.js +62 -37
  70. package/dist/model-list-cache.js +12 -1
  71. package/docs/cursor-dogfood-checklist.md +3 -3
  72. package/docs/cursor-live-smoke-checklist.md +15 -15
  73. package/docs/cursor-model-ux-spec.md +124 -39
  74. package/docs/cursor-native-tool-replay.md +18 -8
  75. package/docs/cursor-native-tool-visual-audit.md +8 -8
  76. package/docs/cursor-testing-lessons.md +87 -25
  77. package/docs/cursor-tool-surfaces.md +4 -4
  78. package/docs/platform-smoke-implementation.md +10 -6
  79. package/docs/platform-smoke.md +35 -46
  80. package/node_modules/@hono/node-server/README.md +21 -10
  81. package/node_modules/@hono/node-server/dist/early-hints.cjs +1 -1
  82. package/node_modules/@hono/node-server/dist/early-hints.mjs +1 -1
  83. package/node_modules/@hono/node-server/dist/index.cjs +41 -19
  84. package/node_modules/@hono/node-server/dist/index.mjs +42 -20
  85. package/node_modules/@hono/node-server/dist/serve-static.cjs +1 -0
  86. package/node_modules/@hono/node-server/dist/serve-static.d.cts +2 -1
  87. package/node_modules/@hono/node-server/dist/serve-static.d.mts +2 -1
  88. package/node_modules/@hono/node-server/dist/serve-static.mjs +1 -0
  89. package/node_modules/@hono/node-server/package.json +3 -2
  90. package/node_modules/@modelcontextprotocol/core/dist/{auth--n_Yzytt.d.cts → auth-Anm-lwWi.d.mts} +9 -8
  91. package/node_modules/@modelcontextprotocol/core/dist/{auth-YUQV3RRv.d.mts.map → auth-Anm-lwWi.d.mts.map} +1 -1
  92. package/node_modules/@modelcontextprotocol/core/dist/{auth-CGP0BDVq.mjs → auth-BNDyLTqp.mjs} +5 -3
  93. package/node_modules/@modelcontextprotocol/core/dist/{auth-CGP0BDVq.mjs.map → auth-BNDyLTqp.mjs.map} +1 -1
  94. package/node_modules/@modelcontextprotocol/core/dist/{auth-4-zilcqg.cjs → auth-D1CeV_Jr.cjs} +5 -3
  95. package/node_modules/@modelcontextprotocol/core/dist/{auth-4-zilcqg.cjs.map → auth-D1CeV_Jr.cjs.map} +1 -1
  96. package/node_modules/@modelcontextprotocol/core/dist/{auth-YUQV3RRv.d.mts → auth-V9XJSCfa.d.cts} +9 -8
  97. package/node_modules/@modelcontextprotocol/core/dist/{auth--n_Yzytt.d.cts.map → auth-V9XJSCfa.d.cts.map} +1 -1
  98. package/node_modules/@modelcontextprotocol/core/dist/index.cjs +1 -1
  99. package/node_modules/@modelcontextprotocol/core/dist/index.d.cts +1 -1
  100. package/node_modules/@modelcontextprotocol/core/dist/index.d.mts +1 -1
  101. package/node_modules/@modelcontextprotocol/core/dist/index.mjs +1 -1
  102. package/node_modules/@modelcontextprotocol/core/dist/internal.cjs +1 -1
  103. package/node_modules/@modelcontextprotocol/core/dist/internal.d.cts +1 -1
  104. package/node_modules/@modelcontextprotocol/core/dist/internal.d.mts +1 -1
  105. package/node_modules/@modelcontextprotocol/core/dist/internal.mjs +1 -1
  106. package/node_modules/@modelcontextprotocol/core/package.json +2 -2
  107. package/node_modules/@modelcontextprotocol/hono/README.md +7 -5
  108. package/node_modules/@modelcontextprotocol/hono/dist/index.cjs.map +1 -1
  109. package/node_modules/@modelcontextprotocol/hono/dist/index.d.cts +5 -0
  110. package/node_modules/@modelcontextprotocol/hono/dist/index.d.cts.map +1 -1
  111. package/node_modules/@modelcontextprotocol/hono/dist/index.d.mts +5 -0
  112. package/node_modules/@modelcontextprotocol/hono/dist/index.d.mts.map +1 -1
  113. package/node_modules/@modelcontextprotocol/hono/dist/index.mjs.map +1 -1
  114. package/node_modules/@modelcontextprotocol/hono/package.json +4 -4
  115. package/node_modules/@modelcontextprotocol/server/README.md +1 -7
  116. package/node_modules/@modelcontextprotocol/server/dist/{createMcpHandler-Bt6U_Fqb.d.mts → createMcpHandler-D4NN8WsG.d.mts} +35 -13
  117. package/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-D4NN8WsG.d.mts.map +1 -0
  118. package/node_modules/@modelcontextprotocol/server/dist/{createMcpHandler-BLVe3qmU.d.cts → createMcpHandler-DZmmlN8e.d.cts} +35 -13
  119. package/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-DZmmlN8e.d.cts.map +1 -0
  120. package/node_modules/@modelcontextprotocol/server/dist/index.cjs +32 -5
  121. package/node_modules/@modelcontextprotocol/server/dist/index.cjs.map +1 -1
  122. package/node_modules/@modelcontextprotocol/server/dist/index.d.cts +41 -5
  123. package/node_modules/@modelcontextprotocol/server/dist/index.d.cts.map +1 -1
  124. package/node_modules/@modelcontextprotocol/server/dist/index.d.mts +41 -5
  125. package/node_modules/@modelcontextprotocol/server/dist/index.d.mts.map +1 -1
  126. package/node_modules/@modelcontextprotocol/server/dist/index.mjs +32 -5
  127. package/node_modules/@modelcontextprotocol/server/dist/index.mjs.map +1 -1
  128. package/node_modules/@modelcontextprotocol/server/dist/{mcp-DUcCQSTW.cjs → mcp-BumlNux0.cjs} +73 -23
  129. package/node_modules/@modelcontextprotocol/server/dist/mcp-BumlNux0.cjs.map +1 -0
  130. package/node_modules/@modelcontextprotocol/server/dist/{mcp-Dw2OlZ1f.mjs → mcp-DIH4cS6P.mjs} +73 -23
  131. package/node_modules/@modelcontextprotocol/server/dist/mcp-DIH4cS6P.mjs.map +1 -0
  132. package/node_modules/@modelcontextprotocol/server/dist/shimsWorkerd.cjs +1 -1
  133. package/node_modules/@modelcontextprotocol/server/dist/shimsWorkerd.mjs +1 -1
  134. package/node_modules/@modelcontextprotocol/server/dist/{src-CgFsfg3E.cjs → src-BhnGYybN.cjs} +29 -11
  135. package/node_modules/@modelcontextprotocol/server/dist/src-BhnGYybN.cjs.map +1 -0
  136. package/node_modules/@modelcontextprotocol/server/dist/{src-D-y6h4N7.mjs → src-Cqbh3MYc.mjs} +29 -11
  137. package/node_modules/@modelcontextprotocol/server/dist/src-Cqbh3MYc.mjs.map +1 -0
  138. package/node_modules/@modelcontextprotocol/server/dist/stdio.cjs +2 -2
  139. package/node_modules/@modelcontextprotocol/server/dist/stdio.d.cts +1 -1
  140. package/node_modules/@modelcontextprotocol/server/dist/stdio.d.mts +1 -1
  141. package/node_modules/@modelcontextprotocol/server/dist/stdio.mjs +2 -2
  142. package/node_modules/@modelcontextprotocol/server/package.json +4 -4
  143. package/node_modules/hono/dist/_virtual/_rolldown/runtime.js +13 -0
  144. package/node_modules/hono/dist/adapter/aws-lambda/conninfo.js +42 -23
  145. package/node_modules/hono/dist/adapter/aws-lambda/handler.js +318 -344
  146. package/node_modules/hono/dist/adapter/aws-lambda/index.js +2 -8
  147. package/node_modules/hono/dist/adapter/aws-lambda/types.js +1 -0
  148. package/node_modules/hono/dist/adapter/bun/conninfo.js +20 -25
  149. package/node_modules/hono/dist/adapter/bun/index.js +3 -13
  150. package/node_modules/hono/dist/adapter/bun/serve-static.js +27 -27
  151. package/node_modules/hono/dist/adapter/bun/server.js +11 -5
  152. package/node_modules/hono/dist/adapter/bun/ssg.js +25 -15
  153. package/node_modules/hono/dist/adapter/bun/websocket.js +61 -68
  154. package/node_modules/hono/dist/adapter/cloudflare-pages/conninfo.js +24 -9
  155. package/node_modules/hono/dist/adapter/cloudflare-pages/handler.js +59 -62
  156. package/node_modules/hono/dist/adapter/cloudflare-pages/index.js +2 -8
  157. package/node_modules/hono/dist/adapter/cloudflare-workers/conninfo.js +7 -9
  158. package/node_modules/hono/dist/adapter/cloudflare-workers/index.js +3 -8
  159. package/node_modules/hono/dist/adapter/cloudflare-workers/serve-static-module.js +5 -6
  160. package/node_modules/hono/dist/adapter/cloudflare-workers/serve-static.js +26 -20
  161. package/node_modules/hono/dist/adapter/cloudflare-workers/utils.js +21 -34
  162. package/node_modules/hono/dist/adapter/cloudflare-workers/websocket.js +31 -39
  163. package/node_modules/hono/dist/adapter/deno/conninfo.js +16 -13
  164. package/node_modules/hono/dist/adapter/deno/deno.d.js +1 -0
  165. package/node_modules/hono/dist/adapter/deno/index.js +3 -10
  166. package/node_modules/hono/dist/adapter/deno/serve-static.js +33 -38
  167. package/node_modules/hono/dist/adapter/deno/ssg.js +27 -16
  168. package/node_modules/hono/dist/adapter/deno/websocket.js +30 -30
  169. package/node_modules/hono/dist/adapter/lambda-edge/conninfo.js +7 -9
  170. package/node_modules/hono/dist/adapter/lambda-edge/handler.js +102 -101
  171. package/node_modules/hono/dist/adapter/lambda-edge/index.js +2 -6
  172. package/node_modules/hono/dist/adapter/netlify/conninfo.js +24 -9
  173. package/node_modules/hono/dist/adapter/netlify/handler.js +10 -8
  174. package/node_modules/hono/dist/adapter/netlify/index.js +3 -2
  175. package/node_modules/hono/dist/adapter/netlify/mod.js +2 -6
  176. package/node_modules/hono/dist/adapter/service-worker/handler.js +15 -19
  177. package/node_modules/hono/dist/adapter/service-worker/index.js +23 -7
  178. package/node_modules/hono/dist/adapter/service-worker/types.js +1 -0
  179. package/node_modules/hono/dist/adapter/vercel/conninfo.js +7 -10
  180. package/node_modules/hono/dist/adapter/vercel/handler.js +8 -6
  181. package/node_modules/hono/dist/adapter/vercel/index.js +2 -6
  182. package/node_modules/hono/dist/cjs/_virtual/_rolldown/runtime.js +33 -0
  183. package/node_modules/hono/dist/cjs/adapter/aws-lambda/conninfo.js +42 -44
  184. package/node_modules/hono/dist/cjs/adapter/aws-lambda/handler.js +326 -373
  185. package/node_modules/hono/dist/cjs/adapter/aws-lambda/index.js +7 -34
  186. package/node_modules/hono/dist/cjs/adapter/aws-lambda/types.js +0 -15
  187. package/node_modules/hono/dist/cjs/adapter/bun/conninfo.js +21 -47
  188. package/node_modules/hono/dist/cjs/adapter/bun/index.js +14 -45
  189. package/node_modules/hono/dist/cjs/adapter/bun/serve-static.js +29 -50
  190. package/node_modules/hono/dist/cjs/adapter/bun/server.js +11 -26
  191. package/node_modules/hono/dist/cjs/adapter/bun/ssg.js +24 -35
  192. package/node_modules/hono/dist/cjs/adapter/bun/websocket.js +63 -91
  193. package/node_modules/hono/dist/cjs/adapter/cloudflare-pages/conninfo.js +25 -31
  194. package/node_modules/hono/dist/cjs/adapter/cloudflare-pages/handler.js +61 -85
  195. package/node_modules/hono/dist/cjs/adapter/cloudflare-pages/index.js +7 -34
  196. package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/conninfo.js +8 -31
  197. package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/index.js +7 -33
  198. package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/serve-static-module.js +7 -29
  199. package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/serve-static.js +27 -42
  200. package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/utils.js +21 -55
  201. package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/websocket.js +33 -62
  202. package/node_modules/hono/dist/cjs/adapter/deno/conninfo.js +16 -34
  203. package/node_modules/hono/dist/cjs/adapter/deno/index.js +10 -38
  204. package/node_modules/hono/dist/cjs/adapter/deno/serve-static.js +33 -59
  205. package/node_modules/hono/dist/cjs/adapter/deno/ssg.js +27 -37
  206. package/node_modules/hono/dist/cjs/adapter/deno/websocket.js +32 -53
  207. package/node_modules/hono/dist/cjs/adapter/lambda-edge/conninfo.js +8 -31
  208. package/node_modules/hono/dist/cjs/adapter/lambda-edge/handler.js +102 -130
  209. package/node_modules/hono/dist/cjs/adapter/lambda-edge/index.js +5 -30
  210. package/node_modules/hono/dist/cjs/adapter/netlify/conninfo.js +25 -31
  211. package/node_modules/hono/dist/cjs/adapter/netlify/handler.js +10 -29
  212. package/node_modules/hono/dist/cjs/adapter/netlify/index.js +5 -21
  213. package/node_modules/hono/dist/cjs/adapter/netlify/mod.js +5 -30
  214. package/node_modules/hono/dist/cjs/adapter/service-worker/handler.js +16 -41
  215. package/node_modules/hono/dist/cjs/adapter/service-worker/index.js +25 -30
  216. package/node_modules/hono/dist/cjs/adapter/service-worker/types.js +0 -15
  217. package/node_modules/hono/dist/cjs/adapter/vercel/conninfo.js +8 -32
  218. package/node_modules/hono/dist/cjs/adapter/vercel/handler.js +8 -27
  219. package/node_modules/hono/dist/cjs/adapter/vercel/index.js +5 -30
  220. package/node_modules/hono/dist/cjs/client/client.js +139 -212
  221. package/node_modules/hono/dist/cjs/client/fetch-result-please.js +62 -80
  222. package/node_modules/hono/dist/cjs/client/index.js +7 -32
  223. package/node_modules/hono/dist/cjs/client/types.js +0 -15
  224. package/node_modules/hono/dist/cjs/client/utils.js +54 -92
  225. package/node_modules/hono/dist/cjs/compose.js +49 -66
  226. package/node_modules/hono/dist/cjs/context.js +379 -450
  227. package/node_modules/hono/dist/cjs/helper/accepts/accepts.js +47 -72
  228. package/node_modules/hono/dist/cjs/helper/accepts/index.js +3 -27
  229. package/node_modules/hono/dist/cjs/helper/adapter/index.js +33 -73
  230. package/node_modules/hono/dist/cjs/helper/conninfo/index.js +0 -15
  231. package/node_modules/hono/dist/cjs/helper/conninfo/types.js +0 -15
  232. package/node_modules/hono/dist/cjs/helper/cookie/index.js +75 -116
  233. package/node_modules/hono/dist/cjs/helper/css/common.js +165 -244
  234. package/node_modules/hono/dist/cjs/helper/css/index.js +136 -151
  235. package/node_modules/hono/dist/cjs/helper/dev/index.js +45 -71
  236. package/node_modules/hono/dist/cjs/helper/factory/index.js +30 -51
  237. package/node_modules/hono/dist/cjs/helper/html/index.js +32 -62
  238. package/node_modules/hono/dist/cjs/helper/proxy/index.js +113 -106
  239. package/node_modules/hono/dist/cjs/helper/route/index.js +123 -66
  240. package/node_modules/hono/dist/cjs/helper/ssg/index.js +19 -43
  241. package/node_modules/hono/dist/cjs/helper/ssg/middleware.js +56 -64
  242. package/node_modules/hono/dist/cjs/helper/ssg/plugins.js +55 -57
  243. package/node_modules/hono/dist/cjs/helper/ssg/ssg.js +196 -296
  244. package/node_modules/hono/dist/cjs/helper/ssg/utils.js +47 -90
  245. package/node_modules/hono/dist/cjs/helper/streaming/index.js +8 -35
  246. package/node_modules/hono/dist/cjs/helper/streaming/sse.js +53 -85
  247. package/node_modules/hono/dist/cjs/helper/streaming/stream.js +23 -53
  248. package/node_modules/hono/dist/cjs/helper/streaming/text.js +10 -32
  249. package/node_modules/hono/dist/cjs/helper/streaming/utils.js +13 -32
  250. package/node_modules/hono/dist/cjs/helper/testing/index.js +16 -31
  251. package/node_modules/hono/dist/cjs/helper/websocket/index.js +51 -76
  252. package/node_modules/hono/dist/cjs/hono-base.js +347 -403
  253. package/node_modules/hono/dist/cjs/hono.js +28 -42
  254. package/node_modules/hono/dist/cjs/http-exception.js +55 -56
  255. package/node_modules/hono/dist/cjs/index.js +22 -30
  256. package/node_modules/hono/dist/cjs/jsx/base.js +237 -366
  257. package/node_modules/hono/dist/cjs/jsx/children.js +16 -41
  258. package/node_modules/hono/dist/cjs/jsx/components.js +119 -192
  259. package/node_modules/hono/dist/cjs/jsx/constants.js +15 -42
  260. package/node_modules/hono/dist/cjs/jsx/context.js +144 -162
  261. package/node_modules/hono/dist/cjs/jsx/dom/client.js +49 -69
  262. package/node_modules/hono/dist/cjs/jsx/dom/components.js +23 -52
  263. package/node_modules/hono/dist/cjs/jsx/dom/context.js +39 -67
  264. package/node_modules/hono/dist/cjs/jsx/dom/css.js +143 -158
  265. package/node_modules/hono/dist/cjs/jsx/dom/hooks/index.js +55 -64
  266. package/node_modules/hono/dist/cjs/jsx/dom/index.js +114 -173
  267. package/node_modules/hono/dist/cjs/jsx/dom/intrinsic-element/components.js +282 -375
  268. package/node_modules/hono/dist/cjs/jsx/dom/jsx-dev-runtime.js +14 -49
  269. package/node_modules/hono/dist/cjs/jsx/dom/jsx-runtime.js +5 -32
  270. package/node_modules/hono/dist/cjs/jsx/dom/render.js +469 -623
  271. package/node_modules/hono/dist/cjs/jsx/dom/server.js +37 -64
  272. package/node_modules/hono/dist/cjs/jsx/dom/utils.js +7 -30
  273. package/node_modules/hono/dist/cjs/jsx/hooks/index.js +225 -318
  274. package/node_modules/hono/dist/cjs/jsx/index.js +86 -135
  275. package/node_modules/hono/dist/cjs/jsx/intrinsic-element/common.js +20 -43
  276. package/node_modules/hono/dist/cjs/jsx/intrinsic-element/components.js +117 -168
  277. package/node_modules/hono/dist/cjs/jsx/intrinsic-elements.js +0 -15
  278. package/node_modules/hono/dist/cjs/jsx/jsx-dev-runtime.js +14 -39
  279. package/node_modules/hono/dist/cjs/jsx/jsx-runtime.js +34 -68
  280. package/node_modules/hono/dist/cjs/jsx/streaming.js +123 -166
  281. package/node_modules/hono/dist/cjs/jsx/types.js +0 -15
  282. package/node_modules/hono/dist/cjs/jsx/utils.js +91 -175
  283. package/node_modules/hono/dist/cjs/middleware/basic-auth/index.js +98 -86
  284. package/node_modules/hono/dist/cjs/middleware/bearer-auth/index.js +92 -109
  285. package/node_modules/hono/dist/cjs/middleware/body-limit/index.js +66 -72
  286. package/node_modules/hono/dist/cjs/middleware/cache/index.js +153 -199
  287. package/node_modules/hono/dist/cjs/middleware/combine/index.js +135 -95
  288. package/node_modules/hono/dist/cjs/middleware/compress/index.js +73 -88
  289. package/node_modules/hono/dist/cjs/middleware/context-storage/index.js +49 -41
  290. package/node_modules/hono/dist/cjs/middleware/cors/index.js +107 -107
  291. package/node_modules/hono/dist/cjs/middleware/csrf/index.js +101 -72
  292. package/node_modules/hono/dist/cjs/middleware/etag/digest.js +58 -97
  293. package/node_modules/hono/dist/cjs/middleware/etag/index.js +71 -91
  294. package/node_modules/hono/dist/cjs/middleware/ip-restriction/index.js +161 -169
  295. package/node_modules/hono/dist/cjs/middleware/jsx-renderer/index.js +99 -77
  296. package/node_modules/hono/dist/cjs/middleware/jwk/index.js +3 -27
  297. package/node_modules/hono/dist/cjs/middleware/jwk/jwk.js +118 -135
  298. package/node_modules/hono/dist/cjs/middleware/jwt/index.js +9 -38
  299. package/node_modules/hono/dist/cjs/middleware/jwt/jwt.js +120 -141
  300. package/node_modules/hono/dist/cjs/middleware/language/index.js +7 -35
  301. package/node_modules/hono/dist/cjs/middleware/language/language.js +184 -182
  302. package/node_modules/hono/dist/cjs/middleware/logger/index.js +41 -62
  303. package/node_modules/hono/dist/cjs/middleware/method-not-allowed/index.js +82 -88
  304. package/node_modules/hono/dist/cjs/middleware/method-override/index.js +101 -102
  305. package/node_modules/hono/dist/cjs/middleware/mount/index.js +71 -0
  306. package/node_modules/hono/dist/cjs/middleware/powered-by/index.js +23 -30
  307. package/node_modules/hono/dist/cjs/middleware/pretty-json/index.js +38 -42
  308. package/node_modules/hono/dist/cjs/middleware/request-id/index.js +3 -27
  309. package/node_modules/hono/dist/cjs/middleware/request-id/request-id.js +34 -42
  310. package/node_modules/hono/dist/cjs/middleware/secure-headers/index.js +4 -29
  311. package/node_modules/hono/dist/cjs/middleware/secure-headers/permissions-policy.js +0 -15
  312. package/node_modules/hono/dist/cjs/middleware/secure-headers/secure-headers.js +142 -174
  313. package/node_modules/hono/dist/cjs/middleware/serve-static/index.js +56 -93
  314. package/node_modules/hono/dist/cjs/middleware/serve-static/path.js +15 -38
  315. package/node_modules/hono/dist/cjs/middleware/timeout/index.js +40 -45
  316. package/node_modules/hono/dist/cjs/middleware/timing/index.js +7 -35
  317. package/node_modules/hono/dist/cjs/middleware/timing/timing.js +177 -118
  318. package/node_modules/hono/dist/cjs/middleware/trailing-slash/index.js +85 -58
  319. package/node_modules/hono/dist/cjs/preset/quick.js +18 -37
  320. package/node_modules/hono/dist/cjs/preset/tiny.js +15 -33
  321. package/node_modules/hono/dist/cjs/request/constants.js +5 -27
  322. package/node_modules/hono/dist/cjs/request.js +334 -346
  323. package/node_modules/hono/dist/cjs/router/linear-router/index.js +3 -27
  324. package/node_modules/hono/dist/cjs/router/linear-router/router.js +95 -143
  325. package/node_modules/hono/dist/cjs/router/pattern-router/index.js +3 -27
  326. package/node_modules/hono/dist/cjs/router/pattern-router/router.js +41 -63
  327. package/node_modules/hono/dist/cjs/router/reg-exp-router/index.js +7 -34
  328. package/node_modules/hono/dist/cjs/router/reg-exp-router/matcher.js +18 -45
  329. package/node_modules/hono/dist/cjs/router/reg-exp-router/node.js +91 -135
  330. package/node_modules/hono/dist/cjs/router/reg-exp-router/prepared-router.js +92 -161
  331. package/node_modules/hono/dist/cjs/router/reg-exp-router/router.js +98 -147
  332. package/node_modules/hono/dist/cjs/router/reg-exp-router/trie.js +73 -89
  333. package/node_modules/hono/dist/cjs/router/smart-router/index.js +3 -27
  334. package/node_modules/hono/dist/cjs/router/smart-router/router.js +49 -79
  335. package/node_modules/hono/dist/cjs/router/trie-router/index.js +3 -27
  336. package/node_modules/hono/dist/cjs/router/trie-router/node.js +134 -186
  337. package/node_modules/hono/dist/cjs/router/trie-router/router.js +15 -39
  338. package/node_modules/hono/dist/cjs/router/utils.js +5 -27
  339. package/node_modules/hono/dist/cjs/router.js +37 -37
  340. package/node_modules/hono/dist/cjs/types.js +5 -28
  341. package/node_modules/hono/dist/cjs/utils/accept.js +177 -225
  342. package/node_modules/hono/dist/cjs/utils/basic-auth.js +16 -40
  343. package/node_modules/hono/dist/cjs/utils/body.js +84 -110
  344. package/node_modules/hono/dist/cjs/utils/buffer.js +43 -91
  345. package/node_modules/hono/dist/cjs/utils/color.js +35 -44
  346. package/node_modules/hono/dist/cjs/utils/compress.js +11 -26
  347. package/node_modules/hono/dist/cjs/utils/concurrent.js +29 -59
  348. package/node_modules/hono/dist/cjs/utils/constants.js +7 -26
  349. package/node_modules/hono/dist/cjs/utils/cookie.js +107 -177
  350. package/node_modules/hono/dist/cjs/utils/crypto.js +30 -61
  351. package/node_modules/hono/dist/cjs/utils/encode.js +31 -48
  352. package/node_modules/hono/dist/cjs/utils/filepath.js +23 -54
  353. package/node_modules/hono/dist/cjs/utils/handler.js +11 -33
  354. package/node_modules/hono/dist/cjs/utils/headers.js +0 -15
  355. package/node_modules/hono/dist/cjs/utils/html.js +96 -137
  356. package/node_modules/hono/dist/cjs/utils/http-status.js +0 -15
  357. package/node_modules/hono/dist/cjs/utils/ipaddr.js +213 -286
  358. package/node_modules/hono/dist/cjs/utils/jwt/index.js +14 -27
  359. package/node_modules/hono/dist/cjs/utils/jwt/jwa.js +25 -42
  360. package/node_modules/hono/dist/cjs/utils/jwt/jws.js +119 -199
  361. package/node_modules/hono/dist/cjs/utils/jwt/jwt.js +122 -206
  362. package/node_modules/hono/dist/cjs/utils/jwt/types.js +122 -159
  363. package/node_modules/hono/dist/cjs/utils/jwt/utf8.js +9 -28
  364. package/node_modules/hono/dist/cjs/utils/mime.js +75 -101
  365. package/node_modules/hono/dist/cjs/utils/stream.js +88 -111
  366. package/node_modules/hono/dist/cjs/utils/types.js +0 -15
  367. package/node_modules/hono/dist/cjs/utils/url.js +185 -234
  368. package/node_modules/hono/dist/cjs/validator/index.js +3 -27
  369. package/node_modules/hono/dist/cjs/validator/utils.js +0 -15
  370. package/node_modules/hono/dist/cjs/validator/validator.js +60 -103
  371. package/node_modules/hono/dist/client/client.js +138 -197
  372. package/node_modules/hono/dist/client/fetch-result-please.js +59 -56
  373. package/node_modules/hono/dist/client/index.js +3 -7
  374. package/node_modules/hono/dist/client/types.js +1 -0
  375. package/node_modules/hono/dist/client/utils.js +51 -68
  376. package/node_modules/hono/dist/compose.js +49 -45
  377. package/node_modules/hono/dist/context.js +376 -426
  378. package/node_modules/hono/dist/helper/accepts/accepts.js +47 -51
  379. package/node_modules/hono/dist/helper/accepts/index.js +1 -4
  380. package/node_modules/hono/dist/helper/adapter/index.js +33 -52
  381. package/node_modules/hono/dist/helper/conninfo/index.js +1 -0
  382. package/node_modules/hono/dist/helper/conninfo/types.js +1 -0
  383. package/node_modules/hono/dist/helper/cookie/index.js +74 -94
  384. package/node_modules/hono/dist/helper/css/common.js +167 -225
  385. package/node_modules/hono/dist/helper/css/index.js +132 -137
  386. package/node_modules/hono/dist/helper/dev/index.js +44 -49
  387. package/node_modules/hono/dist/helper/factory/index.js +27 -27
  388. package/node_modules/hono/dist/helper/html/index.js +30 -39
  389. package/node_modules/hono/dist/helper/proxy/index.js +116 -88
  390. package/node_modules/hono/dist/helper/route/index.js +121 -43
  391. package/node_modules/hono/dist/helper/ssg/index.js +3 -18
  392. package/node_modules/hono/dist/helper/ssg/middleware.js +53 -40
  393. package/node_modules/hono/dist/helper/ssg/plugins.js +55 -36
  394. package/node_modules/hono/dist/helper/ssg/ssg.js +198 -283
  395. package/node_modules/hono/dist/helper/ssg/utils.js +53 -75
  396. package/node_modules/hono/dist/helper/streaming/index.js +2 -8
  397. package/node_modules/hono/dist/helper/streaming/sse.js +50 -61
  398. package/node_modules/hono/dist/helper/streaming/stream.js +22 -31
  399. package/node_modules/hono/dist/helper/streaming/text.js +9 -10
  400. package/node_modules/hono/dist/helper/streaming/utils.js +9 -12
  401. package/node_modules/hono/dist/helper/testing/index.js +16 -10
  402. package/node_modules/hono/dist/helper/websocket/index.js +49 -53
  403. package/node_modules/hono/dist/hono-base.js +344 -379
  404. package/node_modules/hono/dist/hono.js +27 -20
  405. package/node_modules/hono/dist/http-exception.js +53 -33
  406. package/node_modules/hono/dist/index.js +19 -6
  407. package/node_modules/hono/dist/jsx/base.js +231 -340
  408. package/node_modules/hono/dist/jsx/children.js +16 -20
  409. package/node_modules/hono/dist/jsx/components.js +118 -170
  410. package/node_modules/hono/dist/jsx/constants.js +9 -15
  411. package/node_modules/hono/dist/jsx/context.js +153 -150
  412. package/node_modules/hono/dist/jsx/dom/client.js +45 -48
  413. package/node_modules/hono/dist/jsx/dom/components.js +21 -29
  414. package/node_modules/hono/dist/jsx/dom/context.js +37 -44
  415. package/node_modules/hono/dist/jsx/dom/css.js +142 -147
  416. package/node_modules/hono/dist/jsx/dom/hooks/index.js +52 -40
  417. package/node_modules/hono/dist/jsx/dom/index.js +71 -134
  418. package/node_modules/hono/dist/jsx/dom/intrinsic-element/components.js +275 -359
  419. package/node_modules/hono/dist/jsx/dom/jsx-dev-runtime.js +14 -18
  420. package/node_modules/hono/dist/jsx/dom/jsx-runtime.js +2 -8
  421. package/node_modules/hono/dist/jsx/dom/render.js +492 -631
  422. package/node_modules/hono/dist/jsx/dom/server.js +32 -32
  423. package/node_modules/hono/dist/jsx/dom/utils.js +6 -8
  424. package/node_modules/hono/dist/jsx/hooks/index.js +236 -308
  425. package/node_modules/hono/dist/jsx/index.js +45 -98
  426. package/node_modules/hono/dist/jsx/intrinsic-element/common.js +20 -22
  427. package/node_modules/hono/dist/jsx/intrinsic-element/components.js +113 -154
  428. package/node_modules/hono/dist/jsx/intrinsic-elements.js +1 -0
  429. package/node_modules/hono/dist/jsx/jsx-dev-runtime.js +12 -16
  430. package/node_modules/hono/dist/jsx/jsx-runtime.js +29 -42
  431. package/node_modules/hono/dist/jsx/streaming.js +120 -142
  432. package/node_modules/hono/dist/jsx/types.js +1 -0
  433. package/node_modules/hono/dist/jsx/utils.js +105 -168
  434. package/node_modules/hono/dist/middleware/basic-auth/index.js +96 -63
  435. package/node_modules/hono/dist/middleware/bearer-auth/index.js +93 -89
  436. package/node_modules/hono/dist/middleware/body-limit/index.js +66 -51
  437. package/node_modules/hono/dist/middleware/cache/index.js +165 -190
  438. package/node_modules/hono/dist/middleware/combine/index.js +134 -73
  439. package/node_modules/hono/dist/middleware/compress/index.js +75 -69
  440. package/node_modules/hono/dist/middleware/context-storage/index.js +49 -19
  441. package/node_modules/hono/dist/middleware/cors/index.js +107 -86
  442. package/node_modules/hono/dist/middleware/csrf/index.js +103 -53
  443. package/node_modules/hono/dist/middleware/etag/digest.js +59 -77
  444. package/node_modules/hono/dist/middleware/etag/index.js +71 -70
  445. package/node_modules/hono/dist/middleware/ip-restriction/index.js +163 -158
  446. package/node_modules/hono/dist/middleware/jsx-renderer/index.js +97 -54
  447. package/node_modules/hono/dist/middleware/jwk/index.js +1 -4
  448. package/node_modules/hono/dist/middleware/jwk/jwk.js +116 -112
  449. package/node_modules/hono/dist/middleware/jwt/index.js +2 -10
  450. package/node_modules/hono/dist/middleware/jwt/jwt.js +114 -114
  451. package/node_modules/hono/dist/middleware/language/index.js +2 -15
  452. package/node_modules/hono/dist/middleware/language/language.js +180 -157
  453. package/node_modules/hono/dist/middleware/logger/index.js +43 -37
  454. package/node_modules/hono/dist/middleware/method-not-allowed/index.js +81 -66
  455. package/node_modules/hono/dist/middleware/method-override/index.js +101 -81
  456. package/node_modules/hono/dist/middleware/mount/index.js +70 -0
  457. package/node_modules/hono/dist/middleware/powered-by/index.js +23 -9
  458. package/node_modules/hono/dist/middleware/pretty-json/index.js +39 -22
  459. package/node_modules/hono/dist/middleware/request-id/index.js +1 -4
  460. package/node_modules/hono/dist/middleware/request-id/request-id.js +33 -20
  461. package/node_modules/hono/dist/middleware/secure-headers/index.js +1 -5
  462. package/node_modules/hono/dist/middleware/secure-headers/permissions-policy.js +1 -0
  463. package/node_modules/hono/dist/middleware/secure-headers/secure-headers.js +144 -155
  464. package/node_modules/hono/dist/middleware/serve-static/index.js +56 -72
  465. package/node_modules/hono/dist/middleware/serve-static/path.js +15 -17
  466. package/node_modules/hono/dist/middleware/timeout/index.js +40 -23
  467. package/node_modules/hono/dist/middleware/timing/index.js +2 -9
  468. package/node_modules/hono/dist/middleware/timing/timing.js +177 -97
  469. package/node_modules/hono/dist/middleware/trailing-slash/index.js +85 -37
  470. package/node_modules/hono/dist/preset/quick.js +17 -15
  471. package/node_modules/hono/dist/preset/tiny.js +14 -11
  472. package/node_modules/hono/dist/request/constants.js +4 -5
  473. package/node_modules/hono/dist/request.js +328 -319
  474. package/node_modules/hono/dist/router/linear-router/index.js +1 -4
  475. package/node_modules/hono/dist/router/linear-router/router.js +93 -120
  476. package/node_modules/hono/dist/router/pattern-router/index.js +1 -4
  477. package/node_modules/hono/dist/router/pattern-router/router.js +39 -40
  478. package/node_modules/hono/dist/router/reg-exp-router/index.js +1 -7
  479. package/node_modules/hono/dist/router/reg-exp-router/matcher.js +17 -23
  480. package/node_modules/hono/dist/router/reg-exp-router/node.js +87 -110
  481. package/node_modules/hono/dist/router/reg-exp-router/prepared-router.js +89 -137
  482. package/node_modules/hono/dist/router/reg-exp-router/router.js +92 -129
  483. package/node_modules/hono/dist/router/reg-exp-router/trie.js +69 -64
  484. package/node_modules/hono/dist/router/smart-router/index.js +1 -4
  485. package/node_modules/hono/dist/router/smart-router/router.js +46 -55
  486. package/node_modules/hono/dist/router/trie-router/index.js +1 -4
  487. package/node_modules/hono/dist/router/trie-router/node.js +131 -162
  488. package/node_modules/hono/dist/router/trie-router/router.js +11 -14
  489. package/node_modules/hono/dist/router/utils.js +4 -5
  490. package/node_modules/hono/dist/router.js +35 -14
  491. package/node_modules/hono/dist/types/adapter/aws-lambda/conninfo.d.ts +4 -1
  492. package/node_modules/hono/dist/types/adapter/aws-lambda/handler.d.ts +150 -104
  493. package/node_modules/hono/dist/types/adapter/aws-lambda/index.d.ts +4 -8
  494. package/node_modules/hono/dist/types/adapter/aws-lambda/types.d.ts +152 -122
  495. package/node_modules/hono/dist/types/adapter/bun/conninfo.d.ts +4 -1
  496. package/node_modules/hono/dist/types/adapter/bun/index.d.ts +6 -10
  497. package/node_modules/hono/dist/types/adapter/bun/serve-static.d.ts +7 -2
  498. package/node_modules/hono/dist/types/adapter/bun/server.d.ts +4 -5
  499. package/node_modules/hono/dist/types/adapter/bun/ssg.d.ts +5 -1
  500. package/node_modules/hono/dist/types/adapter/bun/websocket.d.ts +31 -16
  501. package/node_modules/hono/dist/types/adapter/cloudflare-pages/conninfo.d.ts +4 -1
  502. package/node_modules/hono/dist/types/adapter/cloudflare-pages/handler.d.ts +29 -17
  503. package/node_modules/hono/dist/types/adapter/cloudflare-pages/index.d.ts +3 -7
  504. package/node_modules/hono/dist/types/adapter/cloudflare-workers/conninfo.d.ts +6 -1
  505. package/node_modules/hono/dist/types/adapter/cloudflare-workers/index.d.ts +4 -7
  506. package/node_modules/hono/dist/types/adapter/cloudflare-workers/serve-static-module.d.ts +5 -2
  507. package/node_modules/hono/dist/types/adapter/cloudflare-workers/serve-static.d.ts +10 -5
  508. package/node_modules/hono/dist/types/adapter/cloudflare-workers/utils.d.ts +10 -2
  509. package/node_modules/hono/dist/types/adapter/cloudflare-workers/websocket.d.ts +6 -1
  510. package/node_modules/hono/dist/types/adapter/deno/conninfo.d.ts +4 -1
  511. package/node_modules/hono/dist/types/adapter/deno/deno.d.ts +1 -0
  512. package/node_modules/hono/dist/types/adapter/deno/index.d.ts +5 -8
  513. package/node_modules/hono/dist/types/adapter/deno/serve-static.d.ts +7 -2
  514. package/node_modules/hono/dist/types/adapter/deno/ssg.d.ts +5 -1
  515. package/node_modules/hono/dist/types/adapter/deno/websocket.d.ts +6 -1
  516. package/node_modules/hono/dist/types/adapter/lambda-edge/conninfo.d.ts +6 -1
  517. package/node_modules/hono/dist/types/adapter/lambda-edge/handler.d.ts +83 -57
  518. package/node_modules/hono/dist/types/adapter/lambda-edge/index.d.ts +3 -7
  519. package/node_modules/hono/dist/types/adapter/netlify/conninfo.d.ts +4 -1
  520. package/node_modules/hono/dist/types/adapter/netlify/handler.d.ts +6 -1
  521. package/node_modules/hono/dist/types/adapter/netlify/index.d.ts +3 -5
  522. package/node_modules/hono/dist/types/adapter/netlify/mod.d.ts +3 -2
  523. package/node_modules/hono/dist/types/adapter/service-worker/handler.d.ts +9 -7
  524. package/node_modules/hono/dist/types/adapter/service-worker/index.d.ts +7 -9
  525. package/node_modules/hono/dist/types/adapter/service-worker/types.d.ts +12 -7
  526. package/node_modules/hono/dist/types/adapter/vercel/conninfo.d.ts +6 -1
  527. package/node_modules/hono/dist/types/adapter/vercel/handler.d.ts +6 -1
  528. package/node_modules/hono/dist/types/adapter/vercel/index.d.ts +3 -6
  529. package/node_modules/hono/dist/types/client/client.d.ts +5 -3
  530. package/node_modules/hono/dist/types/client/fetch-result-please.d.ts +21 -19
  531. package/node_modules/hono/dist/types/client/index.d.ts +5 -7
  532. package/node_modules/hono/dist/types/client/types.d.ts +134 -159
  533. package/node_modules/hono/dist/types/client/utils.d.ts +6 -4
  534. package/node_modules/hono/dist/types/compose.d.ts +4 -2
  535. package/node_modules/hono/dist/types/context.d.ts +335 -335
  536. package/node_modules/hono/dist/types/helper/accepts/accepts.d.ts +11 -9
  537. package/node_modules/hono/dist/types/helper/accepts/index.d.ts +2 -5
  538. package/node_modules/hono/dist/types/helper/adapter/index.d.ts +4 -6
  539. package/node_modules/hono/dist/types/helper/conninfo/index.d.ts +2 -5
  540. package/node_modules/hono/dist/types/helper/conninfo/types.d.ts +25 -23
  541. package/node_modules/hono/dist/types/helper/cookie/index.d.ts +10 -12
  542. package/node_modules/hono/dist/types/helper/css/common.d.ts +11 -9
  543. package/node_modules/hono/dist/types/helper/css/index.d.ts +26 -28
  544. package/node_modules/hono/dist/types/helper/dev/index.d.ts +10 -12
  545. package/node_modules/hono/dist/types/helper/factory/index.d.ts +26 -73
  546. package/node_modules/hono/dist/types/helper/html/index.d.ts +4 -7
  547. package/node_modules/hono/dist/types/helper/proxy/index.d.ts +19 -21
  548. package/node_modules/hono/dist/types/helper/route/index.d.ts +4 -2
  549. package/node_modules/hono/dist/types/helper/ssg/index.d.ts +4 -7
  550. package/node_modules/hono/dist/types/helper/ssg/middleware.d.ts +8 -6
  551. package/node_modules/hono/dist/types/helper/ssg/plugins.d.ts +3 -1
  552. package/node_modules/hono/dist/types/helper/ssg/ssg.d.ts +38 -36
  553. package/node_modules/hono/dist/types/helper/ssg/utils.d.ts +5 -3
  554. package/node_modules/hono/dist/types/helper/streaming/index.d.ts +4 -8
  555. package/node_modules/hono/dist/types/helper/streaming/sse.d.ts +10 -8
  556. package/node_modules/hono/dist/types/helper/streaming/stream.d.ts +4 -2
  557. package/node_modules/hono/dist/types/helper/streaming/text.d.ts +4 -2
  558. package/node_modules/hono/dist/types/helper/streaming/utils.d.ts +2 -0
  559. package/node_modules/hono/dist/types/helper/testing/index.d.ts +7 -9
  560. package/node_modules/hono/dist/types/helper/websocket/index.d.ts +30 -33
  561. package/node_modules/hono/dist/types/hono-base.d.ts +210 -210
  562. package/node_modules/hono/dist/types/hono.d.ts +11 -10
  563. package/node_modules/hono/dist/types/http-exception.d.ts +20 -22
  564. package/node_modules/hono/dist/types/index.d.ts +6 -37
  565. package/node_modules/hono/dist/types/jsx/base.d.ts +37 -35
  566. package/node_modules/hono/dist/types/jsx/children.d.ts +8 -6
  567. package/node_modules/hono/dist/types/jsx/components.d.ts +8 -5
  568. package/node_modules/hono/dist/types/jsx/constants.d.ts +2 -0
  569. package/node_modules/hono/dist/types/jsx/context.d.ts +9 -6
  570. package/node_modules/hono/dist/types/jsx/dom/client.d.ts +9 -10
  571. package/node_modules/hono/dist/types/jsx/dom/components.d.ts +9 -6
  572. package/node_modules/hono/dist/types/jsx/dom/context.d.ts +3 -1
  573. package/node_modules/hono/dist/types/jsx/dom/css.d.ts +27 -30
  574. package/node_modules/hono/dist/types/jsx/dom/hooks/index.d.ts +11 -12
  575. package/node_modules/hono/dist/types/jsx/dom/index.d.ts +79 -83
  576. package/node_modules/hono/dist/types/jsx/dom/intrinsic-element/components.d.ts +9 -5
  577. package/node_modules/hono/dist/types/jsx/dom/jsx-dev-runtime.d.ts +4 -6
  578. package/node_modules/hono/dist/types/jsx/dom/jsx-runtime.d.ts +3 -7
  579. package/node_modules/hono/dist/types/jsx/dom/render.d.ts +32 -50
  580. package/node_modules/hono/dist/types/jsx/dom/server.d.ts +87 -85
  581. package/node_modules/hono/dist/types/jsx/dom/utils.d.ts +2 -0
  582. package/node_modules/hono/dist/types/jsx/hooks/index.d.ts +16 -16
  583. package/node_modules/hono/dist/types/jsx/index.d.ts +71 -73
  584. package/node_modules/hono/dist/types/jsx/intrinsic-element/common.d.ts +3 -1
  585. package/node_modules/hono/dist/types/jsx/intrinsic-element/components.d.ts +7 -4
  586. package/node_modules/hono/dist/types/jsx/intrinsic-elements.d.ts +708 -708
  587. package/node_modules/hono/dist/types/jsx/jsx-dev-runtime.d.ts +4 -7
  588. package/node_modules/hono/dist/types/jsx/jsx-runtime.d.ts +7 -10
  589. package/node_modules/hono/dist/types/jsx/streaming.d.ts +9 -10
  590. package/node_modules/hono/dist/types/jsx/types.d.ts +12 -13
  591. package/node_modules/hono/dist/types/jsx/utils.d.ts +2 -0
  592. package/node_modules/hono/dist/types/middleware/basic-auth/index.d.ts +17 -19
  593. package/node_modules/hono/dist/types/middleware/bearer-auth/index.d.ts +46 -48
  594. package/node_modules/hono/dist/types/middleware/body-limit/index.d.ts +6 -8
  595. package/node_modules/hono/dist/types/middleware/cache/index.d.ts +13 -15
  596. package/node_modules/hono/dist/types/middleware/combine/index.d.ts +4 -6
  597. package/node_modules/hono/dist/types/middleware/compress/index.d.ts +9 -10
  598. package/node_modules/hono/dist/types/middleware/context-storage/index.d.ts +4 -6
  599. package/node_modules/hono/dist/types/middleware/cors/index.d.ts +10 -12
  600. package/node_modules/hono/dist/types/middleware/csrf/index.d.ts +6 -8
  601. package/node_modules/hono/dist/types/middleware/etag/digest.d.ts +2 -0
  602. package/node_modules/hono/dist/types/middleware/etag/index.d.ts +6 -8
  603. package/node_modules/hono/dist/types/middleware/ip-restriction/index.d.ts +11 -12
  604. package/node_modules/hono/dist/types/middleware/jsx-renderer/index.d.ts +11 -11
  605. package/node_modules/hono/dist/types/middleware/jwk/index.d.ts +2 -1
  606. package/node_modules/hono/dist/types/middleware/jwk/jwk.d.ts +20 -23
  607. package/node_modules/hono/dist/types/middleware/jwt/index.d.ts +7 -6
  608. package/node_modules/hono/dist/types/middleware/jwt/jwt.d.ts +28 -30
  609. package/node_modules/hono/dist/types/middleware/language/index.d.ts +6 -5
  610. package/node_modules/hono/dist/types/middleware/language/language.d.ts +42 -44
  611. package/node_modules/hono/dist/types/middleware/logger/index.d.ts +3 -5
  612. package/node_modules/hono/dist/types/middleware/method-not-allowed/index.d.ts +7 -9
  613. package/node_modules/hono/dist/types/middleware/method-override/index.d.ts +14 -16
  614. package/node_modules/hono/dist/types/middleware/mount/index.d.ts +46 -0
  615. package/node_modules/hono/dist/types/middleware/powered-by/index.d.ts +8 -10
  616. package/node_modules/hono/dist/types/middleware/pretty-json/index.d.ts +18 -20
  617. package/node_modules/hono/dist/types/middleware/request-id/index.d.ts +6 -5
  618. package/node_modules/hono/dist/types/middleware/request-id/request-id.d.ts +9 -11
  619. package/node_modules/hono/dist/types/middleware/secure-headers/index.d.ts +6 -6
  620. package/node_modules/hono/dist/types/middleware/secure-headers/permissions-policy.d.ts +2 -0
  621. package/node_modules/hono/dist/types/middleware/secure-headers/secure-headers.d.ts +55 -57
  622. package/node_modules/hono/dist/types/middleware/serve-static/index.d.ts +24 -24
  623. package/node_modules/hono/dist/types/middleware/serve-static/path.d.ts +2 -0
  624. package/node_modules/hono/dist/types/middleware/timeout/index.d.ts +5 -7
  625. package/node_modules/hono/dist/types/middleware/timing/index.d.ts +6 -5
  626. package/node_modules/hono/dist/types/middleware/timing/timing.d.ts +17 -20
  627. package/node_modules/hono/dist/types/middleware/trailing-slash/index.d.ts +35 -37
  628. package/node_modules/hono/dist/types/preset/quick.d.ts +6 -9
  629. package/node_modules/hono/dist/types/preset/tiny.d.ts +6 -9
  630. package/node_modules/hono/dist/types/request/constants.d.ts +2 -0
  631. package/node_modules/hono/dist/types/request.d.ts +288 -286
  632. package/node_modules/hono/dist/types/router/linear-router/index.d.ts +2 -5
  633. package/node_modules/hono/dist/types/router/linear-router/router.d.ts +7 -5
  634. package/node_modules/hono/dist/types/router/pattern-router/index.d.ts +2 -5
  635. package/node_modules/hono/dist/types/router/pattern-router/router.d.ts +7 -5
  636. package/node_modules/hono/dist/types/router/reg-exp-router/index.d.ts +3 -6
  637. package/node_modules/hono/dist/types/router/reg-exp-router/matcher.d.ts +3 -1
  638. package/node_modules/hono/dist/types/router/reg-exp-router/node.d.ts +6 -4
  639. package/node_modules/hono/dist/types/router/reg-exp-router/prepared-router.d.ts +11 -10
  640. package/node_modules/hono/dist/types/router/reg-exp-router/router.d.ts +10 -9
  641. package/node_modules/hono/dist/types/router/reg-exp-router/trie.d.ts +7 -5
  642. package/node_modules/hono/dist/types/router/smart-router/index.d.ts +2 -5
  643. package/node_modules/hono/dist/types/router/smart-router/router.d.ts +11 -9
  644. package/node_modules/hono/dist/types/router/trie-router/index.d.ts +2 -5
  645. package/node_modules/hono/dist/types/router/trie-router/node.d.ts +6 -4
  646. package/node_modules/hono/dist/types/router/trie-router/router.d.ts +7 -5
  647. package/node_modules/hono/dist/types/router/utils.d.ts +2 -0
  648. package/node_modules/hono/dist/types/router.d.ts +23 -22
  649. package/node_modules/hono/dist/types/types.d.ts +146 -505
  650. package/node_modules/hono/dist/types/utils/accept.d.ts +5 -3
  651. package/node_modules/hono/dist/types/utils/basic-auth.d.ts +4 -2
  652. package/node_modules/hono/dist/types/utils/body.d.ts +46 -50
  653. package/node_modules/hono/dist/types/utils/buffer.d.ts +7 -5
  654. package/node_modules/hono/dist/types/utils/color.d.ts +2 -0
  655. package/node_modules/hono/dist/types/utils/compress.d.ts +2 -0
  656. package/node_modules/hono/dist/types/utils/concurrent.d.ts +6 -4
  657. package/node_modules/hono/dist/types/utils/constants.d.ts +2 -0
  658. package/node_modules/hono/dist/types/utils/cookie.d.ts +20 -18
  659. package/node_modules/hono/dist/types/utils/crypto.d.ts +5 -7
  660. package/node_modules/hono/dist/types/utils/encode.d.ts +2 -0
  661. package/node_modules/hono/dist/types/utils/filepath.d.ts +5 -3
  662. package/node_modules/hono/dist/types/utils/handler.d.ts +2 -0
  663. package/node_modules/hono/dist/types/utils/headers.d.ts +2 -0
  664. package/node_modules/hono/dist/types/utils/html.d.ts +11 -9
  665. package/node_modules/hono/dist/types/utils/http-status.d.ts +2 -0
  666. package/node_modules/hono/dist/types/utils/ipaddr.d.ts +4 -6
  667. package/node_modules/hono/dist/types/utils/jwt/index.d.ts +18 -12
  668. package/node_modules/hono/dist/types/utils/jwt/jwa.d.ts +15 -13
  669. package/node_modules/hono/dist/types/utils/jwt/jws.d.ts +4 -7
  670. package/node_modules/hono/dist/types/utils/jwt/jwt.d.ts +26 -29
  671. package/node_modules/hono/dist/types/utils/jwt/types.d.ts +48 -45
  672. package/node_modules/hono/dist/types/utils/jwt/utf8.d.ts +2 -0
  673. package/node_modules/hono/dist/types/utils/mime.d.ts +60 -57
  674. package/node_modules/hono/dist/types/utils/stream.d.ts +27 -25
  675. package/node_modules/hono/dist/types/utils/types.d.ts +14 -26
  676. package/node_modules/hono/dist/types/utils/url.d.ts +2 -0
  677. package/node_modules/hono/dist/types/validator/index.d.ts +3 -7
  678. package/node_modules/hono/dist/types/validator/utils.d.ts +6 -8
  679. package/node_modules/hono/dist/types/validator/validator.d.ts +11 -9
  680. package/node_modules/hono/dist/types.js +4 -6
  681. package/node_modules/hono/dist/utils/accept.js +185 -212
  682. package/node_modules/hono/dist/utils/basic-auth.js +18 -21
  683. package/node_modules/hono/dist/utils/body.js +87 -92
  684. package/node_modules/hono/dist/utils/buffer.js +44 -71
  685. package/node_modules/hono/dist/utils/color.js +33 -21
  686. package/node_modules/hono/dist/utils/compress.js +11 -5
  687. package/node_modules/hono/dist/utils/concurrent.js +29 -38
  688. package/node_modules/hono/dist/utils/constants.js +7 -5
  689. package/node_modules/hono/dist/utils/cookie.js +114 -163
  690. package/node_modules/hono/dist/utils/crypto.js +30 -40
  691. package/node_modules/hono/dist/utils/encode.js +30 -26
  692. package/node_modules/hono/dist/utils/filepath.js +23 -33
  693. package/node_modules/hono/dist/utils/handler.js +10 -11
  694. package/node_modules/hono/dist/utils/headers.js +1 -0
  695. package/node_modules/hono/dist/utils/html.js +97 -117
  696. package/node_modules/hono/dist/utils/http-status.js +1 -0
  697. package/node_modules/hono/dist/utils/ipaddr.js +227 -279
  698. package/node_modules/hono/dist/utils/jwt/index.js +12 -4
  699. package/node_modules/hono/dist/utils/jwt/jwa.js +24 -20
  700. package/node_modules/hono/dist/utils/jwt/jws.js +115 -174
  701. package/node_modules/hono/dist/utils/jwt/jwt.js +120 -198
  702. package/node_modules/hono/dist/utils/jwt/types.js +79 -95
  703. package/node_modules/hono/dist/utils/jwt/utf8.js +9 -7
  704. package/node_modules/hono/dist/utils/mime.js +74 -79
  705. package/node_modules/hono/dist/utils/stream.js +86 -88
  706. package/node_modules/hono/dist/utils/types.js +1 -0
  707. package/node_modules/hono/dist/utils/url.js +187 -215
  708. package/node_modules/hono/dist/validator/index.js +1 -4
  709. package/node_modules/hono/dist/validator/utils.js +1 -0
  710. package/node_modules/hono/dist/validator/validator.js +61 -83
  711. package/node_modules/hono/package.json +35 -27
  712. package/package.json +16 -14
  713. package/scripts/cloud-runtime-smoke.mjs +4 -2
  714. package/scripts/lib/cursor-sdk-output-filter.d.mts +1 -0
  715. package/scripts/lib/cursor-sdk-output-filter.mjs +1 -0
  716. package/scripts/local-resume-smoke.mjs +1 -1
  717. package/scripts/platform-smoke/artifacts.mjs +7 -1
  718. package/scripts/platform-smoke/card-detect.mjs +2 -8
  719. package/scripts/platform-smoke/targets.mjs +8 -15
  720. package/scripts/platform-smoke/visual-evidence.mjs +7 -2
  721. package/scripts/tmux-live-smoke.sh +57 -90
  722. package/shared/cursor-sdk-output-filter.d.mts +3 -0
  723. package/shared/cursor-sdk-output-filter.mjs +117 -44
  724. package/src/context-window-cache.ts +0 -6
  725. package/src/context.ts +65 -33
  726. package/src/cursor-api-key.ts +37 -17
  727. package/src/cursor-cloud-lifecycle.ts +124 -98
  728. package/src/cursor-cloud-options.ts +2 -0
  729. package/src/cursor-config.ts +76 -0
  730. package/src/cursor-custom-store-path.ts +151 -0
  731. package/src/cursor-custom-subagent-definitions.ts +21 -0
  732. package/src/cursor-durable-fs.ts +65 -3
  733. package/src/cursor-fallback-models.generated.ts +288 -1
  734. package/src/cursor-fallback-warning.ts +9 -5
  735. package/src/cursor-http1.ts +8 -8
  736. package/src/cursor-live-run-coordinator.ts +33 -15
  737. package/src/cursor-mcp-timeout-override.ts +3 -1
  738. package/src/cursor-native-replay-routing.ts +2 -1
  739. package/src/cursor-native-tool-display-registration.ts +48 -24
  740. package/src/cursor-native-tool-display-state.ts +65 -21
  741. package/src/cursor-native-tool-display-tools.ts +7 -4
  742. package/src/cursor-pi-tool-bridge-constants.ts +27 -2
  743. package/src/cursor-pi-tool-bridge-run.ts +32 -3
  744. package/src/cursor-pi-tool-bridge-server.ts +1 -2
  745. package/src/cursor-pi-tool-bridge-snapshot.ts +1 -1
  746. package/src/cursor-pi-tool-bridge-types.ts +3 -0
  747. package/src/cursor-pi-tool-bridge.ts +26 -9
  748. package/src/cursor-provider-binding.ts +121 -0
  749. package/src/cursor-provider-errors.ts +59 -35
  750. package/src/cursor-provider-lazy.ts +21 -15
  751. package/src/cursor-provider-live-run-drain.ts +29 -17
  752. package/src/cursor-provider-run-finalizer.ts +26 -16
  753. package/src/cursor-provider-turn-coordinator.ts +2 -0
  754. package/src/cursor-provider-turn-display-router.ts +5 -0
  755. package/src/cursor-provider-turn-emit.ts +3 -1
  756. package/src/cursor-provider-turn-finalize.ts +38 -23
  757. package/src/cursor-provider-turn-prepare.ts +51 -27
  758. package/src/cursor-provider-turn-runner.ts +40 -13
  759. package/src/cursor-provider-turn-send.ts +23 -15
  760. package/src/cursor-provider-turn-summary.ts +94 -0
  761. package/src/cursor-provider-turn-tool-ledger.ts +12 -7
  762. package/src/cursor-provider-turn-types.ts +37 -4
  763. package/src/cursor-provider.ts +28 -4
  764. package/src/cursor-question-tool.ts +5 -5
  765. package/src/cursor-request-provenance.ts +79 -0
  766. package/src/cursor-ripgrep-path.ts +15 -5
  767. package/src/cursor-runtime-state.ts +53 -48
  768. package/src/cursor-sdk-billed-usage.ts +54 -102
  769. package/src/cursor-sdk-event-debug-session.ts +5 -5
  770. package/src/cursor-sdk-event-debug.ts +10 -6
  771. package/src/cursor-sdk-output-filter.ts +2 -0
  772. package/src/cursor-sdk-process-error-guard.ts +8 -9
  773. package/src/cursor-sdk-runtime.ts +15 -2
  774. package/src/cursor-sdk-vendor-env.ts +22 -0
  775. package/src/cursor-session-agent-cleanup.ts +30 -29
  776. package/src/cursor-session-agent-lifecycle.ts +14 -9
  777. package/src/cursor-session-agent-lineage.ts +26 -12
  778. package/src/cursor-session-agent-resume.ts +49 -36
  779. package/src/cursor-session-agent.ts +57 -27
  780. package/src/cursor-session-compaction-prep.ts +2 -7
  781. package/src/cursor-session-scope.ts +87 -39
  782. package/src/cursor-session-send-policy.ts +2 -2
  783. package/src/cursor-session-settings.ts +72 -0
  784. package/src/cursor-session-store.ts +259 -53
  785. package/src/cursor-skill-tool.ts +37 -61
  786. package/src/cursor-state.ts +81 -69
  787. package/src/cursor-tool-manifest.ts +1 -1
  788. package/src/cursor-usage-accounting.ts +17 -82
  789. package/src/cursor-usage-command.ts +76 -0
  790. package/src/cursor-usage-ledger.ts +500 -0
  791. package/src/index.ts +30 -39
  792. package/src/model-discovery.ts +76 -45
  793. package/src/model-list-cache.ts +11 -1
  794. package/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-BLVe3qmU.d.cts.map +0 -1
  795. package/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-Bt6U_Fqb.d.mts.map +0 -1
  796. package/node_modules/@modelcontextprotocol/server/dist/mcp-DUcCQSTW.cjs.map +0 -1
  797. package/node_modules/@modelcontextprotocol/server/dist/mcp-Dw2OlZ1f.mjs.map +0 -1
  798. package/node_modules/@modelcontextprotocol/server/dist/src-CgFsfg3E.cjs.map +0 -1
  799. package/node_modules/@modelcontextprotocol/server/dist/src-D-y6h4N7.mjs.map +0 -1
@@ -1,11 +1,9 @@
1
1
  import { loadCursorTranscriptWebToolCallsAfterOffset } from "./cursor-agent-message-web-tools.js";
2
2
  import { collectCursorCloudRunReport, formatCursorCloudRunReport, } from "./cursor-cloud-reporting.js";
3
- import { recordCursorCloudLifecycleRun } from "./cursor-cloud-lifecycle.js";
4
3
  import { getCheckpointContextWindow, saveCachedContextWindow } from "./context-window-cache.js";
5
4
  import { scrubSensitiveText } from "./cursor-sensitive-text.js";
6
5
  import { isCursorRunFinishedSuccessfully, resolveCursorRunOutcome, } from "./cursor-provider-run-outcome.js";
7
6
  import { loadCursorSdk } from "./cursor-sdk-runtime.js";
8
- import { attachCursorSdkBilledTurnUsage } from "./cursor-sdk-billed-usage.js";
9
7
  export async function cacheSdkContextWindow(agentId, modelId, cwd, store) {
10
8
  try {
11
9
  const { createAgentPlatform } = await loadCursorSdk();
@@ -74,10 +72,30 @@ function recordCursorCloudReportingError(sdkEventDebug, error, apiKey) {
74
72
  // Debug reporting must never affect provider execution.
75
73
  }
76
74
  }
77
- /** Single wait/finalize path for SDK runs: wait, debug capture, transcript replay, incomplete tools, artifacts, context cache. */
75
+ export async function recordCursorProviderTerminalUsage(prepared, status, waitUsage) {
76
+ if (prepared.runtime.usageTerminalRecorded)
77
+ return undefined;
78
+ prepared.runtime.usageTerminalRecorded = true;
79
+ try {
80
+ return await prepared.usage.recordTerminal({ status, waitUsage, handleUsage: prepared.runtime.sdkRun?.usage });
81
+ }
82
+ catch (error) {
83
+ prepared.usage.notePersistenceFailure(error);
84
+ return undefined;
85
+ }
86
+ }
87
+ /** Single wait/finalize path for SDK runs: accounting, replay, incomplete tools, artifacts, context cache. */
78
88
  export async function awaitFinalizeCursorRunOutcome(params) {
79
89
  const apiKey = params.resolvedApiKey ?? params.optionsApiKey;
80
- const waitResult = params.waitResult ?? (await params.run.wait());
90
+ params.prepared.runtime.sdkRun = params.run;
91
+ let waitResult;
92
+ try {
93
+ waitResult = params.waitResult ?? (await params.run.wait());
94
+ }
95
+ catch (error) {
96
+ await recordCursorProviderTerminalUsage(params.prepared, params.signal?.aborted ? "abort" : "error");
97
+ throw error;
98
+ }
81
99
  const outcome = buildCursorRunOutcomeFromWait({
82
100
  waitResult,
83
101
  prepared: params.prepared,
@@ -87,16 +105,7 @@ export async function awaitFinalizeCursorRunOutcome(params) {
87
105
  resolvedApiKey: params.resolvedApiKey,
88
106
  optionsApiKey: params.optionsApiKey,
89
107
  });
90
- const billed = await attachCursorSdkBilledTurnUsage({
91
- agent: params.prepared.agent,
92
- agentId: params.run.agentId,
93
- runtime: params.prepared.runtimeTarget,
94
- runId: params.run.id,
95
- });
96
- params.prepared.runtime.billedTurnUsage = billed.turn;
97
- if (params.prepared.runtime.liveRun) {
98
- params.prepared.runtime.liveRun.billedTurnUsage = billed.turn;
99
- }
108
+ const billing = await recordCursorProviderTerminalUsage(params.prepared, outcome.kind === "finished" ? "success" : outcome.kind === "cancelled" ? "abort" : "error", waitResult.usage);
100
109
  let displayOnlyTraceBlock;
101
110
  if (params.prepared.runtimeTarget === "cloud" && isCursorRunFinishedSuccessfully(outcome)) {
102
111
  let report = { agentId: params.run.agentId, runId: params.run.id, branches: [] };
@@ -106,14 +115,14 @@ export async function awaitFinalizeCursorRunOutcome(params) {
106
115
  run: params.run,
107
116
  waitResult,
108
117
  apiKey,
109
- agentUsage: billed.agentUsage,
118
+ agentUsage: billing ? billing.status === "observed-pending-settlement" ? billing.snapshot : null : undefined,
110
119
  });
111
120
  }
112
121
  catch (error) {
113
122
  recordCursorCloudReportingError(params.sdkEventDebug, error, apiKey);
114
123
  }
115
124
  try {
116
- recordCursorCloudLifecycleRun(report, { apiKey });
125
+ params.prepared.recordCloudLifecycle(report, apiKey);
117
126
  }
118
127
  catch (error) {
119
128
  recordCursorCloudReportingError(params.sdkEventDebug, error, apiKey);
@@ -137,8 +146,8 @@ export async function awaitFinalizeCursorRunOutcome(params) {
137
146
  catch {
138
147
  // Debug reporting must never affect provider execution.
139
148
  }
140
- if (params.prepared.runtimeTarget === "local" && isCursorRunFinishedSuccessfully(outcome)) {
141
- await replayCursorTranscriptWebToolCalls(params.run.agentId, params.prepared.cwd, params.cursorAgentMessageOffset, params.prepared.sessionAgentLease.store, params.prepared.runtime.turnCoordinator, params.sdkEventDebug);
149
+ if (params.prepared.runtimeTarget === "local" && params.prepared.execution === "conversation" && isCursorRunFinishedSuccessfully(outcome)) {
150
+ await replayCursorTranscriptWebToolCalls(params.run.agentId, params.prepared.cwd, params.cursorAgentMessageOffset, params.prepared.store, params.prepared.runtime.turnCoordinator, params.sdkEventDebug);
142
151
  }
143
152
  params.prepared.runtime.turnCoordinator.discardIncompleteStartedToolCalls(outcome.incompleteTools);
144
153
  try {
@@ -147,8 +156,8 @@ export async function awaitFinalizeCursorRunOutcome(params) {
147
156
  catch {
148
157
  // Debug artifact failures must never affect provider execution.
149
158
  }
150
- if (params.prepared.runtimeTarget === "local" && params.cacheContextWindow !== false) {
151
- await cacheSdkContextWindow(params.contextWindowAgentId ?? params.run.agentId, params.modelId, params.prepared.cwd, params.prepared.sessionAgentLease.store);
159
+ if (params.prepared.runtimeTarget === "local" && params.prepared.execution === "conversation" && params.cacheContextWindow !== false) {
160
+ await cacheSdkContextWindow(params.contextWindowAgentId ?? params.run.agentId, params.modelId, params.prepared.cwd, params.prepared.store);
152
161
  }
153
162
  return { outcome, displayOnlyTraceBlock };
154
163
  }
@@ -4,32 +4,38 @@ import { installCursorMcpToolTimeoutOverride } from "./cursor-mcp-timeout-overri
4
4
  import { ensureCursorRipgrepPath } from "./cursor-ripgrep-path.js";
5
5
  import { installCursorSdkOutputFilter, suppressCursorSdkOutput } from "./cursor-sdk-output-filter.js";
6
6
  import { acquireSessionCursorAgent, buildCursorSessionSendPrompt, planCursorSessionSend, resetSessionCursorAgent, } from "./cursor-session-agent.js";
7
- import { buildCursorPrompt, estimateCursorPromptTokens } from "./context.js";
7
+ import { buildCursorPrompt, estimateCursorPromptTokens, getCursorPendingInput } from "./context.js";
8
8
  import { getCursorPromptOptions } from "./cursor-usage-accounting.js";
9
9
  import { getActiveContextToolNames } from "./cursor-context-tools.js";
10
- import { abandonSessionCursorAgent, createCursorNativeReplayId, cursorLiveRuns, getActiveCursorLiveRunForCurrentScope, getPendingCursorLiveRun, } from "./cursor-provider-live-run-drain.js";
10
+ import { abandonSessionCursorAgent, createCursorNativeReplayId, cursorLiveRuns, getActiveCursorLiveRunForCurrentScope, } from "./cursor-provider-live-run-drain.js";
11
11
  import { getCursorProviderAgentModeOrThrow, getEffectiveFastForModelId, } from "./cursor-state.js";
12
12
  import { resolveEffectiveCursorConfig } from "./cursor-runtime-state.js";
13
+ import { buildCursorCustomSubagentDefinitions } from "./cursor-custom-subagent-definitions.js";
13
14
  import { buildCursorModelSelection } from "./model-discovery.js";
14
15
  import { getEffectiveCursorSettingSources } from "./cursor-setting-sources.js";
15
16
  import { formatCursorCloudPreflightError, buildCursorCloudAgentOptions, preflightCursorCloudRuntime, } from "./cursor-cloud-options.js";
16
17
  import { inspectCursorCloudLocalState } from "./cursor-cloud-local-state.js";
17
- import { getCursorSessionName, getCursorSessionProjectTrusted } from "./cursor-session-scope.js";
18
+ import { getCursorSessionProjectTrusted } from "./cursor-session-scope.js";
18
19
  import { resolveCursorPiToolBridgeEnabled } from "./cursor-pi-tool-bridge-env.js";
19
20
  import { buildCursorToolManifestText, resolveCursorToolManifestEnabled, } from "./cursor-tool-manifest.js";
20
21
  import { isCursorNativeToolDisplayRuntimeEnabled } from "./cursor-native-tool-display-state.js";
21
- import { createCursorCloudLifecyclePersistenceError, recordCursorCloudLifecycleSafely, } from "./cursor-cloud-lifecycle.js";
22
+ import { createCursorCloudLifecyclePersistenceError } from "./cursor-cloud-lifecycle.js";
22
23
  import { MISSING_CURSOR_API_KEY_MESSAGE } from "./cursor-provider-errors.js";
23
24
  import { CursorSdkTurnCoordinator } from "./cursor-provider-turn-coordinator.js";
24
25
  import { resolveCursorApiKey } from "./cursor-api-key.js";
25
26
  import { loadCursorSdk } from "./cursor-sdk-runtime.js";
26
- function buildCursorCloudPromptContext(context, handoff) {
27
+ import { prepareCursorSummaryProviderTurn } from "./cursor-provider-turn-summary.js";
28
+ function buildCursorCloudPromptContext(context, handoff, nativeSourceRoles) {
27
29
  if (handoff === "bootstrap")
28
30
  return context;
29
31
  // Fresh cloud runs omit history, not the current Pi instructions. Replay before
30
32
  // selecting the user message, otherwise transcript-only inputs lose the prompt.
31
33
  const current = resolveCursorPiContext(context);
32
34
  const messages = getCursorConversationMessages(context);
35
+ if (nativeSourceRoles) {
36
+ const { start } = getCursorPendingInput(messages, nativeSourceRoles);
37
+ return { ...current, messages: messages.slice(start) };
38
+ }
33
39
  for (let index = messages.length - 1; index >= 0; index -= 1) {
34
40
  const message = messages[index];
35
41
  if (message.role === "user")
@@ -38,8 +44,8 @@ function buildCursorCloudPromptContext(context, handoff) {
38
44
  return { ...current, messages: messages.slice(-1) };
39
45
  }
40
46
  const CLOUD_SEND_PLAN = { mode: "bootstrap", resetAgent: false, reason: "initial" };
41
- export function resolveCursorProviderTurnConfig(cwd) {
42
- return resolveEffectiveCursorConfig({ cwd, projectTrusted: getCursorSessionProjectTrusted() });
47
+ export function resolveCursorProviderTurnConfig(cwd, projectTrusted = getCursorSessionProjectTrusted(), scopeKey) {
48
+ return resolveEffectiveCursorConfig({ cwd, projectTrusted, scopeKey });
43
49
  }
44
50
  function buildCloudCursorProviderTurnLifecycle(agent) {
45
51
  return {
@@ -60,7 +66,7 @@ function buildLocalCursorProviderTurnLifecycle(lease, scopeKey) {
60
66
  };
61
67
  }
62
68
  async function prepareCursorCloudProviderTurn(prepareParams) {
63
- const { params, cwd, resolvedApiKey, sdkEventDebug, throwIfAborted, resolvedConfig, agentMode, selection, fastEnabled } = prepareParams;
69
+ const { params, cwd, resolvedApiKey, sdkEventDebug, throwIfAborted, resolvedConfig, agentMode, selection, fastEnabled, agents, customSubagentNames } = prepareParams;
64
70
  const { model, context, options } = params;
65
71
  let restoreCursorSdkOutputFilter;
66
72
  let cloudAgentForCleanup;
@@ -78,28 +84,32 @@ async function prepareCursorCloudProviderTurn(prepareParams) {
78
84
  });
79
85
  if (!preflight.ok)
80
86
  throw new Error(formatCursorCloudPreflightError(preflight));
81
- if (getPendingCursorLiveRun(context) || getActiveCursorLiveRunForCurrentScope()) {
87
+ if (getActiveCursorLiveRunForCurrentScope(params.scope.scopeKey)) {
82
88
  throw new Error("Cursor cloud runtime cannot start while a local Cursor live run is pending; finish or abort the local run, then retry.");
83
89
  }
84
90
  const { Agent } = await loadCursorSdk();
85
91
  restoreCursorSdkOutputFilter = installCursorSdkOutputFilter();
92
+ const promptContext = buildCursorCloudPromptContext(context, resolvedConfig.cloud.contextHandoff.value, params.request.nativeSourceRoles);
93
+ const nativeSourceRoles = params.request.nativeSourceRoles;
86
94
  const promptOptions = {
87
95
  ...getCursorPromptOptions(model),
96
+ nativeSourceRoles: nativeSourceRoles?.slice(nativeSourceRoles.length - getCursorConversationMessages(promptContext).length),
88
97
  agentMode,
89
98
  includePiBridgeGuidance: false,
90
99
  includePiAskQuestionGuidance: false,
91
100
  };
92
- const prompt = buildCursorPrompt(buildCursorCloudPromptContext(context, resolvedConfig.cloud.contextHandoff.value), promptOptions);
101
+ const prompt = buildCursorPrompt(promptContext, promptOptions);
93
102
  const promptInputTokens = estimateCursorPromptTokens(prompt, promptOptions);
94
103
  const agent = await suppressCursorSdkOutput(() => Agent.create(buildCursorCloudAgentOptions({
95
104
  apiKey: resolvedApiKey,
96
105
  modelSelection: selection,
97
106
  agentMode,
98
107
  resolvedConfig,
99
- name: getCursorSessionName(),
108
+ name: params.scope.sessionName,
109
+ agents,
100
110
  })));
101
111
  cloudAgentForCleanup = agent;
102
- if (!recordCursorCloudLifecycleSafely({ agentId: agent.agentId }, resolvedApiKey)) {
112
+ if (!params.recordCloudLifecycle({ agentId: agent.agentId }, resolvedApiKey)) {
103
113
  throw createCursorCloudLifecyclePersistenceError(agent.agentId, "intent", undefined, resolvedApiKey);
104
114
  }
105
115
  sdkEventDebug?.recordProviderMeta({ runtime: "cloud", cloudAgentId: agent.agentId, phase: "agent_created" });
@@ -132,11 +142,14 @@ async function prepareCursorCloudProviderTurn(prepareParams) {
132
142
  promptOptions,
133
143
  agentMode,
134
144
  localForce: false,
145
+ ...(customSubagentNames ? { customSubagentNames } : {}),
135
146
  });
136
147
  completed = true;
137
148
  cloudAgentForCleanup = undefined;
138
149
  return {
139
150
  runtimeTarget: "cloud",
151
+ execution: "conversation",
152
+ recordCloudLifecycle: params.recordCloudLifecycle,
140
153
  agent,
141
154
  cwd,
142
155
  payload: {
@@ -169,7 +182,7 @@ async function prepareCursorCloudProviderTurn(prepareParams) {
169
182
  }
170
183
  }
171
184
  async function prepareCursorLocalProviderTurn(prepareParams) {
172
- const { params, cwd, resolvedApiKey, sdkEventDebug, throwIfAborted, resolvedConfig, agentMode, selection, fastEnabled } = prepareParams;
185
+ const { params, cwd, resolvedApiKey, sdkEventDebug, throwIfAborted, resolvedConfig, agentMode, selection, fastEnabled, agents, customSubagentNames } = prepareParams;
173
186
  const { model, context, options } = params;
174
187
  let restoreCursorSdkOutputFilter;
175
188
  let sessionAgentScopeKey;
@@ -190,13 +203,17 @@ async function prepareCursorLocalProviderTurn(prepareParams) {
190
203
  const queuedBridgeRequestsBeforeLiveRun = [];
191
204
  let liveRunForBridgeQueue;
192
205
  const sessionAgentAcquireParams = {
206
+ scope: params.scope,
207
+ bridge: params.bridge,
193
208
  apiKey: resolvedApiKey,
194
209
  agentMode,
195
210
  cwd,
196
211
  modelSelection: selection,
197
212
  settingSources,
198
213
  localSafety,
214
+ agents,
199
215
  localResume: resolvedConfig.local.resume.value,
216
+ storeRoot: resolvedConfig.local.storeRoot.value,
200
217
  useHttp1ForAgent,
201
218
  debugRecorder: sdkEventDebug,
202
219
  onBridgeToolRequest: (request) => {
@@ -217,9 +234,10 @@ async function prepareCursorLocalProviderTurn(prepareParams) {
217
234
  const buildPromptOptions = (plan) => {
218
235
  const promptOptions = {
219
236
  ...getCursorPromptOptions(model),
237
+ nativeSourceRoles: params.request.nativeSourceRoles,
220
238
  agentMode,
221
239
  includePiBridgeGuidance,
222
- includePiAskQuestionGuidance: bridgeToolNames.has("pi__cursor_ask_question"),
240
+ includePiAskQuestionGuidance: false,
223
241
  };
224
242
  if (plan.mode !== "bootstrap" || !resolveCursorToolManifestEnabled()) {
225
243
  return promptOptions;
@@ -233,7 +251,7 @@ async function prepareCursorLocalProviderTurn(prepareParams) {
233
251
  }),
234
252
  };
235
253
  };
236
- let sendPlan = planCursorSessionSend(sessionAgentLease.sendState, context);
254
+ let sendPlan = planCursorSessionSend(sessionAgentLease.sendState, context, params.request.nativeSourceRoles);
237
255
  if (sessionAgentLease.created && sessionAgentLease.resumed && sendPlan.mode === "incremental") {
238
256
  sendPlan = { mode: "bootstrap", resetAgent: false, reason: "process_resume" };
239
257
  }
@@ -245,7 +263,7 @@ async function prepareCursorLocalProviderTurn(prepareParams) {
245
263
  sessionAgentScopeKey = sessionAgentLease.scopeKey;
246
264
  bridgeToolNames = new Set(sessionAgentLease.bridgeRun?.snapshot.tools.map((tool) => tool.mcpToolName) ?? []);
247
265
  includePiBridgeGuidance = bridgeToolNames.size > 0;
248
- sendPlan = planCursorSessionSend(sessionAgentLease.sendState, context);
266
+ sendPlan = planCursorSessionSend(sessionAgentLease.sendState, context, params.request.nativeSourceRoles);
249
267
  promptOptions = buildPromptOptions(sendPlan);
250
268
  prompt = buildCursorSessionSendPrompt(context, promptOptions, sendPlan);
251
269
  }
@@ -258,7 +276,7 @@ async function prepareCursorLocalProviderTurn(prepareParams) {
258
276
  };
259
277
  const sessionBridgeRun = bridgeRun;
260
278
  const promptInputTokens = estimateCursorPromptTokens(prompt, promptOptions);
261
- const useNativeToolReplay = isCursorNativeToolDisplayRuntimeEnabled();
279
+ const useNativeToolReplay = isCursorNativeToolDisplayRuntimeEnabled(params.nativeDisplay);
262
280
  const activeToolNames = getActiveContextToolNames(context);
263
281
  sdkEventDebug?.recordProviderMeta({
264
282
  model: {
@@ -281,6 +299,7 @@ async function prepareCursorLocalProviderTurn(prepareParams) {
281
299
  activeToolNames: activeToolNames ? [...activeToolNames] : [],
282
300
  sessionAgentScopeKey,
283
301
  bridgeRunId: bridgeRun?.id,
302
+ ...(customSubagentNames ? { customSubagentNames } : {}),
284
303
  });
285
304
  const nativeReplayId = createCursorNativeReplayId();
286
305
  const textDeltas = [];
@@ -295,6 +314,7 @@ async function prepareCursorLocalProviderTurn(prepareParams) {
295
314
  promptInputTokens,
296
315
  textDeltas,
297
316
  debugRecorder: sdkEventDebug,
317
+ nativeDisplay: params.nativeDisplay,
298
318
  })
299
319
  : undefined;
300
320
  if (liveRun) {
@@ -311,6 +331,7 @@ async function prepareCursorLocalProviderTurn(prepareParams) {
311
331
  liveRun,
312
332
  useNativeToolReplay,
313
333
  activeToolNames,
334
+ registeredToolNames: params.nativeDisplay ? new Set(params.nativeDisplay.registeredNativeToolSources.keys()) : undefined,
314
335
  nativeReplayId,
315
336
  textDeltas,
316
337
  debugRecorder: sdkEventDebug,
@@ -318,6 +339,9 @@ async function prepareCursorLocalProviderTurn(prepareParams) {
318
339
  completed = true;
319
340
  return {
320
341
  runtimeTarget: "local",
342
+ execution: "conversation",
343
+ store: sessionAgentLease.store,
344
+ storeIdentity: sessionAgentLease.storeIdentity,
321
345
  agent,
322
346
  cwd,
323
347
  payload: sendPayload,
@@ -363,10 +387,15 @@ async function prepareCursorLocalProviderTurn(prepareParams) {
363
387
  export async function prepareCursorProviderTurn(prepareParams) {
364
388
  const { params, resolvedConfig } = prepareParams;
365
389
  const { model, options } = params;
366
- const agentMode = getCursorProviderAgentModeOrThrow();
367
- const fastEnabled = resolvedConfig.runtime.value === "cloud" ? undefined : getEffectiveFastForModelId(model.id);
390
+ const fastEnabled = resolvedConfig.runtime.value === "cloud" ? undefined : getEffectiveFastForModelId(model.id, params.scope.scopeKey);
368
391
  const selection = buildCursorModelSelection(model.id, options?.reasoning ?? "off", fastEnabled);
369
- const context = { ...prepareParams, agentMode, selection, fastEnabled };
392
+ if (resolvedConfig.runtime.value === "local" && params.request.purpose !== "normal") {
393
+ return prepareCursorSummaryProviderTurn(prepareParams, selection);
394
+ }
395
+ const agentMode = getCursorProviderAgentModeOrThrow(params.scope.scopeKey);
396
+ const agents = buildCursorCustomSubagentDefinitions(resolvedConfig.subagents.value);
397
+ const customSubagentNames = agents ? Object.keys(agents) : undefined;
398
+ const context = { ...prepareParams, agentMode, selection, fastEnabled, agents, customSubagentNames };
370
399
  return resolvedConfig.runtime.value === "cloud"
371
400
  ? prepareCursorCloudProviderTurn(context)
372
401
  : prepareCursorLocalProviderTurn(context);
@@ -1,6 +1,5 @@
1
1
  import { CursorLiveRunAbortError } from "./cursor-live-run-coordinator.js";
2
2
  import { drainExistingCursorLiveRunBeforeSend } from "./cursor-provider-live-run-drain.js";
3
- import { getCursorSessionCwd } from "./cursor-session-scope.js";
4
3
  import { installCursorSdkProcessErrorGuard } from "./cursor-sdk-process-error-guard.js";
5
4
  import { CursorSdkEventDebugSink } from "./cursor-sdk-event-debug.js";
6
5
  import { awaitFinalizeCursorRunOutcome } from "./cursor-provider-turn-finalize.js";
@@ -9,7 +8,7 @@ import { CursorRunFinalizer } from "./cursor-provider-run-finalizer.js";
9
8
  import { prepareCursorProviderTurn, requireCursorApiKey, resolveCursorProviderTurnConfig, } from "./cursor-provider-turn-prepare.js";
10
9
  import { sendCursorProviderTurn } from "./cursor-provider-turn-send.js";
11
10
  function requireLocalLivePreparedTurn(prepared) {
12
- if (prepared.runtimeTarget !== "local" || prepared.runtime.kind !== "live") {
11
+ if (prepared.runtimeTarget !== "local" || prepared.execution !== "conversation" || prepared.runtime.kind !== "live") {
13
12
  throw new Error("Cursor live run requires a local live prepared turn");
14
13
  }
15
14
  return prepared;
@@ -32,6 +31,7 @@ export class CursorProviderTurnRunner {
32
31
  async run(sdkProcessErrorGuard) {
33
32
  const { stream, partial, model, context, options, sdkEventDebugRef } = this.params;
34
33
  let prepared;
34
+ let started;
35
35
  let sendResult;
36
36
  let liveCompletion;
37
37
  const runFinalizer = new CursorRunFinalizer({
@@ -43,20 +43,22 @@ export class CursorProviderTurnRunner {
43
43
  });
44
44
  try {
45
45
  this.throwIfAborted();
46
- const cwd = getCursorSessionCwd();
46
+ const { scope } = this.params;
47
+ const cwd = scope.cwd;
47
48
  this.sdkEventDebug = CursorSdkEventDebugSink.maybeCreate({
48
49
  cwd,
49
50
  modelId: model.id,
50
51
  provider: model.provider,
52
+ scope,
51
53
  });
52
54
  sdkEventDebugRef.current = this.sdkEventDebug;
53
55
  this.sdkEventDebug?.recordContextSnapshot(context);
54
56
  // Resolved once here, before any drain await, so the drain decision and the
55
57
  // prepare dispatch below always act on the same config snapshot.
56
- const resolvedConfig = resolveCursorProviderTurnConfig(cwd);
58
+ const resolvedConfig = resolveCursorProviderTurnConfig(cwd, scope.projectTrusted, scope.scopeKey);
57
59
  this.runtimeTarget = resolvedConfig.runtime.value;
58
- if (resolvedConfig.runtime.value === "local") {
59
- if ((await drainExistingCursorLiveRunBeforeSend(stream, partial, model, context, options?.signal, this.sdkEventDebug)) ===
60
+ if (resolvedConfig.runtime.value === "local" && this.params.request.purpose === "normal") {
61
+ if ((await drainExistingCursorLiveRunBeforeSend(stream, partial, model, context, options?.signal, this.sdkEventDebug, scope.scopeKey, this.params.request.occupancyFloor)) ===
60
62
  "stream_ended") {
61
63
  return;
62
64
  }
@@ -71,9 +73,33 @@ export class CursorProviderTurnRunner {
71
73
  throwIfAborted: () => this.throwIfAborted(),
72
74
  resolvedConfig,
73
75
  });
76
+ const usage = await this.params.usageRecorder.start({
77
+ agent: prepared.agent,
78
+ runtime: prepared.runtimeTarget,
79
+ model: { id: model.id, provider: model.provider, cost: { ...model.cost } },
80
+ modelSelection: prepared.meta.modelSelection,
81
+ purpose: this.params.request.purpose,
82
+ ...(prepared.runtimeTarget === "local" ? { storeIdentity: prepared.storeIdentity.stateRoot } : {}),
83
+ resumed: prepared.runtimeTarget === "local" && prepared.execution === "conversation" && prepared.sessionAgentLease.resumed === true,
84
+ newlyCreated: prepared.runtimeTarget !== "local" || prepared.execution === "summary" || (prepared.sessionAgentLease.created && !prepared.sessionAgentLease.resumed),
85
+ }).catch(error => {
86
+ this.params.usageRecorder.notePersistenceFailure(error);
87
+ throw error;
88
+ });
89
+ started = { ...prepared, usage };
90
+ if (started.runtime.liveRun) {
91
+ started.runtime.liveRun.onAbandon = async () => {
92
+ try {
93
+ await usage.recordTerminal({ status: "abandon" });
94
+ }
95
+ catch (error) {
96
+ usage.notePersistenceFailure(error);
97
+ }
98
+ };
99
+ }
74
100
  sendResult = await sendCursorProviderTurn({
75
101
  params: this.params,
76
- prepared,
102
+ prepared: started,
77
103
  sdkEventDebug: this.sdkEventDebug,
78
104
  sdkProcessErrorGuard,
79
105
  throwIfAborted: () => this.throwIfAborted(),
@@ -81,7 +107,7 @@ export class CursorProviderTurnRunner {
81
107
  });
82
108
  const { send } = sendResult;
83
109
  if (prepared.runtime.kind === "live") {
84
- const livePrepared = requireLocalLivePreparedTurn(prepared);
110
+ const livePrepared = requireLocalLivePreparedTurn(started);
85
111
  liveCompletion = runFinalizer.startLiveRunCompletion({
86
112
  send,
87
113
  prepared: livePrepared,
@@ -98,7 +124,7 @@ export class CursorProviderTurnRunner {
98
124
  }
99
125
  const outcomePromise = awaitFinalizeCursorRunOutcome({
100
126
  run: send.run,
101
- prepared,
127
+ prepared: started,
102
128
  cursorAgentMessageOffset: send.cursorAgentMessageOffset,
103
129
  modelId: model.id,
104
130
  signal: options?.signal,
@@ -113,13 +139,13 @@ export class CursorProviderTurnRunner {
113
139
  const finalized = await outcomePromise;
114
140
  await runFinalizer.applyTerminalEvent({
115
141
  kind: "direct",
116
- prepared,
142
+ prepared: started,
117
143
  outcome: finalized.outcome,
118
144
  displayOnlyTraceBlock: finalized.displayOnlyTraceBlock,
119
145
  });
120
146
  }
121
147
  catch (error) {
122
- await runFinalizer.applyTerminalEvent({ kind: "error", prepared, error });
148
+ await runFinalizer.applyTerminalEvent({ kind: "error", prepared: started ?? prepared, error });
123
149
  }
124
150
  finally {
125
151
  await runFinalizer.cleanup(prepared, sendResult, liveCompletion);
@@ -1,6 +1,5 @@
1
1
  import { countCursorAgentMessages } from "./cursor-agent-message-web-tools.js";
2
- import { createCursorCloudLifecyclePersistenceError, recordCursorCloudLifecycleSafely, } from "./cursor-cloud-lifecycle.js";
3
- import { CursorLiveRunAbortError } from "./cursor-live-run-coordinator.js";
2
+ import { createCursorCloudLifecyclePersistenceError } from "./cursor-cloud-lifecycle.js";
4
3
  import { cursorLiveRuns } from "./cursor-provider-live-run-drain.js";
5
4
  import { consumeCursorLocalForceOverride } from "./cursor-runtime-state.js";
6
5
  import { recordCursorSessionAgentLineage } from "./cursor-session-agent-lineage.js";
@@ -52,9 +51,9 @@ export async function sendCursorProviderTurn(sendParams) {
52
51
  abortRegistration?.signal.addEventListener("abort", abortListener, { once: true });
53
52
  throwIfAborted();
54
53
  let cursorAgentMessageOffset;
55
- if (prepared.runtimeTarget === "local") {
54
+ if (prepared.runtimeTarget === "local" && prepared.execution === "conversation") {
56
55
  try {
57
- cursorAgentMessageOffset = await countCursorAgentMessages(agent.agentId, cwd, prepared.sessionAgentLease.store);
56
+ cursorAgentMessageOffset = await countCursorAgentMessages(agent.agentId, cwd, prepared.store);
58
57
  }
59
58
  catch (error) {
60
59
  recordDebug(() => sdkEventDebug?.recordError("cursor_agent_message_count", error));
@@ -80,6 +79,14 @@ export async function sendCursorProviderTurn(sendParams) {
80
79
  mode: meta.agentMode,
81
80
  model: meta.modelSelection,
82
81
  onDelta: (args) => {
82
+ if (args.update.type === "turn-ended") {
83
+ try {
84
+ prepared.usage.observeRawTurn(args.update.usage);
85
+ }
86
+ catch (error) {
87
+ params.usageRecorder.notePersistenceFailure(error);
88
+ }
89
+ }
83
90
  recordDebug(() => sdkEventDebug?.recordOnDelta(args.update));
84
91
  turnCoordinator.handleDelta(args.update);
85
92
  },
@@ -89,17 +96,24 @@ export async function sendCursorProviderTurn(sendParams) {
89
96
  },
90
97
  };
91
98
  throwIfAborted();
92
- if (prepared.runtimeTarget === "local" && consumeCursorLocalForceOverride(prepared.localForce)) {
99
+ if (prepared.runtimeTarget === "local" && prepared.execution === "conversation" && consumeCursorLocalForceOverride(prepared.localForce, params.scope.scopeKey)) {
93
100
  sendOptions.local = { force: true };
94
101
  }
95
102
  const runPromise = agent.send(payload, sendOptions);
96
103
  // Record at send initiation (promise created), including later reject/cancel paths.
97
- if (prepared.runtimeTarget === "local") {
98
- recordCursorSessionAgentLineage(agent.agentId);
104
+ if (prepared.runtimeTarget === "local" && prepared.execution === "conversation") {
105
+ recordCursorSessionAgentLineage(agent.agentId, params.scope.scopeKey);
99
106
  }
100
107
  const run = await runPromise;
101
108
  sdkRun = run;
102
- if (prepared.runtimeTarget === "cloud" && !recordCursorCloudLifecycleSafely({ agentId: run.agentId, runId: run.id }, resolvedApiKey)) {
109
+ runtime.sdkRun = run;
110
+ try {
111
+ await prepared.usage.recordRun({ runId: run.id, requestId: run.requestId });
112
+ }
113
+ catch (error) {
114
+ params.usageRecorder.notePersistenceFailure(error);
115
+ }
116
+ if (prepared.runtimeTarget === "cloud" && !params.recordCloudLifecycle({ agentId: run.agentId, runId: run.id }, resolvedApiKey)) {
103
117
  const cancellationConfirmed = await requestBoundedCloudRunCancellation(run);
104
118
  throw createCursorCloudLifecyclePersistenceError(run.agentId, "run", cancellationConfirmed, resolvedApiKey);
105
119
  }
@@ -122,7 +136,6 @@ export async function sendCursorProviderTurn(sendParams) {
122
136
  sdkProcessErrorGuard.suppressAbortErrors();
123
137
  liveRun?.bridgeRun?.cancel("Cursor SDK run aborted");
124
138
  await run.cancel().catch(() => { });
125
- throw new CursorLiveRunAbortError();
126
139
  }
127
140
  completed = true;
128
141
  return {
@@ -0,0 +1,89 @@
1
+ import { buildCursorSummaryPrompt, estimateCursorPromptTokens } from "./context.js";
2
+ import { configureCursorSdkHttp1 } from "./cursor-http1.js";
3
+ import { createCursorNativeReplayId } from "./cursor-provider-live-run-drain.js";
4
+ import { CursorSdkTurnCoordinator } from "./cursor-provider-turn-coordinator.js";
5
+ import { ensureCursorRipgrepPath } from "./cursor-ripgrep-path.js";
6
+ import { loadCursorSdk } from "./cursor-sdk-runtime.js";
7
+ import { installCursorSdkOutputFilter, suppressCursorSdkOutput } from "./cursor-sdk-output-filter.js";
8
+ import { buildCursorLocalAgentOptions } from "./cursor-session-agent.js";
9
+ import { openCursorSessionStoreForScope } from "./cursor-session-store.js";
10
+ import { getCursorPromptOptions } from "./cursor-usage-accounting.js";
11
+ function summaryLifecycle(agent, sessionStore) {
12
+ let disposal;
13
+ const dispose = () => disposal ??= (async () => {
14
+ try {
15
+ await agent[Symbol.asyncDispose]();
16
+ }
17
+ finally {
18
+ await sessionStore.dispose();
19
+ }
20
+ })();
21
+ return { trackRunCompletion: () => { }, commitSend: () => { }, abandon: dispose, dispose };
22
+ }
23
+ /** A native summary never enters the conversation pool or inherits its tool/mode/resume state. */
24
+ export async function prepareCursorSummaryProviderTurn(prepareParams, selection) {
25
+ const { params, cwd, resolvedApiKey, resolvedConfig, sdkEventDebug, throwIfAborted } = prepareParams;
26
+ let sessionStore;
27
+ let agent;
28
+ let restoreCursorSdkOutputFilter;
29
+ let completed = false;
30
+ try {
31
+ ensureCursorRipgrepPath();
32
+ const sdk = await loadCursorSdk();
33
+ configureCursorSdkHttp1(sdk, resolvedConfig.local.useHttp1ForAgent);
34
+ restoreCursorSdkOutputFilter = installCursorSdkOutputFilter();
35
+ sessionStore = (await openCursorSessionStoreForScope({
36
+ cwd, scopeKey: params.scope.scopeKey, persistent: false,
37
+ })).sessionStore;
38
+ throwIfAborted();
39
+ agent = await suppressCursorSdkOutput(() => sdk.Agent.create({
40
+ apiKey: resolvedApiKey,
41
+ model: selection,
42
+ mode: "agent",
43
+ tools: [],
44
+ local: buildCursorLocalAgentOptions({ cwd, store: sessionStore.store, settingSources: [] }),
45
+ }));
46
+ throwIfAborted();
47
+ const prompt = buildCursorSummaryPrompt(params.context);
48
+ const promptInputTokens = estimateCursorPromptTokens(prompt, getCursorPromptOptions(params.model));
49
+ const nativeReplayId = createCursorNativeReplayId();
50
+ const textDeltas = [];
51
+ const turnCoordinator = new CursorSdkTurnCoordinator({
52
+ stream: params.stream, partial: params.partial, cwd, resolvedApiKey,
53
+ useNativeToolReplay: false, nativeReplayId, textDeltas, debugRecorder: sdkEventDebug,
54
+ });
55
+ sdkEventDebug?.recordProviderMeta({
56
+ purpose: params.request.purpose,
57
+ runtime: "local",
58
+ summaryAgentId: agent.agentId,
59
+ model: { id: params.model.id, provider: params.model.provider, selection },
60
+ agentMode: "agent", settingSources: [], tools: [], resumedAgent: false,
61
+ });
62
+ completed = true;
63
+ return {
64
+ runtimeTarget: "local", execution: "summary", agent, cwd,
65
+ store: sessionStore.store, storeIdentity: sessionStore.identity,
66
+ payload: { text: prompt.text },
67
+ meta: {
68
+ sendPlan: { mode: "bootstrap", resetAgent: false, reason: "initial" },
69
+ prompt, bootstrap: true, promptInputTokens,
70
+ useNativeToolReplay: false, bridgeEnabled: false, nativeReplayId,
71
+ agentMode: "agent", modelSelection: selection,
72
+ },
73
+ contextWindowAgentId: agent.agentId, textDeltas, restoreCursorSdkOutputFilter,
74
+ lifecycle: summaryLifecycle(agent, sessionStore),
75
+ runtime: { kind: "direct", turnCoordinator },
76
+ };
77
+ }
78
+ finally {
79
+ if (!completed) {
80
+ try {
81
+ await agent?.[Symbol.asyncDispose]().catch(() => { });
82
+ }
83
+ finally {
84
+ await sessionStore?.dispose().catch(() => { });
85
+ restoreCursorSdkOutputFilter?.();
86
+ }
87
+ }
88
+ }
89
+ }
@@ -1,3 +1,4 @@
1
+ import { normalizeCursorToolName } from "./cursor-tool-presentation-registry.js";
1
2
  import { getToolArgs, getToolName } from "./cursor-transcript-utils.js";
2
3
  export class CursorToolCompletionLedger {
3
4
  startedToolCalls = new Map();
@@ -33,13 +34,14 @@ export class CursorToolCompletionLedger {
33
34
  return stepId;
34
35
  }
35
36
  const fingerprint = getStartedToolCallFingerprint(toolCall);
36
- for (const [callId, startedToolCall] of this.startedToolCalls) {
37
- if (getStartedToolCallFingerprint(startedToolCall) !== fingerprint)
38
- continue;
37
+ const matches = [...this.startedToolCalls].filter(([, started]) => getStartedToolCallFingerprint(started) === fingerprint);
38
+ // Identical concurrent shells cannot be joined safely without a matching ID.
39
+ if (normalizeCursorToolName(getToolName(toolCall)) === "shell" && matches.length !== 1)
40
+ return undefined;
41
+ const callId = matches[0]?.[0];
42
+ if (callId !== undefined)
39
43
  this.clearStartedToolCall(callId);
40
- return callId;
41
- }
42
- return undefined;
44
+ return callId;
43
45
  }
44
46
  recordCompletedIdentity(identity) {
45
47
  this.completedToolIdentities.add(identity);
@@ -95,5 +97,9 @@ export function getToolFingerprint(value) {
95
97
  }
96
98
  }
97
99
  export function getStartedToolCallFingerprint(toolCall) {
98
- return getToolFingerprint({ toolName: getToolName(toolCall), args: getToolArgs(toolCall) });
100
+ const name = getToolName(toolCall);
101
+ // Accept legacy shell aliases; this does not establish that the SDK emits alias-changing pairs.
102
+ // Keep exact argument matching; assistant text alone is not completion proof.
103
+ const toolName = normalizeCursorToolName(name) === "shell" ? "shell" : name;
104
+ return getToolFingerprint({ toolName, args: getToolArgs(toolCall) });
99
105
  }