@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.
Files changed (448) hide show
  1. package/.env.example +3 -7
  2. package/README.md +18 -0
  3. package/build/desktop/bootstrapNavigation.d.ts.map +1 -1
  4. package/build/desktop/bootstrapNavigation.js +6 -13
  5. package/build/desktop/bootstrapNavigation.js.map +1 -1
  6. package/build/desktop/bootstrapPage.d.ts.map +1 -1
  7. package/build/desktop/bootstrapPage.js +114 -34
  8. package/build/desktop/bootstrapPage.js.map +1 -1
  9. package/build/desktop/cliInventoryProbe.d.ts +5 -2
  10. package/build/desktop/cliInventoryProbe.d.ts.map +1 -1
  11. package/build/desktop/cliInventoryProbe.js +14 -11
  12. package/build/desktop/cliInventoryProbe.js.map +1 -1
  13. package/build/desktop/config.d.ts +0 -4
  14. package/build/desktop/config.d.ts.map +1 -1
  15. package/build/desktop/config.js +1 -6
  16. package/build/desktop/config.js.map +1 -1
  17. package/build/desktop/contracts.d.ts +10 -2
  18. package/build/desktop/contracts.d.ts.map +1 -1
  19. package/build/desktop/contracts.js +1 -2
  20. package/build/desktop/contracts.js.map +1 -1
  21. package/build/desktop/hostVersion.d.ts.map +1 -1
  22. package/build/desktop/hostVersion.js +3 -5
  23. package/build/desktop/hostVersion.js.map +1 -1
  24. package/build/desktop/main.js +144 -249
  25. package/build/desktop/main.js.map +1 -1
  26. package/build/desktop/packaging.d.ts +2 -0
  27. package/build/desktop/packaging.d.ts.map +1 -1
  28. package/build/desktop/packaging.js +34 -14
  29. package/build/desktop/packaging.js.map +1 -1
  30. package/build/desktop/preload.cjs +7 -0
  31. package/build/desktop/preload.cjs.map +1 -1
  32. package/build/desktop/processSupervisor.d.ts.map +1 -1
  33. package/build/desktop/processSupervisor.js +3 -0
  34. package/build/desktop/processSupervisor.js.map +1 -1
  35. package/build/desktop/providerSelection.d.ts +37 -0
  36. package/build/desktop/providerSelection.d.ts.map +1 -0
  37. package/build/desktop/providerSelection.js +112 -0
  38. package/build/desktop/providerSelection.js.map +1 -0
  39. package/build/desktop/readiness.d.ts +2 -0
  40. package/build/desktop/readiness.d.ts.map +1 -1
  41. package/build/desktop/readiness.js +14 -33
  42. package/build/desktop/readiness.js.map +1 -1
  43. package/build/desktop/setupAssets.d.ts.map +1 -1
  44. package/build/desktop/setupAssets.js +16 -14
  45. package/build/desktop/setupAssets.js.map +1 -1
  46. package/build/desktop/setupAudit.d.ts +2 -3
  47. package/build/desktop/setupAudit.d.ts.map +1 -1
  48. package/build/desktop/setupAudit.js +14 -34
  49. package/build/desktop/setupAudit.js.map +1 -1
  50. package/build/desktop/updateDialog.d.ts +27 -1
  51. package/build/desktop/updateDialog.d.ts.map +1 -1
  52. package/build/desktop/updateDialog.js +85 -5
  53. package/build/desktop/updateDialog.js.map +1 -1
  54. package/build/renderer/assets/{ActiveSessionPermissionChip-DImsuR9T.js → ActiveSessionPermissionChip-CAgN-tXv.js} +1 -1
  55. package/build/renderer/assets/App-BZA23O2J.js +2 -0
  56. package/build/renderer/assets/App-DxsV-tKS.css +1 -0
  57. package/build/renderer/assets/{App-DKOSn0o_.js → App-YqprEL2n.js} +1 -1
  58. package/build/renderer/assets/App-rGw9J8PZ.js +1 -0
  59. package/build/renderer/assets/WorkspaceAppRoutes-BCHCikmJ.js +1 -0
  60. package/build/renderer/assets/app-BV3UAQkR.css +1 -0
  61. package/build/renderer/assets/app-CVPqqfZo.js +45 -0
  62. package/build/renderer/assets/conversationSidebarRecentEntries-iqaLqA1n.js +6 -0
  63. package/build/renderer/assets/{useDraftSessionChips-DCIId0eY.js → useDraftSessionChips-D9BX6X92.js} +1 -1
  64. package/build/renderer/index.html +2 -2
  65. package/build/server/app/renderer/providerCatalogClient.d.ts.map +1 -1
  66. package/build/server/app/renderer/providerCatalogClient.js +15 -6
  67. package/build/server/app/renderer/providerCatalogClient.js.map +1 -1
  68. package/build/server/app/renderer/providerRegistryClient.d.ts +1 -1
  69. package/build/server/app/renderer/providerRegistryClient.d.ts.map +1 -1
  70. package/build/server/app/renderer/providerRegistryClient.js +23 -41
  71. package/build/server/app/renderer/providerRegistryClient.js.map +1 -1
  72. package/build/server/app/server/appPackageRoutes.d.ts +2 -0
  73. package/build/server/app/server/appPackageRoutes.d.ts.map +1 -1
  74. package/build/server/app/server/appPackageRoutes.js +105 -0
  75. package/build/server/app/server/appPackageRoutes.js.map +1 -1
  76. package/build/server/app/server/authGatePolicy.js +7 -1
  77. package/build/server/app/server/authGatePolicy.js.map +1 -1
  78. package/build/server/app/server/contracts.d.ts +15 -0
  79. package/build/server/app/server/contracts.d.ts.map +1 -1
  80. package/build/server/app/server/dependencies.d.ts.map +1 -1
  81. package/build/server/app/server/dependencies.js +42 -1
  82. package/build/server/app/server/dependencies.js.map +1 -1
  83. package/build/server/app/server/goldenPathStartupResume.d.ts +55 -0
  84. package/build/server/app/server/goldenPathStartupResume.d.ts.map +1 -0
  85. package/build/server/app/server/goldenPathStartupResume.js +109 -0
  86. package/build/server/app/server/goldenPathStartupResume.js.map +1 -0
  87. package/build/server/app/server/platformSetupRoutes.d.ts.map +1 -1
  88. package/build/server/app/server/platformSetupRoutes.js +1 -13
  89. package/build/server/app/server/platformSetupRoutes.js.map +1 -1
  90. package/build/server/app/server/polling.d.ts.map +1 -1
  91. package/build/server/app/server/polling.js +2 -0
  92. package/build/server/app/server/polling.js.map +1 -1
  93. package/build/server/app/server/requestRouter.d.ts.map +1 -1
  94. package/build/server/app/server/requestRouter.js +30 -0
  95. package/build/server/app/server/requestRouter.js.map +1 -1
  96. package/build/server/app/server/runtimeSurfaceProxy.d.ts.map +1 -1
  97. package/build/server/app/server/runtimeSurfaceProxy.js +4 -2
  98. package/build/server/app/server/runtimeSurfaceProxy.js.map +1 -1
  99. package/build/server/app/server/startupRecovery.d.ts.map +1 -1
  100. package/build/server/app/server/startupRecovery.js +5 -0
  101. package/build/server/app/server/startupRecovery.js.map +1 -1
  102. package/build/server/app/server/telegramCommandSurface.d.ts +29 -0
  103. package/build/server/app/server/telegramCommandSurface.d.ts.map +1 -0
  104. package/build/server/app/server/telegramCommandSurface.js +123 -0
  105. package/build/server/app/server/telegramCommandSurface.js.map +1 -0
  106. package/build/server/app/server/transportWorkGoldenPath.d.ts +82 -0
  107. package/build/server/app/server/transportWorkGoldenPath.d.ts.map +1 -0
  108. package/build/server/app/server/transportWorkGoldenPath.js +307 -0
  109. package/build/server/app/server/transportWorkGoldenPath.js.map +1 -0
  110. package/build/server/config.d.ts +21 -0
  111. package/build/server/config.d.ts.map +1 -1
  112. package/build/server/config.js +12 -0
  113. package/build/server/config.js.map +1 -1
  114. package/build/server/design/components/providerModelFieldsSupport.d.ts +3 -3
  115. package/build/server/design/components/providerModelFieldsSupport.d.ts.map +1 -1
  116. package/build/server/design/components/providerModelFieldsSupport.js +37 -38
  117. package/build/server/design/components/providerModelFieldsSupport.js.map +1 -1
  118. package/build/server/design/components/useProviderCatalogState.d.ts +1 -0
  119. package/build/server/design/components/useProviderCatalogState.d.ts.map +1 -1
  120. package/build/server/design/components/useProviderCatalogState.js +1 -0
  121. package/build/server/design/components/useProviderCatalogState.js.map +1 -1
  122. package/build/server/design/components/useProviderRegistryAutoRecheck.d.ts.map +1 -1
  123. package/build/server/design/components/useProviderRegistryAutoRecheck.js +20 -13
  124. package/build/server/design/components/useProviderRegistryAutoRecheck.js.map +1 -1
  125. package/build/server/design/components/useProviderRegistryState.d.ts.map +1 -1
  126. package/build/server/design/components/useProviderRegistryState.js +12 -25
  127. package/build/server/design/components/useProviderRegistryState.js.map +1 -1
  128. package/build/server/design/components/useProviderTargetReconciliation.d.ts.map +1 -1
  129. package/build/server/design/components/useProviderTargetReconciliation.js +2 -1
  130. package/build/server/design/components/useProviderTargetReconciliation.js.map +1 -1
  131. package/build/server/index.js +4 -0
  132. package/build/server/index.js.map +1 -1
  133. package/build/server/platform/apps/packageInstaller.d.ts +19 -0
  134. package/build/server/platform/apps/packageInstaller.d.ts.map +1 -0
  135. package/build/server/platform/apps/packageInstaller.js +92 -0
  136. package/build/server/platform/apps/packageInstaller.js.map +1 -0
  137. package/build/server/platform/apps/registry.d.ts +6 -0
  138. package/build/server/platform/apps/registry.d.ts.map +1 -1
  139. package/build/server/platform/apps/registry.js +24 -0
  140. package/build/server/platform/apps/registry.js.map +1 -1
  141. package/build/server/platform/apps/renderer.d.ts +6 -0
  142. package/build/server/platform/apps/renderer.d.ts.map +1 -0
  143. package/build/server/platform/apps/renderer.js +18 -0
  144. package/build/server/platform/apps/renderer.js.map +1 -0
  145. package/build/server/platform/runtime/deliveryClient.d.ts +111 -0
  146. package/build/server/platform/runtime/deliveryClient.d.ts.map +1 -0
  147. package/build/server/platform/runtime/deliveryClient.js +289 -0
  148. package/build/server/platform/runtime/deliveryClient.js.map +1 -0
  149. package/build/server/platform/supervision/providerCapabilityBootstrapYaml.d.ts +1 -0
  150. package/build/server/platform/supervision/providerCapabilityBootstrapYaml.d.ts.map +1 -1
  151. package/build/server/platform/supervision/providerCapabilityBootstrapYaml.js +10 -0
  152. package/build/server/platform/supervision/providerCapabilityBootstrapYaml.js.map +1 -1
  153. package/build/server/platform/supervision/runtimeBoundary.d.ts +11 -1
  154. package/build/server/platform/supervision/runtimeBoundary.d.ts.map +1 -1
  155. package/build/server/platform/supervision/runtimeBoundary.js +2 -2
  156. package/build/server/platform/supervision/runtimeBoundary.js.map +1 -1
  157. package/build/server/platform/transports/telegram/bridge.d.ts +18 -0
  158. package/build/server/platform/transports/telegram/bridge.d.ts.map +1 -1
  159. package/build/server/platform/transports/telegram/bridge.js +176 -0
  160. package/build/server/platform/transports/telegram/bridge.js.map +1 -1
  161. package/build/server/platform/transports/telegram/commandPort.d.ts +40 -0
  162. package/build/server/platform/transports/telegram/commandPort.d.ts.map +1 -0
  163. package/build/server/platform/transports/telegram/commandPort.js +17 -0
  164. package/build/server/platform/transports/telegram/commandPort.js.map +1 -0
  165. package/build/server/platform/transports/telegram/commandRouter.d.ts +22 -0
  166. package/build/server/platform/transports/telegram/commandRouter.d.ts.map +1 -1
  167. package/build/server/platform/transports/telegram/commandRouter.js.map +1 -1
  168. package/build/server/platform/transports/telegram/commands/index.d.ts.map +1 -1
  169. package/build/server/platform/transports/telegram/commands/index.js +38 -0
  170. package/build/server/platform/transports/telegram/commands/index.js.map +1 -1
  171. package/build/server/platform/transports/telegram/ingressDispatch.d.ts +56 -0
  172. package/build/server/platform/transports/telegram/ingressDispatch.d.ts.map +1 -0
  173. package/build/server/platform/transports/telegram/ingressDispatch.js +93 -0
  174. package/build/server/platform/transports/telegram/ingressDispatch.js.map +1 -0
  175. package/build/server/platform/transports/telegram/polling.d.ts +34 -0
  176. package/build/server/platform/transports/telegram/polling.d.ts.map +1 -1
  177. package/build/server/platform/transports/telegram/polling.js +86 -9
  178. package/build/server/platform/transports/telegram/polling.js.map +1 -1
  179. package/build/server/platform/transports/telegram/relay/index.d.ts +3 -0
  180. package/build/server/platform/transports/telegram/relay/index.d.ts.map +1 -1
  181. package/build/server/platform/transports/telegram/relay/index.js +5 -1
  182. package/build/server/platform/transports/telegram/relay/index.js.map +1 -1
  183. package/build/server/platform/transports/telegram/relay/ingress.d.ts +2 -0
  184. package/build/server/platform/transports/telegram/relay/ingress.d.ts.map +1 -1
  185. package/build/server/platform/transports/telegram/relay/ingress.js +1 -1
  186. package/build/server/platform/transports/telegram/relay/ingress.js.map +1 -1
  187. package/build/server/platform/transports/work-delivery/actionTokens.d.ts +66 -0
  188. package/build/server/platform/transports/work-delivery/actionTokens.d.ts.map +1 -0
  189. package/build/server/platform/transports/work-delivery/actionTokens.js +145 -0
  190. package/build/server/platform/transports/work-delivery/actionTokens.js.map +1 -0
  191. package/build/server/platform/transports/work-delivery/contracts.d.ts +172 -0
  192. package/build/server/platform/transports/work-delivery/contracts.d.ts.map +1 -0
  193. package/build/server/platform/transports/work-delivery/contracts.js +26 -0
  194. package/build/server/platform/transports/work-delivery/contracts.js.map +1 -0
  195. package/build/server/platform/transports/work-delivery/deliveryGates.d.ts +32 -0
  196. package/build/server/platform/transports/work-delivery/deliveryGates.d.ts.map +1 -0
  197. package/build/server/platform/transports/work-delivery/deliveryGates.js +45 -0
  198. package/build/server/platform/transports/work-delivery/deliveryGates.js.map +1 -0
  199. package/build/server/platform/transports/work-delivery/inboundClassification.d.ts +31 -0
  200. package/build/server/platform/transports/work-delivery/inboundClassification.d.ts.map +1 -0
  201. package/build/server/platform/transports/work-delivery/inboundClassification.js +52 -0
  202. package/build/server/platform/transports/work-delivery/inboundClassification.js.map +1 -0
  203. package/build/server/platform/transports/work-delivery/outbox.d.ts +84 -0
  204. package/build/server/platform/transports/work-delivery/outbox.d.ts.map +1 -0
  205. package/build/server/platform/transports/work-delivery/outbox.js +270 -0
  206. package/build/server/platform/transports/work-delivery/outbox.js.map +1 -0
  207. package/build/server/platform/transports/work-delivery/permissionEnvelope.d.ts +57 -0
  208. package/build/server/platform/transports/work-delivery/permissionEnvelope.d.ts.map +1 -0
  209. package/build/server/platform/transports/work-delivery/permissionEnvelope.js +74 -0
  210. package/build/server/platform/transports/work-delivery/permissionEnvelope.js.map +1 -0
  211. package/build/server/platform/transports/work-delivery/port.d.ts +60 -0
  212. package/build/server/platform/transports/work-delivery/port.d.ts.map +1 -0
  213. package/build/server/platform/transports/work-delivery/port.js +15 -0
  214. package/build/server/platform/transports/work-delivery/port.js.map +1 -0
  215. package/build/server/platform/transports/work-delivery/proposal.d.ts +31 -0
  216. package/build/server/platform/transports/work-delivery/proposal.d.ts.map +1 -0
  217. package/build/server/platform/transports/work-delivery/proposal.js +59 -0
  218. package/build/server/platform/transports/work-delivery/proposal.js.map +1 -0
  219. package/build/server/platform/transports/work-delivery/readiness.d.ts +61 -0
  220. package/build/server/platform/transports/work-delivery/readiness.d.ts.map +1 -0
  221. package/build/server/platform/transports/work-delivery/readiness.js +123 -0
  222. package/build/server/platform/transports/work-delivery/readiness.js.map +1 -0
  223. package/build/server/platform/transports/work-delivery/stageProjection.d.ts +43 -0
  224. package/build/server/platform/transports/work-delivery/stageProjection.d.ts.map +1 -0
  225. package/build/server/platform/transports/work-delivery/stageProjection.js +132 -0
  226. package/build/server/platform/transports/work-delivery/stageProjection.js.map +1 -0
  227. package/build/server/platform/transports/work-delivery/stateStore.d.ts +21 -0
  228. package/build/server/platform/transports/work-delivery/stateStore.d.ts.map +1 -0
  229. package/build/server/platform/transports/work-delivery/stateStore.js +193 -0
  230. package/build/server/platform/transports/work-delivery/stateStore.js.map +1 -0
  231. package/build/server/platform/transports/work-delivery/telemetry.d.ts +49 -0
  232. package/build/server/platform/transports/work-delivery/telemetry.d.ts.map +1 -0
  233. package/build/server/platform/transports/work-delivery/telemetry.js +80 -0
  234. package/build/server/platform/transports/work-delivery/telemetry.js.map +1 -0
  235. package/build/server/products/chat/api/contracts.d.ts +10 -0
  236. package/build/server/products/chat/api/contracts.d.ts.map +1 -1
  237. package/build/server/products/chat/api/resources/channelRoutes.d.ts.map +1 -1
  238. package/build/server/products/chat/api/resources/channelRoutes.js +27 -1
  239. package/build/server/products/chat/api/resources/channelRoutes.js.map +1 -1
  240. package/build/server/products/chat/api/routeSupport.d.ts +8 -0
  241. package/build/server/products/chat/api/routeSupport.d.ts.map +1 -1
  242. package/build/server/products/chat/api/routeSupport.js +5 -4
  243. package/build/server/products/chat/api/routeSupport.js.map +1 -1
  244. package/build/server/products/chat/api/setupRoutes.d.ts.map +1 -1
  245. package/build/server/products/chat/api/setupRoutes.js +23 -8
  246. package/build/server/products/chat/api/setupRoutes.js.map +1 -1
  247. package/build/server/products/chat/state/model/channelExecutionTargets.d.ts +15 -0
  248. package/build/server/products/chat/state/model/channelExecutionTargets.d.ts.map +1 -1
  249. package/build/server/products/chat/state/model/channelExecutionTargets.js +25 -0
  250. package/build/server/products/chat/state/model/channelExecutionTargets.js.map +1 -1
  251. package/build/server/products/chat/state/model/index.d.ts +1 -1
  252. package/build/server/products/chat/state/model/index.d.ts.map +1 -1
  253. package/build/server/products/chat/state/model/index.js +1 -1
  254. package/build/server/products/chat/state/model/index.js.map +1 -1
  255. package/build/server/products/code/api/relayRoutes.d.ts.map +1 -1
  256. package/build/server/products/code/api/relayRoutes.js +36 -7
  257. package/build/server/products/code/api/relayRoutes.js.map +1 -1
  258. package/build/server/products/code/state/relayState.d.ts +2 -1
  259. package/build/server/products/code/state/relayState.d.ts.map +1 -1
  260. package/build/server/products/code/state/relayState.js +7 -7
  261. package/build/server/products/code/state/relayState.js.map +1 -1
  262. package/build/server/products/shared/api/workspaceContracts.d.ts +5 -0
  263. package/build/server/products/shared/api/workspaceContracts.d.ts.map +1 -1
  264. package/build/server/products/work/api/goldenPathProjection.d.ts +156 -0
  265. package/build/server/products/work/api/goldenPathProjection.d.ts.map +1 -0
  266. package/build/server/products/work/api/goldenPathProjection.js +252 -0
  267. package/build/server/products/work/api/goldenPathProjection.js.map +1 -0
  268. package/build/server/products/work/api/index.d.ts +54 -1
  269. package/build/server/products/work/api/index.d.ts.map +1 -1
  270. package/build/server/products/work/api/index.js +182 -4
  271. package/build/server/products/work/api/index.js.map +1 -1
  272. package/build/server/products/work/api/projection.d.ts +7 -1
  273. package/build/server/products/work/api/projection.d.ts.map +1 -1
  274. package/build/server/products/work/api/projection.js +7 -1
  275. package/build/server/products/work/api/projection.js.map +1 -1
  276. package/build/server/products/work/shared/apiPaths.d.ts +8 -0
  277. package/build/server/products/work/shared/apiPaths.d.ts.map +1 -1
  278. package/build/server/products/work/shared/apiPaths.js +8 -0
  279. package/build/server/products/work/shared/apiPaths.js.map +1 -1
  280. package/build/server/products/work/shared/workGoldenPathMessages.d.ts +83 -0
  281. package/build/server/products/work/shared/workGoldenPathMessages.d.ts.map +1 -0
  282. package/build/server/products/work/shared/workGoldenPathMessages.js +211 -0
  283. package/build/server/products/work/shared/workGoldenPathMessages.js.map +1 -0
  284. package/build/server/products/work/shared/workGoldenPathMetadata.d.ts +45 -0
  285. package/build/server/products/work/shared/workGoldenPathMetadata.d.ts.map +1 -0
  286. package/build/server/products/work/shared/workGoldenPathMetadata.js +122 -0
  287. package/build/server/products/work/shared/workGoldenPathMetadata.js.map +1 -0
  288. package/build/server/products/work/state/workCompletionEvidence.d.ts +42 -0
  289. package/build/server/products/work/state/workCompletionEvidence.d.ts.map +1 -0
  290. package/build/server/products/work/state/workCompletionEvidence.js +59 -0
  291. package/build/server/products/work/state/workCompletionEvidence.js.map +1 -0
  292. package/build/server/products/work/state/workExecutionTaskDelegate.d.ts +16 -0
  293. package/build/server/products/work/state/workExecutionTaskDelegate.d.ts.map +1 -1
  294. package/build/server/products/work/state/workExecutionTaskDelegate.js +91 -68
  295. package/build/server/products/work/state/workExecutionTaskDelegate.js.map +1 -1
  296. package/build/server/products/work/state/workGoldenPathAdmission.d.ts +78 -0
  297. package/build/server/products/work/state/workGoldenPathAdmission.d.ts.map +1 -0
  298. package/build/server/products/work/state/workGoldenPathAdmission.js +249 -0
  299. package/build/server/products/work/state/workGoldenPathAdmission.js.map +1 -0
  300. package/build/server/products/work/state/workGoldenPathDeliveryEvidence.d.ts +33 -0
  301. package/build/server/products/work/state/workGoldenPathDeliveryEvidence.d.ts.map +1 -0
  302. package/build/server/products/work/state/workGoldenPathDeliveryEvidence.js +161 -0
  303. package/build/server/products/work/state/workGoldenPathDeliveryEvidence.js.map +1 -0
  304. package/build/server/products/work/state/workGoldenPathIntake.d.ts +34 -0
  305. package/build/server/products/work/state/workGoldenPathIntake.d.ts.map +1 -0
  306. package/build/server/products/work/state/workGoldenPathIntake.js +50 -0
  307. package/build/server/products/work/state/workGoldenPathIntake.js.map +1 -0
  308. package/build/server/products/work/state/workGoldenPathLifecycle.d.ts +44 -0
  309. package/build/server/products/work/state/workGoldenPathLifecycle.d.ts.map +1 -0
  310. package/build/server/products/work/state/workGoldenPathLifecycle.js +146 -0
  311. package/build/server/products/work/state/workGoldenPathLifecycle.js.map +1 -0
  312. package/build/server/products/work/state/workGoldenPathPublish.d.ts +84 -0
  313. package/build/server/products/work/state/workGoldenPathPublish.d.ts.map +1 -0
  314. package/build/server/products/work/state/workGoldenPathPublish.js +488 -0
  315. package/build/server/products/work/state/workGoldenPathPublish.js.map +1 -0
  316. package/build/server/products/work/state/workGoldenPathRunner.d.ts +121 -0
  317. package/build/server/products/work/state/workGoldenPathRunner.d.ts.map +1 -0
  318. package/build/server/products/work/state/workGoldenPathRunner.js +447 -0
  319. package/build/server/products/work/state/workGoldenPathRunner.js.map +1 -0
  320. package/build/server/products/work/state/workGoldenPathRuntimeExecutor.d.ts +74 -0
  321. package/build/server/products/work/state/workGoldenPathRuntimeExecutor.d.ts.map +1 -0
  322. package/build/server/products/work/state/workGoldenPathRuntimeExecutor.js +239 -0
  323. package/build/server/products/work/state/workGoldenPathRuntimeExecutor.js.map +1 -0
  324. package/build/server/products/work/state/workGoldenPathService.d.ts +152 -0
  325. package/build/server/products/work/state/workGoldenPathService.d.ts.map +1 -0
  326. package/build/server/products/work/state/workGoldenPathService.js +1057 -0
  327. package/build/server/products/work/state/workGoldenPathService.js.map +1 -0
  328. package/build/server/products/work/state/workGoldenPathTelegramPort.d.ts +87 -0
  329. package/build/server/products/work/state/workGoldenPathTelegramPort.d.ts.map +1 -0
  330. package/build/server/products/work/state/workGoldenPathTelegramPort.js +220 -0
  331. package/build/server/products/work/state/workGoldenPathTelegramPort.js.map +1 -0
  332. package/build/server/runtime/client.d.ts +13 -0
  333. package/build/server/runtime/client.d.ts.map +1 -1
  334. package/build/server/runtime/client.js +39 -0
  335. package/build/server/runtime/client.js.map +1 -1
  336. package/build/server/runtime/setup.d.ts +10 -4
  337. package/build/server/runtime/setup.d.ts.map +1 -1
  338. package/build/server/runtime/setup.js +14 -18
  339. package/build/server/runtime/setup.js.map +1 -1
  340. package/build/server/runtime/usageSnapshot.d.ts +3 -0
  341. package/build/server/runtime/usageSnapshot.d.ts.map +1 -0
  342. package/build/server/runtime/usageSnapshot.js +69 -0
  343. package/build/server/runtime/usageSnapshot.js.map +1 -0
  344. package/build/server/server/routes/providerCapabilityBootstrap.d.ts +69 -0
  345. package/build/server/server/routes/providerCapabilityBootstrap.d.ts.map +1 -0
  346. package/build/server/server/routes/providerCapabilityBootstrap.js +165 -0
  347. package/build/server/server/routes/providerCapabilityBootstrap.js.map +1 -0
  348. package/build/server/server/routes/providers.d.ts.map +1 -1
  349. package/build/server/server/routes/providers.js +112 -81
  350. package/build/server/server/routes/providers.js.map +1 -1
  351. package/build/server/server/routes/telegram.d.ts +9 -0
  352. package/build/server/server/routes/telegram.d.ts.map +1 -1
  353. package/build/server/server/routes/telegram.js +79 -72
  354. package/build/server/server/routes/telegram.js.map +1 -1
  355. package/build/server/shared/catsAppManifest.d.ts +3 -1
  356. package/build/server/shared/catsAppManifest.d.ts.map +1 -1
  357. package/build/server/shared/catsAppManifest.js +2 -0
  358. package/build/server/shared/catsAppManifest.js.map +1 -1
  359. package/build/server/shared/executionLabel.d.ts.map +1 -1
  360. package/build/server/shared/executionLabel.js +8 -1
  361. package/build/server/shared/executionLabel.js.map +1 -1
  362. package/build/server/shared/i18n/catalogs/en.d.ts.map +1 -1
  363. package/build/server/shared/i18n/catalogs/en.js +198 -3
  364. package/build/server/shared/i18n/catalogs/en.js.map +1 -1
  365. package/build/server/shared/i18n/catalogs/zh-TW.d.ts.map +1 -1
  366. package/build/server/shared/i18n/catalogs/zh-TW.js +197 -3
  367. package/build/server/shared/i18n/catalogs/zh-TW.js.map +1 -1
  368. package/build/server/shared/i18n/index.d.ts +192 -0
  369. package/build/server/shared/i18n/index.d.ts.map +1 -1
  370. package/build/server/shared/i18n/messageKeys.d.ts +192 -0
  371. package/build/server/shared/i18n/messageKeys.d.ts.map +1 -1
  372. package/build/server/shared/i18n/messageKeys.js +192 -0
  373. package/build/server/shared/i18n/messageKeys.js.map +1 -1
  374. package/build/server/shared/platformSetupOperation.d.ts +2 -0
  375. package/build/server/shared/platformSetupOperation.d.ts.map +1 -0
  376. package/build/server/shared/platformSetupOperation.js +9 -0
  377. package/build/server/shared/platformSetupOperation.js.map +1 -0
  378. package/build/server/shared/providerCatalog.d.ts +5 -2
  379. package/build/server/shared/providerCatalog.d.ts.map +1 -1
  380. package/build/server/shared/providerCatalog.js +6 -0
  381. package/build/server/shared/providerCatalog.js.map +1 -1
  382. package/build/server/shared/providerCatalogData.d.ts +28 -22
  383. package/build/server/shared/providerCatalogData.d.ts.map +1 -1
  384. package/build/server/shared/providerCatalogData.js +22 -10
  385. package/build/server/shared/providerCatalogData.js.map +1 -1
  386. package/build/server/shared/providerCatalogInstances.d.ts.map +1 -1
  387. package/build/server/shared/providerCatalogInstances.js +3 -0
  388. package/build/server/shared/providerCatalogInstances.js.map +1 -1
  389. package/build/server/shared/providerModelLabelRegistry.d.ts +29 -0
  390. package/build/server/shared/providerModelLabelRegistry.d.ts.map +1 -0
  391. package/build/server/shared/providerModelLabelRegistry.js +49 -0
  392. package/build/server/shared/providerModelLabelRegistry.js.map +1 -0
  393. package/build/server/shared/providerSelection.d.ts.map +1 -1
  394. package/build/server/shared/providerSelection.js +10 -13
  395. package/build/server/shared/providerSelection.js.map +1 -1
  396. package/build/server/shared/runtimeSetup.d.ts +17 -4
  397. package/build/server/shared/runtimeSetup.d.ts.map +1 -1
  398. package/build/server/shared/runtimeStatusPresentation.js +1 -1
  399. package/build/server/shared/runtimeStatusPresentation.js.map +1 -1
  400. package/package.json +23 -1
  401. package/packages/app-sdk/browser.d.ts +51 -0
  402. package/packages/app-sdk/browser.js +48 -0
  403. package/packages/app-sdk/package.d.ts +14 -0
  404. package/packages/app-sdk/package.js +131 -0
  405. package/packages/app-sdk/package.json +7 -0
  406. package/scripts/README.md +43 -26
  407. package/scripts/build-desktop-installer.mjs +15 -0
  408. package/scripts/build-test-ui.mjs +1 -1
  409. package/scripts/bundle-server.mjs +23 -10
  410. package/scripts/linux/build-desktop-package.sh +6 -6
  411. package/scripts/linux/install-antigravity.sh +0 -0
  412. package/scripts/linux/install-devin.sh +0 -0
  413. package/scripts/linux/install-meta-cli.sh +8 -0
  414. package/scripts/linux/provider-cli-common.sh +103 -30
  415. package/scripts/linux/sync-agent-skills.sh +27 -5
  416. package/scripts/linux/test-linux-package-smoke.sh +4 -3
  417. package/scripts/linux/upgrade-cli-tools.sh +1 -1
  418. package/scripts/macos/build-desktop-package.sh +5 -5
  419. package/scripts/macos/install-antigravity.sh +0 -0
  420. package/scripts/macos/install-devin.sh +0 -0
  421. package/scripts/macos/install-meta-cli.sh +8 -0
  422. package/scripts/macos/provider-cli-common.sh +103 -30
  423. package/scripts/macos/sync-agent-skills.sh +27 -5
  424. package/scripts/macos/test-macos-package-smoke.sh +4 -3
  425. package/scripts/macos/upgrade-cli-tools.sh +1 -1
  426. package/scripts/package-desktop.mjs +15 -2
  427. package/scripts/testing/check-usage-app.mts +266 -0
  428. package/scripts/testing/usage-app-smoke-electron.cjs +10 -0
  429. package/scripts/testing/usage-app-smoke-renderer.tsx +8 -0
  430. package/scripts/verify-desktop-app-bundle.mjs +108 -0
  431. package/scripts/windows/Build-DesktopPackage.ps1 +9 -6
  432. package/scripts/windows/{Install-Aider.ps1 → Install-MetaCli.ps1} +180 -92
  433. package/scripts/windows/Install-Ollama.ps1 +4 -1
  434. package/scripts/windows/Sync-AgentSkills.ps1 +29 -6
  435. package/scripts/windows/Test-WindowsInstallerSmoke.ps1 +2 -1
  436. package/build/desktop/updateNotifications.d.ts +0 -64
  437. package/build/desktop/updateNotifications.d.ts.map +0 -1
  438. package/build/desktop/updateNotifications.js +0 -143
  439. package/build/desktop/updateNotifications.js.map +0 -1
  440. package/build/renderer/assets/App-BfOvMP2m.js +0 -1
  441. package/build/renderer/assets/App-DGwkRFZl.css +0 -1
  442. package/build/renderer/assets/App-DWd7I3Z2.js +0 -2
  443. package/build/renderer/assets/WorkspaceAppRoutes-CrbTA9En.js +0 -1
  444. package/build/renderer/assets/app-BTww3Hl4.js +0 -43
  445. package/build/renderer/assets/app-CPxWQwLA.css +0 -1
  446. package/build/renderer/assets/conversationSidebarRecentEntries-QuaOPxCb.js +0 -6
  447. package/scripts/linux/install-aider.sh +0 -8
  448. package/scripts/macos/install-aider.sh +0 -8
@@ -0,0 +1,447 @@
1
+ /**
2
+ * The supervised-run driver for the golden path (SPEC-114 FR-28..FR-31,
3
+ * PLAN-105 Phase 4).
4
+ *
5
+ * Before this module the run loop stopped after one provider response: the Run
6
+ * was marked `running`, a handoff decision was recorded, and nothing consumed
7
+ * it. That is the seam this closes.
8
+ *
9
+ * The controlling rule is FR-30. A provider step returning successfully is
10
+ * evidence that a *step* returned, never that the goal was met, so the provider
11
+ * is never allowed to declare completion. After every step Cats re-evaluates
12
+ * the acceptance criteria itself and either continues with the gaps as the next
13
+ * instruction, or accepts terminal evidence. That inversion is what stops
14
+ * "I have finished the task." from ending a run.
15
+ */
16
+ import { appendCoreActivity, upsertCoreCheckpoint, upsertCoreRun, } from '../../../core/model/index.js';
17
+ import { messageKeys } from '../../../shared/i18n/index.js';
18
+ import { evaluateWorkCompletionEvidence, } from './workCompletionEvidence.js';
19
+ import { readWorkGoldenPathMetadata } from '../shared/workGoldenPathMetadata.js';
20
+ import { applyWorkGoldenPathLifecycleAction } from './workGoldenPathLifecycle.js';
21
+ import { readWorkGoldenPathExecutionSnapshot } from './workGoldenPathAdmission.js';
22
+ /** Default step ceiling. Bounded so a looping agent cannot run forever. */
23
+ const DEFAULT_MAX_STEPS = 6;
24
+ /** Default wall-clock ceiling for one step. */
25
+ const DEFAULT_STEP_TIMEOUT_MS = 10 * 60 * 1000;
26
+ /** Sentinel resolved by the deadline race; never produced by an executor. */
27
+ const STEP_TIMED_OUT = Symbol('work-golden-path-step-timeout');
28
+ /** Where a refusal is recorded on the Run, for the Desktop read model. */
29
+ export const WORK_GOLDEN_PATH_DENIAL_METADATA_KEY = 'workGoldenPathDenial';
30
+ const TERMINAL_RUN_STATUSES = new Set([
31
+ 'completed',
32
+ 'failed',
33
+ 'cancelled',
34
+ ]);
35
+ export function createWorkGoldenPathRunner(options) {
36
+ const now = options.now ?? (() => new Date());
37
+ const maxSteps = options.maxSteps ?? DEFAULT_MAX_STEPS;
38
+ const stepTimeoutMs = options.stepTimeoutMs ?? DEFAULT_STEP_TIMEOUT_MS;
39
+ const { coreStore, service, executeStep } = options;
40
+ const inFlight = new Map();
41
+ /**
42
+ * Runs one step against a deadline.
43
+ *
44
+ * The timer is cleared on the normal path so a finished run does not hold the
45
+ * event loop open for the remainder of its budget.
46
+ */
47
+ async function executeStepWithDeadline(context) {
48
+ let timer;
49
+ try {
50
+ return await Promise.race([
51
+ executeStep(context),
52
+ new Promise((resolve) => {
53
+ timer = setTimeout(() => resolve(STEP_TIMED_OUT), stepTimeoutMs);
54
+ }),
55
+ ]);
56
+ }
57
+ finally {
58
+ if (timer !== undefined) {
59
+ clearTimeout(timer);
60
+ }
61
+ }
62
+ }
63
+ async function readRun(runId) {
64
+ const core = await coreStore.readCore();
65
+ return core.runs.find((candidate) => candidate.id === runId) ?? null;
66
+ }
67
+ /**
68
+ * Writes a run status unless the run already reached a terminal state.
69
+ *
70
+ * A late runtime event must never resurrect a cancelled or failed run
71
+ * (SPEC-114 FR-29, PLAN-105 Phase 4), and a cancellation that lands mid-step
72
+ * must win over the step that was already in flight.
73
+ */
74
+ async function writeNonTerminalStatus(input) {
75
+ let applied = false;
76
+ let resolved = null;
77
+ await coreStore.updateCore((core) => {
78
+ const run = core.runs.find((candidate) => candidate.id === input.runId);
79
+ if (!run) {
80
+ return core;
81
+ }
82
+ resolved = run;
83
+ if (TERMINAL_RUN_STATUSES.has(run.status)) {
84
+ return core;
85
+ }
86
+ const write = upsertCoreRun(core, {
87
+ id: run.id,
88
+ title: run.title,
89
+ status: input.status,
90
+ conversationId: run.conversationId,
91
+ taskId: run.taskId,
92
+ orchestratorActorId: run.orchestratorActorId,
93
+ summary: input.summary,
94
+ startedAt: run.startedAt ?? (input.status === 'running' ? now().toISOString() : null),
95
+ completedAt: TERMINAL_RUN_STATUSES.has(input.status)
96
+ ? now().toISOString()
97
+ : run.completedAt,
98
+ metadata: run.metadata,
99
+ }, now());
100
+ applied = true;
101
+ resolved = write.run;
102
+ return write.core;
103
+ });
104
+ return { applied, run: resolved };
105
+ }
106
+ /**
107
+ * Records a checkpoint with a structured continuation reason.
108
+ *
109
+ * Structured on purpose: PLAN-105 Phase 4 requires that recovery never has to
110
+ * re-read a raw transcript to work out where a run got to.
111
+ */
112
+ async function recordCheckpoint(input) {
113
+ await coreStore.updateCore((core) => upsertCoreCheckpoint(core, {
114
+ id: `checkpoint-wgp-${input.run.id}-${input.stepIndex}`,
115
+ label: `Supervised step ${input.stepIndex + 1}`,
116
+ status: 'completed',
117
+ conversationId: input.run.conversationId,
118
+ runId: input.run.id,
119
+ taskId: input.run.taskId,
120
+ summary: input.summary,
121
+ completedAt: now().toISOString(),
122
+ metadata: {
123
+ workGoldenPath: {
124
+ schemaVersion: 1,
125
+ stepIndex: input.stepIndex,
126
+ continuationReason: input.gaps.length > 0 ? 'acceptance_gaps' : 'agent_continued',
127
+ gaps: [...input.gaps],
128
+ outstandingCriteria: [...input.outstandingCriteria],
129
+ },
130
+ },
131
+ }, now()).core);
132
+ }
133
+ /**
134
+ * Records the refusal on the Run so Desktop can show exactly what to grant.
135
+ */
136
+ async function recordPermissionDenial(input) {
137
+ await coreStore.updateCore((core) => {
138
+ const run = core.runs.find((candidate) => candidate.id === input.run.id);
139
+ if (!run) {
140
+ return core;
141
+ }
142
+ const stamped = upsertCoreRun(core, {
143
+ ...run,
144
+ metadata: {
145
+ ...run.metadata,
146
+ [WORK_GOLDEN_PATH_DENIAL_METADATA_KEY]: {
147
+ schemaVersion: 1,
148
+ toolName: input.denial.toolName,
149
+ code: input.denial.code,
150
+ deniedAt: now().toISOString(),
151
+ },
152
+ },
153
+ }, now());
154
+ return appendCoreActivity(stamped.core, {
155
+ id: `activity-wgp-denied-${run.id}`,
156
+ kind: 'status_change',
157
+ actorId: run.orchestratorActorId,
158
+ workItemId: input.workItemId,
159
+ conversationId: run.conversationId,
160
+ taskId: run.taskId,
161
+ runId: run.id,
162
+ message: `Supervision refused ${input.denial.toolName}: ${input.denial.code}.`,
163
+ metadata: {
164
+ [WORK_GOLDEN_PATH_DENIAL_METADATA_KEY]: {
165
+ schemaVersion: 1,
166
+ toolName: input.denial.toolName,
167
+ code: input.denial.code,
168
+ },
169
+ },
170
+ }, now()).core;
171
+ });
172
+ }
173
+ async function recordTerminalActivity(input) {
174
+ await coreStore.updateCore((core) => appendCoreActivity(core, {
175
+ id: `activity-wgp-terminal-${input.run.id}`,
176
+ kind: 'status_change',
177
+ actorId: input.run.orchestratorActorId,
178
+ workItemId: input.workItemId,
179
+ conversationId: input.run.conversationId,
180
+ taskId: input.run.taskId,
181
+ runId: input.run.id,
182
+ message: input.message,
183
+ metadata: { workGoldenPath: { schemaVersion: 1, reason: input.reason } },
184
+ }, now()).core);
185
+ }
186
+ return {
187
+ drive({ runId }) {
188
+ const existing = inFlight.get(runId);
189
+ if (existing !== undefined) {
190
+ return existing;
191
+ }
192
+ const started = driveOnce(runId).finally(() => {
193
+ inFlight.delete(runId);
194
+ });
195
+ inFlight.set(runId, started);
196
+ return started;
197
+ },
198
+ };
199
+ async function driveOnce(runId) {
200
+ const core = await coreStore.readCore();
201
+ const run = core.runs.find((candidate) => candidate.id === runId) ?? null;
202
+ if (run === null) {
203
+ return {
204
+ status: 'not_runnable',
205
+ steps: 0,
206
+ evidence: null,
207
+ stage: null,
208
+ reason: `No Run found for id ${runId}.`,
209
+ };
210
+ }
211
+ if (TERMINAL_RUN_STATUSES.has(run.status)) {
212
+ return {
213
+ status: 'not_runnable',
214
+ steps: 0,
215
+ evidence: null,
216
+ stage: null,
217
+ reason: `Run ${runId} is already ${run.status}.`,
218
+ };
219
+ }
220
+ const workItem = core.workItems.find((candidate) => candidate.taskId === run.taskId)
221
+ ?? null;
222
+ const proposal = workItem
223
+ ? readWorkGoldenPathMetadata(workItem.metadata)?.proposal ?? null
224
+ : null;
225
+ if (workItem === null || proposal === null) {
226
+ return {
227
+ status: 'not_runnable',
228
+ steps: 0,
229
+ evidence: null,
230
+ stage: null,
231
+ reason: `Run ${runId} is not a golden-path run.`,
232
+ };
233
+ }
234
+ const execution = readWorkGoldenPathExecutionSnapshot(run.metadata);
235
+ await service.markRunStatus({
236
+ workItemId: workItem.id,
237
+ runId,
238
+ status: 'running',
239
+ stageKey: messageKeys.workDeliveryStageRunning,
240
+ milestoneKey: messageKeys.workDeliveryMilestoneAdmitted,
241
+ });
242
+ const accumulated = {
243
+ satisfiedCriteria: new Set(),
244
+ artifact: null,
245
+ commit: null,
246
+ summary: '',
247
+ };
248
+ let evidence = evaluateWorkCompletionEvidence({
249
+ deliveryMode: proposal.deliveryMode,
250
+ acceptanceCriteria: proposal.acceptanceCriteria,
251
+ satisfiedCriteria: [],
252
+ outcomeStatus: 'succeeded',
253
+ artifacts: [],
254
+ commit: null,
255
+ });
256
+ let steps = 0;
257
+ for (let stepIndex = 0; stepIndex < maxSteps; stepIndex += 1) {
258
+ // Re-read before each step so an owner cancellation that landed while
259
+ // the previous step was in flight stops the loop immediately.
260
+ const current = await readRun(runId);
261
+ if (current === null || TERMINAL_RUN_STATUSES.has(current.status)) {
262
+ return {
263
+ status: current?.status === 'cancelled' ? 'cancelled' : 'not_runnable',
264
+ steps,
265
+ evidence,
266
+ stage: (await service.describeStage(workItem.id))?.stage ?? null,
267
+ reason: `Run stopped at ${current?.status ?? 'missing'}.`,
268
+ };
269
+ }
270
+ const stepOrTimeout = await executeStepWithDeadline({
271
+ runId,
272
+ taskId: run.taskId,
273
+ workItemId: workItem.id,
274
+ stepIndex,
275
+ goal: proposal.goal,
276
+ acceptanceCriteria: proposal.acceptanceCriteria,
277
+ deliveryMode: proposal.deliveryMode,
278
+ workspacePath: proposal.workspacePath,
279
+ executionTarget: execution.executionTarget,
280
+ toolScope: execution.toolScope,
281
+ workspaceHeadOid: execution.workspaceHeadOid,
282
+ outstandingGaps: evidence.gaps,
283
+ outstandingCriteria: evidence.unmetCriteria,
284
+ });
285
+ steps = stepIndex + 1;
286
+ if (stepOrTimeout === STEP_TIMED_OUT) {
287
+ await applyWorkGoldenPathLifecycleAction(coreStore, {
288
+ workItemId: workItem.id,
289
+ action: 'timeout',
290
+ actorRef: run.orchestratorActorId ?? 'actor-work-golden-path',
291
+ detail: `step ${stepIndex + 1} exceeded ${stepTimeoutMs}ms`,
292
+ }, now);
293
+ await service.notifyDecisionNeeded({
294
+ workItemId: workItem.id,
295
+ runId,
296
+ reasonKey: messageKeys.workDeliveryTimeoutReason,
297
+ consequenceKey: messageKeys.workDeliveryTimeoutConsequence,
298
+ discriminator: `timeout:${stepIndex}`,
299
+ });
300
+ return {
301
+ status: 'timed_out',
302
+ steps,
303
+ evidence,
304
+ stage: (await service.describeStage(workItem.id))?.stage ?? null,
305
+ reason: `Step ${stepIndex + 1} exceeded its ${stepTimeoutMs}ms budget.`,
306
+ };
307
+ }
308
+ const step = stepOrTimeout;
309
+ for (const criterion of step.satisfiedCriteria) {
310
+ accumulated.satisfiedCriteria.add(criterion);
311
+ }
312
+ accumulated.artifact = step.artifact ?? accumulated.artifact;
313
+ accumulated.commit = step.commit ?? accumulated.commit;
314
+ accumulated.summary = step.summary || accumulated.summary;
315
+ if (step.status === 'failed') {
316
+ await writeNonTerminalStatus({
317
+ runId,
318
+ status: 'failed',
319
+ summary: step.blockedReason ?? 'Supervised step failed.',
320
+ });
321
+ await recordTerminalActivity({
322
+ run,
323
+ workItemId: workItem.id,
324
+ message: `Supervised run failed: ${step.blockedReason ?? step.summary}`,
325
+ reason: 'step_failed',
326
+ });
327
+ return {
328
+ status: 'failed',
329
+ steps,
330
+ evidence,
331
+ stage: (await service.describeStage(workItem.id))?.stage ?? null,
332
+ reason: step.blockedReason ?? step.summary,
333
+ };
334
+ }
335
+ if (step.status === 'permission_denied') {
336
+ // Not a failure of the work, and not something a retry can fix on its
337
+ // own: the envelope has to change first, so the Run waits for the owner
338
+ // with the refused tool named.
339
+ const denial = step.denial ?? { toolName: 'unknown', code: 'E_TOOL_SCOPE_DENIED' };
340
+ await writeNonTerminalStatus({
341
+ runId,
342
+ status: 'blocked',
343
+ summary: `Permission denied for ${denial.toolName} (${denial.code}).`,
344
+ });
345
+ await recordPermissionDenial({ run, workItemId: workItem.id, denial });
346
+ await service.notifyDecisionNeeded({
347
+ workItemId: workItem.id,
348
+ runId,
349
+ reasonKey: messageKeys.workDeliveryPermissionDeniedReason,
350
+ consequenceKey: messageKeys.workDeliveryPermissionDeniedConsequence,
351
+ reasonValues: { tool: denial.toolName, code: denial.code },
352
+ discriminator: `permission:${denial.code}:${denial.toolName}`,
353
+ });
354
+ return {
355
+ status: 'permission_denied',
356
+ steps,
357
+ evidence,
358
+ stage: (await service.describeStage(workItem.id))?.stage ?? null,
359
+ reason: `${denial.toolName} was refused with ${denial.code}.`,
360
+ };
361
+ }
362
+ if (step.status === 'blocked') {
363
+ await writeNonTerminalStatus({
364
+ runId,
365
+ status: 'blocked',
366
+ summary: step.blockedReason ?? 'Supervised step needs an owner decision.',
367
+ });
368
+ return {
369
+ status: 'blocked',
370
+ steps,
371
+ evidence,
372
+ stage: (await service.describeStage(workItem.id))?.stage ?? null,
373
+ reason: step.blockedReason ?? step.summary,
374
+ };
375
+ }
376
+ // FR-30: evaluate before believing anything. The provider's own claim
377
+ // only decides whether it is *worth* evaluating now.
378
+ evidence = evaluateWorkCompletionEvidence({
379
+ deliveryMode: proposal.deliveryMode,
380
+ acceptanceCriteria: proposal.acceptanceCriteria,
381
+ satisfiedCriteria: [...accumulated.satisfiedCriteria],
382
+ outcomeStatus: 'succeeded',
383
+ artifacts: accumulated.artifact === null
384
+ ? []
385
+ : [{
386
+ id: `artifact-wgp-${runId}`,
387
+ title: accumulated.artifact.title,
388
+ kind: 'document',
389
+ status: 'ready',
390
+ projectId: workItem.projectId,
391
+ workItemId: workItem.id,
392
+ conversationId: workItem.conversationId,
393
+ taskId: workItem.taskId,
394
+ runId,
395
+ path: accumulated.artifact.path,
396
+ mimeType: accumulated.artifact.mimeType,
397
+ sizeBytes: null,
398
+ summary: accumulated.summary,
399
+ createdAt: now().toISOString(),
400
+ updatedAt: now().toISOString(),
401
+ metadata: {},
402
+ }],
403
+ commit: accumulated.commit,
404
+ });
405
+ const lastStep = stepIndex === maxSteps - 1;
406
+ if (!evidence.accepted && !lastStep) {
407
+ await recordCheckpoint({
408
+ run,
409
+ stepIndex,
410
+ gaps: evidence.gaps,
411
+ outstandingCriteria: evidence.unmetCriteria,
412
+ summary: step.summary,
413
+ });
414
+ continue;
415
+ }
416
+ // Either the evidence holds, or the budget is spent and the owner
417
+ // deserves an honest "not done" rather than another silent retry.
418
+ const completion = await service.completeRun({
419
+ workItemId: workItem.id,
420
+ runId,
421
+ satisfiedCriteria: [...accumulated.satisfiedCriteria],
422
+ summary: accumulated.summary || step.summary,
423
+ artifact: accumulated.artifact,
424
+ commit: accumulated.commit,
425
+ });
426
+ return {
427
+ status: completion.status === 'insufficient_evidence' ? 'blocked' : completion.status,
428
+ steps,
429
+ evidence: completion.evidence,
430
+ stage: completion.stage,
431
+ reason: completion.evidence.accepted
432
+ ? null
433
+ : `Acceptance unmet after ${steps} step(s): ${completion.evidence.gaps.join(', ')}.`,
434
+ };
435
+ }
436
+ // Unreachable while maxSteps >= 1; kept so a zero budget fails loudly
437
+ // rather than silently reporting success.
438
+ return {
439
+ status: 'blocked',
440
+ steps,
441
+ evidence,
442
+ stage: (await service.describeStage(workItem.id))?.stage ?? null,
443
+ reason: 'No supervised steps were permitted.',
444
+ };
445
+ }
446
+ }
447
+ //# sourceMappingURL=workGoldenPathRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workGoldenPathRunner.js","sourceRoot":"","sources":["../../../../../src/products/work/state/workGoldenPathRunner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * The runtime-backed step executor for the golden path (SPEC-114 FR-28).
3
+ *
4
+ * Execution goes through one supervised `cats-runtime` session for the whole
5
+ * run: step 0 opens it with the goal and acceptance criteria, and every later
6
+ * step continues the same session with what is still missing. A Telegram
7
+ * handler never starts a provider session itself.
8
+ *
9
+ * The executor deliberately never reports completion. It returns
10
+ * `claims_complete` on every successful turn and lets the runner's evidence
11
+ * check decide, which is what keeps FR-30 true no matter what the model says.
12
+ */
13
+ import type { CoreDeliveryMode } from '../../../core/types.js';
14
+ import type { RuntimeClient } from '../../../platform/runtime/client.js';
15
+ import type { SupervisionToolScope } from '../../../platform/supervision/contracts.js';
16
+ import type { WorkCommitEvidence } from './workCompletionEvidence.js';
17
+ import type { WorkGoldenPathArtifactEvidence, WorkGoldenPathStepContext, WorkGoldenPathStepExecutor } from './workGoldenPathRunner.js';
18
+ /**
19
+ * Turns a finished turn into acceptance evidence.
20
+ *
21
+ * This is the seam the runtime delivery wiring plugs into: `commit_only` needs
22
+ * an immutable commit id from `POST /delivery/repo/commit`, and `artifact_only`
23
+ * needs a materialized Artifact. Until that is wired the default collector
24
+ * returns nothing, and a run honestly reports unmet acceptance rather than
25
+ * completing on the strength of a model's own summary.
26
+ */
27
+ export type WorkGoldenPathEvidenceCollector = (input: {
28
+ runId: string;
29
+ sessionId: string;
30
+ goal: string;
31
+ deliveryMode: CoreDeliveryMode;
32
+ workspacePath: string | null;
33
+ /** Resolved cwd of the runtime-owned sandbox/worktree. */
34
+ deliveryWorkspacePath?: string | null;
35
+ /** HEAD captured at admission, before this run was allowed to mutate files. */
36
+ baselineHeadOid: string | null;
37
+ acceptanceCriteria: readonly string[];
38
+ /** Criteria the provider asserted in this turn. Claims, not verdicts. */
39
+ claimedCriteria: readonly string[];
40
+ }) => Promise<{
41
+ satisfiedCriteria: readonly string[];
42
+ artifact: WorkGoldenPathArtifactEvidence | null;
43
+ commit: WorkCommitEvidence | null;
44
+ }>;
45
+ export declare const noEvidenceCollector: WorkGoldenPathEvidenceCollector;
46
+ export interface WorkGoldenPathRuntimeTarget {
47
+ provider: string;
48
+ instance?: string | null;
49
+ model?: string | null;
50
+ }
51
+ export interface CreateWorkGoldenPathRuntimeExecutorInput {
52
+ runtimeClient: RuntimeClient;
53
+ /**
54
+ * The permission envelope this run may execute under.
55
+ *
56
+ * Resolved late, like the target. Passing it is what allows the supervision
57
+ * boundary to refuse an under-permissioned run with `E_TOOL_SCOPE_DENIED`
58
+ * rather than letting it reach the provider and fail somewhere less legible.
59
+ */
60
+ resolveToolScope?: (context: WorkGoldenPathStepContext) => SupervisionToolScope;
61
+ /**
62
+ * Resolved when a session is opened, not when the executor is built.
63
+ *
64
+ * The executor must be constructed once per host so its session map survives
65
+ * across steps, but the bound Cat's provider can change between runs, so the
66
+ * target has to be read late.
67
+ */
68
+ resolveTarget?: (context: WorkGoldenPathStepContext) => WorkGoldenPathRuntimeTarget | null;
69
+ collectEvidence?: WorkGoldenPathEvidenceCollector;
70
+ /** Actor the supervised runtime calls are attributed to. */
71
+ actorRef?: string;
72
+ }
73
+ export declare function createWorkGoldenPathRuntimeExecutor(input: CreateWorkGoldenPathRuntimeExecutorInput): WorkGoldenPathStepExecutor;
74
+ //# sourceMappingURL=workGoldenPathRuntimeExecutor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workGoldenPathRuntimeExecutor.d.ts","sourceRoot":"","sources":["../../../../../src/products/work/state/workGoldenPathRuntimeExecutor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EACV,aAAa,EAEd,MAAM,qCAAqC,CAAC;AAQ7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,EACV,8BAA8B,EAC9B,yBAAyB,EACzB,0BAA0B,EAE3B,MAAM,2BAA2B,CAAC;AAGnC;;;;;;;;GAQG;AACH,MAAM,MAAM,+BAA+B,GAAG,CAAC,KAAK,EAAE;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,gBAAgB,CAAC;IAC/B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,0DAA0D;IAC1D,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,+EAA+E;IAC/E,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,yEAAyE;IACzE,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,KAAK,OAAO,CAAC;IACZ,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,EAAE,8BAA8B,GAAG,IAAI,CAAC;IAChD,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACnC,CAAC,CAAC;AAEH,eAAO,MAAM,mBAAmB,EAAE,+BAIhC,CAAC;AAEH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,wCAAwC;IACvD,aAAa,EAAE,aAAa,CAAC;IAC7B;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,yBAAyB,KAAK,oBAAoB,CAAC;IAChF;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,yBAAyB,KAAK,2BAA2B,GAAG,IAAI,CAAC;IAC3F,eAAe,CAAC,EAAE,+BAA+B,CAAC;IAClD,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAkGD,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,wCAAwC,GAC9C,0BAA0B,CA2I5B"}