pi-cursor-sdk 0.5.0 → 0.5.3
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 +76 -0
- package/README.md +135 -34
- package/dist/context.js +55 -36
- 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 +402 -1
- package/dist/cursor-fallback-warning.js +8 -2
- package/dist/cursor-live-run-coordinator.js +22 -2
- package/dist/cursor-local-agent-ownership.js +17 -0
- package/dist/cursor-mcp-timeout-override.js +3 -1
- package/dist/cursor-pi-tool-bridge-diagnostics.js +4 -0
- package/dist/cursor-pi-tool-bridge-run.js +31 -3
- 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 +38 -26
- package/dist/cursor-session-agent-lifecycle.js +2 -2
- package/dist/cursor-session-agent-lineage.js +11 -7
- package/dist/cursor-session-agent-resume.js +15 -9
- package/dist/cursor-session-agent.js +60 -23
- package/dist/cursor-session-scope.js +27 -14
- package/dist/cursor-session-send-policy.js +2 -2
- package/dist/cursor-session-settings.js +3 -3
- package/dist/cursor-session-store.js +235 -45
- package/dist/cursor-state.js +23 -9
- package/dist/cursor-tool-manifest.js +1 -1
- package/dist/index.js +21 -19
- package/dist/model-discovery.js +58 -26
- package/dist/model-list-cache.js +12 -1
- package/docs/cursor-live-smoke-checklist.md +2 -2
- package/docs/cursor-model-ux-spec.md +83 -30
- package/docs/cursor-native-tool-replay.md +16 -5
- package/docs/cursor-native-tool-visual-audit.md +1 -1
- package/docs/cursor-testing-lessons.md +63 -7
- package/docs/cursor-tool-surfaces.md +19 -4
- 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 +20 -18
- 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 +59 -35
- 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 +402 -1
- package/src/cursor-fallback-warning.ts +7 -3
- package/src/cursor-live-run-coordinator.ts +21 -2
- package/src/cursor-local-agent-ownership.ts +18 -0
- package/src/cursor-mcp-timeout-override.ts +3 -1
- package/src/cursor-pi-tool-bridge-diagnostics.ts +17 -0
- package/src/cursor-pi-tool-bridge-run.ts +31 -3
- 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 +33 -27
- package/src/cursor-session-agent-lifecycle.ts +2 -2
- package/src/cursor-session-agent-lineage.ts +10 -5
- package/src/cursor-session-agent-resume.ts +14 -7
- package/src/cursor-session-agent.ts +67 -24
- package/src/cursor-session-scope.ts +33 -11
- package/src/cursor-session-send-policy.ts +2 -2
- package/src/cursor-session-settings.ts +3 -3
- package/src/cursor-session-store.ts +259 -53
- package/src/cursor-state.ts +32 -7
- package/src/cursor-tool-manifest.ts +1 -1
- package/src/index.ts +19 -19
- package/src/model-discovery.ts +68 -30
- 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
|
@@ -3,8 +3,9 @@ import { fsyncExistingRegularFile } from "./cursor-durable-fs.js";
|
|
|
3
3
|
import { scrubSensitiveText } from "./cursor-sensitive-text.js";
|
|
4
4
|
import { loadCursorSdk } from "./cursor-sdk-runtime.js";
|
|
5
5
|
import { cursorSessionScopeKeyForManager } from "./cursor-session-scope.js";
|
|
6
|
+
import { claimCursorLocalAgent } from "./cursor-local-agent-ownership.js";
|
|
6
7
|
import { CURSOR_SESSION_AGENT_RESUME_ENTRY_TYPE, isCursorLocalAgentId, parseCursorSessionAgentResumeEntryData, readResumableCursorSessionAgentIds, resolveCursorSessionRepoRoot, } from "./cursor-session-agent-resume.js";
|
|
7
|
-
import {
|
|
8
|
+
import { withCursorSessionStoreIdentities, openCursorSessionStore, resolveCursorSessionStoreIdentity, } from "./cursor-session-store.js";
|
|
8
9
|
export const CURSOR_SESSION_AGENT_CLEANUP_ENTRY_TYPE = "cursor-sdk-agent-cleanup";
|
|
9
10
|
class InvalidCursorSessionStoreIdentityError extends Error {
|
|
10
11
|
}
|
|
@@ -202,7 +203,7 @@ function appendDurableCleanupEntry(pi, ctx, data) {
|
|
|
202
203
|
return false;
|
|
203
204
|
return fsyncExistingRegularFile(sessionFile);
|
|
204
205
|
}
|
|
205
|
-
export async function runCursorSessionAgentCleanupCommand(pi, args, ctx) {
|
|
206
|
+
export async function runCursorSessionAgentCleanupCommand(pi, args, ctx, storeRoot) {
|
|
206
207
|
const usage = "Usage: /cursor-local-resume-cleanup [--dry-run|--yes]";
|
|
207
208
|
const tokens = args.trim().split(/\s+/).filter(Boolean);
|
|
208
209
|
const dryRun = tokens.length === 0 || (tokens.length === 1 && tokens[0] === "--dry-run");
|
|
@@ -236,7 +237,7 @@ export async function runCursorSessionAgentCleanupCommand(pi, args, ctx) {
|
|
|
236
237
|
}
|
|
237
238
|
return;
|
|
238
239
|
}
|
|
239
|
-
if (!appendDurableCleanupEntry(pi, ctx, { action: "delete", phase: "intent", ...baseEntry })) {
|
|
240
|
+
if (!scope.sessionFile || !appendDurableCleanupEntry(pi, ctx, { action: "delete", phase: "intent", ...baseEntry })) {
|
|
240
241
|
ctx.ui.notify("Cleanup intent could not be durably recorded. No agents were deleted.", "error");
|
|
241
242
|
return;
|
|
242
243
|
}
|
|
@@ -244,31 +245,42 @@ export async function runCursorSessionAgentCleanupCommand(pi, args, ctx) {
|
|
|
244
245
|
const failedAgentIds = [];
|
|
245
246
|
const openedStores = new Map();
|
|
246
247
|
try {
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
openedStore =
|
|
259
|
-
|
|
248
|
+
await withCursorSessionStoreIdentities(ctx.cwd, scope.scopeKey, storeRoot, async (identities) => {
|
|
249
|
+
const operations = await getSdkOperations();
|
|
250
|
+
for (const candidate of plan.candidates) {
|
|
251
|
+
const { agentId } = candidate;
|
|
252
|
+
try {
|
|
253
|
+
const identity = await resolveCursorSessionStoreIdentity({
|
|
254
|
+
cwd: ctx.cwd, scopeKey: scope.scopeKey,
|
|
255
|
+
identities, recordedIdentity: candidate.storeIdentity, agentId,
|
|
256
|
+
});
|
|
257
|
+
if (!identity)
|
|
258
|
+
throw new InvalidCursorSessionStoreIdentityError("Recorded Cursor local store identity is not valid for this pi session");
|
|
259
|
+
let openedStore = openedStores.get(identity.stateRoot);
|
|
260
|
+
if (!openedStore) {
|
|
261
|
+
openedStore = await openCursorSessionStore(ctx.cwd, identity, identities.workspaceRoot, identities.storeRoot);
|
|
262
|
+
openedStores.set(identity.stateRoot, openedStore);
|
|
263
|
+
}
|
|
264
|
+
const release = claimCursorLocalAgent(identity, agentId);
|
|
265
|
+
if (!release)
|
|
266
|
+
throw new Error("Cursor local agent is still owned by an active runtime");
|
|
267
|
+
try {
|
|
268
|
+
await operations.delete(agentId, { cwd: ctx.cwd, store: openedStore.store });
|
|
269
|
+
}
|
|
270
|
+
finally {
|
|
271
|
+
release();
|
|
272
|
+
}
|
|
273
|
+
deletedAgentIds.push(agentId);
|
|
274
|
+
}
|
|
275
|
+
catch (error) {
|
|
276
|
+
failedAgentIds.push({
|
|
277
|
+
agentId,
|
|
278
|
+
error: scrubSensitiveText(getString(asRecord(error), "message") ?? String(error)),
|
|
279
|
+
...(error instanceof InvalidCursorSessionStoreIdentityError ? { retryable: false } : {}),
|
|
280
|
+
});
|
|
260
281
|
}
|
|
261
|
-
await operations.delete(agentId, { cwd: ctx.cwd, store: openedStore.store });
|
|
262
|
-
deletedAgentIds.push(agentId);
|
|
263
|
-
}
|
|
264
|
-
catch (error) {
|
|
265
|
-
failedAgentIds.push({
|
|
266
|
-
agentId,
|
|
267
|
-
error: scrubSensitiveText(getString(asRecord(error), "message") ?? String(error)),
|
|
268
|
-
...(error instanceof InvalidCursorSessionStoreIdentityError ? { retryable: false } : {}),
|
|
269
|
-
});
|
|
270
282
|
}
|
|
271
|
-
}
|
|
283
|
+
});
|
|
272
284
|
}
|
|
273
285
|
catch (error) {
|
|
274
286
|
const message = scrubSensitiveText(getString(asRecord(error), "message") ?? String(error));
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { clearCursorSdkHttp1 } from "./cursor-http1.js";
|
|
2
|
-
import {
|
|
2
|
+
import { cursorRuntimeSessionScopeKeyForManager, hasLiveCursorSessions, onCursorSessionScopeKeyChange } from "./cursor-session-scope.js";
|
|
3
3
|
import { disposeSessionCursorAgent, invalidateSessionAgent, resetSessionCursorAgent, } from "./cursor-session-agent.js";
|
|
4
4
|
export function registerCursorSessionAgentLifecycle(pi) {
|
|
5
5
|
let scopeKey;
|
|
6
|
-
pi.on("session_start", (_event, ctx) => { scopeKey =
|
|
6
|
+
pi.on("session_start", (_event, ctx) => { scopeKey = cursorRuntimeSessionScopeKeyForManager(ctx.sessionManager); });
|
|
7
7
|
onCursorSessionScopeKeyChange(pi, async (previousScopeKey) => {
|
|
8
8
|
await disposeSessionCursorAgent(previousScopeKey);
|
|
9
9
|
});
|
|
@@ -52,7 +52,7 @@ function readRecordedAgentIds(entries, sessionId) {
|
|
|
52
52
|
export function recordCursorSessionAgentLineage(agentId, turnScopeKey) {
|
|
53
53
|
const sessionState = turnScopeKey === undefined
|
|
54
54
|
? state
|
|
55
|
-
: statesByScope.get(turnScopeKey) ?? (state.scopeKey === turnScopeKey ? state : undefined);
|
|
55
|
+
: statesByScope.get(turnScopeKey) ?? ((state.runtimeScopeKey ?? state.scopeKey) === turnScopeKey ? state : undefined);
|
|
56
56
|
if (!sessionState)
|
|
57
57
|
return;
|
|
58
58
|
const { appendEntry, sessionId, sessionFile, scopeKey, cwd } = sessionState;
|
|
@@ -83,24 +83,27 @@ export function registerCursorSessionAgentLineage(pi) {
|
|
|
83
83
|
pi.on("session_start", (_event, ctx) => {
|
|
84
84
|
state = sessionState;
|
|
85
85
|
const record = sessionState;
|
|
86
|
-
if (record.
|
|
87
|
-
statesByScope.delete(record.
|
|
86
|
+
if (record.runtimeScopeKey && statesByScope.get(record.runtimeScopeKey) === record)
|
|
87
|
+
statesByScope.delete(record.runtimeScopeKey);
|
|
88
88
|
record.appendEntry = pi.appendEntry;
|
|
89
89
|
record.sessionId = ctx.sessionManager.getSessionId();
|
|
90
90
|
record.sessionFile = ctx.sessionManager.getSessionFile() ?? undefined;
|
|
91
|
-
|
|
92
|
-
|
|
91
|
+
const scope = getCursorSessionScopeSnapshot(pi);
|
|
92
|
+
record.runtimeScopeKey = scope.scopeKey;
|
|
93
|
+
record.scopeKey = scope.persistentScopeKey ?? scope.scopeKey;
|
|
94
|
+
statesByScope.set(scope.scopeKey, record);
|
|
93
95
|
record.cwd = ctx.cwd;
|
|
94
96
|
record.recordedAgentIds = readRecordedAgentIds(ctx.sessionManager.getEntries(), record.sessionId);
|
|
95
97
|
});
|
|
96
98
|
pi.on("session_shutdown", () => {
|
|
97
99
|
const state = sessionState;
|
|
98
|
-
if (state.
|
|
99
|
-
statesByScope.delete(state.
|
|
100
|
+
if (state.runtimeScopeKey && statesByScope.get(state.runtimeScopeKey) === state)
|
|
101
|
+
statesByScope.delete(state.runtimeScopeKey);
|
|
100
102
|
state.appendEntry = undefined;
|
|
101
103
|
state.sessionId = undefined;
|
|
102
104
|
state.sessionFile = undefined;
|
|
103
105
|
state.scopeKey = undefined;
|
|
106
|
+
state.runtimeScopeKey = undefined;
|
|
104
107
|
state.cwd = undefined;
|
|
105
108
|
state.recordedAgentIds = new Set();
|
|
106
109
|
});
|
|
@@ -111,6 +114,7 @@ function resetStateForTests() {
|
|
|
111
114
|
state.sessionId = undefined;
|
|
112
115
|
state.sessionFile = undefined;
|
|
113
116
|
state.scopeKey = undefined;
|
|
117
|
+
state.runtimeScopeKey = undefined;
|
|
114
118
|
state.cwd = undefined;
|
|
115
119
|
state.recordedAgentIds = new Set();
|
|
116
120
|
}
|
|
@@ -266,7 +266,7 @@ function restoreFromBranch(branch, allEntries, state) {
|
|
|
266
266
|
}
|
|
267
267
|
export function getMatchingCursorSessionAgentResumeHandle(poolKey, scopeKey) {
|
|
268
268
|
const state = getResumeState(scopeKey);
|
|
269
|
-
if (scopeKey !== undefined && state.scopeKey !== scopeKey)
|
|
269
|
+
if (scopeKey !== undefined && (state.runtimeScopeKey ?? state.scopeKey) !== scopeKey)
|
|
270
270
|
return undefined;
|
|
271
271
|
const handle = state.activeHandle;
|
|
272
272
|
if (!handle || !isCursorLocalAgentId(handle.agentId))
|
|
@@ -292,7 +292,7 @@ export function getMatchingCursorSessionAgentResumeHandle(poolKey, scopeKey) {
|
|
|
292
292
|
}
|
|
293
293
|
export function persistCursorSessionAgentResumeHandle(input, scopeKey) {
|
|
294
294
|
const state = getResumeState(scopeKey);
|
|
295
|
-
if (scopeKey !== undefined && state.scopeKey !== scopeKey)
|
|
295
|
+
if (scopeKey !== undefined && (state.runtimeScopeKey ?? state.scopeKey) !== scopeKey)
|
|
296
296
|
return;
|
|
297
297
|
if (!isCursorLocalAgentId(input.agentId))
|
|
298
298
|
return;
|
|
@@ -343,8 +343,9 @@ function flushPendingCursorSessionAgentResumeHandle(branch, state) {
|
|
|
343
343
|
}
|
|
344
344
|
}
|
|
345
345
|
export function registerCursorSessionAgentResume(pi) {
|
|
346
|
+
const scope = getCursorSessionScopeSnapshot(pi);
|
|
346
347
|
const sessionState = {
|
|
347
|
-
appendEntry: pi.appendEntry, scopeKey:
|
|
348
|
+
appendEntry: pi.appendEntry, scopeKey: scope.persistentScopeKey ?? scope.scopeKey,
|
|
348
349
|
cwd: process.cwd(), branchPathHash: EMPTY_BRANCH_HASH,
|
|
349
350
|
compactionGeneration: 0, unownedUserEntryIds: new Set(),
|
|
350
351
|
};
|
|
@@ -355,10 +356,13 @@ export function registerCursorSessionAgentResume(pi) {
|
|
|
355
356
|
restoreFromBranch(branch, entries.length > 0 ? entries : branch, state);
|
|
356
357
|
};
|
|
357
358
|
pi.on("session_start", (_event, ctx) => {
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
359
|
+
const key = state.runtimeScopeKey ?? state.scopeKey;
|
|
360
|
+
if (statesByScope.get(key) === state)
|
|
361
|
+
statesByScope.delete(key);
|
|
362
|
+
const scope = getCursorSessionScopeSnapshot(pi);
|
|
363
|
+
state.runtimeScopeKey = scope.scopeKey;
|
|
364
|
+
state.scopeKey = scope.persistentScopeKey ?? scope.scopeKey;
|
|
365
|
+
statesByScope.set(scope.scopeKey, state);
|
|
362
366
|
lastBoundState = state;
|
|
363
367
|
state.sessionFile = ctx.sessionManager.getSessionFile?.() ?? undefined;
|
|
364
368
|
state.sessionId = ctx.sessionManager.getSessionId?.() ?? undefined;
|
|
@@ -399,8 +403,9 @@ export function registerCursorSessionAgentResume(pi) {
|
|
|
399
403
|
state.branchPathHash = hashBranchStep(state.branchPathHash, event.compactionEntry);
|
|
400
404
|
});
|
|
401
405
|
pi.on("session_shutdown", () => {
|
|
402
|
-
|
|
403
|
-
|
|
406
|
+
const key = state.runtimeScopeKey ?? state.scopeKey;
|
|
407
|
+
if (statesByScope.get(key) === state)
|
|
408
|
+
statesByScope.delete(key);
|
|
404
409
|
state.appendEntry = undefined;
|
|
405
410
|
state.pendingHandle = undefined;
|
|
406
411
|
});
|
|
@@ -412,6 +417,7 @@ function resetStateForTests() {
|
|
|
412
417
|
const state = lastBoundState;
|
|
413
418
|
state.appendEntry = undefined;
|
|
414
419
|
state.scopeKey = getCursorSessionScopeKey();
|
|
420
|
+
state.runtimeScopeKey = undefined;
|
|
415
421
|
state.sessionFile = undefined;
|
|
416
422
|
state.sessionId = undefined;
|
|
417
423
|
state.cwd = process.cwd();
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
+
import { normalizeCursorCustomStoreRoot } from "./cursor-custom-store-path.js";
|
|
3
|
+
import { claimCursorLocalAgent } from "./cursor-local-agent-ownership.js";
|
|
2
4
|
import { getRegisteredCursorPiToolBridge, } from "./cursor-pi-tool-bridge.js";
|
|
3
5
|
import { computeCursorContextFingerprint } from "./context.js";
|
|
4
|
-
import {
|
|
6
|
+
import { getCursorSessionScopeSnapshot, getCursorSessionScopeGeneration, getCursorSessionScopeKey } from "./cursor-session-scope.js";
|
|
5
7
|
import { getMatchingCursorSessionAgentResumeHandle, persistCursorSessionAgentResumeHandle, } from "./cursor-session-agent-resume.js";
|
|
6
8
|
import { loadCursorSdk } from "./cursor-sdk-runtime.js";
|
|
7
9
|
import { cursorSessionStoreIdentitiesEqual, openCursorSessionStore, openCursorSessionStoreForScope, } from "./cursor-session-store.js";
|
|
@@ -26,11 +28,14 @@ function assertScopeAcceptsAcquire(scopeKey) {
|
|
|
26
28
|
}
|
|
27
29
|
terminalDisposedScopeGenerations.delete(scopeKey);
|
|
28
30
|
}
|
|
29
|
-
function
|
|
31
|
+
function samePoolIdentity(entry, poolKey, capturedStoreRoot) {
|
|
32
|
+
return entry.poolKey === poolKey && entry.storeRoot === capturedStoreRoot;
|
|
33
|
+
}
|
|
34
|
+
function rethrowSupersededWhenReplacedByDifferentPoolIdentity(scopeKey, poolKey, storeRoot, error) {
|
|
30
35
|
if (!(error instanceof SessionCursorAgentCreationSupersededError))
|
|
31
36
|
return;
|
|
32
37
|
const replacement = sessionAgentsByScope.get(scopeKey);
|
|
33
|
-
if (replacement && replacement
|
|
38
|
+
if (replacement && !samePoolIdentity(replacement, poolKey, storeRoot)) {
|
|
34
39
|
throw error;
|
|
35
40
|
}
|
|
36
41
|
}
|
|
@@ -87,9 +92,23 @@ function buildBridgePoolKeySuffix(registeredBridge) {
|
|
|
87
92
|
return "bridge:absent";
|
|
88
93
|
return registeredBridge.getToolSurfaceSignature();
|
|
89
94
|
}
|
|
95
|
+
function buildCustomSubagentPoolKeySuffix(agents) {
|
|
96
|
+
const definitions = Object.entries(agents ?? {}).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0);
|
|
97
|
+
if (!definitions.length)
|
|
98
|
+
return [];
|
|
99
|
+
const content = definitions.map(([name, entry]) => [
|
|
100
|
+
name, entry.description, entry.prompt,
|
|
101
|
+
entry.model === undefined ? null : entry.model === "inherit" ? "inherit" : {
|
|
102
|
+
id: entry.model.id,
|
|
103
|
+
params: [...(entry.model.params ?? [])].sort((a, b) => a.id < b.id ? -1 : a.id > b.id ? 1 : a.value < b.value ? -1 : a.value > b.value ? 1 : 0)
|
|
104
|
+
.map(({ id, value }) => ({ id, value })),
|
|
105
|
+
},
|
|
106
|
+
]);
|
|
107
|
+
return [`subagents:${createHash("sha256").update(JSON.stringify(content)).digest("hex")}`];
|
|
108
|
+
}
|
|
90
109
|
function buildSessionAgentPoolKey(scopeKey, params) {
|
|
91
110
|
return [
|
|
92
|
-
scopeKey,
|
|
111
|
+
params.scope?.persistentScopeKey ?? scopeKey,
|
|
93
112
|
params.cwd,
|
|
94
113
|
buildModelPoolKey(params.modelSelection),
|
|
95
114
|
buildSettingSourcesPoolKey(params.settingSources),
|
|
@@ -101,6 +120,7 @@ function buildSessionAgentPoolKey(scopeKey, params) {
|
|
|
101
120
|
: "http1:off",
|
|
102
121
|
buildApiKeyPoolKeyFingerprint(params.apiKey),
|
|
103
122
|
buildBridgePoolKeySuffix("bridge" in params ? params.bridge : getRegisteredCursorPiToolBridge()),
|
|
123
|
+
...buildCustomSubagentPoolKeySuffix(params.agents),
|
|
104
124
|
].join("\0");
|
|
105
125
|
}
|
|
106
126
|
async function disposePoolEntry(entry, options) {
|
|
@@ -113,8 +133,9 @@ async function disposePoolEntry(entry, options) {
|
|
|
113
133
|
catch {
|
|
114
134
|
// disposal failure should not block session replacement
|
|
115
135
|
}
|
|
136
|
+
let disposal;
|
|
116
137
|
try {
|
|
117
|
-
|
|
138
|
+
disposal = Promise.resolve(entry.agent[Symbol.asyncDispose]());
|
|
118
139
|
// A dead local transport may never settle SDK disposal; bound the wait so the
|
|
119
140
|
// next acquire recreates instead of hanging on the dead agent.
|
|
120
141
|
await (options?.deadTransport
|
|
@@ -128,6 +149,8 @@ async function disposePoolEntry(entry, options) {
|
|
|
128
149
|
// disposal failure should not block session replacement
|
|
129
150
|
}
|
|
130
151
|
await entry.sessionStore.dispose().catch(() => undefined);
|
|
152
|
+
// Timeout/rejection is not proof of closure; only successful SDK disposal releases ownership.
|
|
153
|
+
void disposal?.then(entry.releaseAgentClaim, () => { });
|
|
131
154
|
}
|
|
132
155
|
async function disposePoolEntryForScope(scopeKey, options) {
|
|
133
156
|
invalidateScopeCreations(scopeKey);
|
|
@@ -252,11 +275,11 @@ function leaseFromEntry(entry, scopeKey, params, created) {
|
|
|
252
275
|
},
|
|
253
276
|
};
|
|
254
277
|
}
|
|
255
|
-
function getCurrentReadyPoolEntry(scopeKey, poolKey) {
|
|
278
|
+
function getCurrentReadyPoolEntry(scopeKey, poolKey, storeRoot) {
|
|
256
279
|
const current = sessionAgentsByScope.get(scopeKey);
|
|
257
280
|
if (current?.status !== "ready")
|
|
258
281
|
return undefined;
|
|
259
|
-
if (current
|
|
282
|
+
if (!samePoolIdentity(current, poolKey, storeRoot))
|
|
260
283
|
return undefined;
|
|
261
284
|
return current;
|
|
262
285
|
}
|
|
@@ -269,7 +292,7 @@ async function tryLeaseReadyEntry(entry, scopeKey, params, poolKey, created) {
|
|
|
269
292
|
await disposePoolEntryForScope(scopeKey);
|
|
270
293
|
return undefined;
|
|
271
294
|
}
|
|
272
|
-
const readyEntry = getCurrentReadyPoolEntry(scopeKey, poolKey);
|
|
295
|
+
const readyEntry = getCurrentReadyPoolEntry(scopeKey, poolKey, params.storeRoot);
|
|
273
296
|
if (!readyEntry)
|
|
274
297
|
return undefined;
|
|
275
298
|
return leaseFromEntry(readyEntry, scopeKey, params, created);
|
|
@@ -277,6 +300,7 @@ async function tryLeaseReadyEntry(entry, scopeKey, params, poolKey, created) {
|
|
|
277
300
|
async function createSessionAgentEntry(scopeKey, persistentStore, instanceId, sendState, params) {
|
|
278
301
|
let bridgeRun;
|
|
279
302
|
let sessionStore;
|
|
303
|
+
let releaseAgentClaim;
|
|
280
304
|
try {
|
|
281
305
|
const registeredBridge = params.bridge;
|
|
282
306
|
if (registeredBridge) {
|
|
@@ -301,13 +325,12 @@ async function createSessionAgentEntry(scopeKey, persistentStore, instanceId, se
|
|
|
301
325
|
const resumeHandle = resumeEligible ? getMatchingCursorSessionAgentResumeHandle(resolvedPoolKey, scopeKey) : undefined;
|
|
302
326
|
const storeSelection = await openCursorSessionStoreForScope({
|
|
303
327
|
cwd: params.cwd,
|
|
304
|
-
scopeKey,
|
|
328
|
+
scopeKey: params.scope?.persistentScopeKey ?? scopeKey,
|
|
305
329
|
persistent: persistentStore,
|
|
306
|
-
|
|
307
|
-
|
|
330
|
+
storeRoot: params.storeRoot,
|
|
331
|
+
resume: resumeHandle ? { identity: resumeHandle.storeIdentity, agentId: resumeHandle.agentId } : undefined,
|
|
308
332
|
});
|
|
309
333
|
sessionStore = storeSelection.sessionStore;
|
|
310
|
-
const { identities } = storeSelection;
|
|
311
334
|
const resumeAttemptAllowed = storeSelection.resumeAttemptAllowed;
|
|
312
335
|
let resumeNotice = storeSelection.resumeFallback ? LOCAL_RESUME_FALLBACK_NOTICE : undefined;
|
|
313
336
|
const buildAgentOptions = () => ({
|
|
@@ -321,22 +344,30 @@ async function createSessionAgentEntry(scopeKey, persistentStore, instanceId, se
|
|
|
321
344
|
store: sessionStore.store,
|
|
322
345
|
}),
|
|
323
346
|
...(bridgeRun?.mcpServers ? { mcpServers: bridgeRun.mcpServers } : {}),
|
|
347
|
+
...(params.agents && Object.keys(params.agents).length ? { agents: params.agents } : {}),
|
|
324
348
|
});
|
|
325
349
|
let agent;
|
|
326
350
|
let effectiveSendState = sendState;
|
|
327
351
|
let resumed = false;
|
|
328
352
|
if (resumeHandle && resumeAttemptAllowed && resumeAgent) {
|
|
353
|
+
releaseAgentClaim = claimCursorLocalAgent(sessionStore.identity, resumeHandle.agentId);
|
|
354
|
+
}
|
|
355
|
+
if (resumeHandle && resumeAttemptAllowed && resumeAgent && releaseAgentClaim) {
|
|
329
356
|
try {
|
|
330
357
|
agent = await resumeAgent(resumeHandle.agentId, buildAgentOptions());
|
|
331
358
|
effectiveSendState = { ...resumeHandle.sendState };
|
|
332
359
|
resumed = true;
|
|
333
360
|
}
|
|
334
361
|
catch {
|
|
362
|
+
releaseAgentClaim();
|
|
363
|
+
releaseAgentClaim = undefined;
|
|
335
364
|
if (persistentStore)
|
|
336
365
|
resumeNotice = LOCAL_RESUME_FALLBACK_NOTICE;
|
|
337
|
-
if (!cursorSessionStoreIdentitiesEqual(sessionStore.identity, identities.sessionStore)) {
|
|
366
|
+
if (storeSelection.persistent && !cursorSessionStoreIdentitiesEqual(sessionStore.identity, storeSelection.identities.sessionStore)) {
|
|
367
|
+
const { identities } = storeSelection;
|
|
368
|
+
const replacement = await openCursorSessionStore(params.cwd, identities.sessionStore, identities.workspaceRoot, identities.storeRoot);
|
|
338
369
|
await sessionStore.dispose().catch(() => undefined);
|
|
339
|
-
sessionStore =
|
|
370
|
+
sessionStore = replacement;
|
|
340
371
|
}
|
|
341
372
|
}
|
|
342
373
|
}
|
|
@@ -345,9 +376,13 @@ async function createSessionAgentEntry(scopeKey, persistentStore, instanceId, se
|
|
|
345
376
|
throw new Error("Cursor SDK agent creation returned no agent");
|
|
346
377
|
if (!sessionStore)
|
|
347
378
|
throw new Error("Cursor SDK session store was not opened");
|
|
379
|
+
releaseAgentClaim ??= claimCursorLocalAgent(sessionStore.identity, agent.agentId);
|
|
380
|
+
if (!releaseAgentClaim)
|
|
381
|
+
throw new Error("Cursor SDK agent is already owned by another runtime");
|
|
348
382
|
return {
|
|
349
383
|
status: "ready",
|
|
350
384
|
poolKey: resolvedPoolKey,
|
|
385
|
+
storeRoot: params.storeRoot,
|
|
351
386
|
instanceId,
|
|
352
387
|
scopeKey,
|
|
353
388
|
agent,
|
|
@@ -356,6 +391,7 @@ async function createSessionAgentEntry(scopeKey, persistentStore, instanceId, se
|
|
|
356
391
|
sendState: effectiveSendState,
|
|
357
392
|
resumeEnabled: params.localResume === true,
|
|
358
393
|
resumed,
|
|
394
|
+
releaseAgentClaim,
|
|
359
395
|
...(resumeNotice ? { resumeNotice } : {}),
|
|
360
396
|
};
|
|
361
397
|
}
|
|
@@ -363,6 +399,7 @@ async function createSessionAgentEntry(scopeKey, persistentStore, instanceId, se
|
|
|
363
399
|
bridgeRun?.cancel("Cursor session agent create failed");
|
|
364
400
|
await bridgeRun?.dispose().catch(() => undefined);
|
|
365
401
|
await sessionStore?.dispose().catch(() => undefined);
|
|
402
|
+
releaseAgentClaim?.();
|
|
366
403
|
throw error;
|
|
367
404
|
}
|
|
368
405
|
}
|
|
@@ -373,9 +410,10 @@ export function invalidateSessionAgent(scopeKey = getCursorSessionScopeKey(), op
|
|
|
373
410
|
deadTransportScopeKeys.add(scopeKey);
|
|
374
411
|
}
|
|
375
412
|
export async function acquireSessionCursorAgent(input) {
|
|
376
|
-
const params = { ...input, bridge: "bridge" in input ? input.bridge : getRegisteredCursorPiToolBridge() };
|
|
377
|
-
const scopeKey = params.scope
|
|
378
|
-
const persistentStore =
|
|
413
|
+
const params = { ...input, scope: input.scope ?? getCursorSessionScopeSnapshot(), bridge: "bridge" in input ? input.bridge : getRegisteredCursorPiToolBridge() };
|
|
414
|
+
const scopeKey = params.scope.scopeKey;
|
|
415
|
+
const persistentStore = params.scope.sessionFile !== undefined;
|
|
416
|
+
params.storeRoot = persistentStore && params.storeRoot !== undefined ? normalizeCursorCustomStoreRoot(params.storeRoot) : undefined;
|
|
379
417
|
while (true) {
|
|
380
418
|
assertScopeAcceptsAcquire(scopeKey);
|
|
381
419
|
if (invalidatedScopeKeys.has(scopeKey)) {
|
|
@@ -383,7 +421,7 @@ export async function acquireSessionCursorAgent(input) {
|
|
|
383
421
|
}
|
|
384
422
|
const poolKey = buildSessionAgentPoolKey(scopeKey, params);
|
|
385
423
|
const state = getSessionCursorAgentPoolState(scopeKey);
|
|
386
|
-
if ((state.status === "ready" || state.status === "busy") && state
|
|
424
|
+
if ((state.status === "ready" || state.status === "busy") && !samePoolIdentity(state, poolKey, params.storeRoot)) {
|
|
387
425
|
await disposePoolEntryForScope(scopeKey);
|
|
388
426
|
continue;
|
|
389
427
|
}
|
|
@@ -398,7 +436,7 @@ export async function acquireSessionCursorAgent(input) {
|
|
|
398
436
|
continue;
|
|
399
437
|
}
|
|
400
438
|
if (state.status === "creating") {
|
|
401
|
-
if (state
|
|
439
|
+
if (!samePoolIdentity(state, poolKey, params.storeRoot)) {
|
|
402
440
|
await disposePoolEntryForScope(scopeKey);
|
|
403
441
|
continue;
|
|
404
442
|
}
|
|
@@ -408,7 +446,7 @@ export async function acquireSessionCursorAgent(input) {
|
|
|
408
446
|
catch (error) {
|
|
409
447
|
if (error instanceof SessionCursorAgentCreationSupersededError) {
|
|
410
448
|
assertScopeAcceptsAcquire(scopeKey);
|
|
411
|
-
|
|
449
|
+
rethrowSupersededWhenReplacedByDifferentPoolIdentity(scopeKey, poolKey, params.storeRoot, error);
|
|
412
450
|
continue;
|
|
413
451
|
}
|
|
414
452
|
throw error;
|
|
@@ -436,6 +474,7 @@ export async function acquireSessionCursorAgent(input) {
|
|
|
436
474
|
placeholder = {
|
|
437
475
|
status: "creating",
|
|
438
476
|
poolKey,
|
|
477
|
+
storeRoot: params.storeRoot,
|
|
439
478
|
instanceId,
|
|
440
479
|
scopeKey,
|
|
441
480
|
sendState,
|
|
@@ -456,7 +495,7 @@ export async function acquireSessionCursorAgent(input) {
|
|
|
456
495
|
}
|
|
457
496
|
if (error instanceof SessionCursorAgentCreationSupersededError) {
|
|
458
497
|
assertScopeAcceptsAcquire(scopeKey);
|
|
459
|
-
|
|
498
|
+
rethrowSupersededWhenReplacedByDifferentPoolIdentity(scopeKey, poolKey, params.storeRoot, error);
|
|
460
499
|
continue;
|
|
461
500
|
}
|
|
462
501
|
throw error;
|
|
@@ -495,8 +534,6 @@ export const __testUtils = {
|
|
|
495
534
|
resetSessionCursorAgent,
|
|
496
535
|
refreshSessionCursorAgentConfig,
|
|
497
536
|
disposeAllSessionCursorAgents,
|
|
498
|
-
buildApiKeyPoolKeyFingerprint,
|
|
499
|
-
buildSessionAgentPoolKey,
|
|
500
537
|
setDeadTransportAgentDisposeTimeoutMs(ms) {
|
|
501
538
|
const previous = deadTransportAgentDisposeTimeoutMs;
|
|
502
539
|
deadTransportAgentDisposeTimeoutMs = ms;
|
|
@@ -11,23 +11,31 @@ const state = {
|
|
|
11
11
|
sessionName: undefined,
|
|
12
12
|
projectTrusted: false,
|
|
13
13
|
sessionGeneration: 0,
|
|
14
|
+
runtimeOwner: undefined,
|
|
14
15
|
};
|
|
15
16
|
const scopes = new Map();
|
|
16
17
|
const scopeChangeHandlers = new Map();
|
|
17
18
|
const scopeGenerations = new Map([[ANONYMOUS_SESSION_SCOPE_KEY, 0]]);
|
|
18
19
|
const projectTrustResolutionCwds = new Set();
|
|
19
20
|
let nextSessionGeneration = 1;
|
|
21
|
+
let nextRuntimeOwner = 1;
|
|
22
|
+
let runtimeOwners = new WeakMap();
|
|
23
|
+
function persistentScopeKeyFor(record) {
|
|
24
|
+
return record.sessionFile ?? (record.sessionId ? `${EPHEMERAL_SESSION_SCOPE_PREFIX}${record.sessionId}` : ANONYMOUS_SESSION_SCOPE_KEY);
|
|
25
|
+
}
|
|
20
26
|
function scopeKeyFor(record) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
if (record.sessionId)
|
|
24
|
-
return `${EPHEMERAL_SESSION_SCOPE_PREFIX}${record.sessionId}`;
|
|
25
|
-
return ANONYMOUS_SESSION_SCOPE_KEY;
|
|
27
|
+
const persistent = persistentScopeKeyFor(record);
|
|
28
|
+
return record.runtimeOwner === undefined ? persistent : `${persistent}\0runtime:${record.runtimeOwner}`;
|
|
26
29
|
}
|
|
27
30
|
export function cursorSessionScopeKeyForManager(manager) {
|
|
28
|
-
return
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
return persistentScopeKeyFor({
|
|
32
|
+
sessionFile: manager.getSessionFile?.() ?? undefined, sessionId: manager.getSessionId?.(),
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
export function cursorRuntimeSessionScopeKeyForManager(manager) {
|
|
36
|
+
const persistent = cursorSessionScopeKeyForManager(manager);
|
|
37
|
+
const owner = runtimeOwners.get(manager);
|
|
38
|
+
return owner === undefined ? persistent : `${persistent}\0runtime:${owner}`;
|
|
31
39
|
}
|
|
32
40
|
export function getCursorSessionScopeSnapshot(pi) {
|
|
33
41
|
if (!pi && scopes.size > 1)
|
|
@@ -39,6 +47,7 @@ export function getCursorSessionScopeSnapshot(pi) {
|
|
|
39
47
|
return Object.freeze({
|
|
40
48
|
cwd: record.sessionCwd,
|
|
41
49
|
scopeKey,
|
|
50
|
+
persistentScopeKey: persistentScopeKeyFor(record),
|
|
42
51
|
sessionFile: record.sessionFile,
|
|
43
52
|
sessionId: record.sessionId,
|
|
44
53
|
sessionName: record.sessionName,
|
|
@@ -49,10 +58,7 @@ export function getCursorSessionScopeSnapshot(pi) {
|
|
|
49
58
|
export function hasLiveCursorSessions() {
|
|
50
59
|
return scopes.size > 0;
|
|
51
60
|
}
|
|
52
|
-
|
|
53
|
-
return state.sessionFile;
|
|
54
|
-
}
|
|
55
|
-
/** Stable pool key, with process-local anonymous fallback before session_start. */
|
|
61
|
+
/** Runtime ownership key; persisted identities are captured separately. */
|
|
56
62
|
export function getCursorSessionScopeKey() {
|
|
57
63
|
return scopeKeyFor(state);
|
|
58
64
|
}
|
|
@@ -73,13 +79,14 @@ function normalizeCursorSessionName(name) {
|
|
|
73
79
|
return undefined;
|
|
74
80
|
return truncateCursorDisplayLine(name, MAX_CURSOR_SESSION_NAME_LENGTH) || undefined;
|
|
75
81
|
}
|
|
76
|
-
function setCursorSessionScope(cwd, sessionFile, sessionId, projectTrusted = false, sessionName) {
|
|
82
|
+
function setCursorSessionScope(cwd, sessionFile, sessionId, projectTrusted = false, sessionName, runtimeOwner) {
|
|
77
83
|
state.sessionCwd = cwd;
|
|
78
84
|
state.sessionFile = sessionFile;
|
|
79
85
|
state.sessionId = sessionId;
|
|
80
86
|
state.sessionName = normalizeCursorSessionName(sessionName);
|
|
81
87
|
state.projectTrusted = projectTrusted;
|
|
82
88
|
state.sessionGeneration = nextSessionGeneration++;
|
|
89
|
+
state.runtimeOwner = runtimeOwner;
|
|
83
90
|
scopeGenerations.set(scopeKeyFor(state), state.sessionGeneration);
|
|
84
91
|
}
|
|
85
92
|
function recordProjectTrustResolution(cwd) {
|
|
@@ -92,6 +99,7 @@ function resetCursorSessionScope() {
|
|
|
92
99
|
Object.assign(state, {
|
|
93
100
|
sessionCwd: process.cwd(), sessionFile: undefined, sessionId: undefined,
|
|
94
101
|
sessionName: undefined, projectTrusted: false, sessionGeneration: 0,
|
|
102
|
+
runtimeOwner: undefined,
|
|
95
103
|
});
|
|
96
104
|
nextSessionGeneration = 1;
|
|
97
105
|
scopeGenerations.clear();
|
|
@@ -99,6 +107,8 @@ function resetCursorSessionScope() {
|
|
|
99
107
|
projectTrustResolutionCwds.clear();
|
|
100
108
|
scopes.clear();
|
|
101
109
|
scopeChangeHandlers.clear();
|
|
110
|
+
runtimeOwners = new WeakMap();
|
|
111
|
+
nextRuntimeOwner = 1;
|
|
102
112
|
}
|
|
103
113
|
export function onCursorSessionScopeKeyChange(pi, handler) {
|
|
104
114
|
scopeChangeHandlers.set(pi, handler);
|
|
@@ -108,6 +118,7 @@ export function registerCursorSessionScope(pi) {
|
|
|
108
118
|
const record = {
|
|
109
119
|
sessionCwd: process.cwd(), sessionFile: undefined, sessionId: undefined,
|
|
110
120
|
sessionName: undefined, projectTrusted: false, sessionGeneration: 0,
|
|
121
|
+
runtimeOwner: undefined,
|
|
111
122
|
};
|
|
112
123
|
scopes.set(pi, record);
|
|
113
124
|
const trustedCwds = new Set();
|
|
@@ -118,8 +129,10 @@ export function registerCursorSessionScope(pi) {
|
|
|
118
129
|
pi.on("session_start", async (_event, ctx) => {
|
|
119
130
|
const previousScopeKey = scopeKeyFor(record);
|
|
120
131
|
const wasBound = record.sessionGeneration > 0;
|
|
132
|
+
if (!runtimeOwners.has(ctx.sessionManager))
|
|
133
|
+
runtimeOwners.set(ctx.sessionManager, nextRuntimeOwner++);
|
|
121
134
|
setCursorSessionScope(ctx.cwd, ctx.sessionManager?.getSessionFile?.() ?? undefined, ctx.sessionManager?.getSessionId?.() ?? undefined, ctx.isProjectTrusted?.() === true
|
|
122
|
-
&& (trustedCwds.has(resolve(ctx.cwd)) || projectTrustResolutionCwds.has(resolve(ctx.cwd)) || isCliProjectTrustApproved()), ctx.sessionManager?.getSessionName?.() ?? undefined);
|
|
135
|
+
&& (trustedCwds.has(resolve(ctx.cwd)) || projectTrustResolutionCwds.has(resolve(ctx.cwd)) || isCliProjectTrustApproved()), ctx.sessionManager?.getSessionName?.() ?? undefined, runtimeOwners.get(ctx.sessionManager));
|
|
123
136
|
Object.assign(record, state);
|
|
124
137
|
scopes.set(pi, record);
|
|
125
138
|
if (wasBound && previousScopeKey !== scopeKeyFor(record)) {
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { buildCursorIncrementalPrompt, buildCursorPrompt, shouldBootstrapCursorContext, } from "./context.js";
|
|
2
2
|
// Long-lived SDK session agents can drift tool-call behavior; recreate the agent after this many successful incremental sends.
|
|
3
3
|
export const MAX_COMPLETED_INCREMENTAL_SENDS_BEFORE_REBOOTSTRAP = 20;
|
|
4
|
-
export function planCursorSessionSend(sendState, context) {
|
|
4
|
+
export function planCursorSessionSend(sendState, context, nativeSourceRoles) {
|
|
5
5
|
if (!sendState.bootstrapped) {
|
|
6
6
|
return { mode: "bootstrap", resetAgent: false, reason: "initial" };
|
|
7
7
|
}
|
|
8
8
|
if (sendState.incrementalSendCount >= MAX_COMPLETED_INCREMENTAL_SENDS_BEFORE_REBOOTSTRAP) {
|
|
9
9
|
return { mode: "bootstrap", resetAgent: true, reason: "incremental_threshold" };
|
|
10
10
|
}
|
|
11
|
-
if (shouldBootstrapCursorContext(sendState, context)) {
|
|
11
|
+
if (shouldBootstrapCursorContext(sendState, context, nativeSourceRoles)) {
|
|
12
12
|
return { mode: "bootstrap", resetAgent: true, reason: "context_divergence" };
|
|
13
13
|
}
|
|
14
14
|
return { mode: "incremental", resetAgent: false, reason: "incremental" };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { cursorRuntimeSessionScopeKeyForManager, getCursorSessionProjectTrusted } from "./cursor-session-scope.js";
|
|
2
2
|
function createCliSettings() {
|
|
3
3
|
return {
|
|
4
4
|
forceFast: false, forceNoFast: false,
|
|
@@ -34,7 +34,7 @@ export function getCursorSessionSettings(scopeKey) {
|
|
|
34
34
|
}
|
|
35
35
|
export function cursorSettingsScopeForContext(ctx) {
|
|
36
36
|
const manager = ctx.sessionManager;
|
|
37
|
-
return manager ?
|
|
37
|
+
return manager ? cursorRuntimeSessionScopeKeyForManager(manager) : undefined;
|
|
38
38
|
}
|
|
39
39
|
export function registerCursorSessionSettings(pi) {
|
|
40
40
|
let scopeKey;
|
|
@@ -42,7 +42,7 @@ export function registerCursorSessionSettings(pi) {
|
|
|
42
42
|
pi.on("session_start", (_event, ctx) => {
|
|
43
43
|
if (scopeKey)
|
|
44
44
|
settings.delete(scopeKey);
|
|
45
|
-
scopeKey =
|
|
45
|
+
scopeKey = cursorRuntimeSessionScopeKeyForManager(ctx.sessionManager);
|
|
46
46
|
legacySettings = getCursorSessionSettings(scopeKey);
|
|
47
47
|
// Reload creates a new ExtensionAPI but retains the same public manager.
|
|
48
48
|
// Keep the run's one-shot CLI consumption without retaining dead managers.
|