pi-cursor-sdk 0.4.0 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +80 -0
- package/README.md +169 -37
- package/dist/context-window-cache.js +0 -6
- package/dist/context.js +61 -34
- package/dist/cursor-api-key.js +34 -19
- package/dist/cursor-cloud-lifecycle.js +122 -98
- 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-durable-fs.js +97 -3
- package/dist/cursor-fallback-models.generated.js +288 -1
- package/dist/cursor-fallback-warning.js +10 -4
- package/dist/cursor-http1.js +8 -8
- package/dist/cursor-live-run-coordinator.js +31 -15
- package/dist/cursor-mcp-timeout-override.js +3 -1
- package/dist/cursor-native-replay-routing.js +1 -1
- package/dist/cursor-native-tool-display-registration.js +46 -22
- package/dist/cursor-native-tool-display-state.js +57 -22
- package/dist/cursor-native-tool-display-tools.js +5 -6
- package/dist/cursor-pi-tool-bridge-constants.js +23 -2
- package/dist/cursor-pi-tool-bridge-run.js +28 -3
- package/dist/cursor-pi-tool-bridge-server.js +1 -1
- package/dist/cursor-pi-tool-bridge-snapshot.js +1 -1
- package/dist/cursor-pi-tool-bridge.js +31 -9
- package/dist/cursor-provider-binding.js +118 -0
- package/dist/cursor-provider-errors.js +61 -33
- package/dist/cursor-provider-lazy.js +23 -11
- package/dist/cursor-provider-live-run-drain.js +25 -16
- package/dist/cursor-provider-run-finalizer.js +21 -9
- package/dist/cursor-provider-turn-coordinator.js +1 -0
- package/dist/cursor-provider-turn-display-router.js +4 -0
- package/dist/cursor-provider-turn-emit.js +1 -0
- package/dist/cursor-provider-turn-finalize.js +29 -20
- package/dist/cursor-provider-turn-prepare.js +49 -20
- package/dist/cursor-provider-turn-runner.js +37 -11
- package/dist/cursor-provider-turn-send.js +22 -9
- package/dist/cursor-provider-turn-summary.js +89 -0
- package/dist/cursor-provider-turn-tool-ledger.js +13 -7
- package/dist/cursor-provider.js +10 -3
- package/dist/cursor-question-tool.js +5 -5
- package/dist/cursor-request-provenance.js +53 -0
- package/dist/cursor-ripgrep-path.js +14 -3
- package/dist/cursor-runtime-state.js +50 -43
- package/dist/cursor-sdk-billed-usage.js +54 -75
- package/dist/cursor-sdk-event-debug-session.js +5 -6
- package/dist/cursor-sdk-event-debug.js +9 -6
- package/dist/cursor-sdk-output-filter.js +1 -1
- package/dist/cursor-sdk-process-error-guard.js +9 -10
- package/dist/cursor-sdk-runtime.js +13 -1
- package/dist/cursor-sdk-vendor-env.js +20 -0
- package/dist/cursor-session-agent-cleanup.js +31 -28
- package/dist/cursor-session-agent-lifecycle.js +18 -9
- package/dist/cursor-session-agent-lineage.js +28 -12
- package/dist/cursor-session-agent-resume.js +51 -35
- package/dist/cursor-session-agent.js +47 -25
- package/dist/cursor-session-compaction-prep.js +2 -7
- package/dist/cursor-session-scope.js +71 -39
- package/dist/cursor-session-send-policy.js +2 -2
- package/dist/cursor-session-settings.js +61 -0
- package/dist/cursor-session-store.js +235 -45
- package/dist/cursor-skill-tool.js +32 -49
- package/dist/cursor-state.js +78 -65
- package/dist/cursor-tool-manifest.js +1 -1
- package/dist/cursor-usage-accounting.js +13 -70
- package/dist/cursor-usage-command.js +89 -0
- package/dist/cursor-usage-ledger.js +512 -0
- package/dist/index.js +29 -35
- package/dist/model-discovery.js +62 -37
- package/dist/model-list-cache.js +12 -1
- package/docs/cursor-dogfood-checklist.md +3 -3
- package/docs/cursor-live-smoke-checklist.md +15 -15
- package/docs/cursor-model-ux-spec.md +124 -39
- package/docs/cursor-native-tool-replay.md +18 -8
- package/docs/cursor-native-tool-visual-audit.md +8 -8
- package/docs/cursor-testing-lessons.md +87 -25
- package/docs/cursor-tool-surfaces.md +4 -4
- package/docs/platform-smoke-implementation.md +10 -6
- package/docs/platform-smoke.md +35 -46
- 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/cloud-runtime-smoke.mjs +4 -2
- package/scripts/lib/cursor-sdk-output-filter.d.mts +1 -0
- package/scripts/lib/cursor-sdk-output-filter.mjs +1 -0
- package/scripts/local-resume-smoke.mjs +1 -1
- package/scripts/platform-smoke/artifacts.mjs +7 -1
- package/scripts/platform-smoke/card-detect.mjs +2 -8
- package/scripts/platform-smoke/targets.mjs +8 -15
- package/scripts/platform-smoke/visual-evidence.mjs +7 -2
- package/scripts/tmux-live-smoke.sh +57 -90
- package/shared/cursor-sdk-output-filter.d.mts +3 -0
- package/shared/cursor-sdk-output-filter.mjs +117 -44
- package/src/context-window-cache.ts +0 -6
- package/src/context.ts +65 -33
- package/src/cursor-api-key.ts +37 -17
- package/src/cursor-cloud-lifecycle.ts +124 -98
- 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-durable-fs.ts +65 -3
- package/src/cursor-fallback-models.generated.ts +288 -1
- package/src/cursor-fallback-warning.ts +9 -5
- package/src/cursor-http1.ts +8 -8
- package/src/cursor-live-run-coordinator.ts +33 -15
- package/src/cursor-mcp-timeout-override.ts +3 -1
- package/src/cursor-native-replay-routing.ts +2 -1
- package/src/cursor-native-tool-display-registration.ts +48 -24
- package/src/cursor-native-tool-display-state.ts +65 -21
- package/src/cursor-native-tool-display-tools.ts +7 -4
- package/src/cursor-pi-tool-bridge-constants.ts +27 -2
- package/src/cursor-pi-tool-bridge-run.ts +32 -3
- package/src/cursor-pi-tool-bridge-server.ts +1 -2
- package/src/cursor-pi-tool-bridge-snapshot.ts +1 -1
- package/src/cursor-pi-tool-bridge-types.ts +3 -0
- package/src/cursor-pi-tool-bridge.ts +26 -9
- package/src/cursor-provider-binding.ts +121 -0
- package/src/cursor-provider-errors.ts +59 -35
- package/src/cursor-provider-lazy.ts +21 -15
- package/src/cursor-provider-live-run-drain.ts +29 -17
- package/src/cursor-provider-run-finalizer.ts +26 -16
- package/src/cursor-provider-turn-coordinator.ts +2 -0
- package/src/cursor-provider-turn-display-router.ts +5 -0
- package/src/cursor-provider-turn-emit.ts +3 -1
- package/src/cursor-provider-turn-finalize.ts +38 -23
- package/src/cursor-provider-turn-prepare.ts +51 -27
- package/src/cursor-provider-turn-runner.ts +40 -13
- package/src/cursor-provider-turn-send.ts +23 -15
- package/src/cursor-provider-turn-summary.ts +94 -0
- package/src/cursor-provider-turn-tool-ledger.ts +12 -7
- package/src/cursor-provider-turn-types.ts +37 -4
- package/src/cursor-provider.ts +28 -4
- package/src/cursor-question-tool.ts +5 -5
- package/src/cursor-request-provenance.ts +79 -0
- package/src/cursor-ripgrep-path.ts +15 -5
- package/src/cursor-runtime-state.ts +53 -48
- package/src/cursor-sdk-billed-usage.ts +54 -102
- package/src/cursor-sdk-event-debug-session.ts +5 -5
- package/src/cursor-sdk-event-debug.ts +10 -6
- package/src/cursor-sdk-output-filter.ts +2 -0
- package/src/cursor-sdk-process-error-guard.ts +8 -9
- package/src/cursor-sdk-runtime.ts +15 -2
- package/src/cursor-sdk-vendor-env.ts +22 -0
- package/src/cursor-session-agent-cleanup.ts +30 -29
- package/src/cursor-session-agent-lifecycle.ts +14 -9
- package/src/cursor-session-agent-lineage.ts +26 -12
- package/src/cursor-session-agent-resume.ts +49 -36
- package/src/cursor-session-agent.ts +57 -27
- package/src/cursor-session-compaction-prep.ts +2 -7
- package/src/cursor-session-scope.ts +87 -39
- package/src/cursor-session-send-policy.ts +2 -2
- package/src/cursor-session-settings.ts +72 -0
- package/src/cursor-session-store.ts +259 -53
- package/src/cursor-skill-tool.ts +37 -61
- package/src/cursor-state.ts +81 -69
- package/src/cursor-tool-manifest.ts +1 -1
- package/src/cursor-usage-accounting.ts +17 -82
- package/src/cursor-usage-command.ts +76 -0
- package/src/cursor-usage-ledger.ts +500 -0
- package/src/index.ts +30 -39
- package/src/model-discovery.ts +76 -45
- 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
|
@@ -0,0 +1,118 @@
|
|
|
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";
|
|
4
|
+
import { captureCursorCloudLifecycleRecorder } from "./cursor-cloud-lifecycle.js";
|
|
5
|
+
import { captureCursorUsageRecorder } from "./cursor-usage-ledger.js";
|
|
6
|
+
import { getCursorNativeToolDisplayState } from "./cursor-native-tool-display-state.js";
|
|
7
|
+
import { getRegisteredCursorPiToolBridge } from "./cursor-pi-tool-bridge.js";
|
|
8
|
+
import { createCursorLazyStream } from "./cursor-provider-lazy.js";
|
|
9
|
+
import { getCursorSessionScopeSnapshot } from "./cursor-session-scope.js";
|
|
10
|
+
import { captureCursorRequestProjection, resolveCursorRequestProvenance } from "./cursor-request-provenance.js";
|
|
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.";
|
|
12
|
+
const requestOwners = new WeakMap();
|
|
13
|
+
/** One closure per ExtensionAPI, including direct compaction/tree/bug-report streams. */
|
|
14
|
+
export function registerCursorProviderBinding(pi) {
|
|
15
|
+
const binding = { active: false, closed: false };
|
|
16
|
+
let registry;
|
|
17
|
+
const operations = new WeakMap();
|
|
18
|
+
pi.on("session_before_compact", (event) => { operations.set(event.signal, "compaction"); });
|
|
19
|
+
pi.on("session_before_tree", (event) => { operations.set(event.signal, "tree"); });
|
|
20
|
+
pi.on("before_provider_headers", (event, ctx) => {
|
|
21
|
+
const notices = new Set();
|
|
22
|
+
// Pi's SDK supplies this session-owned callback for ordinary and auxiliary
|
|
23
|
+
// streams. ModelRuntime forwards the same real headers object to the provider.
|
|
24
|
+
requestOwners.set(event.headers, {
|
|
25
|
+
binding,
|
|
26
|
+
scope: getCursorSessionScopeSnapshot(pi),
|
|
27
|
+
projection: captureCursorRequestProjection(ctx.sessionManager),
|
|
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
|
+
},
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
const stream = createCursorLazyStream((model, context, options) => {
|
|
44
|
+
const headers = options?.headers;
|
|
45
|
+
const owner = headers && requestOwners.get(headers);
|
|
46
|
+
if (headers)
|
|
47
|
+
requestOwners.delete(headers);
|
|
48
|
+
if (!binding.active || binding.closed)
|
|
49
|
+
throw new Error("Cursor provider binding is not active. Bind this session's extensions, or reload the session after shutdown.");
|
|
50
|
+
if (!owner)
|
|
51
|
+
throw new Error("Cursor provider ownership is unavailable: this call has no native session request receipt. Bare modelRegistry.streamSimple calls are unsupported for Cursor; use the owning AgentSession's stream path or an independent child AgentSession.");
|
|
52
|
+
if (owner.binding !== binding)
|
|
53
|
+
throw new Error(CURSOR_PROVIDER_OWNERSHIP_ERROR);
|
|
54
|
+
return {
|
|
55
|
+
request: resolveCursorRequestProvenance(owner.projection, model, context, options?.signal && operations.get(options.signal) || "normal"),
|
|
56
|
+
usageRecorder: owner.usageRecorder,
|
|
57
|
+
scope: owner.scope,
|
|
58
|
+
bridge: getRegisteredCursorPiToolBridge(pi),
|
|
59
|
+
nativeDisplay: getCursorNativeToolDisplayState(pi),
|
|
60
|
+
recordCloudLifecycle: captureCursorCloudLifecycleRecorder(pi),
|
|
61
|
+
reportSdkNotice: owner.reportSdkNotice,
|
|
62
|
+
};
|
|
63
|
+
});
|
|
64
|
+
pi.on("session_start", async (_event, ctx) => {
|
|
65
|
+
if (binding.closed)
|
|
66
|
+
return;
|
|
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);
|
|
117
|
+
};
|
|
118
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { asRecord } from "./cursor-record-utils.js";
|
|
2
2
|
import { scrubSensitiveText } from "./cursor-sensitive-text.js";
|
|
3
3
|
export const MISSING_CURSOR_API_KEY_MESSAGE = "Cursor SDK runs require a Cursor SDK API key. Cursor Agent CLI/Desktop login is not reused. Run /login -> Use an API key -> Cursor, set CURSOR_API_KEY before starting pi, or restart pi with --api-key.";
|
|
4
|
-
const GENERIC_CURSOR_SDK_ERROR_MESSAGE = "Cursor SDK request failed
|
|
4
|
+
const GENERIC_CURSOR_SDK_ERROR_MESSAGE = "Cursor SDK request failed without further error details.";
|
|
5
5
|
const AUTH_CURSOR_SDK_ERROR_MESSAGE = "Cursor SDK request failed because the Cursor SDK API key may be invalid or unauthorized. Cursor Agent CLI/Desktop login is not reused. Run /login -> Use an API key -> Cursor, verify CURSOR_API_KEY, or pass --api-key, then retry.";
|
|
6
6
|
const CLOUD_AUTH_CURSOR_SDK_ERROR_MESSAGE = "Cursor Cloud Agents request failed because Cloud API authentication rejected the API key. Use a user API key from Cursor Dashboard -> API Keys or a service account API key from Team settings; Team Admin API keys are not supported as Cursor Cloud Agents credentials. Configure the key with /login -> Use an API key -> Cursor, CURSOR_API_KEY, or --api-key, then retry.";
|
|
7
7
|
// Keep "Network error" aligned with pi's agent-level retry classifier.
|
|
8
|
-
const NETWORK_CURSOR_SDK_ERROR_MESSAGE = "Network error: Cursor SDK request failed during network or service I/O. Check your connection
|
|
8
|
+
const NETWORK_CURSOR_SDK_ERROR_MESSAGE = "Network error: Cursor SDK request failed during network or service I/O. Check your connection.";
|
|
9
9
|
// Keep this phrase aligned with pi's agent-level retry classifier (`provider.?returned.?error`).
|
|
10
10
|
const RETRYABLE_CURSOR_RUN_FAILURE_PREFIX = "Provider returned error: Cursor SDK run failed";
|
|
11
11
|
function isGenericErrorMessage(message) {
|
|
@@ -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
|
}
|
|
@@ -284,23 +291,44 @@ export function resolveCursorSdkAbortCause(options) {
|
|
|
284
291
|
return "live_run_disposed";
|
|
285
292
|
return "unknown";
|
|
286
293
|
}
|
|
294
|
+
function formatErrorDetail(error, apiKey, depth = 0) {
|
|
295
|
+
if (depth >= 3)
|
|
296
|
+
return "";
|
|
297
|
+
const record = asRecord(error);
|
|
298
|
+
const message = typeof error === "string" ? error : getErrorStringField(record, "message") ?? "";
|
|
299
|
+
const name = getErrorStringField(record, "name");
|
|
300
|
+
const code = getErrorEvidenceField(error, record, "code");
|
|
301
|
+
const scrub = (text, limit) => scrubSensitiveText(text, apiKey).trim().slice(0, limit);
|
|
302
|
+
const scrubbed = [
|
|
303
|
+
name && name !== "Error" ? `${scrub(name, 120)}:` : "",
|
|
304
|
+
code ? `(code: ${scrub(code, 120)})` : "",
|
|
305
|
+
scrub(message, 1600),
|
|
306
|
+
].filter(Boolean).join(" ");
|
|
307
|
+
const cause = record?.cause === undefined ? "" : formatErrorDetail(record.cause, apiKey, depth + 1);
|
|
308
|
+
return cause ? `${scrubbed}\nCaused by: ${cause}` : scrubbed;
|
|
309
|
+
}
|
|
287
310
|
export function sanitizeCursorProviderError(error, apiKey, runtimeTarget) {
|
|
288
311
|
const record = asRecord(error);
|
|
289
|
-
const message =
|
|
312
|
+
const message = typeof error === "string" ? error : getErrorStringField(record, "message") ?? "";
|
|
290
313
|
if (message === MISSING_CURSOR_API_KEY_MESSAGE)
|
|
291
314
|
return MISSING_CURSOR_API_KEY_MESSAGE;
|
|
292
|
-
const scrubbed =
|
|
315
|
+
const scrubbed = formatErrorDetail(error, apiKey);
|
|
316
|
+
// A loader failure is not an auth rejection, even inside an authentication wrapper.
|
|
317
|
+
if (/\b(?:ERR_MODULE_NOT_FOUND|MODULE_NOT_FOUND|ResolveMessage)\b|Cannot find (?:module|package)|does not provide an export named/i.test(scrubbed))
|
|
318
|
+
return scrubbed;
|
|
293
319
|
const integrationMessage = runtimeTarget === "cloud"
|
|
294
|
-
? formatIntegrationNotConnectedError(error, record,
|
|
320
|
+
? formatIntegrationNotConnectedError(error, record, scrubSensitiveText(message, apiKey).trim(), apiKey)
|
|
295
321
|
: undefined;
|
|
296
322
|
if (integrationMessage)
|
|
297
323
|
return integrationMessage;
|
|
298
324
|
const connectClassification = classifyCursorConnectError(error);
|
|
299
325
|
if ((runtimeTarget === "cloud" && getErrorName(error, record) === "AuthenticationError") ||
|
|
300
|
-
|
|
301
|
-
isLikelyAuthError(scrubbed)) {
|
|
326
|
+
/\b(?:invalid|revoked|expired|missing) (?:user )?api key\b|\bapi key (?:is )?(?:invalid|revoked|expired|missing)\b/i.test(scrubbed)) {
|
|
302
327
|
return runtimeTarget === "cloud" ? CLOUD_AUTH_CURSOR_SDK_ERROR_MESSAGE : AUTH_CURSOR_SDK_ERROR_MESSAGE;
|
|
303
328
|
}
|
|
329
|
+
if (connectClassification?.kind === "unauthenticated" || isLikelyAuthError(scrubbed)) {
|
|
330
|
+
return `Cursor SDK authentication failed. ${scrubbed}`;
|
|
331
|
+
}
|
|
304
332
|
if (connectClassification?.kind === "network" || isCursorSdkConnectionStalledError(error) || isLikelyNetworkTimeout(scrubbed))
|
|
305
333
|
return NETWORK_CURSOR_SDK_ERROR_MESSAGE;
|
|
306
334
|
if (isGenericCursorRunFailureMessage(scrubbed))
|
|
@@ -21,19 +21,31 @@ function makeProviderRuntimeErrorMessage(model, error, apiKey) {
|
|
|
21
21
|
errorMessage: `Cursor provider runtime failed: ${sanitizeCursorProviderError(error, apiKey)}`,
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
|
-
export function
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
for await (const event of streamCursor(model, context, options)) {
|
|
29
|
-
outer.push(event);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
catch (error) {
|
|
24
|
+
export function createCursorLazyStream(capture) {
|
|
25
|
+
return (model, context, options) => {
|
|
26
|
+
const outer = createAssistantMessageEventStream();
|
|
27
|
+
const fail = (error) => {
|
|
33
28
|
const message = makeProviderRuntimeErrorMessage(model, error, options?.apiKey);
|
|
34
29
|
outer.push({ type: "error", reason: "error", error: message });
|
|
35
30
|
outer.end(message);
|
|
31
|
+
};
|
|
32
|
+
let ownership;
|
|
33
|
+
try {
|
|
34
|
+
ownership = capture(model, context, options);
|
|
36
35
|
}
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
catch (error) {
|
|
37
|
+
fail(error);
|
|
38
|
+
return outer;
|
|
39
|
+
}
|
|
40
|
+
queueMicrotask(async () => {
|
|
41
|
+
try {
|
|
42
|
+
for await (const event of streamCursor(model, context, options, ownership))
|
|
43
|
+
outer.push(event);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
fail(error);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
return outer;
|
|
50
|
+
};
|
|
39
51
|
}
|
|
@@ -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
|
});
|
|
@@ -30,11 +36,11 @@ export function createCursorNativeReplayId() {
|
|
|
30
36
|
function getCursorNativeReplayIdFromToolCallId(toolCallId) {
|
|
31
37
|
return CURSOR_NATIVE_REPLAY_TOOL_ID_PATTERN.exec(toolCallId)?.[1];
|
|
32
38
|
}
|
|
33
|
-
export function getPendingCursorLiveRun(context) {
|
|
34
|
-
return cursorLiveRuns.getPendingFromContext(context, getCursorNativeReplayIdFromToolCallId);
|
|
39
|
+
export function getPendingCursorLiveRun(context, scopeKey) {
|
|
40
|
+
return cursorLiveRuns.getPendingFromContext(context, getCursorNativeReplayIdFromToolCallId, scopeKey);
|
|
35
41
|
}
|
|
36
|
-
export function getActiveCursorLiveRunForCurrentScope() {
|
|
37
|
-
return cursorLiveRuns.getActiveForScope();
|
|
42
|
+
export function getActiveCursorLiveRunForCurrentScope(scopeKey) {
|
|
43
|
+
return cursorLiveRuns.getActiveForScope(scopeKey);
|
|
38
44
|
}
|
|
39
45
|
function splitTextIntoReplayDeltas(text) {
|
|
40
46
|
const deltas = [];
|
|
@@ -125,7 +131,7 @@ function emitCursorLiveQueuedEvent(turn, event, run) {
|
|
|
125
131
|
turn.emitter.appendTextDelta(event.text);
|
|
126
132
|
}
|
|
127
133
|
}
|
|
128
|
-
function emitCursorNativeToolUseTurn(stream, partial, model, context, run, toolResultInputTokens, tools, debugRecorder) {
|
|
134
|
+
function emitCursorNativeToolUseTurn(stream, partial, model, context, run, toolResultInputTokens, tools, occupancyFloor, debugRecorder) {
|
|
129
135
|
const shouldTerminate = run.done && !run.finalText?.trim() && !cursorLiveRuns.peekEvent(run);
|
|
130
136
|
for (const tool of tools) {
|
|
131
137
|
const contentIndex = partial.content.length;
|
|
@@ -142,7 +148,7 @@ function emitCursorNativeToolUseTurn(stream, partial, model, context, run, toolR
|
|
|
142
148
|
const block = partial.content[contentIndex];
|
|
143
149
|
if (block.type === "toolCall")
|
|
144
150
|
stream.push({ type: "toolcall_end", contentIndex, toolCall: block, partial });
|
|
145
|
-
if (recordCursorNativeToolDisplay({ ...tool, terminate: shouldTerminate })) {
|
|
151
|
+
if (recordCursorNativeToolDisplay({ ...tool, terminate: shouldTerminate }, run.nativeDisplay)) {
|
|
146
152
|
run.recordedToolDisplayIds.push(tool.id);
|
|
147
153
|
debugRecorder?.recordDrainEvent("native_tool_display_recorded", {
|
|
148
154
|
toolId: tool.id,
|
|
@@ -154,6 +160,7 @@ function emitCursorNativeToolUseTurn(stream, partial, model, context, run, toolR
|
|
|
154
160
|
applyCursorUsage(partial, model, context, cursorLiveRuns.takeTurnInputTokens(run, toolResultInputTokens), {
|
|
155
161
|
runtime: "local",
|
|
156
162
|
turn: cursorLiveRuns.takeSdkTurnUsage(run),
|
|
163
|
+
occupancyFloor,
|
|
157
164
|
});
|
|
158
165
|
partial.stopReason = "toolUse";
|
|
159
166
|
stream.push({ type: "done", reason: "toolUse", message: partial });
|
|
@@ -172,7 +179,7 @@ function emitInactiveCursorReplayTrace(turn, tools, debugRecorder) {
|
|
|
172
179
|
turn.emitter.appendThinkingBlock(traceText);
|
|
173
180
|
}
|
|
174
181
|
}
|
|
175
|
-
function emitCursorBridgeToolUseTurn(stream, partial, model, context, run, toolResultInputTokens, requests) {
|
|
182
|
+
function emitCursorBridgeToolUseTurn(stream, partial, model, context, run, toolResultInputTokens, requests, occupancyFloor) {
|
|
176
183
|
for (const request of requests) {
|
|
177
184
|
const contentIndex = partial.content.length;
|
|
178
185
|
const serializedArgs = JSON.stringify(request.args);
|
|
@@ -191,6 +198,7 @@ function emitCursorBridgeToolUseTurn(stream, partial, model, context, run, toolR
|
|
|
191
198
|
applyCursorUsage(partial, model, context, cursorLiveRuns.takeTurnInputTokens(run, toolResultInputTokens), {
|
|
192
199
|
runtime: "local",
|
|
193
200
|
turn: cursorLiveRuns.takeSdkTurnUsage(run),
|
|
201
|
+
occupancyFloor,
|
|
194
202
|
});
|
|
195
203
|
partial.stopReason = "toolUse";
|
|
196
204
|
stream.push({ type: "done", reason: "toolUse", message: partial });
|
|
@@ -217,7 +225,7 @@ async function emitCursorLiveRunPendingToolUseTurn(turn, stream, partial, model,
|
|
|
217
225
|
cursorLiveRuns.ignoreFutureSdkTurnUsage(run);
|
|
218
226
|
if (options.mode === "emit")
|
|
219
227
|
turn.emitter.closeAll();
|
|
220
|
-
emitCursorNativeToolUseTurn(stream, partial, model, context, run, toolResultInputTokens, active, debugRecorder);
|
|
228
|
+
emitCursorNativeToolUseTurn(stream, partial, model, context, run, toolResultInputTokens, active, options.occupancyFloor, debugRecorder);
|
|
221
229
|
}
|
|
222
230
|
else {
|
|
223
231
|
const requests = cursorLiveRuns.collectBridgeToolBatch(run);
|
|
@@ -227,7 +235,7 @@ async function emitCursorLiveRunPendingToolUseTurn(turn, stream, partial, model,
|
|
|
227
235
|
cursorLiveRuns.ignoreFutureSdkTurnUsage(run);
|
|
228
236
|
if (options.mode === "emit")
|
|
229
237
|
turn.emitter.closeAll();
|
|
230
|
-
emitCursorBridgeToolUseTurn(stream, partial, model, context, run, toolResultInputTokens, requests);
|
|
238
|
+
emitCursorBridgeToolUseTurn(stream, partial, model, context, run, toolResultInputTokens, requests, options.occupancyFloor);
|
|
231
239
|
}
|
|
232
240
|
return "tool_use";
|
|
233
241
|
}
|
|
@@ -307,7 +315,7 @@ export async function drainCursorLiveRunTurn(stream, partial, model, context, ru
|
|
|
307
315
|
applyCursorUsage(partial, model, context, cursorLiveRuns.takeTurnInputTokens(run, toolResultInputTokens), {
|
|
308
316
|
runtime: "local",
|
|
309
317
|
turn: cursorLiveRuns.takeSdkTurnUsage(run),
|
|
310
|
-
|
|
318
|
+
occupancyFloor: options.occupancyFloor,
|
|
311
319
|
});
|
|
312
320
|
if (run.resumeNotice) {
|
|
313
321
|
emitDisplayOnlyTraceBlock(stream, partial, run.resumeNotice);
|
|
@@ -349,10 +357,10 @@ export async function drainCursorLiveRunTurn(stream, partial, model, context, ru
|
|
|
349
357
|
});
|
|
350
358
|
}
|
|
351
359
|
}
|
|
352
|
-
export async function drainExistingCursorLiveRunBeforeSend(stream, partial, model, context, signal, turnDebugRecorder) {
|
|
360
|
+
export async function drainExistingCursorLiveRunBeforeSend(stream, partial, model, context, signal, turnDebugRecorder, scopeKey, occupancyFloor) {
|
|
353
361
|
turnDebugRecorder?.recordDrainEvent("pre_send_start", {});
|
|
354
362
|
while (true) {
|
|
355
|
-
const run = getPendingCursorLiveRun(context) ?? getActiveCursorLiveRunForCurrentScope();
|
|
363
|
+
const run = getPendingCursorLiveRun(context, scopeKey) ?? getActiveCursorLiveRunForCurrentScope(scopeKey);
|
|
356
364
|
if (!run || run.disposed) {
|
|
357
365
|
turnDebugRecorder?.recordDrainEvent("pre_send_end", { outcome: "continue_send", reason: "no_pending_run" });
|
|
358
366
|
return "continue_send";
|
|
@@ -375,6 +383,7 @@ export async function drainExistingCursorLiveRunBeforeSend(stream, partial, mode
|
|
|
375
383
|
mode: shouldChainUserInput ? "chain_user_input" : "emit",
|
|
376
384
|
signal,
|
|
377
385
|
debugRecorder: turnDebugRecorder,
|
|
386
|
+
occupancyFloor,
|
|
378
387
|
});
|
|
379
388
|
const mapped = drainOutcome === "chain_user_input" ? "continue_send" : "stream_ended";
|
|
380
389
|
turnDebugRecorder?.recordDrainEvent("pre_send_iteration", {
|
|
@@ -404,10 +413,10 @@ export async function drainExistingCursorLiveRunBeforeSend(stream, partial, mode
|
|
|
404
413
|
}
|
|
405
414
|
}
|
|
406
415
|
export function setCursorNativeReplayIdleDisposeMs(value) {
|
|
407
|
-
|
|
416
|
+
cursorNativeReplayIdleDisposeMsOverride = value;
|
|
408
417
|
}
|
|
409
418
|
export function resetCursorNativeReplayIdleDisposeMs() {
|
|
410
|
-
|
|
419
|
+
cursorNativeReplayIdleDisposeMsOverride = undefined;
|
|
411
420
|
}
|
|
412
421
|
export async function releaseAllPendingCursorLiveRunsForTests() {
|
|
413
422
|
while (cursorLiveRuns.count() > 0) {
|
|
@@ -3,7 +3,7 @@ import { classifyCursorRunEmission, getCursorRunAbortMessage, } from "./cursor-p
|
|
|
3
3
|
import { formatCursorSdkAbortMessage, resolveCursorSdkAbortCause, sanitizeCursorProviderError, } from "./cursor-provider-errors.js";
|
|
4
4
|
import { CursorLiveRunAbortError } from "./cursor-live-run-coordinator.js";
|
|
5
5
|
import { buildIncompleteCursorToolRunOutcome, } from "./cursor-incomplete-tool-visibility.js";
|
|
6
|
-
import { awaitFinalizeCursorRunOutcome } from "./cursor-provider-turn-finalize.js";
|
|
6
|
+
import { awaitFinalizeCursorRunOutcome, recordCursorProviderTerminalUsage } from "./cursor-provider-turn-finalize.js";
|
|
7
7
|
import { applyCursorUsage } from "./cursor-usage-accounting.js";
|
|
8
8
|
import { hasUsableText } from "./cursor-record-utils.js";
|
|
9
9
|
import { emitDisplayOnlyTraceBlock } from "./cursor-display-only-trace.js";
|
|
@@ -56,11 +56,15 @@ export class CursorRunFinalizer {
|
|
|
56
56
|
applyLiveRunOutcome(finalized.outcome, prepared, runnerParams.context);
|
|
57
57
|
})
|
|
58
58
|
.catch((error) => {
|
|
59
|
-
|
|
59
|
+
const aborted = error instanceof CursorLiveRunAbortError || runnerParams.options?.signal?.aborted === true;
|
|
60
|
+
this.safeCleanup(() => discardIncompleteTools({ status: aborted ? "cancelled" : "error" }));
|
|
60
61
|
if (!liveRun.disposed) {
|
|
61
|
-
|
|
62
|
+
if (aborted)
|
|
63
|
+
cursorLiveRuns.markCancelled(liveRun, this.abortMessage());
|
|
64
|
+
else
|
|
65
|
+
cursorLiveRuns.markError(liveRun, sanitizeCursorProviderError(error, this.params.resolvedApiKey() ?? runnerParams.options?.apiKey, "local"));
|
|
62
66
|
}
|
|
63
|
-
this.safeCleanup(() => sdkEventDebug?.recordWaitResult({ status: "error", error: String(error) }));
|
|
67
|
+
this.safeCleanup(() => sdkEventDebug?.recordWaitResult({ status: aborted ? "cancelled" : "error", error: String(error) }));
|
|
64
68
|
this.safeCleanup(() => sdkEventDebug?.recordError("run_wait", error));
|
|
65
69
|
});
|
|
66
70
|
// Mark the pooled local agent busy as soon as the SDK run exists so auto-compaction summarization
|
|
@@ -80,12 +84,12 @@ export class CursorRunFinalizer {
|
|
|
80
84
|
this.terminalApplied = true;
|
|
81
85
|
}
|
|
82
86
|
async cleanup(prepared, sendResult, liveCompletion) {
|
|
83
|
-
this.safeCleanup(() => prepared?.restoreCursorSdkOutputFilter());
|
|
84
87
|
const abortRegistration = sendResult?.abortRegistration;
|
|
85
88
|
this.params.runnerParams.sdkEventDebugRef.current = undefined;
|
|
86
89
|
if (liveCompletion) {
|
|
87
90
|
void liveCompletion.waitCompletion
|
|
88
91
|
.finally(async () => {
|
|
92
|
+
this.safeCleanup(() => prepared?.restoreCursorSdkOutputFilter());
|
|
89
93
|
if (abortRegistration) {
|
|
90
94
|
this.safeCleanup(() => abortRegistration.signal.removeEventListener("abort", abortRegistration.listener));
|
|
91
95
|
}
|
|
@@ -95,6 +99,7 @@ export class CursorRunFinalizer {
|
|
|
95
99
|
.catch(() => { });
|
|
96
100
|
return;
|
|
97
101
|
}
|
|
102
|
+
this.safeCleanup(() => prepared?.restoreCursorSdkOutputFilter());
|
|
98
103
|
if (abortRegistration) {
|
|
99
104
|
this.safeCleanup(() => abortRegistration.signal.removeEventListener("abort", abortRegistration.listener));
|
|
100
105
|
}
|
|
@@ -104,6 +109,9 @@ export class CursorRunFinalizer {
|
|
|
104
109
|
}
|
|
105
110
|
async applyDirectOutcome(prepared, outcome, displayOnlyTraceBlock) {
|
|
106
111
|
const { stream, partial, model, context } = this.params.runnerParams;
|
|
112
|
+
// Native summaries return at terminal emission, so release their temporary resources first.
|
|
113
|
+
if (prepared.execution === "summary")
|
|
114
|
+
await prepared.lifecycle.dispose().catch(() => { });
|
|
107
115
|
prepared.runtime.turnCoordinator.closeTraceBlock();
|
|
108
116
|
switch (classifyCursorRunEmission(outcome)) {
|
|
109
117
|
case "cancelled":
|
|
@@ -120,7 +128,7 @@ export class CursorRunFinalizer {
|
|
|
120
128
|
applyCursorUsage(partial, model, context, prepared.meta.promptInputTokens, {
|
|
121
129
|
runtime: prepared.runtimeTarget,
|
|
122
130
|
turn: prepared.runtime.turnCoordinator.lastSdkTurnUsage,
|
|
123
|
-
|
|
131
|
+
occupancyFloor: this.params.runnerParams.request.occupancyFloor,
|
|
124
132
|
});
|
|
125
133
|
if (prepared.meta.resumeNotice)
|
|
126
134
|
emitDisplayOnlyTraceBlock(stream, partial, prepared.meta.resumeNotice);
|
|
@@ -131,9 +139,13 @@ export class CursorRunFinalizer {
|
|
|
131
139
|
}
|
|
132
140
|
}
|
|
133
141
|
async applyErrorOutcome(prepared, error) {
|
|
142
|
+
const aborted = error instanceof CursorLiveRunAbortError || this.params.runnerParams.options?.signal?.aborted === true;
|
|
143
|
+
if (prepared && "usage" in prepared && (!prepared.runtime.sdkRun || prepared.runtime.kind !== "live")) {
|
|
144
|
+
await recordCursorProviderTerminalUsage(prepared, aborted ? "abort" : "error");
|
|
145
|
+
}
|
|
134
146
|
this.safeCleanup(() => prepared?.runtime.turnCoordinator.discardIncompleteStartedToolCalls(buildIncompleteCursorToolRunOutcome({
|
|
135
|
-
status:
|
|
136
|
-
signalAborted:
|
|
147
|
+
status: aborted ? "cancelled" : "error",
|
|
148
|
+
signalAborted: aborted,
|
|
137
149
|
})));
|
|
138
150
|
const activeLiveRun = prepared?.runtime.liveRun;
|
|
139
151
|
if (activeLiveRun && !activeLiveRun.disposed) {
|
|
@@ -143,7 +155,7 @@ export class CursorRunFinalizer {
|
|
|
143
155
|
await prepared?.lifecycle.abandon();
|
|
144
156
|
}
|
|
145
157
|
this.safeCleanup(() => this.params.sdkEventDebug()?.recordError("provider_stream", error));
|
|
146
|
-
if (
|
|
158
|
+
if (aborted) {
|
|
147
159
|
this.params.sdkProcessErrorGuard.suppressAbortErrors();
|
|
148
160
|
this.pushTerminalError(this.params.runnerParams.partial, "aborted", this.abortMessage());
|
|
149
161
|
}
|
|
@@ -49,6 +49,7 @@ export class CursorSdkTurnCoordinator {
|
|
|
49
49
|
liveRun: options.liveRun,
|
|
50
50
|
useNativeToolReplay: options.useNativeToolReplay,
|
|
51
51
|
activeToolNames: options.activeToolNames,
|
|
52
|
+
registeredToolNames: options.registeredToolNames,
|
|
52
53
|
nativeReplayId: options.nativeReplayId,
|
|
53
54
|
contentEmitter: this.contentEmitter,
|
|
54
55
|
debugRecorder: options.debugRecorder,
|
|
@@ -15,6 +15,7 @@ export class CursorTurnDisplayRouter {
|
|
|
15
15
|
liveRun;
|
|
16
16
|
useNativeToolReplay;
|
|
17
17
|
activeToolNames;
|
|
18
|
+
registeredToolNames;
|
|
18
19
|
nativeReplayId;
|
|
19
20
|
contentEmitter;
|
|
20
21
|
debugRecorder;
|
|
@@ -27,6 +28,7 @@ export class CursorTurnDisplayRouter {
|
|
|
27
28
|
this.liveRun = options.liveRun;
|
|
28
29
|
this.useNativeToolReplay = options.useNativeToolReplay;
|
|
29
30
|
this.activeToolNames = options.activeToolNames;
|
|
31
|
+
this.registeredToolNames = options.registeredToolNames;
|
|
30
32
|
this.nativeReplayId = options.nativeReplayId;
|
|
31
33
|
this.contentEmitter = options.contentEmitter;
|
|
32
34
|
this.debugRecorder = options.debugRecorder;
|
|
@@ -41,6 +43,7 @@ export class CursorTurnDisplayRouter {
|
|
|
41
43
|
toolName: display.toolName,
|
|
42
44
|
useNativeToolReplay: this.useNativeToolReplay,
|
|
43
45
|
activeToolNames: this.activeToolNames,
|
|
46
|
+
registeredToolNames: this.registeredToolNames,
|
|
44
47
|
hasLiveRun: this.liveRun !== undefined,
|
|
45
48
|
});
|
|
46
49
|
if (disposition === "queue_replay" && this.liveRun) {
|
|
@@ -78,6 +81,7 @@ export class CursorTurnDisplayRouter {
|
|
|
78
81
|
toolName: display.toolName,
|
|
79
82
|
useNativeToolReplay: this.useNativeToolReplay,
|
|
80
83
|
activeToolNames: this.activeToolNames,
|
|
84
|
+
registeredToolNames: this.registeredToolNames,
|
|
81
85
|
hasLiveRun: this.liveRun !== undefined,
|
|
82
86
|
});
|
|
83
87
|
if (disposition === "queue_replay" && this.liveRun && reason !== "abort") {
|