@threadplane/chat 0.0.57 → 0.0.58

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  import * as _threadplane_render from '@threadplane/render';
2
2
  import { StandardSchemaV1, StandardSchemaInferOutput, AngularRegistry, RenderEvent, ViewRegistry, RenderViewEntry, RenderHost } from '@threadplane/render';
3
3
  export { StandardSchemaInferInput, StandardSchemaInferOutput, StandardSchemaV1, ViewRegistry, toRenderRegistry, views, withViews, withoutViews } from '@threadplane/render';
4
- import { A2uiComponentDef, A2uiSurface, A2uiMessage, A2uiActionMessage } from '@threadplane/a2ui';
5
- export { A2uiAction, A2uiActionContextEntry, A2uiActionMessage, A2uiChildren, A2uiClientDataModel, A2uiComponent, A2uiComponentDef, A2uiSurface, A2uiTheme, DynamicBoolean, DynamicNumber, DynamicString, isLiteralBoolean, isLiteralNumber, isLiteralString, isPathRef } from '@threadplane/a2ui';
4
+ import { A2uiComponent, A2uiSurface, A2uiMessage, A2uiActionMessage, A2uiErrorMessage, A2uiClientCapabilities } from '@threadplane/a2ui';
5
+ export { A2UI_BASIC_CATALOG_ID, A2UI_MIME_TYPE, A2UI_WIRE_VERSION, A2uiAction, A2uiActionMessage, A2uiCatalogComponent, A2uiCheck, A2uiChildren, A2uiClientCapabilities, A2uiClientDataModel, A2uiComponent, A2uiComponentBase, A2uiErrorMessage, A2uiEventAction, A2uiFunctionAction, A2uiFunctionCall, A2uiPathRef, A2uiSurface, A2uiTheme, DynamicBoolean, DynamicNumber, DynamicString, DynamicStringList, DynamicValue, isFunctionCall, isPathRef } from '@threadplane/a2ui';
6
6
  import * as _angular_core from '@angular/core';
7
7
  import { Type, InjectionToken, Signal, TemplateRef, ElementRef, WritableSignal, InputSignal, InputSignalWithTransform } from '@angular/core';
8
8
  import * as _json_render_core from '@json-render/core';
@@ -1791,29 +1791,29 @@ declare function createParseTreeStore(parser: PartialJsonParser): ParseTreeStore
1791
1791
 
1792
1792
  /** Chat-internal projection of an A2UI component, materialized by the
1793
1793
  * surface store. Distinct from the wire-format `A2uiComponent` in
1794
- * `@threadplane/a2ui` (which carries the raw `component: A2uiComponentDef`
1795
- * payload) — this type adds the per-component readiness fields the
1796
- * progressive renderer consumes. */
1794
+ * `@threadplane/a2ui` this type adds the per-component readiness fields
1795
+ * the progressive renderer consumes. */
1797
1796
  interface A2uiComponentView {
1798
1797
  /** The component's id (same as the wire-format `A2uiComponent.id`). */
1799
1798
  readonly id: string;
1800
- /** The component type key — e.g. `'Button'`, `'TextField'` — matched
1801
- * against catalog `views` entries. */
1799
+ /** The component type — e.g. `'Button'`, `'TextField'` — matched
1800
+ * against catalog `views` entries. Mirrors the wire `component` string. */
1802
1801
  readonly type: string;
1803
1802
  /** Data model paths this component references via its `{$.path}` prop
1804
- * expressions. Extracted once on `surfaceUpdate` apply; immutable. */
1803
+ * expressions. Extracted once on `updateComponents` apply; immutable. */
1805
1804
  readonly bindings: readonly string[];
1806
1805
  /** Monotonic: `false` until every binding has resolved at least once
1807
1806
  * in the accumulated data model, then `true` forever. Once `true`,
1808
- * subsequent `dataModelUpdate` envelopes push new prop values but do
1807
+ * subsequent `updateDataModel` envelopes push new prop values but do
1809
1808
  * NOT flip this back to `false`. */
1810
1809
  readonly ready: boolean;
1811
- /** Resolved property bag. Meaningful only when `ready === true`. */
1810
+ /** Resolved property bag (reserved protocol keys stripped). Meaningful
1811
+ * only when `ready === true`. */
1812
1812
  readonly props: Readonly<Record<string, unknown>>;
1813
- /** The raw wire-format component def, retained so the slot directive
1813
+ /** The raw wire-format component, retained so the slot directive
1814
1814
  * can look up the catalog entry by type and resolve nested children
1815
1815
  * on re-renders. */
1816
- readonly def: A2uiComponentDef;
1816
+ readonly def: A2uiComponent;
1817
1817
  }
1818
1818
 
1819
1819
  /** Chat-side state for a surface — wraps the wire-format `A2uiSurface`
@@ -1843,10 +1843,15 @@ interface A2uiSurfaceStore {
1843
1843
  }
1844
1844
  /**
1845
1845
  * Create an {@link A2uiSurfaceStore} — the per-conversation store that buffers
1846
- * streamed A2UI surface updates, tracks each surface's data model + lifecycle
1846
+ * streamed A2UI v0.9 envelopes, tracks each surface's data model + lifecycle
1847
1847
  * state, and exposes them as signals for rendering. One store backs a chat
1848
1848
  * thread's A2UI surfaces.
1849
1849
  *
1850
+ * A surface becomes visible once its `createSurface` envelope has arrived AND
1851
+ * a component with id `root` has been defined (the v0.9 progressive-rendering
1852
+ * rule). Everything received earlier is buffered; afterwards, components merge
1853
+ * incrementally by id and data-model updates apply immediately.
1854
+ *
1850
1855
  * @returns A fresh, empty {@link A2uiSurfaceStore}.
1851
1856
  * @example
1852
1857
  * ```ts
@@ -2211,6 +2216,37 @@ declare class ChatTimelineSliderComponent {
2211
2216
  }
2212
2217
 
2213
2218
  type ChatSidenavMode = 'expanded' | 'collapsed' | 'drawer';
2219
+ /**
2220
+ * The conversation sidebar: thread list, projects, search, and the new-chat
2221
+ * action. Pair it with a runtime's thread store (e.g. `LangGraphThreadsAdapter`)
2222
+ * and a {@link ThreadActionAdapter} for the per-row rename/delete/archive menu.
2223
+ *
2224
+ * **This component renders the sidebar only — it is not a layout wrapper.** Its
2225
+ * `<ng-content>` slots are all named (`sidenavHeader`, `sidenavPrimary`,
2226
+ * `sidenavSections`, `sidenavFooterLeft`, `sidenavFooterRight`,
2227
+ * `sidenavAccount`) and target regions *inside* the sidebar. There is no default
2228
+ * slot, so a `<chat>` placed between the tags is silently dropped. Render the
2229
+ * chat as a sibling and lay the two out yourself:
2230
+ *
2231
+ * @example
2232
+ * ```html
2233
+ * <chat-sidenav
2234
+ * [threads]="threads.threads()"
2235
+ * [activeThreadId]="activeThread()"
2236
+ * [actions]="threadActions"
2237
+ * [agent]="agent"
2238
+ * (newChat)="activeThread.set(null)"
2239
+ * (threadSelected)="activeThread.set($event)"
2240
+ * />
2241
+ * <main class="chat-pane">
2242
+ * <chat [agent]="agent" />
2243
+ * </main>
2244
+ * ```
2245
+ * ```css
2246
+ * :host { display: flex; height: 100dvh; }
2247
+ * .chat-pane { flex: 1; min-width: 0; }
2248
+ * ```
2249
+ */
2214
2250
  declare class ChatSidenavComponent {
2215
2251
  readonly mode: _angular_core.InputSignal<ChatSidenavMode>;
2216
2252
  readonly open: _angular_core.InputSignal<boolean>;
@@ -2639,17 +2675,15 @@ interface PartialArgsBridge {
2639
2675
  * tool_call.arguments JSON. Uses @cacheplane/partial-json to extract
2640
2676
  * structurally-complete envelope objects from the growing args string.
2641
2677
  *
2642
- * Synthesis safety net: if the first complete surfaceUpdate arrives and
2643
- * no beginRendering has been extracted yet, the bridge synthesises one
2644
- * targeted at the surfaceUpdate's first component (preferring id='root'
2645
- * if present). This makes the surface mount IMMEDIATELY after the first
2646
- * surfaceUpdate parses without waiting for the LLM to emit beginRendering
2647
- * at the end of its envelope list so the render-element fallback gate
2648
- * (PR #252) actually fires while dataModelUpdates flow in.
2678
+ * Synthesis safety net: v0.9 requires a `createSurface` envelope before
2679
+ * any `updateComponents`. If a complete `updateComponents` arrives for a
2680
+ * surface with no `createSurface` seen yet this turn, the bridge
2681
+ * synthesises one (basic catalog) so the surface can mount as soon as its
2682
+ * `root` component is defined the store gates rendering on
2683
+ * createSurface + root, and fills the tree in progressively after that.
2649
2684
  *
2650
- * The store's apply() already treats repeated beginRendering for the same
2651
- * surfaceId as idempotent (just re-applies styles), so the LLM's eventual
2652
- * beginRendering (if any) is a no-op rather than a conflict.
2685
+ * The store treats a later "real" createSurface for the same surface as an
2686
+ * idempotent refresh, so LLMs that emit one out of order are harmless.
2653
2687
  */
2654
2688
  declare function createPartialArgsBridge(store: A2uiSurfaceStore): PartialArgsBridge;
2655
2689
 
@@ -2678,27 +2712,40 @@ declare class A2uiSurfaceComponent {
2678
2712
  readonly surfaceFallback: _angular_core.InputSignal<Type<unknown> | undefined>;
2679
2713
  readonly events: _angular_core.OutputEmitterRef<RenderEvent>;
2680
2714
  readonly action: _angular_core.OutputEmitterRef<A2uiActionMessage>;
2681
- /** Agent-set primary color from `beginRendering.styles.primaryColor`.
2715
+ /** Emitted when a submit is blocked by failing validation checks —
2716
+ * the spec client → agent error message (code VALIDATION_FAILED). */
2717
+ readonly validationError: _angular_core.OutputEmitterRef<A2uiErrorMessage>;
2718
+ /** Surface-owned live state store: `$bindState` props read it and input
2719
+ * components write user edits into it, so event-time logic (checks,
2720
+ * action context) sees CURRENT values instead of the agent-seeded
2721
+ * snapshot. Seeded from spec.state with user edits preserved. Public so
2722
+ * hosts (and tests) can read the live values of a rendered surface. */
2723
+ readonly liveStore: _json_render_core.StateStore;
2724
+ /** Last value this component seeded per state path (see chat-generative-ui:
2725
+ * distinguishes "still our seed — safe to overwrite" from "user edited"). */
2726
+ private readonly seeded;
2727
+ constructor();
2728
+ /** Agent-set primary color from `createSurface.theme.primaryColor`.
2682
2729
  * Returns null when unset so the host binding doesn't override the
2683
2730
  * consumer's `:root`-level `--a2ui-primary` default. */
2684
2731
  readonly primaryColor: _angular_core.Signal<string | null>;
2685
- /** Agent-set font family from `beginRendering.styles.font`. Returns
2686
- * null when unset so the host doesn't override consumer fonts. */
2687
- readonly fontFamily: _angular_core.Signal<string | null>;
2688
- /** Roots from the surface state — components whose ids appear as
2689
- * children of no other component. The wire spec includes
2690
- * `beginRendering.root` as the single root; that path stays usable
2691
- * but we keep the renderer permissive in case future surfaces emit
2692
- * multiple top-level components.
2732
+ /** Agent identity chrome from `createSurface.theme`. When neither
2733
+ * `agentDisplayName` nor `iconUrl` is set, no header renders at all
2734
+ * (zero layout impact for themeless surfaces — the common case). */
2735
+ protected readonly agentDisplayName: _angular_core.Signal<string | null>;
2736
+ protected readonly iconUrl: _angular_core.Signal<string | null>;
2737
+ /** Roots from the surface state. The v0.9 wire contract reserves the
2738
+ * component id `root` as the single tree root; we keep the renderer
2739
+ * permissive in case future surfaces emit multiple top-level
2740
+ * components.
2693
2741
  *
2694
2742
  * Conservative: returns only the first key from componentViews
2695
- * insertion order. The wire format's beginRendering.root carries the
2696
- * true root id; plumbing it through A2uiSurfaceState is a follow-up. */
2743
+ * insertion order. */
2697
2744
  readonly rootIds: _angular_core.Signal<string[]>;
2698
2745
  /** Convert the A2UI surface to a json-render Spec for rendering.
2699
2746
  * Prefers `state().surface` (the progressively-built wire surface)
2700
2747
  * over the legacy `surface` input. surfaceToSpec handles
2701
- * children.explicitList → spec.children translation + reserved-key
2748
+ * children-id-list → spec.children translation + reserved-key
2702
2749
  * filtering + path-ref → $bindState rewriting; the rendered tree
2703
2750
  * then uses render-element's standard input-mapping
2704
2751
  * (`childKeys: el.children`) so catalog components receive the
@@ -2716,14 +2763,19 @@ declare class A2uiSurfaceComponent {
2716
2763
  'a2ui:localAction': (params: Record<string, unknown>) => unknown;
2717
2764
  }>;
2718
2765
  onRenderEvent(event: RenderEvent): void;
2766
+ /** Agent-seeded data model overlaid with the store's current state
2767
+ * (user edits + check messages). Shallow per-key merge is sufficient:
2768
+ * store snapshots hold whole top-level values written via pointers. */
2769
+ private mergedLiveModel;
2719
2770
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<A2uiSurfaceComponent, never>;
2720
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiSurfaceComponent, "a2ui-surface", never, { "surface": { "alias": "surface"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "catalog": { "alias": "catalog"; "required": true; "isSignal": true; }; "handlers": { "alias": "handlers"; "required": false; "isSignal": true; }; "surfaceFallback": { "alias": "surfaceFallback"; "required": false; "isSignal": true; }; }, { "events": "events"; "action": "action"; }, never, never, true, never>;
2771
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiSurfaceComponent, "a2ui-surface", never, { "surface": { "alias": "surface"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "catalog": { "alias": "catalog"; "required": true; "isSignal": true; }; "handlers": { "alias": "handlers"; "required": false; "isSignal": true; }; "surfaceFallback": { "alias": "surfaceFallback"; "required": false; "isSignal": true; }; }, { "events": "events"; "action": "action"; "validationError": "validationError"; }, never, never, true, never>;
2721
2772
  }
2722
2773
 
2723
- /** Builds an A2uiActionMessage from handler params and the current surface.
2724
- * The action.context is serialized as v1 DynamicValue-wrapped entries.
2725
- * Sets action.label when the source component is a Button with a Text
2726
- * child whose literalString is non-empty. */
2774
+ /** Builds a v0.9 A2uiActionMessage from handler params and the current
2775
+ * surface. The action.context is the resolved plain object the renderer
2776
+ * produced from the component's `action.event.context`. Sets action.label
2777
+ * when the source component is a Button with a Text child whose text is a
2778
+ * non-empty bare literal. */
2727
2779
  declare function buildA2uiActionMessage(params: Record<string, unknown>, surface: A2uiSurface): A2uiActionMessage;
2728
2780
 
2729
2781
  /**
@@ -2743,20 +2795,36 @@ declare function a2uiBasicCatalog(): ViewRegistry;
2743
2795
  /** Writes a typed value to the render state store if the prop has a binding path. */
2744
2796
  declare function emitBinding(host: RenderHost, bindings: Record<string, string> | undefined, prop: string, value: unknown): void;
2745
2797
 
2746
- /** v1 textFieldType values from A2uiTextField. */
2747
- type TextFieldType = 'date' | 'longText' | 'number' | 'shortText' | 'obscured';
2798
+ /**
2799
+ * The A2UI client capabilities this renderer supports the typed
2800
+ * `a2uiClientCapabilities` metadata a host attaches to agent requests so
2801
+ * the agent knows which component catalogs it may target
2802
+ * (catalog negotiation, A2UI v0.9 transport metadata).
2803
+ *
2804
+ * @example
2805
+ * ```ts
2806
+ * const metadata = { a2uiClientCapabilities: a2uiClientCapabilities() };
2807
+ * ```
2808
+ */
2809
+ declare function a2uiClientCapabilities(): A2uiClientCapabilities;
2810
+
2811
+ /** v0.9 TextField variant values ('date' was removed — DateTimeInput owns dates). */
2812
+ type TextFieldVariant = 'longText' | 'number' | 'shortText' | 'obscured';
2748
2813
  declare class A2uiTextFieldComponent {
2749
2814
  private static _idCounter;
2750
2815
  protected readonly _inputId: string;
2751
2816
  private readonly host;
2752
2817
  readonly label: _angular_core.InputSignal<string>;
2753
- /** v1 prop: text (resolved string value). */
2754
- readonly text: _angular_core.InputSignal<string>;
2755
- /** Back-compat alias: value. surface-to-spec resolves DynamicString → plain string. */
2756
- readonly value: _angular_core.Signal<string>;
2818
+ /** v0.9 prop: resolved string value. */
2819
+ readonly value: _angular_core.InputSignal<string>;
2757
2820
  readonly placeholder: _angular_core.InputSignal<string>;
2758
- readonly textFieldType: _angular_core.InputSignal<TextFieldType>;
2821
+ /** v0.9 prop: input variant (default 'shortText'). */
2822
+ readonly variant: _angular_core.InputSignal<TextFieldVariant>;
2823
+ /** Enforced by the surface's check gate as an implicit regex rule (plus the native pattern attribute). */
2759
2824
  readonly validationRegexp: _angular_core.InputSignal<string>;
2825
+ /** Live validation message written by the surface's check gate
2826
+ * (bound to /_a2uiChecks/<id>); empty when valid. */
2827
+ readonly errorText: _angular_core.InputSignal<string>;
2760
2828
  readonly _bindings: _angular_core.InputSignal<Record<string, string>>;
2761
2829
  readonly bindings: _angular_core.InputSignal<Record<string, string>>;
2762
2830
  readonly loading: _angular_core.InputSignal<boolean>;
@@ -2765,39 +2833,42 @@ declare class A2uiTextFieldComponent {
2765
2833
  protected readonly htmlInputType: _angular_core.Signal<string>;
2766
2834
  onInput(event: Event): void;
2767
2835
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<A2uiTextFieldComponent, never>;
2768
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiTextFieldComponent, "a2ui-text-field", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "textFieldType": { "alias": "textFieldType"; "required": false; "isSignal": true; }; "validationRegexp": { "alias": "validationRegexp"; "required": false; "isSignal": true; }; "_bindings": { "alias": "_bindings"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2836
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiTextFieldComponent, "a2ui-text-field", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "validationRegexp": { "alias": "validationRegexp"; "required": false; "isSignal": true; }; "errorText": { "alias": "errorText"; "required": false; "isSignal": true; }; "_bindings": { "alias": "_bindings"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2769
2837
  }
2770
2838
 
2771
2839
  declare class A2uiCheckBoxComponent {
2772
2840
  private readonly host;
2773
2841
  readonly label: _angular_core.InputSignal<string>;
2774
- /** v1 canonical prop: boolean checked state. */
2775
- readonly value: _angular_core.InputSignal<boolean | undefined>;
2776
- /** Pre-v1 alias retained for back-compat. */
2777
- readonly checked: _angular_core.InputSignal<boolean>;
2842
+ /** v0.9 prop: boolean checked state. */
2843
+ readonly value: _angular_core.InputSignal<boolean>;
2844
+ /** Live validation message written by the surface's check gate
2845
+ * (bound to /_a2uiChecks/<id>); empty when valid. */
2846
+ readonly errorText: _angular_core.InputSignal<string>;
2778
2847
  readonly _bindings: _angular_core.InputSignal<Record<string, string>>;
2779
2848
  readonly bindings: _angular_core.InputSignal<Record<string, string>>;
2780
2849
  readonly loading: _angular_core.InputSignal<boolean>;
2781
2850
  readonly childKeys: _angular_core.InputSignal<string[]>;
2782
2851
  readonly spec: _angular_core.InputSignal<Spec | undefined>;
2783
- protected readonly effectiveValue: _angular_core.Signal<boolean>;
2784
2852
  onChange(event: Event): void;
2785
2853
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<A2uiCheckBoxComponent, never>;
2786
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiCheckBoxComponent, "a2ui-check-box", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "_bindings": { "alias": "_bindings"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2854
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiCheckBoxComponent, "a2ui-check-box", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "errorText": { "alias": "errorText"; "required": false; "isSignal": true; }; "_bindings": { "alias": "_bindings"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2787
2855
  }
2788
2856
 
2857
+ type ButtonVariant = 'default' | 'primary' | 'borderless';
2789
2858
  declare class A2uiButtonComponent {
2790
- /** v1: child Text component is rendered inside the button via childKeys. */
2859
+ /** v0.9: child Text component is rendered inside the button via childKeys. */
2791
2860
  readonly childKeys: _angular_core.InputSignal<string[]>;
2792
2861
  readonly spec: _angular_core.InputSignal<Spec>;
2793
- readonly primary: _angular_core.InputSignal<boolean>;
2862
+ /** v0.9 prop: visual style (default 'default'). */
2863
+ readonly variant: _angular_core.InputSignal<ButtonVariant>;
2794
2864
  readonly disabled: _angular_core.InputSignal<boolean>;
2795
2865
  readonly emit: _angular_core.InputSignal<(event: string) => void>;
2796
2866
  readonly bindings: _angular_core.InputSignal<Record<string, string>>;
2797
2867
  readonly loading: _angular_core.InputSignal<boolean>;
2868
+ protected cssClass(): string;
2798
2869
  handleClick(): void;
2799
2870
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<A2uiButtonComponent, never>;
2800
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiButtonComponent, "a2ui-button", never, { "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": true; "isSignal": true; }; "primary": { "alias": "primary"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "emit": { "alias": "emit"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2871
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiButtonComponent, "a2ui-button", never, { "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": true; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "emit": { "alias": "emit"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2801
2872
  }
2802
2873
 
2803
2874
  /** Resolved option shape — label and value are plain strings after surface-to-spec resolves them. */
@@ -2805,30 +2876,44 @@ interface ResolvedOption {
2805
2876
  label: string;
2806
2877
  value: string;
2807
2878
  }
2808
- declare class A2uiMultipleChoiceComponent {
2879
+ declare class A2uiChoicePickerComponent {
2880
+ private static _idCounter;
2881
+ /** Groups the radio inputs of this instance (mutuallyExclusive mode). */
2882
+ protected readonly _groupName: string;
2809
2883
  private readonly host;
2810
2884
  readonly label: _angular_core.InputSignal<string>;
2811
- /** Resolved current selections from surface-to-spec. Normalized in
2812
- * `selectionsArray` because LLMs sometimes seed the data model with a
2813
- * scalar (e.g. `"5"`) instead of an array (`["5"]`); we coerce so
2814
- * .includes() works either way. */
2815
- readonly selections: _angular_core.InputSignal<string | string[] | undefined>;
2816
- protected readonly selectionsArray: _angular_core.Signal<string[]>;
2885
+ /** v0.9 prop: current selection (string[]). Normalized in `valueArray`
2886
+ * because LLMs sometimes seed the data model with a scalar (e.g. `"5"`)
2887
+ * instead of an array (`["5"]`); we coerce so .includes() works either way. */
2888
+ readonly value: _angular_core.InputSignal<string | string[] | undefined>;
2817
2889
  /** Resolved options with plain string labels (surface-to-spec resolves DynamicString). */
2818
2890
  readonly options: _angular_core.InputSignal<ResolvedOption[]>;
2819
- /** When 1 — render as single-select <select>; otherwise multi-select checkboxes. */
2820
- readonly maxAllowedSelections: _angular_core.InputSignal<number>;
2891
+ /** v0.9 prop: 'mutuallyExclusive' (single-select, default) or 'multipleSelection'. */
2892
+ readonly variant: _angular_core.InputSignal<"mutuallyExclusive" | "multipleSelection">;
2893
+ /** v0.9 prop: render as 'checkbox' rows (default) or 'chips'. */
2894
+ readonly displayStyle: _angular_core.InputSignal<"checkbox" | "chips">;
2895
+ /** v0.9 prop: when true, show a client-side option filter input. */
2896
+ readonly filterable: _angular_core.InputSignal<boolean>;
2897
+ /** Live validation message written by the surface's check gate
2898
+ * (bound to /_a2uiChecks/<id>); empty when valid. */
2899
+ readonly errorText: _angular_core.InputSignal<string>;
2821
2900
  readonly _bindings: _angular_core.InputSignal<Record<string, string>>;
2822
2901
  readonly bindings: _angular_core.InputSignal<Record<string, string>>;
2823
2902
  readonly loading: _angular_core.InputSignal<boolean>;
2824
2903
  readonly childKeys: _angular_core.InputSignal<string[]>;
2825
2904
  readonly spec: _angular_core.InputSignal<Spec | undefined>;
2905
+ protected readonly valueArray: _angular_core.Signal<string[]>;
2826
2906
  protected readonly isSingleSelect: _angular_core.Signal<boolean>;
2907
+ /** Local, client-side option filter (only rendered when filterable). */
2908
+ protected readonly filterText: _angular_core.WritableSignal<string>;
2909
+ protected readonly visibleOptions: _angular_core.Signal<ResolvedOption[]>;
2827
2910
  protected isSelected(value: string): boolean;
2828
- onSelectChange(event: Event): void;
2911
+ onFilterInput(event: Event): void;
2829
2912
  onCheckChange(value: string, event: Event): void;
2830
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<A2uiMultipleChoiceComponent, never>;
2831
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiMultipleChoiceComponent, "a2ui-multiple-choice", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "selections": { "alias": "selections"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "maxAllowedSelections": { "alias": "maxAllowedSelections"; "required": false; "isSignal": true; }; "_bindings": { "alias": "_bindings"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2913
+ onChipToggle(value: string): void;
2914
+ private toggled;
2915
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<A2uiChoicePickerComponent, never>;
2916
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiChoicePickerComponent, "a2ui-choice-picker", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "displayStyle": { "alias": "displayStyle"; "required": false; "isSignal": true; }; "filterable": { "alias": "filterable"; "required": false; "isSignal": true; }; "errorText": { "alias": "errorText"; "required": false; "isSignal": true; }; "_bindings": { "alias": "_bindings"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2832
2917
  }
2833
2918
 
2834
2919
  declare class A2uiSliderComponent {
@@ -2836,13 +2921,15 @@ declare class A2uiSliderComponent {
2836
2921
  protected readonly _inputId: string;
2837
2922
  private readonly host;
2838
2923
  readonly label: _angular_core.InputSignal<string>;
2839
- /** v1 prop: value (resolved DynamicNumber). */
2924
+ /** v0.9 prop: value (resolved DynamicNumber). */
2840
2925
  readonly value: _angular_core.InputSignal<number>;
2841
- /** v1 prop: minValue. */
2842
- readonly minValue: _angular_core.InputSignal<number>;
2843
- /** v1 prop: maxValue. */
2844
- readonly maxValue: _angular_core.InputSignal<number>;
2845
- readonly step: _angular_core.InputSignal<number>;
2926
+ /** v0.9 prop: lower bound (default 0). */
2927
+ readonly min: _angular_core.InputSignal<number>;
2928
+ /** v0.9 prop: upper bound. */
2929
+ readonly max: _angular_core.InputSignal<number>;
2930
+ /** Live validation message written by the surface's check gate
2931
+ * (bound to /_a2uiChecks/<id>); empty when valid. */
2932
+ readonly errorText: _angular_core.InputSignal<string>;
2846
2933
  readonly _bindings: _angular_core.InputSignal<Record<string, string>>;
2847
2934
  readonly bindings: _angular_core.InputSignal<Record<string, string>>;
2848
2935
  readonly loading: _angular_core.InputSignal<boolean>;
@@ -2850,7 +2937,7 @@ declare class A2uiSliderComponent {
2850
2937
  readonly spec: _angular_core.InputSignal<Spec | undefined>;
2851
2938
  onInput(event: Event): void;
2852
2939
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<A2uiSliderComponent, never>;
2853
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiSliderComponent, "a2ui-slider", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "minValue": { "alias": "minValue"; "required": false; "isSignal": true; }; "maxValue": { "alias": "maxValue"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "_bindings": { "alias": "_bindings"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2940
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiSliderComponent, "a2ui-slider", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "errorText": { "alias": "errorText"; "required": false; "isSignal": true; }; "_bindings": { "alias": "_bindings"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2854
2941
  }
2855
2942
 
2856
2943
  declare class A2uiDateTimeInputComponent {
@@ -2858,12 +2945,19 @@ declare class A2uiDateTimeInputComponent {
2858
2945
  protected readonly _inputId: string;
2859
2946
  private readonly host;
2860
2947
  readonly label: _angular_core.InputSignal<string>;
2861
- /** v1 prop: value (resolved DynamicString). */
2948
+ /** v0.9 prop: ISO 8601 value (resolved DynamicString). Still renders when absent. */
2862
2949
  readonly value: _angular_core.InputSignal<string>;
2863
- /** v1 prop: enableDate — include date portion. */
2950
+ /** v0.9 prop: enableDate — include date portion. */
2864
2951
  readonly enableDate: _angular_core.InputSignal<boolean>;
2865
- /** v1 prop: enableTime — include time portion. */
2952
+ /** v0.9 prop: enableTime — include time portion. */
2866
2953
  readonly enableTime: _angular_core.InputSignal<boolean>;
2954
+ /** v0.9 prop: ISO lower bound mapped to the native input's min. */
2955
+ readonly min: _angular_core.InputSignal<string | undefined>;
2956
+ /** v0.9 prop: ISO upper bound mapped to the native input's max. */
2957
+ readonly max: _angular_core.InputSignal<string | undefined>;
2958
+ /** Live validation message written by the surface's check gate
2959
+ * (bound to /_a2uiChecks/<id>); empty when valid. */
2960
+ readonly errorText: _angular_core.InputSignal<string>;
2867
2961
  readonly _bindings: _angular_core.InputSignal<Record<string, string>>;
2868
2962
  readonly bindings: _angular_core.InputSignal<Record<string, string>>;
2869
2963
  readonly loading: _angular_core.InputSignal<boolean>;
@@ -2873,13 +2967,14 @@ declare class A2uiDateTimeInputComponent {
2873
2967
  protected readonly htmlInputType: _angular_core.Signal<string>;
2874
2968
  onChange(event: Event): void;
2875
2969
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<A2uiDateTimeInputComponent, never>;
2876
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiDateTimeInputComponent, "a2ui-date-time-input", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "enableDate": { "alias": "enableDate"; "required": false; "isSignal": true; }; "enableTime": { "alias": "enableTime"; "required": false; "isSignal": true; }; "_bindings": { "alias": "_bindings"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2970
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiDateTimeInputComponent, "a2ui-date-time-input", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "enableDate": { "alias": "enableDate"; "required": false; "isSignal": true; }; "enableTime": { "alias": "enableTime"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "errorText": { "alias": "errorText"; "required": false; "isSignal": true; }; "_bindings": { "alias": "_bindings"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2877
2971
  }
2878
2972
 
2879
- type UsageHint = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'caption' | 'body';
2973
+ type TextVariant = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'caption' | 'body';
2880
2974
  declare class A2uiTextComponent {
2881
2975
  readonly text: _angular_core.InputSignal<string>;
2882
- readonly usageHint: _angular_core.InputSignal<UsageHint>;
2976
+ /** v0.9 prop: typography variant. */
2977
+ readonly variant: _angular_core.InputSignal<TextVariant>;
2883
2978
  readonly bindings: _angular_core.InputSignal<Record<string, string>>;
2884
2979
  readonly emit: _angular_core.InputSignal<(event: string) => void>;
2885
2980
  readonly loading: _angular_core.InputSignal<boolean>;
@@ -2887,92 +2982,98 @@ declare class A2uiTextComponent {
2887
2982
  readonly spec: _angular_core.InputSignal<Spec | undefined>;
2888
2983
  protected cssClass(): string;
2889
2984
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<A2uiTextComponent, never>;
2890
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiTextComponent, "a2ui-text", never, { "text": { "alias": "text"; "required": false; "isSignal": true; }; "usageHint": { "alias": "usageHint"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "emit": { "alias": "emit"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2985
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiTextComponent, "a2ui-text", never, { "text": { "alias": "text"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "emit": { "alias": "emit"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2891
2986
  }
2892
2987
 
2893
2988
  declare class A2uiIconComponent {
2894
- /** v1 canonical prop. */
2895
- readonly name: _angular_core.InputSignal<string | undefined>;
2896
- /** Pre-v1 alias retained for back-compat. */
2897
- readonly icon: _angular_core.InputSignal<string>;
2898
- readonly size: _angular_core.InputSignal<number | null>;
2989
+ /** v0.9 prop: a Material Symbols name (string) or an inline `{ svgPath }`. */
2990
+ readonly name: _angular_core.InputSignal<string | {
2991
+ svgPath: string;
2992
+ } | undefined>;
2899
2993
  readonly bindings: _angular_core.InputSignal<Record<string, string>>;
2900
2994
  readonly emit: _angular_core.InputSignal<(event: string) => void>;
2901
2995
  readonly loading: _angular_core.InputSignal<boolean>;
2902
2996
  readonly childKeys: _angular_core.InputSignal<string[]>;
2903
2997
  readonly spec: _angular_core.InputSignal<Spec | undefined>;
2904
- protected readonly effectiveName: _angular_core.Signal<string>;
2998
+ /** Inline SVG path when `name` is the `{ svgPath }` object form. */
2999
+ protected readonly svgPath: _angular_core.Signal<string | null>;
3000
+ /** The string ligature name when `name` is a string. */
3001
+ protected readonly ligatureName: _angular_core.Signal<string>;
2905
3002
  /** The effective name as a Material Symbols ligature (camelCase → snake_case). */
2906
3003
  protected readonly glyphName: _angular_core.Signal<string>;
2907
3004
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<A2uiIconComponent, never>;
2908
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiIconComponent, "a2ui-icon", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "emit": { "alias": "emit"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3005
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiIconComponent, "a2ui-icon", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "emit": { "alias": "emit"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2909
3006
  }
2910
3007
 
2911
- /** v1 fit values mapped 1:1 to CSS object-fit. */
2912
- type ImageFit = 'contain' | 'cover' | 'fill' | 'none' | 'scale-down';
2913
- /** v1 usageHint maps to a sizing preset. The component renders fluid by
2914
- * default; usageHint sets a max-width / aspect-ratio to match common
2915
- * intents. */
2916
- type ImageUsageHint = 'icon' | 'avatar' | 'smallFeature' | 'mediumFeature' | 'largeFeature' | 'header';
3008
+ /** v0.9 fit values; 'scaleDown' maps to CSS object-fit: scale-down. */
3009
+ type ImageFit = 'contain' | 'cover' | 'fill' | 'none' | 'scaleDown';
3010
+ /** v0.9 variant maps to a sizing preset class. */
3011
+ type ImageVariant = 'icon' | 'avatar' | 'smallFeature' | 'mediumFeature' | 'largeFeature' | 'header';
2917
3012
  declare class A2uiImageComponent {
2918
3013
  readonly url: _angular_core.InputSignal<string>;
2919
- readonly alt: _angular_core.InputSignal<string>;
2920
- readonly width: _angular_core.InputSignal<number | null>;
2921
- readonly height: _angular_core.InputSignal<number | null>;
2922
- /** v1 prop: CSS object-fit equivalent. */
2923
- readonly fit: _angular_core.InputSignal<ImageFit | undefined>;
2924
- /** v1 prop: sizing preset. */
2925
- readonly usageHint: _angular_core.InputSignal<ImageUsageHint | undefined>;
3014
+ /** v0.9 prop: alt text / accessible description. */
3015
+ readonly description: _angular_core.InputSignal<string>;
3016
+ /** v0.9 prop: CSS object-fit equivalent ('scaleDown' → 'scale-down'). */
3017
+ readonly fit: _angular_core.InputSignal<ImageFit>;
3018
+ /** v0.9 prop: sizing preset. */
3019
+ readonly variant: _angular_core.InputSignal<ImageVariant>;
2926
3020
  readonly bindings: _angular_core.InputSignal<Record<string, string>>;
2927
3021
  readonly emit: _angular_core.InputSignal<(event: string) => void>;
2928
3022
  readonly loading: _angular_core.InputSignal<boolean>;
2929
3023
  readonly childKeys: _angular_core.InputSignal<string[]>;
2930
3024
  readonly spec: _angular_core.InputSignal<Spec | undefined>;
2931
- protected explicitWidth(): string | null;
2932
- protected explicitHeight(): string | null;
2933
- protected hintStyle(): {
2934
- maxWidth: string;
2935
- aspectRatio?: string;
2936
- borderRadius?: string;
2937
- } | null;
3025
+ protected readonly objectFit: _angular_core.Signal<string>;
3026
+ protected readonly cssClass: _angular_core.Signal<string>;
2938
3027
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<A2uiImageComponent, never>;
2939
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiImageComponent, "a2ui-image", never, { "url": { "alias": "url"; "required": false; "isSignal": true; }; "alt": { "alias": "alt"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "fit": { "alias": "fit"; "required": false; "isSignal": true; }; "usageHint": { "alias": "usageHint"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "emit": { "alias": "emit"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3028
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiImageComponent, "a2ui-image", never, { "url": { "alias": "url"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "fit": { "alias": "fit"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "emit": { "alias": "emit"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2940
3029
  }
2941
3030
 
2942
- type ColumnAlignment = 'start' | 'center' | 'end' | 'stretch';
3031
+ type ColumnAlign = 'start' | 'center' | 'end' | 'stretch';
3032
+ type ColumnJustify = 'start' | 'center' | 'end' | 'spaceAround' | 'spaceBetween' | 'spaceEvenly' | 'stretch';
2943
3033
  declare class A2uiColumnComponent {
2944
3034
  readonly childKeys: _angular_core.InputSignal<string[]>;
2945
3035
  readonly spec: _angular_core.InputSignal<Spec>;
2946
- readonly gap: _angular_core.InputSignal<number>;
2947
- readonly alignment: _angular_core.InputSignal<ColumnAlignment>;
2948
- readonly distribution: _angular_core.InputSignal<"center" | "start" | "end" | "spaceBetween" | "spaceAround" | "spaceEvenly">;
3036
+ /** v0.9 prop: cross-axis alignment (default 'stretch'). */
3037
+ readonly align: _angular_core.InputSignal<ColumnAlign>;
3038
+ /** v0.9 prop: main-axis distribution (default 'start'). */
3039
+ readonly justify: _angular_core.InputSignal<ColumnJustify>;
3040
+ /** Not part of the v0.9 catalog — kept for json-render generative-ui
3041
+ * specs, which may set a numeric spacing unit (multiples of 4px) or a
3042
+ * named size. Unset falls back to the CSS default gap. */
3043
+ readonly gap: _angular_core.InputSignal<number | "small" | "medium" | "large" | undefined>;
2949
3044
  readonly bindings: _angular_core.InputSignal<Record<string, string>>;
2950
3045
  readonly emit: _angular_core.InputSignal<(event: string) => void>;
2951
3046
  readonly loading: _angular_core.InputSignal<boolean>;
2952
3047
  protected readonly alignItems: _angular_core.Signal<string>;
2953
- /** Convert the Tailwind gap unit (multiples of 4px) to pixels. */
2954
- protected readonly gapPx: _angular_core.Signal<number>;
3048
+ protected readonly justifyContent: _angular_core.Signal<string>;
3049
+ protected readonly cssClass: _angular_core.Signal<"a2ui-col a2ui-col--justify-stretch" | "a2ui-col">;
3050
+ protected readonly gapPx: _angular_core.Signal<number | null>;
2955
3051
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<A2uiColumnComponent, never>;
2956
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiColumnComponent, "a2ui-column", never, { "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": true; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "alignment": { "alias": "alignment"; "required": false; "isSignal": true; }; "distribution": { "alias": "distribution"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "emit": { "alias": "emit"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3052
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiColumnComponent, "a2ui-column", never, { "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": true; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "justify": { "alias": "justify"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "emit": { "alias": "emit"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2957
3053
  }
2958
3054
 
2959
- type RowAlignment = 'start' | 'center' | 'end' | 'stretch';
2960
- type RowDistribution = 'start' | 'center' | 'end' | 'space-between' | 'space-around';
3055
+ type RowAlign = 'start' | 'center' | 'end' | 'stretch';
3056
+ type RowJustify = 'start' | 'center' | 'end' | 'spaceAround' | 'spaceBetween' | 'spaceEvenly' | 'stretch';
2961
3057
  declare class A2uiRowComponent {
2962
3058
  readonly childKeys: _angular_core.InputSignal<string[]>;
2963
3059
  readonly spec: _angular_core.InputSignal<Spec>;
2964
- readonly gap: _angular_core.InputSignal<number>;
2965
- readonly alignment: _angular_core.InputSignal<RowAlignment>;
2966
- readonly distribution: _angular_core.InputSignal<RowDistribution>;
3060
+ /** v0.9 prop: cross-axis alignment (default 'stretch'). */
3061
+ readonly align: _angular_core.InputSignal<RowAlign>;
3062
+ /** v0.9 prop: main-axis distribution (default 'start'). */
3063
+ readonly justify: _angular_core.InputSignal<RowJustify>;
3064
+ /** Not part of the v0.9 catalog — kept for json-render generative-ui
3065
+ * specs, which may set a numeric spacing unit (multiples of 4px) or a
3066
+ * named size. Unset falls back to the CSS default gap. */
3067
+ readonly gap: _angular_core.InputSignal<number | "small" | "medium" | "large" | undefined>;
2967
3068
  readonly bindings: _angular_core.InputSignal<Record<string, string>>;
2968
3069
  readonly emit: _angular_core.InputSignal<(event: string) => void>;
2969
3070
  readonly loading: _angular_core.InputSignal<boolean>;
2970
3071
  protected readonly alignItems: _angular_core.Signal<string>;
2971
3072
  protected readonly justifyContent: _angular_core.Signal<string>;
2972
- /** Convert the gap unit (multiples of 4px) to pixels. */
2973
- protected readonly gapPx: _angular_core.Signal<number>;
3073
+ protected readonly cssClass: _angular_core.Signal<"a2ui-row" | "a2ui-row a2ui-row--justify-stretch">;
3074
+ protected readonly gapPx: _angular_core.Signal<number | null>;
2974
3075
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<A2uiRowComponent, never>;
2975
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiRowComponent, "a2ui-row", never, { "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": true; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "alignment": { "alias": "alignment"; "required": false; "isSignal": true; }; "distribution": { "alias": "distribution"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "emit": { "alias": "emit"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3076
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiRowComponent, "a2ui-row", never, { "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": true; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "justify": { "alias": "justify"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "emit": { "alias": "emit"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2976
3077
  }
2977
3078
 
2978
3079
  declare class A2uiCardComponent {
@@ -2987,11 +3088,8 @@ declare class A2uiCardComponent {
2987
3088
  }
2988
3089
 
2989
3090
  declare class A2uiDividerComponent {
2990
- /** Canonical v1 spec name. The LLM emits this. */
2991
- readonly axis: _angular_core.InputSignal<"horizontal" | "vertical" | undefined>;
2992
- /** Older alias retained for json-render usage and back-compat. */
2993
- readonly direction: _angular_core.InputSignal<"horizontal" | "vertical">;
2994
- /** Effective axis — `axis` wins if provided, otherwise fall back to `direction`. */
3091
+ /** v0.9 prop: divider axis (default 'horizontal'). */
3092
+ readonly axis: _angular_core.InputSignal<"horizontal" | "vertical">;
2995
3093
  protected readonly orientation: _angular_core.Signal<"horizontal" | "vertical">;
2996
3094
  readonly bindings: _angular_core.InputSignal<Record<string, string>>;
2997
3095
  readonly emit: _angular_core.InputSignal<(event: string) => void>;
@@ -2999,33 +3097,31 @@ declare class A2uiDividerComponent {
2999
3097
  readonly childKeys: _angular_core.InputSignal<string[]>;
3000
3098
  readonly spec: _angular_core.InputSignal<Spec | undefined>;
3001
3099
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<A2uiDividerComponent, never>;
3002
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiDividerComponent, "a2ui-divider", never, { "axis": { "alias": "axis"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "emit": { "alias": "emit"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3100
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiDividerComponent, "a2ui-divider", never, { "axis": { "alias": "axis"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "emit": { "alias": "emit"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3003
3101
  }
3004
3102
 
3005
3103
  declare class A2uiListComponent {
3006
3104
  readonly childKeys: _angular_core.InputSignal<string[]>;
3007
3105
  readonly spec: _angular_core.InputSignal<Spec>;
3008
3106
  readonly direction: _angular_core.InputSignal<"horizontal" | "vertical">;
3009
- /** v1 canonical prop: cross-axis alignment. */
3010
- readonly alignment: _angular_core.InputSignal<"center" | "start" | "end" | "stretch" | undefined>;
3107
+ /** v0.9 prop: cross-axis alignment (default 'stretch'). */
3108
+ readonly align: _angular_core.InputSignal<"center" | "start" | "end" | "stretch">;
3011
3109
  readonly bindings: _angular_core.InputSignal<Record<string, string>>;
3012
3110
  readonly emit: _angular_core.InputSignal<(event: string) => void>;
3013
3111
  readonly loading: _angular_core.InputSignal<boolean>;
3014
3112
  protected readonly listClass: _angular_core.Signal<"a2ui-list--horizontal" | "a2ui-list--vertical">;
3015
- protected readonly alignmentCss: _angular_core.Signal<string | null>;
3113
+ protected readonly alignmentCss: _angular_core.Signal<string>;
3016
3114
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<A2uiListComponent, never>;
3017
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiListComponent, "a2ui-list", never, { "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": true; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "alignment": { "alias": "alignment"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "emit": { "alias": "emit"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3115
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiListComponent, "a2ui-list", never, { "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": true; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "emit": { "alias": "emit"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3018
3116
  }
3019
3117
 
3020
3118
  declare class A2uiModalComponent {
3021
3119
  /**
3022
- * v1: childKeys[0] = entryPointChild (inline trigger),
3023
- * childKeys[1] = contentChild (modal body).
3120
+ * v0.9: childKeys[0] = trigger (inline entry point),
3121
+ * childKeys[1] = content (modal body).
3024
3122
  */
3025
3123
  readonly childKeys: _angular_core.InputSignal<string[]>;
3026
3124
  readonly spec: _angular_core.InputSignal<Spec>;
3027
- /** Resolved title string (from optional title DynamicString). */
3028
- readonly title: _angular_core.InputSignal<string>;
3029
3125
  readonly bindings: _angular_core.InputSignal<Record<string, string>>;
3030
3126
  readonly emit: _angular_core.InputSignal<(event: string) => void>;
3031
3127
  readonly loading: _angular_core.InputSignal<boolean>;
@@ -3033,13 +3129,13 @@ declare class A2uiModalComponent {
3033
3129
  protected readonly entryPointKey: _angular_core.Signal<string>;
3034
3130
  protected readonly contentKey: _angular_core.Signal<string>;
3035
3131
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<A2uiModalComponent, never>;
3036
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiModalComponent, "a2ui-modal", never, { "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "emit": { "alias": "emit"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3132
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiModalComponent, "a2ui-modal", never, { "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": true; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "emit": { "alias": "emit"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3037
3133
  }
3038
3134
 
3039
3135
  declare class A2uiTabsComponent {
3040
- /** Resolved tab titles from tabItems[*].title — produced by surface-to-spec. */
3136
+ /** Resolved tab titles from tabs[*].title — produced by surface-to-spec. */
3041
3137
  readonly tabTitles: _angular_core.InputSignal<string[]>;
3042
- /** v1: each child key corresponds to a tab's contentChild (childKeys[i] ↔ tabTitles[i]). */
3138
+ /** v0.9: each child key corresponds to a tab's child (childKeys[i] ↔ tabTitles[i]). */
3043
3139
  readonly childKeys: _angular_core.InputSignal<string[]>;
3044
3140
  readonly spec: _angular_core.InputSignal<Spec>;
3045
3141
  readonly bindings: _angular_core.InputSignal<Record<string, string>>;
@@ -3055,32 +3151,26 @@ declare class A2uiTabsComponent {
3055
3151
 
3056
3152
  declare class A2uiAudioPlayerComponent {
3057
3153
  readonly url: _angular_core.InputSignal<string>;
3058
- /** v1 canonical prop: short description / title rendered above the player. */
3154
+ /** v0.9 prop: short description / title rendered above the player. */
3059
3155
  readonly description: _angular_core.InputSignal<string>;
3060
- /** v1 prop name: autoPlay (camelCase). */
3061
- readonly autoPlay: _angular_core.InputSignal<boolean>;
3062
- readonly controls: _angular_core.InputSignal<boolean>;
3063
3156
  readonly bindings: _angular_core.InputSignal<Record<string, string>>;
3064
3157
  readonly emit: _angular_core.InputSignal<(event: string) => void>;
3065
3158
  readonly loading: _angular_core.InputSignal<boolean>;
3066
3159
  readonly childKeys: _angular_core.InputSignal<string[]>;
3067
3160
  readonly spec: _angular_core.InputSignal<Spec | undefined>;
3068
3161
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<A2uiAudioPlayerComponent, never>;
3069
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiAudioPlayerComponent, "a2ui-audio-player", never, { "url": { "alias": "url"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "autoPlay": { "alias": "autoPlay"; "required": false; "isSignal": true; }; "controls": { "alias": "controls"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "emit": { "alias": "emit"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3162
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiAudioPlayerComponent, "a2ui-audio-player", never, { "url": { "alias": "url"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "emit": { "alias": "emit"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3070
3163
  }
3071
3164
 
3072
3165
  declare class A2uiVideoComponent {
3073
3166
  readonly url: _angular_core.InputSignal<string>;
3074
- /** v1 prop name: autoPlay (camelCase). */
3075
- readonly autoPlay: _angular_core.InputSignal<boolean>;
3076
- readonly controls: _angular_core.InputSignal<boolean>;
3077
3167
  readonly bindings: _angular_core.InputSignal<Record<string, string>>;
3078
3168
  readonly emit: _angular_core.InputSignal<(event: string) => void>;
3079
3169
  readonly loading: _angular_core.InputSignal<boolean>;
3080
3170
  readonly childKeys: _angular_core.InputSignal<string[]>;
3081
3171
  readonly spec: _angular_core.InputSignal<Spec | undefined>;
3082
3172
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<A2uiVideoComponent, never>;
3083
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiVideoComponent, "a2ui-video", never, { "url": { "alias": "url"; "required": false; "isSignal": true; }; "autoPlay": { "alias": "autoPlay"; "required": false; "isSignal": true; }; "controls": { "alias": "controls"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "emit": { "alias": "emit"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3173
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<A2uiVideoComponent, "a2ui-video", never, { "url": { "alias": "url"; "required": false; "isSignal": true; }; "bindings": { "alias": "bindings"; "required": false; "isSignal": true; }; "emit": { "alias": "emit"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "childKeys": { "alias": "childKeys"; "required": false; "isSignal": true; }; "spec": { "alias": "spec"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3084
3174
  }
3085
3175
 
3086
3176
  /**
@@ -3370,5 +3460,5 @@ declare function mockAgent(opts?: MockAgentOptions): MockAgent;
3370
3460
  /** Inferred argument type for a schema (alias of StandardSchemaInferOutput). */
3371
3461
  type ToolArgs<S extends StandardSchemaV1> = StandardSchemaInferOutput<S>;
3372
3462
 
3373
- export { A2uiAudioPlayerComponent, A2uiButtonComponent, A2uiCardComponent, A2uiCheckBoxComponent, A2uiColumnComponent, A2uiDateTimeInputComponent, A2uiDividerComponent, A2uiIconComponent, A2uiImageComponent, A2uiListComponent, A2uiModalComponent, A2uiMultipleChoiceComponent, A2uiRowComponent, A2uiSliderComponent, A2uiSurfaceComponent, A2uiTabsComponent, A2uiTextComponent, A2uiTextFieldComponent, A2uiVideoComponent, AGENT_ERROR_MESSAGES, AgentError, CHAT_CONFIG, CHAT_LIFECYCLE, ChatApprovalCardComponent, ChatCitationCardTemplateDirective, ChatCitationPreviewComponent, ChatCitationsCardComponent, ChatCitationsComponent, ChatComponent, ChatConfirmDialogComponent, ChatConnectedOverlayDirective, ChatErrorComponent, ChatGenerativeUiComponent, ChatGenuiSkeletonComponent, ChatHistorySearchPaletteComponent, ChatInputComponent, ChatInterruptComponent, ChatInterruptPanelComponent, ChatLauncherButtonComponent, ChatMessageActionsComponent, ChatMessageComponent, ChatMessageListComponent, ChatOverflowMenuComponent, ChatOverlayOriginDirective, ChatPopupComponent, ChatProjectListComponent, ChatReasoningComponent, ChatScrollBubbleComponent, ChatSelectComponent, ChatSidebarComponent, ChatSidenavComponent, ChatSidenavScrimComponent, ChatStreamingMdComponent, ChatSubagentCardComponent, ChatSubagentsComponent, ChatSuggestionsComponent, ChatThreadListComponent, ChatTimelineComponent, ChatTimelineSliderComponent, ChatToolCallCardComponent, ChatToolCallTemplateDirective, ChatToolCallsComponent, ChatToolViewsComponent, ChatTraceComponent, ChatTypingIndicatorComponent, ChatWelcomeComponent, ChatWelcomeSuggestionComponent, ChatWindowComponent, CitationsResolverService, IS_HEADER_ROW, MARKDOWN_VIEW_REGISTRY, MarkdownAutolinkComponent, MarkdownBlockquoteComponent, MarkdownChildrenComponent, MarkdownCitationReferenceComponent, MarkdownCodeBlockComponent, MarkdownDocumentComponent, MarkdownEmphasisComponent, MarkdownHardBreakComponent, MarkdownHeadingComponent, MarkdownHtmlComponent, MarkdownImageComponent, MarkdownInlineCodeComponent, MarkdownLinkComponent, MarkdownListComponent, MarkdownListItemComponent, MarkdownMathComponent, MarkdownParagraphComponent, MarkdownSoftBreakComponent, MarkdownStrikethroughComponent, MarkdownStrongComponent, MarkdownTableCellComponent, MarkdownTableComponent, MarkdownTableRowComponent, MarkdownTextComponent, MarkdownThematicBreakComponent, MessageTemplateDirective, STREAMING_MARKDOWN_CONTRACT_VIOLATION_POLICY, a2uiBasicCatalog, action, ask, buildA2uiActionMessage, cacheplaneMarkdownViews, cancelledClientToolResult, citationSourceVisual, citationTypeLabel, citationTypeMeta, clientToolGuardFailureResult, completeDelivery, createA2uiSurfaceStore, createAgentRef, createContentClassifier, createParseTreeStore, createPartialArgsBridge, defaultInterruptedClientToolResult, deriveDomain, deriveJsonSchema, deriveMonogram, deriveSourceType, emitBinding, executeFunctionTool, extractErrorMessage, formatDuration, formatPublished, getInterrupt, getMessageType, injectThreadRouting, isAbortError, isAssistantMessage, isSystemMessage, isToolMessage, isTyping, isUserMessage, markdownDocument, messageContent, mockAgent, monogramColor, monogramHue, normalizeEnvelopeArgs, normalizeViewEntry, provideChat, renderMarkdown, selectPendingClientToolCalls, shouldClaimBeforeExecute, startClientToolExecutor, staticDelivery, statusColor, streamingDelivery, submitMessage, toAgentError, toClientToolSpecs, tools, validateArgs, view };
3463
+ export { A2uiAudioPlayerComponent, A2uiButtonComponent, A2uiCardComponent, A2uiCheckBoxComponent, A2uiChoicePickerComponent, A2uiColumnComponent, A2uiDateTimeInputComponent, A2uiDividerComponent, A2uiIconComponent, A2uiImageComponent, A2uiListComponent, A2uiModalComponent, A2uiRowComponent, A2uiSliderComponent, A2uiSurfaceComponent, A2uiTabsComponent, A2uiTextComponent, A2uiTextFieldComponent, A2uiVideoComponent, AGENT_ERROR_MESSAGES, AgentError, CHAT_CONFIG, CHAT_LIFECYCLE, ChatApprovalCardComponent, ChatCitationCardTemplateDirective, ChatCitationPreviewComponent, ChatCitationsCardComponent, ChatCitationsComponent, ChatComponent, ChatConfirmDialogComponent, ChatConnectedOverlayDirective, ChatErrorComponent, ChatGenerativeUiComponent, ChatGenuiSkeletonComponent, ChatHistorySearchPaletteComponent, ChatInputComponent, ChatInterruptComponent, ChatInterruptPanelComponent, ChatLauncherButtonComponent, ChatMessageActionsComponent, ChatMessageComponent, ChatMessageListComponent, ChatOverflowMenuComponent, ChatOverlayOriginDirective, ChatPopupComponent, ChatProjectListComponent, ChatReasoningComponent, ChatScrollBubbleComponent, ChatSelectComponent, ChatSidebarComponent, ChatSidenavComponent, ChatSidenavScrimComponent, ChatStreamingMdComponent, ChatSubagentCardComponent, ChatSubagentsComponent, ChatSuggestionsComponent, ChatThreadListComponent, ChatTimelineComponent, ChatTimelineSliderComponent, ChatToolCallCardComponent, ChatToolCallTemplateDirective, ChatToolCallsComponent, ChatToolViewsComponent, ChatTraceComponent, ChatTypingIndicatorComponent, ChatWelcomeComponent, ChatWelcomeSuggestionComponent, ChatWindowComponent, CitationsResolverService, IS_HEADER_ROW, MARKDOWN_VIEW_REGISTRY, MarkdownAutolinkComponent, MarkdownBlockquoteComponent, MarkdownChildrenComponent, MarkdownCitationReferenceComponent, MarkdownCodeBlockComponent, MarkdownDocumentComponent, MarkdownEmphasisComponent, MarkdownHardBreakComponent, MarkdownHeadingComponent, MarkdownHtmlComponent, MarkdownImageComponent, MarkdownInlineCodeComponent, MarkdownLinkComponent, MarkdownListComponent, MarkdownListItemComponent, MarkdownMathComponent, MarkdownParagraphComponent, MarkdownSoftBreakComponent, MarkdownStrikethroughComponent, MarkdownStrongComponent, MarkdownTableCellComponent, MarkdownTableComponent, MarkdownTableRowComponent, MarkdownTextComponent, MarkdownThematicBreakComponent, MessageTemplateDirective, STREAMING_MARKDOWN_CONTRACT_VIOLATION_POLICY, a2uiBasicCatalog, a2uiClientCapabilities, action, ask, buildA2uiActionMessage, cacheplaneMarkdownViews, cancelledClientToolResult, citationSourceVisual, citationTypeLabel, citationTypeMeta, clientToolGuardFailureResult, completeDelivery, createA2uiSurfaceStore, createAgentRef, createContentClassifier, createParseTreeStore, createPartialArgsBridge, defaultInterruptedClientToolResult, deriveDomain, deriveJsonSchema, deriveMonogram, deriveSourceType, emitBinding, executeFunctionTool, extractErrorMessage, formatDuration, formatPublished, getInterrupt, getMessageType, injectThreadRouting, isAbortError, isAssistantMessage, isSystemMessage, isToolMessage, isTyping, isUserMessage, markdownDocument, messageContent, mockAgent, monogramColor, monogramHue, normalizeEnvelopeArgs, normalizeViewEntry, provideChat, renderMarkdown, selectPendingClientToolCalls, shouldClaimBeforeExecute, startClientToolExecutor, staticDelivery, statusColor, streamingDelivery, submitMessage, toAgentError, toClientToolSpecs, tools, validateArgs, view };
3374
3464
  export type { A2uiComponentView, A2uiSurfaceState, A2uiSurfaceStore, A2uiViewEntry, A2uiViews, Agent, AgentCheckpoint, AgentCustomEvent, AgentErrorKind, AgentEvent, AgentInterrupt, AgentRef, AgentRuntimeTelemetryEvent, AgentRuntimeTelemetryPayload, AgentRuntimeTelemetryProperties, AgentRuntimeTelemetrySink, AgentStateUpdateEvent, AgentStatus, AgentSubmitInput, AgentSubmitOptions, AgentWithHistory, AnyFunctionToolDef, AskToolDef, ChatApprovalAction, ChatConfig, ChatLifecycle, ChatMessageRole, ChatRenderEvent, ChatScrollBubbleMode, ChatSelectOption, ChatSidenavMode, ChatToolCallTemplateContext, Citation, CitationImageVisual, CitationMonogramVisual, CitationSourceVisual, CitationTypeIcon, CitationTypeIconVisual, CitationTypeMeta, ClientToolContinuationLimitEvent, ClientToolContinuationOptions, ClientToolContinuationPolicy, ClientToolDef, ClientToolExecutionGuard, ClientToolExecutionKey, ClientToolExecutionOptions, ClientToolExecutionRecord, ClientToolExecutionStore, ClientToolExecutorOptions, ClientToolLifecycle, ClientToolLifecyclePhase, ClientToolRegistry, ClientToolResult, ClientToolSpec, ClientToolViewProps, ClientToolsCapability, ClientToolsCoordinator, CompleteOutcome, ConnectedPosition, ContentBlock, ContentClassifier, ContentType, ElementAccumulationState, FunctionToolDef, FunctionToolHandlerContext, InterruptAction, Message, MessageDelivery, MessageTemplateType, MockAgent, MockAgentOptions, OverflowMenuItem, OverlayPositionResult, ParseTreeStore, PartialArgsBridge, Project, ProjectActionAdapter, ResolvedCitation, Role, SelectPendingClientToolCallsInput, StreamingMarkdownContractViolationPolicy, StreamingMarkdownDocument, Subagent, SubagentStatus, Thread, ThreadActionAdapter, ThreadMatch, ThreadRoutingConfig, ToolArgs, ToolCall, ToolCallInfo, ToolCallStatus, TraceState, ViewProps, ViewToolDef };