{"version":3,"file":"utils/event-stream.mjs","sources":["webpack://@agent-tars/server/./src/utils/event-stream.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/*\n * Copyright (c) 2025 Bytedance, Inc. and its affiliates.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AgentEventStream } from '@agent-tars/core';\n\n/**\n * Implement event stream bridging to forward Agent's native events to the client\n */\nexport class EventStreamBridge {\n  private subscribers: Set<(type: string, data: any) => void> = new Set();\n\n  /**\n   * Subscribe to events\n   * @param handler event processing function\n   */\n  subscribe(handler: (type: string, data: any) => void): void {\n    this.subscribers.add(handler);\n  }\n\n  /**\n   * Unsubscribe event\n   * @param handler event processing function\n   */\n  unsubscribe(handler: (type: string, data: any) => void): void {\n    this.subscribers.delete(handler);\n  }\n\n  /**\n   * Publish event\n   * @param type event type\n   * @param data event data\n   */\n  emit(type: string, data: any): void {\n    for (const handler of this.subscribers) {\n      handler(type, data);\n    }\n  }\n\n  /**\n   * Event stream manager connected to Agent\n   * @param agentEventStream Agent's event stream manager\n   * @returns Unsubscribe function\n   */\n  connectToAgentEventStream(agentEventStream: AgentEventStream.Processor): () => void {\n    const handleEvent = (event: AgentEventStream.Event) => {\n      // Mapping event types to socket.io-friendly events\n      switch (event.type) {\n        case 'agent_run_start':\n          // 确保明确发送processing状态\n          this.emit('agent-status', { isProcessing: true, state: 'executing' });\n          break;\n\n        case 'agent_run_end':\n          // 确保明确发送完成状态\n          this.emit('agent-status', { isProcessing: false, state: event.status || 'idle' });\n          break;\n\n        case 'user_message':\n          // 用户消息时明确设置处理中状态\n          this.emit('agent-status', { isProcessing: true, state: 'processing' });\n          this.emit('query', { text: event.content });\n          break;\n        case 'assistant_message':\n          this.emit('answer', { text: event.content });\n          break;\n        case 'tool_call':\n          this.emit('event', {\n            type: 'tool_call',\n            name: event.name,\n            toolCallId: event.toolCallId,\n            arguments: event.arguments,\n          });\n          break;\n        case 'tool_result':\n          this.emit('event', {\n            type: 'tool_result',\n            name: event.name,\n            toolCallId: event.toolCallId,\n            content: event.content,\n            error: event.error,\n          });\n          break;\n        case 'system':\n          this.emit(event.level, { message: event.message });\n          break;\n        default:\n          this.emit('event', event);\n      }\n\n      // 特别处理中止事件\n      if (event.type === 'system' && event.message?.includes('aborted')) {\n        this.emit('aborted', { message: event.message });\n        // 中止后明确设置非处理状态\n        this.emit('agent-status', { isProcessing: false, state: 'idle' });\n      }\n\n      // Add handling for status events\n      if (event.type === 'system' && event.message?.includes('status')) {\n        this.emit('status', { message: event.message });\n      }\n    };\n\n    // Subscribe to the Agent's event stream\n    return agentEventStream.subscribe(handleEvent);\n  }\n}\n"],"names":["EventStreamBridge","handler","type","data","agentEventStream","handleEvent","event","_event_message","_event_message1","Set"],"mappings":";;;;AAIC;;;;;;;;;;AAOM,MAAMA;IAOX,UAAUC,OAA0C,EAAQ;QAC1D,IAAI,CAAC,WAAW,CAAC,GAAG,CAACA;IACvB;IAMA,YAAYA,OAA0C,EAAQ;QAC5D,IAAI,CAAC,WAAW,CAAC,MAAM,CAACA;IAC1B;IAOA,KAAKC,IAAY,EAAEC,IAAS,EAAQ;QAClC,KAAK,MAAMF,WAAW,IAAI,CAAC,WAAW,CACpCA,QAAQC,MAAMC;IAElB;IAOA,0BAA0BC,gBAA4C,EAAc;QAClF,MAAMC,cAAc,CAACC;gBA8CYC,gBAOAC;YAnD/B,OAAQF,MAAM,IAAI;gBAChB,KAAK;oBAEH,IAAI,CAAC,IAAI,CAAC,gBAAgB;wBAAE,cAAc;wBAAM,OAAO;oBAAY;oBACnE;gBAEF,KAAK;oBAEH,IAAI,CAAC,IAAI,CAAC,gBAAgB;wBAAE,cAAc;wBAAO,OAAOA,MAAM,MAAM,IAAI;oBAAO;oBAC/E;gBAEF,KAAK;oBAEH,IAAI,CAAC,IAAI,CAAC,gBAAgB;wBAAE,cAAc;wBAAM,OAAO;oBAAa;oBACpE,IAAI,CAAC,IAAI,CAAC,SAAS;wBAAE,MAAMA,MAAM,OAAO;oBAAC;oBACzC;gBACF,KAAK;oBACH,IAAI,CAAC,IAAI,CAAC,UAAU;wBAAE,MAAMA,MAAM,OAAO;oBAAC;oBAC1C;gBACF,KAAK;oBACH,IAAI,CAAC,IAAI,CAAC,SAAS;wBACjB,MAAM;wBACN,MAAMA,MAAM,IAAI;wBAChB,YAAYA,MAAM,UAAU;wBAC5B,WAAWA,MAAM,SAAS;oBAC5B;oBACA;gBACF,KAAK;oBACH,IAAI,CAAC,IAAI,CAAC,SAAS;wBACjB,MAAM;wBACN,MAAMA,MAAM,IAAI;wBAChB,YAAYA,MAAM,UAAU;wBAC5B,SAASA,MAAM,OAAO;wBACtB,OAAOA,MAAM,KAAK;oBACpB;oBACA;gBACF,KAAK;oBACH,IAAI,CAAC,IAAI,CAACA,MAAM,KAAK,EAAE;wBAAE,SAASA,MAAM,OAAO;oBAAC;oBAChD;gBACF;oBACE,IAAI,CAAC,IAAI,CAAC,SAASA;YACvB;YAGA,IAAIA,AAAe,aAAfA,MAAM,IAAI,IAAK,SAAYC,CAAAA,iBAAAA,MAAM,OAAO,AAAD,IAAZA,KAAAA,IAAAA,eAAe,QAAQ,CAAC,UAAS,GAAG;gBACjE,IAAI,CAAC,IAAI,CAAC,WAAW;oBAAE,SAASD,MAAM,OAAO;gBAAC;gBAE9C,IAAI,CAAC,IAAI,CAAC,gBAAgB;oBAAE,cAAc;oBAAO,OAAO;gBAAO;YACjE;YAGA,IAAIA,AAAe,aAAfA,MAAM,IAAI,IAAK,SAAYE,CAAAA,kBAAAA,MAAM,OAAO,AAAD,IAAZA,KAAAA,IAAAA,gBAAe,QAAQ,CAAC,SAAQ,GAC7D,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,SAASF,MAAM,OAAO;YAAC;QAEjD;QAGA,OAAOF,iBAAiB,SAAS,CAACC;IACpC;;QA/FA,uBAAQ,eAAsD,IAAII;;AAgGpE"}