{"version":3,"file":"agentskit-angular.mjs","sources":["../../src/chat.service.ts","../../src/components.ts","../../src/agentskit-angular.ts"],"sourcesContent":["import { Injectable, OnDestroy, signal, type WritableSignal } from '@angular/core'\nimport { BehaviorSubject, type Observable } from 'rxjs'\nimport { createChatController } from '@agentskit/core'\nimport type {\n  ChatConfig,\n  ChatController,\n  ChatReturn,\n  ChatState,\n  EditOptions,\n  ToolCall,\n} from '@agentskit/core'\n\n/**\n * Angular service wrapping the shared `ChatController`. Exposes\n * chat state both as a Signal (template-friendly) and as a\n * BehaviorSubject (RxJS interop).\n *\n * Usage:\n *   @Component({ ... })\n *   export class ChatPage {\n *     constructor(public chat: AgentskitChat) {\n *       chat.init({ adapter })\n *     }\n *   }\n */\n@Injectable({ providedIn: 'root' })\nexport class AgentskitChat implements OnDestroy {\n  private controller?: ChatController\n  private unsubscribe?: () => void\n\n  readonly state: WritableSignal<ChatState | null> = signal(null)\n  private readonly _stream$ = new BehaviorSubject<ChatState | null>(null)\n  readonly stream$: Observable<ChatState | null> = this._stream$.asObservable()\n\n  init(config: ChatConfig): ChatReturn {\n    if (this.controller) this.destroy()\n    this.controller = createChatController(config)\n    const push = (): void => {\n      const current = this.controller?.getState() ?? null\n      this.state.set(current)\n      this._stream$.next(current)\n    }\n    push()\n    this.unsubscribe = this.controller.subscribe(push)\n    return this.snapshot()\n  }\n\n  snapshot(): ChatReturn {\n    const c = this.requireController()\n    return {\n      ...c.getState(),\n      send: c.send,\n      stop: c.stop,\n      retry: c.retry,\n      edit: c.edit,\n      regenerate: c.regenerate,\n      setInput: c.setInput,\n      clear: c.clear,\n      proposeToolCall: c.proposeToolCall,\n      approve: c.approve,\n      deny: c.deny,\n    }\n  }\n\n  send = (text: string): Promise<void> => this.requireController().send(text)\n\n  stop = (): void => this.requireController().stop()\n\n  retry = (): Promise<void> => this.requireController().retry()\n\n  edit = (messageId: string, newContent: string, opts?: EditOptions): Promise<void> =>\n    this.requireController().edit(messageId, newContent, opts)\n\n  regenerate = (messageId?: string): Promise<void> => this.requireController().regenerate(messageId)\n\n  setInput = (value: string): void => this.requireController().setInput(value)\n\n  clear = (): Promise<void> => this.requireController().clear()\n\n  proposeToolCall = (proposal: Parameters<ChatReturn['proposeToolCall']>[0]): Promise<ToolCall> =>\n    this.requireController().proposeToolCall(proposal)\n\n  approve = (id: string): Promise<void> => this.requireController().approve(id)\n\n  deny = (id: string, reason?: string): Promise<void> => this.requireController().deny(id, reason)\n\n  destroy(): void {\n    this.unsubscribe?.()\n    this.controller?.stop()\n    this.unsubscribe = undefined\n    this.controller = undefined\n    this.state.set(null)\n    this._stream$.next(null)\n  }\n\n  ngOnDestroy(): void {\n    this.destroy()\n  }\n\n  private requireController(): ChatController {\n    if (!this.controller) throw new Error('AgentskitChat.init(...) must be called first')\n    return this.controller\n  }\n}\n","import {\n  Component,\n  Input,\n  ViewChild,\n  ElementRef,\n  signal,\n  type AfterViewInit,\n  type OnDestroy,\n} from '@angular/core'\nimport type { Message as MessageType, ChatReturn, ToolCall } from '@agentskit/core'\n\n/**\n * Headless Angular chat components mirroring `@agentskit/react`'s set. Each\n * renders `data-ak-*` attributes only — bring your own CSS. Standalone with\n * inline templates; published as partial-Ivy (AOT/APF) via ng-packagr.\n */\n\n@Component({\n  selector: 'ak-chat-container',\n  standalone: true,\n  template: `<div #scroll data-ak-chat-container data-testid=\"ak-chat-container\"><ng-content /></div>`,\n})\nexport class ChatContainerComponent implements AfterViewInit, OnDestroy {\n  @ViewChild('scroll', { static: true }) scrollRef!: ElementRef<HTMLDivElement>\n  private observer?: MutationObserver\n\n  ngAfterViewInit(): void {\n    const el = this.scrollRef?.nativeElement\n    if (!el || typeof MutationObserver === 'undefined') return\n    const observer = new MutationObserver(() => {\n      el.scrollTop = el.scrollHeight\n    })\n    // Some non-browser envs (e.g. happy-dom) expose a partial MutationObserver.\n    if (typeof observer.observe !== 'function') return\n    this.observer = observer\n    observer.observe(el, { childList: true, subtree: true, characterData: true })\n  }\n\n  ngOnDestroy(): void {\n    if (typeof this.observer?.disconnect === 'function') this.observer.disconnect()\n  }\n}\n\n@Component({\n  selector: 'ak-message',\n  standalone: true,\n  template: `<div\n    data-ak-message\n    [attr.data-ak-role]=\"message.role\"\n    [attr.data-ak-status]=\"message.status\"\n  >\n    <div data-ak-content>{{ message.content }}</div>\n  </div>`,\n})\nexport class MessageComponent {\n  @Input({ required: true }) message!: MessageType\n}\n\n@Component({\n  selector: 'ak-input-bar',\n  standalone: true,\n  template: `<form data-ak-input-bar (submit)=\"onSubmit($event)\">\n    <textarea\n      data-ak-input\n      rows=\"1\"\n      [value]=\"chat.input\"\n      [attr.placeholder]=\"placeholder\"\n      [disabled]=\"isBlocked\"\n      (input)=\"chat.setInput($any($event.target).value)\"\n      (keydown.enter)=\"onEnter($event)\"\n    ></textarea>\n    <button data-ak-send type=\"submit\" [disabled]=\"isBlocked || !chat.input.trim()\">Send</button>\n  </form>`,\n})\nexport class InputBarComponent {\n  @Input({ required: true }) chat!: ChatReturn\n  @Input() placeholder = 'Type a message...'\n  @Input() disabled = false\n\n  get isBlocked(): boolean {\n    return this.disabled || this.chat.status === 'streaming'\n  }\n\n  onSubmit(e: Event): void {\n    e.preventDefault()\n    this.submit()\n  }\n\n  onEnter(e: Event): void {\n    if (!(e as KeyboardEvent).shiftKey) {\n      e.preventDefault()\n      this.submit()\n    }\n  }\n\n  private submit(): void {\n    if (this.isBlocked || !this.chat.input.trim()) return\n    void this.chat.send(this.chat.input)\n  }\n}\n\n@Component({\n  selector: 'ak-markdown',\n  standalone: true,\n  template: `<div data-ak-markdown [attr.data-ak-streaming]=\"streaming ? 'true' : null\">{{ content }}</div>`,\n})\nexport class MarkdownComponent {\n  @Input({ required: true }) content = ''\n  @Input() streaming = false\n}\n\n@Component({\n  selector: 'ak-code-block',\n  standalone: true,\n  template: `<div data-ak-code-block [attr.data-ak-language]=\"language\">\n    <pre><code>{{ code }}</code></pre>\n    @if (copyable) {\n      <button data-ak-copy type=\"button\" (click)=\"copy()\">Copy</button>\n    }\n  </div>`,\n})\nexport class CodeBlockComponent {\n  @Input({ required: true }) code = ''\n  @Input() language?: string\n  @Input() copyable = false\n\n  copy(): void {\n    void globalThis.navigator?.clipboard?.writeText(this.code)\n  }\n}\n\n@Component({\n  selector: 'ak-tool-call-view',\n  standalone: true,\n  template: `<div data-ak-tool-call [attr.data-ak-tool-status]=\"toolCall.status\">\n    <button\n      data-ak-tool-toggle\n      type=\"button\"\n      [attr.aria-expanded]=\"expanded()\"\n      (click)=\"expanded.set(!expanded())\"\n    >\n      {{ toolCall.name }}\n    </button>\n    @if (expanded()) {\n      <div data-ak-tool-details>\n        <pre data-ak-tool-args>{{ argsJson }}</pre>\n        @if (toolCall.result) {\n          <div data-ak-tool-result>{{ toolCall.result }}</div>\n        }\n      </div>\n    }\n  </div>`,\n})\nexport class ToolCallViewComponent {\n  @Input({ required: true }) toolCall!: ToolCall\n  readonly expanded = signal(false)\n\n  get argsJson(): string {\n    return JSON.stringify(this.toolCall.args, null, 2)\n  }\n}\n\n@Component({\n  selector: 'ak-thinking-indicator',\n  standalone: true,\n  template: `@if (visible) {\n    <div data-ak-thinking>\n      <span data-ak-thinking-dots><span>•</span><span>•</span><span>•</span></span>\n      <span data-ak-thinking-label>{{ label }}</span>\n    </div>\n  }`,\n})\nexport class ThinkingIndicatorComponent {\n  @Input({ required: true }) visible = false\n  @Input() label = 'Thinking...'\n}\n\n@Component({\n  selector: 'ak-tool-confirmation',\n  standalone: true,\n  template: `@if (toolCall.status === 'requires_confirmation') {\n    <div data-ak-tool-confirmation [attr.data-ak-tool-name]=\"toolCall.name\">\n      <div data-ak-tool-confirmation-header>\n        <span data-ak-tool-confirmation-name>{{ toolCall.name }}</span>\n        <span data-ak-tool-confirmation-status>requires confirmation</span>\n      </div>\n      <div data-ak-tool-confirmation-args>{{ argsJson }}</div>\n      <div data-ak-tool-confirmation-actions>\n        <button data-ak-tool-confirmation-approve type=\"button\" (click)=\"onApprove(toolCall.id)\">\n          Approve\n        </button>\n        <button data-ak-tool-confirmation-deny type=\"button\" (click)=\"onDeny(toolCall.id)\">\n          Deny\n        </button>\n      </div>\n    </div>\n  }`,\n})\nexport class ToolConfirmationComponent {\n  @Input({ required: true }) toolCall!: ToolCall\n  @Input({ required: true }) onApprove!: (toolCallId: string) => void\n  @Input({ required: true }) onDeny!: (toolCallId: string, reason?: string) => void\n\n  get argsJson(): string {\n    return JSON.stringify(this.toolCall.args, null, 2)\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}