ChatToolViewsComponent
Renders a frontend component for a tool call by reusing the chat
composition's views registry. A tool call whose name matches a
registry key is bridged into a synthetic one-element render spec
({ root: name, elements: { [name]: { type: name, props } } }) and
rendered through the existing render-spec pipeline.
Props merge the live args (present while the call streams) with the
result (on completion; a JSON-object string result is parsed first,
since that is how a LangGraph ToolMessage carries a dict return) and
always include status, so a view
component can show its own loading/empty/error states. RenderElement
filters props down to the component's declared inputs, so extra keys
(and a status a component chooses not to declare) are harmless.
import { ChatToolViewsComponent } from '@threadplane/chat';Declaration
export declare class ChatToolViewsComponent {
readonly agent: import("@angular/core").InputSignal<Agent<unknown>>;
readonly events: import("@angular/core").OutputEmitterRef<RenderEvent>;
readonly handlers: import("@angular/core").InputSignal<Record<string, (params: Record<string, unknown>) => unknown | Promise<unknown>>>;
readonly message: import("@angular/core").InputSignal<Message | undefined>;
readonly registry: import("@angular/core").Signal<import("@threadplane/render").AngularRegistry | undefined>;
readonly store: import("@angular/core").InputSignal<StateStore | undefined>;
readonly toolViews: import("@angular/core").Signal<{
id: string;
loading: boolean;
spec: Spec;
}[]>;
readonly views: import("@angular/core").InputSignal<Readonly<Record<string, import("@threadplane/render").RenderViewEntry | import("@angular/core").Type<unknown>>> | undefined>;
}Angular template API
Selector: chat-tool-views
Inputs
agent· requiredAgent<unknown>handlersRecord<string, (params: Record<string, unknown>) => unknown>messageMessage | undefinedstoreStateStore | undefinedviewsReadonly<Record<string, RenderViewEntry | Type<unknown>>> | undefined
Outputs
eventsRenderEvent
Members
agent
readonly agent: import("@angular/core").InputSignal<Agent<unknown>>;events
readonly events: import("@angular/core").OutputEmitterRef<RenderEvent>;handlers
readonly handlers: import("@angular/core").InputSignal<Record<string, (params: Record<string, unknown>) => unknown | Promise<unknown>>>;message
readonly message: import("@angular/core").InputSignal<Message | undefined>;registry
readonly registry: import("@angular/core").Signal<import("@threadplane/render").AngularRegistry | undefined>;store
readonly store: import("@angular/core").InputSignal<StateStore | undefined>;toolViews
readonly toolViews: import("@angular/core").Signal<{
id: string;
loading: boolean;
spec: Spec;
}[]>;views
readonly views: import("@angular/core").InputSignal<Readonly<Record<string, import("@threadplane/render").RenderViewEntry | import("@angular/core").Type<unknown>>> | undefined>;