@@ -17,7 +17,10 @@ import {
1717} from '../../primitives/index.js' ;
1818import { Colors , Icons } from '../../styles.js' ;
1919import { ServiceHealthList } from '../../components/ServiceHealthList.js' ;
20- import { getBlockingServiceKeys } from '../../../../lib/health-checks/readiness.js' ;
20+ import {
21+ getBlockingServiceKeys ,
22+ SIGNUP_WIZARD_READINESS_CONFIG ,
23+ } from '../../../../lib/health-checks/readiness.js' ;
2124import { ServiceHealthStatus } from '../../../../lib/health-checks/types.js' ;
2225import { wizardAbort } from '../../../../utils/wizard-abort.js' ;
2326import { fetchSkillMenu , downloadSkill } from '../../../../lib/wizard-tools.js' ;
@@ -86,22 +89,41 @@ export const HealthCheckScreen = ({ store }: HealthCheckScreenProps) => {
8689 ) ;
8790 }
8891
89- // Healthy or warnings — isComplete returns true, router skips past.
90- // This branch only renders for a single frame before advancing.
91- const blockingKeys = getBlockingServiceKeys ( result . health ) ;
92- if ( blockingKeys . length === 0 ) return null ;
92+ const isSignup = store . session . signup ;
93+ const blockingKeys = getBlockingServiceKeys (
94+ result . health ,
95+ isSignup ? SIGNUP_WIZARD_READINESS_CONFIG : undefined ,
96+ ) ;
9397
94- const isGithubReleasesDown = blockingKeys . includes ( 'githubReleases' ) ;
98+ // Signup has a narrower block list (only posthog + llm-gateway), so
99+ // services like Anthropic can be degraded without blocking. Surface
100+ // those as dismissable warnings instead of silently proceeding.
101+ const warningKeys = isSignup
102+ ? getBlockingServiceKeys ( result . health ) . filter (
103+ ( k ) => ! blockingKeys . includes ( k ) ,
104+ )
105+ : [ ] ;
106+
107+ const hasHardBlock = blockingKeys . length > 0 ;
108+ const displayKeys = hasHardBlock ? blockingKeys : warningKeys ;
109+ if ( displayKeys . length === 0 ) return null ;
110+
111+ const isGithubReleasesDown =
112+ hasHardBlock && blockingKeys . includes ( 'githubReleases' ) ;
95113 const canDownloadSkills =
96114 result . health . githubReleases . status === ServiceHealthStatus . Healthy ;
97115 const integration = store . session . integration ;
98116
99- const title = `Ongoing service disruptions` ;
117+ const title = hasHardBlock
118+ ? 'Ongoing service disruptions'
119+ : 'Service disruption detected' ;
100120
101121 const docsUrl = store . session . frameworkConfig ?. metadata . docsUrl ;
102122 const description = isGithubReleasesDown
103123 ? "The Wizard can't download necessary skills from GitHub Releases right now."
104- : 'The Wizard may not work reliably while services are affected.' ;
124+ : hasHardBlock
125+ ? 'The Wizard cannot start while these services are down.'
126+ : 'Some services are degraded. You can continue, but parts of the wizard may not work reliably.' ;
105127
106128 const handleDownloadAndExit = async ( ) => {
107129 if ( downloading ) return ;
@@ -131,10 +153,9 @@ export const HealthCheckScreen = ({ store }: HealthCheckScreenProps) => {
131153 : 'Download skills & Exit [Esc]'
132154 : 'Exit [Esc]' ;
133155
134- // Blocking outage — show service list with Continue/Exit
135156 return (
136157 < ModalOverlay
137- borderColor = " red"
158+ borderColor = { hasHardBlock ? ' red' : 'yellow' }
138159 title = { title }
139160 width = { 72 }
140161 footer = {
@@ -173,7 +194,7 @@ export const HealthCheckScreen = ({ store }: HealthCheckScreenProps) => {
173194
174195 < ServiceHealthList
175196 health = { result . health }
176- filterKeys = { blockingKeys }
197+ filterKeys = { displayKeys }
177198 showHealthy = { false }
178199 />
179200 </ Box >
0 commit comments