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
|
@@ -20,6 +20,7 @@ export class CursorPiToolBridgeRunImpl {
|
|
|
20
20
|
knownMcpToolNames;
|
|
21
21
|
knownCursorMcpCallIds = new Set();
|
|
22
22
|
queuedRequests = [];
|
|
23
|
+
pendingToolCallListeners = new Set();
|
|
23
24
|
pendingByPiToolCallId = new Map();
|
|
24
25
|
pendingByBridgeCallId = new Map();
|
|
25
26
|
pendingByCursorMcpCallId = new Map();
|
|
@@ -129,6 +130,23 @@ export class CursorPiToolBridgeRunImpl {
|
|
|
129
130
|
hasPendingPiToolCallId(piToolCallId) {
|
|
130
131
|
return this.pendingByPiToolCallId.has(piToolCallId);
|
|
131
132
|
}
|
|
133
|
+
hasPendingToolCalls() {
|
|
134
|
+
return this.pendingCount() > 0;
|
|
135
|
+
}
|
|
136
|
+
onPendingToolCallsChanged(listener) {
|
|
137
|
+
this.pendingToolCallListeners.add(listener);
|
|
138
|
+
return () => { this.pendingToolCallListeners.delete(listener); };
|
|
139
|
+
}
|
|
140
|
+
notifyPendingToolCallsChanged() {
|
|
141
|
+
for (const listener of this.pendingToolCallListeners) {
|
|
142
|
+
try {
|
|
143
|
+
listener();
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
// Observers must not prevent call registration or protocol settlement.
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
132
150
|
cancelPendingPiToolCallId(piToolCallId, reason) {
|
|
133
151
|
const pending = this.pendingByPiToolCallId.get(piToolCallId);
|
|
134
152
|
if (!pending)
|
|
@@ -173,6 +191,7 @@ export class CursorPiToolBridgeRunImpl {
|
|
|
173
191
|
return;
|
|
174
192
|
this.disposed = true;
|
|
175
193
|
this.cancel("Cursor pi tool bridge run disposed");
|
|
194
|
+
this.pendingToolCallListeners.clear();
|
|
176
195
|
await waitForProtocolFlush();
|
|
177
196
|
await Promise.allSettled([
|
|
178
197
|
this.mcpTransport?.close(),
|
|
@@ -241,6 +260,7 @@ export class CursorPiToolBridgeRunImpl {
|
|
|
241
260
|
this.pendingByBridgeCallId.set(request.bridgeCallId, pending);
|
|
242
261
|
this.pendingByCursorMcpCallId.set(cursorMcpCallId, pending);
|
|
243
262
|
this.knownCursorMcpCallIds.add(cursorMcpCallId);
|
|
263
|
+
this.notifyPendingToolCallsChanged();
|
|
244
264
|
pending.timeout = setTimeout(() => {
|
|
245
265
|
const reason = `Cursor pi bridge CallTool timed out after ${this.callTimeoutMs} ms`;
|
|
246
266
|
this.rejectAndAbortPending(pending, new Error(reason));
|
|
@@ -352,5 +372,6 @@ export class CursorPiToolBridgeRunImpl {
|
|
|
352
372
|
const queuedIndex = this.queuedRequests.findIndex((request) => request.bridgeCallId === pending.request.bridgeCallId);
|
|
353
373
|
if (queuedIndex >= 0)
|
|
354
374
|
this.queuedRequests.splice(queuedIndex, 1);
|
|
375
|
+
this.notifyPendingToolCallsChanged();
|
|
355
376
|
}
|
|
356
377
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createServer } from "node:http";
|
|
2
2
|
import { asRecord } from "./cursor-record-utils.js";
|
|
3
|
+
import { CursorPiToolBridgeRunImpl } from "./cursor-pi-tool-bridge-run.js";
|
|
3
4
|
import { buildCursorPiToolBridgeSnapshot, buildCursorPiToolBridgeSurfaceSignature, createEmptySnapshot, resolveCursorPiToolBridgeBuiltinsEnabled, resolveCursorPiToolBridgeEnabled, } from "./cursor-pi-tool-bridge-snapshot.js";
|
|
4
5
|
export const LOOPBACK_HOST = "127.0.0.1";
|
|
5
6
|
const HTTP_SERVER_CLOSE_GRACE_MS = 250;
|
|
@@ -33,7 +34,6 @@ export class CursorPiToolBridgeRegistry {
|
|
|
33
34
|
exposeOverlappingBuiltins: resolveCursorPiToolBridgeBuiltinsEnabled(this.env),
|
|
34
35
|
})
|
|
35
36
|
: createEmptySnapshot();
|
|
36
|
-
const { CursorPiToolBridgeRunImpl } = await import("./cursor-pi-tool-bridge-run.js");
|
|
37
37
|
const run = new CursorPiToolBridgeRunImpl(this, this.env, snapshot, bridgeEnabled && snapshot.tools.length > 0, options);
|
|
38
38
|
this.runs.add(run);
|
|
39
39
|
await run.start();
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { cursorApiKeyAuth, normalizeCursorApiKey, resolveCursorCredentialApiKey } from "./cursor-api-key.js";
|
|
2
|
+
import { discoverModels } from "./model-discovery.js";
|
|
3
|
+
import { clearModelListCache } from "./model-list-cache.js";
|
|
2
4
|
import { captureCursorCloudLifecycleRecorder } from "./cursor-cloud-lifecycle.js";
|
|
3
5
|
import { captureCursorUsageRecorder } from "./cursor-usage-ledger.js";
|
|
4
6
|
import { getCursorNativeToolDisplayState } from "./cursor-native-tool-display-state.js";
|
|
@@ -6,15 +8,17 @@ import { getRegisteredCursorPiToolBridge } from "./cursor-pi-tool-bridge.js";
|
|
|
6
8
|
import { createCursorLazyStream } from "./cursor-provider-lazy.js";
|
|
7
9
|
import { getCursorSessionScopeSnapshot } from "./cursor-session-scope.js";
|
|
8
10
|
import { captureCursorRequestProjection, resolveCursorRequestProvenance } from "./cursor-request-provenance.js";
|
|
9
|
-
export const CURSOR_PROVIDER_OWNERSHIP_ERROR = "Cursor provider ownership is unavailable: this request does not belong to the active Cursor registration.
|
|
11
|
+
export const CURSOR_PROVIDER_OWNERSHIP_ERROR = "Cursor provider ownership is unavailable: this request does not belong to the active Cursor registration. Reload this session's extensions to restore its Cursor registration; use independent ModelRuntime instances for sibling sessions.";
|
|
10
12
|
const requestOwners = new WeakMap();
|
|
11
13
|
/** One closure per ExtensionAPI, including direct compaction/tree/bug-report streams. */
|
|
12
14
|
export function registerCursorProviderBinding(pi) {
|
|
13
15
|
const binding = { active: false, closed: false };
|
|
16
|
+
let registry;
|
|
14
17
|
const operations = new WeakMap();
|
|
15
18
|
pi.on("session_before_compact", (event) => { operations.set(event.signal, "compaction"); });
|
|
16
19
|
pi.on("session_before_tree", (event) => { operations.set(event.signal, "tree"); });
|
|
17
20
|
pi.on("before_provider_headers", (event, ctx) => {
|
|
21
|
+
const notices = new Set();
|
|
18
22
|
// Pi's SDK supplies this session-owned callback for ordinary and auxiliary
|
|
19
23
|
// streams. ModelRuntime forwards the same real headers object to the provider.
|
|
20
24
|
requestOwners.set(event.headers, {
|
|
@@ -22,6 +26,18 @@ export function registerCursorProviderBinding(pi) {
|
|
|
22
26
|
scope: getCursorSessionScopeSnapshot(pi),
|
|
23
27
|
projection: captureCursorRequestProjection(ctx.sessionManager),
|
|
24
28
|
usageRecorder: captureCursorUsageRecorder(pi, ctx),
|
|
29
|
+
reportSdkNotice: (kind, message) => {
|
|
30
|
+
if (!binding.active || binding.closed)
|
|
31
|
+
return false;
|
|
32
|
+
if (notices.has(kind))
|
|
33
|
+
return;
|
|
34
|
+
pi.appendEntry("pi-cursor-sdk:capability-notice", { kind, message });
|
|
35
|
+
if (ctx.hasUI)
|
|
36
|
+
ctx.ui.notify(message, "warning");
|
|
37
|
+
else
|
|
38
|
+
console.warn(message);
|
|
39
|
+
notices.add(kind);
|
|
40
|
+
},
|
|
25
41
|
});
|
|
26
42
|
});
|
|
27
43
|
const stream = createCursorLazyStream((model, context, options) => {
|
|
@@ -42,17 +58,61 @@ export function registerCursorProviderBinding(pi) {
|
|
|
42
58
|
bridge: getRegisteredCursorPiToolBridge(pi),
|
|
43
59
|
nativeDisplay: getCursorNativeToolDisplayState(pi),
|
|
44
60
|
recordCloudLifecycle: captureCursorCloudLifecycleRecorder(pi),
|
|
61
|
+
reportSdkNotice: owner.reportSdkNotice,
|
|
45
62
|
};
|
|
46
63
|
});
|
|
47
|
-
pi.on("session_start", () => {
|
|
48
|
-
binding.active = true; });
|
|
49
|
-
pi.on("session_shutdown", () => { binding.active = false; binding.closed = true; });
|
|
50
|
-
return (models) => {
|
|
64
|
+
pi.on("session_start", async (_event, ctx) => {
|
|
51
65
|
if (binding.closed)
|
|
52
66
|
return;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
67
|
+
binding.active = true;
|
|
68
|
+
registry = ctx.modelRegistry;
|
|
69
|
+
// The genuine extension context supplies composed config auth; startup
|
|
70
|
+
// selection already has the known baseline, without reading a default store.
|
|
71
|
+
await registry.refresh({ providers: ["cursor"], allowNetwork: false });
|
|
72
|
+
});
|
|
73
|
+
pi.on("session_shutdown", () => { binding.active = false; binding.closed = true; registry = undefined; });
|
|
74
|
+
return (models, onCatalog) => {
|
|
75
|
+
if (binding.closed)
|
|
76
|
+
return;
|
|
77
|
+
const toNative = (definitions) => definitions.map(({ compat: _compat, ...definition }) => ({
|
|
78
|
+
...definition, provider: "cursor", api: "cursor-sdk", baseUrl: "https://cursor.com",
|
|
79
|
+
}));
|
|
80
|
+
let current = toNative(models);
|
|
81
|
+
const provider = {
|
|
82
|
+
id: "cursor", name: "Cursor", baseUrl: "https://cursor.com",
|
|
83
|
+
auth: { apiKey: cursorApiKeyAuth() },
|
|
84
|
+
getModels: () => current,
|
|
85
|
+
stream: stream,
|
|
86
|
+
streamSimple: stream,
|
|
87
|
+
async refreshModels(context) {
|
|
88
|
+
if (binding.closed)
|
|
89
|
+
return;
|
|
90
|
+
const resolved = await registry?.getProviderAuth("cursor");
|
|
91
|
+
context.signal.throwIfAborted();
|
|
92
|
+
const credential = context.credential;
|
|
93
|
+
const apiKey = registry
|
|
94
|
+
? normalizeCursorApiKey(resolved?.auth.apiKey)
|
|
95
|
+
: credential && credential.type !== "api_key" ? undefined
|
|
96
|
+
: await resolveCursorCredentialApiKey(credential, async () => process.env.CURSOR_API_KEY);
|
|
97
|
+
let issue;
|
|
98
|
+
await discoverModels({
|
|
99
|
+
apiKey, allowNetwork: context.allowNetwork, forceRefresh: context.force, signal: context.signal,
|
|
100
|
+
onFallback: (next) => { issue = next; },
|
|
101
|
+
publish: (definitions, update) => context.publish({
|
|
102
|
+
update: () => {
|
|
103
|
+
if (binding.closed)
|
|
104
|
+
return;
|
|
105
|
+
update();
|
|
106
|
+
current = toNative(definitions);
|
|
107
|
+
// Do not infer logout before native composed auth is reachable.
|
|
108
|
+
if (registry && !apiKey)
|
|
109
|
+
clearModelListCache();
|
|
110
|
+
onCatalog(issue);
|
|
111
|
+
},
|
|
112
|
+
}),
|
|
113
|
+
});
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
pi.registerProvider(provider);
|
|
57
117
|
};
|
|
58
118
|
}
|
|
@@ -120,7 +120,11 @@ function collectConnectErrorStacks(error, record) {
|
|
|
120
120
|
}
|
|
121
121
|
function isConnectError(error, record) {
|
|
122
122
|
const name = error instanceof Error ? error.name : getErrorStringField(record, "name");
|
|
123
|
-
|
|
123
|
+
if (name === "ConnectError")
|
|
124
|
+
return true;
|
|
125
|
+
// @cursor/sdk convertConnectError re-wraps backend ConnectErrors (name -> NetworkError,
|
|
126
|
+
// code -> "unavailable") and leaves the original ConnectError on `.cause` without outer details.
|
|
127
|
+
return getErrorStringField(asRecord(record?.cause), "name") === "ConnectError";
|
|
124
128
|
}
|
|
125
129
|
function isUnauthenticatedConnectCode(code) {
|
|
126
130
|
return code === 16 || (typeof code === "string" && /^(?:16|unauthenticated)$/i.test(code));
|
|
@@ -133,11 +137,10 @@ function isCursorSdkStallAbortNetworkError(code, evidence, stackEvidence) {
|
|
|
133
137
|
/(?:operation was aborted|canceled)/i.test(evidence) &&
|
|
134
138
|
/(?:AbortError|operation was aborted)/i.test(`${evidence}\n${stackEvidence}`) &&
|
|
135
139
|
stackEvidence.includes("@cursor/sdk") &&
|
|
136
|
-
stackEvidence.includes("@connectrpc/connect-node") &&
|
|
137
140
|
/\b(?:onStall|reportStall|StallDetected)\b/i.test(stackEvidence));
|
|
138
141
|
}
|
|
139
142
|
/**
|
|
140
|
-
* @cursor/sdk@1.0.
|
|
143
|
+
* @cursor/sdk@1.0.36 throws internal RetriableError (name/kind "RetriableError") with message
|
|
141
144
|
* "Connection stalled" or "Connection stalled repeatedly" after fetchWithRetry exhausts stalls.
|
|
142
145
|
* The ConnectError is only the cause; the top-level error is not a ConnectError.
|
|
143
146
|
*/
|
|
@@ -154,25 +157,23 @@ export function isCursorSdkConnectionStalledError(error) {
|
|
|
154
157
|
const stack = getErrorStack(error, record);
|
|
155
158
|
return /(?:^|[\\/])node_modules[\\/]@cursor[\\/]sdk[\\/]dist[\\/]/.test(stack) || stack.includes("@cursor/sdk");
|
|
156
159
|
}
|
|
157
|
-
function isCursorExtensionConnectStack(stack) {
|
|
158
|
-
// pi runs Cursor SDK in Node, where the SDK dynamically imports connect-node.
|
|
159
|
-
// connect-web is the SDK's Bun/Deno path and is intentionally not classified for supported pi runs.
|
|
160
|
-
return stack.includes("@connectrpc/connect-node") && /(?:^|[\\/])pi-cursor-sdk(?:[\\/]|$)/.test(stack);
|
|
161
|
-
}
|
|
162
160
|
function getCursorConnectSource(error, record) {
|
|
163
|
-
const stack =
|
|
161
|
+
const stack = collectConnectErrorStacks(error, record);
|
|
162
|
+
// Node/Bun use the SDK's vendored transport; Deno uses connect-web.
|
|
164
163
|
if (stack.includes("@cursor/sdk"))
|
|
165
164
|
return "cursor-sdk-stack";
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
165
|
+
let current = record;
|
|
166
|
+
for (let depth = 0; depth < 3 && current; depth += 1) {
|
|
167
|
+
const details = Array.isArray(current.details) ? current.details : [];
|
|
168
|
+
const hasCursorBackendDetails = details.some((detail) => {
|
|
169
|
+
const type = getErrorStringField(asRecord(detail), "type");
|
|
170
|
+
return typeof type === "string" && type.startsWith("aiserver.");
|
|
171
|
+
});
|
|
172
|
+
if (hasCursorBackendDetails)
|
|
173
|
+
return "cursor-backend-details";
|
|
174
|
+
current = asRecord(current.cause);
|
|
175
|
+
}
|
|
176
|
+
return "generic-connect";
|
|
176
177
|
}
|
|
177
178
|
export function classifyCursorConnectError(error) {
|
|
178
179
|
const record = asRecord(error);
|
|
@@ -186,16 +187,22 @@ export function classifyCursorConnectError(error) {
|
|
|
186
187
|
const stack = getErrorStack(error, record);
|
|
187
188
|
const evidence = collectConnectErrorEvidence(error, record);
|
|
188
189
|
const stackEvidence = collectConnectErrorStacks(error, record);
|
|
189
|
-
if ((code === 1 || code === "canceled") &&
|
|
190
|
-
Boolean(rawMessage && /(?:operation was aborted|canceled)/i.test(rawMessage)) &&
|
|
191
|
-
(causeName === "AbortError" || /AbortError/.test(stack)) &&
|
|
192
|
-
stack.includes("@cursor/sdk") &&
|
|
193
|
-
stack.includes("@connectrpc/connect-node")) {
|
|
194
|
-
return { kind: "abort", source: "cursor-sdk-stack" };
|
|
195
|
-
}
|
|
196
190
|
if (isCursorSdkStallAbortNetworkError(code, evidence, stackEvidence)) {
|
|
197
191
|
return { kind: "network", source: getCursorConnectSource(error, record) };
|
|
198
192
|
}
|
|
193
|
+
const directAbort = (code === 1 || code === "canceled") &&
|
|
194
|
+
(causeName === "AbortError" || /AbortError/.test(stack));
|
|
195
|
+
// The vendored 1.0.36 transport wraps a canceled ConnectError as Unknown.
|
|
196
|
+
// Require the observed canceled -> AbortError cause chain, not generic text.
|
|
197
|
+
const wrappedAbort = (code === 2 || code === "unknown") &&
|
|
198
|
+
causeName === "ConnectError" &&
|
|
199
|
+
(cause?.code === 1 || cause?.code === "canceled") &&
|
|
200
|
+
asRecord(cause?.cause)?.name === "AbortError";
|
|
201
|
+
if ((directAbort || wrappedAbort) &&
|
|
202
|
+
Boolean(rawMessage && /(?:operation was aborted|canceled)/i.test(rawMessage)) &&
|
|
203
|
+
stack.includes("@cursor/sdk")) {
|
|
204
|
+
return { kind: "abort", source: "cursor-sdk-stack" };
|
|
205
|
+
}
|
|
199
206
|
if (isUnauthenticatedConnectCode(code) || isLikelyAuthError(evidence)) {
|
|
200
207
|
return { kind: "unauthenticated", source: getCursorConnectSource(error, record) };
|
|
201
208
|
}
|
|
@@ -10,8 +10,14 @@ import { formatCursorSdkAbortMessage, resolveCursorSdkAbortCause } from "./curso
|
|
|
10
10
|
import { formatInactiveCursorReplayTrace } from "./cursor-native-replay-trace.js";
|
|
11
11
|
import { partitionNativeToolsByActiveContext } from "./cursor-native-replay-routing.js";
|
|
12
12
|
export const DEFAULT_CURSOR_NATIVE_REPLAY_IDLE_DISPOSE_MS = 5 * 60 * 1000;
|
|
13
|
+
function parseCursorNativeReplayIdleDisposeMs(raw) {
|
|
14
|
+
if (!raw || /[^0-9]/.test(raw))
|
|
15
|
+
return DEFAULT_CURSOR_NATIVE_REPLAY_IDLE_DISPOSE_MS;
|
|
16
|
+
const value = Number(raw);
|
|
17
|
+
return value >= 1 && value <= 2147483647 ? value : DEFAULT_CURSOR_NATIVE_REPLAY_IDLE_DISPOSE_MS;
|
|
18
|
+
}
|
|
13
19
|
const CURSOR_NATIVE_REPLAY_TOOL_ID_PATTERN = /^(cursor-replay-\d+-\d+)-tool-\d+$/;
|
|
14
|
-
let
|
|
20
|
+
let cursorNativeReplayIdleDisposeMsOverride;
|
|
15
21
|
let cursorNativeReplayCounter = 0;
|
|
16
22
|
export async function abandonSessionCursorAgent(scopeKey) {
|
|
17
23
|
if (!scopeKey)
|
|
@@ -19,7 +25,7 @@ export async function abandonSessionCursorAgent(scopeKey) {
|
|
|
19
25
|
await resetSessionCursorAgent(scopeKey);
|
|
20
26
|
}
|
|
21
27
|
export const cursorLiveRuns = createCursorLiveRunCoordinator({
|
|
22
|
-
getIdleDisposeMs: () =>
|
|
28
|
+
getIdleDisposeMs: () => cursorNativeReplayIdleDisposeMsOverride ?? parseCursorNativeReplayIdleDisposeMs(process.env.PI_CURSOR_LIVE_RUN_IDLE_DISPOSE_MS),
|
|
23
29
|
deleteNativeToolDisplay: deleteCursorNativeToolDisplay,
|
|
24
30
|
abandonSessionAgent: (scopeKey) => abandonSessionCursorAgent(scopeKey),
|
|
25
31
|
});
|
|
@@ -407,10 +413,10 @@ export async function drainExistingCursorLiveRunBeforeSend(stream, partial, mode
|
|
|
407
413
|
}
|
|
408
414
|
}
|
|
409
415
|
export function setCursorNativeReplayIdleDisposeMs(value) {
|
|
410
|
-
|
|
416
|
+
cursorNativeReplayIdleDisposeMsOverride = value;
|
|
411
417
|
}
|
|
412
418
|
export function resetCursorNativeReplayIdleDisposeMs() {
|
|
413
|
-
|
|
419
|
+
cursorNativeReplayIdleDisposeMsOverride = undefined;
|
|
414
420
|
}
|
|
415
421
|
export async function releaseAllPendingCursorLiveRunsForTests() {
|
|
416
422
|
while (cursorLiveRuns.count() > 0) {
|
|
@@ -84,12 +84,12 @@ export class CursorRunFinalizer {
|
|
|
84
84
|
this.terminalApplied = true;
|
|
85
85
|
}
|
|
86
86
|
async cleanup(prepared, sendResult, liveCompletion) {
|
|
87
|
-
this.safeCleanup(() => prepared?.restoreCursorSdkOutputFilter());
|
|
88
87
|
const abortRegistration = sendResult?.abortRegistration;
|
|
89
88
|
this.params.runnerParams.sdkEventDebugRef.current = undefined;
|
|
90
89
|
if (liveCompletion) {
|
|
91
90
|
void liveCompletion.waitCompletion
|
|
92
91
|
.finally(async () => {
|
|
92
|
+
this.safeCleanup(() => prepared?.restoreCursorSdkOutputFilter());
|
|
93
93
|
if (abortRegistration) {
|
|
94
94
|
this.safeCleanup(() => abortRegistration.signal.removeEventListener("abort", abortRegistration.listener));
|
|
95
95
|
}
|
|
@@ -99,6 +99,7 @@ export class CursorRunFinalizer {
|
|
|
99
99
|
.catch(() => { });
|
|
100
100
|
return;
|
|
101
101
|
}
|
|
102
|
+
this.safeCleanup(() => prepared?.restoreCursorSdkOutputFilter());
|
|
102
103
|
if (abortRegistration) {
|
|
103
104
|
this.safeCleanup(() => abortRegistration.signal.removeEventListener("abort", abortRegistration.listener));
|
|
104
105
|
}
|
|
@@ -4,12 +4,13 @@ import { installCursorMcpToolTimeoutOverride } from "./cursor-mcp-timeout-overri
|
|
|
4
4
|
import { ensureCursorRipgrepPath } from "./cursor-ripgrep-path.js";
|
|
5
5
|
import { installCursorSdkOutputFilter, suppressCursorSdkOutput } from "./cursor-sdk-output-filter.js";
|
|
6
6
|
import { acquireSessionCursorAgent, buildCursorSessionSendPrompt, planCursorSessionSend, resetSessionCursorAgent, } from "./cursor-session-agent.js";
|
|
7
|
-
import { buildCursorPrompt, estimateCursorPromptTokens } from "./context.js";
|
|
7
|
+
import { buildCursorPrompt, estimateCursorPromptTokens, getCursorPendingInput } from "./context.js";
|
|
8
8
|
import { getCursorPromptOptions } from "./cursor-usage-accounting.js";
|
|
9
9
|
import { getActiveContextToolNames } from "./cursor-context-tools.js";
|
|
10
10
|
import { abandonSessionCursorAgent, createCursorNativeReplayId, cursorLiveRuns, getActiveCursorLiveRunForCurrentScope, } from "./cursor-provider-live-run-drain.js";
|
|
11
11
|
import { getCursorProviderAgentModeOrThrow, getEffectiveFastForModelId, } from "./cursor-state.js";
|
|
12
12
|
import { resolveEffectiveCursorConfig } from "./cursor-runtime-state.js";
|
|
13
|
+
import { buildCursorCustomSubagentDefinitions } from "./cursor-custom-subagent-definitions.js";
|
|
13
14
|
import { buildCursorModelSelection } from "./model-discovery.js";
|
|
14
15
|
import { getEffectiveCursorSettingSources } from "./cursor-setting-sources.js";
|
|
15
16
|
import { formatCursorCloudPreflightError, buildCursorCloudAgentOptions, preflightCursorCloudRuntime, } from "./cursor-cloud-options.js";
|
|
@@ -24,13 +25,17 @@ import { CursorSdkTurnCoordinator } from "./cursor-provider-turn-coordinator.js"
|
|
|
24
25
|
import { resolveCursorApiKey } from "./cursor-api-key.js";
|
|
25
26
|
import { loadCursorSdk } from "./cursor-sdk-runtime.js";
|
|
26
27
|
import { prepareCursorSummaryProviderTurn } from "./cursor-provider-turn-summary.js";
|
|
27
|
-
function buildCursorCloudPromptContext(context, handoff) {
|
|
28
|
+
function buildCursorCloudPromptContext(context, handoff, nativeSourceRoles) {
|
|
28
29
|
if (handoff === "bootstrap")
|
|
29
30
|
return context;
|
|
30
31
|
// Fresh cloud runs omit history, not the current Pi instructions. Replay before
|
|
31
32
|
// selecting the user message, otherwise transcript-only inputs lose the prompt.
|
|
32
33
|
const current = resolveCursorPiContext(context);
|
|
33
34
|
const messages = getCursorConversationMessages(context);
|
|
35
|
+
if (nativeSourceRoles) {
|
|
36
|
+
const { start } = getCursorPendingInput(messages, nativeSourceRoles);
|
|
37
|
+
return { ...current, messages: messages.slice(start) };
|
|
38
|
+
}
|
|
34
39
|
for (let index = messages.length - 1; index >= 0; index -= 1) {
|
|
35
40
|
const message = messages[index];
|
|
36
41
|
if (message.role === "user")
|
|
@@ -61,7 +66,7 @@ function buildLocalCursorProviderTurnLifecycle(lease, scopeKey) {
|
|
|
61
66
|
};
|
|
62
67
|
}
|
|
63
68
|
async function prepareCursorCloudProviderTurn(prepareParams) {
|
|
64
|
-
const { params, cwd, resolvedApiKey, sdkEventDebug, throwIfAborted, resolvedConfig, agentMode, selection, fastEnabled } = prepareParams;
|
|
69
|
+
const { params, cwd, resolvedApiKey, sdkEventDebug, throwIfAborted, resolvedConfig, agentMode, selection, fastEnabled, agents, customSubagentNames } = prepareParams;
|
|
65
70
|
const { model, context, options } = params;
|
|
66
71
|
let restoreCursorSdkOutputFilter;
|
|
67
72
|
let cloudAgentForCleanup;
|
|
@@ -84,13 +89,16 @@ async function prepareCursorCloudProviderTurn(prepareParams) {
|
|
|
84
89
|
}
|
|
85
90
|
const { Agent } = await loadCursorSdk();
|
|
86
91
|
restoreCursorSdkOutputFilter = installCursorSdkOutputFilter();
|
|
92
|
+
const promptContext = buildCursorCloudPromptContext(context, resolvedConfig.cloud.contextHandoff.value, params.request.nativeSourceRoles);
|
|
93
|
+
const nativeSourceRoles = params.request.nativeSourceRoles;
|
|
87
94
|
const promptOptions = {
|
|
88
95
|
...getCursorPromptOptions(model),
|
|
96
|
+
nativeSourceRoles: nativeSourceRoles?.slice(nativeSourceRoles.length - getCursorConversationMessages(promptContext).length),
|
|
89
97
|
agentMode,
|
|
90
98
|
includePiBridgeGuidance: false,
|
|
91
99
|
includePiAskQuestionGuidance: false,
|
|
92
100
|
};
|
|
93
|
-
const prompt = buildCursorPrompt(
|
|
101
|
+
const prompt = buildCursorPrompt(promptContext, promptOptions);
|
|
94
102
|
const promptInputTokens = estimateCursorPromptTokens(prompt, promptOptions);
|
|
95
103
|
const agent = await suppressCursorSdkOutput(() => Agent.create(buildCursorCloudAgentOptions({
|
|
96
104
|
apiKey: resolvedApiKey,
|
|
@@ -98,6 +106,7 @@ async function prepareCursorCloudProviderTurn(prepareParams) {
|
|
|
98
106
|
agentMode,
|
|
99
107
|
resolvedConfig,
|
|
100
108
|
name: params.scope.sessionName,
|
|
109
|
+
agents,
|
|
101
110
|
})));
|
|
102
111
|
cloudAgentForCleanup = agent;
|
|
103
112
|
if (!params.recordCloudLifecycle({ agentId: agent.agentId }, resolvedApiKey)) {
|
|
@@ -133,6 +142,7 @@ async function prepareCursorCloudProviderTurn(prepareParams) {
|
|
|
133
142
|
promptOptions,
|
|
134
143
|
agentMode,
|
|
135
144
|
localForce: false,
|
|
145
|
+
...(customSubagentNames ? { customSubagentNames } : {}),
|
|
136
146
|
});
|
|
137
147
|
completed = true;
|
|
138
148
|
cloudAgentForCleanup = undefined;
|
|
@@ -172,7 +182,7 @@ async function prepareCursorCloudProviderTurn(prepareParams) {
|
|
|
172
182
|
}
|
|
173
183
|
}
|
|
174
184
|
async function prepareCursorLocalProviderTurn(prepareParams) {
|
|
175
|
-
const { params, cwd, resolvedApiKey, sdkEventDebug, throwIfAborted, resolvedConfig, agentMode, selection, fastEnabled } = prepareParams;
|
|
185
|
+
const { params, cwd, resolvedApiKey, sdkEventDebug, throwIfAborted, resolvedConfig, agentMode, selection, fastEnabled, agents, customSubagentNames } = prepareParams;
|
|
176
186
|
const { model, context, options } = params;
|
|
177
187
|
let restoreCursorSdkOutputFilter;
|
|
178
188
|
let sessionAgentScopeKey;
|
|
@@ -201,7 +211,9 @@ async function prepareCursorLocalProviderTurn(prepareParams) {
|
|
|
201
211
|
modelSelection: selection,
|
|
202
212
|
settingSources,
|
|
203
213
|
localSafety,
|
|
214
|
+
agents,
|
|
204
215
|
localResume: resolvedConfig.local.resume.value,
|
|
216
|
+
storeRoot: resolvedConfig.local.storeRoot.value,
|
|
205
217
|
useHttp1ForAgent,
|
|
206
218
|
debugRecorder: sdkEventDebug,
|
|
207
219
|
onBridgeToolRequest: (request) => {
|
|
@@ -222,9 +234,10 @@ async function prepareCursorLocalProviderTurn(prepareParams) {
|
|
|
222
234
|
const buildPromptOptions = (plan) => {
|
|
223
235
|
const promptOptions = {
|
|
224
236
|
...getCursorPromptOptions(model),
|
|
237
|
+
nativeSourceRoles: params.request.nativeSourceRoles,
|
|
225
238
|
agentMode,
|
|
226
239
|
includePiBridgeGuidance,
|
|
227
|
-
includePiAskQuestionGuidance:
|
|
240
|
+
includePiAskQuestionGuidance: false,
|
|
228
241
|
};
|
|
229
242
|
if (plan.mode !== "bootstrap" || !resolveCursorToolManifestEnabled()) {
|
|
230
243
|
return promptOptions;
|
|
@@ -238,7 +251,7 @@ async function prepareCursorLocalProviderTurn(prepareParams) {
|
|
|
238
251
|
}),
|
|
239
252
|
};
|
|
240
253
|
};
|
|
241
|
-
let sendPlan = planCursorSessionSend(sessionAgentLease.sendState, context);
|
|
254
|
+
let sendPlan = planCursorSessionSend(sessionAgentLease.sendState, context, params.request.nativeSourceRoles);
|
|
242
255
|
if (sessionAgentLease.created && sessionAgentLease.resumed && sendPlan.mode === "incremental") {
|
|
243
256
|
sendPlan = { mode: "bootstrap", resetAgent: false, reason: "process_resume" };
|
|
244
257
|
}
|
|
@@ -250,7 +263,7 @@ async function prepareCursorLocalProviderTurn(prepareParams) {
|
|
|
250
263
|
sessionAgentScopeKey = sessionAgentLease.scopeKey;
|
|
251
264
|
bridgeToolNames = new Set(sessionAgentLease.bridgeRun?.snapshot.tools.map((tool) => tool.mcpToolName) ?? []);
|
|
252
265
|
includePiBridgeGuidance = bridgeToolNames.size > 0;
|
|
253
|
-
sendPlan = planCursorSessionSend(sessionAgentLease.sendState, context);
|
|
266
|
+
sendPlan = planCursorSessionSend(sessionAgentLease.sendState, context, params.request.nativeSourceRoles);
|
|
254
267
|
promptOptions = buildPromptOptions(sendPlan);
|
|
255
268
|
prompt = buildCursorSessionSendPrompt(context, promptOptions, sendPlan);
|
|
256
269
|
}
|
|
@@ -286,6 +299,7 @@ async function prepareCursorLocalProviderTurn(prepareParams) {
|
|
|
286
299
|
activeToolNames: activeToolNames ? [...activeToolNames] : [],
|
|
287
300
|
sessionAgentScopeKey,
|
|
288
301
|
bridgeRunId: bridgeRun?.id,
|
|
302
|
+
...(customSubagentNames ? { customSubagentNames } : {}),
|
|
289
303
|
});
|
|
290
304
|
const nativeReplayId = createCursorNativeReplayId();
|
|
291
305
|
const textDeltas = [];
|
|
@@ -379,7 +393,9 @@ export async function prepareCursorProviderTurn(prepareParams) {
|
|
|
379
393
|
return prepareCursorSummaryProviderTurn(prepareParams, selection);
|
|
380
394
|
}
|
|
381
395
|
const agentMode = getCursorProviderAgentModeOrThrow(params.scope.scopeKey);
|
|
382
|
-
const
|
|
396
|
+
const agents = buildCursorCustomSubagentDefinitions(resolvedConfig.subagents.value);
|
|
397
|
+
const customSubagentNames = agents ? Object.keys(agents) : undefined;
|
|
398
|
+
const context = { ...prepareParams, agentMode, selection, fastEnabled, agents, customSubagentNames };
|
|
383
399
|
return resolvedConfig.runtime.value === "cloud"
|
|
384
400
|
? prepareCursorCloudProviderTurn(context)
|
|
385
401
|
: prepareCursorLocalProviderTurn(context);
|
|
@@ -33,7 +33,7 @@ export async function prepareCursorSummaryProviderTurn(prepareParams, selection)
|
|
|
33
33
|
configureCursorSdkHttp1(sdk, resolvedConfig.local.useHttp1ForAgent);
|
|
34
34
|
restoreCursorSdkOutputFilter = installCursorSdkOutputFilter();
|
|
35
35
|
sessionStore = (await openCursorSessionStoreForScope({
|
|
36
|
-
cwd, scopeKey: params.scope.scopeKey, persistent: false,
|
|
36
|
+
cwd, scopeKey: params.scope.scopeKey, persistent: false,
|
|
37
37
|
})).sessionStore;
|
|
38
38
|
throwIfAborted();
|
|
39
39
|
agent = await suppressCursorSdkOutput(() => sdk.Agent.create({
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { normalizeCursorToolName } from "./cursor-tool-presentation-registry.js";
|
|
1
2
|
import { getToolArgs, getToolName } from "./cursor-transcript-utils.js";
|
|
2
3
|
export class CursorToolCompletionLedger {
|
|
3
4
|
startedToolCalls = new Map();
|
|
@@ -33,13 +34,14 @@ export class CursorToolCompletionLedger {
|
|
|
33
34
|
return stepId;
|
|
34
35
|
}
|
|
35
36
|
const fingerprint = getStartedToolCallFingerprint(toolCall);
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
const matches = [...this.startedToolCalls].filter(([, started]) => getStartedToolCallFingerprint(started) === fingerprint);
|
|
38
|
+
// Identical concurrent shells cannot be joined safely without a matching ID.
|
|
39
|
+
if (normalizeCursorToolName(getToolName(toolCall)) === "shell" && matches.length !== 1)
|
|
40
|
+
return undefined;
|
|
41
|
+
const callId = matches[0]?.[0];
|
|
42
|
+
if (callId !== undefined)
|
|
39
43
|
this.clearStartedToolCall(callId);
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
return undefined;
|
|
44
|
+
return callId;
|
|
43
45
|
}
|
|
44
46
|
recordCompletedIdentity(identity) {
|
|
45
47
|
this.completedToolIdentities.add(identity);
|
|
@@ -95,5 +97,9 @@ export function getToolFingerprint(value) {
|
|
|
95
97
|
}
|
|
96
98
|
}
|
|
97
99
|
export function getStartedToolCallFingerprint(toolCall) {
|
|
98
|
-
|
|
100
|
+
const name = getToolName(toolCall);
|
|
101
|
+
// Accept legacy shell aliases; this does not establish that the SDK emits alias-changing pairs.
|
|
102
|
+
// Keep exact argument matching; assistant text alone is not completion proof.
|
|
103
|
+
const toolName = normalizeCursorToolName(name) === "shell" ? "shell" : name;
|
|
104
|
+
return getToolFingerprint({ toolName, args: getToolArgs(toolCall) });
|
|
99
105
|
}
|
package/dist/cursor-provider.js
CHANGED
|
@@ -7,6 +7,7 @@ import { sanitizeCursorProviderError } from "./cursor-provider-errors.js";
|
|
|
7
7
|
import { resolveCursorApiKey } from "./cursor-api-key.js";
|
|
8
8
|
import { CursorProviderTurnRunner } from "./cursor-provider-turn-runner.js";
|
|
9
9
|
import { runExclusiveCursorSessionTurn, __testUtils as cursorSessionTurnQueueTestUtils } from "./cursor-session-turn-queue.js";
|
|
10
|
+
import { withCursorSdkOutputNoticeHandler } from "./cursor-sdk-output-filter.js";
|
|
10
11
|
function makeInitialMessage(model) {
|
|
11
12
|
return {
|
|
12
13
|
role: "assistant",
|
|
@@ -49,7 +50,7 @@ export function streamCursor(model, context, options, ownership) {
|
|
|
49
50
|
});
|
|
50
51
|
try {
|
|
51
52
|
stream.push({ type: "start", partial });
|
|
52
|
-
await runExclusiveCursorSessionTurn(scope.scopeKey, () => runner.run(installCursorSdkProcessErrorGuard()), options?.signal);
|
|
53
|
+
await runExclusiveCursorSessionTurn(scope.scopeKey, () => withCursorSdkOutputNoticeHandler(ownership.reportSdkNotice, () => runner.run(installCursorSdkProcessErrorGuard())), options?.signal);
|
|
53
54
|
}
|
|
54
55
|
catch (error) {
|
|
55
56
|
await runner.handleOuterCatch(error);
|
|
@@ -8,7 +8,7 @@ import { resolveCursorPiToolBridgeEnabled } from "./cursor-pi-tool-bridge-env.js
|
|
|
8
8
|
export const CURSOR_ASK_QUESTION_TOOL_NAME = "cursor_ask_question";
|
|
9
9
|
export const CURSOR_ASK_QUESTION_ENV = "PI_CURSOR_ASK_QUESTION";
|
|
10
10
|
export function resolveCursorAskQuestionEnabled(env = process.env) {
|
|
11
|
-
return parseEnvBoolean(env[CURSOR_ASK_QUESTION_ENV],
|
|
11
|
+
return parseEnvBoolean(env[CURSOR_ASK_QUESTION_ENV], false);
|
|
12
12
|
}
|
|
13
13
|
/** Package-namespaced event while `cursor_ask_question` awaits pi UI input. */
|
|
14
14
|
export const CURSOR_ASK_QUESTION_BLOCKED_EVENT = "pi-cursor-sdk:ask-question:blocked";
|
|
@@ -146,13 +146,13 @@ export function registerCursorQuestionTool(pi) {
|
|
|
146
146
|
pi.registerTool({
|
|
147
147
|
name: CURSOR_ASK_QUESTION_TOOL_NAME,
|
|
148
148
|
label: "Cursor question",
|
|
149
|
-
description: "Ask the user a clarifying question
|
|
150
|
-
promptSnippet: "
|
|
149
|
+
description: "Ask the user a clarifying question through pi UI. Do not use this unless the user asked to be prompted; otherwise proceed with a stated assumption.",
|
|
150
|
+
promptSnippet: "Do not prompt the user through cursor_ask_question unless they asked to be asked",
|
|
151
151
|
executionMode: "sequential",
|
|
152
152
|
parameters: CursorAskQuestionParamsSchema,
|
|
153
153
|
promptGuidelines: [
|
|
154
|
-
"
|
|
155
|
-
"
|
|
154
|
+
"Do not call cursor_ask_question unless the user explicitly asked to be prompted or to choose among options.",
|
|
155
|
+
"If this tool is available, prefer a reasonable default and state the assumption instead of blocking on a questionnaire.",
|
|
156
156
|
],
|
|
157
157
|
async execute(_toolCallId, params, _signal, _onUpdate, ctx) {
|
|
158
158
|
const questions = normalizeQuestions(params);
|
|
@@ -32,11 +32,22 @@ export function captureCursorRequestProjection(manager) {
|
|
|
32
32
|
measurements.push(Object.freeze({ api: message.api, provider: message.provider, model: message.model, tokens }));
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
|
|
35
|
+
const nativeSourceRoles = projection.messages.flatMap((message) => message.role === "system" ? [] : convertToLlm([message]).map(() => message.role));
|
|
36
|
+
return Object.freeze({
|
|
37
|
+
digest: projectionDigest(convertToLlm(projection.messages)),
|
|
38
|
+
measurements: Object.freeze(measurements),
|
|
39
|
+
nativeSourceRoles: Object.freeze(nativeSourceRoles),
|
|
40
|
+
});
|
|
36
41
|
}
|
|
37
42
|
export function resolveCursorRequestProvenance(snapshot, model, context, purpose) {
|
|
43
|
+
// ponytail: canonical native origin only. Unmatched transforms stay conservative;
|
|
44
|
+
// upgrade if Pi exposes final request-bound source provenance.
|
|
38
45
|
if (purpose !== "normal" || snapshot.digest !== projectionDigest(context.messages))
|
|
39
46
|
return Object.freeze({ purpose });
|
|
40
47
|
const measurement = snapshot.measurements.findLast((item) => item.api === model.api && item.provider === model.provider && item.model === model.id && item.tokens <= model.contextWindow);
|
|
41
|
-
return Object.freeze({
|
|
48
|
+
return Object.freeze({
|
|
49
|
+
purpose,
|
|
50
|
+
nativeSourceRoles: snapshot.nativeSourceRoles,
|
|
51
|
+
...(measurement ? { occupancyFloor: measurement.tokens } : {}),
|
|
52
|
+
});
|
|
42
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { CURSOR_SDK_STARTUP_NOISE_PATTERNS, installCursorSdkOutputFilter, isCursorSdkOutputSuppressed, isCursorSdkStartupNoise, suppressCursorSdkOutput, } from "../shared/cursor-sdk-output-filter.mjs";
|
|
1
|
+
export { CURSOR_SDK_STARTUP_NOISE_PATTERNS, withCursorSdkOutputNoticeHandler, installCursorSdkOutputFilter, isCursorSdkOutputSuppressed, isCursorSdkStartupNoise, suppressCursorSdkOutput, } from "../shared/cursor-sdk-output-filter.mjs";
|
|
@@ -19,7 +19,7 @@ function hasActiveAbortSuppression() {
|
|
|
19
19
|
return false;
|
|
20
20
|
}
|
|
21
21
|
function isCursorProvenance(source) {
|
|
22
|
-
return source === "cursor-sdk-stack" || source === "cursor-
|
|
22
|
+
return source === "cursor-sdk-stack" || source === "cursor-backend-details";
|
|
23
23
|
}
|
|
24
24
|
function isCursorSdkWriteIterableClosedError(error) {
|
|
25
25
|
return (error instanceof Error &&
|
|
@@ -63,8 +63,6 @@ function shouldSuppressProcessError(event, args) {
|
|
|
63
63
|
return hasActiveAbortSuppression();
|
|
64
64
|
if (activeProviderTurns.size === 0)
|
|
65
65
|
return false;
|
|
66
|
-
if (classification.kind === "network")
|
|
67
|
-
return isCursorProvenance(classification.source) || classification.source === "connect-node-stack";
|
|
68
66
|
return isCursorProvenance(classification.source);
|
|
69
67
|
}
|
|
70
68
|
function installProcessEmitPatch() {
|