Preserve connector source runtime evidence

This commit is contained in:
2026-08-04 12:05:35 +02:00
parent 2d93ad07d2
commit 067c8273b6
8 changed files with 202 additions and 4 deletions
+26
View File
@@ -164,6 +164,21 @@ export type DatasourceOrigin = {
updated_at?: string | null;
capabilities: string[];
metadata: Record<string, unknown>;
source_mode: "live" | "cached" | "file_backed" | "static";
pushdown: {
projections: boolean;
pagination: boolean;
filters: string[];
aggregations: string[];
sorting: string[];
};
health: {
status: "healthy" | "warning" | "error" | "unknown";
code: string;
summary: string;
checked_at?: string | null;
details: Record<string, unknown>;
};
};
export type DatasourcePreview = {
@@ -172,6 +187,17 @@ export type DatasourcePreview = {
total_rows: number;
truncated: boolean;
materialization?: DatasourceMaterialization | null;
returned_bytes: number;
elapsed_ms: number;
effective_row_limit: number;
effective_byte_limit: number;
effective_timeout_ms: number;
diagnostics: Array<{
severity: "info" | "warning" | "error";
code: string;
message: string;
details: Record<string, unknown>;
}>;
};
export async function listDatasources(
@@ -834,7 +834,8 @@ function OriginDetail({ origin }: { origin: DatasourceOrigin }) {
<>
<div className="datasources-metrics">
<Metric label="Provider" value={origin.provider} />
<Metric label="Kind" value={origin.kind} />
<Metric label="Mode" value={readableToken(origin.source_mode)} />
<Metric label="Health" value={readableToken(origin.health.status)} />
<Metric label="Rows" value={formatNumber(origin.row_count)} />
<Metric label="Fields" value={String(origin.schema.length)} />
<Metric label="Updated" value={formatDate(origin.updated_at)} />
@@ -849,8 +850,11 @@ function OriginDetail({ origin }: { origin: DatasourceOrigin }) {
</div>
<div className="datasources-key-values">
<span><small>Origin reference</small><strong>{origin.ref}</strong></span>
<span><small>Shape</small><strong>{origin.shape}</strong></span>
<span><small>Kind</small><strong>{readableToken(origin.kind)}</strong></span>
<span><small>Shape</small><strong>{readableToken(origin.shape)}</strong></span>
<span><small>Fingerprint</small><strong>{shortFingerprint(origin.fingerprint)}</strong></span>
<span><small>Health</small><strong>{origin.health.summary}</strong></span>
<span><small>Pushdown</small><strong>{pushdownSummary(origin)}</strong></span>
</div>
</section>
<section className="datasources-detail-section">
@@ -864,6 +868,17 @@ function OriginDetail({ origin }: { origin: DatasourceOrigin }) {
);
}
function pushdownSummary(origin: DatasourceOrigin): string {
const capabilities = [
origin.pushdown.projections ? "projections" : "",
origin.pushdown.pagination ? "pagination" : "",
...origin.pushdown.filters.map((item) => `filter:${item}`),
...origin.pushdown.aggregations.map((item) => `aggregate:${item}`),
...origin.pushdown.sorting.map((item) => `sort:${item}`)
].filter(Boolean);
return capabilities.join(", ") || "None declared";
}
function GovernanceDialog({
open,
settings,