@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,252 @@
1
+ /**
2
+ * Desktop projection for the transport work-delivery golden path
3
+ * (SPEC-114 FR-49, FR-50).
4
+ *
5
+ * Desktop must be able to explain every Telegram message from durable records:
6
+ * where the request came in, exactly which scope revision the owner authorized,
7
+ * what executed, what evidence was accepted, and whether the result actually
8
+ * reached the owner.
9
+ *
10
+ * Like the transport stage, this is a derivation — it holds no state and adds
11
+ * no authority. Unlike the transport payloads, it may show local paths: Desktop
12
+ * runs on the owner's own machine, so the FR-44 restriction that applies to a
13
+ * chat message does not apply here. Secrets are still never included, because
14
+ * they are never in these records to begin with.
15
+ */
16
+ import { resolveOutstandingDeliveryGates } from '../../../platform/transports/work-delivery/deliveryGates.js';
17
+ import { projectTransportWorkStage } from '../../../platform/transports/work-delivery/stageProjection.js';
18
+ import { readWorkGoldenPathMetadata } from '../shared/workGoldenPathMetadata.js';
19
+ function isRecord(value) {
20
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
21
+ }
22
+ function readString(value) {
23
+ return typeof value === 'string' && value.trim() !== '' ? value : null;
24
+ }
25
+ function readStringArray(value) {
26
+ return Array.isArray(value)
27
+ ? value.filter((entry) => typeof entry === 'string')
28
+ : [];
29
+ }
30
+ function toAttemptView(row) {
31
+ return {
32
+ idempotencyKey: row.idempotencyKey,
33
+ purpose: row.purpose,
34
+ state: row.state,
35
+ attemptCount: row.attemptCount,
36
+ externalMessageRef: row.externalMessageRef,
37
+ lastErrorCode: row.lastErrorCode,
38
+ sentAt: row.sentAt,
39
+ };
40
+ }
41
+ /**
42
+ * Reads the authorization stamp the admission command wrote onto the Run.
43
+ *
44
+ * Absent means the scope was never authorized, which Desktop shows as an empty
45
+ * authorization block rather than inventing an actor.
46
+ */
47
+ function readAuthorization(run) {
48
+ const envelope = run && isRecord(run.metadata.workGoldenPath)
49
+ ? run.metadata.workGoldenPath
50
+ : null;
51
+ return {
52
+ authorizedByActorId: readString(envelope?.authorizedByActorId),
53
+ authorizedAt: readString(envelope?.authorizedAt),
54
+ bindingId: readString(envelope?.bindingId),
55
+ proposalRevision: typeof envelope?.proposalRevision === 'number'
56
+ ? envelope.proposalRevision
57
+ : null,
58
+ proposalDigest: readString(envelope?.proposalDigest),
59
+ admissionKey: readString(envelope?.admissionKey),
60
+ };
61
+ }
62
+ function readEvidence(input) {
63
+ const outcome = input.run
64
+ ? input.core.outcomes.find((candidate) => candidate.runId === input.run.id) ?? null
65
+ : null;
66
+ const metadata = outcome?.metadata ?? {};
67
+ const validation = isRecord(metadata.validation)
68
+ && typeof metadata.validation.command === 'string'
69
+ && typeof metadata.validation.passed === 'boolean'
70
+ ? { command: metadata.validation.command, passed: metadata.validation.passed }
71
+ : null;
72
+ const satisfiedCriteria = readStringArray(metadata.satisfiedCriteria);
73
+ const normalized = new Set(satisfiedCriteria.map((entry) => entry.trim().toLowerCase()));
74
+ const artifacts = input.core.artifacts.filter((artifact) => artifact.workItemId === input.workItem.id);
75
+ return {
76
+ outcomeStatus: outcome?.status ?? null,
77
+ commitId: readString(metadata.commitId),
78
+ changeSummary: readString(metadata.changeSummary),
79
+ validation,
80
+ artifacts: artifacts.map((artifact) => ({
81
+ id: artifact.id,
82
+ title: artifact.title,
83
+ status: artifact.status,
84
+ path: artifact.path,
85
+ })),
86
+ satisfiedCriteria,
87
+ unmetCriteria: input.acceptanceCriteria.filter((criterion) => !normalized.has(criterion.trim().toLowerCase())),
88
+ };
89
+ }
90
+ function readPermissionDenial(run) {
91
+ const envelope = run && isRecord(run.metadata.workGoldenPathDenial)
92
+ ? run.metadata.workGoldenPathDenial
93
+ : null;
94
+ const toolName = readString(envelope?.toolName);
95
+ const code = readString(envelope?.code);
96
+ if (toolName === null || code === null) {
97
+ return null;
98
+ }
99
+ return { toolName, code, deniedAt: readString(envelope?.deniedAt) };
100
+ }
101
+ function readBlockers(input) {
102
+ const blockers = [];
103
+ if (!input.bindingPresent) {
104
+ blockers.push(`The originating Telegram binding ${input.bindingId} no longer exists, so results `
105
+ + 'cannot be delivered to it.');
106
+ }
107
+ if (input.run !== null
108
+ && (input.stage === 'decision_needed' || input.stage === 'failed')) {
109
+ blockers.push(input.run.summary ?? `Run is ${input.run.status}.`);
110
+ }
111
+ return blockers;
112
+ }
113
+ function resolveRecoveryActions(input) {
114
+ const failedResult = input.attempts.some((attempt) => (attempt.purpose === 'result' || attempt.purpose === 'publish_result')
115
+ && attempt.state !== 'sent');
116
+ // A failed final send is the one case where Desktop can finish the job the
117
+ // transport could not (FR-46).
118
+ if (failedResult && (input.stage === 'result_ready' || input.stage === 'publish_authorized')) {
119
+ return ['retry_delivery', 'cancel'];
120
+ }
121
+ if (input.stage === 'delivered' || input.stage === 'cancelled') {
122
+ return ['none'];
123
+ }
124
+ // A stuck run is the case Desktop most needs to unstick.
125
+ if (input.stage === 'failed' || input.stage === 'decision_needed') {
126
+ return ['retry_run', 'cancel'];
127
+ }
128
+ // A `running` Run may have lost its driver to a host restart.
129
+ if (input.stage === 'running') {
130
+ return ['resume_run', 'cancel'];
131
+ }
132
+ return ['cancel'];
133
+ }
134
+ /**
135
+ * Builds the golden-path view for one Work Item, or `null` when the item did not
136
+ * come in through a transport.
137
+ */
138
+ export function buildWorkGoldenPathDetailProjection(input) {
139
+ const workItem = input.core.workItems.find((candidate) => candidate.id === input.workItemId)
140
+ ?? null;
141
+ if (workItem === null) {
142
+ return null;
143
+ }
144
+ const metadata = readWorkGoldenPathMetadata(workItem.metadata);
145
+ const origin = metadata?.origin ?? null;
146
+ const proposal = metadata?.proposal ?? null;
147
+ if (origin === null || proposal === null) {
148
+ return null;
149
+ }
150
+ const task = workItem.taskId
151
+ ? input.core.tasks.find((candidate) => candidate.id === workItem.taskId) ?? null
152
+ : null;
153
+ const run = task
154
+ ? input.core.runs.find((candidate) => candidate.taskId === task.id) ?? null
155
+ : null;
156
+ const outcome = run
157
+ ? input.core.outcomes.find((candidate) => candidate.runId === run.id) ?? null
158
+ : null;
159
+ const artifacts = input.core.artifacts.filter((artifact) => artifact.workItemId === workItem.id);
160
+ const deliveryRows = input.deliveryReader?.list(workItem.id) ?? [];
161
+ const bindingPresent = input.core.botBindings.some((binding) => binding.id === origin.bindingId && binding.status === 'active');
162
+ const evidence = readEvidence({
163
+ core: input.core,
164
+ workItem,
165
+ run,
166
+ acceptanceCriteria: proposal.acceptanceCriteria,
167
+ });
168
+ const outstandingGates = resolveOutstandingDeliveryGates({
169
+ deliveryMode: proposal.deliveryMode,
170
+ effectiveGates: proposal.deliveryGates,
171
+ satisfiedGates: [],
172
+ publishesPublicArtifact: false,
173
+ });
174
+ const stageProjection = projectTransportWorkStage({
175
+ workItem,
176
+ proposal,
177
+ task,
178
+ run,
179
+ outcome,
180
+ artifacts,
181
+ commitId: evidence.commitId,
182
+ outstandingGates,
183
+ deliveryRows,
184
+ awaitingOwnerDecision: task?.approval.status === 'pending' && run !== null,
185
+ });
186
+ const attempts = deliveryRows.map(toAttemptView);
187
+ return {
188
+ workItemId: workItem.id,
189
+ source: {
190
+ transport: origin.transport,
191
+ bindingId: origin.bindingId,
192
+ present: bindingPresent,
193
+ externalConversationRef: origin.externalConversationRef,
194
+ externalUpdateRef: origin.externalUpdateRef,
195
+ externalMessageRef: origin.externalMessageRef,
196
+ conversationId: origin.conversationId,
197
+ locale: metadata?.locale ?? null,
198
+ },
199
+ scope: {
200
+ revision: proposal.revision,
201
+ digest: proposal.digest,
202
+ goal: proposal.goal,
203
+ targetLabel: proposal.targetLabel,
204
+ workspacePath: proposal.workspacePath,
205
+ acceptanceCriteria: [...proposal.acceptanceCriteria],
206
+ deliveryMode: proposal.deliveryMode,
207
+ deliveryGates: [...proposal.deliveryGates],
208
+ sideEffects: [...proposal.sideEffects],
209
+ openQuestion: proposal.openQuestion,
210
+ proposedAt: proposal.createdAt,
211
+ },
212
+ authorization: readAuthorization(run),
213
+ taskId: task?.id ?? null,
214
+ taskStatus: task?.status ?? null,
215
+ runId: run?.id ?? null,
216
+ runStatus: run?.status ?? null,
217
+ stage: stageProjection.stage,
218
+ stageRationale: stageProjection.rationale,
219
+ blockers: readBlockers({
220
+ run,
221
+ stage: stageProjection.stage,
222
+ bindingPresent,
223
+ bindingId: origin.bindingId,
224
+ }),
225
+ permissionDenial: readPermissionDenial(run),
226
+ evidence,
227
+ outstandingGates,
228
+ delivery: {
229
+ attempts,
230
+ receipt: attempts.find((attempt) => attempt.state === 'sent'
231
+ && (attempt.purpose === 'result' || attempt.purpose === 'publish_result')) ?? null,
232
+ },
233
+ recoveryActions: resolveRecoveryActions({ stage: stageProjection.stage, attempts }),
234
+ };
235
+ }
236
+ /**
237
+ * Convenience for the Task detail surface, which knows a Task rather than a
238
+ * Work Item.
239
+ */
240
+ export function buildWorkGoldenPathDetailProjectionForTask(input) {
241
+ const workItem = input.core.workItems.find((candidate) => candidate.taskId === input.taskId)
242
+ ?? null;
243
+ if (workItem === null) {
244
+ return null;
245
+ }
246
+ return buildWorkGoldenPathDetailProjection({
247
+ core: input.core,
248
+ workItemId: workItem.id,
249
+ deliveryReader: input.deliveryReader,
250
+ });
251
+ }
252
+ //# sourceMappingURL=goldenPathProjection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goldenPathProjection.js","sourceRoot":"","sources":["../../../../../src/products/work/api/goldenPathProjection.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type TransportWorkDeliveryReader, type WorkGoldenPathDetailProjection } from './goldenPathProjection.js';
1
2
  import type { CoreStore } from '../../../core/store.js';
2
3
  import type { EvidenceEvent } from '../../../core/types.js';
3
4
  import { type RuntimeClient } from '../../../platform/runtime/client.js';
@@ -12,6 +13,13 @@ export interface WorkRuntimeTargetOverride {
12
13
  model?: string | null;
13
14
  cwd?: string | null;
14
15
  }
16
+ /**
17
+ * Re-exported shape rather than an import from `app/server`: products must not
18
+ * depend on host composition, so the host satisfies this structurally.
19
+ */
20
+ export interface TransportWorkReadinessReader {
21
+ describe(): Promise<unknown>;
22
+ }
15
23
  export interface WorkApiDependencies {
16
24
  coreStore: CoreStore;
17
25
  runtimeClient?: RuntimeClient;
@@ -20,12 +28,57 @@ export interface WorkApiDependencies {
20
28
  evidenceDataDir?: string;
21
29
  readEvidenceEvents?: (conversationId: string) => EvidenceEvent[];
22
30
  externalIssueImport?: ExternalIssueImportFetchOptions;
31
+ /**
32
+ * Read-only view of the transport delivery outbox (SPEC-114 FR-49).
33
+ * Absent means Desktop shows work without its transport receipts.
34
+ */
35
+ transportWorkDelivery?: TransportWorkDeliveryReader;
36
+ /**
37
+ * Delegation readiness, evaluated by the same code the transport uses
38
+ * (SPEC-114 FR-3). Absent means the golden path is off for this host, which
39
+ * Desktop reports as "not enabled" rather than as "ready".
40
+ */
41
+ transportWorkReadiness?: TransportWorkReadinessReader;
42
+ /**
43
+ * Bounded operational counters (PLAN-105 Phase 6). Absent means the host runs
44
+ * unmeasured, which the endpoint reports as such.
45
+ */
46
+ transportWorkTelemetry?: {
47
+ snapshot(): unknown;
48
+ };
23
49
  now?: () => Date;
24
50
  }
25
51
  export type WorkApiRouteContext = RouteContext<WorkApiDependencies>;
26
52
  export type WorkSupervisedRunLifecycleAction = 'resume' | 'retry';
27
53
  export declare function createWorkDashboardPayload(core: Awaited<ReturnType<CoreStore['readCore']>>): WorkDashboardProjection;
28
- export declare function createWorkTaskDetailPayload(core: Awaited<ReturnType<CoreStore['readCore']>>, taskId: string, evidenceEvents?: EvidenceEvent[]): WorkTaskDetailProjection | null;
54
+ export interface WorkGoldenPathRunLifecycleResult {
55
+ status: 'redrivable' | 'refused' | 'not_available';
56
+ action: 'retry' | 'resume';
57
+ runId: string | null;
58
+ reason: string | null;
59
+ goldenPath: WorkGoldenPathDetailProjection | null;
60
+ }
61
+ /**
62
+ * Retries or resumes a golden-path Run from Desktop (SPEC-114 FR-29, FR-35).
63
+ *
64
+ * Desktop performs the state transition; it does not drive the run. The host
65
+ * that owns the runner picks the Run up, exactly as it does for a Telegram
66
+ * retry, so there is one driver rather than one per surface.
67
+ */
68
+ export declare function applyWorkGoldenPathRunLifecycle(dependencies: WorkApiDependencies, taskId: string, action: 'retry' | 'resume'): Promise<WorkGoldenPathRunLifecycleResult>;
69
+ export interface WorkGoldenPathRetryDeliveryResult {
70
+ status: 'delivered' | 'still_failing' | 'not_available';
71
+ reason: string | null;
72
+ goldenPath: WorkGoldenPathDetailProjection | null;
73
+ }
74
+ /**
75
+ * Re-drives a delivery the transport could not complete (SPEC-114 FR-46).
76
+ *
77
+ * The outbox row remains the idempotency record, so a row that already reached
78
+ * `sent` is returned untouched rather than sent again.
79
+ */
80
+ export declare function retryWorkGoldenPathDelivery(dependencies: WorkApiDependencies, taskId: string): Promise<WorkGoldenPathRetryDeliveryResult>;
81
+ export declare function createWorkTaskDetailPayload(core: Awaited<ReturnType<CoreStore['readCore']>>, taskId: string, evidenceEvents?: EvidenceEvent[], deliveryReader?: TransportWorkDeliveryReader): WorkTaskDetailProjection | null;
29
82
  export declare function createWorkSupervisedRunPayload(dependencies: WorkApiDependencies, taskId: string): Promise<WorkSupervisedRunLaunchProjection>;
30
83
  export declare function createWorkSupervisedRunLifecycleActionPayload(dependencies: WorkApiDependencies, taskId: string, action: WorkSupervisedRunLifecycleAction): Promise<WorkSupervisedRunLaunchProjection>;
31
84
  export declare function createWorkProjectListPayload(core: Awaited<ReturnType<CoreStore['readCore']>>): import("./projection.js").WorkProjectListProjection;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/products/work/api/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/products/work/api/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ import { applyWorkGoldenPathLifecycleAction } from '../state/workGoldenPathLifecycle.js';
2
+ import { buildWorkGoldenPathDetailProjectionForTask, } from './goldenPathProjection.js';
1
3
  import { CoreConflictError, CoreNotFoundError, } from '../../../core/errors.js';
2
4
  import { appendCoreTrace, upsertCoreRun } from '../../../core/model/index.js';
3
5
  import { handleCoreError } from '../../../core/api/shared.js';
@@ -14,7 +16,7 @@ import { routeWorkProductCrudApi } from './productCrudRoutes.js';
14
16
  import { routeWorkRunCancellationApi } from './runCancellationRoutes.js';
15
17
  import { routeWorkScheduleApi } from './scheduleRoutes.js';
16
18
  import { matchRoute, sendJson, sendMethodNotAllowed, } from '../../../shared/http.js';
17
- import { WORK_API_MISSION_DETAIL_PATTERN, WORK_API_MISSIONS_PATH, WORK_API_PREFIX, WORK_API_PROJECT_DETAIL_PATTERN, WORK_API_PROJECTS_PATH, WORK_API_RUNS_PATH, WORK_API_TASK_DETAIL_PATTERN, WORK_API_TASK_SUPERVISED_RUN_ACTION_PATTERN, WORK_API_TASK_SUPERVISED_RUN_PATTERN, WORK_API_TASKS_PATH, WORK_API_WORK_ITEM_DETAIL_PATTERN, WORK_API_WORK_ITEMS_PATH, } from '../shared/apiPaths.js';
19
+ import { WORK_API_MISSION_DETAIL_PATTERN, WORK_API_MISSIONS_PATH, WORK_API_PREFIX, WORK_API_PROJECT_DETAIL_PATTERN, WORK_API_PROJECTS_PATH, WORK_API_RUNS_PATH, WORK_API_TASK_DETAIL_PATTERN, WORK_API_TASK_SUPERVISED_RUN_ACTION_PATTERN, WORK_API_TASK_GOLDEN_PATH_LIFECYCLE_PATTERN, WORK_API_TASK_GOLDEN_PATH_RETRY_DELIVERY_PATTERN, WORK_API_TASK_SUPERVISED_RUN_PATTERN, WORK_API_DELIVERY_READINESS_PATH, WORK_API_DELIVERY_TELEMETRY_PATH, WORK_API_TASKS_PATH, WORK_API_WORK_ITEM_DETAIL_PATTERN, WORK_API_WORK_ITEMS_PATH, } from '../shared/apiPaths.js';
18
20
  export const WORK_API_SLICE = 'work';
19
21
  const WORK_SUPERVISED_RUN_PARENT_BUDGET = {
20
22
  maxTokens: 120_000,
@@ -29,9 +31,101 @@ const WORK_SUPERVISED_RUN_DEFAULT_BUDGET = {
29
31
  export function createWorkDashboardPayload(core) {
30
32
  return buildWorkDashboardProjection(core);
31
33
  }
32
- export function createWorkTaskDetailPayload(core, taskId, evidenceEvents = []) {
34
+ /**
35
+ * Retries or resumes a golden-path Run from Desktop (SPEC-114 FR-29, FR-35).
36
+ *
37
+ * Desktop performs the state transition; it does not drive the run. The host
38
+ * that owns the runner picks the Run up, exactly as it does for a Telegram
39
+ * retry, so there is one driver rather than one per surface.
40
+ */
41
+ export async function applyWorkGoldenPathRunLifecycle(dependencies, taskId, action) {
42
+ const core = await dependencies.coreStore.readCore();
43
+ const projection = buildWorkGoldenPathDetailProjectionForTask({
44
+ core,
45
+ taskId,
46
+ deliveryReader: dependencies.transportWorkDelivery,
47
+ });
48
+ if (projection === null) {
49
+ return {
50
+ status: 'not_available',
51
+ action,
52
+ runId: null,
53
+ reason: `Task ${taskId} did not arrive through a transport.`,
54
+ goldenPath: null,
55
+ };
56
+ }
57
+ const result = await applyWorkGoldenPathLifecycleAction(dependencies.coreStore, {
58
+ workItemId: projection.workItemId,
59
+ action,
60
+ actorRef: 'actor-work-golden-path',
61
+ ownerActorId: core.ownerProfile.actorId,
62
+ }, dependencies.now);
63
+ return {
64
+ status: result.status === 'refused' ? 'refused' : 'redrivable',
65
+ action,
66
+ runId: result.runId,
67
+ reason: result.reason,
68
+ goldenPath: buildWorkGoldenPathDetailProjectionForTask({
69
+ core: await dependencies.coreStore.readCore(),
70
+ taskId,
71
+ deliveryReader: dependencies.transportWorkDelivery,
72
+ }),
73
+ };
74
+ }
75
+ /**
76
+ * Re-drives a delivery the transport could not complete (SPEC-114 FR-46).
77
+ *
78
+ * The outbox row remains the idempotency record, so a row that already reached
79
+ * `sent` is returned untouched rather than sent again.
80
+ */
81
+ export async function retryWorkGoldenPathDelivery(dependencies, taskId) {
82
+ const recovery = dependencies.transportWorkDelivery;
83
+ if (recovery === undefined || typeof recovery.retry !== 'function') {
84
+ return {
85
+ status: 'not_available',
86
+ reason: 'No transport delivery outbox is available on this host.',
87
+ goldenPath: null,
88
+ };
89
+ }
90
+ const core = await dependencies.coreStore.readCore();
91
+ const projection = buildWorkGoldenPathDetailProjectionForTask({
92
+ core,
93
+ taskId,
94
+ deliveryReader: recovery,
95
+ });
96
+ if (projection === null) {
97
+ return {
98
+ status: 'not_available',
99
+ reason: `Task ${taskId} did not arrive through a transport.`,
100
+ goldenPath: null,
101
+ };
102
+ }
103
+ const pending = projection.delivery.attempts.find((attempt) => (attempt.purpose === 'result' || attempt.purpose === 'publish_result')
104
+ && attempt.state !== 'sent');
105
+ if (pending === undefined) {
106
+ return {
107
+ status: 'not_available',
108
+ reason: 'There is no failed delivery to retry.',
109
+ goldenPath: projection,
110
+ };
111
+ }
112
+ const flushed = await recovery.retry(pending.idempotencyKey);
113
+ const refreshed = buildWorkGoldenPathDetailProjectionForTask({
114
+ core: await dependencies.coreStore.readCore(),
115
+ taskId,
116
+ deliveryReader: recovery,
117
+ });
118
+ return {
119
+ status: flushed.row.state === 'sent' ? 'delivered' : 'still_failing',
120
+ reason: flushed.row.state === 'sent' ? null : flushed.row.lastErrorCode,
121
+ goldenPath: refreshed,
122
+ };
123
+ }
124
+ export function createWorkTaskDetailPayload(core, taskId, evidenceEvents = [], deliveryReader) {
33
125
  const task = core.tasks.find((candidate) => candidate.id === taskId) ?? null;
34
- return task ? buildWorkTaskDetailProjection(core, task, evidenceEvents) : null;
126
+ return task
127
+ ? buildWorkTaskDetailProjection(core, task, evidenceEvents, deliveryReader)
128
+ : null;
35
129
  }
36
130
  export async function createWorkSupervisedRunPayload(dependencies, taskId) {
37
131
  const now = dependencies.now?.() ?? new Date();
@@ -288,6 +382,42 @@ export async function routeWorkApi(context) {
288
382
  sendJson(context.response, 200, createWorkWorkItemListPayload(await context.dependencies.coreStore.readCore()));
289
383
  return true;
290
384
  }
385
+ if (context.url.pathname === WORK_API_DELIVERY_READINESS_PATH) {
386
+ if (context.method !== 'GET') {
387
+ sendMethodNotAllowed(context.response, ['GET']);
388
+ return true;
389
+ }
390
+ const reader = context.dependencies.transportWorkReadiness;
391
+ if (reader === undefined) {
392
+ sendJson(context.response, 200, {
393
+ enabled: false,
394
+ workspacePath: null,
395
+ authorizedOwnerCount: 0,
396
+ localExecution: 'unknown',
397
+ bindings: [],
398
+ });
399
+ return true;
400
+ }
401
+ try {
402
+ sendJson(context.response, 200, await reader.describe());
403
+ }
404
+ catch (error) {
405
+ handleCoreError(context, error);
406
+ }
407
+ return true;
408
+ }
409
+ if (context.url.pathname === WORK_API_DELIVERY_TELEMETRY_PATH) {
410
+ if (context.method !== 'GET') {
411
+ sendMethodNotAllowed(context.response, ['GET']);
412
+ return true;
413
+ }
414
+ const telemetry = context.dependencies.transportWorkTelemetry;
415
+ sendJson(context.response, 200, {
416
+ enabled: telemetry !== undefined,
417
+ snapshot: telemetry?.snapshot() ?? null,
418
+ });
419
+ return true;
420
+ }
291
421
  if (context.url.pathname === WORK_API_TASKS_PATH) {
292
422
  if (context.method !== 'GET') {
293
423
  sendMethodNotAllowed(context.response, ['GET']);
@@ -342,6 +472,54 @@ export async function routeWorkApi(context) {
342
472
  sendJson(context.response, 200, detail);
343
473
  return true;
344
474
  }
475
+ const goldenPathLifecycleMatch = matchRoute(context.url.pathname, WORK_API_TASK_GOLDEN_PATH_LIFECYCLE_PATTERN);
476
+ if (goldenPathLifecycleMatch) {
477
+ if (context.method !== 'POST') {
478
+ sendMethodNotAllowed(context.response, ['POST']);
479
+ return true;
480
+ }
481
+ const taskId = goldenPathLifecycleMatch[0];
482
+ const action = goldenPathLifecycleMatch[1];
483
+ if (!taskId || !action) {
484
+ sendJson(context.response, 400, {
485
+ error: {
486
+ code: 'invalid_golden_path_lifecycle_action',
487
+ message: 'Task id and action are required.',
488
+ },
489
+ });
490
+ return true;
491
+ }
492
+ try {
493
+ const payload = await applyWorkGoldenPathRunLifecycle(context.dependencies, taskId, action);
494
+ sendJson(context.response, payload.status === 'refused' ? 409 : 200, payload);
495
+ }
496
+ catch (error) {
497
+ handleCoreError(context, error);
498
+ }
499
+ return true;
500
+ }
501
+ const goldenPathRetryMatch = matchRoute(context.url.pathname, WORK_API_TASK_GOLDEN_PATH_RETRY_DELIVERY_PATTERN);
502
+ if (goldenPathRetryMatch) {
503
+ if (context.method !== 'POST') {
504
+ sendMethodNotAllowed(context.response, ['POST']);
505
+ return true;
506
+ }
507
+ const taskId = goldenPathRetryMatch[0];
508
+ if (!taskId) {
509
+ sendJson(context.response, 400, {
510
+ error: { code: 'invalid_task_id', message: 'Task id is required.' },
511
+ });
512
+ return true;
513
+ }
514
+ try {
515
+ const payload = await retryWorkGoldenPathDelivery(context.dependencies, taskId);
516
+ sendJson(context.response, payload.status === 'not_available' ? 409 : 200, payload);
517
+ }
518
+ catch (error) {
519
+ handleCoreError(context, error);
520
+ }
521
+ return true;
522
+ }
345
523
  const supervisedRunActionMatch = matchRoute(context.url.pathname, WORK_API_TASK_SUPERVISED_RUN_ACTION_PATTERN);
346
524
  if (supervisedRunActionMatch) {
347
525
  if (context.method !== 'POST') {
@@ -409,7 +587,7 @@ export async function routeWorkApi(context) {
409
587
  ? context.dependencies.readEvidenceEvents?.(task.conversationId) ?? []
410
588
  : [];
411
589
  const payload = task
412
- ? buildWorkTaskDetailProjection(core, task, evidenceEvents)
590
+ ? buildWorkTaskDetailProjection(core, task, evidenceEvents, context.dependencies.transportWorkDelivery)
413
591
  : null;
414
592
  if (!payload) {
415
593
  sendJson(context.response, 404, {