Files
copilotkit__copilotkit/examples/v2/angular/demo/package.json
Alem Tuzlak 18c7a6001d feat: multimodal attachments — UI polish, deprecations, docs, codemod
Attachment queue & previews:
- Image lightbox with View Transition API morph animation
- Video lightbox with native controls and play button overlay
- Document lightbox (PDF via blob URL, text inline, info card fallback)
- Drop zone overlay with upload icon
- Filename preservation via InputContent metadata
- Proper video thumbnail sizing and play/pause indicator
- Fix attachment queue positioning (max-w-3xl constraint)
- Padding between X button and content for audio/document cards
- Document filenames wrap instead of truncating

Attachments config:
- onUploadFailed callback for validation/upload errors (file-too-large, invalid-type, upload-failed)
- onUpload accepts sync or async returns
- AttachmentUploadResult discriminated union with explicit interfaces
- Metadata field on Attachment and onUpload return type

AG-UI version bump:
- Bump @ag-ui/client, @ag-ui/core, @ag-ui/encoder, @ag-ui/proto to 0.0.51
- Remove process.env Vite workaround (fixed upstream in 0.0.51)

Deprecation lifecycle:
- @deprecated JSDoc on all legacy image upload APIs
- ImageRenderer, ImageRendererProps, ImageUpload type, imageUploadsEnabled prop,
  inputFileAccept prop, ImageRenderer prop, AIMessage.image, ImageData
- Codemod at codemods/migrate-attachments.ts (15 tests)
- Migration guide updated with codemod instructions and new type shapes

Docs:
- New guide: docs/(root)/multimodal-attachments.mdx
- Updated migration guide with onUpload return type, metadata, codemod section
- Cross-links from prebuilt-components and migration guide
- Label change: "Add photos or files" → "Add attachments"

Tests:
- CopilotChat.attachments.test.tsx — 5 tests for onUploadFailed
- migrate-attachments codemod — 15 tests
2026-04-06 14:55:06 +02:00

50 lines
1.7 KiB
JSON

{
"name": "@copilotkit/angular-demo",
"version": "0.0.0",
"private": true,
"type": "module",
"scripts": {
"start": "ng serve",
"build": "ng build",
"dev": "nodemon --verbose --cwd ../../../../ --watch packages/angular/dist/** --watch packages/core/dist/** --watch packages/shared/dist/** --watch packages/runtime/dist/** --watch packages/angular/dist/fesm2022/copilotkit-angular.mjs --ext mjs,js,json,css --delay 800ms --signal SIGTERM --exec \"pnpm -s -C examples/v2/angular/demo run serve:clean\"",
"serve:clean": "rimraf .angular/cache || true && ng serve",
"clean": "rimraf dist .angular"
},
"dependencies": {
"@ag-ui/client": "0.0.51",
"@ag-ui/core": "0.0.51",
"@ag-ui/encoder": "0.0.51",
"@ag-ui/proto": "0.0.51",
"@angular/animations": "^19.0.0",
"@angular/cdk": "^19.0.0",
"@angular/common": "^19.0.0",
"@angular/compiler": "^19.0.0",
"@angular/core": "^19.0.0",
"@angular/forms": "^19.0.0",
"@angular/platform-browser": "^19.0.0",
"@angular/platform-browser-dynamic": "^19.0.0",
"@copilotkit/web-inspector": "workspace:*",
"@copilotkitnext/angular": "workspace:*",
"compare-versions": "^6.1.1",
"fast-json-patch": "^3.1.1",
"lit": "^3.3.1",
"lucide": "^0.525.0",
"partial-json": "^0.1.7",
"rxjs": "^7.8.1",
"tslib": "^2.8.1",
"untruncate-json": "^0.0.1",
"uuid": "^11.1.0",
"zod": "^3.25.75",
"zod-to-json-schema": "^3.24.6",
"zone.js": "^0.14.0"
},
"devDependencies": {
"@angular-devkit/build-angular": "^19.0.0",
"@angular/cli": "^19.0.0",
"@angular/compiler-cli": "^19.0.0",
"nodemon": "^3.1.7",
"rimraf": "^6.0.1",
"typescript": "5.8.2"
}
}