@cats-inc/cats-platform 0.1.21 → 0.3.4
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/.env.example +3 -7
- package/README.md +35 -0
- package/build/desktop/bootstrapNavigation.d.ts.map +1 -1
- package/build/desktop/bootstrapNavigation.js +6 -13
- package/build/desktop/bootstrapNavigation.js.map +1 -1
- package/build/desktop/bootstrapPage.d.ts.map +1 -1
- package/build/desktop/bootstrapPage.js +63 -86
- package/build/desktop/bootstrapPage.js.map +1 -1
- package/build/desktop/cliInventoryProbe.d.ts +11 -2
- package/build/desktop/cliInventoryProbe.d.ts.map +1 -1
- package/build/desktop/cliInventoryProbe.js +19 -13
- package/build/desktop/cliInventoryProbe.js.map +1 -1
- package/build/desktop/config.d.ts +0 -4
- package/build/desktop/config.d.ts.map +1 -1
- package/build/desktop/config.js +1 -6
- package/build/desktop/config.js.map +1 -1
- package/build/desktop/contracts.d.ts +12 -2
- package/build/desktop/contracts.d.ts.map +1 -1
- package/build/desktop/contracts.js +1 -2
- package/build/desktop/contracts.js.map +1 -1
- package/build/desktop/hostVersion.d.ts.map +1 -1
- package/build/desktop/hostVersion.js +3 -5
- package/build/desktop/hostVersion.js.map +1 -1
- package/build/desktop/main.js +205 -256
- package/build/desktop/main.js.map +1 -1
- package/build/desktop/packaging.d.ts +2 -0
- package/build/desktop/packaging.d.ts.map +1 -1
- package/build/desktop/packaging.js +34 -14
- package/build/desktop/packaging.js.map +1 -1
- package/build/desktop/preload.cjs +9 -0
- package/build/desktop/preload.cjs.map +1 -1
- package/build/desktop/processSupervisor.d.ts.map +1 -1
- package/build/desktop/processSupervisor.js +3 -0
- package/build/desktop/processSupervisor.js.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 +38 -0
- package/build/desktop/providerSelection.d.ts.map +1 -0
- package/build/desktop/providerSelection.js +118 -0
- package/build/desktop/providerSelection.js.map +1 -0
- package/build/desktop/readiness.d.ts +2 -0
- package/build/desktop/readiness.d.ts.map +1 -1
- package/build/desktop/readiness.js +14 -33
- package/build/desktop/readiness.js.map +1 -1
- package/build/desktop/setupAssets.d.ts.map +1 -1
- package/build/desktop/setupAssets.js +28 -14
- package/build/desktop/setupAssets.js.map +1 -1
- package/build/desktop/setupAudit.d.ts +4 -3
- package/build/desktop/setupAudit.d.ts.map +1 -1
- package/build/desktop/setupAudit.js +18 -34
- 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/desktop/updateDialog.d.ts +27 -1
- package/build/desktop/updateDialog.d.ts.map +1 -1
- package/build/desktop/updateDialog.js +85 -5
- package/build/desktop/updateDialog.js.map +1 -1
- package/build/renderer/assets/ActiveSessionPermissionChip-B49WcZBJ.js +1 -0
- package/build/renderer/assets/App-BpxZB5ym.js +2 -0
- package/build/renderer/assets/App-DYTUfAl6.js +1 -0
- package/build/renderer/assets/App-DxsV-tKS.css +1 -0
- package/build/renderer/assets/{App-DKOSn0o_.js → App-boB4WrmU.js} +1 -1
- package/build/renderer/assets/WorkspaceAppRoutes-CPqz85iw.js +1 -0
- package/build/renderer/assets/app-C52wwCGz.js +85 -0
- package/build/renderer/assets/app-CqnsY5ed.css +1 -0
- package/build/renderer/assets/{client-BdGHAUoK.js → client-DREGSZqQ.js} +1 -1
- package/build/renderer/assets/conversationSidebarRecentEntries-DK0iWS73.js +6 -0
- package/build/renderer/assets/{screenshotOverlay-DfBcolX-.js → screenshotOverlay-EF07cXvw.js} +1 -1
- package/build/renderer/assets/{useDraftSessionChips-DCIId0eY.js → useDraftSessionChips-BdZ_B1gy.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 +34 -12
- 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 +3 -2
- package/build/server/app/renderer/providerRegistryClient.d.ts.map +1 -1
- package/build/server/app/renderer/providerRegistryClient.js +51 -53
- package/build/server/app/renderer/providerRegistryClient.js.map +1 -1
- package/build/server/app/server/appPackageRoutes.d.ts +2 -0
- package/build/server/app/server/appPackageRoutes.d.ts.map +1 -1
- package/build/server/app/server/appPackageRoutes.js +105 -0
- package/build/server/app/server/appPackageRoutes.js.map +1 -1
- package/build/server/app/server/authGatePolicy.js +14 -1
- package/build/server/app/server/authGatePolicy.js.map +1 -1
- package/build/server/app/server/contracts.d.ts +15 -0
- package/build/server/app/server/contracts.d.ts.map +1 -1
- package/build/server/app/server/dependencies.d.ts.map +1 -1
- package/build/server/app/server/dependencies.js +42 -1
- package/build/server/app/server/dependencies.js.map +1 -1
- package/build/server/app/server/goldenPathStartupResume.d.ts +55 -0
- package/build/server/app/server/goldenPathStartupResume.d.ts.map +1 -0
- package/build/server/app/server/goldenPathStartupResume.js +109 -0
- package/build/server/app/server/goldenPathStartupResume.js.map +1 -0
- package/build/server/app/server/platformSetupRoutes.d.ts.map +1 -1
- package/build/server/app/server/platformSetupRoutes.js +1 -13
- package/build/server/app/server/platformSetupRoutes.js.map +1 -1
- package/build/server/app/server/polling.d.ts.map +1 -1
- package/build/server/app/server/polling.js +2 -0
- package/build/server/app/server/polling.js.map +1 -1
- package/build/server/app/server/requestRouter.d.ts.map +1 -1
- package/build/server/app/server/requestRouter.js +30 -0
- package/build/server/app/server/requestRouter.js.map +1 -1
- package/build/server/app/server/runtimeSurfaceProxy.d.ts.map +1 -1
- package/build/server/app/server/runtimeSurfaceProxy.js +4 -2
- package/build/server/app/server/runtimeSurfaceProxy.js.map +1 -1
- package/build/server/app/server/startupRecovery.d.ts.map +1 -1
- package/build/server/app/server/startupRecovery.js +5 -0
- package/build/server/app/server/startupRecovery.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/app/server/telegramCommandSurface.d.ts +29 -0
- package/build/server/app/server/telegramCommandSurface.d.ts.map +1 -0
- package/build/server/app/server/telegramCommandSurface.js +123 -0
- package/build/server/app/server/telegramCommandSurface.js.map +1 -0
- package/build/server/app/server/transportWorkGoldenPath.d.ts +82 -0
- package/build/server/app/server/transportWorkGoldenPath.d.ts.map +1 -0
- package/build/server/app/server/transportWorkGoldenPath.js +307 -0
- package/build/server/app/server/transportWorkGoldenPath.js.map +1 -0
- package/build/server/config.d.ts +21 -0
- package/build/server/config.d.ts.map +1 -1
- package/build/server/config.js +12 -0
- package/build/server/config.js.map +1 -1
- package/build/server/design/components/providerModelFieldsSupport.d.ts +5 -24
- package/build/server/design/components/providerModelFieldsSupport.d.ts.map +1 -1
- package/build/server/design/components/providerModelFieldsSupport.js +65 -70
- package/build/server/design/components/providerModelFieldsSupport.js.map +1 -1
- package/build/server/design/components/useProviderCatalogState.d.ts +2 -2
- package/build/server/design/components/useProviderCatalogState.d.ts.map +1 -1
- package/build/server/design/components/useProviderCatalogState.js +71 -151
- 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 -104
- 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 +3 -2
- package/build/server/design/components/useProviderTargetReconciliation.js.map +1 -1
- package/build/server/index.js +4 -0
- package/build/server/index.js.map +1 -1
- package/build/server/platform/apps/packageInstaller.d.ts +19 -0
- package/build/server/platform/apps/packageInstaller.d.ts.map +1 -0
- package/build/server/platform/apps/packageInstaller.js +92 -0
- package/build/server/platform/apps/packageInstaller.js.map +1 -0
- package/build/server/platform/apps/registry.d.ts +6 -0
- package/build/server/platform/apps/registry.d.ts.map +1 -1
- package/build/server/platform/apps/registry.js +24 -0
- package/build/server/platform/apps/registry.js.map +1 -1
- package/build/server/platform/apps/renderer.d.ts +6 -0
- package/build/server/platform/apps/renderer.d.ts.map +1 -0
- package/build/server/platform/apps/renderer.js +18 -0
- package/build/server/platform/apps/renderer.js.map +1 -0
- 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/platform/runtime/deliveryClient.d.ts +111 -0
- package/build/server/platform/runtime/deliveryClient.d.ts.map +1 -0
- package/build/server/platform/runtime/deliveryClient.js +289 -0
- package/build/server/platform/runtime/deliveryClient.js.map +1 -0
- package/build/server/platform/supervision/providerCapabilityBootstrapYaml.d.ts +1 -0
- package/build/server/platform/supervision/providerCapabilityBootstrapYaml.d.ts.map +1 -1
- package/build/server/platform/supervision/providerCapabilityBootstrapYaml.js +10 -0
- package/build/server/platform/supervision/providerCapabilityBootstrapYaml.js.map +1 -1
- package/build/server/platform/supervision/runtimeBoundary.d.ts +11 -1
- package/build/server/platform/supervision/runtimeBoundary.d.ts.map +1 -1
- package/build/server/platform/supervision/runtimeBoundary.js +2 -2
- package/build/server/platform/supervision/runtimeBoundary.js.map +1 -1
- package/build/server/platform/transports/telegram/bridge.d.ts +18 -0
- package/build/server/platform/transports/telegram/bridge.d.ts.map +1 -1
- package/build/server/platform/transports/telegram/bridge.js +176 -0
- package/build/server/platform/transports/telegram/bridge.js.map +1 -1
- package/build/server/platform/transports/telegram/commandPort.d.ts +40 -0
- package/build/server/platform/transports/telegram/commandPort.d.ts.map +1 -0
- package/build/server/platform/transports/telegram/commandPort.js +17 -0
- package/build/server/platform/transports/telegram/commandPort.js.map +1 -0
- package/build/server/platform/transports/telegram/commandRouter.d.ts +22 -0
- package/build/server/platform/transports/telegram/commandRouter.d.ts.map +1 -1
- package/build/server/platform/transports/telegram/commandRouter.js.map +1 -1
- package/build/server/platform/transports/telegram/commands/index.d.ts.map +1 -1
- package/build/server/platform/transports/telegram/commands/index.js +38 -0
- package/build/server/platform/transports/telegram/commands/index.js.map +1 -1
- package/build/server/platform/transports/telegram/ingressDispatch.d.ts +56 -0
- package/build/server/platform/transports/telegram/ingressDispatch.d.ts.map +1 -0
- package/build/server/platform/transports/telegram/ingressDispatch.js +93 -0
- package/build/server/platform/transports/telegram/ingressDispatch.js.map +1 -0
- package/build/server/platform/transports/telegram/polling.d.ts +34 -0
- package/build/server/platform/transports/telegram/polling.d.ts.map +1 -1
- package/build/server/platform/transports/telegram/polling.js +86 -9
- package/build/server/platform/transports/telegram/polling.js.map +1 -1
- package/build/server/platform/transports/telegram/relay/index.d.ts +3 -0
- package/build/server/platform/transports/telegram/relay/index.d.ts.map +1 -1
- package/build/server/platform/transports/telegram/relay/index.js +5 -1
- package/build/server/platform/transports/telegram/relay/index.js.map +1 -1
- package/build/server/platform/transports/telegram/relay/ingress.d.ts +2 -0
- package/build/server/platform/transports/telegram/relay/ingress.d.ts.map +1 -1
- package/build/server/platform/transports/telegram/relay/ingress.js +1 -1
- package/build/server/platform/transports/telegram/relay/ingress.js.map +1 -1
- package/build/server/platform/transports/work-delivery/actionTokens.d.ts +66 -0
- package/build/server/platform/transports/work-delivery/actionTokens.d.ts.map +1 -0
- package/build/server/platform/transports/work-delivery/actionTokens.js +145 -0
- package/build/server/platform/transports/work-delivery/actionTokens.js.map +1 -0
- package/build/server/platform/transports/work-delivery/contracts.d.ts +172 -0
- package/build/server/platform/transports/work-delivery/contracts.d.ts.map +1 -0
- package/build/server/platform/transports/work-delivery/contracts.js +26 -0
- package/build/server/platform/transports/work-delivery/contracts.js.map +1 -0
- package/build/server/platform/transports/work-delivery/deliveryGates.d.ts +32 -0
- package/build/server/platform/transports/work-delivery/deliveryGates.d.ts.map +1 -0
- package/build/server/platform/transports/work-delivery/deliveryGates.js +45 -0
- package/build/server/platform/transports/work-delivery/deliveryGates.js.map +1 -0
- package/build/server/platform/transports/work-delivery/inboundClassification.d.ts +31 -0
- package/build/server/platform/transports/work-delivery/inboundClassification.d.ts.map +1 -0
- package/build/server/platform/transports/work-delivery/inboundClassification.js +52 -0
- package/build/server/platform/transports/work-delivery/inboundClassification.js.map +1 -0
- package/build/server/platform/transports/work-delivery/outbox.d.ts +84 -0
- package/build/server/platform/transports/work-delivery/outbox.d.ts.map +1 -0
- package/build/server/platform/transports/work-delivery/outbox.js +270 -0
- package/build/server/platform/transports/work-delivery/outbox.js.map +1 -0
- package/build/server/platform/transports/work-delivery/permissionEnvelope.d.ts +57 -0
- package/build/server/platform/transports/work-delivery/permissionEnvelope.d.ts.map +1 -0
- package/build/server/platform/transports/work-delivery/permissionEnvelope.js +74 -0
- package/build/server/platform/transports/work-delivery/permissionEnvelope.js.map +1 -0
- package/build/server/platform/transports/work-delivery/port.d.ts +60 -0
- package/build/server/platform/transports/work-delivery/port.d.ts.map +1 -0
- package/build/server/platform/transports/work-delivery/port.js +15 -0
- package/build/server/platform/transports/work-delivery/port.js.map +1 -0
- package/build/server/platform/transports/work-delivery/proposal.d.ts +31 -0
- package/build/server/platform/transports/work-delivery/proposal.d.ts.map +1 -0
- package/build/server/platform/transports/work-delivery/proposal.js +59 -0
- package/build/server/platform/transports/work-delivery/proposal.js.map +1 -0
- package/build/server/platform/transports/work-delivery/readiness.d.ts +61 -0
- package/build/server/platform/transports/work-delivery/readiness.d.ts.map +1 -0
- package/build/server/platform/transports/work-delivery/readiness.js +123 -0
- package/build/server/platform/transports/work-delivery/readiness.js.map +1 -0
- package/build/server/platform/transports/work-delivery/stageProjection.d.ts +43 -0
- package/build/server/platform/transports/work-delivery/stageProjection.d.ts.map +1 -0
- package/build/server/platform/transports/work-delivery/stageProjection.js +132 -0
- package/build/server/platform/transports/work-delivery/stageProjection.js.map +1 -0
- package/build/server/platform/transports/work-delivery/stateStore.d.ts +21 -0
- package/build/server/platform/transports/work-delivery/stateStore.d.ts.map +1 -0
- package/build/server/platform/transports/work-delivery/stateStore.js +193 -0
- package/build/server/platform/transports/work-delivery/stateStore.js.map +1 -0
- package/build/server/platform/transports/work-delivery/telemetry.d.ts +49 -0
- package/build/server/platform/transports/work-delivery/telemetry.d.ts.map +1 -0
- package/build/server/platform/transports/work-delivery/telemetry.js +80 -0
- package/build/server/platform/transports/work-delivery/telemetry.js.map +1 -0
- package/build/server/products/chat/api/contracts.d.ts +10 -0
- package/build/server/products/chat/api/contracts.d.ts.map +1 -1
- package/build/server/products/chat/api/resources/channelRoutes.d.ts.map +1 -1
- package/build/server/products/chat/api/resources/channelRoutes.js +27 -1
- package/build/server/products/chat/api/resources/channelRoutes.js.map +1 -1
- package/build/server/products/chat/api/routeSupport.d.ts +17 -1
- package/build/server/products/chat/api/routeSupport.d.ts.map +1 -1
- package/build/server/products/chat/api/routeSupport.js +27 -4
- package/build/server/products/chat/api/routeSupport.js.map +1 -1
- package/build/server/products/chat/api/setupRoutes.d.ts.map +1 -1
- package/build/server/products/chat/api/setupRoutes.js +23 -8
- package/build/server/products/chat/api/setupRoutes.js.map +1 -1
- package/build/server/products/chat/state/model/channelExecutionTargets.d.ts +15 -0
- package/build/server/products/chat/state/model/channelExecutionTargets.d.ts.map +1 -1
- package/build/server/products/chat/state/model/channelExecutionTargets.js +25 -0
- package/build/server/products/chat/state/model/channelExecutionTargets.js.map +1 -1
- package/build/server/products/chat/state/model/index.d.ts +1 -1
- package/build/server/products/chat/state/model/index.d.ts.map +1 -1
- package/build/server/products/chat/state/model/index.js +1 -1
- package/build/server/products/chat/state/model/index.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/code/api/relayRoutes.d.ts.map +1 -1
- package/build/server/products/code/api/relayRoutes.js +36 -7
- package/build/server/products/code/api/relayRoutes.js.map +1 -1
- package/build/server/products/code/state/relayState.d.ts +2 -1
- package/build/server/products/code/state/relayState.d.ts.map +1 -1
- package/build/server/products/code/state/relayState.js +7 -7
- package/build/server/products/code/state/relayState.js.map +1 -1
- package/build/server/products/shared/api/workspaceContracts.d.ts +5 -0
- package/build/server/products/shared/api/workspaceContracts.d.ts.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/products/work/api/goldenPathProjection.d.ts +156 -0
- package/build/server/products/work/api/goldenPathProjection.d.ts.map +1 -0
- package/build/server/products/work/api/goldenPathProjection.js +252 -0
- package/build/server/products/work/api/goldenPathProjection.js.map +1 -0
- package/build/server/products/work/api/index.d.ts +54 -1
- package/build/server/products/work/api/index.d.ts.map +1 -1
- package/build/server/products/work/api/index.js +182 -4
- package/build/server/products/work/api/index.js.map +1 -1
- package/build/server/products/work/api/projection.d.ts +7 -1
- package/build/server/products/work/api/projection.d.ts.map +1 -1
- package/build/server/products/work/api/projection.js +7 -1
- package/build/server/products/work/api/projection.js.map +1 -1
- package/build/server/products/work/shared/apiPaths.d.ts +8 -0
- package/build/server/products/work/shared/apiPaths.d.ts.map +1 -1
- package/build/server/products/work/shared/apiPaths.js +8 -0
- package/build/server/products/work/shared/apiPaths.js.map +1 -1
- package/build/server/products/work/shared/workGoldenPathMessages.d.ts +83 -0
- package/build/server/products/work/shared/workGoldenPathMessages.d.ts.map +1 -0
- package/build/server/products/work/shared/workGoldenPathMessages.js +211 -0
- package/build/server/products/work/shared/workGoldenPathMessages.js.map +1 -0
- package/build/server/products/work/shared/workGoldenPathMetadata.d.ts +45 -0
- package/build/server/products/work/shared/workGoldenPathMetadata.d.ts.map +1 -0
- package/build/server/products/work/shared/workGoldenPathMetadata.js +122 -0
- package/build/server/products/work/shared/workGoldenPathMetadata.js.map +1 -0
- package/build/server/products/work/state/workCompletionEvidence.d.ts +42 -0
- package/build/server/products/work/state/workCompletionEvidence.d.ts.map +1 -0
- package/build/server/products/work/state/workCompletionEvidence.js +59 -0
- package/build/server/products/work/state/workCompletionEvidence.js.map +1 -0
- package/build/server/products/work/state/workExecutionTaskDelegate.d.ts +16 -0
- package/build/server/products/work/state/workExecutionTaskDelegate.d.ts.map +1 -1
- package/build/server/products/work/state/workExecutionTaskDelegate.js +91 -68
- package/build/server/products/work/state/workExecutionTaskDelegate.js.map +1 -1
- package/build/server/products/work/state/workGoldenPathAdmission.d.ts +78 -0
- package/build/server/products/work/state/workGoldenPathAdmission.d.ts.map +1 -0
- package/build/server/products/work/state/workGoldenPathAdmission.js +249 -0
- package/build/server/products/work/state/workGoldenPathAdmission.js.map +1 -0
- package/build/server/products/work/state/workGoldenPathDeliveryEvidence.d.ts +33 -0
- package/build/server/products/work/state/workGoldenPathDeliveryEvidence.d.ts.map +1 -0
- package/build/server/products/work/state/workGoldenPathDeliveryEvidence.js +161 -0
- package/build/server/products/work/state/workGoldenPathDeliveryEvidence.js.map +1 -0
- package/build/server/products/work/state/workGoldenPathIntake.d.ts +34 -0
- package/build/server/products/work/state/workGoldenPathIntake.d.ts.map +1 -0
- package/build/server/products/work/state/workGoldenPathIntake.js +50 -0
- package/build/server/products/work/state/workGoldenPathIntake.js.map +1 -0
- package/build/server/products/work/state/workGoldenPathLifecycle.d.ts +44 -0
- package/build/server/products/work/state/workGoldenPathLifecycle.d.ts.map +1 -0
- package/build/server/products/work/state/workGoldenPathLifecycle.js +146 -0
- package/build/server/products/work/state/workGoldenPathLifecycle.js.map +1 -0
- package/build/server/products/work/state/workGoldenPathPublish.d.ts +84 -0
- package/build/server/products/work/state/workGoldenPathPublish.d.ts.map +1 -0
- package/build/server/products/work/state/workGoldenPathPublish.js +488 -0
- package/build/server/products/work/state/workGoldenPathPublish.js.map +1 -0
- package/build/server/products/work/state/workGoldenPathRunner.d.ts +121 -0
- package/build/server/products/work/state/workGoldenPathRunner.d.ts.map +1 -0
- package/build/server/products/work/state/workGoldenPathRunner.js +447 -0
- package/build/server/products/work/state/workGoldenPathRunner.js.map +1 -0
- package/build/server/products/work/state/workGoldenPathRuntimeExecutor.d.ts +74 -0
- package/build/server/products/work/state/workGoldenPathRuntimeExecutor.d.ts.map +1 -0
- package/build/server/products/work/state/workGoldenPathRuntimeExecutor.js +239 -0
- package/build/server/products/work/state/workGoldenPathRuntimeExecutor.js.map +1 -0
- package/build/server/products/work/state/workGoldenPathService.d.ts +152 -0
- package/build/server/products/work/state/workGoldenPathService.d.ts.map +1 -0
- package/build/server/products/work/state/workGoldenPathService.js +1057 -0
- package/build/server/products/work/state/workGoldenPathService.js.map +1 -0
- package/build/server/products/work/state/workGoldenPathTelegramPort.d.ts +87 -0
- package/build/server/products/work/state/workGoldenPathTelegramPort.d.ts.map +1 -0
- package/build/server/products/work/state/workGoldenPathTelegramPort.js +220 -0
- package/build/server/products/work/state/workGoldenPathTelegramPort.js.map +1 -0
- package/build/server/runtime/client.d.ts +13 -0
- package/build/server/runtime/client.d.ts.map +1 -1
- package/build/server/runtime/client.js +44 -1
- package/build/server/runtime/client.js.map +1 -1
- package/build/server/runtime/setup.d.ts +14 -4
- package/build/server/runtime/setup.d.ts.map +1 -1
- package/build/server/runtime/setup.js +17 -19
- package/build/server/runtime/setup.js.map +1 -1
- package/build/server/runtime/usageSnapshot.d.ts +3 -0
- package/build/server/runtime/usageSnapshot.d.ts.map +1 -0
- package/build/server/runtime/usageSnapshot.js +69 -0
- package/build/server/runtime/usageSnapshot.js.map +1 -0
- package/build/server/server/routes/providerCapabilityBootstrap.d.ts +69 -0
- package/build/server/server/routes/providerCapabilityBootstrap.d.ts.map +1 -0
- package/build/server/server/routes/providerCapabilityBootstrap.js +165 -0
- package/build/server/server/routes/providerCapabilityBootstrap.js.map +1 -0
- package/build/server/server/routes/providers.d.ts.map +1 -1
- package/build/server/server/routes/providers.js +133 -131
- package/build/server/server/routes/providers.js.map +1 -1
- package/build/server/server/routes/telegram.d.ts +9 -0
- package/build/server/server/routes/telegram.d.ts.map +1 -1
- package/build/server/server/routes/telegram.js +79 -72
- package/build/server/server/routes/telegram.js.map +1 -1
- package/build/server/shared/catsAppManifest.d.ts +3 -1
- package/build/server/shared/catsAppManifest.d.ts.map +1 -1
- package/build/server/shared/catsAppManifest.js +2 -0
- package/build/server/shared/catsAppManifest.js.map +1 -1
- 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/executionLabel.d.ts.map +1 -1
- package/build/server/shared/executionLabel.js +8 -1
- package/build/server/shared/executionLabel.js.map +1 -1
- package/build/server/shared/i18n/catalogs/en.d.ts.map +1 -1
- package/build/server/shared/i18n/catalogs/en.js +198 -3
- package/build/server/shared/i18n/catalogs/en.js.map +1 -1
- package/build/server/shared/i18n/catalogs/zh-TW.d.ts.map +1 -1
- package/build/server/shared/i18n/catalogs/zh-TW.js +197 -3
- package/build/server/shared/i18n/catalogs/zh-TW.js.map +1 -1
- package/build/server/shared/i18n/index.d.ts +192 -0
- package/build/server/shared/i18n/index.d.ts.map +1 -1
- package/build/server/shared/i18n/messageKeys.d.ts +192 -0
- package/build/server/shared/i18n/messageKeys.d.ts.map +1 -1
- package/build/server/shared/i18n/messageKeys.js +192 -0
- package/build/server/shared/i18n/messageKeys.js.map +1 -1
- package/build/server/shared/platformSetupOperation.d.ts +2 -0
- package/build/server/shared/platformSetupOperation.d.ts.map +1 -0
- package/build/server/shared/platformSetupOperation.js +9 -0
- package/build/server/shared/platformSetupOperation.js.map +1 -0
- package/build/server/shared/providerCatalog.d.ts +5 -2
- package/build/server/shared/providerCatalog.d.ts.map +1 -1
- package/build/server/shared/providerCatalog.js +6 -0
- package/build/server/shared/providerCatalog.js.map +1 -1
- package/build/server/shared/providerCatalogData.d.ts +154 -77
- package/build/server/shared/providerCatalogData.d.ts.map +1 -1
- package/build/server/shared/providerCatalogData.js +73 -36
- package/build/server/shared/providerCatalogData.js.map +1 -1
- package/build/server/shared/providerCatalogInstances.d.ts.map +1 -1
- package/build/server/shared/providerCatalogInstances.js +3 -0
- package/build/server/shared/providerCatalogInstances.js.map +1 -1
- package/build/server/shared/providerModelLabelRegistry.d.ts +29 -0
- package/build/server/shared/providerModelLabelRegistry.d.ts.map +1 -0
- package/build/server/shared/providerModelLabelRegistry.js +49 -0
- package/build/server/shared/providerModelLabelRegistry.js.map +1 -0
- 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/build/server/shared/providerSelection.d.ts.map +1 -1
- package/build/server/shared/providerSelection.js +10 -13
- package/build/server/shared/providerSelection.js.map +1 -1
- package/build/server/shared/runtimeSetup.d.ts +17 -4
- package/build/server/shared/runtimeSetup.d.ts.map +1 -1
- package/build/server/shared/runtimeStatusPresentation.js +1 -1
- package/build/server/shared/runtimeStatusPresentation.js.map +1 -1
- package/package.json +32 -3
- package/packages/app-sdk/browser.d.ts +51 -0
- package/packages/app-sdk/browser.js +48 -0
- package/packages/app-sdk/package.d.ts +14 -0
- package/packages/app-sdk/package.js +131 -0
- package/packages/app-sdk/package.json +7 -0
- package/packages/provider-setup/manager.d.ts +79 -0
- package/packages/provider-setup/manager.js +441 -0
- package/scripts/README.md +66 -26
- package/scripts/build-desktop-installer.mjs +139 -16
- package/scripts/build-test-ui.mjs +1 -1
- package/scripts/bundle-server.mjs +23 -10
- package/scripts/linux/build-desktop-package.sh +6 -6
- package/scripts/linux/install-antigravity.sh +0 -0
- package/scripts/linux/install-devin.sh +0 -0
- package/scripts/linux/install-github-cli.sh +5 -0
- package/scripts/linux/install-meta-cli.sh +8 -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 +178 -130
- package/scripts/linux/provider-version-common.sh +247 -0
- package/scripts/linux/sync-agent-skills.sh +27 -5
- package/scripts/linux/test-linux-package-smoke.sh +6 -3
- package/scripts/linux/upgrade-cli-tools.sh +1 -1
- package/scripts/linux/verified-npm-update.sh +20 -0
- package/scripts/macos/build-desktop-package.sh +5 -5
- package/scripts/macos/install-antigravity.sh +0 -0
- package/scripts/macos/install-devin.sh +0 -0
- package/scripts/macos/install-github-cli.sh +5 -0
- package/scripts/macos/install-meta-cli.sh +8 -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 +178 -130
- package/scripts/macos/provider-version-common.sh +247 -0
- package/scripts/macos/sync-agent-skills.sh +27 -5
- package/scripts/macos/test-macos-package-smoke.sh +6 -3
- package/scripts/macos/upgrade-cli-tools.sh +1 -1
- package/scripts/macos/verified-npm-update.sh +20 -0
- package/scripts/package-desktop.mjs +15 -2
- package/scripts/testing/check-usage-app.mts +266 -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/testing/usage-app-smoke-electron.cjs +10 -0
- package/scripts/testing/usage-app-smoke-renderer.tsx +8 -0
- package/scripts/validate-release-assets.mjs +4 -1
- package/scripts/verify-desktop-app-bundle.mjs +108 -0
- package/scripts/windows/Build-DesktopPackage.ps1 +9 -6
- 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 +463 -0
- package/scripts/windows/Install-Node.ps1 +6 -1
- package/scripts/windows/Install-Ollama.ps1 +4 -1
- package/scripts/windows/Setup-NodeGlobalPrefix.ps1 +10 -0
- package/scripts/windows/Sync-AgentSkills.ps1 +29 -6
- package/scripts/windows/Test-WindowsInstallerSmoke.ps1 +4 -1
- 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/desktop/updateNotifications.d.ts +0 -64
- package/build/desktop/updateNotifications.d.ts.map +0 -1
- package/build/desktop/updateNotifications.js +0 -143
- package/build/desktop/updateNotifications.js.map +0 -1
- package/build/renderer/assets/ActiveSessionPermissionChip-DImsuR9T.js +0 -1
- package/build/renderer/assets/App-BfOvMP2m.js +0 -1
- package/build/renderer/assets/App-DGwkRFZl.css +0 -1
- package/build/renderer/assets/App-DWd7I3Z2.js +0 -2
- package/build/renderer/assets/WorkspaceAppRoutes-CrbTA9En.js +0 -1
- package/build/renderer/assets/app-BTww3Hl4.js +0 -43
- package/build/renderer/assets/app-CPxWQwLA.css +0 -1
- package/build/renderer/assets/conversationSidebarRecentEntries-QuaOPxCb.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 -63
- 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
- package/scripts/linux/install-aider.sh +0 -8
- package/scripts/macos/install-aider.sh +0 -8
- package/scripts/windows/Install-Aider.ps1 +0 -368
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import { NPM_PROVIDERS, targetKey, targetsForSetupHelper } from './providerSelection.js';
|
|
2
|
+
import { isDesktopPrerequisiteHelper } from './setupAudit.js';
|
|
3
|
+
const modes = { install: 'apply', upgrade: 'upgrade', repair: 'force', uninstall: 'uninstall', preview_uninstall: 'uninstall' };
|
|
4
|
+
function record(value) {
|
|
5
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
6
|
+
throw new Error('Invalid provider action.');
|
|
7
|
+
return value;
|
|
8
|
+
}
|
|
9
|
+
function targets(value, allowEndpoint = false) {
|
|
10
|
+
if (!Array.isArray(value))
|
|
11
|
+
throw new Error('Choose provider targets.');
|
|
12
|
+
const seen = new Set();
|
|
13
|
+
return value.map((item) => {
|
|
14
|
+
const entry = record(item);
|
|
15
|
+
if (typeof entry.provider !== 'string' || !entry.provider || typeof entry.instance !== 'string' || !entry.instance
|
|
16
|
+
|| !['cli', 'api', 'local', 'agent'].includes(String(entry.backend)))
|
|
17
|
+
throw new Error('Invalid provider target.');
|
|
18
|
+
const target = { provider: entry.provider, backend: entry.backend, instance: entry.instance };
|
|
19
|
+
if (allowEndpoint && entry.endpoint !== undefined) {
|
|
20
|
+
if (typeof entry.endpoint !== 'string')
|
|
21
|
+
throw new Error('Endpoint must be a URL.');
|
|
22
|
+
target.endpoint = entry.endpoint;
|
|
23
|
+
}
|
|
24
|
+
const key = targetKey(target);
|
|
25
|
+
if (seen.has(key))
|
|
26
|
+
throw new Error('Duplicate provider target.');
|
|
27
|
+
seen.add(key);
|
|
28
|
+
return target;
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
function body(value) {
|
|
32
|
+
return { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify(value) };
|
|
33
|
+
}
|
|
34
|
+
/** Both renderers use this host-owned orchestration; reads are always passive. */
|
|
35
|
+
export class DesktopProviderManager {
|
|
36
|
+
dependencies;
|
|
37
|
+
operation = null;
|
|
38
|
+
outcomes = {};
|
|
39
|
+
constructor(dependencies) {
|
|
40
|
+
this.dependencies = dependencies;
|
|
41
|
+
}
|
|
42
|
+
async read() {
|
|
43
|
+
const [runtime, helpers] = await Promise.all([
|
|
44
|
+
this.dependencies.request('/setup-state'), this.dependencies.helpers(),
|
|
45
|
+
]);
|
|
46
|
+
return { runtime, helpers: helpers.filter((helper) => {
|
|
47
|
+
if (isDesktopPrerequisiteHelper(helper.id))
|
|
48
|
+
return true;
|
|
49
|
+
try {
|
|
50
|
+
return targetsForSetupHelper(helper.id, runtime.selection).length > 0;
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
}), platform: this.dependencies.platform,
|
|
56
|
+
operations: this.operation ? [{ ...this.operation }] : [], outcomes: { ...this.outcomes },
|
|
57
|
+
prerequisites: this.dependencies.prerequisites?.() ?? [] };
|
|
58
|
+
}
|
|
59
|
+
assertRevision(runtime, expected) {
|
|
60
|
+
if (typeof expected !== 'string' || expected !== runtime.selection.revision || runtime.selection.diskChanged) {
|
|
61
|
+
throw new Error('Provider settings changed elsewhere. Refresh before continuing.');
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async exclusive(selected, stage, run) {
|
|
65
|
+
if (this.operation)
|
|
66
|
+
throw new Error('A provider operation is running. Wait for it to finish.');
|
|
67
|
+
this.operation = { targets: selected, stage };
|
|
68
|
+
try {
|
|
69
|
+
return await run();
|
|
70
|
+
}
|
|
71
|
+
finally {
|
|
72
|
+
this.operation = null;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
async apply(value) {
|
|
76
|
+
const input = record(value);
|
|
77
|
+
const desired = targets(input.targets, true);
|
|
78
|
+
if (typeof input.expectedRevision !== 'string' || typeof input.detectAfter !== 'boolean')
|
|
79
|
+
throw new Error('Invalid provider selection.');
|
|
80
|
+
await this.exclusive(desired, 'Applying provider selection…', async () => {
|
|
81
|
+
const reload = input.reload === true;
|
|
82
|
+
const runtime = await this.dependencies.request('/setup-state');
|
|
83
|
+
if (!reload)
|
|
84
|
+
this.assertRevision(runtime, input.expectedRevision);
|
|
85
|
+
await this.dependencies.request(`/setup-selection${reload ? '/reload' : ''}`, {
|
|
86
|
+
...body({ targets: desired, expectedRevision: input.expectedRevision }), method: reload ? 'POST' : 'PUT',
|
|
87
|
+
});
|
|
88
|
+
const saved = await this.dependencies.request('/setup-state');
|
|
89
|
+
await this.dependencies.changed(saved);
|
|
90
|
+
if (input.detectAfter && !reload && saved.selection.targets.length) {
|
|
91
|
+
try {
|
|
92
|
+
await this.detect(saved.selection.targets, saved.selection.revision);
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
// The successful save is authoritative even when its optional check fails.
|
|
96
|
+
this.rememberFailure(saved.selection.targets, error, 'detection');
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
return this.read();
|
|
101
|
+
}
|
|
102
|
+
async run(value) {
|
|
103
|
+
const input = record(value);
|
|
104
|
+
const selected = targets(input.targets);
|
|
105
|
+
const action = String(input.action);
|
|
106
|
+
if (action !== 'detect' && !Object.hasOwn(modes, action))
|
|
107
|
+
throw new Error('Unsupported provider action.');
|
|
108
|
+
if (!selected.length || (action !== 'detect' && selected.length !== 1))
|
|
109
|
+
throw new Error('Choose exactly one provider for installation actions.');
|
|
110
|
+
let preview;
|
|
111
|
+
await this.exclusive(selected, action === 'detect' ? 'Detecting…' : 'Preparing provider operation…', async () => {
|
|
112
|
+
const runtime = await this.dependencies.request('/setup-state');
|
|
113
|
+
this.assertRevision(runtime, input.expectedRevision);
|
|
114
|
+
if (selected.some((target) => !runtime.selection.targets.some((entry) => targetKey(entry) === targetKey(target)))) {
|
|
115
|
+
throw new Error('Apply this provider selection before detecting or installing it.');
|
|
116
|
+
}
|
|
117
|
+
if (action === 'detect') {
|
|
118
|
+
await this.detect(selected, input.expectedRevision);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
const target = selected[0];
|
|
122
|
+
const helperId = `${this.dependencies.platform}-${target.provider}-${target.provider === 'ollama' ? 'local-model' : 'native'}-installer`;
|
|
123
|
+
const admitted = targetsForSetupHelper(helperId, runtime.selection);
|
|
124
|
+
if (!admitted.some((entry) => targetKey(entry) === targetKey(target)))
|
|
125
|
+
throw new Error('This target has no native Desktop installer.');
|
|
126
|
+
const helper = (await this.dependencies.helpers()).find((entry) => entry.id === helperId && entry.available && entry.supported);
|
|
127
|
+
const mode = modes[action];
|
|
128
|
+
if (!helper || (mode === 'apply' && !helper.supportsApply) || (mode === 'upgrade' && !helper.supportsUpgrade)
|
|
129
|
+
|| (mode === 'force' && !helper.supportsForce) || (mode === 'uninstall' && !helper.supportsUninstall)) {
|
|
130
|
+
throw new Error('This installation action is not supported on this platform.');
|
|
131
|
+
}
|
|
132
|
+
if (['install', 'upgrade', 'repair'].includes(action) && target.backend === 'cli' && NPM_PROVIDERS.has(target.provider)) {
|
|
133
|
+
await this.ensureNpmPrerequisites(input.expectedRevision);
|
|
134
|
+
}
|
|
135
|
+
this.operation.stage = `${action === 'preview_uninstall' ? 'Checking removal paths for' : action === 'install' ? 'Installing' : action === 'upgrade' ? 'Updating' : action === 'repair' ? 'Repairing' : 'Uninstalling'} ${target.provider}…`;
|
|
136
|
+
const result = await this.dependencies.helper(helperId, mode, action === 'preview_uninstall', input.expectedRevision);
|
|
137
|
+
if (action === 'preview_uninstall') {
|
|
138
|
+
preview = { target, result, revision: input.expectedRevision };
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
this.outcomes[targetKey(target)] = { ...result, source: 'installer' };
|
|
142
|
+
// The installer owns changes; exactly one Runtime check owns verification.
|
|
143
|
+
try {
|
|
144
|
+
await this.detect(selected, input.expectedRevision);
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
result.warnings = [...result.warnings, `Installation result retained; verification failed: ${error instanceof Error ? error.message : String(error)}`];
|
|
148
|
+
this.outcomes[targetKey(target)] = { ...result, source: 'installer' };
|
|
149
|
+
}
|
|
150
|
+
}).catch((error) => { this.rememberFailure(selected, error, action === 'detect' ? 'detection' : 'installer'); throw error; });
|
|
151
|
+
const snapshot = await this.read();
|
|
152
|
+
return preview ? { ...snapshot, preview } : snapshot;
|
|
153
|
+
}
|
|
154
|
+
rememberFailure(selected, error, source) {
|
|
155
|
+
for (const target of selected) {
|
|
156
|
+
if (source === 'detection' && this.outcomes[targetKey(target)]?.source === 'installer')
|
|
157
|
+
continue;
|
|
158
|
+
this.outcomes[targetKey(target)] = {
|
|
159
|
+
source,
|
|
160
|
+
status: 'failed', runState: 'failed', summary: error instanceof Error ? error.message : String(error),
|
|
161
|
+
manualSteps: [], warnings: [], plannedActions: [],
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
async ensureNpmPrerequisites(revision) {
|
|
166
|
+
const helpers = await this.dependencies.helpers();
|
|
167
|
+
for (const suffix of ['node-host-installer', 'npm-prefix-helper']) {
|
|
168
|
+
const id = `${this.dependencies.platform}-${suffix}`;
|
|
169
|
+
if (!helpers.some((entry) => entry.id === id && entry.available && entry.supported))
|
|
170
|
+
continue;
|
|
171
|
+
this.operation.stage = suffix === 'node-host-installer' ? 'Checking Node.js prerequisite…' : 'Checking npm prefix…';
|
|
172
|
+
const checked = await this.dependencies.helper(id, 'check', false, revision);
|
|
173
|
+
if (checked.runState === 'failed')
|
|
174
|
+
throw new Error(checked.summary);
|
|
175
|
+
if (checked.status === 'ready')
|
|
176
|
+
continue;
|
|
177
|
+
this.operation.stage = suffix === 'node-host-installer' ? 'Installing Node.js prerequisite…' : 'Preparing npm prefix…';
|
|
178
|
+
const installed = await this.dependencies.helper(id, 'apply', false, revision);
|
|
179
|
+
if (installed.runState === 'failed' || installed.status === 'failed') {
|
|
180
|
+
throw new Error([installed.summary, ...installed.manualSteps].join(' '));
|
|
181
|
+
}
|
|
182
|
+
// New helpers run in a fresh process; PATH-only changes need no Desktop
|
|
183
|
+
// restart. Re-check readiness before admitting the provider installer.
|
|
184
|
+
const verified = await this.dependencies.helper(id, 'check', false, revision);
|
|
185
|
+
if (verified.runState === 'failed' || verified.status !== 'ready') {
|
|
186
|
+
throw new Error([verified.summary, ...installed.manualSteps, ...verified.manualSteps].join(' '));
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
async detect(selected, revision) {
|
|
191
|
+
for (const target of selected)
|
|
192
|
+
if (this.outcomes[targetKey(target)]?.source === 'detection')
|
|
193
|
+
delete this.outcomes[targetKey(target)];
|
|
194
|
+
this.operation.stage = `Detecting ${selected.length} selected provider${selected.length === 1 ? '' : 's'}…`;
|
|
195
|
+
const started = await this.dependencies.request('/setup-scan', body({
|
|
196
|
+
targets: selected, expectedRevision: revision, manual: true, includeConnections: true,
|
|
197
|
+
}));
|
|
198
|
+
if (!started.scanId)
|
|
199
|
+
throw new Error('The connected Runtime does not support tracked provider checks. Update Runtime before retrying.');
|
|
200
|
+
const deadline = Date.now() + (this.dependencies.timeoutMs ?? 180_000);
|
|
201
|
+
while (Date.now() < deadline) {
|
|
202
|
+
const runtime = await this.dependencies.request('/setup-state');
|
|
203
|
+
this.assertRevision(runtime, revision);
|
|
204
|
+
if (runtime.state.scanId !== started.scanId)
|
|
205
|
+
throw new Error('Another provider check replaced this operation. Refresh and retry.');
|
|
206
|
+
if (runtime.state.status === 'error')
|
|
207
|
+
throw new Error(runtime.state.error || 'Provider detection failed.');
|
|
208
|
+
if (runtime.state.status === 'ready') {
|
|
209
|
+
await this.dependencies.changed(runtime);
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
if (runtime.state.status !== 'scanning')
|
|
213
|
+
throw new Error('Provider detection was interrupted. Retry the check.');
|
|
214
|
+
this.operation.stage = `Detecting providers (${runtime.state.scanCompleted ?? 0}/${runtime.state.scanTotal ?? selected.length})…`;
|
|
215
|
+
await (this.dependencies.wait ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms))))(500);
|
|
216
|
+
}
|
|
217
|
+
throw new Error('Provider detection is taking longer than expected. Its progress is still visible; wait before retrying.');
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=providerManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerManager.js","sourceRoot":"","sources":["../../desktop/host/providerManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/** The connected Runtime owns both selection and operation admission. */
|
|
2
|
+
export interface SelectedProviderTarget {
|
|
3
|
+
provider: string;
|
|
4
|
+
backend: 'cli' | 'api' | 'local' | 'agent';
|
|
5
|
+
instance: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ProviderSelection {
|
|
8
|
+
state: 'missing' | 'invalid' | 'empty' | 'selected';
|
|
9
|
+
revision: string;
|
|
10
|
+
targets: SelectedProviderTarget[];
|
|
11
|
+
nativeSetupTargets: SelectedProviderTarget[];
|
|
12
|
+
diskChanged: boolean;
|
|
13
|
+
error: string | null;
|
|
14
|
+
}
|
|
15
|
+
export interface ProviderSelectionCatalogEntry extends SelectedProviderTarget {
|
|
16
|
+
familyLabel: string;
|
|
17
|
+
binaryName: string;
|
|
18
|
+
}
|
|
19
|
+
export declare const targetKey: (target: SelectedProviderTarget) => string;
|
|
20
|
+
export declare const NPM_PROVIDERS: Set<string>;
|
|
21
|
+
export declare function nativeSetupTarget(provider: string): SelectedProviderTarget;
|
|
22
|
+
export declare function targetsForSetupHelper(helperId: string, selection: ProviderSelection): SelectedProviderTarget[];
|
|
23
|
+
interface SelectedSetupOperation<T> {
|
|
24
|
+
baseUrl: string;
|
|
25
|
+
helperId: string;
|
|
26
|
+
expectedRevision?: string;
|
|
27
|
+
run: () => Promise<T>;
|
|
28
|
+
fetch?: typeof fetch;
|
|
29
|
+
}
|
|
30
|
+
/** Stop admitting helpers before Runtime is drained or restarted. */
|
|
31
|
+
export declare function pauseSelectedSetupHelpers(): {
|
|
32
|
+
drained: Promise<void>;
|
|
33
|
+
resume: () => void;
|
|
34
|
+
};
|
|
35
|
+
export declare function withSelectedSetupTargets<T>(options: SelectedSetupOperation<T>): Promise<T>;
|
|
36
|
+
export declare function retryPendingSetupOperationReleases(): Promise<void>;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=providerSelection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerSelection.d.ts","sourceRoot":"","sources":["../../desktop/host/providerSelection.ts"],"names":[],"mappings":"AAGA,yEAAyE;AACzE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAClC,kBAAkB,EAAE,sBAAsB,EAAE,CAAC;IAC7C,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,6BAA8B,SAAQ,sBAAsB;IAC3E,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,SAAS,GAAI,QAAQ,sBAAsB,KAAG,MACS,CAAC;AAGrE,eAAO,MAAM,aAAa,aAExB,CAAC;AAEH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB,CAI1E;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,GAAG,sBAAsB,EAAE,CAoB9G;AAED,UAAU,sBAAsB,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAKD,qEAAqE;AACrE,wBAAgB,yBAAyB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,IAAI,CAAA;CAAE,CAO1F;AAED,wBAAsB,wBAAwB,CAAC,CAAC,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAKhG;AAqCD,wBAAsB,kCAAkC,IAAI,OAAO,CAAC,IAAI,CAAC,CAOxE"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { isDesktopPrerequisiteHelper } from './setupAudit.js';
|
|
3
|
+
export const targetKey = (target) => JSON.stringify([target.provider, target.backend, target.instance]);
|
|
4
|
+
// Shared Node/npm work is needed only by these bundled native installers.
|
|
5
|
+
export const NPM_PROVIDERS = new Set([
|
|
6
|
+
'codex', 'copilot', 'opencode', 'kilo', 'auggie', 'pi', 'cline',
|
|
7
|
+
]);
|
|
8
|
+
export function nativeSetupTarget(provider) {
|
|
9
|
+
if (provider === 'ollama')
|
|
10
|
+
return { provider, backend: 'local', instance: 'local' };
|
|
11
|
+
if (provider === 'devin')
|
|
12
|
+
return { provider, backend: 'agent', instance: 'acp' };
|
|
13
|
+
return { provider, backend: 'cli', instance: 'native' };
|
|
14
|
+
}
|
|
15
|
+
export function targetsForSetupHelper(helperId, selection) {
|
|
16
|
+
if (selection.state !== 'selected')
|
|
17
|
+
throw new Error('Select providers before running setup helpers.');
|
|
18
|
+
const provider = /^(?:windows|macos|linux)-(.+)-(?:native|local-model)-installer$/u.exec(helperId)?.[1];
|
|
19
|
+
let targets;
|
|
20
|
+
if (provider) {
|
|
21
|
+
const key = targetKey(nativeSetupTarget(provider));
|
|
22
|
+
targets = (selection.nativeSetupTargets ?? []).filter((target) => targetKey(target) === key);
|
|
23
|
+
}
|
|
24
|
+
else if (/(?:node-host-installer|npm-prefix-helper)$/u.test(helperId)) {
|
|
25
|
+
targets = (selection.nativeSetupTargets ?? []).filter((target) => target.backend === 'cli'
|
|
26
|
+
&& target.instance === 'native' && NPM_PROVIDERS.has(target.provider));
|
|
27
|
+
}
|
|
28
|
+
else if (helperId.endsWith('-github-cli-installer')) {
|
|
29
|
+
targets = (selection.nativeSetupTargets ?? []).filter((target) => target.provider === 'copilot'
|
|
30
|
+
&& target.backend === 'cli' && target.instance === 'native');
|
|
31
|
+
}
|
|
32
|
+
else if (helperId === 'windows-vcredist-installer') {
|
|
33
|
+
targets = (selection.nativeSetupTargets ?? []).filter((target) => target.backend === 'cli' && target.instance === 'native');
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
throw new Error('This helper has no selected-provider scope. Use individual provider helpers.');
|
|
37
|
+
}
|
|
38
|
+
if (!targets.length)
|
|
39
|
+
throw new Error('This helper is outside the selected provider scope.');
|
|
40
|
+
return targets;
|
|
41
|
+
}
|
|
42
|
+
const activeHelpers = new Set();
|
|
43
|
+
let helperPauseCount = 0;
|
|
44
|
+
/** Stop admitting helpers before Runtime is drained or restarted. */
|
|
45
|
+
export function pauseSelectedSetupHelpers() {
|
|
46
|
+
helperPauseCount++;
|
|
47
|
+
let resumed = false;
|
|
48
|
+
return {
|
|
49
|
+
drained: Promise.allSettled([...activeHelpers]).then(() => undefined),
|
|
50
|
+
resume: () => { if (!resumed) {
|
|
51
|
+
resumed = true;
|
|
52
|
+
helperPauseCount--;
|
|
53
|
+
} },
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export async function withSelectedSetupTargets(options) {
|
|
57
|
+
if (helperPauseCount)
|
|
58
|
+
throw new Error('Desktop is restarting or stopping. Wait before running setup helpers.');
|
|
59
|
+
const operation = runSelectedSetupOperation(options);
|
|
60
|
+
activeHelpers.add(operation);
|
|
61
|
+
try {
|
|
62
|
+
return await operation;
|
|
63
|
+
}
|
|
64
|
+
finally {
|
|
65
|
+
activeHelpers.delete(operation);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
async function runSelectedSetupOperation(options) {
|
|
69
|
+
// Node/npm/PATH and GitHub CLI prepare the Desktop host, including before a
|
|
70
|
+
// Runtime selection exists. The allowlist is exact; provider helpers still
|
|
71
|
+
// require their saved target and revision-bound operation admission below.
|
|
72
|
+
if (isDesktopPrerequisiteHelper(options.helperId))
|
|
73
|
+
return options.run();
|
|
74
|
+
const request = options.fetch ?? fetch;
|
|
75
|
+
const base = options.baseUrl.replace(/\/+$/u, '');
|
|
76
|
+
await retryPendingSetupOperationReleases();
|
|
77
|
+
const state = await request(`${base}/setup-state`, { signal: AbortSignal.timeout(10_000) });
|
|
78
|
+
if (!state.ok)
|
|
79
|
+
throw new Error('Cannot read Runtime provider selection.');
|
|
80
|
+
const { selection } = await state.json();
|
|
81
|
+
if (!selection)
|
|
82
|
+
throw new Error('Runtime provider selection is unavailable.');
|
|
83
|
+
const targets = targetsForSetupHelper(options.helperId, selection);
|
|
84
|
+
const operations = [];
|
|
85
|
+
try {
|
|
86
|
+
for (const target of targets) {
|
|
87
|
+
const operationId = randomUUID();
|
|
88
|
+
operations.push(operationId);
|
|
89
|
+
const response = await request(`${base}/setup-operations`, {
|
|
90
|
+
method: 'POST', headers: { 'content-type': 'application/json' },
|
|
91
|
+
body: JSON.stringify({ target, expectedRevision: options.expectedRevision ?? selection.revision, operationId }),
|
|
92
|
+
signal: AbortSignal.timeout(10_000),
|
|
93
|
+
});
|
|
94
|
+
if (!response.ok)
|
|
95
|
+
throw new Error('Provider selection changed. Refresh before running this helper.');
|
|
96
|
+
}
|
|
97
|
+
return await options.run();
|
|
98
|
+
}
|
|
99
|
+
finally {
|
|
100
|
+
for (const id of operations)
|
|
101
|
+
pendingReleases.set(`${base}/setup-operations/${id}`, request);
|
|
102
|
+
await retryPendingSetupOperationReleases();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Keep receipts when Runtime is briefly unreachable. Inventory refresh and the
|
|
106
|
+
// next save/helper retry cleanup, without discarding a completed helper result.
|
|
107
|
+
const pendingReleases = new Map();
|
|
108
|
+
export async function retryPendingSetupOperationReleases() {
|
|
109
|
+
await Promise.all([...pendingReleases].map(async ([url, request]) => {
|
|
110
|
+
try {
|
|
111
|
+
const response = await request(url, { method: 'DELETE', signal: AbortSignal.timeout(2_000) });
|
|
112
|
+
if (response.ok)
|
|
113
|
+
pendingReleases.delete(url);
|
|
114
|
+
}
|
|
115
|
+
catch { /* Keep the receipt for the next host interaction. */ }
|
|
116
|
+
}));
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=providerSelection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerSelection.js","sourceRoot":"","sources":["../../desktop/host/providerSelection.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,6 +62,8 @@ export interface RuntimeProviderDiagnosticsPayload {
|
|
|
62
62
|
}>;
|
|
63
63
|
}
|
|
64
64
|
interface BuildDesktopBootstrapSnapshotInput {
|
|
65
|
+
providerSelection?: import('./providerSelection.js').ProviderSelection | null;
|
|
66
|
+
providerCatalog?: import('./providerSelection.js').ProviderSelectionCatalogEntry[];
|
|
65
67
|
config: DesktopHostConfig;
|
|
66
68
|
services: ManagedServiceSnapshot[];
|
|
67
69
|
appHealth?: AppHealthPayload | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readiness.d.ts","sourceRoot":"","sources":["../../desktop/host/readiness.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"readiness.d.ts","sourceRoot":"","sources":["../../desktop/host/readiness.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,7 +46,7 @@ function resolveAppEntryPath(setupCompleteAt) {
|
|
|
46
46
|
return setupCompleteAt ? '/' : '/setup';
|
|
47
47
|
}
|
|
48
48
|
function hasReadyProviderPath(summary) {
|
|
49
|
-
return (summary?.ok ?? 0) > 0;
|
|
49
|
+
return (summary?.ok ?? 0) + (summary?.degraded ?? 0) > 0;
|
|
50
50
|
}
|
|
51
51
|
function toProviderIssues(payload) {
|
|
52
52
|
const candidates = Array.isArray(payload?.providers) ? payload.providers : [];
|
|
@@ -453,7 +453,7 @@ function buildActions(phase, options) {
|
|
|
453
453
|
actions.push(primary ? { id, label, primary: true } : { id, label });
|
|
454
454
|
}
|
|
455
455
|
// ── Continue slot ──────────────────────────────────────────────────
|
|
456
|
-
if (!options.
|
|
456
|
+
if (!options.selectionRequired) {
|
|
457
457
|
if (phase === 'ready_for_setup') {
|
|
458
458
|
pushAction('open_setup', 'Continue to Setup', true);
|
|
459
459
|
}
|
|
@@ -545,16 +545,10 @@ export function buildDesktopBootstrapSnapshot(input) {
|
|
|
545
545
|
const hasRuntimeHealth = Boolean(input.runtimeHealth);
|
|
546
546
|
const hasAppHealth = Boolean(input.appHealth);
|
|
547
547
|
const hasAppShell = Boolean(input.appShell);
|
|
548
|
-
const runtimeBootstrapRequired = Boolean(input.
|
|
549
|
-
|| input.
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
&& input.cliInventory
|
|
553
|
-
&& input.cliInventory.source === 'runtime'
|
|
554
|
-
&& input.cliInventory.total === 0);
|
|
555
|
-
const cliInventoryPending = Boolean(cliInventoryGateEnabled
|
|
556
|
-
&& !setupCompleted
|
|
557
|
-
&& (!input.cliInventory || input.cliInventory.source === 'unknown'));
|
|
548
|
+
const runtimeBootstrapRequired = Boolean(input.providerSelection
|
|
549
|
+
? input.providerSelection.state === 'missing' || input.providerSelection.state === 'invalid'
|
|
550
|
+
: input.runtimeHealth?.readiness?.bootstrapRequired === true
|
|
551
|
+
|| input.runtimeHealth?.startup?.bootstrapRequired === true);
|
|
558
552
|
let phase;
|
|
559
553
|
let status;
|
|
560
554
|
let summary;
|
|
@@ -573,20 +567,10 @@ export function buildDesktopBootstrapSnapshot(input) {
|
|
|
573
567
|
status = 'degraded';
|
|
574
568
|
summary = 'Local services are ready. Running prerequisite checks.';
|
|
575
569
|
}
|
|
576
|
-
else if (
|
|
577
|
-
|
|
578
|
-
// saying zero CLIs are installed. Source 'unknown' (probe failed / pending)
|
|
579
|
-
// never fires the gate so we don't block users on unavailable signal.
|
|
580
|
-
phase = 'needs_prerequisites';
|
|
581
|
-
status = 'degraded';
|
|
582
|
-
summary = setupCompleteAt
|
|
583
|
-
? 'No CLI is currently installed. Install one to continue using Cats.'
|
|
584
|
-
: 'Welcome. Install a CLI to get started with Cats.';
|
|
585
|
-
}
|
|
586
|
-
else if (cliInventoryPending) {
|
|
587
|
-
phase = 'checking_prerequisites';
|
|
570
|
+
else if (runtimeBootstrapRequired) {
|
|
571
|
+
phase = 'ready_for_setup';
|
|
588
572
|
status = 'degraded';
|
|
589
|
-
summary = '
|
|
573
|
+
summary = 'Choose the providers Cats may use. You can also continue with an empty selection.';
|
|
590
574
|
}
|
|
591
575
|
else if (!setupCompleted) {
|
|
592
576
|
if (!hasRuntimeHealth) {
|
|
@@ -607,12 +591,7 @@ export function buildDesktopBootstrapSnapshot(input) {
|
|
|
607
591
|
status = 'unavailable';
|
|
608
592
|
summary = 'Cats Runtime is unavailable. Open Cats to recover in-app once the runtime is back.';
|
|
609
593
|
}
|
|
610
|
-
else if (
|
|
611
|
-
phase = 'ready_for_setup';
|
|
612
|
-
status = 'degraded';
|
|
613
|
-
summary = 'Cats Runtime setup is still required. Continue into setup.';
|
|
614
|
-
}
|
|
615
|
-
else if (!input.providerDiagnostics || hasReadyProviderPath(providerSummary)) {
|
|
594
|
+
else if (input.providerSelection?.state === 'empty' || !input.providerDiagnostics || hasReadyProviderPath(providerSummary)) {
|
|
616
595
|
phase = 'ready_for_chat';
|
|
617
596
|
status = normalizeHealthStatus(input.runtimeHealth?.status)
|
|
618
597
|
?? normalizeHealthStatus(input.runtimeHealth?.runtime?.status)
|
|
@@ -668,7 +647,7 @@ export function buildDesktopBootstrapSnapshot(input) {
|
|
|
668
647
|
actions: buildActions(phase, {
|
|
669
648
|
appReady: Boolean(appService?.ready),
|
|
670
649
|
setupComplete: setupCompleted,
|
|
671
|
-
|
|
650
|
+
selectionRequired: runtimeBootstrapRequired,
|
|
672
651
|
setup,
|
|
673
652
|
cliInventoryError: input.cliInventoryError,
|
|
674
653
|
}),
|
|
@@ -680,8 +659,10 @@ export function buildDesktopBootstrapSnapshot(input) {
|
|
|
680
659
|
setup,
|
|
681
660
|
diagnostics: null,
|
|
682
661
|
hostStatePath: input.hostStatePath ?? input.config.paths.hostStatePath,
|
|
683
|
-
prerequisites: input.cliInventory || input.cliInventoryError
|
|
662
|
+
prerequisites: input.cliInventory || input.cliInventoryError || input.providerSelection
|
|
684
663
|
? {
|
|
664
|
+
providerSelection: input.providerSelection ?? null,
|
|
665
|
+
providerCatalog: input.providerCatalog ?? [],
|
|
685
666
|
cliInventory: input.cliInventory ?? null,
|
|
686
667
|
cliInventoryError: input.cliInventoryError ?? null,
|
|
687
668
|
}
|