diff --git a/src/renderer/src/components/feature-wall/AgentCapabilitiesSetupAction.tsx b/src/renderer/src/components/feature-wall/AgentCapabilitiesSetupAction.tsx
index de000515346..596e7d706c3 100644
--- a/src/renderer/src/components/feature-wall/AgentCapabilitiesSetupAction.tsx
+++ b/src/renderer/src/components/feature-wall/AgentCapabilitiesSetupAction.tsx
@@ -132,6 +132,11 @@ type AgentCapabilitySlide = {
}
const AGENT_CAPABILITY_SETUP_ROWS: readonly AgentCapabilitySetupRow[] = [
+ {
+ id: 'orchestration',
+ title: 'Agent Orchestration',
+ icon:
+ },
{
id: 'browserUse',
title: 'Agent Browser Use',
@@ -141,11 +146,6 @@ const AGENT_CAPABILITY_SETUP_ROWS: readonly AgentCapabilitySetupRow[] = [
id: 'computerUse',
title: 'Computer Use',
icon:
- },
- {
- id: 'orchestration',
- title: 'Agent Orchestration',
- icon:
}
]
diff --git a/src/renderer/src/components/feature-wall/FeatureWallSetupChecklist.tsx b/src/renderer/src/components/feature-wall/FeatureWallSetupChecklist.tsx
index 1c4004b291b..936c1c57f5a 100644
--- a/src/renderer/src/components/feature-wall/FeatureWallSetupChecklist.tsx
+++ b/src/renderer/src/components/feature-wall/FeatureWallSetupChecklist.tsx
@@ -106,6 +106,7 @@ function SelectedStepAction(props: FeatureWallSetupChecklistProps): React.JSX.El
if (!activeStep) {
return null
}
+ const activeDone = props.progress.stepDone[activeStep.id]
if (activeStep.id === 'default-agent') {
return
}
@@ -119,6 +120,9 @@ function SelectedStepAction(props: FeatureWallSetupChecklistProps): React.JSX.El
return
}
if (activeStep.id === 'two-worktrees') {
+ if (activeDone) {
+ return null
+ }
return
}
if (activeStep.id === 'task-sources') {
diff --git a/src/renderer/src/components/feature-wall/feature-wall-setup-progress.test.ts b/src/renderer/src/components/feature-wall/feature-wall-setup-progress.test.ts
index 153fe1e29da..93863a3eadb 100644
--- a/src/renderer/src/components/feature-wall/feature-wall-setup-progress.test.ts
+++ b/src/renderer/src/components/feature-wall/feature-wall-setup-progress.test.ts
@@ -265,4 +265,18 @@ describe('getFeatureWallSetupProgress', () => {
expect(progress.stepDone['agent-capabilities']).toBe(true)
})
+
+ it('does not block agent capabilities on unavailable Computer Use access', () => {
+ const progress = getFeatureWallSetupProgress(
+ makeInput({
+ browserUseSkillInstalled: true,
+ computerUseSkillInstalled: true,
+ computerUsePermissionsReady: false,
+ computerUseUnavailable: true,
+ orchestrationSkillInstalled: true
+ })
+ )
+
+ expect(progress.stepDone['agent-capabilities']).toBe(true)
+ })
})
diff --git a/src/renderer/src/components/feature-wall/feature-wall-setup-progress.ts b/src/renderer/src/components/feature-wall/feature-wall-setup-progress.ts
index 1164231b770..930aa168905 100644
--- a/src/renderer/src/components/feature-wall/feature-wall-setup-progress.ts
+++ b/src/renderer/src/components/feature-wall/feature-wall-setup-progress.ts
@@ -18,6 +18,7 @@ export type FeatureWallSetupProgressInput = {
browserUseSkillInstalled: boolean
computerUseSkillInstalled: boolean
computerUsePermissionsReady: boolean
+ computerUseUnavailable?: boolean
orchestrationSkillInstalled: boolean
gitRepoCount: number
worktreesByRepo: Record
@@ -75,7 +76,7 @@ export function getFeatureWallSetupProgress(
const agentCapabilitiesDone =
input.browserUseSkillInstalled &&
input.computerUseSkillInstalled &&
- input.computerUsePermissionsReady &&
+ (input.computerUsePermissionsReady || input.computerUseUnavailable === true) &&
input.orchestrationSkillInstalled
const stepDone: Record = {
'default-agent':
diff --git a/src/renderer/src/components/setup-guide/use-setup-guide-progress.ts b/src/renderer/src/components/setup-guide/use-setup-guide-progress.ts
index 4169731cef3..1c21ad6788f 100644
--- a/src/renderer/src/components/setup-guide/use-setup-guide-progress.ts
+++ b/src/renderer/src/components/setup-guide/use-setup-guide-progress.ts
@@ -37,6 +37,7 @@ export function useSetupGuideProgress(
const activeRepoId = useAppStore((s) => s.activeRepoId)
const [hasSetupScript, setHasSetupScript] = useState(false)
const [computerUsePermissionsReady, setComputerUsePermissionsReady] = useState(false)
+ const [computerUseUnavailable, setComputerUseUnavailable] = useState(false)
const { installed: detectedBrowserUseSkillInstalled } = useInstalledAgentSkill(
ORCA_CLI_SKILL_NAME,
{
@@ -117,11 +118,13 @@ export function useSetupGuideProgress(
status.helperUnavailableReason === null &&
status.permissions.every((permission) => permission.status !== 'not-granted')
)
+ setComputerUseUnavailable(status?.helperUnavailableReason !== null)
}, [])
useEffect(() => {
if (!shouldRefreshCoreState || !computerUseSkillInstalled) {
setComputerUsePermissionsReady(false)
+ setComputerUseUnavailable(false)
return
}
let stale = false
@@ -163,6 +166,7 @@ export function useSetupGuideProgress(
browserUseSkillInstalled: browserUseSkillInstalled || detectedBrowserUseSkillInstalled,
computerUseSkillInstalled,
computerUsePermissionsReady,
+ computerUseUnavailable,
orchestrationSkillInstalled:
orchestrationSkillInstalled || detectedOrchestrationSkillInstalled,
gitRepoCount,
@@ -173,6 +177,7 @@ export function useSetupGuideProgress(
}),
[
browserUseSkillInstalled,
+ computerUseUnavailable,
computerUsePermissionsReady,
computerUseSkillInstalled,
detectedBrowserUseSkillInstalled,