@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
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Owner-visible message rendering for the golden path (SPEC-114 FR-15, FR-27,
|
|
3
|
+
* FR-34, FR-37, FR-44).
|
|
4
|
+
*
|
|
5
|
+
* One rule governs everything here: a payload may contain a summary and
|
|
6
|
+
* *safely transportable references* only. Local filesystem paths, credentials,
|
|
7
|
+
* and raw provider output never appear, because Telegram cannot act on them and
|
|
8
|
+
* putting them in a chat message leaks the operator's machine layout.
|
|
9
|
+
*
|
|
10
|
+
* Text is localized at render time rather than at send time, so the durable
|
|
11
|
+
* outbox row holds exactly what the owner will read and a retry after a restart
|
|
12
|
+
* cannot silently change language.
|
|
13
|
+
*/
|
|
14
|
+
import type { CoreDeliveryGate, CoreDeliveryMode } from '../../../core/types.js';
|
|
15
|
+
import { createTranslator, type MessageKey } from '../../../shared/i18n/index.js';
|
|
16
|
+
import type { TransportWorkAction, TransportWorkDeliveryPayload, TransportWorkPayloadAction, TransportWorkProposalV1, TransportWorkReadiness, TransportWorkReadinessReason } from '../../../platform/transports/work-delivery/contracts.js';
|
|
17
|
+
import type { WorkCompletionEvidenceResult } from '../state/workCompletionEvidence.js';
|
|
18
|
+
export type WorkGoldenPathTranslator = ReturnType<typeof createTranslator>;
|
|
19
|
+
export declare function createWorkGoldenPathTranslator(locale: string | null): WorkGoldenPathTranslator;
|
|
20
|
+
export declare const READINESS_REASON_KEYS: Record<TransportWorkReadinessReason, MessageKey>;
|
|
21
|
+
export declare const DELIVERY_MODE_KEYS: Record<CoreDeliveryMode, MessageKey>;
|
|
22
|
+
export declare function describeDeliverySideEffectsLocalized(t: WorkGoldenPathTranslator, mode: CoreDeliveryMode): string;
|
|
23
|
+
export declare function localizeTransportWorkAction(t: WorkGoldenPathTranslator, action: TransportWorkAction): string;
|
|
24
|
+
/**
|
|
25
|
+
* Authenticated Desktop entry point for a work item.
|
|
26
|
+
*
|
|
27
|
+
* A route, never a filesystem path: the Desktop host resolves it against the
|
|
28
|
+
* owner's session, so it carries no authority on its own.
|
|
29
|
+
*/
|
|
30
|
+
export declare function buildWorkGoldenPathDeepLink(workItemId: string): string;
|
|
31
|
+
export declare function renderAcceptedMessage(input: {
|
|
32
|
+
t: WorkGoldenPathTranslator;
|
|
33
|
+
workItemId: string;
|
|
34
|
+
goal: string;
|
|
35
|
+
}): TransportWorkDeliveryPayload;
|
|
36
|
+
export declare function renderNotReadyMessage(input: {
|
|
37
|
+
t: WorkGoldenPathTranslator;
|
|
38
|
+
readiness: TransportWorkReadiness;
|
|
39
|
+
}): TransportWorkDeliveryPayload;
|
|
40
|
+
export declare function renderProposalMessage(input: {
|
|
41
|
+
t: WorkGoldenPathTranslator;
|
|
42
|
+
workItemId: string;
|
|
43
|
+
proposal: TransportWorkProposalV1;
|
|
44
|
+
actions: readonly TransportWorkPayloadAction[];
|
|
45
|
+
}): TransportWorkDeliveryPayload;
|
|
46
|
+
export declare function renderProgressMessage(input: {
|
|
47
|
+
t: WorkGoldenPathTranslator;
|
|
48
|
+
workItemId: string;
|
|
49
|
+
stageKey: MessageKey;
|
|
50
|
+
milestoneKey: MessageKey;
|
|
51
|
+
}): TransportWorkDeliveryPayload;
|
|
52
|
+
export declare function renderDecisionMessage(input: {
|
|
53
|
+
t: WorkGoldenPathTranslator;
|
|
54
|
+
workItemId: string;
|
|
55
|
+
reason: string;
|
|
56
|
+
consequence: string;
|
|
57
|
+
}): TransportWorkDeliveryPayload;
|
|
58
|
+
export declare function renderResultMessage(input: {
|
|
59
|
+
t: WorkGoldenPathTranslator;
|
|
60
|
+
workItemId: string;
|
|
61
|
+
proposal: TransportWorkProposalV1;
|
|
62
|
+
summary: string;
|
|
63
|
+
evidence: WorkCompletionEvidenceResult;
|
|
64
|
+
commitId: string | null;
|
|
65
|
+
artifactTitle: string | null;
|
|
66
|
+
outstandingGates: readonly CoreDeliveryGate[];
|
|
67
|
+
/** Inline decision actions, when the result still needs one (FR-41). */
|
|
68
|
+
actions?: readonly TransportWorkPayloadAction[];
|
|
69
|
+
}): TransportWorkDeliveryPayload;
|
|
70
|
+
export declare function renderRefusalMessage(input: {
|
|
71
|
+
t: WorkGoldenPathTranslator;
|
|
72
|
+
reasonKey: MessageKey;
|
|
73
|
+
values?: Record<string, string>;
|
|
74
|
+
}): TransportWorkDeliveryPayload;
|
|
75
|
+
/**
|
|
76
|
+
* Last line of defence before a payload reaches a transport.
|
|
77
|
+
*
|
|
78
|
+
* The renderers above are careful, but "careful" is not a guarantee once a
|
|
79
|
+
* summary can come from a provider. This rejects the two classes of content
|
|
80
|
+
* that must never leave the host.
|
|
81
|
+
*/
|
|
82
|
+
export declare function assertSafeTransportPayload(payload: TransportWorkDeliveryPayload): void;
|
|
83
|
+
//# sourceMappingURL=workGoldenPathMessages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workGoldenPathMessages.d.ts","sourceRoot":"","sources":["../../../../../src/products/work/shared/workGoldenPathMessages.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Owner-visible message rendering for the golden path (SPEC-114 FR-15, FR-27,
|
|
3
|
+
* FR-34, FR-37, FR-44).
|
|
4
|
+
*
|
|
5
|
+
* One rule governs everything here: a payload may contain a summary and
|
|
6
|
+
* *safely transportable references* only. Local filesystem paths, credentials,
|
|
7
|
+
* and raw provider output never appear, because Telegram cannot act on them and
|
|
8
|
+
* putting them in a chat message leaks the operator's machine layout.
|
|
9
|
+
*
|
|
10
|
+
* Text is localized at render time rather than at send time, so the durable
|
|
11
|
+
* outbox row holds exactly what the owner will read and a retry after a restart
|
|
12
|
+
* cannot silently change language.
|
|
13
|
+
*/
|
|
14
|
+
import { createTranslator, messageKeys, normalizeMessageLocale, } from '../../../shared/i18n/index.js';
|
|
15
|
+
/** Cap so one message cannot become a transcript dump. */
|
|
16
|
+
const MAX_SUMMARY_CHARS = 600;
|
|
17
|
+
export function createWorkGoldenPathTranslator(locale) {
|
|
18
|
+
return createTranslator(normalizeMessageLocale(locale));
|
|
19
|
+
}
|
|
20
|
+
function truncate(value, limit = MAX_SUMMARY_CHARS) {
|
|
21
|
+
const trimmed = value.trim();
|
|
22
|
+
return trimmed.length <= limit ? trimmed : `${trimmed.slice(0, limit - 1)}…`;
|
|
23
|
+
}
|
|
24
|
+
export const READINESS_REASON_KEYS = {
|
|
25
|
+
binding_disabled: messageKeys.workDeliveryReadinessBindingDisabled,
|
|
26
|
+
binding_unhealthy: messageKeys.workDeliveryReadinessBindingUnhealthy,
|
|
27
|
+
owner_not_authorized: messageKeys.workDeliveryReadinessOwnerNotAuthorized,
|
|
28
|
+
cat_not_bound: messageKeys.workDeliveryReadinessCatNotBound,
|
|
29
|
+
execution_target_missing: messageKeys.workDeliveryReadinessExecutionTargetMissing,
|
|
30
|
+
capability_profile_missing: messageKeys.workDeliveryReadinessCapabilityProfileMissing,
|
|
31
|
+
workspace_missing: messageKeys.workDeliveryReadinessWorkspaceMissing,
|
|
32
|
+
workspace_unreachable: messageKeys.workDeliveryReadinessWorkspaceUnreachable,
|
|
33
|
+
workspace_not_a_repository: messageKeys.workDeliveryReadinessWorkspaceNotARepository,
|
|
34
|
+
workspace_not_clean: messageKeys.workDeliveryReadinessWorkspaceNotClean,
|
|
35
|
+
delivery_policy_unresolved: messageKeys.workDeliveryReadinessDeliveryPolicyUnresolved,
|
|
36
|
+
background_service_unavailable: messageKeys.workDeliveryReadinessBackgroundServiceUnavailable,
|
|
37
|
+
};
|
|
38
|
+
export const DELIVERY_MODE_KEYS = {
|
|
39
|
+
artifact_only: messageKeys.sharedOperatorDeliveryModeArtifactOnly,
|
|
40
|
+
commit_only: messageKeys.sharedOperatorDeliveryModeCommitOnly,
|
|
41
|
+
push_branch: messageKeys.sharedOperatorDeliveryModePushBranch,
|
|
42
|
+
pr_with_checks: messageKeys.sharedOperatorDeliveryModePrWithChecks,
|
|
43
|
+
deploy_preview: messageKeys.sharedOperatorDeliveryModeDeployPreview,
|
|
44
|
+
};
|
|
45
|
+
const DELIVERY_GATE_KEYS = {
|
|
46
|
+
manual_review_required: messageKeys.sharedOperatorGateManualReviewRequired,
|
|
47
|
+
owner_approval_required: messageKeys.sharedOperatorGateOwnerApprovalRequired,
|
|
48
|
+
publish_artifact_required: messageKeys.sharedOperatorGatePublishArtifactRequired,
|
|
49
|
+
};
|
|
50
|
+
const SIDE_EFFECT_KEYS = {
|
|
51
|
+
artifact_only: messageKeys.workDeliverySideEffectsArtifactOnly,
|
|
52
|
+
commit_only: messageKeys.workDeliverySideEffectsCommitOnly,
|
|
53
|
+
push_branch: messageKeys.workDeliverySideEffectsPushBranch,
|
|
54
|
+
pr_with_checks: messageKeys.workDeliverySideEffectsPrWithChecks,
|
|
55
|
+
deploy_preview: messageKeys.workDeliverySideEffectsDeployPreview,
|
|
56
|
+
};
|
|
57
|
+
const ACTION_LABEL_KEYS = {
|
|
58
|
+
start_work: messageKeys.workDeliveryActionStartWork,
|
|
59
|
+
cancel: messageKeys.workDeliveryActionCancel,
|
|
60
|
+
};
|
|
61
|
+
export function describeDeliverySideEffectsLocalized(t, mode) {
|
|
62
|
+
return t(SIDE_EFFECT_KEYS[mode]);
|
|
63
|
+
}
|
|
64
|
+
export function localizeTransportWorkAction(t, action) {
|
|
65
|
+
const key = ACTION_LABEL_KEYS[action];
|
|
66
|
+
return key ? t(key) : action;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Authenticated Desktop entry point for a work item.
|
|
70
|
+
*
|
|
71
|
+
* A route, never a filesystem path: the Desktop host resolves it against the
|
|
72
|
+
* owner's session, so it carries no authority on its own.
|
|
73
|
+
*/
|
|
74
|
+
export function buildWorkGoldenPathDeepLink(workItemId) {
|
|
75
|
+
return `cats://work/items/${encodeURIComponent(workItemId)}`;
|
|
76
|
+
}
|
|
77
|
+
function renderGates(t, gates) {
|
|
78
|
+
return gates.length === 0
|
|
79
|
+
? t(messageKeys.workDeliveryValueNone)
|
|
80
|
+
: gates.map((gate) => t(DELIVERY_GATE_KEYS[gate])).join(', ');
|
|
81
|
+
}
|
|
82
|
+
export function renderAcceptedMessage(input) {
|
|
83
|
+
return {
|
|
84
|
+
text: [
|
|
85
|
+
input.t(messageKeys.workDeliveryAcceptedTitle, { goal: truncate(input.goal, 160) }),
|
|
86
|
+
input.t(messageKeys.workDeliveryAcceptedBody),
|
|
87
|
+
].join('\n'),
|
|
88
|
+
deepLink: buildWorkGoldenPathDeepLink(input.workItemId),
|
|
89
|
+
actions: [],
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
export function renderNotReadyMessage(input) {
|
|
93
|
+
return {
|
|
94
|
+
text: [
|
|
95
|
+
input.t(messageKeys.workDeliveryNotReadyTitle),
|
|
96
|
+
...input.readiness.blockers.map((blocker) => `- ${input.t(READINESS_REASON_KEYS[blocker.reason])}`),
|
|
97
|
+
input.t(messageKeys.workDeliveryNotReadyFooter),
|
|
98
|
+
].join('\n'),
|
|
99
|
+
deepLink: null,
|
|
100
|
+
actions: [],
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
export function renderProposalMessage(input) {
|
|
104
|
+
const { t, proposal } = input;
|
|
105
|
+
const lines = [
|
|
106
|
+
t(messageKeys.workDeliveryProposalTitle, { revision: String(proposal.revision) }),
|
|
107
|
+
t(messageKeys.workDeliveryProposalGoal, { goal: truncate(proposal.goal, 200) }),
|
|
108
|
+
// The label, not the workspace path: FR-44.
|
|
109
|
+
t(messageKeys.workDeliveryProposalTarget, { target: proposal.targetLabel }),
|
|
110
|
+
t(messageKeys.workDeliveryProposalDoneWhen, {
|
|
111
|
+
criteria: proposal.acceptanceCriteria.join('; ')
|
|
112
|
+
|| t(messageKeys.workDeliveryValueNotSpecified),
|
|
113
|
+
}),
|
|
114
|
+
t(messageKeys.workDeliveryProposalDelivery, {
|
|
115
|
+
mode: t(DELIVERY_MODE_KEYS[proposal.deliveryMode]),
|
|
116
|
+
}),
|
|
117
|
+
t(messageKeys.workDeliveryProposalSideEffects, {
|
|
118
|
+
effects: proposal.sideEffects.join(' ') || t(messageKeys.workDeliveryValueNone),
|
|
119
|
+
}),
|
|
120
|
+
t(messageKeys.workDeliveryProposalGates, { gates: renderGates(t, proposal.deliveryGates) }),
|
|
121
|
+
];
|
|
122
|
+
if (proposal.openQuestion !== null) {
|
|
123
|
+
lines.push(t(messageKeys.workDeliveryProposalQuestion, { question: proposal.openQuestion }));
|
|
124
|
+
}
|
|
125
|
+
lines.push(t(messageKeys.workDeliveryProposalConfirm));
|
|
126
|
+
return {
|
|
127
|
+
text: lines.join('\n'),
|
|
128
|
+
deepLink: buildWorkGoldenPathDeepLink(input.workItemId),
|
|
129
|
+
actions: [...input.actions],
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
export function renderProgressMessage(input) {
|
|
133
|
+
return {
|
|
134
|
+
text: input.t(messageKeys.workDeliveryProgress, {
|
|
135
|
+
stage: input.t(input.stageKey),
|
|
136
|
+
milestone: input.t(input.milestoneKey),
|
|
137
|
+
}),
|
|
138
|
+
deepLink: buildWorkGoldenPathDeepLink(input.workItemId),
|
|
139
|
+
actions: [],
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
export function renderDecisionMessage(input) {
|
|
143
|
+
return {
|
|
144
|
+
text: [
|
|
145
|
+
input.t(messageKeys.workDeliveryDecisionTitle),
|
|
146
|
+
input.t(messageKeys.workDeliveryDecisionReason, { reason: truncate(input.reason, 240) }),
|
|
147
|
+
input.t(messageKeys.workDeliveryDecisionConsequence, {
|
|
148
|
+
consequence: truncate(input.consequence, 240),
|
|
149
|
+
}),
|
|
150
|
+
].join('\n'),
|
|
151
|
+
deepLink: buildWorkGoldenPathDeepLink(input.workItemId),
|
|
152
|
+
actions: [],
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
export function renderResultMessage(input) {
|
|
156
|
+
const { t } = input;
|
|
157
|
+
const lines = [
|
|
158
|
+
t(messageKeys.workDeliveryResultTitle, { goal: truncate(input.proposal.goal, 160) }),
|
|
159
|
+
truncate(input.summary),
|
|
160
|
+
t(messageKeys.workDeliveryProposalDelivery, {
|
|
161
|
+
mode: t(DELIVERY_MODE_KEYS[input.proposal.deliveryMode]),
|
|
162
|
+
}),
|
|
163
|
+
];
|
|
164
|
+
if (input.commitId !== null) {
|
|
165
|
+
lines.push(t(messageKeys.workDeliveryResultCommit, { commitId: input.commitId }));
|
|
166
|
+
}
|
|
167
|
+
if (input.artifactTitle !== null) {
|
|
168
|
+
// The title and the Desktop link, never the artifact's local path.
|
|
169
|
+
lines.push(t(messageKeys.workDeliveryResultArtifact, { title: input.artifactTitle }));
|
|
170
|
+
}
|
|
171
|
+
lines.push(input.evidence.accepted
|
|
172
|
+
? t(messageKeys.workDeliveryResultAcceptanceMet)
|
|
173
|
+
: t(messageKeys.workDeliveryResultAcceptanceUnmet, {
|
|
174
|
+
gaps: input.evidence.gaps.join(', '),
|
|
175
|
+
}));
|
|
176
|
+
if (input.outstandingGates.length > 0) {
|
|
177
|
+
lines.push(t(messageKeys.workDeliveryResultWaitingOn, {
|
|
178
|
+
gates: renderGates(t, input.outstandingGates),
|
|
179
|
+
}));
|
|
180
|
+
}
|
|
181
|
+
return {
|
|
182
|
+
text: lines.join('\n'),
|
|
183
|
+
deepLink: buildWorkGoldenPathDeepLink(input.workItemId),
|
|
184
|
+
actions: [...(input.actions ?? [])],
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
export function renderRefusalMessage(input) {
|
|
188
|
+
return {
|
|
189
|
+
text: input.t(input.reasonKey, input.values),
|
|
190
|
+
deepLink: null,
|
|
191
|
+
actions: [],
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Last line of defence before a payload reaches a transport.
|
|
196
|
+
*
|
|
197
|
+
* The renderers above are careful, but "careful" is not a guarantee once a
|
|
198
|
+
* summary can come from a provider. This rejects the two classes of content
|
|
199
|
+
* that must never leave the host.
|
|
200
|
+
*/
|
|
201
|
+
export function assertSafeTransportPayload(payload) {
|
|
202
|
+
const unsafePath = /(^|\s)(\/(Users|home|var|tmp|etc)\/|[A-Za-z]:\\)/u;
|
|
203
|
+
if (unsafePath.test(payload.text)) {
|
|
204
|
+
throw new Error('Refusing to send a transport payload containing a local filesystem path.');
|
|
205
|
+
}
|
|
206
|
+
const secretLike = /\b(bot[_-]?token|api[_-]?key|secret|bearer\s+[\w.-]{10,})\b/iu;
|
|
207
|
+
if (secretLike.test(payload.text)) {
|
|
208
|
+
throw new Error('Refusing to send a transport payload containing credential-like content.');
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=workGoldenPathMessages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workGoldenPathMessages.js","sourceRoot":"","sources":["../../../../../src/products/work/shared/workGoldenPathMessages.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Additive golden-path metadata on existing Cats Core records.
|
|
3
|
+
*
|
|
4
|
+
* ADR-112 section 1 forbids a new Core record family for this slice, so source
|
|
5
|
+
* provenance and the versioned proposal ride along in `metadata` on the Work
|
|
6
|
+
* Item that already owns them. Reading is defensive: metadata is untyped by
|
|
7
|
+
* construction, and a partially-written envelope must degrade to "no proposal"
|
|
8
|
+
* rather than throw somewhere deep in a transport handler.
|
|
9
|
+
*/
|
|
10
|
+
import type { CoreRecordMetadata } from '../../../core/types.js';
|
|
11
|
+
import type { TransportWorkOriginV1, TransportWorkProposalV1 } from '../../../platform/transports/work-delivery/contracts.js';
|
|
12
|
+
export declare const WORK_GOLDEN_PATH_METADATA_KEY = "workGoldenPath";
|
|
13
|
+
export declare const WORK_GOLDEN_PATH_METADATA_VERSION = 1;
|
|
14
|
+
export interface WorkGoldenPathMetadata {
|
|
15
|
+
schemaVersion: number;
|
|
16
|
+
origin: TransportWorkOriginV1 | null;
|
|
17
|
+
proposal: TransportWorkProposalV1 | null;
|
|
18
|
+
/**
|
|
19
|
+
* The locale the owner was speaking at intake.
|
|
20
|
+
*
|
|
21
|
+
* Kept beside the origin rather than inside it so `TransportWorkOriginV1`
|
|
22
|
+
* stays the shape SPEC-114 specifies, while later messages (progress, result)
|
|
23
|
+
* can still be rendered in the language the request arrived in.
|
|
24
|
+
*/
|
|
25
|
+
locale: string | null;
|
|
26
|
+
/**
|
|
27
|
+
* The external user that authorized this work.
|
|
28
|
+
*
|
|
29
|
+
* Kept so a later action token (publish, deny) can be bound to the same
|
|
30
|
+
* person without guessing that a chat reference identifies a user.
|
|
31
|
+
*/
|
|
32
|
+
externalUserRef: string | null;
|
|
33
|
+
}
|
|
34
|
+
export declare function readWorkGoldenPathMetadata(metadata: CoreRecordMetadata | unknown): WorkGoldenPathMetadata | null;
|
|
35
|
+
/**
|
|
36
|
+
* Merges golden-path provenance into an existing metadata bag without
|
|
37
|
+
* disturbing sibling envelopes such as `workIntake`.
|
|
38
|
+
*/
|
|
39
|
+
export declare function writeWorkGoldenPathMetadata(metadata: CoreRecordMetadata | undefined, input: {
|
|
40
|
+
origin: TransportWorkOriginV1;
|
|
41
|
+
proposal: TransportWorkProposalV1;
|
|
42
|
+
locale: string | null;
|
|
43
|
+
externalUserRef: string;
|
|
44
|
+
}): CoreRecordMetadata;
|
|
45
|
+
//# sourceMappingURL=workGoldenPathMetadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workGoldenPathMetadata.d.ts","sourceRoot":"","sources":["../../../../../src/products/work/shared/workGoldenPathMetadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAsC,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACrG,OAAO,KAAK,EACV,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,yDAAyD,CAAC;AAEjE,eAAO,MAAM,6BAA6B,mBAAmB,CAAC;AAE9D,eAAO,MAAM,iCAAiC,IAAI,CAAC;AAEnD,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACrC,QAAQ,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACzC;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;;;OAKG;IACH,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAuFD,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,GACrC,sBAAsB,GAAG,IAAI,CAiB/B;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,kBAAkB,GAAG,SAAS,EACxC,KAAK,EAAE;IACL,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,EAAE,uBAAuB,CAAC;IAClC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB,GACA,kBAAkB,CAWpB"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Additive golden-path metadata on existing Cats Core records.
|
|
3
|
+
*
|
|
4
|
+
* ADR-112 section 1 forbids a new Core record family for this slice, so source
|
|
5
|
+
* provenance and the versioned proposal ride along in `metadata` on the Work
|
|
6
|
+
* Item that already owns them. Reading is defensive: metadata is untyped by
|
|
7
|
+
* construction, and a partially-written envelope must degrade to "no proposal"
|
|
8
|
+
* rather than throw somewhere deep in a transport handler.
|
|
9
|
+
*/
|
|
10
|
+
export const WORK_GOLDEN_PATH_METADATA_KEY = 'workGoldenPath';
|
|
11
|
+
export const WORK_GOLDEN_PATH_METADATA_VERSION = 1;
|
|
12
|
+
function isRecord(value) {
|
|
13
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
14
|
+
}
|
|
15
|
+
function readString(value) {
|
|
16
|
+
return typeof value === 'string' && value.trim() !== '' ? value : null;
|
|
17
|
+
}
|
|
18
|
+
function readStringArray(value) {
|
|
19
|
+
return Array.isArray(value)
|
|
20
|
+
? value.filter((entry) => typeof entry === 'string')
|
|
21
|
+
: [];
|
|
22
|
+
}
|
|
23
|
+
function readOrigin(value) {
|
|
24
|
+
if (!isRecord(value)) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
const bindingId = readString(value.bindingId);
|
|
28
|
+
const conversationId = readString(value.conversationId);
|
|
29
|
+
const workItemId = readString(value.workItemId);
|
|
30
|
+
const externalConversationRef = readString(value.externalConversationRef);
|
|
31
|
+
const externalUpdateRef = readString(value.externalUpdateRef);
|
|
32
|
+
const proposalDigest = readString(value.proposalDigest);
|
|
33
|
+
if (bindingId === null
|
|
34
|
+
|| conversationId === null
|
|
35
|
+
|| workItemId === null
|
|
36
|
+
|| externalConversationRef === null
|
|
37
|
+
|| externalUpdateRef === null
|
|
38
|
+
|| proposalDigest === null
|
|
39
|
+
|| typeof value.proposalRevision !== 'number') {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
version: 1,
|
|
44
|
+
transport: 'telegram',
|
|
45
|
+
bindingId,
|
|
46
|
+
externalConversationRef,
|
|
47
|
+
externalUpdateRef,
|
|
48
|
+
externalMessageRef: readString(value.externalMessageRef),
|
|
49
|
+
conversationId,
|
|
50
|
+
workItemId,
|
|
51
|
+
proposalRevision: value.proposalRevision,
|
|
52
|
+
proposalDigest,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
function readProposal(value) {
|
|
56
|
+
if (!isRecord(value)) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
const goal = readString(value.goal);
|
|
60
|
+
const digest = readString(value.digest);
|
|
61
|
+
const targetLabel = readString(value.targetLabel);
|
|
62
|
+
const deliveryMode = readString(value.deliveryMode);
|
|
63
|
+
const createdAt = readString(value.createdAt);
|
|
64
|
+
if (goal === null
|
|
65
|
+
|| digest === null
|
|
66
|
+
|| targetLabel === null
|
|
67
|
+
|| deliveryMode === null
|
|
68
|
+
|| createdAt === null
|
|
69
|
+
|| typeof value.revision !== 'number') {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
version: 1,
|
|
74
|
+
revision: value.revision,
|
|
75
|
+
digest,
|
|
76
|
+
goal,
|
|
77
|
+
targetLabel,
|
|
78
|
+
projectId: readString(value.projectId),
|
|
79
|
+
workspacePath: readString(value.workspacePath),
|
|
80
|
+
acceptanceCriteria: readStringArray(value.acceptanceCriteria),
|
|
81
|
+
deliveryMode: deliveryMode,
|
|
82
|
+
deliveryGates: readStringArray(value.deliveryGates),
|
|
83
|
+
sideEffects: readStringArray(value.sideEffects),
|
|
84
|
+
openQuestion: readString(value.openQuestion),
|
|
85
|
+
createdAt,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
export function readWorkGoldenPathMetadata(metadata) {
|
|
89
|
+
if (!isRecord(metadata)) {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
const envelope = metadata[WORK_GOLDEN_PATH_METADATA_KEY];
|
|
93
|
+
if (!isRecord(envelope)) {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
schemaVersion: typeof envelope.schemaVersion === 'number'
|
|
98
|
+
? envelope.schemaVersion
|
|
99
|
+
: WORK_GOLDEN_PATH_METADATA_VERSION,
|
|
100
|
+
origin: readOrigin(envelope.origin),
|
|
101
|
+
proposal: readProposal(envelope.proposal),
|
|
102
|
+
locale: readString(envelope.locale),
|
|
103
|
+
externalUserRef: readString(envelope.externalUserRef),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Merges golden-path provenance into an existing metadata bag without
|
|
108
|
+
* disturbing sibling envelopes such as `workIntake`.
|
|
109
|
+
*/
|
|
110
|
+
export function writeWorkGoldenPathMetadata(metadata, input) {
|
|
111
|
+
return {
|
|
112
|
+
...(isRecord(metadata) ? metadata : {}),
|
|
113
|
+
[WORK_GOLDEN_PATH_METADATA_KEY]: {
|
|
114
|
+
schemaVersion: WORK_GOLDEN_PATH_METADATA_VERSION,
|
|
115
|
+
origin: { ...input.origin },
|
|
116
|
+
proposal: { ...input.proposal },
|
|
117
|
+
locale: input.locale,
|
|
118
|
+
externalUserRef: input.externalUserRef,
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=workGoldenPathMetadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workGoldenPathMetadata.js","sourceRoot":"","sources":["../../../../../src/products/work/shared/workGoldenPathMetadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Completion-evidence evaluation (SPEC-114 FR-30, FR-31).
|
|
3
|
+
*
|
|
4
|
+
* The rule this module exists to enforce: a provider returning a final
|
|
5
|
+
* assistant message is evidence that an execution *step* returned, not that the
|
|
6
|
+
* requested outcome happened. Cats accepts terminal completion only against the
|
|
7
|
+
* approved acceptance criteria plus mode-appropriate delivery evidence.
|
|
8
|
+
*/
|
|
9
|
+
import type { CoreArtifactRecord, CoreDeliveryMode } from '../../../core/types.js';
|
|
10
|
+
export declare const WORK_COMPLETION_EVIDENCE_GAPS: readonly ["no_outcome_recorded", "outcome_not_successful", "no_ready_artifact", "no_commit_evidence", "no_validation_evidence", "acceptance_criteria_unmet"];
|
|
11
|
+
export type WorkCompletionEvidenceGap = (typeof WORK_COMPLETION_EVIDENCE_GAPS)[number];
|
|
12
|
+
export interface WorkCommitEvidence {
|
|
13
|
+
/** Immutable commit id. A branch name or "HEAD" is not acceptable. */
|
|
14
|
+
commitId: string;
|
|
15
|
+
changeSummary: string;
|
|
16
|
+
/** Validation the run performed (test command, typecheck, lint). */
|
|
17
|
+
validation: {
|
|
18
|
+
command: string;
|
|
19
|
+
passed: boolean;
|
|
20
|
+
} | null;
|
|
21
|
+
/** Runtime-owned location that contains this commit, never the operator's source worktree. */
|
|
22
|
+
deliveryWorkspacePath?: string | null;
|
|
23
|
+
/** Runtime session that owns the isolated delivery workspace. */
|
|
24
|
+
deliverySessionId?: string | null;
|
|
25
|
+
}
|
|
26
|
+
export interface WorkCompletionEvidenceInput {
|
|
27
|
+
deliveryMode: CoreDeliveryMode;
|
|
28
|
+
acceptanceCriteria: readonly string[];
|
|
29
|
+
/** Criteria the supervised run reported as satisfied, by exact text. */
|
|
30
|
+
satisfiedCriteria: readonly string[];
|
|
31
|
+
outcomeStatus: 'succeeded' | 'blocked' | 'failed' | 'cancelled' | null;
|
|
32
|
+
artifacts: readonly CoreArtifactRecord[];
|
|
33
|
+
commit: WorkCommitEvidence | null;
|
|
34
|
+
}
|
|
35
|
+
export interface WorkCompletionEvidenceResult {
|
|
36
|
+
accepted: boolean;
|
|
37
|
+
gaps: WorkCompletionEvidenceGap[];
|
|
38
|
+
/** Criteria still outstanding, for the decision/result message. */
|
|
39
|
+
unmetCriteria: string[];
|
|
40
|
+
}
|
|
41
|
+
export declare function evaluateWorkCompletionEvidence(input: WorkCompletionEvidenceInput): WorkCompletionEvidenceResult;
|
|
42
|
+
//# sourceMappingURL=workCompletionEvidence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workCompletionEvidence.d.ts","sourceRoot":"","sources":["../../../../../src/products/work/state/workCompletionEvidence.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAEnF,eAAO,MAAM,6BAA6B,8JAOhC,CAAC;AAEX,MAAM,MAAM,yBAAyB,GAAG,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvF,MAAM,WAAW,kBAAkB;IACjC,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IACxD,8FAA8F;IAC9F,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,iEAAiE;IACjE,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,2BAA2B;IAC1C,YAAY,EAAE,gBAAgB,CAAC;IAC/B,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,wEAAwE;IACxE,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,aAAa,EAAE,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,IAAI,CAAC;IACvE,SAAS,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACzC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,yBAAyB,EAAE,CAAC;IAClC,mEAAmE;IACnE,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAcD,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,2BAA2B,GACjC,4BAA4B,CAoC9B"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Completion-evidence evaluation (SPEC-114 FR-30, FR-31).
|
|
3
|
+
*
|
|
4
|
+
* The rule this module exists to enforce: a provider returning a final
|
|
5
|
+
* assistant message is evidence that an execution *step* returned, not that the
|
|
6
|
+
* requested outcome happened. Cats accepts terminal completion only against the
|
|
7
|
+
* approved acceptance criteria plus mode-appropriate delivery evidence.
|
|
8
|
+
*/
|
|
9
|
+
export const WORK_COMPLETION_EVIDENCE_GAPS = [
|
|
10
|
+
'no_outcome_recorded',
|
|
11
|
+
'outcome_not_successful',
|
|
12
|
+
'no_ready_artifact',
|
|
13
|
+
'no_commit_evidence',
|
|
14
|
+
'no_validation_evidence',
|
|
15
|
+
'acceptance_criteria_unmet',
|
|
16
|
+
];
|
|
17
|
+
function normalize(value) {
|
|
18
|
+
return value.trim().toLowerCase();
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* A commit id must look like a real object id. This is what stops a run from
|
|
22
|
+
* "delivering" `commit_only` by reporting a branch name it never wrote.
|
|
23
|
+
*/
|
|
24
|
+
function isImmutableCommitId(commitId) {
|
|
25
|
+
return /^[0-9a-f]{7,40}$/u.test(commitId.trim());
|
|
26
|
+
}
|
|
27
|
+
export function evaluateWorkCompletionEvidence(input) {
|
|
28
|
+
const gaps = [];
|
|
29
|
+
if (input.outcomeStatus === null) {
|
|
30
|
+
gaps.push('no_outcome_recorded');
|
|
31
|
+
}
|
|
32
|
+
else if (input.outcomeStatus !== 'succeeded') {
|
|
33
|
+
gaps.push('outcome_not_successful');
|
|
34
|
+
}
|
|
35
|
+
const satisfied = new Set(input.satisfiedCriteria.map(normalize));
|
|
36
|
+
const unmetCriteria = input.acceptanceCriteria.filter((criterion) => !satisfied.has(normalize(criterion)));
|
|
37
|
+
if (unmetCriteria.length > 0) {
|
|
38
|
+
gaps.push('acceptance_criteria_unmet');
|
|
39
|
+
}
|
|
40
|
+
// Every repository-backed mode builds on a local commit. Push, PR, and
|
|
41
|
+
// preview are publication steps added *after* that evidence, not substitutes
|
|
42
|
+
// for proving the provider's edits were captured.
|
|
43
|
+
if (input.deliveryMode !== 'artifact_only') {
|
|
44
|
+
if (input.commit === null || !isImmutableCommitId(input.commit.commitId)) {
|
|
45
|
+
gaps.push('no_commit_evidence');
|
|
46
|
+
}
|
|
47
|
+
else if (input.commit.validation === null || !input.commit.validation.passed) {
|
|
48
|
+
gaps.push('no_validation_evidence');
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
const hasReadyArtifact = input.artifacts.some((artifact) => artifact.status === 'ready' || artifact.status === 'published');
|
|
53
|
+
if (!hasReadyArtifact) {
|
|
54
|
+
gaps.push('no_ready_artifact');
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return { accepted: gaps.length === 0, gaps, unmetCriteria };
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=workCompletionEvidence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workCompletionEvidence.js","sourceRoot":"","sources":["../../../../../src/products/work/state/workCompletionEvidence.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,qBAAqB;IACrB,wBAAwB;IACxB,mBAAmB;IACnB,oBAAoB;IACpB,wBAAwB;IACxB,2BAA2B;CACnB,CAAC;AAiCX,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,QAAgB;IAC3C,OAAO,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,KAAkC;IAElC,MAAM,IAAI,GAAgC,EAAE,CAAC;IAE7C,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACnC,CAAC;SAAM,IAAI,KAAK,CAAC,aAAa,KAAK,WAAW,EAAE,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IAClE,MAAM,aAAa,GAAG,KAAK,CAAC,kBAAkB,CAAC,MAAM,CACnD,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CACpD,CAAC;IACF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACzC,CAAC;IAED,uEAAuE;IACvE,6EAA6E;IAC7E,kDAAkD;IAClD,IAAI,KAAK,CAAC,YAAY,KAAK,eAAe,EAAE,CAAC;QAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzE,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAClC,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAC/E,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,gBAAgB,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAC3C,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,OAAO,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,CAC7E,CAAC;QACF,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;AAC9D,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { CoreStore } from '../../../core/store.js';
|
|
2
|
+
import type { CatsCoreState, CoreTaskRecord } from '../../../core/types.js';
|
|
2
3
|
import type { ToolResult } from '../../../platform/supervision/contracts.js';
|
|
3
4
|
import type { SupervisedToolExecutor } from '../../../platform/supervision/toolBoundary.js';
|
|
4
5
|
import { WORK_TASK_CREATE_FROM_WORK_ITEM_TOOL, type WorkTaskCreateFromWorkItemInput, type WorkTaskCreateFromWorkItemResult } from '../shared/workToolSurface.js';
|
|
@@ -19,5 +20,20 @@ export interface WorkExecutionTaskToolExecutors {
|
|
|
19
20
|
}
|
|
20
21
|
export declare function createWorkExecutionTaskDelegate(options: WorkExecutionTaskDelegateOptions): WorkExecutionTaskDelegate;
|
|
21
22
|
export declare function createWorkExecutionTaskToolExecutors(delegate: WorkExecutionTaskDelegate): WorkExecutionTaskToolExecutors;
|
|
23
|
+
/**
|
|
24
|
+
* The Core mutation behind `work.task.create_from_work_item`, exposed so a
|
|
25
|
+
* caller that must be atomic across several writes (the transport golden-path
|
|
26
|
+
* admission command) can compose it inside one `updateCore` transaction instead
|
|
27
|
+
* of chaining separate persisted steps.
|
|
28
|
+
*
|
|
29
|
+
* Throws `WorkExecutionTaskPrecheckError` on any precondition failure, which
|
|
30
|
+
* leaves the surrounding transaction untouched.
|
|
31
|
+
*/
|
|
32
|
+
export declare function applyWorkExecutionTaskCreation(core: CatsCoreState, input: WorkTaskCreateFromWorkItemInput, context: WorkExecutionTaskMutationContext, createdAt: Date): {
|
|
33
|
+
core: CatsCoreState;
|
|
34
|
+
task: CoreTaskRecord;
|
|
35
|
+
created: boolean;
|
|
36
|
+
linked: boolean;
|
|
37
|
+
};
|
|
22
38
|
export declare function createTaskFromWorkItem(coreStore: CoreStore, input: WorkTaskCreateFromWorkItemInput, context: WorkExecutionTaskMutationContext, now?: () => Date): Promise<ToolResult<WorkTaskCreateFromWorkItemResult>>;
|
|
23
39
|
//# sourceMappingURL=workExecutionTaskDelegate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workExecutionTaskDelegate.d.ts","sourceRoot":"","sources":["../../../../../src/products/work/state/workExecutionTaskDelegate.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"workExecutionTaskDelegate.d.ts","sourceRoot":"","sources":["../../../../../src/products/work/state/workExecutionTaskDelegate.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAsB,MAAM,wBAAwB,CAAC;AAChG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AAC7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AAC5F,OAAO,EACL,oCAAoC,EACpC,KAAK,+BAA+B,EACpC,KAAK,gCAAgC,EAEtC,MAAM,8BAA8B,CAAC;AAQtC,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,SAAS,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,sBAAsB,CACpB,KAAK,EAAE,+BAA+B,EACtC,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,UAAU,CAAC,gCAAgC,CAAC,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,8BAA8B;IAC7C,CAAC,oCAAoC,CAAC,EAAE,sBAAsB,CAC5D,+BAA+B,EAC/B,gCAAgC,CACjC,CAAC;CACH;AAED,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,gCAAgC,GACxC,yBAAyB,CAQ3B;AAED,wBAAgB,oCAAoC,CAClD,QAAQ,EAAE,yBAAyB,GAClC,8BAA8B,CAKhC;AAED;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,+BAA+B,EACtC,OAAO,EAAE,gCAAgC,EACzC,SAAS,EAAE,IAAI,GACd;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAgHlF;AAED,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,+BAA+B,EACtC,OAAO,EAAE,gCAAgC,EACzC,GAAG,GAAE,MAAM,IAAuB,GACjC,OAAO,CAAC,UAAU,CAAC,gCAAgC,CAAC,CAAC,CA4DvD"}
|