diff --git a/src/main/services/extensions/runtime/ExtensionsRuntimeAdapter.ts b/src/main/services/extensions/runtime/ExtensionsRuntimeAdapter.ts index 9fb3e4ce..716236db 100644 --- a/src/main/services/extensions/runtime/ExtensionsRuntimeAdapter.ts +++ b/src/main/services/extensions/runtime/ExtensionsRuntimeAdapter.ts @@ -21,7 +21,6 @@ async function buildManagementCliEnvForBinary(binaryPath: string): Promise; diff --git a/src/main/services/extensions/runtime/mcpDiagnosticsParser.ts b/src/main/services/extensions/runtime/mcpDiagnosticsParser.ts index e35d6b7f..e43c87bf 100644 --- a/src/main/services/extensions/runtime/mcpDiagnosticsParser.ts +++ b/src/main/services/extensions/runtime/mcpDiagnosticsParser.ts @@ -48,7 +48,6 @@ function isSensitiveCliFlag(flag: string): boolean { const normalizedFlag = flag.toLowerCase().replace(/^--/, '').replace(/[-_]/g, ''); return SENSITIVE_FLAG_NAMES.has(normalizedFlag); } - function extractJsonObject(raw: string): T { const trimmed = raw.trim(); try { diff --git a/src/renderer/components/extensions/mcp/McpServerCard.tsx b/src/renderer/components/extensions/mcp/McpServerCard.tsx index 10844f74..90a34c4c 100644 --- a/src/renderer/components/extensions/mcp/McpServerCard.tsx +++ b/src/renderer/components/extensions/mcp/McpServerCard.tsx @@ -11,12 +11,12 @@ import { Button } from '@renderer/components/ui/button'; import { Tooltip, TooltipContent, TooltipTrigger } from '@renderer/components/ui/tooltip'; import { useStore } from '@renderer/store'; import { formatCompactNumber, formatRelativeTime } from '@renderer/utils/formatters'; +import { getDefaultMcpSharedScope } from '@shared/utils/mcpScopes'; import { getMcpInstallationSummaryLabel, getMcpOperationKey, sanitizeMcpServerName, } from '@shared/utils/extensionNormalizers'; -import { getDefaultMcpSharedScope } from '@shared/utils/mcpScopes'; import { Clock, Cloud, Globe, KeyRound, Lock, Monitor, Star, Tag, Wrench } from 'lucide-react'; import { Github as GithubIcon } from 'lucide-react'; diff --git a/src/renderer/components/extensions/mcp/McpServerDetailDialog.tsx b/src/renderer/components/extensions/mcp/McpServerDetailDialog.tsx index 97845c01..c96d428d 100644 --- a/src/renderer/components/extensions/mcp/McpServerDetailDialog.tsx +++ b/src/renderer/components/extensions/mcp/McpServerDetailDialog.tsx @@ -25,18 +25,18 @@ import { SelectValue, } from '@renderer/components/ui/select'; import { useStore } from '@renderer/store'; -import { - getMcpInstallationSummaryLabel, - getMcpOperationKey, - getPreferredMcpInstallationEntry, - sanitizeMcpServerName, -} from '@shared/utils/extensionNormalizers'; import { getDefaultMcpSharedScope, getMcpScopeLabel, isProjectScopedMcpScope, isSharedMcpScope, } from '@shared/utils/mcpScopes'; +import { + getMcpInstallationSummaryLabel, + getMcpOperationKey, + getPreferredMcpInstallationEntry, + sanitizeMcpServerName, +} from '@shared/utils/extensionNormalizers'; import { ExternalLink, Lock, Plus, Star, Trash2, Wrench } from 'lucide-react'; import { InstallButton } from '../common/InstallButton'; diff --git a/src/renderer/components/extensions/plugins/PluginsPanel.tsx b/src/renderer/components/extensions/plugins/PluginsPanel.tsx index 8adde28f..1f846423 100644 --- a/src/renderer/components/extensions/plugins/PluginsPanel.tsx +++ b/src/renderer/components/extensions/plugins/PluginsPanel.tsx @@ -16,8 +16,8 @@ import { SelectValue, } from '@renderer/components/ui/select'; import { useStore } from '@renderer/store'; -import { inferCapabilities, normalizeCategory } from '@shared/utils/extensionNormalizers'; import { getCliProviderExtensionCapability } from '@shared/utils/providerExtensionCapabilities'; +import { inferCapabilities, normalizeCategory } from '@shared/utils/extensionNormalizers'; import { ArrowUpDown, Filter, Puzzle, Search } from 'lucide-react'; import { useShallow } from 'zustand/react/shallow'; diff --git a/src/renderer/components/extensions/skills/SkillDetailDialog.tsx b/src/renderer/components/extensions/skills/SkillDetailDialog.tsx index 458bcce7..40df90fd 100644 --- a/src/renderer/components/extensions/skills/SkillDetailDialog.tsx +++ b/src/renderer/components/extensions/skills/SkillDetailDialog.tsx @@ -29,7 +29,7 @@ import { useShallow } from 'zustand/react/shallow'; import { resolveSkillProjectPath } from './skillProjectUtils'; -import type { SkillValidationIssue } from '@shared/types'; +import type { SkillValidationIssue } from '@shared/types/extensions'; interface SkillDetailDialogProps { skillId: string | null; diff --git a/src/renderer/components/extensions/skills/SkillEditorDialog.tsx b/src/renderer/components/extensions/skills/SkillEditorDialog.tsx index 65885733..8af5f748 100644 --- a/src/renderer/components/extensions/skills/SkillEditorDialog.tsx +++ b/src/renderer/components/extensions/skills/SkillEditorDialog.tsx @@ -41,8 +41,8 @@ import { validateSkillFolderName } from './skillValidationUtils'; import type { SkillDetail, SkillInvocationMode, - SkillReviewPreview, SkillRootKind, + SkillReviewPreview, } from '@shared/types/extensions'; type EditorMode = 'create' | 'edit'; diff --git a/src/renderer/components/extensions/skills/SkillsPanel.tsx b/src/renderer/components/extensions/skills/SkillsPanel.tsx index 9c95959d..c04b1495 100644 --- a/src/renderer/components/extensions/skills/SkillsPanel.tsx +++ b/src/renderer/components/extensions/skills/SkillsPanel.tsx @@ -127,7 +127,7 @@ function formatRuntimeAudienceLabel(providerNames: readonly string[]): string { return 'the configured runtime'; } if (providerNames.length === 1) { - return providerNames[0]; + return providerNames[0]!; } if (providerNames.length === 2) { return `${providerNames[0]} and ${providerNames[1]}`; diff --git a/test/main/services/extensions/McpInstallationStateService.test.ts b/test/main/services/extensions/McpInstallationStateService.test.ts index bafc6c34..69244398 100644 --- a/test/main/services/extensions/McpInstallationStateService.test.ts +++ b/test/main/services/extensions/McpInstallationStateService.test.ts @@ -21,14 +21,15 @@ vi.mock('@main/utils/pathDecoder', () => ({ const windowsRoot = cwd.match(/^[A-Za-z]:[\\/]/)?.[0] ?? null; const root = windowsRoot ?? '/'; const sep = windowsRoot ? '\\' : '/'; - return `${root}tmp${sep}mock-home`.replaceAll('//', '/'); + return `${root}${root.endsWith(sep) ? '' : sep}tmp${sep}mock-home`; }, getClaudeBasePath: () => { const cwd = process.cwd(); const windowsRoot = cwd.match(/^[A-Za-z]:[\\/]/)?.[0] ?? null; const root = windowsRoot ?? '/'; const sep = windowsRoot ? '\\' : '/'; - return `${root}tmp${sep}mock-home${sep}.claude`.replaceAll('//', '/'); + const mockHome = `${root}${root.endsWith(sep) ? '' : sep}tmp${sep}mock-home`; + return `${mockHome}${sep}.claude`; }, setClaudeBasePathOverride: vi.fn(), })); diff --git a/test/renderer/utils/multimodelProviderVisibility.test.ts b/test/renderer/utils/multimodelProviderVisibility.test.ts index 4ee98ca3..6202bc94 100644 --- a/test/renderer/utils/multimodelProviderVisibility.test.ts +++ b/test/renderer/utils/multimodelProviderVisibility.test.ts @@ -5,7 +5,6 @@ import { getVisibleMultimodelProviders, isMultimodelRuntimeStatus, } from '@renderer/utils/multimodelProviderVisibility'; - import type { CliInstallationStatus, CliProviderStatus } from '@shared/types'; import { createDefaultCliExtensionCapabilities } from '@shared/utils/providerExtensionCapabilities';