@cats-inc/cats-platform 0.1.21 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (548) hide show
  1. package/.env.example +3 -7
  2. package/README.md +35 -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 +63 -86
  8. package/build/desktop/bootstrapPage.js.map +1 -1
  9. package/build/desktop/cliInventoryProbe.d.ts +11 -2
  10. package/build/desktop/cliInventoryProbe.d.ts.map +1 -1
  11. package/build/desktop/cliInventoryProbe.js +19 -13
  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 +12 -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 +205 -256
  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 +9 -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/providerManager.d.ts +46 -0
  36. package/build/desktop/providerManager.d.ts.map +1 -0
  37. package/build/desktop/providerManager.js +220 -0
  38. package/build/desktop/providerManager.js.map +1 -0
  39. package/build/desktop/providerSelection.d.ts +38 -0
  40. package/build/desktop/providerSelection.d.ts.map +1 -0
  41. package/build/desktop/providerSelection.js +118 -0
  42. package/build/desktop/providerSelection.js.map +1 -0
  43. package/build/desktop/readiness.d.ts +2 -0
  44. package/build/desktop/readiness.d.ts.map +1 -1
  45. package/build/desktop/readiness.js +14 -33
  46. package/build/desktop/readiness.js.map +1 -1
  47. package/build/desktop/setupAssets.d.ts.map +1 -1
  48. package/build/desktop/setupAssets.js +28 -14
  49. package/build/desktop/setupAssets.js.map +1 -1
  50. package/build/desktop/setupAudit.d.ts +4 -3
  51. package/build/desktop/setupAudit.d.ts.map +1 -1
  52. package/build/desktop/setupAudit.js +18 -34
  53. package/build/desktop/setupAudit.js.map +1 -1
  54. package/build/desktop/setupBridge.js +1 -1
  55. package/build/desktop/setupBridge.js.map +1 -1
  56. package/build/desktop/setupPrerequisites.d.ts +11 -0
  57. package/build/desktop/setupPrerequisites.d.ts.map +1 -0
  58. package/build/desktop/setupPrerequisites.js +47 -0
  59. package/build/desktop/setupPrerequisites.js.map +1 -0
  60. package/build/desktop/updateDialog.d.ts +27 -1
  61. package/build/desktop/updateDialog.d.ts.map +1 -1
  62. package/build/desktop/updateDialog.js +85 -5
  63. package/build/desktop/updateDialog.js.map +1 -1
  64. package/build/renderer/assets/ActiveSessionPermissionChip-B49WcZBJ.js +1 -0
  65. package/build/renderer/assets/App-BpxZB5ym.js +2 -0
  66. package/build/renderer/assets/App-DYTUfAl6.js +1 -0
  67. package/build/renderer/assets/App-DxsV-tKS.css +1 -0
  68. package/build/renderer/assets/{App-DKOSn0o_.js → App-boB4WrmU.js} +1 -1
  69. package/build/renderer/assets/WorkspaceAppRoutes-CPqz85iw.js +1 -0
  70. package/build/renderer/assets/app-C52wwCGz.js +85 -0
  71. package/build/renderer/assets/app-CqnsY5ed.css +1 -0
  72. package/build/renderer/assets/{client-BdGHAUoK.js → client-DREGSZqQ.js} +1 -1
  73. package/build/renderer/assets/conversationSidebarRecentEntries-DK0iWS73.js +6 -0
  74. package/build/renderer/assets/{screenshotOverlay-DfBcolX-.js → screenshotOverlay-EF07cXvw.js} +1 -1
  75. package/build/renderer/assets/{useDraftSessionChips-DCIId0eY.js → useDraftSessionChips-BdZ_B1gy.js} +1 -1
  76. package/build/renderer/desktop/overlay/index.html +2 -2
  77. package/build/renderer/index.html +3 -3
  78. package/build/server/app/renderer/auth/api.d.ts.map +1 -1
  79. package/build/server/app/renderer/auth/api.js +4 -1
  80. package/build/server/app/renderer/auth/api.js.map +1 -1
  81. package/build/server/app/renderer/providerCatalogClient.d.ts.map +1 -1
  82. package/build/server/app/renderer/providerCatalogClient.js +34 -12
  83. package/build/server/app/renderer/providerCatalogClient.js.map +1 -1
  84. package/build/server/app/renderer/providerClientInvalidation.d.ts +6 -0
  85. package/build/server/app/renderer/providerClientInvalidation.d.ts.map +1 -0
  86. package/build/server/app/renderer/providerClientInvalidation.js +12 -0
  87. package/build/server/app/renderer/providerClientInvalidation.js.map +1 -0
  88. package/build/server/app/renderer/providerReadLoop.d.ts +5 -0
  89. package/build/server/app/renderer/providerReadLoop.d.ts.map +1 -0
  90. package/build/server/app/renderer/providerReadLoop.js +52 -0
  91. package/build/server/app/renderer/providerReadLoop.js.map +1 -0
  92. package/build/server/app/renderer/providerRegistryClient.d.ts +3 -2
  93. package/build/server/app/renderer/providerRegistryClient.d.ts.map +1 -1
  94. package/build/server/app/renderer/providerRegistryClient.js +51 -53
  95. package/build/server/app/renderer/providerRegistryClient.js.map +1 -1
  96. package/build/server/app/server/appPackageRoutes.d.ts +2 -0
  97. package/build/server/app/server/appPackageRoutes.d.ts.map +1 -1
  98. package/build/server/app/server/appPackageRoutes.js +105 -0
  99. package/build/server/app/server/appPackageRoutes.js.map +1 -1
  100. package/build/server/app/server/authGatePolicy.js +14 -1
  101. package/build/server/app/server/authGatePolicy.js.map +1 -1
  102. package/build/server/app/server/contracts.d.ts +15 -0
  103. package/build/server/app/server/contracts.d.ts.map +1 -1
  104. package/build/server/app/server/dependencies.d.ts.map +1 -1
  105. package/build/server/app/server/dependencies.js +42 -1
  106. package/build/server/app/server/dependencies.js.map +1 -1
  107. package/build/server/app/server/goldenPathStartupResume.d.ts +55 -0
  108. package/build/server/app/server/goldenPathStartupResume.d.ts.map +1 -0
  109. package/build/server/app/server/goldenPathStartupResume.js +109 -0
  110. package/build/server/app/server/goldenPathStartupResume.js.map +1 -0
  111. package/build/server/app/server/platformSetupRoutes.d.ts.map +1 -1
  112. package/build/server/app/server/platformSetupRoutes.js +1 -13
  113. package/build/server/app/server/platformSetupRoutes.js.map +1 -1
  114. package/build/server/app/server/polling.d.ts.map +1 -1
  115. package/build/server/app/server/polling.js +2 -0
  116. package/build/server/app/server/polling.js.map +1 -1
  117. package/build/server/app/server/requestRouter.d.ts.map +1 -1
  118. package/build/server/app/server/requestRouter.js +30 -0
  119. package/build/server/app/server/requestRouter.js.map +1 -1
  120. package/build/server/app/server/runtimeSurfaceProxy.d.ts.map +1 -1
  121. package/build/server/app/server/runtimeSurfaceProxy.js +4 -2
  122. package/build/server/app/server/runtimeSurfaceProxy.js.map +1 -1
  123. package/build/server/app/server/startupRecovery.d.ts.map +1 -1
  124. package/build/server/app/server/startupRecovery.js +5 -0
  125. package/build/server/app/server/startupRecovery.js.map +1 -1
  126. package/build/server/app/server/subscribeRoutes.d.ts.map +1 -1
  127. package/build/server/app/server/subscribeRoutes.js +5 -3
  128. package/build/server/app/server/subscribeRoutes.js.map +1 -1
  129. package/build/server/app/server/telegramCommandSurface.d.ts +29 -0
  130. package/build/server/app/server/telegramCommandSurface.d.ts.map +1 -0
  131. package/build/server/app/server/telegramCommandSurface.js +123 -0
  132. package/build/server/app/server/telegramCommandSurface.js.map +1 -0
  133. package/build/server/app/server/transportWorkGoldenPath.d.ts +82 -0
  134. package/build/server/app/server/transportWorkGoldenPath.d.ts.map +1 -0
  135. package/build/server/app/server/transportWorkGoldenPath.js +307 -0
  136. package/build/server/app/server/transportWorkGoldenPath.js.map +1 -0
  137. package/build/server/config.d.ts +21 -0
  138. package/build/server/config.d.ts.map +1 -1
  139. package/build/server/config.js +12 -0
  140. package/build/server/config.js.map +1 -1
  141. package/build/server/design/components/providerModelFieldsSupport.d.ts +5 -24
  142. package/build/server/design/components/providerModelFieldsSupport.d.ts.map +1 -1
  143. package/build/server/design/components/providerModelFieldsSupport.js +65 -70
  144. package/build/server/design/components/providerModelFieldsSupport.js.map +1 -1
  145. package/build/server/design/components/useProviderCatalogState.d.ts +2 -2
  146. package/build/server/design/components/useProviderCatalogState.d.ts.map +1 -1
  147. package/build/server/design/components/useProviderCatalogState.js +71 -151
  148. package/build/server/design/components/useProviderCatalogState.js.map +1 -1
  149. package/build/server/design/components/useProviderModelFieldActions.js +2 -2
  150. package/build/server/design/components/useProviderModelFieldActions.js.map +1 -1
  151. package/build/server/design/components/useProviderRegistryState.d.ts +1 -7
  152. package/build/server/design/components/useProviderRegistryState.d.ts.map +1 -1
  153. package/build/server/design/components/useProviderRegistryState.js +41 -104
  154. package/build/server/design/components/useProviderRegistryState.js.map +1 -1
  155. package/build/server/design/components/useProviderTargetReconciliation.d.ts +1 -0
  156. package/build/server/design/components/useProviderTargetReconciliation.d.ts.map +1 -1
  157. package/build/server/design/components/useProviderTargetReconciliation.js +3 -2
  158. package/build/server/design/components/useProviderTargetReconciliation.js.map +1 -1
  159. package/build/server/index.js +4 -0
  160. package/build/server/index.js.map +1 -1
  161. package/build/server/platform/apps/packageInstaller.d.ts +19 -0
  162. package/build/server/platform/apps/packageInstaller.d.ts.map +1 -0
  163. package/build/server/platform/apps/packageInstaller.js +92 -0
  164. package/build/server/platform/apps/packageInstaller.js.map +1 -0
  165. package/build/server/platform/apps/registry.d.ts +6 -0
  166. package/build/server/platform/apps/registry.d.ts.map +1 -1
  167. package/build/server/platform/apps/registry.js +24 -0
  168. package/build/server/platform/apps/registry.js.map +1 -1
  169. package/build/server/platform/apps/renderer.d.ts +6 -0
  170. package/build/server/platform/apps/renderer.d.ts.map +1 -0
  171. package/build/server/platform/apps/renderer.js +18 -0
  172. package/build/server/platform/apps/renderer.js.map +1 -0
  173. package/build/server/platform/orchestration/entitySubscriptions/channel.d.ts +2 -1
  174. package/build/server/platform/orchestration/entitySubscriptions/channel.d.ts.map +1 -1
  175. package/build/server/platform/orchestration/entitySubscriptions/channel.js +3 -18
  176. package/build/server/platform/orchestration/entitySubscriptions/channel.js.map +1 -1
  177. package/build/server/platform/orchestration/entitySubscriptions/index.d.ts +1 -0
  178. package/build/server/platform/orchestration/entitySubscriptions/index.d.ts.map +1 -1
  179. package/build/server/platform/orchestration/entitySubscriptions/index.js.map +1 -1
  180. package/build/server/platform/runtime/deliveryClient.d.ts +111 -0
  181. package/build/server/platform/runtime/deliveryClient.d.ts.map +1 -0
  182. package/build/server/platform/runtime/deliveryClient.js +289 -0
  183. package/build/server/platform/runtime/deliveryClient.js.map +1 -0
  184. package/build/server/platform/supervision/providerCapabilityBootstrapYaml.d.ts +1 -0
  185. package/build/server/platform/supervision/providerCapabilityBootstrapYaml.d.ts.map +1 -1
  186. package/build/server/platform/supervision/providerCapabilityBootstrapYaml.js +10 -0
  187. package/build/server/platform/supervision/providerCapabilityBootstrapYaml.js.map +1 -1
  188. package/build/server/platform/supervision/runtimeBoundary.d.ts +11 -1
  189. package/build/server/platform/supervision/runtimeBoundary.d.ts.map +1 -1
  190. package/build/server/platform/supervision/runtimeBoundary.js +2 -2
  191. package/build/server/platform/supervision/runtimeBoundary.js.map +1 -1
  192. package/build/server/platform/transports/telegram/bridge.d.ts +18 -0
  193. package/build/server/platform/transports/telegram/bridge.d.ts.map +1 -1
  194. package/build/server/platform/transports/telegram/bridge.js +176 -0
  195. package/build/server/platform/transports/telegram/bridge.js.map +1 -1
  196. package/build/server/platform/transports/telegram/commandPort.d.ts +40 -0
  197. package/build/server/platform/transports/telegram/commandPort.d.ts.map +1 -0
  198. package/build/server/platform/transports/telegram/commandPort.js +17 -0
  199. package/build/server/platform/transports/telegram/commandPort.js.map +1 -0
  200. package/build/server/platform/transports/telegram/commandRouter.d.ts +22 -0
  201. package/build/server/platform/transports/telegram/commandRouter.d.ts.map +1 -1
  202. package/build/server/platform/transports/telegram/commandRouter.js.map +1 -1
  203. package/build/server/platform/transports/telegram/commands/index.d.ts.map +1 -1
  204. package/build/server/platform/transports/telegram/commands/index.js +38 -0
  205. package/build/server/platform/transports/telegram/commands/index.js.map +1 -1
  206. package/build/server/platform/transports/telegram/ingressDispatch.d.ts +56 -0
  207. package/build/server/platform/transports/telegram/ingressDispatch.d.ts.map +1 -0
  208. package/build/server/platform/transports/telegram/ingressDispatch.js +93 -0
  209. package/build/server/platform/transports/telegram/ingressDispatch.js.map +1 -0
  210. package/build/server/platform/transports/telegram/polling.d.ts +34 -0
  211. package/build/server/platform/transports/telegram/polling.d.ts.map +1 -1
  212. package/build/server/platform/transports/telegram/polling.js +86 -9
  213. package/build/server/platform/transports/telegram/polling.js.map +1 -1
  214. package/build/server/platform/transports/telegram/relay/index.d.ts +3 -0
  215. package/build/server/platform/transports/telegram/relay/index.d.ts.map +1 -1
  216. package/build/server/platform/transports/telegram/relay/index.js +5 -1
  217. package/build/server/platform/transports/telegram/relay/index.js.map +1 -1
  218. package/build/server/platform/transports/telegram/relay/ingress.d.ts +2 -0
  219. package/build/server/platform/transports/telegram/relay/ingress.d.ts.map +1 -1
  220. package/build/server/platform/transports/telegram/relay/ingress.js +1 -1
  221. package/build/server/platform/transports/telegram/relay/ingress.js.map +1 -1
  222. package/build/server/platform/transports/work-delivery/actionTokens.d.ts +66 -0
  223. package/build/server/platform/transports/work-delivery/actionTokens.d.ts.map +1 -0
  224. package/build/server/platform/transports/work-delivery/actionTokens.js +145 -0
  225. package/build/server/platform/transports/work-delivery/actionTokens.js.map +1 -0
  226. package/build/server/platform/transports/work-delivery/contracts.d.ts +172 -0
  227. package/build/server/platform/transports/work-delivery/contracts.d.ts.map +1 -0
  228. package/build/server/platform/transports/work-delivery/contracts.js +26 -0
  229. package/build/server/platform/transports/work-delivery/contracts.js.map +1 -0
  230. package/build/server/platform/transports/work-delivery/deliveryGates.d.ts +32 -0
  231. package/build/server/platform/transports/work-delivery/deliveryGates.d.ts.map +1 -0
  232. package/build/server/platform/transports/work-delivery/deliveryGates.js +45 -0
  233. package/build/server/platform/transports/work-delivery/deliveryGates.js.map +1 -0
  234. package/build/server/platform/transports/work-delivery/inboundClassification.d.ts +31 -0
  235. package/build/server/platform/transports/work-delivery/inboundClassification.d.ts.map +1 -0
  236. package/build/server/platform/transports/work-delivery/inboundClassification.js +52 -0
  237. package/build/server/platform/transports/work-delivery/inboundClassification.js.map +1 -0
  238. package/build/server/platform/transports/work-delivery/outbox.d.ts +84 -0
  239. package/build/server/platform/transports/work-delivery/outbox.d.ts.map +1 -0
  240. package/build/server/platform/transports/work-delivery/outbox.js +270 -0
  241. package/build/server/platform/transports/work-delivery/outbox.js.map +1 -0
  242. package/build/server/platform/transports/work-delivery/permissionEnvelope.d.ts +57 -0
  243. package/build/server/platform/transports/work-delivery/permissionEnvelope.d.ts.map +1 -0
  244. package/build/server/platform/transports/work-delivery/permissionEnvelope.js +74 -0
  245. package/build/server/platform/transports/work-delivery/permissionEnvelope.js.map +1 -0
  246. package/build/server/platform/transports/work-delivery/port.d.ts +60 -0
  247. package/build/server/platform/transports/work-delivery/port.d.ts.map +1 -0
  248. package/build/server/platform/transports/work-delivery/port.js +15 -0
  249. package/build/server/platform/transports/work-delivery/port.js.map +1 -0
  250. package/build/server/platform/transports/work-delivery/proposal.d.ts +31 -0
  251. package/build/server/platform/transports/work-delivery/proposal.d.ts.map +1 -0
  252. package/build/server/platform/transports/work-delivery/proposal.js +59 -0
  253. package/build/server/platform/transports/work-delivery/proposal.js.map +1 -0
  254. package/build/server/platform/transports/work-delivery/readiness.d.ts +61 -0
  255. package/build/server/platform/transports/work-delivery/readiness.d.ts.map +1 -0
  256. package/build/server/platform/transports/work-delivery/readiness.js +123 -0
  257. package/build/server/platform/transports/work-delivery/readiness.js.map +1 -0
  258. package/build/server/platform/transports/work-delivery/stageProjection.d.ts +43 -0
  259. package/build/server/platform/transports/work-delivery/stageProjection.d.ts.map +1 -0
  260. package/build/server/platform/transports/work-delivery/stageProjection.js +132 -0
  261. package/build/server/platform/transports/work-delivery/stageProjection.js.map +1 -0
  262. package/build/server/platform/transports/work-delivery/stateStore.d.ts +21 -0
  263. package/build/server/platform/transports/work-delivery/stateStore.d.ts.map +1 -0
  264. package/build/server/platform/transports/work-delivery/stateStore.js +193 -0
  265. package/build/server/platform/transports/work-delivery/stateStore.js.map +1 -0
  266. package/build/server/platform/transports/work-delivery/telemetry.d.ts +49 -0
  267. package/build/server/platform/transports/work-delivery/telemetry.d.ts.map +1 -0
  268. package/build/server/platform/transports/work-delivery/telemetry.js +80 -0
  269. package/build/server/platform/transports/work-delivery/telemetry.js.map +1 -0
  270. package/build/server/products/chat/api/contracts.d.ts +10 -0
  271. package/build/server/products/chat/api/contracts.d.ts.map +1 -1
  272. package/build/server/products/chat/api/resources/channelRoutes.d.ts.map +1 -1
  273. package/build/server/products/chat/api/resources/channelRoutes.js +27 -1
  274. package/build/server/products/chat/api/resources/channelRoutes.js.map +1 -1
  275. package/build/server/products/chat/api/routeSupport.d.ts +17 -1
  276. package/build/server/products/chat/api/routeSupport.d.ts.map +1 -1
  277. package/build/server/products/chat/api/routeSupport.js +27 -4
  278. package/build/server/products/chat/api/routeSupport.js.map +1 -1
  279. package/build/server/products/chat/api/setupRoutes.d.ts.map +1 -1
  280. package/build/server/products/chat/api/setupRoutes.js +23 -8
  281. package/build/server/products/chat/api/setupRoutes.js.map +1 -1
  282. package/build/server/products/chat/state/model/channelExecutionTargets.d.ts +15 -0
  283. package/build/server/products/chat/state/model/channelExecutionTargets.d.ts.map +1 -1
  284. package/build/server/products/chat/state/model/channelExecutionTargets.js +25 -0
  285. package/build/server/products/chat/state/model/channelExecutionTargets.js.map +1 -1
  286. package/build/server/products/chat/state/model/index.d.ts +1 -1
  287. package/build/server/products/chat/state/model/index.d.ts.map +1 -1
  288. package/build/server/products/chat/state/model/index.js +1 -1
  289. package/build/server/products/chat/state/model/index.js.map +1 -1
  290. package/build/server/products/chat/state/model/readModels.d.ts +1 -0
  291. package/build/server/products/chat/state/model/readModels.d.ts.map +1 -1
  292. package/build/server/products/chat/state/model/readModels.js +2 -1
  293. package/build/server/products/chat/state/model/readModels.js.map +1 -1
  294. package/build/server/products/code/api/relayRoutes.d.ts.map +1 -1
  295. package/build/server/products/code/api/relayRoutes.js +36 -7
  296. package/build/server/products/code/api/relayRoutes.js.map +1 -1
  297. package/build/server/products/code/state/relayState.d.ts +2 -1
  298. package/build/server/products/code/state/relayState.d.ts.map +1 -1
  299. package/build/server/products/code/state/relayState.js +7 -7
  300. package/build/server/products/code/state/relayState.js.map +1 -1
  301. package/build/server/products/shared/api/workspaceContracts.d.ts +5 -0
  302. package/build/server/products/shared/api/workspaceContracts.d.ts.map +1 -1
  303. package/build/server/products/shared/renderer/api/appShell.d.ts +1 -0
  304. package/build/server/products/shared/renderer/api/appShell.d.ts.map +1 -1
  305. package/build/server/products/shared/renderer/api/appShell.js +9 -0
  306. package/build/server/products/shared/renderer/api/appShell.js.map +1 -1
  307. package/build/server/products/work/api/goldenPathProjection.d.ts +156 -0
  308. package/build/server/products/work/api/goldenPathProjection.d.ts.map +1 -0
  309. package/build/server/products/work/api/goldenPathProjection.js +252 -0
  310. package/build/server/products/work/api/goldenPathProjection.js.map +1 -0
  311. package/build/server/products/work/api/index.d.ts +54 -1
  312. package/build/server/products/work/api/index.d.ts.map +1 -1
  313. package/build/server/products/work/api/index.js +182 -4
  314. package/build/server/products/work/api/index.js.map +1 -1
  315. package/build/server/products/work/api/projection.d.ts +7 -1
  316. package/build/server/products/work/api/projection.d.ts.map +1 -1
  317. package/build/server/products/work/api/projection.js +7 -1
  318. package/build/server/products/work/api/projection.js.map +1 -1
  319. package/build/server/products/work/shared/apiPaths.d.ts +8 -0
  320. package/build/server/products/work/shared/apiPaths.d.ts.map +1 -1
  321. package/build/server/products/work/shared/apiPaths.js +8 -0
  322. package/build/server/products/work/shared/apiPaths.js.map +1 -1
  323. package/build/server/products/work/shared/workGoldenPathMessages.d.ts +83 -0
  324. package/build/server/products/work/shared/workGoldenPathMessages.d.ts.map +1 -0
  325. package/build/server/products/work/shared/workGoldenPathMessages.js +211 -0
  326. package/build/server/products/work/shared/workGoldenPathMessages.js.map +1 -0
  327. package/build/server/products/work/shared/workGoldenPathMetadata.d.ts +45 -0
  328. package/build/server/products/work/shared/workGoldenPathMetadata.d.ts.map +1 -0
  329. package/build/server/products/work/shared/workGoldenPathMetadata.js +122 -0
  330. package/build/server/products/work/shared/workGoldenPathMetadata.js.map +1 -0
  331. package/build/server/products/work/state/workCompletionEvidence.d.ts +42 -0
  332. package/build/server/products/work/state/workCompletionEvidence.d.ts.map +1 -0
  333. package/build/server/products/work/state/workCompletionEvidence.js +59 -0
  334. package/build/server/products/work/state/workCompletionEvidence.js.map +1 -0
  335. package/build/server/products/work/state/workExecutionTaskDelegate.d.ts +16 -0
  336. package/build/server/products/work/state/workExecutionTaskDelegate.d.ts.map +1 -1
  337. package/build/server/products/work/state/workExecutionTaskDelegate.js +91 -68
  338. package/build/server/products/work/state/workExecutionTaskDelegate.js.map +1 -1
  339. package/build/server/products/work/state/workGoldenPathAdmission.d.ts +78 -0
  340. package/build/server/products/work/state/workGoldenPathAdmission.d.ts.map +1 -0
  341. package/build/server/products/work/state/workGoldenPathAdmission.js +249 -0
  342. package/build/server/products/work/state/workGoldenPathAdmission.js.map +1 -0
  343. package/build/server/products/work/state/workGoldenPathDeliveryEvidence.d.ts +33 -0
  344. package/build/server/products/work/state/workGoldenPathDeliveryEvidence.d.ts.map +1 -0
  345. package/build/server/products/work/state/workGoldenPathDeliveryEvidence.js +161 -0
  346. package/build/server/products/work/state/workGoldenPathDeliveryEvidence.js.map +1 -0
  347. package/build/server/products/work/state/workGoldenPathIntake.d.ts +34 -0
  348. package/build/server/products/work/state/workGoldenPathIntake.d.ts.map +1 -0
  349. package/build/server/products/work/state/workGoldenPathIntake.js +50 -0
  350. package/build/server/products/work/state/workGoldenPathIntake.js.map +1 -0
  351. package/build/server/products/work/state/workGoldenPathLifecycle.d.ts +44 -0
  352. package/build/server/products/work/state/workGoldenPathLifecycle.d.ts.map +1 -0
  353. package/build/server/products/work/state/workGoldenPathLifecycle.js +146 -0
  354. package/build/server/products/work/state/workGoldenPathLifecycle.js.map +1 -0
  355. package/build/server/products/work/state/workGoldenPathPublish.d.ts +84 -0
  356. package/build/server/products/work/state/workGoldenPathPublish.d.ts.map +1 -0
  357. package/build/server/products/work/state/workGoldenPathPublish.js +488 -0
  358. package/build/server/products/work/state/workGoldenPathPublish.js.map +1 -0
  359. package/build/server/products/work/state/workGoldenPathRunner.d.ts +121 -0
  360. package/build/server/products/work/state/workGoldenPathRunner.d.ts.map +1 -0
  361. package/build/server/products/work/state/workGoldenPathRunner.js +447 -0
  362. package/build/server/products/work/state/workGoldenPathRunner.js.map +1 -0
  363. package/build/server/products/work/state/workGoldenPathRuntimeExecutor.d.ts +74 -0
  364. package/build/server/products/work/state/workGoldenPathRuntimeExecutor.d.ts.map +1 -0
  365. package/build/server/products/work/state/workGoldenPathRuntimeExecutor.js +239 -0
  366. package/build/server/products/work/state/workGoldenPathRuntimeExecutor.js.map +1 -0
  367. package/build/server/products/work/state/workGoldenPathService.d.ts +152 -0
  368. package/build/server/products/work/state/workGoldenPathService.d.ts.map +1 -0
  369. package/build/server/products/work/state/workGoldenPathService.js +1057 -0
  370. package/build/server/products/work/state/workGoldenPathService.js.map +1 -0
  371. package/build/server/products/work/state/workGoldenPathTelegramPort.d.ts +87 -0
  372. package/build/server/products/work/state/workGoldenPathTelegramPort.d.ts.map +1 -0
  373. package/build/server/products/work/state/workGoldenPathTelegramPort.js +220 -0
  374. package/build/server/products/work/state/workGoldenPathTelegramPort.js.map +1 -0
  375. package/build/server/runtime/client.d.ts +13 -0
  376. package/build/server/runtime/client.d.ts.map +1 -1
  377. package/build/server/runtime/client.js +44 -1
  378. package/build/server/runtime/client.js.map +1 -1
  379. package/build/server/runtime/setup.d.ts +14 -4
  380. package/build/server/runtime/setup.d.ts.map +1 -1
  381. package/build/server/runtime/setup.js +17 -19
  382. package/build/server/runtime/setup.js.map +1 -1
  383. package/build/server/runtime/usageSnapshot.d.ts +3 -0
  384. package/build/server/runtime/usageSnapshot.d.ts.map +1 -0
  385. package/build/server/runtime/usageSnapshot.js +69 -0
  386. package/build/server/runtime/usageSnapshot.js.map +1 -0
  387. package/build/server/server/routes/providerCapabilityBootstrap.d.ts +69 -0
  388. package/build/server/server/routes/providerCapabilityBootstrap.d.ts.map +1 -0
  389. package/build/server/server/routes/providerCapabilityBootstrap.js +165 -0
  390. package/build/server/server/routes/providerCapabilityBootstrap.js.map +1 -0
  391. package/build/server/server/routes/providers.d.ts.map +1 -1
  392. package/build/server/server/routes/providers.js +133 -131
  393. package/build/server/server/routes/providers.js.map +1 -1
  394. package/build/server/server/routes/telegram.d.ts +9 -0
  395. package/build/server/server/routes/telegram.d.ts.map +1 -1
  396. package/build/server/server/routes/telegram.js +79 -72
  397. package/build/server/server/routes/telegram.js.map +1 -1
  398. package/build/server/shared/catsAppManifest.d.ts +3 -1
  399. package/build/server/shared/catsAppManifest.d.ts.map +1 -1
  400. package/build/server/shared/catsAppManifest.js +2 -0
  401. package/build/server/shared/catsAppManifest.js.map +1 -1
  402. package/build/server/shared/desktopRecoveryBridge.d.ts +2 -1
  403. package/build/server/shared/desktopRecoveryBridge.d.ts.map +1 -1
  404. package/build/server/shared/desktopRecoveryBridge.js.map +1 -1
  405. package/build/server/shared/executionLabel.d.ts.map +1 -1
  406. package/build/server/shared/executionLabel.js +8 -1
  407. package/build/server/shared/executionLabel.js.map +1 -1
  408. package/build/server/shared/i18n/catalogs/en.d.ts.map +1 -1
  409. package/build/server/shared/i18n/catalogs/en.js +198 -3
  410. package/build/server/shared/i18n/catalogs/en.js.map +1 -1
  411. package/build/server/shared/i18n/catalogs/zh-TW.d.ts.map +1 -1
  412. package/build/server/shared/i18n/catalogs/zh-TW.js +197 -3
  413. package/build/server/shared/i18n/catalogs/zh-TW.js.map +1 -1
  414. package/build/server/shared/i18n/index.d.ts +192 -0
  415. package/build/server/shared/i18n/index.d.ts.map +1 -1
  416. package/build/server/shared/i18n/messageKeys.d.ts +192 -0
  417. package/build/server/shared/i18n/messageKeys.d.ts.map +1 -1
  418. package/build/server/shared/i18n/messageKeys.js +192 -0
  419. package/build/server/shared/i18n/messageKeys.js.map +1 -1
  420. package/build/server/shared/platformSetupOperation.d.ts +2 -0
  421. package/build/server/shared/platformSetupOperation.d.ts.map +1 -0
  422. package/build/server/shared/platformSetupOperation.js +9 -0
  423. package/build/server/shared/platformSetupOperation.js.map +1 -0
  424. package/build/server/shared/providerCatalog.d.ts +5 -2
  425. package/build/server/shared/providerCatalog.d.ts.map +1 -1
  426. package/build/server/shared/providerCatalog.js +6 -0
  427. package/build/server/shared/providerCatalog.js.map +1 -1
  428. package/build/server/shared/providerCatalogData.d.ts +154 -77
  429. package/build/server/shared/providerCatalogData.d.ts.map +1 -1
  430. package/build/server/shared/providerCatalogData.js +73 -36
  431. package/build/server/shared/providerCatalogData.js.map +1 -1
  432. package/build/server/shared/providerCatalogInstances.d.ts.map +1 -1
  433. package/build/server/shared/providerCatalogInstances.js +3 -0
  434. package/build/server/shared/providerCatalogInstances.js.map +1 -1
  435. package/build/server/shared/providerModelLabelRegistry.d.ts +29 -0
  436. package/build/server/shared/providerModelLabelRegistry.d.ts.map +1 -0
  437. package/build/server/shared/providerModelLabelRegistry.js +49 -0
  438. package/build/server/shared/providerModelLabelRegistry.js.map +1 -0
  439. package/build/server/shared/providerRegistryWarnings.d.ts +4 -0
  440. package/build/server/shared/providerRegistryWarnings.d.ts.map +1 -1
  441. package/build/server/shared/providerRegistryWarnings.js +7 -0
  442. package/build/server/shared/providerRegistryWarnings.js.map +1 -1
  443. package/build/server/shared/providerSelection.d.ts.map +1 -1
  444. package/build/server/shared/providerSelection.js +10 -13
  445. package/build/server/shared/providerSelection.js.map +1 -1
  446. package/build/server/shared/runtimeSetup.d.ts +17 -4
  447. package/build/server/shared/runtimeSetup.d.ts.map +1 -1
  448. package/build/server/shared/runtimeStatusPresentation.js +1 -1
  449. package/build/server/shared/runtimeStatusPresentation.js.map +1 -1
  450. package/package.json +32 -3
  451. package/packages/app-sdk/browser.d.ts +51 -0
  452. package/packages/app-sdk/browser.js +48 -0
  453. package/packages/app-sdk/package.d.ts +14 -0
  454. package/packages/app-sdk/package.js +131 -0
  455. package/packages/app-sdk/package.json +7 -0
  456. package/packages/provider-setup/manager.d.ts +79 -0
  457. package/packages/provider-setup/manager.js +441 -0
  458. package/scripts/README.md +66 -26
  459. package/scripts/build-desktop-installer.mjs +139 -16
  460. package/scripts/build-test-ui.mjs +1 -1
  461. package/scripts/bundle-server.mjs +23 -10
  462. package/scripts/linux/build-desktop-package.sh +6 -6
  463. package/scripts/linux/install-antigravity.sh +0 -0
  464. package/scripts/linux/install-devin.sh +0 -0
  465. package/scripts/linux/install-github-cli.sh +5 -0
  466. package/scripts/linux/install-meta-cli.sh +8 -0
  467. package/scripts/linux/install-node.sh +9 -3
  468. package/scripts/linux/node-cli-common.sh +87 -48
  469. package/scripts/linux/provider-cli-common.sh +178 -130
  470. package/scripts/linux/provider-version-common.sh +247 -0
  471. package/scripts/linux/sync-agent-skills.sh +27 -5
  472. package/scripts/linux/test-linux-package-smoke.sh +6 -3
  473. package/scripts/linux/upgrade-cli-tools.sh +1 -1
  474. package/scripts/linux/verified-npm-update.sh +20 -0
  475. package/scripts/macos/build-desktop-package.sh +5 -5
  476. package/scripts/macos/install-antigravity.sh +0 -0
  477. package/scripts/macos/install-devin.sh +0 -0
  478. package/scripts/macos/install-github-cli.sh +5 -0
  479. package/scripts/macos/install-meta-cli.sh +8 -0
  480. package/scripts/macos/install-node.sh +9 -3
  481. package/scripts/macos/node-cli-common.sh +87 -48
  482. package/scripts/macos/provider-cli-common.sh +178 -130
  483. package/scripts/macos/provider-version-common.sh +247 -0
  484. package/scripts/macos/sync-agent-skills.sh +27 -5
  485. package/scripts/macos/test-macos-package-smoke.sh +6 -3
  486. package/scripts/macos/upgrade-cli-tools.sh +1 -1
  487. package/scripts/macos/verified-npm-update.sh +20 -0
  488. package/scripts/package-desktop.mjs +15 -2
  489. package/scripts/testing/check-usage-app.mts +266 -0
  490. package/scripts/testing/conversation-navigation-smoke-electron.cjs +134 -0
  491. package/scripts/testing/conversation-navigation-smoke-renderer.tsx +102 -0
  492. package/scripts/testing/conversation-navigation-smoke.mjs +67 -0
  493. package/scripts/testing/usage-app-smoke-electron.cjs +10 -0
  494. package/scripts/testing/usage-app-smoke-renderer.tsx +8 -0
  495. package/scripts/validate-release-assets.mjs +4 -1
  496. package/scripts/verify-desktop-app-bundle.mjs +108 -0
  497. package/scripts/windows/Build-DesktopPackage.ps1 +9 -6
  498. package/scripts/windows/Install-Antigravity.ps1 +26 -3
  499. package/scripts/windows/Install-ClaudeCode.ps1 +25 -7
  500. package/scripts/windows/Install-CursorAgent.ps1 +45 -30
  501. package/scripts/windows/Install-Devin.ps1 +16 -47
  502. package/scripts/windows/Install-GitHubCli.ps1 +4 -0
  503. package/scripts/windows/Install-Goose.ps1 +18 -1
  504. package/scripts/windows/Install-Grok.ps1 +14 -1
  505. package/scripts/windows/Install-Junie.ps1 +32 -11
  506. package/scripts/windows/Install-KiroCli.ps1 +37 -13
  507. package/scripts/windows/Install-MetaCli.ps1 +463 -0
  508. package/scripts/windows/Install-Node.ps1 +6 -1
  509. package/scripts/windows/Install-Ollama.ps1 +4 -1
  510. package/scripts/windows/Setup-NodeGlobalPrefix.ps1 +10 -0
  511. package/scripts/windows/Sync-AgentSkills.ps1 +29 -6
  512. package/scripts/windows/Test-WindowsInstallerSmoke.ps1 +4 -1
  513. package/scripts/windows/_HiddenProcess.ps1 +14 -3
  514. package/scripts/windows/_NativeInstallerSupport.ps1 +308 -0
  515. package/scripts/windows/_NpmCliInstaller.ps1 +35 -14
  516. package/scripts/windows/_PackagedUninstall.ps1 +9 -1
  517. package/scripts/windows/_VerifiedNpmUpdate.ps1 +25 -0
  518. package/build/desktop/updateNotifications.d.ts +0 -64
  519. package/build/desktop/updateNotifications.d.ts.map +0 -1
  520. package/build/desktop/updateNotifications.js +0 -143
  521. package/build/desktop/updateNotifications.js.map +0 -1
  522. package/build/renderer/assets/ActiveSessionPermissionChip-DImsuR9T.js +0 -1
  523. package/build/renderer/assets/App-BfOvMP2m.js +0 -1
  524. package/build/renderer/assets/App-DGwkRFZl.css +0 -1
  525. package/build/renderer/assets/App-DWd7I3Z2.js +0 -2
  526. package/build/renderer/assets/WorkspaceAppRoutes-CrbTA9En.js +0 -1
  527. package/build/renderer/assets/app-BTww3Hl4.js +0 -43
  528. package/build/renderer/assets/app-CPxWQwLA.css +0 -1
  529. package/build/renderer/assets/conversationSidebarRecentEntries-QuaOPxCb.js +0 -6
  530. package/build/server/app/renderer/settings/runtimeLifecycleHelpers.d.ts +0 -48
  531. package/build/server/app/renderer/settings/runtimeLifecycleHelpers.d.ts.map +0 -1
  532. package/build/server/app/renderer/settings/runtimeLifecycleHelpers.js +0 -535
  533. package/build/server/app/renderer/settings/runtimeLifecycleHelpers.js.map +0 -1
  534. package/build/server/design/components/useProviderRegistryAutoRecheck.d.ts +0 -13
  535. package/build/server/design/components/useProviderRegistryAutoRecheck.d.ts.map +0 -1
  536. package/build/server/design/components/useProviderRegistryAutoRecheck.js +0 -63
  537. package/build/server/design/components/useProviderRegistryAutoRecheck.js.map +0 -1
  538. package/build/server/products/shared/renderer/api/providerCatalogRefreshStore.d.ts +0 -19
  539. package/build/server/products/shared/renderer/api/providerCatalogRefreshStore.d.ts.map +0 -1
  540. package/build/server/products/shared/renderer/api/providerCatalogRefreshStore.js +0 -53
  541. package/build/server/products/shared/renderer/api/providerCatalogRefreshStore.js.map +0 -1
  542. package/build/server/products/shared/renderer/api/providers.d.ts +0 -17
  543. package/build/server/products/shared/renderer/api/providers.d.ts.map +0 -1
  544. package/build/server/products/shared/renderer/api/providers.js +0 -50
  545. package/build/server/products/shared/renderer/api/providers.js.map +0 -1
  546. package/scripts/linux/install-aider.sh +0 -8
  547. package/scripts/macos/install-aider.sh +0 -8
  548. package/scripts/windows/Install-Aider.ps1 +0 -368
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Shared delegation-readiness evaluator (SPEC-114 FR-1..FR-5, PLAN-105 Phase 1).
3
+ *
4
+ * Telegram and Desktop must answer "can this binding accept work right now?"
5
+ * with the same reason codes. Duplicating the rules in a transport handler and
6
+ * again in a settings page is how a bot ends up claiming work is queued while
7
+ * Desktop shows a missing provider, so both call this.
8
+ */
9
+ import type { CoreDeliveryGate, CoreDeliveryMode } from '../../../core/types.js';
10
+ import type { TransportWorkPermissionEnvelope } from './permissionEnvelope.js';
11
+ import type { TransportWorkReadiness } from './contracts.js';
12
+ /**
13
+ * Facts the evaluator needs. Every field is a resolved observation rather than
14
+ * a service handle, so the evaluator stays pure and both callers can assemble
15
+ * it from whatever they already hold.
16
+ */
17
+ export interface TransportWorkReadinessInput {
18
+ bindingEnabled: boolean;
19
+ /** Polling or webhook ingress is currently healthy. */
20
+ bindingHealthy: boolean;
21
+ /** The external user is the authorized owner for this binding. */
22
+ ownerAuthorized: boolean;
23
+ boundCatId: string | null;
24
+ /** Resolved provider/model execution target for the bound Cat. */
25
+ executionTargetId: string | null;
26
+ /** A provider capability profile has been resolved (not merely defaulted). */
27
+ capabilityProfileResolved: boolean;
28
+ /** Absolute workspace/project root the work would run against. */
29
+ workspacePath: string | null;
30
+ /**
31
+ * The resolved permission envelope, not a summary of it. Its reasons become
32
+ * blockers directly so Desktop can say *which* prerequisite is missing
33
+ * instead of "permissions".
34
+ */
35
+ permission: TransportWorkPermissionEnvelope;
36
+ deliveryMode: CoreDeliveryMode | null;
37
+ deliveryGates: readonly CoreDeliveryGate[] | null;
38
+ /**
39
+ * Desktop background service is running. A local-first binding cannot honour
40
+ * work while the host is asleep, and FR-5 forbids implying otherwise.
41
+ */
42
+ backgroundServiceAvailable: boolean;
43
+ }
44
+ /**
45
+ * Evaluates every prerequisite and reports *all* blockers rather than the first.
46
+ *
47
+ * Reporting one at a time turns setup into a guessing game where each fix
48
+ * reveals the next missing piece.
49
+ */
50
+ export declare function evaluateTransportWorkReadiness(input: TransportWorkReadinessInput): TransportWorkReadiness;
51
+ /**
52
+ * Default delivery mode for a target (PLAN-105 Phase 0 open question, resolved
53
+ * by owner direction): a repo workspace commits, anything else produces an
54
+ * artifact. The proposal must still show the resolved mode before confirmation,
55
+ * so this is a default and never a silent decision.
56
+ */
57
+ export declare function resolveDefaultDeliveryMode(input: {
58
+ workspacePath: string | null;
59
+ isRepo: boolean;
60
+ }): CoreDeliveryMode;
61
+ //# sourceMappingURL=readiness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readiness.d.ts","sourceRoot":"","sources":["../../../../../src/platform/transports/work-delivery/readiness.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,KAAK,EACV,+BAA+B,EAEhC,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EACV,sBAAsB,EAGvB,MAAM,gBAAgB,CAAC;AAExB;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C,cAAc,EAAE,OAAO,CAAC;IACxB,uDAAuD;IACvD,cAAc,EAAE,OAAO,CAAC;IACxB,kEAAkE;IAClE,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kEAAkE;IAClE,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,8EAA8E;IAC9E,yBAAyB,EAAE,OAAO,CAAC;IACnC,kEAAkE;IAClE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;OAIG;IACH,UAAU,EAAE,+BAA+B,CAAC;IAC5C,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACtC,aAAa,EAAE,SAAS,gBAAgB,EAAE,GAAG,IAAI,CAAC;IAClD;;;OAGG;IACH,0BAA0B,EAAE,OAAO,CAAC;CACrC;AA8ED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,2BAA2B,GACjC,sBAAsB,CAgCxB;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,OAAO,CAAC;CACjB,GAAG,gBAAgB,CAEnB"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Shared delegation-readiness evaluator (SPEC-114 FR-1..FR-5, PLAN-105 Phase 1).
3
+ *
4
+ * Telegram and Desktop must answer "can this binding accept work right now?"
5
+ * with the same reason codes. Duplicating the rules in a transport handler and
6
+ * again in a settings page is how a bot ends up claiming work is queued while
7
+ * Desktop shows a missing provider, so both call this.
8
+ */
9
+ /**
10
+ * Remediation copy is referenced by key, never inlined: FR-3 requires localized
11
+ * remediation, and a raw English string here would bypass product i18n.
12
+ */
13
+ const REMEDIATION = {
14
+ binding_disabled: {
15
+ remediationKey: 'workDelivery.readiness.bindingDisabled',
16
+ remediationPath: '/settings/chat',
17
+ },
18
+ binding_unhealthy: {
19
+ remediationKey: 'workDelivery.readiness.bindingUnhealthy',
20
+ remediationPath: '/settings/chat',
21
+ },
22
+ owner_not_authorized: {
23
+ remediationKey: 'workDelivery.readiness.ownerNotAuthorized',
24
+ remediationPath: '/settings/work',
25
+ },
26
+ cat_not_bound: {
27
+ remediationKey: 'workDelivery.readiness.catNotBound',
28
+ remediationPath: '/settings/chat',
29
+ },
30
+ execution_target_missing: {
31
+ remediationKey: 'workDelivery.readiness.executionTargetMissing',
32
+ remediationPath: '/settings/assistants',
33
+ },
34
+ capability_profile_missing: {
35
+ remediationKey: 'workDelivery.readiness.capabilityProfileMissing',
36
+ remediationPath: '/settings/assistants',
37
+ },
38
+ workspace_missing: {
39
+ remediationKey: 'workDelivery.readiness.workspaceMissing',
40
+ remediationPath: '/settings/work',
41
+ },
42
+ workspace_unreachable: {
43
+ remediationKey: 'workDelivery.readiness.workspaceUnreachable',
44
+ remediationPath: '/settings/work',
45
+ },
46
+ workspace_not_a_repository: {
47
+ remediationKey: 'workDelivery.readiness.workspaceNotARepository',
48
+ remediationPath: '/settings/work',
49
+ },
50
+ workspace_not_clean: {
51
+ remediationKey: 'workDelivery.readiness.workspaceNotClean',
52
+ remediationPath: '/workspaces',
53
+ },
54
+ delivery_policy_unresolved: {
55
+ remediationKey: 'workDelivery.readiness.deliveryPolicyUnresolved',
56
+ remediationPath: '/settings/work',
57
+ },
58
+ background_service_unavailable: {
59
+ remediationKey: 'workDelivery.readiness.backgroundServiceUnavailable',
60
+ remediationPath: '/settings/desktop',
61
+ },
62
+ };
63
+ /**
64
+ * Permission reasons are readiness blockers in their own right. Collapsing them
65
+ * into one "permissions" code is what made the old surface unactionable.
66
+ */
67
+ const PERMISSION_BLOCKERS = {
68
+ workspace_not_configured: 'workspace_missing',
69
+ workspace_unreachable: 'workspace_unreachable',
70
+ workspace_not_a_repository: 'workspace_not_a_repository',
71
+ workspace_not_clean: 'workspace_not_clean',
72
+ };
73
+ function blocker(reason) {
74
+ return { reason, ...REMEDIATION[reason] };
75
+ }
76
+ /**
77
+ * Evaluates every prerequisite and reports *all* blockers rather than the first.
78
+ *
79
+ * Reporting one at a time turns setup into a guessing game where each fix
80
+ * reveals the next missing piece.
81
+ */
82
+ export function evaluateTransportWorkReadiness(input) {
83
+ const blockers = [];
84
+ if (!input.bindingEnabled) {
85
+ blockers.push(blocker('binding_disabled'));
86
+ }
87
+ else if (!input.bindingHealthy) {
88
+ // Only meaningful for an enabled binding; a disabled one is not "unhealthy".
89
+ blockers.push(blocker('binding_unhealthy'));
90
+ }
91
+ if (!input.ownerAuthorized) {
92
+ blockers.push(blocker('owner_not_authorized'));
93
+ }
94
+ if (input.boundCatId === null) {
95
+ blockers.push(blocker('cat_not_bound'));
96
+ }
97
+ if (input.executionTargetId === null) {
98
+ blockers.push(blocker('execution_target_missing'));
99
+ }
100
+ if (!input.capabilityProfileResolved) {
101
+ blockers.push(blocker('capability_profile_missing'));
102
+ }
103
+ for (const reason of input.permission.reasons) {
104
+ blockers.push(blocker(PERMISSION_BLOCKERS[reason]));
105
+ }
106
+ if (input.deliveryMode === null || input.deliveryGates === null) {
107
+ blockers.push(blocker('delivery_policy_unresolved'));
108
+ }
109
+ if (!input.backgroundServiceAvailable) {
110
+ blockers.push(blocker('background_service_unavailable'));
111
+ }
112
+ return { ready: blockers.length === 0, blockers };
113
+ }
114
+ /**
115
+ * Default delivery mode for a target (PLAN-105 Phase 0 open question, resolved
116
+ * by owner direction): a repo workspace commits, anything else produces an
117
+ * artifact. The proposal must still show the resolved mode before confirmation,
118
+ * so this is a default and never a silent decision.
119
+ */
120
+ export function resolveDefaultDeliveryMode(input) {
121
+ return input.workspacePath !== null && input.isRepo ? 'commit_only' : 'artifact_only';
122
+ }
123
+ //# sourceMappingURL=readiness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readiness.js","sourceRoot":"","sources":["../../../../../src/platform/transports/work-delivery/readiness.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Golden-path stage projection (ADR-112 section 2, SPEC-114 FR-49).
3
+ *
4
+ * This is a pure derivation from authoritative Cats Core records plus transport
5
+ * receipts. It holds no state of its own, which is what keeps it from becoming
6
+ * the second state machine ADR-112 forbids: every call recomputes the stage
7
+ * from scratch, so it cannot drift away from Core.
8
+ */
9
+ import type { CoreArtifactRecord, CoreDeliveryGate, CoreDeliveryMode, CoreOrchestrationOutcomeRecord, CoreRunRecord, CoreTaskRecord, CoreWorkItemRecord } from '../../../core/types.js';
10
+ import type { TransportWorkAction, TransportWorkProposalV1, TransportWorkStage } from './contracts.js';
11
+ import type { TransportWorkDeliveryV1 } from './contracts.js';
12
+ export interface TransportWorkStageInput {
13
+ workItem: CoreWorkItemRecord;
14
+ proposal: TransportWorkProposalV1 | null;
15
+ task: CoreTaskRecord | null;
16
+ run: CoreRunRecord | null;
17
+ outcome: CoreOrchestrationOutcomeRecord | null;
18
+ artifacts: readonly CoreArtifactRecord[];
19
+ /** Commit evidence for repository-backed modes; null for `artifact_only`. */
20
+ commitId: string | null;
21
+ /** Gates that still require an owner decision before publication. */
22
+ outstandingGates: readonly CoreDeliveryGate[];
23
+ deliveryRows: readonly TransportWorkDeliveryV1[];
24
+ /** True when the supervised run is waiting on an owner decision. */
25
+ awaitingOwnerDecision: boolean;
26
+ }
27
+ export interface TransportWorkStageProjection {
28
+ stage: TransportWorkStage;
29
+ /** Why the stage is what it is; surfaced in Desktop and diagnostics. */
30
+ rationale: string;
31
+ allowedActions: TransportWorkAction[];
32
+ deliveryMode: CoreDeliveryMode | null;
33
+ outstandingGates: CoreDeliveryGate[];
34
+ }
35
+ /**
36
+ * Derives the owner-visible stage.
37
+ *
38
+ * Order matters: terminal states win over progress states, and a persisted
39
+ * delivery receipt wins over everything, because `delivered` is defined by the
40
+ * receipt rather than by the Run (ADR-112 section 6).
41
+ */
42
+ export declare function projectTransportWorkStage(input: TransportWorkStageInput): TransportWorkStageProjection;
43
+ //# sourceMappingURL=stageProjection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stageProjection.d.ts","sourceRoot":"","sources":["../../../../../src/platform/transports/work-delivery/stageProjection.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAEV,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,8BAA8B,EAC9B,aAAa,EACb,cAAc,EACd,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAE9D,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,QAAQ,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACzC,IAAI,EAAE,cAAc,GAAG,IAAI,CAAC;IAC5B,GAAG,EAAE,aAAa,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,8BAA8B,GAAG,IAAI,CAAC;IAC/C,SAAS,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACzC,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,qEAAqE;IACrE,gBAAgB,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC9C,YAAY,EAAE,SAAS,uBAAuB,EAAE,CAAC;IACjD,oEAAoE;IACpE,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,kBAAkB,CAAC;IAC1B,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,mBAAmB,EAAE,CAAC;IACtC,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACtC,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;CACtC;AAyBD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,uBAAuB,GAC7B,4BAA4B,CA8G9B"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Golden-path stage projection (ADR-112 section 2, SPEC-114 FR-49).
3
+ *
4
+ * This is a pure derivation from authoritative Cats Core records plus transport
5
+ * receipts. It holds no state of its own, which is what keeps it from becoming
6
+ * the second state machine ADR-112 forbids: every call recomputes the stage
7
+ * from scratch, so it cannot drift away from Core.
8
+ */
9
+ function hasSentResult(rows) {
10
+ return rows.some((row) => row.state === 'sent'
11
+ && (row.purpose === 'result' || row.purpose === 'publish_result'));
12
+ }
13
+ function hasAcceptedResultEvidence(input) {
14
+ if (input.outcome === null || input.outcome.status !== 'succeeded') {
15
+ return false;
16
+ }
17
+ if (input.proposal !== null && input.proposal.deliveryMode !== 'artifact_only') {
18
+ return input.commitId !== null;
19
+ }
20
+ return input.artifacts.some((artifact) => artifact.status === 'ready' || artifact.status === 'published');
21
+ }
22
+ function isOwnerApproved(status) {
23
+ return status === 'approved';
24
+ }
25
+ /**
26
+ * Derives the owner-visible stage.
27
+ *
28
+ * Order matters: terminal states win over progress states, and a persisted
29
+ * delivery receipt wins over everything, because `delivered` is defined by the
30
+ * receipt rather than by the Run (ADR-112 section 6).
31
+ */
32
+ export function projectTransportWorkStage(input) {
33
+ const deliveryMode = input.proposal?.deliveryMode ?? null;
34
+ const outstandingGates = [...input.outstandingGates];
35
+ const base = {
36
+ deliveryMode,
37
+ outstandingGates,
38
+ };
39
+ if (hasSentResult(input.deliveryRows)) {
40
+ return {
41
+ ...base,
42
+ stage: 'delivered',
43
+ rationale: 'A result message reached the source binding and its receipt is persisted.',
44
+ allowedActions: ['view'],
45
+ };
46
+ }
47
+ if (input.run?.status === 'cancelled' || input.task?.status === 'cancelled') {
48
+ return {
49
+ ...base,
50
+ stage: 'cancelled',
51
+ rationale: 'The authoritative Task or Run is cancelled.',
52
+ allowedActions: ['view'],
53
+ };
54
+ }
55
+ if (input.run?.status === 'failed' || input.outcome?.status === 'failed') {
56
+ return {
57
+ ...base,
58
+ stage: 'failed',
59
+ rationale: 'The authoritative Run or Outcome recorded a terminal failure.',
60
+ allowedActions: ['retry', 'cancel', 'view'],
61
+ };
62
+ }
63
+ if (hasAcceptedResultEvidence(input)) {
64
+ if (outstandingGates.length === 0) {
65
+ return {
66
+ ...base,
67
+ stage: 'publish_authorized',
68
+ rationale: 'Result evidence is accepted and no delivery gate remains outstanding.',
69
+ allowedActions: ['view'],
70
+ };
71
+ }
72
+ return {
73
+ ...base,
74
+ stage: 'result_ready',
75
+ rationale: 'Result evidence is accepted but a delivery gate still requires an owner decision.',
76
+ allowedActions: ['publish', 'deny', 'cancel', 'view'],
77
+ };
78
+ }
79
+ if (input.awaitingOwnerDecision || input.run?.status === 'blocked') {
80
+ return {
81
+ ...base,
82
+ stage: 'decision_needed',
83
+ rationale: 'The supervised Run is blocked on an owner decision.',
84
+ allowedActions: ['approve', 'deny', 'retry', 'cancel', 'view'],
85
+ };
86
+ }
87
+ if (input.run?.status === 'running') {
88
+ return {
89
+ ...base,
90
+ stage: 'running',
91
+ rationale: 'The supervised Run is active.',
92
+ // `resume` is offered because a Run can be `running` with nothing driving
93
+ // it — the usual cause being a host restart mid-flight.
94
+ allowedActions: ['resume', 'cancel', 'view'],
95
+ };
96
+ }
97
+ if (input.run?.status === 'queued') {
98
+ return {
99
+ ...base,
100
+ stage: 'admitted',
101
+ rationale: 'An approved Task and a queued supervised Run exist.',
102
+ allowedActions: ['cancel', 'view'],
103
+ };
104
+ }
105
+ // No Run yet. An approved Task means the owner authorized this revision and
106
+ // admission is mid-flight or was interrupted; that is deliberately distinct
107
+ // from `admitted`, which requires the Run to exist.
108
+ if (input.task !== null && isOwnerApproved(input.task.approval.status)) {
109
+ return {
110
+ ...base,
111
+ stage: 'execution_authorized',
112
+ rationale: 'The owner approved this proposal revision; the supervised Run is not queued yet.',
113
+ allowedActions: ['view'],
114
+ };
115
+ }
116
+ if (input.proposal !== null) {
117
+ return {
118
+ ...base,
119
+ stage: 'scope_proposed',
120
+ rationale: 'A versioned scope proposal is visible and awaiting owner authorization.',
121
+ // `adjust` is withdrawn until the FR-16 clarification loop exists.
122
+ allowedActions: ['start_work', 'cancel', 'view'],
123
+ };
124
+ }
125
+ return {
126
+ ...base,
127
+ stage: 'received',
128
+ rationale: 'The source update was accepted and a durable intake anchor exists.',
129
+ allowedActions: ['cancel', 'view'],
130
+ };
131
+ }
132
+ //# sourceMappingURL=stageProjection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stageProjection.js","sourceRoot":"","sources":["../../../../../src/platform/transports/work-delivery/stageProjection.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA4CH,SAAS,aAAa,CAAC,IAAwC;IAC7D,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CACvB,GAAG,CAAC,KAAK,KAAK,MAAM;WACjB,CAAC,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,KAAK,gBAAgB,CAAC,CAClE,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,KAA8B;IAC/D,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACnE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,KAAK,eAAe,EAAE,CAAC;QAC/E,OAAO,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC;IACjC,CAAC;IACD,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CACvC,QAAQ,CAAC,MAAM,KAAK,OAAO,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,CAC/D,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,MAAsC;IAC7D,OAAO,MAAM,KAAK,UAAU,CAAC;AAC/B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAA8B;IAE9B,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAE,YAAY,IAAI,IAAI,CAAC;IAC1D,MAAM,gBAAgB,GAAG,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAErD,MAAM,IAAI,GAAG;QACX,YAAY;QACZ,gBAAgB;KACjB,CAAC;IAEF,IAAI,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;QACtC,OAAO;YACL,GAAG,IAAI;YACP,KAAK,EAAE,WAAW;YAClB,SAAS,EAAE,2EAA2E;YACtF,cAAc,EAAE,CAAC,MAAM,CAAC;SACzB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,EAAE,MAAM,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,KAAK,WAAW,EAAE,CAAC;QAC5E,OAAO;YACL,GAAG,IAAI;YACP,KAAK,EAAE,WAAW;YAClB,SAAS,EAAE,6CAA6C;YACxD,cAAc,EAAE,CAAC,MAAM,CAAC;SACzB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,EAAE,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAC;QACzE,OAAO;YACL,GAAG,IAAI;YACP,KAAK,EAAE,QAAQ;YACf,SAAS,EAAE,+DAA+D;YAC1E,cAAc,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;SAC5C,CAAC;IACJ,CAAC;IAED,IAAI,yBAAyB,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO;gBACL,GAAG,IAAI;gBACP,KAAK,EAAE,oBAAoB;gBAC3B,SAAS,EAAE,uEAAuE;gBAClF,cAAc,EAAE,CAAC,MAAM,CAAC;aACzB,CAAC;QACJ,CAAC;QACD,OAAO;YACL,GAAG,IAAI;YACP,KAAK,EAAE,cAAc;YACrB,SAAS,EAAE,mFAAmF;YAC9F,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC;SACtD,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,qBAAqB,IAAI,KAAK,CAAC,GAAG,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;QACnE,OAAO;YACL,GAAG,IAAI;YACP,KAAK,EAAE,iBAAiB;YACxB,SAAS,EAAE,qDAAqD;YAChE,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;SAC/D,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO;YACL,GAAG,IAAI;YACP,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,+BAA+B;YAC1C,0EAA0E;YAC1E,wDAAwD;YACxD,cAAc,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;SAC7C,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO;YACL,GAAG,IAAI;YACP,KAAK,EAAE,UAAU;YACjB,SAAS,EAAE,qDAAqD;YAChE,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;SACnC,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,4EAA4E;IAC5E,oDAAoD;IACpD,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACvE,OAAO;YACL,GAAG,IAAI;YACP,KAAK,EAAE,sBAAsB;YAC7B,SAAS,EAAE,kFAAkF;YAC7F,cAAc,EAAE,CAAC,MAAM,CAAC;SACzB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC5B,OAAO;YACL,GAAG,IAAI;YACP,KAAK,EAAE,gBAAgB;YACvB,SAAS,EAAE,yEAAyE;YACpF,mEAAmE;YACnE,cAAc,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC;SACjD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,IAAI;QACP,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,oEAAoE;QAC/E,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;KACnC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Durable state owned by the transport work-delivery boundary.
3
+ *
4
+ * Cats Core remains the work ledger. This store contains only the transport
5
+ * details Core deliberately does not own: opaque callback grants and outbound
6
+ * delivery intents/receipts. Both families share one atomic file so a token or
7
+ * receipt update cannot overwrite the other family with a stale snapshot.
8
+ */
9
+ import type { TransportWorkActionTokenV1, TransportWorkDeliveryV1 } from './contracts.js';
10
+ export interface TransportWorkStateStore {
11
+ listDeliveries(): TransportWorkDeliveryV1[];
12
+ putDelivery(row: TransportWorkDeliveryV1): void;
13
+ listActionTokens(): TransportWorkActionTokenV1[];
14
+ putActionToken(token: TransportWorkActionTokenV1): void;
15
+ deleteActionToken(token: string): boolean;
16
+ deleteActionTokensForWorkItem(workItemId: string): number;
17
+ }
18
+ export declare function createMemoryTransportWorkStateStore(): TransportWorkStateStore;
19
+ export declare function createFileTransportWorkStateStore(statePath: string): TransportWorkStateStore;
20
+ export declare function resolveTransportWorkStatePath(platformStateDir: string): string;
21
+ //# sourceMappingURL=stateStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stateStore.d.ts","sourceRoot":"","sources":["../../../../../src/platform/transports/work-delivery/stateStore.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH,OAAO,KAAK,EACV,0BAA0B,EAC1B,uBAAuB,EACxB,MAAM,gBAAgB,CAAC;AAQxB,MAAM,WAAW,uBAAuB;IACtC,cAAc,IAAI,uBAAuB,EAAE,CAAC;IAC5C,WAAW,CAAC,GAAG,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAChD,gBAAgB,IAAI,0BAA0B,EAAE,CAAC;IACjD,cAAc,CAAC,KAAK,EAAE,0BAA0B,GAAG,IAAI,CAAC;IACxD,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1C,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3D;AAoMD,wBAAgB,mCAAmC,IAAI,uBAAuB,CAE7E;AAED,wBAAgB,iCAAiC,CAAC,SAAS,EAAE,MAAM,GAAG,uBAAuB,CAE5F;AAED,wBAAgB,6BAA6B,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAE9E"}
@@ -0,0 +1,193 @@
1
+ /**
2
+ * Durable state owned by the transport work-delivery boundary.
3
+ *
4
+ * Cats Core remains the work ledger. This store contains only the transport
5
+ * details Core deliberately does not own: opaque callback grants and outbound
6
+ * delivery intents/receipts. Both families share one atomic file so a token or
7
+ * receipt update cannot overwrite the other family with a stale snapshot.
8
+ */
9
+ import { randomUUID } from 'node:crypto';
10
+ import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync, } from 'node:fs';
11
+ import path from 'node:path';
12
+ const DELIVERY_PURPOSES = new Set([
13
+ 'ack',
14
+ 'proposal',
15
+ 'progress',
16
+ 'decision',
17
+ 'result',
18
+ 'publish_result',
19
+ ]);
20
+ const DELIVERY_STATES = new Set(['pending', 'sending', 'sent', 'failed', 'ambiguous']);
21
+ const ACTIONS = new Set([
22
+ 'start_work',
23
+ 'cancel',
24
+ 'approve',
25
+ 'deny',
26
+ 'retry',
27
+ 'resume',
28
+ 'publish',
29
+ 'view',
30
+ ]);
31
+ function isRecord(value) {
32
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
33
+ }
34
+ function isStringOrNull(value) {
35
+ return typeof value === 'string' || value === null;
36
+ }
37
+ function isDelivery(value) {
38
+ if (!isRecord(value) || !isRecord(value.payload) || !Array.isArray(value.payload.actions)) {
39
+ return false;
40
+ }
41
+ return value.version === 1
42
+ && typeof value.idempotencyKey === 'string'
43
+ && typeof value.bindingId === 'string'
44
+ && typeof value.externalConversationRef === 'string'
45
+ && typeof value.workItemId === 'string'
46
+ && isStringOrNull(value.taskId)
47
+ && isStringOrNull(value.runId)
48
+ && typeof value.purpose === 'string'
49
+ && DELIVERY_PURPOSES.has(value.purpose)
50
+ && typeof value.payload.text === 'string'
51
+ && isStringOrNull(value.payload.deepLink)
52
+ && typeof value.state === 'string'
53
+ && DELIVERY_STATES.has(value.state)
54
+ && isStringOrNull(value.externalMessageRef)
55
+ && typeof value.attemptCount === 'number'
56
+ && isStringOrNull(value.lastErrorCode)
57
+ && typeof value.sequence === 'number'
58
+ && typeof value.createdAt === 'string'
59
+ && typeof value.updatedAt === 'string'
60
+ && isStringOrNull(value.sentAt);
61
+ }
62
+ function isActionToken(value) {
63
+ return isRecord(value)
64
+ && value.version === 1
65
+ && typeof value.token === 'string'
66
+ && typeof value.bindingId === 'string'
67
+ && typeof value.ownerActorId === 'string'
68
+ && typeof value.externalUserRef === 'string'
69
+ && typeof value.workItemId === 'string'
70
+ && typeof value.proposalRevision === 'number'
71
+ && typeof value.proposalDigest === 'string'
72
+ && typeof value.action === 'string'
73
+ && ACTIONS.has(value.action)
74
+ && typeof value.issuedAt === 'string'
75
+ && typeof value.expiresAt === 'string';
76
+ }
77
+ function emptyState() {
78
+ return { version: 1, deliveries: [], actionTokens: [] };
79
+ }
80
+ function readState(statePath) {
81
+ if (!existsSync(statePath)) {
82
+ return emptyState();
83
+ }
84
+ try {
85
+ const value = JSON.parse(readFileSync(statePath, 'utf8'));
86
+ if (!isRecord(value) || value.version !== 1) {
87
+ throw new Error('unsupported or missing state version');
88
+ }
89
+ if (!Array.isArray(value.deliveries) || !value.deliveries.every(isDelivery)) {
90
+ throw new Error('invalid delivery row');
91
+ }
92
+ if (!Array.isArray(value.actionTokens) || !value.actionTokens.every(isActionToken)) {
93
+ throw new Error('invalid action token');
94
+ }
95
+ return {
96
+ version: 1,
97
+ deliveries: value.deliveries,
98
+ actionTokens: value.actionTokens,
99
+ };
100
+ }
101
+ catch (error) {
102
+ throw new Error(`Cannot read durable transport-work state at ${statePath}: `
103
+ + (error instanceof Error ? error.message : String(error)), { cause: error });
104
+ }
105
+ }
106
+ function writeState(statePath, state) {
107
+ const directory = path.dirname(statePath);
108
+ mkdirSync(directory, { recursive: true });
109
+ const tempPath = path.join(directory, `.${path.basename(statePath)}.${process.pid}.${randomUUID()}.tmp`);
110
+ try {
111
+ writeFileSync(tempPath, JSON.stringify(state, null, 2), { encoding: 'utf8', mode: 0o600 });
112
+ renameSync(tempPath, statePath);
113
+ }
114
+ finally {
115
+ if (existsSync(tempPath)) {
116
+ rmSync(tempPath, { force: true });
117
+ }
118
+ }
119
+ }
120
+ class MemoryTransportWorkStateStore {
121
+ deliveries = new Map();
122
+ actionTokens = new Map();
123
+ constructor(initial = emptyState()) {
124
+ for (const row of initial.deliveries) {
125
+ this.deliveries.set(row.idempotencyKey, structuredClone(row));
126
+ }
127
+ for (const token of initial.actionTokens) {
128
+ this.actionTokens.set(token.token, { ...token });
129
+ }
130
+ }
131
+ listDeliveries() {
132
+ return [...this.deliveries.values()].map((row) => structuredClone(row));
133
+ }
134
+ putDelivery(row) {
135
+ this.deliveries.set(row.idempotencyKey, structuredClone(row));
136
+ this.changed();
137
+ }
138
+ listActionTokens() {
139
+ return [...this.actionTokens.values()].map((token) => ({ ...token }));
140
+ }
141
+ putActionToken(token) {
142
+ this.actionTokens.set(token.token, { ...token });
143
+ this.changed();
144
+ }
145
+ deleteActionToken(token) {
146
+ const removed = this.actionTokens.delete(token);
147
+ if (removed) {
148
+ this.changed();
149
+ }
150
+ return removed;
151
+ }
152
+ deleteActionTokensForWorkItem(workItemId) {
153
+ let removed = 0;
154
+ for (const [key, token] of this.actionTokens) {
155
+ if (token.workItemId === workItemId) {
156
+ this.actionTokens.delete(key);
157
+ removed += 1;
158
+ }
159
+ }
160
+ if (removed > 0) {
161
+ this.changed();
162
+ }
163
+ return removed;
164
+ }
165
+ changed() { }
166
+ snapshot() {
167
+ return {
168
+ version: 1,
169
+ deliveries: this.listDeliveries(),
170
+ actionTokens: this.listActionTokens(),
171
+ };
172
+ }
173
+ }
174
+ class FileTransportWorkStateStore extends MemoryTransportWorkStateStore {
175
+ statePath;
176
+ constructor(statePath) {
177
+ super(readState(statePath));
178
+ this.statePath = statePath;
179
+ }
180
+ changed() {
181
+ writeState(this.statePath, this.snapshot());
182
+ }
183
+ }
184
+ export function createMemoryTransportWorkStateStore() {
185
+ return new MemoryTransportWorkStateStore();
186
+ }
187
+ export function createFileTransportWorkStateStore(statePath) {
188
+ return new FileTransportWorkStateStore(statePath);
189
+ }
190
+ export function resolveTransportWorkStatePath(platformStateDir) {
191
+ return path.join(platformStateDir, 'transport-work-delivery.json');
192
+ }
193
+ //# sourceMappingURL=stateStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stateStore.js","sourceRoot":"","sources":["../../../../../src/platform/transports/work-delivery/stateStore.ts"],"names":[],"mappings":"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"}