@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,463 @@
1
+ <#
2
+ .SYNOPSIS
3
+ Install or verify the native Windows Meta Muse CLI for Cats.
4
+
5
+ .DESCRIPTION
6
+ Cats-owned packaged setup wrapper for Meta's Muse CLI. The official
7
+ installer at https://dev.meta.ai/install.ps1 writes a muse.cmd shim plus
8
+ .muse-launcher.ps1 into %LOCALAPPDATA%\Programs\muse (overridable with
9
+ MUSE_INSTALL_DIR) and adds that directory to the User PATH. The launcher
10
+ then downloads the actual agent, muse-bin-<version>.exe, beside itself and
11
+ records the version in .muse-version.
12
+
13
+ Two consequences drive this helper.
14
+
15
+ Detection requires the binary, not the shim. The installer writes the shim
16
+ and launcher first and downloads the agent last, so a run that fails in
17
+ between leaves a shim with nothing behind it. Reporting that as installed
18
+ would skip the reinstall that repairs it.
19
+
20
+ The version is read from .muse-version and `muse` is never executed. The
21
+ launcher forwards every argument straight to the agent binary, so a flag
22
+ that binary does not recognise opens the interactive TUI instead of
23
+ failing -- which in packaged setup, with no console a prompt can reach, is
24
+ an unbounded hang rather than an error.
25
+ #>
26
+ param(
27
+ [switch]$CheckOnly,
28
+ [switch]$Apply,
29
+ [switch]$Upgrade,
30
+ [switch]$Force,
31
+ [switch]$Uninstall,
32
+ [switch]$DryRun,
33
+ [switch]$Json,
34
+ [switch]$AllowAdmin,
35
+ [ValidateSet('auto', 'installed', 'missing')]
36
+ [string]$InstallState = 'auto',
37
+ [string]$DetectedVersion = '',
38
+ [switch]$SkipInstaller
39
+ )
40
+
41
+ Set-StrictMode -Version Latest
42
+ $ErrorActionPreference = 'Stop'
43
+
44
+ . (Join-Path $PSScriptRoot '_HiddenProcess.ps1')
45
+ . (Join-Path $PSScriptRoot '_NativeInstallerSupport.ps1')
46
+ . (Join-Path $PSScriptRoot '_PackagedUninstall.ps1')
47
+
48
+ function Write-StructuredResult {
49
+ param(
50
+ [pscustomobject]$Result,
51
+ [int]$ExitCode
52
+ )
53
+
54
+ if (Get-Variable -Name catsInitialObservation -Scope Script -ErrorAction SilentlyContinue) {
55
+ Add-CatsNativeObservation -Result $Result -Before $script:catsInitialObservation -Attempted ([bool]$script:shouldInstall) -Skipped ([bool]$SkipInstaller)
56
+ }
57
+
58
+ if ($Json) {
59
+ $Result | ConvertTo-Json -Depth 10
60
+ } else {
61
+ Write-Host "Mode: $($Result.mode)"
62
+ Write-Host "Status: $($Result.status)"
63
+ Write-Host "Installed: $($Result.installed)"
64
+ if ($Result.detectedVersion) { Write-Host "Version: $($Result.detectedVersion)" }
65
+ foreach ($action in $Result.plannedActions) { Write-Host "Planned action: $action" }
66
+ foreach ($warning in $Result.warnings) { Write-Host "Warning: $warning" }
67
+ foreach ($step in $Result.manualSteps) { Write-Host "Manual step: $step" }
68
+ }
69
+
70
+ exit $ExitCode
71
+ }
72
+
73
+ function Resolve-MuseInstallDir {
74
+ if (-not [string]::IsNullOrWhiteSpace($env:MUSE_INSTALL_DIR)) {
75
+ return $env:MUSE_INSTALL_DIR
76
+ }
77
+ return Join-Path $env:LOCALAPPDATA 'Programs\muse'
78
+ }
79
+
80
+ function Resolve-MuseShimPath {
81
+ return Join-Path (Resolve-MuseInstallDir) 'muse.cmd'
82
+ }
83
+
84
+ function Resolve-MuseLauncherPath {
85
+ return Join-Path (Resolve-MuseInstallDir) '.muse-launcher.ps1'
86
+ }
87
+
88
+ function Resolve-MuseVersionFilePath {
89
+ return Join-Path (Resolve-MuseInstallDir) '.muse-version'
90
+ }
91
+
92
+ function Get-MuseRecordedVersion {
93
+ $versionFile = Resolve-MuseVersionFilePath
94
+ if (-not (Test-Path -LiteralPath $versionFile -PathType Leaf)) { return '' }
95
+ try {
96
+ $version = (Get-Content -LiteralPath $versionFile -Raw -ErrorAction Stop).Trim()
97
+ if ([string]::IsNullOrWhiteSpace($version)) { return '' }
98
+ return $version
99
+ } catch {
100
+ return ''
101
+ }
102
+ }
103
+
104
+ function Get-MuseAgentBinaryPath {
105
+ $version = Get-MuseRecordedVersion
106
+ if ([string]::IsNullOrWhiteSpace($version)) { return '' }
107
+ return Join-Path (Resolve-MuseInstallDir) "muse-bin-$version.exe"
108
+ }
109
+
110
+ # Everything the launcher owns in the install directory, so uninstall does not
111
+ # leave gigabytes of downloaded agent builds behind after removing the shim.
112
+ function Get-MuseOwnedPaths {
113
+ $installDir = Resolve-MuseInstallDir
114
+ $paths = [System.Collections.Generic.List[string]]::new()
115
+ $paths.Add((Resolve-MuseLauncherPath)) | Out-Null
116
+ if (-not (Test-Path -LiteralPath $installDir -PathType Container)) {
117
+ return $paths.ToArray()
118
+ }
119
+ foreach ($pattern in @('muse-bin-*.exe', '.muse-*')) {
120
+ foreach ($item in Get-ChildItem -LiteralPath $installDir -Filter $pattern -Force -ErrorAction SilentlyContinue) {
121
+ if (-not $paths.Contains($item.FullName)) {
122
+ $paths.Add($item.FullName) | Out-Null
123
+ }
124
+ }
125
+ }
126
+ return $paths.ToArray()
127
+ }
128
+
129
+ function Update-UserPathEnvironment {
130
+ $env:Path = [System.Environment]::GetEnvironmentVariable('Path', 'User') + ';' +
131
+ [System.Environment]::GetEnvironmentVariable('Path', 'Machine')
132
+ }
133
+
134
+ function Get-MuseInstallState {
135
+ $shimPath = Resolve-MuseShimPath
136
+
137
+ if ($InstallState -eq 'installed') {
138
+ return [pscustomobject]@{
139
+ installed = $true
140
+ commandPath = $shimPath
141
+ detectedVersion = $DetectedVersion
142
+ partial = $false
143
+ }
144
+ }
145
+ if ($InstallState -eq 'missing') {
146
+ return [pscustomobject]@{
147
+ installed = $false
148
+ commandPath = $shimPath
149
+ detectedVersion = $DetectedVersion
150
+ partial = $false
151
+ }
152
+ }
153
+
154
+ Update-UserPathEnvironment
155
+ $version = if ([string]::IsNullOrWhiteSpace($DetectedVersion)) {
156
+ Get-MuseRecordedVersion
157
+ } else {
158
+ $DetectedVersion
159
+ }
160
+
161
+ $shimPresent = Test-Path -LiteralPath $shimPath -PathType Leaf
162
+ $agentBinary = Get-MuseAgentBinaryPath
163
+ $agentPresent = (-not [string]::IsNullOrWhiteSpace($agentBinary)) -and
164
+ (Test-Path -LiteralPath $agentBinary -PathType Leaf)
165
+
166
+ if ($shimPresent -and $agentPresent) {
167
+ return [pscustomobject]@{
168
+ installed = $true
169
+ commandPath = $shimPath
170
+ detectedVersion = $version
171
+ partial = $false
172
+ }
173
+ }
174
+
175
+ if ($shimPresent) {
176
+ # Shim without an agent build: the last install died partway through.
177
+ return [pscustomobject]@{
178
+ installed = $false
179
+ commandPath = $shimPath
180
+ detectedVersion = $version
181
+ partial = $true
182
+ }
183
+ }
184
+
185
+ # Nothing in the expected directory, but the operator may have muse elsewhere.
186
+ $command = Get-Command muse -ErrorAction SilentlyContinue
187
+ if ($null -ne $command) {
188
+ return [pscustomobject]@{
189
+ installed = $true
190
+ commandPath = $command.Source
191
+ detectedVersion = $version
192
+ partial = $false
193
+ }
194
+ }
195
+
196
+ return [pscustomobject]@{
197
+ installed = $false
198
+ commandPath = $shimPath
199
+ detectedVersion = $version
200
+ partial = $false
201
+ }
202
+ }
203
+
204
+ function Add-MuseToUserPath {
205
+ $installDir = Resolve-MuseInstallDir
206
+ $userPath = [System.Environment]::GetEnvironmentVariable('Path', 'User')
207
+ if ([string]::IsNullOrWhiteSpace($userPath)) {
208
+ [System.Environment]::SetEnvironmentVariable('Path', $installDir, 'User')
209
+ } elseif ($userPath -notlike "*$installDir*") {
210
+ [System.Environment]::SetEnvironmentVariable('Path', "$installDir;$userPath", 'User')
211
+ }
212
+ Update-UserPathEnvironment
213
+ }
214
+
215
+ function Invoke-MuseInstaller {
216
+ if ($SkipInstaller) {
217
+ return [pscustomobject]@{ skipped = $true; success = $true; exitCode = 0; stderr = '' }
218
+ }
219
+
220
+ $tempScript = [System.IO.Path]::Combine(
221
+ [System.IO.Path]::GetTempPath(),
222
+ "cats-muse-install-$([System.Guid]::NewGuid().ToString('N')).ps1"
223
+ )
224
+ $stdoutPath = "$tempScript.stdout"
225
+ $stderrPath = "$tempScript.stderr"
226
+ # The official install.ps1 opens with Set-StrictMode -Version Latest and calls
227
+ # exit 1 on failure, so it runs in its own process rather than taking this
228
+ # script down with it.
229
+ $bootstrap = @'
230
+ & {
231
+ $previousErrorActionPreference = $ErrorActionPreference
232
+ try {
233
+ Invoke-RestMethod 'https://dev.meta.ai/install.ps1' | Invoke-Expression
234
+ } finally {
235
+ $ErrorActionPreference = $previousErrorActionPreference
236
+ }
237
+ }
238
+ '@
239
+
240
+ try {
241
+ [System.IO.File]::WriteAllText(
242
+ $tempScript,
243
+ $bootstrap,
244
+ [System.Text.UTF8Encoding]::new($false)
245
+ )
246
+ # The muse launcher runs under Windows PowerShell 5.1. A PSModulePath
247
+ # inherited from PowerShell 7 breaks its download step and leaves a shim
248
+ # with no agent build, so the installer is run under 5.1 as well.
249
+ $powerShellExe = 'powershell.exe'
250
+ $process = Start-Process -FilePath $powerShellExe `
251
+ -ArgumentList @('-NoProfile', '-ExecutionPolicy', 'Bypass', '-File', $tempScript) `
252
+ -Wait -PassThru -NoNewWindow `
253
+ -RedirectStandardOutput $stdoutPath `
254
+ -RedirectStandardError $stderrPath
255
+ $stderrRaw = if (Test-Path -LiteralPath $stderrPath -PathType Leaf) {
256
+ Get-Content -LiteralPath $stderrPath -Raw -ErrorAction SilentlyContinue
257
+ } else { $null }
258
+
259
+ return [pscustomobject]@{
260
+ skipped = $false
261
+ success = ($process.ExitCode -eq 0)
262
+ exitCode = $process.ExitCode
263
+ stderr = if ($null -eq $stderrRaw) { '' } else { [string]$stderrRaw }
264
+ }
265
+ } catch {
266
+ return [pscustomobject]@{
267
+ skipped = $false
268
+ success = $false
269
+ exitCode = -1
270
+ stderr = "Failed to invoke Meta Muse installer: $($_.Exception.Message)"
271
+ }
272
+ } finally {
273
+ foreach ($path in @($tempScript, $stdoutPath, $stderrPath)) {
274
+ if (Test-Path -LiteralPath $path -PathType Leaf) {
275
+ Remove-Item -LiteralPath $path -Force -ErrorAction SilentlyContinue
276
+ }
277
+ }
278
+ }
279
+ }
280
+
281
+ if (-not $CheckOnly -and -not $Apply -and -not $Upgrade -and -not $Force -and -not $Uninstall) {
282
+ $CheckOnly = $true
283
+ }
284
+
285
+ $mutationCount = @($Apply, $Upgrade, $Force | Where-Object { $_ }).Count
286
+ if ($Uninstall -and ($CheckOnly -or $mutationCount -gt 0)) {
287
+ throw 'Install-MetaCli.ps1 -Uninstall is mutually exclusive with other modes.'
288
+ }
289
+ if ($CheckOnly -and $mutationCount -gt 0) {
290
+ throw 'Install-MetaCli.ps1 accepts either -CheckOnly or one mutation mode.'
291
+ }
292
+ if ($mutationCount -gt 1) {
293
+ throw 'Install-MetaCli.ps1 accepts at most one of -Apply / -Upgrade / -Force.'
294
+ }
295
+
296
+ $executionMode = if ($Uninstall) {
297
+ 'uninstall'
298
+ } elseif ($CheckOnly) {
299
+ 'check'
300
+ } elseif ($Force) {
301
+ 'force'
302
+ } elseif ($Upgrade) {
303
+ 'upgrade'
304
+ } else {
305
+ 'apply'
306
+ }
307
+
308
+ if ($Uninstall) {
309
+ Invoke-PackagedProviderUninstall `
310
+ -HelperId 'windows-muse-native-installer' `
311
+ -UserBinaryPath (Resolve-MuseShimPath) `
312
+ -ExtraUserOwnedPaths (Get-MuseOwnedPaths) `
313
+ -RedetectCommand { Get-MuseInstallState } `
314
+ -EmitJson:$Json `
315
+ -DryRun:$DryRun
316
+ }
317
+
318
+ $isAdmin = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).
319
+ IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
320
+ if ($isAdmin -and -not $AllowAdmin) {
321
+ Write-StructuredResult -Result ([pscustomobject]@{
322
+ helper = 'windows-muse-native-installer'
323
+ mode = $executionMode
324
+ status = 'failed'
325
+ installed = $false
326
+ detectedVersion = $null
327
+ commandPath = Resolve-MuseShimPath
328
+ restartRequired = $false
329
+ plannedActions = @()
330
+ warnings = @('Refusing to run under an elevated shell without -AllowAdmin because Meta Muse CLI is intended for user-scoped installation.')
331
+ appliedChanges = @()
332
+ manualSteps = @()
333
+ interruptions = @()
334
+ }) -ExitCode 1
335
+ }
336
+
337
+ $detected = Get-MuseInstallState
338
+ $plannedActions = [System.Collections.Generic.List[string]]::new()
339
+ $appliedChanges = [System.Collections.Generic.List[string]]::new()
340
+ $warnings = [System.Collections.Generic.List[string]]::new()
341
+ $manualSteps = [System.Collections.Generic.List[string]]::new()
342
+
343
+ if ($detected.partial) {
344
+ $warnings.Add('Found muse.cmd with no matching muse-bin-<version>.exe; the previous install did not finish and will be repaired.') | Out-Null
345
+ }
346
+
347
+ if ($Force) {
348
+ $plannedActions.Add('reinstall_muse_native') | Out-Null
349
+ } elseif ($Upgrade -and $detected.installed) {
350
+ $plannedActions.Add('upgrade_muse_native') | Out-Null
351
+ } elseif (-not $detected.installed) {
352
+ $plannedActions.Add('install_muse_native') | Out-Null
353
+ }
354
+
355
+ if ($CheckOnly) {
356
+ Write-StructuredResult -Result ([pscustomobject]@{
357
+ helper = 'windows-muse-native-installer'
358
+ mode = 'check'
359
+ status = if ($detected.installed) { 'ready' } else { 'not_installed' }
360
+ installed = [bool]$detected.installed
361
+ detectedVersion = if ($detected.detectedVersion) { $detected.detectedVersion } else { $null }
362
+ commandPath = $detected.commandPath
363
+ restartRequired = $false
364
+ plannedActions = $plannedActions.ToArray()
365
+ warnings = $warnings.ToArray()
366
+ appliedChanges = @()
367
+ manualSteps = @()
368
+ interruptions = @()
369
+ }) -ExitCode 0
370
+ }
371
+
372
+ $installFailed = $false
373
+ $catsInitialObservation = $detected.PSObject.Copy()
374
+ $shouldInstall = $Force -or $Upgrade -or -not $detected.installed
375
+ $installFailed = $false
376
+ $installSkipped = $false
377
+ if ($shouldInstall) {
378
+ if ($DryRun) {
379
+ $warnings.Add('Dry-run requested; Meta Muse installer invocation was skipped.') | Out-Null
380
+ $installSkipped = $true
381
+ } else {
382
+ $previousVersion = $detected.detectedVersion
383
+ $installResult = Invoke-MuseInstaller
384
+ $installSkipped = [bool]$installResult.skipped
385
+ $installFailed = (-not $installSkipped) -and (-not $installResult.success)
386
+ if ($installSkipped) {
387
+ $warnings.Add('Installer invocation was skipped by request.') | Out-Null
388
+ } elseif ($installFailed) {
389
+ $stderrSnippet = if ([string]::IsNullOrWhiteSpace($installResult.stderr)) {
390
+ 'no stderr captured'
391
+ } else {
392
+ ($installResult.stderr.Trim() -split "`r?`n" |
393
+ Where-Object { -not [string]::IsNullOrWhiteSpace($_) } |
394
+ Select-Object -Last 8) -join ' | '
395
+ }
396
+ $warnings.Add("Meta Muse installer exited $($installResult.exitCode): $stderrSnippet") | Out-Null
397
+ }
398
+
399
+ Start-Sleep -Seconds 3
400
+ Add-MuseToUserPath
401
+ $detected = Get-MuseInstallState
402
+ if (-not $detected.installed -and -not $installSkipped -and -not $installFailed) {
403
+ if ($detected.partial) {
404
+ $warnings.Add('Meta Muse installation wrote muse.cmd but the launcher did not fetch muse-bin-<version>.exe.') | Out-Null
405
+ } else {
406
+ $warnings.Add('Meta Muse installation completed but muse.cmd was not found at the expected path.') | Out-Null
407
+ }
408
+ $installFailed = $true
409
+ } elseif (
410
+ $Upgrade -and $detected.installed -and $previousVersion -and
411
+ $detected.detectedVersion -eq $previousVersion
412
+ ) {
413
+ $warnings.Add("Meta Muse CLI is already on the latest build: $($detected.detectedVersion).") | Out-Null
414
+ }
415
+ }
416
+
417
+ if (-not $installFailed -and -not ($DryRun -and $shouldInstall)) {
418
+ if ($Force) {
419
+ $appliedChanges.Add('reinstall_muse_native') | Out-Null
420
+ } elseif ($Upgrade) {
421
+ $appliedChanges.Add('upgrade_muse_native') | Out-Null
422
+ } else {
423
+ $appliedChanges.Add('install_muse_native') | Out-Null
424
+ }
425
+ }
426
+ }
427
+
428
+ $manualSteps.Add('Run `muse login` once to sign in to a Meta account; the credential is stored in ~/.config/muse/auth.json.') | Out-Null
429
+ $interruptions = [System.Collections.Generic.List[object]]::new()
430
+ if ($shouldInstall -and -not $installFailed -and -not $DryRun) {
431
+ $interruptions.Add([pscustomobject]@{
432
+ kind = 'relaunch_required'
433
+ summary = 'Run Detect Again after the Meta Muse install step if the command is not visible yet.'
434
+ resumable = $true
435
+ requiresRestart = $false
436
+ requiresElevation = $false
437
+ }) | Out-Null
438
+ }
439
+
440
+ $status = if ($installFailed) {
441
+ 'failed'
442
+ } elseif ($DryRun -and $shouldInstall) {
443
+ 'preview'
444
+ } elseif ($interruptions.Count -gt 0) {
445
+ [string]$interruptions[0].kind
446
+ } else {
447
+ 'ready'
448
+ }
449
+
450
+ Write-StructuredResult -Result ([pscustomobject]@{
451
+ helper = 'windows-muse-native-installer'
452
+ mode = $executionMode
453
+ status = $status
454
+ installed = [bool]$detected.installed
455
+ detectedVersion = if ($detected.detectedVersion) { $detected.detectedVersion } else { $null }
456
+ commandPath = $detected.commandPath
457
+ restartRequired = $false
458
+ plannedActions = $plannedActions.ToArray()
459
+ warnings = $warnings.ToArray()
460
+ appliedChanges = $appliedChanges.ToArray()
461
+ manualSteps = $manualSteps.ToArray()
462
+ interruptions = $interruptions.ToArray()
463
+ }) -ExitCode $(if ($installFailed) { 1 } else { 0 })
@@ -155,7 +155,8 @@ function Test-NodeInstalled {
155
155
  return $false
156
156
  }
157
157
 
158
- return [bool](Get-Command node -ErrorAction SilentlyContinue)
158
+ return [bool](Get-Command node -ErrorAction SilentlyContinue) -and
159
+ [bool](Get-Command npm -ErrorAction SilentlyContinue)
159
160
  }
160
161
 
161
162
  if (-not $CheckOnly -and -not $Apply -and -not $Upgrade -and -not $Force) {
@@ -180,6 +181,10 @@ $mode = if ($CheckOnly) {
180
181
  'apply'
181
182
  }
182
183
 
184
+ # Each invocation inherits the long-lived Desktop host's environment. Include
185
+ # newly installed system/user commands before check-only detection as well.
186
+ $env:Path = [System.Environment]::GetEnvironmentVariable('Path', 'Machine') + ';' +
187
+ [System.Environment]::GetEnvironmentVariable('Path', 'User') + ';' + $env:Path
183
188
  $installed = Test-NodeInstalled -Mode $mode
184
189
  $detected = Get-NodeDetectedVersion -Override $DetectedVersion
185
190
  $commandPath = if ($SkipNodeProbe) { '' } else { Resolve-NodeCommandPath }
@@ -146,7 +146,10 @@ function Detect-OllamaInstall {
146
146
 
147
147
  if ($installed -and [string]::IsNullOrWhiteSpace($version) -and $versionProbePath) {
148
148
  try {
149
- $version = Get-HiddenCommandText -FileName $versionProbePath -ArgumentList @('--version')
149
+ # Detection must not launch a provider, including during login setup audits.
150
+ $versionInfo = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($versionProbePath)
151
+ $version = $versionInfo.ProductVersion
152
+ if ([string]::IsNullOrWhiteSpace($version)) { $version = $versionInfo.FileVersion }
150
153
  } catch {
151
154
  $version = ''
152
155
  }
@@ -215,6 +215,16 @@ if (-not $SkipNodeCheck) {
215
215
  }
216
216
  }
217
217
 
218
+ if (-not $PSBoundParameters.ContainsKey('DesiredPrefix') -and $prefixProbe) {
219
+ $existingPrefix = [IO.Path]::GetFullPath($prefixProbe)
220
+ $userRoot = [IO.Path]::GetFullPath($UserHome).TrimEnd('\') + '\'
221
+ $npmrc = if ($env:NPM_CONFIG_USERCONFIG) { $env:NPM_CONFIG_USERCONFIG } else { Join-Path $UserHome '.npmrc' }
222
+ $explicitPrefix = $env:NPM_CONFIG_PREFIX -or ((Test-Path -LiteralPath $npmrc -PathType Leaf) -and
223
+ (Select-String -LiteralPath $npmrc -Pattern '^\s*prefix\s*=' -Quiet))
224
+ if ($explicitPrefix -or $existingPrefix.StartsWith($userRoot, [StringComparison]::OrdinalIgnoreCase)) {
225
+ $desiredPrefixPath = $existingPrefix
226
+ }
227
+ }
218
228
  $pathEntries = Get-PathEntries -PathValue $pathProbe
219
229
  $needsDirectory = -not (Test-Path -LiteralPath $desiredPrefixPath -PathType Container)
220
230
  $needsPrefixUpdate = (Normalize-PathValue -Path $prefixProbe).ToLowerInvariant() -ne
@@ -3,7 +3,8 @@
3
3
  Syncs skills from the canonical skills/ directory to each agent's discovery path.
4
4
 
5
5
  .DESCRIPTION
6
- Copies skill directories from the project's skills/ directory to the agent-specific
6
+ Recursively discovers skill packages in the project's skills/ directory and copies them to
7
+ the agent-specific
7
8
  discovery paths (.claude/skills/, .agents/skills/), including any supporting files
8
9
  under each skill (e.g., scripts/, references/, assets/).
9
10
 
@@ -62,8 +63,8 @@ if (-not (Test-Path $SkillsDir)) {
62
63
 
63
64
  # Define agent discovery paths
64
65
  $AgentPaths = @{
65
- "claude" = Join-Path $ProjectRoot ".claude" "skills"
66
- "codex" = Join-Path $ProjectRoot ".agents" "skills"
66
+ "claude" = Join-Path (Join-Path $ProjectRoot ".claude") "skills"
67
+ "codex" = Join-Path (Join-Path $ProjectRoot ".agents") "skills"
67
68
  }
68
69
 
69
70
  # Filter to specific agent if requested
@@ -74,9 +75,31 @@ else {
74
75
  $TargetAgents = $AgentPaths
75
76
  }
76
77
 
77
- # Discover skills (directories containing SKILL.md)
78
- $SkillDirs = Get-ChildItem -Path $SkillsDir -Directory | Where-Object {
79
- Test-Path (Join-Path $_.FullName "SKILL.md")
78
+ # Stop at package roots: a resource named SKILL.md is not another package.
79
+ function Find-SkillPackages {
80
+ param([string]$Directory)
81
+ foreach ($Entry in Get-ChildItem -LiteralPath $Directory -Directory) {
82
+ if ($Entry.Name.EndsWith('.bootstrap', [StringComparison]::OrdinalIgnoreCase)) { continue }
83
+ if ($Entry.Attributes -band [System.IO.FileAttributes]::ReparsePoint) {
84
+ throw "Linked skill directories are not supported: $($Entry.FullName)"
85
+ }
86
+ if (Test-Path -LiteralPath (Join-Path $Entry.FullName 'SKILL.md') -PathType Leaf) {
87
+ $Entry
88
+ }
89
+ else {
90
+ Find-SkillPackages -Directory $Entry.FullName
91
+ }
92
+ }
93
+ }
94
+
95
+ $SkillDirs = @(Find-SkillPackages -Directory $SkillsDir)
96
+ # Flattening family directories must never silently overwrite a same-named package.
97
+ $SkillNames = @{}
98
+ foreach ($Skill in $SkillDirs) {
99
+ if ($SkillNames.ContainsKey($Skill.Name)) {
100
+ throw "Duplicate skill '$($Skill.Name)': $($SkillNames[$Skill.Name]) and $($Skill.FullName)"
101
+ }
102
+ $SkillNames[$Skill.Name] = $Skill.FullName
80
103
  }
81
104
 
82
105
  if ($SkillDirs.Count -eq 0) {
@@ -181,14 +181,17 @@ $requiredFiles = @(
181
181
  @{ Path = (Join-Path $resourcesRoot 'app-sidecar\package.json'); Label = 'bundled cats app package manifest' },
182
182
  @{ Path = (Join-Path $resourcesRoot 'app-sidecar\node_modules\js-yaml\package.json'); Label = 'bundled cats app js-yaml dependency marker' },
183
183
  @{ Path = (Join-Path $resourcesRoot 'app-sidecar\node_modules\argparse\package.json'); Label = 'bundled cats app argparse dependency marker' },
184
+ @{ Path = (Join-Path $resourcesRoot 'app-sidecar\config\provider-capability-bootstrap.yaml.example'); Label = 'bundled cats capability bootstrap example' },
184
185
  @{ Path = (Join-Path $resourcesRoot 'cats-runtime\build\runtime\index.js'); Label = 'bundled cats-runtime entry' },
185
186
  @{ Path = (Join-Path $resourcesRoot 'cats-runtime\package.json'); Label = 'bundled cats-runtime package manifest' },
186
187
  @{ Path = (Join-Path $resourcesRoot 'cats-runtime\public\provider-setup.html'); Label = 'bundled cats-runtime setup UI' },
187
- @{ Path = (Join-Path $resourcesRoot 'cats-runtime\skills\README.md'); Label = 'bundled cats-runtime skills catalog root' },
188
+ @{ Path = (Join-Path $resourcesRoot 'cats-runtime\runtime-skills\README.md'); Label = 'bundled cats-runtime skills catalog root' },
188
189
  @{ Path = (Join-Path $resourcesRoot 'cats-runtime\config\management.yaml.example'); Label = 'bundled cats-runtime management config example' },
189
190
  @{ Path = (Join-Path $resourcesRoot 'cats-runtime\config\providers.yaml.example'); Label = 'bundled cats-runtime provider config example' },
190
191
  @{ Path = (Join-Path $resourcesRoot 'cats-runtime\config\curated-model-catalogs.yaml.example'); Label = 'bundled cats-runtime curated model catalog example' },
191
192
  @{ Path = (Join-Path $resourcesRoot 'cats-runtime\node_modules\playwright-core\package.json'); Label = 'bundled cats-runtime external dependency marker' },
193
+ @{ Path = (Join-Path $resourcesRoot 'desktop\setup-assets\windows\_NativeInstallerSupport.ps1'); Label = 'bundled native version/installer support' },
194
+ @{ Path = (Join-Path $resourcesRoot 'desktop\setup-assets\windows\_VerifiedNpmUpdate.ps1'); Label = 'bundled verified npm update support' },
192
195
  @{ Path = (Join-Path $resourcesRoot 'desktop\setup-assets\windows\Install-Node.ps1'); Label = 'bundled Windows Node.js LTS host installer' },
193
196
  @{ Path = (Join-Path $resourcesRoot 'desktop\setup-assets\windows\Install-GitHubCli.ps1'); Label = 'bundled Windows GitHub CLI host installer' },
194
197
  @{ Path = (Join-Path $resourcesRoot 'desktop\setup-assets\windows\Setup-NodeGlobalPrefix.ps1'); Label = 'bundled Windows npm prefix helper' },
@@ -15,7 +15,8 @@ function Invoke-HiddenCommand {
15
15
  [Parameter(Mandatory)]
16
16
  [string]$FileName,
17
17
 
18
- [string[]]$ArgumentList = @()
18
+ [string[]]$ArgumentList = @(),
19
+ [int]$TimeoutMs = 0
19
20
  )
20
21
 
21
22
  $psi = New-Object System.Diagnostics.ProcessStartInfo
@@ -36,9 +37,19 @@ function Invoke-HiddenCommand {
36
37
  }
37
38
 
38
39
  $proc = [System.Diagnostics.Process]::Start($psi)
39
- $output = $proc.StandardOutput.ReadToEnd()
40
- $errorOutput = $proc.StandardError.ReadToEnd()
40
+ $outputTask = $proc.StandardOutput.ReadToEndAsync()
41
+ $errorTask = $proc.StandardError.ReadToEndAsync()
42
+ if ($TimeoutMs -gt 0 -and -not $proc.WaitForExit($TimeoutMs)) {
43
+ # taskkill /T works in Windows PowerShell 5.1 as well as PowerShell 7;
44
+ # Process.Kill(true) is unavailable in the former. Only this owned tree is killed.
45
+ $null = Invoke-HiddenCommand -FileName (Join-Path $env:SystemRoot 'System32\taskkill.exe') -ArgumentList @('/PID', [string]$proc.Id, '/T', '/F')
46
+ if (-not $proc.HasExited) { $proc.Kill() }
47
+ $proc.WaitForExit()
48
+ return [pscustomobject]@{ ExitCode = -1; Output = ''; ErrorOutput = 'Command timed out.' }
49
+ }
41
50
  $proc.WaitForExit()
51
+ $output = $outputTask.GetAwaiter().GetResult()
52
+ $errorOutput = $errorTask.GetAwaiter().GetResult()
42
53
 
43
54
  return [pscustomobject]@{
44
55
  ExitCode = $proc.ExitCode