byt-lingxiao-ai 0.3.3 → 0.3.5

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.
@@ -28450,7 +28450,7 @@ if (typeof window !== 'undefined') {
28450
28450
  var es_iterator_constructor = __webpack_require__(8111);
28451
28451
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.for-each.js
28452
28452
  var es_iterator_for_each = __webpack_require__(7588);
28453
- ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindow.vue?vue&type=template&id=382b928f&scoped=true
28453
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindow.vue?vue&type=template&id=0e3e6d50&scoped=true
28454
28454
  var render = function render() {
28455
28455
  var _vm = this,
28456
28456
  _c = _vm._self._c;
@@ -28484,7 +28484,8 @@ var render = function render() {
28484
28484
  attrs: {
28485
28485
  "messages": _vm.messages,
28486
28486
  "input-message": _vm.inputMessage,
28487
- "think-status": _vm.thinkStatus
28487
+ "think-status": _vm.thinkStatus,
28488
+ "chat-id": _vm.chatId
28488
28489
  },
28489
28490
  on: {
28490
28491
  "update:inputMessage": function ($event) {
@@ -28741,8 +28742,8 @@ var ChatAvatar_component = normalizeComponent(
28741
28742
  )
28742
28743
 
28743
28744
  /* harmony default export */ var ChatAvatar = (ChatAvatar_component.exports);
28744
- ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindowDialog.vue?vue&type=template&id=1424b8b1&scoped=true
28745
- var ChatWindowDialogvue_type_template_id_1424b8b1_scoped_true_render = function render() {
28745
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindowDialog.vue?vue&type=template&id=23a76780&scoped=true
28746
+ var ChatWindowDialogvue_type_template_id_23a76780_scoped_true_render = function render() {
28746
28747
  var _vm = this,
28747
28748
  _c = _vm._self._c;
28748
28749
  return _c('div', {
@@ -28766,6 +28767,9 @@ var ChatWindowDialogvue_type_template_id_1424b8b1_scoped_true_render = function
28766
28767
  }
28767
28768
  }
28768
28769
  }, [_c('ChatWindowHeader', {
28770
+ attrs: {
28771
+ "chat-id": _vm.chatId
28772
+ },
28769
28773
  on: {
28770
28774
  "close": function ($event) {
28771
28775
  return _vm.$emit('input', false);
@@ -28797,10 +28801,10 @@ var ChatWindowDialogvue_type_template_id_1424b8b1_scoped_true_render = function
28797
28801
  }
28798
28802
  })], 1)]);
28799
28803
  };
28800
- var ChatWindowDialogvue_type_template_id_1424b8b1_scoped_true_staticRenderFns = [];
28804
+ var ChatWindowDialogvue_type_template_id_23a76780_scoped_true_staticRenderFns = [];
28801
28805
 
28802
- ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindowHeader.vue?vue&type=template&id=428ec56e&scoped=true
28803
- var ChatWindowHeadervue_type_template_id_428ec56e_scoped_true_render = function render() {
28806
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindowHeader.vue?vue&type=template&id=90d9b166&scoped=true
28807
+ var ChatWindowHeadervue_type_template_id_90d9b166_scoped_true_render = function render() {
28804
28808
  var _vm = this,
28805
28809
  _c = _vm._self._c;
28806
28810
  return _c('div', {
@@ -28885,26 +28889,30 @@ var ChatWindowHeadervue_type_template_id_428ec56e_scoped_true_render = function
28885
28889
  }
28886
28890
  })])])]);
28887
28891
  };
28888
- var ChatWindowHeadervue_type_template_id_428ec56e_scoped_true_staticRenderFns = [];
28892
+ var ChatWindowHeadervue_type_template_id_90d9b166_scoped_true_staticRenderFns = [];
28889
28893
 
28890
28894
  ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindowHeader.vue?vue&type=script&lang=js
28891
28895
  /* harmony default export */ var ChatWindowHeadervue_type_script_lang_js = ({
28892
28896
  name: 'ChatWindowHeader',
28897
+ props: {
28898
+ chatId: {
28899
+ type: String,
28900
+ default: ''
28901
+ }
28902
+ },
28893
28903
  methods: {
28894
28904
  handleOpen() {
28895
- // const chatId = ''
28896
- // const baseUrl = window.location.protocol + '//' + window.location.hostname + ':3100/c/' + chatId;
28897
- const baseUrl = window.location.protocol + '//' + window.location.hostname + ':3100/';
28905
+ const baseUrl = window.location.protocol + '//' + window.location.hostname + ':3100/c/' + this.chatId;
28898
28906
  window.open(baseUrl, '_blank');
28899
28907
  }
28900
28908
  }
28901
28909
  });
28902
28910
  ;// ./components/ChatWindowHeader.vue?vue&type=script&lang=js
28903
28911
  /* harmony default export */ var components_ChatWindowHeadervue_type_script_lang_js = (ChatWindowHeadervue_type_script_lang_js);
28904
- ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindowHeader.vue?vue&type=style&index=0&id=428ec56e&prod&scoped=true&lang=css
28912
+ ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindowHeader.vue?vue&type=style&index=0&id=90d9b166&prod&scoped=true&lang=css
28905
28913
  // extracted by mini-css-extract-plugin
28906
28914
 
28907
- ;// ./components/ChatWindowHeader.vue?vue&type=style&index=0&id=428ec56e&prod&scoped=true&lang=css
28915
+ ;// ./components/ChatWindowHeader.vue?vue&type=style&index=0&id=90d9b166&prod&scoped=true&lang=css
28908
28916
 
28909
28917
  ;// ./components/ChatWindowHeader.vue
28910
28918
 
@@ -28917,11 +28925,11 @@ var ChatWindowHeadervue_type_template_id_428ec56e_scoped_true_staticRenderFns =
28917
28925
 
28918
28926
  var ChatWindowHeader_component = normalizeComponent(
28919
28927
  components_ChatWindowHeadervue_type_script_lang_js,
28920
- ChatWindowHeadervue_type_template_id_428ec56e_scoped_true_render,
28921
- ChatWindowHeadervue_type_template_id_428ec56e_scoped_true_staticRenderFns,
28928
+ ChatWindowHeadervue_type_template_id_90d9b166_scoped_true_render,
28929
+ ChatWindowHeadervue_type_template_id_90d9b166_scoped_true_staticRenderFns,
28922
28930
  false,
28923
28931
  null,
28924
- "428ec56e",
28932
+ "90d9b166",
28925
28933
  null
28926
28934
 
28927
28935
  )
@@ -29009,8 +29017,8 @@ var UserMessage_component = normalizeComponent(
29009
29017
  )
29010
29018
 
29011
29019
  /* harmony default export */ var UserMessage = (UserMessage_component.exports);
29012
- ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/AiMessage.vue?vue&type=template&id=6e022f2c&scoped=true
29013
- var AiMessagevue_type_template_id_6e022f2c_scoped_true_render = function render() {
29020
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/AiMessage.vue?vue&type=template&id=2422d7c0&scoped=true
29021
+ var AiMessagevue_type_template_id_2422d7c0_scoped_true_render = function render() {
29014
29022
  var _vm = this,
29015
29023
  _c = _vm._self._c;
29016
29024
  return _c('div', {
@@ -29043,7 +29051,7 @@ var AiMessagevue_type_template_id_6e022f2c_scoped_true_render = function render(
29043
29051
  }
29044
29052
  })])]);
29045
29053
  };
29046
- var AiMessagevue_type_template_id_6e022f2c_scoped_true_staticRenderFns = [];
29054
+ var AiMessagevue_type_template_id_2422d7c0_scoped_true_staticRenderFns = [];
29047
29055
 
29048
29056
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.filter.js
29049
29057
  var es_iterator_filter = __webpack_require__(2489);
@@ -30855,14 +30863,14 @@ function parseMarkdown(text) {
30855
30863
  html = html.replace(/^\s*\d+\.\s+(.+)$/gm, '<li>$1</li>');
30856
30864
  html = html.replace(/^>\s+(.+)$/gm, '<blockquote>$1</blockquote>');
30857
30865
  // 解析Markdown链接
30858
- html = html.replace(/\[([^\]]+)\]\(([^)]+)\)/g, '<a href="$2" target="_blank">$1</a>');
30866
+ html = html.replace(/\[([^\]]+)\]\(([^)]+)\)/g, '<a href="$2" aria-current="page">$1</a>');
30859
30867
  html = html.replace(/!\[([^\]]*)\]\(([^)]+)\)/g, '<img src="$2" alt="$1" />');
30860
30868
  html = html.replace(/^-{3,}$/gm, '<hr>');
30861
30869
  // 解析简单URL
30862
- const simpleUrlRegex = /(https?:\/\/[^\s<>"']+)/g;
30863
- html = html.replace(simpleUrlRegex, match => {
30864
- return `<a href="${match}" aria-current="page">${match}</a>`;
30865
- });
30870
+ // const simpleUrlRegex = /(https?:\/\/[^\s<>"']+)/g;
30871
+ // html = html.replace(simpleUrlRegex, (match) => {
30872
+ // return `<a href="${match}" aria-current="page">${match}</a>`;
30873
+ // });
30866
30874
 
30867
30875
  // html = html.replace(/\n/g, '<br>');
30868
30876
 
@@ -30971,10 +30979,10 @@ function escapeHtml(text) {
30971
30979
  });
30972
30980
  ;// ./components/AiMessage.vue?vue&type=script&lang=js
30973
30981
  /* harmony default export */ var components_AiMessagevue_type_script_lang_js = (AiMessagevue_type_script_lang_js);
30974
- ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/AiMessage.vue?vue&type=style&index=0&id=6e022f2c&prod&scoped=true&lang=css
30982
+ ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/AiMessage.vue?vue&type=style&index=0&id=2422d7c0&prod&scoped=true&lang=css
30975
30983
  // extracted by mini-css-extract-plugin
30976
30984
 
30977
- ;// ./components/AiMessage.vue?vue&type=style&index=0&id=6e022f2c&prod&scoped=true&lang=css
30985
+ ;// ./components/AiMessage.vue?vue&type=style&index=0&id=2422d7c0&prod&scoped=true&lang=css
30978
30986
 
30979
30987
  ;// ./components/AiMessage.vue
30980
30988
 
@@ -30987,11 +30995,11 @@ function escapeHtml(text) {
30987
30995
 
30988
30996
  var AiMessage_component = normalizeComponent(
30989
30997
  components_AiMessagevue_type_script_lang_js,
30990
- AiMessagevue_type_template_id_6e022f2c_scoped_true_render,
30991
- AiMessagevue_type_template_id_6e022f2c_scoped_true_staticRenderFns,
30998
+ AiMessagevue_type_template_id_2422d7c0_scoped_true_render,
30999
+ AiMessagevue_type_template_id_2422d7c0_scoped_true_staticRenderFns,
30992
31000
  false,
30993
31001
  null,
30994
- "6e022f2c",
31002
+ "2422d7c0",
30995
31003
  null
30996
31004
 
30997
31005
  )
@@ -31233,15 +31241,19 @@ var ChatInputBox_component = normalizeComponent(
31233
31241
  loading: {
31234
31242
  type: Boolean,
31235
31243
  default: false
31244
+ },
31245
+ chatId: {
31246
+ type: String,
31247
+ default: ''
31236
31248
  }
31237
31249
  }
31238
31250
  });
31239
31251
  ;// ./components/ChatWindowDialog.vue?vue&type=script&lang=js
31240
31252
  /* harmony default export */ var components_ChatWindowDialogvue_type_script_lang_js = (ChatWindowDialogvue_type_script_lang_js);
31241
- ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindowDialog.vue?vue&type=style&index=0&id=1424b8b1&prod&scoped=true&lang=css
31253
+ ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindowDialog.vue?vue&type=style&index=0&id=23a76780&prod&scoped=true&lang=css
31242
31254
  // extracted by mini-css-extract-plugin
31243
31255
 
31244
- ;// ./components/ChatWindowDialog.vue?vue&type=style&index=0&id=1424b8b1&prod&scoped=true&lang=css
31256
+ ;// ./components/ChatWindowDialog.vue?vue&type=style&index=0&id=23a76780&prod&scoped=true&lang=css
31245
31257
 
31246
31258
  ;// ./components/ChatWindowDialog.vue
31247
31259
 
@@ -31254,11 +31266,11 @@ var ChatInputBox_component = normalizeComponent(
31254
31266
 
31255
31267
  var ChatWindowDialog_component = normalizeComponent(
31256
31268
  components_ChatWindowDialogvue_type_script_lang_js,
31257
- ChatWindowDialogvue_type_template_id_1424b8b1_scoped_true_render,
31258
- ChatWindowDialogvue_type_template_id_1424b8b1_scoped_true_staticRenderFns,
31269
+ ChatWindowDialogvue_type_template_id_23a76780_scoped_true_render,
31270
+ ChatWindowDialogvue_type_template_id_23a76780_scoped_true_staticRenderFns,
31259
31271
  false,
31260
31272
  null,
31261
- "1424b8b1",
31273
+ "23a76780",
31262
31274
  null
31263
31275
 
31264
31276
  )
@@ -31285,7 +31297,9 @@ var es_typed_array_with = __webpack_require__(9577);
31285
31297
  audioContext: null,
31286
31298
  microphone: null,
31287
31299
  processor: null,
31288
- audioBuffer: new Float32Array(0)
31300
+ audioBuffer: new Float32Array(0),
31301
+ // 优化
31302
+ int16Buffer: null
31289
31303
  };
31290
31304
  },
31291
31305
  methods: {
@@ -31304,8 +31318,14 @@ var es_typed_array_with = __webpack_require__(9577);
31304
31318
  this.audioContext = new AudioContext({
31305
31319
  sampleRate: this.SAMPLE_RATE
31306
31320
  });
31321
+
31322
+ // 优化 处理 AudioContext 挂起
31323
+ if (this.audioContext.state === 'suspended') {
31324
+ await this.audioContext.resume();
31325
+ }
31307
31326
  this.microphone = this.audioContext.createMediaStreamSource(stream);
31308
31327
  this.processor = this.audioContext.createScriptProcessor(this.FRAME_SIZE, 1, 1);
31328
+ this.int16Buffer = new Int16Array(this.FRAME_SIZE);
31309
31329
  this.processor.onaudioprocess = this.processAudio;
31310
31330
  this.microphone.connect(this.processor);
31311
31331
  this.processor.connect(this.audioContext.destination);
@@ -31320,17 +31340,19 @@ var es_typed_array_with = __webpack_require__(9577);
31320
31340
  processAudio(event) {
31321
31341
  if (!this.isRecording) return;
31322
31342
  const inputData = event.inputBuffer.getChannelData(0);
31323
- const tempBuffer = new Float32Array(this.audioBuffer.length + inputData.length);
31324
- tempBuffer.set(this.audioBuffer, 0);
31325
- tempBuffer.set(inputData, this.audioBuffer.length);
31326
- this.audioBuffer = tempBuffer;
31327
- while (this.audioBuffer.length >= this.FRAME_SIZE) {
31328
- const frame = this.audioBuffer.slice(0, this.FRAME_SIZE);
31329
- this.audioBuffer = this.audioBuffer.slice(this.FRAME_SIZE);
31330
- const pcmData = this.floatTo16BitPCM(frame);
31331
- if (this.ws && this.ws.readyState === this.ws.OPEN) {
31332
- this.ws.send(pcmData);
31343
+ if (this.ws && this.ws.readyState === this.ws.OPEN) {
31344
+ if (inputData.length !== this.int16Buffer.length) {
31345
+ this.int16Buffer = new Int16Array(inputData.length);
31333
31346
  }
31347
+ for (let i = 0; i < inputData.length; i++) {
31348
+ let s = inputData[i];
31349
+ // 简单的 clamp
31350
+ s = s < -1 ? -1 : s > 1 ? 1 : s;
31351
+ this.int16Buffer[i] = s < 0 ? s * 0x8000 : s * 0x7FFF;
31352
+ }
31353
+
31354
+ // 4. 发送数据
31355
+ this.ws.send(this.int16Buffer.buffer);
31334
31356
  }
31335
31357
  },
31336
31358
  floatTo16BitPCM(input) {
@@ -31392,7 +31414,7 @@ var es_typed_array_with = __webpack_require__(9577);
31392
31414
  const baseUrl = window.location.protocol + '//' + window.location.hostname;
31393
31415
  const chatPort = '3100';
31394
31416
  console.log(baseUrl, chatPort);
31395
- const API_URL = 'http://192.168.8.87:3100/lingxiao-byt/api/v1/mcp/ask';
31417
+ const API_URL = `${baseUrl}:${chatPort}/lingxiao-byt/api/v1/mcp/ask`;
31396
31418
  const WS_URL = 'ws://192.168.8.9:9999/ai_model/ws/voice-stream';
31397
31419
  const AUDIO_URL = '/minio/lingxiaoai/byt.mp3';
31398
31420
  const TIME_JUMP_POINTS_URL = '/minio/lingxiaoai/timeJumpPoints.json';
@@ -31470,11 +31492,22 @@ const TIME_JUMP_POINTS_URL = '/minio/lingxiaoai/timeJumpPoints.json';
31470
31492
  if (data.type === 'detection') {
31471
31493
  console.log('检测到唤醒词');
31472
31494
  this.avaterStatus = 'normal';
31495
+
31496
+ // 性能检测起点
31497
+ this.startTime = Date.now(); // <-- 新增计时器
31498
+ console.log(`[Timer] 指令发送开始计时: ${this.startTime}ms`);
31473
31499
  } else if (data.type === 'Collecting') {
31474
31500
  console.log('状态: 采集中');
31475
31501
  this.avaterStatus = 'thinking';
31476
31502
  } else if (data.type === 'command') {
31477
31503
  console.log('状态: 处理中');
31504
+
31505
+ // 性能检测终点
31506
+ if (this.startTime) {
31507
+ const latency = Date.now() - this.startTime;
31508
+ console.log(`[Latency] 完整命令处理耗时: ${latency}ms`); // 记录端到端延迟
31509
+ this.startTime = null;
31510
+ }
31478
31511
  this.analyzeAudioCommand(data.category);
31479
31512
  } else {
31480
31513
  console.log('状态: 其他');
@@ -31534,6 +31567,14 @@ class StreamParser {
31534
31567
  if (this.options.debug) {
31535
31568
  console.log('[StreamParser] 收到chunk:', chunk.substring(0, 100));
31536
31569
  }
31570
+ if (!this.buffer.includes('data:') && !this.buffer.includes('\n\n')) {
31571
+ // 纯文本流,直接处理
31572
+ if (this.options.debug) {
31573
+ console.log('[StreamParser] 检测到纯文本流');
31574
+ }
31575
+ this.processPlainText(callback);
31576
+ return;
31577
+ }
31537
31578
 
31538
31579
  // 尝试解析为 SSE 格式
31539
31580
  if (this.buffer.includes('data:')) {
@@ -31776,10 +31817,29 @@ class StreamParser {
31776
31817
  this.reset();
31777
31818
  }
31778
31819
  }
31820
+ ;// ./components/utils/Cookie.js
31821
+ const setCookie = (name, value, days) => {
31822
+ const d = new Date();
31823
+ d.setTime(d.getTime() + days * 24 * 60 * 60 * 1000);
31824
+ const expires = `expires=${d.toUTCString()}`;
31825
+ document.cookie = `${name}=${value}; ${expires}`;
31826
+ };
31827
+ const getCookie = cname => {
31828
+ const name = `${cname}=`;
31829
+ const ca = document.cookie.split(';');
31830
+ for (let i = 0; i < ca.length; i++) {
31831
+ let c = ca[i];
31832
+ while (c.charAt(0) === ' ') c = c.substring(1);
31833
+ if (c.indexOf(name) !== -1) return c.substring(name.length, c.length);
31834
+ }
31835
+ return '';
31836
+ };
31837
+
31779
31838
  ;// ./components/mixins/messageMixin.js
31780
31839
 
31781
31840
 
31782
31841
 
31842
+
31783
31843
  /* harmony default export */ var messageMixin = ({
31784
31844
  data() {
31785
31845
  return {
@@ -31835,17 +31895,16 @@ class StreamParser {
31835
31895
  this.streamParser.reset();
31836
31896
  try {
31837
31897
  const startTime = Date.now();
31838
- const controller = new AbortController();
31839
- const token = `Bearer e298f087-85bc-48c2-afb9-7c69ffc911aa`;
31898
+ const token = getCookie('bonyear-access_token') || `e298f087-85bc-48c2-afb9-7c69ffc911aa`;
31840
31899
  const response = await fetch(API_URL, {
31841
31900
  method: 'POST',
31842
- signal: controller.signal,
31843
31901
  headers: {
31844
31902
  'Content-Type': 'application/json',
31845
- 'Authorization': token
31903
+ 'Authorization': `Bearer ${token}`
31846
31904
  },
31847
31905
  body: JSON.stringify({
31848
- content: message
31906
+ content: message,
31907
+ chatId: this.chatId
31849
31908
  })
31850
31909
  });
31851
31910
  if (!response.ok) {
@@ -31946,6 +32005,14 @@ class StreamParser {
31946
32005
  }
31947
32006
  }
31948
32007
  });
32008
+ ;// ./components/utils/Uuid.js
32009
+ function generateUuid() {
32010
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
32011
+ var r = Math.random() * 16 | 0,
32012
+ v = c === 'x' ? r : r & 0x3 | 0x8;
32013
+ return v.toString(16);
32014
+ });
32015
+ }
31949
32016
  ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindow.vue?vue&type=script&lang=js
31950
32017
 
31951
32018
 
@@ -31964,8 +32031,10 @@ class StreamParser {
31964
32031
 
31965
32032
 
31966
32033
 
32034
+
31967
32035
  const SAMPLE_RATE = 16000;
31968
32036
  const FRAME_SIZE = 512;
32037
+ const startTime = null;
31969
32038
  /* harmony default export */ var ChatWindowvue_type_script_lang_js = ({
31970
32039
  name: 'ChatWindow',
31971
32040
  components: {
@@ -31982,6 +32051,7 @@ const FRAME_SIZE = 512;
31982
32051
  },
31983
32052
  data() {
31984
32053
  return {
32054
+ chatId: generateUuid(),
31985
32055
  audioSrc: AUDIO_URL,
31986
32056
  inputMessage: '',
31987
32057
  visible: false,
@@ -31993,6 +32063,8 @@ const FRAME_SIZE = 512;
31993
32063
  jumpedTimePoints: new Set(),
31994
32064
  SAMPLE_RATE,
31995
32065
  FRAME_SIZE,
32066
+ startTime,
32067
+ // 检查性能使用
31996
32068
  dragThreshold: 5,
31997
32069
  // 拖拽阈值
31998
32070
  isDragging: false,
@@ -32165,10 +32237,10 @@ const FRAME_SIZE = 512;
32165
32237
  });
32166
32238
  ;// ./components/ChatWindow.vue?vue&type=script&lang=js
32167
32239
  /* harmony default export */ var components_ChatWindowvue_type_script_lang_js = (ChatWindowvue_type_script_lang_js);
32168
- ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindow.vue?vue&type=style&index=0&id=382b928f&prod&scoped=true&lang=css
32240
+ ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/ChatWindow.vue?vue&type=style&index=0&id=0e3e6d50&prod&scoped=true&lang=css
32169
32241
  // extracted by mini-css-extract-plugin
32170
32242
 
32171
- ;// ./components/ChatWindow.vue?vue&type=style&index=0&id=382b928f&prod&scoped=true&lang=css
32243
+ ;// ./components/ChatWindow.vue?vue&type=style&index=0&id=0e3e6d50&prod&scoped=true&lang=css
32172
32244
 
32173
32245
  ;// ./components/ChatWindow.vue
32174
32246
 
@@ -32185,7 +32257,7 @@ var ChatWindow_component = normalizeComponent(
32185
32257
  staticRenderFns,
32186
32258
  false,
32187
32259
  null,
32188
- "382b928f",
32260
+ "0e3e6d50",
32189
32261
  null
32190
32262
 
32191
32263
  )