@cats-inc/cats-platform 0.1.21 → 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 +3 -7
- 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 +114 -34
- package/build/desktop/bootstrapPage.js.map +1 -1
- package/build/desktop/cliInventoryProbe.d.ts +5 -2
- package/build/desktop/cliInventoryProbe.d.ts.map +1 -1
- package/build/desktop/cliInventoryProbe.js +14 -11
- 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 +10 -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 +144 -249
- 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 +14 -33
- 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/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-DImsuR9T.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-DKOSn0o_.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-DCIId0eY.js → useDraftSessionChips-D9BX6X92.js} +1 -1
- package/build/renderer/index.html +2 -2
- 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/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 +7 -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/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 +3 -3
- package/build/server/design/components/providerModelFieldsSupport.d.ts.map +1 -1
- package/build/server/design/components/providerModelFieldsSupport.js +37 -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 +2 -1
- 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/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 +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 +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/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/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 +39 -0
- 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 +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 +28 -22
- package/build/server/shared/providerCatalogData.d.ts.map +1 -1
- package/build/server/shared/providerCatalogData.js +22 -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 +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/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 +43 -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/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/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/{Install-Aider.ps1 → Install-MetaCli.ps1} +180 -92
- package/scripts/windows/Install-Ollama.ps1 +4 -1
- 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-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/scripts/linux/install-aider.sh +0 -8
- package/scripts/macos/install-aider.sh +0 -8
|
@@ -1,10 +1,23 @@
|
|
|
1
|
-
export type RuntimeSetupStatus = 'ready' | '
|
|
1
|
+
export type RuntimeSetupStatus = 'ready' | 'selection_required' | 'scan_required' | 'attention_required' | 'unavailable';
|
|
2
2
|
export type RuntimeSetupStateStatus = 'pending' | 'scanning' | 'ready' | 'applied' | 'error' | 'unavailable';
|
|
3
3
|
export interface RuntimeSetupProviderSummary {
|
|
4
4
|
provider: string;
|
|
5
5
|
family: string;
|
|
6
6
|
remediationCount?: number;
|
|
7
7
|
}
|
|
8
|
+
export interface RuntimeSelectedProviderTarget {
|
|
9
|
+
provider: string;
|
|
10
|
+
backend: 'cli' | 'api' | 'local' | 'agent';
|
|
11
|
+
instance: string;
|
|
12
|
+
}
|
|
13
|
+
export interface RuntimeProviderSelection {
|
|
14
|
+
state: 'missing' | 'invalid' | 'empty' | 'selected';
|
|
15
|
+
revision: string;
|
|
16
|
+
targets: RuntimeSelectedProviderTarget[];
|
|
17
|
+
nativeSetupTargets: RuntimeSelectedProviderTarget[];
|
|
18
|
+
diskChanged: boolean;
|
|
19
|
+
error: string | null;
|
|
20
|
+
}
|
|
8
21
|
export interface RuntimeSetupSummary {
|
|
9
22
|
source: 'runtime' | 'assumed_ready' | 'unavailable';
|
|
10
23
|
bootstrapRequired: boolean;
|
|
@@ -16,11 +29,11 @@ export interface RuntimeSetupSummary {
|
|
|
16
29
|
appliedAt: string | null;
|
|
17
30
|
providerCount: number;
|
|
18
31
|
availableCount: number;
|
|
19
|
-
|
|
32
|
+
providersReady: RuntimeSetupProviderSummary[];
|
|
20
33
|
providersNeedingAttention: RuntimeSetupProviderSummary[];
|
|
21
|
-
|
|
34
|
+
selectedProviders: string[];
|
|
22
35
|
canRunManualScan: boolean;
|
|
23
|
-
|
|
36
|
+
canManageSelection: boolean;
|
|
24
37
|
error: string | null;
|
|
25
38
|
}
|
|
26
39
|
//# sourceMappingURL=runtimeSetup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtimeSetup.d.ts","sourceRoot":"","sources":["../../../src/shared/runtimeSetup.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAC1B,OAAO,GACP,
|
|
1
|
+
{"version":3,"file":"runtimeSetup.d.ts","sourceRoot":"","sources":["../../../src/shared/runtimeSetup.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAC1B,OAAO,GACP,oBAAoB,GACpB,eAAe,GACf,oBAAoB,GACpB,aAAa,CAAC;AAElB,MAAM,MAAM,uBAAuB,GAC/B,SAAS,GACT,UAAU,GACV,OAAO,GACP,SAAS,GACT,OAAO,GACP,aAAa,CAAC;AAElB,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,6BAA6B,EAAE,CAAC;IACzC,kBAAkB,EAAE,6BAA6B,EAAE,CAAC;IACpD,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,SAAS,GAAG,eAAe,GAAG,aAAa,CAAC;IACpD,iBAAiB,EAAE,OAAO,CAAC;IAC3B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,WAAW,EAAE,uBAAuB,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,2BAA2B,EAAE,CAAC;IAC9C,yBAAyB,EAAE,2BAA2B,EAAE,CAAC;IACzD,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB"}
|
|
@@ -51,7 +51,7 @@ export function resolveRuntimeDotClassName(status) {
|
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
export function needsRuntimeSetupRecovery(runtimeSetupStatus) {
|
|
54
|
-
return runtimeSetupStatus === '
|
|
54
|
+
return runtimeSetupStatus === 'selection_required'
|
|
55
55
|
|| runtimeSetupStatus === 'scan_required'
|
|
56
56
|
|| runtimeSetupStatus === 'attention_required'
|
|
57
57
|
|| runtimeSetupStatus === 'unavailable';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtimeStatusPresentation.js","sourceRoot":"","sources":["../../../src/shared/runtimeStatusPresentation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,0BAA0B,CAAC;AAWlC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3D,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AACvE,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEzE,MAAM,UAAU,gCAAgC,CAC9C,OAAoD;IAEpD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACvD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACvB,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IAC5C,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,UAAU,CAAC;IAClD,IAAI,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,aAAa,CAAC;IAExD,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,MAAiC;IAEjC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO,CAAC,CAAC,OAAO,iCAAiC,CAAC;QACvD,KAAK,UAAU,CAAC,CAAC,OAAO,oCAAoC,CAAC;QAC7D,KAAK,aAAa,CAAC,CAAC,OAAO,uCAAuC,CAAC;QACnE,OAAO,CAAC,CAAC,OAAO,mCAAmC,CAAC;IACtD,CAAC;AACH,CAAC;AAED,MAAM,4BAA4B,GAA8C;IAC9E,KAAK,EAAE,2BAA2B;IAClC,QAAQ,EAAE,6BAA6B;IACvC,WAAW,EAAE,yBAAyB;IACtC,OAAO,EAAE,oCAAoC;CAC9C,CAAC;AAEF,MAAM,UAAU,qBAAqB,CACnC,MAAiC,EACjC,CAA4B;IAE5B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC;AACxF,CAAC;AAED,sDAAsD;AAEtD,MAAM,UAAU,0BAA0B,CACxC,MAAiC;IAEjC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO,CAAC,CAAC,OAAO,8BAA8B,CAAC;QACpD,KAAK,UAAU,CAAC,CAAC,OAAO,6BAA6B,CAAC;QACtD,KAAK,aAAa,CAAC,CAAC,OAAO,gCAAgC,CAAC;QAC5D,OAAO,CAAC,CAAC,OAAO,4BAA4B,CAAC;IAC/C,CAAC;AACH,CAAC;AAMD,MAAM,UAAU,yBAAyB,CACvC,kBAA8C;IAE9C,OAAO,kBAAkB,KAAK,
|
|
1
|
+
{"version":3,"file":"runtimeStatusPresentation.js","sourceRoot":"","sources":["../../../src/shared/runtimeStatusPresentation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,0BAA0B,CAAC;AAWlC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3D,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AACvE,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEzE,MAAM,UAAU,gCAAgC,CAC9C,OAAoD;IAEpD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACvD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACvB,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IAC5C,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,UAAU,CAAC;IAClD,IAAI,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,aAAa,CAAC;IAExD,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,MAAiC;IAEjC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO,CAAC,CAAC,OAAO,iCAAiC,CAAC;QACvD,KAAK,UAAU,CAAC,CAAC,OAAO,oCAAoC,CAAC;QAC7D,KAAK,aAAa,CAAC,CAAC,OAAO,uCAAuC,CAAC;QACnE,OAAO,CAAC,CAAC,OAAO,mCAAmC,CAAC;IACtD,CAAC;AACH,CAAC;AAED,MAAM,4BAA4B,GAA8C;IAC9E,KAAK,EAAE,2BAA2B;IAClC,QAAQ,EAAE,6BAA6B;IACvC,WAAW,EAAE,yBAAyB;IACtC,OAAO,EAAE,oCAAoC;CAC9C,CAAC;AAEF,MAAM,UAAU,qBAAqB,CACnC,MAAiC,EACjC,CAA4B;IAE5B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC;AACxF,CAAC;AAED,sDAAsD;AAEtD,MAAM,UAAU,0BAA0B,CACxC,MAAiC;IAEjC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO,CAAC,CAAC,OAAO,8BAA8B,CAAC;QACpD,KAAK,UAAU,CAAC,CAAC,OAAO,6BAA6B,CAAC;QACtD,KAAK,aAAa,CAAC,CAAC,OAAO,gCAAgC,CAAC;QAC5D,OAAO,CAAC,CAAC,OAAO,4BAA4B,CAAC;IAC/C,CAAC;AACH,CAAC;AAMD,MAAM,UAAU,yBAAyB,CACvC,kBAA8C;IAE9C,OAAO,kBAAkB,KAAK,oBAAoB;WAC7C,kBAAkB,KAAK,eAAe;WACtC,kBAAkB,KAAK,oBAAoB;WAC3C,kBAAkB,KAAK,aAAa,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,MAAiC,EACjC,OAGC;IAED,IAAI,OAAO,EAAE,oBAAoB,EAAE,CAAC;QAClC,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,IAAI,yBAAyB,CAAC,OAAO,EAAE,kBAAkB,CAAC,EAAE,CAAC;QAC3D,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,IAAI,MAAM,KAAK,aAAa,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QACtD,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,MAA6B;IAE7B,IAAI,MAAM,KAAK,eAAe,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,MAAM,KAAK,eAAe,EAAE,CAAC;QAC/B,OAAO,2BAA2B,CAAC;IACrC,CAAC;IACD,OAAO,0BAA0B,CAAC;AACpC,CAAC;AAED,2CAA2C;AAE3C,MAAM,UAAU,+BAA+B,CAC7C,MAAiC;IAEjC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO,CAAC,CAAC,OAAO,uCAAuC,CAAC;QAC7D,KAAK,aAAa,CAAC;QACnB,KAAK,UAAU,CAAC,CAAC,OAAO,yCAAyC,CAAC;QAClE,OAAO,CAAC,CAAC,OAAO,yCAAyC,CAAC;IAC5D,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cats-inc/cats-platform",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.8",
|
|
4
4
|
"description": "Technical host package for the Cats platform, backed by cats-runtime.",
|
|
5
5
|
"author": "Cats Inc. <sammykenny2@gmail.com>",
|
|
6
6
|
"homepage": "https://github.com/cats-inc/cats-platform",
|
|
7
7
|
"type": "module",
|
|
8
|
+
"imports": {
|
|
9
|
+
"#cats-app-package": "./packages/app-sdk/package.js"
|
|
10
|
+
},
|
|
8
11
|
"bin": {
|
|
9
12
|
"cats-platform": "build/server/index.js"
|
|
10
13
|
},
|
|
@@ -14,6 +17,7 @@
|
|
|
14
17
|
"build/server",
|
|
15
18
|
"build/desktop",
|
|
16
19
|
"scripts",
|
|
20
|
+
"packages/app-sdk",
|
|
17
21
|
"config/provider-capability-bootstrap.yaml.example",
|
|
18
22
|
".env.example",
|
|
19
23
|
"README.md",
|
|
@@ -126,12 +130,23 @@
|
|
|
126
130
|
},
|
|
127
131
|
"files": [
|
|
128
132
|
"build/desktop/**/*",
|
|
133
|
+
"packages/app-sdk/**/*",
|
|
129
134
|
"assets/build/icon.ico",
|
|
130
135
|
"assets/build/icon.png",
|
|
131
136
|
"assets/tray-icon*.png",
|
|
132
137
|
"package.json"
|
|
133
138
|
],
|
|
134
139
|
"extraResources": [
|
|
140
|
+
{
|
|
141
|
+
"from": "build/desktop-packaging/shared/official-apps",
|
|
142
|
+
"to": "app-sidecar/official-apps",
|
|
143
|
+
"filter": ["**/*"]
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"from": "build/desktop-packaging/shared/app-sidecar/packages/app-sdk",
|
|
147
|
+
"to": "app-sidecar/packages/app-sdk",
|
|
148
|
+
"filter": ["**/*"]
|
|
149
|
+
},
|
|
135
150
|
{
|
|
136
151
|
"from": "build/desktop-packaging/shared/build/server",
|
|
137
152
|
"to": "app-sidecar/build/server",
|
|
@@ -146,6 +161,13 @@
|
|
|
146
161
|
"**/*"
|
|
147
162
|
]
|
|
148
163
|
},
|
|
164
|
+
{
|
|
165
|
+
"from": "build/desktop-packaging/shared/cats-platform/config",
|
|
166
|
+
"to": "app-sidecar/config",
|
|
167
|
+
"filter": [
|
|
168
|
+
"**/*"
|
|
169
|
+
]
|
|
170
|
+
},
|
|
149
171
|
{
|
|
150
172
|
"from": "build/desktop-packaging/shared/app-sidecar/package.json",
|
|
151
173
|
"to": "app-sidecar/package.json"
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/** Host-injected browser API. No imports, secrets, filesystem or general network proxy. */
|
|
2
|
+
export interface CatsAppBrowserSdkV1 {
|
|
3
|
+
readonly sdkVersion: '1.2.0';
|
|
4
|
+
readonly appId: string;
|
|
5
|
+
readonly version: string;
|
|
6
|
+
readonly locale: string;
|
|
7
|
+
readonly theme: 'light' | 'dark';
|
|
8
|
+
readonly usage: {
|
|
9
|
+
getSnapshot(): Promise<UsageSnapshotV1>;
|
|
10
|
+
refreshQuota(target: { provider: 'codex' | 'copilot' | 'claude' | 'antigravity'; instance: string }): Promise<UsageQuotaRefreshV1>;
|
|
11
|
+
};
|
|
12
|
+
openLobby(): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
export interface UsageTotalsV1 {
|
|
15
|
+
observations: number;
|
|
16
|
+
inputTokens: number | null;
|
|
17
|
+
outputTokens: number | null;
|
|
18
|
+
totalTokens: number | null;
|
|
19
|
+
costs: Array<{ currency: string; amount: number; observations: number }>;
|
|
20
|
+
confidence: { reported: number; aggregated: number; estimated: number; unknown: number };
|
|
21
|
+
lastObservedAt: string | null;
|
|
22
|
+
}
|
|
23
|
+
export interface UsageTargetV1 { provider: string; instance: string; backend: 'cli' | 'api' }
|
|
24
|
+
export interface UsageGuardrailV1 {
|
|
25
|
+
provider: string | null; instance: string | null; backend: 'cli' | 'api' | null;
|
|
26
|
+
outcome: string; scope: string; sessionId: string | null; observedAt: string; cooldownUntil: string | null;
|
|
27
|
+
}
|
|
28
|
+
export interface UsageSnapshotV1 {
|
|
29
|
+
schemaVersion: 1; generatedAt: string; runtime: { status: 'available'; epoch: string };
|
|
30
|
+
coverage: { mode: 'memory'; scope: 'runtime_observed_results'; startedAt: string;
|
|
31
|
+
firstRetainedAt: string | null; lastObservedAt: string | null; retainedRecords: number; droppedRecords: number;
|
|
32
|
+
droppedQuotaTargets: number; targetCount: number; sessionCount: number; truncated: boolean; historyAvailable: false };
|
|
33
|
+
totals: UsageTotalsV1;
|
|
34
|
+
targets: Array<UsageTargetV1 & { usage: UsageTotalsV1; guardrails: UsageGuardrailV1[]; quota: {
|
|
35
|
+
status: 'available' | 'unavailable' | 'unsupported'; freshness: 'fresh' | 'stale' | 'unknown';
|
|
36
|
+
source: string | null; observedAt: string | null; accountId: null; accountLinkage: 'unverified';
|
|
37
|
+
scope: 'provider_reported_during_runtime_execution' | 'provider_account_query'; automaticRefresh: false;
|
|
38
|
+
limitId: string | null;
|
|
39
|
+
refreshSupported: boolean;
|
|
40
|
+
windows: Array<{ id: string; unit: 'percent' | 'requests' | 'credits'; used: number | null; limit: number | null; remaining: number | null; unlimited: boolean; usedPercent: number | null; remainingPercent: number | null; resetsAt: string | null; windowMinutes: number | null }>;
|
|
41
|
+
} }>;
|
|
42
|
+
sessions: Array<UsageTargetV1 & { sessionId: string; usage: UsageTotalsV1 }>;
|
|
43
|
+
incidents: Array<UsageTargetV1 & { id: string; classification: string; scope: string; observedAt: string; retryAt: string | null }>;
|
|
44
|
+
guardrails: UsageGuardrailV1[];
|
|
45
|
+
}
|
|
46
|
+
declare global { var catsApp: CatsAppBrowserSdkV1; }
|
|
47
|
+
export interface UsageQuotaRefreshV1 {
|
|
48
|
+
status: 'updated' | 'cooldown' | 'busy' | 'auth_required' | 'unsupported' | 'unavailable' | 'timeout' | 'error';
|
|
49
|
+
nextRefreshAt: string | null;
|
|
50
|
+
snapshot: UsageSnapshotV1;
|
|
51
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// Injected by the host before the app. No credentials or general HTTP proxy.
|
|
2
|
+
(() => {
|
|
3
|
+
'use strict';
|
|
4
|
+
const boot = globalThis.__CATS_APP_BOOT__;
|
|
5
|
+
delete globalThis.__CATS_APP_BOOT__;
|
|
6
|
+
const pending = new Map();
|
|
7
|
+
let nextId = 0;
|
|
8
|
+
let port;
|
|
9
|
+
let resolveReady;
|
|
10
|
+
const ready = new Promise((resolve) => { resolveReady = resolve; });
|
|
11
|
+
const connect = (event) => {
|
|
12
|
+
if (event.source !== parent || event.data?.type !== 'cats.app.connect'
|
|
13
|
+
|| event.data?.nonce !== boot.nonce || !event.ports[0] || port) return;
|
|
14
|
+
port = event.ports[0];
|
|
15
|
+
window.removeEventListener('message', connect);
|
|
16
|
+
port.onmessage = ({ data }) => {
|
|
17
|
+
const request = pending.get(data?.id);
|
|
18
|
+
if (!request) return;
|
|
19
|
+
pending.delete(data.id);
|
|
20
|
+
clearTimeout(request.timer);
|
|
21
|
+
if (data.ok) request.resolve(data.value);
|
|
22
|
+
else request.reject(new Error(data.error || 'App bridge request failed.'));
|
|
23
|
+
};
|
|
24
|
+
port.start();
|
|
25
|
+
resolveReady();
|
|
26
|
+
};
|
|
27
|
+
window.addEventListener('message', connect);
|
|
28
|
+
parent.postMessage({ type: 'cats.app.ready', nonce: boot.nonce }, '*');
|
|
29
|
+
const request = async (method, params) => {
|
|
30
|
+
await Promise.race([ready, new Promise((_, reject) => setTimeout(() => reject(new Error('App host is unavailable.')), 5000))]);
|
|
31
|
+
if (pending.size >= 4) throw new Error('Too many pending app requests.');
|
|
32
|
+
return new Promise((resolve, reject) => {
|
|
33
|
+
const id = ++nextId;
|
|
34
|
+
const timer = setTimeout(() => { pending.delete(id); reject(new Error('App bridge timed out.')); }, method === 'usage.refreshQuota' ? 15000 : 12000);
|
|
35
|
+
pending.set(id, { resolve, reject, timer });
|
|
36
|
+
port.postMessage({ id, method, params });
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
Object.defineProperty(globalThis, 'catsApp', { value: Object.freeze({
|
|
40
|
+
sdkVersion: '1.2.0', appId: boot.appId, version: boot.version,
|
|
41
|
+
locale: boot.locale, theme: boot.theme,
|
|
42
|
+
usage: Object.freeze({
|
|
43
|
+
getSnapshot: () => request('usage.snapshot'),
|
|
44
|
+
refreshQuota: (target) => request('usage.refreshQuota', target),
|
|
45
|
+
}),
|
|
46
|
+
openLobby: () => request('navigation.lobby'),
|
|
47
|
+
}), writable: false, configurable: false });
|
|
48
|
+
})();
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export const APP_SDK_VERSION: string;
|
|
2
|
+
export const PLATFORM_VERSION: string;
|
|
3
|
+
export const MAX_PACKAGE_BYTES: number;
|
|
4
|
+
export interface AppPin { id: string; version: string; sha256: string; artifact: string }
|
|
5
|
+
export interface ResolvedAppPin extends AppPin { bytes: Buffer; manifest: Record<string, any> }
|
|
6
|
+
export function sha256(bytes: Uint8Array): string;
|
|
7
|
+
export function readBrowserSdk(): Promise<string>;
|
|
8
|
+
export function supportsVersion(version: string, range: string): boolean;
|
|
9
|
+
export function decodeAppPackage(bytes: Uint8Array, expected?: Pick<AppPin, 'id' | 'version' | 'sha256'>): {
|
|
10
|
+
manifest: Record<string, any>; files: { path: string; data: Buffer }[]; sha256: string;
|
|
11
|
+
};
|
|
12
|
+
export function parseAppLock(value: unknown): { schemaVersion: 1; apps: AppPin[] };
|
|
13
|
+
export function resolveAppLock(lockPath: string): Promise<ResolvedAppPin[]>;
|
|
14
|
+
export function materializeAppSelection(apps: ResolvedAppPin[]): Promise<string>;
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { gunzipSync } from 'node:zlib';
|
|
3
|
+
import { readFile, stat, mkdtemp, writeFile } from 'node:fs/promises';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { tmpdir } from 'node:os';
|
|
6
|
+
import { createRequire } from 'node:module';
|
|
7
|
+
|
|
8
|
+
export const APP_SDK_VERSION = '1.2.0';
|
|
9
|
+
export const PLATFORM_VERSION = createRequire(import.meta.url)('../../package.json').version;
|
|
10
|
+
export const MAX_PACKAGE_BYTES = 8 * 1024 * 1024;
|
|
11
|
+
const MAX_EXPANDED_BYTES = 24 * 1024 * 1024;
|
|
12
|
+
const ID = /^[a-z][a-z0-9]*(?:[.-][a-z0-9]+)*$/;
|
|
13
|
+
const VERSION = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;
|
|
14
|
+
const HASH = /^[a-f0-9]{64}$/;
|
|
15
|
+
const object = (value) => value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
16
|
+
export const sha256 = (bytes) => createHash('sha256').update(bytes).digest('hex');
|
|
17
|
+
export const readBrowserSdk = () => readFile(new URL('./browser.js', import.meta.url), 'utf8');
|
|
18
|
+
|
|
19
|
+
// v1 deliberately supports exact versions, ^x.y.z, x.y.x and x.x only.
|
|
20
|
+
// Reject rather than guess at unsupported semver expressions / prereleases.
|
|
21
|
+
export function supportsVersion(version, range) {
|
|
22
|
+
if (typeof version !== 'string' || typeof range !== 'string' || !VERSION.test(version)) return false;
|
|
23
|
+
const v = version.split('.').map(Number);
|
|
24
|
+
if (VERSION.test(range)) return range === version;
|
|
25
|
+
const wildcard = /^(0|[1-9]\d*)\.(?:(0|[1-9]\d*)\.)?x$/.exec(range);
|
|
26
|
+
if (wildcard) return v[0] === Number(wildcard[1]) && (wildcard[2] === undefined || v[1] === Number(wildcard[2]));
|
|
27
|
+
if (!range.startsWith('^') || !VERSION.test(range.slice(1))) return false;
|
|
28
|
+
const r = range.slice(1).split('.').map(Number);
|
|
29
|
+
const compare = v[0] - r[0] || v[1] - r[1] || v[2] - r[2];
|
|
30
|
+
if (compare < 0 || v[0] !== r[0]) return false;
|
|
31
|
+
return r[0] > 0 || (v[1] === r[1] && (r[1] > 0 || v[2] === r[2]));
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function assertIdentity(id, version) {
|
|
35
|
+
if (typeof id !== 'string' || id.length > 100 || !ID.test(id)
|
|
36
|
+
|| typeof version !== 'string' || !VERSION.test(version)) throw new Error('Invalid app ID or stable version.');
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export function decodeAppPackage(bytes, expected) {
|
|
40
|
+
if (bytes.length > MAX_PACKAGE_BYTES) throw new Error('App package exceeds compressed size limit.');
|
|
41
|
+
const digest = sha256(bytes);
|
|
42
|
+
if (expected && (!HASH.test(expected.sha256) || digest !== expected.sha256)) throw new Error('App package SHA-256 mismatch.');
|
|
43
|
+
const envelope = JSON.parse(gunzipSync(bytes, { maxOutputLength: MAX_EXPANDED_BYTES }).toString('utf8'));
|
|
44
|
+
if (!object(envelope) || envelope.schemaVersion !== 1 || envelope.kind !== 'cats-app'
|
|
45
|
+
|| !object(envelope.manifest) || !Array.isArray(envelope.files)) throw new Error('Invalid Cats App v1 archive.');
|
|
46
|
+
const { manifest } = envelope;
|
|
47
|
+
assertIdentity(manifest.id, manifest.version);
|
|
48
|
+
if (expected && (manifest.id !== expected.id || manifest.version !== expected.version)) throw new Error('App package identity/version mismatch.');
|
|
49
|
+
if (envelope.files.length === 0 || envelope.files.length > 128) throw new Error('Invalid app file count.');
|
|
50
|
+
const seen = new Set();
|
|
51
|
+
const files = envelope.files.map((file) => {
|
|
52
|
+
// Portable, case-insensitive namespace. No symlinks, executable hooks, or device names.
|
|
53
|
+
if (!object(file) || typeof file.path !== 'string' || file.path.length > 180
|
|
54
|
+
|| !/^[a-zA-Z0-9_./-]+$/.test(file.path)
|
|
55
|
+
|| file.path.split('/').some((part) => !part || part === '.' || part === '..'
|
|
56
|
+
|| /^(con|prn|aux|nul|com[0-9]|lpt[0-9])(?:\.|$)/i.test(part) || part.endsWith('.'))
|
|
57
|
+
|| ['cats.app.json', '.package.json'].includes(file.path.toLowerCase())
|
|
58
|
+
|| seen.has(file.path.toLowerCase()) || typeof file.base64 !== 'string'
|
|
59
|
+
|| !/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(file.base64)) {
|
|
60
|
+
throw new Error('Unsafe, duplicate, or invalid app file.');
|
|
61
|
+
}
|
|
62
|
+
seen.add(file.path.toLowerCase());
|
|
63
|
+
const data = Buffer.from(file.base64, 'base64');
|
|
64
|
+
if (data.length > 8 * 1024 * 1024 || data.toString('base64') !== file.base64) throw new Error('Invalid app file payload.');
|
|
65
|
+
return { path: file.path, data };
|
|
66
|
+
});
|
|
67
|
+
if (typeof manifest.entrypoints?.renderer !== 'string'
|
|
68
|
+
|| !files.some((file) => file.path === manifest.entrypoints.renderer)
|
|
69
|
+
|| !manifest.entrypoints.renderer.endsWith('.html')
|
|
70
|
+
|| manifest.entrypoints.server || manifest.entrypoints.worker) throw new Error('v1 packages require a self-contained HTML renderer; server/worker execution is unsupported.');
|
|
71
|
+
return { manifest, files, sha256: digest };
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export function parseAppLock(value) {
|
|
75
|
+
if (!object(value) || value.schemaVersion !== 1 || !Array.isArray(value.apps) || value.apps.length > 64) throw new Error('Invalid app bundle lock.');
|
|
76
|
+
const seen = new Set();
|
|
77
|
+
return { schemaVersion: 1, apps: value.apps.map((entry) => {
|
|
78
|
+
if (!object(entry)) throw new Error('Invalid app pin.');
|
|
79
|
+
assertIdentity(entry.id, entry.version);
|
|
80
|
+
if (seen.has(entry.id) || !HASH.test(entry.sha256) || typeof entry.artifact !== 'string' || !entry.artifact.trim()) throw new Error('Duplicate or incomplete app pin.');
|
|
81
|
+
seen.add(entry.id);
|
|
82
|
+
return { id: entry.id, version: entry.version, sha256: entry.sha256, artifact: entry.artifact };
|
|
83
|
+
}) };
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export async function resolveAppLock(lockPath) {
|
|
87
|
+
const lock = parseAppLock(JSON.parse(await readFile(lockPath, 'utf8')));
|
|
88
|
+
const resolved = [];
|
|
89
|
+
for (const pin of lock.apps) {
|
|
90
|
+
let bytes;
|
|
91
|
+
if (/^https:/i.test(pin.artifact)) {
|
|
92
|
+
const url = new URL(pin.artifact);
|
|
93
|
+
const parts = url.pathname.split('/');
|
|
94
|
+
if (url.hostname !== 'github.com' || url.port || url.username || url.password || url.search || url.hash
|
|
95
|
+
|| parts.length !== 7 || parts[3] !== 'releases' || parts[4] !== 'download'
|
|
96
|
+
|| /latest|nightly|current/i.test(parts[5])) throw new Error('App URL must be a pinned GitHub release asset, not a moving alias.');
|
|
97
|
+
const response = await fetch(url, { signal: AbortSignal.timeout(60_000) });
|
|
98
|
+
if (!response.ok || !response.body) throw new Error(`Cannot download pinned app: HTTP ${response.status}.`);
|
|
99
|
+
const chunks = []; let size = 0;
|
|
100
|
+
for await (const chunk of response.body) {
|
|
101
|
+
size += chunk.length;
|
|
102
|
+
if (size > MAX_PACKAGE_BYTES) { await response.body.cancel().catch(() => {}); throw new Error('App download exceeds size limit.'); }
|
|
103
|
+
chunks.push(chunk);
|
|
104
|
+
}
|
|
105
|
+
bytes = Buffer.concat(chunks);
|
|
106
|
+
} else {
|
|
107
|
+
if (/^[a-z]+:\/\//i.test(pin.artifact)) throw new Error('Unsupported app artifact URL.');
|
|
108
|
+
const artifactPath = path.resolve(path.dirname(lockPath), pin.artifact);
|
|
109
|
+
if ((await stat(artifactPath)).size > MAX_PACKAGE_BYTES) throw new Error('App package exceeds size limit.');
|
|
110
|
+
bytes = await readFile(artifactPath);
|
|
111
|
+
}
|
|
112
|
+
const decoded = decodeAppPackage(bytes, pin);
|
|
113
|
+
resolved.push({ ...pin, bytes, manifest: decoded.manifest });
|
|
114
|
+
}
|
|
115
|
+
return resolved;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export async function materializeAppSelection(apps) {
|
|
119
|
+
parseAppLock({ schemaVersion: 1, apps });
|
|
120
|
+
for (const app of apps) decodeAppPackage(app.bytes, app);
|
|
121
|
+
const directory = await mkdtemp(path.join(tmpdir(), 'cats-desktop-apps-'));
|
|
122
|
+
const pins = [];
|
|
123
|
+
for (const app of apps) {
|
|
124
|
+
const artifact = `${app.id}-${app.version}.catsapp`;
|
|
125
|
+
await writeFile(path.join(directory, artifact), app.bytes, { flag: 'wx' });
|
|
126
|
+
pins.push({ id: app.id, version: app.version, sha256: app.sha256, artifact });
|
|
127
|
+
}
|
|
128
|
+
const lockPath = path.join(directory, 'bundle.lock.json');
|
|
129
|
+
await writeFile(lockPath, `${JSON.stringify({ schemaVersion: 1, apps: pins }, null, 2)}\n`, { flag: 'wx' });
|
|
130
|
+
return lockPath;
|
|
131
|
+
}
|
package/scripts/README.md
CHANGED
|
@@ -143,7 +143,8 @@ discovery paths do not depend on bootstrap submodules:
|
|
|
143
143
|
- `scripts/linux/sync-agent-skills.sh`
|
|
144
144
|
- `scripts/macos/sync-agent-skills.sh`
|
|
145
145
|
|
|
146
|
-
These scripts
|
|
146
|
+
These scripts recursively discover packages under developer `skills/` and copy
|
|
147
|
+
their complete resources into `.claude/skills` and `.agents/skills`, and
|
|
147
148
|
support:
|
|
148
149
|
|
|
149
150
|
- `--clean` / `-Clean`
|
|
@@ -153,6 +154,10 @@ Antigravity CLI is intentionally not a skill sync target yet. Its repo/project
|
|
|
153
154
|
skill discovery path has not been verified, so these helpers do not create an
|
|
154
155
|
`.antigravity/skills` convention.
|
|
155
156
|
|
|
157
|
+
Skill discovery stops at package roots and rejects duplicate leaf names before
|
|
158
|
+
writing. It skips pending `*.bootstrap` directories. Desktop packaging obtains
|
|
159
|
+
product skills separately from `cats-runtime/runtime-skills/`.
|
|
160
|
+
|
|
156
161
|
## Self-Hosted npm Package Helpers
|
|
157
162
|
|
|
158
163
|
`cats-platform` now also ships repo-owned npm pack/install smoke helpers on
|
|
@@ -187,7 +192,7 @@ packaging and installer flows.
|
|
|
187
192
|
- `scripts/windows/Install-Antigravity.ps1`
|
|
188
193
|
- `scripts/windows/Install-Grok.ps1`
|
|
189
194
|
- `scripts/windows/Install-Devin.ps1`
|
|
190
|
-
- `scripts/windows/Install-
|
|
195
|
+
- `scripts/windows/Install-MetaCli.ps1`
|
|
191
196
|
- `scripts/windows/Install-Copilot.ps1`
|
|
192
197
|
- `scripts/windows/Install-OpenCode.ps1`
|
|
193
198
|
- `scripts/windows/Install-KiloCli.ps1`
|
|
@@ -253,28 +258,40 @@ still owed after a successful install: run `devin auth login` once and check
|
|
|
253
258
|
with `devin auth status`. Uninstall removes the versioned tree under
|
|
254
259
|
`%LOCALAPPDATA%\devin\cli` as well as the entry point.
|
|
255
260
|
|
|
256
|
-
`Install-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
261
|
+
`Install-MetaCli.ps1` and `install-meta-cli.sh` wrap Meta's Muse installer.
|
|
262
|
+
What that installer places is a *launcher*, not the agent: it downloads
|
|
263
|
+
`muse-bin-<version>` beside itself and records the version in `.muse-version`.
|
|
264
|
+
Two things follow from that.
|
|
265
|
+
|
|
266
|
+
Detection requires the agent build, not the entry point. The installer writes
|
|
267
|
+
the shim and launcher first and downloads the agent last, so a run that fails in
|
|
268
|
+
between leaves an entry point with nothing behind it; reporting that as
|
|
269
|
+
installed would skip the reinstall that repairs it. Uninstall removes every
|
|
270
|
+
`muse-bin-*` build and `.muse-*` state file in the install directory, not just
|
|
271
|
+
the entry point.
|
|
272
|
+
|
|
273
|
+
The version is read from `.muse-version` and the helpers never execute `muse`.
|
|
274
|
+
The launcher forwards every argument straight to the agent binary, so a flag
|
|
275
|
+
that binary does not recognise opens the interactive TUI instead of failing —
|
|
276
|
+
in a packaged setup step with no console a prompt can reach, that is an
|
|
277
|
+
unbounded hang rather than an error. On Windows the installer runs under
|
|
278
|
+
Windows PowerShell 5.1 for the same reason the launcher does: a `PSModulePath`
|
|
279
|
+
inherited from PowerShell 7 breaks the launcher's download step.
|
|
280
|
+
|
|
281
|
+
Install directories differ by platform: `%LOCALAPPDATA%\Programs\muse` on Windows
|
|
282
|
+
(entry point `muse.cmd`) and `~/.local/bin` on macOS and Linux. `MUSE_INSTALL_DIR`
|
|
283
|
+
overrides both, matching the official installer.
|
|
284
|
+
|
|
285
|
+
Cats installs and detects Devin but does not run its sessions through the CLI
|
|
286
|
+
backend. Devin has no machine-readable CLI output and executes through the
|
|
287
|
+
`agent/acp` backend instead, so it has no `cli/native` entry in the product
|
|
288
|
+
execution catalog.
|
|
289
|
+
|
|
290
|
+
`Check-WindowsSetupReadiness.ps1` remains an explicit operator utility for an
|
|
291
|
+
aggregate audit. Packaged Desktop runs individual checks only for Runtime-selected
|
|
292
|
+
native targets: shared Node/npm prerequisites and selected local Ollama. It does
|
|
293
|
+
not invoke the aggregate audit during startup. WSL/Docker variants remain
|
|
294
|
+
operator-configured and are outside the native Desktop helper editor.
|
|
278
295
|
|
|
279
296
|
OpenClaw is intentionally not part of this local readiness audit because the
|
|
280
297
|
provider catalog models it as an `agent/gateway` backend, not a repo-owned
|
|
@@ -296,7 +313,7 @@ runtime:
|
|
|
296
313
|
- `scripts/linux/install-antigravity.sh`
|
|
297
314
|
- `scripts/linux/install-grok.sh`
|
|
298
315
|
- `scripts/linux/install-devin.sh`
|
|
299
|
-
- `scripts/linux/install-
|
|
316
|
+
- `scripts/linux/install-meta-cli.sh`
|
|
300
317
|
- `scripts/linux/install-copilot.sh`
|
|
301
318
|
- `scripts/linux/install-opencode.sh`
|
|
302
319
|
- `scripts/linux/install-kilo.sh`
|
|
@@ -317,7 +334,7 @@ runtime:
|
|
|
317
334
|
- `scripts/macos/install-antigravity.sh`
|
|
318
335
|
- `scripts/macos/install-grok.sh`
|
|
319
336
|
- `scripts/macos/install-devin.sh`
|
|
320
|
-
- `scripts/macos/install-
|
|
337
|
+
- `scripts/macos/install-meta-cli.sh`
|
|
321
338
|
- `scripts/macos/install-copilot.sh`
|
|
322
339
|
- `scripts/macos/install-opencode.sh`
|
|
323
340
|
- `scripts/macos/install-kilo.sh`
|
|
@@ -8,6 +8,7 @@ import { spawn } from 'node:child_process';
|
|
|
8
8
|
|
|
9
9
|
import { parseStableReleaseTag } from './validate-release-version.mjs';
|
|
10
10
|
import { DESCRIPTOR_RELATIVE_PATH } from './generate-desktop-release-descriptor.mjs';
|
|
11
|
+
import { resolveAppLock, materializeAppSelection } from '#cats-app-package';
|
|
11
12
|
|
|
12
13
|
const SCRIPT_PATH = fileURLToPath(import.meta.url);
|
|
13
14
|
const PROJECT_ROOT = resolve(dirname(SCRIPT_PATH), '..');
|
|
@@ -32,6 +33,7 @@ Options:
|
|
|
32
33
|
--format <nsis|dmg|pkg|zip|AppImage|deb|tar.gz>
|
|
33
34
|
Override the configured installer formats.
|
|
34
35
|
--sidecar-layout <split|bundle> Choose loose-file or bundled sidecars for both app/runtime.
|
|
36
|
+
--apps-lock <path> Bundle the exact ID/version/SHA-256 selection in this lock.
|
|
35
37
|
--skip-mobile Skip the mobile bundle (\`expo export\`). Also honored via
|
|
36
38
|
CATS_SKIP_MOBILE=1 in the environment or .env.
|
|
37
39
|
--release Build an official release package: embed the release
|
|
@@ -102,6 +104,7 @@ export function parseArgs(argv, env = process.env) {
|
|
|
102
104
|
// cannot override anything in the GITHUB_ namespace, and a preview run is
|
|
103
105
|
// dispatched from a branch, so the tag has to arrive as an explicit input.
|
|
104
106
|
let tag = (env.CATS_DESKTOP_RELEASE_TAG ?? env.GITHUB_REF_NAME ?? '').trim();
|
|
107
|
+
let appsLock = env.CATS_DESKTOP_APPS_LOCK?.trim() || null;
|
|
105
108
|
|
|
106
109
|
for (let index = 0; index < argv.length; index += 1) {
|
|
107
110
|
const value = argv[index];
|
|
@@ -117,12 +120,18 @@ export function parseArgs(argv, env = process.env) {
|
|
|
117
120
|
previewMode,
|
|
118
121
|
publish,
|
|
119
122
|
tag,
|
|
123
|
+
...(appsLock ? { appsLock } : {}),
|
|
120
124
|
};
|
|
121
125
|
}
|
|
122
126
|
if (value === '--release') {
|
|
123
127
|
releaseMode = true;
|
|
124
128
|
continue;
|
|
125
129
|
}
|
|
130
|
+
if (value === '--apps-lock') {
|
|
131
|
+
appsLock = argv[++index];
|
|
132
|
+
if (!appsLock || appsLock.startsWith('--')) throw new Error('--apps-lock requires a path.');
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
126
135
|
if (value === '--no-release') {
|
|
127
136
|
releaseMode = false;
|
|
128
137
|
continue;
|
|
@@ -187,6 +196,7 @@ export function parseArgs(argv, env = process.env) {
|
|
|
187
196
|
previewMode,
|
|
188
197
|
publish,
|
|
189
198
|
tag,
|
|
199
|
+
...(appsLock ? { appsLock } : {}),
|
|
190
200
|
};
|
|
191
201
|
}
|
|
192
202
|
|
|
@@ -673,6 +683,10 @@ async function main() {
|
|
|
673
683
|
}
|
|
674
684
|
|
|
675
685
|
const resolvedTarget = resolveBuilderTarget(parsed.target);
|
|
686
|
+
// Resolve once before builds can clear build/. Stage an offline immutable copy
|
|
687
|
+
// in an OS temporary directory so retries never redownload a moving asset.
|
|
688
|
+
const selectedApps = parsed.appsLock ? await resolveAppLock(resolve(parsed.appsLock)) : null;
|
|
689
|
+
const appLockForBuild = selectedApps ? await materializeAppSelection(selectedApps) : null;
|
|
676
690
|
const envOptions = { releaseMode: parsed.releaseMode };
|
|
677
691
|
|
|
678
692
|
if (parsed.releaseMode && parsed.previewMode) {
|
|
@@ -762,6 +776,7 @@ async function main() {
|
|
|
762
776
|
resolvedTarget,
|
|
763
777
|
'--sidecar-layout',
|
|
764
778
|
parsed.sidecarLayout,
|
|
779
|
+
...(appLockForBuild ? ['--apps-lock', appLockForBuild] : []),
|
|
765
780
|
],
|
|
766
781
|
PROJECT_ROOT,
|
|
767
782
|
sidecarBuildEnv,
|
|
@@ -4,13 +4,26 @@ import { fileURLToPath } from 'node:url';
|
|
|
4
4
|
|
|
5
5
|
const root = resolve(dirname(fileURLToPath(import.meta.url)), '..');
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
bundle
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
7
|
+
export function bundleServer({
|
|
8
|
+
entryPoint = resolve(root, 'build', 'server', 'index.js'),
|
|
9
|
+
outfile = resolve(root, 'build', 'server-bundle', 'index.js'),
|
|
10
|
+
} = {}) {
|
|
11
|
+
return build({
|
|
12
|
+
entryPoints: [entryPoint],
|
|
13
|
+
bundle: true,
|
|
14
|
+
outfile,
|
|
15
|
+
platform: 'node',
|
|
16
|
+
target: 'node22',
|
|
17
|
+
format: 'esm',
|
|
18
|
+
sourcemap: true,
|
|
19
|
+
packages: 'external',
|
|
20
|
+
// Package-import aliases are otherwise inlined despite packages: external.
|
|
21
|
+
// Keep the SDK's import.meta.url beside its shipped browser.js resource.
|
|
22
|
+
external: ['#cats-app-package'],
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (resolve(process.argv[1] ?? '') === fileURLToPath(import.meta.url)) {
|
|
27
|
+
if (process.argv.includes('--help')) console.log('Usage: node scripts/bundle-server.mjs (after npm run build:server)');
|
|
28
|
+
else await bundleServer();
|
|
29
|
+
}
|