pi-cursor-sdk 0.5.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 (723) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/README.md +110 -30
  3. package/dist/context.js +53 -34
  4. package/dist/cursor-api-key.js +34 -19
  5. package/dist/cursor-cloud-options.js +1 -0
  6. package/dist/cursor-config.js +59 -0
  7. package/dist/cursor-custom-store-path.js +177 -0
  8. package/dist/cursor-custom-subagent-definitions.js +14 -0
  9. package/dist/cursor-fallback-models.generated.js +1 -1
  10. package/dist/cursor-fallback-warning.js +8 -2
  11. package/dist/cursor-live-run-coordinator.js +22 -2
  12. package/dist/cursor-mcp-timeout-override.js +3 -1
  13. package/dist/cursor-pi-tool-bridge-run.js +21 -0
  14. package/dist/cursor-pi-tool-bridge-server.js +1 -1
  15. package/dist/cursor-provider-binding.js +70 -10
  16. package/dist/cursor-provider-errors.js +33 -26
  17. package/dist/cursor-provider-live-run-drain.js +10 -4
  18. package/dist/cursor-provider-run-finalizer.js +2 -1
  19. package/dist/cursor-provider-turn-prepare.js +25 -9
  20. package/dist/cursor-provider-turn-summary.js +1 -1
  21. package/dist/cursor-provider-turn-tool-ledger.js +13 -7
  22. package/dist/cursor-provider.js +2 -1
  23. package/dist/cursor-question-tool.js +5 -5
  24. package/dist/cursor-request-provenance.js +13 -2
  25. package/dist/cursor-sdk-output-filter.js +1 -1
  26. package/dist/cursor-sdk-process-error-guard.js +1 -3
  27. package/dist/cursor-sdk-runtime.js +13 -14
  28. package/dist/cursor-sdk-vendor-env.js +20 -0
  29. package/dist/cursor-session-agent-cleanup.js +29 -26
  30. package/dist/cursor-session-agent.js +38 -16
  31. package/dist/cursor-session-send-policy.js +2 -2
  32. package/dist/cursor-session-store.js +235 -45
  33. package/dist/cursor-state.js +6 -3
  34. package/dist/cursor-tool-manifest.js +1 -1
  35. package/dist/index.js +21 -19
  36. package/dist/model-discovery.js +51 -18
  37. package/dist/model-list-cache.js +12 -1
  38. package/docs/cursor-live-smoke-checklist.md +2 -2
  39. package/docs/cursor-model-ux-spec.md +70 -26
  40. package/docs/cursor-native-tool-replay.md +13 -5
  41. package/docs/cursor-native-tool-visual-audit.md +1 -1
  42. package/docs/cursor-testing-lessons.md +43 -5
  43. package/docs/cursor-tool-surfaces.md +3 -3
  44. package/node_modules/@hono/node-server/README.md +21 -10
  45. package/node_modules/@hono/node-server/dist/early-hints.cjs +1 -1
  46. package/node_modules/@hono/node-server/dist/early-hints.mjs +1 -1
  47. package/node_modules/@hono/node-server/dist/index.cjs +41 -19
  48. package/node_modules/@hono/node-server/dist/index.mjs +42 -20
  49. package/node_modules/@hono/node-server/dist/serve-static.cjs +1 -0
  50. package/node_modules/@hono/node-server/dist/serve-static.d.cts +2 -1
  51. package/node_modules/@hono/node-server/dist/serve-static.d.mts +2 -1
  52. package/node_modules/@hono/node-server/dist/serve-static.mjs +1 -0
  53. package/node_modules/@hono/node-server/package.json +3 -2
  54. package/node_modules/@modelcontextprotocol/core/dist/{auth--n_Yzytt.d.cts → auth-Anm-lwWi.d.mts} +9 -8
  55. package/node_modules/@modelcontextprotocol/core/dist/{auth-YUQV3RRv.d.mts.map → auth-Anm-lwWi.d.mts.map} +1 -1
  56. package/node_modules/@modelcontextprotocol/core/dist/{auth-CGP0BDVq.mjs → auth-BNDyLTqp.mjs} +5 -3
  57. package/node_modules/@modelcontextprotocol/core/dist/{auth-CGP0BDVq.mjs.map → auth-BNDyLTqp.mjs.map} +1 -1
  58. package/node_modules/@modelcontextprotocol/core/dist/{auth-4-zilcqg.cjs → auth-D1CeV_Jr.cjs} +5 -3
  59. package/node_modules/@modelcontextprotocol/core/dist/{auth-4-zilcqg.cjs.map → auth-D1CeV_Jr.cjs.map} +1 -1
  60. package/node_modules/@modelcontextprotocol/core/dist/{auth-YUQV3RRv.d.mts → auth-V9XJSCfa.d.cts} +9 -8
  61. package/node_modules/@modelcontextprotocol/core/dist/{auth--n_Yzytt.d.cts.map → auth-V9XJSCfa.d.cts.map} +1 -1
  62. package/node_modules/@modelcontextprotocol/core/dist/index.cjs +1 -1
  63. package/node_modules/@modelcontextprotocol/core/dist/index.d.cts +1 -1
  64. package/node_modules/@modelcontextprotocol/core/dist/index.d.mts +1 -1
  65. package/node_modules/@modelcontextprotocol/core/dist/index.mjs +1 -1
  66. package/node_modules/@modelcontextprotocol/core/dist/internal.cjs +1 -1
  67. package/node_modules/@modelcontextprotocol/core/dist/internal.d.cts +1 -1
  68. package/node_modules/@modelcontextprotocol/core/dist/internal.d.mts +1 -1
  69. package/node_modules/@modelcontextprotocol/core/dist/internal.mjs +1 -1
  70. package/node_modules/@modelcontextprotocol/core/package.json +2 -2
  71. package/node_modules/@modelcontextprotocol/hono/README.md +7 -5
  72. package/node_modules/@modelcontextprotocol/hono/dist/index.cjs.map +1 -1
  73. package/node_modules/@modelcontextprotocol/hono/dist/index.d.cts +5 -0
  74. package/node_modules/@modelcontextprotocol/hono/dist/index.d.cts.map +1 -1
  75. package/node_modules/@modelcontextprotocol/hono/dist/index.d.mts +5 -0
  76. package/node_modules/@modelcontextprotocol/hono/dist/index.d.mts.map +1 -1
  77. package/node_modules/@modelcontextprotocol/hono/dist/index.mjs.map +1 -1
  78. package/node_modules/@modelcontextprotocol/hono/package.json +4 -4
  79. package/node_modules/@modelcontextprotocol/server/README.md +1 -7
  80. package/node_modules/@modelcontextprotocol/server/dist/{createMcpHandler-Bt6U_Fqb.d.mts → createMcpHandler-D4NN8WsG.d.mts} +35 -13
  81. package/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-D4NN8WsG.d.mts.map +1 -0
  82. package/node_modules/@modelcontextprotocol/server/dist/{createMcpHandler-BLVe3qmU.d.cts → createMcpHandler-DZmmlN8e.d.cts} +35 -13
  83. package/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-DZmmlN8e.d.cts.map +1 -0
  84. package/node_modules/@modelcontextprotocol/server/dist/index.cjs +32 -5
  85. package/node_modules/@modelcontextprotocol/server/dist/index.cjs.map +1 -1
  86. package/node_modules/@modelcontextprotocol/server/dist/index.d.cts +41 -5
  87. package/node_modules/@modelcontextprotocol/server/dist/index.d.cts.map +1 -1
  88. package/node_modules/@modelcontextprotocol/server/dist/index.d.mts +41 -5
  89. package/node_modules/@modelcontextprotocol/server/dist/index.d.mts.map +1 -1
  90. package/node_modules/@modelcontextprotocol/server/dist/index.mjs +32 -5
  91. package/node_modules/@modelcontextprotocol/server/dist/index.mjs.map +1 -1
  92. package/node_modules/@modelcontextprotocol/server/dist/{mcp-DUcCQSTW.cjs → mcp-BumlNux0.cjs} +73 -23
  93. package/node_modules/@modelcontextprotocol/server/dist/mcp-BumlNux0.cjs.map +1 -0
  94. package/node_modules/@modelcontextprotocol/server/dist/{mcp-Dw2OlZ1f.mjs → mcp-DIH4cS6P.mjs} +73 -23
  95. package/node_modules/@modelcontextprotocol/server/dist/mcp-DIH4cS6P.mjs.map +1 -0
  96. package/node_modules/@modelcontextprotocol/server/dist/shimsWorkerd.cjs +1 -1
  97. package/node_modules/@modelcontextprotocol/server/dist/shimsWorkerd.mjs +1 -1
  98. package/node_modules/@modelcontextprotocol/server/dist/{src-CgFsfg3E.cjs → src-BhnGYybN.cjs} +29 -11
  99. package/node_modules/@modelcontextprotocol/server/dist/src-BhnGYybN.cjs.map +1 -0
  100. package/node_modules/@modelcontextprotocol/server/dist/{src-D-y6h4N7.mjs → src-Cqbh3MYc.mjs} +29 -11
  101. package/node_modules/@modelcontextprotocol/server/dist/src-Cqbh3MYc.mjs.map +1 -0
  102. package/node_modules/@modelcontextprotocol/server/dist/stdio.cjs +2 -2
  103. package/node_modules/@modelcontextprotocol/server/dist/stdio.d.cts +1 -1
  104. package/node_modules/@modelcontextprotocol/server/dist/stdio.d.mts +1 -1
  105. package/node_modules/@modelcontextprotocol/server/dist/stdio.mjs +2 -2
  106. package/node_modules/@modelcontextprotocol/server/package.json +4 -4
  107. package/node_modules/hono/dist/_virtual/_rolldown/runtime.js +13 -0
  108. package/node_modules/hono/dist/adapter/aws-lambda/conninfo.js +42 -23
  109. package/node_modules/hono/dist/adapter/aws-lambda/handler.js +318 -344
  110. package/node_modules/hono/dist/adapter/aws-lambda/index.js +2 -8
  111. package/node_modules/hono/dist/adapter/aws-lambda/types.js +1 -0
  112. package/node_modules/hono/dist/adapter/bun/conninfo.js +20 -25
  113. package/node_modules/hono/dist/adapter/bun/index.js +3 -13
  114. package/node_modules/hono/dist/adapter/bun/serve-static.js +27 -27
  115. package/node_modules/hono/dist/adapter/bun/server.js +11 -5
  116. package/node_modules/hono/dist/adapter/bun/ssg.js +25 -15
  117. package/node_modules/hono/dist/adapter/bun/websocket.js +61 -68
  118. package/node_modules/hono/dist/adapter/cloudflare-pages/conninfo.js +24 -9
  119. package/node_modules/hono/dist/adapter/cloudflare-pages/handler.js +59 -62
  120. package/node_modules/hono/dist/adapter/cloudflare-pages/index.js +2 -8
  121. package/node_modules/hono/dist/adapter/cloudflare-workers/conninfo.js +7 -9
  122. package/node_modules/hono/dist/adapter/cloudflare-workers/index.js +3 -8
  123. package/node_modules/hono/dist/adapter/cloudflare-workers/serve-static-module.js +5 -6
  124. package/node_modules/hono/dist/adapter/cloudflare-workers/serve-static.js +26 -20
  125. package/node_modules/hono/dist/adapter/cloudflare-workers/utils.js +21 -34
  126. package/node_modules/hono/dist/adapter/cloudflare-workers/websocket.js +31 -39
  127. package/node_modules/hono/dist/adapter/deno/conninfo.js +16 -13
  128. package/node_modules/hono/dist/adapter/deno/deno.d.js +1 -0
  129. package/node_modules/hono/dist/adapter/deno/index.js +3 -10
  130. package/node_modules/hono/dist/adapter/deno/serve-static.js +33 -38
  131. package/node_modules/hono/dist/adapter/deno/ssg.js +27 -16
  132. package/node_modules/hono/dist/adapter/deno/websocket.js +30 -30
  133. package/node_modules/hono/dist/adapter/lambda-edge/conninfo.js +7 -9
  134. package/node_modules/hono/dist/adapter/lambda-edge/handler.js +102 -101
  135. package/node_modules/hono/dist/adapter/lambda-edge/index.js +2 -6
  136. package/node_modules/hono/dist/adapter/netlify/conninfo.js +24 -9
  137. package/node_modules/hono/dist/adapter/netlify/handler.js +10 -8
  138. package/node_modules/hono/dist/adapter/netlify/index.js +3 -2
  139. package/node_modules/hono/dist/adapter/netlify/mod.js +2 -6
  140. package/node_modules/hono/dist/adapter/service-worker/handler.js +15 -19
  141. package/node_modules/hono/dist/adapter/service-worker/index.js +23 -7
  142. package/node_modules/hono/dist/adapter/service-worker/types.js +1 -0
  143. package/node_modules/hono/dist/adapter/vercel/conninfo.js +7 -10
  144. package/node_modules/hono/dist/adapter/vercel/handler.js +8 -6
  145. package/node_modules/hono/dist/adapter/vercel/index.js +2 -6
  146. package/node_modules/hono/dist/cjs/_virtual/_rolldown/runtime.js +33 -0
  147. package/node_modules/hono/dist/cjs/adapter/aws-lambda/conninfo.js +42 -44
  148. package/node_modules/hono/dist/cjs/adapter/aws-lambda/handler.js +326 -373
  149. package/node_modules/hono/dist/cjs/adapter/aws-lambda/index.js +7 -34
  150. package/node_modules/hono/dist/cjs/adapter/aws-lambda/types.js +0 -15
  151. package/node_modules/hono/dist/cjs/adapter/bun/conninfo.js +21 -47
  152. package/node_modules/hono/dist/cjs/adapter/bun/index.js +14 -45
  153. package/node_modules/hono/dist/cjs/adapter/bun/serve-static.js +29 -50
  154. package/node_modules/hono/dist/cjs/adapter/bun/server.js +11 -26
  155. package/node_modules/hono/dist/cjs/adapter/bun/ssg.js +24 -35
  156. package/node_modules/hono/dist/cjs/adapter/bun/websocket.js +63 -91
  157. package/node_modules/hono/dist/cjs/adapter/cloudflare-pages/conninfo.js +25 -31
  158. package/node_modules/hono/dist/cjs/adapter/cloudflare-pages/handler.js +61 -85
  159. package/node_modules/hono/dist/cjs/adapter/cloudflare-pages/index.js +7 -34
  160. package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/conninfo.js +8 -31
  161. package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/index.js +7 -33
  162. package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/serve-static-module.js +7 -29
  163. package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/serve-static.js +27 -42
  164. package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/utils.js +21 -55
  165. package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/websocket.js +33 -62
  166. package/node_modules/hono/dist/cjs/adapter/deno/conninfo.js +16 -34
  167. package/node_modules/hono/dist/cjs/adapter/deno/index.js +10 -38
  168. package/node_modules/hono/dist/cjs/adapter/deno/serve-static.js +33 -59
  169. package/node_modules/hono/dist/cjs/adapter/deno/ssg.js +27 -37
  170. package/node_modules/hono/dist/cjs/adapter/deno/websocket.js +32 -53
  171. package/node_modules/hono/dist/cjs/adapter/lambda-edge/conninfo.js +8 -31
  172. package/node_modules/hono/dist/cjs/adapter/lambda-edge/handler.js +102 -130
  173. package/node_modules/hono/dist/cjs/adapter/lambda-edge/index.js +5 -30
  174. package/node_modules/hono/dist/cjs/adapter/netlify/conninfo.js +25 -31
  175. package/node_modules/hono/dist/cjs/adapter/netlify/handler.js +10 -29
  176. package/node_modules/hono/dist/cjs/adapter/netlify/index.js +5 -21
  177. package/node_modules/hono/dist/cjs/adapter/netlify/mod.js +5 -30
  178. package/node_modules/hono/dist/cjs/adapter/service-worker/handler.js +16 -41
  179. package/node_modules/hono/dist/cjs/adapter/service-worker/index.js +25 -30
  180. package/node_modules/hono/dist/cjs/adapter/service-worker/types.js +0 -15
  181. package/node_modules/hono/dist/cjs/adapter/vercel/conninfo.js +8 -32
  182. package/node_modules/hono/dist/cjs/adapter/vercel/handler.js +8 -27
  183. package/node_modules/hono/dist/cjs/adapter/vercel/index.js +5 -30
  184. package/node_modules/hono/dist/cjs/client/client.js +139 -212
  185. package/node_modules/hono/dist/cjs/client/fetch-result-please.js +62 -80
  186. package/node_modules/hono/dist/cjs/client/index.js +7 -32
  187. package/node_modules/hono/dist/cjs/client/types.js +0 -15
  188. package/node_modules/hono/dist/cjs/client/utils.js +54 -92
  189. package/node_modules/hono/dist/cjs/compose.js +49 -66
  190. package/node_modules/hono/dist/cjs/context.js +379 -450
  191. package/node_modules/hono/dist/cjs/helper/accepts/accepts.js +47 -72
  192. package/node_modules/hono/dist/cjs/helper/accepts/index.js +3 -27
  193. package/node_modules/hono/dist/cjs/helper/adapter/index.js +33 -73
  194. package/node_modules/hono/dist/cjs/helper/conninfo/index.js +0 -15
  195. package/node_modules/hono/dist/cjs/helper/conninfo/types.js +0 -15
  196. package/node_modules/hono/dist/cjs/helper/cookie/index.js +75 -116
  197. package/node_modules/hono/dist/cjs/helper/css/common.js +165 -244
  198. package/node_modules/hono/dist/cjs/helper/css/index.js +136 -151
  199. package/node_modules/hono/dist/cjs/helper/dev/index.js +45 -71
  200. package/node_modules/hono/dist/cjs/helper/factory/index.js +30 -51
  201. package/node_modules/hono/dist/cjs/helper/html/index.js +32 -62
  202. package/node_modules/hono/dist/cjs/helper/proxy/index.js +113 -106
  203. package/node_modules/hono/dist/cjs/helper/route/index.js +123 -66
  204. package/node_modules/hono/dist/cjs/helper/ssg/index.js +19 -43
  205. package/node_modules/hono/dist/cjs/helper/ssg/middleware.js +56 -64
  206. package/node_modules/hono/dist/cjs/helper/ssg/plugins.js +55 -57
  207. package/node_modules/hono/dist/cjs/helper/ssg/ssg.js +196 -296
  208. package/node_modules/hono/dist/cjs/helper/ssg/utils.js +47 -90
  209. package/node_modules/hono/dist/cjs/helper/streaming/index.js +8 -35
  210. package/node_modules/hono/dist/cjs/helper/streaming/sse.js +53 -85
  211. package/node_modules/hono/dist/cjs/helper/streaming/stream.js +23 -53
  212. package/node_modules/hono/dist/cjs/helper/streaming/text.js +10 -32
  213. package/node_modules/hono/dist/cjs/helper/streaming/utils.js +13 -32
  214. package/node_modules/hono/dist/cjs/helper/testing/index.js +16 -31
  215. package/node_modules/hono/dist/cjs/helper/websocket/index.js +51 -76
  216. package/node_modules/hono/dist/cjs/hono-base.js +347 -403
  217. package/node_modules/hono/dist/cjs/hono.js +28 -42
  218. package/node_modules/hono/dist/cjs/http-exception.js +55 -56
  219. package/node_modules/hono/dist/cjs/index.js +22 -30
  220. package/node_modules/hono/dist/cjs/jsx/base.js +237 -366
  221. package/node_modules/hono/dist/cjs/jsx/children.js +16 -41
  222. package/node_modules/hono/dist/cjs/jsx/components.js +119 -192
  223. package/node_modules/hono/dist/cjs/jsx/constants.js +15 -42
  224. package/node_modules/hono/dist/cjs/jsx/context.js +144 -162
  225. package/node_modules/hono/dist/cjs/jsx/dom/client.js +49 -69
  226. package/node_modules/hono/dist/cjs/jsx/dom/components.js +23 -52
  227. package/node_modules/hono/dist/cjs/jsx/dom/context.js +39 -67
  228. package/node_modules/hono/dist/cjs/jsx/dom/css.js +143 -158
  229. package/node_modules/hono/dist/cjs/jsx/dom/hooks/index.js +55 -64
  230. package/node_modules/hono/dist/cjs/jsx/dom/index.js +114 -173
  231. package/node_modules/hono/dist/cjs/jsx/dom/intrinsic-element/components.js +282 -375
  232. package/node_modules/hono/dist/cjs/jsx/dom/jsx-dev-runtime.js +14 -49
  233. package/node_modules/hono/dist/cjs/jsx/dom/jsx-runtime.js +5 -32
  234. package/node_modules/hono/dist/cjs/jsx/dom/render.js +469 -623
  235. package/node_modules/hono/dist/cjs/jsx/dom/server.js +37 -64
  236. package/node_modules/hono/dist/cjs/jsx/dom/utils.js +7 -30
  237. package/node_modules/hono/dist/cjs/jsx/hooks/index.js +225 -318
  238. package/node_modules/hono/dist/cjs/jsx/index.js +86 -135
  239. package/node_modules/hono/dist/cjs/jsx/intrinsic-element/common.js +20 -43
  240. package/node_modules/hono/dist/cjs/jsx/intrinsic-element/components.js +117 -168
  241. package/node_modules/hono/dist/cjs/jsx/intrinsic-elements.js +0 -15
  242. package/node_modules/hono/dist/cjs/jsx/jsx-dev-runtime.js +14 -39
  243. package/node_modules/hono/dist/cjs/jsx/jsx-runtime.js +34 -68
  244. package/node_modules/hono/dist/cjs/jsx/streaming.js +123 -166
  245. package/node_modules/hono/dist/cjs/jsx/types.js +0 -15
  246. package/node_modules/hono/dist/cjs/jsx/utils.js +91 -175
  247. package/node_modules/hono/dist/cjs/middleware/basic-auth/index.js +98 -86
  248. package/node_modules/hono/dist/cjs/middleware/bearer-auth/index.js +92 -109
  249. package/node_modules/hono/dist/cjs/middleware/body-limit/index.js +66 -72
  250. package/node_modules/hono/dist/cjs/middleware/cache/index.js +153 -199
  251. package/node_modules/hono/dist/cjs/middleware/combine/index.js +135 -95
  252. package/node_modules/hono/dist/cjs/middleware/compress/index.js +73 -88
  253. package/node_modules/hono/dist/cjs/middleware/context-storage/index.js +49 -41
  254. package/node_modules/hono/dist/cjs/middleware/cors/index.js +107 -107
  255. package/node_modules/hono/dist/cjs/middleware/csrf/index.js +101 -72
  256. package/node_modules/hono/dist/cjs/middleware/etag/digest.js +58 -97
  257. package/node_modules/hono/dist/cjs/middleware/etag/index.js +71 -91
  258. package/node_modules/hono/dist/cjs/middleware/ip-restriction/index.js +161 -169
  259. package/node_modules/hono/dist/cjs/middleware/jsx-renderer/index.js +99 -77
  260. package/node_modules/hono/dist/cjs/middleware/jwk/index.js +3 -27
  261. package/node_modules/hono/dist/cjs/middleware/jwk/jwk.js +118 -135
  262. package/node_modules/hono/dist/cjs/middleware/jwt/index.js +9 -38
  263. package/node_modules/hono/dist/cjs/middleware/jwt/jwt.js +120 -141
  264. package/node_modules/hono/dist/cjs/middleware/language/index.js +7 -35
  265. package/node_modules/hono/dist/cjs/middleware/language/language.js +184 -182
  266. package/node_modules/hono/dist/cjs/middleware/logger/index.js +41 -62
  267. package/node_modules/hono/dist/cjs/middleware/method-not-allowed/index.js +82 -88
  268. package/node_modules/hono/dist/cjs/middleware/method-override/index.js +101 -102
  269. package/node_modules/hono/dist/cjs/middleware/mount/index.js +71 -0
  270. package/node_modules/hono/dist/cjs/middleware/powered-by/index.js +23 -30
  271. package/node_modules/hono/dist/cjs/middleware/pretty-json/index.js +38 -42
  272. package/node_modules/hono/dist/cjs/middleware/request-id/index.js +3 -27
  273. package/node_modules/hono/dist/cjs/middleware/request-id/request-id.js +34 -42
  274. package/node_modules/hono/dist/cjs/middleware/secure-headers/index.js +4 -29
  275. package/node_modules/hono/dist/cjs/middleware/secure-headers/permissions-policy.js +0 -15
  276. package/node_modules/hono/dist/cjs/middleware/secure-headers/secure-headers.js +142 -174
  277. package/node_modules/hono/dist/cjs/middleware/serve-static/index.js +56 -93
  278. package/node_modules/hono/dist/cjs/middleware/serve-static/path.js +15 -38
  279. package/node_modules/hono/dist/cjs/middleware/timeout/index.js +40 -45
  280. package/node_modules/hono/dist/cjs/middleware/timing/index.js +7 -35
  281. package/node_modules/hono/dist/cjs/middleware/timing/timing.js +177 -118
  282. package/node_modules/hono/dist/cjs/middleware/trailing-slash/index.js +85 -58
  283. package/node_modules/hono/dist/cjs/preset/quick.js +18 -37
  284. package/node_modules/hono/dist/cjs/preset/tiny.js +15 -33
  285. package/node_modules/hono/dist/cjs/request/constants.js +5 -27
  286. package/node_modules/hono/dist/cjs/request.js +334 -346
  287. package/node_modules/hono/dist/cjs/router/linear-router/index.js +3 -27
  288. package/node_modules/hono/dist/cjs/router/linear-router/router.js +95 -143
  289. package/node_modules/hono/dist/cjs/router/pattern-router/index.js +3 -27
  290. package/node_modules/hono/dist/cjs/router/pattern-router/router.js +41 -63
  291. package/node_modules/hono/dist/cjs/router/reg-exp-router/index.js +7 -34
  292. package/node_modules/hono/dist/cjs/router/reg-exp-router/matcher.js +18 -45
  293. package/node_modules/hono/dist/cjs/router/reg-exp-router/node.js +91 -135
  294. package/node_modules/hono/dist/cjs/router/reg-exp-router/prepared-router.js +92 -161
  295. package/node_modules/hono/dist/cjs/router/reg-exp-router/router.js +98 -147
  296. package/node_modules/hono/dist/cjs/router/reg-exp-router/trie.js +73 -89
  297. package/node_modules/hono/dist/cjs/router/smart-router/index.js +3 -27
  298. package/node_modules/hono/dist/cjs/router/smart-router/router.js +49 -79
  299. package/node_modules/hono/dist/cjs/router/trie-router/index.js +3 -27
  300. package/node_modules/hono/dist/cjs/router/trie-router/node.js +134 -186
  301. package/node_modules/hono/dist/cjs/router/trie-router/router.js +15 -39
  302. package/node_modules/hono/dist/cjs/router/utils.js +5 -27
  303. package/node_modules/hono/dist/cjs/router.js +37 -37
  304. package/node_modules/hono/dist/cjs/types.js +5 -28
  305. package/node_modules/hono/dist/cjs/utils/accept.js +177 -225
  306. package/node_modules/hono/dist/cjs/utils/basic-auth.js +16 -40
  307. package/node_modules/hono/dist/cjs/utils/body.js +84 -110
  308. package/node_modules/hono/dist/cjs/utils/buffer.js +43 -91
  309. package/node_modules/hono/dist/cjs/utils/color.js +35 -44
  310. package/node_modules/hono/dist/cjs/utils/compress.js +11 -26
  311. package/node_modules/hono/dist/cjs/utils/concurrent.js +29 -59
  312. package/node_modules/hono/dist/cjs/utils/constants.js +7 -26
  313. package/node_modules/hono/dist/cjs/utils/cookie.js +107 -177
  314. package/node_modules/hono/dist/cjs/utils/crypto.js +30 -61
  315. package/node_modules/hono/dist/cjs/utils/encode.js +31 -48
  316. package/node_modules/hono/dist/cjs/utils/filepath.js +23 -54
  317. package/node_modules/hono/dist/cjs/utils/handler.js +11 -33
  318. package/node_modules/hono/dist/cjs/utils/headers.js +0 -15
  319. package/node_modules/hono/dist/cjs/utils/html.js +96 -137
  320. package/node_modules/hono/dist/cjs/utils/http-status.js +0 -15
  321. package/node_modules/hono/dist/cjs/utils/ipaddr.js +213 -286
  322. package/node_modules/hono/dist/cjs/utils/jwt/index.js +14 -27
  323. package/node_modules/hono/dist/cjs/utils/jwt/jwa.js +25 -42
  324. package/node_modules/hono/dist/cjs/utils/jwt/jws.js +119 -199
  325. package/node_modules/hono/dist/cjs/utils/jwt/jwt.js +122 -206
  326. package/node_modules/hono/dist/cjs/utils/jwt/types.js +122 -159
  327. package/node_modules/hono/dist/cjs/utils/jwt/utf8.js +9 -28
  328. package/node_modules/hono/dist/cjs/utils/mime.js +75 -101
  329. package/node_modules/hono/dist/cjs/utils/stream.js +88 -111
  330. package/node_modules/hono/dist/cjs/utils/types.js +0 -15
  331. package/node_modules/hono/dist/cjs/utils/url.js +185 -234
  332. package/node_modules/hono/dist/cjs/validator/index.js +3 -27
  333. package/node_modules/hono/dist/cjs/validator/utils.js +0 -15
  334. package/node_modules/hono/dist/cjs/validator/validator.js +60 -103
  335. package/node_modules/hono/dist/client/client.js +138 -197
  336. package/node_modules/hono/dist/client/fetch-result-please.js +59 -56
  337. package/node_modules/hono/dist/client/index.js +3 -7
  338. package/node_modules/hono/dist/client/types.js +1 -0
  339. package/node_modules/hono/dist/client/utils.js +51 -68
  340. package/node_modules/hono/dist/compose.js +49 -45
  341. package/node_modules/hono/dist/context.js +376 -426
  342. package/node_modules/hono/dist/helper/accepts/accepts.js +47 -51
  343. package/node_modules/hono/dist/helper/accepts/index.js +1 -4
  344. package/node_modules/hono/dist/helper/adapter/index.js +33 -52
  345. package/node_modules/hono/dist/helper/conninfo/index.js +1 -0
  346. package/node_modules/hono/dist/helper/conninfo/types.js +1 -0
  347. package/node_modules/hono/dist/helper/cookie/index.js +74 -94
  348. package/node_modules/hono/dist/helper/css/common.js +167 -225
  349. package/node_modules/hono/dist/helper/css/index.js +132 -137
  350. package/node_modules/hono/dist/helper/dev/index.js +44 -49
  351. package/node_modules/hono/dist/helper/factory/index.js +27 -27
  352. package/node_modules/hono/dist/helper/html/index.js +30 -39
  353. package/node_modules/hono/dist/helper/proxy/index.js +116 -88
  354. package/node_modules/hono/dist/helper/route/index.js +121 -43
  355. package/node_modules/hono/dist/helper/ssg/index.js +3 -18
  356. package/node_modules/hono/dist/helper/ssg/middleware.js +53 -40
  357. package/node_modules/hono/dist/helper/ssg/plugins.js +55 -36
  358. package/node_modules/hono/dist/helper/ssg/ssg.js +198 -283
  359. package/node_modules/hono/dist/helper/ssg/utils.js +53 -75
  360. package/node_modules/hono/dist/helper/streaming/index.js +2 -8
  361. package/node_modules/hono/dist/helper/streaming/sse.js +50 -61
  362. package/node_modules/hono/dist/helper/streaming/stream.js +22 -31
  363. package/node_modules/hono/dist/helper/streaming/text.js +9 -10
  364. package/node_modules/hono/dist/helper/streaming/utils.js +9 -12
  365. package/node_modules/hono/dist/helper/testing/index.js +16 -10
  366. package/node_modules/hono/dist/helper/websocket/index.js +49 -53
  367. package/node_modules/hono/dist/hono-base.js +344 -379
  368. package/node_modules/hono/dist/hono.js +27 -20
  369. package/node_modules/hono/dist/http-exception.js +53 -33
  370. package/node_modules/hono/dist/index.js +19 -6
  371. package/node_modules/hono/dist/jsx/base.js +231 -340
  372. package/node_modules/hono/dist/jsx/children.js +16 -20
  373. package/node_modules/hono/dist/jsx/components.js +118 -170
  374. package/node_modules/hono/dist/jsx/constants.js +9 -15
  375. package/node_modules/hono/dist/jsx/context.js +153 -150
  376. package/node_modules/hono/dist/jsx/dom/client.js +45 -48
  377. package/node_modules/hono/dist/jsx/dom/components.js +21 -29
  378. package/node_modules/hono/dist/jsx/dom/context.js +37 -44
  379. package/node_modules/hono/dist/jsx/dom/css.js +142 -147
  380. package/node_modules/hono/dist/jsx/dom/hooks/index.js +52 -40
  381. package/node_modules/hono/dist/jsx/dom/index.js +71 -134
  382. package/node_modules/hono/dist/jsx/dom/intrinsic-element/components.js +275 -359
  383. package/node_modules/hono/dist/jsx/dom/jsx-dev-runtime.js +14 -18
  384. package/node_modules/hono/dist/jsx/dom/jsx-runtime.js +2 -8
  385. package/node_modules/hono/dist/jsx/dom/render.js +492 -631
  386. package/node_modules/hono/dist/jsx/dom/server.js +32 -32
  387. package/node_modules/hono/dist/jsx/dom/utils.js +6 -8
  388. package/node_modules/hono/dist/jsx/hooks/index.js +236 -308
  389. package/node_modules/hono/dist/jsx/index.js +45 -98
  390. package/node_modules/hono/dist/jsx/intrinsic-element/common.js +20 -22
  391. package/node_modules/hono/dist/jsx/intrinsic-element/components.js +113 -154
  392. package/node_modules/hono/dist/jsx/intrinsic-elements.js +1 -0
  393. package/node_modules/hono/dist/jsx/jsx-dev-runtime.js +12 -16
  394. package/node_modules/hono/dist/jsx/jsx-runtime.js +29 -42
  395. package/node_modules/hono/dist/jsx/streaming.js +120 -142
  396. package/node_modules/hono/dist/jsx/types.js +1 -0
  397. package/node_modules/hono/dist/jsx/utils.js +105 -168
  398. package/node_modules/hono/dist/middleware/basic-auth/index.js +96 -63
  399. package/node_modules/hono/dist/middleware/bearer-auth/index.js +93 -89
  400. package/node_modules/hono/dist/middleware/body-limit/index.js +66 -51
  401. package/node_modules/hono/dist/middleware/cache/index.js +165 -190
  402. package/node_modules/hono/dist/middleware/combine/index.js +134 -73
  403. package/node_modules/hono/dist/middleware/compress/index.js +75 -69
  404. package/node_modules/hono/dist/middleware/context-storage/index.js +49 -19
  405. package/node_modules/hono/dist/middleware/cors/index.js +107 -86
  406. package/node_modules/hono/dist/middleware/csrf/index.js +103 -53
  407. package/node_modules/hono/dist/middleware/etag/digest.js +59 -77
  408. package/node_modules/hono/dist/middleware/etag/index.js +71 -70
  409. package/node_modules/hono/dist/middleware/ip-restriction/index.js +163 -158
  410. package/node_modules/hono/dist/middleware/jsx-renderer/index.js +97 -54
  411. package/node_modules/hono/dist/middleware/jwk/index.js +1 -4
  412. package/node_modules/hono/dist/middleware/jwk/jwk.js +116 -112
  413. package/node_modules/hono/dist/middleware/jwt/index.js +2 -10
  414. package/node_modules/hono/dist/middleware/jwt/jwt.js +114 -114
  415. package/node_modules/hono/dist/middleware/language/index.js +2 -15
  416. package/node_modules/hono/dist/middleware/language/language.js +180 -157
  417. package/node_modules/hono/dist/middleware/logger/index.js +43 -37
  418. package/node_modules/hono/dist/middleware/method-not-allowed/index.js +81 -66
  419. package/node_modules/hono/dist/middleware/method-override/index.js +101 -81
  420. package/node_modules/hono/dist/middleware/mount/index.js +70 -0
  421. package/node_modules/hono/dist/middleware/powered-by/index.js +23 -9
  422. package/node_modules/hono/dist/middleware/pretty-json/index.js +39 -22
  423. package/node_modules/hono/dist/middleware/request-id/index.js +1 -4
  424. package/node_modules/hono/dist/middleware/request-id/request-id.js +33 -20
  425. package/node_modules/hono/dist/middleware/secure-headers/index.js +1 -5
  426. package/node_modules/hono/dist/middleware/secure-headers/permissions-policy.js +1 -0
  427. package/node_modules/hono/dist/middleware/secure-headers/secure-headers.js +144 -155
  428. package/node_modules/hono/dist/middleware/serve-static/index.js +56 -72
  429. package/node_modules/hono/dist/middleware/serve-static/path.js +15 -17
  430. package/node_modules/hono/dist/middleware/timeout/index.js +40 -23
  431. package/node_modules/hono/dist/middleware/timing/index.js +2 -9
  432. package/node_modules/hono/dist/middleware/timing/timing.js +177 -97
  433. package/node_modules/hono/dist/middleware/trailing-slash/index.js +85 -37
  434. package/node_modules/hono/dist/preset/quick.js +17 -15
  435. package/node_modules/hono/dist/preset/tiny.js +14 -11
  436. package/node_modules/hono/dist/request/constants.js +4 -5
  437. package/node_modules/hono/dist/request.js +328 -319
  438. package/node_modules/hono/dist/router/linear-router/index.js +1 -4
  439. package/node_modules/hono/dist/router/linear-router/router.js +93 -120
  440. package/node_modules/hono/dist/router/pattern-router/index.js +1 -4
  441. package/node_modules/hono/dist/router/pattern-router/router.js +39 -40
  442. package/node_modules/hono/dist/router/reg-exp-router/index.js +1 -7
  443. package/node_modules/hono/dist/router/reg-exp-router/matcher.js +17 -23
  444. package/node_modules/hono/dist/router/reg-exp-router/node.js +87 -110
  445. package/node_modules/hono/dist/router/reg-exp-router/prepared-router.js +89 -137
  446. package/node_modules/hono/dist/router/reg-exp-router/router.js +92 -129
  447. package/node_modules/hono/dist/router/reg-exp-router/trie.js +69 -64
  448. package/node_modules/hono/dist/router/smart-router/index.js +1 -4
  449. package/node_modules/hono/dist/router/smart-router/router.js +46 -55
  450. package/node_modules/hono/dist/router/trie-router/index.js +1 -4
  451. package/node_modules/hono/dist/router/trie-router/node.js +131 -162
  452. package/node_modules/hono/dist/router/trie-router/router.js +11 -14
  453. package/node_modules/hono/dist/router/utils.js +4 -5
  454. package/node_modules/hono/dist/router.js +35 -14
  455. package/node_modules/hono/dist/types/adapter/aws-lambda/conninfo.d.ts +4 -1
  456. package/node_modules/hono/dist/types/adapter/aws-lambda/handler.d.ts +150 -104
  457. package/node_modules/hono/dist/types/adapter/aws-lambda/index.d.ts +4 -8
  458. package/node_modules/hono/dist/types/adapter/aws-lambda/types.d.ts +152 -122
  459. package/node_modules/hono/dist/types/adapter/bun/conninfo.d.ts +4 -1
  460. package/node_modules/hono/dist/types/adapter/bun/index.d.ts +6 -10
  461. package/node_modules/hono/dist/types/adapter/bun/serve-static.d.ts +7 -2
  462. package/node_modules/hono/dist/types/adapter/bun/server.d.ts +4 -5
  463. package/node_modules/hono/dist/types/adapter/bun/ssg.d.ts +5 -1
  464. package/node_modules/hono/dist/types/adapter/bun/websocket.d.ts +31 -16
  465. package/node_modules/hono/dist/types/adapter/cloudflare-pages/conninfo.d.ts +4 -1
  466. package/node_modules/hono/dist/types/adapter/cloudflare-pages/handler.d.ts +29 -17
  467. package/node_modules/hono/dist/types/adapter/cloudflare-pages/index.d.ts +3 -7
  468. package/node_modules/hono/dist/types/adapter/cloudflare-workers/conninfo.d.ts +6 -1
  469. package/node_modules/hono/dist/types/adapter/cloudflare-workers/index.d.ts +4 -7
  470. package/node_modules/hono/dist/types/adapter/cloudflare-workers/serve-static-module.d.ts +5 -2
  471. package/node_modules/hono/dist/types/adapter/cloudflare-workers/serve-static.d.ts +10 -5
  472. package/node_modules/hono/dist/types/adapter/cloudflare-workers/utils.d.ts +10 -2
  473. package/node_modules/hono/dist/types/adapter/cloudflare-workers/websocket.d.ts +6 -1
  474. package/node_modules/hono/dist/types/adapter/deno/conninfo.d.ts +4 -1
  475. package/node_modules/hono/dist/types/adapter/deno/deno.d.ts +1 -0
  476. package/node_modules/hono/dist/types/adapter/deno/index.d.ts +5 -8
  477. package/node_modules/hono/dist/types/adapter/deno/serve-static.d.ts +7 -2
  478. package/node_modules/hono/dist/types/adapter/deno/ssg.d.ts +5 -1
  479. package/node_modules/hono/dist/types/adapter/deno/websocket.d.ts +6 -1
  480. package/node_modules/hono/dist/types/adapter/lambda-edge/conninfo.d.ts +6 -1
  481. package/node_modules/hono/dist/types/adapter/lambda-edge/handler.d.ts +83 -57
  482. package/node_modules/hono/dist/types/adapter/lambda-edge/index.d.ts +3 -7
  483. package/node_modules/hono/dist/types/adapter/netlify/conninfo.d.ts +4 -1
  484. package/node_modules/hono/dist/types/adapter/netlify/handler.d.ts +6 -1
  485. package/node_modules/hono/dist/types/adapter/netlify/index.d.ts +3 -5
  486. package/node_modules/hono/dist/types/adapter/netlify/mod.d.ts +3 -2
  487. package/node_modules/hono/dist/types/adapter/service-worker/handler.d.ts +9 -7
  488. package/node_modules/hono/dist/types/adapter/service-worker/index.d.ts +7 -9
  489. package/node_modules/hono/dist/types/adapter/service-worker/types.d.ts +12 -7
  490. package/node_modules/hono/dist/types/adapter/vercel/conninfo.d.ts +6 -1
  491. package/node_modules/hono/dist/types/adapter/vercel/handler.d.ts +6 -1
  492. package/node_modules/hono/dist/types/adapter/vercel/index.d.ts +3 -6
  493. package/node_modules/hono/dist/types/client/client.d.ts +5 -3
  494. package/node_modules/hono/dist/types/client/fetch-result-please.d.ts +21 -19
  495. package/node_modules/hono/dist/types/client/index.d.ts +5 -7
  496. package/node_modules/hono/dist/types/client/types.d.ts +134 -159
  497. package/node_modules/hono/dist/types/client/utils.d.ts +6 -4
  498. package/node_modules/hono/dist/types/compose.d.ts +4 -2
  499. package/node_modules/hono/dist/types/context.d.ts +335 -335
  500. package/node_modules/hono/dist/types/helper/accepts/accepts.d.ts +11 -9
  501. package/node_modules/hono/dist/types/helper/accepts/index.d.ts +2 -5
  502. package/node_modules/hono/dist/types/helper/adapter/index.d.ts +4 -6
  503. package/node_modules/hono/dist/types/helper/conninfo/index.d.ts +2 -5
  504. package/node_modules/hono/dist/types/helper/conninfo/types.d.ts +25 -23
  505. package/node_modules/hono/dist/types/helper/cookie/index.d.ts +10 -12
  506. package/node_modules/hono/dist/types/helper/css/common.d.ts +11 -9
  507. package/node_modules/hono/dist/types/helper/css/index.d.ts +26 -28
  508. package/node_modules/hono/dist/types/helper/dev/index.d.ts +10 -12
  509. package/node_modules/hono/dist/types/helper/factory/index.d.ts +26 -73
  510. package/node_modules/hono/dist/types/helper/html/index.d.ts +4 -7
  511. package/node_modules/hono/dist/types/helper/proxy/index.d.ts +19 -21
  512. package/node_modules/hono/dist/types/helper/route/index.d.ts +4 -2
  513. package/node_modules/hono/dist/types/helper/ssg/index.d.ts +4 -7
  514. package/node_modules/hono/dist/types/helper/ssg/middleware.d.ts +8 -6
  515. package/node_modules/hono/dist/types/helper/ssg/plugins.d.ts +3 -1
  516. package/node_modules/hono/dist/types/helper/ssg/ssg.d.ts +38 -36
  517. package/node_modules/hono/dist/types/helper/ssg/utils.d.ts +5 -3
  518. package/node_modules/hono/dist/types/helper/streaming/index.d.ts +4 -8
  519. package/node_modules/hono/dist/types/helper/streaming/sse.d.ts +10 -8
  520. package/node_modules/hono/dist/types/helper/streaming/stream.d.ts +4 -2
  521. package/node_modules/hono/dist/types/helper/streaming/text.d.ts +4 -2
  522. package/node_modules/hono/dist/types/helper/streaming/utils.d.ts +2 -0
  523. package/node_modules/hono/dist/types/helper/testing/index.d.ts +7 -9
  524. package/node_modules/hono/dist/types/helper/websocket/index.d.ts +30 -33
  525. package/node_modules/hono/dist/types/hono-base.d.ts +210 -210
  526. package/node_modules/hono/dist/types/hono.d.ts +11 -10
  527. package/node_modules/hono/dist/types/http-exception.d.ts +20 -22
  528. package/node_modules/hono/dist/types/index.d.ts +6 -37
  529. package/node_modules/hono/dist/types/jsx/base.d.ts +37 -35
  530. package/node_modules/hono/dist/types/jsx/children.d.ts +8 -6
  531. package/node_modules/hono/dist/types/jsx/components.d.ts +8 -5
  532. package/node_modules/hono/dist/types/jsx/constants.d.ts +2 -0
  533. package/node_modules/hono/dist/types/jsx/context.d.ts +9 -6
  534. package/node_modules/hono/dist/types/jsx/dom/client.d.ts +9 -10
  535. package/node_modules/hono/dist/types/jsx/dom/components.d.ts +9 -6
  536. package/node_modules/hono/dist/types/jsx/dom/context.d.ts +3 -1
  537. package/node_modules/hono/dist/types/jsx/dom/css.d.ts +27 -30
  538. package/node_modules/hono/dist/types/jsx/dom/hooks/index.d.ts +11 -12
  539. package/node_modules/hono/dist/types/jsx/dom/index.d.ts +79 -83
  540. package/node_modules/hono/dist/types/jsx/dom/intrinsic-element/components.d.ts +9 -5
  541. package/node_modules/hono/dist/types/jsx/dom/jsx-dev-runtime.d.ts +4 -6
  542. package/node_modules/hono/dist/types/jsx/dom/jsx-runtime.d.ts +3 -7
  543. package/node_modules/hono/dist/types/jsx/dom/render.d.ts +32 -50
  544. package/node_modules/hono/dist/types/jsx/dom/server.d.ts +87 -85
  545. package/node_modules/hono/dist/types/jsx/dom/utils.d.ts +2 -0
  546. package/node_modules/hono/dist/types/jsx/hooks/index.d.ts +16 -16
  547. package/node_modules/hono/dist/types/jsx/index.d.ts +71 -73
  548. package/node_modules/hono/dist/types/jsx/intrinsic-element/common.d.ts +3 -1
  549. package/node_modules/hono/dist/types/jsx/intrinsic-element/components.d.ts +7 -4
  550. package/node_modules/hono/dist/types/jsx/intrinsic-elements.d.ts +708 -708
  551. package/node_modules/hono/dist/types/jsx/jsx-dev-runtime.d.ts +4 -7
  552. package/node_modules/hono/dist/types/jsx/jsx-runtime.d.ts +7 -10
  553. package/node_modules/hono/dist/types/jsx/streaming.d.ts +9 -10
  554. package/node_modules/hono/dist/types/jsx/types.d.ts +12 -13
  555. package/node_modules/hono/dist/types/jsx/utils.d.ts +2 -0
  556. package/node_modules/hono/dist/types/middleware/basic-auth/index.d.ts +17 -19
  557. package/node_modules/hono/dist/types/middleware/bearer-auth/index.d.ts +46 -48
  558. package/node_modules/hono/dist/types/middleware/body-limit/index.d.ts +6 -8
  559. package/node_modules/hono/dist/types/middleware/cache/index.d.ts +13 -15
  560. package/node_modules/hono/dist/types/middleware/combine/index.d.ts +4 -6
  561. package/node_modules/hono/dist/types/middleware/compress/index.d.ts +9 -10
  562. package/node_modules/hono/dist/types/middleware/context-storage/index.d.ts +4 -6
  563. package/node_modules/hono/dist/types/middleware/cors/index.d.ts +10 -12
  564. package/node_modules/hono/dist/types/middleware/csrf/index.d.ts +6 -8
  565. package/node_modules/hono/dist/types/middleware/etag/digest.d.ts +2 -0
  566. package/node_modules/hono/dist/types/middleware/etag/index.d.ts +6 -8
  567. package/node_modules/hono/dist/types/middleware/ip-restriction/index.d.ts +11 -12
  568. package/node_modules/hono/dist/types/middleware/jsx-renderer/index.d.ts +11 -11
  569. package/node_modules/hono/dist/types/middleware/jwk/index.d.ts +2 -1
  570. package/node_modules/hono/dist/types/middleware/jwk/jwk.d.ts +20 -23
  571. package/node_modules/hono/dist/types/middleware/jwt/index.d.ts +7 -6
  572. package/node_modules/hono/dist/types/middleware/jwt/jwt.d.ts +28 -30
  573. package/node_modules/hono/dist/types/middleware/language/index.d.ts +6 -5
  574. package/node_modules/hono/dist/types/middleware/language/language.d.ts +42 -44
  575. package/node_modules/hono/dist/types/middleware/logger/index.d.ts +3 -5
  576. package/node_modules/hono/dist/types/middleware/method-not-allowed/index.d.ts +7 -9
  577. package/node_modules/hono/dist/types/middleware/method-override/index.d.ts +14 -16
  578. package/node_modules/hono/dist/types/middleware/mount/index.d.ts +46 -0
  579. package/node_modules/hono/dist/types/middleware/powered-by/index.d.ts +8 -10
  580. package/node_modules/hono/dist/types/middleware/pretty-json/index.d.ts +18 -20
  581. package/node_modules/hono/dist/types/middleware/request-id/index.d.ts +6 -5
  582. package/node_modules/hono/dist/types/middleware/request-id/request-id.d.ts +9 -11
  583. package/node_modules/hono/dist/types/middleware/secure-headers/index.d.ts +6 -6
  584. package/node_modules/hono/dist/types/middleware/secure-headers/permissions-policy.d.ts +2 -0
  585. package/node_modules/hono/dist/types/middleware/secure-headers/secure-headers.d.ts +55 -57
  586. package/node_modules/hono/dist/types/middleware/serve-static/index.d.ts +24 -24
  587. package/node_modules/hono/dist/types/middleware/serve-static/path.d.ts +2 -0
  588. package/node_modules/hono/dist/types/middleware/timeout/index.d.ts +5 -7
  589. package/node_modules/hono/dist/types/middleware/timing/index.d.ts +6 -5
  590. package/node_modules/hono/dist/types/middleware/timing/timing.d.ts +17 -20
  591. package/node_modules/hono/dist/types/middleware/trailing-slash/index.d.ts +35 -37
  592. package/node_modules/hono/dist/types/preset/quick.d.ts +6 -9
  593. package/node_modules/hono/dist/types/preset/tiny.d.ts +6 -9
  594. package/node_modules/hono/dist/types/request/constants.d.ts +2 -0
  595. package/node_modules/hono/dist/types/request.d.ts +288 -286
  596. package/node_modules/hono/dist/types/router/linear-router/index.d.ts +2 -5
  597. package/node_modules/hono/dist/types/router/linear-router/router.d.ts +7 -5
  598. package/node_modules/hono/dist/types/router/pattern-router/index.d.ts +2 -5
  599. package/node_modules/hono/dist/types/router/pattern-router/router.d.ts +7 -5
  600. package/node_modules/hono/dist/types/router/reg-exp-router/index.d.ts +3 -6
  601. package/node_modules/hono/dist/types/router/reg-exp-router/matcher.d.ts +3 -1
  602. package/node_modules/hono/dist/types/router/reg-exp-router/node.d.ts +6 -4
  603. package/node_modules/hono/dist/types/router/reg-exp-router/prepared-router.d.ts +11 -10
  604. package/node_modules/hono/dist/types/router/reg-exp-router/router.d.ts +10 -9
  605. package/node_modules/hono/dist/types/router/reg-exp-router/trie.d.ts +7 -5
  606. package/node_modules/hono/dist/types/router/smart-router/index.d.ts +2 -5
  607. package/node_modules/hono/dist/types/router/smart-router/router.d.ts +11 -9
  608. package/node_modules/hono/dist/types/router/trie-router/index.d.ts +2 -5
  609. package/node_modules/hono/dist/types/router/trie-router/node.d.ts +6 -4
  610. package/node_modules/hono/dist/types/router/trie-router/router.d.ts +7 -5
  611. package/node_modules/hono/dist/types/router/utils.d.ts +2 -0
  612. package/node_modules/hono/dist/types/router.d.ts +23 -22
  613. package/node_modules/hono/dist/types/types.d.ts +146 -505
  614. package/node_modules/hono/dist/types/utils/accept.d.ts +5 -3
  615. package/node_modules/hono/dist/types/utils/basic-auth.d.ts +4 -2
  616. package/node_modules/hono/dist/types/utils/body.d.ts +46 -50
  617. package/node_modules/hono/dist/types/utils/buffer.d.ts +7 -5
  618. package/node_modules/hono/dist/types/utils/color.d.ts +2 -0
  619. package/node_modules/hono/dist/types/utils/compress.d.ts +2 -0
  620. package/node_modules/hono/dist/types/utils/concurrent.d.ts +6 -4
  621. package/node_modules/hono/dist/types/utils/constants.d.ts +2 -0
  622. package/node_modules/hono/dist/types/utils/cookie.d.ts +20 -18
  623. package/node_modules/hono/dist/types/utils/crypto.d.ts +5 -7
  624. package/node_modules/hono/dist/types/utils/encode.d.ts +2 -0
  625. package/node_modules/hono/dist/types/utils/filepath.d.ts +5 -3
  626. package/node_modules/hono/dist/types/utils/handler.d.ts +2 -0
  627. package/node_modules/hono/dist/types/utils/headers.d.ts +2 -0
  628. package/node_modules/hono/dist/types/utils/html.d.ts +11 -9
  629. package/node_modules/hono/dist/types/utils/http-status.d.ts +2 -0
  630. package/node_modules/hono/dist/types/utils/ipaddr.d.ts +4 -6
  631. package/node_modules/hono/dist/types/utils/jwt/index.d.ts +18 -12
  632. package/node_modules/hono/dist/types/utils/jwt/jwa.d.ts +15 -13
  633. package/node_modules/hono/dist/types/utils/jwt/jws.d.ts +4 -7
  634. package/node_modules/hono/dist/types/utils/jwt/jwt.d.ts +26 -29
  635. package/node_modules/hono/dist/types/utils/jwt/types.d.ts +48 -45
  636. package/node_modules/hono/dist/types/utils/jwt/utf8.d.ts +2 -0
  637. package/node_modules/hono/dist/types/utils/mime.d.ts +60 -57
  638. package/node_modules/hono/dist/types/utils/stream.d.ts +27 -25
  639. package/node_modules/hono/dist/types/utils/types.d.ts +14 -26
  640. package/node_modules/hono/dist/types/utils/url.d.ts +2 -0
  641. package/node_modules/hono/dist/types/validator/index.d.ts +3 -7
  642. package/node_modules/hono/dist/types/validator/utils.d.ts +6 -8
  643. package/node_modules/hono/dist/types/validator/validator.d.ts +11 -9
  644. package/node_modules/hono/dist/types.js +4 -6
  645. package/node_modules/hono/dist/utils/accept.js +185 -212
  646. package/node_modules/hono/dist/utils/basic-auth.js +18 -21
  647. package/node_modules/hono/dist/utils/body.js +87 -92
  648. package/node_modules/hono/dist/utils/buffer.js +44 -71
  649. package/node_modules/hono/dist/utils/color.js +33 -21
  650. package/node_modules/hono/dist/utils/compress.js +11 -5
  651. package/node_modules/hono/dist/utils/concurrent.js +29 -38
  652. package/node_modules/hono/dist/utils/constants.js +7 -5
  653. package/node_modules/hono/dist/utils/cookie.js +114 -163
  654. package/node_modules/hono/dist/utils/crypto.js +30 -40
  655. package/node_modules/hono/dist/utils/encode.js +30 -26
  656. package/node_modules/hono/dist/utils/filepath.js +23 -33
  657. package/node_modules/hono/dist/utils/handler.js +10 -11
  658. package/node_modules/hono/dist/utils/headers.js +1 -0
  659. package/node_modules/hono/dist/utils/html.js +97 -117
  660. package/node_modules/hono/dist/utils/http-status.js +1 -0
  661. package/node_modules/hono/dist/utils/ipaddr.js +227 -279
  662. package/node_modules/hono/dist/utils/jwt/index.js +12 -4
  663. package/node_modules/hono/dist/utils/jwt/jwa.js +24 -20
  664. package/node_modules/hono/dist/utils/jwt/jws.js +115 -174
  665. package/node_modules/hono/dist/utils/jwt/jwt.js +120 -198
  666. package/node_modules/hono/dist/utils/jwt/types.js +79 -95
  667. package/node_modules/hono/dist/utils/jwt/utf8.js +9 -7
  668. package/node_modules/hono/dist/utils/mime.js +74 -79
  669. package/node_modules/hono/dist/utils/stream.js +86 -88
  670. package/node_modules/hono/dist/utils/types.js +1 -0
  671. package/node_modules/hono/dist/utils/url.js +187 -215
  672. package/node_modules/hono/dist/validator/index.js +1 -4
  673. package/node_modules/hono/dist/validator/utils.js +1 -0
  674. package/node_modules/hono/dist/validator/validator.js +61 -83
  675. package/node_modules/hono/package.json +35 -27
  676. package/package.json +16 -14
  677. package/scripts/lib/cursor-sdk-output-filter.d.mts +1 -0
  678. package/scripts/lib/cursor-sdk-output-filter.mjs +1 -0
  679. package/scripts/platform-smoke/artifacts.mjs +7 -1
  680. package/shared/cursor-sdk-output-filter.d.mts +3 -0
  681. package/shared/cursor-sdk-output-filter.mjs +117 -44
  682. package/src/context.ts +57 -33
  683. package/src/cursor-api-key.ts +37 -17
  684. package/src/cursor-cloud-options.ts +2 -0
  685. package/src/cursor-config.ts +76 -0
  686. package/src/cursor-custom-store-path.ts +151 -0
  687. package/src/cursor-custom-subagent-definitions.ts +21 -0
  688. package/src/cursor-fallback-models.generated.ts +1 -1
  689. package/src/cursor-fallback-warning.ts +7 -3
  690. package/src/cursor-live-run-coordinator.ts +21 -2
  691. package/src/cursor-mcp-timeout-override.ts +3 -1
  692. package/src/cursor-pi-tool-bridge-run.ts +21 -0
  693. package/src/cursor-pi-tool-bridge-server.ts +1 -2
  694. package/src/cursor-pi-tool-bridge-types.ts +3 -0
  695. package/src/cursor-provider-binding.ts +70 -11
  696. package/src/cursor-provider-errors.ts +32 -28
  697. package/src/cursor-provider-live-run-drain.ts +9 -4
  698. package/src/cursor-provider-run-finalizer.ts +2 -1
  699. package/src/cursor-provider-turn-prepare.ts +28 -13
  700. package/src/cursor-provider-turn-summary.ts +1 -1
  701. package/src/cursor-provider-turn-tool-ledger.ts +12 -7
  702. package/src/cursor-provider.ts +3 -1
  703. package/src/cursor-question-tool.ts +5 -5
  704. package/src/cursor-request-provenance.ts +18 -3
  705. package/src/cursor-sdk-output-filter.ts +2 -0
  706. package/src/cursor-sdk-process-error-guard.ts +1 -2
  707. package/src/cursor-sdk-runtime.ts +14 -15
  708. package/src/cursor-sdk-vendor-env.ts +22 -0
  709. package/src/cursor-session-agent-cleanup.ts +28 -27
  710. package/src/cursor-session-agent.ts +44 -17
  711. package/src/cursor-session-send-policy.ts +2 -2
  712. package/src/cursor-session-store.ts +259 -53
  713. package/src/cursor-state.ts +7 -2
  714. package/src/cursor-tool-manifest.ts +1 -1
  715. package/src/index.ts +19 -19
  716. package/src/model-discovery.ts +62 -23
  717. package/src/model-list-cache.ts +11 -1
  718. package/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-BLVe3qmU.d.cts.map +0 -1
  719. package/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-Bt6U_Fqb.d.mts.map +0 -1
  720. package/node_modules/@modelcontextprotocol/server/dist/mcp-DUcCQSTW.cjs.map +0 -1
  721. package/node_modules/@modelcontextprotocol/server/dist/mcp-Dw2OlZ1f.mjs.map +0 -1
  722. package/node_modules/@modelcontextprotocol/server/dist/src-CgFsfg3E.cjs.map +0 -1
  723. package/node_modules/@modelcontextprotocol/server/dist/src-D-y6h4N7.mjs.map +0 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hono",
3
- "version": "4.13.9",
3
+ "version": "4.13.13",
4
4
  "description": "Web framework built on Web Standards",
5
5
  "main": "dist/cjs/index.js",
6
6
  "type": "module",
@@ -11,29 +11,31 @@
11
11
  "!dist/**/*.tsbuildinfo"
12
12
  ],
13
13
  "scripts": {
14
- "test": "tsc -p tsconfig.spec.json && vitest --run",
15
- "test:watch": "vitest --watch",
14
+ "test": "tsc -p tsconfig.spec.json && vp test --run",
15
+ "test:watch": "vp test --watch",
16
16
  "test:deno": "deno test --allow-read --allow-env --allow-write --allow-net -c runtime-tests/deno/deno.json runtime-tests/deno && deno test --no-lock -c runtime-tests/deno-jsx/deno.precompile.json runtime-tests/deno-jsx && deno test --no-lock -c runtime-tests/deno-jsx/deno.react-jsx.json runtime-tests/deno-jsx",
17
- "test:bun": "bun test --jsx-import-source ../../src/jsx runtime-tests/bun/*",
18
- "test:fastly": "vitest --run --project fastly",
19
- "test:node": "vitest --run --project node",
20
- "test:workerd": "vitest --run --project workerd",
21
- "test:lambda": "vitest --run --project lambda",
22
- "test:lambda-edge": "vitest --run --project lambda-edge",
23
- "test:all": "bun run test && bun test:deno && bun test:bun",
24
- "lint": "eslint src runtime-tests build perf-measures benchmarks",
25
- "lint:fix": "eslint src runtime-tests build perf-measures benchmarks --fix",
26
- "format": "prettier --check --cache \"src/**/*.{js,ts,tsx}\" \"runtime-tests/**/*.{js,ts,tsx}\" \"build/**/*.{js,ts,tsx}\" \"perf-measures/**/*.{js,ts,tsx}\" \"benchmarks/**/*.{js,ts,tsx}\"",
27
- "format:fix": "prettier --write --cache --cache-strategy metadata \"src/**/*.{js,ts,tsx}\" \"runtime-tests/**/*.{js,ts,tsx}\" \"build/**/*.{js,ts,tsx}\" \"perf-measures/**/*.{js,ts,tsx}\" \"benchmarks/**/*.{js,ts,tsx}\"",
17
+ "test:bun": "bun test --jsx-import-source ../../src/jsx runtime-tests/bun",
18
+ "test:fastly": "vp test --run --project fastly",
19
+ "test:node": "vp test --run --project node",
20
+ "test:workerd": "vp test --run --project workerd",
21
+ "test:all": "pnpm run test && pnpm run test:deno && pnpm run test:bun",
22
+ "check": "vp check",
23
+ "check:fix": "vp check --fix",
24
+ "lint": "vp lint src runtime-tests build perf-measures benchmarks adapters",
25
+ "lint:fix": "vp lint --fix src runtime-tests build perf-measures benchmarks adapters",
26
+ "format": "vp fmt --check \"src/**/*.{js,ts,tsx}\" \"runtime-tests/**/*.{js,ts,tsx}\" \"build/**/*.{js,ts,tsx}\" \"perf-measures/**/*.{js,ts,tsx}\" \"benchmarks/**/*.{js,ts,tsx}\" \"adapters/**/*.{js,ts,tsx}\"",
27
+ "format:fix": "vp fmt \"src/**/*.{js,ts,tsx}\" \"runtime-tests/**/*.{js,ts,tsx}\" \"build/**/*.{js,ts,tsx}\" \"perf-measures/**/*.{js,ts,tsx}\" \"benchmarks/**/*.{js,ts,tsx}\" \"adapters/**/*.{js,ts,tsx}\"",
28
28
  "editorconfig-checker": "editorconfig-checker",
29
29
  "copy:package.cjs.json": "cp ./package.cjs.json ./dist/cjs/package.json && cp ./package.cjs.json ./dist/types/package.json",
30
- "build": "bun run --shell bun remove-dist && bun ./build/build.ts && bun run copy:package.cjs.json",
31
- "postbuild": "publint",
32
- "watch": "bun run --shell bun remove-dist && bun ./build/build.ts --watch && bun run copy:package.cjs.json",
33
- "coverage": "vitest --run --coverage",
34
- "prerelease": "bun test:deno && bun run build",
30
+ "build": "pnpm run remove-dist && vp pack && pnpm run copy:package.cjs.json && publint",
31
+ "watch": "pnpm run remove-dist && vp pack --watch && pnpm run copy:package.cjs.json",
32
+ "coverage": "vp test --run --coverage",
33
+ "prerelease": "pnpm run test:deno && pnpm run build",
35
34
  "release": "np --no-publish",
36
- "remove-dist": "rm -rf dist"
35
+ "remove-dist": "rm -rf dist",
36
+ "build:adapters": "pnpm -r --filter \"./adapters/*\" run build",
37
+ "test:adapters": "pnpm -r --filter \"./adapters/*\" run test",
38
+ "release:adapter": "node ./build/release-adapter.ts"
37
39
  },
38
40
  "exports": {
39
41
  ".": {
@@ -101,6 +103,11 @@
101
103
  "import": "./dist/helper/route/index.js",
102
104
  "require": "./dist/cjs/helper/route/index.js"
103
105
  },
106
+ "./mount": {
107
+ "types": "./dist/types/middleware/mount/index.d.ts",
108
+ "import": "./dist/middleware/mount/index.js",
109
+ "require": "./dist/cjs/middleware/mount/index.js"
110
+ },
104
111
  "./cookie": {
105
112
  "types": "./dist/types/helper/cookie/index.d.ts",
106
113
  "import": "./dist/helper/cookie/index.js",
@@ -455,6 +462,9 @@
455
462
  "route": [
456
463
  "./dist/types/helper/route"
457
464
  ],
465
+ "mount": [
466
+ "./dist/types/middleware/mount"
467
+ ],
458
468
  "cookie": [
459
469
  "./dist/types/helper/cookie"
460
470
  ],
@@ -674,32 +684,30 @@
674
684
  "nodejs"
675
685
  ],
676
686
  "devDependencies": {
677
- "@hono/eslint-config": "^2.1.1",
678
687
  "@hono/node-server": "^2.0.12",
679
688
  "@types/jsdom": "^21.1.7",
680
689
  "@types/node": "^24.3.0",
681
690
  "@types/ws": "^8.18.1",
682
691
  "@typescript/native-preview": "7.0.0-dev.20260210.1",
683
- "@vitest/coverage-v8": "^4.1.7",
692
+ "@vitest/coverage-v8": "5.0.1",
684
693
  "bun-types": "^1.2.20",
685
694
  "editorconfig-checker": "6.2.0",
686
695
  "esbuild": "^0.27.1",
687
- "eslint": "^9.39.3",
688
696
  "jsdom": "22.1.0",
689
697
  "msw": "^2.6.0",
690
698
  "np": "11.2.1",
691
- "oxc-parser": "^0.96.0",
692
699
  "pkg-pr-new": "^0.0.53",
693
- "prettier": "3.7.4",
694
700
  "publint": "0.3.15",
701
+ "rolldown": "^1.2.10",
695
702
  "typescript": "^6.0.3",
696
703
  "vite-plugin-fastly-js-compute": "^0.4.2",
697
- "vitest": "^4.1.9",
704
+ "vite-plus": "1.0.0",
705
+ "vitest": "5.0.1",
698
706
  "wrangler": "4.107.0",
699
707
  "ws": "^8.21.0",
700
708
  "zod": "^3.23.8"
701
709
  },
702
- "packageManager": "bun@1.2.20",
710
+ "packageManager": "pnpm@12.6.0",
703
711
  "engines": {
704
712
  "node": ">=16.9.0"
705
713
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-cursor-sdk",
3
- "version": "0.5.0",
3
+ "version": "0.5.2",
4
4
  "description": "pi provider extension backed by @cursor/sdk local and cloud agents",
5
5
  "author": "Mitch Fultz (https://github.com/fitchmultz)",
6
6
  "license": "MIT",
@@ -120,7 +120,7 @@
120
120
  "node": ">=24"
121
121
  },
122
122
  "scripts": {
123
- "check:compat": "npm run build && npm run verify && node --test test/ci-compatibility.test.mjs test/native-provider.test.mjs test/native-cursor-flow.test.mjs",
123
+ "check:compat": "npm run build && npm run verify && node --test test/ci-compatibility.test.mjs test/native-provider.test.mjs test/native-cursor-flow.test.mjs test/native-cursor-prompt.test.mjs",
124
124
  "build": "node ./scripts/build.mjs",
125
125
  "prepare": "node ./scripts/prepare.mjs",
126
126
  "typecheck": "npm run typecheck:src && npm run typecheck:tests && npm run typecheck:replay-compile",
@@ -161,11 +161,11 @@
161
161
  "smoke:platform:all": "npm run smoke:platform:doctor && node scripts/platform-smoke.mjs run --target macos,ubuntu,windows-native"
162
162
  },
163
163
  "dependencies": {
164
- "@cursor/sdk": "1.0.32",
165
- "@hono/node-server": "2.1.1",
166
- "@modelcontextprotocol/hono": "2.0.1",
167
- "@modelcontextprotocol/server": "2.1.0",
168
- "hono": "4.13.9"
164
+ "@cursor/sdk": "1.0.36",
165
+ "@hono/node-server": "2.1.3",
166
+ "@modelcontextprotocol/hono": "2.0.2",
167
+ "@modelcontextprotocol/server": "2.3.1",
168
+ "hono": "4.13.13"
169
169
  },
170
170
  "bundledDependencies": [
171
171
  "@hono/node-server",
@@ -180,18 +180,20 @@
180
180
  "typebox": "*"
181
181
  },
182
182
  "devDependencies": {
183
- "@earendil-works/pi-ai": "0.99.1",
184
- "@earendil-works/pi-coding-agent": "0.99.1",
185
- "@earendil-works/pi-tui": "0.99.1",
186
- "@modelcontextprotocol/client": "2.1.0",
187
- "@types/node": "24.19.0",
183
+ "@connectrpc/connect": "2.2.0",
184
+ "@earendil-works/pi-ai": "1.0.4",
185
+ "@earendil-works/pi-coding-agent": "1.0.4",
186
+ "@earendil-works/pi-tui": "1.0.4",
187
+ "@modelcontextprotocol/client": "2.3.1",
188
+ "@types/node": "24.19.1",
188
189
  "@typescript/typescript6": "6.0.2",
189
190
  "@xterm/xterm": "6.0.0",
190
191
  "node-pty": "1.1.0",
191
192
  "playwright": "1.63.0",
192
- "typebox": "1.3.27",
193
+ "typebox": "1.3.36",
193
194
  "typescript": "7.0.2",
194
- "vitest": "5.0.2"
195
+ "vitest": "5.0.3",
196
+ "yaml": "2.9.0"
195
197
  },
196
198
  "pi": {
197
199
  "extensions": [
@@ -1,5 +1,6 @@
1
1
  export {
2
2
  CURSOR_SDK_STARTUP_NOISE_PATTERNS,
3
+ withCursorSdkOutputNoticeHandler,
3
4
  installCursorSdkOutputFilter,
4
5
  isCursorSdkOutputSuppressed,
5
6
  isCursorSdkStartupNoise,
@@ -1,5 +1,6 @@
1
1
  export {
2
2
  CURSOR_SDK_STARTUP_NOISE_PATTERNS,
3
+ withCursorSdkOutputNoticeHandler,
3
4
  installCursorSdkOutputFilter,
4
5
  isCursorSdkOutputSuppressed,
5
6
  isCursorSdkStartupNoise,
@@ -324,7 +324,13 @@ function compressPlatformArtifactBundle(bundle) {
324
324
  if (!validatePlatformArtifactBundle(bundle)) throw new Error("platform artifact bundle exceeds decoded limits");
325
325
  const serialized = Buffer.from(JSON.stringify(bundle));
326
326
  if (serialized.length > MAX_INFLATED_BUNDLE_JSON_BYTES) throw new Error("platform artifact bundle exceeds inflated JSON limit");
327
- const compressed = gzipSync(serialized, { level: 9 });
327
+ let compressed;
328
+ try {
329
+ compressed = gzipSync(serialized, { level: 9, maxOutputLength: MAX_COMPRESSED_BUNDLE_BYTES });
330
+ } catch (error) {
331
+ if (error?.code === "ERR_BUFFER_TOO_LARGE") throw new Error("platform artifact bundle exceeds compressed limit");
332
+ throw error;
333
+ }
328
334
  if (compressed.length > MAX_COMPRESSED_BUNDLE_BYTES) throw new Error("platform artifact bundle exceeds compressed limit");
329
335
  return compressed;
330
336
  }
@@ -1,5 +1,8 @@
1
1
  export declare const CURSOR_SDK_STARTUP_NOISE_PATTERNS: readonly string[];
2
+ export type CursorSdkCapabilityNotice = "outsidePlugin" | "parserUnavailable";
3
+ export type CursorSdkOutputNoticeHandler = (kind: CursorSdkCapabilityNotice, message: string) => void | boolean;
2
4
  export declare function isCursorSdkOutputSuppressed(): boolean;
3
5
  export declare function suppressCursorSdkOutput<T>(operation: () => T): T;
6
+ export declare function withCursorSdkOutputNoticeHandler<T>(handler: CursorSdkOutputNoticeHandler | undefined, operation: () => T): T;
4
7
  export declare function isCursorSdkStartupNoise(text: string): boolean;
5
8
  export declare function installCursorSdkOutputFilter(): () => void;
@@ -1,17 +1,34 @@
1
1
  import { AsyncLocalStorage } from "node:async_hooks";
2
+ import { isUtf8 } from "node:buffer";
3
+ import { StringDecoder } from "node:string_decoder";
4
+ import { stripVTControlCharacters } from "node:util";
2
5
 
3
6
  const cursorSdkOutputSuppression = new AsyncLocalStorage();
7
+ const noticeOwner = new AsyncLocalStorage();
8
+ // ponytail: larger frames pass unchanged. Raise this cap for a captured larger
9
+ // SDK frame, or use a public SDK sink when unbounded suppression is required.
10
+ const MAX_CANDIDATE_BYTES = 16 * 1024;
11
+ const PARSER_WARNING = "shell-parser: tree-sitter natives are unavailable in this artifact; shell command analysis degrades to parsingFailed";
12
+ const PLUGIN_PREFIX = "[local-plugins-bootstrap] loadUserLocalPlugin ";
13
+ const HOOK_NOTICES = [
14
+ ...["startup", "resume", "clear", "compact"].map(trigger => `[hooks] SessionStart trigger matcher "${trigger}" is not supported in Cursor, hooks will fire for all triggers`),
15
+ ...["manual", "auto"].map(trigger => `[hooks] PreCompact trigger matcher "${trigger}" is not supported in Cursor, hooks will fire for all triggers`),
16
+ '[hooks] Tool "Glob" is not supported in Cursor and will be ignored',
17
+ ];
4
18
 
5
19
  export const CURSOR_SDK_STARTUP_NOISE_PATTERNS = [
6
- "[hooks]",
7
- "managed_skills.",
20
+ "managed_skills.startup_inventory",
21
+ "managed_skills.removed",
8
22
  "CursorPluginsAgentSkillsService load completed",
9
23
  "LocalCursorRulesService load completed",
10
24
  "AgentSkillsCursorRulesService load completed",
11
- "Error initializing ignore mapping for",
12
- "Ripgrep path not configured. Call configureRipgrepPath() at startup.",
13
25
  ];
14
26
 
27
+ const CURSOR_SDK_CAPABILITY_NOTICES = {
28
+ outsidePlugin: "Cursor skipped a local plugin because its symlink points outside the local plugin directory. Install it inside that directory to enable it.",
29
+ parserUnavailable: "Cursor shell analysis is degraded because native parsers are unavailable (parsingFailed). Check the native parser installation or CURSOR_TREE_SITTER_VENDOR_DIR.",
30
+ };
31
+
15
32
  export function isCursorSdkOutputSuppressed() {
16
33
  return cursorSdkOutputSuppression.getStore() === true;
17
34
  }
@@ -20,67 +37,123 @@ export function suppressCursorSdkOutput(operation) {
20
37
  return cursorSdkOutputSuppression.run(true, operation);
21
38
  }
22
39
 
40
+ /** Attribution follows the request's async work, including overlapping native sessions. */
41
+ export function withCursorSdkOutputNoticeHandler(handler, operation) {
42
+ return noticeOwner.run(handler, operation);
43
+ }
44
+
45
+ function classify(text) {
46
+ if (text.replace(/\x1b\[[\d;]*m/g, "").includes("\x1b")) return;
47
+ const line = stripVTControlCharacters(text).replace(/\r?\n$/, "");
48
+ if (line === PARSER_WARNING) return "parserUnavailable";
49
+ if (/^\[local-plugins-bootstrap\] loadUserLocalPlugin [^\r\n]+ rejected: symlink target [^\r\n]+ is outside [^\r\n]+(?: \{[^\r\n]*\})?$/.test(line)) return "outsidePlugin";
50
+ if (HOOK_NOTICES.includes(line)) return "noise";
51
+ const info = /^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d\.\d{3} INFO (.+?)(?: ctx=[^\s]+)?(?: meta=\{[^\r\n]*\})?$/.exec(line);
52
+ if (info && CURSOR_SDK_STARTUP_NOISE_PATTERNS.includes(info[1])) return "noise";
53
+ }
54
+
55
+ // ponytail: framed text cannot attribute an identical complete SDK signature to
56
+ // its emitter. Upgrade to a public SDK logger/sink when strict attribution exists.
23
57
  export function isCursorSdkStartupNoise(text) {
24
- return CURSOR_SDK_STARTUP_NOISE_PATTERNS.some((pattern) => text.includes(pattern));
58
+ return classify(text) === "noise";
59
+ }
60
+
61
+ function possibleDiagnostic(text) {
62
+ // Only SGR may lead a diagnostic; Pi cursor/prompt controls forward immediately.
63
+ const withoutSgr = text.replace(/\x1b\[[\d;]*m/g, "");
64
+ const plain = stripVTControlCharacters(withoutSgr.replace(/\x1b(?:\[[\d;]*)?$/, ""));
65
+ if (withoutSgr.includes("\x1b") && !/\x1b(?:\[[\d;]*)?$/.test(withoutSgr)) return false;
66
+ if (!plain) return true;
67
+ if (HOOK_NOTICES.some(prefix => prefix.startsWith(plain) || plain === `${prefix}\r`)) return true;
68
+ if (PARSER_WARNING.startsWith(plain) || plain === `${PARSER_WARNING}\r`) return true;
69
+ if (PLUGIN_PREFIX.startsWith(plain) || plain.startsWith(PLUGIN_PREFIX)) return true;
70
+ const timestamp = "00:00:00.000 INFO ";
71
+ const normalized = plain.replace(/\d/g, "0");
72
+ if (timestamp.startsWith(normalized)) return true;
73
+ if (!normalized.startsWith(timestamp)) return false;
74
+ const message = plain.slice(timestamp.length);
75
+ return CURSOR_SDK_STARTUP_NOISE_PATTERNS.some(prefix => prefix.startsWith(message) || message === prefix || message.startsWith(`${prefix} `));
25
76
  }
26
77
 
27
78
  function createFilteredProcessWrite(write, stream) {
28
- return (chunk, encodingOrCallback, callback) => {
29
- const text = typeof chunk === "string" ? chunk : Buffer.from(chunk).toString("utf8");
30
- if (isCursorSdkOutputSuppressed() || isCursorSdkStartupNoise(text)) {
31
- const done = typeof encodingOrCallback === "function" ? encodingOrCallback : callback;
32
- done?.();
33
- return true;
79
+ let pending = [], size = 0, text = "", decoder = new StringDecoder("utf8");
80
+ let owner, suppressed = false;
81
+ let active = true;
82
+ function reset() {
83
+ pending = []; size = 0; text = ""; decoder = new StringDecoder("utf8"); owner = undefined; suppressed = false;
84
+ }
85
+ function finish(output) {
86
+ const original = Buffer.concat(pending);
87
+ const kind = isUtf8(original) ? classify(text + decoder.end()) : undefined;
88
+ const handler = owner, wasSuppressed = suppressed;
89
+ reset();
90
+ let handled = kind === "noise";
91
+ if (kind && kind !== "noise" && handler) {
92
+ // A failed native notice must not turn a capability warning into silence.
93
+ try {
94
+ handled = cursorSdkOutputSuppression.run(false, () => handler(kind, CURSOR_SDK_CAPABILITY_NOTICES[kind])) !== false;
95
+ } catch { handled = false; }
96
+ }
97
+ if (!handled && (kind || !wasSuppressed)) output.push(original);
98
+ }
99
+ const filteredWrite = (chunk, encodingOrCallback, callback) => {
100
+ if (!active) return write.call(stream, chunk, encodingOrCallback, callback);
101
+ if (typeof chunk !== "string" && !(chunk instanceof Uint8Array)) return write.call(stream, chunk, encodingOrCallback, callback);
102
+ const bytes = typeof chunk === "string" ? Buffer.from(chunk, typeof encodingOrCallback === "string" ? encodingOrCallback : "utf8") : Buffer.from(chunk);
103
+ const output = [];
104
+ for (let offset = 0; offset < bytes.length;) {
105
+ const newline = bytes.indexOf(10, offset);
106
+ const end = newline < 0 ? bytes.length : newline + 1;
107
+ const part = bytes.subarray(offset, end);
108
+ // A write invocation is also a frame boundary after unknown bytes have
109
+ // forwarded: Pi's native footer/prompt need not end with a newline.
110
+ if (size === 0) { owner = noticeOwner.getStore(); suppressed = isCursorSdkOutputSuppressed(); }
111
+ pending.push(part); size += part.length;
112
+ if (size <= MAX_CANDIDATE_BYTES) text += decoder.write(part);
113
+ if (size > MAX_CANDIDATE_BYTES || !text || (newline < 0 && !possibleDiagnostic(text))) {
114
+ if (!suppressed) output.push(...pending);
115
+ reset();
116
+ } else if (newline >= 0) finish(output);
117
+ offset = end;
34
118
  }
35
- return write.call(stream, chunk, encodingOrCallback, callback);
119
+ const done = typeof encodingOrCallback === "function" ? encodingOrCallback : callback;
120
+ if (output.length) return write.call(stream, Buffer.concat(output), done);
121
+ if (done) process.nextTick(done);
122
+ return true;
36
123
  };
37
- }
38
-
39
- function createFilteredConsoleMethod(method) {
40
- return (...args) => {
41
- const text = args.map((arg) => (typeof arg === "string" ? arg : String(arg))).join(" ");
42
- if (isCursorSdkOutputSuppressed() || isCursorSdkStartupNoise(text)) return;
43
- method(...args);
124
+ return {
125
+ write: filteredWrite,
126
+ restore() {
127
+ active = false;
128
+ const output = [];
129
+ if (size) finish(output);
130
+ if (output.length) write.call(stream, Buffer.concat(output));
131
+ },
44
132
  };
45
133
  }
46
134
 
47
135
  let activeOutputFilterInstalls = 0;
48
136
  let outputFilterOriginals;
137
+ let sinks;
49
138
 
50
139
  export function installCursorSdkOutputFilter() {
51
140
  if (activeOutputFilterInstalls === 0) {
52
- outputFilterOriginals = {
53
- stdoutWrite: process.stdout.write,
54
- stderrWrite: process.stderr.write,
55
- consoleLog: console.log,
56
- consoleInfo: console.info,
57
- consoleWarn: console.warn,
58
- consoleError: console.error,
59
- consoleDebug: console.debug,
60
- };
61
- process.stdout.write = createFilteredProcessWrite(outputFilterOriginals.stdoutWrite, process.stdout);
62
- process.stderr.write = createFilteredProcessWrite(outputFilterOriginals.stderrWrite, process.stderr);
63
- console.log = createFilteredConsoleMethod(outputFilterOriginals.consoleLog);
64
- console.info = createFilteredConsoleMethod(outputFilterOriginals.consoleInfo);
65
- console.warn = createFilteredConsoleMethod(outputFilterOriginals.consoleWarn);
66
- console.error = createFilteredConsoleMethod(outputFilterOriginals.consoleError);
67
- console.debug = createFilteredConsoleMethod(outputFilterOriginals.consoleDebug);
141
+ outputFilterOriginals = { stdoutWrite: process.stdout.write, stderrWrite: process.stderr.write };
142
+ sinks = [createFilteredProcessWrite(outputFilterOriginals.stdoutWrite, process.stdout), createFilteredProcessWrite(outputFilterOriginals.stderrWrite, process.stderr)];
143
+ process.stdout.write = sinks[0].write;
144
+ process.stderr.write = sinks[1].write;
68
145
  }
69
146
  activeOutputFilterInstalls += 1;
70
-
71
147
  let restored = false;
72
148
  return () => {
73
149
  if (restored) return;
74
150
  restored = true;
75
- activeOutputFilterInstalls = Math.max(activeOutputFilterInstalls - 1, 0);
76
- if (activeOutputFilterInstalls > 0 || !outputFilterOriginals) return;
151
+ activeOutputFilterInstalls -= 1;
152
+ if (activeOutputFilterInstalls > 0) return;
77
153
  process.stdout.write = outputFilterOriginals.stdoutWrite;
78
154
  process.stderr.write = outputFilterOriginals.stderrWrite;
79
- console.log = outputFilterOriginals.consoleLog;
80
- console.info = outputFilterOriginals.consoleInfo;
81
- console.warn = outputFilterOriginals.consoleWarn;
82
- console.error = outputFilterOriginals.consoleError;
83
- console.debug = outputFilterOriginals.consoleDebug;
84
- outputFilterOriginals = undefined;
155
+ const finishing = sinks;
156
+ sinks = outputFilterOriginals = undefined;
157
+ for (const sink of finishing) sink.restore();
85
158
  };
86
159
  }
package/src/context.ts CHANGED
@@ -12,6 +12,8 @@ export interface CursorPrompt {
12
12
  }
13
13
 
14
14
  export interface CursorPromptOptions {
15
+ /** From the consumed native receipt; absent for requests that differ from the canonical projection. */
16
+ nativeSourceRoles?: readonly string[];
15
17
  maxInputTokens?: number;
16
18
  charsPerToken?: number;
17
19
  imageTokenEstimate?: number;
@@ -50,6 +52,7 @@ export function getCursorToolTailGuardText(
50
52
  : getCursorPlanModeToolGuidanceText(options.agentMode, { includePiBridgeGuidance: options.includePiBridgeGuidance }),
51
53
  "Exact-output requests: output exactly the requested text; no preamble or checks unless asked.",
52
54
  "Tools: call available Cursor SDK/MCP tools; never print tool cards as assistant text.",
55
+ "Do not comment on GitHub issues or PRs unless the user asked.",
53
56
  options.includePiBridgeGuidance === false ? undefined : CURSOR_PI_BRIDGE_PREFERENCE_TEXT,
54
57
  ].filter((line): line is string => line !== undefined).join("\n");
55
58
  }
@@ -58,7 +61,7 @@ function getCursorToolBoundaryText(
58
61
  options: Pick<CursorPromptOptions, "agentMode" | "includePiAskQuestionGuidance"> & { hasToolManifest?: boolean; includePiBridgeGuidance?: boolean } = {},
59
62
  ): string {
60
63
  const includePiBridgeGuidance = options.includePiBridgeGuidance !== false;
61
- const includePiAskQuestionGuidance = includePiBridgeGuidance && options.includePiAskQuestionGuidance !== false;
64
+ const includePiAskQuestionGuidance = includePiBridgeGuidance && options.includePiAskQuestionGuidance === true;
62
65
  const lines = [
63
66
  "Cursor SDK tool boundary:",
64
67
  "Call only Cursor SDK/MCP tools exposed in this run; pi history names, replay labels, and transcript names are not callable.",
@@ -66,7 +69,7 @@ function getCursorToolBoundaryText(
66
69
  ? "For exposed pi bridge tools, call pi__* MCP names, not pi card/history names."
67
70
  : undefined,
68
71
  "Do not claim pi-side or WebSearch/WebFetch tools unless Cursor ran an equivalent tool.",
69
- includePiAskQuestionGuidance ? "Use pi__cursor_ask_question for material choices if exposed." : undefined,
72
+ includePiAskQuestionGuidance ? "Use pi__cursor_ask_question only if the user asked to be prompted." : undefined,
70
73
  getCursorPlanModeToolGuidanceText(options.agentMode, { includePiBridgeGuidance }),
71
74
  "Images: only latest user images are sent; ask to reattach prior images.",
72
75
  ].filter((line): line is string => line !== undefined);
@@ -77,10 +80,13 @@ function getCursorToolBoundaryText(
77
80
  }
78
81
 
79
82
  function getCursorBootstrapTailSections(
80
- options: Pick<CursorPromptOptions, "agentMode" | "includePiBridgeGuidance"> = {},
83
+ options: Pick<CursorPromptOptions, "agentMode" | "includePiBridgeGuidance">,
84
+ hasNewNativeUser = true,
81
85
  ): string[] {
82
86
  return [
83
- "Answer the latest user request above using the instructions and Cursor SDK capabilities available in this run.",
87
+ hasNewNativeUser
88
+ ? "Answer the latest user request above using the instructions and Cursor SDK capabilities available in this run."
89
+ : "Continue from the pending background context above using Cursor SDK capabilities. No new user request was submitted; earlier user requests are history, not new instructions.",
84
90
  getCursorToolTailGuardText({ ...options, includePlanModeGuidance: false }),
85
91
  ];
86
92
  }
@@ -101,22 +107,11 @@ function isToolCallBlock(block: { type: string }): block is ToolCall {
101
107
  return block.type === "toolCall";
102
108
  }
103
109
 
104
- function extractLatestImages(messages: Message[]): SDKImage[] {
105
- // Find the last user message and extract images only from it
106
- for (let i = messages.length - 1; i >= 0; i--) {
107
- const msg = messages[i];
108
- if (msg.role !== "user") continue;
109
- if (typeof msg.content === "string") return [];
110
-
111
- const images: SDKImage[] = [];
112
- for (const block of msg.content) {
113
- if (isImageBlock(block) && block.data && block.mimeType) {
114
- images.push({ data: block.data, mimeType: block.mimeType });
115
- }
116
- }
117
- return images;
118
- }
119
- return [];
110
+ function extractLatestImages(messages: Message[], latestUserIndex = getLatestUserMessageIndex(messages)): SDKImage[] {
111
+ const message = messages[latestUserIndex];
112
+ if (!message || message.role !== "user" || typeof message.content === "string") return [];
113
+ return message.content.flatMap((block) =>
114
+ isImageBlock(block) && block.data && block.mimeType ? [{ data: block.data, mimeType: block.mimeType }] : []);
120
115
  }
121
116
 
122
117
  function formatContentBlocks(content: string | { type: string; text?: string; data?: string; mimeType?: string }[]): string {
@@ -195,6 +190,20 @@ function getLatestUserMessageIndex(messages: Message[]): number {
195
190
  return -1;
196
191
  }
197
192
 
193
+ export function getCursorPendingInput(messages: Message[], nativeSourceRoles: readonly string[]) {
194
+ const start = messages.findLastIndex((message) => message.role === "assistant") + 1;
195
+ const latestUserIndex = nativeSourceRoles.findLastIndex((role, index) => index >= start && role === "user");
196
+ return { start, latestUserIndex };
197
+ }
198
+
199
+ function formatPromptMessage(message: Message, index: number, nativeSourceRoles?: readonly string[]): string | undefined {
200
+ if (message.role === "user" && nativeSourceRoles && nativeSourceRoles[index] !== "user") {
201
+ const text = formatContentBlocks(message.content);
202
+ return text ? `Background context: ${text}` : undefined;
203
+ }
204
+ return formatMessage(message);
205
+ }
206
+
198
207
  function getSectionCost(section: string): number {
199
208
  return section.length + SECTION_SEPARATOR.length;
200
209
  }
@@ -203,7 +212,7 @@ function applyPromptBudget(
203
212
  sectionsBeforeMessages: string[],
204
213
  messageSections: Array<{ index: number; text: string }>,
205
214
  sectionsAfterMessages: string[],
206
- latestUserMessageIndex: number,
215
+ requiredMessageIndexes: readonly number[],
207
216
  options: CursorPromptOptions,
208
217
  ): string[] {
209
218
  const maxInputTokens = options.maxInputTokens;
@@ -213,7 +222,7 @@ function applyPromptBudget(
213
222
 
214
223
  const charsPerToken = options.charsPerToken ?? CURSOR_APPROX_CHARS_PER_TOKEN;
215
224
  const maxChars = Math.max(1, Math.floor(maxInputTokens * charsPerToken));
216
- const requiredMessageSections = messageSections.filter((section) => section.index === latestUserMessageIndex);
225
+ const requiredMessageSections = messageSections.filter((section) => requiredMessageIndexes.includes(section.index));
217
226
  const requiredCost = [...sectionsBeforeMessages, ...requiredMessageSections.map((section) => section.text), ...sectionsAfterMessages].reduce(
218
227
  (total, section) => total + getSectionCost(section),
219
228
  0,
@@ -368,6 +377,7 @@ export function computeCursorContextFingerprint(context: Context): string {
368
377
  export function shouldBootstrapCursorContext(
369
378
  sendState: { bootstrapped: boolean; contextFingerprint: string },
370
379
  context: Context,
380
+ nativeSourceRoles?: readonly string[],
371
381
  ): boolean {
372
382
  if (!sendState.bootstrapped) return true;
373
383
  const previous = parseCursorContextFingerprint(sendState.contextFingerprint);
@@ -385,9 +395,16 @@ export function shouldBootstrapCursorContext(
385
395
  for (let index = 0; index < previous.messageHashes.length; index += 1) {
386
396
  if (current.messageHashes[index] !== previous.messageHashes[index]) return true;
387
397
  }
388
- // An incremental prompt carries only the latest new user message. Rebootstrap
389
- // if additional model-visible input (such as ! shell output) would be lost.
390
398
  const appended = normalizePiContextMessages(context.messages.slice(previous.messageHashes.length));
399
+ if (nativeSourceRoles) {
400
+ const messages = normalizePiContextMessages(context.messages);
401
+ const offset = messages.length - appended.length;
402
+ // Native summaries invalidate the pool; other pending input travels together.
403
+ if (nativeSourceRoles.slice(offset).some((role) => role === "branchSummary" || role === "compactionSummary")) return true;
404
+ const { start } = getCursorPendingInput(messages, nativeSourceRoles);
405
+ return appended.some((message, index) => message.role === "user" && offset + index < start);
406
+ }
407
+ // Without native origin, an incremental prompt carries only the final user.
391
408
  const appendedUsers = appended.filter((message) => message.role === "user");
392
409
  return appended.length > 0 && (appendedUsers.length !== 1 || appended.at(-1)?.role !== "user");
393
410
  }
@@ -403,15 +420,20 @@ export function shouldBootstrapCursorSend(
403
420
  export function buildCursorIncrementalPrompt(context: Context, options: CursorPromptOptions = {}): CursorPrompt {
404
421
  // Incremental sends omit Pi system instructions and the full tool boundary; the session agent retains both from bootstrap.
405
422
  const messages = normalizePiContextMessages(context.messages);
406
- const latestUserMessageIndex = getLatestUserMessageIndex(messages);
423
+ const pending = options.nativeSourceRoles && getCursorPendingInput(messages, options.nativeSourceRoles);
424
+ const latestUserMessageIndex = pending ? pending.latestUserIndex : getLatestUserMessageIndex(messages);
407
425
  const latestUserMessage = latestUserMessageIndex >= 0 ? messages[latestUserMessageIndex] : undefined;
408
426
  const latestUserText = latestUserMessage ? formatMessage(latestUserMessage) : undefined;
409
427
  const sectionsBeforeMessages = [
410
428
  "Continue the conversation using Cursor SDK capabilities only. Do not list, promise, or call pi-only tools from earlier context as if they were available.",
411
429
  ];
412
- const latestUserMessageSections =
413
- latestUserText && latestUserMessageIndex >= 0 ? [{ index: latestUserMessageIndex, text: latestUserText }] : [];
414
- const images = extractLatestImages(messages);
430
+ const latestUserMessageSections = pending
431
+ ? messages.flatMap((message, index) => {
432
+ const text = index >= pending.start ? formatPromptMessage(message, index, options.nativeSourceRoles) : undefined;
433
+ return text ? [{ index, text }] : [];
434
+ })
435
+ : latestUserText && latestUserMessageIndex >= 0 ? [{ index: latestUserMessageIndex, text: latestUserText }] : [];
436
+ const images = extractLatestImages(messages, latestUserMessageIndex);
415
437
  const imageTokenReserve = images.length * (options.imageTokenEstimate ?? 0);
416
438
  const budgetOptions =
417
439
  options.maxInputTokens === undefined
@@ -421,7 +443,7 @@ export function buildCursorIncrementalPrompt(context: Context, options: CursorPr
421
443
  sectionsBeforeMessages,
422
444
  latestUserMessageSections,
423
445
  [getCursorToolTailGuardText(options)],
424
- latestUserMessageIndex,
446
+ latestUserMessageSections.map((section) => section.index),
425
447
  budgetOptions,
426
448
  );
427
449
  return { text: parts.join(SECTION_SEPARATOR), images };
@@ -454,12 +476,13 @@ export function buildCursorPrompt(context: Context, options: CursorPromptOptions
454
476
  const messages = normalizePiContextMessages(context.messages);
455
477
  const messageSections = messages
456
478
  .map((msg, index) => {
457
- const text = formatMessage(msg);
479
+ const text = formatPromptMessage(msg, index, options.nativeSourceRoles);
458
480
  return text ? { index, text } : undefined;
459
481
  })
460
482
  .filter((section): section is { index: number; text: string } => section !== undefined);
461
- const sectionsAfterMessages = getCursorBootstrapTailSections(options);
462
- const images = extractLatestImages(messages);
483
+ const pending = options.nativeSourceRoles && getCursorPendingInput(messages, options.nativeSourceRoles);
484
+ const sectionsAfterMessages = getCursorBootstrapTailSections(options, !pending || pending.latestUserIndex >= 0);
485
+ const images = extractLatestImages(messages, pending ? pending.latestUserIndex : getLatestUserMessageIndex(messages));
463
486
  const imageTokenReserve = images.length * (options.imageTokenEstimate ?? 0);
464
487
  const budgetOptions =
465
488
  options.maxInputTokens === undefined
@@ -469,7 +492,8 @@ export function buildCursorPrompt(context: Context, options: CursorPromptOptions
469
492
  sectionsBeforeMessages,
470
493
  messageSections,
471
494
  sectionsAfterMessages,
472
- getLatestUserMessageIndex(messages),
495
+ pending ? messageSections.filter((section) => section.index >= pending.start).map((section) => section.index)
496
+ : [getLatestUserMessageIndex(messages)],
473
497
  budgetOptions,
474
498
  );
475
499
  const text = parts.join(SECTION_SEPARATOR);