Functions & Workflow Page
v0.1.10Functions and workflow page: a filterable workflow list beside a detail panel showing the compiled step graph, revision history, and run records with their results.
Preview
Install & usage
npx shadcn@latest add @signalos/functions-01Pulls the page source plus its widget dependencies (@signalos/tokens, @signalos/utils, @signalos/button, @signalos/page-header, @signalos/textarea, @signalos/badge, @signalos/checkbox, @signalos/command, @signalos/form-dialog, @signalos/popover, @signalos/progress, @signalos/select, @signalos/skeleton, @signalos/tooltip, @signalos/split-panel, @signalos/tabs, @signalos/view-controler, @signalos/input, @signalos/sheet, @signalos/dialog, @signalos/label, @signalos/switch, @signalos/dropdown-menu, @signalos/text-field) into your app - you own the copy. Requires access.
// after: npx shadcn@latest add @signalos/functions-01
// mount the pulled page in a route, e.g. src/app/semantics-details/page.tsx
import Functions01 from "@/components/blocks/functions-01/Functions01"
export default function Page() {
return <Functions01 />
}Props
WorkflowCoordinate
| Prop | Type | Default | Description |
|---|---|---|---|
| pattern | string | null | undefined | - | |
| frame | string | null | undefined | - | |
| time_axis | string | null | undefined | - | |
| time | string | null | undefined | - | |
| shorthand | string | null | undefined | - |
CoordinateCount
| Prop | Type | Default | Description |
|---|---|---|---|
| count | number | undefined | - | |
| pattern | string | null | undefined | - | |
| frame | string | null | undefined | - | |
| time_axis | string | null | undefined | - | |
| time | string | null | undefined | - | |
| shorthand | string | null | undefined | - |
WorkflowStep
| Prop | Type | Default | Description |
|---|---|---|---|
| id* | string | - | |
| function* | string | - | |
| params | Record<string, unknown> | undefined | - |
SignalWorkflow
| Prop | Type | Default | Description |
|---|---|---|---|
| id* | string | - | |
| workflow_key | string | null | undefined | - | |
| title | string | null | undefined | - | |
| description | string | null | undefined | - | |
| outcome | string | null | undefined | - | |
| coordinate | WorkflowCoordinate | null | undefined | - | |
| source_ids | string[] | undefined | - | |
| node_refs | (string | { node_id?: string | undefined; })[] | undefined | - | |
| gate_status | string | null | undefined | - | |
| status | string | null | undefined | - | |
| confidence | number | null | undefined | - | |
| frozen_ref | string | null | undefined | - | |
| steps | WorkflowStep[] | undefined | - | |
| editable_params | EditableParams | undefined | - |
WorkflowListResponse
| Prop | Type | Default | Description |
|---|---|---|---|
| pipeline_id* | string | - | |
| count* | number | - | |
| workflows* | SignalWorkflow[] | - |
FormControl
| Prop | Type | Default | Description |
|---|---|---|---|
| name* | string | - | |
| label | string | undefined | - | |
| type | string | undefined | - | |
| step_id | string | undefined | - | |
| value | unknown | - | |
| default | unknown | - | |
| enum | unknown[] | undefined | - | |
| minimum | number | null | undefined | - | |
| maximum | number | null | undefined | - | |
| help | string | undefined | - |
NodeActionForm
| Prop | Type | Default | Description |
|---|---|---|---|
| controls | FormControl[] | undefined | - | |
| submit_endpoint | string | undefined | - | |
| method | string | undefined | - |
NodeAction
| Prop | Type | Default | Description |
|---|---|---|---|
| id* | string | - | |
| label | string | undefined | - | |
| method | string | undefined | - | |
| endpoint | string | undefined | - | |
| kind | string | undefined | - | |
| result | string | undefined | - | |
| body | Record<string, unknown> | undefined | - | |
| form | NodeActionForm | undefined | - | |
| params | Record<string, unknown> | undefined | - |
StepLastRun
| Prop | Type | Default | Description |
|---|---|---|---|
| status | string | undefined | - | |
| rows | number | null | undefined | - | |
| error | string | null | undefined | - | |
| latency_ms | number | null | undefined | - |
CanvasNodeData
| Prop | Type | Default | Description |
|---|---|---|---|
| connector_id | string | undefined | - | |
| total_nodes | number | undefined | - | |
| covered_shorthands | string[] | undefined | - | |
| gap_shorthands | string[] | undefined | - | |
| coords | CoordinateCount[] | undefined | - | |
| workflow_id | string | undefined | - | |
| workflow_key | string | undefined | - | |
| title | string | undefined | - | |
| description | string | undefined | - | |
| outcome | string | undefined | - | |
| coordinate | WorkflowCoordinate | null | undefined | - | |
| source_ids | string[] | undefined | - | |
| cross_source | boolean | undefined | - | |
| status | string | undefined | - | |
| gate_status | string | undefined | - | |
| confidence | number | null | undefined | - | |
| frozen_ref | string | undefined | - | |
| node_refs | string[] | undefined | - | |
| steps | WorkflowStep[] | undefined | - | |
| step_id | string | undefined | - | |
| function | string | undefined | - | |
| role | string | undefined | - | |
| source | string | null | undefined | - | |
| optional | boolean | undefined | - | |
| params | Record<string, unknown> | undefined | - | |
| inputs | Record<string, string> | undefined | - | |
| explains | string | undefined | - | |
| last_run | StepLastRun | null | undefined | - | |
| impl_kind | string | undefined | - | |
| sql | string | undefined | - | |
| dialect | string | undefined | - | |
| resource | string | undefined | - | |
| action | string | undefined | - | |
| input_template | Record<string, unknown> | undefined | - | |
| runtime | string | undefined | - | |
| body | string | null | undefined | - | |
| capability | string | undefined | - | |
| native_ref | string | undefined | - | |
| model | string | undefined | - | |
| prompt | string | undefined | - | |
| fired | boolean | undefined | - | |
| note | string | undefined | - | |
| kind | string | undefined | - | |
| severity | string | undefined | - | |
| preview | unknown | - | |
| row_count | number | undefined | - |
CanvasNode
| Prop | Type | Default | Description |
|---|---|---|---|
| id* | string | - | |
| kind* | string | - | |
| label | string | undefined | - | |
| lane | number | undefined | - | |
| x | number | undefined | - | |
| y | number | undefined | - | |
| parent | string | null | undefined | - | |
| collapsed | boolean | null | undefined | - | |
| badge | string | undefined | - | |
| data | CanvasNodeData | undefined | - | |
| actions | NodeAction[] | undefined | - |
CanvasEdge
| Prop | Type | Default | Description |
|---|---|---|---|
| id* | string | - | |
| source* | string | - | |
| target* | string | - | |
| kind | string | undefined | - | |
| label | string | undefined | - |
CanvasLane
| Prop | Type | Default | Description |
|---|---|---|---|
| index* | number | - | |
| key* | string | - | |
| label* | string | - |
GraphSpec
| Prop | Type | Default | Description |
|---|---|---|---|
| lanes | CanvasLane[] | undefined | - | |
| nodes | CanvasNode[] | undefined | - | |
| edges | CanvasEdge[] | undefined | - | |
| counts | Record<string, number> | undefined | - | |
| meta | Record<string, unknown> | undefined | - |
CatalogNodeParamSpec
| Prop | Type | Default | Description |
|---|---|---|---|
| type | string | undefined | - | |
| default | unknown | - | |
| enum | unknown[] | null | undefined | - | |
| example | unknown | - | |
| required | boolean | undefined | - | |
| description | string | undefined | - |
CatalogNodeGrounding
| Prop | Type | Default | Description |
|---|---|---|---|
| type | string | undefined | - | |
| label | string | undefined | - | |
| source_id | string | undefined | - |
CatalogNodeImpl
| Prop | Type | Default | Description |
|---|---|---|---|
| kind | string | undefined | - | |
| dialect | string | undefined | - | |
| template | string | undefined | - | |
| required_connector_caps | string[] | undefined | - |
CatalogNode
| Prop | Type | Default | Description |
|---|---|---|---|
| id* | string | - | |
| title | string | undefined | - | |
| description | string | undefined | - | |
| role | string | undefined | - | |
| tier | string | undefined | - | |
| archetype | string | undefined | - | |
| priority | string | undefined | - | |
| scope | string | undefined | - | |
| base_ref | string | undefined | - | |
| version | string | undefined | - | |
| emits | WorkflowCoordinate[] | undefined | - | |
| grounding | CatalogNodeGrounding[] | undefined | - | |
| params | Record<string, CatalogNodeParamSpec> | undefined | - | |
| impl | CatalogNodeImpl | undefined | - |
PersistedStepOutcome
| Prop | Type | Default | Description |
|---|---|---|---|
| step_id | string | undefined | - | |
| function | string | undefined | - | |
| kind | string | undefined | - | |
| row_count | number | null | undefined | - | |
| latency_ms | number | null | undefined | - | |
| error | string | null | undefined | - |
WorkflowRunRecord
| Prop | Type | Default | Description |
|---|---|---|---|
| id | string | undefined | - | |
| pipeline_id | string | undefined | - | |
| workflow_id | string | null | undefined | - | |
| workflow_ref | string | undefined | - | |
| run_id | string | undefined | - | |
| status | string | undefined | - | |
| signal_count | number | undefined | - | |
| step_outcomes | PersistedStepOutcome[] | undefined | - | |
| latency_ms | number | null | undefined | - | |
| cost_usd | number | undefined | - | |
| error | string | undefined | - | |
| triggered_by | string | undefined | - | |
| created_at | string | undefined | - |
WorkflowRunListResponse
| Prop | Type | Default | Description |
|---|---|---|---|
| pipeline_id* | string | - | |
| count* | number | - | |
| runs* | WorkflowRunRecord[] | - |
RunStepOutcome
| Prop | Type | Default | Description |
|---|---|---|---|
| step | string | undefined | - | |
| fn | string | undefined | - | |
| kind | string | undefined | - | |
| rows | number | null | undefined | - | |
| sample | Record<string, unknown>[] | null | undefined | - | |
| error | string | null | undefined | - |
EmittedSignalView
| Prop | Type | Default | Description |
|---|---|---|---|
| kind | string | undefined | - | |
| summary | string | undefined | - | |
| coordinate | WorkflowCoordinate | null | undefined | - | |
| data | unknown | - |
WorkflowEditReport
| Prop | Type | Default | Description |
|---|---|---|---|
| applied | string[] | undefined | - | |
| unsupported | string[] | undefined | - | |
| unknown | string[] | undefined | - |
WorkflowRunResult
| Prop | Type | Default | Description |
|---|---|---|---|
| status* | string | - | |
| workflow_id | string | null | undefined | - | |
| frozen_ref | string | undefined | - | |
| signals_emitted | number | undefined | - | |
| latency_ms | number | null | undefined | - | |
| healed | boolean | undefined | - | |
| heal_notes | string[] | undefined | - | |
| step_outcomes | RunStepOutcome[] | undefined | - | |
| signals | EmittedSignalView[] | undefined | - | |
| edit | WorkflowEditReport | undefined | - | |
| errors | string[] | undefined | - | Populated when `status` is `gate_failed`. |
| error | string | undefined | - | |
| node_id | string | undefined | - | Present on a single-node run only. |
| connector_id | string | undefined | - | |
| title | string | undefined | - | |
| rerun | boolean | undefined | - | Present when an edit was persisted without a rerun. |
SemanticSignalRecord
| Prop | Type | Default | Description |
|---|---|---|---|
| id | string | undefined | - | |
| pipeline_id | string | undefined | - | |
| workflow_id | string | null | undefined | - | |
| workflow_ref | string | undefined | - | |
| run_id | string | undefined | - | |
| signal_key | string | undefined | - | |
| name | string | undefined | - | |
| summary | string | undefined | - | |
| title | string | undefined | - | |
| source_id | string | undefined | - | |
| connector_id | string | undefined | - | |
| pattern | string | undefined | - | |
| frame | string | undefined | - | |
| time_axis | string | undefined | - | |
| shorthand | string | undefined | - | |
| coordinate | WorkflowCoordinate | null | undefined | - | |
| severity | string | undefined | - | |
| confidence | number | undefined | - | |
| value | { kind?: string | undefined; data?: unknown; } | null | undefined | - | |
| evidence | unknown[] | undefined | - | |
| dimension_key | Record<string, unknown> | undefined | - | |
| cost_usd | number | undefined | - | |
| latency_ms | number | undefined | - | |
| status | string | undefined | - | |
| created_at | string | undefined | - |
SemanticSignalListResponse
| Prop | Type | Default | Description |
|---|---|---|---|
| pipeline_id* | string | - | |
| count* | number | - | |
| signals* | SemanticSignalRecord[] | - |
WorkflowRevision
| Prop | Type | Default | Description |
|---|---|---|---|
| id | string | undefined | - | |
| workflow_id | string | undefined | - | |
| pipeline_id | string | undefined | - | |
| revision_num | number | undefined | - | |
| editor | string | undefined | - | |
| summary | string | undefined | - | |
| frozen_ref_before | string | undefined | - | |
| frozen_ref_after | string | undefined | - | |
| created_at | string | undefined | - |
WorkflowRevisionListResponse
| Prop | Type | Default | Description |
|---|---|---|---|
| pipeline_id* | string | - | |
| workflow_id* | string | - | |
| count* | number | - | |
| revisions* | WorkflowRevision[] | - |
FunctionsCost
| Prop | Type | Default | Description |
|---|---|---|---|
| est_cost_usd | number | undefined | - | |
| input_tokens | number | undefined | - | |
| output_tokens | number | undefined | - | |
| provider_calls | number | undefined | - | |
| cache_read_tokens | number | undefined | - |
FunctionsProgress
| Prop | Type | Default | Description |
|---|---|---|---|
| phase | string | undefined | - | |
| phases | string[] | undefined | - | |
| phase_index | number | undefined | - | |
| phase_total | number | undefined | - | |
| complete | boolean | undefined | - | |
| counters | Record<string, number> | undefined | - | |
| connectors_done | number | undefined | - | |
| connectors_total | number | undefined | - | |
| current_connector | string | undefined | - |
FunctionsPlanNode
| Prop | Type | Default | Description |
|---|---|---|---|
| id* | string | - | |
| kind* | string | - | |
| label | string | undefined | - | |
| route | string | undefined | - | |
| authored | boolean | undefined | - | |
| node_ref | string | undefined | - | |
| rationale | string | undefined | - | |
| coordinate | WorkflowCoordinate | undefined | - | |
| workflow_hint | string | undefined | - | |
| cross_source | boolean | undefined | - |
FunctionsPlanEdge
| Prop | Type | Default | Description |
|---|---|---|---|
| from* | string | - | |
| to* | string | - | |
| kind | string | undefined | - |
FunctionsPlanGraph
| Prop | Type | Default | Description |
|---|---|---|---|
| nodes | FunctionsPlanNode[] | undefined | - | |
| edges | FunctionsPlanEdge[] | undefined | - | |
| counts | Record<string, number> | undefined | - |
FunctionsFdeInput
| Prop | Type | Default | Description |
|---|---|---|---|
| mode | string | undefined | - | |
| stage | string | undefined | - | |
| executed | boolean | undefined | - | |
| cost | FunctionsCost | undefined | - | |
| _progress | FunctionsProgress | undefined | - | Live progress is mirrored here because Blackboard has no progress column. |
| gate_failed | number | undefined | - | |
| nodes_emitted | number | undefined | - | |
| nodes_authored | number | undefined | - | |
| connectors_done | number | undefined | - | |
| connectors_total | number | undefined | - | |
| intents_derived | number | undefined | - | |
| signals_emitted | number | undefined | - | |
| workflows_total | number | undefined | - | |
| workflows_persisted | number | undefined | - | |
| workflows_self_healed | number | undefined | - | |
| graph | FunctionsPlanGraph | undefined | - |
WorkflowEditPayload
| Prop | Type | Default | Description |
|---|---|---|---|
| param_edits | Record<string, unknown> | undefined | - | |
| config_yaml | string | undefined | - | |
| ai_note | string | undefined | - | |
| rerun | boolean | undefined | - | |
| edited_by | string | undefined | - |
RunCatalogNodePayload
| Prop | Type | Default | Description |
|---|---|---|---|
| connector_id* | string | - | |
| max_rows | number | undefined | - |
CanvasPosition
| Prop | Type | Default | Description |
|---|---|---|---|
| x* | number | - | |
| y* | number | - |
GraphPositionsPayload
| Prop | Type | Default | Description |
|---|---|---|---|
| positions | Record<string, CanvasPosition> | undefined | - | |
| collapsed | Record<string, boolean> | undefined | - |
SubmitFunctionsReviewPayload
| Prop | Type | Default | Description |
|---|---|---|---|
| action* | "confirm" | "retry" | "reject" | - | |
| feedback | string | undefined | - |
Supporting types
export type FunctionsView = "detectors" | "signals"
export type EditableParams = Record<string, Record<string, unknown>>
export type CanvasNodeKind = "source" | "catalog" | "node" | "workflow" | "step" | "signal"
export type CanvasEdgeKind = "feeds" | "uses" | "flows" | "emits" | "contains"
export type NodeActionKind = "run" | "form" | "code" | "table" | "expand" | "detail"
export type NodesByConnector = Record<
string,
{ nodes: CatalogNode[]; count: number }
>export type WorkflowRunStatus = | "ok" | "signal" | "no_signal" | "error" | "gate_failed" | "uncompilable" | string
export type WorkflowTemplateFormat = "yaml" | "edit" | "json"
More Semantics Stages variants
Changelog
0.1.10
- Replace the copied placeholder description with one that actually describes this block; the registry description is what the agent skill shows as "pick it when".
functions-01
0.1.9
- Global css update
0.1.8
- Replace raw scale token classes with semantic tokens (text-text-error, bg-bg-success, border-border-warning, etc.) to respect client theme overrides.
0.1.7
Functions01.utils.ts: remove stale JSDoc module comment block.
0.1.6
- Add
WorkflowAboutTab,WorkflowCanvas,WorkflowDetailPanel,WorkflowEditDialog,WorkflowEvidenceTab,WorkflowListPanel,WorkflowSummaryCard, andWorkflowWiringTabsubcomponents; register all inregistry-item.json. - Add
yaml-lint.tsutility for YAML validation inTuneConfigEditor.
0.1.4
Move all state, handlers, and logic from Functions01 into preview; Functions01 is now a pure presentational pass-through.
0.1.1
Initial release of the functions-01 block with workflow canvas, review queue, per-stage review views, node inspector, tune config editor, and signals panel.