datasources Cosmos DB container and serves as the single source of truth for what datasources exist and who can use them.
Three-Tier Architecture
Datasources operate across three distinct tiers — from global definitions down to per-chat runtime configuration:Datasource Origin (DataSourceOrigin)
Every catalog entry has an origin field that determines who created it and what rules apply:
This replaces the previous
builtIn: boolean flag with a more expressive enum that supports future origin types.
Three Kinds of Datasources
The catalog contains three conceptually different kinds of datasources, all represented asIDataSource entities:
Datasource Lifecycle by Kind
Each kind follows a different lifecycle from catalog definition through to runtime: Kind 1 — Virtual (no infrastructure):Retrieval Pipeline
The origin-based classification above describes who creates a datasource. The retrieval pipeline describes how data flows from a source into the RAG context at query time. Every datasource follows one of three paths:llmknowledge uses the model’s training data; websearch injects live web results (Tavily, Brave, etc.).
Physical (Index) — Documents live in storage (Azure Blob, OneDrive, or SharePoint) and are searchable via an Azure AI Search index. The index is auto-created per chat/user/library.
Physical (Connection) — Documents are retrieved from an external system through a registered Data Connection (IDataConnection):
Both connection-based paths are ACL-checked — the user must have access to the Data Connection in the registry before the query executes.
Security Model
The chat security guard (chatSecurityGuard.ts) validates datasource access differently per kind:
Built-In Datasource IDs
The following UUIDs are reserved for built-in datasource templates (prefix0a):
Admin UI
The Datasources admin page (Admin → Datasource Catalog [#/admin/datasources]) presents all catalog entries in a data grid:
- Built-in entries show a lock icon and cannot be deleted. Only name, description, tags, and permissions are editable.
- Admin entries support full CRUD including connection details, type, and permissions.
- Workspace Datasource Settings configure which catalog entries are activated by default for workspace and shared chats (
IAppSettings.workspaceDataSources[]anddefaultChatDataSources[]).
Chat Types & Data Sources
Chats in Findable use a multi-source RAG architecture. Each chat’sdataSources array (IDataSourceConfig[]) is the sole source of truth for where documents come from. A chat with an empty array operates in LLM-only mode (no retrieval).
Data Source Types (DATASOURCE_TYPE)
Each entry in the dataSources array has a type that determines storage, indexing, and retrieval behaviour:
IDataSourceConfig Fields
Every data source entry supports the following fields:
Multi-Source Result Merging
When a chat has multiple data sources, results are merged using theresultMergeStrategy field (RESULT_MERGE_STRATEGY enum) on IChatTabDBItem:
The
deduplicateResults boolean flag removes duplicate documents that appear across multiple sources.
Chat Classification (CHAT_KIND)
CHAT_KIND is a virtual, non-persisted runtime label derived at query time by getChatKind(chat). It is never stored in Cosmos DB and must not be used for ACL or storage decisions — those are governed by EntityScope.
Use
isSharedChat(), isWorkspaceChat(), isPersonalChat() from @eaai/shared rather than reading the enum value directly.