@cats-inc/cats-platform 0.1.21 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (548) hide show
  1. package/.env.example +3 -7
  2. package/README.md +35 -0
  3. package/build/desktop/bootstrapNavigation.d.ts.map +1 -1
  4. package/build/desktop/bootstrapNavigation.js +6 -13
  5. package/build/desktop/bootstrapNavigation.js.map +1 -1
  6. package/build/desktop/bootstrapPage.d.ts.map +1 -1
  7. package/build/desktop/bootstrapPage.js +63 -86
  8. package/build/desktop/bootstrapPage.js.map +1 -1
  9. package/build/desktop/cliInventoryProbe.d.ts +11 -2
  10. package/build/desktop/cliInventoryProbe.d.ts.map +1 -1
  11. package/build/desktop/cliInventoryProbe.js +19 -13
  12. package/build/desktop/cliInventoryProbe.js.map +1 -1
  13. package/build/desktop/config.d.ts +0 -4
  14. package/build/desktop/config.d.ts.map +1 -1
  15. package/build/desktop/config.js +1 -6
  16. package/build/desktop/config.js.map +1 -1
  17. package/build/desktop/contracts.d.ts +12 -2
  18. package/build/desktop/contracts.d.ts.map +1 -1
  19. package/build/desktop/contracts.js +1 -2
  20. package/build/desktop/contracts.js.map +1 -1
  21. package/build/desktop/hostVersion.d.ts.map +1 -1
  22. package/build/desktop/hostVersion.js +3 -5
  23. package/build/desktop/hostVersion.js.map +1 -1
  24. package/build/desktop/main.js +205 -256
  25. package/build/desktop/main.js.map +1 -1
  26. package/build/desktop/packaging.d.ts +2 -0
  27. package/build/desktop/packaging.d.ts.map +1 -1
  28. package/build/desktop/packaging.js +34 -14
  29. package/build/desktop/packaging.js.map +1 -1
  30. package/build/desktop/preload.cjs +9 -0
  31. package/build/desktop/preload.cjs.map +1 -1
  32. package/build/desktop/processSupervisor.d.ts.map +1 -1
  33. package/build/desktop/processSupervisor.js +3 -0
  34. package/build/desktop/processSupervisor.js.map +1 -1
  35. package/build/desktop/providerManager.d.ts +46 -0
  36. package/build/desktop/providerManager.d.ts.map +1 -0
  37. package/build/desktop/providerManager.js +220 -0
  38. package/build/desktop/providerManager.js.map +1 -0
  39. package/build/desktop/providerSelection.d.ts +38 -0
  40. package/build/desktop/providerSelection.d.ts.map +1 -0
  41. package/build/desktop/providerSelection.js +118 -0
  42. package/build/desktop/providerSelection.js.map +1 -0
  43. package/build/desktop/readiness.d.ts +2 -0
  44. package/build/desktop/readiness.d.ts.map +1 -1
  45. package/build/desktop/readiness.js +14 -33
  46. package/build/desktop/readiness.js.map +1 -1
  47. package/build/desktop/setupAssets.d.ts.map +1 -1
  48. package/build/desktop/setupAssets.js +28 -14
  49. package/build/desktop/setupAssets.js.map +1 -1
  50. package/build/desktop/setupAudit.d.ts +4 -3
  51. package/build/desktop/setupAudit.d.ts.map +1 -1
  52. package/build/desktop/setupAudit.js +18 -34
  53. package/build/desktop/setupAudit.js.map +1 -1
  54. package/build/desktop/setupBridge.js +1 -1
  55. package/build/desktop/setupBridge.js.map +1 -1
  56. package/build/desktop/setupPrerequisites.d.ts +11 -0
  57. package/build/desktop/setupPrerequisites.d.ts.map +1 -0
  58. package/build/desktop/setupPrerequisites.js +47 -0
  59. package/build/desktop/setupPrerequisites.js.map +1 -0
  60. package/build/desktop/updateDialog.d.ts +27 -1
  61. package/build/desktop/updateDialog.d.ts.map +1 -1
  62. package/build/desktop/updateDialog.js +85 -5
  63. package/build/desktop/updateDialog.js.map +1 -1
  64. package/build/renderer/assets/ActiveSessionPermissionChip-B49WcZBJ.js +1 -0
  65. package/build/renderer/assets/App-BpxZB5ym.js +2 -0
  66. package/build/renderer/assets/App-DYTUfAl6.js +1 -0
  67. package/build/renderer/assets/App-DxsV-tKS.css +1 -0
  68. package/build/renderer/assets/{App-DKOSn0o_.js → App-boB4WrmU.js} +1 -1
  69. package/build/renderer/assets/WorkspaceAppRoutes-CPqz85iw.js +1 -0
  70. package/build/renderer/assets/app-C52wwCGz.js +85 -0
  71. package/build/renderer/assets/app-CqnsY5ed.css +1 -0
  72. package/build/renderer/assets/{client-BdGHAUoK.js → client-DREGSZqQ.js} +1 -1
  73. package/build/renderer/assets/conversationSidebarRecentEntries-DK0iWS73.js +6 -0
  74. package/build/renderer/assets/{screenshotOverlay-DfBcolX-.js → screenshotOverlay-EF07cXvw.js} +1 -1
  75. package/build/renderer/assets/{useDraftSessionChips-DCIId0eY.js → useDraftSessionChips-BdZ_B1gy.js} +1 -1
  76. package/build/renderer/desktop/overlay/index.html +2 -2
  77. package/build/renderer/index.html +3 -3
  78. package/build/server/app/renderer/auth/api.d.ts.map +1 -1
  79. package/build/server/app/renderer/auth/api.js +4 -1
  80. package/build/server/app/renderer/auth/api.js.map +1 -1
  81. package/build/server/app/renderer/providerCatalogClient.d.ts.map +1 -1
  82. package/build/server/app/renderer/providerCatalogClient.js +34 -12
  83. package/build/server/app/renderer/providerCatalogClient.js.map +1 -1
  84. package/build/server/app/renderer/providerClientInvalidation.d.ts +6 -0
  85. package/build/server/app/renderer/providerClientInvalidation.d.ts.map +1 -0
  86. package/build/server/app/renderer/providerClientInvalidation.js +12 -0
  87. package/build/server/app/renderer/providerClientInvalidation.js.map +1 -0
  88. package/build/server/app/renderer/providerReadLoop.d.ts +5 -0
  89. package/build/server/app/renderer/providerReadLoop.d.ts.map +1 -0
  90. package/build/server/app/renderer/providerReadLoop.js +52 -0
  91. package/build/server/app/renderer/providerReadLoop.js.map +1 -0
  92. package/build/server/app/renderer/providerRegistryClient.d.ts +3 -2
  93. package/build/server/app/renderer/providerRegistryClient.d.ts.map +1 -1
  94. package/build/server/app/renderer/providerRegistryClient.js +51 -53
  95. package/build/server/app/renderer/providerRegistryClient.js.map +1 -1
  96. package/build/server/app/server/appPackageRoutes.d.ts +2 -0
  97. package/build/server/app/server/appPackageRoutes.d.ts.map +1 -1
  98. package/build/server/app/server/appPackageRoutes.js +105 -0
  99. package/build/server/app/server/appPackageRoutes.js.map +1 -1
  100. package/build/server/app/server/authGatePolicy.js +14 -1
  101. package/build/server/app/server/authGatePolicy.js.map +1 -1
  102. package/build/server/app/server/contracts.d.ts +15 -0
  103. package/build/server/app/server/contracts.d.ts.map +1 -1
  104. package/build/server/app/server/dependencies.d.ts.map +1 -1
  105. package/build/server/app/server/dependencies.js +42 -1
  106. package/build/server/app/server/dependencies.js.map +1 -1
  107. package/build/server/app/server/goldenPathStartupResume.d.ts +55 -0
  108. package/build/server/app/server/goldenPathStartupResume.d.ts.map +1 -0
  109. package/build/server/app/server/goldenPathStartupResume.js +109 -0
  110. package/build/server/app/server/goldenPathStartupResume.js.map +1 -0
  111. package/build/server/app/server/platformSetupRoutes.d.ts.map +1 -1
  112. package/build/server/app/server/platformSetupRoutes.js +1 -13
  113. package/build/server/app/server/platformSetupRoutes.js.map +1 -1
  114. package/build/server/app/server/polling.d.ts.map +1 -1
  115. package/build/server/app/server/polling.js +2 -0
  116. package/build/server/app/server/polling.js.map +1 -1
  117. package/build/server/app/server/requestRouter.d.ts.map +1 -1
  118. package/build/server/app/server/requestRouter.js +30 -0
  119. package/build/server/app/server/requestRouter.js.map +1 -1
  120. package/build/server/app/server/runtimeSurfaceProxy.d.ts.map +1 -1
  121. package/build/server/app/server/runtimeSurfaceProxy.js +4 -2
  122. package/build/server/app/server/runtimeSurfaceProxy.js.map +1 -1
  123. package/build/server/app/server/startupRecovery.d.ts.map +1 -1
  124. package/build/server/app/server/startupRecovery.js +5 -0
  125. package/build/server/app/server/startupRecovery.js.map +1 -1
  126. package/build/server/app/server/subscribeRoutes.d.ts.map +1 -1
  127. package/build/server/app/server/subscribeRoutes.js +5 -3
  128. package/build/server/app/server/subscribeRoutes.js.map +1 -1
  129. package/build/server/app/server/telegramCommandSurface.d.ts +29 -0
  130. package/build/server/app/server/telegramCommandSurface.d.ts.map +1 -0
  131. package/build/server/app/server/telegramCommandSurface.js +123 -0
  132. package/build/server/app/server/telegramCommandSurface.js.map +1 -0
  133. package/build/server/app/server/transportWorkGoldenPath.d.ts +82 -0
  134. package/build/server/app/server/transportWorkGoldenPath.d.ts.map +1 -0
  135. package/build/server/app/server/transportWorkGoldenPath.js +307 -0
  136. package/build/server/app/server/transportWorkGoldenPath.js.map +1 -0
  137. package/build/server/config.d.ts +21 -0
  138. package/build/server/config.d.ts.map +1 -1
  139. package/build/server/config.js +12 -0
  140. package/build/server/config.js.map +1 -1
  141. package/build/server/design/components/providerModelFieldsSupport.d.ts +5 -24
  142. package/build/server/design/components/providerModelFieldsSupport.d.ts.map +1 -1
  143. package/build/server/design/components/providerModelFieldsSupport.js +65 -70
  144. package/build/server/design/components/providerModelFieldsSupport.js.map +1 -1
  145. package/build/server/design/components/useProviderCatalogState.d.ts +2 -2
  146. package/build/server/design/components/useProviderCatalogState.d.ts.map +1 -1
  147. package/build/server/design/components/useProviderCatalogState.js +71 -151
  148. package/build/server/design/components/useProviderCatalogState.js.map +1 -1
  149. package/build/server/design/components/useProviderModelFieldActions.js +2 -2
  150. package/build/server/design/components/useProviderModelFieldActions.js.map +1 -1
  151. package/build/server/design/components/useProviderRegistryState.d.ts +1 -7
  152. package/build/server/design/components/useProviderRegistryState.d.ts.map +1 -1
  153. package/build/server/design/components/useProviderRegistryState.js +41 -104
  154. package/build/server/design/components/useProviderRegistryState.js.map +1 -1
  155. package/build/server/design/components/useProviderTargetReconciliation.d.ts +1 -0
  156. package/build/server/design/components/useProviderTargetReconciliation.d.ts.map +1 -1
  157. package/build/server/design/components/useProviderTargetReconciliation.js +3 -2
  158. package/build/server/design/components/useProviderTargetReconciliation.js.map +1 -1
  159. package/build/server/index.js +4 -0
  160. package/build/server/index.js.map +1 -1
  161. package/build/server/platform/apps/packageInstaller.d.ts +19 -0
  162. package/build/server/platform/apps/packageInstaller.d.ts.map +1 -0
  163. package/build/server/platform/apps/packageInstaller.js +92 -0
  164. package/build/server/platform/apps/packageInstaller.js.map +1 -0
  165. package/build/server/platform/apps/registry.d.ts +6 -0
  166. package/build/server/platform/apps/registry.d.ts.map +1 -1
  167. package/build/server/platform/apps/registry.js +24 -0
  168. package/build/server/platform/apps/registry.js.map +1 -1
  169. package/build/server/platform/apps/renderer.d.ts +6 -0
  170. package/build/server/platform/apps/renderer.d.ts.map +1 -0
  171. package/build/server/platform/apps/renderer.js +18 -0
  172. package/build/server/platform/apps/renderer.js.map +1 -0
  173. package/build/server/platform/orchestration/entitySubscriptions/channel.d.ts +2 -1
  174. package/build/server/platform/orchestration/entitySubscriptions/channel.d.ts.map +1 -1
  175. package/build/server/platform/orchestration/entitySubscriptions/channel.js +3 -18
  176. package/build/server/platform/orchestration/entitySubscriptions/channel.js.map +1 -1
  177. package/build/server/platform/orchestration/entitySubscriptions/index.d.ts +1 -0
  178. package/build/server/platform/orchestration/entitySubscriptions/index.d.ts.map +1 -1
  179. package/build/server/platform/orchestration/entitySubscriptions/index.js.map +1 -1
  180. package/build/server/platform/runtime/deliveryClient.d.ts +111 -0
  181. package/build/server/platform/runtime/deliveryClient.d.ts.map +1 -0
  182. package/build/server/platform/runtime/deliveryClient.js +289 -0
  183. package/build/server/platform/runtime/deliveryClient.js.map +1 -0
  184. package/build/server/platform/supervision/providerCapabilityBootstrapYaml.d.ts +1 -0
  185. package/build/server/platform/supervision/providerCapabilityBootstrapYaml.d.ts.map +1 -1
  186. package/build/server/platform/supervision/providerCapabilityBootstrapYaml.js +10 -0
  187. package/build/server/platform/supervision/providerCapabilityBootstrapYaml.js.map +1 -1
  188. package/build/server/platform/supervision/runtimeBoundary.d.ts +11 -1
  189. package/build/server/platform/supervision/runtimeBoundary.d.ts.map +1 -1
  190. package/build/server/platform/supervision/runtimeBoundary.js +2 -2
  191. package/build/server/platform/supervision/runtimeBoundary.js.map +1 -1
  192. package/build/server/platform/transports/telegram/bridge.d.ts +18 -0
  193. package/build/server/platform/transports/telegram/bridge.d.ts.map +1 -1
  194. package/build/server/platform/transports/telegram/bridge.js +176 -0
  195. package/build/server/platform/transports/telegram/bridge.js.map +1 -1
  196. package/build/server/platform/transports/telegram/commandPort.d.ts +40 -0
  197. package/build/server/platform/transports/telegram/commandPort.d.ts.map +1 -0
  198. package/build/server/platform/transports/telegram/commandPort.js +17 -0
  199. package/build/server/platform/transports/telegram/commandPort.js.map +1 -0
  200. package/build/server/platform/transports/telegram/commandRouter.d.ts +22 -0
  201. package/build/server/platform/transports/telegram/commandRouter.d.ts.map +1 -1
  202. package/build/server/platform/transports/telegram/commandRouter.js.map +1 -1
  203. package/build/server/platform/transports/telegram/commands/index.d.ts.map +1 -1
  204. package/build/server/platform/transports/telegram/commands/index.js +38 -0
  205. package/build/server/platform/transports/telegram/commands/index.js.map +1 -1
  206. package/build/server/platform/transports/telegram/ingressDispatch.d.ts +56 -0
  207. package/build/server/platform/transports/telegram/ingressDispatch.d.ts.map +1 -0
  208. package/build/server/platform/transports/telegram/ingressDispatch.js +93 -0
  209. package/build/server/platform/transports/telegram/ingressDispatch.js.map +1 -0
  210. package/build/server/platform/transports/telegram/polling.d.ts +34 -0
  211. package/build/server/platform/transports/telegram/polling.d.ts.map +1 -1
  212. package/build/server/platform/transports/telegram/polling.js +86 -9
  213. package/build/server/platform/transports/telegram/polling.js.map +1 -1
  214. package/build/server/platform/transports/telegram/relay/index.d.ts +3 -0
  215. package/build/server/platform/transports/telegram/relay/index.d.ts.map +1 -1
  216. package/build/server/platform/transports/telegram/relay/index.js +5 -1
  217. package/build/server/platform/transports/telegram/relay/index.js.map +1 -1
  218. package/build/server/platform/transports/telegram/relay/ingress.d.ts +2 -0
  219. package/build/server/platform/transports/telegram/relay/ingress.d.ts.map +1 -1
  220. package/build/server/platform/transports/telegram/relay/ingress.js +1 -1
  221. package/build/server/platform/transports/telegram/relay/ingress.js.map +1 -1
  222. package/build/server/platform/transports/work-delivery/actionTokens.d.ts +66 -0
  223. package/build/server/platform/transports/work-delivery/actionTokens.d.ts.map +1 -0
  224. package/build/server/platform/transports/work-delivery/actionTokens.js +145 -0
  225. package/build/server/platform/transports/work-delivery/actionTokens.js.map +1 -0
  226. package/build/server/platform/transports/work-delivery/contracts.d.ts +172 -0
  227. package/build/server/platform/transports/work-delivery/contracts.d.ts.map +1 -0
  228. package/build/server/platform/transports/work-delivery/contracts.js +26 -0
  229. package/build/server/platform/transports/work-delivery/contracts.js.map +1 -0
  230. package/build/server/platform/transports/work-delivery/deliveryGates.d.ts +32 -0
  231. package/build/server/platform/transports/work-delivery/deliveryGates.d.ts.map +1 -0
  232. package/build/server/platform/transports/work-delivery/deliveryGates.js +45 -0
  233. package/build/server/platform/transports/work-delivery/deliveryGates.js.map +1 -0
  234. package/build/server/platform/transports/work-delivery/inboundClassification.d.ts +31 -0
  235. package/build/server/platform/transports/work-delivery/inboundClassification.d.ts.map +1 -0
  236. package/build/server/platform/transports/work-delivery/inboundClassification.js +52 -0
  237. package/build/server/platform/transports/work-delivery/inboundClassification.js.map +1 -0
  238. package/build/server/platform/transports/work-delivery/outbox.d.ts +84 -0
  239. package/build/server/platform/transports/work-delivery/outbox.d.ts.map +1 -0
  240. package/build/server/platform/transports/work-delivery/outbox.js +270 -0
  241. package/build/server/platform/transports/work-delivery/outbox.js.map +1 -0
  242. package/build/server/platform/transports/work-delivery/permissionEnvelope.d.ts +57 -0
  243. package/build/server/platform/transports/work-delivery/permissionEnvelope.d.ts.map +1 -0
  244. package/build/server/platform/transports/work-delivery/permissionEnvelope.js +74 -0
  245. package/build/server/platform/transports/work-delivery/permissionEnvelope.js.map +1 -0
  246. package/build/server/platform/transports/work-delivery/port.d.ts +60 -0
  247. package/build/server/platform/transports/work-delivery/port.d.ts.map +1 -0
  248. package/build/server/platform/transports/work-delivery/port.js +15 -0
  249. package/build/server/platform/transports/work-delivery/port.js.map +1 -0
  250. package/build/server/platform/transports/work-delivery/proposal.d.ts +31 -0
  251. package/build/server/platform/transports/work-delivery/proposal.d.ts.map +1 -0
  252. package/build/server/platform/transports/work-delivery/proposal.js +59 -0
  253. package/build/server/platform/transports/work-delivery/proposal.js.map +1 -0
  254. package/build/server/platform/transports/work-delivery/readiness.d.ts +61 -0
  255. package/build/server/platform/transports/work-delivery/readiness.d.ts.map +1 -0
  256. package/build/server/platform/transports/work-delivery/readiness.js +123 -0
  257. package/build/server/platform/transports/work-delivery/readiness.js.map +1 -0
  258. package/build/server/platform/transports/work-delivery/stageProjection.d.ts +43 -0
  259. package/build/server/platform/transports/work-delivery/stageProjection.d.ts.map +1 -0
  260. package/build/server/platform/transports/work-delivery/stageProjection.js +132 -0
  261. package/build/server/platform/transports/work-delivery/stageProjection.js.map +1 -0
  262. package/build/server/platform/transports/work-delivery/stateStore.d.ts +21 -0
  263. package/build/server/platform/transports/work-delivery/stateStore.d.ts.map +1 -0
  264. package/build/server/platform/transports/work-delivery/stateStore.js +193 -0
  265. package/build/server/platform/transports/work-delivery/stateStore.js.map +1 -0
  266. package/build/server/platform/transports/work-delivery/telemetry.d.ts +49 -0
  267. package/build/server/platform/transports/work-delivery/telemetry.d.ts.map +1 -0
  268. package/build/server/platform/transports/work-delivery/telemetry.js +80 -0
  269. package/build/server/platform/transports/work-delivery/telemetry.js.map +1 -0
  270. package/build/server/products/chat/api/contracts.d.ts +10 -0
  271. package/build/server/products/chat/api/contracts.d.ts.map +1 -1
  272. package/build/server/products/chat/api/resources/channelRoutes.d.ts.map +1 -1
  273. package/build/server/products/chat/api/resources/channelRoutes.js +27 -1
  274. package/build/server/products/chat/api/resources/channelRoutes.js.map +1 -1
  275. package/build/server/products/chat/api/routeSupport.d.ts +17 -1
  276. package/build/server/products/chat/api/routeSupport.d.ts.map +1 -1
  277. package/build/server/products/chat/api/routeSupport.js +27 -4
  278. package/build/server/products/chat/api/routeSupport.js.map +1 -1
  279. package/build/server/products/chat/api/setupRoutes.d.ts.map +1 -1
  280. package/build/server/products/chat/api/setupRoutes.js +23 -8
  281. package/build/server/products/chat/api/setupRoutes.js.map +1 -1
  282. package/build/server/products/chat/state/model/channelExecutionTargets.d.ts +15 -0
  283. package/build/server/products/chat/state/model/channelExecutionTargets.d.ts.map +1 -1
  284. package/build/server/products/chat/state/model/channelExecutionTargets.js +25 -0
  285. package/build/server/products/chat/state/model/channelExecutionTargets.js.map +1 -1
  286. package/build/server/products/chat/state/model/index.d.ts +1 -1
  287. package/build/server/products/chat/state/model/index.d.ts.map +1 -1
  288. package/build/server/products/chat/state/model/index.js +1 -1
  289. package/build/server/products/chat/state/model/index.js.map +1 -1
  290. package/build/server/products/chat/state/model/readModels.d.ts +1 -0
  291. package/build/server/products/chat/state/model/readModels.d.ts.map +1 -1
  292. package/build/server/products/chat/state/model/readModels.js +2 -1
  293. package/build/server/products/chat/state/model/readModels.js.map +1 -1
  294. package/build/server/products/code/api/relayRoutes.d.ts.map +1 -1
  295. package/build/server/products/code/api/relayRoutes.js +36 -7
  296. package/build/server/products/code/api/relayRoutes.js.map +1 -1
  297. package/build/server/products/code/state/relayState.d.ts +2 -1
  298. package/build/server/products/code/state/relayState.d.ts.map +1 -1
  299. package/build/server/products/code/state/relayState.js +7 -7
  300. package/build/server/products/code/state/relayState.js.map +1 -1
  301. package/build/server/products/shared/api/workspaceContracts.d.ts +5 -0
  302. package/build/server/products/shared/api/workspaceContracts.d.ts.map +1 -1
  303. package/build/server/products/shared/renderer/api/appShell.d.ts +1 -0
  304. package/build/server/products/shared/renderer/api/appShell.d.ts.map +1 -1
  305. package/build/server/products/shared/renderer/api/appShell.js +9 -0
  306. package/build/server/products/shared/renderer/api/appShell.js.map +1 -1
  307. package/build/server/products/work/api/goldenPathProjection.d.ts +156 -0
  308. package/build/server/products/work/api/goldenPathProjection.d.ts.map +1 -0
  309. package/build/server/products/work/api/goldenPathProjection.js +252 -0
  310. package/build/server/products/work/api/goldenPathProjection.js.map +1 -0
  311. package/build/server/products/work/api/index.d.ts +54 -1
  312. package/build/server/products/work/api/index.d.ts.map +1 -1
  313. package/build/server/products/work/api/index.js +182 -4
  314. package/build/server/products/work/api/index.js.map +1 -1
  315. package/build/server/products/work/api/projection.d.ts +7 -1
  316. package/build/server/products/work/api/projection.d.ts.map +1 -1
  317. package/build/server/products/work/api/projection.js +7 -1
  318. package/build/server/products/work/api/projection.js.map +1 -1
  319. package/build/server/products/work/shared/apiPaths.d.ts +8 -0
  320. package/build/server/products/work/shared/apiPaths.d.ts.map +1 -1
  321. package/build/server/products/work/shared/apiPaths.js +8 -0
  322. package/build/server/products/work/shared/apiPaths.js.map +1 -1
  323. package/build/server/products/work/shared/workGoldenPathMessages.d.ts +83 -0
  324. package/build/server/products/work/shared/workGoldenPathMessages.d.ts.map +1 -0
  325. package/build/server/products/work/shared/workGoldenPathMessages.js +211 -0
  326. package/build/server/products/work/shared/workGoldenPathMessages.js.map +1 -0
  327. package/build/server/products/work/shared/workGoldenPathMetadata.d.ts +45 -0
  328. package/build/server/products/work/shared/workGoldenPathMetadata.d.ts.map +1 -0
  329. package/build/server/products/work/shared/workGoldenPathMetadata.js +122 -0
  330. package/build/server/products/work/shared/workGoldenPathMetadata.js.map +1 -0
  331. package/build/server/products/work/state/workCompletionEvidence.d.ts +42 -0
  332. package/build/server/products/work/state/workCompletionEvidence.d.ts.map +1 -0
  333. package/build/server/products/work/state/workCompletionEvidence.js +59 -0
  334. package/build/server/products/work/state/workCompletionEvidence.js.map +1 -0
  335. package/build/server/products/work/state/workExecutionTaskDelegate.d.ts +16 -0
  336. package/build/server/products/work/state/workExecutionTaskDelegate.d.ts.map +1 -1
  337. package/build/server/products/work/state/workExecutionTaskDelegate.js +91 -68
  338. package/build/server/products/work/state/workExecutionTaskDelegate.js.map +1 -1
  339. package/build/server/products/work/state/workGoldenPathAdmission.d.ts +78 -0
  340. package/build/server/products/work/state/workGoldenPathAdmission.d.ts.map +1 -0
  341. package/build/server/products/work/state/workGoldenPathAdmission.js +249 -0
  342. package/build/server/products/work/state/workGoldenPathAdmission.js.map +1 -0
  343. package/build/server/products/work/state/workGoldenPathDeliveryEvidence.d.ts +33 -0
  344. package/build/server/products/work/state/workGoldenPathDeliveryEvidence.d.ts.map +1 -0
  345. package/build/server/products/work/state/workGoldenPathDeliveryEvidence.js +161 -0
  346. package/build/server/products/work/state/workGoldenPathDeliveryEvidence.js.map +1 -0
  347. package/build/server/products/work/state/workGoldenPathIntake.d.ts +34 -0
  348. package/build/server/products/work/state/workGoldenPathIntake.d.ts.map +1 -0
  349. package/build/server/products/work/state/workGoldenPathIntake.js +50 -0
  350. package/build/server/products/work/state/workGoldenPathIntake.js.map +1 -0
  351. package/build/server/products/work/state/workGoldenPathLifecycle.d.ts +44 -0
  352. package/build/server/products/work/state/workGoldenPathLifecycle.d.ts.map +1 -0
  353. package/build/server/products/work/state/workGoldenPathLifecycle.js +146 -0
  354. package/build/server/products/work/state/workGoldenPathLifecycle.js.map +1 -0
  355. package/build/server/products/work/state/workGoldenPathPublish.d.ts +84 -0
  356. package/build/server/products/work/state/workGoldenPathPublish.d.ts.map +1 -0
  357. package/build/server/products/work/state/workGoldenPathPublish.js +488 -0
  358. package/build/server/products/work/state/workGoldenPathPublish.js.map +1 -0
  359. package/build/server/products/work/state/workGoldenPathRunner.d.ts +121 -0
  360. package/build/server/products/work/state/workGoldenPathRunner.d.ts.map +1 -0
  361. package/build/server/products/work/state/workGoldenPathRunner.js +447 -0
  362. package/build/server/products/work/state/workGoldenPathRunner.js.map +1 -0
  363. package/build/server/products/work/state/workGoldenPathRuntimeExecutor.d.ts +74 -0
  364. package/build/server/products/work/state/workGoldenPathRuntimeExecutor.d.ts.map +1 -0
  365. package/build/server/products/work/state/workGoldenPathRuntimeExecutor.js +239 -0
  366. package/build/server/products/work/state/workGoldenPathRuntimeExecutor.js.map +1 -0
  367. package/build/server/products/work/state/workGoldenPathService.d.ts +152 -0
  368. package/build/server/products/work/state/workGoldenPathService.d.ts.map +1 -0
  369. package/build/server/products/work/state/workGoldenPathService.js +1057 -0
  370. package/build/server/products/work/state/workGoldenPathService.js.map +1 -0
  371. package/build/server/products/work/state/workGoldenPathTelegramPort.d.ts +87 -0
  372. package/build/server/products/work/state/workGoldenPathTelegramPort.d.ts.map +1 -0
  373. package/build/server/products/work/state/workGoldenPathTelegramPort.js +220 -0
  374. package/build/server/products/work/state/workGoldenPathTelegramPort.js.map +1 -0
  375. package/build/server/runtime/client.d.ts +13 -0
  376. package/build/server/runtime/client.d.ts.map +1 -1
  377. package/build/server/runtime/client.js +44 -1
  378. package/build/server/runtime/client.js.map +1 -1
  379. package/build/server/runtime/setup.d.ts +14 -4
  380. package/build/server/runtime/setup.d.ts.map +1 -1
  381. package/build/server/runtime/setup.js +17 -19
  382. package/build/server/runtime/setup.js.map +1 -1
  383. package/build/server/runtime/usageSnapshot.d.ts +3 -0
  384. package/build/server/runtime/usageSnapshot.d.ts.map +1 -0
  385. package/build/server/runtime/usageSnapshot.js +69 -0
  386. package/build/server/runtime/usageSnapshot.js.map +1 -0
  387. package/build/server/server/routes/providerCapabilityBootstrap.d.ts +69 -0
  388. package/build/server/server/routes/providerCapabilityBootstrap.d.ts.map +1 -0
  389. package/build/server/server/routes/providerCapabilityBootstrap.js +165 -0
  390. package/build/server/server/routes/providerCapabilityBootstrap.js.map +1 -0
  391. package/build/server/server/routes/providers.d.ts.map +1 -1
  392. package/build/server/server/routes/providers.js +133 -131
  393. package/build/server/server/routes/providers.js.map +1 -1
  394. package/build/server/server/routes/telegram.d.ts +9 -0
  395. package/build/server/server/routes/telegram.d.ts.map +1 -1
  396. package/build/server/server/routes/telegram.js +79 -72
  397. package/build/server/server/routes/telegram.js.map +1 -1
  398. package/build/server/shared/catsAppManifest.d.ts +3 -1
  399. package/build/server/shared/catsAppManifest.d.ts.map +1 -1
  400. package/build/server/shared/catsAppManifest.js +2 -0
  401. package/build/server/shared/catsAppManifest.js.map +1 -1
  402. package/build/server/shared/desktopRecoveryBridge.d.ts +2 -1
  403. package/build/server/shared/desktopRecoveryBridge.d.ts.map +1 -1
  404. package/build/server/shared/desktopRecoveryBridge.js.map +1 -1
  405. package/build/server/shared/executionLabel.d.ts.map +1 -1
  406. package/build/server/shared/executionLabel.js +8 -1
  407. package/build/server/shared/executionLabel.js.map +1 -1
  408. package/build/server/shared/i18n/catalogs/en.d.ts.map +1 -1
  409. package/build/server/shared/i18n/catalogs/en.js +198 -3
  410. package/build/server/shared/i18n/catalogs/en.js.map +1 -1
  411. package/build/server/shared/i18n/catalogs/zh-TW.d.ts.map +1 -1
  412. package/build/server/shared/i18n/catalogs/zh-TW.js +197 -3
  413. package/build/server/shared/i18n/catalogs/zh-TW.js.map +1 -1
  414. package/build/server/shared/i18n/index.d.ts +192 -0
  415. package/build/server/shared/i18n/index.d.ts.map +1 -1
  416. package/build/server/shared/i18n/messageKeys.d.ts +192 -0
  417. package/build/server/shared/i18n/messageKeys.d.ts.map +1 -1
  418. package/build/server/shared/i18n/messageKeys.js +192 -0
  419. package/build/server/shared/i18n/messageKeys.js.map +1 -1
  420. package/build/server/shared/platformSetupOperation.d.ts +2 -0
  421. package/build/server/shared/platformSetupOperation.d.ts.map +1 -0
  422. package/build/server/shared/platformSetupOperation.js +9 -0
  423. package/build/server/shared/platformSetupOperation.js.map +1 -0
  424. package/build/server/shared/providerCatalog.d.ts +5 -2
  425. package/build/server/shared/providerCatalog.d.ts.map +1 -1
  426. package/build/server/shared/providerCatalog.js +6 -0
  427. package/build/server/shared/providerCatalog.js.map +1 -1
  428. package/build/server/shared/providerCatalogData.d.ts +154 -77
  429. package/build/server/shared/providerCatalogData.d.ts.map +1 -1
  430. package/build/server/shared/providerCatalogData.js +73 -36
  431. package/build/server/shared/providerCatalogData.js.map +1 -1
  432. package/build/server/shared/providerCatalogInstances.d.ts.map +1 -1
  433. package/build/server/shared/providerCatalogInstances.js +3 -0
  434. package/build/server/shared/providerCatalogInstances.js.map +1 -1
  435. package/build/server/shared/providerModelLabelRegistry.d.ts +29 -0
  436. package/build/server/shared/providerModelLabelRegistry.d.ts.map +1 -0
  437. package/build/server/shared/providerModelLabelRegistry.js +49 -0
  438. package/build/server/shared/providerModelLabelRegistry.js.map +1 -0
  439. package/build/server/shared/providerRegistryWarnings.d.ts +4 -0
  440. package/build/server/shared/providerRegistryWarnings.d.ts.map +1 -1
  441. package/build/server/shared/providerRegistryWarnings.js +7 -0
  442. package/build/server/shared/providerRegistryWarnings.js.map +1 -1
  443. package/build/server/shared/providerSelection.d.ts.map +1 -1
  444. package/build/server/shared/providerSelection.js +10 -13
  445. package/build/server/shared/providerSelection.js.map +1 -1
  446. package/build/server/shared/runtimeSetup.d.ts +17 -4
  447. package/build/server/shared/runtimeSetup.d.ts.map +1 -1
  448. package/build/server/shared/runtimeStatusPresentation.js +1 -1
  449. package/build/server/shared/runtimeStatusPresentation.js.map +1 -1
  450. package/package.json +32 -3
  451. package/packages/app-sdk/browser.d.ts +51 -0
  452. package/packages/app-sdk/browser.js +48 -0
  453. package/packages/app-sdk/package.d.ts +14 -0
  454. package/packages/app-sdk/package.js +131 -0
  455. package/packages/app-sdk/package.json +7 -0
  456. package/packages/provider-setup/manager.d.ts +79 -0
  457. package/packages/provider-setup/manager.js +441 -0
  458. package/scripts/README.md +66 -26
  459. package/scripts/build-desktop-installer.mjs +139 -16
  460. package/scripts/build-test-ui.mjs +1 -1
  461. package/scripts/bundle-server.mjs +23 -10
  462. package/scripts/linux/build-desktop-package.sh +6 -6
  463. package/scripts/linux/install-antigravity.sh +0 -0
  464. package/scripts/linux/install-devin.sh +0 -0
  465. package/scripts/linux/install-github-cli.sh +5 -0
  466. package/scripts/linux/install-meta-cli.sh +8 -0
  467. package/scripts/linux/install-node.sh +9 -3
  468. package/scripts/linux/node-cli-common.sh +87 -48
  469. package/scripts/linux/provider-cli-common.sh +178 -130
  470. package/scripts/linux/provider-version-common.sh +247 -0
  471. package/scripts/linux/sync-agent-skills.sh +27 -5
  472. package/scripts/linux/test-linux-package-smoke.sh +6 -3
  473. package/scripts/linux/upgrade-cli-tools.sh +1 -1
  474. package/scripts/linux/verified-npm-update.sh +20 -0
  475. package/scripts/macos/build-desktop-package.sh +5 -5
  476. package/scripts/macos/install-antigravity.sh +0 -0
  477. package/scripts/macos/install-devin.sh +0 -0
  478. package/scripts/macos/install-github-cli.sh +5 -0
  479. package/scripts/macos/install-meta-cli.sh +8 -0
  480. package/scripts/macos/install-node.sh +9 -3
  481. package/scripts/macos/node-cli-common.sh +87 -48
  482. package/scripts/macos/provider-cli-common.sh +178 -130
  483. package/scripts/macos/provider-version-common.sh +247 -0
  484. package/scripts/macos/sync-agent-skills.sh +27 -5
  485. package/scripts/macos/test-macos-package-smoke.sh +6 -3
  486. package/scripts/macos/upgrade-cli-tools.sh +1 -1
  487. package/scripts/macos/verified-npm-update.sh +20 -0
  488. package/scripts/package-desktop.mjs +15 -2
  489. package/scripts/testing/check-usage-app.mts +266 -0
  490. package/scripts/testing/conversation-navigation-smoke-electron.cjs +134 -0
  491. package/scripts/testing/conversation-navigation-smoke-renderer.tsx +102 -0
  492. package/scripts/testing/conversation-navigation-smoke.mjs +67 -0
  493. package/scripts/testing/usage-app-smoke-electron.cjs +10 -0
  494. package/scripts/testing/usage-app-smoke-renderer.tsx +8 -0
  495. package/scripts/validate-release-assets.mjs +4 -1
  496. package/scripts/verify-desktop-app-bundle.mjs +108 -0
  497. package/scripts/windows/Build-DesktopPackage.ps1 +9 -6
  498. package/scripts/windows/Install-Antigravity.ps1 +26 -3
  499. package/scripts/windows/Install-ClaudeCode.ps1 +25 -7
  500. package/scripts/windows/Install-CursorAgent.ps1 +45 -30
  501. package/scripts/windows/Install-Devin.ps1 +16 -47
  502. package/scripts/windows/Install-GitHubCli.ps1 +4 -0
  503. package/scripts/windows/Install-Goose.ps1 +18 -1
  504. package/scripts/windows/Install-Grok.ps1 +14 -1
  505. package/scripts/windows/Install-Junie.ps1 +32 -11
  506. package/scripts/windows/Install-KiroCli.ps1 +37 -13
  507. package/scripts/windows/Install-MetaCli.ps1 +463 -0
  508. package/scripts/windows/Install-Node.ps1 +6 -1
  509. package/scripts/windows/Install-Ollama.ps1 +4 -1
  510. package/scripts/windows/Setup-NodeGlobalPrefix.ps1 +10 -0
  511. package/scripts/windows/Sync-AgentSkills.ps1 +29 -6
  512. package/scripts/windows/Test-WindowsInstallerSmoke.ps1 +4 -1
  513. package/scripts/windows/_HiddenProcess.ps1 +14 -3
  514. package/scripts/windows/_NativeInstallerSupport.ps1 +308 -0
  515. package/scripts/windows/_NpmCliInstaller.ps1 +35 -14
  516. package/scripts/windows/_PackagedUninstall.ps1 +9 -1
  517. package/scripts/windows/_VerifiedNpmUpdate.ps1 +25 -0
  518. package/build/desktop/updateNotifications.d.ts +0 -64
  519. package/build/desktop/updateNotifications.d.ts.map +0 -1
  520. package/build/desktop/updateNotifications.js +0 -143
  521. package/build/desktop/updateNotifications.js.map +0 -1
  522. package/build/renderer/assets/ActiveSessionPermissionChip-DImsuR9T.js +0 -1
  523. package/build/renderer/assets/App-BfOvMP2m.js +0 -1
  524. package/build/renderer/assets/App-DGwkRFZl.css +0 -1
  525. package/build/renderer/assets/App-DWd7I3Z2.js +0 -2
  526. package/build/renderer/assets/WorkspaceAppRoutes-CrbTA9En.js +0 -1
  527. package/build/renderer/assets/app-BTww3Hl4.js +0 -43
  528. package/build/renderer/assets/app-CPxWQwLA.css +0 -1
  529. package/build/renderer/assets/conversationSidebarRecentEntries-QuaOPxCb.js +0 -6
  530. package/build/server/app/renderer/settings/runtimeLifecycleHelpers.d.ts +0 -48
  531. package/build/server/app/renderer/settings/runtimeLifecycleHelpers.d.ts.map +0 -1
  532. package/build/server/app/renderer/settings/runtimeLifecycleHelpers.js +0 -535
  533. package/build/server/app/renderer/settings/runtimeLifecycleHelpers.js.map +0 -1
  534. package/build/server/design/components/useProviderRegistryAutoRecheck.d.ts +0 -13
  535. package/build/server/design/components/useProviderRegistryAutoRecheck.d.ts.map +0 -1
  536. package/build/server/design/components/useProviderRegistryAutoRecheck.js +0 -63
  537. package/build/server/design/components/useProviderRegistryAutoRecheck.js.map +0 -1
  538. package/build/server/products/shared/renderer/api/providerCatalogRefreshStore.d.ts +0 -19
  539. package/build/server/products/shared/renderer/api/providerCatalogRefreshStore.d.ts.map +0 -1
  540. package/build/server/products/shared/renderer/api/providerCatalogRefreshStore.js +0 -53
  541. package/build/server/products/shared/renderer/api/providerCatalogRefreshStore.js.map +0 -1
  542. package/build/server/products/shared/renderer/api/providers.d.ts +0 -17
  543. package/build/server/products/shared/renderer/api/providers.d.ts.map +0 -1
  544. package/build/server/products/shared/renderer/api/providers.js +0 -50
  545. package/build/server/products/shared/renderer/api/providers.js.map +0 -1
  546. package/scripts/linux/install-aider.sh +0 -8
  547. package/scripts/macos/install-aider.sh +0 -8
  548. package/scripts/windows/Install-Aider.ps1 +0 -368
@@ -0,0 +1,247 @@
1
+ #!/usr/bin/env bash
2
+ # Source this file for passive native version comparison and bounded vendor queries.
3
+ # Usage: source provider-version-common.sh; cats_native_latest_version <provider>
4
+ # Adapted from environment-bootstrap shared/posix/upstream-version.sh at 752dc13.
5
+ # Queries return an empty value on failure; check-only mode never invokes them.
6
+ cats_version_token() {
7
+ printf '%s' "$1" | tr -d '\r' | grep -oE '[0-9]+(\.[0-9]+)+(-[0-9A-Za-z]+(\.[0-9A-Za-z]+)*|\.[A-Za-z][0-9A-Za-z]*(\.[0-9]+)*)?' | head -n 1 || true
8
+ }
9
+
10
+ # cats_version_compare <a> <b>
11
+ # 只比數字段、補滿四段:印 -1(a 較舊)、0、1(a 較新);任一邊解析不出版本印空字串。
12
+ # 空字串要當成「無法比較、交回原本流程」,不能當成落後,否則查不到版本時每次都會重裝。
13
+ cats_version_compare() {
14
+ local a b i x y
15
+ a="$(printf '%s' "$1" | tr -d '\r' | grep -oE '[0-9]+(\.[0-9]+)*' | head -n 1 || true)"
16
+ b="$(printf '%s' "$2" | tr -d '\r' | grep -oE '[0-9]+(\.[0-9]+)*' | head -n 1 || true)"
17
+ if [ -z "$a" ] || [ -z "$b" ]; then
18
+ printf ''
19
+ return 0
20
+ fi
21
+
22
+ i=1
23
+ while [ "$i" -le 4 ]; do
24
+ x="$(printf '%s' "$a" | awk -F. -v n="$i" '{print $n}')"
25
+ y="$(printf '%s' "$b" | awk -F. -v n="$i" '{print $n}')"
26
+ [ -n "$x" ] || x=0
27
+ [ -n "$y" ] || y=0
28
+ if [ "$((10#$x))" -lt "$((10#$y))" ]; then printf -- '-1'; return 0; fi
29
+ if [ "$((10#$x))" -gt "$((10#$y))" ]; then printf '1'; return 0; fi
30
+ i=$((i + 1))
31
+ done
32
+ printf '0'
33
+ }
34
+
35
+ # _cats_json_string_field <field> :從 stdin 的 JSON 文字撈第一個 "field":"value" 的 value
36
+ _cats_json_string_field() {
37
+ grep -oE "\"$1\"[[:space:]]*:[[:space:]]*\"[^\"]*\"" | head -n 1 | sed -E 's/.*"([^"]*)"$/\1/'
38
+ }
39
+
40
+ # cats_github_latest_release <owner/repo>
41
+ # GitHub Releases 的最新穩定版 tag(去掉開頭的 v);失敗印空。
42
+ cats_github_latest_release() {
43
+ local json
44
+ json="$(curl -fsSL --connect-timeout 5 --max-time 20 -H 'Accept: application/vnd.github+json' "https://api.github.com/repos/$1/releases/latest" 2>/dev/null)" || return 0
45
+ printf '%s' "$json" | _cats_json_string_field tag_name | sed 's/^v//' || true
46
+ }
47
+
48
+ # cats_antigravity_latest_version [已下載的官方 install.sh]
49
+ # 官方腳本讀的是 $DOWNLOAD_BASE_URL/manifests/<platform>.json 的 version。
50
+ # 傳入抓下來的腳本可以順便從裡面撈 base URL,官方搬家時就不必改這裡;撈不到用寫死的。
51
+ # platform 的算法照抄官方(darwin_arm64 / linux_amd64 / linux_amd64_musl …)。
52
+ cats_antigravity_latest_version() {
53
+ local base='https://antigravity-cli-auto-updater-974169037036.us-central1.run.app'
54
+ local found os arch platform
55
+
56
+ if [ -n "${1:-}" ] && [ -r "$1" ]; then
57
+ found="$(grep -oE 'DOWNLOAD_BASE_URL="https://[^"]+"' "$1" | head -n 1 | sed -E 's/^DOWNLOAD_BASE_URL="(.*)"$/\1/')"
58
+ [ -n "$found" ] && base="$found"
59
+ fi
60
+
61
+ case "$(uname -s)" in
62
+ Darwin) os=darwin ;;
63
+ Linux) os=linux ;;
64
+ *) return 0 ;;
65
+ esac
66
+ case "$(uname -m)" in
67
+ x86_64|amd64) arch=amd64 ;;
68
+ arm64|aarch64) arch=arm64 ;;
69
+ *) return 0 ;;
70
+ esac
71
+ if [ "$os" = linux ] && { [ -f /lib/libc.musl-x86_64.so.1 ] || [ -f /lib/libc.musl-aarch64.so.1 ] || ldd /bin/ls 2>&1 | grep -q musl; }; then
72
+ platform="linux_${arch}_musl"
73
+ else
74
+ platform="${os}_${arch}"
75
+ fi
76
+
77
+ curl -fsSL --connect-timeout 5 --max-time 20 "$base/manifests/$platform.json" 2>/dev/null | _cats_json_string_field version || true
78
+ }
79
+
80
+ # cats_cursor_agent_latest_version <已下載的官方 install 腳本>
81
+ # 官方 https://cursor.com/install 是支寫死版本的腳本,目錄名就是版本
82
+ # (…/versions/2026.09.10-fd3934a)。版本是「日期-commit」,cats_version_compare 只比得到
83
+ # 日期,同日不同 commit 由呼叫端用字串相等另判。
84
+ cats_cursor_agent_latest_version() {
85
+ [ -n "${1:-}" ] && [ -r "$1" ] || return 0
86
+ grep -oE 'versions/[0-9]{4}\.[0-9]{2}\.[0-9]{2}-[0-9A-Za-z]+' "$1" | head -n 1 | sed 's#^versions/##' || true
87
+ }
88
+
89
+ # cats_junie_latest_build
90
+ # 官方 install.sh 讀 GitHub raw 的 update-info.jsonl:一行一個 build,version 是 build 號
91
+ # (3110.7,也是 versions/ 底下的目錄名)、marketing 才是 26.9.7、platform 是
92
+ # linux-amd64 / macos-aarch64 這種。印本平台最大的 build 號;失敗印空。
93
+ cats_junie_latest_build() {
94
+ local os arch platform jsonl line v best=''
95
+
96
+ case "$(uname -s)" in
97
+ Darwin) os=macos ;;
98
+ Linux) os=linux ;;
99
+ *) return 0 ;;
100
+ esac
101
+ case "$(uname -m)" in
102
+ x86_64|amd64) arch=amd64 ;;
103
+ arm64|aarch64) arch=aarch64 ;;
104
+ *) return 0 ;;
105
+ esac
106
+ platform="${os}-${arch}"
107
+
108
+ jsonl="$(curl -fsSL --connect-timeout 5 --max-time 20 'https://raw.githubusercontent.com/jetbrains-junie/junie/main/update-info.jsonl' 2>/dev/null)" || return 0
109
+
110
+ while IFS= read -r line; do
111
+ case "$line" in
112
+ *"\"platform\":\"$platform\""*) ;;
113
+ *) continue ;;
114
+ esac
115
+ v="$(printf '%s' "$line" | _cats_json_string_field version || true)"
116
+ [ -n "$v" ] || continue
117
+ if [ -z "$best" ] || [ "$(cats_version_compare "$v" "$best")" = "1" ]; then
118
+ best="$v"
119
+ fi
120
+ done <<< "$jsonl"
121
+
122
+ printf '%s' "$best"
123
+ }
124
+
125
+ # cats_kiro_latest_version
126
+ # Kiro 的官方 installer 讀 stable/latest/manifest.json(Windows 版 Install-KiroCLI.ps1
127
+ # 用的是同一份),欄位 version。
128
+ cats_kiro_latest_version() {
129
+ curl -fsSL --connect-timeout 5 --max-time 20 'https://prod.download.cli.kiro.dev/stable/latest/manifest.json' 2>/dev/null | _cats_json_string_field version || true
130
+ }
131
+
132
+ # cats_devin_latest_version
133
+ # Devin 的官方 install.sh 與 Windows 版 setup.ps1 讀的都是 cli/current/manifest.json,欄位
134
+ # version(3000.10.27)。官方腳本同版雖不重抓,POSIX 版仍會重建兩個符號連結、Windows 版更會
135
+ # 無條件重寫 180 MB 的 devin.exe;先問這裡,同版就完全不動。
136
+ cats_devin_latest_version() {
137
+ curl -fsSL --connect-timeout 5 --max-time 20 'https://static.devin.ai/cli/current/manifest.json' 2>/dev/null | _cats_json_string_field version || true
138
+ }
139
+
140
+ # cats_grok_latest_version [channel]
141
+ # Grok 的官方 install.sh(與 Windows 的 install.ps1)決定要下載哪一版,靠的只是一個純文字端點:
142
+ # https://x.ai/cli/<channel>(Cloudflare 前端)不通就退到 GCS 上的同名檔案,內容就是版本號
143
+ # (1.0.30)。這裡照抄同一套順序;channel 預設跟官方一樣吃 GROK_CHANNEL(stable)。
144
+ # 三平台都問這裡,刻意不用 `grok update --check --json`:那要執行 grok 本體去連 x.ai 做 TLS
145
+ # 交握,而 grok 的 TLS 實作用到 SHA-512 硬體指令(sha512su0),沒有這個擴充的 aarch64
146
+ # (Raspberry Pi 4/5 的 Cortex-A72/A76)會當場 SIGILL、輸出全空 —— 見 CLAUDE.md Known Gotchas。
147
+ # 這個端點不必執行任何工具,問到的也正是安裝器接下來會抓的版本。失敗印空。
148
+ cats_grok_latest_version() {
149
+ local channel="${1:-${GROK_CHANNEL:-stable}}" url v
150
+ for url in "https://x.ai/cli/${channel}" "https://storage.googleapis.com/grok-build-public-artifacts/cli/${channel}"; do
151
+ v="$(curl -fsSL --connect-timeout 5 --max-time 20 "$url" 2>/dev/null | tr -d '\r' | head -n 1 | tr -d '[:space:]' || true)"
152
+ if printf '%s' "$v" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+(-[A-Za-z0-9._]+)?$'; then
153
+ printf '%s' "$v"
154
+ return 0
155
+ fi
156
+ done
157
+ printf ''
158
+ }
159
+
160
+
161
+ cats_native_latest_version() {
162
+ local script
163
+ case "$1" in
164
+ antigravity) cats_antigravity_latest_version ;;
165
+ cursor)
166
+ script="$(curl -fsSL --connect-timeout 5 --max-time 20 https://cursor.com/install 2>/dev/null)" || return 0
167
+ printf '%s' "$script" | grep -oE 'versions/[0-9]{4}\.[0-9]{2}\.[0-9]{2}-[0-9A-Za-z]+' | head -n 1 | sed 's#^versions/##' || true
168
+ ;;
169
+ goose) cats_github_latest_release aaif-goose/goose ;;
170
+ junie) cats_junie_latest_build ;;
171
+ kiro) cats_kiro_latest_version ;;
172
+ devin) cats_devin_latest_version ;;
173
+ grok) cats_grok_latest_version ;;
174
+ *) return 0 ;;
175
+ esac
176
+ }
177
+
178
+ cats_native_version_token() {
179
+ if [ "$1" = junie ]; then
180
+ printf '%s' "$2" | sed -nE 's/.*\(([0-9]+(\.[0-9]+)+)\).*/\1/p' | head -n 1 || true
181
+ else
182
+ cats_version_token "$2"
183
+ fi
184
+ }
185
+
186
+ # Print current/older/unknown; Cursor same-day hashes are distinct releases.
187
+ cats_native_version_state() {
188
+ local current latest comparison
189
+ current="$(cats_native_version_token "$1" "$2")"
190
+ latest="$3"
191
+ [ -n "$current" ] && [ -n "$latest" ] || { printf unknown; return 0; }
192
+ comparison="$(cats_version_compare "$current" "$latest")"
193
+ if [ "$comparison" = 1 ] || { [ "$comparison" = 0 ] && { [ "$1" != cursor ] || [ "$current" = "$latest" ]; }; }; then
194
+ printf current
195
+ elif [ -n "$comparison" ]; then printf older
196
+ else printf unknown; fi
197
+ }
198
+
199
+ # Delete only older numeric version directories in a known installer-owned tree.
200
+ # Current/pending/newer builds, symlinks and custom locations outside HOME remain.
201
+ cats_cleanup_native_versions() {
202
+ local provider="$1" version="$2" root='' data='' keep='' actual='' directory='' name='' ancestor=''
203
+ keep="$(cats_native_version_token "$provider" "$version")"
204
+ [ -n "$keep" ] || return 0
205
+ case "$provider" in
206
+ cursor)
207
+ root="$HOME/.local/share/cursor-agent/versions"
208
+ [ -L "$HOME/.local/bin/cursor-agent" ] || return 0
209
+ actual="$(readlink "$HOME/.local/bin/cursor-agent")" || return 0
210
+ [ "$(basename "$(dirname "$actual")")" = "$keep" ] || return 0
211
+ ;;
212
+ devin)
213
+ root="${XDG_DATA_HOME:-$HOME/.local/share}/devin/cli/_versions"
214
+ [ -L "$root/current" ] || return 0
215
+ actual="$(readlink "$root/current")" || return 0
216
+ [ "$(basename "$actual")" = "$keep" ] || return 0
217
+ ;;
218
+ junie)
219
+ data="${JUNIE_DATA_DIR:-$HOME/.local/share/junie}"
220
+ root="$data/versions"
221
+ [ ! -e "$data/updates/pending-update.json" ] && [ -L "$data/current" ] || return 0
222
+ actual="$(readlink "$data/current")" || return 0
223
+ [ "$(basename "$actual")" = "$keep" ] || return 0
224
+ ;;
225
+ *) return 0 ;;
226
+ esac
227
+ case "$root" in "$HOME"/*) ;; *) return 0 ;; esac
228
+ [ -d "$root" ] || return 0
229
+ ancestor="$root"
230
+ while [ "$ancestor" != / ] && [ "$ancestor" != . ]; do
231
+ [ ! -L "$ancestor" ] || return 0
232
+ ancestor="$(dirname "$ancestor")"
233
+ done
234
+ local canonical_home
235
+ canonical_home="$(cd -P -- "$HOME" && pwd -P)" || return 0
236
+ root="$(cd -P -- "$root" && pwd -P)" || return 0
237
+ case "$root" in "$canonical_home"/*) ;; *) return 0 ;; esac
238
+ for directory in "$root"/*; do
239
+ [ -d "$directory" ] && [ ! -L "$directory" ] || continue
240
+ name="$(basename "$directory")"
241
+ printf '%s' "$name" | grep -qE '^[0-9]+(\.[0-9]+)+(-[0-9A-Za-z]+)?$' || continue
242
+ [ "$(cats_version_compare "$name" "$keep")" = -1 ] || continue
243
+ # Skip directory trees with links rather than recurse through an unknown layout.
244
+ [ -z "$(find "$directory" -type l -print 2>/dev/null)" ] || continue
245
+ rm -rf -- "$directory" || printf 'Could not remove old %s build %s.\n' "$provider" "$name" >&2
246
+ done
247
+ }
@@ -76,11 +76,33 @@ if [[ -n "$agent" ]]; then
76
76
  fi
77
77
 
78
78
  skill_dirs=()
79
- for entry in "$skills_dir"/*; do
80
- [[ -d "$entry" ]] || continue
81
- [[ -f "$entry/SKILL.md" ]] || continue
82
- skill_dirs+=("$entry")
83
- done
79
+ discover_skills() {
80
+ local entry skill_name existing existing_name
81
+ for entry in "$1"/*; do
82
+ [[ -d "$entry" ]] || continue
83
+ [[ "$entry" != *.bootstrap ]] || continue
84
+ if [[ -L "$entry" ]]; then
85
+ echo "Linked skill directories are not supported: $entry" >&2
86
+ exit 1
87
+ fi
88
+ if [[ -f "$entry/SKILL.md" ]]; then
89
+ skill_name="$(basename "$entry" | tr '[:upper:]' '[:lower:]')"
90
+ # macOS Bash 3.2 treats an empty array as unset under nounset.
91
+ for existing in ${skill_dirs[@]+"${skill_dirs[@]}"}; do
92
+ existing_name="$(basename "$existing" | tr '[:upper:]' '[:lower:]')"
93
+ if [[ "$skill_name" == "$existing_name" ]]; then
94
+ echo "Duplicate skill '$skill_name': $existing and $entry" >&2
95
+ exit 1
96
+ fi
97
+ done
98
+ skill_dirs+=("$entry")
99
+ # Resources inside this package are copied intact, never discovered again.
100
+ else
101
+ discover_skills "$entry"
102
+ fi
103
+ done
104
+ }
105
+ discover_skills "$skills_dir"
84
106
 
85
107
  if [[ ${#skill_dirs[@]} -eq 0 ]]; then
86
108
  echo "No skills found in $skills_dir (no directories with SKILL.md)" >&2
@@ -37,10 +37,11 @@ assert_file "${RESOURCES_ROOT}/app-sidecar/build/renderer/index.html" 'bundled c
37
37
  assert_file "${RESOURCES_ROOT}/app-sidecar/package.json" 'bundled cats app package manifest'
38
38
  assert_file "${RESOURCES_ROOT}/app-sidecar/node_modules/js-yaml/package.json" 'bundled cats app js-yaml dependency marker'
39
39
  assert_file "${RESOURCES_ROOT}/app-sidecar/node_modules/argparse/package.json" 'bundled cats app argparse dependency marker'
40
+ assert_file "${RESOURCES_ROOT}/app-sidecar/config/provider-capability-bootstrap.yaml.example" 'bundled cats capability bootstrap example'
40
41
  assert_file "${RESOURCES_ROOT}/cats-runtime/build/runtime/index.js" 'bundled cats-runtime entry'
41
42
  assert_file "${RESOURCES_ROOT}/cats-runtime/package.json" 'bundled cats-runtime package manifest'
42
43
  assert_file "${RESOURCES_ROOT}/cats-runtime/public/provider-setup.html" 'bundled cats-runtime setup UI'
43
- assert_file "${RESOURCES_ROOT}/cats-runtime/skills/README.md" 'bundled cats-runtime skills catalog root'
44
+ assert_file "${RESOURCES_ROOT}/cats-runtime/runtime-skills/README.md" 'bundled cats-runtime skills catalog root'
44
45
  assert_file "${RESOURCES_ROOT}/cats-runtime/config/management.yaml.example" 'bundled cats-runtime management config example'
45
46
  assert_file "${RESOURCES_ROOT}/cats-runtime/config/providers.yaml.example" 'bundled cats-runtime provider config example'
46
47
  assert_file "${RESOURCES_ROOT}/cats-runtime/config/curated-model-catalogs.yaml.example" 'bundled cats-runtime curated model catalog example'
@@ -53,7 +54,7 @@ assert_file "${RESOURCES_ROOT}/desktop/setup-assets/macos/install-antigravity.sh
53
54
  assert_file "${RESOURCES_ROOT}/desktop/setup-assets/macos/install-grok.sh" 'bundled macOS Grok installer helper'
54
55
  assert_file "${RESOURCES_ROOT}/desktop/setup-assets/macos/install-cline.sh" 'bundled macOS Cline installer helper'
55
56
  assert_file "${RESOURCES_ROOT}/desktop/setup-assets/macos/install-devin.sh" 'bundled macOS Devin installer helper'
56
- assert_file "${RESOURCES_ROOT}/desktop/setup-assets/macos/install-aider.sh" 'bundled macOS Aider installer helper'
57
+ assert_file "${RESOURCES_ROOT}/desktop/setup-assets/macos/install-meta-cli.sh" 'bundled macOS Meta Muse installer helper'
57
58
  assert_file "${RESOURCES_ROOT}/desktop/setup-assets/macos/install-copilot.sh" 'bundled macOS GitHub Copilot installer helper'
58
59
  assert_file "${RESOURCES_ROOT}/desktop/setup-assets/macos/install-opencode.sh" 'bundled macOS OpenCode installer helper'
59
60
  assert_file "${RESOURCES_ROOT}/desktop/setup-assets/macos/install-kilo.sh" 'bundled macOS Kilo Code installer helper'
@@ -65,6 +66,8 @@ assert_file "${RESOURCES_ROOT}/desktop/setup-assets/macos/install-goose.sh" 'bun
65
66
  assert_file "${RESOURCES_ROOT}/desktop/setup-assets/macos/install-junie.sh" 'bundled macOS Junie installer helper'
66
67
  assert_file "${RESOURCES_ROOT}/desktop/setup-assets/macos/install-kiro-cli.sh" 'bundled macOS Kiro installer helper'
67
68
  assert_file "${RESOURCES_ROOT}/desktop/setup-assets/macos/check-installation.sh" 'bundled macOS readiness audit helper'
69
+ assert_file "${RESOURCES_ROOT}/desktop/setup-assets/macos/provider-version-common.sh" 'bundled native version library'
70
+ assert_file "${RESOURCES_ROOT}/desktop/setup-assets/macos/verified-npm-update.sh" 'bundled npm verification library'
68
71
  assert_file "${RESOURCES_ROOT}/desktop/setup-assets/macos/provider-cli-common.sh" 'bundled macOS provider helper library'
69
72
  assert_file "${RESOURCES_ROOT}/desktop/setup-assets/macos/node-cli-common.sh" 'bundled macOS npm helper library'
70
73
  assert_file "${RESOURCES_ROOT}/desktop/setup-assets/manifest.json" 'bundled setup-assets manifest'
@@ -102,7 +105,7 @@ assert(macTarget.artifacts.some((artifact) => artifact.id === 'macos-antigravity
102
105
  assert(macTarget.artifacts.some((artifact) => artifact.id === 'macos-grok-native-installer-script'), 'macOS target includes the bundled Grok installer asset');
103
106
  assert(macTarget.artifacts.some((artifact) => artifact.id === 'macos-cline-native-installer-script'), 'macOS target includes the bundled Cline installer asset');
104
107
  assert(macTarget.artifacts.some((artifact) => artifact.id === 'macos-devin-native-installer-script'), 'macOS target includes the bundled Devin installer asset');
105
- assert(macTarget.artifacts.some((artifact) => artifact.id === 'macos-aider-native-installer-script'), 'macOS target includes the bundled Aider installer asset');
108
+ assert(macTarget.artifacts.some((artifact) => artifact.id === 'macos-muse-native-installer-script'), 'macOS target includes the bundled Meta Muse installer asset');
106
109
  assert(macTarget.artifacts.some((artifact) => artifact.id === 'macos-setup-readiness-audit-script'), 'macOS target includes the bundled readiness audit asset');
107
110
  assert(macTarget.artifacts.some((artifact) => artifact.id === 'macos-provider-cli-common-support-script'), 'macOS target includes the macOS provider helper asset');
108
111
  assert(macTarget.artifacts.some((artifact) => artifact.id === 'macos-node-cli-common-support-script'), 'macOS target includes the macOS npm helper asset');
@@ -35,7 +35,7 @@ while [ $# -gt 0 ]; do
35
35
  shift
36
36
  done
37
37
 
38
- for script_name in install-claude-code.sh install-antigravity.sh install-cursor-agent.sh install-devin.sh install-aider.sh install-goose.sh install-junie.sh install-kiro-cli.sh install-grok.sh; do
38
+ for script_name in install-claude-code.sh install-antigravity.sh install-cursor-agent.sh install-devin.sh install-meta-cli.sh install-goose.sh install-junie.sh install-kiro-cli.sh install-grok.sh; do
39
39
  "$SCRIPT_DIR/$script_name" -Upgrade
40
40
  done
41
41
 
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env bash
2
+ # Usage: source verified-npm-update.sh; cats_upgrade_npm
3
+ # Explicit npm upgrade only. Adapted from environment-bootstrap 4690075.
4
+ # Preserve the current prefix (including nvm), enforce engines, verify command and package.
5
+ cats_upgrade_npm() {
6
+ local current latest installed root
7
+ current="$(npm --version)" || { printf 'Could not read npm version.\n' >&2; return 1; }
8
+ latest="$(npm view npm@latest version --fetch-retries=0 --fetch-timeout=10000 --loglevel=error)" || { printf 'npm version query failed.\n' >&2; return 1; }
9
+ [[ "$latest" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || { printf 'Invalid npm version metadata.\n' >&2; return 1; }
10
+ [ "$current" != "$latest" ] || return 0
11
+ [ "$(cats_version_compare "$current" "$latest")" != 1 ] || return 0
12
+ npm install -g "npm@$latest" --engine-strict --fetch-retries=0 --fetch-timeout=30000 || return 1
13
+ hash -r
14
+ installed="$(npm --version)" && root="$(npm root -g)" || return 1
15
+ [ "$installed" = "$latest" ] && node -e '
16
+ const path = require("path");
17
+ const pkg = require(path.join(process.argv[1], "npm", "package.json"));
18
+ process.exit(pkg.version === process.argv[2] ? 0 : 1);
19
+ ' "$root" "$latest" || { printf 'npm verification failed. Check PATH and prefix.\n' >&2; return 1; }
20
+ }
@@ -4,6 +4,7 @@ import process from 'node:process';
4
4
  import { access, readFile } from 'node:fs/promises';
5
5
  import { resolve } from 'node:path';
6
6
  import { fileURLToPath } from 'node:url';
7
+ import { resolveAppLock } from '#cats-app-package';
7
8
 
8
9
  const SCRIPT_PATH = fileURLToPath(import.meta.url);
9
10
  const PROJECT_ROOT = resolve(fileURLToPath(new URL('..', import.meta.url)));
@@ -36,6 +37,7 @@ Options:
36
37
  --platform <all|windows|macos|linux> Filter staged target manifests
37
38
  --output-dir <path> Override packaging output root
38
39
  --sidecar-layout <split|bundle> Choose loose-file or bundled sidecars for both app/runtime
40
+ --apps-lock <path> Exact App ID/version/SHA-256 selection (no latest resolution)
39
41
  --help Show this help text
40
42
  `);
41
43
  }
@@ -54,17 +56,23 @@ export function parseArgs(argv, env = process.env) {
54
56
  let platform = 'all';
55
57
  let outputDir = null;
56
58
  let sidecarLayout = resolveSidecarLayout(env.CATS_DESKTOP_SIDECAR_LAYOUT);
59
+ let appsLock = env.CATS_DESKTOP_APPS_LOCK?.trim() || null;
57
60
 
58
61
  for (let index = 0; index < argv.length; index += 1) {
59
62
  const value = argv[index];
60
63
  if (value === '--help' || value === '-h') {
61
- return { help: true, platform, outputDir, sidecarLayout };
64
+ return { help: true, platform, outputDir, sidecarLayout, ...(appsLock ? { appsLock } : {}) };
62
65
  }
63
66
  if (value === '--platform') {
64
67
  platform = argv[index + 1] ?? 'all';
65
68
  index += 1;
66
69
  continue;
67
70
  }
71
+ if (value === '--apps-lock') {
72
+ appsLock = argv[++index];
73
+ if (!appsLock || appsLock.startsWith('--')) throw new Error('--apps-lock requires a path.');
74
+ continue;
75
+ }
68
76
  if (value === '--output-dir') {
69
77
  outputDir = argv[index + 1] ?? null;
70
78
  index += 1;
@@ -78,7 +86,7 @@ export function parseArgs(argv, env = process.env) {
78
86
  throw new Error(`Unknown option: ${value}`);
79
87
  }
80
88
 
81
- return { help: false, platform, outputDir, sidecarLayout };
89
+ return { help: false, platform, outputDir, sidecarLayout, ...(appsLock ? { appsLock } : {}) };
82
90
  }
83
91
 
84
92
  export function resolveRequiredDesktopIconPaths(projectRoot = PROJECT_ROOT) {
@@ -176,6 +184,9 @@ async function main() {
176
184
  const { resolveDesktopHostConfig } = await import('../build/desktop/config.js');
177
185
  const { stageDesktopPackagingOutputs } = await import('../build/desktop/packaging.js');
178
186
 
187
+ const apps = parsed.appsLock ? await resolveAppLock(resolve(parsed.appsLock)) : [];
188
+ if (!parsed.appsLock) process.stderr.write('[desktop-package] No --apps-lock selected; this package contains no optional Apps.\n');
189
+
179
190
  await assertDesktopIconAssetsPresent(PROJECT_ROOT);
180
191
  const config = resolveDesktopHostConfig({
181
192
  env: process.env,
@@ -185,10 +196,12 @@ async function main() {
185
196
  outputRoot: parsed.outputDir ? resolve(PROJECT_ROOT, parsed.outputDir) : undefined,
186
197
  platforms: allowedPlatforms,
187
198
  sidecarLayout: parsed.sidecarLayout,
199
+ apps,
188
200
  });
189
201
 
190
202
  process.stdout.write(JSON.stringify({
191
203
  outputRoot: plan.outputRoot,
204
+ apps: plan.apps,
192
205
  sidecarLayout: plan.sidecarLayout,
193
206
  targets: plan.targets.map((target) => ({
194
207
  id: target.id,