refactor(skills): extract install error messages

This commit is contained in:
Brennan Benson
2026-08-27 00:24:02 -07:00
parent f1a3c0eb09
commit 09599d61e2
3 changed files with 82 additions and 81 deletions
@@ -32,6 +32,7 @@ import { useSkillInstallProgress } from './skill-install-progress-state'
import { translate } from '@/i18n/i18n'
import { resolveSkillShareForInstall } from './skill-warning-preview-gate'
import { useSkillInstallRisk } from './use-skill-install-risk'
import { getSkillInstallErrorMessage } from './skill-install-error-copy'
export function SkillInstallDialog({
open,
@@ -91,12 +92,7 @@ export function SkillInstallDialog({
const resolveLink = useCallback(async (value: string): Promise<void> => {
const shareId = parseSkillShareId(value)
if (!shareId) {
setError(
translate(
'auto.components.skills.install.enterShareLink',
'Enter an Orca skill share link.'
)
)
setError(getSkillInstallErrorMessage('enterShareLink'))
return
}
setBusy(true)
@@ -108,22 +104,14 @@ export function SkillInstallDialog({
setError(
operation.status === 'unconfigured'
? operation.message
: translate(
'auto.components.skills.install.shareUnavailable',
'This share is unavailable. The link may be invalid, expired, or revoked.'
)
: getSkillInstallErrorMessage('shareUnavailable')
)
return
}
setPreview({ shareId, version: operation.value.version })
} catch (cause) {
console.warn('[skills] share resolution failed:', cause)
setError(
translate(
'auto.components.skills.install.shareUnavailable',
'This share is unavailable. The link may be invalid, expired, or revoked.'
)
)
setError(getSkillInstallErrorMessage('shareUnavailable'))
} finally {
setBusy(false)
}
@@ -217,10 +205,7 @@ export function SkillInstallDialog({
if (operation.status !== 'ok') {
setError(
operation.status === 'reconnect-required'
? translate(
'auto.components.skills.install.reconnectBeforeInstalling',
'Reconnect your Orca account before installing.'
)
? getSkillInstallErrorMessage('reconnectBeforeInstalling')
: operation.message
)
return
@@ -231,12 +216,7 @@ export function SkillInstallDialog({
}
} catch (cause) {
console.warn('[skills] install failed:', cause)
setError(
translate(
'auto.components.skills.install.requestedVersionVerificationFailed',
'Installation failed before Orca could verify the requested version.'
)
)
setError(getSkillInstallErrorMessage('requestedVersionVerificationFailed'))
} finally {
installProgress.finish()
setBusy(false)
@@ -252,12 +232,7 @@ export function SkillInstallDialog({
...(environmentId === 'local' || environmentId.startsWith('ssh:') ? {} : { environmentId })
})
if (!cancelled.cancelled) {
setError(
translate(
'auto.components.skills.install.destinationAlreadyFinished',
'The destination had already finished this installation.'
)
)
setError(getSkillInstallErrorMessage('destinationAlreadyFinished'))
}
}
@@ -28,7 +28,7 @@ import {
} from './skill-managed-install-groups'
import { SkillInstallMachineSelect } from './SkillInstallMachineSelect'
import { SkillInstallManagementStatus } from './SkillInstallManagementStatus'
import { translate } from '@/i18n/i18n'
import { getSkillInstallErrorMessage } from './skill-install-error-copy'
export function SkillInstallManagementDialog({
open,
@@ -91,12 +91,7 @@ export function SkillInstallManagementDialog({
return
}
console.warn('[skills] managed install listing failed:', cause)
setError(
translate(
'auto.components.skills.install.inspectManagedFailed',
'Orca could not inspect managed installs on this machine.'
)
)
setError(getSkillInstallErrorMessage('inspectManagedFailed'))
} finally {
if (generation === loadGeneration.current) {
setBusy(false)
@@ -126,10 +121,7 @@ export function SkillInstallManagementDialog({
if (operation.status !== 'ok') {
setError(
operation.status === 'reconnect-required'
? translate(
'auto.components.skills.install.reconnectForVersionHistory',
'Reconnect your Orca account to load version history.'
)
? getSkillInstallErrorMessage('reconnectForVersionHistory')
: operation.message
)
return
@@ -141,12 +133,7 @@ export function SkillInstallManagementDialog({
return
}
console.warn('[skills] package history failed:', cause)
setError(
translate(
'auto.components.skills.install.versionHistoryUnavailable',
'Version history is unavailable for this skill.'
)
)
setError(getSkillInstallErrorMessage('versionHistoryUnavailable'))
} finally {
if (generation === detailGeneration.current) {
setBusy(false)
@@ -182,12 +169,7 @@ export function SkillInstallManagementDialog({
installedNames.has(skill.name)
)
if (selectedSkills.length === 0) {
setError(
translate(
'auto.components.skills.install.bundleSkillsMissing',
'This version does not contain any of the installed bundle skills.'
)
)
setError(getSkillInstallErrorMessage('bundleSkillsMissing'))
return
}
const operation = await window.api.skills.installBundlePackageVersion({
@@ -212,10 +194,7 @@ export function SkillInstallManagementDialog({
if (operation.status !== 'ok') {
setError(
operation.status === 'reconnect-required'
? translate(
'auto.components.skills.install.reconnectBeforeVersionChange',
'Reconnect your Orca account before changing versions.'
)
? getSkillInstallErrorMessage('reconnectBeforeVersionChange')
: operation.message
)
return
@@ -241,10 +220,7 @@ export function SkillInstallManagementDialog({
if (operation.status !== 'ok') {
setError(
operation.status === 'reconnect-required'
? translate(
'auto.components.skills.install.reconnectBeforeVersionChange',
'Reconnect your Orca account before changing versions.'
)
? getSkillInstallErrorMessage('reconnectBeforeVersionChange')
: operation.message
)
return
@@ -258,12 +234,7 @@ export function SkillInstallManagementDialog({
}
} catch (cause) {
console.warn('[skills] version installation failed:', cause)
setError(
translate(
'auto.components.skills.install.versionVerificationFailed',
'Orca could not verify the requested version.'
)
)
setError(getSkillInstallErrorMessage('versionVerificationFailed'))
} finally {
installProgress.finish()
setBusy(false)
@@ -279,12 +250,7 @@ export function SkillInstallManagementDialog({
...(environmentId === 'local' || environmentId.startsWith('ssh:') ? {} : { environmentId })
})
if (!cancelled.cancelled) {
setError(
translate(
'auto.components.skills.install.destinationAlreadyFinished',
'The destination had already finished this installation.'
)
)
setError(getSkillInstallErrorMessage('destinationAlreadyFinished'))
}
}
@@ -329,12 +295,7 @@ export function SkillInstallManagementDialog({
}
} catch (cause) {
console.warn('[skills] managed removal failed:', cause)
setError(
translate(
'auto.components.skills.install.removeFailed',
'Orca could not safely remove this skill.'
)
)
setError(getSkillInstallErrorMessage('removeFailed'))
} finally {
setBusy(false)
}
@@ -0,0 +1,65 @@
import { translate } from '@/i18n/i18n'
const ERROR_MESSAGES = {
enterShareLink: () =>
translate('auto.components.skills.install.enterShareLink', 'Enter an Orca skill share link.'),
shareUnavailable: () =>
translate(
'auto.components.skills.install.shareUnavailable',
'This share is unavailable. The link may be invalid, expired, or revoked.'
),
requestedVersionVerificationFailed: () =>
translate(
'auto.components.skills.install.requestedVersionVerificationFailed',
'Installation failed before Orca could verify the requested version.'
),
reconnectBeforeInstalling: () =>
translate(
'auto.components.skills.install.reconnectBeforeInstalling',
'Reconnect your Orca account before installing.'
),
destinationAlreadyFinished: () =>
translate(
'auto.components.skills.install.destinationAlreadyFinished',
'The destination had already finished this installation.'
),
inspectManagedFailed: () =>
translate(
'auto.components.skills.install.inspectManagedFailed',
'Orca could not inspect managed installs on this machine.'
),
reconnectForVersionHistory: () =>
translate(
'auto.components.skills.install.reconnectForVersionHistory',
'Reconnect your Orca account to load version history.'
),
versionHistoryUnavailable: () =>
translate(
'auto.components.skills.install.versionHistoryUnavailable',
'Version history is unavailable for this skill.'
),
bundleSkillsMissing: () =>
translate(
'auto.components.skills.install.bundleSkillsMissing',
'This version does not contain any of the installed bundle skills.'
),
reconnectBeforeVersionChange: () =>
translate(
'auto.components.skills.install.reconnectBeforeVersionChange',
'Reconnect your Orca account before changing versions.'
),
versionVerificationFailed: () =>
translate(
'auto.components.skills.install.versionVerificationFailed',
'Orca could not verify the requested version.'
),
removeFailed: () =>
translate(
'auto.components.skills.install.removeFailed',
'Orca could not safely remove this skill.'
)
} as const
export function getSkillInstallErrorMessage(name: keyof typeof ERROR_MESSAGES): string {
return ERROR_MESSAGES[name]()
}