@cats-inc/cats-platform 0.1.21 → 0.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (448) hide show
  1. package/.env.example +3 -7
  2. package/README.md +18 -0
  3. package/build/desktop/bootstrapNavigation.d.ts.map +1 -1
  4. package/build/desktop/bootstrapNavigation.js +6 -13
  5. package/build/desktop/bootstrapNavigation.js.map +1 -1
  6. package/build/desktop/bootstrapPage.d.ts.map +1 -1
  7. package/build/desktop/bootstrapPage.js +114 -34
  8. package/build/desktop/bootstrapPage.js.map +1 -1
  9. package/build/desktop/cliInventoryProbe.d.ts +5 -2
  10. package/build/desktop/cliInventoryProbe.d.ts.map +1 -1
  11. package/build/desktop/cliInventoryProbe.js +14 -11
  12. package/build/desktop/cliInventoryProbe.js.map +1 -1
  13. package/build/desktop/config.d.ts +0 -4
  14. package/build/desktop/config.d.ts.map +1 -1
  15. package/build/desktop/config.js +1 -6
  16. package/build/desktop/config.js.map +1 -1
  17. package/build/desktop/contracts.d.ts +10 -2
  18. package/build/desktop/contracts.d.ts.map +1 -1
  19. package/build/desktop/contracts.js +1 -2
  20. package/build/desktop/contracts.js.map +1 -1
  21. package/build/desktop/hostVersion.d.ts.map +1 -1
  22. package/build/desktop/hostVersion.js +3 -5
  23. package/build/desktop/hostVersion.js.map +1 -1
  24. package/build/desktop/main.js +144 -249
  25. package/build/desktop/main.js.map +1 -1
  26. package/build/desktop/packaging.d.ts +2 -0
  27. package/build/desktop/packaging.d.ts.map +1 -1
  28. package/build/desktop/packaging.js +34 -14
  29. package/build/desktop/packaging.js.map +1 -1
  30. package/build/desktop/preload.cjs +7 -0
  31. package/build/desktop/preload.cjs.map +1 -1
  32. package/build/desktop/processSupervisor.d.ts.map +1 -1
  33. package/build/desktop/processSupervisor.js +3 -0
  34. package/build/desktop/processSupervisor.js.map +1 -1
  35. package/build/desktop/providerSelection.d.ts +37 -0
  36. package/build/desktop/providerSelection.d.ts.map +1 -0
  37. package/build/desktop/providerSelection.js +112 -0
  38. package/build/desktop/providerSelection.js.map +1 -0
  39. package/build/desktop/readiness.d.ts +2 -0
  40. package/build/desktop/readiness.d.ts.map +1 -1
  41. package/build/desktop/readiness.js +14 -33
  42. package/build/desktop/readiness.js.map +1 -1
  43. package/build/desktop/setupAssets.d.ts.map +1 -1
  44. package/build/desktop/setupAssets.js +16 -14
  45. package/build/desktop/setupAssets.js.map +1 -1
  46. package/build/desktop/setupAudit.d.ts +2 -3
  47. package/build/desktop/setupAudit.d.ts.map +1 -1
  48. package/build/desktop/setupAudit.js +14 -34
  49. package/build/desktop/setupAudit.js.map +1 -1
  50. package/build/desktop/updateDialog.d.ts +27 -1
  51. package/build/desktop/updateDialog.d.ts.map +1 -1
  52. package/build/desktop/updateDialog.js +85 -5
  53. package/build/desktop/updateDialog.js.map +1 -1
  54. package/build/renderer/assets/{ActiveSessionPermissionChip-DImsuR9T.js → ActiveSessionPermissionChip-CAgN-tXv.js} +1 -1
  55. package/build/renderer/assets/App-BZA23O2J.js +2 -0
  56. package/build/renderer/assets/App-DxsV-tKS.css +1 -0
  57. package/build/renderer/assets/{App-DKOSn0o_.js → App-YqprEL2n.js} +1 -1
  58. package/build/renderer/assets/App-rGw9J8PZ.js +1 -0
  59. package/build/renderer/assets/WorkspaceAppRoutes-BCHCikmJ.js +1 -0
  60. package/build/renderer/assets/app-BV3UAQkR.css +1 -0
  61. package/build/renderer/assets/app-CVPqqfZo.js +45 -0
  62. package/build/renderer/assets/conversationSidebarRecentEntries-iqaLqA1n.js +6 -0
  63. package/build/renderer/assets/{useDraftSessionChips-DCIId0eY.js → useDraftSessionChips-D9BX6X92.js} +1 -1
  64. package/build/renderer/index.html +2 -2
  65. package/build/server/app/renderer/providerCatalogClient.d.ts.map +1 -1
  66. package/build/server/app/renderer/providerCatalogClient.js +15 -6
  67. package/build/server/app/renderer/providerCatalogClient.js.map +1 -1
  68. package/build/server/app/renderer/providerRegistryClient.d.ts +1 -1
  69. package/build/server/app/renderer/providerRegistryClient.d.ts.map +1 -1
  70. package/build/server/app/renderer/providerRegistryClient.js +23 -41
  71. package/build/server/app/renderer/providerRegistryClient.js.map +1 -1
  72. package/build/server/app/server/appPackageRoutes.d.ts +2 -0
  73. package/build/server/app/server/appPackageRoutes.d.ts.map +1 -1
  74. package/build/server/app/server/appPackageRoutes.js +105 -0
  75. package/build/server/app/server/appPackageRoutes.js.map +1 -1
  76. package/build/server/app/server/authGatePolicy.js +7 -1
  77. package/build/server/app/server/authGatePolicy.js.map +1 -1
  78. package/build/server/app/server/contracts.d.ts +15 -0
  79. package/build/server/app/server/contracts.d.ts.map +1 -1
  80. package/build/server/app/server/dependencies.d.ts.map +1 -1
  81. package/build/server/app/server/dependencies.js +42 -1
  82. package/build/server/app/server/dependencies.js.map +1 -1
  83. package/build/server/app/server/goldenPathStartupResume.d.ts +55 -0
  84. package/build/server/app/server/goldenPathStartupResume.d.ts.map +1 -0
  85. package/build/server/app/server/goldenPathStartupResume.js +109 -0
  86. package/build/server/app/server/goldenPathStartupResume.js.map +1 -0
  87. package/build/server/app/server/platformSetupRoutes.d.ts.map +1 -1
  88. package/build/server/app/server/platformSetupRoutes.js +1 -13
  89. package/build/server/app/server/platformSetupRoutes.js.map +1 -1
  90. package/build/server/app/server/polling.d.ts.map +1 -1
  91. package/build/server/app/server/polling.js +2 -0
  92. package/build/server/app/server/polling.js.map +1 -1
  93. package/build/server/app/server/requestRouter.d.ts.map +1 -1
  94. package/build/server/app/server/requestRouter.js +30 -0
  95. package/build/server/app/server/requestRouter.js.map +1 -1
  96. package/build/server/app/server/runtimeSurfaceProxy.d.ts.map +1 -1
  97. package/build/server/app/server/runtimeSurfaceProxy.js +4 -2
  98. package/build/server/app/server/runtimeSurfaceProxy.js.map +1 -1
  99. package/build/server/app/server/startupRecovery.d.ts.map +1 -1
  100. package/build/server/app/server/startupRecovery.js +5 -0
  101. package/build/server/app/server/startupRecovery.js.map +1 -1
  102. package/build/server/app/server/telegramCommandSurface.d.ts +29 -0
  103. package/build/server/app/server/telegramCommandSurface.d.ts.map +1 -0
  104. package/build/server/app/server/telegramCommandSurface.js +123 -0
  105. package/build/server/app/server/telegramCommandSurface.js.map +1 -0
  106. package/build/server/app/server/transportWorkGoldenPath.d.ts +82 -0
  107. package/build/server/app/server/transportWorkGoldenPath.d.ts.map +1 -0
  108. package/build/server/app/server/transportWorkGoldenPath.js +307 -0
  109. package/build/server/app/server/transportWorkGoldenPath.js.map +1 -0
  110. package/build/server/config.d.ts +21 -0
  111. package/build/server/config.d.ts.map +1 -1
  112. package/build/server/config.js +12 -0
  113. package/build/server/config.js.map +1 -1
  114. package/build/server/design/components/providerModelFieldsSupport.d.ts +3 -3
  115. package/build/server/design/components/providerModelFieldsSupport.d.ts.map +1 -1
  116. package/build/server/design/components/providerModelFieldsSupport.js +37 -38
  117. package/build/server/design/components/providerModelFieldsSupport.js.map +1 -1
  118. package/build/server/design/components/useProviderCatalogState.d.ts +1 -0
  119. package/build/server/design/components/useProviderCatalogState.d.ts.map +1 -1
  120. package/build/server/design/components/useProviderCatalogState.js +1 -0
  121. package/build/server/design/components/useProviderCatalogState.js.map +1 -1
  122. package/build/server/design/components/useProviderRegistryAutoRecheck.d.ts.map +1 -1
  123. package/build/server/design/components/useProviderRegistryAutoRecheck.js +20 -13
  124. package/build/server/design/components/useProviderRegistryAutoRecheck.js.map +1 -1
  125. package/build/server/design/components/useProviderRegistryState.d.ts.map +1 -1
  126. package/build/server/design/components/useProviderRegistryState.js +12 -25
  127. package/build/server/design/components/useProviderRegistryState.js.map +1 -1
  128. package/build/server/design/components/useProviderTargetReconciliation.d.ts.map +1 -1
  129. package/build/server/design/components/useProviderTargetReconciliation.js +2 -1
  130. package/build/server/design/components/useProviderTargetReconciliation.js.map +1 -1
  131. package/build/server/index.js +4 -0
  132. package/build/server/index.js.map +1 -1
  133. package/build/server/platform/apps/packageInstaller.d.ts +19 -0
  134. package/build/server/platform/apps/packageInstaller.d.ts.map +1 -0
  135. package/build/server/platform/apps/packageInstaller.js +92 -0
  136. package/build/server/platform/apps/packageInstaller.js.map +1 -0
  137. package/build/server/platform/apps/registry.d.ts +6 -0
  138. package/build/server/platform/apps/registry.d.ts.map +1 -1
  139. package/build/server/platform/apps/registry.js +24 -0
  140. package/build/server/platform/apps/registry.js.map +1 -1
  141. package/build/server/platform/apps/renderer.d.ts +6 -0
  142. package/build/server/platform/apps/renderer.d.ts.map +1 -0
  143. package/build/server/platform/apps/renderer.js +18 -0
  144. package/build/server/platform/apps/renderer.js.map +1 -0
  145. package/build/server/platform/runtime/deliveryClient.d.ts +111 -0
  146. package/build/server/platform/runtime/deliveryClient.d.ts.map +1 -0
  147. package/build/server/platform/runtime/deliveryClient.js +289 -0
  148. package/build/server/platform/runtime/deliveryClient.js.map +1 -0
  149. package/build/server/platform/supervision/providerCapabilityBootstrapYaml.d.ts +1 -0
  150. package/build/server/platform/supervision/providerCapabilityBootstrapYaml.d.ts.map +1 -1
  151. package/build/server/platform/supervision/providerCapabilityBootstrapYaml.js +10 -0
  152. package/build/server/platform/supervision/providerCapabilityBootstrapYaml.js.map +1 -1
  153. package/build/server/platform/supervision/runtimeBoundary.d.ts +11 -1
  154. package/build/server/platform/supervision/runtimeBoundary.d.ts.map +1 -1
  155. package/build/server/platform/supervision/runtimeBoundary.js +2 -2
  156. package/build/server/platform/supervision/runtimeBoundary.js.map +1 -1
  157. package/build/server/platform/transports/telegram/bridge.d.ts +18 -0
  158. package/build/server/platform/transports/telegram/bridge.d.ts.map +1 -1
  159. package/build/server/platform/transports/telegram/bridge.js +176 -0
  160. package/build/server/platform/transports/telegram/bridge.js.map +1 -1
  161. package/build/server/platform/transports/telegram/commandPort.d.ts +40 -0
  162. package/build/server/platform/transports/telegram/commandPort.d.ts.map +1 -0
  163. package/build/server/platform/transports/telegram/commandPort.js +17 -0
  164. package/build/server/platform/transports/telegram/commandPort.js.map +1 -0
  165. package/build/server/platform/transports/telegram/commandRouter.d.ts +22 -0
  166. package/build/server/platform/transports/telegram/commandRouter.d.ts.map +1 -1
  167. package/build/server/platform/transports/telegram/commandRouter.js.map +1 -1
  168. package/build/server/platform/transports/telegram/commands/index.d.ts.map +1 -1
  169. package/build/server/platform/transports/telegram/commands/index.js +38 -0
  170. package/build/server/platform/transports/telegram/commands/index.js.map +1 -1
  171. package/build/server/platform/transports/telegram/ingressDispatch.d.ts +56 -0
  172. package/build/server/platform/transports/telegram/ingressDispatch.d.ts.map +1 -0
  173. package/build/server/platform/transports/telegram/ingressDispatch.js +93 -0
  174. package/build/server/platform/transports/telegram/ingressDispatch.js.map +1 -0
  175. package/build/server/platform/transports/telegram/polling.d.ts +34 -0
  176. package/build/server/platform/transports/telegram/polling.d.ts.map +1 -1
  177. package/build/server/platform/transports/telegram/polling.js +86 -9
  178. package/build/server/platform/transports/telegram/polling.js.map +1 -1
  179. package/build/server/platform/transports/telegram/relay/index.d.ts +3 -0
  180. package/build/server/platform/transports/telegram/relay/index.d.ts.map +1 -1
  181. package/build/server/platform/transports/telegram/relay/index.js +5 -1
  182. package/build/server/platform/transports/telegram/relay/index.js.map +1 -1
  183. package/build/server/platform/transports/telegram/relay/ingress.d.ts +2 -0
  184. package/build/server/platform/transports/telegram/relay/ingress.d.ts.map +1 -1
  185. package/build/server/platform/transports/telegram/relay/ingress.js +1 -1
  186. package/build/server/platform/transports/telegram/relay/ingress.js.map +1 -1
  187. package/build/server/platform/transports/work-delivery/actionTokens.d.ts +66 -0
  188. package/build/server/platform/transports/work-delivery/actionTokens.d.ts.map +1 -0
  189. package/build/server/platform/transports/work-delivery/actionTokens.js +145 -0
  190. package/build/server/platform/transports/work-delivery/actionTokens.js.map +1 -0
  191. package/build/server/platform/transports/work-delivery/contracts.d.ts +172 -0
  192. package/build/server/platform/transports/work-delivery/contracts.d.ts.map +1 -0
  193. package/build/server/platform/transports/work-delivery/contracts.js +26 -0
  194. package/build/server/platform/transports/work-delivery/contracts.js.map +1 -0
  195. package/build/server/platform/transports/work-delivery/deliveryGates.d.ts +32 -0
  196. package/build/server/platform/transports/work-delivery/deliveryGates.d.ts.map +1 -0
  197. package/build/server/platform/transports/work-delivery/deliveryGates.js +45 -0
  198. package/build/server/platform/transports/work-delivery/deliveryGates.js.map +1 -0
  199. package/build/server/platform/transports/work-delivery/inboundClassification.d.ts +31 -0
  200. package/build/server/platform/transports/work-delivery/inboundClassification.d.ts.map +1 -0
  201. package/build/server/platform/transports/work-delivery/inboundClassification.js +52 -0
  202. package/build/server/platform/transports/work-delivery/inboundClassification.js.map +1 -0
  203. package/build/server/platform/transports/work-delivery/outbox.d.ts +84 -0
  204. package/build/server/platform/transports/work-delivery/outbox.d.ts.map +1 -0
  205. package/build/server/platform/transports/work-delivery/outbox.js +270 -0
  206. package/build/server/platform/transports/work-delivery/outbox.js.map +1 -0
  207. package/build/server/platform/transports/work-delivery/permissionEnvelope.d.ts +57 -0
  208. package/build/server/platform/transports/work-delivery/permissionEnvelope.d.ts.map +1 -0
  209. package/build/server/platform/transports/work-delivery/permissionEnvelope.js +74 -0
  210. package/build/server/platform/transports/work-delivery/permissionEnvelope.js.map +1 -0
  211. package/build/server/platform/transports/work-delivery/port.d.ts +60 -0
  212. package/build/server/platform/transports/work-delivery/port.d.ts.map +1 -0
  213. package/build/server/platform/transports/work-delivery/port.js +15 -0
  214. package/build/server/platform/transports/work-delivery/port.js.map +1 -0
  215. package/build/server/platform/transports/work-delivery/proposal.d.ts +31 -0
  216. package/build/server/platform/transports/work-delivery/proposal.d.ts.map +1 -0
  217. package/build/server/platform/transports/work-delivery/proposal.js +59 -0
  218. package/build/server/platform/transports/work-delivery/proposal.js.map +1 -0
  219. package/build/server/platform/transports/work-delivery/readiness.d.ts +61 -0
  220. package/build/server/platform/transports/work-delivery/readiness.d.ts.map +1 -0
  221. package/build/server/platform/transports/work-delivery/readiness.js +123 -0
  222. package/build/server/platform/transports/work-delivery/readiness.js.map +1 -0
  223. package/build/server/platform/transports/work-delivery/stageProjection.d.ts +43 -0
  224. package/build/server/platform/transports/work-delivery/stageProjection.d.ts.map +1 -0
  225. package/build/server/platform/transports/work-delivery/stageProjection.js +132 -0
  226. package/build/server/platform/transports/work-delivery/stageProjection.js.map +1 -0
  227. package/build/server/platform/transports/work-delivery/stateStore.d.ts +21 -0
  228. package/build/server/platform/transports/work-delivery/stateStore.d.ts.map +1 -0
  229. package/build/server/platform/transports/work-delivery/stateStore.js +193 -0
  230. package/build/server/platform/transports/work-delivery/stateStore.js.map +1 -0
  231. package/build/server/platform/transports/work-delivery/telemetry.d.ts +49 -0
  232. package/build/server/platform/transports/work-delivery/telemetry.d.ts.map +1 -0
  233. package/build/server/platform/transports/work-delivery/telemetry.js +80 -0
  234. package/build/server/platform/transports/work-delivery/telemetry.js.map +1 -0
  235. package/build/server/products/chat/api/contracts.d.ts +10 -0
  236. package/build/server/products/chat/api/contracts.d.ts.map +1 -1
  237. package/build/server/products/chat/api/resources/channelRoutes.d.ts.map +1 -1
  238. package/build/server/products/chat/api/resources/channelRoutes.js +27 -1
  239. package/build/server/products/chat/api/resources/channelRoutes.js.map +1 -1
  240. package/build/server/products/chat/api/routeSupport.d.ts +8 -0
  241. package/build/server/products/chat/api/routeSupport.d.ts.map +1 -1
  242. package/build/server/products/chat/api/routeSupport.js +5 -4
  243. package/build/server/products/chat/api/routeSupport.js.map +1 -1
  244. package/build/server/products/chat/api/setupRoutes.d.ts.map +1 -1
  245. package/build/server/products/chat/api/setupRoutes.js +23 -8
  246. package/build/server/products/chat/api/setupRoutes.js.map +1 -1
  247. package/build/server/products/chat/state/model/channelExecutionTargets.d.ts +15 -0
  248. package/build/server/products/chat/state/model/channelExecutionTargets.d.ts.map +1 -1
  249. package/build/server/products/chat/state/model/channelExecutionTargets.js +25 -0
  250. package/build/server/products/chat/state/model/channelExecutionTargets.js.map +1 -1
  251. package/build/server/products/chat/state/model/index.d.ts +1 -1
  252. package/build/server/products/chat/state/model/index.d.ts.map +1 -1
  253. package/build/server/products/chat/state/model/index.js +1 -1
  254. package/build/server/products/chat/state/model/index.js.map +1 -1
  255. package/build/server/products/code/api/relayRoutes.d.ts.map +1 -1
  256. package/build/server/products/code/api/relayRoutes.js +36 -7
  257. package/build/server/products/code/api/relayRoutes.js.map +1 -1
  258. package/build/server/products/code/state/relayState.d.ts +2 -1
  259. package/build/server/products/code/state/relayState.d.ts.map +1 -1
  260. package/build/server/products/code/state/relayState.js +7 -7
  261. package/build/server/products/code/state/relayState.js.map +1 -1
  262. package/build/server/products/shared/api/workspaceContracts.d.ts +5 -0
  263. package/build/server/products/shared/api/workspaceContracts.d.ts.map +1 -1
  264. package/build/server/products/work/api/goldenPathProjection.d.ts +156 -0
  265. package/build/server/products/work/api/goldenPathProjection.d.ts.map +1 -0
  266. package/build/server/products/work/api/goldenPathProjection.js +252 -0
  267. package/build/server/products/work/api/goldenPathProjection.js.map +1 -0
  268. package/build/server/products/work/api/index.d.ts +54 -1
  269. package/build/server/products/work/api/index.d.ts.map +1 -1
  270. package/build/server/products/work/api/index.js +182 -4
  271. package/build/server/products/work/api/index.js.map +1 -1
  272. package/build/server/products/work/api/projection.d.ts +7 -1
  273. package/build/server/products/work/api/projection.d.ts.map +1 -1
  274. package/build/server/products/work/api/projection.js +7 -1
  275. package/build/server/products/work/api/projection.js.map +1 -1
  276. package/build/server/products/work/shared/apiPaths.d.ts +8 -0
  277. package/build/server/products/work/shared/apiPaths.d.ts.map +1 -1
  278. package/build/server/products/work/shared/apiPaths.js +8 -0
  279. package/build/server/products/work/shared/apiPaths.js.map +1 -1
  280. package/build/server/products/work/shared/workGoldenPathMessages.d.ts +83 -0
  281. package/build/server/products/work/shared/workGoldenPathMessages.d.ts.map +1 -0
  282. package/build/server/products/work/shared/workGoldenPathMessages.js +211 -0
  283. package/build/server/products/work/shared/workGoldenPathMessages.js.map +1 -0
  284. package/build/server/products/work/shared/workGoldenPathMetadata.d.ts +45 -0
  285. package/build/server/products/work/shared/workGoldenPathMetadata.d.ts.map +1 -0
  286. package/build/server/products/work/shared/workGoldenPathMetadata.js +122 -0
  287. package/build/server/products/work/shared/workGoldenPathMetadata.js.map +1 -0
  288. package/build/server/products/work/state/workCompletionEvidence.d.ts +42 -0
  289. package/build/server/products/work/state/workCompletionEvidence.d.ts.map +1 -0
  290. package/build/server/products/work/state/workCompletionEvidence.js +59 -0
  291. package/build/server/products/work/state/workCompletionEvidence.js.map +1 -0
  292. package/build/server/products/work/state/workExecutionTaskDelegate.d.ts +16 -0
  293. package/build/server/products/work/state/workExecutionTaskDelegate.d.ts.map +1 -1
  294. package/build/server/products/work/state/workExecutionTaskDelegate.js +91 -68
  295. package/build/server/products/work/state/workExecutionTaskDelegate.js.map +1 -1
  296. package/build/server/products/work/state/workGoldenPathAdmission.d.ts +78 -0
  297. package/build/server/products/work/state/workGoldenPathAdmission.d.ts.map +1 -0
  298. package/build/server/products/work/state/workGoldenPathAdmission.js +249 -0
  299. package/build/server/products/work/state/workGoldenPathAdmission.js.map +1 -0
  300. package/build/server/products/work/state/workGoldenPathDeliveryEvidence.d.ts +33 -0
  301. package/build/server/products/work/state/workGoldenPathDeliveryEvidence.d.ts.map +1 -0
  302. package/build/server/products/work/state/workGoldenPathDeliveryEvidence.js +161 -0
  303. package/build/server/products/work/state/workGoldenPathDeliveryEvidence.js.map +1 -0
  304. package/build/server/products/work/state/workGoldenPathIntake.d.ts +34 -0
  305. package/build/server/products/work/state/workGoldenPathIntake.d.ts.map +1 -0
  306. package/build/server/products/work/state/workGoldenPathIntake.js +50 -0
  307. package/build/server/products/work/state/workGoldenPathIntake.js.map +1 -0
  308. package/build/server/products/work/state/workGoldenPathLifecycle.d.ts +44 -0
  309. package/build/server/products/work/state/workGoldenPathLifecycle.d.ts.map +1 -0
  310. package/build/server/products/work/state/workGoldenPathLifecycle.js +146 -0
  311. package/build/server/products/work/state/workGoldenPathLifecycle.js.map +1 -0
  312. package/build/server/products/work/state/workGoldenPathPublish.d.ts +84 -0
  313. package/build/server/products/work/state/workGoldenPathPublish.d.ts.map +1 -0
  314. package/build/server/products/work/state/workGoldenPathPublish.js +488 -0
  315. package/build/server/products/work/state/workGoldenPathPublish.js.map +1 -0
  316. package/build/server/products/work/state/workGoldenPathRunner.d.ts +121 -0
  317. package/build/server/products/work/state/workGoldenPathRunner.d.ts.map +1 -0
  318. package/build/server/products/work/state/workGoldenPathRunner.js +447 -0
  319. package/build/server/products/work/state/workGoldenPathRunner.js.map +1 -0
  320. package/build/server/products/work/state/workGoldenPathRuntimeExecutor.d.ts +74 -0
  321. package/build/server/products/work/state/workGoldenPathRuntimeExecutor.d.ts.map +1 -0
  322. package/build/server/products/work/state/workGoldenPathRuntimeExecutor.js +239 -0
  323. package/build/server/products/work/state/workGoldenPathRuntimeExecutor.js.map +1 -0
  324. package/build/server/products/work/state/workGoldenPathService.d.ts +152 -0
  325. package/build/server/products/work/state/workGoldenPathService.d.ts.map +1 -0
  326. package/build/server/products/work/state/workGoldenPathService.js +1057 -0
  327. package/build/server/products/work/state/workGoldenPathService.js.map +1 -0
  328. package/build/server/products/work/state/workGoldenPathTelegramPort.d.ts +87 -0
  329. package/build/server/products/work/state/workGoldenPathTelegramPort.d.ts.map +1 -0
  330. package/build/server/products/work/state/workGoldenPathTelegramPort.js +220 -0
  331. package/build/server/products/work/state/workGoldenPathTelegramPort.js.map +1 -0
  332. package/build/server/runtime/client.d.ts +13 -0
  333. package/build/server/runtime/client.d.ts.map +1 -1
  334. package/build/server/runtime/client.js +39 -0
  335. package/build/server/runtime/client.js.map +1 -1
  336. package/build/server/runtime/setup.d.ts +10 -4
  337. package/build/server/runtime/setup.d.ts.map +1 -1
  338. package/build/server/runtime/setup.js +14 -18
  339. package/build/server/runtime/setup.js.map +1 -1
  340. package/build/server/runtime/usageSnapshot.d.ts +3 -0
  341. package/build/server/runtime/usageSnapshot.d.ts.map +1 -0
  342. package/build/server/runtime/usageSnapshot.js +69 -0
  343. package/build/server/runtime/usageSnapshot.js.map +1 -0
  344. package/build/server/server/routes/providerCapabilityBootstrap.d.ts +69 -0
  345. package/build/server/server/routes/providerCapabilityBootstrap.d.ts.map +1 -0
  346. package/build/server/server/routes/providerCapabilityBootstrap.js +165 -0
  347. package/build/server/server/routes/providerCapabilityBootstrap.js.map +1 -0
  348. package/build/server/server/routes/providers.d.ts.map +1 -1
  349. package/build/server/server/routes/providers.js +112 -81
  350. package/build/server/server/routes/providers.js.map +1 -1
  351. package/build/server/server/routes/telegram.d.ts +9 -0
  352. package/build/server/server/routes/telegram.d.ts.map +1 -1
  353. package/build/server/server/routes/telegram.js +79 -72
  354. package/build/server/server/routes/telegram.js.map +1 -1
  355. package/build/server/shared/catsAppManifest.d.ts +3 -1
  356. package/build/server/shared/catsAppManifest.d.ts.map +1 -1
  357. package/build/server/shared/catsAppManifest.js +2 -0
  358. package/build/server/shared/catsAppManifest.js.map +1 -1
  359. package/build/server/shared/executionLabel.d.ts.map +1 -1
  360. package/build/server/shared/executionLabel.js +8 -1
  361. package/build/server/shared/executionLabel.js.map +1 -1
  362. package/build/server/shared/i18n/catalogs/en.d.ts.map +1 -1
  363. package/build/server/shared/i18n/catalogs/en.js +198 -3
  364. package/build/server/shared/i18n/catalogs/en.js.map +1 -1
  365. package/build/server/shared/i18n/catalogs/zh-TW.d.ts.map +1 -1
  366. package/build/server/shared/i18n/catalogs/zh-TW.js +197 -3
  367. package/build/server/shared/i18n/catalogs/zh-TW.js.map +1 -1
  368. package/build/server/shared/i18n/index.d.ts +192 -0
  369. package/build/server/shared/i18n/index.d.ts.map +1 -1
  370. package/build/server/shared/i18n/messageKeys.d.ts +192 -0
  371. package/build/server/shared/i18n/messageKeys.d.ts.map +1 -1
  372. package/build/server/shared/i18n/messageKeys.js +192 -0
  373. package/build/server/shared/i18n/messageKeys.js.map +1 -1
  374. package/build/server/shared/platformSetupOperation.d.ts +2 -0
  375. package/build/server/shared/platformSetupOperation.d.ts.map +1 -0
  376. package/build/server/shared/platformSetupOperation.js +9 -0
  377. package/build/server/shared/platformSetupOperation.js.map +1 -0
  378. package/build/server/shared/providerCatalog.d.ts +5 -2
  379. package/build/server/shared/providerCatalog.d.ts.map +1 -1
  380. package/build/server/shared/providerCatalog.js +6 -0
  381. package/build/server/shared/providerCatalog.js.map +1 -1
  382. package/build/server/shared/providerCatalogData.d.ts +28 -22
  383. package/build/server/shared/providerCatalogData.d.ts.map +1 -1
  384. package/build/server/shared/providerCatalogData.js +22 -10
  385. package/build/server/shared/providerCatalogData.js.map +1 -1
  386. package/build/server/shared/providerCatalogInstances.d.ts.map +1 -1
  387. package/build/server/shared/providerCatalogInstances.js +3 -0
  388. package/build/server/shared/providerCatalogInstances.js.map +1 -1
  389. package/build/server/shared/providerModelLabelRegistry.d.ts +29 -0
  390. package/build/server/shared/providerModelLabelRegistry.d.ts.map +1 -0
  391. package/build/server/shared/providerModelLabelRegistry.js +49 -0
  392. package/build/server/shared/providerModelLabelRegistry.js.map +1 -0
  393. package/build/server/shared/providerSelection.d.ts.map +1 -1
  394. package/build/server/shared/providerSelection.js +10 -13
  395. package/build/server/shared/providerSelection.js.map +1 -1
  396. package/build/server/shared/runtimeSetup.d.ts +17 -4
  397. package/build/server/shared/runtimeSetup.d.ts.map +1 -1
  398. package/build/server/shared/runtimeStatusPresentation.js +1 -1
  399. package/build/server/shared/runtimeStatusPresentation.js.map +1 -1
  400. package/package.json +23 -1
  401. package/packages/app-sdk/browser.d.ts +51 -0
  402. package/packages/app-sdk/browser.js +48 -0
  403. package/packages/app-sdk/package.d.ts +14 -0
  404. package/packages/app-sdk/package.js +131 -0
  405. package/packages/app-sdk/package.json +7 -0
  406. package/scripts/README.md +43 -26
  407. package/scripts/build-desktop-installer.mjs +15 -0
  408. package/scripts/build-test-ui.mjs +1 -1
  409. package/scripts/bundle-server.mjs +23 -10
  410. package/scripts/linux/build-desktop-package.sh +6 -6
  411. package/scripts/linux/install-antigravity.sh +0 -0
  412. package/scripts/linux/install-devin.sh +0 -0
  413. package/scripts/linux/install-meta-cli.sh +8 -0
  414. package/scripts/linux/provider-cli-common.sh +103 -30
  415. package/scripts/linux/sync-agent-skills.sh +27 -5
  416. package/scripts/linux/test-linux-package-smoke.sh +4 -3
  417. package/scripts/linux/upgrade-cli-tools.sh +1 -1
  418. package/scripts/macos/build-desktop-package.sh +5 -5
  419. package/scripts/macos/install-antigravity.sh +0 -0
  420. package/scripts/macos/install-devin.sh +0 -0
  421. package/scripts/macos/install-meta-cli.sh +8 -0
  422. package/scripts/macos/provider-cli-common.sh +103 -30
  423. package/scripts/macos/sync-agent-skills.sh +27 -5
  424. package/scripts/macos/test-macos-package-smoke.sh +4 -3
  425. package/scripts/macos/upgrade-cli-tools.sh +1 -1
  426. package/scripts/package-desktop.mjs +15 -2
  427. package/scripts/testing/check-usage-app.mts +266 -0
  428. package/scripts/testing/usage-app-smoke-electron.cjs +10 -0
  429. package/scripts/testing/usage-app-smoke-renderer.tsx +8 -0
  430. package/scripts/verify-desktop-app-bundle.mjs +108 -0
  431. package/scripts/windows/Build-DesktopPackage.ps1 +9 -6
  432. package/scripts/windows/{Install-Aider.ps1 → Install-MetaCli.ps1} +180 -92
  433. package/scripts/windows/Install-Ollama.ps1 +4 -1
  434. package/scripts/windows/Sync-AgentSkills.ps1 +29 -6
  435. package/scripts/windows/Test-WindowsInstallerSmoke.ps1 +2 -1
  436. package/build/desktop/updateNotifications.d.ts +0 -64
  437. package/build/desktop/updateNotifications.d.ts.map +0 -1
  438. package/build/desktop/updateNotifications.js +0 -143
  439. package/build/desktop/updateNotifications.js.map +0 -1
  440. package/build/renderer/assets/App-BfOvMP2m.js +0 -1
  441. package/build/renderer/assets/App-DGwkRFZl.css +0 -1
  442. package/build/renderer/assets/App-DWd7I3Z2.js +0 -2
  443. package/build/renderer/assets/WorkspaceAppRoutes-CrbTA9En.js +0 -1
  444. package/build/renderer/assets/app-BTww3Hl4.js +0 -43
  445. package/build/renderer/assets/app-CPxWQwLA.css +0 -1
  446. package/build/renderer/assets/conversationSidebarRecentEntries-QuaOPxCb.js +0 -6
  447. package/scripts/linux/install-aider.sh +0 -8
  448. package/scripts/macos/install-aider.sh +0 -8
@@ -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
@@ -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' "$@"
@@ -52,7 +52,7 @@ provider_display_name() {
52
52
  antigravity) printf '%s\n' 'Antigravity CLI' ;;
53
53
  grok) printf '%s\n' 'Grok CLI' ;;
54
54
  devin) printf '%s\n' 'Devin CLI' ;;
55
- aider) printf '%s\n' 'Aider' ;;
55
+ muse) printf '%s\n' 'Meta Muse CLI' ;;
56
56
  claude) printf '%s\n' 'Claude Code CLI' ;;
57
57
  cursor) printf '%s\n' 'Cursor Agent CLI' ;;
58
58
  goose) printf '%s\n' 'Goose CLI' ;;
@@ -67,7 +67,7 @@ provider_primary_command() {
67
67
  antigravity) printf '%s\n' 'agy' ;;
68
68
  grok) printf '%s\n' 'grok' ;;
69
69
  devin) printf '%s\n' 'devin' ;;
70
- aider) printf '%s\n' 'aider' ;;
70
+ muse) printf '%s\n' 'muse' ;;
71
71
  claude) printf '%s\n' 'claude' ;;
72
72
  cursor) printf '%s\n' 'cursor-agent' ;;
73
73
  goose) printf '%s\n' 'goose' ;;
@@ -98,7 +98,7 @@ provider_install_url() {
98
98
  antigravity) printf '%s\n' 'https://antigravity.google/cli/install.sh' ;;
99
99
  grok) printf '%s\n' 'https://x.ai/cli/install.sh' ;;
100
100
  devin) printf '%s\n' 'https://cli.devin.ai/install.sh' ;;
101
- aider) printf '%s\n' 'https://aider.chat/install.sh' ;;
101
+ muse) printf '%s\n' 'https://dev.meta.ai/install.sh' ;;
102
102
  claude) printf '%s\n' 'https://claude.ai/install.sh' ;;
103
103
  cursor) printf '%s\n' 'https://cursor.com/install' ;;
104
104
  goose) printf '%s\n' 'https://github.com/block/goose/releases/download/stable/download_cli.sh' ;;
@@ -111,6 +111,7 @@ provider_install_url() {
111
111
  provider_install_dir() {
112
112
  case "$1" in
113
113
  grok) printf '%s\n' "$HOME/.grok/bin" ;;
114
+ muse) muse_install_dir ;;
114
115
  *) printf '%s\n' "$HOME/.local/bin" ;;
115
116
  esac
116
117
  }
@@ -249,12 +250,59 @@ ensure_provider_alias() {
249
250
  fi
250
251
  }
251
252
 
253
+ # muse's install directory holds the launcher, its state files, and one
254
+ # muse-bin-<version> build per version it has downloaded.
255
+ muse_install_dir() {
256
+ printf '%s\n' "${MUSE_INSTALL_DIR:-$HOME/.local/bin}"
257
+ }
258
+
259
+ # The version comes from the launcher's own state file, never from running muse.
260
+ # The launcher forwards every argument straight to the agent binary, so a flag
261
+ # that binary does not recognise opens the interactive TUI and hangs an
262
+ # unattended setup run forever.
263
+ muse_installed_version() {
264
+ local version_file
265
+ version_file="$(muse_install_dir)/.muse-version"
266
+ if [ -r "$version_file" ]; then
267
+ tr -d '\r\n' < "$version_file"
268
+ fi
269
+ }
270
+
271
+ # "Installed" means the launcher actually fetched a build. The official
272
+ # installer writes the launcher first and downloads muse-bin-<version> last, so
273
+ # a run that dies in between leaves a launcher with nothing behind it. Treating
274
+ # that as installed would skip the reinstall that repairs it.
275
+ muse_install_complete() {
276
+ local dir version
277
+ dir="$(muse_install_dir)"
278
+ [ -x "$dir/muse" ] || return 1
279
+ version="$(muse_installed_version)"
280
+ [ -n "$version" ] || return 1
281
+ [ -x "$dir/muse-bin-$version" ]
282
+ }
283
+
252
284
  detect_provider_command() {
253
285
  local platform="$1"
254
286
  local provider="$2"
255
287
  local primary_command
256
288
  local candidate
257
289
 
290
+ if [ "$provider" = 'muse' ]; then
291
+ if muse_install_complete; then
292
+ prepend_path_if_missing "$(muse_install_dir)"
293
+ printf '%s\n' "$(muse_install_dir)/muse"
294
+ return 0
295
+ fi
296
+ # A muse elsewhere on PATH is someone's own install; report it rather than
297
+ # claiming the tool is missing, but never treat a half-written install
298
+ # directory as one.
299
+ if [ -x "$(muse_install_dir)/muse" ]; then
300
+ return 1
301
+ fi
302
+ command -v muse 2>/dev/null && return 0
303
+ return 1
304
+ fi
305
+
258
306
  primary_command="$(provider_primary_command "$provider")"
259
307
  if command -v "$primary_command" >/dev/null 2>&1; then
260
308
  command -v "$primary_command"
@@ -276,9 +324,36 @@ EOF
276
324
 
277
325
  provider_version_line() {
278
326
  local command_path="$1"
327
+ local provider="${2:-}"
328
+
329
+ # muse is read, never run: see muse_installed_version.
330
+ if [ "$provider" = 'muse' ]; then
331
+ muse_installed_version
332
+ return 0
333
+ fi
334
+
279
335
  "$command_path" --version 2>&1 | head -1 || true
280
336
  }
281
337
 
338
+ # `curl ... | bash` returns 0 when the download itself fails, because bash reads
339
+ # empty input and succeeds. Staging the script first is what makes a failed
340
+ # install report as a failure.
341
+ run_downloaded_shell_installer() {
342
+ local url="$1"
343
+ local installer_path status=0
344
+
345
+ installer_path="$(mktemp)"
346
+ if ! curl -fsSL "$url" -o "$installer_path"; then
347
+ rm -f "$installer_path"
348
+ printf 'Failed to download the installer from %s\n' "$url" >&2
349
+ return 1
350
+ fi
351
+
352
+ bash "$installer_path" < /dev/null || status=$?
353
+ rm -f "$installer_path"
354
+ return "$status"
355
+ }
356
+
282
357
  # Devin's official install.sh ends by launching the interactive `devin setup`
283
358
  # wizard. Packaged setup runs non-interactively with no console a prompt can
284
359
  # reach, so an unstripped installer would stall the step rather than fail.
@@ -342,8 +417,10 @@ run_remote_pipe_installer() {
342
417
  goose)
343
418
  curl -fsSL "$url" | env CONFIGURE=false bash
344
419
  ;;
345
- aider)
346
- curl -LsSf "$url" | sh
420
+ muse)
421
+ # Download first, then run: with `curl ... | bash` a failed download still
422
+ # exits 0, because bash reads empty input and succeeds.
423
+ run_downloaded_shell_installer "$url"
347
424
  ;;
348
425
  cursor)
349
426
  curl "$url" -fsSL | bash
@@ -424,7 +501,9 @@ run_provider_install_action() {
424
501
  devin)
425
502
  run_devin_installer
426
503
  ;;
427
- aider)
504
+ muse)
505
+ # The official installer always refreshes the launcher and asks it to pull
506
+ # the newest build, so install, upgrade, and force are the same call.
428
507
  run_remote_pipe_installer "$provider"
429
508
  ;;
430
509
  claude)
@@ -559,28 +638,22 @@ UPNP_EOF
559
638
  esac
560
639
  fi
561
640
 
562
- # ~/.local/bin/aider is a uv tool shim, not the tool. Removing only the shim
563
- # leaves aider-chat installed in the uv tool environment and the shim
564
- # regenerable by any later `uv tool` command, so the tool is uninstalled
565
- # through uv first and path removal only mops up what uv left behind.
566
- #
567
- # The uv binary itself is deliberately left in place: Aider's installer drops
568
- # its own uv into ~/.local/bin, users commonly have another, and the helper
569
- # cannot tell them apart. Removing a uv the user installed separately is a
570
- # destructive false positive, so this warns instead (SPEC-112 PD4).
571
- if [ "$provider" = 'aider' ]; then
572
- if command -v uv >/dev/null 2>&1; then
573
- if [ "$dry_run" = 'true' ]; then
574
- __CATS_UNINSTALL_PLANNED+=("uv_tool_uninstall:aider-chat")
575
- elif uv tool uninstall aider-chat >/dev/null 2>&1; then
576
- __CATS_UNINSTALL_APPLIED+=("uv_tool_uninstalled:aider-chat")
577
- else
578
- __CATS_UNINSTALL_WARNINGS+=("uv_tool_uninstall_failed:aider-chat")
579
- fi
580
- else
581
- __CATS_UNINSTALL_WARNINGS+=("uv_missing_aider_chat_may_remain")
582
- fi
583
- __CATS_UNINSTALL_WARNINGS+=("bundled_uv_left_in_place_provenance_unknown")
641
+ # The muse launcher is not the tool either: every muse-bin-<version> build it
642
+ # has downloaded, plus its .muse-* state files, sit in the same directory and
643
+ # survive removing the launcher alone. They are named deterministically, so
644
+ # they can be removed without guessing at unrelated files in ~/.local/bin.
645
+ if [ "$provider" = 'muse' ]; then
646
+ local muse_dir muse_leftover
647
+ muse_dir="$(muse_install_dir)"
648
+ for muse_leftover in "$muse_dir"/muse-bin-* "$muse_dir"/.muse-*; do
649
+ case "$muse_leftover" in
650
+ "$HOME"/*)
651
+ if [ -e "$muse_leftover" ] || [ -L "$muse_leftover" ]; then
652
+ planned_paths+=("$muse_leftover")
653
+ fi
654
+ ;;
655
+ esac
656
+ done
584
657
  fi
585
658
 
586
659
  for path in "${planned_paths[@]}"; do
@@ -796,7 +869,7 @@ run_native_provider_installer() {
796
869
 
797
870
  if command_path="$(detect_provider_command "$platform" "$provider")"; then
798
871
  initial_installed='true'
799
- detected_version="$(provider_version_line "$command_path")"
872
+ detected_version="$(provider_version_line "$command_path" "$provider")"
800
873
  if [ "$check_only" = 'true' ]; then
801
874
  if [ "$emit_json" = 'true' ]; then
802
875
  printf '{'
@@ -928,7 +1001,7 @@ run_native_provider_installer() {
928
1001
 
929
1002
  while [ $attempt -le 3 ]; do
930
1003
  if command_path="$(detect_provider_command "$platform" "$provider")"; then
931
- detected_version="$(provider_version_line "$command_path")"
1004
+ detected_version="$(provider_version_line "$command_path" "$provider")"
932
1005
  if [ "$emit_json" = 'true' ]; then
933
1006
  warnings=("Reload your shell if ${display_name} is not visible yet: source ${shell_rc}")
934
1007
  printf '{'
@@ -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/linux/install-antigravity.sh
53
54
  assert_file "${RESOURCES_ROOT}/desktop/setup-assets/linux/install-grok.sh" 'bundled Linux Grok installer helper'
54
55
  assert_file "${RESOURCES_ROOT}/desktop/setup-assets/linux/install-cline.sh" 'bundled Linux Cline installer helper'
55
56
  assert_file "${RESOURCES_ROOT}/desktop/setup-assets/linux/install-devin.sh" 'bundled Linux Devin installer helper'
56
- assert_file "${RESOURCES_ROOT}/desktop/setup-assets/linux/install-aider.sh" 'bundled Linux Aider installer helper'
57
+ assert_file "${RESOURCES_ROOT}/desktop/setup-assets/linux/install-meta-cli.sh" 'bundled Linux Meta Muse installer helper'
57
58
  assert_file "${RESOURCES_ROOT}/desktop/setup-assets/linux/install-copilot.sh" 'bundled Linux GitHub Copilot installer helper'
58
59
  assert_file "${RESOURCES_ROOT}/desktop/setup-assets/linux/install-opencode.sh" 'bundled Linux OpenCode installer helper'
59
60
  assert_file "${RESOURCES_ROOT}/desktop/setup-assets/linux/install-kilo.sh" 'bundled Linux Kilo Code installer helper'
@@ -102,7 +103,7 @@ assert(linuxTarget.artifacts.some((artifact) => artifact.id === 'linux-antigravi
102
103
  assert(linuxTarget.artifacts.some((artifact) => artifact.id === 'linux-grok-native-installer-script'), 'Linux target includes the bundled Grok installer asset');
103
104
  assert(linuxTarget.artifacts.some((artifact) => artifact.id === 'linux-cline-native-installer-script'), 'Linux target includes the bundled Cline installer asset');
104
105
  assert(linuxTarget.artifacts.some((artifact) => artifact.id === 'linux-devin-native-installer-script'), 'Linux target includes the bundled Devin installer asset');
105
- assert(linuxTarget.artifacts.some((artifact) => artifact.id === 'linux-aider-native-installer-script'), 'Linux target includes the bundled Aider installer asset');
106
+ assert(linuxTarget.artifacts.some((artifact) => artifact.id === 'linux-muse-native-installer-script'), 'Linux target includes the bundled Meta Muse installer asset');
106
107
  assert(linuxTarget.artifacts.some((artifact) => artifact.id === 'linux-setup-readiness-audit-script'), 'Linux target includes the bundled readiness audit asset');
107
108
  assert(linuxTarget.artifacts.some((artifact) => artifact.id === 'linux-provider-cli-common-support-script'), 'Linux target includes the Linux provider helper asset');
108
109
  assert(linuxTarget.artifacts.some((artifact) => artifact.id === 'linux-node-cli-common-support-script'), 'Linux target includes the Linux 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
 
@@ -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
@@ -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 'macos' 'muse' "$@"
@@ -52,7 +52,7 @@ provider_display_name() {
52
52
  antigravity) printf '%s\n' 'Antigravity CLI' ;;
53
53
  grok) printf '%s\n' 'Grok CLI' ;;
54
54
  devin) printf '%s\n' 'Devin CLI' ;;
55
- aider) printf '%s\n' 'Aider' ;;
55
+ muse) printf '%s\n' 'Meta Muse CLI' ;;
56
56
  claude) printf '%s\n' 'Claude Code CLI' ;;
57
57
  cursor) printf '%s\n' 'Cursor Agent CLI' ;;
58
58
  goose) printf '%s\n' 'Goose CLI' ;;
@@ -67,7 +67,7 @@ provider_primary_command() {
67
67
  antigravity) printf '%s\n' 'agy' ;;
68
68
  grok) printf '%s\n' 'grok' ;;
69
69
  devin) printf '%s\n' 'devin' ;;
70
- aider) printf '%s\n' 'aider' ;;
70
+ muse) printf '%s\n' 'muse' ;;
71
71
  claude) printf '%s\n' 'claude' ;;
72
72
  cursor) printf '%s\n' 'cursor-agent' ;;
73
73
  goose) printf '%s\n' 'goose' ;;
@@ -98,7 +98,7 @@ provider_install_url() {
98
98
  antigravity) printf '%s\n' 'https://antigravity.google/cli/install.sh' ;;
99
99
  grok) printf '%s\n' 'https://x.ai/cli/install.sh' ;;
100
100
  devin) printf '%s\n' 'https://cli.devin.ai/install.sh' ;;
101
- aider) printf '%s\n' 'https://aider.chat/install.sh' ;;
101
+ muse) printf '%s\n' 'https://dev.meta.ai/install.sh' ;;
102
102
  claude) printf '%s\n' 'https://claude.ai/install.sh' ;;
103
103
  cursor) printf '%s\n' 'https://cursor.com/install' ;;
104
104
  goose) printf '%s\n' 'https://github.com/block/goose/releases/download/stable/download_cli.sh' ;;
@@ -111,6 +111,7 @@ provider_install_url() {
111
111
  provider_install_dir() {
112
112
  case "$1" in
113
113
  grok) printf '%s\n' "$HOME/.grok/bin" ;;
114
+ muse) muse_install_dir ;;
114
115
  *) printf '%s\n' "$HOME/.local/bin" ;;
115
116
  esac
116
117
  }
@@ -249,12 +250,59 @@ ensure_provider_alias() {
249
250
  fi
250
251
  }
251
252
 
253
+ # muse's install directory holds the launcher, its state files, and one
254
+ # muse-bin-<version> build per version it has downloaded.
255
+ muse_install_dir() {
256
+ printf '%s\n' "${MUSE_INSTALL_DIR:-$HOME/.local/bin}"
257
+ }
258
+
259
+ # The version comes from the launcher's own state file, never from running muse.
260
+ # The launcher forwards every argument straight to the agent binary, so a flag
261
+ # that binary does not recognise opens the interactive TUI and hangs an
262
+ # unattended setup run forever.
263
+ muse_installed_version() {
264
+ local version_file
265
+ version_file="$(muse_install_dir)/.muse-version"
266
+ if [ -r "$version_file" ]; then
267
+ tr -d '\r\n' < "$version_file"
268
+ fi
269
+ }
270
+
271
+ # "Installed" means the launcher actually fetched a build. The official
272
+ # installer writes the launcher first and downloads muse-bin-<version> last, so
273
+ # a run that dies in between leaves a launcher with nothing behind it. Treating
274
+ # that as installed would skip the reinstall that repairs it.
275
+ muse_install_complete() {
276
+ local dir version
277
+ dir="$(muse_install_dir)"
278
+ [ -x "$dir/muse" ] || return 1
279
+ version="$(muse_installed_version)"
280
+ [ -n "$version" ] || return 1
281
+ [ -x "$dir/muse-bin-$version" ]
282
+ }
283
+
252
284
  detect_provider_command() {
253
285
  local platform="$1"
254
286
  local provider="$2"
255
287
  local primary_command
256
288
  local candidate
257
289
 
290
+ if [ "$provider" = 'muse' ]; then
291
+ if muse_install_complete; then
292
+ prepend_path_if_missing "$(muse_install_dir)"
293
+ printf '%s\n' "$(muse_install_dir)/muse"
294
+ return 0
295
+ fi
296
+ # A muse elsewhere on PATH is someone's own install; report it rather than
297
+ # claiming the tool is missing, but never treat a half-written install
298
+ # directory as one.
299
+ if [ -x "$(muse_install_dir)/muse" ]; then
300
+ return 1
301
+ fi
302
+ command -v muse 2>/dev/null && return 0
303
+ return 1
304
+ fi
305
+
258
306
  primary_command="$(provider_primary_command "$provider")"
259
307
  if command -v "$primary_command" >/dev/null 2>&1; then
260
308
  command -v "$primary_command"
@@ -276,9 +324,36 @@ EOF
276
324
 
277
325
  provider_version_line() {
278
326
  local command_path="$1"
327
+ local provider="${2:-}"
328
+
329
+ # muse is read, never run: see muse_installed_version.
330
+ if [ "$provider" = 'muse' ]; then
331
+ muse_installed_version
332
+ return 0
333
+ fi
334
+
279
335
  "$command_path" --version 2>&1 | head -1 || true
280
336
  }
281
337
 
338
+ # `curl ... | bash` returns 0 when the download itself fails, because bash reads
339
+ # empty input and succeeds. Staging the script first is what makes a failed
340
+ # install report as a failure.
341
+ run_downloaded_shell_installer() {
342
+ local url="$1"
343
+ local installer_path status=0
344
+
345
+ installer_path="$(mktemp)"
346
+ if ! curl -fsSL "$url" -o "$installer_path"; then
347
+ rm -f "$installer_path"
348
+ printf 'Failed to download the installer from %s\n' "$url" >&2
349
+ return 1
350
+ fi
351
+
352
+ bash "$installer_path" < /dev/null || status=$?
353
+ rm -f "$installer_path"
354
+ return "$status"
355
+ }
356
+
282
357
  # Devin's official install.sh ends by launching the interactive `devin setup`
283
358
  # wizard. Packaged setup runs non-interactively with no console a prompt can
284
359
  # reach, so an unstripped installer would stall the step rather than fail.
@@ -342,8 +417,10 @@ run_remote_pipe_installer() {
342
417
  goose)
343
418
  curl -fsSL "$url" | env CONFIGURE=false bash
344
419
  ;;
345
- aider)
346
- curl -LsSf "$url" | sh
420
+ muse)
421
+ # Download first, then run: with `curl ... | bash` a failed download still
422
+ # exits 0, because bash reads empty input and succeeds.
423
+ run_downloaded_shell_installer "$url"
347
424
  ;;
348
425
  cursor)
349
426
  curl "$url" -fsSL | bash
@@ -424,7 +501,9 @@ run_provider_install_action() {
424
501
  devin)
425
502
  run_devin_installer
426
503
  ;;
427
- aider)
504
+ muse)
505
+ # The official installer always refreshes the launcher and asks it to pull
506
+ # the newest build, so install, upgrade, and force are the same call.
428
507
  run_remote_pipe_installer "$provider"
429
508
  ;;
430
509
  claude)
@@ -559,28 +638,22 @@ UPNP_EOF
559
638
  esac
560
639
  fi
561
640
 
562
- # ~/.local/bin/aider is a uv tool shim, not the tool. Removing only the shim
563
- # leaves aider-chat installed in the uv tool environment and the shim
564
- # regenerable by any later `uv tool` command, so the tool is uninstalled
565
- # through uv first and path removal only mops up what uv left behind.
566
- #
567
- # The uv binary itself is deliberately left in place: Aider's installer drops
568
- # its own uv into ~/.local/bin, users commonly have another, and the helper
569
- # cannot tell them apart. Removing a uv the user installed separately is a
570
- # destructive false positive, so this warns instead (SPEC-112 PD4).
571
- if [ "$provider" = 'aider' ]; then
572
- if command -v uv >/dev/null 2>&1; then
573
- if [ "$dry_run" = 'true' ]; then
574
- __CATS_UNINSTALL_PLANNED+=("uv_tool_uninstall:aider-chat")
575
- elif uv tool uninstall aider-chat >/dev/null 2>&1; then
576
- __CATS_UNINSTALL_APPLIED+=("uv_tool_uninstalled:aider-chat")
577
- else
578
- __CATS_UNINSTALL_WARNINGS+=("uv_tool_uninstall_failed:aider-chat")
579
- fi
580
- else
581
- __CATS_UNINSTALL_WARNINGS+=("uv_missing_aider_chat_may_remain")
582
- fi
583
- __CATS_UNINSTALL_WARNINGS+=("bundled_uv_left_in_place_provenance_unknown")
641
+ # The muse launcher is not the tool either: every muse-bin-<version> build it
642
+ # has downloaded, plus its .muse-* state files, sit in the same directory and
643
+ # survive removing the launcher alone. They are named deterministically, so
644
+ # they can be removed without guessing at unrelated files in ~/.local/bin.
645
+ if [ "$provider" = 'muse' ]; then
646
+ local muse_dir muse_leftover
647
+ muse_dir="$(muse_install_dir)"
648
+ for muse_leftover in "$muse_dir"/muse-bin-* "$muse_dir"/.muse-*; do
649
+ case "$muse_leftover" in
650
+ "$HOME"/*)
651
+ if [ -e "$muse_leftover" ] || [ -L "$muse_leftover" ]; then
652
+ planned_paths+=("$muse_leftover")
653
+ fi
654
+ ;;
655
+ esac
656
+ done
584
657
  fi
585
658
 
586
659
  for path in "${planned_paths[@]}"; do
@@ -796,7 +869,7 @@ run_native_provider_installer() {
796
869
 
797
870
  if command_path="$(detect_provider_command "$platform" "$provider")"; then
798
871
  initial_installed='true'
799
- detected_version="$(provider_version_line "$command_path")"
872
+ detected_version="$(provider_version_line "$command_path" "$provider")"
800
873
  if [ "$check_only" = 'true' ]; then
801
874
  if [ "$emit_json" = 'true' ]; then
802
875
  printf '{'
@@ -928,7 +1001,7 @@ run_native_provider_installer() {
928
1001
 
929
1002
  while [ $attempt -le 3 ]; do
930
1003
  if command_path="$(detect_provider_command "$platform" "$provider")"; then
931
- detected_version="$(provider_version_line "$command_path")"
1004
+ detected_version="$(provider_version_line "$command_path" "$provider")"
932
1005
  if [ "$emit_json" = 'true' ]; then
933
1006
  warnings=("Reload your shell if ${display_name} is not visible yet: source ${shell_rc}")
934
1007
  printf '{'
@@ -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