@cats-inc/cats-platform 0.2.8 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -1
- package/build/desktop/bootstrapPage.d.ts.map +1 -1
- package/build/desktop/bootstrapPage.js +26 -129
- package/build/desktop/bootstrapPage.js.map +1 -1
- package/build/desktop/cliInventoryProbe.d.ts +6 -0
- package/build/desktop/cliInventoryProbe.d.ts.map +1 -1
- package/build/desktop/cliInventoryProbe.js +6 -3
- package/build/desktop/cliInventoryProbe.js.map +1 -1
- package/build/desktop/contracts.d.ts +2 -0
- package/build/desktop/contracts.d.ts.map +1 -1
- package/build/desktop/contracts.js.map +1 -1
- package/build/desktop/main.js +95 -41
- package/build/desktop/main.js.map +1 -1
- package/build/desktop/preload.cjs +8 -6
- package/build/desktop/preload.cjs.map +1 -1
- package/build/desktop/providerManager.d.ts +46 -0
- package/build/desktop/providerManager.d.ts.map +1 -0
- package/build/desktop/providerManager.js +220 -0
- package/build/desktop/providerManager.js.map +1 -0
- package/build/desktop/providerSelection.d.ts +1 -0
- package/build/desktop/providerSelection.d.ts.map +1 -1
- package/build/desktop/providerSelection.js +7 -1
- package/build/desktop/providerSelection.js.map +1 -1
- package/build/desktop/setupAssets.d.ts.map +1 -1
- package/build/desktop/setupAssets.js +12 -0
- package/build/desktop/setupAssets.js.map +1 -1
- package/build/desktop/setupAudit.d.ts +3 -1
- package/build/desktop/setupAudit.d.ts.map +1 -1
- package/build/desktop/setupAudit.js +12 -8
- package/build/desktop/setupAudit.js.map +1 -1
- package/build/desktop/setupBridge.js +1 -1
- package/build/desktop/setupBridge.js.map +1 -1
- package/build/desktop/setupPrerequisites.d.ts +11 -0
- package/build/desktop/setupPrerequisites.d.ts.map +1 -0
- package/build/desktop/setupPrerequisites.js +47 -0
- package/build/desktop/setupPrerequisites.js.map +1 -0
- package/build/renderer/assets/ActiveSessionPermissionChip-BugyYoVY.js +1 -0
- package/build/renderer/assets/{App-BZA23O2J.js → App-1MFRMMld.js} +1 -1
- package/build/renderer/assets/{App-YqprEL2n.js → App-BWgnfutX.js} +1 -1
- package/build/renderer/assets/{App-rGw9J8PZ.js → App-Cm_tok6f.js} +1 -1
- package/build/renderer/assets/{WorkspaceAppRoutes-BCHCikmJ.js → WorkspaceAppRoutes-B8U5FWao.js} +1 -1
- package/build/renderer/assets/app-CqnsY5ed.css +1 -0
- package/build/renderer/assets/app-DTDTNtih.js +85 -0
- package/build/renderer/assets/{client-BdGHAUoK.js → client-DREGSZqQ.js} +1 -1
- package/build/renderer/assets/conversationSidebarRecentEntries-y_bEg3Cp.js +6 -0
- package/build/renderer/assets/{screenshotOverlay-DfBcolX-.js → screenshotOverlay-EF07cXvw.js} +1 -1
- package/build/renderer/assets/{useDraftSessionChips-D9BX6X92.js → useDraftSessionChips-BD6ZGG_y.js} +1 -1
- package/build/renderer/desktop/overlay/index.html +2 -2
- package/build/renderer/index.html +3 -3
- package/build/server/app/renderer/auth/api.d.ts.map +1 -1
- package/build/server/app/renderer/auth/api.js +4 -1
- package/build/server/app/renderer/auth/api.js.map +1 -1
- package/build/server/app/renderer/providerCatalogClient.d.ts.map +1 -1
- package/build/server/app/renderer/providerCatalogClient.js +19 -6
- package/build/server/app/renderer/providerCatalogClient.js.map +1 -1
- package/build/server/app/renderer/providerClientInvalidation.d.ts +6 -0
- package/build/server/app/renderer/providerClientInvalidation.d.ts.map +1 -0
- package/build/server/app/renderer/providerClientInvalidation.js +12 -0
- package/build/server/app/renderer/providerClientInvalidation.js.map +1 -0
- package/build/server/app/renderer/providerReadLoop.d.ts +5 -0
- package/build/server/app/renderer/providerReadLoop.d.ts.map +1 -0
- package/build/server/app/renderer/providerReadLoop.js +52 -0
- package/build/server/app/renderer/providerReadLoop.js.map +1 -0
- package/build/server/app/renderer/providerRegistryClient.d.ts +2 -1
- package/build/server/app/renderer/providerRegistryClient.d.ts.map +1 -1
- package/build/server/app/renderer/providerRegistryClient.js +33 -17
- package/build/server/app/renderer/providerRegistryClient.js.map +1 -1
- package/build/server/app/server/authGatePolicy.js +7 -0
- package/build/server/app/server/authGatePolicy.js.map +1 -1
- package/build/server/app/server/shutdown.d.ts.map +1 -1
- package/build/server/app/server/shutdown.js +3 -1
- package/build/server/app/server/shutdown.js.map +1 -1
- package/build/server/app/server/startup.d.ts +4 -3
- package/build/server/app/server/startup.d.ts.map +1 -1
- package/build/server/app/server/startup.js +8 -0
- package/build/server/app/server/startup.js.map +1 -1
- package/build/server/app/server/subscribeRoutes.d.ts.map +1 -1
- package/build/server/app/server/subscribeRoutes.js +5 -3
- package/build/server/app/server/subscribeRoutes.js.map +1 -1
- package/build/server/design/components/providerModelFieldsSupport.d.ts +2 -21
- package/build/server/design/components/providerModelFieldsSupport.d.ts.map +1 -1
- package/build/server/design/components/providerModelFieldsSupport.js +32 -36
- package/build/server/design/components/providerModelFieldsSupport.js.map +1 -1
- package/build/server/design/components/useProviderCatalogState.d.ts +1 -2
- package/build/server/design/components/useProviderCatalogState.d.ts.map +1 -1
- package/build/server/design/components/useProviderCatalogState.js +71 -152
- package/build/server/design/components/useProviderCatalogState.js.map +1 -1
- package/build/server/design/components/useProviderModelFieldActions.js +2 -2
- package/build/server/design/components/useProviderModelFieldActions.js.map +1 -1
- package/build/server/design/components/useProviderRegistryState.d.ts +1 -7
- package/build/server/design/components/useProviderRegistryState.d.ts.map +1 -1
- package/build/server/design/components/useProviderRegistryState.js +41 -91
- package/build/server/design/components/useProviderRegistryState.js.map +1 -1
- package/build/server/design/components/useProviderTargetReconciliation.d.ts +1 -0
- package/build/server/design/components/useProviderTargetReconciliation.d.ts.map +1 -1
- package/build/server/design/components/useProviderTargetReconciliation.js +1 -1
- package/build/server/design/components/useProviderTargetReconciliation.js.map +1 -1
- package/build/server/index.js +30 -0
- package/build/server/index.js.map +1 -1
- package/build/server/platform/orchestration/entitySubscriptions/channel.d.ts +2 -1
- package/build/server/platform/orchestration/entitySubscriptions/channel.d.ts.map +1 -1
- package/build/server/platform/orchestration/entitySubscriptions/channel.js +3 -18
- package/build/server/platform/orchestration/entitySubscriptions/channel.js.map +1 -1
- package/build/server/platform/orchestration/entitySubscriptions/index.d.ts +1 -0
- package/build/server/platform/orchestration/entitySubscriptions/index.d.ts.map +1 -1
- package/build/server/platform/orchestration/entitySubscriptions/index.js.map +1 -1
- package/build/server/products/chat/api/routeSupport.d.ts +9 -1
- package/build/server/products/chat/api/routeSupport.d.ts.map +1 -1
- package/build/server/products/chat/api/routeSupport.js +22 -0
- package/build/server/products/chat/api/routeSupport.js.map +1 -1
- package/build/server/products/chat/state/model/readModels.d.ts +1 -0
- package/build/server/products/chat/state/model/readModels.d.ts.map +1 -1
- package/build/server/products/chat/state/model/readModels.js +2 -1
- package/build/server/products/chat/state/model/readModels.js.map +1 -1
- package/build/server/products/shared/renderer/api/appShell.d.ts +1 -0
- package/build/server/products/shared/renderer/api/appShell.d.ts.map +1 -1
- package/build/server/products/shared/renderer/api/appShell.js +9 -0
- package/build/server/products/shared/renderer/api/appShell.js.map +1 -1
- package/build/server/runtime/client.d.ts.map +1 -1
- package/build/server/runtime/client.js +5 -1
- package/build/server/runtime/client.js.map +1 -1
- package/build/server/runtime/setup.d.ts +4 -0
- package/build/server/runtime/setup.d.ts.map +1 -1
- package/build/server/runtime/setup.js +3 -1
- package/build/server/runtime/setup.js.map +1 -1
- package/build/server/server/routes/providers.d.ts.map +1 -1
- package/build/server/server/routes/providers.js +21 -50
- package/build/server/server/routes/providers.js.map +1 -1
- package/build/server/shared/cliInteraction.d.ts +17 -0
- package/build/server/shared/cliInteraction.d.ts.map +1 -0
- package/build/server/shared/cliInteraction.js +102 -0
- package/build/server/shared/cliInteraction.js.map +1 -0
- package/build/server/shared/desktopRecoveryBridge.d.ts +2 -1
- package/build/server/shared/desktopRecoveryBridge.d.ts.map +1 -1
- package/build/server/shared/desktopRecoveryBridge.js.map +1 -1
- package/build/server/shared/providerCatalogData.d.ts +168 -96
- package/build/server/shared/providerCatalogData.d.ts.map +1 -1
- package/build/server/shared/providerCatalogData.js +68 -42
- package/build/server/shared/providerCatalogData.js.map +1 -1
- package/build/server/shared/providerRegistryWarnings.d.ts +4 -0
- package/build/server/shared/providerRegistryWarnings.d.ts.map +1 -1
- package/build/server/shared/providerRegistryWarnings.js +7 -0
- package/build/server/shared/providerRegistryWarnings.js.map +1 -1
- package/package.json +13 -6
- package/packages/provider-setup/manager.d.ts +79 -0
- package/packages/provider-setup/manager.js +441 -0
- package/scripts/README.md +23 -0
- package/scripts/build-desktop-installer.mjs +124 -16
- package/scripts/dev-server.mjs +4 -1
- package/scripts/linux/install-github-cli.sh +5 -0
- package/scripts/linux/install-node.sh +9 -3
- package/scripts/linux/node-cli-common.sh +87 -48
- package/scripts/linux/provider-cli-common.sh +80 -105
- package/scripts/linux/provider-version-common.sh +247 -0
- package/scripts/linux/test-linux-package-smoke.sh +2 -0
- package/scripts/linux/verified-npm-update.sh +20 -0
- package/scripts/macos/install-github-cli.sh +5 -0
- package/scripts/macos/install-node.sh +9 -3
- package/scripts/macos/node-cli-common.sh +87 -48
- package/scripts/macos/provider-cli-common.sh +80 -105
- package/scripts/macos/provider-version-common.sh +247 -0
- package/scripts/macos/test-macos-package-smoke.sh +2 -0
- package/scripts/macos/verified-npm-update.sh +20 -0
- package/scripts/testing/conversation-navigation-smoke-electron.cjs +134 -0
- package/scripts/testing/conversation-navigation-smoke-renderer.tsx +102 -0
- package/scripts/testing/conversation-navigation-smoke.mjs +67 -0
- package/scripts/validate-release-assets.mjs +4 -1
- package/scripts/windows/Install-Antigravity.ps1 +26 -3
- package/scripts/windows/Install-ClaudeCode.ps1 +25 -7
- package/scripts/windows/Install-CursorAgent.ps1 +45 -30
- package/scripts/windows/Install-Devin.ps1 +16 -47
- package/scripts/windows/Install-GitHubCli.ps1 +4 -0
- package/scripts/windows/Install-Goose.ps1 +18 -1
- package/scripts/windows/Install-Grok.ps1 +14 -1
- package/scripts/windows/Install-Junie.ps1 +32 -11
- package/scripts/windows/Install-KiroCli.ps1 +37 -13
- package/scripts/windows/Install-MetaCli.ps1 +8 -1
- package/scripts/windows/Install-Node.ps1 +6 -1
- package/scripts/windows/Setup-NodeGlobalPrefix.ps1 +10 -0
- package/scripts/windows/Test-WindowsInstallerSmoke.ps1 +2 -0
- package/scripts/windows/_HiddenProcess.ps1 +14 -3
- package/scripts/windows/_NativeInstallerSupport.ps1 +308 -0
- package/scripts/windows/_NpmCliInstaller.ps1 +35 -14
- package/scripts/windows/_PackagedUninstall.ps1 +9 -1
- package/scripts/windows/_VerifiedNpmUpdate.ps1 +25 -0
- package/build/renderer/assets/ActiveSessionPermissionChip-CAgN-tXv.js +0 -1
- package/build/renderer/assets/app-BV3UAQkR.css +0 -1
- package/build/renderer/assets/app-CVPqqfZo.js +0 -45
- package/build/renderer/assets/conversationSidebarRecentEntries-iqaLqA1n.js +0 -6
- package/build/server/app/renderer/settings/runtimeLifecycleHelpers.d.ts +0 -48
- package/build/server/app/renderer/settings/runtimeLifecycleHelpers.d.ts.map +0 -1
- package/build/server/app/renderer/settings/runtimeLifecycleHelpers.js +0 -535
- package/build/server/app/renderer/settings/runtimeLifecycleHelpers.js.map +0 -1
- package/build/server/design/components/useProviderRegistryAutoRecheck.d.ts +0 -13
- package/build/server/design/components/useProviderRegistryAutoRecheck.d.ts.map +0 -1
- package/build/server/design/components/useProviderRegistryAutoRecheck.js +0 -70
- package/build/server/design/components/useProviderRegistryAutoRecheck.js.map +0 -1
- package/build/server/products/shared/renderer/api/providerCatalogRefreshStore.d.ts +0 -19
- package/build/server/products/shared/renderer/api/providerCatalogRefreshStore.d.ts.map +0 -1
- package/build/server/products/shared/renderer/api/providerCatalogRefreshStore.js +0 -53
- package/build/server/products/shared/renderer/api/providerCatalogRefreshStore.js.map +0 -1
- package/build/server/products/shared/renderer/api/providers.d.ts +0 -17
- package/build/server/products/shared/renderer/api/providers.d.ts.map +0 -1
- package/build/server/products/shared/renderer/api/providers.js +0 -50
- package/build/server/products/shared/renderer/api/providers.js.map +0 -1
|
@@ -1,163 +1,82 @@
|
|
|
1
1
|
import { useEffect, useState } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
function isProviderCatalogFallbackWarning(message) {
|
|
7
|
-
return message === PROVIDER_MODEL_CATALOG_LOAD_FAILED_WARNING
|
|
8
|
-
|| message === PROVIDER_MODEL_CATALOG_INCOMPLETE_WARNING
|
|
9
|
-
|| message === PROVIDER_ADVANCED_CATALOG_LOAD_FAILED_WARNING
|
|
10
|
-
|| message === PROVIDER_ADVANCED_CATALOG_INCOMPLETE_WARNING;
|
|
11
|
-
}
|
|
12
|
-
function readCatalogFailureMessage(error, fallback) {
|
|
13
|
-
if (!(error instanceof Error)) {
|
|
14
|
-
return fallback;
|
|
15
|
-
}
|
|
16
|
-
return isProviderCatalogFallbackWarning(error.message) ? fallback : error.message;
|
|
17
|
-
}
|
|
18
|
-
function localizeCatalogFailureReason(error, fallback) {
|
|
19
|
-
return error instanceof Error && isProviderCatalogFallbackWarning(error.message)
|
|
20
|
-
? new Error(fallback)
|
|
21
|
-
: error;
|
|
22
|
-
}
|
|
23
|
-
function createWarmProviderModelCatalog(provider, instance, warning) {
|
|
24
|
-
return createStaticProviderModelCatalog(provider, {
|
|
25
|
-
instance,
|
|
26
|
-
...(warning ? { warnings: [warning] } : {}),
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
function createWarmProviderAdvancedModelCatalog(provider, instance, warning) {
|
|
30
|
-
return createStaticProviderAdvancedModelCatalog(provider, {
|
|
31
|
-
instance,
|
|
32
|
-
...(warning ? { warnings: [warning] } : {}),
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
function createRuntimeCatalogUnavailableWarning(error, catalogKind, translate) {
|
|
36
|
-
const fallback = translate(messageKeys.sharedProviderModelFieldRuntimeCatalogUnavailable, {
|
|
37
|
-
catalogKind,
|
|
38
|
-
});
|
|
39
|
-
return translate(messageKeys.sharedProviderModelFieldRuntimeCatalogUnavailableWarning, {
|
|
40
|
-
catalogKind,
|
|
41
|
-
message: readCatalogFailureMessage(error, fallback),
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
function peekCachedCatalogPair(provider, instance, hasSelectedProvider) {
|
|
45
|
-
if (!hasSelectedProvider || !provider) {
|
|
46
|
-
return null;
|
|
47
|
-
}
|
|
48
|
-
const normalizedInstance = instance || null;
|
|
49
|
-
const models = peekProviderModelCatalogFromClientCache({
|
|
50
|
-
provider,
|
|
51
|
-
instance: normalizedInstance,
|
|
52
|
-
});
|
|
53
|
-
const advanced = peekProviderAdvancedCatalogFromClientCache({
|
|
54
|
-
provider,
|
|
55
|
-
instance: normalizedInstance,
|
|
56
|
-
});
|
|
57
|
-
if (models && advanced) {
|
|
58
|
-
return { models, advanced };
|
|
59
|
-
}
|
|
60
|
-
return null;
|
|
61
|
-
}
|
|
2
|
+
import { peekProviderAdvancedCatalogFromClientCache, peekProviderModelCatalogFromClientCache, } from '../../app/renderer/providerCatalogClient.js';
|
|
3
|
+
import { startProviderReadLoop } from '../../app/renderer/providerReadLoop.js';
|
|
4
|
+
import { isProviderReadRevalidating } from '../../shared/providerRegistryWarnings.js';
|
|
5
|
+
import { catalogMatchesTarget, createEmptyProviderAdvancedModelCatalog, createEmptyProviderModelCatalog, } from './providerModelFieldsSupport.js';
|
|
62
6
|
export function useProviderCatalogState(input) {
|
|
63
|
-
const
|
|
64
|
-
const
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
?
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
:
|
|
7
|
+
const { provider, resolvedInstance, hasSelectedProvider, selectionRevision } = input;
|
|
8
|
+
const instance = resolvedInstance || null;
|
|
9
|
+
const key = JSON.stringify([provider, instance, selectionRevision, hasSelectedProvider]);
|
|
10
|
+
function initialState() {
|
|
11
|
+
const models = hasSelectedProvider
|
|
12
|
+
? peekProviderModelCatalogFromClientCache({ provider, instance }) : null;
|
|
13
|
+
return {
|
|
14
|
+
key,
|
|
15
|
+
models: models ?? createEmptyProviderModelCatalog(provider, instance),
|
|
16
|
+
resolved: models !== null,
|
|
17
|
+
advanced: (hasSelectedProvider && peekProviderAdvancedCatalogFromClientCache({ provider, instance }))
|
|
18
|
+
|| createEmptyProviderAdvancedModelCatalog(provider, instance),
|
|
19
|
+
loading: hasSelectedProvider && Boolean(provider),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const [state, setState] = useState(initialState);
|
|
74
23
|
useEffect(() => {
|
|
75
24
|
let cancelled = false;
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
25
|
+
const current = initialState();
|
|
26
|
+
let modelsReady = false;
|
|
27
|
+
let advancedReady = false;
|
|
28
|
+
setState(current);
|
|
29
|
+
if (!hasSelectedProvider || !provider)
|
|
30
|
+
return;
|
|
31
|
+
function publish() {
|
|
32
|
+
if (!cancelled)
|
|
33
|
+
setState({ ...current });
|
|
83
34
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
setAdvancedCatalog(peek.advanced);
|
|
88
|
-
setCatalogLoading(false);
|
|
35
|
+
function matches(catalog) {
|
|
36
|
+
return catalogMatchesTarget({ catalogProvider: catalog.provider, catalogInstance: catalog.instance,
|
|
37
|
+
provider, instance: resolvedInstance });
|
|
89
38
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
input.fetchProviderModels(input.provider, input.resolvedInstance || null),
|
|
97
|
-
input.fetchAdvancedProviderModels(input.provider, input.resolvedInstance || null),
|
|
98
|
-
]).then(([modelsResult, advancedResult]) => {
|
|
99
|
-
if (cancelled) {
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
const nextCatalog = modelsResult.status === 'fulfilled'
|
|
103
|
-
? modelsResult.value
|
|
104
|
-
: createWarmProviderModelCatalog(input.provider, input.resolvedInstance || null, createRuntimeCatalogUnavailableWarning(modelsResult.reason, translate(messageKeys.sharedProviderModelFieldCatalogKindModel), translate));
|
|
105
|
-
setCatalog(nextCatalog);
|
|
106
|
-
if (advancedResult.status === 'fulfilled' || modelsResult.status === 'fulfilled') {
|
|
107
|
-
const advancedCatalogUnavailableMessage = translate(messageKeys.sharedProviderModelFieldAdvancedCatalogUnavailable);
|
|
108
|
-
setAdvancedCatalog(resolveAdvancedCatalogFallback({
|
|
109
|
-
provider: input.provider,
|
|
110
|
-
instance: input.resolvedInstance || null,
|
|
111
|
-
catalog: nextCatalog,
|
|
112
|
-
advancedCatalogResult: advancedResult.status === 'rejected'
|
|
113
|
-
? {
|
|
114
|
-
status: 'rejected',
|
|
115
|
-
reason: localizeCatalogFailureReason(advancedResult.reason, advancedCatalogUnavailableMessage),
|
|
116
|
-
}
|
|
117
|
-
: advancedResult,
|
|
118
|
-
modelsResult,
|
|
119
|
-
translate,
|
|
120
|
-
}));
|
|
39
|
+
const stop = startProviderReadLoop(async () => {
|
|
40
|
+
// Retry just the failed half. Successful base models remain usable while
|
|
41
|
+
// advanced controls load, and a failed refresh never erases either half.
|
|
42
|
+
if (modelsReady && advancedReady) {
|
|
43
|
+
modelsReady = false;
|
|
44
|
+
advancedReady = false;
|
|
121
45
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
catalogInstance: advancedCatalog.instance,
|
|
152
|
-
provider: input.provider,
|
|
153
|
-
instance: input.resolvedInstance,
|
|
154
|
-
})
|
|
155
|
-
? advancedCatalog
|
|
156
|
-
: fallbackAdvancedCatalog;
|
|
46
|
+
current.loading = true;
|
|
47
|
+
publish();
|
|
48
|
+
await Promise.allSettled([
|
|
49
|
+
modelsReady ? Promise.resolve() : input.fetchProviderModels(provider, instance).then((value) => {
|
|
50
|
+
if (cancelled || !matches(value))
|
|
51
|
+
return;
|
|
52
|
+
modelsReady = !isProviderReadRevalidating(value);
|
|
53
|
+
current.models = value;
|
|
54
|
+
current.resolved = true;
|
|
55
|
+
publish();
|
|
56
|
+
}),
|
|
57
|
+
advancedReady ? Promise.resolve() : input.fetchAdvancedProviderModels(provider, instance).then((value) => {
|
|
58
|
+
if (cancelled || !matches(value))
|
|
59
|
+
return;
|
|
60
|
+
advancedReady = !isProviderReadRevalidating(value);
|
|
61
|
+
current.advanced = value;
|
|
62
|
+
publish();
|
|
63
|
+
}),
|
|
64
|
+
]);
|
|
65
|
+
current.loading = !(modelsReady && advancedReady);
|
|
66
|
+
publish();
|
|
67
|
+
return !current.loading;
|
|
68
|
+
}, 60_000);
|
|
69
|
+
return () => { cancelled = true; stop(); };
|
|
70
|
+
}, [provider, resolvedInstance, hasSelectedProvider, selectionRevision,
|
|
71
|
+
input.fetchProviderModels, input.fetchAdvancedProviderModels]);
|
|
72
|
+
// Never display a previous provider/revision during the render before the
|
|
73
|
+
// effect runs. Cache invalidation precedes registry publication.
|
|
74
|
+
const effective = state.key === key ? state : initialState();
|
|
157
75
|
return {
|
|
158
|
-
catalogLoading,
|
|
159
|
-
|
|
160
|
-
|
|
76
|
+
catalogLoading: effective.loading,
|
|
77
|
+
catalogResolved: effective.resolved,
|
|
78
|
+
effectiveCatalog: effective.models,
|
|
79
|
+
effectiveAdvancedCatalog: effective.advanced,
|
|
161
80
|
};
|
|
162
81
|
}
|
|
163
82
|
//# sourceMappingURL=useProviderCatalogState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useProviderCatalogState.js","sourceRoot":"","sources":["../../../../src/design/components/useProviderCatalogState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"useProviderCatalogState.js","sourceRoot":"","sources":["../../../../src/design/components/useProviderCatalogState.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { useCallback } from 'react';
|
|
2
2
|
import { resolveSelectedProviderInstance, } from '../../shared/providerSelection.js';
|
|
3
|
-
import { attachExecutionLabelToProviderTarget, buildSelectionForEntry, CUSTOM_LEGACY_MODEL_VALUE,
|
|
3
|
+
import { attachExecutionLabelToProviderTarget, buildSelectionForEntry, CUSTOM_LEGACY_MODEL_VALUE, initializePersistentControlValues, updatePersistentControlValues, } from './providerModelFieldsSupport.js';
|
|
4
4
|
export { CUSTOM_LEGACY_MODEL_VALUE } from './providerModelFieldsSupport.js';
|
|
5
5
|
export function useProviderModelFieldActions(input) {
|
|
6
6
|
const { providerOptions, provider, resolvedInstance, model, persistedLegacyModelTarget, selectedCatalogEntryId, selectedPresetId, presetOptions, controlValues, effectiveControls, effectiveCatalog, effectiveAdvancedCatalog, markManualSelection, markLegacyManualSelection, clearManualSelection, onTargetChange, } = input;
|
|
7
7
|
const emitSelection = useCallback((next) => {
|
|
8
8
|
const nextModel = next.model ?? selectedCatalogEntryId;
|
|
9
|
-
const nextControls =
|
|
9
|
+
const nextControls = initializePersistentControlValues(effectiveControls, nextModel, next.controls);
|
|
10
10
|
const nextPresetId = next.presetId ?? null;
|
|
11
11
|
const nextModelSelection = buildSelectionForEntry(nextModel, nextPresetId, nextControls);
|
|
12
12
|
markManualSelection();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useProviderModelFieldActions.js","sourceRoot":"","sources":["../../../../src/design/components/useProviderModelFieldActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAOpC,OAAO,EACL,+BAA+B,GAEhC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,oCAAoC,EACpC,sBAAsB,EACtB,yBAAyB,EACzB,
|
|
1
|
+
{"version":3,"file":"useProviderModelFieldActions.js","sourceRoot":"","sources":["../../../../src/design/components/useProviderModelFieldActions.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,12 +8,6 @@ export declare function useProviderRegistryState(input: {
|
|
|
8
8
|
providers: import("../../shared/providerCatalog.js").ProductProviderDescriptor[];
|
|
9
9
|
providerRegistry: ProductProviderRegistryReadModel;
|
|
10
10
|
providersLoaded: boolean;
|
|
11
|
-
|
|
12
|
-
reloadProviderRegistry: (options?: {
|
|
13
|
-
markAutoRecheckAt?: number;
|
|
14
|
-
}) => void;
|
|
15
|
-
forceReloadProviderRegistry: (options?: {
|
|
16
|
-
markAutoRecheckAt?: number;
|
|
17
|
-
}) => void;
|
|
11
|
+
providersLoading: boolean;
|
|
18
12
|
};
|
|
19
13
|
//# sourceMappingURL=useProviderRegistryState.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useProviderRegistryState.d.ts","sourceRoot":"","sources":["../../../../src/design/components/useProviderRegistryState.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useProviderRegistryState.d.ts","sourceRoot":"","sources":["../../../../src/design/components/useProviderRegistryState.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AAIxF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,qBAAqB,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,gCAAgC,CAAC,CAAC;IACpG,wBAAwB,CAAC,EAAE,CAAC,QAAQ,EAAE,gCAAgC,KAAK,IAAI,CAAC;CACjF;;;;;EA8CA"}
|
|
@@ -1,101 +1,51 @@
|
|
|
1
1
|
import { useEffect, useRef, useState } from 'react';
|
|
2
|
-
import { subscribeProviderRegistry } from '../../app/renderer/providerRegistryClient.js';
|
|
3
|
-
import {
|
|
2
|
+
import { peekProviderRegistryClientCache, retainProviderRegistryOnFailure, subscribeProviderRegistry, } from '../../app/renderer/providerRegistryClient.js';
|
|
3
|
+
import { startProviderReadLoop } from '../../app/renderer/providerReadLoop.js';
|
|
4
|
+
import { sanitizeProviderRegistryReadModel } from './providerModelFieldsSupport.js';
|
|
5
|
+
import { isProviderReadRevalidating } from '../../shared/providerRegistryWarnings.js';
|
|
4
6
|
export function useProviderRegistryState(input) {
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
const [providerRegistryReloadToken, setProviderRegistryReloadToken] = useState(0);
|
|
12
|
-
const [lastAutoProviderRegistryRecheckAt, setLastAutoProviderRegistryRecheckAt] = useState(0);
|
|
13
|
-
const onProviderRegistryChangeRef = useRef(input.onProviderRegistryChange);
|
|
14
|
-
const providerRegistryRequestIdRef = useRef(0);
|
|
7
|
+
const [providerRegistry, setProviderRegistry] = useState(() => peekProviderRegistryClientCache() ?? { state: 'runtime_unreachable', providers: [] });
|
|
8
|
+
const [providersLoaded, setProvidersLoaded] = useState(Boolean(peekProviderRegistryClientCache()));
|
|
9
|
+
const registryRef = useRef(providerRegistry);
|
|
10
|
+
const requestIdRef = useRef(0);
|
|
11
|
+
const onChangeRef = useRef(input.onProviderRegistryChange);
|
|
12
|
+
onChangeRef.current = input.onProviderRegistryChange;
|
|
15
13
|
useEffect(() => {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
setProvidersLoaded(true);
|
|
26
|
-
onProviderRegistryChangeRef.current?.(nextRegistry);
|
|
27
|
-
}
|
|
28
|
-
function commitProviderRegistryError(requestId, error) {
|
|
29
|
-
if (requestId !== providerRegistryRequestIdRef.current) {
|
|
30
|
-
return;
|
|
14
|
+
let cancelled = false;
|
|
15
|
+
function commit(value) {
|
|
16
|
+
if (cancelled)
|
|
17
|
+
return;
|
|
18
|
+
const next = sanitizeProviderRegistryReadModel(value);
|
|
19
|
+
registryRef.current = next;
|
|
20
|
+
setProviderRegistry(next);
|
|
21
|
+
setProvidersLoaded(true);
|
|
22
|
+
onChangeRef.current?.(next);
|
|
31
23
|
}
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
state: 'runtime_unreachable',
|
|
37
|
-
providers: [],
|
|
38
|
-
recovery: {
|
|
39
|
-
retryable: true,
|
|
40
|
-
},
|
|
41
|
-
warnings: [...baseWarnings, errorMessage],
|
|
42
|
-
};
|
|
43
|
-
onProviderRegistryChangeRef.current?.(nextRegistry);
|
|
44
|
-
return nextRegistry;
|
|
24
|
+
const unsubscribe = subscribeProviderRegistry((value) => {
|
|
25
|
+
// Includes explicit cache reset. A late read must not undo it.
|
|
26
|
+
requestIdRef.current++;
|
|
27
|
+
commit(value);
|
|
45
28
|
});
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
let cancelled = false;
|
|
54
|
-
const requestId = ++providerRegistryRequestIdRef.current;
|
|
55
|
-
void input.fetchProviderRegistry()
|
|
56
|
-
.then((nextRegistryResult) => {
|
|
57
|
-
if (!cancelled) {
|
|
58
|
-
commitProviderRegistry(requestId, nextRegistryResult);
|
|
29
|
+
const stop = startProviderReadLoop(async () => {
|
|
30
|
+
const requestId = ++requestIdRef.current;
|
|
31
|
+
try {
|
|
32
|
+
const value = await input.fetchProviderRegistry();
|
|
33
|
+
if (!cancelled && requestId === requestIdRef.current) {
|
|
34
|
+
commit(retainProviderRegistryOnFailure(registryRef.current, value));
|
|
35
|
+
}
|
|
59
36
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
37
|
+
catch {
|
|
38
|
+
if (!cancelled && requestId === requestIdRef.current) {
|
|
39
|
+
commit(retainProviderRegistryOnFailure(registryRef.current, { state: 'runtime_unreachable', providers: [] }));
|
|
40
|
+
}
|
|
64
41
|
}
|
|
42
|
+
return registryRef.current.state !== 'runtime_unreachable'
|
|
43
|
+
&& !isProviderReadRevalidating(registryRef.current);
|
|
65
44
|
});
|
|
66
|
-
return () => {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
if (options?.markAutoRecheckAt !== undefined) {
|
|
72
|
-
setLastAutoProviderRegistryRecheckAt(options.markAutoRecheckAt);
|
|
73
|
-
}
|
|
74
|
-
// Keep `providersLoaded` true so existing dropdown options stay visible
|
|
75
|
-
// while the background refresh runs; commit/error handlers will update
|
|
76
|
-
// state when the fetch resolves.
|
|
77
|
-
setProviderRegistryReloadToken((current) => current + 1);
|
|
78
|
-
}
|
|
79
|
-
function forceReloadProviderRegistry(options) {
|
|
80
|
-
if (options?.markAutoRecheckAt !== undefined) {
|
|
81
|
-
setLastAutoProviderRegistryRecheckAt(options.markAutoRecheckAt);
|
|
82
|
-
}
|
|
83
|
-
const requestId = ++providerRegistryRequestIdRef.current;
|
|
84
|
-
void input.fetchProviderRegistry({ force: true })
|
|
85
|
-
.then((nextRegistryResult) => {
|
|
86
|
-
commitProviderRegistry(requestId, nextRegistryResult);
|
|
87
|
-
})
|
|
88
|
-
.catch((error) => {
|
|
89
|
-
commitProviderRegistryError(requestId, error);
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
return {
|
|
93
|
-
providers,
|
|
94
|
-
providerRegistry,
|
|
95
|
-
providersLoaded,
|
|
96
|
-
lastAutoProviderRegistryRecheckAt,
|
|
97
|
-
reloadProviderRegistry,
|
|
98
|
-
forceReloadProviderRegistry,
|
|
99
|
-
};
|
|
45
|
+
return () => { cancelled = true; stop(); unsubscribe(); };
|
|
46
|
+
}, [input.fetchProviderRegistry]);
|
|
47
|
+
return { providers: providerRegistry.providers, providerRegistry, providersLoaded,
|
|
48
|
+
providersLoading: !providersLoaded || providerRegistry.state === 'runtime_unreachable'
|
|
49
|
+
|| isProviderReadRevalidating(providerRegistry) };
|
|
100
50
|
}
|
|
101
51
|
//# sourceMappingURL=useProviderRegistryState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useProviderRegistryState.js","sourceRoot":"","sources":["../../../../src/design/components/useProviderRegistryState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,
|
|
1
|
+
{"version":3,"file":"useProviderRegistryState.js","sourceRoot":"","sources":["../../../../src/design/components/useProviderRegistryState.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ export declare function useProviderTargetReconciliation(input: {
|
|
|
8
8
|
resolvedInstance: string;
|
|
9
9
|
hasSelectedProvider: boolean;
|
|
10
10
|
catalogLoading: boolean;
|
|
11
|
+
catalogResolved: boolean;
|
|
11
12
|
effectiveCatalog: ProviderModelCatalog;
|
|
12
13
|
effectiveAdvancedCatalog: ProviderAdvancedModelCatalog;
|
|
13
14
|
onTargetChange: (target: ProviderTargetSelection) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useProviderTargetReconciliation.d.ts","sourceRoot":"","sources":["../../../../src/design/components/useProviderTargetReconciliation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,4BAA4B,EAC5B,oBAAoB,EACrB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC7B,MAAM,mCAAmC,CAAC;AAQ3C,wBAAgB,+BAA+B,CAAC,KAAK,EAAE;IACrD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAC/C,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,wBAAwB,EAAE,4BAA4B,CAAC;IACvD,cAAc,EAAE,CAAC,MAAM,EAAE,uBAAuB,KAAK,IAAI,CAAC;CAC3D;;;gCA4HkC,IAAI;+BAKL,IAAI;qCAKE,IAAI;EAY3C"}
|
|
1
|
+
{"version":3,"file":"useProviderTargetReconciliation.d.ts","sourceRoot":"","sources":["../../../../src/design/components/useProviderTargetReconciliation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,4BAA4B,EAC5B,oBAAoB,EACrB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC7B,MAAM,mCAAmC,CAAC;AAQ3C,wBAAgB,+BAA+B,CAAC,KAAK,EAAE;IACrD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAC/C,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,wBAAwB,EAAE,4BAA4B,CAAC;IACvD,cAAc,EAAE,CAAC,MAAM,EAAE,uBAAuB,KAAK,IAAI,CAAC;CAC3D;;;gCA4HkC,IAAI;+BAKL,IAAI;qCAKE,IAAI;EAY3C"}
|
|
@@ -11,7 +11,7 @@ export function useProviderTargetReconciliation(input) {
|
|
|
11
11
|
onTargetChangeRef.current = input.onTargetChange;
|
|
12
12
|
}, [input.onTargetChange]);
|
|
13
13
|
const targetKey = `${input.provider}::${input.resolvedInstance}`;
|
|
14
|
-
const persistedLegacyModelTarget =
|
|
14
|
+
const persistedLegacyModelTarget = input.catalogResolved
|
|
15
15
|
&& shouldTreatPersistedTargetAsLegacyModel({
|
|
16
16
|
catalog: input.effectiveCatalog,
|
|
17
17
|
model: input.model,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useProviderTargetReconciliation.js","sourceRoot":"","sources":["../../../../src/design/components/useProviderTargetReconciliation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAMpD,OAAO,EAAE,wCAAwC,EAAE,MAAM,iCAAiC,CAAC;AAC3F,OAAO,EACL,6BAA6B,EAC7B,0BAA0B,GAG3B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,oCAAoC,EACpC,iCAAiC,EACjC,sCAAsC,EACtC,uCAAuC,GACxC,MAAM,iCAAiC,CAAC;AAEzC,MAAM,UAAU,+BAA+B,CAAC,
|
|
1
|
+
{"version":3,"file":"useProviderTargetReconciliation.js","sourceRoot":"","sources":["../../../../src/design/components/useProviderTargetReconciliation.ts"],"names":[],"mappings":"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"}
|