Skip to main content

Knowledge sources

export type KnowledgeSourceKind =
| 'publicWebsite'
| 'sharePoint'
| 'dataverse'
| 'file'
| 'enterpriseData'
| 'microsoftIQ';

export interface KnowledgeSource extends Evidenced {
kind: KnowledgeSourceKind;
name: string;
url?: string;
description?: string;
}

KnowledgeSourceKind is a closed union rather than a string because the add-knowledge flow presents a fixed set of cards. The set was enumerated by opening dv-knowledge-add-button and reading every card in the dialog, captured in Phase 2.

The six kinds​

KindCardurlNotes
publicWebsitePublic websiteRequiredCrawls a public URL. What Raybot uses.
sharePointSharePointRequiredSite or document library URL.
dataverseDataverseNot usedTable picker in the current environment.
fileFilesNot usedUploaded documents.
enterpriseDataEnterprise dataNot usedConnector-backed sources.
microsoftIQMicrosoft IQNot usedBound knowledge base, modelled separately as MicrosoftIQBinding.

microsoftIQ appears in the union for completeness, but a Microsoft IQ binding carries far more state than a KnowledgeSource can express - service, region, SKU, api-version, output mode, synthesis model. It therefore has its own interface and its own array on AgentConfiguration. A binding should be represented as a MicrosoftIQBinding, not as a KnowledgeSource with kind: 'microsoftIQ'.

Raybot's source​

{
kind: 'publicWebsite',
name: 'Ray documentation',
url: 'https://docs.ray.io',
confidence: 'CONFIRMED',
}

One source, pointed at the official Ray documentation root. This is the source that produced the four live citations in Preview during Phase 5 - the strongest single piece of evidence that the agent was grounding correctly, and the reason the zero-percent evaluation score is attributed to the evaluation runtime rather than to the agent.

description is orchestrator input, not documentation​

The description field is easy to misread as a human-facing label. It is not. The generative orchestrator reads it when deciding whether a given user turn warrants searching this source.

A description of Ray docs gives the orchestrator almost nothing to match on. A description that names the topics the source covers - autoscaling, placement groups, the object store, RLlib - gives it something to route against. The same rule applies to AgentTool.description; see Tools.

What the model does not capture​

The crawl is asynchronous and has its own lifecycle - queued, crawling, indexed, failed - and a public website source can sit in a partially-indexed state for some time after the card reports success. The model has no status field, because the audit never captured a source in any state other than settled. Adding a speculative status union would be an UNCONFIRMED claim in a model whose whole premise is that claims are graded.

If you need crawl status, read it from the Dataverse row, not from this model.