feat: handle client disconnects (#814)

This commit is contained in:
Jeremy 2025-02-19 19:09:03 -06:00 committed by GitHub
parent 27ff566258
commit ef7eb9dd5f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 48 additions and 20 deletions

View file

@ -116,6 +116,8 @@ export async function POST(request: Request) {
}, },
}); });
result.consumeStream();
result.mergeIntoDataStream(dataStream, { result.mergeIntoDataStream(dataStream, {
sendReasoning: true, sendReasoning: true,
}); });

View file

@ -38,7 +38,7 @@
"@vercel/analytics": "^1.3.1", "@vercel/analytics": "^1.3.1",
"@vercel/blob": "^0.24.1", "@vercel/blob": "^0.24.1",
"@vercel/postgres": "^0.10.0", "@vercel/postgres": "^0.10.0",
"ai": "4.1.17", "ai": "4.1.44",
"bcrypt-ts": "^5.0.2", "bcrypt-ts": "^5.0.2",
"class-variance-authority": "^0.7.0", "class-variance-authority": "^0.7.0",
"classnames": "^2.5.1", "classnames": "^2.5.1",

64
pnpm-lock.yaml generated
View file

@ -69,8 +69,8 @@ importers:
specifier: ^0.10.0 specifier: ^0.10.0
version: 0.10.0 version: 0.10.0
ai: ai:
specifier: 4.1.17 specifier: 4.1.44
version: 4.1.17(react@19.0.0-rc-45804af1-20241021)(zod@3.23.8) version: 4.1.44(react@19.0.0-rc-45804af1-20241021)(zod@3.23.8)
bcrypt-ts: bcrypt-ts:
specifier: ^5.0.2 specifier: ^5.0.2
version: 5.0.2 version: 5.0.2
@ -279,12 +279,25 @@ packages:
zod: zod:
optional: true optional: true
'@ai-sdk/provider-utils@2.1.9':
resolution: {integrity: sha512-NerKjTuuUUs6glJGaentaXEBH52jRM0pR+cRCzc7aWke/K5jYBD6Frv1JYBpcxS7gnnCqSQZR9woiyS+6jrdjw==}
engines: {node: '>=18'}
peerDependencies:
zod: ^3.0.0
peerDependenciesMeta:
zod:
optional: true
'@ai-sdk/provider@1.0.7': '@ai-sdk/provider@1.0.7':
resolution: {integrity: sha512-q1PJEZ0qD9rVR+8JFEd01/QM++csMT5UVwYXSN2u54BrVw/D8TZLTeg2FEfKK00DgAx0UtWd8XOhhwITP9BT5g==} resolution: {integrity: sha512-q1PJEZ0qD9rVR+8JFEd01/QM++csMT5UVwYXSN2u54BrVw/D8TZLTeg2FEfKK00DgAx0UtWd8XOhhwITP9BT5g==}
engines: {node: '>=18'} engines: {node: '>=18'}
'@ai-sdk/react@1.1.8': '@ai-sdk/provider@1.0.8':
resolution: {integrity: sha512-buHm7hP21xEOksnRQtJX9fKbi7cAUwanEBa5niddTDibCDKd+kIXP2vaJGy8+heB3rff+XSW3BWlA8pscK+n1g==} resolution: {integrity: sha512-f9jSYwKMdXvm44Dmab1vUBnfCDSFfI5rOtvV1W9oKB7WYHR5dGvCC6x68Mk3NUfrdmNoMVHGoh6JT9HCVMlMow==}
engines: {node: '>=18'}
'@ai-sdk/react@1.1.17':
resolution: {integrity: sha512-NAuEflFvjw1uh1AOmpyi7rBF4xasWsiWUb86JQ8ScjDGxoGDYEdBnaHOxUpooLna0dGNbSPkvDMnVRhoLKoxPQ==}
engines: {node: '>=18'} engines: {node: '>=18'}
peerDependencies: peerDependencies:
react: ^18 || ^19 || ^19.0.0-rc react: ^18 || ^19 || ^19.0.0-rc
@ -295,8 +308,8 @@ packages:
zod: zod:
optional: true optional: true
'@ai-sdk/ui-utils@1.1.8': '@ai-sdk/ui-utils@1.1.15':
resolution: {integrity: sha512-nbok53K1EalO2sZjBLFB33cqs+8SxiL6pe7ekZ7+5f2MJTwdvpShl6d9U4O8fO3DnZ9pYLzaVC0XNMxnJt030Q==} resolution: {integrity: sha512-NsV/3CMmjc4m53snzRdtZM6teTQUXIKi8u0Kf7GBruSzaMSuZ4DWaAAlUshhR3p2FpZgtsogW+vYG1/rXsGu+Q==}
engines: {node: '>=18'} engines: {node: '>=18'}
peerDependencies: peerDependencies:
zod: ^3.0.0 zod: ^3.0.0
@ -1640,8 +1653,8 @@ packages:
engines: {node: '>=0.4.0'} engines: {node: '>=0.4.0'}
hasBin: true hasBin: true
ai@4.1.17: ai@4.1.44:
resolution: {integrity: sha512-5SW15tXDuxE/wlEOjRKxLxTOUIGD4C9bIee+FCFvXHTTAZhHiQjViC2s7RtMUW+hbFtGya302jUHY1Pe8A/YuQ==} resolution: {integrity: sha512-2THAHlSdZkRemTu7XinH5wckO3QprrniKg31fczgg4RKvsow0OztsLalwcIGoo69S0WN4BErNKkBisT+wXREZg==}
engines: {node: '>=18'} engines: {node: '>=18'}
peerDependencies: peerDependencies:
react: ^18 || ^19 || ^19.0.0-rc react: ^18 || ^19 || ^19.0.0-rc
@ -3802,24 +3815,37 @@ snapshots:
optionalDependencies: optionalDependencies:
zod: 3.23.8 zod: 3.23.8
'@ai-sdk/provider-utils@2.1.9(zod@3.23.8)':
dependencies:
'@ai-sdk/provider': 1.0.8
eventsource-parser: 3.0.0
nanoid: 3.3.8
secure-json-parse: 2.7.0
optionalDependencies:
zod: 3.23.8
'@ai-sdk/provider@1.0.7': '@ai-sdk/provider@1.0.7':
dependencies: dependencies:
json-schema: 0.4.0 json-schema: 0.4.0
'@ai-sdk/react@1.1.8(react@19.0.0-rc-45804af1-20241021)(zod@3.23.8)': '@ai-sdk/provider@1.0.8':
dependencies: dependencies:
'@ai-sdk/provider-utils': 2.1.6(zod@3.23.8) json-schema: 0.4.0
'@ai-sdk/ui-utils': 1.1.8(zod@3.23.8)
'@ai-sdk/react@1.1.17(react@19.0.0-rc-45804af1-20241021)(zod@3.23.8)':
dependencies:
'@ai-sdk/provider-utils': 2.1.9(zod@3.23.8)
'@ai-sdk/ui-utils': 1.1.15(zod@3.23.8)
swr: 2.2.5(react@19.0.0-rc-45804af1-20241021) swr: 2.2.5(react@19.0.0-rc-45804af1-20241021)
throttleit: 2.1.0 throttleit: 2.1.0
optionalDependencies: optionalDependencies:
react: 19.0.0-rc-45804af1-20241021 react: 19.0.0-rc-45804af1-20241021
zod: 3.23.8 zod: 3.23.8
'@ai-sdk/ui-utils@1.1.8(zod@3.23.8)': '@ai-sdk/ui-utils@1.1.15(zod@3.23.8)':
dependencies: dependencies:
'@ai-sdk/provider': 1.0.7 '@ai-sdk/provider': 1.0.8
'@ai-sdk/provider-utils': 2.1.6(zod@3.23.8) '@ai-sdk/provider-utils': 2.1.9(zod@3.23.8)
zod-to-json-schema: 3.24.1(zod@3.23.8) zod-to-json-schema: 3.24.1(zod@3.23.8)
optionalDependencies: optionalDependencies:
zod: 3.23.8 zod: 3.23.8
@ -4923,12 +4949,12 @@ snapshots:
acorn@8.14.0: {} acorn@8.14.0: {}
ai@4.1.17(react@19.0.0-rc-45804af1-20241021)(zod@3.23.8): ai@4.1.44(react@19.0.0-rc-45804af1-20241021)(zod@3.23.8):
dependencies: dependencies:
'@ai-sdk/provider': 1.0.7 '@ai-sdk/provider': 1.0.8
'@ai-sdk/provider-utils': 2.1.6(zod@3.23.8) '@ai-sdk/provider-utils': 2.1.9(zod@3.23.8)
'@ai-sdk/react': 1.1.8(react@19.0.0-rc-45804af1-20241021)(zod@3.23.8) '@ai-sdk/react': 1.1.17(react@19.0.0-rc-45804af1-20241021)(zod@3.23.8)
'@ai-sdk/ui-utils': 1.1.8(zod@3.23.8) '@ai-sdk/ui-utils': 1.1.15(zod@3.23.8)
'@opentelemetry/api': 1.9.0 '@opentelemetry/api': 1.9.0
jsondiffpatch: 0.6.0 jsondiffpatch: 0.6.0
optionalDependencies: optionalDependencies: