@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.
- package/dist/chatViewWorkerMain.js +142 -461
- package/package.json +1 -1
|
@@ -1070,7 +1070,7 @@ const createMockRpc = ({
|
|
|
1070
1070
|
};
|
|
1071
1071
|
|
|
1072
1072
|
const rpcs = Object.create(null);
|
|
1073
|
-
const set$
|
|
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$
|
|
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$
|
|
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
|
|
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
|
|
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
|
|
4658
|
-
|
|
4659
|
-
|
|
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
|
-
|
|
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 === '
|
|
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 () => {
|