mirror of
https://github.com/CopilotKit/CopilotKit.git
synced 2026-09-14 16:26:20 +08:00
4b11b995a2
## Summary
Adds full multimodal attachment support to CopilotKit's v2 chat
components. Users can send images, audio, video, and documents alongside
text messages to any AG-UI-compatible agent.
### Frontend
- **`attachments` prop** on `CopilotChat` — `{ enabled, accept, maxSize,
onUpload, onUploadFailed }`
- **`useAttachments` hook** — reusable, referentially stable hook for
custom chat UIs (all callbacks memoized, zero unnecessary re-renders)
- **Attachment queue** with lightbox previews (View Transition API),
video player, PDF/text document viewer
- **Drag-and-drop**, **clipboard paste**, and **file picker** upload
flows
- **Drop zone overlay** with visual indicator
- **Filename preservation** via `InputContent` metadata
- **`onUploadFailed` callback** with typed error reasons
(`file-too-large`, `invalid-type`, `upload-failed`)
- **`AttachmentUploadResult` discriminated union** for type-safe
`onUpload` returns
- Memoized attachment renderer components (v1 and v2)
### Backend
- `BuiltInAgent` properly converts multimodal `InputContent[]` to Vercel
AI SDK format
- Handles image, audio, video, document, and legacy binary content parts
### Deprecation lifecycle
- `@deprecated` JSDoc on all legacy image upload APIs (9 symbols) with
`@since 1.56.0`
- **Codemod** at `codemods/migrate-attachments.ts` — transforms props +
imports (18 tests)
- Migration guide moved to new **Migration Guides** docs section
### Docs
- New guide: `docs/(root)/multimodal-attachments.mdx`
- Updated migration guide with codemod instructions, new `onUpload`
type, metadata
- Cross-links from prebuilt-components page
- New **Migration Guides** section (moved from troubleshooting)
### AG-UI
- Bumped `@ag-ui/client`, `@ag-ui/core`, `@ag-ui/encoder`,
`@ag-ui/proto` to 0.0.51
### Example
- React Router example with dual agent setup (BuiltInAgent + TanStack
AI)
- Multimodal content properly forwarded to TanStack AI `chat()`
## Test plan
- [x] `useAttachments` hook stability tests — 9 tests (referential
stability, re-render counting, state defaults)
- [x] `CopilotChat.attachments` tests — 5 tests (onUploadFailed for
invalid-type, file-too-large, upload-failed, multiple rejections, valid
files)
- [x] Codemod tests — 18 tests (prop transforms, import renames,
idempotency, edge cases)
- [x] Full react-core suite — 966 tests passing
- [x] Tool call streaming tests pass (messagesMemoKey fingerprint fix)
78 lines
1.8 KiB
JSON
78 lines
1.8 KiB
JSON
{
|
|
"name": "@copilotkit/shared",
|
|
"version": "1.55.0-next.8",
|
|
"private": false,
|
|
"keywords": [
|
|
"ai",
|
|
"assistant",
|
|
"automation",
|
|
"copilot",
|
|
"copilotkit",
|
|
"javascript",
|
|
"nextjs",
|
|
"nodejs",
|
|
"react",
|
|
"textarea"
|
|
],
|
|
"homepage": "https://github.com/CopilotKit/CopilotKit",
|
|
"license": "MIT",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://github.com/CopilotKit/CopilotKit.git"
|
|
},
|
|
"type": "module",
|
|
"sideEffects": false,
|
|
"main": "./dist/index.cjs",
|
|
"module": "./dist/index.mjs",
|
|
"types": "./dist/index.d.cts",
|
|
"unpkg": "./dist/index.umd.js",
|
|
"jsdelivr": "./dist/index.umd.js",
|
|
"exports": {
|
|
".": {
|
|
"import": "./dist/index.mjs",
|
|
"require": "./dist/index.cjs"
|
|
},
|
|
"./package.json": "./package.json"
|
|
},
|
|
"publishConfig": {
|
|
"access": "public"
|
|
},
|
|
"scripts": {
|
|
"build": "tsdown",
|
|
"dev": "tsdown --watch",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"check-types": "tsc --noEmit",
|
|
"link:global": "pnpm link --global",
|
|
"unlink:global": "pnpm unlink --global",
|
|
"publint": "publint .",
|
|
"attw": "attw --pack . --profile node16"
|
|
},
|
|
"dependencies": {
|
|
"@ag-ui/client": "0.0.51",
|
|
"@copilotkit/license-verifier": "0.0.1-a1",
|
|
"@segment/analytics-node": "^2.1.2",
|
|
"@standard-schema/spec": "^1.0.0",
|
|
"chalk": "4.1.2",
|
|
"graphql": "^16.8.1",
|
|
"partial-json": "^0.1.7",
|
|
"uuid": "^11.1.0",
|
|
"zod": "^3.23.3"
|
|
},
|
|
"devDependencies": {
|
|
"@types/uuid": "^10.0.0",
|
|
"@valibot/to-json-schema": "^1.5.0",
|
|
"arktype": "^2.1.29",
|
|
"eslint": "^8.56.0",
|
|
"tsconfig": "workspace:*",
|
|
"tsdown": "^0.20.3",
|
|
"typescript": "^5.2.3",
|
|
"valibot": "^1.2.0",
|
|
"vitest": "^3.2.4",
|
|
"zod-to-json-schema": "^3.23.5"
|
|
},
|
|
"peerDependencies": {
|
|
"@ag-ui/core": "0.0.51"
|
|
}
|
|
}
|