@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
package/package.json
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cats-inc/cats-platform",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.4",
|
|
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,8 @@
|
|
|
14
17
|
"build/server",
|
|
15
18
|
"build/desktop",
|
|
16
19
|
"scripts",
|
|
20
|
+
"packages/app-sdk",
|
|
21
|
+
"packages/provider-setup",
|
|
17
22
|
"config/provider-capability-bootstrap.yaml.example",
|
|
18
23
|
".env.example",
|
|
19
24
|
"README.md",
|
|
@@ -89,7 +94,7 @@
|
|
|
89
94
|
"@types/react-dom": "^18.3.0",
|
|
90
95
|
"@vitejs/plugin-react": "^4.3.1",
|
|
91
96
|
"electron": "^41.2.0",
|
|
92
|
-
"electron-builder": "^26.
|
|
97
|
+
"electron-builder": "^26.16.1",
|
|
93
98
|
"esbuild": "^0.27.0",
|
|
94
99
|
"jsdom": "^24.1.3",
|
|
95
100
|
"png-to-ico": "^3.0.1",
|
|
@@ -126,12 +131,28 @@
|
|
|
126
131
|
},
|
|
127
132
|
"files": [
|
|
128
133
|
"build/desktop/**/*",
|
|
134
|
+
"packages/app-sdk/**/*",
|
|
135
|
+
"packages/provider-setup/**/*",
|
|
129
136
|
"assets/build/icon.ico",
|
|
130
137
|
"assets/build/icon.png",
|
|
131
138
|
"assets/tray-icon*.png",
|
|
132
139
|
"package.json"
|
|
133
140
|
],
|
|
134
141
|
"extraResources": [
|
|
142
|
+
{
|
|
143
|
+
"from": "build/desktop-packaging/shared/official-apps",
|
|
144
|
+
"to": "app-sidecar/official-apps",
|
|
145
|
+
"filter": [
|
|
146
|
+
"**/*"
|
|
147
|
+
]
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"from": "build/desktop-packaging/shared/app-sidecar/packages/app-sdk",
|
|
151
|
+
"to": "app-sidecar/packages/app-sdk",
|
|
152
|
+
"filter": [
|
|
153
|
+
"**/*"
|
|
154
|
+
]
|
|
155
|
+
},
|
|
135
156
|
{
|
|
136
157
|
"from": "build/desktop-packaging/shared/build/server",
|
|
137
158
|
"to": "app-sidecar/build/server",
|
|
@@ -146,6 +167,13 @@
|
|
|
146
167
|
"**/*"
|
|
147
168
|
]
|
|
148
169
|
},
|
|
170
|
+
{
|
|
171
|
+
"from": "build/desktop-packaging/shared/cats-platform/config",
|
|
172
|
+
"to": "app-sidecar/config",
|
|
173
|
+
"filter": [
|
|
174
|
+
"**/*"
|
|
175
|
+
]
|
|
176
|
+
},
|
|
149
177
|
{
|
|
150
178
|
"from": "build/desktop-packaging/shared/app-sidecar/package.json",
|
|
151
179
|
"to": "app-sidecar/package.json"
|
|
@@ -231,8 +259,9 @@
|
|
|
231
259
|
"icon": "icon.icns",
|
|
232
260
|
"artifactName": "Cats-${version}-${arch}.${ext}",
|
|
233
261
|
"category": "public.app-category.productivity",
|
|
234
|
-
"hardenedRuntime":
|
|
262
|
+
"hardenedRuntime": true,
|
|
235
263
|
"gatekeeperAssess": false,
|
|
264
|
+
"notarize": false,
|
|
236
265
|
"extendInfo": {
|
|
237
266
|
"NSSpeechRecognitionUsageDescription": "Cats uses speech recognition for voice input in the chat composer.",
|
|
238
267
|
"NSMicrophoneUsageDescription": "Cats uses the microphone for voice input in the chat composer."
|
|
@@ -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
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
export interface ProviderTarget {
|
|
2
|
+
provider: string;
|
|
3
|
+
backend: 'cli' | 'api' | 'local' | 'agent';
|
|
4
|
+
instance: string;
|
|
5
|
+
endpoint?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ProviderSelection {
|
|
8
|
+
state: 'missing' | 'invalid' | 'empty' | 'selected';
|
|
9
|
+
revision: string;
|
|
10
|
+
targets: ProviderTarget[];
|
|
11
|
+
nativeSetupTargets: ProviderTarget[];
|
|
12
|
+
diskChanged: boolean;
|
|
13
|
+
error: string | null;
|
|
14
|
+
}
|
|
15
|
+
export interface ProviderObservation extends ProviderTarget {
|
|
16
|
+
commandStatus: string;
|
|
17
|
+
available: boolean;
|
|
18
|
+
version?: string | null;
|
|
19
|
+
authStatus?: string;
|
|
20
|
+
observedAt: string;
|
|
21
|
+
configurationStatus: 'unchanged' | 'changed' | 'not_selected';
|
|
22
|
+
connectionStatus?: 'connected' | 'failed' | 'not_checked';
|
|
23
|
+
detail?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface ProviderSetupHelper {
|
|
26
|
+
id: string;
|
|
27
|
+
available: boolean;
|
|
28
|
+
supported: boolean;
|
|
29
|
+
supportsApply: boolean;
|
|
30
|
+
supportsUpgrade: boolean;
|
|
31
|
+
supportsForce: boolean;
|
|
32
|
+
supportsUninstall: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface ProviderSetupOutcome {
|
|
35
|
+
source?: 'installer' | 'detection';
|
|
36
|
+
status: string | null;
|
|
37
|
+
summary: string;
|
|
38
|
+
manualSteps: string[];
|
|
39
|
+
warnings: string[];
|
|
40
|
+
plannedActions: string[];
|
|
41
|
+
runState: string;
|
|
42
|
+
}
|
|
43
|
+
export interface DesktopPrerequisite {
|
|
44
|
+
helperId: string;
|
|
45
|
+
checking: boolean;
|
|
46
|
+
result: ProviderSetupOutcome | null;
|
|
47
|
+
}
|
|
48
|
+
export interface ProviderManagerSnapshot {
|
|
49
|
+
runtime: {
|
|
50
|
+
bootstrapRequired?: boolean;
|
|
51
|
+
selection: ProviderSelection;
|
|
52
|
+
universe: Array<ProviderTarget & { familyLabel: string; binaryName: string;
|
|
53
|
+
install?: { auth?: { hint?: string; docsUrl?: string }; install?: { docsUrl?: string } } | null }>;
|
|
54
|
+
observations?: ProviderObservation[];
|
|
55
|
+
connections?: Array<ProviderTarget & { endpoint: string; editable: boolean; source?: string }>;
|
|
56
|
+
state?: { status?: string; error?: string | null } | null;
|
|
57
|
+
};
|
|
58
|
+
helpers: ProviderSetupHelper[];
|
|
59
|
+
platform: 'windows' | 'macos' | 'linux';
|
|
60
|
+
operations: Array<{ targets: ProviderTarget[]; stage: string }>;
|
|
61
|
+
outcomes: Record<string, ProviderSetupOutcome>;
|
|
62
|
+
prerequisites?: DesktopPrerequisite[];
|
|
63
|
+
preview?: { target: ProviderTarget; result: ProviderSetupOutcome; revision: string };
|
|
64
|
+
}
|
|
65
|
+
export interface ProviderManagerBridge {
|
|
66
|
+
runSetupHelper?(helperId: string, mode: 'check' | 'apply'):
|
|
67
|
+
Promise<{ state?: { lastAction: ProviderSetupOutcome | null } }>;
|
|
68
|
+
getProviderSetup(context?: 'onboarding' | 'settings'): Promise<ProviderManagerSnapshot>;
|
|
69
|
+
applyProviderSetup(input: { targets: ProviderTarget[]; expectedRevision: string;
|
|
70
|
+
detectAfter: boolean; reload?: boolean }): Promise<ProviderManagerSnapshot>;
|
|
71
|
+
runProviderSetup(input: { action: 'detect' | 'install' | 'upgrade' | 'repair' | 'uninstall' | 'preview_uninstall';
|
|
72
|
+
targets: ProviderTarget[]; expectedRevision: string }): Promise<ProviderManagerSnapshot>;
|
|
73
|
+
}
|
|
74
|
+
export function mountProviderManager(root: HTMLElement, bridge: ProviderManagerBridge, options?: {
|
|
75
|
+
context?: 'onboarding' | 'settings';
|
|
76
|
+
locale?: string;
|
|
77
|
+
onContinue?: () => void | Promise<void>;
|
|
78
|
+
onFeedback?: (message: string) => void;
|
|
79
|
+
}): { refresh(): Promise<void>; destroy(): void };
|