API reference
Cockpit client (features) API
One folder per Cockpit feature: domain, services, workflows, hooks, components, pages.
964 modules, 3309 documented exports. Version next. All packages.
ui/client/features/auth
- GithubMarkGitHub's own mark (Octicons "mark-github", MIT), used inside GitHub's standard "Sign in with GitHub" button. Exports: GithubMark
- LoginBackdropPresentation-only: the full-screen slideshow behind the login card. Exports: LoginBackdrop
- LoginScreenExports: LoginScreen
- UserMenuExports: UserMenu
- AuthGateControllerExports: AuthGateController
- UserMenuControllerExports: UserMenuController
- SessionExports: blocksCockpit, canSignIn, showsAccount
- TypewriterThe login screen's changing tagline (owner request 2026-09-20): a typing effect that cycles through a few short, casual one-liners (not dramatic). Exports: TypewriterPhase, TypewriterState, DELETING_MS, GAP_MS, HOLD_MS, initialTypewriter, LOGIN_PHRASES, TYPING_MS, ...
- UserLabelExports: displayName, initial
- useAuthSessionExports: AuthSessionProvider, useAuthSession
- useTypewriterExports: useTypewriter
- useUserMenuExports: useUserMenu
- AuthGatePageExports: AuthGatePage
- UserMenuPageExports: UserMenuPage
- AuthApiExports: fetchSession, logout
- AuthLoginExports: startGithubLogin, testLogin
- typesExports: AuthId, AuthSession, AuthUser
- AuthSessionExports: AuthSessionAction, AuthSessionState, SessionLoad, SignInState, initialAuthSessionState, authSessionReducer, isLoadingSession, isSigningIn, ...
ui/client/features
- authExports: AuthGateController, AuthId, AuthSession, AuthSessionProvider, AuthUser, blocksCockpit, canSignIn, displayName, ...
- blocksExports: ArgView, BlockArg, BlockCardView, BlockExample, BlockPatch, BlockRow, BlockRunRequest, BlocksBrowserProps, ...
- cloneExports: branchProblem, buildJobView, buildRecentRows, CloneAction, CloneAuthMode, CloneController, CloneFormReading, CloneFormState, ...
- command-paletteExports: Command, CommandGroup, CommandPaletteController, CommandRegistryProvider, PaletteViewProps, RegistryApi, RegistryContext, ShortcutLike, ...
- component-docsExports: ComponentDescription, ComponentEntry, ComponentsController, ComponentWorkflowResponse, DescribeResponse, DocView, EditAction, EditPhase, ...
- dashboardExports: CommandResult, CreateInput, DashboardController, DashboardId, ImportInput, RefactorInput, ResearchInput, StageAction, ...
- debugExports: Answer, ApiResult, ApproveBarProps, ApproveView, ChooserCardProps, ChooserExit, ChooserOption, ChooserSummary, ...
- design-reviewExports: isReviewOverlayEnabled, ReviewOverlayController
- dev-serverExports: BranchIndicator, BranchKind, buildDevServerView, describeBranch, DevServerAction, DevServerCard, DevServerCommand, DevServerController, ...
- diagnosticsExports: DiagnosticRow, DiagnosticsAction, DiagnosticsApi, DiagnosticsController, DiagnosticsState, DiagnosticsStatus, DiagnosticsViewModel, DiagnosticsViewProps, ...
- directory-browserExports: BrowseFailure, DirBadge, DirectoryBrowserController, DirectoryBrowserId, DirectoryPicker, DirectoryPickerProps, DirEntryView, DirListingView, ...
- envelopesExports: ComposeAction, ComposeApi, ComposeState, ComposeStep, EnvelopePreview, EnvelopesAction, EnvelopesApi, EnvelopesController, ...
- feature-catalogExports: FeatureFile, FeatureIndexResponse, FeatureLayerView, FeatureListState, FeatureRow, FeaturesScreenController, FeatureSummaryResponse, FeatureView, ...
- flow-browserExports: BrowserView, BrowserViewSwitch, FlowBrowserAction, FlowBrowserController, FlowBrowserState, FlowBrowserView, FlowController, FlowData, ...
- generate-controlExports: ActionKind, AiOption, GenerateControl, GenerateControlProps, GenerateMode, GenerateResult, GenerateViewState, MechanicalOption, ...
- git-sessionExports: AutoCommitSettingsController, AutoCommitView, buildAutoCommitView, buildGitSessionView, canCommitNow, CommitConfig, CommitImpact, CommitIndicatorController, ...
- helpExports: HelpController, HelpData, HelpId, HelpViewState, TopicSection, useHelp
- list-browserExports: countText, filterItems, isSelectKey, ListBrowser, ListBrowserProps, ListItem, listNextIndex, ListStatus, ...
- live-previewExports: LivePreviewImpact, LivePreviewPanel, LivePreviewPin, LivePreviewView, PreviewArgs, PreviewPlugin, PreviewReach, PreviewRect, ...
- new-projectExports: canCreateProject, formStateOf, FRAMEWORK_CHOICES, initialNewProjectState, MAX_PROJECT_NAME_LENGTH, NewProjectController, NewProjectEvent, NewProjectFormState, ...
- notesExports: ApiResult, CompareLine, ConflictView, createNote, Draft, duplicateNote, EditorHandlers, EditorView, ...
- ollamaExports: fetchOllamaModels, fetchOllamaStatus, OllamaController, OllamaModel, OllamaModelId, OllamaStatus, PullProgress, useOllama
- page-builderExports: componentName, handlerName, PageBuilderController, PageBuilderPageProps, SerializedNode, SerializedNodes, serializeToTsx, usePageBuilder
- pages-editorExports: CodeSegment, describeSummary, DiagnosticSeverity, DiagnosticSource, diagnosticsToMarkers, DiagnosticSummary, DiffHunk, DiffRow, ...
- planExports: ApiResult, ArgView, CatalogueProps, Constraints, ConstraintsProps, ConstraintsView, ErrorView, Executor, ...
- processesExports: ApprovalsController, ArtifactRow, BlastRadius, ControlEvent, ControlVerb, DecideResult, DecisionNote, DetailView, ...
- project-gateExports: OpenProjectResult, ProjectGateController, ProjectGateId, ProjectStatus, useProjectGate
- requirementExports: Answer, AnswerTarget, AnswerView, ApiResult, ApproveBarProps, ApproveState, ApproveView, BlockView, ...
- reviewExports: Analysis, AnalysisDone, Badge, BlastEvidence, BlastRadiusProps, BlastRow, BlastView, BranchList, ...
- rulesExports: ExceptionEditAction, ExceptionEditState, ExceptionEditStatus, ExceptionRow, ExceptionsAction, ExceptionsApi, ExceptionsState, ExceptionsStatus, ...
- settingsExports: LlmCapability, LlmModels, LlmProviders, SaveStatus, Settings, SettingsController, SettingsId, useSettings
- shellExports: ActivityBarProps, AmbientBackdrop, GateTopBarProps, ModelStatus, NarrowPane, NarrowProps, NarrowTabBarProps, PaneId, ...
- spec-breakdownExports: GenerateResult, LoadError, LoadReadBack, LoadReport, MachineSpecReport, ReadBack, ReadBackItem, ReadBackSentence, ...
- statesExports: describeError, EmptyState, EmptyStateProps, ErrorDescription, ErrorState, ErrorStateProps, LoadingState, LoadingStateProps, ...
- storyExports: buildStoryIndicatorState, buildStoryIndicatorView, StoriesApi, StoryAiApi, StoryApi, StoryBridgeApi, StoryCompare, StoryConsentApproval, ...
- testsExports: CloneDialog, CloneDialogView, CloneResult, cloneTest, CodeView, Comparison, ComparisonView, CoverageRow, ...
- wizardExports: ChatMessageData, ChatRole, ClientWizardEvent, PathExpectation, ProjectTree, ProjectTreeEntry, ReviewFinding, ServerWizardEvent, ...
- workflowsExports: DiffHunk, diffSourceLines, InlineSegment, NarrativeFinding, NarrativeMachine, NarrativeMachineView, NarrativeScenario, NarrativeState, ...
ui/client/features/blocks
- BlockCardExports: BlockCard
- BlocksBrowserExports: BlocksBrowser
- BlocksControllerExports: BlocksController
- BlockRunPure (DOMAIN-001): "Run this block" is not a new way to run anything. Exports: blockRunRequest, modelPatch, runBlocked
- BlocksViewPure (DOMAIN-001): the Blocks tab as everything it shows, already worked out: the cards in registry order, each with its plain-words facts, its settings and its refusal, plus the filter, the one-line summary and the e... Exports: buildBlocksView, matchesFilter, summaryText
- BlockTextPure (DOMAIN-001): the words the Blocks tab uses, in one place, so a test can hold them to plain language. Exports: KIND_READ, KIND_WRITE, MODEL_NONE, MODEL_OPTIONAL, OFF_HINT, RUN_LABEL, argKind, commandText, ...
- BlockTypesBlocks: the shapes every layer shares. Exports: BlockArg, BlockExample, BlockPatch, BlockRow, BlockRunRequest, BlocksData, BlockSettings, Engine, ...
- useBlocksExports: useBlocks
- BlocksShellTabsExports: blocksShellTab
- BlocksApiThe Blocks catalogue and its per-project settings over ui/server's /api/blocks. Exports: loadBlocks, saveBlocks
- typesBlocks: the view models the controller hands to the presentation-only components (COMPONENT-003: a component gets props, never application logic). Exports: ArgView, BlockCardView, BlocksBrowserProps, BlocksView
- BlocksMachinePure (WORKFLOW-001): what the Blocks tab knows, and how each event changes it. Exports: initialScreen, screenReducer
ui/client/features/clone
- CloneAuthSectionExports: CloneAuthSectionProps, CloneAuthSection
- CloneFormExports: CloneForm
- CloneJobListExports: CloneJobList
- CloneTokenFieldExports: CloneTokenField
- ConnectRemoteFormExports: ConnectRemoteForm
- GithubConnectedPanelExports: GithubConnectedPanel
- GithubConnectionRowExports: GithubConnectionRow
- GithubConnectPanelExports: GithubConnectPanel
- GithubRepoPickerExports: GithubRepoPicker
- RecentClonesExports: RecentClones
- RepoOptionsExports: RepoOptions
- StatusLineExports: StatusLine
- CloneControllerExports: CloneController
- CloneJobsControllerExports: CloneJobsController
- ConnectRemoteControllerExports: ConnectRemoteController
- GithubConnectionControllerExports: GithubConnectionController
- CloneFieldHintsPure (DOMAIN-001): plain-words hints for the optional fields of the clone form. Exports: branchProblem, folderNameProblem, tokenProblem
- CloneFormViewPure (DOMAIN-001): what the clone form shows for the text typed so far, and the rows of the recent list. Exports: CloneFormReading, buildRecentRows, readCloneForm
- CloneInputPure (DOMAIN-001): read whatever a person pastes into the one "repository" field. Exports: CloneInput, CloneInputSource, describeSource, normalizeCloneInput
- CloneJobViewPure (DOMAIN-001): a clone job as the screen shows it. Exports: buildJobView, isLiveJob
- CloneProgressPure (DOMAIN-001): the numbers in a clone's progress, in words a person reads at a glance. Exports: formatBytes, percentOf
- CloneUrlPure (DOMAIN-001): how an address typed into the clone form is read — the folder name it will get and a plain hint when it does not look right. Exports: suggestFolderName, urlProblem
- GithubConnectionPure (DOMAIN-001): the GitHub connection for private repositories as the screens show it. Exports: effectiveAuthMode, githubPanelView
- GithubRepoPagesPure (DOMAIN-001): paging and plain-words hints for the repository picker. Exports: mergeRepoPages, reposHint
- GithubRepoPickPure (DOMAIN-001): the repository picker's entries and what is selected. Exports: pickedRepo, repoAddress, repoOptions
- useCloneExports: useClone
- useCloneJobsExports: useCloneJobs
- useGithubConnectionExports: useGithubConnection
- useRecentClonesExports: useRecentClones
- useRemoteExports: useRemote
- ClonePageExports: CloneJobsPage, ClonePage, ConnectRemotePage
- GithubConnectionPageExports: GithubConnectionPage
- RecentClonesPageExports: RecentClonesPage
- CloneJobPollingExports: pollCloneJob, pollCloneList
- CloneReadApiExports: listClones, readClone
- CloneRecentStoreExports: forgetClone, readRecentClones, rememberClone
- CloneStartApiExports: cancelClone, pullClone, startClone
- GithubApiExports: disconnectGithub, readGithubRepos, readGithubStatus
- GithubConnectExports: githubConnectUrl, startGithubConnect
- RemoteApiExports: connectRemote, readRemote
- typesExports: CloneAuthMode, CloneId, CloneJob, CloneJobView, ClonePreview, CloneReadResult, CloneStartInput, CloneStartResult, ...
- CloneExports: CloneAction, CloneFormState, initialCloneState, cloneReducer
- GithubExports: GithubAction, GithubState, initialGithubState, githubReducer
- RecentExports: RecentAction, RecentState, initialRecentState, recentReducer
- RemoteWorkflows own application state/flow but never import React (WORKFLOW-001): a plain reducer. Exports: RemoteAction, RemoteFormState, initialRemoteState, remoteReducer
ui/client/features/command-palette
- CommandPaletteExports: CommandPalette
- CommandPaletteControllerExports: CommandPaletteController
- CommandGroupsPure (DOMAIN-001): grouping commands under headings for display. Exports: flatten, groupCommands
- CommandRegistryPure (DOMAIN-001): the command registry. Exports: addCommands, removeCommands
- CommandSearchPure (DOMAIN-001): fuzzy filtering of commands by a typed query. Exports: filterCommands, scoreCommand
- PaletteKeysPure (DOMAIN-001): keyboard rules of the palette. Exports: isPaletteShortcut, isQuickOpenShortcut, moveActive
- useCommandPaletteExports: useCommandPalette
- useCommandRegistryExports: RegistryApi, RegistryContext, CommandRegistryProvider, useCommandRegistry
- useOpenPaletteExports: useOpenPalette
- usePaletteLifecycleExports: usePaletteLifecycle
- useRegisterCommandsExports: useRegisterCommands
- CommandPalettePageExports: CommandPalettePage
- PaletteBrowserExports: rememberFocus, subscribePaletteShortcut
- typesA thing the palette can run. Exports: Command, CommandGroup, PaletteViewProps, ShortcutLike
- PaletteStatePure (WORKFLOW-001): the palette's query and highlighted row. Exports: PaletteAction, PaletteState, initialPalette, paletteReducer
ui/client/features/component-docs
- ComponentDocPanelExports: ComponentDocPanel
- ComponentIsolatedPanelExports: ComponentIsolatedPanel
- ComponentSourcePanelExports: ComponentSourcePanel
- FlowInsetExports: FlowInset
- IsolatedComponentPreviewExports: IsolatedComponentPreview
- PropsTableExports: PropsTable
- StateSwitcherExports: StateSwitcher
- UsedByPanelExports: UsedByPanel
- ComponentsControllerExports: ComponentsController
- ComponentListPure (DOMAIN-001): what the Components screen lists and what it says about one component. Exports: docReason, docView, findComponent, toListItems
- useComponentDocExports: useComponentDoc
- useComponentEditorExports: useComponentEditor
- useComponentListExports: useComponentList
- useComponentUsedByExports: useComponentUsedBy
- useComponentWorkflowExports: useComponentWorkflow
- ComponentsPageExports: ComponentsPage
- ComponentsApiExports: commitComponentSave, getComponentDescription, getComponents, getComponentSource, getComponentUsedBy, getComponentWorkflow, previewComponentSave
- typesExports: ComponentDescription, ComponentEntry, ComponentWorkflowResponse, DescribeResponse, DocView, EditAction, EditPhase, EditState, ...
- ComponentEditPure (WORKFLOW-001): the plain-file edit flow of the Components screen. Exports: initialEditState, editReducer, isDirty
ui/client/features/dashboard
- CreateFormExports: CreateForm
- ImportFormExports: ImportForm
- LayerCheckboxesExports: LayerCheckboxes
- RefactorFormExports: RefactorForm
- ResearchFormExports: ResearchForm
- StageActionsExports: StageActions
- DashboardControllerExports: DashboardController
- StageActionsControllerExports: StageActionsController
- DashboardPure — no external effects (DOMAIN-001). Exports: LAYERS, toggleLayer
- StageActionsPure (DOMAIN-001): the actions the Features stage offers, one per command form of the retired Dashboard (owner decision 2026-09-20: the Dashboard is gone, Create / Refactor / Import become stage actions). Exports: STAGE_ACTIONS, nextOpenAction
- useDashboardExports: useDashboard
- DashboardPageExports: DashboardPage
- CreateCommandExports: createCommand
- ImportCommandExports: importCommand
- RefactorCommandExports: refactorCommand
- ResearchCommandExports: researchCommand
- typesExports: CommandResult, CreateInput, DashboardId, ImportInput, RefactorInput, ResearchInput, StageAction, StageActionId
- CreateFormVisibilityPure (WORKFLOW-001) — which fields the Create form should show, given its current "kind". Exports: createFormVisibility
- ImportFormVisibilityPure (WORKFLOW-001) — which fields the Import form should show, given its current mode. Exports: importFormVisibility
- RefactorFormVisibilityPure (WORKFLOW-001) — which fields the Refactor form should show, given its current action. Exports: refactorFormVisibility
- ResearchFormVisibilityPure (WORKFLOW-001) — which fields the Research form should show, given its current action. Exports: researchFormVisibility
ui/client/features/debug
- ApproveBarExports: ApproveBar
- ChooserCardExports: ChooserCard, shortName
- VerifyPromptExports: VerifyPrompt
- DebugControllerExports: DebugController
- DebugTypesServer response shapes (/api/debug) and the screen state (LIN-137, part of LIN-82/epic ). Exports: Answer, ApiResult, ChooserExit, ChooserOption, ChooserSummary, PlanErrorLike, ReadResult, ScreenAction, ...
- DebugViewPure (DOMAIN-001): ScreenState -> the view model DebugPage renders. Exports: buildDebugView
- VerifyPure (DOMAIN-001). Exports: shouldReiterate
- useDebugExports: useDebug
- DebugPageExports: DebugPageProps, DebugPage
- DebugApiThe debug chain over ui/server's POST /api/debug/read (LIN-137). Exports: readDebug
- typesView models the controller hands to the presentation-only components (COMPONENT-003: a component gets props, never application logic). Exports: ApproveBarProps, ApproveView, ChooserCardProps, DebugStepView, DebugViewModel, VerifyPromptProps
- DebugMachinePure (WORKFLOW-001): what the Debug screen knows, and how each event changes it. Exports: initialScreen, screenReducer
ui/client/features/design-review
- ReviewOverlayControllerExports: ReviewOverlayController
- ReviewOverlayFlagdev-only design-review overlay (threadmark-react): on only when this flag is the exact string "1". Exports: isReviewOverlayEnabled
- ReviewOverlayLoaderloads threadmark-react only when NEXT_PUBLIC_REVIEW_OVERLAY=1 is set at build time. Exports: loadReviewOverlay
- ReviewOverlayLoader.stubbuild-time stand-in for ReviewOverlayLoader.ts, used ONLY when NEXT_PUBLIC_REVIEW_OVERLAY is not "1" at build time (see next.config.ts's webpack `resolve.alias`). Exports: loadReviewOverlay
- reviewOverlayStubbuild-time stand-in for threadmark-react, used ONLY when NEXT_PUBLIC_REVIEW_OVERLAY is not "1" at build time (see next.config.ts's webpack `resolve.alias`).
ui/client/features/dev-server
- BranchProvenanceExports: BranchProvenance
- DevServerActionsExports: DevServerActions
- DevServerCardExports: DevServerCard
- DevServerConfirmExports: DevServerConfirm
- DevServerControllerExports: DevServerController
- DevServerPollingWhile the server is coming up the card is watched closely; otherwise it is only kept honest (a branch switch, a crash). Exports: POLL_MS, POLL_STARTING_MS, pollIntervalMs
- DevServerViewPure (DOMAIN-001): one status in, one finished view out. Exports: buildDevServerView, describeBranch, projectName
- useDevServerExports: useDevServer
- useDevServerStatusExports: useDevServerStatus
- useDevServerUrlExports: useDevServerUrl
- DevServerPageExports: DevServerPage
- DevServerAck"Starting a dev server runs your project's code, so you see the exact command once." Remembered per project AND per command text: when package.json's script changes, the question comes back. Exports: hasSeenCommand, rememberCommand
- DevServerActionsDriving the target app's dev server. Exports: restartDevServer, startDevServer, stopDevServer
- DevServerApiReading the target app's dev server status. Exports: fetchDevServer
- DevServerPollingTimers are external effects (SERVICE-001): the dev server status loop lives here, not in its hook. Exports: watchDevServerStatus
- typesShapes ui/server's `/api/dev-server` returns (see ui/server/src/devServer.mjs), plus the finished view the domain layer builds from them. Exports: BranchIndicator, BranchKind, DevServerCard, DevServerCommand, DevServerFailure, DevServerHandlers, DevServerRefusal, DevServerState, ...
- DevServerThe dev-server card's own state machine: what has been read, whether a click is in flight, and whether the one-time "this is what will run" question is open. Exports: DevServerAction, DevServerSession, initialDevServerSession, devServerReducer
ui/client/features/diagnostics
- DiagnosticsListExports: DiagnosticsList
- LogsListExports: LogsList
- DiagnosticsControllerExports: DiagnosticsController
- LogsControllerExports: LogsController
- DiagnosticsSummaryPure (DOMAIN-001): the short texts and counts derived from a validate run. Exports: headline, statusText, statusTextChars, statusTexts, tabBadge
- DiagnosticsViewPure (DOMAIN-001): the run state turned into exactly what the Diagnostics tab renders. Exports: buildDiagnosticsView, severityLabel
- LogEntriesPure (DOMAIN-001): merging polled log entries into the list the tab shows. Exports: lastId, mergeEntries
- LogViewPure (DOMAIN-001): log entries in display form. Exports: buildLogRows, clockTime
- ViolationsPure (DOMAIN-001): reading `construct validate` violations. Exports: pageTarget, severityCounts, sortViolations
- useDiagnosticsExports: useDiagnostics
- useLogsExports: useLogs
- DiagnosticsPageExports: DiagnosticsPage
- LogsPageExports: LogsPage
- DiagnosticsApiExports: ValidateResult, fetchValidation
- LogsApiExports: fetchLogs
- LogsPollingRecent server/command output is polled while the Logs tab is mounted. Exports: LOGS_POLL_MS, watchLogs
- typesExports: DiagnosticRow, DiagnosticsAction, DiagnosticsApi, DiagnosticsState, DiagnosticsStatus, DiagnosticsViewModel, DiagnosticsViewProps, LogEntry, ...
- DiagnosticsPure (WORKFLOW-001): the state machine of one validate run. Exports: initialDiagnostics, diagnosticsReducer
ui/client/features/directory-browser
- DirectoryPickerExports: DirectoryPicker
- DirectoryBrowserControllerExports: DirectoryBrowserController
- DirectoryListingExports: badgesFor, toEntryView, toListingView
- DirectoryPagingExports: appendPage
- useDirectoryBrowserExports: useDirectoryBrowser
- useDirectoryLoaderExports: useDirectoryLoader
- useWorkspaceFolderExports: WorkspaceFolder, useWorkspaceFolder
- DirectoryBrowserPageExports: DirectoryBrowserPage
- DirectoryBrowserExports: browseDirectory
- typesExports: BrowseFailure, DirBadge, DirectoryBrowserId, DirectoryPickerProps, DirEntryView, DirListingView, RawDirEntry, RawDirListing
- DirectoryBrowserExports: DirectoryBrowserAction, DirectoryBrowserState, initialDirectoryBrowserState, directoryBrowserReducer, directoryError, directoryIsLoading, directoryListing
ui/client/features/envelopes
- ComposeStageExports: ComposeStage
- EnvelopesListExports: EnvelopesList
- EnvelopesControllerExports: EnvelopesController
- ComposeStepsPure (DOMAIN-001): add, remove and reorder compose steps -- 's center stage. Exports: addComposeStep, moveComposeStep, removeComposeStep
- EnvelopesViewPure (DOMAIN-001): the run state turned into exactly what the Envelopes tab renders. Exports: buildEnvelopesView
- useComposeExports: useCompose
- useEnvelopePreviewsExports: useEnvelopePreviews
- useEnvelopesExports: useEnvelopes
- useFlowCatalogueExports: useFlowCatalogue
- useRunExports: useRun
- useSaveExports: useSave
- EnvelopesPageExports: EnvelopesPage
- EnvelopesShellTabExports: envelopesShellTab
- EnvelopesApiui/server/src/envelopesApi.mjs, a thin adapter over packages/core/flows.mjs's listFlows/loadFlow/saveFlow, a deterministic envelope preview, and "Run this flow" through the same Process/Approvals path Plan mode's "Run... Exports: CatalogueResult, EnvelopesResult, FlowResult, PreviewResult, RunFlowResult, SaveFlowResult, fetchFlow, fetchFlowCatalogue, ...
- typesSame three executors packages/core/plan.mjs's PLAN_FLOWS declare, and ui/client/features/plan/types.ts's `Executor` -- redeclared here rather than imported cross-feature (this feature's public API is its own index.ts,... Exports: ComposeAction, ComposeApi, ComposeState, ComposeStep, EnvelopePreview, EnvelopesAction, EnvelopesApi, EnvelopesState, ...
- ComposePure (WORKFLOW-001): the state machine of the compose draft -- 's center stage. Exports: initialCompose, composeReducer
- EnvelopesPure (WORKFLOW-001): the state machine of one saved-flows read. Exports: initialEnvelopes, envelopesReducer
- RunPure (WORKFLOW-001): 's "Run this flow" -- idle/loading/started/error, same shape as Plan mode's own run state (ui/client/features/plan/domain/PlanTypes.ts's `runStatus`). Exports: initialRun, runReducer
- SavePure (WORKFLOW-001): 's "Save this flow" -- a name plus the draft's steps, previewed then committed. Exports: initialSave, saveReducer
ui/client/features/feature-catalog
- FeatureDetailsExports: FeatureDetails
- FeatureFlowViewExports: FeatureFlowView
- FeatureStructureExports: FeatureStructure
- LayerViolationsPanelExports: LayerViolationsPanel
- MissingLayersExports: MissingLayers
- StructureViewSwitchExports: StructureView, StructureViewSwitch
- FeaturesScreenControllerExports: FeaturesScreenController
- FeatureViewPure (DOMAIN-001): the Features screen's rows and the details of one feature, made from what `construct summarize` already answers. Exports: buildFeatureView, fileHref, findFeature, legacyNote, toListItems
- useFeatureListExports: useFeatureList
- useFeatureSummaryExports: useFeatureSummary
- FeaturesApiExports: getFeatureIndex, getFeatureSummary
- typesShapes of what the Features screen reads: the feature index (GET /api/features) and one feature's summary (GET /api/features/:name/summary, the same JSON as `construct summarize feature:<name>`). Exports: FeatureFile, FeatureIndexResponse, FeatureLayerView, FeatureListState, FeatureRow, FeatureSummaryResponse, FeatureView, LegacyFiles, ...
ui/client/features/flow-browser
- BrowserViewSwitchExports: BrowserViewSwitch
- FlowNotesExports: FlowNotes
- FlowRowItemExports: FlowRowItem
- FlowTreeExports: FlowTree
- FlowBrowserControllerExports: FlowBrowserController
- BrowserViewChoiceExports: browserViewKey, sanitizeBrowserView
- FlowHintsExports: hintFor
- FlowRelationsExports: relationsFor
- FlowRowsExports: fileLabel, flowRows, visibleRows
- useBrowserViewExports: useBrowserView
- useFlowBrowserExports: useFlowBrowser
- FlowBrowserPageExports: FlowBrowserPage
- BrowserViewStorageExports: loadBrowserView, saveBrowserView
- FlowApiExports: fetchFlow, fetchProjectKey
- typesShapes for the Browser pane's Flow view. Exports: BrowserView, FlowBrowserAction, FlowBrowserState, FlowBrowserView, FlowController, FlowData, FlowHint, FlowHover, ...
- FlowBrowserPure (WORKFLOW-001): what the Flow view knows (load state, the selected row, collapsed rows) and how each event changes it. Exports: initialFlowBrowser, flowBrowserReducer
ui/client/features/generate-control
- GenerateControlExports: GenerateControl
- GenerateStatePure (DOMAIN-001): which of ia-generate-states' seven states a given prop snapshot is in. Exports: effectiveMode, generateViewState
- useGenerateModeExports: useGenerateMode
- ModeStorageThe Mechanical/AI choice, remembered per-browser per action kind (docs/design/ ia-five-screens.md section 8.6: "stored per user and per action kind ... Exports: loadMode, saveMode
- typesThe inline Generate control's slot contract (docs/design/ia-five-screens.md section 8.6, issue). Exports: ActionKind, AiOption, GenerateControlProps, GenerateMode, GenerateResult, GenerateViewState, MechanicalOption, WillSend
ui/client/features/git-session
- AutoCommitSettingsExports: AutoCommitSettings
- CommitIndicatorExports: CommitIndicator
- DirtyTreePromptExports: DirtyTreePrompt
- AutoCommitSettingsControllerExports: AutoCommitSettingsController
- CommitIndicatorControllerExports: CommitIndicatorController
- CommitImpactTextThe counted impact a commit claims, as text. Exports: describeImpact, describePerFeature
- CommitWordingHow commit-on-save talks about itself: mode names, windows, and what each mode will actually do. Exports: MODE_LABELS, describeMode, formatWindow
- GitSessionViewOne status object in, two finished view models out. Exports: WINDOW_CHOICES, buildAutoCommitView, buildGitSessionView
- SaveStateWhat the commit indicator says, and when the Commit button is offered. Exports: canCommitNow, describeDirtyGroups, describeSaveState
- useGitSessionExports: useGitSession
- GitSessionPageExports: GitSessionPage
- GitSessionActionsThe two things a user can actively ask commit-on-save to do: answer the dirty-tree question, and commit what is pending without waiting for the window. Exports: answerDirtyTree, commitNow
- GitSessionApiReading and configuring the commit-on-save session. Exports: fetchGitSession, saveCommitConfig
- GitSessionPollingHow often the Cockpit re-reads the session. Exports: GIT_SESSION_POLL_MS, watchGitSession
- typesShapes ui/server's `/api/git/*` routes return (see ui/server/src/autoCommit.mjs), plus the finished view models the domain layer builds from them. Exports: AutoCommitView, CommitConfig, CommitImpact, CommitMode, CommitRecord, DirtyAnswer, DirtyPrompt, GitSession, ...
- GitSessionThe commit-on-save session's own small state machine: loading, busy, and the last error. Exports: GitSessionAction, GitSessionState, initialGitSessionState, gitSessionReducer
ui/client/features/help
- AttributionExports: Attribution
- CliReferenceExports: CliReference
- CliTopicExports: CliTopic
- GettingStartedStatic content — no props, no data dependency. Exports: GettingStarted
- HelpTocExports: HelpToc
- ListingDetailsTutorialStatic content — no props, no data dependency. Exports: ListingDetailsTutorial
- RouteImportTutorialStatic content — no props, no data dependency. Exports: RouteImportTutorial
- SetupSettingsTutorialStatic content — no props, no data dependency. Exports: SetupSettingsTutorial
- UiGuideExports: UiGuide
- HelpControllerExports: HelpController
- HelpExports: buildTopicSections
- HelpTopicsPure (DOMAIN-001): the Help screen's top-level topics, shared by the in-page contents nav and the Browser-pane contents tab so they never drift. Exports: HelpTopic, HELP_TOPICS
- useHelpExports: useHelp
- useOpenSectionOnHashExports: useOpenSectionOnHash
- HelpPageExports: HelpPage
- HelpExports: fetchHelp
- typesExports: HelpData, HelpId, HelpViewState, TopicSection
- HelpExports: loadedHelpView
ui/client/features/list-browser
- ListBrowserExports: ListBrowser
- ListFilterPure (DOMAIN-001): the filter box of a Browser-pane list. Exports: countText, filterItems
- ListNavPure (DOMAIN-001): keyboard model of a Browser-pane list (an ARIA listbox with one tab stop). Exports: isSelectKey, listNextIndex, tabStopIndex
- QuerySelectionPure (DOMAIN-001): a selection kept in the URL query (`?feature=billing`), so a reload or a shared link opens the same thing. Exports: readSelection, validSelection, withSelection
- useListKeysExports: useListKeys
- useUrlSelectionExports: useUrlSelection
- typesExports: ListBrowserProps, ListItem, ListStatus
ui/client/features/live-preview
- LivePreviewEmptyExports: LivePreviewEmpty
- LivePreviewNotesExports: PLUGIN_LINE, LivePreviewNotes
- LivePreviewPanelExports: LivePreviewPanel
- LivePreviewToolbarExports: LivePreviewToolbar
- LivePreviewViewPure (DOMAIN-001): what the live preview panel is handed to draw. Exports: LivePreviewImpact, LivePreviewPin, LivePreviewView, PreviewPlugin, PreviewReach
- PreviewFrameStylePure (DOMAIN-001): how a chosen preview size becomes a box, and how the frame's real measured size reads. Exports: previewFrameStyle, previewSizeReadout
- PreviewSizePure (DOMAIN-001): the device sizes the live preview can be shown at. Exports: PreviewSizeId, PreviewSizeOption, PREVIEW_SIZES, previewSizeOption, sanitizePreviewSize
- PreviewUrlPure (DOMAIN-001) Only http(s) URLs may be framed; returns the normalised URL or null. Exports: isLocalPreviewUrl, normalizePreviewUrl
- useFullScreenPreviewExports: useFullScreenPreview
- usePreviewExports: PreviewArgs, usePreview
- usePreviewMeasureExports: usePreviewMeasure
- usePreviewServerUrlExports: usePreviewServerUrl
- usePreviewSignalsExports: PLUGIN_WAIT_MS, usePreviewSignals
- usePreviewSizeExports: usePreviewSize
- PreviewReachabilityIs anything answering at the preview address? Exports: probePreview
- PreviewSizeStorageExports: loadPreviewSize, savePreviewSize
- PreviewSourceThe preview transport behind a small interface, so the iframe + postMessage implementation can be swapped (e.g. Exports: PreviewSource, PreviewRect, PreviewRectQuery, PreviewSignal, createIframePreviewSource
- ProjectKeyExports: fetchPreviewProjectKey
ui/client/features/new-project
- NewProjectFormExports: NewProjectForm
- NewProjectControllerExports: NewProjectController
- NewProjectNamePure (DOMAIN-001): what the New project form says about the name typed so far. Exports: FRAMEWORK_CHOICES, MAX_PROJECT_NAME_LENGTH, canCreateProject, projectDestination, projectNameProblem
- useNewProjectExports: useNewProject
- NewProjectPageExports: NewProjectPage
- NewProjectApiExports: createProject
- typesThe frameworks "New project" can start from (mirrors the server's closed set, newProjectApi.mjs). Exports: NewProjectFormState, NewProjectFramework, NewProjectResult
- NewProjectExports: NewProjectEvent, initialNewProjectState, newProjectMachine, formStateOf
ui/client/features/notes
- ConflictBannerExports: ConflictBanner
- NoteEditorExports: NoteEditor
- NotesBrowserExports: NotesBrowser
- SaveIndicatorExports: SaveIndicator
- StatusTagExports: StatusTag
- NotesControllerExports: NotesController
- NoteComparePure (DOMAIN-001): the Compare view of a stale write, "mine" against "theirs", as one list of lines. Exports: MAX_COMPARE_LINES, compareLines, differs
- NoteDraftPure (DOMAIN-001): what "unsaved" means, what a list row looks like for a note, and which notes are read-only. Exports: AUTOSAVE_MS, byRecent, draftOf, isDirty, isReadOnly, pickInitial, rowOf, sameDraft
- NotesViewPure (DOMAIN-001): the screen state as the words and flags the components draw. Exports: buildEditorView, buildRows
- NoteTextPure (DOMAIN-001): the words of the Notes screen, for the states of docs/design/mocks/ia-notes-states.html. Exports: Indicator, STATUS_LABEL, clock, failureHint, failureReason, indicatorOf, rowTitle, statusTag
- NoteTypesDurable Notes: the shapes every layer shares. Exports: ApiResult, CompareLine, Draft, ListState, Note, NoteAnchor, NoteRow, NoteStatus, ...
- useAutosaveExports: useAutosave
- useNoteActionsExports: useNoteActions
- useNotesExports: useNotes
- useNoteSaveExports: useNoteSave
- useNotesLoadExports: noteFromAddress, useNotesLoad
- NotesPageExports: NotesPageProps, NotesPage
- NotesShellTabsExports: notesShellTabs
- NotesApiDurable Notes over ui/server's /api/notes. Exports: createNote, duplicateNote, fetchNote, listNotes, removeNote, saveNote
- typesDurable Notes: the view models the controller hands to the presentation-only components (COMPONENT-003: a component gets props, never application logic). Exports: ConflictView, EditorHandlers, EditorView, IndicatorView, NoteEditorProps, NotesBrowserProps, RowView, TagView
- NotesMachinePure (WORKFLOW-001): what the Notes screen knows, and how each event changes it. Exports: initialScreen, openRow, screenReducer
ui/client/features/ollama
- InstallGuidanceExports: InstallGuidance
- ModelListExports: ModelList
- ModelPickerExports: ModelPicker
- OllamaStatusPanelExports: OllamaStatusPanel
- PullFormExports: PullForm
- OllamaControllerExports: OllamaController
- OllamaPure (DOMAIN-001: no external effects anywhere in this file, even in a comment — no React import either) — byte-size and pull-progress formatting for the Ollama status/model-list screens. Exports: formatBytes, pullPercent
- OllamaPlatformPure (DOMAIN-001) — split out of Ollama.tsx to stay under the per-file primary-export threshold. Exports: Platform, detectPlatform, installCommandFor
- QwenModelsPure (DOMAIN-001) — the vetted list of real Qwen2.5-Coder tags from Ollama's own model library (https://ollama.com/library/qwen2.5-coder), verified live on 2026-09-18 rather than guessed: sizes 0.5b/1.5b/3b/7b/14b/32b... Exports: QwenTag, QWEN_CODER_TAGS, recommendedQwenTag
- useOllamaExports: useOllama
- OllamaPageExports: OllamaPage
- OllamaExports: fetchOllamaModels, fetchOllamaStatus
- OllamaModelOpsExports: pullOllamaModel, removeOllamaModel
- OllamaModelSelectionThis feature's chosen "active" local model, persisted per-browser via localStorage — a per-viewer convenience, not shared state, so it lives here rather than round-tripping to ui/server. Exports: loadSelectedModel, saveSelectedModel
- typesExports: OllamaModel, OllamaModelId, OllamaStatus, PullProgress
- OllamaExports: OllamaAction, OllamaState, initialOllamaState, ollamaReducer
ui/client/features/page-builder
- BlockFieldExports: BlockFieldProps, BlockField, useBlockNode
- ButtonExports: craft
- ContainerExports: craft
- CraftResolverExports: CraftResolver
- ExportPanelExports: ExportPanelProps, ExportPanel
- HeadingExports: craft
- ImageExports: craft
- SettingsPanelExports: SettingsPanel
- TextExports: craft
- ToolboxExports: Toolbox
- TopBarExports: TopBarProps, TopBar
- PageBuilderControllerExports: PageBuilderController
- TsxExportCraft.js layout -> one TSX file. Exports: SerializedNode, SerializedNodes, componentName, handlerName, serializeToTsx
- usePageBuilderExports: usePageBuilder
- PageBuilderPageExports: PageBuilderPage
- LayoutStoreThe builder's only effects: a layout kept in this browser's localStorage (one key per page name), and the exported TSX handed to the clipboard or saved as a file. Exports: exportFile, loadLayout, saveLayout
- typesWhat the builder page needs from its controller: the page name, the export panel and the three top-bar actions. Exports: PageBuilderPageProps
- BuilderFlowThe builder screen's own state: the page name, the export panel and the last status line. Exports: BuilderAction, BuilderState, initialBuilder, builderReducer
ui/client/features/pages-editor
- AutoMapPanelExports: AutoMapPanel
- ChangeTabExports: ChangeTab
- DiffHunkListExports: DiffHunkList
- DiffTabExports: DiffTab
- DiffViewExports: DiffView
- EditorBreadcrumbExports: EditorBreadcrumb
- EditorTabStripExports: EditorTab, EditorTabStrip
- ExternalChangeNoticeExports: ExternalChangeNotice
- FlowFilePeekExports: FlowFilePeek
- HighlightedSnippetEditorExports: HighlightedSnippetEditor
- ImpactPanelExports: ImpactPanel
- InspectorPanelExports: InspectorPanel
- JsxFlowNodeExports: DropTargetData, JsxNodeType, WILDCARD_RECEIVED_HANDLE, JsxFlowNode
- LinkedCodeExports: LinkedCode
- MonacoSourceEditorExports: MonacoSourceEditor
- NavigatorPanelExports: NavigatorPanel
- NodeDiagnosticsPanelExports: NodeDiagnosticsPanel
- NodeNotesPanelExports: NodeNotesPanel
- OverlaysMenuExports: OverlaysMenu
- PageFindingsPanelExports: PageFindingsPanel
- PagesBrowserExports: PagesBrowser
- PagesBrowserTabExports: PagesBrowserTab
- PalettePanelExports: PalettePanel
- PreviewPanelExports: PreviewPanel
- PropFlowDiagramExports: PropFlowDiagram
- PropRowExports: PropRow
- QuickFixPanelExports: QuickFixPanel
- ReferenceTrailExports: ReferenceTrail
- SaveStatusExports: SaveStatus
- ScopeLinkGraphExports: ScopeLinkGraph
- ScopePanelExports: ScopePanel
- ScopeTabExports: ScopeTab
- SnippetDiffPreviewExports: SnippetDiffPreview
- SnippetEditorExports: SnippetEditor
- SnippetFlowCanvasExports: SnippetFlowCanvas
- SourceEditorExports: SourceEditor
- SourcePanelExports: SourcePanel
- StageSourceViewExports: StageSourceView
- SuggestedNextStepsExports: SuggestedNextSteps
- TestsPanelExports: TestsPanel
- TextareaSourceEditorExports: TextareaSourceEditor
- TreePanelExports: TreePanel
- WrapPreviewExports: WrapPreview
- FlowFilePeekControllerExports: FlowFilePeekController
- PagesBrowserControllerExports: PagesBrowserController
- PagesEditorControllerExports: PagesEditorController
- AllPagesPure (DOMAIN-001): the rows of the Pages screen's list of all pages. Exports: PageRef, allPageItems, pageOfItem
- ChangeImpactwhat the Inspector's Change tab hands the live preview to draw: everything about the pending refactor a person needs while looking at the app, nothing about how it was computed. Exports: ChangeImpactPreview
- CodeLinksExports: linkSegments, unlinkedReferences
- CxSrcPure (DOMAIN-001) — the `data-cx-src="file:line:col"` value written by the core annotator. Exports: CxSrc, isOpenPage, parseCxSrc
- NodeDiagnosticsExports: diagnosticsForNode, severityLabel
- OpenPagePure (DOMAIN-001): a request to open one page file in the Pages editor (e.g. Exports: OpenPageTarget, OPEN_PAGE_EVENT, openPageQuery, parseOpenPage, withOpenPage
- OpenSourcePure (DOMAIN-001): a request to open a bare project file at a known position in the Navigator, e.g. Exports: OpenSourceTarget, OPEN_SOURCE_EVENT, openSourceTargetFromCxSrc
- PageCommandsPure (DOMAIN-001): the Ctrl P quick-open entries — one "Go to page" command per page, so opening the palette and typing a feature or file name jumps straight to it (the same registry every other screen's commands use,... Exports: PageCommandSpec, pageCommandSpecs
- PreviewSelectionPure (DOMAIN-001, no runtime imports) — maps a click in the live preview (a `data-cx-src="file:line:col"` value written by the core annotator) onto a node of the parsed page tree. Exports: PreviewSelectResult, findNodeAtPosition, resolvePreviewSelection
- PropFlowGeometryExports: GeometryOptions, MeasureText, NodeLayout, PillPosition, layoutPillHierarchy, namedProps
- PropFlowLayoutExports: PillEdge, buildPillFlow, colorFor, layoutPillHierarchy, NodeLayout, PillPosition
- PropFlowRenameExports: RenameUnionFind, RenameLink, buildRenameUnionFind, findRenameLinks
- PropFormattingExports: propInputKind, propLabel
- ScopeBindingPure (DOMAIN-001) — the type-fit rule for the Scope tab's click-to-bind flow. Exports: normalizeTypeText, typeFits
- ScopeLinkViewPure (DOMAIN-001) — maps the server's scope/binding graph (core `buildScopeLinks`, ) to a view model: a left column of the page's in-scope declarations, a right column of the selected element's props, colour-coded edg... Exports: buildScopeView, scopeColor
- SnippetDiffExports: diffSnippetLines
- SnippetFlowGraphExports: FlowPill, SnippetFlowEdge, SnippetFlowNode, SnippetFlowNodeData, OUTGOING_HANDLE_PREFIX, RECEIVED_HANDLE_PREFIX, buildSnippetFlowGraph
- SnippetHighlightingExports: highlightJsxSnippet
- SourceMarkersPure (DOMAIN-001) — turns the server's diagnostics into the editor-neutral markers a SourceEditor renders, and summarizes them for the panel header. Exports: describeSummary, diagnosticsToMarkers, summarizeDiagnostics
- TrailAvailabilityExports: canBack, canForward
- TrailFoldExports: MAX_VISIBLE_STEPS, foldTrail
- TrailHistoryExports: emptyTrail, fileTitle, startTrail
- TrailMovesExports: goBack, goForward, goTo
- TrailStepsExports: currentStep, pushStep, refreshRoot
- TreeNodesExports: findNode, flattenParentOf
- UnitPaththe Inspector Change tab acts on the unit the currently open file already is. Exports: UnitLocation, parseUnitPath
- useAllPagesExports: useAllPages
- useAutoMapExports: useAutoMap
- useBufferLintExports: useBufferLint
- useChangeExports: ChangeVerbId, CHANGE_VERBS, useChange
- useFileFindingsExports: FileFindings, useFileFindings
- useFindingPinsExports: useFindingPins
- useGitStatusExports: useGitStatus
- useImpactExports: useImpact
- useLinkedCodeExports: LinkHover, useLinkedCode
- useLivePreviewExports: useLivePreview
- useNodeNotesExports: NodeNotes, useNodeNotes
- useOpenPageRequestsExports: useOpenPageRequests
- usePageChangeExports: usePageChange
- usePageDiagnosticsExports: PageDiagnostics, usePageDiagnostics
- usePagesEditorExports: usePagesEditor
- usePagesEditorCommandsExports: usePagesEditorCommands
- usePagesEditorTabsExports: usePagesEditorTabs
- usePageSourceExports: usePageSource
- usePaletteExports: usePalette
- usePaletteInsertExports: usePaletteInsert
- usePaletteWrapExports: usePaletteWrap
- usePropFlowExports: usePropFlow
- usePropRowExports: usePropRow
- useQuickFixExports: useQuickFix
- useReferenceTrailExports: RootLoader, useReferenceTrail
- useScopeBindExports: useScopeBind
- useScopeLinksExports: useScopeLinks
- useSnippetEditorExports: useSnippetEditor
- useSnippetFlowExports: InteractiveFlowNode, InteractiveNodeData, NodeToolbarActions, useSnippetFlow, SnippetFlowNodeData
- useSuggestedNextStepsExports: SuggestedStepId, useSuggestedNextSteps
- useTestsCoverageExports: PageTestsCoverage, useTestsCoverage
- useTrailShortcutsExports: useTrailShortcuts
- PagesEditorPageExports: PagesEditorPage
- AutoMapApiExports: applyAutoMap, getUnmappedProps
- ChangeApiInspector "Change" tab: the dry-run preview (never writes) and the one plan/run call that starts the mechanical refactor, reusing the same server routes Plan mode uses. Exports: ChangePlan, ChangeStep, LayerInfo, RefactorPreview, getLayers, previewMove, previewRename, runChange
- GitStatusApiExports: PageGitStatus, getPageGitStatus
- ImpactApiExports: PageImpact, getPageImpact
- OpenPageRequestExports: requestOpenPage, subscribeOpenPage
- OpenPageUrlExports: writeOpenPageUrl
- OpenSourceRequestExports: requestOpenSource, subscribeOpenSource
- PageChangePollingExports: PAGE_CHANGE_POLL_MS, watchPageChange
- PageChangesApiExports: dismissPageChange, getPageChange
- PagesBrowsingExports: getAllPages, getFeatures, getPages, getPageTree
- PageSourceApiExports: LintResult, PageSourceResult, QuickFixMode, QuickFixResult, getPageSource, lintPageBuffer, quickFixPageBuffer
- PaletteApiExports: confirmWrap, getPalette, getWrapSuggestion, insertPaletteEntry
- PropsApiExports: getNodeProps, saveNodeProp
- ReferenceNavApiExports: getNavFile, getNavPage, openNavReference, openNavSource
- ScopeLinksApiExports: getScopeLinks
- SnippetApiExports: getNodeSnippet, saveNodeSnippet
- SnippetFlowApiExports: parseSnippetTree, rewireSnippetWire
- SnippetStructureApiExports: addSnippetChild, moveSnippetNode, removeSnippetNode
- typesExports: CodeSegment, DiagnosticSeverity, DiagnosticSource, DiagnosticSummary, DiffHunk, DiffRow, NavReference, NavRelation, ...
- PagesEditorExports: PagesEditorAction, PagesEditorState, initialPagesEditorState, pagesEditorReducer
- ReferenceNavigationExports: ReferenceNavigationAction, ReferenceNavigationState, initialReferenceNavigation, referenceNavigationReducer
ui/client/features/plan
- CatalogueBarExports: CatalogueBar
- ConstraintsListExports: ConstraintsList
- ImpactPaneExports: ImpactPane
- ImpactTableExports: ImpactTable
- NoteStatusLineExports: NoteStatusLine
- PlanPaneExports: PlanPane
- ProposalListExports: ProposalList
- ProvenanceBadgeExports: ProvenanceBadge
- RequirementLinkExports: RequirementLink
- RunBarExports: RunBar
- StepArgsExports: StepArgs
- StepCardExports: StepCard
- TicketFieldsExports: TicketFields
- TicketPaneExports: TicketPane
- UnitPickerExports: UnitPicker
- PlanControllerExports: PlanController
- CommandTextPure (DOMAIN-001): the exact command a step will run, as one line a person can read and copy. Exports: commandLine, quoteWord
- ConstraintsViewPure (DOMAIN-001): what the ticket pane shows about the constraints and the proposals, already as sentences. Exports: constraintsView, proposalView
- ExecutorLabelsPure (DOMAIN-001): the three tags of the design (docs/design/cockpit-layout.md section 4), in one place. Exports: EXECUTORS, executorLabel
- ImpactTextPure (DOMAIN-001): the sentences of the impact pane. Exports: headline, seedNote, whyText
- ImpactViewPure (DOMAIN-001): the impact report as the strings and rows the pane shows. Exports: buildImpactView
- NoteStatusViewPure (DOMAIN-001): the one line the ticket pane shows about the durable note. Exports: buildNoteStatus
- PlanDocumentPure (DOMAIN-001): the plan document sent to the server, and how an argument shows in its box. Exports: argText, buildPlan
- PlanNotePure (DOMAIN-001): how a durable note becomes the Plan screen's state and back. Exports: SavedKeys, counterAfter, isUnsaved, keysOfNote, noteMeta, planPart, screenFromNote, stepsKey, ...
- PlanPaneViewPure (DOMAIN-001): the plan pane's props from the screen state. Exports: buildPlanPane
- PlanTypesPlan mode: server shapes (ui/server /api/plan) and the screen state. Exports: ApiResult, Constraints, FlowArg, FlowInfo, ImpactFeature, ImpactFile, ImpactReason, ImpactReport, ...
- RunBarViewPure (DOMAIN-001): the Run bar: where a model will be used, and why Run is off. Exports: blockedReason, modelNotice, runBar
- StepEditPure (DOMAIN-001): edit one step: its tag, an argument, its title. Exports: retagStep, setStepArg, setStepTitle
- StepErrorsPure (DOMAIN-001): which step each named validator error belongs to, so it can be shown next to that step in plain words. Exports: errorLead, errorViews, splitErrors
- StepIdsPure (DOMAIN-001): step ids. Exports: nextStepId
- StepListPure (DOMAIN-001): add, remove and reorder steps. Exports: moveStep, newStep, removeStep
- StepTouchesPure (DOMAIN-001): what a step will touch, worked out from its own arguments. Exports: deriveTouches
- StepViewPure (DOMAIN-001): one step as everything its card shows, already worked out: the tags, the argument boxes, the exact command line, what it touches, and its errors in plain words. Exports: buildStepView
- StepViewInputExports: StepViewInput
- SuggestedStepsPure (DOMAIN-001): read-only steps an impact report suggests. Exports: suggestedSteps
- TicketPaneViewPure (DOMAIN-001): the ticket pane's props from the screen state. Exports: buildTicketPane
- usePlanContextExports: usePlanContext
- usePlanNoteExports: usePlanNote
- usePlanRunExports: RunNote, usePlanRun
- usePlanScreenExports: usePlanScreen
- usePlanValidationExports: usePlanValidation
- useSeedActionsExports: useSeedActions
- useStepActionsExports: PrefilledStep, useStepActions
- PlanPageExports: PlanPageProps, PlanPage
- PlanShellTabsExports: planShellTabs
- ContextApiReading the project's constraints, features and flow catalogue from ui/server's /api/plan/context. Exports: fetchContext
- PlanCheckApiThe plan: the server's verdict after every edit (/api/plan/validate) and Run (/api/plan/run). Exports: runPlanOnServer, validatePlanOnServer
- SeedsApiTicket text to units to impact: /api/plan/propose (a text match, no model) and /api/plan/impact. Exports: analyseImpact, proposeSeeds
- typesPlan mode: the shapes every layer shares. Exports: ArgView, CatalogueProps, ConstraintsProps, ConstraintsView, ErrorView, Executor, ImpactPaneProps, ImpactRow, ...
- PlanMachinePure (WORKFLOW-001): what the Plan screen knows, and how each event changes it. Exports: initialScreen, screenReducer
ui/client/features/processes
- ApprovalsListExports: ApprovalsList
- ArtifactReviewExports: ArtifactReview
- GcNoticeExports: GcNotice
- ProcessAnnouncerExports: ProcessAnnouncer
- ProcessArtifactsExports: ProcessArtifacts
- ProcessListExports: ProcessList
- ProcessLogExports: ProcessLog
- ProcessStepsExports: ProcessSteps
- ApprovalsControllerExports: ApprovalsController
- ProcessesControllerExports: ProcessesController
- ApprovalRowsPure (DOMAIN-001): which processes have files waiting on a human decision, and how many. Exports: ApprovalRow, buildApprovalRows, pendingApprovalCount
- ControlButtonsPure (DOMAIN-001): the buttons a process shows, derived from the machine's own `controls`. Exports: controlButtons
- DetailViewPure (DOMAIN-001): one process in display form. Exports: artifactRow, buildDetailView
- DiffLinesPure (DOMAIN-001): a unified diff split into lines tagged for colouring. Exports: diffLines
- GcCountsPure (DOMAIN-001): -- turning the dry-run gc report into what the drawer shows: one total count, and the plain-words lines the "Details" popover lists. Exports: gcCleanupCount, gcDetailLines
- ListRowsPure (DOMAIN-001): the process list in display form. Exports: buildListRows, pendingNote
- ProcessAnnouncementsPure (DOMAIN-001): the sentence read aloud when a process's state changes. Exports: SeenStates, nextSeenStates, stateChangeAnnouncements
- ProcessClockPure (DOMAIN-001): a timestamp as the log shows it. Exports: clock
- ProcessCountsPure (DOMAIN-001): the numbers the top-bar pill and the list show. Exports: progressPercent, progressText, runningCount
- ProvenanceLabelsPure (DOMAIN-001): what each log badge means, as the hover text on the badge. Exports: PROVENANCE_MEANING
- ReviewTypesShapes of the approval gate's review; re-exported from types.ts. Exports: BlastRadius, DecideResult, DecisionNote, DiffLine, GateRefusal, GateVerdict, Review, ReviewArtifact, ...
- ReviewViewPure (DOMAIN-001): the approval gate's review in display form. Exports: buildReviewView, reviewRow, verdictText
- StateLabelsPure (DOMAIN-001): the words for a whole process's state. Exports: STATE_LABEL
- StepLabelsPure (DOMAIN-001): the words for a step, and for who does it. Exports: STEP_STATUS_LABEL, executorLabel
- ValidationTextPure (DOMAIN-001): the check that runs after an approval, in plain words. Exports: validationText
- useProcessAnnouncerExports: useProcessAnnouncer
- useProcessesExports: useProcesses
- useProcessesLiveExports: useProcessesLive
- useReviewExports: useReview
- ProcessesPageExports: ProcessesPage
- ProcessActionsApiExports: ControlResult, fetchDiff, sendControl
- ProcessesApiExports: fetchGc, fetchProcess, fetchProcesses
- ProcessesSocketExports: connectProcessesSocket
- ReviewApiExports: fetchReview, sendDecision
- typesShapes of ui/server's /api/processes (see processesService.mjs). Exports: ArtifactRow, ControlEvent, ControlVerb, DetailView, DiffResult, GcDetailLine, GcReport, ListRow, ...
- ProcessesPure (WORKFLOW-001): what the Processes drawer knows, and how each event changes it. Exports: initialProcesses, processesReducer, summariesOf
ui/client/features/project-gate
- NoProjectScreenExports: NoProjectScreen
- ProjectGateScreenExports: ProjectGateScreen
- ProjectGateControllerExports: ProjectGateController
- ProjectGateExports: isValidProject
- useProjectGateExports: useProjectGate
- ProjectGatePageExports: ProjectGatePage
- ProjectGateExports: fetchProjectStatus, initProject, openProject
- typesExports: OpenProjectResult, ProjectGateId, ProjectStatus
- ProjectGateExports: ProjectGateAction, ProjectGateState, initialProjectGateState, projectGateReducer
ui/client/features/requirement
- ApproveBarExports: ApproveBar
- CardPanelExports: CardPanel
- OfferCardExports: OfferCard
- OpenQuestionExports: OpenQuestion
- OpenQuestionsExports: OpenQuestions
- PlacementPanelExports: PlacementPanel
- PlanQuestionsExports: PlanQuestions
- ProofActionsExports: ProofActions
- ProofCardExports: ProofCard
- ProofFailureExports: ProofFailure
- ProofSkipFormExports: ProofSkipForm
- SentenceFormExports: SentenceForm
- ShapeOfferExports: ShapeOffer
- ShapeOptionExports: ShapeOption
- TimelinePanelExports: TimelinePanel
- RequirementControllerExports: RequirementController
- ExamplesPure (DOMAIN-001): the three example sentences the screen offers as buttons. Exports: Example, EXAMPLES, withAnswer
- LabelsPure (DOMAIN-001): the words for the kinds the deterministic blocks return. Exports: NOUN_LABEL, PLACEMENT_LABEL, VERB_LABEL
- NoteDraftPure (DOMAIN-001): what "Save as note" stores. Exports: NoteDraftBody, noteDraftOf
- PlacementQuestionsPure (DOMAIN-001): the three placement questions, in the order they are asked (docs/PLACEMENT.md). Exports: QUESTIONS
- ProofCardPure (DOMAIN-001): the proof of a generated screen as the words and flags the Proof card draws. Exports: buildProofView, chainLine, proofStateOf
- ProofSkipPure (DOMAIN-001): the reason a person gives for skipping the proof of a screen. Exports: PROOF_REASON, skipReasonOf
- ProofTargetPure (DOMAIN-001): what the plan on screen says it proves. Exports: proofTargetOf
- RequirementTypesThe requirement chain: the shapes every layer shares. Exports: Answer, ApiResult, ApproveState, Card, CardCheck, CardNoun, CardVerb, Decision, ...
- RequirementViewPure (DOMAIN-001): the screen state as the words and flags the components draw. Exports: buildRequirementView
- ShapeOfferPure (DOMAIN-001): the screen-shape offer (q-shape, ) as the card the Requirement screen draws. Exports: deciderOf, isSourceOffer, offerHeading, offerViews
- SuggestionPure (DOMAIN-001): what the decision provider suggested for a closed question, as the words the screen shows. Exports: suggestedByLabel, suggestionView
- TimelinePure (DOMAIN-001): the placement read back in the order it runs. Exports: screenOf, toTimeline
- useProofExports: useProof
- useRequirementExports: useRequirement
- RequirementPageExports: RequirementPage
- ProofApiThe proof of a generated screen over ui/server's POST /api/requirement/proof/{status,run,skip}. Exports: proofStatusOnServer, runProofOnServer, skipProofOnServer
- ProofPollingHow often the screen asks whether the plan's files have reached the project, while the plan is approved and they have not. Exports: APPLIED_POLL_MS, watchPlanApplied
- RequirementApiThe requirement chain over ui/server's POST /api/requirement/read. Exports: readRequirement
- typesThe requirement chain: the view models the controller hands to the presentation-only components (COMPONENT-003: a component gets props, never application logic), so everything a component shows is already a string or... Exports: AnswerTarget, AnswerView, ApproveBarProps, ApproveView, BlockView, CardCheckView, CardNounView, CardPanelProps, ...
- RequirementMachinePure (WORKFLOW-001): what the Requirement screen knows, and how each event changes it. Exports: initialScreen, screenReducer
ui/client/features/review
- BadgeLegendExports: BadgeLegend
- BlastRadiusExports: BlastRadius
- BranchListExports: BranchList
- ChangeTreeExports: ChangeTree
- FailureNoticeExports: FailureNotice
- FindingDetailExports: FindingDetail
- FindingsPanelExports: FindingsPanel
- FindingsSummaryExports: FindingsSummary
- HealthBadgeExports: HealthBadge
- IndicatorCardsExports: IndicatorCards
- PlanPickerExports: PlanPicker
- ReviewSourcesExports: ReviewSources
- UnitSummariesExports: UnitSummaries
- ReviewChangeControllerExports: ReviewChangeController
- ReviewControllerExports: ReviewController
- ReviewListControllerExports: ReviewListController
- AnalysisStartPure (DOMAIN-001): when does the screen ask for an analysis, and when does it keep waiting for one. Exports: headsToStart, isLive, shouldStart
- BadgeGlossaryPure (DOMAIN-001): the Tools pane of the list, "What the badges mean". Exports: GLOSSARY
- BadgesPure (DOMAIN-001): turn a finished analysis into the badges the list shows. Exports: badgesOf, pendingText
- BlastViewPure (DOMAIN-001): the declared-vs-actual scope of a change. Exports: buildBlastView
- DegradedNoticePure (DOMAIN-001): the engine's `degraded` banner. Exports: degradedNotice
- FailureViewPure (DOMAIN-001): what a failure says and what to do next. Exports: describeFailure
- FeatureGroupingPure (DOMAIN-001): the product of the Review screen. Exports: OUTSIDE_LABEL, groupByFeature, toLayers
- FindingsTypesFindings, blast radius and failure view models and their component props. Exports: BlastRadiusProps, BlastRow, BlastView, FailureAction, FailureNoticeProps, FailureView, FindingDetailProps, FindingDetailView, ...
- FindingsViewPure (DOMAIN-001): the two kinds of finding, kept apart. Exports: buildFindingDetail, buildFindingsView
- IndicatorViewPure (DOMAIN-001): how an indicator reads on its card. Exports: buildIndicatorCard, buildIndicatorCards, changeHeadline
- LayerGroupingPure (DOMAIN-001): the same changed files the other way round: one group per layer, in reading order. Exports: groupByLayer
- LayerOrderPure (DOMAIN-001): the order layers read in, from the core of a feature outward to where it is wired up. Exports: UNCLASSIFIED_LAYER, layerLabel, layerRank
- RankingPure (DOMAIN-001): the order of the list, and the sentence that explains it (the ordering rule is visible, not a hidden score). Exports: orderExplanation, rankBranches, riskScore
- TreeFilesPure (DOMAIN-001): a changed file as the tree shows it (name and status already in words, so the components stay presentation-only). Exports: fileName, flatFiles, toTreeFile
- TreeNavPure (DOMAIN-001): the changed-units tree as data, and the keyboard model over it. Exports: VisibleRow, flattenVisible, navigate, tabStop
- TreeNodesPure (DOMAIN-001): the changed-units tree as data. Exports: buildTreeNodes, findFileNode, findNode
- TreeTypesTypes of the changed-units tree: its nodes, what a key does, and the keyboard state a controller hands the component. Exports: ChangeTreeProps, TreeAction, TreeGrouping, TreeNavProps, TreeNodeView
- UnitRowsPure (DOMAIN-001): the stage's "what each changed unit now does" rows. Exports: buildUnitsView, trimLead
- WorkflowTypesState-machine shapes for the Review screens (list and one change). Exports: ChangeAction, ChangeViewState, ListAction, ListState
- useAnalysisCancelExports: useAnalysisCancel
- useFailureActionsExports: useFailureActions
- useReviewChangeExports: useReviewChange
- useReviewListExports: useReviewList
- useReviewPlansExports: useReviewPlans
- useReviewRouteExports: useReviewRoute
- useTreeNavigationExports: useTreeNavigation
- ReviewChangePageExports: ReviewChangePageProps, ReviewChangePage
- ReviewListPageExports: ReviewListPageProps, GitConnectEmptyState, ReviewListPage
- ReviewShellTabsExports: ChangeBrowserTabsInput, ChangeDrawerTabsInput, ChangeToolsTabsInput, ListBrowserTabsInput, changeBrowserTabs, changeDrawerTabs, changeToolsTabs, gitCommitsTab, ...
- AnalysisApiStarting and cancelling an analysis (ui/server's POST /api/review/analyze and /cancel). Exports: cancelAnalysis, requestAnalysis
- PlansApiThe saved plans a change can be compared with: read-only, from ui/server's /api/review/plans. Exports: fetchPlans
- ReviewApiReading ui/server's /api/review (read-only). Exports: ApiFailure, fetchBranches, fetchChange
- typesShapes of ui/server's /api/review (reviewApi.mjs) and of the PR-health report it carries (schemas/pr-health.v1.json, src/engine/prHealth.mjs). Exports: Analysis, AnalysisDone, Badge, BlastEvidence, BranchList, BranchListProps, BranchRow, BranchRowView, ...
- ChangeMachinePure (WORKFLOW-001): what the Review screen knows about the ONE change being reviewed, and how each event changes it: waiting while the analysis runs, ready when it is done, failed with the engine's message. Exports: initialChange, changeReducer
- ListMachinePure (WORKFLOW-001): what the Review branch list knows, and how each event changes it. Exports: initialList, listData, listIsSettling, listReducer
ui/client/features/rules
- AdvancedPanelExports: AdvancedPanel
- ExceptionsPanelExports: ExceptionsPanel
- GlobListEditorExports: GlobListEditor
- ProjectSettingsPanelExports: ProjectSettingsPanel
- RulesListExports: RulesList
- RulesControllerExports: RulesController
- RulesViewPure (DOMAIN-001): the run state turned into exactly what the Rules tab renders. Exports: buildRulesView
- useExceptionsExports: useExceptions
- useGlobListExports: useGlobList
- usePresetExports: usePreset
- useProjectSettingsExports: useProjectSettings
- useRuleEditExports: useRuleEdit
- useRulesExports: useRules
- RulesPageExports: RulesPage
- RulesShellTabExports: rulesShellTab
- RulesApiReuses `/api/validate` (ui/server/src/validateApi.mjs) exactly as the Diagnostics tab does — the Rules composer does not reinvent validation (docs/design/rules-envelopes.md section 0), it only reads `body.summary`, th... Exports: ExceptionsResult, GlobListResult, PresetDiff, ProjectSettingsResult, RuleSeverityDiff, RuleSeveritySaved, RulesResult, fetchExceptions, ...
- typesExports: ExceptionEditAction, ExceptionEditState, ExceptionEditStatus, ExceptionRow, ExceptionsAction, ExceptionsApi, ExceptionsState, ExceptionsStatus, ...
- ExceptionsPure (WORKFLOW-001): slice C -- the state machine of the exceptions list, and of one add/remove edit. Exports: initialExceptions, exceptionEditReducer, exceptionsReducer
- GlobListPure (WORKFLOW-001): slice D -- the state machine of a glob list (nonLayer/frozen), and of one add/remove edit against it. Exports: initialGlobList, globEditReducer, globListReducer
- PresetEditPure (WORKFLOW-001): the state machine of switching to a named preset. Exports: presetEditReducer
- ProjectSettingsPure (WORKFLOW-001): slice 5 -- the state machine of the project.framework/features.root read, and of one pending single-field edit against it. Exports: initialProjectSettings, projectEditReducer, projectSettingsReducer
- RuleEditPure (WORKFLOW-001): the state machine of one rule's severity edit. Exports: ruleEditReducer
- RulesPure (WORKFLOW-001): the state machine of one rules read. Exports: initialRules, rulesReducer
ui/client/features/settings
- SettingsFormExports: SettingsForm
- SettingsSummaryExports: SettingsSummary
- SettingsControllerExports: SettingsController
- SettingsPure (DOMAIN-001) — the one derived label the page shows for "no project resolved yet", pulled out instead of an inline ternary in the page/component. Exports: resolvedRootLabel
- useSettingsExports: useSettings
- SettingsPageExports: SettingsPage
- SettingsExports: fetchSettings, saveSettings
- typesExports: LlmCapability, LlmModels, LlmProviders, SaveStatus, Settings, SettingsId
- SettingsExports: SettingsAction, SettingsState, initialSettingsState, settingsReducer
ui/client/features/shell
- ActivityBarExports: ActivityBar
- AmbientBackdropExports: AmbientBackdrop
- EmptyPanelA designed empty state (principles ): says what is missing and what will appear. Exports: EmptyPanel
- GateTopBarExports: GateTopBar
- NarrowTabBarExports: NarrowTabBar
- PaneResizerExports: PaneResizer
- ProfileMenuItemsExports: ProfileMenuItems
- ProjectInfoPanelExports: ProjectInfoPanel
- ProjectSwitcherExports: ProjectSwitcher
- RailSubTabsExports: RailSubTabs
- ShellLayoutExports: ShellLayout
- StatusBarExports: StatusBar
- TabHostExports: slug, TabHost, tabHostPrefix
- TopBarExports: TopBar
- ShellControllerExports: ShellController
- ShellFrameExports: ShellFrame
- ContrastPure (DOMAIN-001): WCAG 2.x relative-luminance contrast, used to guard the design tokens. Exports: Rgb, contrastRatio, parseColor
- FaviconFramesPure (DOMAIN-001): the Cockpit's tab icon as the logo's toggle mark, frame by frame. Exports: ToggleFrame, FLIP_CYCLE_MS, isAtRest, toDataUrl, toggleFaviconSvg, toggleFrame
- LayoutDefaultsPure (DOMAIN-001): default pane sizes and their limits. Exports: DEFAULT_LAYOUT, PANE_LIMITS
- LayoutStatePure (DOMAIN-001): persisted-layout validation and the per-project storage key. Exports: layoutStorageKey, sanitizeLayout
- NarrowLayoutPure (DOMAIN-001): the narrow (< 900px) layout shows ONE pane at a time, switched from a bottom tab bar (Design , docs/design/cockpit-layout.md). Exports: NARROW_BREAKPOINT, NARROW_MEDIA_QUERY, isNarrowWidth
- NarrowPanesPure (DOMAIN-001): the entries of the narrow layout's bottom tab bar. Exports: DEFAULT_NARROW_PANE, NARROW_PANES, nextNarrowPane
- PaneSizingPure (DOMAIN-001): pane sizing math for the resizers (mouse and keyboard). Exports: clampSize, resizeByKey, sizeFromDrag
- PrimaryScreensPure (DOMAIN-001): the five primary screens of the top bar, Features / Pages / Components / Git / Tests (owner decision 2026-09-20, docs/design/ia-five-screens.md). Exports: PRIMARY_SCREENS, primaryScreenForPath
- ProjectLabelPure (DOMAIN-001): short display name of a project directory. Exports: projectLabel
- ProjectRequirementPure (DOMAIN-001): what the Cockpit frame shows for the state of the open project. Exports: PROJECT_FREE_ROUTES, isProjectFreeRoute, shellMode
- RailKeysPure (DOMAIN-001): keyboard model of the screens rail (the IDE-style activity bar). Exports: railNextIndex
- RailStatePure (DOMAIN-001): whether the screens rail shows icon + label or icons only, and its storage key. Exports: RAIL_STORAGE_KEY, parseRailCollapsed, serializeRailCollapsed
- ScreensPure (DOMAIN-001): the screens the palette lists as "Go to ..." besides the five in the top bar (PrimaryScreens.ts): Requirement, the Import Wizard, and Settings / Local Model / Help, which the profile menu also opens. Exports: SCREENS, isScreenActive
- ShellCommandsPure (DOMAIN-001): the commands the shell itself puts in the palette, as data. Exports: ShellCommandAction, ShellCommandSpec, shellCommandSpecs
- ShortcutsPure (DOMAIN-001): global keyboard shortcuts of the shell. Exports: SHORTCUTS, screenIndexFromKey, shortcutAction
- TabKeysPure (DOMAIN-001): WAI-ARIA tablist keyboard navigation (roving focus). Exports: nextTabId
- TabRegistryPure (DOMAIN-001): the tab registry every region (browser / tools / drawer) uses. Exports: addTab, badgeText, removeTab, resolveActiveTab
- ThemePure (DOMAIN-001): theme parsing and toggling. Exports: DEFAULT_THEME, parseTheme, toggleTheme
- ThemeInitPure (DOMAIN-001): the pre-paint theme bootstrap. Exports: THEME_INIT_SCRIPT, THEME_STORAGE_KEY
- ThemePreferencePure (DOMAIN-001): the Dark / Light / System preference chosen in the profile menu. Exports: parseThemePreference, resolveTheme
- useActiveTabsExports: useActiveTabs
- useDrawerActionsExports: useDrawerActions
- useExecutionModeExports: useExecutionMode
- useFaviconMotionExports: useFaviconMotion
- useFocusModeExports: useFocusMode
- useGitBranchCountExports: useGitBranchCount
- useModelStatusExports: useModelStatus
- useNarrowLayoutExports: useNarrowLayout
- useNarrowTabBarExports: useNarrowTabBar
- usePaneResizerExports: usePaneResizer
- useProjectSwitcherExports: useProjectSwitcher
- useRailCollapsedExports: useRailCollapsed
- useRailKeysExports: useRailKeys
- useRevealPanesExports: useRevealPanes
- useShellCommandsExports: useShellCommands
- useShellDrawerExports: ShellDrawerApi, ShellDrawerContext, useShellDrawer
- useShellFocusExports: ShellFocusApi, ShellFocusContext, useShellFocus
- useShellLayoutExports: useShellLayout
- useShellNavigationExports: useShellNavigation
- useShellRouteExports: useShellRoute
- useShellShortcutsExports: useShellShortcuts
- useShellStageExports: ShellStageApi, ShellStageContext, useShellStage
- useShellTabsExports: ShellTabsProvider, useRegisterShellTab, useShellTabs
- useShellToolsExports: ShellToolsApi, ShellToolsContext, useShellTools
- useTabHostExports: useTabHost
- useThemeExports: useTheme
- useWorkingExports: WORKING_HOLD_MS, useWorking
- GatePageExports: GatePage
- ShellPageExports: ShellPage
- ShellRootPageExports: ShellRootPage
- LayoutStorageExports: loadLayout, saveLayout
- ProjectApiExports: closeProjectDir, fetchExecutionMode, fetchProjectDir, switchProjectDir
- RailStorageExports: loadRailCollapsed, saveRailCollapsed
- ThemeDomExports: applyTheme, resolvePreference, systemPrefersLight
- ThemeStorageExports: loadThemePreference, saveThemePreference
- typesExports: ActivityBarProps, GateTopBarProps, ModelStatus, NarrowPane, NarrowProps, NarrowTabBarProps, PaneId, PaneLimit, ...
- ShellLayoutWorkflow (no React, WORKFLOW-001): the layout state machine. Exports: initialShellLayout, shellLayoutReducer
ui/client/features/spec-breakdown
- ReadBackPanelExports: ReadBackPanel
- SpecTableExports: SpecTable
- SpecBreakdownControllerExports: SpecBreakdownController
- SpecBreakdownView(R6) -- pure view-model builders (DOMAIN-001: no fetch, no React, no dates). Exports: SentenceView, coverageSummary, rowsByGroup, sentenceViews, specRows
- useSpecBreakdownExports: useSpecBreakdown
- SpecBreakdownPageExports: SpecBreakdownPage
- SpecBreakdownApi(R6) -- talks to `POST /api/research` (action `spec`, researchApi.mjs) and `POST /api/create` (a function row's "Fill with AI", the same `create.unit` block every other Cockpit screen uses, ). Exports: fillFunctionWithAi, generateSpec, loadReadBack, loadSpecReport, viewFunctionCode
- types(R6) -- shapes shared across the spec-breakdown feature. Exports: GenerateResult, LoadError, LoadReadBack, LoadReport, MachineSpecReport, ReadBack, ReadBackItem, ReadBackSentence, ...
ui/client/features/states
- EmptyStateExports: EmptyState
- ErrorStateExports: ErrorState
- LoadingStateExports: LoadingState
- OfflineStateExports: OfflineState
- StateCardExports: StateCard
- StatesGalleryControllerExports: StatesGalleryController
- ErrorMessagePure (DOMAIN-001): turn whatever a failed request threw into plain language (principles : say what happened and the fix, not a stack trace). Exports: describeError
- useStatesGalleryExports: useStatesGallery
- StatesGalleryPageExports: StatesGalleryPage
- RetryTimerRuns `done` after a short pretend-work delay; returns a cancel function. Exports: scheduleRetry
- typesExports: EmptyStateProps, ErrorDescription, ErrorStateProps, LoadingStateProps, OfflineStateProps, StateAction, StatesGalleryProps
- RetryFlowPure (WORKFLOW-001: no react import): the sample error's retry flow on the /states reference page. Exports: RetryAction, RetryState, initialRetryState, retryReducer
ui/client/features/story
- StoryIndicatorExports: StoryIndicator
- StoryPatternPanelExports: StoryPatternPanel
- StoryIndicatorStatePure (DOMAIN-001): maps `StoriesApi.get`'s response to a `StoryIndicatorState` -- the subset of design 9.8's states a stored file can answer on its own (no-story, edited-by-hand, stale-vs-code, in-sync). Exports: buildStoryIndicatorState
- StoryIndicatorViewPure (DOMAIN-001): the Story indicator, identical wherever it is shown (feature row, Story tab header). Exports: buildStoryIndicatorView
- useFeatureStoryIndicatorsExports: useFeatureStoryIndicators
- StoryShellTabExports: storyShellTab
- StoryTabControllerExports: StoryTabController
- StoriesApithe client's read of a feature's story.md, backed by `GET /api/stories/:feature` (ui/server/src/storiesApi.mjs, REST surface landed in 562b69f4). Exports: StoryCompare, StoryToolBlock, StoryView, StoriesApi
- StoryAiApithe client calls behind the two AI-assisted story flows (design 9.6), backed by ui/server/src/storyAiApi.mjs. Exports: StoryExtractResult, StoryPatternProposeResult, StorySkeletonResult, StoryAiApi
- StoryApithe one client call `story.md` sources go through: `StoryApi.fetch(url)`, backed by `POST /api/story/fetch` (ui/server/src/storyFetchApi.mjs). Exports: StoryConsentApproval, StoryFetchRequest, StoryFetchResult, StorySelector, StoryApi
- StoryBridgeApithe two-step "propose a diff, review, then save" client calls for story.md's `sources` list, backed by ui/server/src/storyBridgeApi.mjs. Exports: StoryDiffResult, StorySaveResult, StoryBridgeApi
- typesShapes for the Story tab and its indicator (design 9.8, `docs/design/mocks/ia-story-indicators.html`). Exports: StoryIndicatorAction, StoryIndicatorView, StoryIndicatorState, StoryIndicatorTone, StoryVia
ui/client/features/tests
- BrowsersMissingPlaywright launches Chromium; on a machine that never installed it every run fails at once. Exports: BrowsersMissing
- CloneDialogExports: CloneDialog
- CloneFreshnessExports: CloneFreshness
- CoverageTableExports: CoverageTable
- EmptyTestsNo tests yet: a heading, one plain sentence and ONE primary action. Exports: EmptyTests
- FailureKindsExports: FailureKinds
- NoFlowExports: NoFlow
- RunControlsExports: RunControls
- RunFailureExports: RunFailure
- RunPanelExports: RunPanel
- RunResultsExports: RunResults
- StepDocumentExports: StepDocument
- StepEditorFootExports: StepEditorFoot
- StepEditorHeaderExports: StepEditorHeader
- StepEditorStatusExports: StepEditorStatus
- StepEditPanelExports: StepEditPanel
- StepReviewExports: StepReview
- StoryCompareControlExports: StoryCompareControl
- TestDetailExports: TestDetail
- TestsBannersExports: TestsBanners
- TestsBrowserExports: TestsBrowser
- TestsControllerExports: TestsController
- CloneDialogPure (DOMAIN-001): what the clone dialog opens with, and the plain-language reasons it opens for. Exports: LOCK_REASON, cloneDialogFor, editStepReason
- CoveragePure (DOMAIN-001): the words the screen uses for scenario coverage. Exports: coverageSummary, rowForFile, storyCoverageSummary
- FailureKindsExports: FAILURE_KINDS
- FreshnessPure (DOMAIN-001): the words the Tests screen uses for a clone's freshness. Exports: cloneTag, staleOverview
- FreshnessShapesShapes for a clone's freshness: the server's verdict and comparison, and what the banner draws from them. Exports: Comparison, ComparisonView, FailureKind, FlowChange, Freshness, FreshnessModel, FreshnessState, StaleOverview
- FreshnessViewPure (DOMAIN-001): what the clone banner draws, derived from the server's comparison. Exports: freshnessModel
- InlineTextPure (DOMAIN-001): the scenario sentences the enumerator writes mark a state with *asterisks* and a name with `backticks`. Exports: inlineParts
- RunOutcomesPure (DOMAIN-001): the words a test outcome is drawn with. Exports: formatMs, outcomeFor, outcomeView
- RunShapesShapes for running the tests: the server's /api/tests/:feature/runs and what the run panel draws from it. Exports: OutcomeView, ResultMark, RunCounts, RunFailure, RunLive, RunOutcome, RunPanelProps, RunPanelView, ...
- RunTextPure (DOMAIN-001): the sentences of a run. Exports: liveText, problemView, runSummary
- RunViewPure (DOMAIN-001): what the run panel, a test's detail and the coverage table draw from a run snapshot, as plain text and flags, so the components stay presentation-only. Exports: resultCell, runPanelView, testRunView
- StepChangesPure (DOMAIN-001): how many changes a draft is waiting to save, and the plain-language problems that would make the server refuse it (the server stays the authority). Exports: changeCount, problemsOf
- StepCodePure (DOMAIN-001): what a step binds to and the statement it becomes. Exports: CHANGE_LABEL, bindingOf, codeOf
- StepDraftPure (DOMAIN-001): the draft of a step document being edited: its rows, what changed since it was opened, and the list the server is asked to validate. Exports: changeOf, draftOf, payloadOf
- StepMovesPure (DOMAIN-001): moving and inserting rows of a draft. Exports: canMove, insertStep, move
- StepNewPure (DOMAIN-001): a new row, filled with the first thing the flow offers (the user changes it in the panel). Exports: blankStep
- StepTextPure (DOMAIN-001): the words of one step. Exports: humanize, keywordOf, sentenceOf
- StepViewPure (DOMAIN-001): the rows the step document draws, derived from the draft. Exports: stepRows
- TestNamesPure (DOMAIN-001): turning what a person types into a test file name. Exports: clonePath, defaultCloneName, slugify
- TestsViewPure (DOMAIN-001): everything the Tests screen draws that is DERIVED from its state and the server's listing, so components and pages stay presentation-only. Exports: cloneDialogView, selectedTest, summaryOf
- useCloneActionsExports: useCloneActions
- useCloneComparisonExports: useCloneComparison
- useCopyTextExports: useCopyText
- useRunActionsExports: useRunActions
- useRunSnapshotExports: useRunSnapshot
- useStepEditorExports: useStepEditor
- useStepReviewExports: useStepReview
- useStoryCompareAiExports: useStoryCompareAi
- useTestCodeExports: useTestCode
- useTestRunsExports: useTestRuns
- useTestsExports: useTests
- useTestsListingExports: useTestsListing
- StepEditorPageExports: StepEditorPageProps, StepEditorPage
- TestsPageExports: TestsPageProps, TestsPage
- TestsShellTabsExports: TestsShellTabsInput, testsShellTabs
- ComparisonApiReading ui/server's /api/tests/:feature/compare. Exports: fetchComparison
- RunApiStarting, reading and cancelling a test run (ui/server's /api/tests/:feature/run, runs and run/cancel). Exports: cancelRun, fetchRuns, startRun
- RunPollingHow often a live test run is re-read. Exports: RUN_POLL_MS, watchLiveRun
- StepsApiThe step document's three calls on ui/server's /api/tests (behind the session). Exports: fetchSteps, previewSteps, saveSteps
- TestsApiReading ui/server's /api/tests. Exports: fetchTestFeatures, fetchTests, fetchTestSource
- TestsPathsThe Tests API's base path for one feature (the name is encoded; the server validates it against the real feature list). Exports: testsBase
- TestsWritesThe two MUTATING calls of ui/server's /api/tests (POST, behind the session). Exports: cloneTest, generateTests, storyCompareAi
- typesShapes of ui/server's /api/tests (testsApi.mjs, src/engine/testClone.mjs) and the Tests screen's view state. Exports: CloneDialog, CloneDialogView, CloneResult, CodeView, CoverageRow, DiffRow, DraftStep, DroppedCitation, ...
- StepEditorMachinePure (WORKFLOW-001): what the step editor knows (the opened document, the draft, the selection, the review of the diff) and how each event changes it. Exports: initialStepEditor, stepEditorReducer
- TestsMachinePure (WORKFLOW-001): what the Tests screen knows (feature, its listing, the selected test, the clone dialog, a generate run) and how each event changes it. Exports: initialTests, testsReducer
ui/client/features/wizard
- ChatLogExports: ChatLog
- ChatMessageExports: ChatMessage
- MarkdownExports: Markdown
- ProjectPathPickerExports: ProjectPathPicker
- ReviewBarExports: ReviewBar
- StepTrackerExports: StepTracker
- WizardAnswerFormExports: WizardAnswerForm
- WizardStartPanelExports: WizardStartPanel
- WizardControllerExports: WizardController
- PlainQuestionPure (DOMAIN-001): the Import Wizard asks the same questions in a terminal and in the Cockpit, so its prompts carry terminal conventions ("... Exports: plainQuestion
- ProjectPathsExports: breadcrumbs, canChoose, chooseHint
- WizardPure (DOMAIN-001). Exports: parseAttributionLine
- WizardStepsPure (DOMAIN-001): the Import Wizard's framework blocks, in the order they run, and how each server `step` event moves them. Exports: StepEvent, StepStatus, WizardPhase, WizardStep, PHASE_ORDER, applyStepEvent, endRun, initialSteps, ...
- useProjectTreeExports: useProjectTree
- useWizardExports: useWizard
- WizardPageExports: WizardPage
- ProjectTreeExports: ProjectTreeResult, fetchProjectTree
- WizardExports: connectWizardSocket, sendAnswer, sendCancel, sendReview, sendStart
- typesExports: ChatMessageData, ChatRole, ClientWizardEvent, PathExpectation, ProjectTree, ProjectTreeEntry, ReviewFinding, ServerWizardEvent, ...
- WizardExports: WizardAction, WizardState, initialWizardState, wizardReducer
ui/client/features/workflows
- FlowEdgeExports: FlowEdge
- MachineCanvasExports: MachineCanvas
- MachineContextPanelExports: MachineContextPanel
- MachineNarrativeExports: MachineNarrative
- StateFlowNodeExports: StateFlowNode
- WorkflowDiffPreviewExports: WorkflowDiffPreview
- WorkflowEditPanelExports: WorkflowEditPanel
- WorkflowsBrowserExports: WorkflowsBrowser
- WorkflowsControllerExports: WorkflowsController
- InlineTextExports: parseInline, toNarrativeView
- MachineBehaviorExports: MachineBehavior, NamedUsage, TransitionChoice, describeBehavior
- MachineGraphExports: StateNode, StateNodeData, TransitionEdge, START_NODE_ID, buildMachineFlow, transitionLabel
- SourceDiffExports: diffSourceLines
- useCanvasSelectionExports: useCanvasSelection
- useFitOnResizeExports: useFitOnResize
- useMachineBehaviorExports: useMachineBehavior, MachineBehavior, NamedUsage
- useMachineFlowExports: useMachineFlow, StateNodeData
- useWorkflowEditorExports: useWorkflowEditor
- useWorkflowNarrativeExports: useWorkflowNarrative
- useWorkflowsExports: useWorkflows
- WorkflowsPageExports: WorkflowsPageProps, WorkflowsPage
- WorkflowsShellTabsExports: WorkflowsShellTabs, workflowsShellTabs
- WorkflowEditApiExports: WorkflowEditResponse, postWorkflowEdit
- WorkflowNarrativeApiExports: getWorkflowNarrative
- WorkflowsApiExports: getWorkflowFeatures, getWorkflowFiles, getWorkflowMachines
- typesMirrors src/engine/workflowExtractor.mjs's output (served by ui/server's GET /api/workflows/machines) — extracted fresh from the real source on Exports: DiffHunk, InlineSegment, NarrativeFinding, NarrativeMachine, NarrativeMachineView, NarrativeScenario, NarrativeState, NarrativeView, ...
- WorkflowsExports: WorkflowsAction, initialWorkflowsState, workflowsReducer