Equilibrium Review

v0.5.0

Full-page equilibrium definition review block. Displays AI-generated equilibrium definitions with metrics, weights, thresholds, and batch review tracking.

View as Markdown

Preview

Open full page ↗

Install & usage

npx shadcn@latest add @signalos/equilibrium-01

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

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

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

Props

EquilibriumStateThresholds

PropTypeDefaultDescription
STABLE*number-
DRIFTING*number-
INTERVENTION*number-
CRITICAL*number-

EquilibriumDefinition

PropTypeDefaultDescription
equilibrium_id*string-
name*string-
description*string-
domain*string-
scoring_method*EquilibriumScoringMethod-
decay_rate*number-
healthy_range*[number, number]-
metrics*string[]-
weights*Record<string, number>-
confidence*number-
state_thresholds*EquilibriumStateThresholds-
review_originstring | null | undefined-

MetricCatalogEntry

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

EquilibriaArtifact

PropTypeDefaultDescription
definitions*EquilibriumDefinition[]-

EquilibriumReviewItem

PropTypeDefaultDescription
index*number-
status*"accepted" | "flagged" | "deleted"-
feedback*string-
edits*Partial<Pick<EquilibriumDefinition, "name" | "domain" | "scoring_method" | "decay_rate" | "description" | "healthy_range" | "state_thresholds" | "metrics" | "weights" | "confidence">>-
connector_idstring | undefined-
item_idstring | undefined-

SubmitEquilibriaReviewPayload

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

EquilibriumItemEdits

PropTypeDefaultDescription
equilibrium_idstring | undefined-
name*string-
description*string-
domain*string-
scoring_method*EquilibriumScoringMethod-
decay_rate*number-
healthy_range*[number, number]-
state_thresholds*EquilibriumStateThresholds-
confidence*number-
metrics*string[]-
weights*Record<string, number>-

AddEquilibriumPayload

PropTypeDefaultDescription
action*"add_item" | "improve_new_item"-
feedbackstring | undefined-
item_edits*EquilibriumItemEdits-
connector_idstring | undefined-

AddEquilibriumResponse

PropTypeDefaultDescription
statusstring | undefined-
itemEquilibriumDefinition | undefined-
soft_warningstring | undefined-

Supporting types

export type EquilibriumScoringMethod = "weighted_average" | "geometric_mean"
export type MetricDirection = "up_is_good" | "down_is_good" | "neutral"
export type MetricCatalog = Record<string, MetricCatalogEntry>

More Semantics Stages variants

Changelog

0.5.0

  • Extract AddDialogFormFields into its own component file; split StateThresholdsSection and MetricsWeightsSection into dedicated subcomponents.
  • Decompose EquilibriumAddDialog, EquilibriumEditView, EquilibriumReadView, EquilibriumQueue, and EquilibriumDetail into the components/ folder.

0.4.10

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

0.4.9

  • Fix cross-item imports to use canonical @/components paths; add missing signalos.category to manifests.

0.4.8

  • Equilibrium: remove isSubmitting prop and metricPickerOpen/onMetricPickerChange props (metric picker open state is now internal to EquilibriumDetail).
  • Equilibrium: add onAddFormValidationFail callback prop; thread through to EquilibriumAddDialog.
  • Equilibrium: move confirmed banner outside PageHeader, update border token to border-border-success and remove CheckCircle2 icon.
  • Equilibrium: rename confirm button data-testid from equilibrium-confirm-button to equilibrium-submit-button.
  • Equilibrium: update header description copy.
  • EquilibriumAddDialog: replace FormDialog+TextField with raw Dialog/DialogContent/DialogHeader/DialogTitle/DialogDescription/DialogFooter and Label+Input; add onValidationFail prop.
  • EquilibriumAddDialog: move MetricCatalogEntry import from metrics-01 to local Equilibrium.types.ts.
  • Equilibrium.types.ts: define MetricCatalog and MetricCatalogEntry locally; remove import from metrics-01.
  • Remove @signalos/form-dialog and @signalos/text-field from registryDependencies; add @signalos/label.

0.4.7

  • Replace raw Dialog/DialogFooter with FormDialog in EquilibriumAddDialog; custom footer carries error banner + cancel/create buttons.
  • Replace Label + Input with TextField for Name, Domain, Decay Rate, and Healthy Range fields; Description textarea keeps inline label + aria-invalid.
  • Fix raw color tokens: text-destructive → text-text-error, bg-destructive/10 → bg-bg-error, border-destructive/30 → border-border-error throughout.
  • Swap @signalos/dialog + @signalos/label → @signalos/form-dialog + @signalos/text-field; @signalos/input kept for compact inline weight/threshold rows.

0.4.5

  • Fix removed statics buttons

0.4.4

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

0.4.3

  • Lift EquilibriumAddDialog form state (form, errors, metricPickerOpen) to props. Parent now owns all add-dialog state via addForm, addFormErrors, addMetricPickerOpen, onAddFormChange, onAddMetricPickerOpenChange.

0.3.1

  • Replace desktop lg:grid-cols-12 layout with SplitPanel widget for the queue/detail split.
  • Mobile tab-switcher layout unchanged; SplitPanel is shown only on lg: and above.
  • Add @signalos/split-panel to registryDependencies.

0.2.0

Initial release.