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
|
@@ -1,19 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import
|
|
1
|
+
// Vendor env must initialize before the static @cursor/sdk import below so
|
|
2
|
+
// tree-sitter natives resolve when Pi lives outside this package's node_modules.
|
|
3
|
+
import "./cursor-sdk-vendor-env.js";
|
|
4
|
+
import * as CursorSdk from "@cursor/sdk";
|
|
4
5
|
|
|
5
|
-
export type CursorSdkModule = typeof
|
|
6
|
+
export type CursorSdkModule = typeof CursorSdk;
|
|
6
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Load the Cursor SDK module.
|
|
10
|
+
*
|
|
11
|
+
* Uses a static import so Pi's compiled-Bun extension graph includes @cursor/sdk
|
|
12
|
+
* (a runtime dynamic bare import is omitted from that graph; see #228).
|
|
13
|
+
* `loadCursorSdk` remains async for call-site compatibility and so vendor-env
|
|
14
|
+
* side effects (imported above) always run before callers receive the module.
|
|
15
|
+
*/
|
|
7
16
|
export async function loadCursorSdk(): Promise<CursorSdkModule> {
|
|
8
|
-
|
|
9
|
-
if (process.env.CURSOR_TREE_SITTER_VENDOR_DIR === undefined) {
|
|
10
|
-
const packageDirectory = resolveCursorSdkPlatformPackageDirectory();
|
|
11
|
-
if (packageDirectory) {
|
|
12
|
-
const vendor = join(packageDirectory, "vendor");
|
|
13
|
-
if (existsSync(join(vendor, "tree-sitter", "index.js")) && existsSync(join(vendor, "tree-sitter-bash", "index.js"))) {
|
|
14
|
-
process.env.CURSOR_TREE_SITTER_VENDOR_DIR = vendor;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
return import("@cursor/sdk");
|
|
17
|
+
return CursorSdk;
|
|
19
18
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { resolveCursorSdkPlatformPackageDirectory } from "./cursor-ripgrep-path.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Ensure CURSOR_TREE_SITTER_VENDOR_DIR is set before @cursor/sdk first loads.
|
|
7
|
+
* Must run as a side effect of importing this module (before a static SDK import).
|
|
8
|
+
*/
|
|
9
|
+
export function ensureCursorTreeSitterVendorDir(): void {
|
|
10
|
+
if (process.env.CURSOR_TREE_SITTER_VENDOR_DIR !== undefined) return;
|
|
11
|
+
const packageDirectory = resolveCursorSdkPlatformPackageDirectory();
|
|
12
|
+
if (!packageDirectory) return;
|
|
13
|
+
const vendor = join(packageDirectory, "vendor");
|
|
14
|
+
if (
|
|
15
|
+
existsSync(join(vendor, "tree-sitter", "index.js")) &&
|
|
16
|
+
existsSync(join(vendor, "tree-sitter-bash", "index.js"))
|
|
17
|
+
) {
|
|
18
|
+
process.env.CURSOR_TREE_SITTER_VENDOR_DIR = vendor;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
ensureCursorTreeSitterVendorDir();
|
|
@@ -5,6 +5,7 @@ import { fsyncExistingRegularFile } from "./cursor-durable-fs.js";
|
|
|
5
5
|
import { scrubSensitiveText } from "./cursor-sensitive-text.js";
|
|
6
6
|
import { loadCursorSdk } from "./cursor-sdk-runtime.js";
|
|
7
7
|
import { cursorSessionScopeKeyForManager } from "./cursor-session-scope.js";
|
|
8
|
+
import { claimCursorLocalAgent } from "./cursor-local-agent-ownership.js";
|
|
8
9
|
import {
|
|
9
10
|
CURSOR_SESSION_AGENT_RESUME_ENTRY_TYPE,
|
|
10
11
|
isCursorLocalAgentId,
|
|
@@ -16,9 +17,9 @@ import {
|
|
|
16
17
|
type CursorSessionAgentResumeScope,
|
|
17
18
|
} from "./cursor-session-agent-resume.js";
|
|
18
19
|
import {
|
|
19
|
-
|
|
20
|
-
getCursorSessionStoreIdentities,
|
|
20
|
+
withCursorSessionStoreIdentities,
|
|
21
21
|
openCursorSessionStore,
|
|
22
|
+
resolveCursorSessionStoreIdentity,
|
|
22
23
|
} from "./cursor-session-store.js";
|
|
23
24
|
|
|
24
25
|
export const CURSOR_SESSION_AGENT_CLEANUP_ENTRY_TYPE = "cursor-sdk-agent-cleanup";
|
|
@@ -264,7 +265,7 @@ function appendDurableCleanupEntry(
|
|
|
264
265
|
return fsyncExistingRegularFile(sessionFile);
|
|
265
266
|
}
|
|
266
267
|
|
|
267
|
-
export async function runCursorSessionAgentCleanupCommand(pi: LocalResumeCleanupApi, args: string, ctx: LocalResumeCleanupCommandContext): Promise<void> {
|
|
268
|
+
export async function runCursorSessionAgentCleanupCommand(pi: LocalResumeCleanupApi, args: string, ctx: LocalResumeCleanupCommandContext, storeRoot?: string): Promise<void> {
|
|
268
269
|
const usage = "Usage: /cursor-local-resume-cleanup [--dry-run|--yes]";
|
|
269
270
|
const tokens = args.trim().split(/\s+/).filter(Boolean);
|
|
270
271
|
const dryRun = tokens.length === 0 || (tokens.length === 1 && tokens[0] === "--dry-run");
|
|
@@ -299,7 +300,7 @@ export async function runCursorSessionAgentCleanupCommand(pi: LocalResumeCleanup
|
|
|
299
300
|
return;
|
|
300
301
|
}
|
|
301
302
|
|
|
302
|
-
if (!appendDurableCleanupEntry(pi, ctx, { action: "delete", phase: "intent", ...baseEntry })) {
|
|
303
|
+
if (!scope.sessionFile || !appendDurableCleanupEntry(pi, ctx, { action: "delete", phase: "intent", ...baseEntry })) {
|
|
303
304
|
ctx.ui.notify("Cleanup intent could not be durably recorded. No agents were deleted.", "error");
|
|
304
305
|
return;
|
|
305
306
|
}
|
|
@@ -308,31 +309,36 @@ export async function runCursorSessionAgentCleanupCommand(pi: LocalResumeCleanup
|
|
|
308
309
|
const failedAgentIds: CursorSessionAgentCleanupFailure[] = [];
|
|
309
310
|
const openedStores = new Map<string, Awaited<ReturnType<typeof openCursorSessionStore>>>();
|
|
310
311
|
try {
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
312
|
+
await withCursorSessionStoreIdentities(ctx.cwd, scope.scopeKey, storeRoot, async (identities) => {
|
|
313
|
+
const operations = await getSdkOperations();
|
|
314
|
+
for (const candidate of plan.candidates) {
|
|
315
|
+
const { agentId } = candidate;
|
|
316
|
+
try {
|
|
317
|
+
const identity = await resolveCursorSessionStoreIdentity({
|
|
318
|
+
cwd: ctx.cwd, scopeKey: scope.scopeKey,
|
|
319
|
+
identities, recordedIdentity: candidate.storeIdentity, agentId,
|
|
320
|
+
});
|
|
321
|
+
if (!identity) throw new InvalidCursorSessionStoreIdentityError("Recorded Cursor local store identity is not valid for this pi session");
|
|
322
|
+
let openedStore = openedStores.get(identity.stateRoot);
|
|
323
|
+
if (!openedStore) {
|
|
324
|
+
openedStore = await openCursorSessionStore(ctx.cwd, identity, identities.workspaceRoot, identities.storeRoot);
|
|
325
|
+
openedStores.set(identity.stateRoot, openedStore);
|
|
326
|
+
}
|
|
327
|
+
const release = claimCursorLocalAgent(identity, agentId);
|
|
328
|
+
if (!release) throw new Error("Cursor local agent is still owned by an active runtime");
|
|
329
|
+
try {
|
|
330
|
+
await operations.delete(agentId, { cwd: ctx.cwd, store: openedStore.store });
|
|
331
|
+
} finally { release(); }
|
|
332
|
+
deletedAgentIds.push(agentId);
|
|
333
|
+
} catch (error) {
|
|
334
|
+
failedAgentIds.push({
|
|
335
|
+
agentId,
|
|
336
|
+
error: scrubSensitiveText(getString(asRecord(error), "message") ?? String(error)),
|
|
337
|
+
...(error instanceof InvalidCursorSessionStoreIdentityError ? { retryable: false } : {}),
|
|
338
|
+
});
|
|
325
339
|
}
|
|
326
|
-
await operations.delete(agentId, { cwd: ctx.cwd, store: openedStore.store });
|
|
327
|
-
deletedAgentIds.push(agentId);
|
|
328
|
-
} catch (error) {
|
|
329
|
-
failedAgentIds.push({
|
|
330
|
-
agentId,
|
|
331
|
-
error: scrubSensitiveText(getString(asRecord(error), "message") ?? String(error)),
|
|
332
|
-
...(error instanceof InvalidCursorSessionStoreIdentityError ? { retryable: false } : {}),
|
|
333
|
-
});
|
|
334
340
|
}
|
|
335
|
-
}
|
|
341
|
+
});
|
|
336
342
|
} catch (error) {
|
|
337
343
|
const message = scrubSensitiveText(getString(asRecord(error), "message") ?? String(error));
|
|
338
344
|
failedAgentIds.push(...plan.candidateAgentIds.map((agentId) => ({ agentId, error: message })));
|
|
@@ -7,7 +7,7 @@ import type {
|
|
|
7
7
|
SessionStartEvent,
|
|
8
8
|
} from "@earendil-works/pi-coding-agent";
|
|
9
9
|
import { clearCursorSdkHttp1 } from "./cursor-http1.js";
|
|
10
|
-
import {
|
|
10
|
+
import { cursorRuntimeSessionScopeKeyForManager, hasLiveCursorSessions, onCursorSessionScopeKeyChange } from "./cursor-session-scope.js";
|
|
11
11
|
import {
|
|
12
12
|
disposeSessionCursorAgent,
|
|
13
13
|
invalidateSessionAgent,
|
|
@@ -25,7 +25,7 @@ export interface CursorSessionAgentLifecycleExtensionApi {
|
|
|
25
25
|
|
|
26
26
|
export function registerCursorSessionAgentLifecycle(pi: CursorSessionAgentLifecycleExtensionApi): void {
|
|
27
27
|
let scopeKey: string | undefined;
|
|
28
|
-
pi.on("session_start", (_event, ctx) => { scopeKey =
|
|
28
|
+
pi.on("session_start", (_event, ctx) => { scopeKey = cursorRuntimeSessionScopeKeyForManager(ctx.sessionManager); });
|
|
29
29
|
onCursorSessionScopeKeyChange(pi, async (previousScopeKey) => {
|
|
30
30
|
await disposeSessionCursorAgent(previousScopeKey);
|
|
31
31
|
});
|
|
@@ -29,6 +29,7 @@ interface CursorSessionAgentLineageState {
|
|
|
29
29
|
sessionId?: string;
|
|
30
30
|
sessionFile?: string;
|
|
31
31
|
scopeKey?: string;
|
|
32
|
+
runtimeScopeKey?: string;
|
|
32
33
|
cwd?: string;
|
|
33
34
|
recordedAgentIds: Set<string>;
|
|
34
35
|
}
|
|
@@ -82,7 +83,7 @@ function readRecordedAgentIds(entries: readonly SessionEntry[], sessionId: strin
|
|
|
82
83
|
export function recordCursorSessionAgentLineage(agentId: string, turnScopeKey?: string): void {
|
|
83
84
|
const sessionState = turnScopeKey === undefined
|
|
84
85
|
? state
|
|
85
|
-
: statesByScope.get(turnScopeKey) ?? (state.scopeKey === turnScopeKey ? state : undefined);
|
|
86
|
+
: statesByScope.get(turnScopeKey) ?? ((state.runtimeScopeKey ?? state.scopeKey) === turnScopeKey ? state : undefined);
|
|
86
87
|
if (!sessionState) return;
|
|
87
88
|
const { appendEntry, sessionId, sessionFile, scopeKey, cwd } = sessionState;
|
|
88
89
|
if (!appendEntry || !sessionId || !scopeKey || !cwd) return;
|
|
@@ -115,22 +116,25 @@ export function registerCursorSessionAgentLineage(pi: CursorSessionAgentLineageE
|
|
|
115
116
|
pi.on("session_start", (_event, ctx) => {
|
|
116
117
|
state = sessionState;
|
|
117
118
|
const record = sessionState;
|
|
118
|
-
if (record.
|
|
119
|
+
if (record.runtimeScopeKey && statesByScope.get(record.runtimeScopeKey) === record) statesByScope.delete(record.runtimeScopeKey);
|
|
119
120
|
record.appendEntry = pi.appendEntry;
|
|
120
121
|
record.sessionId = ctx.sessionManager.getSessionId();
|
|
121
122
|
record.sessionFile = ctx.sessionManager.getSessionFile() ?? undefined;
|
|
122
|
-
|
|
123
|
-
|
|
123
|
+
const scope = getCursorSessionScopeSnapshot(pi);
|
|
124
|
+
record.runtimeScopeKey = scope.scopeKey;
|
|
125
|
+
record.scopeKey = scope.persistentScopeKey ?? scope.scopeKey;
|
|
126
|
+
statesByScope.set(scope.scopeKey, record);
|
|
124
127
|
record.cwd = ctx.cwd;
|
|
125
128
|
record.recordedAgentIds = readRecordedAgentIds(ctx.sessionManager.getEntries(), record.sessionId);
|
|
126
129
|
});
|
|
127
130
|
pi.on("session_shutdown", () => {
|
|
128
131
|
const state = sessionState;
|
|
129
|
-
if (state.
|
|
132
|
+
if (state.runtimeScopeKey && statesByScope.get(state.runtimeScopeKey) === state) statesByScope.delete(state.runtimeScopeKey);
|
|
130
133
|
state.appendEntry = undefined;
|
|
131
134
|
state.sessionId = undefined;
|
|
132
135
|
state.sessionFile = undefined;
|
|
133
136
|
state.scopeKey = undefined;
|
|
137
|
+
state.runtimeScopeKey = undefined;
|
|
134
138
|
state.cwd = undefined;
|
|
135
139
|
state.recordedAgentIds = new Set();
|
|
136
140
|
});
|
|
@@ -142,6 +146,7 @@ function resetStateForTests(): void {
|
|
|
142
146
|
state.sessionId = undefined;
|
|
143
147
|
state.sessionFile = undefined;
|
|
144
148
|
state.scopeKey = undefined;
|
|
149
|
+
state.runtimeScopeKey = undefined;
|
|
145
150
|
state.cwd = undefined;
|
|
146
151
|
state.recordedAgentIds = new Set();
|
|
147
152
|
}
|
|
@@ -60,6 +60,7 @@ interface PendingCursorSessionAgentResumeHandle {
|
|
|
60
60
|
|
|
61
61
|
interface CursorSessionResumeState {
|
|
62
62
|
appendEntry?: ExtensionAPI["appendEntry"];
|
|
63
|
+
runtimeScopeKey?: string;
|
|
63
64
|
scopeKey: string;
|
|
64
65
|
sessionFile?: string;
|
|
65
66
|
sessionId?: string;
|
|
@@ -355,7 +356,7 @@ function restoreFromBranch(branch: readonly SessionEntry[], allEntries: readonly
|
|
|
355
356
|
|
|
356
357
|
export function getMatchingCursorSessionAgentResumeHandle(poolKey: string, scopeKey?: string): CursorSessionAgentResumeEntryData | undefined {
|
|
357
358
|
const state = getResumeState(scopeKey);
|
|
358
|
-
if (scopeKey !== undefined && state.scopeKey !== scopeKey) return undefined;
|
|
359
|
+
if (scopeKey !== undefined && (state.runtimeScopeKey ?? state.scopeKey) !== scopeKey) return undefined;
|
|
359
360
|
const handle = state.activeHandle;
|
|
360
361
|
if (!handle || !isCursorLocalAgentId(handle.agentId)) return undefined;
|
|
361
362
|
if (handle.poolKey !== poolKey) return undefined;
|
|
@@ -373,7 +374,7 @@ export function getMatchingCursorSessionAgentResumeHandle(poolKey: string, scope
|
|
|
373
374
|
|
|
374
375
|
export function persistCursorSessionAgentResumeHandle(input: PendingCursorSessionAgentResumeHandle, scopeKey?: string): void {
|
|
375
376
|
const state = getResumeState(scopeKey);
|
|
376
|
-
if (scopeKey !== undefined && state.scopeKey !== scopeKey) return;
|
|
377
|
+
if (scopeKey !== undefined && (state.runtimeScopeKey ?? state.scopeKey) !== scopeKey) return;
|
|
377
378
|
if (!isCursorLocalAgentId(input.agentId)) return;
|
|
378
379
|
state.pendingHandle = {
|
|
379
380
|
runtime: input.runtime,
|
|
@@ -427,8 +428,9 @@ interface CursorSessionAgentResumeExtensionApi {
|
|
|
427
428
|
}
|
|
428
429
|
|
|
429
430
|
export function registerCursorSessionAgentResume(pi: CursorSessionAgentResumeExtensionApi): void {
|
|
431
|
+
const scope = getCursorSessionScopeSnapshot(pi);
|
|
430
432
|
const sessionState: CursorSessionResumeState = {
|
|
431
|
-
appendEntry: pi.appendEntry, scopeKey:
|
|
433
|
+
appendEntry: pi.appendEntry, scopeKey: scope.persistentScopeKey ?? scope.scopeKey,
|
|
432
434
|
cwd: process.cwd(), branchPathHash: EMPTY_BRANCH_HASH,
|
|
433
435
|
compactionGeneration: 0, unownedUserEntryIds: new Set(),
|
|
434
436
|
};
|
|
@@ -439,9 +441,12 @@ export function registerCursorSessionAgentResume(pi: CursorSessionAgentResumeExt
|
|
|
439
441
|
restoreFromBranch(branch, entries.length > 0 ? entries : branch, state);
|
|
440
442
|
};
|
|
441
443
|
pi.on("session_start", (_event, ctx) => {
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
444
|
+
const key = state.runtimeScopeKey ?? state.scopeKey;
|
|
445
|
+
if (statesByScope.get(key) === state) statesByScope.delete(key);
|
|
446
|
+
const scope = getCursorSessionScopeSnapshot(pi);
|
|
447
|
+
state.runtimeScopeKey = scope.scopeKey;
|
|
448
|
+
state.scopeKey = scope.persistentScopeKey ?? scope.scopeKey;
|
|
449
|
+
statesByScope.set(scope.scopeKey, state);
|
|
445
450
|
lastBoundState = state;
|
|
446
451
|
state.sessionFile = ctx.sessionManager.getSessionFile?.() ?? undefined;
|
|
447
452
|
state.sessionId = ctx.sessionManager.getSessionId?.() ?? undefined;
|
|
@@ -482,7 +487,8 @@ export function registerCursorSessionAgentResume(pi: CursorSessionAgentResumeExt
|
|
|
482
487
|
state.branchPathHash = hashBranchStep(state.branchPathHash, event.compactionEntry);
|
|
483
488
|
});
|
|
484
489
|
pi.on("session_shutdown", () => {
|
|
485
|
-
|
|
490
|
+
const key = state.runtimeScopeKey ?? state.scopeKey;
|
|
491
|
+
if (statesByScope.get(key) === state) statesByScope.delete(key);
|
|
486
492
|
state.appendEntry = undefined;
|
|
487
493
|
state.pendingHandle = undefined;
|
|
488
494
|
});
|
|
@@ -496,6 +502,7 @@ function resetStateForTests(): void {
|
|
|
496
502
|
const state = lastBoundState;
|
|
497
503
|
state.appendEntry = undefined;
|
|
498
504
|
state.scopeKey = getCursorSessionScopeKey();
|
|
505
|
+
state.runtimeScopeKey = undefined;
|
|
499
506
|
state.sessionFile = undefined;
|
|
500
507
|
state.sessionId = undefined;
|
|
501
508
|
state.cwd = process.cwd();
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
-
import type { AgentModeOption, LocalAgentOptions, LocalAgentStore, ModelSelection, SDKAgent, SettingSource } from "@cursor/sdk";
|
|
2
|
+
import type { AgentModeOption, AgentOptions, LocalAgentOptions, LocalAgentStore, ModelSelection, SDKAgent, SettingSource } from "@cursor/sdk";
|
|
3
3
|
import type { Context } from "@earendil-works/pi-ai";
|
|
4
|
+
import { normalizeCursorCustomStoreRoot } from "./cursor-custom-store-path.js";
|
|
5
|
+
import { claimCursorLocalAgent } from "./cursor-local-agent-ownership.js";
|
|
4
6
|
import {
|
|
5
7
|
getRegisteredCursorPiToolBridge,
|
|
6
8
|
type CursorPiToolBridge,
|
|
@@ -8,7 +10,7 @@ import {
|
|
|
8
10
|
type CursorPiToolBridgeRun,
|
|
9
11
|
} from "./cursor-pi-tool-bridge.js";
|
|
10
12
|
import { computeCursorContextFingerprint } from "./context.js";
|
|
11
|
-
import {
|
|
13
|
+
import { getCursorSessionScopeSnapshot, getCursorSessionScopeGeneration, getCursorSessionScopeKey, type CursorTurnScope } from "./cursor-session-scope.js";
|
|
12
14
|
import {
|
|
13
15
|
getMatchingCursorSessionAgentResumeHandle,
|
|
14
16
|
persistCursorSessionAgentResumeHandle,
|
|
@@ -47,6 +49,7 @@ export interface SessionCursorAgentLease {
|
|
|
47
49
|
|
|
48
50
|
interface SessionCursorAgentPoolEntryBase {
|
|
49
51
|
poolKey: string;
|
|
52
|
+
storeRoot: string | undefined;
|
|
50
53
|
instanceId: number;
|
|
51
54
|
scopeKey: string;
|
|
52
55
|
sendState: SessionCursorAgentSendState;
|
|
@@ -66,6 +69,7 @@ interface SessionCursorAgentReadyEntry extends SessionCursorAgentPoolEntryBase {
|
|
|
66
69
|
resumeEnabled: boolean;
|
|
67
70
|
resumed: boolean;
|
|
68
71
|
resumeNotice?: string;
|
|
72
|
+
releaseAgentClaim: () => void;
|
|
69
73
|
}
|
|
70
74
|
|
|
71
75
|
interface SessionCursorAgentBusyEntry extends SessionCursorAgentPoolEntryBase {
|
|
@@ -76,6 +80,7 @@ interface SessionCursorAgentBusyEntry extends SessionCursorAgentPoolEntryBase {
|
|
|
76
80
|
resumeEnabled: boolean;
|
|
77
81
|
resumed: boolean;
|
|
78
82
|
resumeNotice?: string;
|
|
83
|
+
releaseAgentClaim: () => void;
|
|
79
84
|
completionSettled: Promise<void>;
|
|
80
85
|
pendingCompletion: Promise<void>;
|
|
81
86
|
releaseBusyWait: () => void;
|
|
@@ -113,10 +118,14 @@ function assertScopeAcceptsAcquire(scopeKey: string): void {
|
|
|
113
118
|
terminalDisposedScopeGenerations.delete(scopeKey);
|
|
114
119
|
}
|
|
115
120
|
|
|
116
|
-
function
|
|
121
|
+
function samePoolIdentity(entry: SessionCursorAgentPoolEntryBase, poolKey: string, capturedStoreRoot: string | undefined): boolean {
|
|
122
|
+
return entry.poolKey === poolKey && entry.storeRoot === capturedStoreRoot;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
function rethrowSupersededWhenReplacedByDifferentPoolIdentity(scopeKey: string, poolKey: string, storeRoot: string | undefined, error: unknown): void {
|
|
117
126
|
if (!(error instanceof SessionCursorAgentCreationSupersededError)) return;
|
|
118
127
|
const replacement = sessionAgentsByScope.get(scopeKey);
|
|
119
|
-
if (replacement && replacement
|
|
128
|
+
if (replacement && !samePoolIdentity(replacement, poolKey, storeRoot)) {
|
|
120
129
|
throw error;
|
|
121
130
|
}
|
|
122
131
|
}
|
|
@@ -130,10 +139,12 @@ interface SessionCursorAgentCreateParams {
|
|
|
130
139
|
modelSelection: ModelSelection;
|
|
131
140
|
settingSources?: SettingSource[];
|
|
132
141
|
localSafety?: CursorLocalSafetyOptions;
|
|
142
|
+
agents?: AgentOptions["agents"];
|
|
133
143
|
useHttp1ForAgent?: boolean;
|
|
134
144
|
onBridgeToolRequest?: (request: CursorPiBridgeToolRequest) => void;
|
|
135
145
|
debugRecorder?: CursorSdkEventDebugRecorder;
|
|
136
146
|
localResume?: boolean;
|
|
147
|
+
storeRoot?: string;
|
|
137
148
|
forceCreate?: boolean;
|
|
138
149
|
createAgent?: CursorSdkModule["Agent"]["create"];
|
|
139
150
|
resumeAgent?: CursorSdkModule["Agent"]["resume"];
|
|
@@ -213,9 +224,24 @@ function buildBridgePoolKeySuffix(registeredBridge: CursorPiToolBridge | undefin
|
|
|
213
224
|
return registeredBridge.getToolSurfaceSignature();
|
|
214
225
|
}
|
|
215
226
|
|
|
227
|
+
function buildCustomSubagentPoolKeySuffix(agents: AgentOptions["agents"]): string[] {
|
|
228
|
+
const definitions = Object.entries(agents ?? {}).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0);
|
|
229
|
+
if (!definitions.length) return [];
|
|
230
|
+
const content = definitions.map(([name, entry]) => [
|
|
231
|
+
name, entry.description, entry.prompt,
|
|
232
|
+
entry.model === undefined ? null : entry.model === "inherit" ? "inherit" : {
|
|
233
|
+
id: entry.model.id,
|
|
234
|
+
params: [...(entry.model.params ?? [])].sort((a, b) =>
|
|
235
|
+
a.id < b.id ? -1 : a.id > b.id ? 1 : a.value < b.value ? -1 : a.value > b.value ? 1 : 0)
|
|
236
|
+
.map(({ id, value }) => ({ id, value })),
|
|
237
|
+
},
|
|
238
|
+
]);
|
|
239
|
+
return [`subagents:${createHash("sha256").update(JSON.stringify(content)).digest("hex")}`];
|
|
240
|
+
}
|
|
241
|
+
|
|
216
242
|
function buildSessionAgentPoolKey(scopeKey: string, params: SessionCursorAgentCreateParams): string {
|
|
217
243
|
return [
|
|
218
|
-
scopeKey,
|
|
244
|
+
params.scope?.persistentScopeKey ?? scopeKey,
|
|
219
245
|
params.cwd,
|
|
220
246
|
buildModelPoolKey(params.modelSelection),
|
|
221
247
|
buildSettingSourcesPoolKey(params.settingSources),
|
|
@@ -227,6 +253,7 @@ function buildSessionAgentPoolKey(scopeKey: string, params: SessionCursorAgentCr
|
|
|
227
253
|
: "http1:off",
|
|
228
254
|
buildApiKeyPoolKeyFingerprint(params.apiKey),
|
|
229
255
|
buildBridgePoolKeySuffix("bridge" in params ? params.bridge : getRegisteredCursorPiToolBridge()),
|
|
256
|
+
...buildCustomSubagentPoolKeySuffix(params.agents),
|
|
230
257
|
].join("\0");
|
|
231
258
|
}
|
|
232
259
|
|
|
@@ -238,8 +265,9 @@ async function disposePoolEntry(entry: SessionCursorAgentPoolEntry, options?: {
|
|
|
238
265
|
} catch {
|
|
239
266
|
// disposal failure should not block session replacement
|
|
240
267
|
}
|
|
268
|
+
let disposal: Promise<unknown> | undefined;
|
|
241
269
|
try {
|
|
242
|
-
|
|
270
|
+
disposal = Promise.resolve(entry.agent[Symbol.asyncDispose]());
|
|
243
271
|
// A dead local transport may never settle SDK disposal; bound the wait so the
|
|
244
272
|
// next acquire recreates instead of hanging on the dead agent.
|
|
245
273
|
await (options?.deadTransport
|
|
@@ -252,6 +280,8 @@ async function disposePoolEntry(entry: SessionCursorAgentPoolEntry, options?: {
|
|
|
252
280
|
// disposal failure should not block session replacement
|
|
253
281
|
}
|
|
254
282
|
await entry.sessionStore.dispose().catch(() => undefined);
|
|
283
|
+
// Timeout/rejection is not proof of closure; only successful SDK disposal releases ownership.
|
|
284
|
+
void disposal?.then(entry.releaseAgentClaim, () => {});
|
|
255
285
|
}
|
|
256
286
|
|
|
257
287
|
async function disposePoolEntryForScope(scopeKey: string, options?: { terminal?: boolean }): Promise<void> {
|
|
@@ -410,10 +440,10 @@ function leaseFromEntry(
|
|
|
410
440
|
};
|
|
411
441
|
}
|
|
412
442
|
|
|
413
|
-
function getCurrentReadyPoolEntry(scopeKey: string, poolKey: string): SessionCursorAgentReadyEntry | undefined {
|
|
443
|
+
function getCurrentReadyPoolEntry(scopeKey: string, poolKey: string, storeRoot: string | undefined): SessionCursorAgentReadyEntry | undefined {
|
|
414
444
|
const current = sessionAgentsByScope.get(scopeKey);
|
|
415
445
|
if (current?.status !== "ready") return undefined;
|
|
416
|
-
if (current
|
|
446
|
+
if (!samePoolIdentity(current, poolKey, storeRoot)) return undefined;
|
|
417
447
|
return current;
|
|
418
448
|
}
|
|
419
449
|
|
|
@@ -432,7 +462,7 @@ async function tryLeaseReadyEntry(
|
|
|
432
462
|
await disposePoolEntryForScope(scopeKey);
|
|
433
463
|
return undefined;
|
|
434
464
|
}
|
|
435
|
-
const readyEntry = getCurrentReadyPoolEntry(scopeKey, poolKey);
|
|
465
|
+
const readyEntry = getCurrentReadyPoolEntry(scopeKey, poolKey, params.storeRoot);
|
|
436
466
|
if (!readyEntry) return undefined;
|
|
437
467
|
return leaseFromEntry(readyEntry, scopeKey, params, created);
|
|
438
468
|
}
|
|
@@ -446,6 +476,7 @@ async function createSessionAgentEntry(
|
|
|
446
476
|
): Promise<SessionCursorAgentReadyEntry> {
|
|
447
477
|
let bridgeRun: CursorPiToolBridgeRun | undefined;
|
|
448
478
|
let sessionStore: OpenCursorSessionStore | undefined;
|
|
479
|
+
let releaseAgentClaim: (() => void) | undefined;
|
|
449
480
|
try {
|
|
450
481
|
const registeredBridge = params.bridge;
|
|
451
482
|
if (registeredBridge) {
|
|
@@ -471,13 +502,12 @@ async function createSessionAgentEntry(
|
|
|
471
502
|
const resumeHandle = resumeEligible ? getMatchingCursorSessionAgentResumeHandle(resolvedPoolKey, scopeKey) : undefined;
|
|
472
503
|
const storeSelection = await openCursorSessionStoreForScope({
|
|
473
504
|
cwd: params.cwd,
|
|
474
|
-
scopeKey,
|
|
505
|
+
scopeKey: params.scope?.persistentScopeKey ?? scopeKey,
|
|
475
506
|
persistent: persistentStore,
|
|
476
|
-
|
|
477
|
-
|
|
507
|
+
storeRoot: params.storeRoot,
|
|
508
|
+
resume: resumeHandle ? { identity: resumeHandle.storeIdentity, agentId: resumeHandle.agentId } : undefined,
|
|
478
509
|
});
|
|
479
510
|
sessionStore = storeSelection.sessionStore;
|
|
480
|
-
const { identities } = storeSelection;
|
|
481
511
|
const resumeAttemptAllowed = storeSelection.resumeAttemptAllowed;
|
|
482
512
|
let resumeNotice = storeSelection.resumeFallback ? LOCAL_RESUME_FALLBACK_NOTICE : undefined;
|
|
483
513
|
const buildAgentOptions = () => ({
|
|
@@ -491,30 +521,41 @@ async function createSessionAgentEntry(
|
|
|
491
521
|
store: sessionStore!.store,
|
|
492
522
|
}),
|
|
493
523
|
...(bridgeRun?.mcpServers ? { mcpServers: bridgeRun.mcpServers } : {}),
|
|
524
|
+
...(params.agents && Object.keys(params.agents).length ? { agents: params.agents } : {}),
|
|
494
525
|
});
|
|
495
526
|
let agent: SDKAgent | undefined;
|
|
496
527
|
let effectiveSendState = sendState;
|
|
497
528
|
let resumed = false;
|
|
498
529
|
if (resumeHandle && resumeAttemptAllowed && resumeAgent) {
|
|
530
|
+
releaseAgentClaim = claimCursorLocalAgent(sessionStore.identity, resumeHandle.agentId);
|
|
531
|
+
}
|
|
532
|
+
if (resumeHandle && resumeAttemptAllowed && resumeAgent && releaseAgentClaim) {
|
|
499
533
|
try {
|
|
500
534
|
agent = await resumeAgent(resumeHandle.agentId, buildAgentOptions());
|
|
501
535
|
effectiveSendState = { ...resumeHandle.sendState };
|
|
502
536
|
resumed = true;
|
|
503
537
|
} catch {
|
|
538
|
+
releaseAgentClaim();
|
|
539
|
+
releaseAgentClaim = undefined;
|
|
504
540
|
if (persistentStore) resumeNotice = LOCAL_RESUME_FALLBACK_NOTICE;
|
|
505
|
-
if (!cursorSessionStoreIdentitiesEqual(sessionStore.identity, identities.sessionStore)) {
|
|
541
|
+
if (storeSelection.persistent && !cursorSessionStoreIdentitiesEqual(sessionStore.identity, storeSelection.identities.sessionStore)) {
|
|
542
|
+
const { identities } = storeSelection;
|
|
543
|
+
const replacement = await openCursorSessionStore(params.cwd, identities.sessionStore, identities.workspaceRoot, identities.storeRoot);
|
|
506
544
|
await sessionStore.dispose().catch(() => undefined);
|
|
507
|
-
sessionStore =
|
|
545
|
+
sessionStore = replacement;
|
|
508
546
|
}
|
|
509
547
|
}
|
|
510
548
|
}
|
|
511
549
|
agent ??= await createAgent(buildAgentOptions());
|
|
512
550
|
if (!agent) throw new Error("Cursor SDK agent creation returned no agent");
|
|
513
551
|
if (!sessionStore) throw new Error("Cursor SDK session store was not opened");
|
|
552
|
+
releaseAgentClaim ??= claimCursorLocalAgent(sessionStore.identity, agent.agentId);
|
|
553
|
+
if (!releaseAgentClaim) throw new Error("Cursor SDK agent is already owned by another runtime");
|
|
514
554
|
|
|
515
555
|
return {
|
|
516
556
|
status: "ready",
|
|
517
557
|
poolKey: resolvedPoolKey,
|
|
558
|
+
storeRoot: params.storeRoot,
|
|
518
559
|
instanceId,
|
|
519
560
|
scopeKey,
|
|
520
561
|
agent,
|
|
@@ -523,12 +564,14 @@ async function createSessionAgentEntry(
|
|
|
523
564
|
sendState: effectiveSendState,
|
|
524
565
|
resumeEnabled: params.localResume === true,
|
|
525
566
|
resumed,
|
|
567
|
+
releaseAgentClaim,
|
|
526
568
|
...(resumeNotice ? { resumeNotice } : {}),
|
|
527
569
|
};
|
|
528
570
|
} catch (error) {
|
|
529
571
|
bridgeRun?.cancel("Cursor session agent create failed");
|
|
530
572
|
await bridgeRun?.dispose().catch(() => undefined);
|
|
531
573
|
await sessionStore?.dispose().catch(() => undefined);
|
|
574
|
+
releaseAgentClaim?.();
|
|
532
575
|
throw error;
|
|
533
576
|
}
|
|
534
577
|
}
|
|
@@ -549,9 +592,10 @@ export function invalidateSessionAgent(
|
|
|
549
592
|
}
|
|
550
593
|
|
|
551
594
|
export async function acquireSessionCursorAgent(input: SessionCursorAgentCreateParams): Promise<SessionCursorAgentLease> {
|
|
552
|
-
const params = { ...input, bridge: "bridge" in input ? input.bridge : getRegisteredCursorPiToolBridge() };
|
|
553
|
-
const scopeKey = params.scope
|
|
554
|
-
const persistentStore =
|
|
595
|
+
const params = { ...input, scope: input.scope ?? getCursorSessionScopeSnapshot(), bridge: "bridge" in input ? input.bridge : getRegisteredCursorPiToolBridge() };
|
|
596
|
+
const scopeKey = params.scope.scopeKey;
|
|
597
|
+
const persistentStore = params.scope.sessionFile !== undefined;
|
|
598
|
+
params.storeRoot = persistentStore && params.storeRoot !== undefined ? normalizeCursorCustomStoreRoot(params.storeRoot) : undefined;
|
|
555
599
|
|
|
556
600
|
while (true) {
|
|
557
601
|
assertScopeAcceptsAcquire(scopeKey);
|
|
@@ -562,7 +606,7 @@ export async function acquireSessionCursorAgent(input: SessionCursorAgentCreateP
|
|
|
562
606
|
const poolKey = buildSessionAgentPoolKey(scopeKey, params);
|
|
563
607
|
const state = getSessionCursorAgentPoolState(scopeKey);
|
|
564
608
|
|
|
565
|
-
if ((state.status === "ready" || state.status === "busy") && state
|
|
609
|
+
if ((state.status === "ready" || state.status === "busy") && !samePoolIdentity(state, poolKey, params.storeRoot)) {
|
|
566
610
|
await disposePoolEntryForScope(scopeKey);
|
|
567
611
|
continue;
|
|
568
612
|
}
|
|
@@ -579,7 +623,7 @@ export async function acquireSessionCursorAgent(input: SessionCursorAgentCreateP
|
|
|
579
623
|
}
|
|
580
624
|
|
|
581
625
|
if (state.status === "creating") {
|
|
582
|
-
if (state
|
|
626
|
+
if (!samePoolIdentity(state, poolKey, params.storeRoot)) {
|
|
583
627
|
await disposePoolEntryForScope(scopeKey);
|
|
584
628
|
continue;
|
|
585
629
|
}
|
|
@@ -588,7 +632,7 @@ export async function acquireSessionCursorAgent(input: SessionCursorAgentCreateP
|
|
|
588
632
|
} catch (error) {
|
|
589
633
|
if (error instanceof SessionCursorAgentCreationSupersededError) {
|
|
590
634
|
assertScopeAcceptsAcquire(scopeKey);
|
|
591
|
-
|
|
635
|
+
rethrowSupersededWhenReplacedByDifferentPoolIdentity(scopeKey, poolKey, params.storeRoot, error);
|
|
592
636
|
continue;
|
|
593
637
|
}
|
|
594
638
|
throw error;
|
|
@@ -618,6 +662,7 @@ export async function acquireSessionCursorAgent(input: SessionCursorAgentCreateP
|
|
|
618
662
|
placeholder = {
|
|
619
663
|
status: "creating",
|
|
620
664
|
poolKey,
|
|
665
|
+
storeRoot: params.storeRoot,
|
|
621
666
|
instanceId,
|
|
622
667
|
scopeKey,
|
|
623
668
|
sendState,
|
|
@@ -637,7 +682,7 @@ export async function acquireSessionCursorAgent(input: SessionCursorAgentCreateP
|
|
|
637
682
|
}
|
|
638
683
|
if (error instanceof SessionCursorAgentCreationSupersededError) {
|
|
639
684
|
assertScopeAcceptsAcquire(scopeKey);
|
|
640
|
-
|
|
685
|
+
rethrowSupersededWhenReplacedByDifferentPoolIdentity(scopeKey, poolKey, params.storeRoot, error);
|
|
641
686
|
continue;
|
|
642
687
|
}
|
|
643
688
|
throw error;
|
|
@@ -680,8 +725,6 @@ export const __testUtils = {
|
|
|
680
725
|
resetSessionCursorAgent,
|
|
681
726
|
refreshSessionCursorAgentConfig,
|
|
682
727
|
disposeAllSessionCursorAgents,
|
|
683
|
-
buildApiKeyPoolKeyFingerprint,
|
|
684
|
-
buildSessionAgentPoolKey,
|
|
685
728
|
setDeadTransportAgentDisposeTimeoutMs(ms: number): number {
|
|
686
729
|
const previous = deadTransportAgentDisposeTimeoutMs;
|
|
687
730
|
deadTransportAgentDisposeTimeoutMs = ms;
|