@ray-js/t-agent-plugin-aistream 0.2.5-beta-2 → 0.2.5-beta-4

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.
package/README-zh_CN.md CHANGED
@@ -1,4 +1,4 @@
1
- # AI 智能体 SDK
1
+ # AI 助手 SDK
2
2
 
3
3
  ## 版本说明
4
4
 
@@ -124,7 +124,7 @@ export default function ChatPage() {
124
124
 
125
125
  # t-agent
126
126
 
127
- t-agent 包是使用 TypeScript 编写的对话智能体 SDK,用于构建对话智能体,支持插件机制,可以扩展对话智能体的功能。
127
+ t-agent 包是使用 TypeScript 编写的对话助手 SDK,用于构建对话智能体,支持插件机制,可以扩展对话智能体的功能。
128
128
  该包是纯 SDK 包,不包含任何 UI 组件,可以和任何 UI 框架搭配使用。
129
129
 
130
130
  ## 基本概念
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # AI Intelligent Agent SDK
1
+ # AI Agent SDK
2
2
 
3
3
  ## Version Notes
4
4
 
@@ -683,7 +683,8 @@ export declare enum AIStreamAppErrorCode {
683
683
  INVALID_DATA_PACKET = 39008,
684
684
  FILE_DATA_READ_ERROR = 39009,
685
685
  DATA_SEND_FAILED = 39010,
686
- CONNECTION_CLOSED_BY_REMOTE = 39012
686
+ CONNECTION_CLOSED_BY_REMOTE = 39012,
687
+ AUDIO_UNEXPECTEDLY_RESET = 39014
687
688
  }
688
689
  export declare enum AIStreamServerErrorCode {
689
690
  OK = 200,
@@ -147,6 +147,7 @@ export let AIStreamAppErrorCode = /*#__PURE__*/function (AIStreamAppErrorCode) {
147
147
  AIStreamAppErrorCode[AIStreamAppErrorCode["FILE_DATA_READ_ERROR"] = 39009] = "FILE_DATA_READ_ERROR";
148
148
  AIStreamAppErrorCode[AIStreamAppErrorCode["DATA_SEND_FAILED"] = 39010] = "DATA_SEND_FAILED";
149
149
  AIStreamAppErrorCode[AIStreamAppErrorCode["CONNECTION_CLOSED_BY_REMOTE"] = 39012] = "CONNECTION_CLOSED_BY_REMOTE";
150
+ AIStreamAppErrorCode[AIStreamAppErrorCode["AUDIO_UNEXPECTEDLY_RESET"] = 39014] = "AUDIO_UNEXPECTEDLY_RESET";
150
151
  return AIStreamAppErrorCode;
151
152
  }({});
152
153
  export let AIStreamServerErrorCode = /*#__PURE__*/function (AIStreamServerErrorCode) {
@@ -66,6 +66,7 @@ export declare class AsrAgent {
66
66
  /** 开始录音时长监听 */
67
67
  private startRecordTimer;
68
68
  private _start;
69
+ private handleAudioRecorderResetError;
69
70
  private _abort;
70
71
  private _stop;
71
72
  start(): Promise<void>;
@@ -4,7 +4,7 @@ import "core-js/modules/es.json.stringify.js";
4
4
  import "core-js/modules/es.promise.finally.js";
5
5
  import "core-js/modules/web.dom-collections.iterator.js";
6
6
  import { authorize, authorizeStatus, getCurrentHomeInfo, initAudioRecorder } from '../utils';
7
- import { AIStreamAttributePayloadType, AIStreamAttributeType, ConnectClientType, ConnectState, ReceivedTextPacketType, SessionState } from '../AIStreamTypes';
7
+ import { AIStreamAppErrorCode, AIStreamAttributePayloadType, AIStreamAttributeType, ConnectClientType, ConnectState, ReceivedTextPacketType, SessionState } from '../AIStreamTypes';
8
8
  import { DEFAULT_TOKEN_API, DEFAULT_TOKEN_API_VERSION, globalAIStreamClient } from '../global';
9
9
  import { Logger, safeParseJSON } from '@ray-js/t-agent';
10
10
  import logger from '../utils/logger';
@@ -155,6 +155,9 @@ export class AsrAgent {
155
155
  if (finished) {
156
156
  return;
157
157
  }
158
+ if (this.activeEvent && error) {
159
+ this.activeEvent.abort();
160
+ }
158
161
  this.audioStream = null;
159
162
  this.activeEvent = null;
160
163
  finished = true;
@@ -236,11 +239,36 @@ export class AsrAgent {
236
239
  finish(error);
237
240
  });
238
241
  const [error] = await tryCatch(() => audioStream.start());
239
- if (error) {
240
- finish(error);
242
+ if (!error) {
243
+ this.startRecordTimer();
241
244
  return;
242
245
  }
243
- this.startRecordTimer();
246
+ const errorCode = error === null || error === void 0 ? void 0 : error.code;
247
+ if (errorCode === AIStreamAppErrorCode.AUDIO_UNEXPECTEDLY_RESET) {
248
+ const handled = await this.handleAudioRecorderResetError(audioStream, finish);
249
+ if (handled) return;
250
+ }
251
+ finish(error);
252
+ }
253
+ async handleAudioRecorderResetError(audioStream, finish) {
254
+ logger.debug('AsrAgent: Audio recorder was reset, reinitializing...');
255
+ try {
256
+ const {
257
+ recordingOptions
258
+ } = this.options || {};
259
+ const sampleRate = recordingOptions === null || recordingOptions === void 0 ? void 0 : recordingOptions.sampleRate;
260
+ await initAudioRecorder(sampleRate ? {
261
+ sampleRate
262
+ } : {});
263
+ audioStream.started = false;
264
+ await audioStream.start();
265
+ this.startRecordTimer();
266
+ return true;
267
+ } catch (reinitError) {
268
+ logger.error('AsrAgent: Failed to reinitialize audio recorder', reinitError);
269
+ finish(reinitError);
270
+ return false;
271
+ }
244
272
  }
245
273
  async _abort() {
246
274
  this.status = AsrAgentStatus.ABORTING;
@@ -482,6 +482,7 @@ export function withAIStream() {
482
482
  await handleTTTAction(tile, payload.tttAction);
483
483
  }
484
484
  });
485
+ ui.onEvent('runTTTAction', async action => handleTTTAction(null, action));
485
486
  onTileEvent(async (tile, payload) => {
486
487
  if (tile.type === 'card' && (payload === null || payload === void 0 ? void 0 : payload.type) === '@buildIn/setCardState') {
487
488
  const {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ray-js/t-agent-plugin-aistream",
3
- "version": "0.2.5-beta-2",
3
+ "version": "0.2.5-beta-4",
4
4
  "author": "Tuya.inc",
5
5
  "license": "MIT",
6
6
  "private": false,
@@ -35,5 +35,5 @@
35
35
  "devDependencies": {
36
36
  "@types/url-parse": "^1.4.11"
37
37
  },
38
- "gitHead": "cde788174a2b63520507f0606c1e9d41679b46d1"
38
+ "gitHead": "6d86d0eaf360e15d4f8e996e5c388c1f020d8a74"
39
39
  }