mirror of
https://github.com/CopilotKit/CopilotKit.git
synced 2026-09-14 16:26:20 +08:00
51cc63d974
Demo assets under showcase/integrations/*/public/{demo-files,demo-audio}/
were stored two different ways. Ten integrations committed them as LFS
pointers (the root .gitattributes convention); eight carved themselves out
with a per-integration .gitattributes that re-declared the same paths
`-filter -diff -merge`, committing raw binaries instead.
Those carve-outs were added when the image build did not fetch LFS, so a
pointer stub shipped into the image and the multimodal sample-attachment
magic-bytes guard rejected it. That premise no longer holds: the deploy
build's Checkout step hardcodes `lfs: true` (7bde1eef3a), so every
integration image now gets real binaries regardless of storage form. The
overrides are dead weight that only buys divergence.
Delete all eight override files and renormalize the 21 affected assets
through the LFS clean filter. Each override contained nothing but demo-asset
exemptions, so each is removed in full; the root .gitattributes is untouched.
Storage form changes, content does not. Every asset's sha256 already equals
the LFS OID the pointer-mode integrations reference, so each renormalized
blob is bit-for-bit the pointer blob already committed on main -- no new LFS
objects are introduced and no pointer can dangle:
sample.png 10083 B oid 01aa5681de99461247543e9215c1e4da3242e26b2bee11593fcdbe209672d973
sample.pdf 2486 B oid 3da2afae36a1a81fd2c02f15e54bfc38b6c22e41655c31a5b54ff1e0e3daab41
sample.wav 87078 B oid bd4aa7b049f1c3e324dfd15af4068d7f8fbf2eae1dd044df270dddc5f38a5c57
All three OIDs return download actions from the LFS batch API and were
downloaded and confirmed to hash to their OID.
Demo Files — Multimodal Demo
This directory bundles sample files referenced by the /demos/multimodal page.
Required files (must be committed as binaries; see .gitattributes at repo root):
sample.png— a small (< 50 KB) PNG that the "Try with sample image" button injects into the chat. A CopilotKit logo or other recognizable brand mark works well so the vision-capable agent has something to describe.sample.pdf— a small (< 50 KB) one-page PDF that the "Try with sample PDF" button injects. The content must mention "CopilotKit" so E2E soft assertions hold (e.g. a one-page export of the CopilotKit quickstart).
The page at src/app/demos/multimodal/page.tsx fetches these via the public
path (/demo-files/sample.png, /demo-files/sample.pdf), wraps the fetched
blob in a File, and routes it through the same AttachmentsConfig.onUpload
callback the paperclip button uses — so the sample path exercises the exact
same queueing code as a real user upload.
If these files are missing, the demo page still renders but the sample buttons will surface a fetch error. The paperclip / drag-and-drop paths continue to work without them.