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.
- package/CHANGELOG.md +50 -0
- package/README.md +110 -30
- package/dist/context.js +53 -34
- package/dist/cursor-api-key.js +34 -19
- package/dist/cursor-cloud-options.js +1 -0
- package/dist/cursor-config.js +59 -0
- package/dist/cursor-custom-store-path.js +177 -0
- package/dist/cursor-custom-subagent-definitions.js +14 -0
- package/dist/cursor-fallback-models.generated.js +1 -1
- package/dist/cursor-fallback-warning.js +8 -2
- package/dist/cursor-live-run-coordinator.js +22 -2
- package/dist/cursor-mcp-timeout-override.js +3 -1
- package/dist/cursor-pi-tool-bridge-run.js +21 -0
- package/dist/cursor-pi-tool-bridge-server.js +1 -1
- package/dist/cursor-provider-binding.js +70 -10
- package/dist/cursor-provider-errors.js +33 -26
- package/dist/cursor-provider-live-run-drain.js +10 -4
- package/dist/cursor-provider-run-finalizer.js +2 -1
- package/dist/cursor-provider-turn-prepare.js +25 -9
- package/dist/cursor-provider-turn-summary.js +1 -1
- package/dist/cursor-provider-turn-tool-ledger.js +13 -7
- package/dist/cursor-provider.js +2 -1
- package/dist/cursor-question-tool.js +5 -5
- package/dist/cursor-request-provenance.js +13 -2
- package/dist/cursor-sdk-output-filter.js +1 -1
- package/dist/cursor-sdk-process-error-guard.js +1 -3
- package/dist/cursor-sdk-runtime.js +13 -14
- package/dist/cursor-sdk-vendor-env.js +20 -0
- package/dist/cursor-session-agent-cleanup.js +29 -26
- package/dist/cursor-session-agent.js +38 -16
- package/dist/cursor-session-send-policy.js +2 -2
- package/dist/cursor-session-store.js +235 -45
- package/dist/cursor-state.js +6 -3
- package/dist/cursor-tool-manifest.js +1 -1
- package/dist/index.js +21 -19
- package/dist/model-discovery.js +51 -18
- package/dist/model-list-cache.js +12 -1
- package/docs/cursor-live-smoke-checklist.md +2 -2
- package/docs/cursor-model-ux-spec.md +70 -26
- package/docs/cursor-native-tool-replay.md +13 -5
- package/docs/cursor-native-tool-visual-audit.md +1 -1
- package/docs/cursor-testing-lessons.md +43 -5
- package/docs/cursor-tool-surfaces.md +3 -3
- package/node_modules/@hono/node-server/README.md +21 -10
- package/node_modules/@hono/node-server/dist/early-hints.cjs +1 -1
- package/node_modules/@hono/node-server/dist/early-hints.mjs +1 -1
- package/node_modules/@hono/node-server/dist/index.cjs +41 -19
- package/node_modules/@hono/node-server/dist/index.mjs +42 -20
- package/node_modules/@hono/node-server/dist/serve-static.cjs +1 -0
- package/node_modules/@hono/node-server/dist/serve-static.d.cts +2 -1
- package/node_modules/@hono/node-server/dist/serve-static.d.mts +2 -1
- package/node_modules/@hono/node-server/dist/serve-static.mjs +1 -0
- package/node_modules/@hono/node-server/package.json +3 -2
- package/node_modules/@modelcontextprotocol/core/dist/{auth--n_Yzytt.d.cts → auth-Anm-lwWi.d.mts} +9 -8
- package/node_modules/@modelcontextprotocol/core/dist/{auth-YUQV3RRv.d.mts.map → auth-Anm-lwWi.d.mts.map} +1 -1
- package/node_modules/@modelcontextprotocol/core/dist/{auth-CGP0BDVq.mjs → auth-BNDyLTqp.mjs} +5 -3
- package/node_modules/@modelcontextprotocol/core/dist/{auth-CGP0BDVq.mjs.map → auth-BNDyLTqp.mjs.map} +1 -1
- package/node_modules/@modelcontextprotocol/core/dist/{auth-4-zilcqg.cjs → auth-D1CeV_Jr.cjs} +5 -3
- package/node_modules/@modelcontextprotocol/core/dist/{auth-4-zilcqg.cjs.map → auth-D1CeV_Jr.cjs.map} +1 -1
- package/node_modules/@modelcontextprotocol/core/dist/{auth-YUQV3RRv.d.mts → auth-V9XJSCfa.d.cts} +9 -8
- package/node_modules/@modelcontextprotocol/core/dist/{auth--n_Yzytt.d.cts.map → auth-V9XJSCfa.d.cts.map} +1 -1
- package/node_modules/@modelcontextprotocol/core/dist/index.cjs +1 -1
- package/node_modules/@modelcontextprotocol/core/dist/index.d.cts +1 -1
- package/node_modules/@modelcontextprotocol/core/dist/index.d.mts +1 -1
- package/node_modules/@modelcontextprotocol/core/dist/index.mjs +1 -1
- package/node_modules/@modelcontextprotocol/core/dist/internal.cjs +1 -1
- package/node_modules/@modelcontextprotocol/core/dist/internal.d.cts +1 -1
- package/node_modules/@modelcontextprotocol/core/dist/internal.d.mts +1 -1
- package/node_modules/@modelcontextprotocol/core/dist/internal.mjs +1 -1
- package/node_modules/@modelcontextprotocol/core/package.json +2 -2
- package/node_modules/@modelcontextprotocol/hono/README.md +7 -5
- package/node_modules/@modelcontextprotocol/hono/dist/index.cjs.map +1 -1
- package/node_modules/@modelcontextprotocol/hono/dist/index.d.cts +5 -0
- package/node_modules/@modelcontextprotocol/hono/dist/index.d.cts.map +1 -1
- package/node_modules/@modelcontextprotocol/hono/dist/index.d.mts +5 -0
- package/node_modules/@modelcontextprotocol/hono/dist/index.d.mts.map +1 -1
- package/node_modules/@modelcontextprotocol/hono/dist/index.mjs.map +1 -1
- package/node_modules/@modelcontextprotocol/hono/package.json +4 -4
- package/node_modules/@modelcontextprotocol/server/README.md +1 -7
- package/node_modules/@modelcontextprotocol/server/dist/{createMcpHandler-Bt6U_Fqb.d.mts → createMcpHandler-D4NN8WsG.d.mts} +35 -13
- package/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-D4NN8WsG.d.mts.map +1 -0
- package/node_modules/@modelcontextprotocol/server/dist/{createMcpHandler-BLVe3qmU.d.cts → createMcpHandler-DZmmlN8e.d.cts} +35 -13
- package/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-DZmmlN8e.d.cts.map +1 -0
- package/node_modules/@modelcontextprotocol/server/dist/index.cjs +32 -5
- package/node_modules/@modelcontextprotocol/server/dist/index.cjs.map +1 -1
- package/node_modules/@modelcontextprotocol/server/dist/index.d.cts +41 -5
- package/node_modules/@modelcontextprotocol/server/dist/index.d.cts.map +1 -1
- package/node_modules/@modelcontextprotocol/server/dist/index.d.mts +41 -5
- package/node_modules/@modelcontextprotocol/server/dist/index.d.mts.map +1 -1
- package/node_modules/@modelcontextprotocol/server/dist/index.mjs +32 -5
- package/node_modules/@modelcontextprotocol/server/dist/index.mjs.map +1 -1
- package/node_modules/@modelcontextprotocol/server/dist/{mcp-DUcCQSTW.cjs → mcp-BumlNux0.cjs} +73 -23
- package/node_modules/@modelcontextprotocol/server/dist/mcp-BumlNux0.cjs.map +1 -0
- package/node_modules/@modelcontextprotocol/server/dist/{mcp-Dw2OlZ1f.mjs → mcp-DIH4cS6P.mjs} +73 -23
- package/node_modules/@modelcontextprotocol/server/dist/mcp-DIH4cS6P.mjs.map +1 -0
- package/node_modules/@modelcontextprotocol/server/dist/shimsWorkerd.cjs +1 -1
- package/node_modules/@modelcontextprotocol/server/dist/shimsWorkerd.mjs +1 -1
- package/node_modules/@modelcontextprotocol/server/dist/{src-CgFsfg3E.cjs → src-BhnGYybN.cjs} +29 -11
- package/node_modules/@modelcontextprotocol/server/dist/src-BhnGYybN.cjs.map +1 -0
- package/node_modules/@modelcontextprotocol/server/dist/{src-D-y6h4N7.mjs → src-Cqbh3MYc.mjs} +29 -11
- package/node_modules/@modelcontextprotocol/server/dist/src-Cqbh3MYc.mjs.map +1 -0
- package/node_modules/@modelcontextprotocol/server/dist/stdio.cjs +2 -2
- package/node_modules/@modelcontextprotocol/server/dist/stdio.d.cts +1 -1
- package/node_modules/@modelcontextprotocol/server/dist/stdio.d.mts +1 -1
- package/node_modules/@modelcontextprotocol/server/dist/stdio.mjs +2 -2
- package/node_modules/@modelcontextprotocol/server/package.json +4 -4
- package/node_modules/hono/dist/_virtual/_rolldown/runtime.js +13 -0
- package/node_modules/hono/dist/adapter/aws-lambda/conninfo.js +42 -23
- package/node_modules/hono/dist/adapter/aws-lambda/handler.js +318 -344
- package/node_modules/hono/dist/adapter/aws-lambda/index.js +2 -8
- package/node_modules/hono/dist/adapter/aws-lambda/types.js +1 -0
- package/node_modules/hono/dist/adapter/bun/conninfo.js +20 -25
- package/node_modules/hono/dist/adapter/bun/index.js +3 -13
- package/node_modules/hono/dist/adapter/bun/serve-static.js +27 -27
- package/node_modules/hono/dist/adapter/bun/server.js +11 -5
- package/node_modules/hono/dist/adapter/bun/ssg.js +25 -15
- package/node_modules/hono/dist/adapter/bun/websocket.js +61 -68
- package/node_modules/hono/dist/adapter/cloudflare-pages/conninfo.js +24 -9
- package/node_modules/hono/dist/adapter/cloudflare-pages/handler.js +59 -62
- package/node_modules/hono/dist/adapter/cloudflare-pages/index.js +2 -8
- package/node_modules/hono/dist/adapter/cloudflare-workers/conninfo.js +7 -9
- package/node_modules/hono/dist/adapter/cloudflare-workers/index.js +3 -8
- package/node_modules/hono/dist/adapter/cloudflare-workers/serve-static-module.js +5 -6
- package/node_modules/hono/dist/adapter/cloudflare-workers/serve-static.js +26 -20
- package/node_modules/hono/dist/adapter/cloudflare-workers/utils.js +21 -34
- package/node_modules/hono/dist/adapter/cloudflare-workers/websocket.js +31 -39
- package/node_modules/hono/dist/adapter/deno/conninfo.js +16 -13
- package/node_modules/hono/dist/adapter/deno/deno.d.js +1 -0
- package/node_modules/hono/dist/adapter/deno/index.js +3 -10
- package/node_modules/hono/dist/adapter/deno/serve-static.js +33 -38
- package/node_modules/hono/dist/adapter/deno/ssg.js +27 -16
- package/node_modules/hono/dist/adapter/deno/websocket.js +30 -30
- package/node_modules/hono/dist/adapter/lambda-edge/conninfo.js +7 -9
- package/node_modules/hono/dist/adapter/lambda-edge/handler.js +102 -101
- package/node_modules/hono/dist/adapter/lambda-edge/index.js +2 -6
- package/node_modules/hono/dist/adapter/netlify/conninfo.js +24 -9
- package/node_modules/hono/dist/adapter/netlify/handler.js +10 -8
- package/node_modules/hono/dist/adapter/netlify/index.js +3 -2
- package/node_modules/hono/dist/adapter/netlify/mod.js +2 -6
- package/node_modules/hono/dist/adapter/service-worker/handler.js +15 -19
- package/node_modules/hono/dist/adapter/service-worker/index.js +23 -7
- package/node_modules/hono/dist/adapter/service-worker/types.js +1 -0
- package/node_modules/hono/dist/adapter/vercel/conninfo.js +7 -10
- package/node_modules/hono/dist/adapter/vercel/handler.js +8 -6
- package/node_modules/hono/dist/adapter/vercel/index.js +2 -6
- package/node_modules/hono/dist/cjs/_virtual/_rolldown/runtime.js +33 -0
- package/node_modules/hono/dist/cjs/adapter/aws-lambda/conninfo.js +42 -44
- package/node_modules/hono/dist/cjs/adapter/aws-lambda/handler.js +326 -373
- package/node_modules/hono/dist/cjs/adapter/aws-lambda/index.js +7 -34
- package/node_modules/hono/dist/cjs/adapter/aws-lambda/types.js +0 -15
- package/node_modules/hono/dist/cjs/adapter/bun/conninfo.js +21 -47
- package/node_modules/hono/dist/cjs/adapter/bun/index.js +14 -45
- package/node_modules/hono/dist/cjs/adapter/bun/serve-static.js +29 -50
- package/node_modules/hono/dist/cjs/adapter/bun/server.js +11 -26
- package/node_modules/hono/dist/cjs/adapter/bun/ssg.js +24 -35
- package/node_modules/hono/dist/cjs/adapter/bun/websocket.js +63 -91
- package/node_modules/hono/dist/cjs/adapter/cloudflare-pages/conninfo.js +25 -31
- package/node_modules/hono/dist/cjs/adapter/cloudflare-pages/handler.js +61 -85
- package/node_modules/hono/dist/cjs/adapter/cloudflare-pages/index.js +7 -34
- package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/conninfo.js +8 -31
- package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/index.js +7 -33
- package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/serve-static-module.js +7 -29
- package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/serve-static.js +27 -42
- package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/utils.js +21 -55
- package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/websocket.js +33 -62
- package/node_modules/hono/dist/cjs/adapter/deno/conninfo.js +16 -34
- package/node_modules/hono/dist/cjs/adapter/deno/index.js +10 -38
- package/node_modules/hono/dist/cjs/adapter/deno/serve-static.js +33 -59
- package/node_modules/hono/dist/cjs/adapter/deno/ssg.js +27 -37
- package/node_modules/hono/dist/cjs/adapter/deno/websocket.js +32 -53
- package/node_modules/hono/dist/cjs/adapter/lambda-edge/conninfo.js +8 -31
- package/node_modules/hono/dist/cjs/adapter/lambda-edge/handler.js +102 -130
- package/node_modules/hono/dist/cjs/adapter/lambda-edge/index.js +5 -30
- package/node_modules/hono/dist/cjs/adapter/netlify/conninfo.js +25 -31
- package/node_modules/hono/dist/cjs/adapter/netlify/handler.js +10 -29
- package/node_modules/hono/dist/cjs/adapter/netlify/index.js +5 -21
- package/node_modules/hono/dist/cjs/adapter/netlify/mod.js +5 -30
- package/node_modules/hono/dist/cjs/adapter/service-worker/handler.js +16 -41
- package/node_modules/hono/dist/cjs/adapter/service-worker/index.js +25 -30
- package/node_modules/hono/dist/cjs/adapter/service-worker/types.js +0 -15
- package/node_modules/hono/dist/cjs/adapter/vercel/conninfo.js +8 -32
- package/node_modules/hono/dist/cjs/adapter/vercel/handler.js +8 -27
- package/node_modules/hono/dist/cjs/adapter/vercel/index.js +5 -30
- package/node_modules/hono/dist/cjs/client/client.js +139 -212
- package/node_modules/hono/dist/cjs/client/fetch-result-please.js +62 -80
- package/node_modules/hono/dist/cjs/client/index.js +7 -32
- package/node_modules/hono/dist/cjs/client/types.js +0 -15
- package/node_modules/hono/dist/cjs/client/utils.js +54 -92
- package/node_modules/hono/dist/cjs/compose.js +49 -66
- package/node_modules/hono/dist/cjs/context.js +379 -450
- package/node_modules/hono/dist/cjs/helper/accepts/accepts.js +47 -72
- package/node_modules/hono/dist/cjs/helper/accepts/index.js +3 -27
- package/node_modules/hono/dist/cjs/helper/adapter/index.js +33 -73
- package/node_modules/hono/dist/cjs/helper/conninfo/index.js +0 -15
- package/node_modules/hono/dist/cjs/helper/conninfo/types.js +0 -15
- package/node_modules/hono/dist/cjs/helper/cookie/index.js +75 -116
- package/node_modules/hono/dist/cjs/helper/css/common.js +165 -244
- package/node_modules/hono/dist/cjs/helper/css/index.js +136 -151
- package/node_modules/hono/dist/cjs/helper/dev/index.js +45 -71
- package/node_modules/hono/dist/cjs/helper/factory/index.js +30 -51
- package/node_modules/hono/dist/cjs/helper/html/index.js +32 -62
- package/node_modules/hono/dist/cjs/helper/proxy/index.js +113 -106
- package/node_modules/hono/dist/cjs/helper/route/index.js +123 -66
- package/node_modules/hono/dist/cjs/helper/ssg/index.js +19 -43
- package/node_modules/hono/dist/cjs/helper/ssg/middleware.js +56 -64
- package/node_modules/hono/dist/cjs/helper/ssg/plugins.js +55 -57
- package/node_modules/hono/dist/cjs/helper/ssg/ssg.js +196 -296
- package/node_modules/hono/dist/cjs/helper/ssg/utils.js +47 -90
- package/node_modules/hono/dist/cjs/helper/streaming/index.js +8 -35
- package/node_modules/hono/dist/cjs/helper/streaming/sse.js +53 -85
- package/node_modules/hono/dist/cjs/helper/streaming/stream.js +23 -53
- package/node_modules/hono/dist/cjs/helper/streaming/text.js +10 -32
- package/node_modules/hono/dist/cjs/helper/streaming/utils.js +13 -32
- package/node_modules/hono/dist/cjs/helper/testing/index.js +16 -31
- package/node_modules/hono/dist/cjs/helper/websocket/index.js +51 -76
- package/node_modules/hono/dist/cjs/hono-base.js +347 -403
- package/node_modules/hono/dist/cjs/hono.js +28 -42
- package/node_modules/hono/dist/cjs/http-exception.js +55 -56
- package/node_modules/hono/dist/cjs/index.js +22 -30
- package/node_modules/hono/dist/cjs/jsx/base.js +237 -366
- package/node_modules/hono/dist/cjs/jsx/children.js +16 -41
- package/node_modules/hono/dist/cjs/jsx/components.js +119 -192
- package/node_modules/hono/dist/cjs/jsx/constants.js +15 -42
- package/node_modules/hono/dist/cjs/jsx/context.js +144 -162
- package/node_modules/hono/dist/cjs/jsx/dom/client.js +49 -69
- package/node_modules/hono/dist/cjs/jsx/dom/components.js +23 -52
- package/node_modules/hono/dist/cjs/jsx/dom/context.js +39 -67
- package/node_modules/hono/dist/cjs/jsx/dom/css.js +143 -158
- package/node_modules/hono/dist/cjs/jsx/dom/hooks/index.js +55 -64
- package/node_modules/hono/dist/cjs/jsx/dom/index.js +114 -173
- package/node_modules/hono/dist/cjs/jsx/dom/intrinsic-element/components.js +282 -375
- package/node_modules/hono/dist/cjs/jsx/dom/jsx-dev-runtime.js +14 -49
- package/node_modules/hono/dist/cjs/jsx/dom/jsx-runtime.js +5 -32
- package/node_modules/hono/dist/cjs/jsx/dom/render.js +469 -623
- package/node_modules/hono/dist/cjs/jsx/dom/server.js +37 -64
- package/node_modules/hono/dist/cjs/jsx/dom/utils.js +7 -30
- package/node_modules/hono/dist/cjs/jsx/hooks/index.js +225 -318
- package/node_modules/hono/dist/cjs/jsx/index.js +86 -135
- package/node_modules/hono/dist/cjs/jsx/intrinsic-element/common.js +20 -43
- package/node_modules/hono/dist/cjs/jsx/intrinsic-element/components.js +117 -168
- package/node_modules/hono/dist/cjs/jsx/intrinsic-elements.js +0 -15
- package/node_modules/hono/dist/cjs/jsx/jsx-dev-runtime.js +14 -39
- package/node_modules/hono/dist/cjs/jsx/jsx-runtime.js +34 -68
- package/node_modules/hono/dist/cjs/jsx/streaming.js +123 -166
- package/node_modules/hono/dist/cjs/jsx/types.js +0 -15
- package/node_modules/hono/dist/cjs/jsx/utils.js +91 -175
- package/node_modules/hono/dist/cjs/middleware/basic-auth/index.js +98 -86
- package/node_modules/hono/dist/cjs/middleware/bearer-auth/index.js +92 -109
- package/node_modules/hono/dist/cjs/middleware/body-limit/index.js +66 -72
- package/node_modules/hono/dist/cjs/middleware/cache/index.js +153 -199
- package/node_modules/hono/dist/cjs/middleware/combine/index.js +135 -95
- package/node_modules/hono/dist/cjs/middleware/compress/index.js +73 -88
- package/node_modules/hono/dist/cjs/middleware/context-storage/index.js +49 -41
- package/node_modules/hono/dist/cjs/middleware/cors/index.js +107 -107
- package/node_modules/hono/dist/cjs/middleware/csrf/index.js +101 -72
- package/node_modules/hono/dist/cjs/middleware/etag/digest.js +58 -97
- package/node_modules/hono/dist/cjs/middleware/etag/index.js +71 -91
- package/node_modules/hono/dist/cjs/middleware/ip-restriction/index.js +161 -169
- package/node_modules/hono/dist/cjs/middleware/jsx-renderer/index.js +99 -77
- package/node_modules/hono/dist/cjs/middleware/jwk/index.js +3 -27
- package/node_modules/hono/dist/cjs/middleware/jwk/jwk.js +118 -135
- package/node_modules/hono/dist/cjs/middleware/jwt/index.js +9 -38
- package/node_modules/hono/dist/cjs/middleware/jwt/jwt.js +120 -141
- package/node_modules/hono/dist/cjs/middleware/language/index.js +7 -35
- package/node_modules/hono/dist/cjs/middleware/language/language.js +184 -182
- package/node_modules/hono/dist/cjs/middleware/logger/index.js +41 -62
- package/node_modules/hono/dist/cjs/middleware/method-not-allowed/index.js +82 -88
- package/node_modules/hono/dist/cjs/middleware/method-override/index.js +101 -102
- package/node_modules/hono/dist/cjs/middleware/mount/index.js +71 -0
- package/node_modules/hono/dist/cjs/middleware/powered-by/index.js +23 -30
- package/node_modules/hono/dist/cjs/middleware/pretty-json/index.js +38 -42
- package/node_modules/hono/dist/cjs/middleware/request-id/index.js +3 -27
- package/node_modules/hono/dist/cjs/middleware/request-id/request-id.js +34 -42
- package/node_modules/hono/dist/cjs/middleware/secure-headers/index.js +4 -29
- package/node_modules/hono/dist/cjs/middleware/secure-headers/permissions-policy.js +0 -15
- package/node_modules/hono/dist/cjs/middleware/secure-headers/secure-headers.js +142 -174
- package/node_modules/hono/dist/cjs/middleware/serve-static/index.js +56 -93
- package/node_modules/hono/dist/cjs/middleware/serve-static/path.js +15 -38
- package/node_modules/hono/dist/cjs/middleware/timeout/index.js +40 -45
- package/node_modules/hono/dist/cjs/middleware/timing/index.js +7 -35
- package/node_modules/hono/dist/cjs/middleware/timing/timing.js +177 -118
- package/node_modules/hono/dist/cjs/middleware/trailing-slash/index.js +85 -58
- package/node_modules/hono/dist/cjs/preset/quick.js +18 -37
- package/node_modules/hono/dist/cjs/preset/tiny.js +15 -33
- package/node_modules/hono/dist/cjs/request/constants.js +5 -27
- package/node_modules/hono/dist/cjs/request.js +334 -346
- package/node_modules/hono/dist/cjs/router/linear-router/index.js +3 -27
- package/node_modules/hono/dist/cjs/router/linear-router/router.js +95 -143
- package/node_modules/hono/dist/cjs/router/pattern-router/index.js +3 -27
- package/node_modules/hono/dist/cjs/router/pattern-router/router.js +41 -63
- package/node_modules/hono/dist/cjs/router/reg-exp-router/index.js +7 -34
- package/node_modules/hono/dist/cjs/router/reg-exp-router/matcher.js +18 -45
- package/node_modules/hono/dist/cjs/router/reg-exp-router/node.js +91 -135
- package/node_modules/hono/dist/cjs/router/reg-exp-router/prepared-router.js +92 -161
- package/node_modules/hono/dist/cjs/router/reg-exp-router/router.js +98 -147
- package/node_modules/hono/dist/cjs/router/reg-exp-router/trie.js +73 -89
- package/node_modules/hono/dist/cjs/router/smart-router/index.js +3 -27
- package/node_modules/hono/dist/cjs/router/smart-router/router.js +49 -79
- package/node_modules/hono/dist/cjs/router/trie-router/index.js +3 -27
- package/node_modules/hono/dist/cjs/router/trie-router/node.js +134 -186
- package/node_modules/hono/dist/cjs/router/trie-router/router.js +15 -39
- package/node_modules/hono/dist/cjs/router/utils.js +5 -27
- package/node_modules/hono/dist/cjs/router.js +37 -37
- package/node_modules/hono/dist/cjs/types.js +5 -28
- package/node_modules/hono/dist/cjs/utils/accept.js +177 -225
- package/node_modules/hono/dist/cjs/utils/basic-auth.js +16 -40
- package/node_modules/hono/dist/cjs/utils/body.js +84 -110
- package/node_modules/hono/dist/cjs/utils/buffer.js +43 -91
- package/node_modules/hono/dist/cjs/utils/color.js +35 -44
- package/node_modules/hono/dist/cjs/utils/compress.js +11 -26
- package/node_modules/hono/dist/cjs/utils/concurrent.js +29 -59
- package/node_modules/hono/dist/cjs/utils/constants.js +7 -26
- package/node_modules/hono/dist/cjs/utils/cookie.js +107 -177
- package/node_modules/hono/dist/cjs/utils/crypto.js +30 -61
- package/node_modules/hono/dist/cjs/utils/encode.js +31 -48
- package/node_modules/hono/dist/cjs/utils/filepath.js +23 -54
- package/node_modules/hono/dist/cjs/utils/handler.js +11 -33
- package/node_modules/hono/dist/cjs/utils/headers.js +0 -15
- package/node_modules/hono/dist/cjs/utils/html.js +96 -137
- package/node_modules/hono/dist/cjs/utils/http-status.js +0 -15
- package/node_modules/hono/dist/cjs/utils/ipaddr.js +213 -286
- package/node_modules/hono/dist/cjs/utils/jwt/index.js +14 -27
- package/node_modules/hono/dist/cjs/utils/jwt/jwa.js +25 -42
- package/node_modules/hono/dist/cjs/utils/jwt/jws.js +119 -199
- package/node_modules/hono/dist/cjs/utils/jwt/jwt.js +122 -206
- package/node_modules/hono/dist/cjs/utils/jwt/types.js +122 -159
- package/node_modules/hono/dist/cjs/utils/jwt/utf8.js +9 -28
- package/node_modules/hono/dist/cjs/utils/mime.js +75 -101
- package/node_modules/hono/dist/cjs/utils/stream.js +88 -111
- package/node_modules/hono/dist/cjs/utils/types.js +0 -15
- package/node_modules/hono/dist/cjs/utils/url.js +185 -234
- package/node_modules/hono/dist/cjs/validator/index.js +3 -27
- package/node_modules/hono/dist/cjs/validator/utils.js +0 -15
- package/node_modules/hono/dist/cjs/validator/validator.js +60 -103
- package/node_modules/hono/dist/client/client.js +138 -197
- package/node_modules/hono/dist/client/fetch-result-please.js +59 -56
- package/node_modules/hono/dist/client/index.js +3 -7
- package/node_modules/hono/dist/client/types.js +1 -0
- package/node_modules/hono/dist/client/utils.js +51 -68
- package/node_modules/hono/dist/compose.js +49 -45
- package/node_modules/hono/dist/context.js +376 -426
- package/node_modules/hono/dist/helper/accepts/accepts.js +47 -51
- package/node_modules/hono/dist/helper/accepts/index.js +1 -4
- package/node_modules/hono/dist/helper/adapter/index.js +33 -52
- package/node_modules/hono/dist/helper/conninfo/index.js +1 -0
- package/node_modules/hono/dist/helper/conninfo/types.js +1 -0
- package/node_modules/hono/dist/helper/cookie/index.js +74 -94
- package/node_modules/hono/dist/helper/css/common.js +167 -225
- package/node_modules/hono/dist/helper/css/index.js +132 -137
- package/node_modules/hono/dist/helper/dev/index.js +44 -49
- package/node_modules/hono/dist/helper/factory/index.js +27 -27
- package/node_modules/hono/dist/helper/html/index.js +30 -39
- package/node_modules/hono/dist/helper/proxy/index.js +116 -88
- package/node_modules/hono/dist/helper/route/index.js +121 -43
- package/node_modules/hono/dist/helper/ssg/index.js +3 -18
- package/node_modules/hono/dist/helper/ssg/middleware.js +53 -40
- package/node_modules/hono/dist/helper/ssg/plugins.js +55 -36
- package/node_modules/hono/dist/helper/ssg/ssg.js +198 -283
- package/node_modules/hono/dist/helper/ssg/utils.js +53 -75
- package/node_modules/hono/dist/helper/streaming/index.js +2 -8
- package/node_modules/hono/dist/helper/streaming/sse.js +50 -61
- package/node_modules/hono/dist/helper/streaming/stream.js +22 -31
- package/node_modules/hono/dist/helper/streaming/text.js +9 -10
- package/node_modules/hono/dist/helper/streaming/utils.js +9 -12
- package/node_modules/hono/dist/helper/testing/index.js +16 -10
- package/node_modules/hono/dist/helper/websocket/index.js +49 -53
- package/node_modules/hono/dist/hono-base.js +344 -379
- package/node_modules/hono/dist/hono.js +27 -20
- package/node_modules/hono/dist/http-exception.js +53 -33
- package/node_modules/hono/dist/index.js +19 -6
- package/node_modules/hono/dist/jsx/base.js +231 -340
- package/node_modules/hono/dist/jsx/children.js +16 -20
- package/node_modules/hono/dist/jsx/components.js +118 -170
- package/node_modules/hono/dist/jsx/constants.js +9 -15
- package/node_modules/hono/dist/jsx/context.js +153 -150
- package/node_modules/hono/dist/jsx/dom/client.js +45 -48
- package/node_modules/hono/dist/jsx/dom/components.js +21 -29
- package/node_modules/hono/dist/jsx/dom/context.js +37 -44
- package/node_modules/hono/dist/jsx/dom/css.js +142 -147
- package/node_modules/hono/dist/jsx/dom/hooks/index.js +52 -40
- package/node_modules/hono/dist/jsx/dom/index.js +71 -134
- package/node_modules/hono/dist/jsx/dom/intrinsic-element/components.js +275 -359
- package/node_modules/hono/dist/jsx/dom/jsx-dev-runtime.js +14 -18
- package/node_modules/hono/dist/jsx/dom/jsx-runtime.js +2 -8
- package/node_modules/hono/dist/jsx/dom/render.js +492 -631
- package/node_modules/hono/dist/jsx/dom/server.js +32 -32
- package/node_modules/hono/dist/jsx/dom/utils.js +6 -8
- package/node_modules/hono/dist/jsx/hooks/index.js +236 -308
- package/node_modules/hono/dist/jsx/index.js +45 -98
- package/node_modules/hono/dist/jsx/intrinsic-element/common.js +20 -22
- package/node_modules/hono/dist/jsx/intrinsic-element/components.js +113 -154
- package/node_modules/hono/dist/jsx/intrinsic-elements.js +1 -0
- package/node_modules/hono/dist/jsx/jsx-dev-runtime.js +12 -16
- package/node_modules/hono/dist/jsx/jsx-runtime.js +29 -42
- package/node_modules/hono/dist/jsx/streaming.js +120 -142
- package/node_modules/hono/dist/jsx/types.js +1 -0
- package/node_modules/hono/dist/jsx/utils.js +105 -168
- package/node_modules/hono/dist/middleware/basic-auth/index.js +96 -63
- package/node_modules/hono/dist/middleware/bearer-auth/index.js +93 -89
- package/node_modules/hono/dist/middleware/body-limit/index.js +66 -51
- package/node_modules/hono/dist/middleware/cache/index.js +165 -190
- package/node_modules/hono/dist/middleware/combine/index.js +134 -73
- package/node_modules/hono/dist/middleware/compress/index.js +75 -69
- package/node_modules/hono/dist/middleware/context-storage/index.js +49 -19
- package/node_modules/hono/dist/middleware/cors/index.js +107 -86
- package/node_modules/hono/dist/middleware/csrf/index.js +103 -53
- package/node_modules/hono/dist/middleware/etag/digest.js +59 -77
- package/node_modules/hono/dist/middleware/etag/index.js +71 -70
- package/node_modules/hono/dist/middleware/ip-restriction/index.js +163 -158
- package/node_modules/hono/dist/middleware/jsx-renderer/index.js +97 -54
- package/node_modules/hono/dist/middleware/jwk/index.js +1 -4
- package/node_modules/hono/dist/middleware/jwk/jwk.js +116 -112
- package/node_modules/hono/dist/middleware/jwt/index.js +2 -10
- package/node_modules/hono/dist/middleware/jwt/jwt.js +114 -114
- package/node_modules/hono/dist/middleware/language/index.js +2 -15
- package/node_modules/hono/dist/middleware/language/language.js +180 -157
- package/node_modules/hono/dist/middleware/logger/index.js +43 -37
- package/node_modules/hono/dist/middleware/method-not-allowed/index.js +81 -66
- package/node_modules/hono/dist/middleware/method-override/index.js +101 -81
- package/node_modules/hono/dist/middleware/mount/index.js +70 -0
- package/node_modules/hono/dist/middleware/powered-by/index.js +23 -9
- package/node_modules/hono/dist/middleware/pretty-json/index.js +39 -22
- package/node_modules/hono/dist/middleware/request-id/index.js +1 -4
- package/node_modules/hono/dist/middleware/request-id/request-id.js +33 -20
- package/node_modules/hono/dist/middleware/secure-headers/index.js +1 -5
- package/node_modules/hono/dist/middleware/secure-headers/permissions-policy.js +1 -0
- package/node_modules/hono/dist/middleware/secure-headers/secure-headers.js +144 -155
- package/node_modules/hono/dist/middleware/serve-static/index.js +56 -72
- package/node_modules/hono/dist/middleware/serve-static/path.js +15 -17
- package/node_modules/hono/dist/middleware/timeout/index.js +40 -23
- package/node_modules/hono/dist/middleware/timing/index.js +2 -9
- package/node_modules/hono/dist/middleware/timing/timing.js +177 -97
- package/node_modules/hono/dist/middleware/trailing-slash/index.js +85 -37
- package/node_modules/hono/dist/preset/quick.js +17 -15
- package/node_modules/hono/dist/preset/tiny.js +14 -11
- package/node_modules/hono/dist/request/constants.js +4 -5
- package/node_modules/hono/dist/request.js +328 -319
- package/node_modules/hono/dist/router/linear-router/index.js +1 -4
- package/node_modules/hono/dist/router/linear-router/router.js +93 -120
- package/node_modules/hono/dist/router/pattern-router/index.js +1 -4
- package/node_modules/hono/dist/router/pattern-router/router.js +39 -40
- package/node_modules/hono/dist/router/reg-exp-router/index.js +1 -7
- package/node_modules/hono/dist/router/reg-exp-router/matcher.js +17 -23
- package/node_modules/hono/dist/router/reg-exp-router/node.js +87 -110
- package/node_modules/hono/dist/router/reg-exp-router/prepared-router.js +89 -137
- package/node_modules/hono/dist/router/reg-exp-router/router.js +92 -129
- package/node_modules/hono/dist/router/reg-exp-router/trie.js +69 -64
- package/node_modules/hono/dist/router/smart-router/index.js +1 -4
- package/node_modules/hono/dist/router/smart-router/router.js +46 -55
- package/node_modules/hono/dist/router/trie-router/index.js +1 -4
- package/node_modules/hono/dist/router/trie-router/node.js +131 -162
- package/node_modules/hono/dist/router/trie-router/router.js +11 -14
- package/node_modules/hono/dist/router/utils.js +4 -5
- package/node_modules/hono/dist/router.js +35 -14
- package/node_modules/hono/dist/types/adapter/aws-lambda/conninfo.d.ts +4 -1
- package/node_modules/hono/dist/types/adapter/aws-lambda/handler.d.ts +150 -104
- package/node_modules/hono/dist/types/adapter/aws-lambda/index.d.ts +4 -8
- package/node_modules/hono/dist/types/adapter/aws-lambda/types.d.ts +152 -122
- package/node_modules/hono/dist/types/adapter/bun/conninfo.d.ts +4 -1
- package/node_modules/hono/dist/types/adapter/bun/index.d.ts +6 -10
- package/node_modules/hono/dist/types/adapter/bun/serve-static.d.ts +7 -2
- package/node_modules/hono/dist/types/adapter/bun/server.d.ts +4 -5
- package/node_modules/hono/dist/types/adapter/bun/ssg.d.ts +5 -1
- package/node_modules/hono/dist/types/adapter/bun/websocket.d.ts +31 -16
- package/node_modules/hono/dist/types/adapter/cloudflare-pages/conninfo.d.ts +4 -1
- package/node_modules/hono/dist/types/adapter/cloudflare-pages/handler.d.ts +29 -17
- package/node_modules/hono/dist/types/adapter/cloudflare-pages/index.d.ts +3 -7
- package/node_modules/hono/dist/types/adapter/cloudflare-workers/conninfo.d.ts +6 -1
- package/node_modules/hono/dist/types/adapter/cloudflare-workers/index.d.ts +4 -7
- package/node_modules/hono/dist/types/adapter/cloudflare-workers/serve-static-module.d.ts +5 -2
- package/node_modules/hono/dist/types/adapter/cloudflare-workers/serve-static.d.ts +10 -5
- package/node_modules/hono/dist/types/adapter/cloudflare-workers/utils.d.ts +10 -2
- package/node_modules/hono/dist/types/adapter/cloudflare-workers/websocket.d.ts +6 -1
- package/node_modules/hono/dist/types/adapter/deno/conninfo.d.ts +4 -1
- package/node_modules/hono/dist/types/adapter/deno/deno.d.ts +1 -0
- package/node_modules/hono/dist/types/adapter/deno/index.d.ts +5 -8
- package/node_modules/hono/dist/types/adapter/deno/serve-static.d.ts +7 -2
- package/node_modules/hono/dist/types/adapter/deno/ssg.d.ts +5 -1
- package/node_modules/hono/dist/types/adapter/deno/websocket.d.ts +6 -1
- package/node_modules/hono/dist/types/adapter/lambda-edge/conninfo.d.ts +6 -1
- package/node_modules/hono/dist/types/adapter/lambda-edge/handler.d.ts +83 -57
- package/node_modules/hono/dist/types/adapter/lambda-edge/index.d.ts +3 -7
- package/node_modules/hono/dist/types/adapter/netlify/conninfo.d.ts +4 -1
- package/node_modules/hono/dist/types/adapter/netlify/handler.d.ts +6 -1
- package/node_modules/hono/dist/types/adapter/netlify/index.d.ts +3 -5
- package/node_modules/hono/dist/types/adapter/netlify/mod.d.ts +3 -2
- package/node_modules/hono/dist/types/adapter/service-worker/handler.d.ts +9 -7
- package/node_modules/hono/dist/types/adapter/service-worker/index.d.ts +7 -9
- package/node_modules/hono/dist/types/adapter/service-worker/types.d.ts +12 -7
- package/node_modules/hono/dist/types/adapter/vercel/conninfo.d.ts +6 -1
- package/node_modules/hono/dist/types/adapter/vercel/handler.d.ts +6 -1
- package/node_modules/hono/dist/types/adapter/vercel/index.d.ts +3 -6
- package/node_modules/hono/dist/types/client/client.d.ts +5 -3
- package/node_modules/hono/dist/types/client/fetch-result-please.d.ts +21 -19
- package/node_modules/hono/dist/types/client/index.d.ts +5 -7
- package/node_modules/hono/dist/types/client/types.d.ts +134 -159
- package/node_modules/hono/dist/types/client/utils.d.ts +6 -4
- package/node_modules/hono/dist/types/compose.d.ts +4 -2
- package/node_modules/hono/dist/types/context.d.ts +335 -335
- package/node_modules/hono/dist/types/helper/accepts/accepts.d.ts +11 -9
- package/node_modules/hono/dist/types/helper/accepts/index.d.ts +2 -5
- package/node_modules/hono/dist/types/helper/adapter/index.d.ts +4 -6
- package/node_modules/hono/dist/types/helper/conninfo/index.d.ts +2 -5
- package/node_modules/hono/dist/types/helper/conninfo/types.d.ts +25 -23
- package/node_modules/hono/dist/types/helper/cookie/index.d.ts +10 -12
- package/node_modules/hono/dist/types/helper/css/common.d.ts +11 -9
- package/node_modules/hono/dist/types/helper/css/index.d.ts +26 -28
- package/node_modules/hono/dist/types/helper/dev/index.d.ts +10 -12
- package/node_modules/hono/dist/types/helper/factory/index.d.ts +26 -73
- package/node_modules/hono/dist/types/helper/html/index.d.ts +4 -7
- package/node_modules/hono/dist/types/helper/proxy/index.d.ts +19 -21
- package/node_modules/hono/dist/types/helper/route/index.d.ts +4 -2
- package/node_modules/hono/dist/types/helper/ssg/index.d.ts +4 -7
- package/node_modules/hono/dist/types/helper/ssg/middleware.d.ts +8 -6
- package/node_modules/hono/dist/types/helper/ssg/plugins.d.ts +3 -1
- package/node_modules/hono/dist/types/helper/ssg/ssg.d.ts +38 -36
- package/node_modules/hono/dist/types/helper/ssg/utils.d.ts +5 -3
- package/node_modules/hono/dist/types/helper/streaming/index.d.ts +4 -8
- package/node_modules/hono/dist/types/helper/streaming/sse.d.ts +10 -8
- package/node_modules/hono/dist/types/helper/streaming/stream.d.ts +4 -2
- package/node_modules/hono/dist/types/helper/streaming/text.d.ts +4 -2
- package/node_modules/hono/dist/types/helper/streaming/utils.d.ts +2 -0
- package/node_modules/hono/dist/types/helper/testing/index.d.ts +7 -9
- package/node_modules/hono/dist/types/helper/websocket/index.d.ts +30 -33
- package/node_modules/hono/dist/types/hono-base.d.ts +210 -210
- package/node_modules/hono/dist/types/hono.d.ts +11 -10
- package/node_modules/hono/dist/types/http-exception.d.ts +20 -22
- package/node_modules/hono/dist/types/index.d.ts +6 -37
- package/node_modules/hono/dist/types/jsx/base.d.ts +37 -35
- package/node_modules/hono/dist/types/jsx/children.d.ts +8 -6
- package/node_modules/hono/dist/types/jsx/components.d.ts +8 -5
- package/node_modules/hono/dist/types/jsx/constants.d.ts +2 -0
- package/node_modules/hono/dist/types/jsx/context.d.ts +9 -6
- package/node_modules/hono/dist/types/jsx/dom/client.d.ts +9 -10
- package/node_modules/hono/dist/types/jsx/dom/components.d.ts +9 -6
- package/node_modules/hono/dist/types/jsx/dom/context.d.ts +3 -1
- package/node_modules/hono/dist/types/jsx/dom/css.d.ts +27 -30
- package/node_modules/hono/dist/types/jsx/dom/hooks/index.d.ts +11 -12
- package/node_modules/hono/dist/types/jsx/dom/index.d.ts +79 -83
- package/node_modules/hono/dist/types/jsx/dom/intrinsic-element/components.d.ts +9 -5
- package/node_modules/hono/dist/types/jsx/dom/jsx-dev-runtime.d.ts +4 -6
- package/node_modules/hono/dist/types/jsx/dom/jsx-runtime.d.ts +3 -7
- package/node_modules/hono/dist/types/jsx/dom/render.d.ts +32 -50
- package/node_modules/hono/dist/types/jsx/dom/server.d.ts +87 -85
- package/node_modules/hono/dist/types/jsx/dom/utils.d.ts +2 -0
- package/node_modules/hono/dist/types/jsx/hooks/index.d.ts +16 -16
- package/node_modules/hono/dist/types/jsx/index.d.ts +71 -73
- package/node_modules/hono/dist/types/jsx/intrinsic-element/common.d.ts +3 -1
- package/node_modules/hono/dist/types/jsx/intrinsic-element/components.d.ts +7 -4
- package/node_modules/hono/dist/types/jsx/intrinsic-elements.d.ts +708 -708
- package/node_modules/hono/dist/types/jsx/jsx-dev-runtime.d.ts +4 -7
- package/node_modules/hono/dist/types/jsx/jsx-runtime.d.ts +7 -10
- package/node_modules/hono/dist/types/jsx/streaming.d.ts +9 -10
- package/node_modules/hono/dist/types/jsx/types.d.ts +12 -13
- package/node_modules/hono/dist/types/jsx/utils.d.ts +2 -0
- package/node_modules/hono/dist/types/middleware/basic-auth/index.d.ts +17 -19
- package/node_modules/hono/dist/types/middleware/bearer-auth/index.d.ts +46 -48
- package/node_modules/hono/dist/types/middleware/body-limit/index.d.ts +6 -8
- package/node_modules/hono/dist/types/middleware/cache/index.d.ts +13 -15
- package/node_modules/hono/dist/types/middleware/combine/index.d.ts +4 -6
- package/node_modules/hono/dist/types/middleware/compress/index.d.ts +9 -10
- package/node_modules/hono/dist/types/middleware/context-storage/index.d.ts +4 -6
- package/node_modules/hono/dist/types/middleware/cors/index.d.ts +10 -12
- package/node_modules/hono/dist/types/middleware/csrf/index.d.ts +6 -8
- package/node_modules/hono/dist/types/middleware/etag/digest.d.ts +2 -0
- package/node_modules/hono/dist/types/middleware/etag/index.d.ts +6 -8
- package/node_modules/hono/dist/types/middleware/ip-restriction/index.d.ts +11 -12
- package/node_modules/hono/dist/types/middleware/jsx-renderer/index.d.ts +11 -11
- package/node_modules/hono/dist/types/middleware/jwk/index.d.ts +2 -1
- package/node_modules/hono/dist/types/middleware/jwk/jwk.d.ts +20 -23
- package/node_modules/hono/dist/types/middleware/jwt/index.d.ts +7 -6
- package/node_modules/hono/dist/types/middleware/jwt/jwt.d.ts +28 -30
- package/node_modules/hono/dist/types/middleware/language/index.d.ts +6 -5
- package/node_modules/hono/dist/types/middleware/language/language.d.ts +42 -44
- package/node_modules/hono/dist/types/middleware/logger/index.d.ts +3 -5
- package/node_modules/hono/dist/types/middleware/method-not-allowed/index.d.ts +7 -9
- package/node_modules/hono/dist/types/middleware/method-override/index.d.ts +14 -16
- package/node_modules/hono/dist/types/middleware/mount/index.d.ts +46 -0
- package/node_modules/hono/dist/types/middleware/powered-by/index.d.ts +8 -10
- package/node_modules/hono/dist/types/middleware/pretty-json/index.d.ts +18 -20
- package/node_modules/hono/dist/types/middleware/request-id/index.d.ts +6 -5
- package/node_modules/hono/dist/types/middleware/request-id/request-id.d.ts +9 -11
- package/node_modules/hono/dist/types/middleware/secure-headers/index.d.ts +6 -6
- package/node_modules/hono/dist/types/middleware/secure-headers/permissions-policy.d.ts +2 -0
- package/node_modules/hono/dist/types/middleware/secure-headers/secure-headers.d.ts +55 -57
- package/node_modules/hono/dist/types/middleware/serve-static/index.d.ts +24 -24
- package/node_modules/hono/dist/types/middleware/serve-static/path.d.ts +2 -0
- package/node_modules/hono/dist/types/middleware/timeout/index.d.ts +5 -7
- package/node_modules/hono/dist/types/middleware/timing/index.d.ts +6 -5
- package/node_modules/hono/dist/types/middleware/timing/timing.d.ts +17 -20
- package/node_modules/hono/dist/types/middleware/trailing-slash/index.d.ts +35 -37
- package/node_modules/hono/dist/types/preset/quick.d.ts +6 -9
- package/node_modules/hono/dist/types/preset/tiny.d.ts +6 -9
- package/node_modules/hono/dist/types/request/constants.d.ts +2 -0
- package/node_modules/hono/dist/types/request.d.ts +288 -286
- package/node_modules/hono/dist/types/router/linear-router/index.d.ts +2 -5
- package/node_modules/hono/dist/types/router/linear-router/router.d.ts +7 -5
- package/node_modules/hono/dist/types/router/pattern-router/index.d.ts +2 -5
- package/node_modules/hono/dist/types/router/pattern-router/router.d.ts +7 -5
- package/node_modules/hono/dist/types/router/reg-exp-router/index.d.ts +3 -6
- package/node_modules/hono/dist/types/router/reg-exp-router/matcher.d.ts +3 -1
- package/node_modules/hono/dist/types/router/reg-exp-router/node.d.ts +6 -4
- package/node_modules/hono/dist/types/router/reg-exp-router/prepared-router.d.ts +11 -10
- package/node_modules/hono/dist/types/router/reg-exp-router/router.d.ts +10 -9
- package/node_modules/hono/dist/types/router/reg-exp-router/trie.d.ts +7 -5
- package/node_modules/hono/dist/types/router/smart-router/index.d.ts +2 -5
- package/node_modules/hono/dist/types/router/smart-router/router.d.ts +11 -9
- package/node_modules/hono/dist/types/router/trie-router/index.d.ts +2 -5
- package/node_modules/hono/dist/types/router/trie-router/node.d.ts +6 -4
- package/node_modules/hono/dist/types/router/trie-router/router.d.ts +7 -5
- package/node_modules/hono/dist/types/router/utils.d.ts +2 -0
- package/node_modules/hono/dist/types/router.d.ts +23 -22
- package/node_modules/hono/dist/types/types.d.ts +146 -505
- package/node_modules/hono/dist/types/utils/accept.d.ts +5 -3
- package/node_modules/hono/dist/types/utils/basic-auth.d.ts +4 -2
- package/node_modules/hono/dist/types/utils/body.d.ts +46 -50
- package/node_modules/hono/dist/types/utils/buffer.d.ts +7 -5
- package/node_modules/hono/dist/types/utils/color.d.ts +2 -0
- package/node_modules/hono/dist/types/utils/compress.d.ts +2 -0
- package/node_modules/hono/dist/types/utils/concurrent.d.ts +6 -4
- package/node_modules/hono/dist/types/utils/constants.d.ts +2 -0
- package/node_modules/hono/dist/types/utils/cookie.d.ts +20 -18
- package/node_modules/hono/dist/types/utils/crypto.d.ts +5 -7
- package/node_modules/hono/dist/types/utils/encode.d.ts +2 -0
- package/node_modules/hono/dist/types/utils/filepath.d.ts +5 -3
- package/node_modules/hono/dist/types/utils/handler.d.ts +2 -0
- package/node_modules/hono/dist/types/utils/headers.d.ts +2 -0
- package/node_modules/hono/dist/types/utils/html.d.ts +11 -9
- package/node_modules/hono/dist/types/utils/http-status.d.ts +2 -0
- package/node_modules/hono/dist/types/utils/ipaddr.d.ts +4 -6
- package/node_modules/hono/dist/types/utils/jwt/index.d.ts +18 -12
- package/node_modules/hono/dist/types/utils/jwt/jwa.d.ts +15 -13
- package/node_modules/hono/dist/types/utils/jwt/jws.d.ts +4 -7
- package/node_modules/hono/dist/types/utils/jwt/jwt.d.ts +26 -29
- package/node_modules/hono/dist/types/utils/jwt/types.d.ts +48 -45
- package/node_modules/hono/dist/types/utils/jwt/utf8.d.ts +2 -0
- package/node_modules/hono/dist/types/utils/mime.d.ts +60 -57
- package/node_modules/hono/dist/types/utils/stream.d.ts +27 -25
- package/node_modules/hono/dist/types/utils/types.d.ts +14 -26
- package/node_modules/hono/dist/types/utils/url.d.ts +2 -0
- package/node_modules/hono/dist/types/validator/index.d.ts +3 -7
- package/node_modules/hono/dist/types/validator/utils.d.ts +6 -8
- package/node_modules/hono/dist/types/validator/validator.d.ts +11 -9
- package/node_modules/hono/dist/types.js +4 -6
- package/node_modules/hono/dist/utils/accept.js +185 -212
- package/node_modules/hono/dist/utils/basic-auth.js +18 -21
- package/node_modules/hono/dist/utils/body.js +87 -92
- package/node_modules/hono/dist/utils/buffer.js +44 -71
- package/node_modules/hono/dist/utils/color.js +33 -21
- package/node_modules/hono/dist/utils/compress.js +11 -5
- package/node_modules/hono/dist/utils/concurrent.js +29 -38
- package/node_modules/hono/dist/utils/constants.js +7 -5
- package/node_modules/hono/dist/utils/cookie.js +114 -163
- package/node_modules/hono/dist/utils/crypto.js +30 -40
- package/node_modules/hono/dist/utils/encode.js +30 -26
- package/node_modules/hono/dist/utils/filepath.js +23 -33
- package/node_modules/hono/dist/utils/handler.js +10 -11
- package/node_modules/hono/dist/utils/headers.js +1 -0
- package/node_modules/hono/dist/utils/html.js +97 -117
- package/node_modules/hono/dist/utils/http-status.js +1 -0
- package/node_modules/hono/dist/utils/ipaddr.js +227 -279
- package/node_modules/hono/dist/utils/jwt/index.js +12 -4
- package/node_modules/hono/dist/utils/jwt/jwa.js +24 -20
- package/node_modules/hono/dist/utils/jwt/jws.js +115 -174
- package/node_modules/hono/dist/utils/jwt/jwt.js +120 -198
- package/node_modules/hono/dist/utils/jwt/types.js +79 -95
- package/node_modules/hono/dist/utils/jwt/utf8.js +9 -7
- package/node_modules/hono/dist/utils/mime.js +74 -79
- package/node_modules/hono/dist/utils/stream.js +86 -88
- package/node_modules/hono/dist/utils/types.js +1 -0
- package/node_modules/hono/dist/utils/url.js +187 -215
- package/node_modules/hono/dist/validator/index.js +1 -4
- package/node_modules/hono/dist/validator/utils.js +1 -0
- package/node_modules/hono/dist/validator/validator.js +61 -83
- package/node_modules/hono/package.json +35 -27
- package/package.json +16 -14
- package/scripts/lib/cursor-sdk-output-filter.d.mts +1 -0
- package/scripts/lib/cursor-sdk-output-filter.mjs +1 -0
- package/scripts/platform-smoke/artifacts.mjs +7 -1
- package/shared/cursor-sdk-output-filter.d.mts +3 -0
- package/shared/cursor-sdk-output-filter.mjs +117 -44
- package/src/context.ts +57 -33
- package/src/cursor-api-key.ts +37 -17
- package/src/cursor-cloud-options.ts +2 -0
- package/src/cursor-config.ts +76 -0
- package/src/cursor-custom-store-path.ts +151 -0
- package/src/cursor-custom-subagent-definitions.ts +21 -0
- package/src/cursor-fallback-models.generated.ts +1 -1
- package/src/cursor-fallback-warning.ts +7 -3
- package/src/cursor-live-run-coordinator.ts +21 -2
- package/src/cursor-mcp-timeout-override.ts +3 -1
- package/src/cursor-pi-tool-bridge-run.ts +21 -0
- package/src/cursor-pi-tool-bridge-server.ts +1 -2
- package/src/cursor-pi-tool-bridge-types.ts +3 -0
- package/src/cursor-provider-binding.ts +70 -11
- package/src/cursor-provider-errors.ts +32 -28
- package/src/cursor-provider-live-run-drain.ts +9 -4
- package/src/cursor-provider-run-finalizer.ts +2 -1
- package/src/cursor-provider-turn-prepare.ts +28 -13
- package/src/cursor-provider-turn-summary.ts +1 -1
- package/src/cursor-provider-turn-tool-ledger.ts +12 -7
- package/src/cursor-provider.ts +3 -1
- package/src/cursor-question-tool.ts +5 -5
- package/src/cursor-request-provenance.ts +18 -3
- package/src/cursor-sdk-output-filter.ts +2 -0
- package/src/cursor-sdk-process-error-guard.ts +1 -2
- package/src/cursor-sdk-runtime.ts +14 -15
- package/src/cursor-sdk-vendor-env.ts +22 -0
- package/src/cursor-session-agent-cleanup.ts +28 -27
- package/src/cursor-session-agent.ts +44 -17
- package/src/cursor-session-send-policy.ts +2 -2
- package/src/cursor-session-store.ts +259 -53
- package/src/cursor-state.ts +7 -2
- package/src/cursor-tool-manifest.ts +1 -1
- package/src/index.ts +19 -19
- package/src/model-discovery.ts +62 -23
- package/src/model-list-cache.ts +11 -1
- package/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-BLVe3qmU.d.cts.map +0 -1
- package/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-Bt6U_Fqb.d.mts.map +0 -1
- package/node_modules/@modelcontextprotocol/server/dist/mcp-DUcCQSTW.cjs.map +0 -1
- package/node_modules/@modelcontextprotocol/server/dist/mcp-Dw2OlZ1f.mjs.map +0 -1
- package/node_modules/@modelcontextprotocol/server/dist/src-CgFsfg3E.cjs.map +0 -1
- 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.
|
|
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 &&
|
|
15
|
-
"test: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": "
|
|
19
|
-
"test:node": "
|
|
20
|
-
"test:workerd": "
|
|
21
|
-
"test:
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"lint": "
|
|
25
|
-
"lint:fix": "
|
|
26
|
-
"format": "
|
|
27
|
-
"format:fix": "
|
|
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": "
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
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": "
|
|
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
|
-
"
|
|
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": "
|
|
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.
|
|
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.
|
|
165
|
-
"@hono/node-server": "2.1.
|
|
166
|
-
"@modelcontextprotocol/hono": "2.0.
|
|
167
|
-
"@modelcontextprotocol/server": "2.1
|
|
168
|
-
"hono": "4.13.
|
|
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
|
-
"@
|
|
184
|
-
"@earendil-works/pi-
|
|
185
|
-
"@earendil-works/pi-
|
|
186
|
-
"@
|
|
187
|
-
"@
|
|
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.
|
|
193
|
+
"typebox": "1.3.36",
|
|
193
194
|
"typescript": "7.0.2",
|
|
194
|
-
"vitest": "5.0.
|
|
195
|
+
"vitest": "5.0.3",
|
|
196
|
+
"yaml": "2.9.0"
|
|
195
197
|
},
|
|
196
198
|
"pi": {
|
|
197
199
|
"extensions": [
|
|
@@ -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
|
-
|
|
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
|
-
"
|
|
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
|
|
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
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
-
|
|
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
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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
|
|
76
|
-
if (activeOutputFilterInstalls > 0
|
|
151
|
+
activeOutputFilterInstalls -= 1;
|
|
152
|
+
if (activeOutputFilterInstalls > 0) return;
|
|
77
153
|
process.stdout.write = outputFilterOriginals.stdoutWrite;
|
|
78
154
|
process.stderr.write = outputFilterOriginals.stderrWrite;
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
414
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
|
462
|
-
const
|
|
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
|
-
|
|
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);
|