Library
Library is the user’s curated knowledge area. It gives private chat a stable, user-visible way to focus on selected files, folders, and connector-backed content.
Implemented
Section titled “Implemented”- Users can add connector-backed files or data to Library.
- File/folder additions use the shared live connector resource picker. The picker shows only file-resource-capable connectors, supports browse plus connector-wide flat search, and stores provider-safe resource refs rather than indexed metadata ids. Folder rows may show direct child file/folder counts from the shared resource-list contract; known-empty folders stay addable but do not offer browse navigation in the transfer picker. The command-palette drilldown browser is shared with upload folder selection; Library/focus selection layers the selected-item list on top of that browser, while upload uses current-folder selection instead of the transfer list.
- Eligible connected file providers can receive device-file uploads for provider-backed storage when they have provider write access and indexed Library ingestion enabled; see File Uploads for upload-capable connector requirements and storage boundaries.
- Provider-backed upload readiness is surfaced as Library job state. Canonical
LibraryJobrows own job status, phase, attention, and readiness;Uploadrecords store upload-session/provider metadata. Library jobs update throughlibrary-job-updatedand recover with HTTP job snapshots on load/reconnect. Snapshots include compact Library readiness so counts/status recover with the job rows, and the store ignores older event/snapshot timestamps that would move readiness backward. - The Library upload source picker distinguishes ready, upload-access-required, indexing-off, unsupported, and disconnecting connector rows through the shared upload-source contract. Ready rows drill into folder selection and sort ahead of setup or unavailable rows; ties use connector display name and resolved linked-account label instead of connector update recency. Non-ready rows use state-specific affordances: read-only adapter-supported rows can reauthorize upload access, indexing-off rows route the user back to the connector surface without auto-enabling indexing, and unsupported providers such as current OneDrive stay visible as passive not-supported rows with no connector-settings action.
- Provider-backed upload jobs render inline in the single Library contents list until they resolve into a durable Library item or an actionable attention state. Ready jobs collapse into the Library item row they created, so the detail page does not show two sections for the same file.
- Uploading a file whose name already exists in the selected provider folder is non-destructive until the user confirms overwrite. Confirmed overwrites update the existing provider file and refresh the existing Library item after re-indexing, rather than creating a duplicate Library row.
- Library readiness uses the shared compact workspace status chip used by connector status rows across the Library detail page, Library index, focus picker, and focused-chat Sidekick. Ready/usable states use the positive success chip; active queued/indexing states use in-progress/warning tones; attention states use warning/error tones. Limited-width surfaces may rely on only the chips. Provider uploads queue connector sync work before surfacing
sync-requested, so sync request or queue failure becomes a failed Library job instead of a stuck pending row. Uploads tied to intentionally disabled indexed ingestion are reconciled internally but suppressed from Library readiness and Library contents status rows. Connector indexed-mode toggles proactively run the same upload-readiness reconciliation, but enabling indexing later does not silently reprocess old terminal non-actionable uploads. Toggling indexed mode deletes only vector/indexed artifacts and preserves Library items, Upload records, and provider file metadata. - Library item import, Library item delete, and Library reindex status use the same canonical
LibraryJobproducer and realtime snapshot path. The web UI renders their status labels when produced; no separate web action is added just to expose those statuses. - Library contents can be used as chat focus. Empty Libraries are still valid focus targets; chat execution should answer with a clear empty-Library message instead of failing or broadening to all private sources.
Chat with libraryopens the new chat composer with that Library selected as focus. It does not create an empty persisted thread just to carry focus state.- In focused-chat Sidekick, route-backed focus rows are the link. Focused Libraries open their Library detail page from the row/title itself, and focused connectors open the connector dashboard filter; there is no extra secondary
Open libraryline. - Library focus is mutually exclusive with connector, file, and folder focus for a given chat scope.
/libraryowns named-library browsing/search/create;/library/:idshows the selected library’s focused detail actions and contents.
Current Limits
Section titled “Current Limits”- Website attachments are deferred.
- Sync validation cleanup remains a follow-up area.
- Direct chat-composer uploads are deferred in favor of Library-owned content management.
- Parser/extraction progress and batch maintenance Library job producers remain planned; see Realtime.
- Manual connector sync progress is connector status, not Library item status. An open Library page updates only when that sync changes pending provider-backed upload readiness or ready Library item counts.
- Stale/inaccessible folder-pointer cleanup remains a follow-up area. Retrieval must fail closed rather than widening Library focus when a live ref cannot be read.
Read Next
Section titled “Read Next”Canonical Sources
Section titled “Canonical Sources”docs/features/library/spec.mddocs/features/library/stories/docs/features/library/tests/apps/web/app/pages/libraryapps/web/app/stores/authenticated/storeLibraries.tsapps/api/src/library/libraryJobService.tsapps/api/src/uploads/providerUploadService.ts