@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,108 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Verify the actual unpacked installer resources and offline App activation.
|
|
3
|
+
// Usage: node scripts/verify-desktop-app-bundle.mjs --release-root release --expect-lock config/desktop-apps.lock.json
|
|
4
|
+
// Alternatively pass --resources <resources-directory>. Uses only a temporary registry;
|
|
5
|
+
// does not start provider CLIs, download Apps, or touch the user's installed state.
|
|
6
|
+
import assert from 'node:assert/strict';
|
|
7
|
+
import { access, mkdtemp, readFile, readdir, rm } from 'node:fs/promises';
|
|
8
|
+
import { tmpdir } from 'node:os';
|
|
9
|
+
import path from 'node:path';
|
|
10
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
11
|
+
import { createRequire } from 'node:module';
|
|
12
|
+
import { resolveDesktopHostConfig } from '../build/desktop/config.js';
|
|
13
|
+
import { buildManagedServiceSpecs } from '../build/desktop/processSupervisor.js';
|
|
14
|
+
import { installBundledApps } from '../build/server/platform/apps/packageInstaller.js';
|
|
15
|
+
import { FileCatsAppRegistry } from '../build/server/platform/apps/registry.js';
|
|
16
|
+
import { readAppRenderer } from '../build/server/platform/apps/renderer.js';
|
|
17
|
+
|
|
18
|
+
const pins = (apps) => apps.map(({ id, version, sha256 }) => ({ id, version, sha256 }));
|
|
19
|
+
|
|
20
|
+
export async function verifyDesktopAppBundle(resourcesRoot, expectedLockPath) {
|
|
21
|
+
const root = await mkdtemp(path.join(tmpdir(), 'cats-packaged-app-check-'));
|
|
22
|
+
try {
|
|
23
|
+
const config = resolveDesktopHostConfig({
|
|
24
|
+
env: {}, packaged: true, resourcesPath: path.resolve(resourcesRoot),
|
|
25
|
+
userDataDir: path.join(root, 'desktop'), catsHomeDir: path.join(root, 'cats-home'),
|
|
26
|
+
});
|
|
27
|
+
const [, platform] = buildManagedServiceSpecs(config, {}, process.platform);
|
|
28
|
+
const sdk = await import(pathToFileURL(path.join(config.packageRoot, 'packages/app-sdk/package.js')).href);
|
|
29
|
+
const expected = sdk.parseAppLock(JSON.parse(await readFile(expectedLockPath, 'utf8')));
|
|
30
|
+
const bundledLock = platform.env.CATS_APP_BUNDLE_PATH;
|
|
31
|
+
assert.equal(bundledLock, path.join(config.packageRoot, 'official-apps/bundle.lock.json'));
|
|
32
|
+
assert.equal(config.paths.platformBundledConfigDir, path.join(config.packageRoot, 'config'));
|
|
33
|
+
await access(config.paths.appEntryScript);
|
|
34
|
+
await access(path.join(config.paths.platformBundledConfigDir, 'provider-capability-bootstrap.yaml.example'));
|
|
35
|
+
const bundled = sdk.parseAppLock(JSON.parse(await readFile(bundledLock, 'utf8')));
|
|
36
|
+
const plan = JSON.parse(await readFile(path.join(resourcesRoot, 'desktop-package-plan.json'), 'utf8'));
|
|
37
|
+
assert.deepEqual(pins(bundled.apps), pins(expected.apps), 'Installer must contain the selected exact App set');
|
|
38
|
+
assert.deepEqual(pins(plan.apps ?? []), pins(expected.apps), 'Packaging plan must retain the selected App set');
|
|
39
|
+
if (expected.apps.length > 0) {
|
|
40
|
+
assert.equal(createRequire(pathToFileURL(config.paths.appEntryScript)).resolve('#cats-app-package'),
|
|
41
|
+
path.join(config.packageRoot, 'packages/app-sdk/package.js'), 'Sidecar SDK alias must resolve to its shipped package');
|
|
42
|
+
if (plan.sidecarLayout?.app === 'bundle') {
|
|
43
|
+
const entry = await readFile(config.paths.appEntryScript, 'utf8');
|
|
44
|
+
assert.match(entry, /\bfrom\s+['"]#cats-app-package['"]/u,
|
|
45
|
+
'Bundled sidecar must retain the SDK package import; inlining relocates browser.js');
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
assert.ok((await sdk.readBrowserSdk()).includes('getSnapshot'), 'Shipped browser SDK must be readable');
|
|
49
|
+
for (const app of bundled.apps) {
|
|
50
|
+
assert.equal(app.artifact, `${app.id}-${app.version}.catsapp`, 'Startup must use adjacent offline archives');
|
|
51
|
+
sdk.decodeAppPackage(await readFile(path.join(path.dirname(bundledLock), app.artifact)), app);
|
|
52
|
+
}
|
|
53
|
+
// Exercise the same installer invoked before the Platform HTTP server starts.
|
|
54
|
+
// These compiled modules come from this build; bytes and SDK above come from
|
|
55
|
+
// the actual installer resources, including bundled-sidecar builds.
|
|
56
|
+
await installBundledApps(config.paths.appStatePath, bundledLock);
|
|
57
|
+
await installBundledApps(config.paths.appStatePath, bundledLock);
|
|
58
|
+
const registry = new FileCatsAppRegistry({ registryPath: path.join(config.paths.platformDir, 'apps/registry.json') });
|
|
59
|
+
const installed = await registry.listInstalledApps();
|
|
60
|
+
assert.equal(installed.length, expected.apps.length);
|
|
61
|
+
for (const app of installed) {
|
|
62
|
+
assert.equal(app.enabled, true);
|
|
63
|
+
assert.equal(app.installState, 'enabled');
|
|
64
|
+
assert.equal(app.packageSource, 'desktop-bundle');
|
|
65
|
+
assert.ok(app.manifest.contributions.lobbyApps.length > 0);
|
|
66
|
+
assert.ok((await readAppRenderer(app)).html.includes('<head>'));
|
|
67
|
+
}
|
|
68
|
+
return { resources: path.resolve(resourcesRoot), apps: pins(bundled.apps), offlineActivation: true };
|
|
69
|
+
} finally {
|
|
70
|
+
await rm(root, { recursive: true, force: true });
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
async function findResources(directory, depth = 0) {
|
|
75
|
+
try {
|
|
76
|
+
await access(path.join(directory, 'desktop-package-plan.json'));
|
|
77
|
+
return [directory];
|
|
78
|
+
} catch { /* Look only through unpacked distribution directories below. */ }
|
|
79
|
+
if (depth >= 6) return [];
|
|
80
|
+
const entries = await readdir(directory, { withFileTypes: true });
|
|
81
|
+
const nested = await Promise.all(entries.filter((entry) => entry.isDirectory()
|
|
82
|
+
&& !['node_modules', 'app-sidecar', 'cats-runtime'].includes(entry.name))
|
|
83
|
+
.map((entry) => findResources(path.join(directory, entry.name), depth + 1)));
|
|
84
|
+
return nested.flat();
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
async function main() {
|
|
88
|
+
const args = process.argv.slice(2);
|
|
89
|
+
if (args.includes('--help')) {
|
|
90
|
+
console.log('Usage: verify-desktop-app-bundle.mjs (--release-root <directory> | --resources <directory>) --expect-lock <lock>');
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const options = {};
|
|
94
|
+
for (let index = 0; index < args.length; index += 2) {
|
|
95
|
+
if (!['--resources', '--release-root', '--expect-lock'].includes(args[index])
|
|
96
|
+
|| !args[index + 1] || args[index + 1].startsWith('--')) throw new Error('Invalid verifier arguments. Use --help.');
|
|
97
|
+
options[args[index]] = path.resolve(args[index + 1]);
|
|
98
|
+
}
|
|
99
|
+
assert.ok(options['--expect-lock'], '--expect-lock is required');
|
|
100
|
+
assert.ok(Boolean(options['--resources']) !== Boolean(options['--release-root']), 'Select resources or release-root');
|
|
101
|
+
const roots = options['--resources'] ? [options['--resources']] : await findResources(options['--release-root']);
|
|
102
|
+
assert.ok(roots.length > 0, 'No unpacked installer resources found');
|
|
103
|
+
for (const resources of roots) console.log(JSON.stringify(await verifyDesktopAppBundle(resources, options['--expect-lock']), null, 2));
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
if (path.resolve(process.argv[1] ?? '') === fileURLToPath(import.meta.url)) {
|
|
107
|
+
main().catch((error) => { console.error(error); process.exitCode = 1; });
|
|
108
|
+
}
|
|
@@ -13,6 +13,9 @@
|
|
|
13
13
|
.PARAMETER OutputDir
|
|
14
14
|
Optional override for the packaging output directory.
|
|
15
15
|
|
|
16
|
+
.PARAMETER AppsLock
|
|
17
|
+
App selection lock with exact IDs, versions and SHA-256 hashes.
|
|
18
|
+
|
|
16
19
|
.EXAMPLE
|
|
17
20
|
.\scripts\windows\Build-DesktopPackage.ps1 -Platform windows
|
|
18
21
|
Build the staged Windows packaging outputs.
|
|
@@ -20,7 +23,8 @@
|
|
|
20
23
|
param(
|
|
21
24
|
[ValidateSet('all', 'windows', 'macos', 'linux')]
|
|
22
25
|
[string]$Platform = 'all',
|
|
23
|
-
[string]$OutputDir = ''
|
|
26
|
+
[string]$OutputDir = '',
|
|
27
|
+
[string]$AppsLock = ''
|
|
24
28
|
)
|
|
25
29
|
|
|
26
30
|
Set-StrictMode -Version Latest
|
|
@@ -34,11 +38,10 @@ try {
|
|
|
34
38
|
if ($LASTEXITCODE -ne 0) {
|
|
35
39
|
throw "npm run build failed with exit code $LASTEXITCODE"
|
|
36
40
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
41
|
+
$packageArguments = @('.\scripts\package-desktop.mjs', '--platform', $Platform)
|
|
42
|
+
if ($OutputDir) { $packageArguments += @('--output-dir', $OutputDir) }
|
|
43
|
+
if ($AppsLock) { $packageArguments += @('--apps-lock', $AppsLock) }
|
|
44
|
+
node @packageArguments
|
|
42
45
|
if ($LASTEXITCODE -ne 0) {
|
|
43
46
|
throw "desktop packaging failed with exit code $LASTEXITCODE"
|
|
44
47
|
}
|
|
@@ -28,6 +28,7 @@ Set-StrictMode -Version Latest
|
|
|
28
28
|
$ErrorActionPreference = 'Stop'
|
|
29
29
|
|
|
30
30
|
. (Join-Path $PSScriptRoot '_HiddenProcess.ps1')
|
|
31
|
+
. (Join-Path $PSScriptRoot '_NativeInstallerSupport.ps1')
|
|
31
32
|
. (Join-Path $PSScriptRoot '_PackagedUninstall.ps1')
|
|
32
33
|
|
|
33
34
|
function Write-StructuredResult {
|
|
@@ -36,6 +37,10 @@ function Write-StructuredResult {
|
|
|
36
37
|
[int]$ExitCode
|
|
37
38
|
)
|
|
38
39
|
|
|
40
|
+
if (Get-Variable -Name catsInitialObservation -Scope Script -ErrorAction SilentlyContinue) {
|
|
41
|
+
Add-CatsNativeObservation -Result $Result -Before $script:catsInitialObservation -Attempted ([bool]$script:shouldInstall) -Skipped ([bool]$SkipInstaller)
|
|
42
|
+
}
|
|
43
|
+
|
|
39
44
|
if ($Json) {
|
|
40
45
|
$Result | ConvertTo-Json -Depth 10
|
|
41
46
|
} else {
|
|
@@ -274,7 +279,15 @@ if ($CheckOnly) {
|
|
|
274
279
|
Write-StructuredResult -Result $result -ExitCode 0
|
|
275
280
|
}
|
|
276
281
|
|
|
282
|
+
$installFailed = $false
|
|
283
|
+
$catsInitialObservation = $detected.PSObject.Copy()
|
|
277
284
|
$shouldInstall = $Force -or $Upgrade -or -not $detected.installed
|
|
285
|
+
if ($Upgrade -and -not $Force -and $detected.installed -and -not $SkipInstaller -and -not $DryRun) {
|
|
286
|
+
$versionGate = Test-CatsNativeUpgrade -Provider 'antigravity' -InstalledVersion $detected.detectedVersion
|
|
287
|
+
$shouldInstall = $versionGate.shouldInstall
|
|
288
|
+
if (-not $versionGate.known) { $warnings.Add('Could not compare the published version; the official installer will verify the update.') }
|
|
289
|
+
if (-not $shouldInstall) { $plannedActions.Clear() }
|
|
290
|
+
}
|
|
278
291
|
$installFailed = $false
|
|
279
292
|
$installSkipped = $false
|
|
280
293
|
if ($shouldInstall) {
|
|
@@ -282,8 +295,11 @@ if ($shouldInstall) {
|
|
|
282
295
|
$warnings.Add('Dry-run requested; Antigravity installer invocation was skipped.')
|
|
283
296
|
$installSkipped = $true
|
|
284
297
|
} else {
|
|
285
|
-
|
|
298
|
+
$previousBinary = $null
|
|
299
|
+
if (($Force -or $Upgrade) -and -not $SkipInstaller -and (Test-Path -LiteralPath (Resolve-AntigravityExecutablePath) -PathType Leaf)) {
|
|
286
300
|
try {
|
|
301
|
+
$previousBinary = Join-Path ([IO.Path]::GetTempPath()) ('cats-agy-' + [guid]::NewGuid().ToString('N') + '.exe')
|
|
302
|
+
Copy-Item -LiteralPath (Resolve-AntigravityExecutablePath) -Destination $previousBinary -ErrorAction Stop
|
|
287
303
|
Remove-Item -LiteralPath (Resolve-AntigravityExecutablePath) -Force -ErrorAction Stop
|
|
288
304
|
} catch {
|
|
289
305
|
$warnings.Add("Unable to remove existing agy.exe before refresh: $($_.Exception.Message)")
|
|
@@ -308,12 +324,19 @@ if ($shouldInstall) {
|
|
|
308
324
|
}
|
|
309
325
|
|
|
310
326
|
Start-Sleep -Seconds 2
|
|
311
|
-
Add-AntigravityToUserPath
|
|
327
|
+
if (-not $SkipInstaller) { Add-AntigravityToUserPath }
|
|
312
328
|
$detected = Detect-AntigravityInstall
|
|
313
329
|
if (-not $detected.installed -and -not $installSkipped -and -not $installFailed) {
|
|
314
330
|
$warnings.Add('Antigravity installation completed but agy.exe was not detected at the expected path.')
|
|
315
331
|
$installFailed = $true
|
|
316
332
|
}
|
|
333
|
+
if ($previousBinary) {
|
|
334
|
+
if ($installFailed) {
|
|
335
|
+
Copy-Item -LiteralPath $previousBinary -Destination (Resolve-AntigravityExecutablePath) -Force
|
|
336
|
+
$detected = Detect-AntigravityInstall
|
|
337
|
+
}
|
|
338
|
+
Remove-Item -LiteralPath $previousBinary -Force -ErrorAction SilentlyContinue
|
|
339
|
+
}
|
|
317
340
|
}
|
|
318
341
|
|
|
319
342
|
if ($installFailed -or ($DryRun -and $shouldInstall)) {
|
|
@@ -332,7 +355,7 @@ $interruptions = [System.Collections.Generic.List[object]]::new()
|
|
|
332
355
|
if ($shouldInstall -and -not $installFailed -and -not $DryRun) {
|
|
333
356
|
$interruptions.Add([pscustomobject]@{
|
|
334
357
|
kind = 'relaunch_required'
|
|
335
|
-
summary = '
|
|
358
|
+
summary = 'Run Detect Again after the Antigravity install step if the command is not visible yet.'
|
|
336
359
|
resumable = $true
|
|
337
360
|
requiresRestart = $false
|
|
338
361
|
requiresElevation = $false
|
|
@@ -74,6 +74,7 @@ Set-StrictMode -Version Latest
|
|
|
74
74
|
$ErrorActionPreference = 'Stop'
|
|
75
75
|
|
|
76
76
|
. (Join-Path $PSScriptRoot '_HiddenProcess.ps1')
|
|
77
|
+
. (Join-Path $PSScriptRoot '_NativeInstallerSupport.ps1')
|
|
77
78
|
|
|
78
79
|
function Write-StructuredResult {
|
|
79
80
|
param(
|
|
@@ -81,6 +82,10 @@ function Write-StructuredResult {
|
|
|
81
82
|
[int]$ExitCode
|
|
82
83
|
)
|
|
83
84
|
|
|
85
|
+
if (Get-Variable -Name catsInitialObservation -Scope Script -ErrorAction SilentlyContinue) {
|
|
86
|
+
Add-CatsNativeObservation -Result $Result -Before $script:catsInitialObservation -Attempted ([bool]$script:shouldInstall) -Skipped ([bool]$SkipInstaller)
|
|
87
|
+
}
|
|
88
|
+
|
|
84
89
|
if ($Json) {
|
|
85
90
|
$Result | ConvertTo-Json -Depth 10
|
|
86
91
|
} else {
|
|
@@ -250,7 +255,8 @@ function Invoke-ClaudeInstaller {
|
|
|
250
255
|
|
|
251
256
|
try {
|
|
252
257
|
$installScript = Invoke-RestMethod 'https://claude.ai/install.ps1'
|
|
253
|
-
Invoke-
|
|
258
|
+
$child = Invoke-CatsRemoteInstaller -ScriptText $installScript
|
|
259
|
+
if (-not $child.success) { throw $child.stderr }
|
|
254
260
|
return [pscustomobject]@{
|
|
255
261
|
usedWingetFallback = $false
|
|
256
262
|
skipped = $false
|
|
@@ -493,6 +499,10 @@ if ($CheckOnly) {
|
|
|
493
499
|
Write-StructuredResult -Result $result -ExitCode 0
|
|
494
500
|
}
|
|
495
501
|
|
|
502
|
+
if ($DryRun) {
|
|
503
|
+
Write-CatsNativePreview -Helper 'windows-claude-native-installer' -Mode $executionMode -Detected $detected -Actions $plannedActions.ToArray() -EmitJson ([bool]$Json)
|
|
504
|
+
}
|
|
505
|
+
|
|
496
506
|
$cleanedNpmShim = $false
|
|
497
507
|
if ($npmShimPresent) {
|
|
498
508
|
$cleanedNpmShim = Remove-ClaudeNpmShim
|
|
@@ -503,9 +513,16 @@ if ($npmShimPresent) {
|
|
|
503
513
|
}
|
|
504
514
|
}
|
|
505
515
|
|
|
516
|
+
$installFailed = $false
|
|
517
|
+
$catsInitialObservation = $detected.PSObject.Copy()
|
|
506
518
|
$shouldInstall = $Force -or $Upgrade -or -not $detected.installed
|
|
519
|
+
$installFailed = $false
|
|
507
520
|
if ($shouldInstall) {
|
|
508
|
-
$installResult = Invoke-ClaudeInstaller
|
|
521
|
+
$installResult = try { Invoke-ClaudeInstaller } catch { [pscustomobject]@{ skipped = $false; success = $false; stderr = [string]$_.Exception.Message; usedPowerShell51Fallback = $false; usedWingetFallback = $false } }
|
|
522
|
+
if ($installResult.PSObject.Properties['success'] -and -not $installResult.success) {
|
|
523
|
+
$installFailed = $true
|
|
524
|
+
$warnings.Add($installResult.stderr)
|
|
525
|
+
}
|
|
509
526
|
$usedWingetFallback = [bool]$installResult.usedWingetFallback
|
|
510
527
|
if ($usedWingetFallback) {
|
|
511
528
|
$warnings.Add('Claude Code installer required the winget fallback path.')
|
|
@@ -516,8 +533,9 @@ if ($shouldInstall) {
|
|
|
516
533
|
|
|
517
534
|
Start-Sleep -Seconds 2
|
|
518
535
|
$detected = Detect-ClaudeInstall
|
|
519
|
-
if (-not $detected.installed -and -not $SkipInstaller) {
|
|
520
|
-
|
|
536
|
+
if (-not $detected.installed -and -not $SkipInstaller -and -not $installFailed) {
|
|
537
|
+
$warnings.Add('Claude Code installation completed but claude was still not detected.')
|
|
538
|
+
$installFailed = $true
|
|
521
539
|
}
|
|
522
540
|
|
|
523
541
|
if ($Force) {
|
|
@@ -535,7 +553,7 @@ $interruptions = [System.Collections.Generic.List[object]]::new()
|
|
|
535
553
|
if ($shouldInstall -or $cleanedNpmShim) {
|
|
536
554
|
$interruptions.Add([pscustomobject]@{
|
|
537
555
|
kind = 'relaunch_required'
|
|
538
|
-
summary = '
|
|
556
|
+
summary = 'Run Detect Again after the Claude Code install step if the command is not visible yet.'
|
|
539
557
|
resumable = $true
|
|
540
558
|
requiresRestart = $false
|
|
541
559
|
requiresElevation = $false
|
|
@@ -555,7 +573,7 @@ $restartRequired = $false
|
|
|
555
573
|
$result = [pscustomobject]@{
|
|
556
574
|
helper = 'windows-claude-native-installer'
|
|
557
575
|
mode = $executionMode
|
|
558
|
-
status = if ($interruptions.Count -gt 0) { [string]$interruptions[0].kind } else { 'ready' }
|
|
576
|
+
status = if ($installFailed) { 'failed' } elseif ($interruptions.Count -gt 0) { [string]$interruptions[0].kind } else { 'ready' }
|
|
559
577
|
installed = [bool]$detected.installed
|
|
560
578
|
detectedVersion = if ($detected.detectedVersion) { $detected.detectedVersion } else { $null }
|
|
561
579
|
commandPath = $detected.commandPath
|
|
@@ -568,4 +586,4 @@ $result = [pscustomobject]@{
|
|
|
568
586
|
cleanedNpmShim = $cleanedNpmShim
|
|
569
587
|
usedWingetFallback = $usedWingetFallback
|
|
570
588
|
}
|
|
571
|
-
Write-StructuredResult -Result $result -ExitCode 0
|
|
589
|
+
Write-StructuredResult -Result $result -ExitCode $(if ($installFailed) { 1 } else { 0 })
|
|
@@ -59,6 +59,7 @@ Set-StrictMode -Version Latest
|
|
|
59
59
|
$ErrorActionPreference = 'Stop'
|
|
60
60
|
|
|
61
61
|
. (Join-Path $PSScriptRoot '_HiddenProcess.ps1')
|
|
62
|
+
. (Join-Path $PSScriptRoot '_NativeInstallerSupport.ps1')
|
|
62
63
|
. (Join-Path $PSScriptRoot '_PackagedUninstall.ps1')
|
|
63
64
|
|
|
64
65
|
function Write-StructuredResult {
|
|
@@ -67,6 +68,10 @@ function Write-StructuredResult {
|
|
|
67
68
|
[int]$ExitCode
|
|
68
69
|
)
|
|
69
70
|
|
|
71
|
+
if (Get-Variable -Name catsInitialObservation -Scope Script -ErrorAction SilentlyContinue) {
|
|
72
|
+
Add-CatsNativeObservation -Result $Result -Before $script:catsInitialObservation -Attempted ([bool]$script:shouldInstall) -Skipped ([bool]$SkipInstaller)
|
|
73
|
+
}
|
|
74
|
+
|
|
70
75
|
if ($Json) {
|
|
71
76
|
$Result | ConvertTo-Json -Depth 10
|
|
72
77
|
} else {
|
|
@@ -88,7 +93,13 @@ function Write-StructuredResult {
|
|
|
88
93
|
}
|
|
89
94
|
|
|
90
95
|
function Resolve-CursorExecutablePath {
|
|
91
|
-
|
|
96
|
+
foreach ($name in @('cursor-agent.exe', 'cursor-agent.cmd', 'agent.exe', 'agent.cmd')) {
|
|
97
|
+
$candidate = Join-Path $env:LOCALAPPDATA "cursor-agent\$name"
|
|
98
|
+
if (Test-Path -LiteralPath $candidate -PathType Leaf) { return $candidate }
|
|
99
|
+
}
|
|
100
|
+
$legacy = Join-Path $env:USERPROFILE '.local\bin\cursor-agent.exe'
|
|
101
|
+
if (Test-Path -LiteralPath $legacy -PathType Leaf) { return $legacy }
|
|
102
|
+
return Join-Path $env:LOCALAPPDATA 'cursor-agent\cursor-agent.cmd'
|
|
92
103
|
}
|
|
93
104
|
|
|
94
105
|
function Refresh-UserPath {
|
|
@@ -133,6 +144,10 @@ function Detect-CursorInstall {
|
|
|
133
144
|
}
|
|
134
145
|
}
|
|
135
146
|
|
|
147
|
+
if ($installed -and -not $version -and $commandPath -match '\.(cmd|bat)$') {
|
|
148
|
+
$version = Get-CatsShimVersionText -Path $commandPath
|
|
149
|
+
}
|
|
150
|
+
|
|
136
151
|
return [pscustomobject]@{
|
|
137
152
|
installed = $installed
|
|
138
153
|
commandPath = $commandPath
|
|
@@ -161,30 +176,11 @@ function Invoke-CursorInstaller {
|
|
|
161
176
|
}
|
|
162
177
|
}
|
|
163
178
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
usedPowerShell51Fallback = $false
|
|
169
|
-
skipped = $false
|
|
170
|
-
}
|
|
171
|
-
} catch {
|
|
172
|
-
$isPowerShell7 = $PSVersionTable.PSVersion.Major -ge 7
|
|
173
|
-
$ps51Path = Join-Path $env:SystemRoot 'System32\WindowsPowerShell\v1.0\powershell.exe'
|
|
174
|
-
if (-not $isPowerShell7 -or -not (Test-Path -LiteralPath $ps51Path -PathType Leaf)) {
|
|
175
|
-
throw
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
& $ps51Path -NoProfile -ExecutionPolicy Bypass -Command "irm 'https://cursor.com/install?win32=true' | iex"
|
|
179
|
-
if ($LASTEXITCODE -ne 0) {
|
|
180
|
-
throw 'Cursor Agent installer fallback via Windows PowerShell 5.1 failed.'
|
|
181
|
-
}
|
|
179
|
+
$installScript = Invoke-RestMethod 'https://cursor.com/install?win32=true' -TimeoutSec 30 -UseBasicParsing
|
|
180
|
+
$result = Invoke-CatsRemoteInstaller -ScriptText $installScript
|
|
181
|
+
$result | Add-Member -NotePropertyName usedPowerShell51Fallback -NotePropertyValue $true
|
|
182
|
+
return $result
|
|
182
183
|
|
|
183
|
-
return [pscustomobject]@{
|
|
184
|
-
usedPowerShell51Fallback = $true
|
|
185
|
-
skipped = $false
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
184
|
}
|
|
189
185
|
|
|
190
186
|
if (-not $CheckOnly -and -not $Apply -and -not $Upgrade -and -not $Force -and -not $Uninstall) {
|
|
@@ -219,6 +215,7 @@ if ($Uninstall) {
|
|
|
219
215
|
Invoke-PackagedProviderUninstall `
|
|
220
216
|
-HelperId 'windows-cursor-native-installer' `
|
|
221
217
|
-UserBinaryPath (Resolve-CursorExecutablePath) `
|
|
218
|
+
-ExtraUserOwnedPaths @((Join-Path $env:LOCALAPPDATA 'cursor-agent')) `
|
|
222
219
|
-RedetectCommand { Detect-CursorInstall } `
|
|
223
220
|
-EmitJson:$Json `
|
|
224
221
|
-DryRun:$DryRun
|
|
@@ -289,9 +286,26 @@ if ($CheckOnly) {
|
|
|
289
286
|
Write-StructuredResult -Result $result -ExitCode 0
|
|
290
287
|
}
|
|
291
288
|
|
|
289
|
+
if ($DryRun) {
|
|
290
|
+
Write-CatsNativePreview -Helper 'windows-cursor-native-installer' -Mode $executionMode -Detected $detected -Actions $plannedActions.ToArray() -EmitJson ([bool]$Json)
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
$installFailed = $false
|
|
294
|
+
$catsInitialObservation = $detected.PSObject.Copy()
|
|
292
295
|
$shouldInstall = $Force -or $Upgrade -or -not $detected.installed
|
|
296
|
+
if ($Upgrade -and -not $Force -and $detected.installed -and -not $SkipInstaller -and -not $DryRun) {
|
|
297
|
+
$versionGate = Test-CatsNativeUpgrade -Provider 'cursor' -InstalledVersion $detected.detectedVersion
|
|
298
|
+
$shouldInstall = $versionGate.shouldInstall
|
|
299
|
+
if (-not $versionGate.known) { $warnings.Add('Could not compare the published version; the official installer will verify the update.') }
|
|
300
|
+
if (-not $shouldInstall) { $plannedActions.Clear() }
|
|
301
|
+
}
|
|
302
|
+
$installFailed = $false
|
|
293
303
|
if ($shouldInstall) {
|
|
294
|
-
$installResult = Invoke-CursorInstaller
|
|
304
|
+
$installResult = try { Invoke-CursorInstaller } catch { [pscustomobject]@{ skipped = $false; success = $false; stderr = [string]$_.Exception.Message; usedPowerShell51Fallback = $false; usedWingetFallback = $false } }
|
|
305
|
+
if ($installResult.PSObject.Properties['success'] -and -not $installResult.success) {
|
|
306
|
+
$installFailed = $true
|
|
307
|
+
$warnings.Add($installResult.stderr)
|
|
308
|
+
}
|
|
295
309
|
$usedPowerShell51Fallback = [bool]$installResult.usedPowerShell51Fallback
|
|
296
310
|
if ($usedPowerShell51Fallback) {
|
|
297
311
|
$warnings.Add('Cursor installer required the Windows PowerShell 5.1 fallback.')
|
|
@@ -302,8 +316,9 @@ if ($shouldInstall) {
|
|
|
302
316
|
|
|
303
317
|
Start-Sleep -Seconds 2
|
|
304
318
|
$detected = Detect-CursorInstall
|
|
305
|
-
if (-not $detected.installed -and -not $SkipInstaller) {
|
|
306
|
-
|
|
319
|
+
if (-not $detected.installed -and -not $SkipInstaller -and -not $installFailed) {
|
|
320
|
+
$warnings.Add('Cursor Agent installation completed but cursor-agent was still not detected.')
|
|
321
|
+
$installFailed = $true
|
|
307
322
|
}
|
|
308
323
|
|
|
309
324
|
if ($Force) {
|
|
@@ -320,7 +335,7 @@ $interruptions = [System.Collections.Generic.List[object]]::new()
|
|
|
320
335
|
if ($shouldInstall) {
|
|
321
336
|
$interruptions.Add([pscustomobject]@{
|
|
322
337
|
kind = 'relaunch_required'
|
|
323
|
-
summary = '
|
|
338
|
+
summary = 'Run Detect Again after the Cursor Agent install step if the command is not visible yet.'
|
|
324
339
|
resumable = $true
|
|
325
340
|
requiresRestart = $false
|
|
326
341
|
requiresElevation = $false
|
|
@@ -339,7 +354,7 @@ if (-not $authSatisfied) {
|
|
|
339
354
|
$result = [pscustomobject]@{
|
|
340
355
|
helper = 'windows-cursor-native-installer'
|
|
341
356
|
mode = $executionMode
|
|
342
|
-
status = if ($interruptions.Count -gt 0) { [string]$interruptions[0].kind } else { 'ready' }
|
|
357
|
+
status = if ($installFailed) { 'failed' } elseif ($interruptions.Count -gt 0) { [string]$interruptions[0].kind } else { 'ready' }
|
|
343
358
|
installed = [bool]$detected.installed
|
|
344
359
|
detectedVersion = if ($detected.detectedVersion) { $detected.detectedVersion } else { $null }
|
|
345
360
|
commandPath = $detected.commandPath
|
|
@@ -350,4 +365,4 @@ $result = [pscustomobject]@{
|
|
|
350
365
|
interruptions = $interruptions.ToArray()
|
|
351
366
|
usedPowerShell51Fallback = $usedPowerShell51Fallback
|
|
352
367
|
}
|
|
353
|
-
Write-StructuredResult -Result $result -ExitCode 0
|
|
368
|
+
Write-StructuredResult -Result $result -ExitCode $(if ($installFailed) { 1 } else { 0 })
|
|
@@ -31,6 +31,7 @@ Set-StrictMode -Version Latest
|
|
|
31
31
|
$ErrorActionPreference = 'Stop'
|
|
32
32
|
|
|
33
33
|
. (Join-Path $PSScriptRoot '_HiddenProcess.ps1')
|
|
34
|
+
. (Join-Path $PSScriptRoot '_NativeInstallerSupport.ps1')
|
|
34
35
|
. (Join-Path $PSScriptRoot '_PackagedUninstall.ps1')
|
|
35
36
|
|
|
36
37
|
function Write-StructuredResult {
|
|
@@ -39,6 +40,10 @@ function Write-StructuredResult {
|
|
|
39
40
|
[int]$ExitCode
|
|
40
41
|
)
|
|
41
42
|
|
|
43
|
+
if (Get-Variable -Name catsInitialObservation -Scope Script -ErrorAction SilentlyContinue) {
|
|
44
|
+
Add-CatsNativeObservation -Result $Result -Before $script:catsInitialObservation -Attempted ([bool]$script:shouldInstall) -Skipped ([bool]$SkipInstaller)
|
|
45
|
+
}
|
|
46
|
+
|
|
42
47
|
if ($Json) {
|
|
43
48
|
$Result | ConvertTo-Json -Depth 10
|
|
44
49
|
} else {
|
|
@@ -126,12 +131,6 @@ function Invoke-DevinInstaller {
|
|
|
126
131
|
return [pscustomobject]@{ skipped = $true; success = $true; exitCode = 0; stderr = '' }
|
|
127
132
|
}
|
|
128
133
|
|
|
129
|
-
$tempScript = [System.IO.Path]::Combine(
|
|
130
|
-
[System.IO.Path]::GetTempPath(),
|
|
131
|
-
"cats-devin-install-$([System.Guid]::NewGuid().ToString('N')).ps1"
|
|
132
|
-
)
|
|
133
|
-
$stdoutPath = "$tempScript.stdout"
|
|
134
|
-
$stderrPath = "$tempScript.stderr"
|
|
135
134
|
# Devin's setup.ps1 ends by launching the interactive `devin setup` wizard.
|
|
136
135
|
# Packaged setup runs with no console a prompt can reach, so an unstripped
|
|
137
136
|
# installer would stall the step rather than fail.
|
|
@@ -174,46 +173,8 @@ function Invoke-DevinInstaller {
|
|
|
174
173
|
}
|
|
175
174
|
$bootstrap = ($patchedLines -join [Environment]::NewLine)
|
|
176
175
|
|
|
177
|
-
|
|
178
|
-
[System.IO.File]::WriteAllText(
|
|
179
|
-
$tempScript,
|
|
180
|
-
$bootstrap,
|
|
181
|
-
[System.Text.UTF8Encoding]::new($false)
|
|
182
|
-
)
|
|
183
|
-
$powerShellExe = if (Get-Command pwsh.exe -ErrorAction SilentlyContinue) {
|
|
184
|
-
'pwsh.exe'
|
|
185
|
-
} else {
|
|
186
|
-
'powershell.exe'
|
|
187
|
-
}
|
|
188
|
-
$process = Start-Process -FilePath $powerShellExe `
|
|
189
|
-
-ArgumentList @('-NoProfile', '-ExecutionPolicy', 'Bypass', '-File', $tempScript) `
|
|
190
|
-
-Wait -PassThru -NoNewWindow `
|
|
191
|
-
-RedirectStandardOutput $stdoutPath `
|
|
192
|
-
-RedirectStandardError $stderrPath
|
|
193
|
-
$stderrRaw = if (Test-Path -LiteralPath $stderrPath -PathType Leaf) {
|
|
194
|
-
Get-Content -LiteralPath $stderrPath -Raw -ErrorAction SilentlyContinue
|
|
195
|
-
} else { $null }
|
|
176
|
+
return Invoke-CatsRemoteInstaller -ScriptText $bootstrap -RetrySharingViolation
|
|
196
177
|
|
|
197
|
-
return [pscustomobject]@{
|
|
198
|
-
skipped = $false
|
|
199
|
-
success = ($process.ExitCode -eq 0)
|
|
200
|
-
exitCode = $process.ExitCode
|
|
201
|
-
stderr = if ($null -eq $stderrRaw) { '' } else { [string]$stderrRaw }
|
|
202
|
-
}
|
|
203
|
-
} catch {
|
|
204
|
-
return [pscustomobject]@{
|
|
205
|
-
skipped = $false
|
|
206
|
-
success = $false
|
|
207
|
-
exitCode = -1
|
|
208
|
-
stderr = "Failed to invoke Devin installer: $($_.Exception.Message)"
|
|
209
|
-
}
|
|
210
|
-
} finally {
|
|
211
|
-
foreach ($path in @($tempScript, $stdoutPath, $stderrPath)) {
|
|
212
|
-
if (Test-Path -LiteralPath $path -PathType Leaf) {
|
|
213
|
-
Remove-Item -LiteralPath $path -Force -ErrorAction SilentlyContinue
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
178
|
}
|
|
218
179
|
|
|
219
180
|
if (-not $CheckOnly -and -not $Apply -and -not $Upgrade -and -not $Force -and -not $Uninstall) {
|
|
@@ -303,7 +264,15 @@ if ($CheckOnly) {
|
|
|
303
264
|
}) -ExitCode 0
|
|
304
265
|
}
|
|
305
266
|
|
|
267
|
+
$installFailed = $false
|
|
268
|
+
$catsInitialObservation = $detected.PSObject.Copy()
|
|
306
269
|
$shouldInstall = $Force -or $Upgrade -or -not $detected.installed
|
|
270
|
+
if ($Upgrade -and -not $Force -and $detected.installed -and -not $SkipInstaller -and -not $DryRun) {
|
|
271
|
+
$versionGate = Test-CatsNativeUpgrade -Provider 'devin' -InstalledVersion $detected.detectedVersion
|
|
272
|
+
$shouldInstall = $versionGate.shouldInstall
|
|
273
|
+
if (-not $versionGate.known) { $warnings.Add('Could not compare the published version; the official installer will verify the update.') }
|
|
274
|
+
if (-not $shouldInstall) { $plannedActions.Clear() }
|
|
275
|
+
}
|
|
307
276
|
$installFailed = $false
|
|
308
277
|
$installSkipped = $false
|
|
309
278
|
if ($shouldInstall) {
|
|
@@ -347,12 +316,12 @@ if ($shouldInstall) {
|
|
|
347
316
|
}
|
|
348
317
|
}
|
|
349
318
|
|
|
350
|
-
$manualSteps.Add('Run `devin login`
|
|
319
|
+
$manualSteps.Add('Run `devin auth login` to authenticate; check with `devin auth status`. The interactive setup wizard is skipped.')
|
|
351
320
|
$interruptions = [System.Collections.Generic.List[object]]::new()
|
|
352
321
|
if ($shouldInstall -and -not $installFailed -and -not $DryRun) {
|
|
353
322
|
$interruptions.Add([pscustomobject]@{
|
|
354
323
|
kind = 'relaunch_required'
|
|
355
|
-
summary = '
|
|
324
|
+
summary = 'Run Detect Again after the Devin install step if the command is not visible yet.'
|
|
356
325
|
resumable = $true
|
|
357
326
|
requiresRestart = $false
|
|
358
327
|
requiresElevation = $false
|
|
@@ -179,6 +179,10 @@ $mode = if ($CheckOnly) {
|
|
|
179
179
|
'apply'
|
|
180
180
|
}
|
|
181
181
|
|
|
182
|
+
# Desktop can outlive an installation. A fresh check must include the registry
|
|
183
|
+
# PATH, while retaining caller-provided command locations in this process.
|
|
184
|
+
$env:Path = [System.Environment]::GetEnvironmentVariable('Path', 'Machine') + ';' +
|
|
185
|
+
[System.Environment]::GetEnvironmentVariable('Path', 'User') + ';' + $env:Path
|
|
182
186
|
$installed = Test-GhInstalled
|
|
183
187
|
$detected = Get-GhDetectedVersion -Override $DetectedVersion
|
|
184
188
|
$commandPath = if ($SkipGhProbe) { '' } else { Resolve-GhCommandPath }
|
|
@@ -59,6 +59,7 @@ Set-StrictMode -Version Latest
|
|
|
59
59
|
$ErrorActionPreference = 'Stop'
|
|
60
60
|
|
|
61
61
|
. (Join-Path $PSScriptRoot '_HiddenProcess.ps1')
|
|
62
|
+
. (Join-Path $PSScriptRoot '_NativeInstallerSupport.ps1')
|
|
62
63
|
. (Join-Path $PSScriptRoot '_PackagedUninstall.ps1')
|
|
63
64
|
|
|
64
65
|
function Write-StructuredResult {
|
|
@@ -67,6 +68,10 @@ function Write-StructuredResult {
|
|
|
67
68
|
[int]$ExitCode
|
|
68
69
|
)
|
|
69
70
|
|
|
71
|
+
if (Get-Variable -Name catsInitialObservation -Scope Script -ErrorAction SilentlyContinue) {
|
|
72
|
+
Add-CatsNativeObservation -Result $Result -Before $script:catsInitialObservation -Attempted ([bool]$script:shouldInstall) -Skipped ([bool]$SkipInstaller)
|
|
73
|
+
}
|
|
74
|
+
|
|
70
75
|
if ($Json) {
|
|
71
76
|
$Result | ConvertTo-Json -Depth 10
|
|
72
77
|
} else {
|
|
@@ -364,7 +369,19 @@ if ($CheckOnly) {
|
|
|
364
369
|
Write-StructuredResult -Result $result -ExitCode 0
|
|
365
370
|
}
|
|
366
371
|
|
|
372
|
+
if ($DryRun) {
|
|
373
|
+
Write-CatsNativePreview -Helper 'windows-goose-native-installer' -Mode $executionMode -Detected $detected -Actions $plannedActions.ToArray() -EmitJson ([bool]$Json)
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
$installFailed = $false
|
|
377
|
+
$catsInitialObservation = $detected.PSObject.Copy()
|
|
367
378
|
$shouldInstall = $Force -or $Upgrade -or -not $detected.installed
|
|
379
|
+
if ($Upgrade -and -not $Force -and $detected.installed -and -not $SkipInstaller -and -not $DryRun) {
|
|
380
|
+
$versionGate = Test-CatsNativeUpgrade -Provider 'goose' -InstalledVersion $detected.detectedVersion
|
|
381
|
+
$shouldInstall = $versionGate.shouldInstall
|
|
382
|
+
if (-not $versionGate.known) { $warnings.Add('Could not compare the published version; the official installer will verify the update.') }
|
|
383
|
+
if (-not $shouldInstall) { $plannedActions.Clear() }
|
|
384
|
+
}
|
|
368
385
|
$installFailed = $false
|
|
369
386
|
$installSkipped = $false
|
|
370
387
|
if ($shouldInstall) {
|
|
@@ -410,7 +427,7 @@ $interruptions = [System.Collections.Generic.List[object]]::new()
|
|
|
410
427
|
if ($shouldInstall -and -not $installFailed) {
|
|
411
428
|
$interruptions.Add([pscustomobject]@{
|
|
412
429
|
kind = 'relaunch_required'
|
|
413
|
-
summary = '
|
|
430
|
+
summary = 'Run Detect Again after the Goose install step if the command is not visible yet.'
|
|
414
431
|
resumable = $true
|
|
415
432
|
requiresRestart = $false
|
|
416
433
|
requiresElevation = $false
|