@cats-inc/cats-platform 0.1.10 → 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 (516) hide show
  1. package/.env.example +9 -16
  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 +264 -77
  8. package/build/desktop/bootstrapPage.js.map +1 -1
  9. package/build/desktop/cliInventoryProbe.d.ts +23 -2
  10. package/build/desktop/cliInventoryProbe.d.ts.map +1 -1
  11. package/build/desktop/cliInventoryProbe.js +54 -9
  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 +19 -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 +177 -201
  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 +49 -35
  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/tray.d.ts +1 -1
  51. package/build/desktop/tray.d.ts.map +1 -1
  52. package/build/desktop/tray.js +2 -7
  53. package/build/desktop/tray.js.map +1 -1
  54. package/build/desktop/trayMenu.d.ts +23 -2
  55. package/build/desktop/trayMenu.d.ts.map +1 -1
  56. package/build/desktop/trayMenu.js +24 -30
  57. package/build/desktop/trayMenu.js.map +1 -1
  58. package/build/desktop/updateDialog.d.ts +66 -0
  59. package/build/desktop/updateDialog.d.ts.map +1 -0
  60. package/build/desktop/updateDialog.js +258 -0
  61. package/build/desktop/updateDialog.js.map +1 -0
  62. package/build/desktop/updaterAdapter.d.ts +1 -0
  63. package/build/desktop/updaterAdapter.d.ts.map +1 -1
  64. package/build/desktop/updaterAdapter.js +13 -1
  65. package/build/desktop/updaterAdapter.js.map +1 -1
  66. package/build/renderer/assets/{ActiveSessionPermissionChip-Dl2UOFgh.js → ActiveSessionPermissionChip-CAgN-tXv.js} +1 -1
  67. package/build/renderer/assets/App-BZA23O2J.js +2 -0
  68. package/build/renderer/assets/App-DxsV-tKS.css +1 -0
  69. package/build/renderer/assets/{App-ChvP0G9X.js → App-YqprEL2n.js} +1 -1
  70. package/build/renderer/assets/App-rGw9J8PZ.js +1 -0
  71. package/build/renderer/assets/WorkspaceAppRoutes-BCHCikmJ.js +1 -0
  72. package/build/renderer/assets/app-BV3UAQkR.css +1 -0
  73. package/build/renderer/assets/app-CVPqqfZo.js +45 -0
  74. package/build/renderer/assets/conversationSidebarRecentEntries-iqaLqA1n.js +6 -0
  75. package/build/renderer/assets/{useDraftSessionChips-By3XXabI.js → useDraftSessionChips-D9BX6X92.js} +1 -1
  76. package/build/renderer/index.html +2 -2
  77. package/build/server/app/renderer/auth/api.d.ts +28 -2
  78. package/build/server/app/renderer/auth/api.d.ts.map +1 -1
  79. package/build/server/app/renderer/auth/api.js +29 -4
  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 +15 -6
  83. package/build/server/app/renderer/providerCatalogClient.js.map +1 -1
  84. package/build/server/app/renderer/providerRegistryClient.d.ts +1 -1
  85. package/build/server/app/renderer/providerRegistryClient.d.ts.map +1 -1
  86. package/build/server/app/renderer/providerRegistryClient.js +23 -41
  87. package/build/server/app/renderer/providerRegistryClient.js.map +1 -1
  88. package/build/server/app/renderer/settings/settingsDesktopUpdateLabels.d.ts +11 -4
  89. package/build/server/app/renderer/settings/settingsDesktopUpdateLabels.d.ts.map +1 -1
  90. package/build/server/app/renderer/settings/settingsDesktopUpdateLabels.js +25 -5
  91. package/build/server/app/renderer/settings/settingsDesktopUpdateLabels.js.map +1 -1
  92. package/build/server/app/server/appPackageRoutes.d.ts +2 -0
  93. package/build/server/app/server/appPackageRoutes.d.ts.map +1 -1
  94. package/build/server/app/server/appPackageRoutes.js +105 -0
  95. package/build/server/app/server/appPackageRoutes.js.map +1 -1
  96. package/build/server/app/server/authGatePolicy.js +8 -3
  97. package/build/server/app/server/authGatePolicy.js.map +1 -1
  98. package/build/server/app/server/authRoutes.d.ts +14 -1
  99. package/build/server/app/server/authRoutes.d.ts.map +1 -1
  100. package/build/server/app/server/authRoutes.js +395 -76
  101. package/build/server/app/server/authRoutes.js.map +1 -1
  102. package/build/server/app/server/contracts.d.ts +19 -1
  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 +48 -2
  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 +2 -1
  112. package/build/server/app/server/platformSetupRoutes.d.ts.map +1 -1
  113. package/build/server/app/server/platformSetupRoutes.js +117 -64
  114. package/build/server/app/server/platformSetupRoutes.js.map +1 -1
  115. package/build/server/app/server/polling.d.ts.map +1 -1
  116. package/build/server/app/server/polling.js +2 -0
  117. package/build/server/app/server/polling.js.map +1 -1
  118. package/build/server/app/server/requestRouter.d.ts.map +1 -1
  119. package/build/server/app/server/requestRouter.js +33 -0
  120. package/build/server/app/server/requestRouter.js.map +1 -1
  121. package/build/server/app/server/runtimeSurfaceProxy.d.ts.map +1 -1
  122. package/build/server/app/server/runtimeSurfaceProxy.js +16 -19
  123. package/build/server/app/server/runtimeSurfaceProxy.js.map +1 -1
  124. package/build/server/app/server/startupRecovery.d.ts.map +1 -1
  125. package/build/server/app/server/startupRecovery.js +5 -0
  126. package/build/server/app/server/startupRecovery.js.map +1 -1
  127. package/build/server/app/server/telegramCommandSurface.d.ts +29 -0
  128. package/build/server/app/server/telegramCommandSurface.d.ts.map +1 -0
  129. package/build/server/app/server/telegramCommandSurface.js +123 -0
  130. package/build/server/app/server/telegramCommandSurface.js.map +1 -0
  131. package/build/server/app/server/transportWorkGoldenPath.d.ts +82 -0
  132. package/build/server/app/server/transportWorkGoldenPath.d.ts.map +1 -0
  133. package/build/server/app/server/transportWorkGoldenPath.js +307 -0
  134. package/build/server/app/server/transportWorkGoldenPath.js.map +1 -0
  135. package/build/server/config.d.ts +22 -3
  136. package/build/server/config.d.ts.map +1 -1
  137. package/build/server/config.js +14 -13
  138. package/build/server/config.js.map +1 -1
  139. package/build/server/design/components/providerModelFieldsSupport.d.ts +3 -3
  140. package/build/server/design/components/providerModelFieldsSupport.d.ts.map +1 -1
  141. package/build/server/design/components/providerModelFieldsSupport.js +40 -38
  142. package/build/server/design/components/providerModelFieldsSupport.js.map +1 -1
  143. package/build/server/design/components/useProviderCatalogState.d.ts +1 -0
  144. package/build/server/design/components/useProviderCatalogState.d.ts.map +1 -1
  145. package/build/server/design/components/useProviderCatalogState.js +1 -0
  146. package/build/server/design/components/useProviderCatalogState.js.map +1 -1
  147. package/build/server/design/components/useProviderRegistryAutoRecheck.d.ts.map +1 -1
  148. package/build/server/design/components/useProviderRegistryAutoRecheck.js +20 -13
  149. package/build/server/design/components/useProviderRegistryAutoRecheck.js.map +1 -1
  150. package/build/server/design/components/useProviderRegistryState.d.ts.map +1 -1
  151. package/build/server/design/components/useProviderRegistryState.js +12 -25
  152. package/build/server/design/components/useProviderRegistryState.js.map +1 -1
  153. package/build/server/design/components/useProviderTargetReconciliation.d.ts.map +1 -1
  154. package/build/server/design/components/useProviderTargetReconciliation.js +5 -2
  155. package/build/server/design/components/useProviderTargetReconciliation.js.map +1 -1
  156. package/build/server/index.js +4 -0
  157. package/build/server/index.js.map +1 -1
  158. package/build/server/platform/apps/packageInstaller.d.ts +19 -0
  159. package/build/server/platform/apps/packageInstaller.d.ts.map +1 -0
  160. package/build/server/platform/apps/packageInstaller.js +92 -0
  161. package/build/server/platform/apps/packageInstaller.js.map +1 -0
  162. package/build/server/platform/apps/registry.d.ts +6 -0
  163. package/build/server/platform/apps/registry.d.ts.map +1 -1
  164. package/build/server/platform/apps/registry.js +24 -0
  165. package/build/server/platform/apps/registry.js.map +1 -1
  166. package/build/server/platform/apps/renderer.d.ts +6 -0
  167. package/build/server/platform/apps/renderer.d.ts.map +1 -0
  168. package/build/server/platform/apps/renderer.js +18 -0
  169. package/build/server/platform/apps/renderer.js.map +1 -0
  170. package/build/server/platform/auth/actionGrant.d.ts +61 -0
  171. package/build/server/platform/auth/actionGrant.d.ts.map +1 -0
  172. package/build/server/platform/auth/actionGrant.js +108 -0
  173. package/build/server/platform/auth/actionGrant.js.map +1 -0
  174. package/build/server/platform/auth/adminCredentials.d.ts +37 -0
  175. package/build/server/platform/auth/adminCredentials.d.ts.map +1 -0
  176. package/build/server/platform/auth/adminCredentials.js +63 -0
  177. package/build/server/platform/auth/adminCredentials.js.map +1 -0
  178. package/build/server/platform/auth/bootstrap.d.ts +14 -0
  179. package/build/server/platform/auth/bootstrap.d.ts.map +1 -1
  180. package/build/server/platform/auth/bootstrap.js +29 -4
  181. package/build/server/platform/auth/bootstrap.js.map +1 -1
  182. package/build/server/platform/auth/config.d.ts.map +1 -1
  183. package/build/server/platform/auth/config.js +1 -1
  184. package/build/server/platform/auth/config.js.map +1 -1
  185. package/build/server/platform/auth/errorCodes.d.ts +2 -0
  186. package/build/server/platform/auth/errorCodes.d.ts.map +1 -1
  187. package/build/server/platform/auth/errorCodes.js +2 -0
  188. package/build/server/platform/auth/errorCodes.js.map +1 -1
  189. package/build/server/platform/auth/googleAccount.d.ts +40 -13
  190. package/build/server/platform/auth/googleAccount.d.ts.map +1 -1
  191. package/build/server/platform/auth/googleAccount.js +89 -70
  192. package/build/server/platform/auth/googleAccount.js.map +1 -1
  193. package/build/server/platform/auth/index.d.ts +4 -0
  194. package/build/server/platform/auth/index.d.ts.map +1 -1
  195. package/build/server/platform/auth/index.js +4 -0
  196. package/build/server/platform/auth/index.js.map +1 -1
  197. package/build/server/platform/auth/localLogin.d.ts +10 -0
  198. package/build/server/platform/auth/localLogin.d.ts.map +1 -1
  199. package/build/server/platform/auth/localLogin.js +17 -0
  200. package/build/server/platform/auth/localLogin.js.map +1 -1
  201. package/build/server/platform/auth/loginMethods.d.ts +18 -0
  202. package/build/server/platform/auth/loginMethods.d.ts.map +1 -0
  203. package/build/server/platform/auth/loginMethods.js +19 -0
  204. package/build/server/platform/auth/loginMethods.js.map +1 -0
  205. package/build/server/platform/auth/securityEvents.d.ts +31 -0
  206. package/build/server/platform/auth/securityEvents.d.ts.map +1 -0
  207. package/build/server/platform/auth/securityEvents.js +45 -0
  208. package/build/server/platform/auth/securityEvents.js.map +1 -0
  209. package/build/server/platform/runtime/deliveryClient.d.ts +111 -0
  210. package/build/server/platform/runtime/deliveryClient.d.ts.map +1 -0
  211. package/build/server/platform/runtime/deliveryClient.js +289 -0
  212. package/build/server/platform/runtime/deliveryClient.js.map +1 -0
  213. package/build/server/platform/supervision/providerCapabilityBootstrapYaml.d.ts +1 -0
  214. package/build/server/platform/supervision/providerCapabilityBootstrapYaml.d.ts.map +1 -1
  215. package/build/server/platform/supervision/providerCapabilityBootstrapYaml.js +10 -0
  216. package/build/server/platform/supervision/providerCapabilityBootstrapYaml.js.map +1 -1
  217. package/build/server/platform/supervision/runtimeBoundary.d.ts +11 -1
  218. package/build/server/platform/supervision/runtimeBoundary.d.ts.map +1 -1
  219. package/build/server/platform/supervision/runtimeBoundary.js +2 -2
  220. package/build/server/platform/supervision/runtimeBoundary.js.map +1 -1
  221. package/build/server/platform/transports/telegram/bridge.d.ts +18 -0
  222. package/build/server/platform/transports/telegram/bridge.d.ts.map +1 -1
  223. package/build/server/platform/transports/telegram/bridge.js +176 -0
  224. package/build/server/platform/transports/telegram/bridge.js.map +1 -1
  225. package/build/server/platform/transports/telegram/commandPort.d.ts +40 -0
  226. package/build/server/platform/transports/telegram/commandPort.d.ts.map +1 -0
  227. package/build/server/platform/transports/telegram/commandPort.js +17 -0
  228. package/build/server/platform/transports/telegram/commandPort.js.map +1 -0
  229. package/build/server/platform/transports/telegram/commandRouter.d.ts +22 -0
  230. package/build/server/platform/transports/telegram/commandRouter.d.ts.map +1 -1
  231. package/build/server/platform/transports/telegram/commandRouter.js.map +1 -1
  232. package/build/server/platform/transports/telegram/commands/index.d.ts.map +1 -1
  233. package/build/server/platform/transports/telegram/commands/index.js +38 -0
  234. package/build/server/platform/transports/telegram/commands/index.js.map +1 -1
  235. package/build/server/platform/transports/telegram/ingressDispatch.d.ts +56 -0
  236. package/build/server/platform/transports/telegram/ingressDispatch.d.ts.map +1 -0
  237. package/build/server/platform/transports/telegram/ingressDispatch.js +93 -0
  238. package/build/server/platform/transports/telegram/ingressDispatch.js.map +1 -0
  239. package/build/server/platform/transports/telegram/polling.d.ts +34 -0
  240. package/build/server/platform/transports/telegram/polling.d.ts.map +1 -1
  241. package/build/server/platform/transports/telegram/polling.js +86 -9
  242. package/build/server/platform/transports/telegram/polling.js.map +1 -1
  243. package/build/server/platform/transports/telegram/relay/index.d.ts +3 -0
  244. package/build/server/platform/transports/telegram/relay/index.d.ts.map +1 -1
  245. package/build/server/platform/transports/telegram/relay/index.js +5 -1
  246. package/build/server/platform/transports/telegram/relay/index.js.map +1 -1
  247. package/build/server/platform/transports/telegram/relay/ingress.d.ts +2 -0
  248. package/build/server/platform/transports/telegram/relay/ingress.d.ts.map +1 -1
  249. package/build/server/platform/transports/telegram/relay/ingress.js +1 -1
  250. package/build/server/platform/transports/telegram/relay/ingress.js.map +1 -1
  251. package/build/server/platform/transports/work-delivery/actionTokens.d.ts +66 -0
  252. package/build/server/platform/transports/work-delivery/actionTokens.d.ts.map +1 -0
  253. package/build/server/platform/transports/work-delivery/actionTokens.js +145 -0
  254. package/build/server/platform/transports/work-delivery/actionTokens.js.map +1 -0
  255. package/build/server/platform/transports/work-delivery/contracts.d.ts +172 -0
  256. package/build/server/platform/transports/work-delivery/contracts.d.ts.map +1 -0
  257. package/build/server/platform/transports/work-delivery/contracts.js +26 -0
  258. package/build/server/platform/transports/work-delivery/contracts.js.map +1 -0
  259. package/build/server/platform/transports/work-delivery/deliveryGates.d.ts +32 -0
  260. package/build/server/platform/transports/work-delivery/deliveryGates.d.ts.map +1 -0
  261. package/build/server/platform/transports/work-delivery/deliveryGates.js +45 -0
  262. package/build/server/platform/transports/work-delivery/deliveryGates.js.map +1 -0
  263. package/build/server/platform/transports/work-delivery/inboundClassification.d.ts +31 -0
  264. package/build/server/platform/transports/work-delivery/inboundClassification.d.ts.map +1 -0
  265. package/build/server/platform/transports/work-delivery/inboundClassification.js +52 -0
  266. package/build/server/platform/transports/work-delivery/inboundClassification.js.map +1 -0
  267. package/build/server/platform/transports/work-delivery/outbox.d.ts +84 -0
  268. package/build/server/platform/transports/work-delivery/outbox.d.ts.map +1 -0
  269. package/build/server/platform/transports/work-delivery/outbox.js +270 -0
  270. package/build/server/platform/transports/work-delivery/outbox.js.map +1 -0
  271. package/build/server/platform/transports/work-delivery/permissionEnvelope.d.ts +57 -0
  272. package/build/server/platform/transports/work-delivery/permissionEnvelope.d.ts.map +1 -0
  273. package/build/server/platform/transports/work-delivery/permissionEnvelope.js +74 -0
  274. package/build/server/platform/transports/work-delivery/permissionEnvelope.js.map +1 -0
  275. package/build/server/platform/transports/work-delivery/port.d.ts +60 -0
  276. package/build/server/platform/transports/work-delivery/port.d.ts.map +1 -0
  277. package/build/server/platform/transports/work-delivery/port.js +15 -0
  278. package/build/server/platform/transports/work-delivery/port.js.map +1 -0
  279. package/build/server/platform/transports/work-delivery/proposal.d.ts +31 -0
  280. package/build/server/platform/transports/work-delivery/proposal.d.ts.map +1 -0
  281. package/build/server/platform/transports/work-delivery/proposal.js +59 -0
  282. package/build/server/platform/transports/work-delivery/proposal.js.map +1 -0
  283. package/build/server/platform/transports/work-delivery/readiness.d.ts +61 -0
  284. package/build/server/platform/transports/work-delivery/readiness.d.ts.map +1 -0
  285. package/build/server/platform/transports/work-delivery/readiness.js +123 -0
  286. package/build/server/platform/transports/work-delivery/readiness.js.map +1 -0
  287. package/build/server/platform/transports/work-delivery/stageProjection.d.ts +43 -0
  288. package/build/server/platform/transports/work-delivery/stageProjection.d.ts.map +1 -0
  289. package/build/server/platform/transports/work-delivery/stageProjection.js +132 -0
  290. package/build/server/platform/transports/work-delivery/stageProjection.js.map +1 -0
  291. package/build/server/platform/transports/work-delivery/stateStore.d.ts +21 -0
  292. package/build/server/platform/transports/work-delivery/stateStore.d.ts.map +1 -0
  293. package/build/server/platform/transports/work-delivery/stateStore.js +193 -0
  294. package/build/server/platform/transports/work-delivery/stateStore.js.map +1 -0
  295. package/build/server/platform/transports/work-delivery/telemetry.d.ts +49 -0
  296. package/build/server/platform/transports/work-delivery/telemetry.d.ts.map +1 -0
  297. package/build/server/platform/transports/work-delivery/telemetry.js +80 -0
  298. package/build/server/platform/transports/work-delivery/telemetry.js.map +1 -0
  299. package/build/server/products/chat/api/contracts.d.ts +10 -8
  300. package/build/server/products/chat/api/contracts.d.ts.map +1 -1
  301. package/build/server/products/chat/api/resources/channelRoutes.d.ts.map +1 -1
  302. package/build/server/products/chat/api/resources/channelRoutes.js +27 -1
  303. package/build/server/products/chat/api/resources/channelRoutes.js.map +1 -1
  304. package/build/server/products/chat/api/routeSupport.d.ts +8 -0
  305. package/build/server/products/chat/api/routeSupport.d.ts.map +1 -1
  306. package/build/server/products/chat/api/routeSupport.js +5 -4
  307. package/build/server/products/chat/api/routeSupport.js.map +1 -1
  308. package/build/server/products/chat/api/setupRoutes.d.ts.map +1 -1
  309. package/build/server/products/chat/api/setupRoutes.js +24 -91
  310. package/build/server/products/chat/api/setupRoutes.js.map +1 -1
  311. package/build/server/products/chat/state/model/channelExecutionTargets.d.ts +15 -0
  312. package/build/server/products/chat/state/model/channelExecutionTargets.d.ts.map +1 -1
  313. package/build/server/products/chat/state/model/channelExecutionTargets.js +25 -0
  314. package/build/server/products/chat/state/model/channelExecutionTargets.js.map +1 -1
  315. package/build/server/products/chat/state/model/index.d.ts +1 -1
  316. package/build/server/products/chat/state/model/index.d.ts.map +1 -1
  317. package/build/server/products/chat/state/model/index.js +1 -1
  318. package/build/server/products/chat/state/model/index.js.map +1 -1
  319. package/build/server/products/code/api/relayRoutes.d.ts.map +1 -1
  320. package/build/server/products/code/api/relayRoutes.js +36 -7
  321. package/build/server/products/code/api/relayRoutes.js.map +1 -1
  322. package/build/server/products/code/state/relayState.d.ts +2 -1
  323. package/build/server/products/code/state/relayState.d.ts.map +1 -1
  324. package/build/server/products/code/state/relayState.js +7 -7
  325. package/build/server/products/code/state/relayState.js.map +1 -1
  326. package/build/server/products/shared/api/workspaceContracts.d.ts +5 -8
  327. package/build/server/products/shared/api/workspaceContracts.d.ts.map +1 -1
  328. package/build/server/products/work/api/goldenPathProjection.d.ts +156 -0
  329. package/build/server/products/work/api/goldenPathProjection.d.ts.map +1 -0
  330. package/build/server/products/work/api/goldenPathProjection.js +252 -0
  331. package/build/server/products/work/api/goldenPathProjection.js.map +1 -0
  332. package/build/server/products/work/api/index.d.ts +54 -1
  333. package/build/server/products/work/api/index.d.ts.map +1 -1
  334. package/build/server/products/work/api/index.js +182 -4
  335. package/build/server/products/work/api/index.js.map +1 -1
  336. package/build/server/products/work/api/projection.d.ts +7 -1
  337. package/build/server/products/work/api/projection.d.ts.map +1 -1
  338. package/build/server/products/work/api/projection.js +7 -1
  339. package/build/server/products/work/api/projection.js.map +1 -1
  340. package/build/server/products/work/shared/apiPaths.d.ts +8 -0
  341. package/build/server/products/work/shared/apiPaths.d.ts.map +1 -1
  342. package/build/server/products/work/shared/apiPaths.js +8 -0
  343. package/build/server/products/work/shared/apiPaths.js.map +1 -1
  344. package/build/server/products/work/shared/workGoldenPathMessages.d.ts +83 -0
  345. package/build/server/products/work/shared/workGoldenPathMessages.d.ts.map +1 -0
  346. package/build/server/products/work/shared/workGoldenPathMessages.js +211 -0
  347. package/build/server/products/work/shared/workGoldenPathMessages.js.map +1 -0
  348. package/build/server/products/work/shared/workGoldenPathMetadata.d.ts +45 -0
  349. package/build/server/products/work/shared/workGoldenPathMetadata.d.ts.map +1 -0
  350. package/build/server/products/work/shared/workGoldenPathMetadata.js +122 -0
  351. package/build/server/products/work/shared/workGoldenPathMetadata.js.map +1 -0
  352. package/build/server/products/work/state/workCompletionEvidence.d.ts +42 -0
  353. package/build/server/products/work/state/workCompletionEvidence.d.ts.map +1 -0
  354. package/build/server/products/work/state/workCompletionEvidence.js +59 -0
  355. package/build/server/products/work/state/workCompletionEvidence.js.map +1 -0
  356. package/build/server/products/work/state/workExecutionTaskDelegate.d.ts +16 -0
  357. package/build/server/products/work/state/workExecutionTaskDelegate.d.ts.map +1 -1
  358. package/build/server/products/work/state/workExecutionTaskDelegate.js +91 -68
  359. package/build/server/products/work/state/workExecutionTaskDelegate.js.map +1 -1
  360. package/build/server/products/work/state/workGoldenPathAdmission.d.ts +78 -0
  361. package/build/server/products/work/state/workGoldenPathAdmission.d.ts.map +1 -0
  362. package/build/server/products/work/state/workGoldenPathAdmission.js +249 -0
  363. package/build/server/products/work/state/workGoldenPathAdmission.js.map +1 -0
  364. package/build/server/products/work/state/workGoldenPathDeliveryEvidence.d.ts +33 -0
  365. package/build/server/products/work/state/workGoldenPathDeliveryEvidence.d.ts.map +1 -0
  366. package/build/server/products/work/state/workGoldenPathDeliveryEvidence.js +161 -0
  367. package/build/server/products/work/state/workGoldenPathDeliveryEvidence.js.map +1 -0
  368. package/build/server/products/work/state/workGoldenPathIntake.d.ts +34 -0
  369. package/build/server/products/work/state/workGoldenPathIntake.d.ts.map +1 -0
  370. package/build/server/products/work/state/workGoldenPathIntake.js +50 -0
  371. package/build/server/products/work/state/workGoldenPathIntake.js.map +1 -0
  372. package/build/server/products/work/state/workGoldenPathLifecycle.d.ts +44 -0
  373. package/build/server/products/work/state/workGoldenPathLifecycle.d.ts.map +1 -0
  374. package/build/server/products/work/state/workGoldenPathLifecycle.js +146 -0
  375. package/build/server/products/work/state/workGoldenPathLifecycle.js.map +1 -0
  376. package/build/server/products/work/state/workGoldenPathPublish.d.ts +84 -0
  377. package/build/server/products/work/state/workGoldenPathPublish.d.ts.map +1 -0
  378. package/build/server/products/work/state/workGoldenPathPublish.js +488 -0
  379. package/build/server/products/work/state/workGoldenPathPublish.js.map +1 -0
  380. package/build/server/products/work/state/workGoldenPathRunner.d.ts +121 -0
  381. package/build/server/products/work/state/workGoldenPathRunner.d.ts.map +1 -0
  382. package/build/server/products/work/state/workGoldenPathRunner.js +447 -0
  383. package/build/server/products/work/state/workGoldenPathRunner.js.map +1 -0
  384. package/build/server/products/work/state/workGoldenPathRuntimeExecutor.d.ts +74 -0
  385. package/build/server/products/work/state/workGoldenPathRuntimeExecutor.d.ts.map +1 -0
  386. package/build/server/products/work/state/workGoldenPathRuntimeExecutor.js +239 -0
  387. package/build/server/products/work/state/workGoldenPathRuntimeExecutor.js.map +1 -0
  388. package/build/server/products/work/state/workGoldenPathService.d.ts +152 -0
  389. package/build/server/products/work/state/workGoldenPathService.d.ts.map +1 -0
  390. package/build/server/products/work/state/workGoldenPathService.js +1057 -0
  391. package/build/server/products/work/state/workGoldenPathService.js.map +1 -0
  392. package/build/server/products/work/state/workGoldenPathTelegramPort.d.ts +87 -0
  393. package/build/server/products/work/state/workGoldenPathTelegramPort.d.ts.map +1 -0
  394. package/build/server/products/work/state/workGoldenPathTelegramPort.js +220 -0
  395. package/build/server/products/work/state/workGoldenPathTelegramPort.js.map +1 -0
  396. package/build/server/runtime/client.d.ts +24 -0
  397. package/build/server/runtime/client.d.ts.map +1 -1
  398. package/build/server/runtime/client.js +62 -1
  399. package/build/server/runtime/client.js.map +1 -1
  400. package/build/server/runtime/setup.d.ts +10 -4
  401. package/build/server/runtime/setup.d.ts.map +1 -1
  402. package/build/server/runtime/setup.js +14 -18
  403. package/build/server/runtime/setup.js.map +1 -1
  404. package/build/server/runtime/usageSnapshot.d.ts +3 -0
  405. package/build/server/runtime/usageSnapshot.d.ts.map +1 -0
  406. package/build/server/runtime/usageSnapshot.js +69 -0
  407. package/build/server/runtime/usageSnapshot.js.map +1 -0
  408. package/build/server/server/routes/providerCapabilityBootstrap.d.ts +69 -0
  409. package/build/server/server/routes/providerCapabilityBootstrap.d.ts.map +1 -0
  410. package/build/server/server/routes/providerCapabilityBootstrap.js +165 -0
  411. package/build/server/server/routes/providerCapabilityBootstrap.js.map +1 -0
  412. package/build/server/server/routes/providers.d.ts.map +1 -1
  413. package/build/server/server/routes/providers.js +112 -81
  414. package/build/server/server/routes/providers.js.map +1 -1
  415. package/build/server/server/routes/telegram.d.ts +9 -0
  416. package/build/server/server/routes/telegram.d.ts.map +1 -1
  417. package/build/server/server/routes/telegram.js +79 -72
  418. package/build/server/server/routes/telegram.js.map +1 -1
  419. package/build/server/shared/catsAppManifest.d.ts +3 -1
  420. package/build/server/shared/catsAppManifest.d.ts.map +1 -1
  421. package/build/server/shared/catsAppManifest.js +2 -0
  422. package/build/server/shared/catsAppManifest.js.map +1 -1
  423. package/build/server/shared/executionLabel.d.ts.map +1 -1
  424. package/build/server/shared/executionLabel.js +8 -1
  425. package/build/server/shared/executionLabel.js.map +1 -1
  426. package/build/server/shared/i18n/catalogs/en.d.ts.map +1 -1
  427. package/build/server/shared/i18n/catalogs/en.js +238 -3
  428. package/build/server/shared/i18n/catalogs/en.js.map +1 -1
  429. package/build/server/shared/i18n/catalogs/zh-TW.d.ts.map +1 -1
  430. package/build/server/shared/i18n/catalogs/zh-TW.js +236 -3
  431. package/build/server/shared/i18n/catalogs/zh-TW.js.map +1 -1
  432. package/build/server/shared/i18n/index.d.ts +231 -0
  433. package/build/server/shared/i18n/index.d.ts.map +1 -1
  434. package/build/server/shared/i18n/messageKeys.d.ts +231 -0
  435. package/build/server/shared/i18n/messageKeys.d.ts.map +1 -1
  436. package/build/server/shared/i18n/messageKeys.js +231 -0
  437. package/build/server/shared/i18n/messageKeys.js.map +1 -1
  438. package/build/server/shared/platformSetupOperation.d.ts +2 -0
  439. package/build/server/shared/platformSetupOperation.d.ts.map +1 -0
  440. package/build/server/shared/platformSetupOperation.js +9 -0
  441. package/build/server/shared/platformSetupOperation.js.map +1 -0
  442. package/build/server/shared/providerCatalog.d.ts +6 -2
  443. package/build/server/shared/providerCatalog.d.ts.map +1 -1
  444. package/build/server/shared/providerCatalog.js +15 -1
  445. package/build/server/shared/providerCatalog.js.map +1 -1
  446. package/build/server/shared/providerCatalogData.d.ts +38 -22
  447. package/build/server/shared/providerCatalogData.d.ts.map +1 -1
  448. package/build/server/shared/providerCatalogData.js +31 -10
  449. package/build/server/shared/providerCatalogData.js.map +1 -1
  450. package/build/server/shared/providerCatalogInstances.d.ts.map +1 -1
  451. package/build/server/shared/providerCatalogInstances.js +6 -0
  452. package/build/server/shared/providerCatalogInstances.js.map +1 -1
  453. package/build/server/shared/providerModelLabelRegistry.d.ts +29 -0
  454. package/build/server/shared/providerModelLabelRegistry.d.ts.map +1 -0
  455. package/build/server/shared/providerModelLabelRegistry.js +49 -0
  456. package/build/server/shared/providerModelLabelRegistry.js.map +1 -0
  457. package/build/server/shared/providerSelection.d.ts.map +1 -1
  458. package/build/server/shared/providerSelection.js +10 -13
  459. package/build/server/shared/providerSelection.js.map +1 -1
  460. package/build/server/shared/runtimeSetup.d.ts +17 -4
  461. package/build/server/shared/runtimeSetup.d.ts.map +1 -1
  462. package/build/server/shared/runtimeStatusPresentation.js +1 -1
  463. package/build/server/shared/runtimeStatusPresentation.js.map +1 -1
  464. package/package.json +23 -1
  465. package/packages/app-sdk/browser.d.ts +51 -0
  466. package/packages/app-sdk/browser.js +48 -0
  467. package/packages/app-sdk/package.d.ts +14 -0
  468. package/packages/app-sdk/package.js +131 -0
  469. package/packages/app-sdk/package.json +7 -0
  470. package/scripts/README.md +73 -26
  471. package/scripts/build-desktop-installer.mjs +15 -0
  472. package/scripts/build-test-ui.mjs +1 -1
  473. package/scripts/bundle-server.mjs +23 -10
  474. package/scripts/linux/build-desktop-package.sh +6 -6
  475. package/scripts/linux/install-antigravity.sh +0 -0
  476. package/scripts/linux/install-devin.sh +0 -0
  477. package/scripts/linux/install-meta-cli.sh +8 -0
  478. package/scripts/linux/node-cli-common.sh +2 -75
  479. package/scripts/linux/provider-cli-common.sh +103 -30
  480. package/scripts/linux/sync-agent-skills.sh +27 -5
  481. package/scripts/linux/test-linux-package-smoke.sh +4 -3
  482. package/scripts/linux/upgrade-cli-tools.sh +1 -1
  483. package/scripts/macos/build-desktop-package.sh +5 -5
  484. package/scripts/macos/install-antigravity.sh +0 -0
  485. package/scripts/macos/install-devin.sh +0 -0
  486. package/scripts/macos/install-meta-cli.sh +8 -0
  487. package/scripts/macos/node-cli-common.sh +2 -75
  488. package/scripts/macos/provider-cli-common.sh +103 -30
  489. package/scripts/macos/sync-agent-skills.sh +27 -5
  490. package/scripts/macos/test-macos-package-smoke.sh +4 -3
  491. package/scripts/macos/upgrade-cli-tools.sh +1 -1
  492. package/scripts/package-desktop.mjs +15 -2
  493. package/scripts/testing/check-usage-app.mts +266 -0
  494. package/scripts/testing/usage-app-smoke-electron.cjs +10 -0
  495. package/scripts/testing/usage-app-smoke-renderer.tsx +8 -0
  496. package/scripts/verify-desktop-app-bundle.mjs +108 -0
  497. package/scripts/windows/Build-DesktopPackage.ps1 +9 -6
  498. package/scripts/windows/Check-WindowsSetupReadiness.ps1 +14 -443
  499. package/scripts/windows/{Install-Aider.ps1 → Install-MetaCli.ps1} +180 -92
  500. package/scripts/windows/Install-Ollama.ps1 +4 -1
  501. package/scripts/windows/Remove-MergedBranches.ps1 +229 -0
  502. package/scripts/windows/Sync-AgentSkills.ps1 +29 -6
  503. package/scripts/windows/Test-WindowsInstallerSmoke.ps1 +2 -1
  504. package/build/desktop/updateNotifications.d.ts +0 -64
  505. package/build/desktop/updateNotifications.d.ts.map +0 -1
  506. package/build/desktop/updateNotifications.js +0 -143
  507. package/build/desktop/updateNotifications.js.map +0 -1
  508. package/build/renderer/assets/App-C57f4p8k.js +0 -2
  509. package/build/renderer/assets/App-CPqGDXVi.js +0 -1
  510. package/build/renderer/assets/App-DGwkRFZl.css +0 -1
  511. package/build/renderer/assets/WorkspaceAppRoutes-DYg2vnjz.js +0 -1
  512. package/build/renderer/assets/app-DVN9Ghrk.js +0 -43
  513. package/build/renderer/assets/app-XnXwkcD2.css +0 -1
  514. package/build/renderer/assets/conversationSidebarRecentEntries-XZVCnMLw.js +0 -6
  515. package/scripts/linux/install-aider.sh +0 -8
  516. package/scripts/macos/install-aider.sh +0 -8
@@ -0,0 +1,229 @@
1
+ <#
2
+ .SYNOPSIS
3
+ Remove local branches whose upstream was deleted after a squash merge.
4
+
5
+ .DESCRIPTION
6
+ Intended as the opening step of an agent session in a repository that is
7
+ shared by several agents working from one clone.
8
+
9
+ The project merges with `gh pr merge --auto --squash` and lets GitHub delete
10
+ the head branch. A squashed commit has a different SHA than the branch it
11
+ came from, so `git branch -d` always reports "not fully merged" and refuses.
12
+ This script therefore uses upstream state, not commit reachability: a branch
13
+ counts as merged when it had an upstream and that upstream is gone, which
14
+ for this project only happens after the pull request landed.
15
+
16
+ A branch that was never pushed has no upstream at all and can never be
17
+ reported as gone, so local-only experiments are never swept. Branches that
18
+ are checked out in another worktree are reported and skipped rather than
19
+ left to fail.
20
+
21
+ The working tree must be clean. In a shared clone a dirty tree usually means
22
+ another agent left work behind, so the script stops instead of guessing.
23
+
24
+ The default branch comes from origin/HEAD, falling back to init.defaultBranch,
25
+ main, or master, and only ever to a branch that actually exists - guessing a
26
+ name breaks a clone whose default is not what this script assumed. A fetch
27
+ that fails because the remote is unreachable only warns, since the recorded
28
+ upstream state stays accurate and an offline run can at worst miss a recently
29
+ merged branch.
30
+
31
+ .PARAMETER ReturnToDefault
32
+ Switch to the default branch and fast-forward it after sweeping. The switch
33
+ happens regardless when the current branch is one of the deleted ones,
34
+ because a checked-out branch cannot be removed.
35
+
36
+ .PARAMETER SkipFetch
37
+ Skip `git fetch --prune`. Only useful when a fetch just ran, since without a
38
+ prune the deleted upstreams are not yet visible as gone.
39
+
40
+ .PARAMETER RepositoryRoot
41
+ Override the repository to operate on. Intended for isolated validation.
42
+
43
+ .EXAMPLE
44
+ .\Remove-MergedBranches.ps1 -WhatIf
45
+ Show which branches would be removed without changing anything.
46
+
47
+ .EXAMPLE
48
+ .\Remove-MergedBranches.ps1 -ReturnToDefault
49
+ Sweep merged branches, then land on an up-to-date default branch.
50
+ #>
51
+ [CmdletBinding(SupportsShouldProcess)]
52
+ param(
53
+ [Parameter(Mandatory = $false)]
54
+ [switch]$ReturnToDefault,
55
+
56
+ [Parameter(Mandatory = $false)]
57
+ [switch]$SkipFetch,
58
+
59
+ [Parameter(Mandatory = $false)]
60
+ [string]$RepositoryRoot
61
+ )
62
+
63
+ $ErrorActionPreference = "Stop"
64
+
65
+ function Invoke-Git {
66
+ param([string[]]$Arguments, [switch]$AllowFailure)
67
+
68
+ $output = & git -C $script:RepoRoot @Arguments 2>&1
69
+ if ($LASTEXITCODE -ne 0 -and -not $AllowFailure) {
70
+ throw "git $($Arguments -join ' ') failed with exit code $LASTEXITCODE`n$output"
71
+ }
72
+ return $output
73
+ }
74
+
75
+ function Test-LocalBranch {
76
+ param([string]$Name)
77
+
78
+ if (-not $Name) { return $false }
79
+ Invoke-Git @("show-ref", "--verify", "--quiet", "refs/heads/$Name") -AllowFailure | Out-Null
80
+ return ($LASTEXITCODE -eq 0)
81
+ }
82
+
83
+ function Get-RemoteDefaultBranch {
84
+ $ref = Invoke-Git @("symbolic-ref", "--quiet", "refs/remotes/origin/HEAD") -AllowFailure
85
+ if ($LASTEXITCODE -eq 0 -and $ref) {
86
+ return ($ref | Select-Object -First 1).ToString().Trim() -replace '^refs/remotes/origin/', ''
87
+ }
88
+ return $null
89
+ }
90
+
91
+ function Resolve-DefaultBranch {
92
+ # origin/HEAD records what the remote considers default. Prefer it, and try
93
+ # once to populate it when the clone never recorded one.
94
+ $name = Get-RemoteDefaultBranch
95
+ if ($name) { return $name }
96
+
97
+ Invoke-Git @("remote", "set-head", "origin", "--auto") -AllowFailure | Out-Null
98
+ $name = Get-RemoteDefaultBranch
99
+ if ($name) { return $name }
100
+
101
+ # No remote, or one that has never been reachable. Guessing a name here is
102
+ # how a fresh clone breaks, because init.defaultBranch varies by machine.
103
+ # Only return a branch that actually exists.
104
+ $configured = Invoke-Git @("config", "--get", "init.defaultBranch") -AllowFailure
105
+ $configuredName = if ($LASTEXITCODE -eq 0 -and $configured) {
106
+ ($configured | Select-Object -First 1).ToString().Trim()
107
+ } else {
108
+ $null
109
+ }
110
+
111
+ foreach ($candidate in @($configuredName, "main", "master")) {
112
+ if (Test-LocalBranch $candidate) { return $candidate }
113
+ }
114
+
115
+ return $null
116
+ }
117
+
118
+ # Resolve the repository first so every later call is explicitly scoped to it.
119
+ $startDir = if ($RepositoryRoot) { $RepositoryRoot } else { (Get-Location).Path }
120
+ $script:RepoRoot = & git -C $startDir rev-parse --show-toplevel 2>$null
121
+ if ($LASTEXITCODE -ne 0 -or -not $script:RepoRoot) {
122
+ throw "Not a git repository: $startDir"
123
+ }
124
+ $script:RepoRoot = $script:RepoRoot.Trim()
125
+
126
+ # A dirty tree in a shared clone is somebody else's unfinished work.
127
+ $dirty = Invoke-Git @("status", "--porcelain")
128
+ if ($dirty) {
129
+ $count = @($dirty).Count
130
+ throw "Working tree is not clean ($count entries). Resolve or stash that work before sweeping branches."
131
+ }
132
+
133
+ # Stale worktree registrations keep their branches undeletable, so clear them
134
+ # before deciding what can go.
135
+ Invoke-Git @("worktree", "prune") | Out-Null
136
+
137
+ # A failed fetch is not fatal. `gone` is recorded by an earlier successful prune
138
+ # and stays accurate, so the worst an offline run can do is miss a branch that
139
+ # was merged since the last fetch - it can never delete the wrong one.
140
+ if (-not $SkipFetch) {
141
+ Invoke-Git @("fetch", "--prune") -AllowFailure | Out-Null
142
+ if ($LASTEXITCODE -ne 0) {
143
+ Write-Warning "git fetch --prune failed; sweeping on the upstream state already recorded. Branches merged since the last successful fetch will not be detected yet."
144
+ }
145
+ }
146
+
147
+ $defaultBranch = Resolve-DefaultBranch
148
+
149
+ $currentBranch = (Invoke-Git @("branch", "--show-current") | Select-Object -First 1)
150
+ if ($currentBranch) { $currentBranch = $currentBranch.ToString().Trim() }
151
+
152
+ # Branches held by another worktree cannot be deleted; git blocks it for us, but
153
+ # reporting them is more useful than surfacing a raw error.
154
+ $worktreeBranches = @{}
155
+ foreach ($line in @(Invoke-Git @("worktree", "list", "--porcelain"))) {
156
+ $text = $line.ToString()
157
+ if ($text -match '^branch\s+refs/heads/(.+)$') {
158
+ $name = $Matches[1]
159
+ if ($name -ne $currentBranch) { $worktreeBranches[$name] = $true }
160
+ }
161
+ }
162
+
163
+ $gone = @()
164
+ foreach ($line in @(Invoke-Git @("for-each-ref", "--format=%(refname:short)%09%(upstream:track,nobracket)", "refs/heads"))) {
165
+ $parts = $line.ToString().Split("`t")
166
+ if ($parts.Count -ge 2 -and $parts[1].Trim() -eq "gone") {
167
+ $gone += $parts[0].Trim()
168
+ }
169
+ }
170
+
171
+ # The default branch tracks a live upstream and should never reach this list,
172
+ # but never delete the branch everything else falls back to.
173
+ $gone = @($gone | Where-Object { $_ -ne $defaultBranch })
174
+
175
+ $blocked = @($gone | Where-Object { $worktreeBranches.ContainsKey($_) })
176
+ $deletable = @($gone | Where-Object { -not $worktreeBranches.ContainsKey($_) })
177
+
178
+ foreach ($name in $blocked) {
179
+ Write-Host " skip $name (checked out in another worktree)"
180
+ }
181
+
182
+ if ($deletable.Count -eq 0) {
183
+ Write-Host "No merged branches to remove."
184
+ } else {
185
+ # A checked-out branch cannot be deleted, so step off it first.
186
+ if ($currentBranch -and $deletable -contains $currentBranch) {
187
+ if (-not $defaultBranch) {
188
+ Write-Host " skip $currentBranch (checked out, and no default branch to switch to)"
189
+ $deletable = @($deletable | Where-Object { $_ -ne $currentBranch })
190
+ } elseif ($PSCmdlet.ShouldProcess($defaultBranch, "Switch away from '$currentBranch' before deleting it")) {
191
+ Invoke-Git @("switch", $defaultBranch) | Out-Null
192
+ Write-Host " switch $defaultBranch (left '$currentBranch' so it can be removed)"
193
+ $currentBranch = $defaultBranch
194
+ } elseif (-not $WhatIfPreference) {
195
+ # Declined under -Confirm: the branch cannot be deleted while it is
196
+ # still checked out, so drop it. -WhatIf also lands here because
197
+ # ShouldProcess reports false, but there the intent is a preview, so
198
+ # keep the branch listed and let the delete below be previewed too.
199
+ $deletable = @($deletable | Where-Object { $_ -ne $currentBranch })
200
+ }
201
+ }
202
+
203
+ foreach ($name in $deletable) {
204
+ # -D, not -d: a squashed branch is never reachable from the default
205
+ # branch, so -d refuses every time. `gone` is the merge evidence here.
206
+ if ($PSCmdlet.ShouldProcess($name, "Delete merged local branch")) {
207
+ $sha = (Invoke-Git @("rev-parse", "--short", $name) | Select-Object -First 1).ToString().Trim()
208
+ Invoke-Git @("branch", "-D", $name) | Out-Null
209
+ Write-Host " delete $name (was $sha)"
210
+ }
211
+ }
212
+ }
213
+
214
+ if ($ReturnToDefault) {
215
+ if (-not $defaultBranch) {
216
+ Write-Warning "No default branch could be determined, so -ReturnToDefault did nothing."
217
+ } elseif ($currentBranch -ne $defaultBranch) {
218
+ if ($PSCmdlet.ShouldProcess($defaultBranch, "Switch and fast-forward")) {
219
+ Invoke-Git @("switch", $defaultBranch) | Out-Null
220
+ Invoke-Git @("pull", "--ff-only") -AllowFailure | Out-Null
221
+ Write-Host " switch $defaultBranch (fast-forwarded)"
222
+ }
223
+ } else {
224
+ if ($PSCmdlet.ShouldProcess($defaultBranch, "Fast-forward")) {
225
+ Invoke-Git @("pull", "--ff-only") -AllowFailure | Out-Null
226
+ Write-Host " pull $defaultBranch (fast-forwarded)"
227
+ }
228
+ }
229
+ }
@@ -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,10 +181,11 @@ $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' },
@@ -1,64 +0,0 @@
1
- import type { DesktopUpdateErrorCode, DesktopUpdateSnapshot } from './contracts.js';
2
- import { type DesktopTrayLocale } from './trayMenu.js';
3
- /**
4
- * Native update notifications.
5
- *
6
- * SPEC-111 section 5 requires a check started outside Settings to report its
7
- * result somewhere the user is actually looking. This module owns that policy;
8
- * `main.ts` only constructs the native notification the policy asks for, so the
9
- * rules stay testable without Electron.
10
- */
11
- /** Where the check that produced the result came from. */
12
- export declare const DESKTOP_UPDATE_NOTIFICATION_ORIGINS: readonly ["tray", "settings", "startup"];
13
- export type DesktopUpdateNotificationOrigin = typeof DESKTOP_UPDATE_NOTIFICATION_ORIGINS[number];
14
- export declare const DESKTOP_UPDATE_SETTINGS_PATH = "/settings/desktop";
15
- export interface DesktopUpdateNotification {
16
- title: string;
17
- body: string;
18
- /** Where activating the notification shall land the user. */
19
- navigatePath: typeof DESKTOP_UPDATE_SETTINGS_PATH;
20
- }
21
- export interface DesktopUpdateAnnouncement {
22
- notification: DesktopUpdateNotification | null;
23
- /**
24
- * Where to open the main window when no notification reaches the user —
25
- * either because the platform has none or because showing it failed.
26
- *
27
- * Null when the result does not justify pulling a window forward. Set
28
- * independently of `notification` so the caller never has to re-derive the
29
- * policy after a failed `show()`.
30
- */
31
- fallbackNavigatePath: typeof DESKTOP_UPDATE_SETTINGS_PATH | null;
32
- }
33
- /**
34
- * Error copy for notifications, in the same two locales the tray uses.
35
- *
36
- * These strings are duplicated from the renderer i18n catalogs because the
37
- * main process has no translator. `settings-desktop-update-labels.test.tsx`
38
- * asserts they stay identical to the catalog entries, so the duplication cannot
39
- * drift silently.
40
- */
41
- export declare const DESKTOP_UPDATE_NOTIFICATION_ERROR_COPY: Record<DesktopTrayLocale, Record<DesktopUpdateErrorCode, string>>;
42
- export interface ResolveDesktopUpdateAnnouncementInput {
43
- origin: DesktopUpdateNotificationOrigin;
44
- snapshot: DesktopUpdateSnapshot;
45
- locale?: string | null;
46
- /** `Notification.isSupported()`, resolved by the caller. */
47
- notificationsSupported: boolean;
48
- }
49
- /**
50
- * Decides what a finished check should tell the user, and how.
51
- *
52
- * A result is announced only when the user cannot already see it:
53
- *
54
- * - `settings` never announces. The section shows the state directly and
55
- * routes manual results through the shared toast system, so a native
56
- * notification would report the same check twice.
57
- * - `tray` announces up-to-date, available, and failed. The menu closes on
58
- * click, so without this the command looks like it did nothing.
59
- * - `startup` announces only an available update. The user did not ask for
60
- * that check, so an up-to-date or offline result has nothing to say and
61
- * would nag on every launch.
62
- */
63
- export declare function resolveDesktopUpdateAnnouncement(input: ResolveDesktopUpdateAnnouncementInput): DesktopUpdateAnnouncement;
64
- //# sourceMappingURL=updateNotifications.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"updateNotifications.d.ts","sourceRoot":"","sources":["../../desktop/host/updateNotifications.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,eAAe,CAAC;AAEvB;;;;;;;GAOG;AAEH,0DAA0D;AAC1D,eAAO,MAAM,mCAAmC,0CAA2C,CAAC;AAC5F,MAAM,MAAM,+BAA+B,GACzC,OAAO,mCAAmC,CAAC,MAAM,CAAC,CAAC;AAErD,eAAO,MAAM,4BAA4B,sBAAsB,CAAC;AAEhE,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,YAAY,EAAE,OAAO,4BAA4B,CAAC;CACnD;AAED,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,yBAAyB,GAAG,IAAI,CAAC;IAC/C;;;;;;;OAOG;IACH,oBAAoB,EAAE,OAAO,4BAA4B,GAAG,IAAI,CAAC;CAClE;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,sCAAsC,EAAE,MAAM,CACzD,iBAAiB,EACjB,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAAC,CA0BvC,CAAC;AAmCF,MAAM,WAAW,qCAAqC;IACpD,MAAM,EAAE,+BAA+B,CAAC;IACxC,QAAQ,EAAE,qBAAqB,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,4DAA4D;IAC5D,sBAAsB,EAAE,OAAO,CAAC;CACjC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,qCAAqC,GAC3C,yBAAyB,CA2B3B"}
@@ -1,143 +0,0 @@
1
- // Locale normalization is shared with the tray rather than duplicated. The
2
- // main process has no i18n runtime, so both surfaces resolve their own copy
3
- // from the same two-locale rule.
4
- import { normalizeDesktopTrayLocale, } from './trayMenu.js';
5
- /**
6
- * Native update notifications.
7
- *
8
- * SPEC-111 section 5 requires a check started outside Settings to report its
9
- * result somewhere the user is actually looking. This module owns that policy;
10
- * `main.ts` only constructs the native notification the policy asks for, so the
11
- * rules stay testable without Electron.
12
- */
13
- /** Where the check that produced the result came from. */
14
- export const DESKTOP_UPDATE_NOTIFICATION_ORIGINS = ['tray', 'settings', 'startup'];
15
- export const DESKTOP_UPDATE_SETTINGS_PATH = '/settings/desktop';
16
- /**
17
- * Error copy for notifications, in the same two locales the tray uses.
18
- *
19
- * These strings are duplicated from the renderer i18n catalogs because the
20
- * main process has no translator. `settings-desktop-update-labels.test.tsx`
21
- * asserts they stay identical to the catalog entries, so the duplication cannot
22
- * drift silently.
23
- */
24
- export const DESKTOP_UPDATE_NOTIFICATION_ERROR_COPY = {
25
- en: {
26
- offline: 'Cats could not reach the update service.',
27
- timeout: 'The update service did not respond in time.',
28
- provider_rejected: 'The update service rejected the request.',
29
- metadata_invalid: 'The update information could not be read.',
30
- checksum_mismatch: 'The downloaded update failed its integrity check.',
31
- signature_rejected: 'The downloaded update failed its signature check.',
32
- unsupported_package: 'This installation cannot update itself.',
33
- download_cancelled: 'The update download was cancelled.',
34
- install_handoff_failed: 'Cats could not open the installer.',
35
- unknown: 'The update could not be completed.',
36
- },
37
- 'zh-TW': {
38
- offline: 'Cats 無法連線到更新服務。',
39
- timeout: '更新服務未在時限內回應。',
40
- provider_rejected: '更新服務拒絕了這次請求。',
41
- metadata_invalid: '無法讀取更新資訊。',
42
- checksum_mismatch: '下載的更新未通過完整性檢查。',
43
- signature_rejected: '下載的更新未通過簽章檢查。',
44
- unsupported_package: '這個安裝方式無法自我更新。',
45
- download_cancelled: '更新下載已取消。',
46
- install_handoff_failed: 'Cats 無法開啟安裝程式。',
47
- unknown: '更新無法完成。',
48
- },
49
- };
50
- const NOTIFICATION_COPY = {
51
- en: {
52
- upToDateTitle: 'Cats is up to date',
53
- upToDateBody: (version) => `Cats ${version} is the latest version.`,
54
- availableTitle: 'Update available',
55
- availableBody: (version) => `Cats ${version} is available. Open Settings to download it.`,
56
- failedTitle: 'Update check failed',
57
- previewSuffix: ' (preview)',
58
- },
59
- 'zh-TW': {
60
- upToDateTitle: 'Cats 已是最新版本',
61
- upToDateBody: (version) => `Cats ${version} 已是最新版本。`,
62
- availableTitle: '有可用更新',
63
- availableBody: (version) => `Cats ${version} 已可下載。請開啟設定進行更新。`,
64
- failedTitle: '更新檢查失敗',
65
- previewSuffix: '(預覽)',
66
- },
67
- };
68
- const NOTHING_TO_ANNOUNCE = {
69
- notification: null,
70
- fallbackNavigatePath: null,
71
- };
72
- /**
73
- * Decides what a finished check should tell the user, and how.
74
- *
75
- * A result is announced only when the user cannot already see it:
76
- *
77
- * - `settings` never announces. The section shows the state directly and
78
- * routes manual results through the shared toast system, so a native
79
- * notification would report the same check twice.
80
- * - `tray` announces up-to-date, available, and failed. The menu closes on
81
- * click, so without this the command looks like it did nothing.
82
- * - `startup` announces only an available update. The user did not ask for
83
- * that check, so an up-to-date or offline result has nothing to say and
84
- * would nag on every launch.
85
- */
86
- export function resolveDesktopUpdateAnnouncement(input) {
87
- const { origin, snapshot, notificationsSupported } = input;
88
- if (origin === 'settings') {
89
- return NOTHING_TO_ANNOUNCE;
90
- }
91
- // A build that cannot check cannot have produced a result worth reporting,
92
- // and must never imply that an update path exists.
93
- if (!snapshot.capability.canCheck) {
94
- return NOTHING_TO_ANNOUNCE;
95
- }
96
- const locale = normalizeDesktopTrayLocale(input.locale);
97
- const notification = resolveNotification(origin, snapshot, locale);
98
- if (notification === null) {
99
- return NOTHING_TO_ANNOUNCE;
100
- }
101
- // SPEC-111 section 5.5: a tray-originated result always becomes visible, so
102
- // it falls back to opening Settings. A startup check was never requested, so
103
- // pulling a window forward unasked would be worse than staying quiet.
104
- const fallbackNavigatePath = origin === 'tray' ? DESKTOP_UPDATE_SETTINGS_PATH : null;
105
- return {
106
- notification: notificationsSupported ? notification : null,
107
- fallbackNavigatePath,
108
- };
109
- }
110
- function resolveNotification(origin, snapshot, locale) {
111
- const copy = NOTIFICATION_COPY[locale];
112
- // A preview self-updates from an unsigned prerelease feed. A tester who
113
- // cannot tell that apart from a supported release cannot report usefully.
114
- const suffix = snapshot.capability.distribution === 'preview_packaged'
115
- ? copy.previewSuffix
116
- : '';
117
- const announce = (title, body) => ({
118
- title: `${title}${suffix}`,
119
- body,
120
- navigatePath: DESKTOP_UPDATE_SETTINGS_PATH,
121
- });
122
- switch (snapshot.status) {
123
- case 'up_to_date':
124
- return origin === 'tray'
125
- ? announce(copy.upToDateTitle, copy.upToDateBody(snapshot.currentVersion))
126
- : null;
127
- case 'update_available':
128
- // The manager rejects an available update without a version, so this
129
- // guard is only here to keep a version-less body unreachable.
130
- return snapshot.availableVersion === null
131
- ? null
132
- : announce(copy.availableTitle, copy.availableBody(snapshot.availableVersion));
133
- case 'failed':
134
- return origin === 'tray' && snapshot.error !== null
135
- ? announce(copy.failedTitle, DESKTOP_UPDATE_NOTIFICATION_ERROR_COPY[locale][snapshot.error.code])
136
- : null;
137
- default:
138
- // Every other status is either in flight or the result of an action the
139
- // user took in Settings, where the surface already reports it.
140
- return null;
141
- }
142
- }
143
- //# sourceMappingURL=updateNotifications.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"updateNotifications.js","sourceRoot":"","sources":["../../desktop/host/updateNotifications.ts"],"names":[],"mappings":"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"}