@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
@@ -8,6 +8,7 @@ import { spawn } from 'node:child_process';
8
8
 
9
9
  import { parseStableReleaseTag } from './validate-release-version.mjs';
10
10
  import { DESCRIPTOR_RELATIVE_PATH } from './generate-desktop-release-descriptor.mjs';
11
+ import { resolveAppLock, materializeAppSelection } from '#cats-app-package';
11
12
 
12
13
  const SCRIPT_PATH = fileURLToPath(import.meta.url);
13
14
  const PROJECT_ROOT = resolve(dirname(SCRIPT_PATH), '..');
@@ -32,11 +33,13 @@ Options:
32
33
  --format <nsis|dmg|pkg|zip|AppImage|deb|tar.gz>
33
34
  Override the configured installer formats.
34
35
  --sidecar-layout <split|bundle> Choose loose-file or bundled sidecars for both app/runtime.
36
+ --apps-lock <path> Bundle the exact ID/version/SHA-256 selection in this lock.
35
37
  --skip-mobile Skip the mobile bundle (\`expo export\`). Also honored via
36
38
  CATS_SKIP_MOBILE=1 in the environment or .env.
37
39
  --release Build an official release package: embed the release
38
- descriptor, require platform signing credentials, and
39
- allow signing identity discovery. Requires a GitHub
40
+ descriptor, require platform signing credentials (plus
41
+ macOS notarization credentials), and allow signing
42
+ identity discovery. Requires a GitHub
40
43
  Actions tag run whose tag matches the package version.
41
44
  Also honored via CATS_DESKTOP_RELEASE_MODE=1.
42
45
  --preview Build an unsupported unsigned GitHub prerelease preview.
@@ -44,6 +47,12 @@ Options:
44
47
  omits the official descriptor, and disables signing
45
48
  identity discovery. Also honored via
46
49
  CATS_DESKTOP_PREVIEW_MODE=1.
50
+ --sign Let local packaging use a signing identity from the
51
+ OS keychain. Off by default so an unconfigured machine
52
+ cannot pick up an unrelated certificate. Ignored by
53
+ --release and --preview, which always sign when their
54
+ credentials are present. Also honored via
55
+ CATS_DESKTOP_SIGN_LOCAL=1.
47
56
  --publish <never|always> Publish policy, default never. Publishing requires
48
57
  --release or --preview plus a GitHub token. Also honored
49
58
  via CATS_DESKTOP_PUBLISH.
@@ -97,11 +106,13 @@ export function parseArgs(argv, env = process.env) {
97
106
  let skipMobile = parseBooleanFlag(env.CATS_SKIP_MOBILE);
98
107
  let releaseMode = parseBooleanFlag(env.CATS_DESKTOP_RELEASE_MODE);
99
108
  let previewMode = parseBooleanFlag(env.CATS_DESKTOP_PREVIEW_MODE);
109
+ let allowLocalSigning = parseBooleanFlag(env.CATS_DESKTOP_SIGN_LOCAL);
100
110
  let publish = resolvePublishPolicy(env.CATS_DESKTOP_PUBLISH);
101
111
  // GITHUB_REF_NAME is a runner-provided default. A workflow `env:` block
102
112
  // cannot override anything in the GITHUB_ namespace, and a preview run is
103
113
  // dispatched from a branch, so the tag has to arrive as an explicit input.
104
114
  let tag = (env.CATS_DESKTOP_RELEASE_TAG ?? env.GITHUB_REF_NAME ?? '').trim();
115
+ let appsLock = env.CATS_DESKTOP_APPS_LOCK?.trim() || null;
105
116
 
106
117
  for (let index = 0; index < argv.length; index += 1) {
107
118
  const value = argv[index];
@@ -115,14 +126,21 @@ export function parseArgs(argv, env = process.env) {
115
126
  skipMobile,
116
127
  releaseMode,
117
128
  previewMode,
129
+ allowLocalSigning,
118
130
  publish,
119
131
  tag,
132
+ ...(appsLock ? { appsLock } : {}),
120
133
  };
121
134
  }
122
135
  if (value === '--release') {
123
136
  releaseMode = true;
124
137
  continue;
125
138
  }
139
+ if (value === '--apps-lock') {
140
+ appsLock = argv[++index];
141
+ if (!appsLock || appsLock.startsWith('--')) throw new Error('--apps-lock requires a path.');
142
+ continue;
143
+ }
126
144
  if (value === '--no-release') {
127
145
  releaseMode = false;
128
146
  continue;
@@ -135,6 +153,14 @@ export function parseArgs(argv, env = process.env) {
135
153
  previewMode = false;
136
154
  continue;
137
155
  }
156
+ if (value === '--sign') {
157
+ allowLocalSigning = true;
158
+ continue;
159
+ }
160
+ if (value === '--no-sign') {
161
+ allowLocalSigning = false;
162
+ continue;
163
+ }
138
164
  if (value === '--publish') {
139
165
  publish = resolvePublishPolicy(argv[index + 1] ?? '');
140
166
  index += 1;
@@ -185,8 +211,10 @@ export function parseArgs(argv, env = process.env) {
185
211
  skipMobile,
186
212
  releaseMode,
187
213
  previewMode,
214
+ allowLocalSigning,
188
215
  publish,
189
216
  tag,
217
+ ...(appsLock ? { appsLock } : {}),
190
218
  };
191
219
  }
192
220
 
@@ -231,28 +259,45 @@ async function resolveCommandInvocation(command, args) {
231
259
  };
232
260
  }
233
261
 
262
+ const MACOS_NOTARIZATION_CREDENTIAL_KEYS = [
263
+ 'APPLE_API_KEY',
264
+ 'APPLE_API_KEY_ID',
265
+ 'APPLE_API_ISSUER',
266
+ ];
267
+
234
268
  const SIGNING_CREDENTIAL_KEYS = [
235
269
  'WIN_CSC_LINK',
236
270
  'CSC_LINK',
237
271
  'WIN_CSC_KEY_PASSWORD',
238
272
  'CSC_KEY_PASSWORD',
273
+ ...MACOS_NOTARIZATION_CREDENTIAL_KEYS,
239
274
  ];
240
275
 
241
276
  /**
242
277
  * Local and test packaging must never reach for a signing identity, because an
243
278
  * unconfigured machine would otherwise pick up an unrelated certificate from
244
- * the OS keychain. Release mode leaves identity discovery to the workflow so a
245
- * configured certificate can actually be used.
279
+ * the OS keychain. Both guarded workflow paths leave identity discovery alone
280
+ * so a configured certificate can actually be used.
281
+ *
282
+ * ADR-117: a preview is signed on any platform whose credentials exist, so
283
+ * preview mode is a signing path too. Signing is artifact trust; it says
284
+ * nothing about whether the build claims official release identity.
246
285
  *
247
- * Empty credential variables are dropped in both modes: electron-builder treats
286
+ * `--sign` is the local escape hatch. It is an explicit request rather than an
287
+ * inference from the environment, because a developer machine may hold
288
+ * unrelated certificates.
289
+ *
290
+ * Empty credential variables are dropped in every mode: electron-builder treats
248
291
  * an empty CSC_LINK as a relative path and resolves it against the project
249
292
  * root.
250
293
  */
251
294
  export function buildInstallerEnvironment(baseEnv = process.env, options = {}) {
252
- const releaseMode = options.releaseMode === true;
295
+ const signingAllowed = options.releaseMode === true
296
+ || options.previewMode === true
297
+ || options.allowLocalSigning === true;
253
298
  const env = { ...baseEnv };
254
299
 
255
- if (!releaseMode) {
300
+ if (!signingAllowed) {
256
301
  env.CSC_IDENTITY_AUTO_DISCOVERY = 'false';
257
302
  }
258
303
 
@@ -276,6 +321,22 @@ export function hasMacosSigningCredentials(env = process.env) {
276
321
  return typeof link === 'string' && link.trim() !== '';
277
322
  }
278
323
 
324
+ /**
325
+ * electron-builder reads notarization credentials straight from the
326
+ * environment and only warns when they are absent, so a misconfigured release
327
+ * would otherwise produce a signed but un-notarized app. Gatekeeper rejects
328
+ * that on every machine except the one that built it.
329
+ *
330
+ * App Store Connect API keys are used rather than an Apple ID and
331
+ * app-specific password: they are revocable on their own and survive an Apple
332
+ * ID password change, which a CI secret has no way to notice.
333
+ */
334
+ export function hasMacosNotarizationCredentials(env = process.env) {
335
+ return MACOS_NOTARIZATION_CREDENTIAL_KEYS.every(
336
+ (key) => typeof env[key] === 'string' && env[key].trim() !== '',
337
+ );
338
+ }
339
+
279
340
  /**
280
341
  * Signing is a release gate, not a nice-to-have.
281
342
  *
@@ -292,16 +353,53 @@ export function resolveSigningProblems({ env = process.env, target } = {}) {
292
353
  }];
293
354
  }
294
355
 
295
- if (target === 'macos' && !hasMacosSigningCredentials(env)) {
296
- return [{
297
- code: 'release_macos_signing_missing',
298
- message: 'An official macOS release requires CSC_LINK.',
299
- }];
356
+ if (target === 'macos') {
357
+ const problems = [];
358
+ if (!hasMacosSigningCredentials(env)) {
359
+ problems.push({
360
+ code: 'release_macos_signing_missing',
361
+ message: 'An official macOS release requires CSC_LINK.',
362
+ });
363
+ }
364
+ if (!hasMacosNotarizationCredentials(env)) {
365
+ problems.push({
366
+ code: 'release_macos_notarization_missing',
367
+ message: 'An official macOS release requires APPLE_API_KEY, APPLE_API_KEY_ID, and APPLE_API_ISSUER.',
368
+ });
369
+ }
370
+ return problems;
300
371
  }
301
372
 
302
373
  return [];
303
374
  }
304
375
 
376
+ /**
377
+ * ADR-117: trust is resolved per platform from the credentials actually
378
+ * present. The build states which it got, because a silently unsigned artifact
379
+ * is indistinguishable from a signed one until a user tries to install it.
380
+ */
381
+ export function describeArtifactTrust(target, env = process.env) {
382
+ if (target === 'linux') {
383
+ return 'unsigned (Linux packages are not signed)';
384
+ }
385
+
386
+ if (target === 'windows') {
387
+ return hasWindowsSigningCredentials(env)
388
+ ? 'signed'
389
+ : 'unsigned (no Windows certificate configured)';
390
+ }
391
+
392
+ const signed = hasMacosSigningCredentials(env);
393
+ const notarized = hasMacosNotarizationCredentials(env);
394
+ if (signed && notarized) {
395
+ return 'signed and notarized';
396
+ }
397
+ if (signed) {
398
+ return 'signed but NOT notarized (no App Store Connect API key) — Gatekeeper will reject the download';
399
+ }
400
+ return 'unsigned (no Developer ID certificate)';
401
+ }
402
+
305
403
  /**
306
404
  * Release and preview publication are only meaningful inside the guarded
307
405
  * workflow. Anything else could publish from an unreviewed tree, so the
@@ -638,8 +736,14 @@ export function electronBuilderArgs(target, archOverride, formatOverride, option
638
736
  }
639
737
 
640
738
  const releaseMode = options.releaseMode === true;
739
+ const previewMode = options.previewMode === true;
740
+ // Signing overrides key off artifact trust, not release identity, so both
741
+ // guarded paths qualify. Local packaging never does, even with `--sign`:
742
+ // an ad-hoc local build has no reason to reach Apple's notary service.
743
+ const signedBuild = releaseMode || previewMode;
641
744
  const publish = resolvePublishPolicy(options.publish ?? 'never');
642
745
  const signWindowsExecutable = options.signWindowsExecutable === true;
746
+ const notarizeMacos = options.notarizeMacos === true;
643
747
  const formats = normalizeFormats(target, formatOverride);
644
748
  const platformFlag = target === 'windows' ? '--win' : target === 'macos' ? '--mac' : '--linux';
645
749
  const args = ['electron-builder', platformFlag];
@@ -657,10 +761,17 @@ export function electronBuilderArgs(target, archOverride, formatOverride, option
657
761
  // package.json pins signAndEditExecutable to false so unsigned local builds
658
762
  // avoid the winCodeSign download. A release build with real credentials has
659
763
  // to opt back in, and only then.
660
- if (releaseMode && target === 'windows' && signWindowsExecutable) {
764
+ if (signedBuild && target === 'windows' && signWindowsExecutable) {
661
765
  args.push('-c.win.signAndEditExecutable=true');
662
766
  }
663
767
 
768
+ // package.json pins mac.notarize to false so an unsigned preview never waits
769
+ // on Apple and a half-configured environment cannot quietly ship an
770
+ // un-notarized build. A release build with real credentials opts back in.
771
+ if (signedBuild && target === 'macos' && notarizeMacos) {
772
+ args.push('-c.mac.notarize=true');
773
+ }
774
+
664
775
  args.push('--publish', publish);
665
776
  return args;
666
777
  }
@@ -673,7 +784,15 @@ async function main() {
673
784
  }
674
785
 
675
786
  const resolvedTarget = resolveBuilderTarget(parsed.target);
676
- const envOptions = { releaseMode: parsed.releaseMode };
787
+ // Resolve once before builds can clear build/. Stage an offline immutable copy
788
+ // in an OS temporary directory so retries never redownload a moving asset.
789
+ const selectedApps = parsed.appsLock ? await resolveAppLock(resolve(parsed.appsLock)) : null;
790
+ const appLockForBuild = selectedApps ? await materializeAppSelection(selectedApps) : null;
791
+ const envOptions = {
792
+ releaseMode: parsed.releaseMode,
793
+ previewMode: parsed.previewMode,
794
+ allowLocalSigning: parsed.allowLocalSigning,
795
+ };
677
796
 
678
797
  if (parsed.releaseMode && parsed.previewMode) {
679
798
  throw new Error('--release and --preview are mutually exclusive build modes.');
@@ -703,10 +822,11 @@ async function main() {
703
822
  .join('\n')}`,
704
823
  );
705
824
  }
706
- const buildKind = parsed.releaseMode ? 'official' : 'unsigned preview';
825
+ const buildKind = parsed.releaseMode ? 'official' : 'preview';
707
826
  process.stdout.write(
708
827
  `[build-desktop-installer] ${buildKind} ${resolvedTarget} build for `
709
- + `${process.env.GITHUB_REF_NAME} (publish=${parsed.publish}).\n`,
828
+ + `${process.env.GITHUB_REF_NAME} (publish=${parsed.publish}, `
829
+ + `trust=${describeArtifactTrust(resolvedTarget, process.env)}).\n`,
710
830
  );
711
831
  }
712
832
 
@@ -762,6 +882,7 @@ async function main() {
762
882
  resolvedTarget,
763
883
  '--sidecar-layout',
764
884
  parsed.sidecarLayout,
885
+ ...(appLockForBuild ? ['--apps-lock', appLockForBuild] : []),
765
886
  ],
766
887
  PROJECT_ROOT,
767
888
  sidecarBuildEnv,
@@ -771,8 +892,10 @@ async function main() {
771
892
  'npx',
772
893
  electronBuilderArgs(resolvedTarget, parsed.arch, parsed.format, {
773
894
  releaseMode: parsed.releaseMode,
895
+ previewMode: parsed.previewMode,
774
896
  publish: parsed.publish,
775
897
  signWindowsExecutable: hasWindowsSigningCredentials(process.env),
898
+ notarizeMacos: hasMacosNotarizationCredentials(process.env),
776
899
  }),
777
900
  PROJECT_ROOT,
778
901
  {},
@@ -28,7 +28,7 @@ if (entryPoints.length === 0) {
28
28
  await build({
29
29
  entryPoints,
30
30
  bundle: true,
31
- external: ['jsdom', 'typescript'],
31
+ external: ['jsdom', 'typescript', '#cats-app-package'],
32
32
  platform: 'node',
33
33
  format: 'esm',
34
34
  outbase: testsDir,
@@ -4,13 +4,26 @@ import { fileURLToPath } from 'node:url';
4
4
 
5
5
  const root = resolve(dirname(fileURLToPath(import.meta.url)), '..');
6
6
 
7
- await build({
8
- entryPoints: [resolve(root, 'build', 'server', 'index.js')],
9
- bundle: true,
10
- outfile: resolve(root, 'build', 'server-bundle', 'index.js'),
11
- platform: 'node',
12
- target: 'node22',
13
- format: 'esm',
14
- sourcemap: true,
15
- packages: 'external',
16
- });
7
+ export function bundleServer({
8
+ entryPoint = resolve(root, 'build', 'server', 'index.js'),
9
+ outfile = resolve(root, 'build', 'server-bundle', 'index.js'),
10
+ } = {}) {
11
+ return build({
12
+ entryPoints: [entryPoint],
13
+ bundle: true,
14
+ outfile,
15
+ platform: 'node',
16
+ target: 'node22',
17
+ format: 'esm',
18
+ sourcemap: true,
19
+ packages: 'external',
20
+ // Package-import aliases are otherwise inlined despite packages: external.
21
+ // Keep the SDK's import.meta.url beside its shipped browser.js resource.
22
+ external: ['#cats-app-package'],
23
+ });
24
+ }
25
+
26
+ if (resolve(process.argv[1] ?? '') === fileURLToPath(import.meta.url)) {
27
+ if (process.argv.includes('--help')) console.log('Usage: node scripts/bundle-server.mjs (after npm run build:server)');
28
+ else await bundleServer();
29
+ }
@@ -3,7 +3,7 @@
3
3
  # Script: build-desktop-package.sh
4
4
  # Description: Build staged desktop packaging outputs for Cats.
5
5
  #
6
- # Usage: ./scripts/linux/build-desktop-package.sh [all|windows|macos|linux] [output-dir]
6
+ # Usage: ./scripts/linux/build-desktop-package.sh [all|windows|macos|linux] [output-dir] [apps-lock]
7
7
  #
8
8
  # Arguments:
9
9
  # [platform] Optional platform filter. Defaults to all.
@@ -20,11 +20,11 @@ SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
20
20
  PROJECT_ROOT="$(cd -- "${SCRIPT_DIR}/../.." && pwd)"
21
21
  PLATFORM="${1:-all}"
22
22
  OUTPUT_DIR="${2:-}"
23
+ APPS_LOCK="${3:-}"
23
24
 
24
25
  cd "${PROJECT_ROOT}"
25
26
  npm run build
26
- if [[ -n "${OUTPUT_DIR}" ]]; then
27
- node ./scripts/package-desktop.mjs --platform "${PLATFORM}" --output-dir "${OUTPUT_DIR}"
28
- else
29
- node ./scripts/package-desktop.mjs --platform "${PLATFORM}"
30
- fi
27
+ package_args=(./scripts/package-desktop.mjs --platform "${PLATFORM}")
28
+ if [[ -n "${OUTPUT_DIR}" ]]; then package_args+=(--output-dir "${OUTPUT_DIR}"); fi
29
+ if [[ -n "${APPS_LOCK}" ]]; then package_args+=(--apps-lock "${APPS_LOCK}"); fi
30
+ node "${package_args[@]}"
File without changes
File without changes
@@ -60,6 +60,11 @@ declare -a applied_changes=()
60
60
  declare -a warnings=()
61
61
  declare -a manual_steps=()
62
62
 
63
+ # A Desktop-launched helper may inherit PATH from before gh was installed.
64
+ # Include our fallback destination and the supported Homebrew locations in this
65
+ # process only; check mode must not edit the user's shell profile.
66
+ export PATH="$HOME/.local/bin:/opt/homebrew/bin:/usr/local/bin:$PATH"
67
+
63
68
  resolve_gh_path() {
64
69
  command -v gh 2>/dev/null || true
65
70
  }
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
+ # shellcheck source=provider-cli-common.sh
6
+ source "$SCRIPT_DIR/provider-cli-common.sh"
7
+
8
+ run_native_provider_installer 'linux' 'muse' "$@"
@@ -90,7 +90,7 @@ is_node_installed() {
90
90
  if [ "$skip_node_probe" = 'true' ]; then
91
91
  return 1
92
92
  fi
93
- command -v node >/dev/null 2>&1
93
+ command -v node >/dev/null 2>&1 && command -v npm >/dev/null 2>&1
94
94
  }
95
95
 
96
96
  json_array_from_lines() {
@@ -149,6 +149,12 @@ JSON
149
149
  exit "$exit_code"
150
150
  }
151
151
 
152
+ # Desktop's environment may predate nvm installation. Load it before read-only
153
+ # detection too; a bundled or standalone node without npm is not this substrate.
154
+ if [ "$install_state" = 'auto' ] && [ "$skip_node_probe" = 'false' ]; then
155
+ load_nvm
156
+ fi
157
+
152
158
  # Mode: check
153
159
  if [ "$mode" = 'check' ]; then
154
160
  if is_node_installed; then
@@ -214,10 +220,10 @@ case "$mode" in
214
220
  ;;
215
221
  esac
216
222
 
217
- if command -v node >/dev/null 2>&1; then
223
+ if command -v node >/dev/null 2>&1 && command -v npm >/dev/null 2>&1; then
218
224
  emit_result 'ready' 'true' 0
219
225
  else
220
- warnings+=('Node binary still missing after install.')
226
+ warnings+=('Node.js or npm is still missing after install.')
221
227
  manual_steps+=('Open a new terminal so PATH picks up the nvm-managed node binary.')
222
228
  emit_result 'failed' 'false' 1
223
229
  fi