@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,161 @@
1
+ /**
2
+ * Acceptance-evidence collection for the golden path (SPEC-114 FR-31, FR-39).
3
+ *
4
+ * This is where a model's account of its own work stops mattering. Everything
5
+ * returned here is something Cats caused and observed through the runtime
6
+ * delivery API: a commit that actually landed, a worktree that is actually
7
+ * clean afterwards, artifacts the session actually registered.
8
+ *
9
+ * The one thing Cats cannot verify mechanically is a free-text acceptance
10
+ * criterion. Those stay *claims*, carried separately, so the result message can
11
+ * show what was verified and what was merely asserted.
12
+ */
13
+ /**
14
+ * The post-commit check Cats performs itself.
15
+ *
16
+ * Named for exactly what it verifies. It proves the commit captured the work
17
+ * and left nothing behind; it does not claim the change is *correct*, and the
18
+ * label must not imply otherwise.
19
+ */
20
+ const POST_COMMIT_CHECK = 'runtime repo status: worktree clean at the new HEAD';
21
+ function buildCommitMessage(context) {
22
+ // Conventional Commits, per the repository convention. Bounded so a long goal
23
+ // cannot produce an unreadable subject line.
24
+ const subject = context.goal.trim().replace(/\s+/gu, ' ').slice(0, 68);
25
+ return `feat: ${subject}`;
26
+ }
27
+ function hasPendingChanges(snapshot) {
28
+ if (snapshot.clean === false) {
29
+ return true;
30
+ }
31
+ return snapshot.stagedCount + snapshot.modifiedCount + snapshot.untrackedCount > 0;
32
+ }
33
+ /**
34
+ * Collects evidence for every repository-backed delivery mode.
35
+ *
36
+ * Returns nothing when the agent has not changed anything, which is what makes
37
+ * an idle run loop and then fail honestly instead of committing an empty tree
38
+ * and calling it delivery.
39
+ */
40
+ async function collectCommitEvidence(input) {
41
+ const before = await input.deliveryClient.inspectRepo({
42
+ sessionId: input.sessionId,
43
+ });
44
+ if (!before.supported || !before.repository) {
45
+ return null;
46
+ }
47
+ // A different HEAD means something else changed the repository after the
48
+ // owner admitted this run. Refuse to commit across that ownership boundary.
49
+ if (input.baselineHeadOid !== null && before.headOid !== input.baselineHeadOid) {
50
+ return null;
51
+ }
52
+ // This is the runtime-managed isolated worktree created for the run, so every
53
+ // change since the clean baseline belongs to this execution.
54
+ if (!hasPendingChanges(before)) {
55
+ return null;
56
+ }
57
+ const changeSummary = [
58
+ `${before.stagedCount} staged`,
59
+ `${before.modifiedCount} modified`,
60
+ `${before.untrackedCount} untracked`,
61
+ ].join(', ');
62
+ const commit = await input.deliveryClient.createCommit({
63
+ sessionId: input.sessionId,
64
+ message: buildCommitMessage({ goal: input.goal }),
65
+ });
66
+ if (commit.state !== 'completed' || commit.commitId === null) {
67
+ return null;
68
+ }
69
+ // Verify the post-condition rather than trusting the commit response: the
70
+ // worktree must be clean and HEAD must have moved.
71
+ const after = await input.deliveryClient.inspectRepo({
72
+ sessionId: input.sessionId,
73
+ });
74
+ const landed = !hasPendingChanges(after) && after.headOid !== before.headOid;
75
+ return {
76
+ commitId: commit.commitId,
77
+ changeSummary,
78
+ validation: { command: POST_COMMIT_CHECK, passed: landed },
79
+ deliveryWorkspacePath: input.deliveryWorkspacePath,
80
+ deliverySessionId: input.sessionId,
81
+ };
82
+ }
83
+ async function collectArtifactEvidence(input) {
84
+ const artifacts = await input.deliveryClient.previewArtifacts({
85
+ sessionId: input.sessionId,
86
+ });
87
+ const first = artifacts[0];
88
+ if (first === undefined) {
89
+ return null;
90
+ }
91
+ return {
92
+ title: first.label ?? first.id,
93
+ path: first.path,
94
+ mimeType: first.mediaType,
95
+ deliveryWorkspacePath: input.deliveryWorkspacePath,
96
+ deliverySessionId: input.sessionId,
97
+ };
98
+ }
99
+ /**
100
+ * The evidence collector the runtime executor plugs into.
101
+ *
102
+ * A collection failure is deliberately swallowed into "no evidence": the run
103
+ * then continues or ends unmet, which is safer than treating an unreachable
104
+ * delivery endpoint as proof of delivery.
105
+ */
106
+ export function createRuntimeEvidenceCollector(input) {
107
+ return async ({ sessionId, goal, deliveryMode, workspacePath, deliveryWorkspacePath, acceptanceCriteria, claimedCriteria, baselineHeadOid, }) => {
108
+ // Only criteria the proposal actually stated can be claimed; an agent
109
+ // cannot invent a criterion and then satisfy it.
110
+ const satisfiedCriteria = acceptanceCriteria.filter((criterion) => claimedCriteria.some((entry) => entry.trim().toLowerCase() === criterion.trim().toLowerCase()));
111
+ try {
112
+ if (deliveryMode !== 'artifact_only') {
113
+ if (workspacePath === null) {
114
+ return { satisfiedCriteria, artifact: null, commit: null };
115
+ }
116
+ return {
117
+ satisfiedCriteria,
118
+ artifact: null,
119
+ commit: await collectCommitEvidence({
120
+ deliveryClient: input.deliveryClient,
121
+ workspacePath,
122
+ sessionId,
123
+ goal,
124
+ baselineHeadOid,
125
+ deliveryWorkspacePath: deliveryWorkspacePath ?? workspacePath,
126
+ }),
127
+ };
128
+ }
129
+ return {
130
+ satisfiedCriteria,
131
+ artifact: await collectArtifactEvidence({
132
+ deliveryClient: input.deliveryClient,
133
+ workspacePath,
134
+ sessionId,
135
+ deliveryWorkspacePath: deliveryWorkspacePath ?? workspacePath,
136
+ }),
137
+ commit: null,
138
+ };
139
+ }
140
+ catch {
141
+ return { satisfiedCriteria, artifact: null, commit: null };
142
+ }
143
+ };
144
+ }
145
+ /**
146
+ * Parses the bounded claim lines the opening instruction asks for.
147
+ *
148
+ * Deliberately strict: an unparsed response yields no claims, so a run
149
+ * continues rather than completing on prose that merely sounds finished.
150
+ */
151
+ export function parseClaimedCriteria(responseText) {
152
+ const claims = [];
153
+ for (const line of responseText.split('\n')) {
154
+ const match = /^\s*CRITERIA-MET:\s*(.+?)\s*$/u.exec(line);
155
+ if (match) {
156
+ claims.push(match[1]);
157
+ }
158
+ }
159
+ return claims;
160
+ }
161
+ //# sourceMappingURL=workGoldenPathDeliveryEvidence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workGoldenPathDeliveryEvidence.js","sourceRoot":"","sources":["../../../../../src/products/work/state/workGoldenPathDeliveryEvidence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Golden-path intake (SPEC-114 FR-7, FR-8, FR-10).
3
+ *
4
+ * `/work <goal>` goes through the existing product-intent capture tool rather
5
+ * than a Telegram-only shortcut, so the golden path inherits its idempotency
6
+ * key and its intake-boundary marker. That marker is what later makes the
7
+ * authorization command provably a *separate* owner event (FR-20, FR-25): the
8
+ * capture records the update ref that produced it, and admission arrives with a
9
+ * different one.
10
+ */
11
+ import type { CoreStore } from '../../../core/store.js';
12
+ import type { CoreWorkItemRecord } from '../../../core/types.js';
13
+ export interface GoldenPathIntakeInput {
14
+ goal: string;
15
+ bindingId: string;
16
+ conversationId: string;
17
+ externalMessageRef: string | null;
18
+ /** Opaque transport update reference; also the intake boundary action id. */
19
+ externalUpdateRef: string;
20
+ }
21
+ export interface GoldenPathIntakeContext {
22
+ actorRef: string;
23
+ }
24
+ export type GoldenPathIntakeResult = {
25
+ status: 'captured';
26
+ workItemId: string;
27
+ workItem: CoreWorkItemRecord;
28
+ created: boolean;
29
+ } | {
30
+ status: 'rejected';
31
+ message: string;
32
+ };
33
+ export declare function captureGoldenPathWorkItem(coreStore: CoreStore, input: GoldenPathIntakeInput, context: GoldenPathIntakeContext, now?: () => Date): Promise<GoldenPathIntakeResult>;
34
+ //# sourceMappingURL=workGoldenPathIntake.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workGoldenPathIntake.d.ts","sourceRoot":"","sources":["../../../../../src/products/work/state/workGoldenPathIntake.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAGjE,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,6EAA6E;IAC7E,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,sBAAsB,GAC9B;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC1F;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5C,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,qBAAqB,EAC5B,OAAO,EAAE,uBAAuB,EAChC,GAAG,GAAE,MAAM,IAAuB,GACjC,OAAO,CAAC,sBAAsB,CAAC,CA6CjC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Golden-path intake (SPEC-114 FR-7, FR-8, FR-10).
3
+ *
4
+ * `/work <goal>` goes through the existing product-intent capture tool rather
5
+ * than a Telegram-only shortcut, so the golden path inherits its idempotency
6
+ * key and its intake-boundary marker. That marker is what later makes the
7
+ * authorization command provably a *separate* owner event (FR-20, FR-25): the
8
+ * capture records the update ref that produced it, and admission arrives with a
9
+ * different one.
10
+ */
11
+ import { createWorkIntakeDelegate } from './workIntakeDelegate.js';
12
+ export async function captureGoldenPathWorkItem(coreStore, input, context, now = () => new Date()) {
13
+ const delegate = createWorkIntakeDelegate({ coreStore, now });
14
+ const captured = await delegate.capture({
15
+ title: input.goal.trim(),
16
+ status: 'planned',
17
+ source: {
18
+ surface: 'telegram',
19
+ conversationId: input.conversationId,
20
+ transportBindingId: input.bindingId,
21
+ sourceMessageId: input.externalMessageRef ?? input.externalUpdateRef,
22
+ sourceText: input.goal.trim(),
23
+ },
24
+ }, {
25
+ actorRef: context.actorRef,
26
+ // Binding the intake boundary to the originating update is what stops the
27
+ // same owner message from both capturing and authorizing work.
28
+ actionId: input.externalUpdateRef,
29
+ });
30
+ if (captured.status !== 'applied') {
31
+ return {
32
+ status: 'rejected',
33
+ message: captured.status === 'rejected'
34
+ ? captured.error.message
35
+ : 'Work capture did not apply.',
36
+ };
37
+ }
38
+ const core = await coreStore.readCore();
39
+ const workItem = core.workItems.find((candidate) => candidate.id === captured.result.workItemId) ?? null;
40
+ if (workItem === null) {
41
+ return { status: 'rejected', message: 'Captured Work Item was not found after write.' };
42
+ }
43
+ return {
44
+ status: 'captured',
45
+ workItemId: workItem.id,
46
+ workItem,
47
+ created: captured.result.created,
48
+ };
49
+ }
50
+ //# sourceMappingURL=workGoldenPathIntake.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workGoldenPathIntake.js","sourceRoot":"","sources":["../../../../../src/products/work/state/workGoldenPathIntake.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAmBnE,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,SAAoB,EACpB,KAA4B,EAC5B,OAAgC,EAChC,MAAkB,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE;IAElC,MAAM,QAAQ,GAAG,wBAAwB,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CACrC;QACE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;QACxB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE;YACN,OAAO,EAAE,UAAU;YACnB,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,kBAAkB,EAAE,KAAK,CAAC,SAAS;YACnC,eAAe,EAAE,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,iBAAiB;YACpE,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;SAC9B;KACF,EACD;QACE,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,0EAA0E;QAC1E,+DAA+D;QAC/D,QAAQ,EAAE,KAAK,CAAC,iBAAiB;KAClC,CACF,CAAC;IAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,QAAQ,CAAC,MAAM,KAAK,UAAU;gBACrC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO;gBACxB,CAAC,CAAC,6BAA6B;SAClC,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAClC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,QAAQ,CAAC,MAAM,CAAC,UAAU,CAC3D,IAAI,IAAI,CAAC;IACV,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,+CAA+C,EAAE,CAAC;IAC1F,CAAC;IAED,OAAO;QACL,MAAM,EAAE,UAAU;QAClB,UAAU,EAAE,QAAQ,CAAC,EAAE;QACvB,QAAQ;QACR,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO;KACjC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Run lifecycle actions for the golden path (SPEC-114 FR-29, FR-35).
3
+ *
4
+ * Timeout, retry, and resume all reduce to one question: may this Run be
5
+ * driven again, and what does the authoritative record say happened? Core's
6
+ * `CoreRunStatus` stays the answer — these transitions move it, record why, and
7
+ * refuse the moves that would resurrect finished work.
8
+ *
9
+ * Retry and resume are deliberately different. Retry says "that attempt did not
10
+ * work, start the loop again" and is only valid from a stuck state. Resume says
11
+ * "nothing is driving this any more" — the usual cause being a host restart
12
+ * while the Run was mid-flight — and is only valid from a live one.
13
+ */
14
+ import type { CoreStore } from '../../../core/store.js';
15
+ import type { CoreRunStatus } from '../../../core/types.js';
16
+ export declare const WORK_GOLDEN_PATH_LIFECYCLE_METADATA_KEY = "workGoldenPathLifecycle";
17
+ export type WorkGoldenPathLifecycleAction = 'retry' | 'resume' | 'timeout';
18
+ export type WorkGoldenPathLifecycleStatus = 'redrivable' | 'recorded' | 'refused';
19
+ export interface WorkGoldenPathLifecycleResult {
20
+ status: WorkGoldenPathLifecycleStatus;
21
+ action: WorkGoldenPathLifecycleAction;
22
+ runId: string | null;
23
+ runStatus: CoreRunStatus | null;
24
+ reason: string | null;
25
+ }
26
+ export interface ApplyWorkGoldenPathLifecycleInput {
27
+ workItemId: string;
28
+ action: WorkGoldenPathLifecycleAction;
29
+ actorRef: string;
30
+ /** Who asked. Absent for `timeout`, which nobody asks for. */
31
+ ownerActorId?: string | null;
32
+ /** Free-text cause, recorded on the Run for `timeout`. */
33
+ detail?: string | null;
34
+ }
35
+ /**
36
+ * Applies one lifecycle action to a golden-path Run.
37
+ *
38
+ * `redrivable` means the caller should start the runner again; `recorded` means
39
+ * the state changed but nothing should be driven (a timeout waits for the
40
+ * owner); `refused` means the action was invalid for the current state and
41
+ * nothing was written.
42
+ */
43
+ export declare function applyWorkGoldenPathLifecycleAction(coreStore: CoreStore, input: ApplyWorkGoldenPathLifecycleInput, now?: () => Date): Promise<WorkGoldenPathLifecycleResult>;
44
+ //# sourceMappingURL=workGoldenPathLifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workGoldenPathLifecycle.d.ts","sourceRoot":"","sources":["../../../../../src/products/work/state/workGoldenPathLifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAG3E,eAAO,MAAM,uCAAuC,4BAA4B,CAAC;AAEjF,MAAM,MAAM,6BAA6B,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE3E,MAAM,MAAM,6BAA6B,GACrC,YAAY,GACZ,UAAU,GACV,SAAS,CAAC;AAEd,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,6BAA6B,CAAC;IACtC,MAAM,EAAE,6BAA6B,CAAC;IACtC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,aAAa,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,iCAAiC;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,6BAA6B,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAoDD;;;;;;;GAOG;AACH,wBAAsB,kCAAkC,CACtD,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,iCAAiC,EACxC,GAAG,GAAE,MAAM,IAAuB,GACjC,OAAO,CAAC,6BAA6B,CAAC,CAkGxC"}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Run lifecycle actions for the golden path (SPEC-114 FR-29, FR-35).
3
+ *
4
+ * Timeout, retry, and resume all reduce to one question: may this Run be
5
+ * driven again, and what does the authoritative record say happened? Core's
6
+ * `CoreRunStatus` stays the answer — these transitions move it, record why, and
7
+ * refuse the moves that would resurrect finished work.
8
+ *
9
+ * Retry and resume are deliberately different. Retry says "that attempt did not
10
+ * work, start the loop again" and is only valid from a stuck state. Resume says
11
+ * "nothing is driving this any more" — the usual cause being a host restart
12
+ * while the Run was mid-flight — and is only valid from a live one.
13
+ */
14
+ import { appendCoreActivity, upsertCoreRun } from '../../../core/model/index.js';
15
+ import { readWorkGoldenPathMetadata } from '../shared/workGoldenPathMetadata.js';
16
+ export const WORK_GOLDEN_PATH_LIFECYCLE_METADATA_KEY = 'workGoldenPathLifecycle';
17
+ /** States a stalled attempt can be retried from. */
18
+ const RETRYABLE = new Set(['blocked', 'failed']);
19
+ /** States that still represent a live attempt, so resume can re-drive them. */
20
+ const RESUMABLE = new Set(['queued', 'running']);
21
+ const TERMINAL = new Set(['completed', 'cancelled']);
22
+ function refused(action, run, reason) {
23
+ return {
24
+ status: 'refused',
25
+ action,
26
+ runId: run?.id ?? null,
27
+ runStatus: run?.status ?? null,
28
+ reason,
29
+ };
30
+ }
31
+ function nextStatusFor(action, current) {
32
+ if (action === 'timeout') {
33
+ return 'blocked';
34
+ }
35
+ // Retry restarts the loop from the queue; resume leaves a live run where it
36
+ // is and simply re-attaches a driver.
37
+ return action === 'retry' ? 'queued' : current;
38
+ }
39
+ function summaryFor(action, detail) {
40
+ switch (action) {
41
+ case 'timeout':
42
+ return detail
43
+ ? `Supervised step timed out: ${detail}`
44
+ : 'Supervised step timed out.';
45
+ case 'retry':
46
+ return 'Owner retried the supervised run.';
47
+ default:
48
+ return 'Supervised run resumed.';
49
+ }
50
+ }
51
+ /**
52
+ * Applies one lifecycle action to a golden-path Run.
53
+ *
54
+ * `redrivable` means the caller should start the runner again; `recorded` means
55
+ * the state changed but nothing should be driven (a timeout waits for the
56
+ * owner); `refused` means the action was invalid for the current state and
57
+ * nothing was written.
58
+ */
59
+ export async function applyWorkGoldenPathLifecycleAction(coreStore, input, now = () => new Date()) {
60
+ const core = await coreStore.readCore();
61
+ const workItem = core.workItems.find((candidate) => candidate.id === input.workItemId)
62
+ ?? null;
63
+ if (workItem === null || readWorkGoldenPathMetadata(workItem.metadata) === null) {
64
+ return refused(input.action, null, 'work_item_not_found');
65
+ }
66
+ const task = workItem.taskId
67
+ ? core.tasks.find((candidate) => candidate.id === workItem.taskId) ?? null
68
+ : null;
69
+ const run = task
70
+ ? core.runs.find((candidate) => candidate.taskId === task.id) ?? null
71
+ : null;
72
+ if (run === null) {
73
+ return refused(input.action, null, 'run_not_found');
74
+ }
75
+ if (TERMINAL.has(run.status)) {
76
+ // A completed or cancelled Run is finished. Re-driving it would produce a
77
+ // second delivery for work the owner already saw closed.
78
+ return refused(input.action, run, `run_${run.status}`);
79
+ }
80
+ if (input.action === 'retry' && !RETRYABLE.has(run.status)) {
81
+ return refused(input.action, run, `retry_not_valid_from_${run.status}`);
82
+ }
83
+ if (input.action === 'resume' && !RESUMABLE.has(run.status)) {
84
+ return refused(input.action, run, `resume_not_valid_from_${run.status}`);
85
+ }
86
+ const occurredAt = now().toISOString();
87
+ const nextStatus = nextStatusFor(input.action, run.status);
88
+ const summary = summaryFor(input.action, input.detail);
89
+ await coreStore.updateCore((state) => {
90
+ const current = state.runs.find((candidate) => candidate.id === run.id);
91
+ if (!current || TERMINAL.has(current.status)) {
92
+ return state;
93
+ }
94
+ const write = upsertCoreRun(state, {
95
+ id: current.id,
96
+ title: current.title,
97
+ status: nextStatus,
98
+ conversationId: current.conversationId,
99
+ taskId: current.taskId,
100
+ orchestratorActorId: current.orchestratorActorId,
101
+ summary,
102
+ startedAt: current.startedAt,
103
+ // Reopening clears any completion stamp a previous attempt left.
104
+ completedAt: null,
105
+ metadata: {
106
+ ...current.metadata,
107
+ [WORK_GOLDEN_PATH_LIFECYCLE_METADATA_KEY]: {
108
+ schemaVersion: 1,
109
+ action: input.action,
110
+ occurredAt,
111
+ requestedByActorId: input.ownerActorId ?? null,
112
+ previousStatus: current.status,
113
+ detail: input.detail ?? null,
114
+ },
115
+ },
116
+ }, now());
117
+ return appendCoreActivity(write.core, {
118
+ id: `activity-wgp-lifecycle-${run.id}-${input.action}-${occurredAt}`,
119
+ kind: 'status_change',
120
+ actorId: input.ownerActorId ?? input.actorRef,
121
+ projectId: workItem.projectId,
122
+ workItemId: workItem.id,
123
+ conversationId: workItem.conversationId,
124
+ taskId: current.taskId,
125
+ runId: current.id,
126
+ message: summary,
127
+ metadata: {
128
+ [WORK_GOLDEN_PATH_LIFECYCLE_METADATA_KEY]: {
129
+ schemaVersion: 1,
130
+ action: input.action,
131
+ previousStatus: current.status,
132
+ },
133
+ },
134
+ }, now()).core;
135
+ });
136
+ return {
137
+ // A timeout is a state change that waits for the owner; retry and resume
138
+ // are requests to start driving again.
139
+ status: input.action === 'timeout' ? 'recorded' : 'redrivable',
140
+ action: input.action,
141
+ runId: run.id,
142
+ runStatus: nextStatus,
143
+ reason: null,
144
+ };
145
+ }
146
+ //# sourceMappingURL=workGoldenPathLifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workGoldenPathLifecycle.js","sourceRoot":"","sources":["../../../../../src/products/work/state/workGoldenPathLifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Gated publication for the golden path (SPEC-114 FR-40..FR-42).
3
+ *
4
+ * Execution authorization and publication authorization are different risk
5
+ * boundaries. Confirming "Start work" said the owner accepted a *scope*; it
6
+ * never said they accepted a side effect that only became visible once the work
7
+ * ran. So a gated mode stops at `result_ready` and asks again.
8
+ *
9
+ * The publish decision is an ordinary Cats Core approval — a Task in
10
+ * `pending_approval` bound to the Run by a `release_gate` binding — which means
11
+ * it appears in the existing approval queue and Desktop surfaces for free, and
12
+ * no transport ever infers it.
13
+ */
14
+ import type { CoreStore } from '../../../core/store.js';
15
+ import type { CoreDeliveryGate, CoreDeliveryMode, CoreRuntimeDeliveryAction } from '../../../core/types.js';
16
+ import type { RuntimeDeliveryClient } from '../../../platform/runtime/deliveryClient.js';
17
+ import type { TransportWorkProposalV1 } from '../../../platform/transports/work-delivery/contracts.js';
18
+ export declare const WORK_GOLDEN_PATH_PUBLISH_METADATA_KEY = "workGoldenPathPublish";
19
+ export interface WorkGoldenPathPublishRequest {
20
+ workItemId: string;
21
+ runId: string;
22
+ taskId: string | null;
23
+ bindingId: string;
24
+ proposal: TransportWorkProposalV1;
25
+ outstandingGates: readonly CoreDeliveryGate[];
26
+ ownerActorId: string;
27
+ actorRef: string;
28
+ /** Runtime-owned cwd/session captured with the accepted evidence. */
29
+ deliveryWorkspacePath: string | null;
30
+ deliverySessionId: string | null;
31
+ }
32
+ export interface WorkGoldenPathPublishApprovalRef {
33
+ approvalTaskId: string;
34
+ publishKey: string;
35
+ created: boolean;
36
+ }
37
+ export type WorkGoldenPathPublishStatus = 'published' | 'already_published' | 'denied' | 'pending_checks' | 'blocked' | 'not_pending';
38
+ export interface WorkGoldenPathPublishResult {
39
+ status: WorkGoldenPathPublishStatus;
40
+ publishKey: string;
41
+ approvalTaskId: string;
42
+ performedActions: CoreRuntimeDeliveryAction[];
43
+ reference: string | null;
44
+ /** Set when `status` is `pending_checks`; resumes the same runtime wait. */
45
+ pendingOperationId: string | null;
46
+ blockedReasons: string[];
47
+ }
48
+ /**
49
+ * Stable over the scope the owner is being asked to publish.
50
+ *
51
+ * Excludes the owner event, so a double tap converges on the same publish
52
+ * rather than performing the side effect twice (FR-42).
53
+ */
54
+ export declare function buildWorkGoldenPathPublishKey(input: {
55
+ bindingId: string;
56
+ workItemId: string;
57
+ proposalRevision: number;
58
+ proposalDigest: string;
59
+ deliveryMode: CoreDeliveryMode;
60
+ }): string;
61
+ /**
62
+ * Creates (or resolves) the pending publish approval.
63
+ *
64
+ * The approval Task carries the effective policy, the exact proposal revision,
65
+ * and the publish key, so an owner deciding it later is deciding the same thing
66
+ * they were shown (FR-42).
67
+ */
68
+ export declare function requestWorkGoldenPathPublishApproval(coreStore: CoreStore, input: WorkGoldenPathPublishRequest, now?: () => Date): Promise<WorkGoldenPathPublishApprovalRef>;
69
+ export interface ApplyWorkGoldenPathPublishInput {
70
+ workItemId: string;
71
+ decision: 'approve' | 'deny';
72
+ ownerActorId: string;
73
+ actorRef: string;
74
+ /** Absent means no external action can be performed. */
75
+ deliveryClient?: RuntimeDeliveryClient;
76
+ }
77
+ /**
78
+ * Applies the owner's publish decision.
79
+ *
80
+ * Approving twice returns the recorded result instead of pushing again: the
81
+ * approval Task's metadata is the idempotency record (FR-42).
82
+ */
83
+ export declare function applyWorkGoldenPathPublishDecision(coreStore: CoreStore, input: ApplyWorkGoldenPathPublishInput, now?: () => Date): Promise<WorkGoldenPathPublishResult>;
84
+ //# sourceMappingURL=workGoldenPathPublish.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workGoldenPathPublish.d.ts","sourceRoot":"","sources":["../../../../../src/products/work/state/workGoldenPathPublish.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAUH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAEV,gBAAgB,EAChB,gBAAgB,EAEhB,yBAAyB,EAC1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EACV,qBAAqB,EAEtB,MAAM,6CAA6C,CAAC;AACrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AAEvG,eAAO,MAAM,qCAAqC,0BAA0B,CAAC;AAgB7E,MAAM,WAAW,4BAA4B;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,uBAAuB,CAAC;IAClC,gBAAgB,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC9C,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,gCAAgC;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,2BAA2B,GACnC,WAAW,GACX,mBAAmB,GACnB,QAAQ,GACR,gBAAgB,GAChB,SAAS,GACT,aAAa,CAAC;AAElB,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,2BAA2B,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,yBAAyB,EAAE,CAAC;IAC9C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,4EAA4E;IAC5E,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,gBAAgB,CAAC;CAChC,GAAG,MAAM,CAST;AAoCD;;;;;;GAMG;AACH,wBAAsB,oCAAoC,CACxD,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,4BAA4B,EACnC,GAAG,GAAE,MAAM,IAAuB,GACjC,OAAO,CAAC,gCAAgC,CAAC,CAwG3C;AAED,MAAM,WAAW,+BAA+B;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,GAAG,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC;AA6GD;;;;;GAKG;AACH,wBAAsB,kCAAkC,CACtD,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,+BAA+B,EACtC,GAAG,GAAE,MAAM,IAAuB,GACjC,OAAO,CAAC,2BAA2B,CAAC,CA0OtC"}