@lvce-editor/chat-view 7.12.0 → 7.15.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.
@@ -1070,7 +1070,7 @@ const createMockRpc = ({
1070
1070
  };
1071
1071
 
1072
1072
  const rpcs = Object.create(null);
1073
- const set$d = (id, rpc) => {
1073
+ const set$e = (id, rpc) => {
1074
1074
  rpcs[id] = rpc;
1075
1075
  };
1076
1076
  const get$2 = id => {
@@ -1103,7 +1103,7 @@ const create$2 = rpcId => {
1103
1103
  const mockRpc = createMockRpc({
1104
1104
  commandMap
1105
1105
  });
1106
- set$d(rpcId, mockRpc);
1106
+ set$e(rpcId, mockRpc);
1107
1107
  // @ts-ignore
1108
1108
  mockRpc[Symbol.dispose] = () => {
1109
1109
  remove(rpcId);
@@ -1112,11 +1112,22 @@ const create$2 = rpcId => {
1112
1112
  return mockRpc;
1113
1113
  },
1114
1114
  set(rpc) {
1115
- set$d(rpcId, rpc);
1115
+ set$e(rpcId, rpc);
1116
1116
  }
1117
1117
  };
1118
1118
  };
1119
1119
 
1120
+ const {
1121
+ invoke: invoke$9,
1122
+ set: set$d
1123
+ } = create$2(6010);
1124
+ const login$1 = async options => {
1125
+ return invoke$9('Auth.login', options);
1126
+ };
1127
+ const logout$1 = async options => {
1128
+ return invoke$9('Auth.logout', options);
1129
+ };
1130
+
1120
1131
  const {
1121
1132
  invoke: invoke$8,
1122
1133
  set: set$c
@@ -1290,9 +1301,6 @@ const {
1290
1301
  const openExternal = async url => {
1291
1302
  return invoke$1('Open.openExternal', url);
1292
1303
  };
1293
- const openUrl = async (url, platform) => {
1294
- return invoke$1('Open.openUrl', url, platform);
1295
- };
1296
1304
 
1297
1305
  const {
1298
1306
  invoke,
@@ -1330,6 +1338,10 @@ const sendMessagePortToChatMessageParsingWorker = async (port, rpcId) => {
1330
1338
  const command = 'HandleMessagePort.handleMessagePort';
1331
1339
  await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToChatMessageParsingWorker', port, command, rpcId);
1332
1340
  };
1341
+ const sendMessagePortToAuthWorker$1 = async (port, rpcId) => {
1342
+ const command = 'HandleMessagePort.handleMessagePort';
1343
+ await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToAuthWorker', port, command, rpcId);
1344
+ };
1333
1345
  const sendMessagePortToIconThemeWorker$1 = async (port, rpcId) => {
1334
1346
  const command = 'IconTheme.handleMessagePort';
1335
1347
  await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToIconThemeWorker', port, command, rpcId);
@@ -1877,7 +1889,6 @@ const Login$1 = 'Login';
1877
1889
  const Logout$1 = 'Logout';
1878
1890
  const LoginToBackend = 'Login to backend';
1879
1891
  const LogoutFromBackend = 'Logout from backend';
1880
- const LoggingInToBackend = 'Logging in to backend';
1881
1892
  const LoggingOutFromBackend = 'Logging out from backend';
1882
1893
  const SignedIn = 'Signed in';
1883
1894
  const SwitchToChatFocusMode = 'Switch to chat focus mode';
@@ -1978,9 +1989,6 @@ const loginToBackend = () => {
1978
1989
  const logoutFromBackend$1 = () => {
1979
1990
  return i18nString(LogoutFromBackend);
1980
1991
  };
1981
- const loggingInToBackend = () => {
1982
- return i18nString(LoggingInToBackend);
1983
- };
1984
1992
  const loggingOutFromBackend = () => {
1985
1993
  return i18nString(LoggingOutFromBackend);
1986
1994
  };
@@ -2368,6 +2376,7 @@ const createDefaultState = () => {
2368
2376
  authAccessToken: '',
2369
2377
  authEnabled: false,
2370
2378
  authErrorMessage: '',
2379
+ authUseRedirect: false,
2371
2380
  backendUrl: '',
2372
2381
  chatFocusContentMaxWidth: 700,
2373
2382
  chatHistoryEnabled: true,
@@ -2405,6 +2414,7 @@ const createDefaultState = () => {
2405
2414
  gitBranchPickerVisible: false,
2406
2415
  headerHeight: 50,
2407
2416
  height: 0,
2417
+ useAuthWorker: false,
2408
2418
  useOwnBackend: false,
2409
2419
  ...responsivePickerState,
2410
2420
  initial: true,
@@ -4386,13 +4396,16 @@ const getEffectiveRedirectUri = async (platform, uid, redirectUri) => {
4386
4396
  }
4387
4397
  return getCurrentHref();
4388
4398
  };
4389
- const getBackendLoginUrl = async (backendUrl, platform = 0, uid = 0, redirectUri = '') => {
4399
+ const getBackendLoginRequest = async (backendUrl, platform = 0, uid = 0, redirectUri = '') => {
4390
4400
  const loginUrl = new URL(getBackendAuthUrl(backendUrl, '/login'));
4391
4401
  const effectiveRedirectUri = await getEffectiveRedirectUri(platform, uid, redirectUri);
4392
4402
  if (effectiveRedirectUri) {
4393
4403
  loginUrl.searchParams.set('redirect_uri', effectiveRedirectUri);
4394
4404
  }
4395
- return loginUrl.toString();
4405
+ return {
4406
+ loginUrl: loginUrl.toString(),
4407
+ redirectUri: effectiveRedirectUri
4408
+ };
4396
4409
  };
4397
4410
 
4398
4411
  const getLoggedOutBackendAuthState = (authErrorMessage = '') => {
@@ -4555,6 +4568,39 @@ const delay = async ms => {
4555
4568
  await new Promise(resolve => setTimeout(resolve, ms));
4556
4569
  };
4557
4570
 
4571
+ const getBackendNativeExchangeUrl = backendUrl => {
4572
+ return getBackendAuthUrl(backendUrl, '/auth/native/exchange');
4573
+ };
4574
+
4575
+ const getExchangeErrorMessage = async response => {
4576
+ try {
4577
+ const payload = await response.json();
4578
+ if (payload && typeof payload === 'object' && typeof payload.error === 'string' && payload.error) {
4579
+ return payload.error;
4580
+ }
4581
+ } catch {
4582
+ // ignore
4583
+ }
4584
+ return 'Backend authentication failed.';
4585
+ };
4586
+ const exchangeElectronAuthorizationCode = async (backendUrl, code, redirectUri) => {
4587
+ const response = await fetch(getBackendNativeExchangeUrl(backendUrl), {
4588
+ body: JSON.stringify({
4589
+ code,
4590
+ redirectUri
4591
+ }),
4592
+ credentials: 'include',
4593
+ headers: {
4594
+ Accept: 'application/json',
4595
+ 'Content-Type': 'application/json'
4596
+ },
4597
+ method: 'POST'
4598
+ });
4599
+ if (!response.ok) {
4600
+ throw new Error(await getExchangeErrorMessage(response));
4601
+ }
4602
+ };
4603
+
4558
4604
  const waitForBackendLogin = async (backendUrl, timeoutMs = 30_000, pollIntervalMs = 1000) => {
4559
4605
  const deadline = Date.now() + timeoutMs;
4560
4606
  let lastErrorMessage = '';
@@ -4574,7 +4620,7 @@ const waitForBackendLogin = async (backendUrl, timeoutMs = 30_000, pollIntervalM
4574
4620
  const hasAuthorizationCode = value => {
4575
4621
  return typeof value === 'string' && value.length > 0;
4576
4622
  };
4577
- const waitForElectronBackendLogin = async (backendUrl, uid, timeoutMs = 30_000, pollIntervalMs = 1000) => {
4623
+ const waitForElectronBackendLogin = async (backendUrl, uid, redirectUri, timeoutMs = 30_000, pollIntervalMs = 1000) => {
4578
4624
  const started = Date.now();
4579
4625
  const deadline = started + timeoutMs;
4580
4626
  while (Date.now() < deadline) {
@@ -4582,6 +4628,7 @@ const waitForElectronBackendLogin = async (backendUrl, uid, timeoutMs = 30_000,
4582
4628
  if (hasAuthorizationCode(authorizationCode)) {
4583
4629
  const elapsed = Date.now() - started;
4584
4630
  const remainingTime = Math.max(0, timeoutMs - elapsed);
4631
+ await exchangeElectronAuthorizationCode(backendUrl, authorizationCode, redirectUri);
4585
4632
  return waitForBackendLogin(backendUrl, remainingTime, pollIntervalMs);
4586
4633
  }
4587
4634
  await delay(pollIntervalMs);
@@ -4615,9 +4662,11 @@ const getLoggedInState = (state, response) => {
4615
4662
  };
4616
4663
  const handleClickLogin = async state => {
4617
4664
  const {
4665
+ authUseRedirect,
4618
4666
  backendUrl,
4619
4667
  platform,
4620
- uid
4668
+ uid,
4669
+ useAuthWorker
4621
4670
  } = state;
4622
4671
  if (!backendUrl) {
4623
4672
  return {
@@ -4633,9 +4682,23 @@ const handleClickLogin = async state => {
4633
4682
  };
4634
4683
  if (uid) {
4635
4684
  set(uid, state, signingInState);
4636
- await invoke('Chat.rerender');
4637
4685
  }
4638
4686
  try {
4687
+ if (useAuthWorker) {
4688
+ const authState = await login$1({
4689
+ authUseRedirect,
4690
+ backendUrl,
4691
+ platform,
4692
+ uid
4693
+ });
4694
+ return {
4695
+ ...signingInState,
4696
+ ...authState
4697
+ };
4698
+ }
4699
+ if (uid) {
4700
+ await invoke('Chat.rerender');
4701
+ }
4639
4702
  if (hasPendingMockLoginResponse()) {
4640
4703
  const response = await consumeNextLoginResponse();
4641
4704
  if (!isLoginResponse(response)) {
@@ -4654,9 +4717,12 @@ const handleClickLogin = async state => {
4654
4717
  }
4655
4718
  return getLoggedInState(signingInState, response);
4656
4719
  }
4657
- const url = await getBackendLoginUrl(backendUrl, platform, uid);
4658
- await openUrl(url, platform);
4659
- const authState = platform === PlatformTypeElectron ? await waitForElectronBackendLogin(backendUrl, uid) : await waitForBackendLogin(backendUrl);
4720
+ const {
4721
+ loginUrl,
4722
+ redirectUri
4723
+ } = await getBackendLoginRequest(backendUrl, platform, uid);
4724
+ await invoke$1('Open.openUrl', loginUrl, platform, authUseRedirect);
4725
+ const authState = platform === PlatformTypeElectron ? await waitForElectronBackendLogin(backendUrl, uid, redirectUri) : await waitForBackendLogin(backendUrl);
4660
4726
  return {
4661
4727
  ...signingInState,
4662
4728
  ...authState
@@ -4680,7 +4746,13 @@ const handleClickLogout = async state => {
4680
4746
  set(state.uid, state, loggingOutState);
4681
4747
  await invoke('Chat.rerender');
4682
4748
  }
4683
- await logoutFromBackend(state.backendUrl);
4749
+ if (state.useAuthWorker) {
4750
+ await logout$1({
4751
+ backendUrl: state.backendUrl
4752
+ });
4753
+ } else {
4754
+ await logoutFromBackend(state.backendUrl);
4755
+ }
4684
4756
  return {
4685
4757
  ...loggingOutState,
4686
4758
  ...getLoggedOutBackendAuthState()
@@ -10643,6 +10715,15 @@ const loadAuthEnabled = async () => {
10643
10715
  }
10644
10716
  };
10645
10717
 
10718
+ const loadAuthUseRedirect = async () => {
10719
+ try {
10720
+ const savedAuthUseRedirect = await get('chat.authUseRedirect');
10721
+ return typeof savedAuthUseRedirect === 'boolean' ? savedAuthUseRedirect : false;
10722
+ } catch {
10723
+ return false;
10724
+ }
10725
+ };
10726
+
10646
10727
  const loadBackendUrl = async () => {
10647
10728
  try {
10648
10729
  const savedBackendUrl = await get('chat.backendUrl');
@@ -10768,6 +10849,15 @@ const loadToolEnablement = async () => {
10768
10849
  }
10769
10850
  };
10770
10851
 
10852
+ const loadUseAuthWorker = async () => {
10853
+ try {
10854
+ const savedUseAuthWorker = await get('chatView.useAuthWorker');
10855
+ return typeof savedUseAuthWorker === 'boolean' ? savedUseAuthWorker : false;
10856
+ } catch {
10857
+ return false;
10858
+ }
10859
+ };
10860
+
10771
10861
  const loadUseChatCoordinatorWorker = async () => {
10772
10862
  try {
10773
10863
  const savedUseChatCoordinatorWorker = await get('chatView.useChatCoordinatorWorker');
@@ -10823,10 +10913,11 @@ const loadVoiceDictationEnabled = async () => {
10823
10913
  };
10824
10914
 
10825
10915
  const loadPreferences = async () => {
10826
- const [aiSessionTitleGenerationEnabled, authEnabled, backendUrl, chatHistoryEnabled, composerDropEnabled, openApiApiKey, openRouterApiKey, emitStreamingFunctionCallEvents, reasoningPickerEnabled, scrollDownButtonEnabled, searchEnabled, streamingEnabled, todoListToolEnabled, toolEnablement, passIncludeObfuscation, useChatCoordinatorWorker, useChatMathWorker, useChatNetworkWorkerForRequests, useChatToolWorker, useOwnBackend, voiceDictationEnabled] = await Promise.all([loadAiSessionTitleGenerationEnabled(), loadAuthEnabled(), loadBackendUrl(), loadChatHistoryEnabled(), loadComposerDropEnabled(), loadOpenApiApiKey(), loadOpenRouterApiKey(), loadEmitStreamingFunctionCallEvents(), loadReasoningPickerEnabled(), loadScrollDownButtonEnabled(), loadSearchEnabled(), loadStreamingEnabled(), loadTodoListToolEnabled(), loadToolEnablement(), loadPassIncludeObfuscation(), loadUseChatCoordinatorWorker(), loadUseChatMathWorker(), loadUseChatNetworkWorkerForRequests(), loadUseChatToolWorker(), loadUseOwnBackend(), loadVoiceDictationEnabled()]);
10916
+ const [aiSessionTitleGenerationEnabled, authEnabled, authUseRedirect, backendUrl, chatHistoryEnabled, composerDropEnabled, openApiApiKey, openRouterApiKey, emitStreamingFunctionCallEvents, reasoningPickerEnabled, scrollDownButtonEnabled, searchEnabled, streamingEnabled, todoListToolEnabled, toolEnablement, passIncludeObfuscation, useChatCoordinatorWorker, useChatMathWorker, useChatNetworkWorkerForRequests, useChatToolWorker, useAuthWorker, useOwnBackend, voiceDictationEnabled] = await Promise.all([loadAiSessionTitleGenerationEnabled(), loadAuthEnabled(), loadAuthUseRedirect(), loadBackendUrl(), loadChatHistoryEnabled(), loadComposerDropEnabled(), loadOpenApiApiKey(), loadOpenRouterApiKey(), loadEmitStreamingFunctionCallEvents(), loadReasoningPickerEnabled(), loadScrollDownButtonEnabled(), loadSearchEnabled(), loadStreamingEnabled(), loadTodoListToolEnabled(), loadToolEnablement(), loadPassIncludeObfuscation(), loadUseChatCoordinatorWorker(), loadUseChatMathWorker(), loadUseChatNetworkWorkerForRequests(), loadUseChatToolWorker(), loadUseAuthWorker(), loadUseOwnBackend(), loadVoiceDictationEnabled()]);
10827
10917
  return {
10828
10918
  aiSessionTitleGenerationEnabled,
10829
10919
  authEnabled,
10920
+ authUseRedirect,
10830
10921
  backendUrl,
10831
10922
  chatHistoryEnabled,
10832
10923
  composerDropEnabled,
@@ -10840,6 +10931,7 @@ const loadPreferences = async () => {
10840
10931
  streamingEnabled,
10841
10932
  todoListToolEnabled,
10842
10933
  toolEnablement,
10934
+ useAuthWorker,
10843
10935
  useChatCoordinatorWorker,
10844
10936
  useChatMathWorker,
10845
10937
  useChatNetworkWorkerForRequests,
@@ -10899,6 +10991,7 @@ const loadContent = async (state, savedState) => {
10899
10991
  const {
10900
10992
  aiSessionTitleGenerationEnabled,
10901
10993
  authEnabled,
10994
+ authUseRedirect,
10902
10995
  backendUrl,
10903
10996
  chatHistoryEnabled,
10904
10997
  composerDropEnabled,
@@ -10912,6 +11005,7 @@ const loadContent = async (state, savedState) => {
10912
11005
  streamingEnabled,
10913
11006
  todoListToolEnabled,
10914
11007
  toolEnablement,
11008
+ useAuthWorker,
10915
11009
  useChatCoordinatorWorker,
10916
11010
  useChatMathWorker,
10917
11011
  useChatNetworkWorkerForRequests,
@@ -10979,6 +11073,7 @@ const loadContent = async (state, savedState) => {
10979
11073
  authAccessToken: authState.authAccessToken,
10980
11074
  authEnabled,
10981
11075
  authErrorMessage: authState.authErrorMessage,
11076
+ authUseRedirect,
10982
11077
  backendUrl,
10983
11078
  chatHistoryEnabled,
10984
11079
  chatListScrollTop,
@@ -11023,6 +11118,7 @@ const loadContent = async (state, savedState) => {
11023
11118
  streamingEnabled,
11024
11119
  todoListToolEnabled,
11025
11120
  toolEnablement,
11121
+ useAuthWorker,
11026
11122
  useChatCoordinatorWorker,
11027
11123
  useChatMathWorker,
11028
11124
  useChatNetworkWorkerForRequests,
@@ -11277,439 +11373,6 @@ const getCss = (composerHeight, composerAttachmentsHeight, modelPickerHeight, li
11277
11373
  height: ${buttonsHeight}px;
11278
11374
  }
11279
11375
 
11280
- .ChatToolCallFileName{
11281
- cursor: pointer;
11282
- }
11283
-
11284
- .ChatComposerAttachments{
11285
- display: flex;
11286
- flex-wrap: wrap;
11287
- gap: 8px;
11288
- margin-bottom: 8px;
11289
- }
11290
-
11291
- .ChatComposerAttachment{
11292
- align-items: center;
11293
- display: inline-flex;
11294
- gap: 6px;
11295
- max-width: 100%;
11296
- min-width: 0;
11297
- overflow: hidden;
11298
- border-radius: 999px;
11299
- border: 1px solid var(--WidgetBorder, white);
11300
- padding: 4px 10px;
11301
- background: var(--vscode-badge-background, color-mix(in srgb, var(--vscode-editor-background) 88%, white));
11302
- color: var(--vscode-badge-foreground, var(--vscode-foreground));
11303
- font-size: 12px;
11304
- }
11305
-
11306
- .ChatComposerAttachmentLabel{
11307
- min-width: 0;
11308
- overflow: hidden;
11309
- text-overflow: ellipsis;
11310
- white-space: nowrap;
11311
- }
11312
-
11313
- .ChatComposerAttachmentPreview{
11314
- width: 20px;
11315
- height: 20px;
11316
- flex: none;
11317
- border-radius: 4px;
11318
- object-fit: cover;
11319
- }
11320
-
11321
- .ChatComposerAttachmentPreview,
11322
- .ChatAttachmentPreview,
11323
- .ChatMessageImage,
11324
- .ChatComposerAttachmentPreviewOverlayImage,
11325
- .ImageElement{
11326
- cursor: default;
11327
- }
11328
-
11329
- .ChatComposerAttachmentRemoveButton{
11330
- appearance: none;
11331
- background: transparent;
11332
- border: none;
11333
- border-radius: 999px;
11334
- color: inherit;
11335
- cursor: pointer;
11336
- flex-shrink: 0;
11337
- font: inherit;
11338
- line-height: 1;
11339
- margin: 0;
11340
- padding: 0;
11341
- }
11342
-
11343
- .ChatComposerAttachmentImage{
11344
- border-color: var(--vscode-charts-blue);
11345
- }
11346
-
11347
- .ChatComposerAttachmentInvalidImage{
11348
- border-color: var(--vscode-inputValidation-errorBorder, var(--vscode-errorForeground));
11349
- color: var(--vscode-errorForeground, var(--vscode-foreground));
11350
- }
11351
-
11352
- .InputInvalid{
11353
- border-color: var(--InputValidationErrorBorder, red);
11354
- }
11355
-
11356
- .ChatComposerAttachmentTextFile{
11357
- border-color: var(--vscode-charts-green, var(--WidgetBorder, white));
11358
- }
11359
-
11360
- .ChatAttachments{
11361
- display: flex;
11362
- flex-wrap: wrap;
11363
- gap: 8px;
11364
- margin-top: 8px;
11365
- }
11366
-
11367
- .ChatAttachment{
11368
- align-items: center;
11369
- display: inline-flex;
11370
- gap: 6px;
11371
- max-width: 100%;
11372
- min-width: 0;
11373
- overflow: hidden;
11374
- border-radius: 999px;
11375
- border: 1px solid var(--WidgetBorder, white);
11376
- padding: 4px 10px;
11377
- background: var(--vscode-badge-background, color-mix(in srgb, var(--vscode-editor-background) 88%, white));
11378
- color: var(--vscode-badge-foreground, var(--vscode-foreground));
11379
- font-size: 12px;
11380
- }
11381
-
11382
- .ChatAttachmentLabel{
11383
- min-width: 0;
11384
- overflow: hidden;
11385
- text-overflow: ellipsis;
11386
- white-space: nowrap;
11387
- }
11388
-
11389
- .ChatAttachmentPreview{
11390
- width: 20px;
11391
- height: 20px;
11392
- flex: none;
11393
- border-radius: 4px;
11394
- object-fit: cover;
11395
- }
11396
-
11397
- .ChatAttachmentImage{
11398
- border-color: var(--vscode-charts-blue);
11399
- }
11400
-
11401
- .ChatAttachmentInvalidImage{
11402
- border-color: var(--vscode-inputValidation-errorBorder, var(--vscode-errorForeground));
11403
- color: var(--vscode-errorForeground, var(--vscode-foreground));
11404
- }
11405
-
11406
- .ChatAttachmentTextFile{
11407
- border-color: var(--vscode-charts-green, var(--WidgetBorder, white));
11408
- }
11409
-
11410
- .ChatImageMessageContent{
11411
- padding: 6px;
11412
- border: 1px solid var(--WidgetBorder, white);
11413
- border-radius: 12px;
11414
- background: var(--vscode-editorWidget-background, var(--vscode-editor-background));
11415
- overflow: hidden;
11416
- }
11417
-
11418
- .ChatMessageImage{
11419
- display: block;
11420
- max-width: min(320px, 100%);
11421
- max-height: min(320px, calc(100vh - 220px));
11422
- border-radius: 8px;
11423
- object-fit: contain;
11424
- background: color-mix(in srgb, var(--vscode-editor-background) 88%, black);
11425
- }
11426
-
11427
- .Chat{
11428
- position: relative;
11429
- }
11430
-
11431
- .ChatComposerAttachmentPreviewOverlay{
11432
- position: absolute;
11433
- left: calc(var(--ChatSendAreaPaddingLeft) + 8px);
11434
- bottom: calc(var(--ChatSendAreaHeight) - 12px);
11435
- z-index: 6;
11436
- width: 240px;
11437
- min-width: 160px;
11438
- min-height: 160px;
11439
- max-width: calc(100% - var(--ChatSendAreaPaddingLeft) - var(--ChatSendAreaPaddingRight) - 16px);
11440
- display: flex;
11441
- align-items: center;
11442
- justify-content: center;
11443
- border: 1px solid var(--WidgetBorder, white);
11444
- border-radius: 12px;
11445
- background: var(--vscode-editorWidget-background, var(--vscode-editor-background));
11446
- box-shadow: 0 12px 28px color-mix(in srgb, var(--vscode-editor-background) 45%, black);
11447
- overflow: hidden;
11448
- }
11449
-
11450
- .ChatComposerAttachmentPreviewOverlayImage{
11451
- display: block;
11452
- width: 100%;
11453
- max-width: 100%;
11454
- max-height: min(320px, calc(100vh - 200px));
11455
- object-fit: contain;
11456
- background: color-mix(in srgb, var(--vscode-editor-background) 88%, black);
11457
- }
11458
-
11459
- .ChatComposerAttachmentPreviewOverlayError{
11460
- padding: 12px;
11461
- color: var(--vscode-errorForeground, var(--vscode-foreground));
11462
- }
11463
-
11464
- .ChatSelect{
11465
- position: relative;
11466
- min-width: 0;
11467
-
11468
- }
11469
-
11470
- .ChatModelPickerItem{
11471
- display: flex;
11472
- }
11473
-
11474
- .ChatGitBranchPickerMessage{
11475
- padding: 6px 8px;
11476
- }
11477
-
11478
- .ChatGitBranchPickerErrorMessage{
11479
- color: var(--vscode-errorForeground, var(--vscode-foreground));
11480
- }
11481
-
11482
- .RunModePickerContainer{
11483
- display: flex;
11484
- justify-content: flex-end;
11485
- }
11486
-
11487
- .ChatOverlays{
11488
- position: absolute;
11489
- inset: 0;
11490
- pointer-events: none;
11491
- }
11492
-
11493
- .ChatOverlays > *{
11494
- pointer-events: auto;
11495
- }
11496
-
11497
- .ChatViewDropOverlayActive{
11498
- background: rgba(255, 255, 255, 0.1);
11499
- }
11500
-
11501
- .RunModePickerPopOver{
11502
- height: var(--RunModePickerHeight);
11503
- overflow: hidden;
11504
- border: 1px solid var(--WidgetBorder, white);
11505
- border-radius: 8px;
11506
- background: var(--vscode-editorWidget-background, var(--vscode-editor-background));
11507
- box-shadow: 0 8px 24px color-mix(in srgb, var(--vscode-editor-background) 50%, black);
11508
- }
11509
-
11510
- .ChatToolCallFileName:hover{
11511
- color: var(--vscode-textLink-foreground);
11512
- }
11513
-
11514
- .ProjectListChevron{
11515
- display: inline-block;
11516
- flex: none;
11517
- height: 16px;
11518
- width: 16px;
11519
- }
11520
-
11521
- .ChatOrderedListItem{
11522
- align-items: flex-start;
11523
- display: flex;
11524
- gap: 8px;
11525
- }
11526
-
11527
- .ChatOrderedListMarker{
11528
- flex: none;
11529
- min-width: 1.5em;
11530
- }
11531
-
11532
- .ChatOrderedListItemContent{
11533
- flex: 1;
11534
- min-width: 0;
11535
- }
11536
-
11537
- .ChatOrderedListItemPrefix{
11538
- white-space: nowrap;
11539
- }
11540
-
11541
- .ChatToolCalls .ChatOrderedList{
11542
- list-style: none;
11543
- margin: 0;
11544
- padding: 0;
11545
- }
11546
-
11547
- .ChatToolCalls .ChatOrderedListItem{
11548
- align-items: flex-start;
11549
- display: flex;
11550
- gap: 8px;
11551
- }
11552
-
11553
- .ChatToolCalls .ChatOrderedListMarker{
11554
- flex: none;
11555
- min-width: 1.5em;
11556
- }
11557
-
11558
- .ChatToolCalls .ChatOrderedListItemContent{
11559
- flex: 1;
11560
- min-width: 0;
11561
- }
11562
-
11563
- .ChatMessages > .Message{
11564
- display: flex;
11565
- }
11566
-
11567
- .ChatMessages > .MessageUser{
11568
- justify-content: flex-end;
11569
- }
11570
-
11571
- .ChatMessages > .MessageAssistant{
11572
- justify-content: flex-start;
11573
- }
11574
-
11575
- .ChatMessages > .MessageUser .ChatAttachments{
11576
- justify-content: flex-end;
11577
- }
11578
-
11579
- .ChatFocus .ChatMessages > .Message{
11580
- inline-size: fit-content;
11581
- max-inline-size: min(100%, var(--ChatFocusContentMaxWidth));
11582
- }
11583
-
11584
- .ChatFocus .ChatMessages > .Message > .ChatMessageContent{
11585
- max-inline-size: 100%;
11586
- }
11587
- .Viewlet.Chat.ChatFocus{
11588
- display: flex !important;
11589
- min-width: 0;
11590
- flex-direction: row !important;
11591
- }
11592
-
11593
- .ChatFocus > .ProjectSidebar{
11594
- display: flex;
11595
- flex: none;
11596
- flex-direction: column;
11597
- inline-size: var(--ProjectSidebarWidth);
11598
- min-inline-size: 0;
11599
- }
11600
-
11601
- .ChatFocus > .ProjectSidebar > .ProjectList{
11602
- flex: 1;
11603
- min-height: 0;
11604
- }
11605
-
11606
- .ChatFocus > .Sash.SashVertical{
11607
- position: relative;
11608
- flex: none;
11609
- inline-size: 4px;
11610
- cursor: col-resize;
11611
- touch-action: none;
11612
- }
11613
-
11614
- .ChatFocus > .Sash.SashVertical::before{
11615
- content: '';
11616
- position: absolute;
11617
- inset: 0;
11618
- background: color-mix(in srgb, var(--vscode-sideBar-border, var(--WidgetBorder, white)) 75%, transparent);
11619
- }
11620
-
11621
- .ChatFocus > .Sash.SashVertical:hover::before{
11622
- background: var(--vscode-focusBorder, var(--vscode-button-background));
11623
- }
11624
-
11625
- .ChatFocusMainArea{
11626
- display: flex;
11627
- flex: 1;
11628
- flex-direction: column;
11629
- min-width: 0;
11630
- }
11631
-
11632
- .ChatFocusMainArea > .ChatMessages{
11633
- flex: 1;
11634
- min-height: 0;
11635
- }
11636
-
11637
- .ChatModelPickerList {
11638
- display: flex;
11639
- contain: content;
11640
- }
11641
-
11642
-
11643
- .ChatSelect:hover{
11644
- background: var(--vscode-toolbar-hoverBackground, color-mix(in srgb, var(--vscode-editor-background) 80%, white));
11645
- color: var(--vscode-foreground);
11646
- }
11647
-
11648
- .SelectLabel {
11649
- width: auto;
11650
- max-width: 100%;
11651
- min-width: 0;
11652
- overflow: hidden;
11653
- white-space: nowrap;
11654
- text-overflow: ellipsis;
11655
- }
11656
-
11657
-
11658
- .ChatSelect {
11659
- display: flex;
11660
- gap: 4px;
11661
- border: none;
11662
- border-radius: 4px;
11663
- background: transparent;
11664
- color: var(--vscode-descriptionForeground, var(--vscode-disabledForeground));
11665
- padding: 0 !important;
11666
- }
11667
-
11668
-
11669
-
11670
-
11671
-
11672
-
11673
-
11674
-
11675
-
11676
- .SelectLabel {
11677
- width: auto;
11678
- overflow: hidden;
11679
- white-space: nowrap;
11680
- text-overflow: ellipsis;
11681
-
11682
- }
11683
-
11684
-
11685
- .ChatSelect .MaskIcon {
11686
-
11687
- width: 10px;
11688
- height: 10px;
11689
- pointer-events: none;
11690
- }
11691
-
11692
-
11693
- .ChatModelPickerList {
11694
- flex-direction: column;
11695
- flex: 1;
11696
- display: flex;
11697
- contain: strict;
11698
-
11699
- }
11700
-
11701
-
11702
- .ChatModelPickerItem {
11703
- contain: strict;
11704
- flex-shrink:0; /* TODO why?? */
11705
- }
11706
-
11707
-
11708
- .ChatModelPickerHeader {
11709
- height: 40px;
11710
- contain: strict;
11711
-
11712
- }
11713
11376
 
11714
11377
 
11715
11378
  `;
@@ -12485,18 +12148,12 @@ const authContainerStyle = 'align-items:center;display:flex;gap:8px;min-width:0;
12485
12148
  const authNameStyle = 'max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;';
12486
12149
  const authButtonStyle = 'white-space:nowrap;';
12487
12150
  const getButtonLabel = (userState, isAuthenticated) => {
12488
- if (userState === 'loggingIn') {
12489
- return loggingInToBackend();
12490
- }
12491
12151
  if (userState === 'loggingOut') {
12492
12152
  return loggingOutFromBackend();
12493
12153
  }
12494
12154
  return isAuthenticated ? logout() : login();
12495
12155
  };
12496
12156
  const getButtonTitle = (userState, isAuthenticated) => {
12497
- if (userState === 'loggingIn') {
12498
- return loggingInToBackend();
12499
- }
12500
12157
  if (userState === 'loggingOut') {
12501
12158
  return loggingOutFromBackend();
12502
12159
  }
@@ -12510,7 +12167,7 @@ const getChatHeaderAuthDom = (authEnabled = false, userState = 'loggedOut', user
12510
12167
  const buttonName = isAuthenticated ? Logout : Login;
12511
12168
  const buttonLabel = getButtonLabel(userState, isAuthenticated);
12512
12169
  const buttonTitle = getButtonTitle(userState, isAuthenticated);
12513
- const isPending = userState === 'loggingIn' || userState === 'loggingOut';
12170
+ const isPending = userState === 'loggingOut';
12514
12171
  const displayName = userName || signedIn();
12515
12172
  return [{
12516
12173
  childCount: isAuthenticated ? 2 : 1,
@@ -16020,6 +15677,18 @@ const setToolEnablement = async (state, newEnabled, persist = true) => {
16020
15677
  };
16021
15678
  };
16022
15679
 
15680
+ const setUseAuthWorker = async (state, useAuthWorker, persist = true) => {
15681
+ if (persist) {
15682
+ await update({
15683
+ 'chatView.useAuthWorker': useAuthWorker
15684
+ });
15685
+ }
15686
+ return {
15687
+ ...state,
15688
+ useAuthWorker
15689
+ };
15690
+ };
15691
+
16023
15692
  const setUseChatCoordinatorWorker = async (state, useChatCoordinatorWorker, persist = true) => {
16024
15693
  if (persist) {
16025
15694
  await update({
@@ -16212,6 +15881,7 @@ const commandMap = {
16212
15881
  'Chat.setSystemPrompt': wrapCommand(setSystemPrompt),
16213
15882
  'Chat.setTodoListToolEnabled': wrapCommand(setTodoListToolEnabled),
16214
15883
  'Chat.setToolEnablement': wrapCommand(setToolEnablement),
15884
+ 'Chat.setUseAuthWorker': wrapCommand(setUseAuthWorker),
16215
15885
  'Chat.setUseChatCoordinatorWorker': wrapCommand(setUseChatCoordinatorWorker),
16216
15886
  'Chat.setUseChatMathWorker': wrapCommand(setUseChatMathWorker),
16217
15887
  'Chat.setUseChatNetworkWorkerForRequests': wrapCommand(setUseChatNetworkWorkerForRequests),
@@ -16221,6 +15891,17 @@ const commandMap = {
16221
15891
  'Chat.useMockApi': wrapCommand(useMockApi)
16222
15892
  };
16223
15893
 
15894
+ const sendMessagePortToAuthWorker = async port => {
15895
+ await sendMessagePortToAuthWorker$1(port, 0);
15896
+ };
15897
+ const initializeAuthWorker = async () => {
15898
+ const rpc = await create$4({
15899
+ commandMap: {},
15900
+ send: sendMessagePortToAuthWorker
15901
+ });
15902
+ set$d(rpc);
15903
+ };
15904
+
16224
15905
  const sendMessagePortToChatCoordinatorWorker = async port => {
16225
15906
  await sendMessagePortToChatCoordinatorWorker$1(port, 0);
16226
15907
  };
@@ -16420,7 +16101,7 @@ const listen = async () => {
16420
16101
  commandMap: commandMap
16421
16102
  });
16422
16103
  set$2(rpc);
16423
- await Promise.all([initializeChatCoordinatorWorker(), initializeChatMathWorker(), initializeChatMessageParsingWorker(), initializeChatNetworkWorker(), initializeChatStorageWorker(), initializeChatToolWorker(), initializeClipBoardWorker(), initializeOpenerWorker(), initializeIconThemeWorker(), initializeTextMeasurementWorker()]);
16104
+ await Promise.all([initializeAuthWorker(), initializeChatCoordinatorWorker(), initializeChatMathWorker(), initializeChatMessageParsingWorker(), initializeChatNetworkWorker(), initializeChatStorageWorker(), initializeChatToolWorker(), initializeClipBoardWorker(), initializeOpenerWorker(), initializeIconThemeWorker(), initializeTextMeasurementWorker(), initializeAuthWorker()]);
16424
16105
  };
16425
16106
 
16426
16107
  const main = async () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/chat-view",
3
- "version": "7.12.0",
3
+ "version": "7.15.0",
4
4
  "description": "Chat View Worker",
5
5
  "repository": {
6
6
  "type": "git",