Polish managed skill setup modal copy

This commit is contained in:
brennanb2025
2026-06-23 21:42:36 -07:00
parent 45724464ca
commit efe8111091
13 changed files with 254 additions and 116 deletions
@@ -3,46 +3,46 @@ import type { ManagedAgentSkillFallbackReason } from '../../shared/skills'
export function getManagedSkillFallbackMessage(reason: ManagedAgentSkillFallbackReason): string {
switch (reason) {
case 'target-required':
return 'Orca could not resolve the runtime that should read this skill.'
return "Orca couldn't tell which runtime should use this skill."
case 'unsupported-skill':
return 'This is not an Orca-managed agent skill.'
return "This isn't an Orca-managed skill."
case 'repair-required-runtime':
return 'The selected runtime needs repair before Orca can inspect its skills.'
return 'This runtime needs repair before Orca can inspect its skills.'
case 'remote-runtime':
return 'Remote runtimes are not updated in the background.'
return 'This skill is on a remote runtime, so Orca needs you to update it there.'
case 'wsl-runtime':
return 'WSL skill updates are manual in this version.'
return 'This skill is in WSL, so Orca needs you to update it there.'
case 'missing-install':
return 'The managed skill is not installed in the selected runtime.'
return "This skill isn't installed for this runtime yet."
case 'project-install':
return 'Project-scoped skills are not updated in the background.'
return "This skill is installed in the project, so Orca won't update it automatically."
case 'ambiguous-install':
return 'Orca found both global and project-scoped copies of this skill.'
return 'Orca found more than one copy of this skill and needs you to choose the right one.'
case 'bundled-or-plugin-install':
return 'Bundled and plugin-cache skills are not mutated by Orca.'
return "This skill comes from Orca or a plugin, so Orca won't modify it here."
case 'symlinked-global-install':
return 'Symlinked global skills are not safe for background updates yet.'
return "This global skill is symlinked, so Orca won't change it automatically."
case 'unsupported-cli-contract':
return 'This build does not include the verified skills CLI update contract.'
return "This Orca build can't verify skill updates yet."
case 'expected-hash-missing':
return 'This build does not include an expected hash for this managed skill.'
return "This Orca build can't verify the expected version of this skill."
case 'lockfile-missing':
return 'Orca could not find the global skills lockfile.'
return "Orca couldn't find the global skills lockfile needed to verify this update."
case 'lockfile-malformed':
return 'The global skills lockfile could not be parsed.'
return "Orca couldn't read the global skills lockfile needed to verify this update."
case 'lockfile-unsupported-schema':
return 'The global skills lockfile uses an unsupported schema version.'
return "The global skills lockfile uses a format Orca doesn't support yet."
case 'lock-entry-missing':
return 'The global skills lockfile does not track this skill.'
return "The global skills lockfile doesn't track this skill, so Orca can't verify the update."
case 'lock-entry-unmanaged-source':
return 'The installed skill is not tracked as Orca-managed source.'
return "This installed skill isn't tracked as Orca-managed, so Orca won't update it automatically."
case 'background-update-disabled':
return 'Automatic skill updates are turned off, so this update needs manual review.'
return 'Automatic skill updates are off, so Orca needs you to run this update.'
case 'cooldown':
return 'Orca recently tried this managed-skill check and is cooling down.'
case 'update-failed':
return 'The managed-skill update command failed.'
return 'Orca tried to update this skill automatically, but the command failed.'
case 'update-timeout':
return 'The managed-skill update command timed out.'
return 'Orca tried to update this skill automatically, but the command timed out.'
}
}
@@ -218,6 +218,13 @@ describe('AgentSkillSetupPanel', () => {
expect(buttonMarkupByLabel(html, 'Install')).toContain('disabled=""')
})
it('omits description copy when the enclosing surface already provides context', () => {
const html = renderPanel({ description: undefined, hideHeader: true })
expect(html).not.toContain('Enables agents to use Orca workflows.')
expect(buttonLabels(html)).toEqual(['Install', 'Re-check'])
})
it('opens not-installed setup with the install command for preview, copy, and terminal', async () => {
await renderInteractivePanel({ installedCommand: UPDATE_COMMAND })
@@ -16,7 +16,7 @@ type SkillPrerequisiteStatus = Awaited<ReturnType<typeof window.api.cli.getInsta
type AgentSkillSetupPanelProps = {
title: string
description: ReactNode
description?: ReactNode
command: string
installedCommand?: string
terminalTitle: string
@@ -253,7 +253,9 @@ export function AgentSkillSetupPanel({
</div>
)}
<div className={cn('max-w-none', hideHeader ? null : 'mt-3')}>
<p className="text-[13px] leading-snug text-muted-foreground">{description}</p>
{description ? (
<p className="text-[13px] leading-snug text-muted-foreground">{description}</p>
) : null}
{actionRow}
{actionHint ? <div className="mt-2">{actionHint}</div> : null}
{!installed && preInstallNotice && preInstallNoticeVisible ? (
@@ -2,7 +2,8 @@ import { beforeEach, describe, expect, it, vi } from 'vitest'
import type { ManagedAgentSkillFallback } from '../../../../shared/skills'
import {
getManagedSkillFallbackDisplayMessage,
getManagedSkillContextCopy
getManagedSkillContextCopy,
getManagedSkillContextWorkspaceCopy
} from './managed-agent-skill-dialog-copy'
import {
advanceManagedAgentSkillFallbackQueue,
@@ -52,21 +53,28 @@ beforeEach(() => {
})
describe('ManagedAgentSkillSetupDialogHost copy', () => {
it('names the agent-triggered orchestration context', () => {
expect(getManagedSkillContextCopy('agent-orchestration')).toBe(
'An agent just tried to use Orca orchestration. Orca needs the orchestration skill before agents can coordinate reliably.'
it('uses neutral orchestration context copy when no workspace is available', () => {
expect(getManagedSkillContextCopy('agent-orchestration', 'Update')).toBe(
'Orca Orchestration was used. Update the orchestration skill to enable agents to coordinate reliably.'
)
})
it('names the Linear worktree context', () => {
expect(getManagedSkillContextCopy('linear-worktree')).toBe(
'This Linear task workflow needs the Linear agent skill. Orca could not update it automatically.'
expect(getManagedSkillContextCopy('linear-worktree', 'Install')).toBe(
'A worktree was started from a Linear task. Install the Linear agent skill to enable agents to read and update Linear issues.'
)
})
it('splits workspace-aware context copy so the workspace can expose its full path', () => {
expect(getManagedSkillContextWorkspaceCopy('agent-computer-use', 'Install')).toEqual({
beforeWorkspace: 'Computer Use was used in ',
afterWorkspace: '. Install the Computer Use skill to enable agents to control apps reliably.'
})
})
it('localizes fallback reason copy in the renderer', () => {
expect(getManagedSkillFallbackDisplayMessage('remote-runtime')).toBe(
'Remote runtimes are not updated in the background.'
'This skill is on a remote runtime, so Orca needs you to update it there.'
)
})
})
@@ -8,6 +8,7 @@ import {
} from '@/hooks/useInstalledAgentSkills'
import {
getManagedSkillContextCopy,
getManagedSkillContextWorkspaceCopy,
getManagedSkillFallbackDisplayMessage
} from './managed-agent-skill-dialog-copy'
import {
@@ -32,6 +33,7 @@ import {
AGENT_SKILL_CLI_PREREQUISITE_NOTICE,
isOrcaCliAvailableOnPath
} from '@/lib/agent-skill-cli-prerequisite'
import { basename } from '@/lib/path'
import { translate } from '@/i18n/i18n'
const DISMISS_STORAGE_PREFIX = 'orca:managed-agent-skill-setup-dismissed:'
@@ -84,7 +86,11 @@ export function ManagedAgentSkillSetupDialogHost(): React.JSX.Element | null {
}
}, [enqueueFallback])
const contextCopy = active ? getManagedSkillContextCopy(active.context) : ''
const contextActionLabel =
active?.manualCommand?.kind === 'update'
? translate('auto.components.skills.ManagedAgentSkillSetupDialogHost.update', 'Update')
: translate('auto.components.skills.ManagedAgentSkillSetupDialogHost.install', 'Install')
const contextCopy = active ? getManagedSkillContextCopy(active.context, contextActionLabel) : ''
const installedCommand = useMemo(
() => (active ? buildAgentFeatureSkillUpdateCommand(active.skillName) : ''),
[active]
@@ -134,6 +140,12 @@ export function ManagedAgentSkillSetupDialogHost(): React.JSX.Element | null {
const command = active.manualCommand?.command
const loading = installedState.loading || rechecking
const workspacePath = active.request.discoveryTarget?.projectRootPath?.trim() || null
const workspaceName = workspacePath ? basename(workspacePath) || workspacePath : null
const workspaceContextCopy =
workspacePath && workspaceName
? getManagedSkillContextWorkspaceCopy(active.context, contextActionLabel)
: null
return (
<Dialog
@@ -154,10 +166,22 @@ export function ManagedAgentSkillSetupDialogHost(): React.JSX.Element | null {
'Agent skill setup needed'
)}
</DialogTitle>
<DialogDescription>{contextCopy}</DialogDescription>
<DialogDescription>
{workspaceContextCopy && workspacePath && workspaceName ? (
<>
{workspaceContextCopy.beforeWorkspace}
<span className="font-medium text-foreground" title={workspacePath}>
{workspaceName}
</span>
{workspaceContextCopy.afterWorkspace}
</>
) : (
contextCopy
)}
</DialogDescription>
</DialogHeader>
<div className="mt-4 flex items-start gap-2 text-[13px] leading-snug text-muted-foreground">
<Info className="mt-0.5 size-4 shrink-0" />
<Info className="mt-px size-4 shrink-0" />
<p>{getManagedSkillFallbackDisplayMessage(active.reason)}</p>
</div>
</div>
@@ -170,7 +194,6 @@ export function ManagedAgentSkillSetupDialogHost(): React.JSX.Element | null {
'auto.components.skills.ManagedAgentSkillSetupDialogHost.panelTitle',
'Set up managed agent skill'
)}
description={contextCopy}
command={command}
installedCommand={installedCommand}
terminalTitle={translate(
@@ -186,17 +209,7 @@ export function ManagedAgentSkillSetupDialogHost(): React.JSX.Element | null {
installed={installedState.installed}
loading={loading}
error={installedState.error}
installLabel={
active.manualCommand?.kind === 'update'
? translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.update',
'Update'
)
: translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.install',
'Install'
)
}
installLabel={contextActionLabel}
installedInstallLabel={translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.update',
'Update'
@@ -4,31 +4,99 @@ import type {
} from '../../../../shared/skills'
import { translate } from '@/i18n/i18n'
export function getManagedSkillContextCopy(context: ManagedAgentSkillContext): string {
export type ManagedSkillContextWorkspaceCopy = {
beforeWorkspace: string
afterWorkspace: string
}
export function getManagedSkillContextCopy(
context: ManagedAgentSkillContext,
actionLabel: string
): string {
switch (context) {
case 'linear-worktree':
return translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.linearWorktreeContext',
'This Linear task workflow needs the Linear agent skill. Orca could not update it automatically.'
'A worktree was started from a Linear task. {{actionLabel}} the Linear agent skill to enable agents to read and update Linear issues.',
{ actionLabel }
)
case 'agent-orchestration':
return translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.agentOrchestrationContext',
'An agent just tried to use Orca orchestration. Orca needs the orchestration skill before agents can coordinate reliably.'
'Orca Orchestration was used. {{actionLabel}} the orchestration skill to enable agents to coordinate reliably.',
{ actionLabel }
)
case 'agent-computer-use':
return translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.agentComputerUseContext',
'An agent just tried to use Computer Use. Orca needs the Computer Use skill before agents can control apps reliably.'
'Computer Use was used. {{actionLabel}} the Computer Use skill to enable agents to control apps reliably.',
{ actionLabel }
)
case 'agent-orca-cli':
return translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.agentOrcaCliContext',
"An agent just tried to use Orca's CLI skill for this workflow. Orca needs the CLI skill before this workflow can continue reliably."
'The Orca CLI skill was used. {{actionLabel}} the CLI skill to enable this workflow to continue reliably.',
{ actionLabel }
)
}
}
export function getManagedSkillContextWorkspaceCopy(
context: ManagedAgentSkillContext,
actionLabel: string
): ManagedSkillContextWorkspaceCopy {
switch (context) {
case 'linear-worktree':
return {
beforeWorkspace: translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.linearWorktreeContextBeforeWorkspace',
'A worktree was started from a Linear task in '
),
afterWorkspace: translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.linearWorktreeContextAfterWorkspace',
'. {{actionLabel}} the Linear agent skill to enable agents to read and update Linear issues.',
{ actionLabel }
)
}
case 'agent-orchestration':
return {
beforeWorkspace: translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.agentOrchestrationContextBeforeWorkspace',
'Orca Orchestration was used in '
),
afterWorkspace: translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.agentOrchestrationContextAfterWorkspace',
'. {{actionLabel}} the orchestration skill to enable agents to coordinate reliably.',
{ actionLabel }
)
}
case 'agent-computer-use':
return {
beforeWorkspace: translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.agentComputerUseContextBeforeWorkspace',
'Computer Use was used in '
),
afterWorkspace: translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.agentComputerUseContextAfterWorkspace',
'. {{actionLabel}} the Computer Use skill to enable agents to control apps reliably.',
{ actionLabel }
)
}
case 'agent-orca-cli':
return {
beforeWorkspace: translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.agentOrcaCliContextBeforeWorkspace',
'The Orca CLI skill was used in '
),
afterWorkspace: translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.agentOrcaCliContextAfterWorkspace',
'. {{actionLabel}} the CLI skill to enable this workflow to continue reliably.',
{ actionLabel }
)
}
}
}
export function getManagedSkillFallbackDisplayMessage(
reason: ManagedAgentSkillFallbackReason
): string {
@@ -36,92 +104,92 @@ export function getManagedSkillFallbackDisplayMessage(
case 'target-required':
return translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.targetRequired',
'Orca could not resolve the runtime that should read this skill.'
"Orca couldn't tell which runtime should use this skill."
)
case 'unsupported-skill':
return translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.unsupportedSkill',
'This is not an Orca-managed agent skill.'
"This isn't an Orca-managed skill."
)
case 'repair-required-runtime':
return translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.repairRequiredRuntime',
'The selected runtime needs repair before Orca can inspect its skills.'
'This runtime needs repair before Orca can inspect its skills.'
)
case 'remote-runtime':
return translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.remoteRuntime',
'Remote runtimes are not updated in the background.'
'This skill is on a remote runtime, so Orca needs you to update it there.'
)
case 'wsl-runtime':
return translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.wslRuntime',
'WSL skill updates are manual in this version.'
'This skill is in WSL, so Orca needs you to update it there.'
)
case 'missing-install':
return translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.missingInstall',
'The managed skill is not installed in the selected runtime.'
"This skill isn't installed for this runtime yet."
)
case 'project-install':
return translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.projectInstall',
'Project-scoped skills are not updated in the background.'
"This skill is installed in the project, so Orca won't update it automatically."
)
case 'ambiguous-install':
return translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.ambiguousInstall',
'Orca found both global and project-scoped copies of this skill.'
'Orca found more than one copy of this skill and needs you to choose the right one.'
)
case 'bundled-or-plugin-install':
return translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.bundledOrPluginInstall',
'Bundled and plugin-cache skills are not mutated by Orca.'
"This skill comes from Orca or a plugin, so Orca won't modify it here."
)
case 'symlinked-global-install':
return translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.symlinkedGlobalInstall',
'Symlinked global skills are not safe for background updates yet.'
"This global skill is symlinked, so Orca won't change it automatically."
)
case 'unsupported-cli-contract':
return translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.unsupportedCliContract',
'This build does not include the verified skills CLI update contract.'
"This Orca build can't verify skill updates yet."
)
case 'expected-hash-missing':
return translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.expectedHashMissing',
'This build does not include an expected hash for this managed skill.'
"This Orca build can't verify the expected version of this skill."
)
case 'lockfile-missing':
return translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.lockfileMissing',
'Orca could not find the global skills lockfile.'
"Orca couldn't find the global skills lockfile needed to verify this update."
)
case 'lockfile-malformed':
return translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.lockfileMalformed',
'The global skills lockfile could not be parsed.'
"Orca couldn't read the global skills lockfile needed to verify this update."
)
case 'lockfile-unsupported-schema':
return translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.lockfileUnsupportedSchema',
'The global skills lockfile uses an unsupported schema version.'
"The global skills lockfile uses a format Orca doesn't support yet."
)
case 'lock-entry-missing':
return translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.lockEntryMissing',
'The global skills lockfile does not track this skill.'
"The global skills lockfile doesn't track this skill, so Orca can't verify the update."
)
case 'lock-entry-unmanaged-source':
return translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.lockEntryUnmanagedSource',
'The installed skill is not tracked as Orca-managed source.'
"This installed skill isn't tracked as Orca-managed, so Orca won't update it automatically."
)
case 'background-update-disabled':
return translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.backgroundUpdateDisabled',
'Automatic skill updates are turned off, so this update needs manual review.'
'Automatic skill updates are off, so Orca needs you to run this update.'
)
case 'cooldown':
return translate(
@@ -131,12 +199,12 @@ export function getManagedSkillFallbackDisplayMessage(
case 'update-failed':
return translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.updateFailed',
'The managed-skill update command failed.'
'Orca tried to update this skill automatically, but the command failed.'
)
case 'update-timeout':
return translate(
'auto.components.skills.ManagedAgentSkillSetupDialogHost.updateTimeout',
'The managed-skill update command timed out.'
'Orca tried to update this skill automatically, but the command timed out.'
)
}
}
+33 -25
View File
@@ -153,7 +153,7 @@
"d2e43e426a": "{{value0}} must be an object.",
"fb290366b2": "Unavailable on web.",
"76122208ca": "Shortcut for \"{{value0}}\" was ignored: {{value1}}",
"remoteManagedSkillRuntime": "Remote runtimes are not updated in the background.",
"remoteManagedSkillRuntime": "This skill is on a remote runtime, so Orca needs you to update it there.",
"remoteManagedSkillCooldown": "Orca recently tried this managed-skill check and is cooling down."
}
},
@@ -3315,31 +3315,39 @@
"recheck": "Re-check",
"dontShowAgain": "Don't show again",
"notNow": "Not now",
"linearWorktreeContext": "This Linear task workflow needs the Linear agent skill. Orca could not update it automatically.",
"agentOrchestrationContext": "An agent just tried to use Orca orchestration. Orca needs the orchestration skill before agents can coordinate reliably.",
"agentComputerUseContext": "An agent just tried to use Computer Use. Orca needs the Computer Use skill before agents can control apps reliably.",
"agentOrcaCliContext": "An agent just tried to use Orca's CLI skill for this workflow. Orca needs the CLI skill before this workflow can continue reliably.",
"targetRequired": "Orca could not resolve the runtime that should read this skill.",
"unsupportedSkill": "This is not an Orca-managed agent skill.",
"repairRequiredRuntime": "The selected runtime needs repair before Orca can inspect its skills.",
"remoteRuntime": "Remote runtimes are not updated in the background.",
"wslRuntime": "WSL skill updates are manual in this version.",
"missingInstall": "The managed skill is not installed in the selected runtime.",
"projectInstall": "Project-scoped skills are not updated in the background.",
"ambiguousInstall": "Orca found both global and project-scoped copies of this skill.",
"bundledOrPluginInstall": "Bundled and plugin-cache skills are not mutated by Orca.",
"symlinkedGlobalInstall": "Symlinked global skills are not safe for background updates yet.",
"unsupportedCliContract": "This build does not include the verified skills CLI update contract.",
"expectedHashMissing": "This build does not include an expected hash for this managed skill.",
"lockfileMissing": "Orca could not find the global skills lockfile.",
"lockfileMalformed": "The global skills lockfile could not be parsed.",
"lockfileUnsupportedSchema": "The global skills lockfile uses an unsupported schema version.",
"lockEntryMissing": "The global skills lockfile does not track this skill.",
"lockEntryUnmanagedSource": "The installed skill is not tracked as Orca-managed source.",
"backgroundUpdateDisabled": "Automatic skill updates are turned off, so this update needs manual review.",
"linearWorktreeContext": "A worktree was started from a Linear task. {{actionLabel}} the Linear agent skill to enable agents to read and update Linear issues.",
"agentOrchestrationContext": "Orca Orchestration was used. {{actionLabel}} the orchestration skill to enable agents to coordinate reliably.",
"agentComputerUseContext": "Computer Use was used. {{actionLabel}} the Computer Use skill to enable agents to control apps reliably.",
"agentOrcaCliContext": "The Orca CLI skill was used. {{actionLabel}} the CLI skill to enable this workflow to continue reliably.",
"linearWorktreeContextBeforeWorkspace": "A worktree was started from a Linear task in ",
"linearWorktreeContextAfterWorkspace": ". {{actionLabel}} the Linear agent skill to enable agents to read and update Linear issues.",
"agentOrchestrationContextBeforeWorkspace": "Orca Orchestration was used in ",
"agentOrchestrationContextAfterWorkspace": ". {{actionLabel}} the orchestration skill to enable agents to coordinate reliably.",
"agentComputerUseContextBeforeWorkspace": "Computer Use was used in ",
"agentComputerUseContextAfterWorkspace": ". {{actionLabel}} the Computer Use skill to enable agents to control apps reliably.",
"agentOrcaCliContextBeforeWorkspace": "The Orca CLI skill was used in ",
"agentOrcaCliContextAfterWorkspace": ". {{actionLabel}} the CLI skill to enable this workflow to continue reliably.",
"targetRequired": "Orca couldn't tell which runtime should use this skill.",
"unsupportedSkill": "This isn't an Orca-managed skill.",
"repairRequiredRuntime": "This runtime needs repair before Orca can inspect its skills.",
"remoteRuntime": "This skill is on a remote runtime, so Orca needs you to update it there.",
"wslRuntime": "This skill is in WSL, so Orca needs you to update it there.",
"missingInstall": "This skill isn't installed for this runtime yet.",
"projectInstall": "This skill is installed in the project, so Orca won't update it automatically.",
"ambiguousInstall": "Orca found more than one copy of this skill and needs you to choose the right one.",
"bundledOrPluginInstall": "This skill comes from Orca or a plugin, so Orca won't modify it here.",
"symlinkedGlobalInstall": "This global skill is symlinked, so Orca won't change it automatically.",
"unsupportedCliContract": "This Orca build can't verify skill updates yet.",
"expectedHashMissing": "This Orca build can't verify the expected version of this skill.",
"lockfileMissing": "Orca couldn't find the global skills lockfile needed to verify this update.",
"lockfileMalformed": "Orca couldn't read the global skills lockfile needed to verify this update.",
"lockfileUnsupportedSchema": "The global skills lockfile uses a format Orca doesn't support yet.",
"lockEntryMissing": "The global skills lockfile doesn't track this skill, so Orca can't verify the update.",
"lockEntryUnmanagedSource": "This installed skill isn't tracked as Orca-managed, so Orca won't update it automatically.",
"backgroundUpdateDisabled": "Automatic skill updates are off, so Orca needs you to run this update.",
"cooldown": "Orca recently tried this managed-skill check and is cooling down.",
"updateFailed": "The managed-skill update command failed.",
"updateTimeout": "The managed-skill update command timed out."
"updateFailed": "Orca tried to update this skill automatically, but the command failed.",
"updateTimeout": "Orca tried to update this skill automatically, but the command timed out."
}
},
"sidebar": {
+13 -5
View File
@@ -3315,10 +3315,10 @@
"recheck": "Volver a comprobar",
"dontShowAgain": "No volver a mostrar",
"notNow": "Ahora no",
"linearWorktreeContext": "Este flujo de tarea de Linear necesita la habilidad de agente de Linear. Orca no pudo actualizarla automáticamente.",
"agentOrchestrationContext": "Un agente acaba de intentar usar la orquestación de Orca. Orca necesita la habilidad de orquestación para que los agentes puedan coordinarse de forma fiable.",
"agentComputerUseContext": "Un agente acaba de intentar usar Computer Use. Orca necesita la habilidad Computer Use para que los agentes puedan controlar apps de forma fiable.",
"agentOrcaCliContext": "Un agente acaba de intentar usar la habilidad de CLI de Orca para este flujo. Orca necesita la habilidad de CLI para que este flujo pueda continuar de forma fiable.",
"linearWorktreeContext": "A worktree was started from a Linear task. {{actionLabel}} the Linear agent skill to enable agents to read and update Linear issues.",
"agentOrchestrationContext": "Orca Orchestration was used. {{actionLabel}} the orchestration skill to enable agents to coordinate reliably.",
"agentComputerUseContext": "Computer Use was used. {{actionLabel}} the Computer Use skill to enable agents to control apps reliably.",
"agentOrcaCliContext": "The Orca CLI skill was used. {{actionLabel}} the CLI skill to enable this workflow to continue reliably.",
"targetRequired": "Orca no pudo resolver el entorno de ejecución que debe leer esta habilidad.",
"unsupportedSkill": "Esta no es una habilidad de agente administrada por Orca.",
"repairRequiredRuntime": "El entorno de ejecución seleccionado necesita reparación antes de que Orca pueda inspeccionar sus habilidades.",
@@ -3339,7 +3339,15 @@
"backgroundUpdateDisabled": "Las actualizaciones automáticas de habilidades están desactivadas, por lo que esta actualización necesita revisión manual.",
"cooldown": "Orca intentó recientemente esta comprobación de habilidad administrada y está esperando antes de volver a intentarlo.",
"updateFailed": "El comando de actualización de la habilidad administrada falló.",
"updateTimeout": "El comando de actualización de la habilidad administrada agotó el tiempo de espera."
"updateTimeout": "El comando de actualización de la habilidad administrada agotó el tiempo de espera.",
"linearWorktreeContextBeforeWorkspace": "A worktree was started from a Linear task in ",
"linearWorktreeContextAfterWorkspace": ". {{actionLabel}} the Linear agent skill to enable agents to read and update Linear issues.",
"agentOrchestrationContextBeforeWorkspace": "Orca Orchestration was used in ",
"agentOrchestrationContextAfterWorkspace": ". {{actionLabel}} the orchestration skill to enable agents to coordinate reliably.",
"agentComputerUseContextBeforeWorkspace": "Computer Use was used in ",
"agentComputerUseContextAfterWorkspace": ". {{actionLabel}} the Computer Use skill to enable agents to control apps reliably.",
"agentOrcaCliContextBeforeWorkspace": "The Orca CLI skill was used in ",
"agentOrcaCliContextAfterWorkspace": ". {{actionLabel}} the CLI skill to enable this workflow to continue reliably."
}
},
"sidebar": {
+13 -5
View File
@@ -3315,10 +3315,10 @@
"recheck": "再チェック",
"dontShowAgain": "今後表示しない",
"notNow": "今はしない",
"linearWorktreeContext": "この Linear タスクのワークフローには Linear エージェントスキルが必要です。Orca は自動更新できませんでした。",
"agentOrchestrationContext": "エージェントが Orca オーケストレーションを使おうとしました。エージェントが確実に連携するには、Orca にオーケストレーションスキルが必要です。",
"agentComputerUseContext": "エージェントが Computer Use を使おうとしました。エージェントがアプリを確実に操作するには、Orca に Computer Use スキルが必要です。",
"agentOrcaCliContext": "エージェントがこのワークフローで Orca の CLI スキルを使おうとしました。このワークフローを確実に続行するには、Orca に CLI スキルが必要です。",
"linearWorktreeContext": "A worktree was started from a Linear task. {{actionLabel}} the Linear agent skill to enable agents to read and update Linear issues.",
"agentOrchestrationContext": "Orca Orchestration was used. {{actionLabel}} the orchestration skill to enable agents to coordinate reliably.",
"agentComputerUseContext": "Computer Use was used. {{actionLabel}} the Computer Use skill to enable agents to control apps reliably.",
"agentOrcaCliContext": "The Orca CLI skill was used. {{actionLabel}} the CLI skill to enable this workflow to continue reliably.",
"targetRequired": "Orca はこのスキルを読み取るランタイムを解決できませんでした。",
"unsupportedSkill": "これは Orca 管理のエージェントスキルではありません。",
"repairRequiredRuntime": "Orca がスキルを検査する前に、選択したランタイムの修復が必要です。",
@@ -3339,7 +3339,15 @@
"backgroundUpdateDisabled": "スキルの自動更新がオフになっているため、この更新には手動確認が必要です。",
"cooldown": "Orca は最近この管理対象スキルのチェックを試行したため、クールダウン中です。",
"updateFailed": "管理対象スキルの更新コマンドに失敗しました。",
"updateTimeout": "管理対象スキルの更新コマンドがタイムアウトしました。"
"updateTimeout": "管理対象スキルの更新コマンドがタイムアウトしました。",
"linearWorktreeContextBeforeWorkspace": "A worktree was started from a Linear task in ",
"linearWorktreeContextAfterWorkspace": ". {{actionLabel}} the Linear agent skill to enable agents to read and update Linear issues.",
"agentOrchestrationContextBeforeWorkspace": "Orca Orchestration was used in ",
"agentOrchestrationContextAfterWorkspace": ". {{actionLabel}} the orchestration skill to enable agents to coordinate reliably.",
"agentComputerUseContextBeforeWorkspace": "Computer Use was used in ",
"agentComputerUseContextAfterWorkspace": ". {{actionLabel}} the Computer Use skill to enable agents to control apps reliably.",
"agentOrcaCliContextBeforeWorkspace": "The Orca CLI skill was used in ",
"agentOrcaCliContextAfterWorkspace": ". {{actionLabel}} the CLI skill to enable this workflow to continue reliably."
}
},
"sidebar": {
+13 -5
View File
@@ -3315,10 +3315,10 @@
"recheck": "다시 확인",
"dontShowAgain": "다시 표시하지 않기",
"notNow": "나중에",
"linearWorktreeContext": "이 Linear 작업 흐름에는 Linear 에이전트 스킬이 필요합니다. Orca가 자동으로 업데이트할 수 없습니다.",
"agentOrchestrationContext": "에이전트가 방금 Orca 오케스트레이션을 사용하려고 했습니다. 에이전트가 안정적으로 조율되려면 Orca에 오케스트레이션 스킬이 필요합니다.",
"agentComputerUseContext": "에이전트가 방금 Computer Use를 사용하려고 했습니다. 에이전트가 앱을 안정적으로 제어하려면 Orca에 Computer Use 스킬이 필요합니다.",
"agentOrcaCliContext": "에이전트가 이 흐름에서 Orca의 CLI 스킬을 사용하려고 했습니다. 이 흐름을 안정적으로 계속하려면 Orca에 CLI 스킬이 필요합니다.",
"linearWorktreeContext": "A worktree was started from a Linear task. {{actionLabel}} the Linear agent skill to enable agents to read and update Linear issues.",
"agentOrchestrationContext": "Orca Orchestration was used. {{actionLabel}} the orchestration skill to enable agents to coordinate reliably.",
"agentComputerUseContext": "Computer Use was used. {{actionLabel}} the Computer Use skill to enable agents to control apps reliably.",
"agentOrcaCliContext": "The Orca CLI skill was used. {{actionLabel}} the CLI skill to enable this workflow to continue reliably.",
"targetRequired": "Orca가 이 스킬을 읽어야 하는 런타임을 확인할 수 없습니다.",
"unsupportedSkill": "Orca가 관리하는 에이전트 스킬이 아닙니다.",
"repairRequiredRuntime": "Orca가 스킬을 검사하기 전에 선택한 런타임을 복구해야 합니다.",
@@ -3339,7 +3339,15 @@
"backgroundUpdateDisabled": "자동 스킬 업데이트가 꺼져 있어 이 업데이트는 수동 검토가 필요합니다.",
"cooldown": "Orca가 최근 이 관리형 스킬 확인을 시도했으며 현재 대기 중입니다.",
"updateFailed": "관리형 스킬 업데이트 명령이 실패했습니다.",
"updateTimeout": "관리형 스킬 업데이트 명령 시간이 초과되었습니다."
"updateTimeout": "관리형 스킬 업데이트 명령 시간이 초과되었습니다.",
"linearWorktreeContextBeforeWorkspace": "A worktree was started from a Linear task in ",
"linearWorktreeContextAfterWorkspace": ". {{actionLabel}} the Linear agent skill to enable agents to read and update Linear issues.",
"agentOrchestrationContextBeforeWorkspace": "Orca Orchestration was used in ",
"agentOrchestrationContextAfterWorkspace": ". {{actionLabel}} the orchestration skill to enable agents to coordinate reliably.",
"agentComputerUseContextBeforeWorkspace": "Computer Use was used in ",
"agentComputerUseContextAfterWorkspace": ". {{actionLabel}} the Computer Use skill to enable agents to control apps reliably.",
"agentOrcaCliContextBeforeWorkspace": "The Orca CLI skill was used in ",
"agentOrcaCliContextAfterWorkspace": ". {{actionLabel}} the CLI skill to enable this workflow to continue reliably."
}
},
"sidebar": {
+13 -5
View File
@@ -3315,10 +3315,10 @@
"recheck": "重新检查",
"dontShowAgain": "不再显示",
"notNow": "稍后",
"linearWorktreeContext": "此 Linear 任务流程需要 Linear 代理技能。Orca 无法自动更新它。",
"agentOrchestrationContext": "代理刚刚尝试使用 Orca 编排。Orca 需要编排技能,代理才能可靠地协作。",
"agentComputerUseContext": "代理刚刚尝试使用 Computer Use。Orca 需要 Computer Use 技能,代理才能可靠地控制应用。",
"agentOrcaCliContext": "代理刚刚尝试在此流程中使用 Orca 的 CLI 技能。Orca 需要 CLI 技能,此流程才能可靠地继续。",
"linearWorktreeContext": "A worktree was started from a Linear task. {{actionLabel}} the Linear agent skill to enable agents to read and update Linear issues.",
"agentOrchestrationContext": "Orca Orchestration was used. {{actionLabel}} the orchestration skill to enable agents to coordinate reliably.",
"agentComputerUseContext": "Computer Use was used. {{actionLabel}} the Computer Use skill to enable agents to control apps reliably.",
"agentOrcaCliContext": "The Orca CLI skill was used. {{actionLabel}} the CLI skill to enable this workflow to continue reliably.",
"targetRequired": "Orca 无法解析应读取此技能的运行时。",
"unsupportedSkill": "这不是 Orca 托管的代理技能。",
"repairRequiredRuntime": "所选运行时需要修复,Orca 才能检查其技能。",
@@ -3339,7 +3339,15 @@
"backgroundUpdateDisabled": "自动技能更新已关闭,因此此次更新需要手动审核。",
"cooldown": "Orca 最近已尝试此托管技能检查,正在等待重试。",
"updateFailed": "托管技能更新命令失败。",
"updateTimeout": "托管技能更新命令超时。"
"updateTimeout": "托管技能更新命令超时。",
"linearWorktreeContextBeforeWorkspace": "A worktree was started from a Linear task in ",
"linearWorktreeContextAfterWorkspace": ". {{actionLabel}} the Linear agent skill to enable agents to read and update Linear issues.",
"agentOrchestrationContextBeforeWorkspace": "Orca Orchestration was used in ",
"agentOrchestrationContextAfterWorkspace": ". {{actionLabel}} the orchestration skill to enable agents to coordinate reliably.",
"agentComputerUseContextBeforeWorkspace": "Computer Use was used in ",
"agentComputerUseContextAfterWorkspace": ". {{actionLabel}} the Computer Use skill to enable agents to control apps reliably.",
"agentOrcaCliContextBeforeWorkspace": "The Orca CLI skill was used in ",
"agentOrcaCliContextAfterWorkspace": ". {{actionLabel}} the CLI skill to enable this workflow to continue reliably."
}
},
"sidebar": {
@@ -90,7 +90,7 @@ const mockApi = {
scope: 'missing',
reason: 'remote-runtime',
uiKey: 'remote::linear-tickets:linear-worktree',
message: 'Remote runtimes are not updated in the background.',
message: 'This skill is on a remote runtime, so Orca needs you to update it there.',
request: {
skillName: 'linear-tickets',
context: 'linear-worktree',
+1 -1
View File
@@ -2341,7 +2341,7 @@ function createSkillsApi(): NonNullable<Partial<PreloadApi>['skills']> {
uiKey,
message: translate(
'auto.web.web.preload.api.remoteManagedSkillRuntime',
'Remote runtimes are not updated in the background.'
'This skill is on a remote runtime, so Orca needs you to update it there.'
),
request
} satisfies ManagedAgentSkillFallback