Member Junction
    Preparing search index...
    Index

    Constructors

    Properties

    AcceptedFileTypes: string = 'image/*'
    AfterSkillsOpened: EventEmitter<void> = ...

    Fired AFTER the dropdown actually opened. Not emitted on the canceled path, and not emitted when no active provider owns the trigger — so a host counting this counts dropdowns the user saw, rather than clicks.

    AttachmentClicked: EventEmitter<PendingAttachment> = ...
    AttachmentError: EventEmitter<string> = ...
    AttachmentsChanged: EventEmitter<PendingAttachment[]> = ...
    BeforeSkillsOpened: EventEmitter<BeforeSkillsOpenedEventArgs> = ...

    Fired BEFORE the Skills button opens the dropdown. Flip Cancel to veto — a host gating skills by entitlement, or surfacing them elsewhere, blocks it here.

    A pair rather than a lone emitter because this is an ACTION a host might reasonably refuse (UI_LAYERING_GUIDE section 6, rule 1). Handlers must be synchronous; Cancel travels back through EventEmitter's synchronous dispatch.

    Blurred: EventEmitter<void> = ...

    Composer lost focus — hosts persist drafts on this.

    CanStartRealtime: boolean = true

    Whether a voice session can be started right now (mic Disabled when false).

    CurrentUser?: UserInfo
    Disabled: boolean = false
    EnableAttachments: boolean = true
    EnableMentions: boolean = true

    Master switch for all mention/command triggers (pass-through to the mention editor).

    EnablePlanMode: boolean = false

    Shows the in-composer Plan Mode toggle button when true.

    EnableRealtime: boolean = false

    Shows the in-composer mic button when true.

    EnableSkills: boolean = false

    Shows the in-composer Skills button when true.

    Gated separately from EnableMentions because a host can have the / trigger active and still not want the button — but the common case is that a composer offering skill commands should advertise them, since / is otherwise invisible.

    ExcludedTriggerKeys: string[] = []

    Discovery-mode filter: provider Keys to skip (pass-through to the mention editor).

    MaxAttachments: number = 10
    MaxAttachmentSizeBytes: number = ...
    MentionEditor?: MentionEditorComponent
    Placeholder: string = 'Type your message to start a new conversation...'
    PlanModeActive: boolean = false

    Current Plan Mode toggle state (renders the button in its active state).

    PlanModeToggle: EventEmitter<void> = ...

    Emitted when the user clicks the in-composer Plan Mode toggle button.

    Provider: IMetadataProvider | null = null

    Optional metadata provider scoping this composer (pass-through to the mention editor).

    Rows: number = 3
    SendSlotMode: SendSlotMode = 'send'

    What the send slot is doing; see SendSlotMode. The box never decides this itself.

    ShowCharacterCount: boolean = false
    StatusElapsed: string | null = null

    An elapsed time shown after StatusText, e.g. "41s". Separate from the text so it is kept out of the live region (a ticking clock must not be announced every second) and dropped on narrow screens.

    StatusText: string | null = null

    A status line rendered bottom-left inside the box while non-null, e.g. "Sage is working". It is a polite live region, so a change is announced once; keep it short.

    StopClicked: EventEmitter<void> = ...

    Fired when the send slot is clicked in stop mode. The box only reports the click; what is stopped, and how, is the host's business (this widget knows nothing about agents or runs).

    StopCount: number = 0

    How many things a stop would stop. Above 1 in stop mode the slot reads "Stop all" with this count.

    StopLabel: string = 'Stop'

    Tooltip and accessible name of the slot in stop mode, e.g. "Stop Sage" or "Stop all 2 runs".

    TextSubmitted: EventEmitter<string> = ...
    TriggerProviders: ComposerTriggerProvider[] | null = null

    Explicit trigger-provider list (pass-through to the mention editor; explicit list wins over discovery).

    Value: string = ''
    ValueChange: EventEmitter<string> = ...
    VoiceActive: boolean = false

    Whether a realtime voice session is currently active (mic renders in its active state).

    VoiceOptionsRequested: EventEmitter<void> = ...

    Emitted when the user clicks the small caret next to the phone button — the host opens the voice agent/model picker so call options (which agent, which voice model) stay reachable without adding friction to the plain phone click's instant-start path.

    VoiceRequested: EventEmitter<void> = ...

    Emitted when the user clicks the mic button to start/stop a voice session.

    Accessors

    • get SkillsActive(): boolean

      True while the skill dropdown is open, driving the button's expanded state.

      Note the ARIA differs from Plan Mode next to it, deliberately: Plan Mode is a toggle BUTTON (a mode that stays on), so aria-pressed is right there. This one opens a popup, so it is aria-expanded + aria-haspopup. Using aria-pressed here would have a screen reader announce "pressed" for something that actually just revealed a list.

      DERIVED, not an @Input, and this is the difference from Plan Mode. Plan Mode's active state is a persisted user preference the host owns and threads down. "Is the skill dropdown open" is intrinsic to this composer, so an

      Returns boolean

      would be an API the host cannot meaningfully answer and would leave the button permanently unpressed if nobody bound it.

    Methods

    • Add an artifact as a pending attachment (called by parent after artifact selection)

      Parameters

      • artifact: {
            artifactVersionId?: string;
            fileID: string;
            fileName: string;
            mimeType: string;
            sizeBytes: number;
        }

      Returns PendingAttachment | undefined

    • Get mention chip data including configuration presets

      Returns {
          id: string;
          name: string;
          presetId?: string;
          presetName?: string;
          type: string;
      }[]

    • Handle clicks on the container - focus the mention editor Only moves cursor to end if clicking outside the contentEditable area

      Parameters

      • event: MouseEvent

      Returns void

    • NOTE: the template pairs this with (mousedown)="$event.preventDefault(); $event.stopPropagation()", and BOTH halves are load-bearing.

      preventDefault — a

      Parameters

      • Optionalevent: Event

      Returns void