From 4ee81c2a4c64df3bdd213ccdc2d7ca317c59f401 Mon Sep 17 00:00:00 2001 From: josh <144584931+dancer@users.noreply.github.com> Date: Wed, 2 Jul 2025 11:46:56 +0100 Subject: [PATCH 001/290] pkg(prettier): fixed version (#6982) ## background updated prettier version because team inconsistencies in code formatting due different prettier versions ## summary - fix prettier and prettier-plugin-svelte to specific versions (3.5.3 and 3.2.7) ## tasks - [x] update prettier from ^3.3.3 to 3.5.3 - [x] update prettier-plugin-svelte from ^3.3.3 to 3.2.7 --- package.json | 2 +- pnpm-lock.yaml | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index bef8a9b27d92..ec8bc57a8110 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "lint-staged": "15.2.10", "next": "15.0.0-canary.23", "playwright": "^1.44.1", - "prettier": "^3.3.3", + "prettier": "3.5.3", "prettier-plugin-svelte": "^3.3.3", "publint": "0.2.12", "react": "19.0.0-rc-cc1ec60d0d-20240607", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 97caf873f146..eae5eb8ad8a9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -33,11 +33,11 @@ importers: specifier: ^1.44.1 version: 1.46.0 prettier: - specifier: ^3.3.3 + specifier: 3.5.3 version: 3.5.3 prettier-plugin-svelte: specifier: ^3.3.3 - version: 3.3.3(prettier@3.5.3)(svelte@5.32.1) + version: 3.4.0(prettier@3.5.3)(svelte@5.32.1) publint: specifier: 0.2.12 version: 0.2.12 @@ -13124,8 +13124,8 @@ packages: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} - prettier-plugin-svelte@3.3.3: - resolution: {integrity: sha512-yViK9zqQ+H2qZD1w/bH7W8i+bVfKrD8GIFjkFe4Thl6kCT9SlAsXVNmt3jCvQOCsnOhcvYgsoVlRV/Eu6x5nNw==} + prettier-plugin-svelte@3.4.0: + resolution: {integrity: sha512-pn1ra/0mPObzqoIQn/vUTR3ZZI6UuZ0sHqMK5x2jMLGrs53h0sXhkVuDcrlssHwIMk7FYrMjHBPoUSyyEEDlBQ==} peerDependencies: prettier: ^3.0.0 svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 @@ -24033,7 +24033,7 @@ snapshots: eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.57.1))(eslint@8.57.1) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.1) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) eslint-plugin-jsx-a11y: 6.9.0(eslint@8.57.1) eslint-plugin-react: 7.35.0(eslint@8.57.1) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1) @@ -24121,8 +24121,8 @@ snapshots: debug: 4.4.0(supports-color@9.4.0) enhanced-resolve: 5.17.1 eslint: 8.57.1 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.1) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.1) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) fast-glob: 3.3.2 get-tsconfig: 4.7.2 is-core-module: 2.13.1 @@ -24172,7 +24172,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.0(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.1): + eslint-module-utils@2.8.0(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: @@ -24216,7 +24216,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.1): + eslint-module-utils@2.8.1(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: @@ -24292,7 +24292,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.1): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): dependencies: array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 @@ -24302,7 +24302,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.1) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.15.0 is-glob: 4.0.3 @@ -28722,7 +28722,7 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier-plugin-svelte@3.3.3(prettier@3.5.3)(svelte@5.32.1): + prettier-plugin-svelte@3.4.0(prettier@3.5.3)(svelte@5.32.1): dependencies: prettier: 3.5.3 svelte: 5.32.1 From f04ffe45091c681a63ec0b8f710002d780beb6da Mon Sep 17 00:00:00 2001 From: Lars Grammel Date: Wed, 2 Jul 2025 13:50:14 +0200 Subject: [PATCH 002/290] feat (ui): add onData callback to Chat (#6984) ## Background Reacting to data parts as they become available is important for data parts that are not message related, e.g. events (which can be send as data parts). ## Summary Add `onData` callback to `Chat`. ## Verification Tested manually with `next-openai`` data parts example. ## Future Work * introduce ephemeral data parts --- .changeset/ninety-seahorses-fetch.md | 5 ++++ .../app/use-chat-data-ui-parts/page.tsx | 9 ++++-- packages/ai/src/ui/chat.ts | 12 ++++++++ .../src/ui/process-ui-message-stream.test.ts | 20 ++++++++++++- .../ai/src/ui/process-ui-message-stream.ts | 28 +++++++++++++------ 5 files changed, 62 insertions(+), 12 deletions(-) create mode 100644 .changeset/ninety-seahorses-fetch.md diff --git a/.changeset/ninety-seahorses-fetch.md b/.changeset/ninety-seahorses-fetch.md new file mode 100644 index 000000000000..2661361d3659 --- /dev/null +++ b/.changeset/ninety-seahorses-fetch.md @@ -0,0 +1,5 @@ +--- +'ai': patch +--- + +feat (ui): add onData callback to Chat diff --git a/examples/next-openai/app/use-chat-data-ui-parts/page.tsx b/examples/next-openai/app/use-chat-data-ui-parts/page.tsx index 8d15726e3d7f..4b6dc8531f40 100644 --- a/examples/next-openai/app/use-chat-data-ui-parts/page.tsx +++ b/examples/next-openai/app/use-chat-data-ui-parts/page.tsx @@ -21,10 +21,13 @@ export default function Chat() { transport: new DefaultChatTransport({ api: '/api/use-chat-data-ui-parts', }), + onData: dataPart => { + console.log('dataPart', JSON.stringify(dataPart, null, 2)); + }, }); return ( -
+
{messages.map(message => (
{message.role === 'user' ? 'User: ' : 'AI: '}{' '} @@ -70,7 +73,7 @@ export default function Chat() { {status === 'submitted' &&
Loading...
}