@lvce-editor/chat-view 5.2.0 → 5.4.0

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.
@@ -1027,7 +1027,7 @@ const createMockRpc = ({
1027
1027
  };
1028
1028
 
1029
1029
  const rpcs = Object.create(null);
1030
- const set$5 = (id, rpc) => {
1030
+ const set$6 = (id, rpc) => {
1031
1031
  rpcs[id] = rpc;
1032
1032
  };
1033
1033
  const get$2 = id => {
@@ -1060,7 +1060,7 @@ const create$2 = rpcId => {
1060
1060
  const mockRpc = createMockRpc({
1061
1061
  commandMap
1062
1062
  });
1063
- set$5(rpcId, mockRpc);
1063
+ set$6(rpcId, mockRpc);
1064
1064
  // @ts-ignore
1065
1065
  mockRpc[Symbol.dispose] = () => {
1066
1066
  remove(rpcId);
@@ -1069,20 +1069,20 @@ const create$2 = rpcId => {
1069
1069
  return mockRpc;
1070
1070
  },
1071
1071
  set(rpc) {
1072
- set$5(rpcId, rpc);
1072
+ set$6(rpcId, rpc);
1073
1073
  }
1074
1074
  };
1075
1075
  };
1076
1076
 
1077
1077
  const {
1078
- invoke: invoke$3,
1079
- set: set$4
1078
+ invoke: invoke$4,
1079
+ set: set$5
1080
1080
  } = create$2(6007);
1081
1081
  const getMathBlockDom = async node => {
1082
- return invoke$3('ChatMath.getMathBlockDom', node);
1082
+ return invoke$4('ChatMath.getMathBlockDom', node);
1083
1083
  };
1084
1084
  const getMathInlineDom = async node => {
1085
- return invoke$3('ChatMath.getMathInlineDom', node);
1085
+ return invoke$4('ChatMath.getMathInlineDom', node);
1086
1086
  };
1087
1087
 
1088
1088
  const Button$2 = 'button';
@@ -1171,26 +1171,26 @@ const SetPatches = 'Viewlet.setPatches';
1171
1171
  const FocusChatInput = 8000;
1172
1172
 
1173
1173
  const {
1174
- invoke: invoke$2,
1175
- set: set$3
1174
+ invoke: invoke$3,
1175
+ set: set$4
1176
1176
  } = create$2(ChatNetworkWorker);
1177
1177
 
1178
1178
  const {
1179
- invoke: invoke$1,
1180
- set: set$2
1179
+ invoke: invoke$2,
1180
+ set: set$3
1181
1181
  } = create$2(ExtensionHostWorker);
1182
1182
 
1183
1183
  const {
1184
- invoke,
1184
+ invoke: invoke$1,
1185
1185
  invokeAndTransfer,
1186
- set: set$1
1186
+ set: set$2
1187
1187
  } = create$2(RendererWorker);
1188
1188
  const sendMessagePortToChatMathWorker$1 = async (port, rpcId) => {
1189
1189
  const command = 'HandleMessagePort.handleMessagePort';
1190
1190
  await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToChatMathWorker', port, command, rpcId);
1191
1191
  };
1192
1192
  const readFile = async uri => {
1193
- return invoke('FileSystem.readFile', uri);
1193
+ return invoke$1('FileSystem.readFile', uri);
1194
1194
  };
1195
1195
  const sendMessagePortToExtensionHostWorker$1 = async (port, rpcId = 0) => {
1196
1196
  const command = 'HandleMessagePort.handleMessagePort2';
@@ -1200,22 +1200,22 @@ const sendMessagePortToChatNetworkWorker = async port => {
1200
1200
  await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToChatNetworkWorker', port, 'HandleMessagePort.handleMessagePort');
1201
1201
  };
1202
1202
  const writeFile = async (uri, text) => {
1203
- await invoke('FileSystem.writeFile', uri, text);
1203
+ await invoke$1('FileSystem.writeFile', uri, text);
1204
1204
  };
1205
1205
  const activateByEvent$1 = (event, assetDir, platform) => {
1206
- return invoke('ExtensionHostManagement.activateByEvent', event, assetDir, platform);
1206
+ return invoke$1('ExtensionHostManagement.activateByEvent', event, assetDir, platform);
1207
1207
  };
1208
1208
  const getWorkspacePath = () => {
1209
- return invoke('Workspace.getPath');
1209
+ return invoke$1('Workspace.getPath');
1210
1210
  };
1211
1211
  const getPreference = async key => {
1212
- return await invoke('Preferences.get', key);
1212
+ return await invoke$1('Preferences.get', key);
1213
1213
  };
1214
1214
  const openExternal = async uri => {
1215
- await invoke('Open.openExternal', uri);
1215
+ await invoke$1('Open.openExternal', uri);
1216
1216
  };
1217
1217
  const measureTextBlockHeight$1 = async (actualInput, fontFamily, fontSize, lineHeightPx, width) => {
1218
- return invoke(`MeasureTextHeight.measureTextBlockHeight`, actualInput, fontFamily, fontSize, lineHeightPx, width);
1218
+ return invoke$1(`MeasureTextHeight.measureTextBlockHeight`, actualInput, fontFamily, fontSize, lineHeightPx, width);
1219
1219
  };
1220
1220
 
1221
1221
  const toCommandId = key => {
@@ -1643,6 +1643,7 @@ const createDefaultState = () => {
1643
1643
  tokensUsed: 0,
1644
1644
  uid: 0,
1645
1645
  usageOverviewEnabled: false,
1646
+ useChatCoordinatorWorker: false,
1646
1647
  useChatMathWorker: true,
1647
1648
  useChatNetworkWorkerForRequests: false,
1648
1649
  useMockApi: false,
@@ -1660,7 +1661,7 @@ const {
1660
1661
  get: get$1,
1661
1662
  getCommandIds,
1662
1663
  registerCommands,
1663
- set,
1664
+ set: set$1,
1664
1665
  wrapCommand,
1665
1666
  wrapGetter
1666
1667
  } = create$1();
@@ -1676,7 +1677,7 @@ const create = (uid, x, y, width, height, platform, assetDir) => {
1676
1677
  x,
1677
1678
  y
1678
1679
  };
1679
- set(uid, state, state);
1680
+ set$1(uid, state, state);
1680
1681
  };
1681
1682
 
1682
1683
  const toError = error => {
@@ -2952,7 +2953,7 @@ const handleChatListContextMenu = async (state, eventX, eventY) => {
2952
2953
  if (!item) {
2953
2954
  return state;
2954
2955
  }
2955
- await invoke('ContextMenu.show', eventX, eventY, CHAT_LIST_ITEM_CONTEXT_MENU, item.id);
2956
+ await invoke$1('ContextMenu.show', eventX, eventY, CHAT_LIST_ITEM_CONTEXT_MENU, item.id);
2956
2957
  return state;
2957
2958
  };
2958
2959
 
@@ -2983,7 +2984,7 @@ const createSession = async (state, projectIdOverride = '') => {
2983
2984
 
2984
2985
  const openFolder = async () => {
2985
2986
  try {
2986
- return await invoke('FilePicker.showDirectoryPicker');
2987
+ return await invoke$1('FilePicker.showDirectoryPicker');
2987
2988
  } catch {
2988
2989
  return '';
2989
2990
  }
@@ -3060,7 +3061,7 @@ const handleClickCreateProject = async state => {
3060
3061
  };
3061
3062
 
3062
3063
  const handleClickOpenApiApiKeySettings = async state => {
3063
- await invoke('Main.openUri', 'app://settings.json');
3064
+ await invoke$1('Main.openUri', 'app://settings.json');
3064
3065
  return state;
3065
3066
  };
3066
3067
 
@@ -3070,7 +3071,7 @@ const handleClickOpenApiApiKeyWebsite = async state => {
3070
3071
  };
3071
3072
 
3072
3073
  const handleClickOpenRouterApiKeySettings = async state => {
3073
- await invoke('Main.openUri', 'app://settings.json');
3074
+ await invoke$1('Main.openUri', 'app://settings.json');
3074
3075
  return state;
3075
3076
  };
3076
3077
 
@@ -3088,6 +3089,21 @@ const openRouterTooManyRequestsMessage = 'OpenRouter rate limit reached (429). P
3088
3089
  const openRouterRequestFailureReasons = ['ContentSecurityPolicyViolation: Check DevTools for details.', 'OpenRouter server offline: Check DevTools for details.', 'Check your internet connection.'];
3089
3090
  const openRouterTooManyRequestsReasons = ['Wait a short time and retry your request.', 'Reduce request frequency to avoid rate limits.', 'Use a different model if this one is saturated.'];
3090
3091
 
3092
+ let rpc;
3093
+ const set = value => {
3094
+ rpc = value;
3095
+ };
3096
+ const invoke = async (method, ...params) => {
3097
+ if (!rpc) {
3098
+ throw new Error('ChatCoordinatorWorker is not initialized');
3099
+ }
3100
+ return rpc.invoke(method, ...params);
3101
+ };
3102
+
3103
+ const getAiResponse$1 = async options => {
3104
+ return invoke('ChatCoordinator.getAiResponse', options);
3105
+ };
3106
+
3091
3107
  const getToolErrorPayload = error => {
3092
3108
  const rawStack = error && typeof error === 'object' ? Reflect.get(error, 'stack') : undefined;
3093
3109
  return {
@@ -3121,7 +3137,7 @@ const executeListFilesTool = async (args, _options) => {
3121
3137
  });
3122
3138
  }
3123
3139
  try {
3124
- const entries = await invoke('FileSystem.readDirWithFileTypes', uri);
3140
+ const entries = await invoke$1('FileSystem.readDirWithFileTypes', uri);
3125
3141
  return JSON.stringify({
3126
3142
  entries,
3127
3143
  uri
@@ -3442,6 +3458,15 @@ const setHttpErrorResponse = (statusCode, body) => {
3442
3458
  type: 'error'
3443
3459
  };
3444
3460
  };
3461
+ const setRequestFailedResponse = (isOffline = false) => {
3462
+ errorResult = {
3463
+ details: 'request-failed',
3464
+ ...(isOffline ? {
3465
+ isOffline: true
3466
+ } : {}),
3467
+ type: 'error'
3468
+ };
3469
+ };
3445
3470
  const takeErrorResponse = () => {
3446
3471
  const error = errorResult;
3447
3472
  errorResult = undefined;
@@ -3713,7 +3738,7 @@ const executeProvider = async ({
3713
3738
  }) => {
3714
3739
  await activateByEvent(event, assetDir, platform);
3715
3740
  // @ts-ignore
3716
- const result = invoke$1(method, ...params);
3741
+ const result = invoke$2(method, ...params);
3717
3742
  return result;
3718
3743
  };
3719
3744
 
@@ -3845,10 +3870,10 @@ const getOpenApiApiEndpoint = openApiApiBaseUrl => {
3845
3870
  };
3846
3871
 
3847
3872
  const makeApiRequest = async options => {
3848
- return invoke$2('ChatNetwork.makeApiRequest', options);
3873
+ return invoke$3('ChatNetwork.makeApiRequest', options);
3849
3874
  };
3850
3875
  const makeStreamingApiRequest = async options => {
3851
- return invoke$2('ChatNetwork.makeStreamingApiRequest', options);
3876
+ return invoke$3('ChatNetwork.makeStreamingApiRequest', options);
3852
3877
  };
3853
3878
 
3854
3879
  const getTextContent = content => {
@@ -4894,7 +4919,7 @@ const getOpenApiErrorMessage = errorResult => {
4894
4919
  return openApiRequestFailedMessage;
4895
4920
  }
4896
4921
  case 'request-failed':
4897
- if (isOffline()) {
4922
+ if (errorResult.isOffline || isOffline()) {
4898
4923
  return openApiRequestFailedOfflineMessage;
4899
4924
  }
4900
4925
  return openApiRequestFailedMessage;
@@ -5309,6 +5334,7 @@ const getAiResponse = async ({
5309
5334
  mockAiResponseDelay = 800,
5310
5335
  mockApiCommandId,
5311
5336
  models,
5337
+ nextMessageId,
5312
5338
  onDataEvent,
5313
5339
  onEventStreamFinished,
5314
5340
  onTextChunk,
@@ -5321,11 +5347,50 @@ const getAiResponse = async ({
5321
5347
  platform,
5322
5348
  selectedModelId,
5323
5349
  streamingEnabled = true,
5350
+ useChatCoordinatorWorker = false,
5324
5351
  useChatNetworkWorkerForRequests = false,
5325
5352
  useMockApi,
5326
5353
  userText,
5327
5354
  webSearchEnabled = false
5328
5355
  }) => {
5356
+ if (useChatCoordinatorWorker) {
5357
+ try {
5358
+ const result = await getAiResponse$1({
5359
+ assetDir,
5360
+ ...(messageId ? {
5361
+ messageId
5362
+ } : {}),
5363
+ messages,
5364
+ mockAiResponseDelay,
5365
+ mockApiCommandId,
5366
+ models,
5367
+ nextMessageId,
5368
+ openApiApiBaseUrl,
5369
+ openApiApiKey,
5370
+ openRouterApiBaseUrl,
5371
+ openRouterApiKey,
5372
+ passIncludeObfuscation,
5373
+ platform,
5374
+ selectedModelId,
5375
+ streamingEnabled,
5376
+ useChatNetworkWorkerForRequests,
5377
+ useMockApi,
5378
+ userText,
5379
+ webSearchEnabled
5380
+ });
5381
+ if (streamingEnabled) {
5382
+ if (onTextChunk) {
5383
+ await onTextChunk(result.text);
5384
+ }
5385
+ if (onEventStreamFinished) {
5386
+ await onEventStreamFinished();
5387
+ }
5388
+ }
5389
+ return result;
5390
+ } catch {
5391
+ // Fall back to the local implementation if coordinator worker RPC is unavailable.
5392
+ }
5393
+ }
5329
5394
  let text = '';
5330
5395
  const usesOpenApiModel = isOpenApiModel(selectedModelId, models);
5331
5396
  const usesOpenRouterModel = isOpenRouterModel(selectedModelId, models);
@@ -5448,7 +5513,7 @@ const get = async key => {
5448
5513
  return getPreference(key);
5449
5514
  };
5450
5515
  const update = async settings => {
5451
- await invoke('Preferences.update', settings);
5516
+ await invoke$1('Preferences.update', settings);
5452
5517
  };
5453
5518
 
5454
5519
  const setOpenApiApiKey = async (state, openApiApiKey, persist = true) => {
@@ -5493,6 +5558,7 @@ const handleClickSaveOpenApiApiKey = async state => {
5493
5558
  mockAiResponseDelay: updatedState.mockAiResponseDelay,
5494
5559
  mockApiCommandId: updatedState.mockApiCommandId,
5495
5560
  models: updatedState.models,
5561
+ nextMessageId: updatedState.nextMessageId,
5496
5562
  openApiApiBaseUrl: updatedState.openApiApiBaseUrl,
5497
5563
  openApiApiKey: updatedState.openApiApiKey,
5498
5564
  openRouterApiBaseUrl: updatedState.openRouterApiBaseUrl,
@@ -5500,6 +5566,7 @@ const handleClickSaveOpenApiApiKey = async state => {
5500
5566
  platform: updatedState.platform,
5501
5567
  selectedModelId: updatedState.selectedModelId,
5502
5568
  streamingEnabled: updatedState.streamingEnabled,
5569
+ useChatCoordinatorWorker: updatedState.useChatCoordinatorWorker,
5503
5570
  useChatNetworkWorkerForRequests: updatedState.useChatNetworkWorkerForRequests,
5504
5571
  useMockApi: updatedState.useMockApi,
5505
5572
  userText: previousUserMessage.text
@@ -5547,9 +5614,9 @@ const handleClickSaveOpenRouterApiKey = async state => {
5547
5614
  ...state,
5548
5615
  openRouterApiKeyState: 'saving'
5549
5616
  };
5550
- set(state.uid, state, optimisticState);
5617
+ set$1(state.uid, state, optimisticState);
5551
5618
  // @ts-ignore
5552
- await invoke('Chat.rerender');
5619
+ await invoke$1('Chat.rerender');
5553
5620
  const persistedState = await setOpenRouterApiKey(optimisticState, openRouterApiKey);
5554
5621
  const updatedState = {
5555
5622
  ...persistedState,
@@ -5575,12 +5642,14 @@ const handleClickSaveOpenRouterApiKey = async state => {
5575
5642
  mockAiResponseDelay: updatedState.mockAiResponseDelay,
5576
5643
  mockApiCommandId: updatedState.mockApiCommandId,
5577
5644
  models: updatedState.models,
5645
+ nextMessageId: updatedState.nextMessageId,
5578
5646
  openApiApiBaseUrl: updatedState.openApiApiBaseUrl,
5579
5647
  openApiApiKey: updatedState.openApiApiKey,
5580
5648
  openRouterApiBaseUrl: updatedState.openRouterApiBaseUrl,
5581
5649
  openRouterApiKey,
5582
5650
  platform: updatedState.platform,
5583
5651
  selectedModelId: updatedState.selectedModelId,
5652
+ useChatCoordinatorWorker: updatedState.useChatCoordinatorWorker,
5584
5653
  useChatNetworkWorkerForRequests: updatedState.useChatNetworkWorkerForRequests,
5585
5654
  useMockApi: updatedState.useMockApi,
5586
5655
  userText: previousUserMessage.text
@@ -6511,6 +6580,7 @@ Assistant: ${assistantText}`;
6511
6580
  mockAiResponseDelay: state.mockAiResponseDelay,
6512
6581
  mockApiCommandId: state.mockApiCommandId,
6513
6582
  models,
6583
+ nextMessageId: state.nextMessageId,
6514
6584
  openApiApiBaseUrl,
6515
6585
  openApiApiKey,
6516
6586
  openRouterApiBaseUrl,
@@ -6519,6 +6589,7 @@ Assistant: ${assistantText}`;
6519
6589
  platform: state.platform,
6520
6590
  selectedModelId,
6521
6591
  streamingEnabled: false,
6592
+ useChatCoordinatorWorker: state.useChatCoordinatorWorker,
6522
6593
  useChatNetworkWorkerForRequests: state.useChatNetworkWorkerForRequests,
6523
6594
  useMockApi,
6524
6595
  userText: titlePrompt,
@@ -6670,9 +6741,9 @@ const handleTextChunkFunction = async (uid, assistantMessageId, chunk, handleTex
6670
6741
  parsedMessages: updated.parsedMessages,
6671
6742
  sessions: updated.sessions
6672
6743
  };
6673
- set(uid, handleTextChunkState.previousState, nextState);
6744
+ set$1(uid, handleTextChunkState.previousState, nextState);
6674
6745
  // @ts-ignore
6675
- await invoke('Chat.rerender');
6746
+ await invoke$1('Chat.rerender');
6676
6747
  return {
6677
6748
  latestState: nextState,
6678
6749
  previousState: nextState
@@ -6699,9 +6770,9 @@ const handleToolCallsChunkFunction = async (uid, assistantMessageId, toolCalls,
6699
6770
  parsedMessages: updated.parsedMessages,
6700
6771
  sessions: updated.sessions
6701
6772
  };
6702
- set(uid, handleTextChunkState.previousState, nextState);
6773
+ set$1(uid, handleTextChunkState.previousState, nextState);
6703
6774
  // @ts-ignore
6704
- await invoke('Chat.rerender');
6775
+ await invoke$1('Chat.rerender');
6705
6776
  return {
6706
6777
  latestState: nextState,
6707
6778
  previousState: nextState
@@ -6781,6 +6852,7 @@ const handleSubmit = async state => {
6781
6852
  selectedSessionId,
6782
6853
  sessions,
6783
6854
  streamingEnabled,
6855
+ useChatCoordinatorWorker,
6784
6856
  useChatNetworkWorkerForRequests,
6785
6857
  useMockApi,
6786
6858
  viewMode,
@@ -6886,9 +6958,9 @@ const handleSubmit = async state => {
6886
6958
  sessions: updatedSessions
6887
6959
  });
6888
6960
  }
6889
- set(state.uid, state, optimisticState);
6961
+ set$1(state.uid, state, optimisticState);
6890
6962
  // @ts-ignore
6891
- await invoke('Chat.rerender');
6963
+ await invoke$1('Chat.rerender');
6892
6964
  let handleTextChunkState = {
6893
6965
  latestState: optimisticState,
6894
6966
  previousState: optimisticState
@@ -6907,6 +6979,7 @@ const handleSubmit = async state => {
6907
6979
  mockAiResponseDelay,
6908
6980
  mockApiCommandId,
6909
6981
  models,
6982
+ nextMessageId: optimisticState.nextMessageId,
6910
6983
  onDataEvent: async value => {
6911
6984
  if (!emitStreamingFunctionCallEvents && isStreamingFunctionCallEvent(value)) {
6912
6985
  return;
@@ -6941,6 +7014,7 @@ const handleSubmit = async state => {
6941
7014
  platform,
6942
7015
  selectedModelId,
6943
7016
  streamingEnabled,
7017
+ useChatCoordinatorWorker,
6944
7018
  useChatNetworkWorkerForRequests,
6945
7019
  useMockApi,
6946
7020
  userText,
@@ -7227,7 +7301,7 @@ const handleClickBack = async state => {
7227
7301
 
7228
7302
  const handleClickClose = async () => {
7229
7303
  // @ts-ignore
7230
- await invoke('Layout.hideSecondarySideBar');
7304
+ await invoke$1('Layout.hideSecondarySideBar');
7231
7305
  };
7232
7306
 
7233
7307
  const handleClickDelete = async (state, sessionId = '') => {
@@ -7246,17 +7320,17 @@ const handleClickReadFile = async uri => {
7246
7320
  if (!uri) {
7247
7321
  return;
7248
7322
  }
7249
- await invoke('Main.openUri', uri);
7323
+ await invoke$1('Main.openUri', uri);
7250
7324
  };
7251
7325
 
7252
7326
  const handleClickSessionDebug = async state => {
7253
- await invoke('Main.openUri', `chat-debug://${state.selectedSessionId}`);
7327
+ await invoke$1('Main.openUri', `chat-debug://${state.selectedSessionId}`);
7254
7328
  return state;
7255
7329
  };
7256
7330
 
7257
7331
  const handleClickSettings = async () => {
7258
7332
  // TODO
7259
- await invoke('Main.openUri', 'app://settings.json');
7333
+ await invoke$1('Main.openUri', 'app://settings.json');
7260
7334
  };
7261
7335
 
7262
7336
  const handleDragEnter = async (state, name, hasFiles = true) => {
@@ -7469,7 +7543,7 @@ const handleKeyDown = async (state, key, shiftKey) => {
7469
7543
  };
7470
7544
 
7471
7545
  const handleMessagesContextMenu = async state => {
7472
- await invoke('ContextMenu.show', 1234);
7546
+ await invoke$1('ContextMenu.show', 1234);
7473
7547
  return state;
7474
7548
  };
7475
7549
 
@@ -7538,7 +7612,7 @@ const createExtensionHostRpc = async () => {
7538
7612
 
7539
7613
  const initialize = async () => {
7540
7614
  const rpc = await createExtensionHostRpc();
7541
- set$2(rpc);
7615
+ set$3(rpc);
7542
7616
  };
7543
7617
 
7544
7618
  const isObject = value => {
@@ -7694,6 +7768,15 @@ const loadStreamingEnabled = async () => {
7694
7768
  }
7695
7769
  };
7696
7770
 
7771
+ const loadUseChatCoordinatorWorker = async () => {
7772
+ try {
7773
+ const savedUseChatCoordinatorWorker = await get('chatView.useChatCoordinatorWorker');
7774
+ return typeof savedUseChatCoordinatorWorker === 'boolean' ? savedUseChatCoordinatorWorker : false;
7775
+ } catch {
7776
+ return false;
7777
+ }
7778
+ };
7779
+
7697
7780
  const loadUseChatMathWorker = async () => {
7698
7781
  try {
7699
7782
  const savedUseChatMathWorker = await get('chatView.useChatMathWorker');
@@ -7722,7 +7805,7 @@ const loadVoiceDictationEnabled = async () => {
7722
7805
  };
7723
7806
 
7724
7807
  const loadPreferences = async () => {
7725
- const [aiSessionTitleGenerationEnabled, composerDropEnabled, openApiApiKey, openRouterApiKey, emitStreamingFunctionCallEvents, streamingEnabled, passIncludeObfuscation, useChatMathWorker, useChatNetworkWorkerForRequests, voiceDictationEnabled] = await Promise.all([loadAiSessionTitleGenerationEnabled(), loadComposerDropEnabled(), loadOpenApiApiKey(), loadOpenRouterApiKey(), loadEmitStreamingFunctionCallEvents(), loadStreamingEnabled(), loadPassIncludeObfuscation(), loadUseChatMathWorker(), loadUseChatNetworkWorkerForRequests(), loadVoiceDictationEnabled()]);
7808
+ const [aiSessionTitleGenerationEnabled, composerDropEnabled, openApiApiKey, openRouterApiKey, emitStreamingFunctionCallEvents, streamingEnabled, passIncludeObfuscation, useChatCoordinatorWorker, useChatMathWorker, useChatNetworkWorkerForRequests, voiceDictationEnabled] = await Promise.all([loadAiSessionTitleGenerationEnabled(), loadComposerDropEnabled(), loadOpenApiApiKey(), loadOpenRouterApiKey(), loadEmitStreamingFunctionCallEvents(), loadStreamingEnabled(), loadPassIncludeObfuscation(), loadUseChatCoordinatorWorker(), loadUseChatMathWorker(), loadUseChatNetworkWorkerForRequests(), loadVoiceDictationEnabled()]);
7726
7809
  return {
7727
7810
  aiSessionTitleGenerationEnabled,
7728
7811
  composerDropEnabled,
@@ -7731,6 +7814,7 @@ const loadPreferences = async () => {
7731
7814
  openRouterApiKey,
7732
7815
  passIncludeObfuscation,
7733
7816
  streamingEnabled,
7817
+ useChatCoordinatorWorker,
7734
7818
  useChatMathWorker,
7735
7819
  useChatNetworkWorkerForRequests,
7736
7820
  voiceDictationEnabled
@@ -7870,6 +7954,7 @@ const loadContent = async (state, savedState) => {
7870
7954
  openRouterApiKey,
7871
7955
  passIncludeObfuscation,
7872
7956
  streamingEnabled,
7957
+ useChatCoordinatorWorker,
7873
7958
  useChatMathWorker,
7874
7959
  useChatNetworkWorkerForRequests,
7875
7960
  voiceDictationEnabled
@@ -7945,6 +8030,7 @@ const loadContent = async (state, savedState) => {
7945
8030
  selectedSessionId,
7946
8031
  sessions,
7947
8032
  streamingEnabled,
8033
+ useChatCoordinatorWorker,
7948
8034
  useChatMathWorker,
7949
8035
  useChatNetworkWorkerForRequests,
7950
8036
  viewMode,
@@ -7966,6 +8052,11 @@ const mockOpenApiSetHttpErrorResponse = (state, statusCode, body) => {
7966
8052
  return state;
7967
8053
  };
7968
8054
 
8055
+ const mockOpenApiSetRequestFailedResponse = (state, isOffline = false) => {
8056
+ setRequestFailedResponse(isOffline);
8057
+ return state;
8058
+ };
8059
+
7969
8060
  const mockOpenApiStreamFinish = state => {
7970
8061
  finish();
7971
8062
  return state;
@@ -8879,6 +8970,7 @@ const getMissingApiKeyDom = ({
8879
8970
  }, text(saveButtonText), {
8880
8971
  childCount: 1,
8881
8972
  className: mergeClassNames(Button, ButtonSecondary),
8973
+ inputType: 'button',
8882
8974
  name: openSettingsButtonName,
8883
8975
  onClick: HandleClick,
8884
8976
  type: Button$1
@@ -9975,7 +10067,7 @@ const render2 = (uid, diffResult) => {
9975
10067
  newState,
9976
10068
  oldState
9977
10069
  } = get$1(uid);
9978
- set(uid, newState, newState);
10070
+ set$1(uid, newState, newState);
9979
10071
  const commands = applyRender(oldState, newState, diffResult);
9980
10072
  return commands;
9981
10073
  };
@@ -10142,7 +10234,9 @@ const reset = async state => {
10142
10234
  composerHeight: getMinComposerHeightForState(state),
10143
10235
  composerValue: '',
10144
10236
  mockAiResponseDelay: 0,
10237
+ openApiApiKey: '',
10145
10238
  openRouterApiKey: '',
10239
+ openRouterApiKeyInput: '',
10146
10240
  selectedModelId: 'test',
10147
10241
  selectedSessionId: '',
10148
10242
  sessions: [],
@@ -10227,6 +10321,18 @@ const setStreamingEnabled = (state, streamingEnabled) => {
10227
10321
  };
10228
10322
  };
10229
10323
 
10324
+ const setUseChatCoordinatorWorker = async (state, useChatCoordinatorWorker, persist = true) => {
10325
+ if (persist) {
10326
+ await update({
10327
+ 'chatView.useChatCoordinatorWorker': useChatCoordinatorWorker
10328
+ });
10329
+ }
10330
+ return {
10331
+ ...state,
10332
+ useChatCoordinatorWorker
10333
+ };
10334
+ };
10335
+
10230
10336
  const setUseChatMathWorker = async (state, useChatMathWorker, persist = true) => {
10231
10337
  if (persist) {
10232
10338
  await update({
@@ -10309,6 +10415,7 @@ const commandMap = {
10309
10415
  'Chat.mockOpenApiRequestGetAll': wrapGetter(mockOpenApiRequestGetAll),
10310
10416
  'Chat.mockOpenApiRequestReset': wrapCommand(mockOpenApiRequestReset),
10311
10417
  'Chat.mockOpenApiSetHttpErrorResponse': wrapCommand(mockOpenApiSetHttpErrorResponse),
10418
+ 'Chat.mockOpenApiSetRequestFailedResponse': wrapCommand(mockOpenApiSetRequestFailedResponse),
10312
10419
  'Chat.mockOpenApiStreamFinish': wrapCommand(mockOpenApiStreamFinish),
10313
10420
  'Chat.mockOpenApiStreamPushChunk': wrapCommand(mockOpenApiStreamPushChunk),
10314
10421
  'Chat.mockOpenApiStreamReset': wrapCommand(mockOpenApiStreamReset),
@@ -10324,6 +10431,7 @@ const commandMap = {
10324
10431
  'Chat.setEmitStreamingFunctionCallEvents': wrapCommand(setEmitStreamingFunctionCallEvents),
10325
10432
  'Chat.setOpenRouterApiKey': wrapCommand(setOpenRouterApiKey),
10326
10433
  'Chat.setStreamingEnabled': wrapCommand(setStreamingEnabled),
10434
+ 'Chat.setUseChatCoordinatorWorker': wrapCommand(setUseChatCoordinatorWorker),
10327
10435
  'Chat.setUseChatMathWorker': wrapCommand(setUseChatMathWorker),
10328
10436
  'Chat.setUseChatNetworkWorkerForRequests': wrapCommand(setUseChatNetworkWorkerForRequests),
10329
10437
  'Chat.terminate': terminate,
@@ -10331,15 +10439,15 @@ const commandMap = {
10331
10439
  };
10332
10440
 
10333
10441
  const sendMessagePortToChatCoordinatorWorker = async port => {
10334
- // TODO:
10335
- await sendMessagePortToChatMathWorker$1(port, 0);
10442
+ const command = 'HandleMessagePort.handleMessagePort';
10443
+ await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToChatCoordinatorWorker', port, command);
10336
10444
  };
10337
10445
  const initializeChatCoordinatorWorker = async () => {
10338
10446
  const rpc = await create$4({
10339
10447
  commandMap: {},
10340
10448
  send: sendMessagePortToChatCoordinatorWorker
10341
10449
  });
10342
- set$4(rpc);
10450
+ set(rpc);
10343
10451
  };
10344
10452
 
10345
10453
  const sendMessagePortToChatMathWorker = async port => {
@@ -10350,7 +10458,7 @@ const initializeChatMathWorker = async () => {
10350
10458
  commandMap: {},
10351
10459
  send: sendMessagePortToChatMathWorker
10352
10460
  });
10353
- set$4(rpc);
10461
+ set$5(rpc);
10354
10462
  };
10355
10463
 
10356
10464
  const send = port => {
@@ -10361,7 +10469,7 @@ const initializeChatNetworkWorker = async () => {
10361
10469
  commandMap: {},
10362
10470
  send
10363
10471
  });
10364
- set$3(rpc);
10472
+ set$4(rpc);
10365
10473
  };
10366
10474
 
10367
10475
  const listen = async () => {
@@ -10369,7 +10477,7 @@ const listen = async () => {
10369
10477
  const rpc = await create$3({
10370
10478
  commandMap: commandMap
10371
10479
  });
10372
- set$1(rpc);
10480
+ set$2(rpc);
10373
10481
  await Promise.all([initializeChatNetworkWorker(), initializeChatMathWorker(), initializeChatCoordinatorWorker()]);
10374
10482
  };
10375
10483
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/chat-view",
3
- "version": "5.2.0",
3
+ "version": "5.4.0",
4
4
  "description": "Chat View Worker",
5
5
  "repository": {
6
6
  "type": "git",