Metrics Review

v0.5.5

Full-page metrics and baseline review block. Displays AI-generated monitoring metrics with SQL/API/cross-source formulas, baseline configuration, and batch progress tracking.

View as Markdown

Preview

Open full page ↗

Install & usage

npx shadcn@latest add @signalos/metrics-01

Pulls the page source plus its widget dependencies (@signalos/tokens, @signalos/utils, @signalos/button, @signalos/badge, @signalos/dialog, @signalos/select, @signalos/checkbox, @signalos/input, @signalos/label, @signalos/tooltip, @signalos/textarea, @signalos/split-panel) into your app - you own the copy. Requires access.

usage
// after: npx shadcn@latest add @signalos/metrics-01
// mount the pulled page in a route, e.g. src/app/semantics-details/page.tsx
import MetricsReview from "@/components/blocks/metrics-01/MetricsReview"

export default function Page() {
  return <MetricsReview />
}

Props

CompositeAction

PropTypeDefaultDescription
connector_idstring | undefined-
action_sqlstring | undefined-
sqlstring | undefined-
labelstring | undefined-
result_labelstring | undefined-
result_valuestring | number | null | undefined-
actionstring | undefined-
resourcestring | undefined-
filter_fieldstring | undefined-
filter_valuestring | undefined-
extract_fieldstring | undefined-
action_inputRecord<string, unknown> | undefined-
ratiounknown-
computationunknown-
expected_result_typestring | undefined-

MetricActionInput

PropTypeDefaultDescription
sqlstring | undefined-
actionstring | undefined-
resourcestring | undefined-
connector_idstring | undefined-
filter_fieldstring | undefined-
filter_valuestring | undefined-
extract_fieldstring | undefined-
action_inputRecord<string, unknown> | undefined-
result_labelstring | undefined-
result_valuestring | number | null | undefined-

MetricFormulaAction

PropTypeDefaultDescription
actionstring | undefined-
resourcestring | undefined-
input{ [key: string]: unknown; sql?: string | undefined; action_a?: MetricActionInput | undefined; action_b?: MetricActionInput | undefined; } | undefined-
filter_fieldstring | undefined-
filter_valuestring | undefined-
extract_fieldstring | undefined-
expected_result_typestring | undefined-
ratiounknown-

MetricComputation

PropTypeDefaultDescription
expressionstring | undefined-

SemanticMetric

PropTypeDefaultDescription
metric_name*string-
display_namestring | undefined-
descriptionstring | undefined-
unitstring | undefined-
directionMetricDirection | undefined-
current_valuestring | number | null | undefined-
baseline_valuenumber | null | undefined-
baseline_stddevnumber | null | undefined-
baseline_deviationnumber | null | undefined-
baseline_windowBaselineWindow | undefined-
baseline_alphanumber | undefined-
baseline_sample_countnumber | undefined-
baseline_sourcestring | undefined-
baseline_sqlstring | undefined-
validation_statusMetricValidationStatus | undefined-
validation_errorstring | undefined-
confidencenumber | undefined-
is_anomalousboolean | undefined-
is_cross_sourceboolean | undefined-
cross_clusterboolean | undefined-
source_clusterstring | undefined-
formula_actionMetricFormulaAction | undefined-
formula_humanstring | undefined-
source_entitiesstring[] | undefined-
composite_actionsCompositeAction[] | undefined-
computationstring | MetricComputation | undefined-
metric_typestring | undefined-
reasoningstring | undefined-
join_paths{ from_table: string; from_column: string; to_table: string; to_column: string; join_type: string; }[] | undefined-
bridge_usedstring | undefined-
signal_candidatesstring[] | undefined-
related_metricsstring[] | undefined-
action_typeMetricActionType | undefined-
formula_sqlstring | undefined-
review_originstring | undefined-

MetricReviewItem

PropTypeDefaultDescription
index*number-
status*"accepted" | "flagged" | "deleted"-
feedback*string-
edits*Partial<SemanticMetric>-

MetricReviewDecision

PropTypeDefaultDescription
status*"accepted" | "flagged"-
feedback*string-
edits*Partial<SemanticMetric>-

SqlTestResult

PropTypeDefaultDescription
status*"success" | "error" | "loading" | "idle"-
resultunknown-
baselineValuenumber | null | undefined-
errorstring | undefined-

MetricItemEdits

PropTypeDefaultDescription
metric_name*string-
display_namestring | undefined-
descriptionstring | undefined-
unitstring | undefined-
directionMetricDirection | undefined-
notestring | undefined-
action_typeMetricActionType | undefined-
formula_sqlstring | undefined-
formula_actionRecord<string, unknown> | MetricFormulaAction | undefined-
is_cross_sourceboolean | undefined-
composite_actionsRecord<string, unknown>[] | undefined-
computationRecord<string, unknown> | undefined-

SubmitMetricsReviewPayload

PropTypeDefaultDescription
action*"confirm" | "retry"-
itemsMetricReviewItem[] | undefined-

CreateSemanticMetricPayload

PropTypeDefaultDescription
metric_name*string-
display_namestring | undefined-
descriptionstring | undefined-
unitstring | undefined-
directionMetricDirection | undefined-
formula_actionMetricFormulaAction | undefined-

AddMetricPayload

PropTypeDefaultDescription
action*"add_item" | "improve_new_item"-
connector_id*string-
feedbackstring | undefined-
item_edits*MetricItemEdits-

AddMetricResponse

PropTypeDefaultDescription
itemSemanticMetric | undefined-
soft_warningstring | undefined-

BaselineConfig

PropTypeDefaultDescription
window*BaselineWindow-
alpha*number-
date_column_preferencestring | undefined-

MetricsBatchInfo

PropTypeDefaultDescription
batch_num*number-
total_batches*number-
metrics_in_batch*number-
all_batches_completeboolean | undefined-

MetricsFdeInput

PropTypeDefaultDescription
items*MetricReviewItem[]-

MetricSqlTestResult

PropTypeDefaultDescription
status*"success" | "error"-
metric_namestring | undefined-
current_valuestring | number | null | undefined-
baseline_valuenumber | null | undefined-
validation_statusstring | undefined-
validation_errorstring | undefined-
sqlstring | undefined-

MetricCatalogEntry

PropTypeDefaultDescription
display_namestring | undefined-
descriptionstring | undefined-
directionMetricDirection | undefined-
unitstring | undefined-
connector_idstring | undefined-
source_clusterstring | undefined-
is_cross_sourceboolean | undefined-
source_entitiesstring[] | undefined-
sql_logicstring | undefined-

MetricAddFormCompositeAction

PropTypeDefaultDescription
result_label*string-
kind*"sql" | "api"-
connector_id*string-
body*string-

MetricAddFormState

PropTypeDefaultDescription
type*MetricActionType-
metric_name*string-
display_name*string-
description*string-
unit*string-
direction*MetricDirection-
note*string-
aiNote*string-
sqlConnectorId*string-
sql*string-
apiConnectorId*string-
formulaAction*string-
composite*MetricAddFormCompositeAction[]-
expression*string-
method*string-
interpretation*string-

ActionState

PropTypeDefaultDescription
loadingboolean | undefined-
valueunknown-
errorstring | undefined-

MetricDetailViewProps

PropTypeDefaultDescription
selectedMetric*SemanticMetric-
sqlTestResults*Record<number, SqlTestResult>-
actionResults*Record<number, { a?: ActionState | undefined; b?: ActionState | undefined; }>-
selectedMetricIdx*number-
copiedSql*boolean-
expandedSql*Record<number, boolean>-
onCopySql*(sql: string) => void-
onExecuteMetric*(idx: number) => void-
onExecuteAction*(idx: number, side: "a" | "b") => void-
onExecuteBothActions*(idx: number) => void-

Supporting types

export type MetricDirection = "up_is_good" | "down_is_good" | "neutral"
export type MetricValidationStatus = "validated" | "healed" | "failed"
export type BaselineWindow = "7d" | "30d" | "90d" | "6mo" | "1y" | "all"
export type MetricActionType = "sql" | "api" | "cross_source"
export type MetricUnit =
  | "count"
  | "percent"
  | "percentage"
  | "ratio"
  | "rate"
  | "currency"
  | "index"
  | "seconds"
  | "minutes"
  | "hours"
  | "days"
  | "months"
  | "years"
  | "score"
  | "bytes"
export type MetricCatalog = Record<string, MetricCatalogEntry>
export type MetricAddFormErrors = Partial<
  Record<keyof MetricAddFormState | "composite", string>
>

More Semantics Stages variants

Changelog

0.5.5

  • Lint issues resolved

0.5.4

  • Decompose MetricsReview into MetricDetailPanel, MetricsPageHeader, MetricAddDialog, MetricEditForm, MetricQueueList, and MetricDetailView subcomponents.
  • Extract field groups into MetricBasicFields, MetricApiFields, MetricSqlFields, MetricCrossSourceFields; extract MetricApiActionEditor, MetricSqlEditor, MetricCompositeActions, and MetricTypeSelector.

0.5.3

  • Replace raw scale token classes with semantic tokens (text-text-error, bg-bg-success, border-border-warning, etc.) to respect client theme overrides.

0.5.2

  • Fix file casing: rename Metrics.types.ts to match PascalCase import paths.

0.5.1

  • Change onSetEditedSql and onSetEditedCompositeSql prop types from React.Dispatch<SetStateAction<...>> to plain value callbacks, removing the leaked setter type from the public API.

0.4.1

0.4.0

  • Replace grid grid-cols-1 lg:grid-cols-12 layout with SplitPanel widget for the queue/detail split.
  • Add @signalos/split-panel to registryDependencies.

0.3.0

  • Refactor: lift all form state, validation, composite action mutations, and async submit logic out of MetricAddDialog into MetricsReview (parent).
  • MetricAddDialog is now fully presentational — receives controlled form, errors, formError, activeTypeDesc, and individual change/submit callbacks as props.
  • Extract getCompositeActions helper to Metrics.utils.ts; MetricDetailView and MetricEditForm now import it instead of duplicating the derivation inline.
  • Added MetricAddFormState, MetricAddFormCompositeAction, MetricAddFormErrors to metrics.types.ts.

0.2.0

  • Breaking: Remove pipelineId prop — was unused internally.
  • Breaking: MetricAddDialog now exports ConnectorLike instead of re-importing ConnectorConfig from semantics-details-01; callers only need { connector_id: string }.
  • Fix registry-item.json files list — was incorrectly pointing at cross-source-01 paths.
  • Fix description and lucide-react version range in manifest; add missing @signalos/textarea dep.
  • Replace raw palette tokens (error-*, success-*, info-*, navy-*) with semantic tokens throughout MetricsReview.tsx and MetricAddDialog.tsx.
  • Add note field to MetricItemEdits to match what MetricAddDialog submits.
  • Remove dead handleImproveWithAi function and isImproving state.

0.1.0

Initial release.