@jingyi0605/codingns4dsh 0.2.1-rc.4 → 0.2.1-rc.6
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/README.en.md +4 -4
- package/README.md +5 -5
- package/data/build/dist/bootstrap/dsh-peer-host-preboot-shim.d.ts +1 -1
- package/data/build/dist/bootstrap/dsh-peer-host-preboot-shim.js +1 -1
- package/data/build/dist/client/bundle.js +1808 -221
- package/data/build/dist/client/bundle.js.map +1 -1
- package/data/build/dist/client/cli-session-config-cache.d.ts.map +1 -1
- package/data/build/dist/client/cli-session-config-cache.js +9 -3
- package/data/build/dist/client/cli-session-config-cache.js.map +1 -1
- package/data/build/dist/client/cli-slots.js +2 -2
- package/data/build/dist/client/cli-slots.js.map +1 -1
- package/data/build/dist/client/client.delegate-command.js +3 -2
- package/data/build/dist/client/client.delegate-command.js.map +1 -1
- package/data/build/dist/client/client.magpie-model-tag.js +24 -8
- package/data/build/dist/client/client.magpie-model-tag.js.map +1 -1
- package/data/build/dist/client/client.native-workspace-store.js +32 -15
- package/data/build/dist/client/client.native-workspace-store.js.map +1 -1
- package/data/build/dist/client/client.session-translation.js +25 -0
- package/data/build/dist/client/client.session-translation.js.map +1 -1
- package/data/build/dist/client/client.transport.js +266 -50
- package/data/build/dist/client/client.transport.js.map +1 -1
- package/data/build/dist/client/delegate-command.js +2 -1
- package/data/build/dist/client/delegate-command.js.map +1 -1
- package/data/build/dist/client/desktop-assistant.js +264 -48
- package/data/build/dist/client/features/cli-adapters.d.ts.map +1 -1
- package/data/build/dist/client/features/cli-adapters.js +13 -1
- package/data/build/dist/client/features/cli-adapters.js.map +1 -1
- package/data/build/dist/client/features/index.d.ts.map +1 -1
- package/data/build/dist/client/features/index.js +2 -0
- package/data/build/dist/client/features/index.js.map +1 -1
- package/data/build/dist/client/features/magpie-management-page.d.ts.map +1 -1
- package/data/build/dist/client/features/magpie-management-page.js +80 -31
- package/data/build/dist/client/features/magpie-management-page.js.map +1 -1
- package/data/build/dist/client/features/magpie-management.d.ts.map +1 -1
- package/data/build/dist/client/features/magpie-management.js +3 -2
- package/data/build/dist/client/features/magpie-management.js.map +1 -1
- package/data/build/dist/client/features/plugin-update.d.ts +3 -0
- package/data/build/dist/client/features/plugin-update.d.ts.map +1 -0
- package/data/build/dist/client/features/plugin-update.js +8 -0
- package/data/build/dist/client/features/plugin-update.js.map +1 -0
- package/data/build/dist/client/features/types.d.ts +3 -0
- package/data/build/dist/client/features/types.d.ts.map +1 -1
- package/data/build/dist/client/locale.d.ts.map +1 -1
- package/data/build/dist/client/locale.js +7 -0
- package/data/build/dist/client/locale.js.map +1 -1
- package/data/build/dist/client/locales/magpie.d.ts.map +1 -1
- package/data/build/dist/client/locales/magpie.js +60 -2
- package/data/build/dist/client/locales/magpie.js.map +1 -1
- package/data/build/dist/client/locales/panels.d.ts.map +1 -1
- package/data/build/dist/client/locales/panels.js +18 -0
- package/data/build/dist/client/locales/panels.js.map +1 -1
- package/data/build/dist/client/locales/pluginUpdate.d.ts +3 -0
- package/data/build/dist/client/locales/pluginUpdate.d.ts.map +1 -0
- package/data/build/dist/client/locales/pluginUpdate.js +131 -0
- package/data/build/dist/client/locales/pluginUpdate.js.map +1 -0
- package/data/build/dist/client/locales/usage.d.ts.map +1 -1
- package/data/build/dist/client/locales/usage.js +2 -0
- package/data/build/dist/client/locales/usage.js.map +1 -1
- package/data/build/dist/client/magpie-context-meter.d.ts +18 -0
- package/data/build/dist/client/magpie-context-meter.d.ts.map +1 -0
- package/data/build/dist/client/magpie-context-meter.js +274 -0
- package/data/build/dist/client/magpie-context-meter.js.map +1 -0
- package/data/build/dist/client/magpie-context-store.d.ts +32 -0
- package/data/build/dist/client/magpie-context-store.d.ts.map +1 -0
- package/data/build/dist/client/magpie-context-store.js +165 -0
- package/data/build/dist/client/magpie-context-store.js.map +1 -0
- package/data/build/dist/client/magpie-model-tag.d.ts +4 -2
- package/data/build/dist/client/magpie-model-tag.d.ts.map +1 -1
- package/data/build/dist/client/magpie-model-tag.js +25 -8
- package/data/build/dist/client/magpie-model-tag.js.map +1 -1
- package/data/build/dist/client/native-model-translation-menu.d.ts +1 -0
- package/data/build/dist/client/native-model-translation-menu.d.ts.map +1 -1
- package/data/build/dist/client/native-model-translation-menu.js +2 -2
- package/data/build/dist/client/native-model-translation-menu.js.map +1 -1
- package/data/build/dist/client/session-translation-chat.d.ts.map +1 -1
- package/data/build/dist/client/session-translation-chat.js +6 -2
- package/data/build/dist/client/session-translation-chat.js.map +1 -1
- package/data/build/dist/client/settings-promo-styles.d.ts +5 -0
- package/data/build/dist/client/settings-promo-styles.d.ts.map +1 -1
- package/data/build/dist/client/settings-promo-styles.js +15 -2
- package/data/build/dist/client/settings-promo-styles.js.map +1 -1
- package/data/build/dist/client/settings-promo.d.ts +4 -2
- package/data/build/dist/client/settings-promo.d.ts.map +1 -1
- package/data/build/dist/client/settings-promo.js +4 -4
- package/data/build/dist/client/settings-promo.js.map +1 -1
- package/data/build/dist/client/settings-section.d.ts +2 -3
- package/data/build/dist/client/settings-section.d.ts.map +1 -1
- package/data/build/dist/client/settings-section.js +12 -9
- package/data/build/dist/client/settings-section.js.map +1 -1
- package/data/build/dist/client/settings-update.d.ts +8 -0
- package/data/build/dist/client/settings-update.d.ts.map +1 -0
- package/data/build/dist/client/settings-update.js +57 -0
- package/data/build/dist/client/settings-update.js.map +1 -0
- package/data/build/dist/client/subscription-slot.d.ts.map +1 -1
- package/data/build/dist/client/subscription-slot.js +47 -21
- package/data/build/dist/client/subscription-slot.js.map +1 -1
- package/data/build/dist/client/update-panel-styles.d.ts +29 -0
- package/data/build/dist/client/update-panel-styles.d.ts.map +1 -0
- package/data/build/dist/client/update-panel-styles.js +69 -0
- package/data/build/dist/client/update-panel-styles.js.map +1 -0
- package/data/build/dist/client/update-panel.d.ts +7 -0
- package/data/build/dist/client/update-panel.d.ts.map +1 -0
- package/data/build/dist/client/update-panel.js +52 -0
- package/data/build/dist/client/update-panel.js.map +1 -0
- package/data/build/dist/client/update-store.d.ts +43 -0
- package/data/build/dist/client/update-store.d.ts.map +1 -0
- package/data/build/dist/client/update-store.js +207 -0
- package/data/build/dist/client/update-store.js.map +1 -0
- package/data/build/dist/dsh-capabilities/client/plugin-reload-adapter.d.ts +4 -0
- package/data/build/dist/dsh-capabilities/client/plugin-reload-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/client/plugin-reload-adapter.js +6 -0
- package/data/build/dist/dsh-capabilities/client/plugin-reload-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/client/session-performance-adapter.d.ts +15 -1
- package/data/build/dist/dsh-capabilities/client/session-performance-adapter.d.ts.map +1 -1
- package/data/build/dist/dsh-capabilities/client/session-performance-adapter.js +53 -21
- package/data/build/dist/dsh-capabilities/client/session-performance-adapter.js.map +1 -1
- package/data/build/dist/dsh-capabilities/host/plugin-update-adapter.d.ts +22 -0
- package/data/build/dist/dsh-capabilities/host/plugin-update-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/host/plugin-update-adapter.js +71 -0
- package/data/build/dist/dsh-capabilities/host/plugin-update-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/host/session-model-selection-adapter.d.ts +4 -0
- package/data/build/dist/dsh-capabilities/host/session-model-selection-adapter.d.ts.map +1 -1
- package/data/build/dist/dsh-capabilities/host/session-model-selection-adapter.js +16 -1
- package/data/build/dist/dsh-capabilities/host/session-model-selection-adapter.js.map +1 -1
- package/data/build/dist/dsh-capabilities/matrix.d.ts.map +1 -1
- package/data/build/dist/dsh-capabilities/matrix.js +16 -12
- package/data/build/dist/dsh-capabilities/matrix.js.map +1 -1
- package/data/build/dist/dsh-capabilities/routes.d.ts.map +1 -1
- package/data/build/dist/dsh-capabilities/routes.js +19 -9
- package/data/build/dist/dsh-capabilities/routes.js.map +1 -1
- package/data/build/dist/dsh-capabilities/types.d.ts +1 -1
- package/data/build/dist/dsh-capabilities/types.d.ts.map +1 -1
- package/data/build/dist/dsh-capabilities/types.js.map +1 -1
- package/data/build/dist/host/cli-adapters/dsh-message-projector.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/dsh-message-projector.js +5 -2
- package/data/build/dist/host/cli-adapters/dsh-message-projector.js.map +1 -1
- package/data/build/dist/host/cli-adapters/feature.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/feature.js +181 -29
- package/data/build/dist/host/cli-adapters/feature.js.map +1 -1
- package/data/build/dist/host/cli-adapters/magpie-context.d.ts +9 -0
- package/data/build/dist/host/cli-adapters/magpie-context.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/magpie-context.js +128 -0
- package/data/build/dist/host/cli-adapters/magpie-context.js.map +1 -0
- package/data/build/dist/host/cli-adapters/magpie-update.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/magpie-update.js +14 -4
- package/data/build/dist/host/cli-adapters/magpie-update.js.map +1 -1
- package/data/build/dist/host/cli-adapters/magpie-usage.d.ts +12 -2
- package/data/build/dist/host/cli-adapters/magpie-usage.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/magpie-usage.js +120 -51
- package/data/build/dist/host/cli-adapters/magpie-usage.js.map +1 -1
- package/data/build/dist/host/cli-adapters/registry.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/registry.js +6 -5
- package/data/build/dist/host/cli-adapters/registry.js.map +1 -1
- package/data/build/dist/host/dsh-runtime-version.d.ts.map +1 -1
- package/data/build/dist/host/dsh-runtime-version.js +4 -1
- package/data/build/dist/host/dsh-runtime-version.js.map +1 -1
- package/data/build/dist/host/features/index.d.ts.map +1 -1
- package/data/build/dist/host/features/index.js +2 -0
- package/data/build/dist/host/features/index.js.map +1 -1
- package/data/build/dist/host/features/plugin-update.d.ts +6 -0
- package/data/build/dist/host/features/plugin-update.d.ts.map +1 -0
- package/data/build/dist/host/features/plugin-update.js +45 -0
- package/data/build/dist/host/features/plugin-update.js.map +1 -0
- package/data/build/dist/host/index.d.ts.map +1 -1
- package/data/build/dist/host/index.js +31 -1
- package/data/build/dist/host/index.js.map +1 -1
- package/data/build/dist/host/native-session-bridge.d.ts +8 -0
- package/data/build/dist/host/native-session-bridge.d.ts.map +1 -1
- package/data/build/dist/host/native-session-bridge.js +43 -0
- package/data/build/dist/host/native-session-bridge.js.map +1 -1
- package/data/build/dist/host/rpc.d.ts +4 -1
- package/data/build/dist/host/rpc.d.ts.map +1 -1
- package/data/build/dist/host/rpc.js +33 -7
- package/data/build/dist/host/rpc.js.map +1 -1
- package/data/build/dist/host/session-handle-eviction.d.ts +29 -0
- package/data/build/dist/host/session-handle-eviction.d.ts.map +1 -0
- package/data/build/dist/host/session-handle-eviction.js +413 -0
- package/data/build/dist/host/session-handle-eviction.js.map +1 -0
- package/data/build/dist/host/settings.d.ts.map +1 -1
- package/data/build/dist/host/settings.js +12 -1
- package/data/build/dist/host/settings.js.map +1 -1
- package/data/build/dist/host/update/application-result.d.ts +3 -0
- package/data/build/dist/host/update/application-result.d.ts.map +1 -0
- package/data/build/dist/host/update/application-result.js +13 -0
- package/data/build/dist/host/update/application-result.js.map +1 -0
- package/data/build/dist/host/update/http.d.ts +7 -0
- package/data/build/dist/host/update/http.d.ts.map +1 -0
- package/data/build/dist/host/update/http.js +55 -0
- package/data/build/dist/host/update/http.js.map +1 -0
- package/data/build/dist/host/update/metadata.d.ts +14 -0
- package/data/build/dist/host/update/metadata.d.ts.map +1 -0
- package/data/build/dist/host/update/metadata.js +75 -0
- package/data/build/dist/host/update/metadata.js.map +1 -0
- package/data/build/dist/host/update/release-notes.d.ts +6 -0
- package/data/build/dist/host/update/release-notes.d.ts.map +1 -0
- package/data/build/dist/host/update/release-notes.js +52 -0
- package/data/build/dist/host/update/release-notes.js.map +1 -0
- package/data/build/dist/host/update/service.d.ts +25 -0
- package/data/build/dist/host/update/service.d.ts.map +1 -0
- package/data/build/dist/host/update/service.js +209 -0
- package/data/build/dist/host/update/service.js.map +1 -0
- package/data/build/dist/shared/contracts/cli-adapter.d.ts +2 -0
- package/data/build/dist/shared/contracts/cli-adapter.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/config.d.ts +17 -0
- package/data/build/dist/shared/contracts/config.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/config.js +8 -0
- package/data/build/dist/shared/contracts/config.js.map +1 -1
- package/data/build/dist/shared/contracts/errors.d.ts +2 -2
- package/data/build/dist/shared/contracts/errors.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/errors.js +1 -1
- package/data/build/dist/shared/contracts/errors.js.map +1 -1
- package/data/build/dist/shared/contracts/magpie-management.d.ts +40 -0
- package/data/build/dist/shared/contracts/magpie-management.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/plugin-update.d.ts +93 -0
- package/data/build/dist/shared/contracts/plugin-update.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/plugin-update.js +128 -0
- package/data/build/dist/shared/contracts/plugin-update.js.map +1 -0
- package/data/build/dist/shared/contracts/session-translation.d.ts +4 -0
- package/data/build/dist/shared/contracts/session-translation.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/session-translation.js +21 -0
- package/data/build/dist/shared/contracts/session-translation.js.map +1 -1
- package/data/build/dist/shared/contracts/subscription.d.ts +3 -0
- package/data/build/dist/shared/contracts/subscription.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/subscription.js.map +1 -1
- package/data/build/dist/shared/contracts/version.d.ts +7 -7
- package/data/build/dist/shared/contracts/version.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/version.js +11 -17
- package/data/build/dist/shared/contracts/version.js.map +1 -1
- package/data/build/dist/shared/index.d.ts +1 -1
- package/data/build/dist/shared/index.d.ts.map +1 -1
- package/data/build/dist/shared/index.js +1 -1
- package/data/build/dist/shared/index.js.map +1 -1
- package/package.json +4 -3
- package/profile/README.md +6 -6
- package/profile/package.json +3 -3
- package/profile/scripts/check-dsh-install.mjs +14 -1
- package/profile/version.json +2 -2
- package/scripts/check-dsh-install.mjs +14 -1
- package/version.json +2 -2
|
@@ -3,17 +3,17 @@ import { CODINGNS_MODULES_FIELD, isFeatureEnabled, isFeatureDshVersionCompatible
|
|
|
3
3
|
import { settingsModules } from './features/index.js';
|
|
4
4
|
import { dshSettingsBodyStyle, dshSettingsCardStyle, dshSettingsHeaderStyle, dshSettingsPageStyle, dshSettingsSubtitleStyle, dshSettingsSummaryDescriptionStyle, dshSettingsSummaryLabelStyle, dshSettingsSummaryStyle, dshSettingsSummaryTextStyle, dshSettingsToastStyle, dshThemeColor, } from './theme.js';
|
|
5
5
|
import { useCodingNsTranslator } from './locale.js';
|
|
6
|
-
import { CODINGNS_VERSION, DSH_COMPATIBILITY, isLegacyDshVersion } from '../shared/contracts/version.js';
|
|
6
|
+
import { CODINGNS_VERSION, DSH_COMPATIBILITY, DSH_TESTED_VERSION, isDshVersionNewerThanTested, isLegacyDshVersion } from '../shared/contracts/version.js';
|
|
7
7
|
import { useMagpieInstallRequirement } from './feature-requirement.js';
|
|
8
|
-
import {
|
|
8
|
+
import { CODINGNS_GITHUB_URL } from './settings-promo.js';
|
|
9
|
+
import { CodingNsSettingsUpdate } from './settings-update.js';
|
|
9
10
|
import { SettingsSwitch } from './settings-controls.js';
|
|
10
11
|
import { uiFontSize } from './font-scale.js';
|
|
11
12
|
/**
|
|
12
13
|
* DSH 设置页中的 Codingns4DSH 区块。
|
|
13
14
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* GitHub Star 推广条({@link CodingNsSettingsPromo}),属于纯展示内容。
|
|
15
|
+
* Module cards come from the registry. The header combines the existing brand
|
|
16
|
+
* banner with a version disclosure for update details.
|
|
17
17
|
*/
|
|
18
18
|
export function CodingNsSettingsSection({ settings, registry, services, restartStates = {} }) {
|
|
19
19
|
// useSyncExternalStore 要求 subscribe/getSnapshot 保持稳定引用,否则 React
|
|
@@ -33,7 +33,10 @@ export function CodingNsSettingsSection({ settings, registry, services, restartS
|
|
|
33
33
|
role: toast.kind === 'error' ? 'alert' : 'status',
|
|
34
34
|
'aria-live': 'polite',
|
|
35
35
|
style: { ...dshSettingsToastStyle, borderColor: toast.kind === 'error' ? dshThemeColor.error : toast.kind === 'success' ? dshThemeColor.success : dshThemeColor.border },
|
|
36
|
-
}, toast.message), createElement(
|
|
36
|
+
}, toast.message), createElement(CodingNsSettingsUpdate, { services }), isDshVersionNewerThanTested(services.dshVersion) ? createElement('div', {
|
|
37
|
+
role: 'status',
|
|
38
|
+
style: { padding: '10px 12px', border: `1px solid ${dshThemeColor.warning}`, borderRadius: 6, background: dshThemeColor.surfaceSubtle },
|
|
39
|
+
}, t('settings.untestedDshWarning', { version: services.dshVersion, tested: DSH_TESTED_VERSION })) : null,
|
|
37
40
|
// 标题交给 DSH 设置页自己的导航项;这里只保留一句作用域说明,避免同一页出现两级标题。
|
|
38
41
|
createElement('header', { style: dshSettingsHeaderStyle }, createElement('p', { style: dshSettingsSubtitleStyle }, t('settings.subtitle'))), createElement('div', { style: { display: 'flex', flexDirection: 'column', gap: 12 } }, settingsModules(registry).map((entry) => createElement(FeatureCard, {
|
|
39
42
|
key: entry.module.descriptor.name,
|
|
@@ -42,7 +45,7 @@ export function CodingNsSettingsSection({ settings, registry, services, restartS
|
|
|
42
45
|
services,
|
|
43
46
|
restartStates,
|
|
44
47
|
notify,
|
|
45
|
-
}))), createElement('details', { style: { alignSelf: 'center', display: 'flex', flexDirection: 'column-reverse', alignItems: 'center', marginTop: 4, color: dshThemeColor.labelTertiary, textAlign: 'center', fontSize: uiFontSize(12), lineHeight: 1.5 } }, createElement('summary', { style: { cursor: 'pointer', color: dshThemeColor.labelSecondary, listStylePosition: 'inside' } }, t('settings.version', { version: CODINGNS_VERSION })), createElement('div', { style: { display: 'flex', flexDirection: 'column', gap: 4, alignItems: 'center', maxWidth: 'min(100%, 560px)', marginBottom: 8, padding: '8px 12px', border: `1px solid ${dshThemeColor.border}`, borderRadius: 6, background: dshThemeColor.surfaceSubtle } }, createElement('div', undefined, t('settings.compatibility', { range: DSH_COMPATIBILITY })), createElement('a', { href: CODINGNS_GITHUB_URL, target: '_blank', rel: 'noreferrer', style: { color: dshThemeColor.accent, overflowWrap: 'anywhere' } }, CODINGNS_GITHUB_URL))));
|
|
48
|
+
}))), createElement('details', { style: { alignSelf: 'center', display: 'flex', flexDirection: 'column-reverse', alignItems: 'center', marginTop: 4, color: dshThemeColor.labelTertiary, textAlign: 'center', fontSize: uiFontSize(12), lineHeight: 1.5 } }, createElement('summary', { style: { cursor: 'pointer', color: dshThemeColor.labelSecondary, listStylePosition: 'inside' } }, t('settings.version', { version: CODINGNS_VERSION })), createElement('div', { style: { display: 'flex', flexDirection: 'column', gap: 4, alignItems: 'center', maxWidth: 'min(100%, 560px)', marginBottom: 8, padding: '8px 12px', border: `1px solid ${dshThemeColor.border}`, borderRadius: 6, background: dshThemeColor.surfaceSubtle } }, createElement('div', undefined, t('settings.compatibility', { range: DSH_COMPATIBILITY })), createElement('div', undefined, t('settings.testedDshVersion', { version: DSH_TESTED_VERSION })), createElement('a', { href: CODINGNS_GITHUB_URL, target: '_blank', rel: 'noreferrer', style: { color: dshThemeColor.accent, overflowWrap: 'anywhere' } }, CODINGNS_GITHUB_URL))));
|
|
46
49
|
}
|
|
47
50
|
/** 稳定引用包装:设置页只依赖内部 Store 契约,不感知 DSH 侧实现。 */
|
|
48
51
|
function settingsSnapshotHandle(settings) {
|
|
@@ -68,7 +71,7 @@ function FeatureCard({ entry, snapshot, services, restartStates, notify }) {
|
|
|
68
71
|
const needsRequirement = ui.requirementKey !== undefined;
|
|
69
72
|
const installedRequirement = useMagpieInstallRequirement(needsRequirement ? services : null);
|
|
70
73
|
const requirement = needsRequirement ? installedRequirement : null;
|
|
71
|
-
const requirementBlocked = requirement !== null && requirement.state
|
|
74
|
+
const requirementBlocked = !enabled && requirement !== null && requirement.state !== 'ready';
|
|
72
75
|
// 常驻模块不提供关闭入口;设置未就绪、只读或本机缺少依赖时也不允许切换。
|
|
73
76
|
const switchDisabled = temporarilyDisabled || ui.alwaysEnabled === true || !versionCompatible
|
|
74
77
|
|| snapshot.status === 'loading' || !snapshot.writable || requirementBlocked;
|
|
@@ -139,7 +142,7 @@ function FeatureCard({ entry, snapshot, services, restartStates, notify }) {
|
|
|
139
142
|
role: requirement.state === 'missing' ? 'alert' : 'status',
|
|
140
143
|
'data-codingns-requirement': requirement.state,
|
|
141
144
|
style: { marginBottom: 10, color: requirement.state === 'missing' ? dshThemeColor.error : dshThemeColor.labelSecondary },
|
|
142
|
-
}, t(requirement.state === 'missing' ? requirement.requirementKey : requirement.checkingKey)), !hasOpened || panel === undefined ? null : createElement(panel, { services, enabled, snapshot, notify })));
|
|
145
|
+
}, t(requirement.state === 'missing' ? requirement.requirementKey : requirement.checkingKey)), !hasOpened || panel === undefined ? null : createElement(panel, { services, enabled, snapshot, notify, requirement })));
|
|
143
146
|
}
|
|
144
147
|
/** 标题栏开关:真实 checkbox 语义,点击不会连带折叠卡片。 */
|
|
145
148
|
function FeatureSwitch({ label, checked, disabled, onChange }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-section.js","sourceRoot":"","sources":["../../../../src/client/settings-section.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;AAQzF,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,6BAA6B,GAG9B,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,eAAe,EAA+B,MAAM,qBAAqB,CAAA;AAElF,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,kCAAkC,EAClC,4BAA4B,EAC5B,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,EACrB,aAAa,GACd,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"settings-section.js","sourceRoot":"","sources":["../../../../src/client/settings-section.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
2
|
+
import type { CodingNsClientServices } from './features/types.js';
|
|
3
|
+
import { type PluginUpdateSnapshot } from './update-store.js';
|
|
4
|
+
export declare function hasNewerPluginVersion(snapshot: PluginUpdateSnapshot): boolean;
|
|
5
|
+
export declare function CodingNsSettingsUpdate({ services }: {
|
|
6
|
+
readonly services: CodingNsClientServices;
|
|
7
|
+
}): ReactElement;
|
|
8
|
+
//# sourceMappingURL=settings-update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-update.d.ts","sourceRoot":"","sources":["../../../../src/client/settings-update.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAOjE,OAAO,EAAoD,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAE/G,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,OAAO,CAM7E;AAED,wBAAgB,sBAAsB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAA;CAAE,GAAG,YAAY,CA2ChH"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { createElement as h, useEffect, useId, useMemo, useState, useSyncExternalStore } from 'react';
|
|
2
|
+
import { useCodingNsTranslator } from './locale.js';
|
|
3
|
+
import { CODINGNS_VERSION } from '../shared/contracts/version.js';
|
|
4
|
+
import { compareSemver, isSemver } from '../shared/contracts/plugin-update.js';
|
|
5
|
+
import { CodingNsSettingsPromo } from './settings-promo.js';
|
|
6
|
+
import { settingsPromoClass } from './settings-promo-styles.js';
|
|
7
|
+
import { PluginUpdatePanel } from './update-panel.js';
|
|
8
|
+
import { DEFAULT_PLUGIN_UPDATE_CHANNEL, PluginUpdateStore } from './update-store.js';
|
|
9
|
+
export function hasNewerPluginVersion(snapshot) {
|
|
10
|
+
const target = snapshot.check?.target;
|
|
11
|
+
if (!target)
|
|
12
|
+
return false;
|
|
13
|
+
return [CODINGNS_VERSION, snapshot.runtime?.runningHostVersion, snapshot.runtime?.installedVersion]
|
|
14
|
+
.filter((version) => typeof version === 'string' && isSemver(version))
|
|
15
|
+
.every(version => compareSemver(target.version, version) > 0);
|
|
16
|
+
}
|
|
17
|
+
export function CodingNsSettingsUpdate({ services }) {
|
|
18
|
+
const t = useCodingNsTranslator(services.locale);
|
|
19
|
+
const store = useMemo(() => new PluginUpdateStore(services.rpc), [services.rpc]);
|
|
20
|
+
const snapshot = useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot);
|
|
21
|
+
const [open, setOpen] = useState(false);
|
|
22
|
+
const [hasOpened, setHasOpened] = useState(false);
|
|
23
|
+
const detailsId = useId();
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
void store.loadRuntime();
|
|
26
|
+
void store.recover();
|
|
27
|
+
let checked = false;
|
|
28
|
+
const visibility = () => {
|
|
29
|
+
const visible = typeof document === 'undefined' || document.visibilityState !== 'hidden';
|
|
30
|
+
store.setVisible(visible);
|
|
31
|
+
if (visible && !checked) {
|
|
32
|
+
checked = true;
|
|
33
|
+
void store.check({ kind: DEFAULT_PLUGIN_UPDATE_CHANNEL });
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
visibility();
|
|
37
|
+
if (typeof document !== 'undefined')
|
|
38
|
+
document.addEventListener('visibilitychange', visibility);
|
|
39
|
+
return () => {
|
|
40
|
+
if (typeof document !== 'undefined')
|
|
41
|
+
document.removeEventListener('visibilitychange', visibility);
|
|
42
|
+
store.dispose();
|
|
43
|
+
};
|
|
44
|
+
}, [store]);
|
|
45
|
+
const versionControl = h('div', { className: settingsPromoClass.versionControl }, h('button', {
|
|
46
|
+
type: 'button', className: settingsPromoClass.version,
|
|
47
|
+
'aria-expanded': open, 'aria-controls': detailsId,
|
|
48
|
+
title: t('update.toggleDetails'),
|
|
49
|
+
onClick: () => { setOpen(!open); setHasOpened(true); },
|
|
50
|
+
}, t('settings.promo.version', { version: CODINGNS_VERSION })), h('span', { className: settingsPromoClass.badgeSlot }, hasNewerPluginVersion(snapshot) ? h('span', {
|
|
51
|
+
className: settingsPromoClass.badge, role: 'status',
|
|
52
|
+
title: t('update.newVersion', { version: snapshot.check.target.version }),
|
|
53
|
+
'aria-label': t('update.newVersion', { version: snapshot.check.target.version }),
|
|
54
|
+
}, t('update.newVersionBadge')) : null));
|
|
55
|
+
return h(CodingNsSettingsPromo, { locale: services.locale, versionControl }, h('div', { id: detailsId, hidden: !open, className: settingsPromoClass.details }, hasOpened ? h(PluginUpdatePanel, { services, enabled: true, store }) : null));
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=settings-update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-update.js","sourceRoot":"","sources":["../../../../src/client/settings-update.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription-slot.d.ts","sourceRoot":"","sources":["../../../../src/client/subscription-slot.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAA;AAG9E,OAAO,KAAK,EAA6G,uBAAuB,EAAmH,oBAAoB,EAAsD,MAAM,qCAAqC,CAAA;AAGxX,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAE5D,OAAO,EAAoD,KAAK,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAoB5H,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGrD,OAAO,QAAQ,kCAAkC,CAAC;IAChD,UAAU,oBAAoB;QAC5B,SAAS,EAAE,MAAM,CAAA;KAClB;CACF;AAED,KAAK,eAAe,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,QAAQ,KAAK,QAAQ,CAAA;AAE7F,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAA;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,CAAA;IACrC,oCAAoC;IACpC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,MAAM,CAAA;IAC9C,6CAA6C;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAA;CACjC;AAeD;;;GAGG;AACH,KAAK,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AASvG,sCAAsC;AACtC,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAG/I;AAoBD,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAMtK;AAED;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,mlBAAmlB,CAAA;AAW3nB,sCAAsC;AACtC,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,iBAAiB,EAAE,sBAAsB,CAAC,EAAE,MAAM,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,MAAM,IAAI,CAehK;AAED,iBAAS,2BAA2B,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"subscription-slot.d.ts","sourceRoot":"","sources":["../../../../src/client/subscription-slot.ts"],"names":[],"mappings":"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"}
|
|
@@ -133,6 +133,8 @@ function CommandCodeSubscriptionSlot(props) {
|
|
|
133
133
|
const [resetPending, setResetPending] = useState(false);
|
|
134
134
|
const [resetResult, setResetResult] = useState(null);
|
|
135
135
|
const [resetError, setResetError] = useState(null);
|
|
136
|
+
const sessionRef = useRef(undefined);
|
|
137
|
+
const routeKeyRef = useRef(null);
|
|
136
138
|
// Agent-native session bindings are written by Host during a turn. Refresh
|
|
137
139
|
// at turn state changes so a snapshot loaded before the binding is not kept.
|
|
138
140
|
const modelSelectionRevision = props.useSession?.((value) => JSON.stringify([value.modelSelection, value.running]));
|
|
@@ -191,6 +193,8 @@ function CommandCodeSubscriptionSlot(props) {
|
|
|
191
193
|
useEffect(() => {
|
|
192
194
|
const sessionId = props.sessionId?.trim();
|
|
193
195
|
if (!sessionId) {
|
|
196
|
+
sessionRef.current = undefined;
|
|
197
|
+
routeKeyRef.current = null;
|
|
194
198
|
setEligible(false);
|
|
195
199
|
setSnapshot(null);
|
|
196
200
|
setAdapterId(null);
|
|
@@ -207,18 +211,23 @@ function CommandCodeSubscriptionSlot(props) {
|
|
|
207
211
|
// 未解析的 Magpie 配额必须快速补读:官方余额一旦抢先显示,用户要等到下一次
|
|
208
212
|
// 轮询(默认 5 分钟)或整页刷新才会切到 Magpie。
|
|
209
213
|
let upstreamUnresolved = false;
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
214
|
+
if (sessionRef.current !== sessionId) {
|
|
215
|
+
sessionRef.current = sessionId;
|
|
216
|
+
routeKeyRef.current = null;
|
|
217
|
+
setEligible(false);
|
|
218
|
+
setSnapshot(null);
|
|
219
|
+
setAdapterId(null);
|
|
220
|
+
setProviderId(null);
|
|
221
|
+
setOpen(false);
|
|
222
|
+
setResetOpen(false);
|
|
223
|
+
setResetPending(false);
|
|
224
|
+
setResetResult(null);
|
|
225
|
+
setResetError(null);
|
|
226
|
+
setMagpieTab('usage');
|
|
227
|
+
}
|
|
220
228
|
const refresh = async (signal) => {
|
|
221
229
|
let routeSignal;
|
|
230
|
+
let routeChanged = false;
|
|
222
231
|
setLoading(true);
|
|
223
232
|
try {
|
|
224
233
|
// 订阅入口必须读取当前会话的真实 Provider;模型选择器切换后不能复用
|
|
@@ -236,6 +245,16 @@ function CommandCodeSubscriptionSlot(props) {
|
|
|
236
245
|
}
|
|
237
246
|
if (signal.aborted)
|
|
238
247
|
return false;
|
|
248
|
+
const cacheKey = JSON.stringify([adapterId, selection.providerId ?? '', selection.modelId ?? '', sessionId, selection.providerSessionId ?? '']);
|
|
249
|
+
routeChanged = routeKeyRef.current !== cacheKey;
|
|
250
|
+
if (routeChanged) {
|
|
251
|
+
routeKeyRef.current = cacheKey;
|
|
252
|
+
if (active) {
|
|
253
|
+
setSnapshot(null);
|
|
254
|
+
setOpen(false);
|
|
255
|
+
setMagpieTab('usage');
|
|
256
|
+
}
|
|
257
|
+
}
|
|
239
258
|
if (active) {
|
|
240
259
|
setEligible(true);
|
|
241
260
|
setAdapterId(adapterId);
|
|
@@ -245,8 +264,7 @@ function CommandCodeSubscriptionSlot(props) {
|
|
|
245
264
|
// 模型也是读取键的一部分:Antigravity 的 Gemini 与 Claude/GPT 是两个独立配额组。
|
|
246
265
|
// 会话 ID 同时承担 PeerHost 的路由身份;缓存也必须按会话隔离,
|
|
247
266
|
// 否则本机与远端使用相同 Agent/Provider/模型时会互相复用上游结果。
|
|
248
|
-
const
|
|
249
|
-
const magpieSnapshot = snapshotRef.current?.magpie;
|
|
267
|
+
const magpieSnapshot = routeChanged ? undefined : snapshotRef.current?.magpie;
|
|
250
268
|
const includeRoute = magpieSnapshot !== null && magpieSnapshot !== undefined
|
|
251
269
|
&& (openRef.current || shouldResolveMagpieQuota(magpieSnapshot));
|
|
252
270
|
const cached = subscriptionUsageCache.get(cacheKey);
|
|
@@ -280,8 +298,12 @@ function CommandCodeSubscriptionSlot(props) {
|
|
|
280
298
|
if (signal.aborted || routeSignal?.aborted === true)
|
|
281
299
|
return false;
|
|
282
300
|
if (active) {
|
|
283
|
-
|
|
284
|
-
|
|
301
|
+
// A temporary Host/Web failure must not make the compact entry
|
|
302
|
+
// disappear. A later poll will replace the retained snapshot.
|
|
303
|
+
if (routeChanged || snapshotRef.current === null) {
|
|
304
|
+
setEligible(false);
|
|
305
|
+
setSnapshot(null);
|
|
306
|
+
}
|
|
285
307
|
}
|
|
286
308
|
return false;
|
|
287
309
|
}
|
|
@@ -533,7 +555,7 @@ function MagpieUsagePopover({ rpc, usage, t, tab = 'usage', onTabChange = () =>
|
|
|
533
555
|
function MagpieUsagePanel({ usage, aggregateRows, sessionRows, t }) {
|
|
534
556
|
return createElement('div', undefined, createElement('section', { style: magpieUsageSectionStyle }, createElement('strong', { style: magpieSectionTitleStyle }, t('usage.magpieAggregateTitle')), usage.usageStatus === 'available'
|
|
535
557
|
? createMagpieRows(aggregateRows)
|
|
536
|
-
: createElement('div', { style: magpieMutedTextStyle }, t('usage.magpieUsageUnavailable'))), createElement('section', { style: magpieUsageSectionStyle }, createElement('strong', { style: magpieSectionTitleStyle }, t('usage.magpieSessionTitle')), usage.sessionId !== null && createElement('div', { style: magpieSessionIdentityStyle }, createElement('span',
|
|
558
|
+
: createElement('div', { style: magpieMutedTextStyle }, t('usage.magpieUsageUnavailable'))), createElement('section', { style: magpieUsageSectionStyle }, createElement('strong', { style: magpieSectionTitleStyle }, t(usage.sessionPeriod === 'today' ? 'usage.magpieSessionTodayTitle' : 'usage.magpieSessionTitle')), usage.sessionId !== null && createElement('div', { style: magpieSessionIdentityStyle }, createElement('div', { style: magpieSessionNameRowStyle }, createElement('span', { style: { flex: 'none' } }, t('usage.magpieAgent', { agent: usage.agent })), usage.sessionName !== undefined && createElement('strong', { style: magpieSessionNameStyle, title: usage.sessionName }, usage.sessionName)), createElement('code', { style: magpieSessionIdStyle }, usage.sessionId)), usage.session === null
|
|
537
559
|
? createElement('div', { style: magpieMutedTextStyle }, usage.sessionId === null ? t('usage.magpieSessionIdUnavailable') : t('usage.magpieSessionNoUsage'))
|
|
538
560
|
: createMagpieRows(sessionRows)));
|
|
539
561
|
}
|
|
@@ -764,10 +786,10 @@ export function MagpieRouteRequests({ rpc, sessionId, sessionName, agent, t, req
|
|
|
764
786
|
function canReadMagpieSessionRequests(sessionId, agent) {
|
|
765
787
|
return sessionId !== null && sessionId.trim() !== '' && sessionId.length <= 512 && /^[a-z0-9][a-z0-9-]*$/u.test(agent);
|
|
766
788
|
}
|
|
767
|
-
/**
|
|
789
|
+
/** Include every date in the selected session's paginated request history. */
|
|
768
790
|
async function readMagpieSessionRequestPage(rpc, sessionId, agent, offset, signal) {
|
|
769
791
|
const result = await callCodingNsRpcResult(rpc, 'magpie/usage/requests', {
|
|
770
|
-
period: '
|
|
792
|
+
period: 'all',
|
|
771
793
|
offset,
|
|
772
794
|
limit: MAGPIE_REQUESTS_PAGE_SIZE,
|
|
773
795
|
sessionId,
|
|
@@ -787,6 +809,7 @@ async function readMagpieSessionRequestPage(rpc, sessionId, agent, offset, signa
|
|
|
787
809
|
* 不再维护一套重复的请求卡片渲染。
|
|
788
810
|
*/
|
|
789
811
|
function MagpieSessionRequestsDialog({ sessionId, sessionName, agent, page, offset, loading, error, t, onClose, dialogRef, onOffsetChange, onRetry }) {
|
|
812
|
+
const displaySessionName = sessionName ?? page?.sessionName ?? null;
|
|
790
813
|
const dialog = createElement('div', {
|
|
791
814
|
className: 'codingns4dsh-magpie-requests-overlay',
|
|
792
815
|
ref: dialogRef,
|
|
@@ -819,7 +842,7 @@ function MagpieSessionRequestsDialog({ sessionId, sessionName, agent, page, offs
|
|
|
819
842
|
page,
|
|
820
843
|
loading,
|
|
821
844
|
error,
|
|
822
|
-
selectedSession: { id: sessionId, agent, ...(
|
|
845
|
+
selectedSession: { id: sessionId, agent, ...(displaySessionName === null ? {} : { dshSessionName: displaySessionName }) },
|
|
823
846
|
offset,
|
|
824
847
|
onOffsetChange,
|
|
825
848
|
onClearSession: null,
|
|
@@ -1251,6 +1274,8 @@ const MAGPIE_QUOTA_RETRY_MS = 3_000;
|
|
|
1251
1274
|
function shouldResolveMagpieQuota(usage) {
|
|
1252
1275
|
if (usage === null || usage === undefined)
|
|
1253
1276
|
return false;
|
|
1277
|
+
if (usage.session === null)
|
|
1278
|
+
return true;
|
|
1254
1279
|
if (usage.quotaStatus !== 'available')
|
|
1255
1280
|
return usage.upstreamProvider === null;
|
|
1256
1281
|
return usage.sessionId !== null && usage.session !== null && (usage.quotas?.length ?? 0) === 0;
|
|
@@ -1457,9 +1482,10 @@ const magpieStatsGridStyle = { display: 'grid', gridTemplateColumns: 'repeat(3,
|
|
|
1457
1482
|
const magpieStatStyle = { display: 'grid', alignContent: 'space-between', gap: 1, minWidth: 0, minHeight: 40, boxSizing: 'border-box', padding: '5px 7px', borderRadius: 8, background: dshThemeColor.surfaceSubtle };
|
|
1458
1483
|
const magpieStatLabelStyle = { minWidth: 0, color: dshThemeColor.labelTertiary, fontSize: uiFontSize(10), lineHeight: '13px', overflowWrap: 'anywhere' };
|
|
1459
1484
|
const magpieRowValueStyle = { color: dshThemeColor.labelPrimary, fontSize: uiFontSize(14), fontWeight: 650, lineHeight: '18px', textAlign: 'right', overflowWrap: 'anywhere' };
|
|
1460
|
-
const magpieSessionIdentityStyle = { display: '
|
|
1461
|
-
const
|
|
1462
|
-
const
|
|
1485
|
+
const magpieSessionIdentityStyle = { display: 'grid', gap: 2, minWidth: 0, color: dshThemeColor.labelSecondary, fontSize: uiFontSize(12), lineHeight: '16px' };
|
|
1486
|
+
const magpieSessionNameRowStyle = { display: 'flex', alignItems: 'baseline', gap: 10, minWidth: 0 };
|
|
1487
|
+
const magpieSessionNameStyle = { minWidth: 0, maxWidth: '100%', overflow: 'hidden', color: dshThemeColor.labelPrimary, fontSize: uiFontSize(12), fontWeight: 650, textOverflow: 'ellipsis', whiteSpace: 'nowrap' };
|
|
1488
|
+
const magpieSessionIdStyle = { minWidth: 0, color: dshThemeColor.labelTertiary, fontSize: uiFontSize(10), lineHeight: '14px', whiteSpace: 'normal', overflowWrap: 'anywhere' };
|
|
1463
1489
|
const magpieAttemptsStyle = { display: 'grid', gap: 5, paddingTop: 6 };
|
|
1464
1490
|
const magpieAttemptRowStyle = { display: 'flex', justifyContent: 'space-between', gap: 14, fontSize: uiFontSize(12) };
|
|
1465
1491
|
const magpieAttemptModelStyle = { color: dshThemeColor.labelSecondary, overflowWrap: 'anywhere' };
|