fix: count OpenCode inventory fallback as connected Merge pull request #183 from 777genius/fix/opencode-inventory-summary-count
fix: count OpenCode inventory fallback as connected
This commit is contained in:
commit
a76d0cb2ed
2 changed files with 34 additions and 3 deletions
|
|
@ -37,6 +37,7 @@ import {
|
||||||
getProviderDisconnectAction,
|
getProviderDisconnectAction,
|
||||||
isConnectionManagedRuntimeProvider,
|
isConnectionManagedRuntimeProvider,
|
||||||
isOpenCodeCatalogHydrating,
|
isOpenCodeCatalogHydrating,
|
||||||
|
isProviderInventoryOnlyFallback,
|
||||||
shouldShowProviderConnectAction,
|
shouldShowProviderConnectAction,
|
||||||
shouldShowProviderStatusSkeleton,
|
shouldShowProviderStatusSkeleton,
|
||||||
} from '@renderer/components/runtime/providerConnectionUi';
|
} from '@renderer/components/runtime/providerConnectionUi';
|
||||||
|
|
@ -527,6 +528,10 @@ function isPendingMultimodelProviderStatus(provider: CliProviderStatus): boolean
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isProviderCountedAsConnected(provider: CliProviderStatus): boolean {
|
||||||
|
return provider.authenticated || isProviderInventoryOnlyFallback(provider);
|
||||||
|
}
|
||||||
|
|
||||||
function formatRuntimeAuthSummary(
|
function formatRuntimeAuthSummary(
|
||||||
cliStatus: NonNullable<ReturnType<typeof useCliInstaller>['cliStatus']>,
|
cliStatus: NonNullable<ReturnType<typeof useCliInstaller>['cliStatus']>,
|
||||||
visibleProviders: readonly CliProviderStatus[],
|
visibleProviders: readonly CliProviderStatus[],
|
||||||
|
|
@ -541,7 +546,7 @@ function formatRuntimeAuthSummary(
|
||||||
return t('cliStatus.provider.checkingProviders');
|
return t('cliStatus.provider.checkingProviders');
|
||||||
}
|
}
|
||||||
const denominator = visibleProviders.length;
|
const denominator = visibleProviders.length;
|
||||||
const connected = visibleProviders.filter((provider) => provider.authenticated).length;
|
const connected = visibleProviders.filter(isProviderCountedAsConnected).length;
|
||||||
|
|
||||||
return t('cliStatus.provider.connectedCount', { connected, denominator });
|
return t('cliStatus.provider.connectedCount', { connected, denominator });
|
||||||
}
|
}
|
||||||
|
|
@ -571,7 +576,7 @@ function isCheckingMultimodelStatus(
|
||||||
function hasVisibleAuthenticatedMultimodelProvider(
|
function hasVisibleAuthenticatedMultimodelProvider(
|
||||||
visibleProviders: readonly CliProviderStatus[]
|
visibleProviders: readonly CliProviderStatus[]
|
||||||
): boolean {
|
): boolean {
|
||||||
return visibleProviders.some((provider) => provider.authenticated);
|
return visibleProviders.some(isProviderCountedAsConnected);
|
||||||
}
|
}
|
||||||
|
|
||||||
function isOpenCodeProviderEffectivelyReady(provider: CliProviderStatus): boolean {
|
function isOpenCodeProviderEffectivelyReady(provider: CliProviderStatus): boolean {
|
||||||
|
|
|
||||||
|
|
@ -718,9 +718,34 @@ describe('CLI status visibility during completed install state', () => {
|
||||||
supportsSelfUpdate: false,
|
supportsSelfUpdate: false,
|
||||||
showVersionDetails: false,
|
showVersionDetails: false,
|
||||||
showBinaryPath: false,
|
showBinaryPath: false,
|
||||||
authLoggedIn: false,
|
authLoggedIn: true,
|
||||||
authStatusChecking: false,
|
authStatusChecking: false,
|
||||||
providers: [
|
providers: [
|
||||||
|
{
|
||||||
|
providerId: 'anthropic',
|
||||||
|
displayName: 'Anthropic',
|
||||||
|
supported: true,
|
||||||
|
authenticated: true,
|
||||||
|
authMethod: 'api_key',
|
||||||
|
verificationState: 'verified',
|
||||||
|
statusMessage: null,
|
||||||
|
models: ['claude-haiku-4-5'],
|
||||||
|
modelAvailability: [],
|
||||||
|
canLoginFromUi: true,
|
||||||
|
capabilities: {
|
||||||
|
teamLaunch: true,
|
||||||
|
oneShot: true,
|
||||||
|
},
|
||||||
|
backend: null,
|
||||||
|
modelCatalog: null,
|
||||||
|
modelCatalogRefreshState: 'idle',
|
||||||
|
runtimeCapabilities: null,
|
||||||
|
},
|
||||||
|
createCodexNativeRolloutProvider({
|
||||||
|
state: 'ready',
|
||||||
|
statusMessage: 'ChatGPT account ready',
|
||||||
|
models: ['gpt-5.4'],
|
||||||
|
}),
|
||||||
{
|
{
|
||||||
providerId: 'opencode',
|
providerId: 'opencode',
|
||||||
displayName: 'OpenCode (200+ models)',
|
displayName: 'OpenCode (200+ models)',
|
||||||
|
|
@ -755,6 +780,7 @@ describe('CLI status visibility during completed install state', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(host.textContent).toContain('OpenCode');
|
expect(host.textContent).toContain('OpenCode');
|
||||||
|
expect(host.textContent).toContain('Providers: 3/3 connected');
|
||||||
expect(host.textContent).toContain('Models available');
|
expect(host.textContent).toContain('Models available');
|
||||||
expect(host.textContent).toContain('big-pickle');
|
expect(host.textContent).toContain('big-pickle');
|
||||||
expect(host.textContent).not.toContain('Checking...');
|
expect(host.textContent).not.toContain('Checking...');
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue