@cats-inc/cats-platform 0.1.10 → 0.2.8
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 +9 -16
- package/README.md +18 -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 +264 -77
- package/build/desktop/bootstrapPage.js.map +1 -1
- package/build/desktop/cliInventoryProbe.d.ts +23 -2
- package/build/desktop/cliInventoryProbe.d.ts.map +1 -1
- package/build/desktop/cliInventoryProbe.js +54 -9
- 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 +19 -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 +177 -201
- 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 +7 -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/providerSelection.d.ts +37 -0
- package/build/desktop/providerSelection.d.ts.map +1 -0
- package/build/desktop/providerSelection.js +112 -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 +49 -35
- package/build/desktop/readiness.js.map +1 -1
- package/build/desktop/setupAssets.d.ts.map +1 -1
- package/build/desktop/setupAssets.js +16 -14
- package/build/desktop/setupAssets.js.map +1 -1
- package/build/desktop/setupAudit.d.ts +2 -3
- package/build/desktop/setupAudit.d.ts.map +1 -1
- package/build/desktop/setupAudit.js +14 -34
- package/build/desktop/setupAudit.js.map +1 -1
- package/build/desktop/tray.d.ts +1 -1
- package/build/desktop/tray.d.ts.map +1 -1
- package/build/desktop/tray.js +2 -7
- package/build/desktop/tray.js.map +1 -1
- package/build/desktop/trayMenu.d.ts +23 -2
- package/build/desktop/trayMenu.d.ts.map +1 -1
- package/build/desktop/trayMenu.js +24 -30
- package/build/desktop/trayMenu.js.map +1 -1
- package/build/desktop/updateDialog.d.ts +66 -0
- package/build/desktop/updateDialog.d.ts.map +1 -0
- package/build/desktop/updateDialog.js +258 -0
- package/build/desktop/updateDialog.js.map +1 -0
- package/build/desktop/updaterAdapter.d.ts +1 -0
- package/build/desktop/updaterAdapter.d.ts.map +1 -1
- package/build/desktop/updaterAdapter.js +13 -1
- package/build/desktop/updaterAdapter.js.map +1 -1
- package/build/renderer/assets/{ActiveSessionPermissionChip-Dl2UOFgh.js → ActiveSessionPermissionChip-CAgN-tXv.js} +1 -1
- package/build/renderer/assets/App-BZA23O2J.js +2 -0
- package/build/renderer/assets/App-DxsV-tKS.css +1 -0
- package/build/renderer/assets/{App-ChvP0G9X.js → App-YqprEL2n.js} +1 -1
- package/build/renderer/assets/App-rGw9J8PZ.js +1 -0
- package/build/renderer/assets/WorkspaceAppRoutes-BCHCikmJ.js +1 -0
- package/build/renderer/assets/app-BV3UAQkR.css +1 -0
- package/build/renderer/assets/app-CVPqqfZo.js +45 -0
- package/build/renderer/assets/conversationSidebarRecentEntries-iqaLqA1n.js +6 -0
- package/build/renderer/assets/{useDraftSessionChips-By3XXabI.js → useDraftSessionChips-D9BX6X92.js} +1 -1
- package/build/renderer/index.html +2 -2
- package/build/server/app/renderer/auth/api.d.ts +28 -2
- package/build/server/app/renderer/auth/api.d.ts.map +1 -1
- package/build/server/app/renderer/auth/api.js +29 -4
- 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 +15 -6
- package/build/server/app/renderer/providerCatalogClient.js.map +1 -1
- package/build/server/app/renderer/providerRegistryClient.d.ts +1 -1
- package/build/server/app/renderer/providerRegistryClient.d.ts.map +1 -1
- package/build/server/app/renderer/providerRegistryClient.js +23 -41
- package/build/server/app/renderer/providerRegistryClient.js.map +1 -1
- package/build/server/app/renderer/settings/settingsDesktopUpdateLabels.d.ts +11 -4
- package/build/server/app/renderer/settings/settingsDesktopUpdateLabels.d.ts.map +1 -1
- package/build/server/app/renderer/settings/settingsDesktopUpdateLabels.js +25 -5
- package/build/server/app/renderer/settings/settingsDesktopUpdateLabels.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 +8 -3
- package/build/server/app/server/authGatePolicy.js.map +1 -1
- package/build/server/app/server/authRoutes.d.ts +14 -1
- package/build/server/app/server/authRoutes.d.ts.map +1 -1
- package/build/server/app/server/authRoutes.js +395 -76
- package/build/server/app/server/authRoutes.js.map +1 -1
- package/build/server/app/server/contracts.d.ts +19 -1
- 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 +48 -2
- 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 +2 -1
- package/build/server/app/server/platformSetupRoutes.d.ts.map +1 -1
- package/build/server/app/server/platformSetupRoutes.js +117 -64
- 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 +33 -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 +16 -19
- 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/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 +22 -3
- package/build/server/config.d.ts.map +1 -1
- package/build/server/config.js +14 -13
- package/build/server/config.js.map +1 -1
- package/build/server/design/components/providerModelFieldsSupport.d.ts +3 -3
- package/build/server/design/components/providerModelFieldsSupport.d.ts.map +1 -1
- package/build/server/design/components/providerModelFieldsSupport.js +40 -38
- package/build/server/design/components/providerModelFieldsSupport.js.map +1 -1
- package/build/server/design/components/useProviderCatalogState.d.ts +1 -0
- package/build/server/design/components/useProviderCatalogState.d.ts.map +1 -1
- package/build/server/design/components/useProviderCatalogState.js +1 -0
- package/build/server/design/components/useProviderCatalogState.js.map +1 -1
- package/build/server/design/components/useProviderRegistryAutoRecheck.d.ts.map +1 -1
- package/build/server/design/components/useProviderRegistryAutoRecheck.js +20 -13
- package/build/server/design/components/useProviderRegistryAutoRecheck.js.map +1 -1
- package/build/server/design/components/useProviderRegistryState.d.ts.map +1 -1
- package/build/server/design/components/useProviderRegistryState.js +12 -25
- package/build/server/design/components/useProviderRegistryState.js.map +1 -1
- package/build/server/design/components/useProviderTargetReconciliation.d.ts.map +1 -1
- package/build/server/design/components/useProviderTargetReconciliation.js +5 -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/auth/actionGrant.d.ts +61 -0
- package/build/server/platform/auth/actionGrant.d.ts.map +1 -0
- package/build/server/platform/auth/actionGrant.js +108 -0
- package/build/server/platform/auth/actionGrant.js.map +1 -0
- package/build/server/platform/auth/adminCredentials.d.ts +37 -0
- package/build/server/platform/auth/adminCredentials.d.ts.map +1 -0
- package/build/server/platform/auth/adminCredentials.js +63 -0
- package/build/server/platform/auth/adminCredentials.js.map +1 -0
- package/build/server/platform/auth/bootstrap.d.ts +14 -0
- package/build/server/platform/auth/bootstrap.d.ts.map +1 -1
- package/build/server/platform/auth/bootstrap.js +29 -4
- package/build/server/platform/auth/bootstrap.js.map +1 -1
- package/build/server/platform/auth/config.d.ts.map +1 -1
- package/build/server/platform/auth/config.js +1 -1
- package/build/server/platform/auth/config.js.map +1 -1
- package/build/server/platform/auth/errorCodes.d.ts +2 -0
- package/build/server/platform/auth/errorCodes.d.ts.map +1 -1
- package/build/server/platform/auth/errorCodes.js +2 -0
- package/build/server/platform/auth/errorCodes.js.map +1 -1
- package/build/server/platform/auth/googleAccount.d.ts +40 -13
- package/build/server/platform/auth/googleAccount.d.ts.map +1 -1
- package/build/server/platform/auth/googleAccount.js +89 -70
- package/build/server/platform/auth/googleAccount.js.map +1 -1
- package/build/server/platform/auth/index.d.ts +4 -0
- package/build/server/platform/auth/index.d.ts.map +1 -1
- package/build/server/platform/auth/index.js +4 -0
- package/build/server/platform/auth/index.js.map +1 -1
- package/build/server/platform/auth/localLogin.d.ts +10 -0
- package/build/server/platform/auth/localLogin.d.ts.map +1 -1
- package/build/server/platform/auth/localLogin.js +17 -0
- package/build/server/platform/auth/localLogin.js.map +1 -1
- package/build/server/platform/auth/loginMethods.d.ts +18 -0
- package/build/server/platform/auth/loginMethods.d.ts.map +1 -0
- package/build/server/platform/auth/loginMethods.js +19 -0
- package/build/server/platform/auth/loginMethods.js.map +1 -0
- package/build/server/platform/auth/securityEvents.d.ts +31 -0
- package/build/server/platform/auth/securityEvents.d.ts.map +1 -0
- package/build/server/platform/auth/securityEvents.js +45 -0
- package/build/server/platform/auth/securityEvents.js.map +1 -0
- 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 -8
- 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 +8 -0
- package/build/server/products/chat/api/routeSupport.d.ts.map +1 -1
- package/build/server/products/chat/api/routeSupport.js +5 -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 +24 -91
- 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/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 -8
- package/build/server/products/shared/api/workspaceContracts.d.ts.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 +24 -0
- package/build/server/runtime/client.d.ts.map +1 -1
- package/build/server/runtime/client.js +62 -1
- package/build/server/runtime/client.js.map +1 -1
- package/build/server/runtime/setup.d.ts +10 -4
- package/build/server/runtime/setup.d.ts.map +1 -1
- package/build/server/runtime/setup.js +14 -18
- 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 +112 -81
- 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/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 +238 -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 +236 -3
- package/build/server/shared/i18n/catalogs/zh-TW.js.map +1 -1
- package/build/server/shared/i18n/index.d.ts +231 -0
- package/build/server/shared/i18n/index.d.ts.map +1 -1
- package/build/server/shared/i18n/messageKeys.d.ts +231 -0
- package/build/server/shared/i18n/messageKeys.d.ts.map +1 -1
- package/build/server/shared/i18n/messageKeys.js +231 -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 +6 -2
- package/build/server/shared/providerCatalog.d.ts.map +1 -1
- package/build/server/shared/providerCatalog.js +15 -1
- package/build/server/shared/providerCatalog.js.map +1 -1
- package/build/server/shared/providerCatalogData.d.ts +38 -22
- package/build/server/shared/providerCatalogData.d.ts.map +1 -1
- package/build/server/shared/providerCatalogData.js +31 -10
- 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 +6 -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/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 +23 -1
- 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/scripts/README.md +73 -26
- package/scripts/build-desktop-installer.mjs +15 -0
- 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-meta-cli.sh +8 -0
- package/scripts/linux/node-cli-common.sh +2 -75
- package/scripts/linux/provider-cli-common.sh +103 -30
- package/scripts/linux/sync-agent-skills.sh +27 -5
- package/scripts/linux/test-linux-package-smoke.sh +4 -3
- package/scripts/linux/upgrade-cli-tools.sh +1 -1
- 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-meta-cli.sh +8 -0
- package/scripts/macos/node-cli-common.sh +2 -75
- package/scripts/macos/provider-cli-common.sh +103 -30
- package/scripts/macos/sync-agent-skills.sh +27 -5
- package/scripts/macos/test-macos-package-smoke.sh +4 -3
- package/scripts/macos/upgrade-cli-tools.sh +1 -1
- package/scripts/package-desktop.mjs +15 -2
- package/scripts/testing/check-usage-app.mts +266 -0
- package/scripts/testing/usage-app-smoke-electron.cjs +10 -0
- package/scripts/testing/usage-app-smoke-renderer.tsx +8 -0
- package/scripts/verify-desktop-app-bundle.mjs +108 -0
- package/scripts/windows/Build-DesktopPackage.ps1 +9 -6
- package/scripts/windows/Check-WindowsSetupReadiness.ps1 +14 -443
- package/scripts/windows/{Install-Aider.ps1 → Install-MetaCli.ps1} +180 -92
- package/scripts/windows/Install-Ollama.ps1 +4 -1
- package/scripts/windows/Remove-MergedBranches.ps1 +229 -0
- package/scripts/windows/Sync-AgentSkills.ps1 +29 -6
- package/scripts/windows/Test-WindowsInstallerSmoke.ps1 +2 -1
- 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/App-C57f4p8k.js +0 -2
- package/build/renderer/assets/App-CPqGDXVi.js +0 -1
- package/build/renderer/assets/App-DGwkRFZl.css +0 -1
- package/build/renderer/assets/WorkspaceAppRoutes-DYg2vnjz.js +0 -1
- package/build/renderer/assets/app-DVN9Ghrk.js +0 -43
- package/build/renderer/assets/app-XnXwkcD2.css +0 -1
- package/build/renderer/assets/conversationSidebarRecentEntries-XZVCnMLw.js +0 -6
- package/scripts/linux/install-aider.sh +0 -8
- package/scripts/macos/install-aider.sh +0 -8
|
@@ -639,11 +639,11 @@ export function buildDesktopBootstrapPage() {
|
|
|
639
639
|
'loading.ready': 'Ready.',
|
|
640
640
|
'loading.retrying': 'Trying again\u2026',
|
|
641
641
|
'loading.startingUp': 'Starting up\u2026',
|
|
642
|
-
'onboarding.headline': '
|
|
642
|
+
'onboarding.headline': 'Choose which providers Cats may use, then continue into setup.',
|
|
643
643
|
'onboarding.installCli': 'Install a CLI',
|
|
644
644
|
'onboarding.installNodeFirst': 'Install Node first',
|
|
645
645
|
'onboarding.nodeLabel': 'Node.js / npm',
|
|
646
|
-
'onboarding.
|
|
646
|
+
'onboarding.ollamaLabel': 'Ollama',
|
|
647
647
|
'onboarding.rescanClis': 'Detect again',
|
|
648
648
|
'onboarding.scanClis': 'Detect installed CLIs',
|
|
649
649
|
'onboarding.scanningClis': 'Detecting…',
|
|
@@ -657,7 +657,7 @@ export function buildDesktopBootstrapPage() {
|
|
|
657
657
|
'recovery.summary.readyForSetup': 'Local helpers are running. Continue into setup to get started.',
|
|
658
658
|
'recovery.title.failed': 'Cats needs a quick restart',
|
|
659
659
|
'recovery.title.helperAttention': 'Cats can open, but one helper needs attention',
|
|
660
|
-
'recovery.title.installCliContinue': '
|
|
660
|
+
'recovery.title.installCliContinue': 'Choose providers to continue using Cats',
|
|
661
661
|
'recovery.title.oneSetupFix': 'Cats needs one setup fix',
|
|
662
662
|
'recovery.title.pickCli': 'Pick a CLI to get started',
|
|
663
663
|
'recovery.title.readyForSetup': 'Cats is ready to set up',
|
|
@@ -669,6 +669,12 @@ export function buildDesktopBootstrapPage() {
|
|
|
669
669
|
'section.setupFix': 'Setup fix',
|
|
670
670
|
'section.whatNeedsAttention': 'What needs attention',
|
|
671
671
|
'setup.noSummary': 'No summary recorded.',
|
|
672
|
+
'selection.title': 'Choose your providers',
|
|
673
|
+
'selection.description': 'Cats only checks and uses the providers you select. Save an empty selection to continue without a provider.',
|
|
674
|
+
'selection.save': 'Save selection',
|
|
675
|
+
'selection.reload': 'Reload edited configuration',
|
|
676
|
+
'selection.reset': 'Discard unsaved changes',
|
|
677
|
+
'selection.loading': 'Loading provider selection…',
|
|
672
678
|
'setup.recommendedNextStep': 'Recommended next step',
|
|
673
679
|
'setup.restartNeeded': 'A restart is needed before the next step.',
|
|
674
680
|
'setupError.failedBeforeStructuredOutput': '{helperLabel} failed before emitting structured output.',
|
|
@@ -760,8 +766,10 @@ export function buildDesktopBootstrapPage() {
|
|
|
760
766
|
'status.error': 'error',
|
|
761
767
|
'status.failed': 'failed',
|
|
762
768
|
'status.info': 'info',
|
|
769
|
+
'status.checkingInstall': 'Checking…',
|
|
763
770
|
'status.install': 'Install',
|
|
764
771
|
'status.installed': 'Installed',
|
|
772
|
+
'status.notInstalled': 'Not installed',
|
|
765
773
|
'status.installedWithCheck': '\u2713 Installed',
|
|
766
774
|
'status.installing': 'Installing\u2026',
|
|
767
775
|
'status.notDetected': 'Not detected yet',
|
|
@@ -892,11 +900,11 @@ export function buildDesktopBootstrapPage() {
|
|
|
892
900
|
'loading.ready': '已就緒。',
|
|
893
901
|
'loading.retrying': '正在重試…',
|
|
894
902
|
'loading.startingUp': '正在啟動…',
|
|
895
|
-
'onboarding.headline': '
|
|
903
|
+
'onboarding.headline': '選擇 Cats 可以使用的 providers,再繼續設定。',
|
|
896
904
|
'onboarding.installCli': '安裝 CLI',
|
|
897
905
|
'onboarding.installNodeFirst': '請先安裝 Node',
|
|
898
906
|
'onboarding.nodeLabel': 'Node.js / npm',
|
|
899
|
-
'onboarding.
|
|
907
|
+
'onboarding.ollamaLabel': 'Ollama',
|
|
900
908
|
'onboarding.rescanClis': '重新偵測',
|
|
901
909
|
'onboarding.scanClis': '偵測已安裝的 CLI',
|
|
902
910
|
'onboarding.scanningClis': '偵測中…',
|
|
@@ -910,7 +918,7 @@ export function buildDesktopBootstrapPage() {
|
|
|
910
918
|
'recovery.summary.readyForSetup': '本機輔助程式已在執行。請繼續進入設定開始使用。',
|
|
911
919
|
'recovery.title.failed': 'Cats 需要快速重新啟動',
|
|
912
920
|
'recovery.title.helperAttention': 'Cats 可以開啟,但有一個本機輔助程式需要處理',
|
|
913
|
-
'recovery.title.installCliContinue': '
|
|
921
|
+
'recovery.title.installCliContinue': '選擇 providers 以繼續使用 Cats',
|
|
914
922
|
'recovery.title.oneSetupFix': 'Cats 需要完成一項設定修復',
|
|
915
923
|
'recovery.title.pickCli': '選一個 CLI 開始',
|
|
916
924
|
'recovery.title.readyForSetup': 'Cats 已準備好進行設定',
|
|
@@ -922,6 +930,12 @@ export function buildDesktopBootstrapPage() {
|
|
|
922
930
|
'section.setupFix': '設定修復',
|
|
923
931
|
'section.whatNeedsAttention': '需要處理的項目',
|
|
924
932
|
'setup.noSummary': '未記錄摘要。',
|
|
933
|
+
'selection.title': '選擇你要使用的 providers',
|
|
934
|
+
'selection.description': 'Cats 只會檢查與使用你選擇的 providers。也可以儲存空白選擇,稍後再設定。',
|
|
935
|
+
'selection.save': '儲存選擇',
|
|
936
|
+
'selection.reload': '重新載入已編輯的設定',
|
|
937
|
+
'selection.reset': '捨棄尚未儲存的變更',
|
|
938
|
+
'selection.loading': '正在載入 provider 選擇…',
|
|
925
939
|
'setup.recommendedNextStep': '建議的下一步',
|
|
926
940
|
'setup.restartNeeded': '下一步前需要重新啟動。',
|
|
927
941
|
'setupError.failedBeforeStructuredOutput': '{helperLabel} 在輸出結構化結果前失敗。',
|
|
@@ -1013,8 +1027,10 @@ export function buildDesktopBootstrapPage() {
|
|
|
1013
1027
|
'status.error': '錯誤',
|
|
1014
1028
|
'status.failed': '失敗',
|
|
1015
1029
|
'status.info': '資訊',
|
|
1030
|
+
'status.checkingInstall': '檢查中…',
|
|
1016
1031
|
'status.install': '安裝',
|
|
1017
1032
|
'status.installed': '已安裝',
|
|
1033
|
+
'status.notInstalled': '未安裝',
|
|
1018
1034
|
'status.installedWithCheck': '\u2713 已安裝',
|
|
1019
1035
|
'status.installing': '安裝中…',
|
|
1020
1036
|
'status.notDetected': '尚未偵測',
|
|
@@ -1553,6 +1569,7 @@ export function buildDesktopBootstrapPage() {
|
|
|
1553
1569
|
if (v == null || v === false) continue;
|
|
1554
1570
|
if (k === 'class') e.className = v;
|
|
1555
1571
|
else if (k === 'onclick') e.addEventListener('click', v);
|
|
1572
|
+
else if (k === 'onchange') e.addEventListener('change', v);
|
|
1556
1573
|
else if (k === 'disabled') e.disabled = true;
|
|
1557
1574
|
else e.setAttribute(k, String(v));
|
|
1558
1575
|
}
|
|
@@ -1603,13 +1620,9 @@ export function buildDesktopBootstrapPage() {
|
|
|
1603
1620
|
when the user explicitly continues into setup. */
|
|
1604
1621
|
var onboardingActive = false;
|
|
1605
1622
|
|
|
1606
|
-
function
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
&& snapshot.prerequisites && snapshot.prerequisites.cliInventory
|
|
1610
|
-
&& snapshot.prerequisites.cliInventory.source === 'runtime'
|
|
1611
|
-
&& snapshot.prerequisites.cliInventory.total === 0
|
|
1612
|
-
);
|
|
1623
|
+
function isSelectionRequired(snapshot) {
|
|
1624
|
+
var selection = snapshot && snapshot.prerequisites && snapshot.prerequisites.providerSelection;
|
|
1625
|
+
return Boolean(selection && (selection.state === 'missing' || selection.state === 'invalid'));
|
|
1613
1626
|
}
|
|
1614
1627
|
|
|
1615
1628
|
function isSetupComplete(snapshot) {
|
|
@@ -1635,13 +1648,13 @@ export function buildDesktopBootstrapPage() {
|
|
|
1635
1648
|
}
|
|
1636
1649
|
if (
|
|
1637
1650
|
usesSetupStatusOnboarding(snapshot)
|
|
1638
|
-
&& !setupComplete
|
|
1651
|
+
&& (!setupComplete || isSelectionRequired(snapshot))
|
|
1639
1652
|
&& snapshot.phase === 'ready_for_setup'
|
|
1640
1653
|
) {
|
|
1641
1654
|
return 'onboarding';
|
|
1642
1655
|
}
|
|
1643
1656
|
if (snapshot.phase === 'needs_prerequisites') {
|
|
1644
|
-
if (
|
|
1657
|
+
if (isSelectionRequired(snapshot) && !setupComplete) {
|
|
1645
1658
|
return 'onboarding';
|
|
1646
1659
|
}
|
|
1647
1660
|
return 'recovery';
|
|
@@ -1652,21 +1665,25 @@ export function buildDesktopBootstrapPage() {
|
|
|
1652
1665
|
/* CLI install card — used by onboarding mode AND the recovery accordion.
|
|
1653
1666
|
First row favors CLIs that do not depend on Node/npm. Lower rows are
|
|
1654
1667
|
collapsed until Show more is pressed, then npm prerequisites appear
|
|
1655
|
-
before npm-based CLIs.
|
|
1668
|
+
before npm-based CLIs.
|
|
1669
|
+
|
|
1670
|
+
Ollama is deliberately absent from these lists: it is a local model
|
|
1671
|
+
runtime, not a CLI provider, so the runtime scan never reports it. Its
|
|
1672
|
+
card is built from the readiness audit instead (see
|
|
1673
|
+
buildLocalModelCard). */
|
|
1656
1674
|
var ONBOARDING_NATIVE_PROVIDER_ORDER = [
|
|
1657
1675
|
'claude_code', 'antigravity', 'cursor_agent', 'kiro', 'junie',
|
|
1658
|
-
'goose', 'grok', '
|
|
1676
|
+
'goose', 'grok', 'devin', 'muse'
|
|
1659
1677
|
];
|
|
1660
1678
|
var ONBOARDING_NPM_PROVIDER_ORDER = [
|
|
1661
1679
|
'codex', 'copilot', 'opencode',
|
|
1662
|
-
'kilo', 'auggie', 'pi'
|
|
1680
|
+
'kilo', 'auggie', 'pi', 'cline'
|
|
1663
1681
|
];
|
|
1664
1682
|
var ONBOARDING_NODE_HELPER_SUFFIX = '-node-host-installer';
|
|
1683
|
+
var ONBOARDING_LOCAL_MODEL_HELPER_SUFFIX = '-ollama-local-model-installer';
|
|
1665
1684
|
var ONBOARDING_CARD_LABELS = {
|
|
1666
|
-
node: tx('onboarding.nodeLabel')
|
|
1667
|
-
|
|
1668
|
-
var ONBOARDING_CARD_STATUS = {
|
|
1669
|
-
node: tx('onboarding.nodeStatus')
|
|
1685
|
+
node: tx('onboarding.nodeLabel'),
|
|
1686
|
+
ollama: tx('onboarding.ollamaLabel')
|
|
1670
1687
|
};
|
|
1671
1688
|
var ONBOARDING_PROVIDER_LABELS = {
|
|
1672
1689
|
claude_code: 'Claude',
|
|
@@ -1684,23 +1701,23 @@ export function buildDesktopBootstrapPage() {
|
|
|
1684
1701
|
grok: 'Grok',
|
|
1685
1702
|
cline: 'Cline',
|
|
1686
1703
|
devin: 'Devin',
|
|
1687
|
-
|
|
1688
|
-
ollama: 'Ollama'
|
|
1704
|
+
muse: 'Meta Muse'
|
|
1689
1705
|
};
|
|
1690
1706
|
var cliInstallingState = Object.create(null);
|
|
1691
1707
|
var cliScanInFlight = false;
|
|
1692
1708
|
var onboardingExpanded = false;
|
|
1693
1709
|
|
|
1694
1710
|
/* The runtime only fills in cliInventory after a setup scan has actually
|
|
1695
|
-
run
|
|
1696
|
-
|
|
1697
|
-
|
|
1711
|
+
run. The host now kicks that scan off in the background at startup, so
|
|
1712
|
+
this is a window of a few seconds rather than a state the user is parked
|
|
1713
|
+
in until they click Detect — but the window still exists, and until it
|
|
1714
|
+
closes every candidate arrives as installed:false, which is
|
|
1698
1715
|
indistinguishable from "we checked and it is missing". Render that as
|
|
1699
1716
|
unknown instead of claiming the CLI is absent; the inventory's source
|
|
1700
1717
|
field is the flag that tells the two apart. */
|
|
1701
1718
|
function isCliInventoryScanned(snapshot) {
|
|
1702
1719
|
var inv = snapshot && snapshot.prerequisites && snapshot.prerequisites.cliInventory;
|
|
1703
|
-
return Boolean(inv && inv.source === 'runtime');
|
|
1720
|
+
return Boolean(inv && inv.source === 'runtime' && inv.scannedAt);
|
|
1704
1721
|
}
|
|
1705
1722
|
|
|
1706
1723
|
function pickInventoryCandidate(snapshot, providerId) {
|
|
@@ -1744,45 +1761,133 @@ export function buildDesktopBootstrapPage() {
|
|
|
1744
1761
|
|| planned.indexOf('install_node_lts_via_nvm') >= 0;
|
|
1745
1762
|
}
|
|
1746
1763
|
|
|
1747
|
-
|
|
1764
|
+
/* Last conclusive answer per audit-backed card.
|
|
1765
|
+
setupSnap carries only the single most recent setup action, so installing
|
|
1766
|
+
any CLI from this grid overwrites the audit result that these cards are
|
|
1767
|
+
built from. Without a memory the Node card would fall back to "unknown"
|
|
1768
|
+
every time the user installed something, which is the state it is least
|
|
1769
|
+
able to leave on its own -- the audit only re-runs on its own terms. */
|
|
1770
|
+
var lastKnownAuditState = { node: null, ollama: null };
|
|
1771
|
+
|
|
1772
|
+
function rememberAuditState(key, state) {
|
|
1773
|
+
if (state !== 'checking') {
|
|
1774
|
+
lastKnownAuditState[key] = state;
|
|
1775
|
+
}
|
|
1776
|
+
return state === 'checking' && lastKnownAuditState[key]
|
|
1777
|
+
? lastKnownAuditState[key]
|
|
1778
|
+
: state;
|
|
1779
|
+
}
|
|
1780
|
+
|
|
1781
|
+
/* 'checking' | 'ready' | 'missing'.
|
|
1782
|
+
'checking' and 'missing' were previously the same value, so a card that
|
|
1783
|
+
had not been looked at yet rendered exactly like one that had been looked
|
|
1784
|
+
at and found absent -- a Node card reading "Install" while Node was in
|
|
1785
|
+
fact installed. A failed audit resolves to 'missing' rather than
|
|
1786
|
+
'checking': it is not coming back on its own, and an install button the
|
|
1787
|
+
user can press beats a spinner that never stops. */
|
|
1788
|
+
function resolveNodePrerequisiteState(setupSnap) {
|
|
1748
1789
|
var action = setupSnap && setupSnap.state ? setupSnap.state.lastAction : null;
|
|
1749
|
-
if (!action
|
|
1790
|
+
if (!action) return rememberAuditState('node', 'checking');
|
|
1791
|
+
if (action.runState === 'failed') return rememberAuditState('node', 'missing');
|
|
1750
1792
|
if (isNodePrerequisiteHelperId(action.helperId)) {
|
|
1751
|
-
return action.status === 'ready';
|
|
1793
|
+
return rememberAuditState('node', action.status === 'ready' ? 'ready' : 'missing');
|
|
1752
1794
|
}
|
|
1753
1795
|
if (isReadinessAuditAction(action)) {
|
|
1754
|
-
return
|
|
1796
|
+
return rememberAuditState(
|
|
1797
|
+
'node',
|
|
1798
|
+
plannedActionsIncludeNodeInstall(action) ? 'missing' : 'ready'
|
|
1799
|
+
);
|
|
1755
1800
|
}
|
|
1756
|
-
|
|
1801
|
+
/* Some other helper ran and says nothing about Node. */
|
|
1802
|
+
return rememberAuditState('node', 'checking');
|
|
1803
|
+
}
|
|
1804
|
+
|
|
1805
|
+
function buildAuditBackedCard(helper, label, state) {
|
|
1806
|
+
var ready = state === 'ready';
|
|
1807
|
+
return {
|
|
1808
|
+
helperId: helper ? helper.id : null,
|
|
1809
|
+
label: label,
|
|
1810
|
+
/* The status line carries a state in every card in this grid. It used
|
|
1811
|
+
to carry the reason the card exists -- why npm CLIs depend on it --
|
|
1812
|
+
which sits in the same place a state sits and therefore reads as one.
|
|
1813
|
+
The state it implied was "you need this and do not have it", which
|
|
1814
|
+
was wrong for the whole window before the audit reported. */
|
|
1815
|
+
statusText: tx('status.notInstalled'),
|
|
1816
|
+
installed: ready,
|
|
1817
|
+
auditPending: state === 'checking',
|
|
1818
|
+
available: helper ? helper.available : false,
|
|
1819
|
+
supported: helper ? helper.supported : true,
|
|
1820
|
+
supportsApply: ready || !helper ? false : helper.supportsApply
|
|
1821
|
+
};
|
|
1757
1822
|
}
|
|
1758
1823
|
|
|
1759
1824
|
function buildNodePrerequisiteCard(setupSnap) {
|
|
1760
1825
|
var helper = pickNodePrerequisiteHelper(setupSnap);
|
|
1761
|
-
if (!helper) {
|
|
1762
|
-
if (!setupSnap) {
|
|
1763
|
-
return {
|
|
1764
|
-
helperId: null,
|
|
1765
|
-
label: ONBOARDING_CARD_LABELS.node,
|
|
1766
|
-
statusText: ' ',
|
|
1767
|
-
installed: false,
|
|
1768
|
-
available: false,
|
|
1769
|
-
supported: true,
|
|
1770
|
-
supportsApply: false,
|
|
1771
|
-
checkingHint: 'spinner-in-status'
|
|
1772
|
-
};
|
|
1773
|
-
}
|
|
1826
|
+
if (!helper && setupSnap) {
|
|
1774
1827
|
return null;
|
|
1775
1828
|
}
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1829
|
+
return buildAuditBackedCard(
|
|
1830
|
+
helper,
|
|
1831
|
+
ONBOARDING_CARD_LABELS.node,
|
|
1832
|
+
resolveNodePrerequisiteState(setupSnap)
|
|
1833
|
+
);
|
|
1834
|
+
}
|
|
1835
|
+
|
|
1836
|
+
function isLocalModelHelperId(helperId) {
|
|
1837
|
+
return Boolean(helperId && helperId.indexOf(ONBOARDING_LOCAL_MODEL_HELPER_SUFFIX) > 0);
|
|
1838
|
+
}
|
|
1839
|
+
|
|
1840
|
+
function pickLocalModelHelper(setupSnap) {
|
|
1841
|
+
return pickSetupHelper(setupSnap, function (candidate) {
|
|
1842
|
+
return candidate && isLocalModelHelperId(candidate.id);
|
|
1843
|
+
});
|
|
1844
|
+
}
|
|
1845
|
+
|
|
1846
|
+
function plannedActionsIncludeLocalModelInstall(action) {
|
|
1847
|
+
var planned = action && Array.isArray(action.plannedActions) ? action.plannedActions : [];
|
|
1848
|
+
return planned.indexOf('local_model:install_ollama_local_model') >= 0;
|
|
1849
|
+
}
|
|
1850
|
+
|
|
1851
|
+
/* The audit reports installation and API readiness as separate planned
|
|
1852
|
+
actions — start_ollama_local_model means the binary is already on disk,
|
|
1853
|
+
the service just is not up. This card only ever claims installation, so
|
|
1854
|
+
only the install action holds it back. A direct helper run reports the
|
|
1855
|
+
same split through its status, and everything except not_installed
|
|
1856
|
+
means the install itself landed. */
|
|
1857
|
+
function resolveLocalModelState(setupSnap) {
|
|
1858
|
+
var action = setupSnap && setupSnap.state ? setupSnap.state.lastAction : null;
|
|
1859
|
+
if (!action) return rememberAuditState('ollama', 'checking');
|
|
1860
|
+
if (action.runState === 'failed') return rememberAuditState('ollama', 'missing');
|
|
1861
|
+
if (isLocalModelHelperId(action.helperId)) {
|
|
1862
|
+
return rememberAuditState(
|
|
1863
|
+
'ollama',
|
|
1864
|
+
action.status !== 'not_installed' ? 'ready' : 'missing'
|
|
1865
|
+
);
|
|
1866
|
+
}
|
|
1867
|
+
if (isReadinessAuditAction(action)) {
|
|
1868
|
+
return rememberAuditState(
|
|
1869
|
+
'ollama',
|
|
1870
|
+
plannedActionsIncludeLocalModelInstall(action) ? 'missing' : 'ready'
|
|
1871
|
+
);
|
|
1872
|
+
}
|
|
1873
|
+
return rememberAuditState('ollama', 'checking');
|
|
1874
|
+
}
|
|
1875
|
+
|
|
1876
|
+
/* Ollama is not a CLI provider, so cats-runtime's setup scan has no entry
|
|
1877
|
+
for it and its inventory candidate is hardcoded to installed:false —
|
|
1878
|
+
a card driven from the inventory could never clear, not even right after
|
|
1879
|
+
a successful install from that very card. Build it from the readiness
|
|
1880
|
+
audit instead, exactly like the Node prerequisite card above. */
|
|
1881
|
+
function buildLocalModelCard(setupSnap) {
|
|
1882
|
+
var helper = pickLocalModelHelper(setupSnap);
|
|
1883
|
+
if (!helper && setupSnap) {
|
|
1884
|
+
return null;
|
|
1885
|
+
}
|
|
1886
|
+
return buildAuditBackedCard(
|
|
1887
|
+
helper,
|
|
1888
|
+
ONBOARDING_CARD_LABELS.ollama,
|
|
1889
|
+
resolveLocalModelState(setupSnap)
|
|
1890
|
+
);
|
|
1786
1891
|
}
|
|
1787
1892
|
|
|
1788
1893
|
function toProviderInstallCard(candidate, scanned) {
|
|
@@ -1858,6 +1963,14 @@ export function buildDesktopBootstrapPage() {
|
|
|
1858
1963
|
statusClass = 'c-ok';
|
|
1859
1964
|
statusContent = tx('status.installedWithCheck');
|
|
1860
1965
|
btnContent = btnLabel;
|
|
1966
|
+
} else if (card.auditPending) {
|
|
1967
|
+
/* The readiness audit has not reported on this card yet. It runs
|
|
1968
|
+
itself, so there is nothing for the user to press -- and pressing
|
|
1969
|
+
Install here would act on an answer nobody has. */
|
|
1970
|
+
btnLabel = tx('status.checkingInstall');
|
|
1971
|
+
statusClass = '';
|
|
1972
|
+
statusContent = tx('status.checkingInstall');
|
|
1973
|
+
btnContent = spinnerEl();
|
|
1861
1974
|
} else if (card.inventoryUnknown) {
|
|
1862
1975
|
btnLabel = tx('status.detect');
|
|
1863
1976
|
statusClass = '';
|
|
@@ -1868,11 +1981,6 @@ export function buildDesktopBootstrapPage() {
|
|
|
1868
1981
|
statusClass = '';
|
|
1869
1982
|
statusContent = card.statusText || ' ';
|
|
1870
1983
|
btnContent = btnLabel;
|
|
1871
|
-
if (card.checkingHint === 'spinner-in-status') {
|
|
1872
|
-
statusContent = spinnerEl();
|
|
1873
|
-
} else if (card.checkingHint === 'spinner-in-button') {
|
|
1874
|
-
btnContent = spinnerEl();
|
|
1875
|
-
}
|
|
1876
1984
|
}
|
|
1877
1985
|
var btn = el('button', {
|
|
1878
1986
|
class: 'btn cli-card-btn',
|
|
@@ -1881,6 +1989,7 @@ export function buildDesktopBootstrapPage() {
|
|
|
1881
1989
|
unknown — the CLI may well already be installed. */
|
|
1882
1990
|
disabled: installing
|
|
1883
1991
|
|| cliScanInFlight
|
|
1992
|
+
|| card.auditPending
|
|
1884
1993
|
|| !card.available
|
|
1885
1994
|
|| !card.supported
|
|
1886
1995
|
|| (!card.inventoryUnknown && card.supportsApply === false),
|
|
@@ -1914,11 +2023,8 @@ export function buildDesktopBootstrapPage() {
|
|
|
1914
2023
|
if (!candidate || !candidate.available) continue;
|
|
1915
2024
|
var card = toProviderInstallCard(candidate, scanned);
|
|
1916
2025
|
if (options && options.waitForNodePrerequisite) {
|
|
1917
|
-
card.statusText =
|
|
2026
|
+
card.statusText = tx('onboarding.installNodeFirst');
|
|
1918
2027
|
card.supportsApply = false;
|
|
1919
|
-
if (options.showCheckingSpinner) {
|
|
1920
|
-
card.checkingHint = 'spinner-in-button';
|
|
1921
|
-
}
|
|
1922
2028
|
}
|
|
1923
2029
|
card.collapsedSlot = ONBOARDING_COLLAPSED_PROVIDER_IDS.indexOf(providerId) !== -1;
|
|
1924
2030
|
cards.push(card);
|
|
@@ -1930,17 +2036,26 @@ export function buildDesktopBootstrapPage() {
|
|
|
1930
2036
|
var expanded = alwaysExpanded || onboardingExpanded;
|
|
1931
2037
|
var entries = [];
|
|
1932
2038
|
appendProviderCards(entries, snapshot, ONBOARDING_NATIVE_PROVIDER_ORDER);
|
|
2039
|
+
/* Tail of the native row, where Ollama used to sit as a provider card. */
|
|
2040
|
+
var localModelCard = pickInventoryCandidate(snapshot, 'ollama') ? buildLocalModelCard(setupSnap) : null;
|
|
2041
|
+
if (localModelCard) {
|
|
2042
|
+
entries.push(localModelCard);
|
|
2043
|
+
}
|
|
1933
2044
|
entries.push({ kind: 'break' });
|
|
1934
|
-
var
|
|
2045
|
+
var inventory = snapshot.prerequisites && snapshot.prerequisites.cliInventory;
|
|
2046
|
+
var needsNode = inventory && inventory.candidates.some(function (entry) { return ONBOARDING_NPM_PROVIDER_ORDER.indexOf(entry.providerId) >= 0; });
|
|
2047
|
+
var nodeCard = needsNode ? buildNodePrerequisiteCard(setupSnap) : null;
|
|
1935
2048
|
if (nodeCard) {
|
|
1936
2049
|
nodeCard.collapsedSlot = ONBOARDING_COLLAPSED_INCLUDES_NODE;
|
|
1937
2050
|
entries.push(nodeCard);
|
|
1938
2051
|
}
|
|
1939
|
-
|
|
2052
|
+
/* Only a Node we know is missing holds the npm group back. While the
|
|
2053
|
+
audit is still checking, these cards keep their own state: telling a
|
|
2054
|
+
user to install Node first -- and taking Reinstall away from a CLI
|
|
2055
|
+
they already have -- on the strength of an answer nobody has yet is
|
|
2056
|
+
the same mistake the Node card itself was making. */
|
|
1940
2057
|
appendProviderCards(entries, snapshot, ONBOARDING_NPM_PROVIDER_ORDER, {
|
|
1941
|
-
waitForNodePrerequisite:
|
|
1942
|
-
nodePrerequisiteStatusText: setupSnap ? tx('onboarding.installNodeFirst') : ' ',
|
|
1943
|
-
showCheckingSpinner: !setupSnap
|
|
2058
|
+
waitForNodePrerequisite: resolveNodePrerequisiteState(setupSnap) === 'missing'
|
|
1944
2059
|
});
|
|
1945
2060
|
|
|
1946
2061
|
var elements = [];
|
|
@@ -2105,7 +2220,7 @@ export function buildDesktopBootstrapPage() {
|
|
|
2105
2220
|
function recoveryTitle(snap) {
|
|
2106
2221
|
if (snap.phase === 'failed') return tx('recovery.title.failed');
|
|
2107
2222
|
if (snap.phase === 'needs_prerequisites') {
|
|
2108
|
-
if (
|
|
2223
|
+
if (isSelectionRequired(snap)) {
|
|
2109
2224
|
return snap.app && snap.app.setupCompleteAt
|
|
2110
2225
|
? tx('recovery.title.installCliContinue')
|
|
2111
2226
|
: tx('recovery.title.pickCli');
|
|
@@ -2129,7 +2244,7 @@ export function buildDesktopBootstrapPage() {
|
|
|
2129
2244
|
return tx('recovery.summary.failedHelper');
|
|
2130
2245
|
}
|
|
2131
2246
|
if (snap.phase === 'needs_prerequisites') {
|
|
2132
|
-
if (
|
|
2247
|
+
if (isSelectionRequired(snap)) {
|
|
2133
2248
|
return snap.app && snap.app.setupCompleteAt
|
|
2134
2249
|
? tx('recovery.summary.noCliAfterSetup')
|
|
2135
2250
|
: tx('recovery.summary.noCliBeforeSetup');
|
|
@@ -2523,6 +2638,79 @@ export function buildDesktopBootstrapPage() {
|
|
|
2523
2638
|
return 'retry';
|
|
2524
2639
|
}
|
|
2525
2640
|
|
|
2641
|
+
var selectionDraft = null;
|
|
2642
|
+
var selectionDraftRevision = null;
|
|
2643
|
+
var selectionSaving = false;
|
|
2644
|
+
var selectionError = '';
|
|
2645
|
+
function providerTargetKey(target) {
|
|
2646
|
+
return JSON.stringify([target.provider, target.backend, target.instance]);
|
|
2647
|
+
}
|
|
2648
|
+
function hasSelectionDraftChanges(selection) {
|
|
2649
|
+
if (!selectionDraft) return false;
|
|
2650
|
+
var saved = selection.targets.map(providerTargetKey);
|
|
2651
|
+
return selectionDraftRevision !== selection.revision || saved.length !== selectionDraft.length
|
|
2652
|
+
|| saved.some(function (key) { return selectionDraft.indexOf(key) < 0; });
|
|
2653
|
+
}
|
|
2654
|
+
function ProviderSelectionEditor(snap) {
|
|
2655
|
+
var prerequisites = snap.prerequisites || {};
|
|
2656
|
+
var selection = prerequisites.providerSelection;
|
|
2657
|
+
if (!selection) return el('p', {}, tx('selection.loading'));
|
|
2658
|
+
if (!selectionDraft) {
|
|
2659
|
+
selectionDraft = selection.targets.map(providerTargetKey);
|
|
2660
|
+
selectionDraftRevision = selection.revision;
|
|
2661
|
+
}
|
|
2662
|
+
var catalog = (prerequisites.providerCatalog || []).slice();
|
|
2663
|
+
selection.targets.forEach(function (target) {
|
|
2664
|
+
if (!catalog.some(function (entry) { return providerTargetKey(entry) === providerTargetKey(target); })) {
|
|
2665
|
+
catalog.push(Object.assign({ familyLabel: target.provider }, target));
|
|
2666
|
+
}
|
|
2667
|
+
});
|
|
2668
|
+
var choices = catalog.map(function (target) {
|
|
2669
|
+
var key = providerTargetKey(target);
|
|
2670
|
+
var checkbox = el('input', {
|
|
2671
|
+
type: 'checkbox', disabled: selectionSaving,
|
|
2672
|
+
onchange: function () {
|
|
2673
|
+
selectionDraft = selectionDraft.filter(function (value) { return value !== key; });
|
|
2674
|
+
if (this.checked) selectionDraft.push(key);
|
|
2675
|
+
doRender();
|
|
2676
|
+
}
|
|
2677
|
+
});
|
|
2678
|
+
checkbox.checked = selectionDraft.indexOf(key) >= 0;
|
|
2679
|
+
return el('label', { class: 'cli-card' }, checkbox,
|
|
2680
|
+
' ' + target.familyLabel + ' (' + target.backend + '/' + target.instance + ')');
|
|
2681
|
+
});
|
|
2682
|
+
function saveSelection(reload) {
|
|
2683
|
+
selectionSaving = true;
|
|
2684
|
+
selectionError = '';
|
|
2685
|
+
doRender();
|
|
2686
|
+
bridge.saveProviderSelection({
|
|
2687
|
+
targets: selectionDraft.map(function (key) {
|
|
2688
|
+
var values = JSON.parse(key);
|
|
2689
|
+
return { provider: values[0], backend: values[1], instance: values[2] };
|
|
2690
|
+
}),
|
|
2691
|
+
expectedRevision: reload ? selection.revision : selectionDraftRevision,
|
|
2692
|
+
reload: reload
|
|
2693
|
+
}).then(function (next) {
|
|
2694
|
+
currentSnapshot = next;
|
|
2695
|
+
selectionDraft = null;
|
|
2696
|
+
selectionDraftRevision = null;
|
|
2697
|
+
}).catch(function (error) {
|
|
2698
|
+
selectionError = error && error.message ? error.message : String(error);
|
|
2699
|
+
}).finally(function () { selectionSaving = false; doRender(); });
|
|
2700
|
+
}
|
|
2701
|
+
return el('section', { class: 'selection-editor' },
|
|
2702
|
+
el('h2', {}, tx('selection.title')),
|
|
2703
|
+
el('p', {}, tx('selection.description')),
|
|
2704
|
+
el('div', { class: 'cli-grid' }, choices),
|
|
2705
|
+
el('div', { class: 'onboarding-actions' },
|
|
2706
|
+
el('button', { class: 'btn', disabled: selectionSaving, onclick: function () { saveSelection(false); } }, tx('selection.save')),
|
|
2707
|
+
selection.diskChanged ? el('button', { class: 'btn', disabled: selectionSaving, onclick: function () { saveSelection(true); } }, tx('selection.reload')) : null,
|
|
2708
|
+
hasSelectionDraftChanges(selection) ? el('button', { class: 'btn', disabled: selectionSaving, onclick: function () { selectionDraft = null; doRender(); } }, tx('selection.reset')) : null
|
|
2709
|
+
),
|
|
2710
|
+
selectionError || selection.error ? el('p', { role: 'alert' }, selectionError || selection.error) : null
|
|
2711
|
+
);
|
|
2712
|
+
}
|
|
2713
|
+
|
|
2526
2714
|
function showOnboarding(snap) {
|
|
2527
2715
|
onboardingActive = true;
|
|
2528
2716
|
splashEl.classList.add('hidden');
|
|
@@ -2533,10 +2721,8 @@ export function buildDesktopBootstrapPage() {
|
|
|
2533
2721
|
|
|
2534
2722
|
onboardingEl.innerHTML = '';
|
|
2535
2723
|
|
|
2536
|
-
var
|
|
2537
|
-
var
|
|
2538
|
-
var installedCount = Array.isArray(inventory.installed) ? inventory.installed.length : 0;
|
|
2539
|
-
var continueDisabled = legacyCliGate && installedCount === 0;
|
|
2724
|
+
var selection = snap.prerequisites && snap.prerequisites.providerSelection;
|
|
2725
|
+
var continueDisabled = !selection || selection.state === 'missing' || selection.state === 'invalid' || hasSelectionDraftChanges(selection);
|
|
2540
2726
|
|
|
2541
2727
|
var continueBtn = el('button', {
|
|
2542
2728
|
class: 'btn',
|
|
@@ -2563,7 +2749,7 @@ export function buildDesktopBootstrapPage() {
|
|
|
2563
2749
|
: (isCliInventoryScanned(snap) ? tx('onboarding.rescanClis') : tx('onboarding.scanClis'));
|
|
2564
2750
|
actions.push(el('button', {
|
|
2565
2751
|
class: 'btn',
|
|
2566
|
-
disabled: cliScanInFlight,
|
|
2752
|
+
disabled: cliScanInFlight || continueDisabled,
|
|
2567
2753
|
onclick: handleCliScanClick
|
|
2568
2754
|
}, scanLabel));
|
|
2569
2755
|
if (cardSet.hasHiddenCards) {
|
|
@@ -2583,6 +2769,7 @@ export function buildDesktopBootstrapPage() {
|
|
|
2583
2769
|
),
|
|
2584
2770
|
el('p', { class: 'onboarding-headline' },
|
|
2585
2771
|
tx('onboarding.headline')),
|
|
2772
|
+
ProviderSelectionEditor(snap),
|
|
2586
2773
|
el('div', { class: 'onboarding-actions' }, actions),
|
|
2587
2774
|
el('div', { class: 'cli-grid' }, cardSet.elements)
|
|
2588
2775
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrapPage.js","sourceRoot":"","sources":["../../desktop/host/bootstrapPage.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,yBAAyB;IACvC,OAAO
|
|
1
|
+
{"version":3,"file":"bootstrapPage.js","sourceRoot":"","sources":["../../desktop/host/bootstrapPage.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,yBAAyB;IACvC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA43FD,CAAC;AACT,CAAC"}
|
|
@@ -1,16 +1,37 @@
|
|
|
1
1
|
import { type DesktopCliInventory } from './contracts.js';
|
|
2
|
+
import { type ProviderSelection, type ProviderSelectionCatalogEntry, type SelectedProviderTarget } from './providerSelection.js';
|
|
2
3
|
export interface RuntimeCliInventoryProbe {
|
|
4
|
+
selection: ProviderSelection;
|
|
5
|
+
universe: ProviderSelectionCatalogEntry[];
|
|
6
|
+
bootstrapRequired?: boolean;
|
|
3
7
|
state?: {
|
|
4
8
|
status?: 'pending' | 'scanning' | 'ready' | 'applied' | 'error' | string;
|
|
5
9
|
error?: string | null;
|
|
6
10
|
} | null;
|
|
7
11
|
scan: {
|
|
12
|
+
revision: string;
|
|
8
13
|
scannedAt?: string | null;
|
|
9
|
-
providers: Array<{
|
|
10
|
-
provider: string;
|
|
14
|
+
providers: Array<SelectedProviderTarget & {
|
|
11
15
|
available: boolean;
|
|
16
|
+
authStatus?: string;
|
|
12
17
|
}>;
|
|
13
18
|
} | null;
|
|
14
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* True when the runtime's own bootstrap answer on a probe disagrees with the
|
|
22
|
+
* one the caller has cached.
|
|
23
|
+
*
|
|
24
|
+
* The desktop snapshot phase is derived from a cached GET /health payload that
|
|
25
|
+
* is only refetched at startup and on a few user actions, never on a timer.
|
|
26
|
+
* Applying a provider config takes the runtime out of bootstrap in-process, so
|
|
27
|
+
* nothing tells the host: it keeps republishing "Cats Runtime setup is still
|
|
28
|
+
* required" from a payload captured before the apply, until the app restarts.
|
|
29
|
+
*
|
|
30
|
+
* Every probe already carries the runtime's current answer, so the
|
|
31
|
+
* disagreement is visible without asking for anything extra. A caller that has
|
|
32
|
+
* no cached answer yet, or a runtime too old to send the field, reports no
|
|
33
|
+
* disagreement -- absence of a signal is not a claim that the state changed.
|
|
34
|
+
*/
|
|
35
|
+
export declare function probeContradictsCachedBootstrapState(probe: RuntimeCliInventoryProbe | null, cachedBootstrapRequired: boolean | null): boolean;
|
|
15
36
|
export declare function buildDesktopCliInventoryFromRuntime(probe: RuntimeCliInventoryProbe | null, platform?: NodeJS.Platform): DesktopCliInventory;
|
|
16
37
|
//# sourceMappingURL=cliInventoryProbe.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliInventoryProbe.d.ts","sourceRoot":"","sources":["../../desktop/host/cliInventoryProbe.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"cliInventoryProbe.d.ts","sourceRoot":"","sources":["../../desktop/host/cliInventoryProbe.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAGzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAgC,KAAK,iBAAiB,EAAE,KAAK,6BAA6B,EAAE,KAAK,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAK/J,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,QAAQ,EAAE,6BAA6B,EAAE,CAAC;IAK1C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE;QACN,MAAM,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;QACzE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,GAAG,IAAI,CAAC;IACT,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,SAAS,EAAE,KAAK,CAAC,sBAAsB,GAAG;YAAE,SAAS,EAAE,OAAO,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACxF,GAAG,IAAI,CAAC;CACV;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,wBAAwB,GAAG,IAAI,EACtC,uBAAuB,EAAE,OAAO,GAAG,IAAI,GACtC,OAAO,CAKT;AA6FD,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,wBAAwB,GAAG,IAAI,EACtC,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,mBAAmB,CAiDrB"}
|