# @core/process-ui **Import:** `@core/process-ui` **Files:** 8 ## Types ### `DaemonEntry` `interface` Daemon-registry row returned by `ProcessApi.listDaemons` and `ProcessApi.getDaemon`. Properties: - `code: string`: Application or component code. - `daemon: string`: Daemon name. - `pid: number`: Process ID. - `health?: string`: Optional health-endpoint address. - `project?: string`: Optional project label. - `binary?: string`: Optional binary label. - `started: string`: Start timestamp string from the API. ### `HealthResult` `interface` Result returned by the daemon health endpoint. Properties: - `healthy: boolean`: Health outcome. - `address: string`: Health endpoint address that was checked. - `reason?: string`: Optional explanation such as the absence of a health endpoint. ### `ProcessInfo` `interface` Process snapshot shape used by the UI package. Properties: - `id: string`: Managed-process identifier. - `command: string`: Executable name. - `args: string[]`: Command arguments. - `dir: string`: Working directory. - `startedAt: string`: Start timestamp string. - `status: 'pending' | 'running' | 'exited' | 'failed' | 'killed'`: Process status string. - `exitCode: number`: Exit code. - `duration: number`: Numeric duration value from the API payload. - `pid: number`: Child PID. ### `RunResult` `interface` Pipeline result row used by `ProcessRunner`. Properties: - `name: string`: Spec name. - `exitCode: number`: Exit code. - `duration: number`: Numeric duration value. - `output: string`: Captured output. - `error?: string`: Optional error message. - `skipped: boolean`: Whether the spec was skipped. - `passed: boolean`: Whether the spec passed. ### `RunAllResult` `interface` Aggregate pipeline result consumed by `ProcessRunner`. Properties: - `results: RunResult[]`: Per-spec results. - `duration: number`: Aggregate duration. - `passed: number`: Count of passed specs. - `failed: number`: Count of failed specs. - `skipped: number`: Count of skipped specs. - `success: boolean`: Aggregate success flag. ### `ProcessApi` `class` Typed fetch client for `/api/process/*`. Public API: - `new ProcessApi(baseUrl?: string)`: Stores an optional URL prefix. The default is `""`. - `listDaemons(): Promise`: Fetches `GET /api/process/daemons`. - `getDaemon(code: string, daemon: string): Promise`: Fetches one daemon entry. - `stopDaemon(code: string, daemon: string): Promise<{ stopped: boolean }>`: Sends `POST /api/process/daemons/:code/:daemon/stop`. - `healthCheck(code: string, daemon: string): Promise`: Fetches `GET /api/process/daemons/:code/:daemon/health`. ### `ProcessEvent` `interface` Event envelope consumed by `connectProcessEvents`. Properties: - `type: string`: Event type. - `channel?: string`: Optional channel name. - `data?: any`: Event payload. - `timestamp?: string`: Optional timestamp string. ### `ProcessPanel` `class` Top-level custom element registered as ``. Public properties: - `apiUrl: string`: Forwarded to child elements through the `api-url` attribute. - `wsUrl: string`: WebSocket endpoint URL from the `ws-url` attribute. Behavior: - Renders tabbed daemon, process, and pipeline views. - Opens a process-event WebSocket when `wsUrl` is set. - Shows the last received process channel or event type in the footer. ### `ProcessDaemons` `class` Daemon-list custom element registered as ``. Public properties: - `apiUrl: string`: Base URL prefix for `ProcessApi`. Behavior: - Loads daemon entries on connect. - Can trigger per-daemon health checks and stop requests. - Emits `daemon-stopped` after a successful stop request. ### `ProcessList` `class` Managed-process list custom element registered as ``. Public properties: - `apiUrl: string`: Declared API prefix property. - `selectedId: string`: Selected process ID, reflected from `selected-id`. Behavior: - Emits `process-selected` when a row is chosen. - Currently renders from local state only because the process REST endpoints referenced by the component are not implemented in this package. ### `ProcessOutput` `class` Live output custom element registered as ``. Public properties: - `apiUrl: string`: Declared API prefix property. The current implementation does not use it. - `wsUrl: string`: WebSocket endpoint URL. - `processId: string`: Selected process ID from the `process-id` attribute. Behavior: - Connects to the WebSocket when both `wsUrl` and `processId` are present. - Filters for `process.output` events whose payload `data.id` matches `processId`. - Appends output lines and auto-scrolls by default. ### `ProcessRunner` `class` Pipeline-results custom element registered as ``. Public properties: - `apiUrl: string`: Declared API prefix property. - `result: RunAllResult | null`: Aggregate pipeline result used for rendering. Behavior: - Renders summary counts plus expandable per-spec output. - Depends on the `result` property today because pipeline REST endpoints are not implemented in the package. ## Functions ### Package Functions - `function connectProcessEvents(wsUrl: string, handler: (event: ProcessEvent) => void): WebSocket`: Opens a WebSocket, parses incoming JSON, forwards only messages whose `type` or `channel` starts with `process.`, ignores malformed payloads, and returns the `WebSocket` instance. ### `ProcessPanel` Methods - `connectedCallback(): void`: Calls the LitElement base implementation and opens the WebSocket when `wsUrl` is set. - `disconnectedCallback(): void`: Calls the LitElement base implementation and closes the current WebSocket. - `render(): unknown`: Renders the header, tab strip, active child element, and connection footer. ### `ProcessDaemons` Methods - `connectedCallback(): void`: Instantiates `ProcessApi` and loads daemon data. - `loadDaemons(): Promise`: Fetches daemon entries, stores them in component state, and records any request error message. - `render(): unknown`: Renders the daemon list, loading state, empty state, and action buttons. ### `ProcessList` Methods - `connectedCallback(): void`: Calls the LitElement base implementation and invokes `loadProcesses`. - `loadProcesses(): Promise`: Current placeholder implementation that clears state because the referenced process REST endpoints are not implemented yet. - `render(): unknown`: Renders the process list or an informational empty state explaining the missing REST support. ### `ProcessOutput` Methods - `connectedCallback(): void`: Calls the LitElement base implementation and opens the WebSocket when `wsUrl` and `processId` are both set. - `disconnectedCallback(): void`: Calls the LitElement base implementation and closes the current WebSocket. - `updated(changed: Map): void`: Reconnects when `processId` or `wsUrl` changes, resets buffered lines on reconnection, and auto-scrolls when enabled. - `render(): unknown`: Renders the output panel, waiting state, and accumulated stdout or stderr lines. ### `ProcessRunner` Methods - `connectedCallback(): void`: Calls the LitElement base implementation and invokes `loadResults`. - `loadResults(): Promise`: Current placeholder method. The implementation is empty because pipeline endpoints are not present. - `render(): unknown`: Renders the empty-state notice when `result` is absent, or the aggregate summary plus per-spec details when `result` is present. ### `ProcessApi` Methods - `listDaemons(): Promise`: Returns the `data` field from a successful daemon-list response. - `getDaemon(code: string, daemon: string): Promise`: Returns one daemon entry from the provider API. - `stopDaemon(code: string, daemon: string): Promise<{ stopped: boolean }>`: Issues the stop request and returns the provider's `{ stopped }` payload. - `healthCheck(code: string, daemon: string): Promise`: Returns the daemon-health payload.