@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,270 @@
1
+ /**
2
+ * Durable transport delivery outbox (SPEC-114 FR-32..FR-33, FR-42..FR-47).
3
+ *
4
+ * This is a narrow, replaceable platform interface rather than a new Core
5
+ * record family (ADR-112 section 1). Production supplies a transport state
6
+ * store; isolated tests may keep using the in-memory form.
7
+ *
8
+ * Three invariants earn this module its existence:
9
+ *
10
+ * 1. one `idempotencyKey` sends at most one external message, across duplicate
11
+ * callbacks, retries, and process restarts;
12
+ * 2. messages for one work item are sent in causal order;
13
+ * 3. a routine progress message that lost its race against a newer decision or
14
+ * terminal message is dropped rather than delivered late.
15
+ */
16
+ /** Purposes that must never be suppressed by a newer message. */
17
+ const PRIORITY_PURPOSES = new Set([
18
+ 'decision',
19
+ 'result',
20
+ 'publish_result',
21
+ ]);
22
+ /** Purposes that are routine and may be coalesced away when stale. */
23
+ const ROUTINE_PURPOSES = new Set([
24
+ 'progress',
25
+ ]);
26
+ function isTerminalState(state) {
27
+ return state === 'sent' || state === 'ambiguous';
28
+ }
29
+ export function createTransportWorkOutbox(options) {
30
+ const now = options.now ?? (() => new Date());
31
+ const telemetry = options.telemetry;
32
+ const rows = new Map();
33
+ const sequenceByWorkItem = new Map();
34
+ const inFlight = new Map();
35
+ const recoveredRows = [
36
+ ...(options.store?.listDeliveries() ?? []),
37
+ ...(options.initialRows ?? []),
38
+ ];
39
+ for (const recovered of recoveredRows) {
40
+ // A process that died while `send` was in flight cannot know whether the
41
+ // transport accepted the message. Preserve that uncertainty; never turn it
42
+ // into an automatic duplicate after restart.
43
+ const wasInterrupted = recovered.state === 'sending';
44
+ const row = wasInterrupted
45
+ ? {
46
+ ...recovered,
47
+ state: 'ambiguous',
48
+ lastErrorCode: recovered.lastErrorCode ?? 'interrupted_send',
49
+ updatedAt: now().toISOString(),
50
+ }
51
+ : { ...recovered };
52
+ rows.set(row.idempotencyKey, row);
53
+ if (wasInterrupted) {
54
+ options.store?.putDelivery(row);
55
+ }
56
+ const highest = sequenceByWorkItem.get(row.workItemId) ?? 0;
57
+ sequenceByWorkItem.set(row.workItemId, Math.max(highest, row.sequence));
58
+ }
59
+ function put(row) {
60
+ rows.set(row.idempotencyKey, row);
61
+ options.store?.putDelivery(row);
62
+ }
63
+ function nextSequence(workItemId) {
64
+ const next = (sequenceByWorkItem.get(workItemId) ?? 0) + 1;
65
+ sequenceByWorkItem.set(workItemId, next);
66
+ return next;
67
+ }
68
+ function listRows(workItemId) {
69
+ return [...rows.values()]
70
+ .filter((row) => row.workItemId === workItemId)
71
+ .sort((left, right) => left.sequence - right.sequence);
72
+ }
73
+ /**
74
+ * A routine progress row is stale once a priority row with a higher sequence
75
+ * exists, whether or not that row has been sent yet. Waiting for the newer
76
+ * row to send first would let a slow decision message unblock an obsolete
77
+ * progress message behind it.
78
+ */
79
+ function isStaleRoutine(row) {
80
+ if (!ROUTINE_PURPOSES.has(row.purpose)) {
81
+ return false;
82
+ }
83
+ return listRows(row.workItemId).some((candidate) => candidate.sequence > row.sequence
84
+ && (PRIORITY_PURPOSES.has(candidate.purpose) || candidate.purpose === 'progress'));
85
+ }
86
+ async function flushRow(row) {
87
+ if (row.state === 'sent') {
88
+ telemetry?.record('dedupe_hit', 'update');
89
+ return { outcome: 'already_sent', row };
90
+ }
91
+ if (row.state === 'ambiguous') {
92
+ return { outcome: 'ambiguous', row };
93
+ }
94
+ if (isStaleRoutine(row)) {
95
+ const suppressed = {
96
+ ...row,
97
+ state: 'failed',
98
+ lastErrorCode: 'suppressed_stale',
99
+ updatedAt: now().toISOString(),
100
+ };
101
+ put(suppressed);
102
+ return { outcome: 'suppressed_stale', row: suppressed };
103
+ }
104
+ const sending = {
105
+ ...row,
106
+ state: 'sending',
107
+ attemptCount: row.attemptCount + 1,
108
+ updatedAt: now().toISOString(),
109
+ };
110
+ put(sending);
111
+ let result;
112
+ try {
113
+ result = await options.send(sending);
114
+ }
115
+ catch (error) {
116
+ result = {
117
+ ok: false,
118
+ externalMessageRef: null,
119
+ errorCode: error instanceof Error ? error.name : 'send_threw',
120
+ ambiguous: true,
121
+ };
122
+ }
123
+ if (sending.attemptCount > 1) {
124
+ telemetry?.record('outbox_retry', 'attempt');
125
+ }
126
+ if (result.ok) {
127
+ telemetry?.record('delivery_receipt', 'sent');
128
+ const sent = {
129
+ ...sending,
130
+ state: 'sent',
131
+ externalMessageRef: result.externalMessageRef,
132
+ lastErrorCode: null,
133
+ updatedAt: now().toISOString(),
134
+ sentAt: now().toISOString(),
135
+ };
136
+ put(sent);
137
+ return { outcome: 'sent', row: sent };
138
+ }
139
+ // Ambiguity is terminal for automatic recovery. Only an explicit owner
140
+ // retry may move it back to pending, because the message may be on the wire.
141
+ const failed = {
142
+ ...sending,
143
+ state: result.ambiguous === true ? 'ambiguous' : 'failed',
144
+ lastErrorCode: result.errorCode ?? 'send_failed',
145
+ updatedAt: now().toISOString(),
146
+ };
147
+ put(failed);
148
+ telemetry?.record('delivery_receipt', result.ambiguous === true ? 'ambiguous' : 'failed');
149
+ return { outcome: result.ambiguous === true ? 'ambiguous' : 'failed', row: failed };
150
+ }
151
+ function flushOne(idempotencyKey) {
152
+ const active = inFlight.get(idempotencyKey);
153
+ if (active) {
154
+ return active;
155
+ }
156
+ const row = rows.get(idempotencyKey);
157
+ if (!row) {
158
+ return Promise.reject(new Error(`Unknown transport work delivery key: ${idempotencyKey}`));
159
+ }
160
+ const started = flushRow(row).finally(() => {
161
+ if (inFlight.get(idempotencyKey) === started) {
162
+ inFlight.delete(idempotencyKey);
163
+ }
164
+ });
165
+ inFlight.set(idempotencyKey, started);
166
+ return started;
167
+ }
168
+ return {
169
+ enqueue(input) {
170
+ const existing = rows.get(input.idempotencyKey);
171
+ if (existing) {
172
+ return existing;
173
+ }
174
+ const timestamp = now().toISOString();
175
+ const row = {
176
+ version: 1,
177
+ idempotencyKey: input.idempotencyKey,
178
+ bindingId: input.bindingId,
179
+ externalConversationRef: input.externalConversationRef,
180
+ workItemId: input.workItemId,
181
+ taskId: input.taskId ?? null,
182
+ runId: input.runId ?? null,
183
+ purpose: input.purpose,
184
+ payload: input.payload,
185
+ state: 'pending',
186
+ externalMessageRef: null,
187
+ attemptCount: 0,
188
+ lastErrorCode: null,
189
+ sequence: nextSequence(input.workItemId),
190
+ createdAt: timestamp,
191
+ updatedAt: timestamp,
192
+ sentAt: null,
193
+ };
194
+ put(row);
195
+ return row;
196
+ },
197
+ flush(idempotencyKey) {
198
+ return flushOne(idempotencyKey);
199
+ },
200
+ async retry(idempotencyKey) {
201
+ const active = inFlight.get(idempotencyKey);
202
+ if (active) {
203
+ return active;
204
+ }
205
+ const row = rows.get(idempotencyKey);
206
+ if (!row) {
207
+ throw new Error(`Unknown transport work delivery key: ${idempotencyKey}`);
208
+ }
209
+ if (row.state === 'sent') {
210
+ return { outcome: 'already_sent', row };
211
+ }
212
+ const pending = {
213
+ ...row,
214
+ state: 'pending',
215
+ updatedAt: now().toISOString(),
216
+ };
217
+ put(pending);
218
+ return flushOne(idempotencyKey);
219
+ },
220
+ async flushWorkItem(workItemId) {
221
+ const results = [];
222
+ // Sequential on purpose: causal ordering per work item is a requirement,
223
+ // not an implementation detail (FR-33).
224
+ for (const row of listRows(workItemId)) {
225
+ if (isTerminalState(row.state)) {
226
+ continue;
227
+ }
228
+ results.push(await flushOne(row.idempotencyKey));
229
+ }
230
+ return results;
231
+ },
232
+ async recoverPending() {
233
+ const results = [];
234
+ const pending = [...rows.values()]
235
+ .filter((row) => row.state === 'pending')
236
+ .sort((left, right) => left.createdAt.localeCompare(right.createdAt)
237
+ || left.sequence - right.sequence);
238
+ for (const row of pending) {
239
+ results.push(await flushOne(row.idempotencyKey));
240
+ }
241
+ return results;
242
+ },
243
+ get(idempotencyKey) {
244
+ return rows.get(idempotencyKey) ?? null;
245
+ },
246
+ list(workItemId) {
247
+ return listRows(workItemId);
248
+ },
249
+ hasDeliveredResult(workItemId) {
250
+ return listRows(workItemId).some((row) => row.state === 'sent'
251
+ && (row.purpose === 'result' || row.purpose === 'publish_result'));
252
+ },
253
+ };
254
+ }
255
+ /**
256
+ * Stable idempotency key for one outbound message.
257
+ *
258
+ * Every input is either an authoritative id or an owner-visible revision, so
259
+ * the same logical message recomputes the same key after a restart.
260
+ */
261
+ export function buildTransportWorkDeliveryKey(input) {
262
+ return [
263
+ 'twd',
264
+ input.bindingId,
265
+ input.workItemId,
266
+ input.purpose,
267
+ input.discriminator,
268
+ ].join(':');
269
+ }
270
+ //# sourceMappingURL=outbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outbox.js","sourceRoot":"","sources":["../../../../../src/platform/transports/work-delivery/outbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * The permission envelope a transport-originated run executes under
3
+ * (SPEC-114 FR-4, PLAN-105 Phase 1 / gate G1).
4
+ *
5
+ * This replaces the placeholder that treated "a workspace path is configured"
6
+ * as the whole permission model. Two things were wrong with it, and the second
7
+ * one mattered more than the first:
8
+ *
9
+ * 1. The configured path was never checked against reality. An operator could
10
+ * name a directory that does not exist, or claim a plain folder is a repo,
11
+ * and the run only discovered it deep inside a provider turn.
12
+ *
13
+ * 2. It granted `broad_write`, which classifies as externally-visible,
14
+ * destructive, and expensive tools. That silently contradicted the design's
15
+ * own rule that execution authorization must not clear a publish gate: the
16
+ * provider could have pushed or deployed through its own tools while Cats
17
+ * still believed publication was waiting on an owner approval.
18
+ *
19
+ * So the envelope here is capped at `narrow_write` — local workspace state — for
20
+ * every delivery mode. External effects (push, pull request, preview deploy)
21
+ * never travel on provider tools; they run through the gated delivery API after
22
+ * an approval, carrying that approval's id. A mode with bigger side effects
23
+ * needs a *gate*, not a wider grant.
24
+ */
25
+ import type { CoreDeliveryMode } from '../../../core/types.js';
26
+ import type { SupervisionToolScope } from '../../supervision/contracts.js';
27
+ /** What the runtime actually observed about the configured workspace. */
28
+ export interface TransportWorkWorkspaceCapability {
29
+ /** The runtime could inspect the path at all. */
30
+ reachable: boolean;
31
+ /** The path is a git repository. */
32
+ repository: boolean;
33
+ /** Whether the repository has no staged, modified, or untracked files. */
34
+ clean: boolean | null;
35
+ /** HEAD observed before admission; later commit evidence is bound to it. */
36
+ headOid: string | null;
37
+ }
38
+ export declare const TRANSPORT_WORK_PERMISSION_REASONS: readonly ["workspace_not_configured", "workspace_unreachable", "workspace_not_a_repository", "workspace_not_clean"];
39
+ export type TransportWorkPermissionReason = (typeof TRANSPORT_WORK_PERMISSION_REASONS)[number];
40
+ export interface TransportWorkPermissionEnvelope {
41
+ /** Granted to the supervision boundary. Never wider than `narrow_write`. */
42
+ toolScope: SupervisionToolScope;
43
+ sufficient: boolean;
44
+ reasons: TransportWorkPermissionReason[];
45
+ }
46
+ export interface TransportWorkPermissionEnvelopeInput {
47
+ workspacePath: string | null;
48
+ /**
49
+ * The runtime's observation, or `null` when it could not be obtained — an
50
+ * unreachable runtime is reported as an unusable workspace rather than
51
+ * optimistically assumed usable.
52
+ */
53
+ workspace: TransportWorkWorkspaceCapability | null;
54
+ deliveryMode: CoreDeliveryMode | null;
55
+ }
56
+ export declare function resolveTransportWorkPermissionEnvelope(input: TransportWorkPermissionEnvelopeInput): TransportWorkPermissionEnvelope;
57
+ //# sourceMappingURL=permissionEnvelope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissionEnvelope.d.ts","sourceRoot":"","sources":["../../../../../src/platform/transports/work-delivery/permissionEnvelope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,yEAAyE;AACzE,MAAM,WAAW,gCAAgC;IAC/C,iDAAiD;IACjD,SAAS,EAAE,OAAO,CAAC;IACnB,oCAAoC;IACpC,UAAU,EAAE,OAAO,CAAC;IACpB,0EAA0E;IAC1E,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACtB,4EAA4E;IAC5E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,eAAO,MAAM,iCAAiC,qHAKpC,CAAC;AAEX,MAAM,MAAM,6BAA6B,GACvC,CAAC,OAAO,iCAAiC,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,MAAM,WAAW,+BAA+B;IAC9C,4EAA4E;IAC5E,SAAS,EAAE,oBAAoB,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,6BAA6B,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,oCAAoC;IACnD,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;OAIG;IACH,SAAS,EAAE,gCAAgC,GAAG,IAAI,CAAC;IACnD,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACvC;AAaD,wBAAgB,sCAAsC,CACpD,KAAK,EAAE,oCAAoC,GAC1C,+BAA+B,CAgCjC"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * The permission envelope a transport-originated run executes under
3
+ * (SPEC-114 FR-4, PLAN-105 Phase 1 / gate G1).
4
+ *
5
+ * This replaces the placeholder that treated "a workspace path is configured"
6
+ * as the whole permission model. Two things were wrong with it, and the second
7
+ * one mattered more than the first:
8
+ *
9
+ * 1. The configured path was never checked against reality. An operator could
10
+ * name a directory that does not exist, or claim a plain folder is a repo,
11
+ * and the run only discovered it deep inside a provider turn.
12
+ *
13
+ * 2. It granted `broad_write`, which classifies as externally-visible,
14
+ * destructive, and expensive tools. That silently contradicted the design's
15
+ * own rule that execution authorization must not clear a publish gate: the
16
+ * provider could have pushed or deployed through its own tools while Cats
17
+ * still believed publication was waiting on an owner approval.
18
+ *
19
+ * So the envelope here is capped at `narrow_write` — local workspace state — for
20
+ * every delivery mode. External effects (push, pull request, preview deploy)
21
+ * never travel on provider tools; they run through the gated delivery API after
22
+ * an approval, carrying that approval's id. A mode with bigger side effects
23
+ * needs a *gate*, not a wider grant.
24
+ */
25
+ export const TRANSPORT_WORK_PERMISSION_REASONS = [
26
+ 'workspace_not_configured',
27
+ 'workspace_unreachable',
28
+ 'workspace_not_a_repository',
29
+ 'workspace_not_clean',
30
+ ];
31
+ /**
32
+ * Delivery modes whose evidence is a commit, and which therefore cannot run
33
+ * against a directory that is not a repository.
34
+ */
35
+ const REPO_BACKED_MODES = new Set([
36
+ 'commit_only',
37
+ 'push_branch',
38
+ 'pr_with_checks',
39
+ 'deploy_preview',
40
+ ]);
41
+ export function resolveTransportWorkPermissionEnvelope(input) {
42
+ if (input.workspacePath === null) {
43
+ return { toolScope: 'none', sufficient: false, reasons: ['workspace_not_configured'] };
44
+ }
45
+ if (input.workspace === null || !input.workspace.reachable) {
46
+ // A path we cannot inspect is a path we must not hand write tools for.
47
+ return { toolScope: 'none', sufficient: false, reasons: ['workspace_unreachable'] };
48
+ }
49
+ if (input.deliveryMode !== null
50
+ && REPO_BACKED_MODES.has(input.deliveryMode)
51
+ && !input.workspace.repository) {
52
+ // Readable, so the run could still be inspected, but it can never produce
53
+ // the commit this mode's completion evidence requires.
54
+ return {
55
+ toolScope: 'read_only',
56
+ sufficient: false,
57
+ reasons: ['workspace_not_a_repository'],
58
+ };
59
+ }
60
+ if (input.deliveryMode !== null
61
+ && REPO_BACKED_MODES.has(input.deliveryMode)
62
+ && input.workspace.clean !== true) {
63
+ // The runtime commit endpoint cannot distinguish changes created by this
64
+ // run from files that were already present. Never let transport work claim
65
+ // ownership of an operator's dirty worktree.
66
+ return {
67
+ toolScope: 'read_only',
68
+ sufficient: false,
69
+ reasons: ['workspace_not_clean'],
70
+ };
71
+ }
72
+ return { toolScope: 'narrow_write', sufficient: true, reasons: [] };
73
+ }
74
+ //# sourceMappingURL=permissionEnvelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissionEnvelope.js","sourceRoot":"","sources":["../../../../../src/platform/transports/work-delivery/permissionEnvelope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAiBH,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC/C,0BAA0B;IAC1B,uBAAuB;IACvB,4BAA4B;IAC5B,qBAAqB;CACb,CAAC;AAuBX;;;GAGG;AACH,MAAM,iBAAiB,GAAkC,IAAI,GAAG,CAAC;IAC/D,aAAa;IACb,aAAa;IACb,gBAAgB;IAChB,gBAAgB;CACjB,CAAC,CAAC;AAEH,MAAM,UAAU,sCAAsC,CACpD,KAA2C;IAE3C,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;QACjC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,0BAA0B,CAAC,EAAE,CAAC;IACzF,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QAC3D,uEAAuE;QACvE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,uBAAuB,CAAC,EAAE,CAAC;IACtF,CAAC;IACD,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI;WAC1B,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC;WACzC,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QACjC,0EAA0E;QAC1E,uDAAuD;QACvD,OAAO;YACL,SAAS,EAAE,WAAW;YACtB,UAAU,EAAE,KAAK;YACjB,OAAO,EAAE,CAAC,4BAA4B,CAAC;SACxC,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI;WAC1B,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC;WACzC,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACpC,yEAAyE;QACzE,2EAA2E;QAC3E,6CAA6C;QAC7C,OAAO;YACL,SAAS,EAAE,WAAW;YACtB,UAAU,EAAE,KAAK;YACjB,OAAO,EAAE,CAAC,qBAAqB,CAAC;SACjC,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AACtE,CAAC"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * The seam between a transport and the golden path (ADR-112 section 4).
3
+ *
4
+ * The transport hands over raw external facts and learns only whether the
5
+ * update was consumed. Everything the product owns — readiness, scope,
6
+ * authorization, policy, outbound copy — stays behind this interface, which is
7
+ * why `platform/` can define it without importing any product.
8
+ *
9
+ * Outbound messages are *not* returned from these calls. The product enqueues
10
+ * them on its own durable outbox, so a transport that crashes between "command
11
+ * handled" and "reply sent" recovers by flushing the outbox rather than by
12
+ * replaying the command.
13
+ */
14
+ export interface TransportWorkCommandInput {
15
+ bindingId: string;
16
+ conversationId: string;
17
+ /** Opaque reference to the external user that sent the request. */
18
+ externalUserRef: string;
19
+ /** Opaque reference to the external chat. Also the delivery destination. */
20
+ externalConversationRef: string;
21
+ externalUpdateRef: string;
22
+ externalMessageRef: string | null;
23
+ goal: string;
24
+ locale: string | null;
25
+ }
26
+ export interface TransportWorkCallbackInput {
27
+ callbackData: string;
28
+ bindingId: string;
29
+ conversationId: string;
30
+ externalUserRef: string;
31
+ externalConversationRef: string;
32
+ /** The external callback id. Distinguishes owner events, never scopes. */
33
+ ownerEventRef: string;
34
+ locale: string | null;
35
+ }
36
+ export interface TransportWorkRefusalInput {
37
+ bindingId: string;
38
+ conversationId: string;
39
+ externalConversationRef: string;
40
+ externalUpdateRef: string;
41
+ reasonKey: string;
42
+ locale: string | null;
43
+ }
44
+ export type TransportWorkHandledOutcome = 'accepted' | 'not_ready' | 'admitted' | 'already_admitted' | 'cancelled' | 'published' | 'publish_denied' | 'publish_blocked' | 'retried' | 'resumed' | 'rejected' | 'refused';
45
+ export interface TransportWorkHandledResult {
46
+ handled: boolean;
47
+ outcome: TransportWorkHandledOutcome;
48
+ workItemId: string | null;
49
+ /** Rejection reason code when `outcome` is `rejected`; for diagnostics. */
50
+ rejection: string | null;
51
+ }
52
+ export interface TransportWorkGoldenPathPort {
53
+ /** True when this callback belongs to the golden path and nothing else. */
54
+ ownsCallback(callbackData: string): boolean;
55
+ handleWorkCommand(input: TransportWorkCommandInput): Promise<TransportWorkHandledResult>;
56
+ handleActionCallback(input: TransportWorkCallbackInput): Promise<TransportWorkHandledResult>;
57
+ /** Explains an input the first slice cannot ingest, e.g. a bare attachment. */
58
+ refuse(input: TransportWorkRefusalInput): Promise<TransportWorkHandledResult>;
59
+ }
60
+ //# sourceMappingURL=port.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"port.d.ts","sourceRoot":"","sources":["../../../../../src/platform/transports/work-delivery/port.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,eAAe,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,uBAAuB,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,0BAA0B;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,uBAAuB,EAAE,MAAM,CAAC;IAChC,0EAA0E;IAC1E,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,uBAAuB,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,MAAM,2BAA2B,GACnC,UAAU,GACV,WAAW,GACX,UAAU,GACV,kBAAkB,GAClB,WAAW,GACX,WAAW,GACX,gBAAgB,GAChB,iBAAiB,GACjB,SAAS,GACT,SAAS,GACT,UAAU,GACV,SAAS,CAAC;AAEd,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,2BAA2B,CAAC;IACrC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,2EAA2E;IAC3E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,2BAA2B;IAC1C,2EAA2E;IAC3E,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5C,iBAAiB,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;IACzF,oBAAoB,CAAC,KAAK,EAAE,0BAA0B,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAC7F,+EAA+E;IAC/E,MAAM,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;CAC/E"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The seam between a transport and the golden path (ADR-112 section 4).
3
+ *
4
+ * The transport hands over raw external facts and learns only whether the
5
+ * update was consumed. Everything the product owns — readiness, scope,
6
+ * authorization, policy, outbound copy — stays behind this interface, which is
7
+ * why `platform/` can define it without importing any product.
8
+ *
9
+ * Outbound messages are *not* returned from these calls. The product enqueues
10
+ * them on its own durable outbox, so a transport that crashes between "command
11
+ * handled" and "reply sent" recovers by flushing the outbox rather than by
12
+ * replaying the command.
13
+ */
14
+ export {};
15
+ //# sourceMappingURL=port.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"port.js","sourceRoot":"","sources":["../../../../../src/platform/transports/work-delivery/port.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Versioned scope proposals (SPEC-114 FR-15..FR-19).
3
+ *
4
+ * The digest is the load-bearing part. An owner confirms a specific block of
5
+ * text; binding the authorization to a hash of exactly the execution-relevant
6
+ * fields is what makes "Start work" mean "run *that*" rather than "run whatever
7
+ * the work item says now".
8
+ */
9
+ import type { CoreDeliveryGate, CoreDeliveryMode } from '../../../core/types.js';
10
+ import type { TransportWorkProposalV1 } from './contracts.js';
11
+ export interface BuildTransportWorkProposalInput {
12
+ revision: number;
13
+ goal: string;
14
+ targetLabel: string;
15
+ projectId: string | null;
16
+ workspacePath: string | null;
17
+ acceptanceCriteria: readonly string[];
18
+ deliveryMode: CoreDeliveryMode;
19
+ deliveryGates: readonly CoreDeliveryGate[];
20
+ sideEffects: readonly string[];
21
+ openQuestion: string | null;
22
+ createdAt: Date;
23
+ }
24
+ export declare function buildTransportWorkProposalDigest(input: BuildTransportWorkProposalInput): string;
25
+ export declare function buildTransportWorkProposal(input: BuildTransportWorkProposalInput): TransportWorkProposalV1;
26
+ /**
27
+ * True when a new proposal changes what would execute, which is the trigger for
28
+ * bumping the revision and invalidating outstanding action tokens (FR-17).
29
+ */
30
+ export declare function isTransportWorkProposalMateriallyChanged(previous: TransportWorkProposalV1 | null, next: TransportWorkProposalV1): boolean;
31
+ //# sourceMappingURL=proposal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proposal.d.ts","sourceRoot":"","sources":["../../../../../src/platform/transports/work-delivery/proposal.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAE9D,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,YAAY,EAAE,gBAAgB,CAAC;IAC/B,aAAa,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC3C,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,IAAI,CAAC;CACjB;AAsBD,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,+BAA+B,GACrC,MAAM,CAKR;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,+BAA+B,GACrC,uBAAuB,CAgBzB;AAED;;;GAGG;AACH,wBAAgB,wCAAwC,CACtD,QAAQ,EAAE,uBAAuB,GAAG,IAAI,EACxC,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAET"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Versioned scope proposals (SPEC-114 FR-15..FR-19).
3
+ *
4
+ * The digest is the load-bearing part. An owner confirms a specific block of
5
+ * text; binding the authorization to a hash of exactly the execution-relevant
6
+ * fields is what makes "Start work" mean "run *that*" rather than "run whatever
7
+ * the work item says now".
8
+ */
9
+ import { createHash } from 'node:crypto';
10
+ /**
11
+ * Fields that change what actually executes.
12
+ *
13
+ * `createdAt` and `openQuestion` are excluded on purpose: re-rendering the same
14
+ * scope at a later time, or resolving a question without changing the plan,
15
+ * must not invalidate a confirmation the owner already saw.
16
+ */
17
+ function buildDigestSource(input) {
18
+ return JSON.stringify([
19
+ input.goal.trim(),
20
+ input.targetLabel.trim(),
21
+ input.projectId,
22
+ input.workspacePath,
23
+ [...input.acceptanceCriteria].map((criterion) => criterion.trim()),
24
+ input.deliveryMode,
25
+ [...input.deliveryGates].sort(),
26
+ [...input.sideEffects].map((effect) => effect.trim()).sort(),
27
+ ]);
28
+ }
29
+ export function buildTransportWorkProposalDigest(input) {
30
+ return createHash('sha256')
31
+ .update(buildDigestSource(input))
32
+ .digest('hex')
33
+ .slice(0, 32);
34
+ }
35
+ export function buildTransportWorkProposal(input) {
36
+ return {
37
+ version: 1,
38
+ revision: input.revision,
39
+ digest: buildTransportWorkProposalDigest(input),
40
+ goal: input.goal.trim(),
41
+ targetLabel: input.targetLabel.trim(),
42
+ projectId: input.projectId,
43
+ workspacePath: input.workspacePath,
44
+ acceptanceCriteria: [...input.acceptanceCriteria].map((criterion) => criterion.trim()),
45
+ deliveryMode: input.deliveryMode,
46
+ deliveryGates: [...input.deliveryGates],
47
+ sideEffects: [...input.sideEffects],
48
+ openQuestion: input.openQuestion,
49
+ createdAt: input.createdAt.toISOString(),
50
+ };
51
+ }
52
+ /**
53
+ * True when a new proposal changes what would execute, which is the trigger for
54
+ * bumping the revision and invalidating outstanding action tokens (FR-17).
55
+ */
56
+ export function isTransportWorkProposalMateriallyChanged(previous, next) {
57
+ return previous === null || previous.digest !== next.digest;
58
+ }
59
+ //# sourceMappingURL=proposal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proposal.js","sourceRoot":"","sources":["../../../../../src/platform/transports/work-delivery/proposal.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAmBzC;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,KAAsC;IAC/D,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;QACjB,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE;QACxB,KAAK,CAAC,SAAS;QACf,KAAK,CAAC,aAAa;QACnB,CAAC,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAClE,KAAK,CAAC,YAAY;QAClB,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE;QAC/B,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;KAC7D,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,KAAsC;IAEtC,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;SAChC,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,KAAsC;IAEtC,OAAO;QACL,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,MAAM,EAAE,gCAAgC,CAAC,KAAK,CAAC;QAC/C,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;QACvB,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE;QACrC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,kBAAkB,EAAE,CAAC,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACtF,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,aAAa,EAAE,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC;QACvC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC;QACnC,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE;KACzC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wCAAwC,CACtD,QAAwC,EACxC,IAA6B;IAE7B,OAAO,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC;AAC9D,CAAC"}