@lvce-editor/chat-view 6.17.0 → 6.18.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.
@@ -1118,14 +1118,14 @@ const create$2 = rpcId => {
1118
1118
  };
1119
1119
 
1120
1120
  const {
1121
- invoke: invoke$6,
1121
+ invoke: invoke$7,
1122
1122
  set: set$7
1123
1123
  } = create$2(6007);
1124
1124
  const getMathBlockDom = async node => {
1125
- return invoke$6('ChatMath.getMathBlockDom', node);
1125
+ return invoke$7('ChatMath.getMathBlockDom', node);
1126
1126
  };
1127
1127
  const getMathInlineDom = async node => {
1128
- return invoke$6('ChatMath.getMathInlineDom', node);
1128
+ return invoke$7('ChatMath.getMathInlineDom', node);
1129
1129
  };
1130
1130
 
1131
1131
  const Button$2 = 'button';
@@ -1218,30 +1218,30 @@ const SetPatches = 'Viewlet.setPatches';
1218
1218
  const FocusChatInput = 8000;
1219
1219
 
1220
1220
  const {
1221
- invoke: invoke$5,
1221
+ invoke: invoke$6,
1222
1222
  set: set$6
1223
1223
  } = create$2(ChatNetworkWorker);
1224
1224
 
1225
1225
  const {
1226
- invoke: invoke$4,
1226
+ invoke: invoke$5,
1227
1227
  set: set$5
1228
1228
  } = create$2(ChatToolWorker);
1229
1229
 
1230
1230
  const {
1231
- invoke: invoke$3,
1231
+ invoke: invoke$4,
1232
1232
  set: set$4
1233
1233
  } = create$2(ExtensionHostWorker);
1234
1234
 
1235
1235
  const {
1236
- invoke: invoke$2,
1236
+ invoke: invoke$3,
1237
1237
  set: set$3
1238
1238
  } = create$2(OpenerWorker);
1239
1239
  const openExternal = async url => {
1240
- return invoke$2('Open.openExternal', url);
1240
+ return invoke$3('Open.openExternal', url);
1241
1241
  };
1242
1242
 
1243
1243
  const {
1244
- invoke: invoke$1,
1244
+ invoke: invoke$2,
1245
1245
  invokeAndTransfer,
1246
1246
  set: set$2
1247
1247
  } = create$2(RendererWorker);
@@ -1250,7 +1250,7 @@ const showContextMenu2 = async (uid, menuId, x, y, args) => {
1250
1250
  number(menuId);
1251
1251
  number(x);
1252
1252
  number(y);
1253
- await invoke$1('ContextMenu.show2', uid, menuId, x, y, args);
1253
+ await invoke$2('ContextMenu.show2', uid, menuId, x, y, args);
1254
1254
  };
1255
1255
  const sendMessagePortToOpenerWorker$1 = async (port, rpcId) => {
1256
1256
  const command = 'HandleMessagePort.handleMessagePort';
@@ -1261,7 +1261,7 @@ const sendMessagePortToChatMathWorker$1 = async (port, rpcId) => {
1261
1261
  await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToChatMathWorker', port, command, rpcId);
1262
1262
  };
1263
1263
  const readFile = async uri => {
1264
- return invoke$1('FileSystem.readFile', uri);
1264
+ return invoke$2('FileSystem.readFile', uri);
1265
1265
  };
1266
1266
  const sendMessagePortToExtensionHostWorker$1 = async (port, rpcId = 0) => {
1267
1267
  const command = 'HandleMessagePort.handleMessagePort2';
@@ -1274,13 +1274,13 @@ const sendMessagePortToChatToolWorker = async port => {
1274
1274
  await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToChatToolWorker', port, 'HandleMessagePort.handleMessagePort');
1275
1275
  };
1276
1276
  const activateByEvent$1 = (event, assetDir, platform) => {
1277
- return invoke$1('ExtensionHostManagement.activateByEvent', event, assetDir, platform);
1277
+ return invoke$2('ExtensionHostManagement.activateByEvent', event, assetDir, platform);
1278
1278
  };
1279
1279
  const getPreference = async key => {
1280
- return await invoke$1('Preferences.get', key);
1280
+ return await invoke$2('Preferences.get', key);
1281
1281
  };
1282
1282
  const measureTextBlockHeight$1 = async (actualInput, fontFamily, fontSize, lineHeightPx, width) => {
1283
- return invoke$1(`MeasureTextHeight.measureTextBlockHeight`, actualInput, fontFamily, fontSize, lineHeightPx, width);
1283
+ return invoke$2(`MeasureTextHeight.measureTextBlockHeight`, actualInput, fontFamily, fontSize, lineHeightPx, width);
1284
1284
  };
1285
1285
 
1286
1286
  const toCommandId = key => {
@@ -1679,6 +1679,7 @@ const createDefaultState = () => {
1679
1679
  chatSendAreaPaddingLeft: 8,
1680
1680
  chatSendAreaPaddingRight: 8,
1681
1681
  chatSendAreaPaddingTop: 10,
1682
+ chatStorageWorkerEnabled: false,
1682
1683
  composerDropActive: false,
1683
1684
  composerDropEnabled: true,
1684
1685
  composerFontFamily: 'system-ui',
@@ -1793,6 +1794,12 @@ const create = (uid, x, y, width, height, platform, assetDir) => {
1793
1794
  set$1(uid, state, state);
1794
1795
  };
1795
1796
 
1797
+ const invoke$1 = async (method, ...params) => {
1798
+ {
1799
+ throw new Error('ChatStorageWorker is not initialized');
1800
+ }
1801
+ };
1802
+
1796
1803
  const toError = error => {
1797
1804
  if (error instanceof Error) {
1798
1805
  return error;
@@ -2369,8 +2376,12 @@ const createDefaultStorage = () => {
2369
2376
  return new IndexedDbChatSessionStorage();
2370
2377
  };
2371
2378
  let chatSessionStorage = createDefaultStorage();
2379
+ let chatStorageWorkerEnabled = false;
2380
+ const setChatStorageWorkerEnabled$1 = enabled => {
2381
+ chatStorageWorkerEnabled = enabled;
2382
+ };
2372
2383
  const listChatSessions = async () => {
2373
- const sessions = await chatSessionStorage.listSessions();
2384
+ const sessions = chatStorageWorkerEnabled ? await invoke$1() : await chatSessionStorage.listSessions();
2374
2385
  return sessions.map(session => {
2375
2386
  const summary = {
2376
2387
  id: session.id,
@@ -2387,7 +2398,7 @@ const listChatSessions = async () => {
2387
2398
  });
2388
2399
  };
2389
2400
  const getChatSession = async id => {
2390
- const session = await chatSessionStorage.getSession(id);
2401
+ const session = chatStorageWorkerEnabled ? await invoke$1('ChatStorage.getSession', id) : await chatSessionStorage.getSession(id);
2391
2402
  if (!session) {
2392
2403
  return undefined;
2393
2404
  }
@@ -2408,18 +2419,35 @@ const saveChatSession = async session => {
2408
2419
  messages: [...session.messages],
2409
2420
  title: session.title
2410
2421
  };
2411
- await chatSessionStorage.setSession(session.projectId ? {
2422
+ const sessionValue = session.projectId ? {
2412
2423
  ...value,
2413
2424
  projectId: session.projectId
2414
- } : value);
2425
+ } : value;
2426
+ if (chatStorageWorkerEnabled) {
2427
+ await invoke$1('ChatStorage.setSession', sessionValue);
2428
+ return;
2429
+ }
2430
+ await chatSessionStorage.setSession(sessionValue);
2415
2431
  };
2416
2432
  const deleteChatSession = async id => {
2433
+ if (chatStorageWorkerEnabled) {
2434
+ await invoke$1('ChatStorage.deleteSession', id);
2435
+ return;
2436
+ }
2417
2437
  await chatSessionStorage.deleteSession(id);
2418
2438
  };
2419
2439
  const clearChatSessions = async () => {
2440
+ if (chatStorageWorkerEnabled) {
2441
+ await invoke$1();
2442
+ return;
2443
+ }
2420
2444
  await chatSessionStorage.clear();
2421
2445
  };
2422
2446
  const appendChatViewEvent = async event => {
2447
+ if (chatStorageWorkerEnabled) {
2448
+ await invoke$1('ChatStorage.appendEvent', event);
2449
+ return;
2450
+ }
2423
2451
  await chatSessionStorage.appendEvent(event);
2424
2452
  };
2425
2453
 
@@ -3086,7 +3114,7 @@ const handleChatListContextMenu = async (state, eventX, eventY) => {
3086
3114
  if (!item) {
3087
3115
  return state;
3088
3116
  }
3089
- await invoke$1('ContextMenu.show', eventX, eventY, CHAT_LIST_ITEM_CONTEXT_MENU, item.id);
3117
+ await invoke$2('ContextMenu.show', eventX, eventY, CHAT_LIST_ITEM_CONTEXT_MENU, item.id);
3090
3118
  return state;
3091
3119
  };
3092
3120
 
@@ -3117,7 +3145,7 @@ const createSession = async (state, projectIdOverride = '') => {
3117
3145
 
3118
3146
  const openFolder = async () => {
3119
3147
  try {
3120
- return await invoke$1('FilePicker.showDirectoryPicker');
3148
+ return await invoke$2('FilePicker.showDirectoryPicker');
3121
3149
  } catch {
3122
3150
  return '';
3123
3151
  }
@@ -3221,7 +3249,7 @@ const get = async key => {
3221
3249
  return getPreference(key);
3222
3250
  };
3223
3251
  const update = async settings => {
3224
- await invoke$1('Preferences.update', settings);
3252
+ await invoke$2('Preferences.update', settings);
3225
3253
  };
3226
3254
 
3227
3255
  const trailingSlashesRegex$3 = /\/+$/;
@@ -3249,12 +3277,12 @@ const handleClickLogin = async state => {
3249
3277
  };
3250
3278
  if (state.uid) {
3251
3279
  set$1(state.uid, state, signingInState);
3252
- await invoke$1('Chat.rerender');
3280
+ await invoke$2('Chat.rerender');
3253
3281
  }
3254
3282
  let usedMockResponse = false;
3255
3283
  try {
3256
3284
  usedMockResponse = hasPendingMockLoginResponse();
3257
- const response = usedMockResponse ? await consumeNextLoginResponse() : await invoke$1('Auth.login', state.backendUrl);
3285
+ const response = usedMockResponse ? await consumeNextLoginResponse() : await invoke$2('Auth.login', state.backendUrl);
3258
3286
  if (!isLoginResponse(response)) {
3259
3287
  return {
3260
3288
  ...signingInState,
@@ -3288,7 +3316,7 @@ const handleClickLogin = async state => {
3288
3316
  } catch (error) {
3289
3317
  const errorMessage = error instanceof Error && error.message ? error.message : 'Backend authentication failed.';
3290
3318
  if (!usedMockResponse) {
3291
- await invoke$1('Main.openUri', `${trimTrailingSlashes(state.backendUrl)}/auth/login`);
3319
+ await invoke$2('Main.openUri', `${trimTrailingSlashes(state.backendUrl)}/auth/login`);
3292
3320
  }
3293
3321
  return {
3294
3322
  ...signingInState,
@@ -3300,7 +3328,7 @@ const handleClickLogin = async state => {
3300
3328
 
3301
3329
  const handleClickLogout = async state => {
3302
3330
  try {
3303
- await invoke$1('Auth.logout', state.backendUrl);
3331
+ await invoke$2('Auth.logout', state.backendUrl);
3304
3332
  } catch {
3305
3333
  // Ignore logout bridge errors and still clear local auth state.
3306
3334
  }
@@ -3321,7 +3349,7 @@ const handleClickLogout = async state => {
3321
3349
  };
3322
3350
 
3323
3351
  const handleClickOpenApiApiKeySettings = async state => {
3324
- await invoke$1('Main.openUri', 'app://settings.json');
3352
+ await invoke$2('Main.openUri', 'app://settings.json');
3325
3353
  return state;
3326
3354
  };
3327
3355
 
@@ -3331,7 +3359,7 @@ const handleClickOpenApiApiKeyWebsite = async state => {
3331
3359
  };
3332
3360
 
3333
3361
  const handleClickOpenRouterApiKeySettings = async state => {
3334
- await invoke$1('Main.openUri', 'app://settings.json');
3362
+ await invoke$2('Main.openUri', 'app://settings.json');
3335
3363
  return state;
3336
3364
  };
3337
3365
 
@@ -3368,10 +3396,10 @@ const getAiResponse$1 = async options => {
3368
3396
  };
3369
3397
 
3370
3398
  const execute = async (name, rawArguments, options) => {
3371
- return invoke$4('ChatTool.execute', name, rawArguments, options);
3399
+ return invoke$5('ChatTool.execute', name, rawArguments, options);
3372
3400
  };
3373
3401
  const getTools = async () => {
3374
- return invoke$4('ChatTool.getTools');
3402
+ return invoke$5('ChatTool.getTools');
3375
3403
  };
3376
3404
 
3377
3405
  const stringifyToolOutput = output => {
@@ -3871,7 +3899,7 @@ const executeProvider = async ({
3871
3899
  }) => {
3872
3900
  await activateByEvent(event, assetDir, platform);
3873
3901
  // @ts-ignore
3874
- const result = invoke$3(method, ...params);
3902
+ const result = invoke$4(method, ...params);
3875
3903
  return result;
3876
3904
  };
3877
3905
 
@@ -4003,10 +4031,10 @@ const getOpenApiApiEndpoint = openApiApiBaseUrl => {
4003
4031
  };
4004
4032
 
4005
4033
  const makeApiRequest = async options => {
4006
- return invoke$5('ChatNetwork.makeApiRequest', options);
4034
+ return invoke$6('ChatNetwork.makeApiRequest', options);
4007
4035
  };
4008
4036
  const makeStreamingApiRequest = async options => {
4009
- return invoke$5('ChatNetwork.makeStreamingApiRequest', options);
4037
+ return invoke$6('ChatNetwork.makeStreamingApiRequest', options);
4010
4038
  };
4011
4039
 
4012
4040
  const getTextContent = content => {
@@ -5858,7 +5886,7 @@ const handleClickSaveOpenRouterApiKey = async state => {
5858
5886
  };
5859
5887
  set$1(state.uid, state, optimisticState);
5860
5888
  // @ts-ignore
5861
- await invoke$1('Chat.rerender');
5889
+ await invoke$2('Chat.rerender');
5862
5890
  const persistedState = await setOpenRouterApiKey(optimisticState, openRouterApiKey);
5863
5891
  const updatedState = {
5864
5892
  ...persistedState,
@@ -7226,7 +7254,7 @@ const getSelectedSession = (sessions, selectedSessionId) => {
7226
7254
  const setAndRerenderHandleTextChunkState = async (uid, previousState, nextState) => {
7227
7255
  set$1(uid, previousState, nextState);
7228
7256
  // @ts-ignore
7229
- await invoke$1('Chat.rerender');
7257
+ await invoke$2('Chat.rerender');
7230
7258
  };
7231
7259
 
7232
7260
  const getToolCallMergeKey = toolCall => {
@@ -7366,7 +7394,7 @@ const handleTextChunkFunction = async (uid, assistantMessageId, chunk, handleTex
7366
7394
  };
7367
7395
  set$1(uid, handleTextChunkState.previousState, nextState);
7368
7396
  // @ts-ignore
7369
- await invoke$1('Chat.rerender');
7397
+ await invoke$2('Chat.rerender');
7370
7398
  return {
7371
7399
  latestState: nextState,
7372
7400
  previousState: nextState
@@ -7568,7 +7596,7 @@ const handleSubmit = async state => {
7568
7596
  }
7569
7597
  set$1(state.uid, state, optimisticState);
7570
7598
  // @ts-ignore
7571
- await invoke$1('Chat.rerender');
7599
+ await invoke$2('Chat.rerender');
7572
7600
  let handleTextChunkState = {
7573
7601
  latestState: optimisticState,
7574
7602
  previousState: optimisticState
@@ -7961,7 +7989,7 @@ const handleClickBack = async state => {
7961
7989
 
7962
7990
  const handleClickClose = async () => {
7963
7991
  // @ts-ignore
7964
- await invoke$1('Layout.hideSecondarySideBar');
7992
+ await invoke$2('Layout.hideSecondarySideBar');
7965
7993
  };
7966
7994
 
7967
7995
  const handleClickDelete = async (state, sessionId = '') => {
@@ -7983,7 +8011,7 @@ const handleClickFileName = async uri => {
7983
8011
  return;
7984
8012
  }
7985
8013
  const normalizedUri = normalizeFileReferenceUri(uri);
7986
- await invoke$1('Main.openUri', normalizedUri);
8014
+ await invoke$2('Main.openUri', normalizedUri);
7987
8015
  };
7988
8016
 
7989
8017
  const handleClickNew = async state => {
@@ -7993,12 +8021,12 @@ const handleClickNew = async state => {
7993
8021
  };
7994
8022
 
7995
8023
  const handleClickSessionDebug = async state => {
7996
- await invoke$1('Main.openUri', `chat-debug://${state.selectedSessionId}`);
8024
+ await invoke$2('Main.openUri', `chat-debug://${state.selectedSessionId}`);
7997
8025
  return state;
7998
8026
  };
7999
8027
 
8000
8028
  const handleClickSettings = async () => {
8001
- await invoke$1('Main.openUri', 'app://settings.json');
8029
+ await invoke$2('Main.openUri', 'app://settings.json');
8002
8030
  };
8003
8031
 
8004
8032
  const handleDragEnter = async (state, name, hasFiles = true) => {
@@ -8553,6 +8581,15 @@ const loadBackendUrl = async () => {
8553
8581
  }
8554
8582
  };
8555
8583
 
8584
+ const loadChatStorageWorkerEnabled = async () => {
8585
+ try {
8586
+ const savedChatStorageWorkerEnabled = await get('chatView.chatStorageWorkerEnabled');
8587
+ return typeof savedChatStorageWorkerEnabled === 'boolean' ? savedChatStorageWorkerEnabled : false;
8588
+ } catch {
8589
+ return false;
8590
+ }
8591
+ };
8592
+
8556
8593
  const loadComposerDropEnabled = async () => {
8557
8594
  try {
8558
8595
  const savedComposerDropEnabled = await get('chatView.composerDropEnabled');
@@ -8679,13 +8716,14 @@ const loadVoiceDictationEnabled = async () => {
8679
8716
  };
8680
8717
 
8681
8718
  const loadPreferences = async () => {
8682
- const [aiSessionTitleGenerationEnabled, authAccessToken, authEnabled, authRefreshToken, backendUrl, composerDropEnabled, openApiApiKey, openRouterApiKey, emitStreamingFunctionCallEvents, searchEnabled, streamingEnabled, todoListToolEnabled, passIncludeObfuscation, useChatCoordinatorWorker, useChatMathWorker, useChatNetworkWorkerForRequests, useChatToolWorker, voiceDictationEnabled] = await Promise.all([loadAiSessionTitleGenerationEnabled(), loadBackendAccessToken(), loadAuthEnabled(), loadBackendRefreshToken(), loadBackendUrl(), loadComposerDropEnabled(), loadOpenApiApiKey(), loadOpenRouterApiKey(), loadEmitStreamingFunctionCallEvents(), loadSearchEnabled(), loadStreamingEnabled(), loadTodoListToolEnabled(), loadPassIncludeObfuscation(), loadUseChatCoordinatorWorker(), loadUseChatMathWorker(), loadUseChatNetworkWorkerForRequests(), loadUseChatToolWorker(), loadVoiceDictationEnabled()]);
8719
+ const [aiSessionTitleGenerationEnabled, authAccessToken, authEnabled, authRefreshToken, backendUrl, chatStorageWorkerEnabled, composerDropEnabled, openApiApiKey, openRouterApiKey, emitStreamingFunctionCallEvents, searchEnabled, streamingEnabled, todoListToolEnabled, passIncludeObfuscation, useChatCoordinatorWorker, useChatMathWorker, useChatNetworkWorkerForRequests, useChatToolWorker, voiceDictationEnabled] = await Promise.all([loadAiSessionTitleGenerationEnabled(), loadBackendAccessToken(), loadAuthEnabled(), loadBackendRefreshToken(), loadBackendUrl(), loadChatStorageWorkerEnabled(), loadComposerDropEnabled(), loadOpenApiApiKey(), loadOpenRouterApiKey(), loadEmitStreamingFunctionCallEvents(), loadSearchEnabled(), loadStreamingEnabled(), loadTodoListToolEnabled(), loadPassIncludeObfuscation(), loadUseChatCoordinatorWorker(), loadUseChatMathWorker(), loadUseChatNetworkWorkerForRequests(), loadUseChatToolWorker(), loadVoiceDictationEnabled()]);
8683
8720
  return {
8684
8721
  aiSessionTitleGenerationEnabled,
8685
8722
  authAccessToken,
8686
8723
  authEnabled,
8687
8724
  authRefreshToken,
8688
8725
  backendUrl,
8726
+ chatStorageWorkerEnabled,
8689
8727
  composerDropEnabled,
8690
8728
  emitStreamingFunctionCallEvents,
8691
8729
  openApiApiKey,
@@ -8743,6 +8781,7 @@ const loadContent = async (state, savedState) => {
8743
8781
  authEnabled,
8744
8782
  authRefreshToken,
8745
8783
  backendUrl,
8784
+ chatStorageWorkerEnabled,
8746
8785
  composerDropEnabled,
8747
8786
  emitStreamingFunctionCallEvents,
8748
8787
  openApiApiKey,
@@ -8757,6 +8796,7 @@ const loadContent = async (state, savedState) => {
8757
8796
  useChatToolWorker,
8758
8797
  voiceDictationEnabled
8759
8798
  } = await loadPreferences();
8799
+ setChatStorageWorkerEnabled$1(chatStorageWorkerEnabled);
8760
8800
  const legacySavedSessions = getSavedSessions(savedState);
8761
8801
  const storedSessions = await listChatSessions();
8762
8802
  let sessions = storedSessions;
@@ -8812,6 +8852,7 @@ const loadContent = async (state, savedState) => {
8812
8852
  authStatus: authAccessToken ? 'signed-in' : 'signed-out',
8813
8853
  backendUrl,
8814
8854
  chatListScrollTop,
8855
+ chatStorageWorkerEnabled,
8815
8856
  composerDropActive: false,
8816
8857
  composerDropEnabled,
8817
8858
  composerValue: savedComposerValue ?? state.composerValue,
@@ -11901,6 +11942,19 @@ const setChatList = state => {
11901
11942
  };
11902
11943
  };
11903
11944
 
11945
+ const setChatStorageWorkerEnabled = async (state, chatStorageWorkerEnabled, persist = true) => {
11946
+ if (persist) {
11947
+ await update({
11948
+ 'chatView.chatStorageWorkerEnabled': chatStorageWorkerEnabled
11949
+ });
11950
+ }
11951
+ setChatStorageWorkerEnabled$1(chatStorageWorkerEnabled);
11952
+ return {
11953
+ ...state,
11954
+ chatStorageWorkerEnabled
11955
+ };
11956
+ };
11957
+
11904
11958
  const setEmitStreamingFunctionCallEvents = (state, emitStreamingFunctionCallEvents) => {
11905
11959
  return {
11906
11960
  ...state,
@@ -12070,6 +12124,7 @@ const commandMap = {
12070
12124
  'Chat.setAuthEnabled': wrapCommand(setAuthEnabled),
12071
12125
  'Chat.setBackendUrl': wrapCommand(setBackendUrl),
12072
12126
  'Chat.setChatList': wrapCommand(setChatList),
12127
+ 'Chat.setChatStorageWorkerEnabled': wrapCommand(setChatStorageWorkerEnabled),
12073
12128
  'Chat.setEmitStreamingFunctionCallEvents': wrapCommand(setEmitStreamingFunctionCallEvents),
12074
12129
  'Chat.setNewChatModelPickerEnabled': wrapCommand(setNewChatModelPickerEnabled),
12075
12130
  'Chat.setOpenRouterApiKey': wrapCommand(setOpenRouterApiKey),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/chat-view",
3
- "version": "6.17.0",
3
+ "version": "6.18.0",
4
4
  "description": "Chat View Worker",
5
5
  "repository": {
6
6
  "type": "git",