agor-live 0.21.2 → 0.22.0

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 (431) hide show
  1. package/dist/cli/commands/branch/env/restart.js +1 -1
  2. package/dist/cli/commands/branch/env/start.js +1 -1
  3. package/dist/cli/commands/branch/env/stop.js +1 -1
  4. package/dist/core/api/index.cjs +5 -1
  5. package/dist/core/api/index.d.ts +6 -1
  6. package/dist/core/api/index.d.ts.map +1 -1
  7. package/dist/core/api/index.js +5 -1
  8. package/dist/core/claude/index.cjs +162 -14
  9. package/dist/core/claude/index.js +166 -18
  10. package/dist/core/client/index.cjs +43 -3
  11. package/dist/core/client/index.js +37 -3
  12. package/dist/core/config/browser.cjs +2 -2
  13. package/dist/core/config/browser.js +2 -2
  14. package/dist/core/config/config-manager.d.ts.map +1 -1
  15. package/dist/core/config/constants.d.ts +1 -1
  16. package/dist/core/config/index.cjs +174 -20
  17. package/dist/core/config/index.js +178 -24
  18. package/dist/core/config/types.d.ts +8 -0
  19. package/dist/core/config/types.d.ts.map +1 -1
  20. package/dist/core/db/index.cjs +495 -86
  21. package/dist/core/db/index.js +482 -75
  22. package/dist/core/db/repositories/artifacts.d.ts.map +1 -1
  23. package/dist/core/db/repositories/branches.d.ts +13 -1
  24. package/dist/core/db/repositories/branches.d.ts.map +1 -1
  25. package/dist/core/db/repositories/gateway-channels.d.ts.map +1 -1
  26. package/dist/core/db/repositories/index.d.ts +1 -0
  27. package/dist/core/db/repositories/index.d.ts.map +1 -1
  28. package/dist/core/db/repositories/session-relationships.d.ts +30 -0
  29. package/dist/core/db/repositories/session-relationships.d.ts.map +1 -0
  30. package/dist/core/db/repositories/users.d.ts +11 -0
  31. package/dist/core/db/repositories/users.d.ts.map +1 -1
  32. package/dist/core/db/schema.d.ts +421 -4
  33. package/dist/core/db/schema.d.ts.map +1 -1
  34. package/dist/core/db/schema.postgres.d.ts +226 -2
  35. package/dist/core/db/schema.postgres.d.ts.map +1 -1
  36. package/dist/core/db/schema.sqlite.d.ts +228 -2
  37. package/dist/core/db/schema.sqlite.d.ts.map +1 -1
  38. package/dist/core/drizzle/postgres/0050_artifact_source_session.sql +3 -0
  39. package/dist/core/drizzle/postgres/0051_session_relationships.sql +26 -0
  40. package/dist/core/drizzle/postgres/meta/_journal.json +14 -0
  41. package/dist/core/drizzle/sqlite/0059_artifact_source_session.sql +2 -0
  42. package/dist/core/drizzle/sqlite/0060_session_relationships.sql +23 -0
  43. package/dist/core/drizzle/sqlite/meta/_journal.json +14 -0
  44. package/dist/core/gateway/connector-registry.d.ts.map +1 -1
  45. package/dist/core/gateway/connector.d.ts +22 -0
  46. package/dist/core/gateway/connector.d.ts.map +1 -1
  47. package/dist/core/gateway/connectors/slack.d.ts +35 -3
  48. package/dist/core/gateway/connectors/slack.d.ts.map +1 -1
  49. package/dist/core/gateway/connectors/teams.d.ts +107 -0
  50. package/dist/core/gateway/connectors/teams.d.ts.map +1 -0
  51. package/dist/core/gateway/context.d.ts.map +1 -1
  52. package/dist/core/gateway/index.cjs +552 -52
  53. package/dist/core/gateway/index.d.ts +3 -2
  54. package/dist/core/gateway/index.d.ts.map +1 -1
  55. package/dist/core/gateway/index.js +544 -52
  56. package/dist/core/gateway/system-message.d.ts +21 -0
  57. package/dist/core/gateway/system-message.d.ts.map +1 -1
  58. package/dist/core/index.cjs +616 -127
  59. package/dist/core/index.js +597 -116
  60. package/dist/core/mcp/index.cjs +146 -9
  61. package/dist/core/mcp/index.js +146 -9
  62. package/dist/core/mcp/template-resolver.d.ts.map +1 -1
  63. package/dist/core/seed/index.cjs +375 -59
  64. package/dist/core/seed/index.js +378 -62
  65. package/dist/core/sessions/index.cjs +19 -0
  66. package/dist/core/sessions/index.js +19 -0
  67. package/dist/core/templates/agor-system-prompt.md +21 -53
  68. package/dist/core/templates/session-context.cjs +2 -73
  69. package/dist/core/templates/session-context.d.ts +9 -53
  70. package/dist/core/templates/session-context.d.ts.map +1 -1
  71. package/dist/core/templates/session-context.js +2 -72
  72. package/dist/core/tools/mcp/jwt-auth.cjs +2 -20
  73. package/dist/core/tools/mcp/jwt-auth.d.ts.map +1 -1
  74. package/dist/core/tools/mcp/jwt-auth.js +2 -20
  75. package/dist/core/tools/mcp/oauth-mcp-transport.cjs +2 -15
  76. package/dist/core/tools/mcp/oauth-mcp-transport.d.ts.map +1 -1
  77. package/dist/core/tools/mcp/oauth-mcp-transport.js +2 -15
  78. package/dist/core/tools/mcp/oauth-refresh.cjs +167 -19
  79. package/dist/core/tools/mcp/oauth-refresh.js +167 -19
  80. package/dist/core/types/artifact.d.ts +5 -1
  81. package/dist/core/types/artifact.d.ts.map +1 -1
  82. package/dist/core/types/branch.d.ts +14 -0
  83. package/dist/core/types/branch.d.ts.map +1 -1
  84. package/dist/core/types/gateway.d.ts +1 -1
  85. package/dist/core/types/gateway.d.ts.map +1 -1
  86. package/dist/core/types/id.d.ts +1 -0
  87. package/dist/core/types/id.d.ts.map +1 -1
  88. package/dist/core/types/index.cjs +36 -0
  89. package/dist/core/types/index.js +30 -0
  90. package/dist/core/types/session.d.ts +65 -1
  91. package/dist/core/types/session.d.ts.map +1 -1
  92. package/dist/core/types/task.d.ts +9 -0
  93. package/dist/core/types/task.d.ts.map +1 -1
  94. package/dist/core/unix/index.cjs +371 -55
  95. package/dist/core/unix/index.js +374 -58
  96. package/dist/core/unix/unix-integration-service.d.ts +10 -7
  97. package/dist/core/unix/unix-integration-service.d.ts.map +1 -1
  98. package/dist/core/utils/permission-mode-mapper.cjs +19 -0
  99. package/dist/core/utils/permission-mode-mapper.js +19 -0
  100. package/dist/daemon/declarations.d.ts +7 -0
  101. package/dist/daemon/declarations.d.ts.map +1 -1
  102. package/dist/daemon/hooks/gateway-route.d.ts.map +1 -1
  103. package/dist/daemon/hooks/gateway-route.js +53 -1
  104. package/dist/daemon/index.js +3760 -2107
  105. package/dist/daemon/main.js +3760 -2107
  106. package/dist/daemon/mcp/server.js +155 -17
  107. package/dist/daemon/mcp/tools/analytics.js +6 -7
  108. package/dist/daemon/mcp/tools/artifacts.d.ts.map +1 -1
  109. package/dist/daemon/mcp/tools/artifacts.js +7 -7
  110. package/dist/daemon/mcp/tools/boards.js +6 -7
  111. package/dist/daemon/mcp/tools/branches.js +6 -7
  112. package/dist/daemon/mcp/tools/card-types.js +6 -7
  113. package/dist/daemon/mcp/tools/cards.js +6 -7
  114. package/dist/daemon/mcp/tools/environment.d.ts.map +1 -1
  115. package/dist/daemon/mcp/tools/environment.js +19 -12
  116. package/dist/daemon/mcp/tools/knowledge.js +6 -7
  117. package/dist/daemon/mcp/tools/mcp-servers.js +6 -7
  118. package/dist/daemon/mcp/tools/messages.js +6 -7
  119. package/dist/daemon/mcp/tools/proxies.js +6 -7
  120. package/dist/daemon/mcp/tools/repos.js +6 -7
  121. package/dist/daemon/mcp/tools/schedules.js +6 -7
  122. package/dist/daemon/mcp/tools/search.js +6 -7
  123. package/dist/daemon/mcp/tools/sessions.d.ts.map +1 -1
  124. package/dist/daemon/mcp/tools/sessions.js +140 -11
  125. package/dist/daemon/mcp/tools/tasks.js +6 -7
  126. package/dist/daemon/mcp/tools/users.js +6 -7
  127. package/dist/daemon/mcp/tools/widgets.js +7 -8
  128. package/dist/daemon/register-hooks.d.ts +5 -1
  129. package/dist/daemon/register-hooks.d.ts.map +1 -1
  130. package/dist/daemon/register-hooks.js +404 -179
  131. package/dist/daemon/register-routes.d.ts.map +1 -1
  132. package/dist/daemon/register-routes.js +360 -162
  133. package/dist/daemon/register-services.d.ts.map +1 -1
  134. package/dist/daemon/register-services.js +1928 -671
  135. package/dist/daemon/services/artifacts.d.ts +10 -1
  136. package/dist/daemon/services/artifacts.d.ts.map +1 -1
  137. package/dist/daemon/services/artifacts.js +25 -1
  138. package/dist/daemon/services/branches.d.ts +11 -1
  139. package/dist/daemon/services/branches.d.ts.map +1 -1
  140. package/dist/daemon/services/branches.js +470 -184
  141. package/dist/daemon/services/claude-models.js +879 -339
  142. package/dist/daemon/services/gateway.d.ts +58 -2
  143. package/dist/daemon/services/gateway.d.ts.map +1 -1
  144. package/dist/daemon/services/gateway.js +590 -47
  145. package/dist/daemon/services/groups.d.ts +2 -0
  146. package/dist/daemon/services/groups.d.ts.map +1 -1
  147. package/dist/daemon/services/groups.js +56 -0
  148. package/dist/daemon/services/mcp-servers.d.ts.map +1 -1
  149. package/dist/daemon/services/mcp-servers.js +0 -6
  150. package/dist/daemon/services/scheduler.d.ts.map +1 -1
  151. package/dist/daemon/services/scheduler.js +6 -2
  152. package/dist/daemon/services/sessions.d.ts +11 -3
  153. package/dist/daemon/services/sessions.d.ts.map +1 -1
  154. package/dist/daemon/services/sessions.js +68 -7
  155. package/dist/daemon/services/tasks.d.ts +13 -2
  156. package/dist/daemon/services/tasks.d.ts.map +1 -1
  157. package/dist/daemon/services/tasks.js +42 -26
  158. package/dist/daemon/startup.js +6 -2
  159. package/dist/daemon/utils/session-stop.d.ts +43 -0
  160. package/dist/daemon/utils/session-stop.d.ts.map +1 -0
  161. package/dist/daemon/utils/session-stop.js +102 -0
  162. package/dist/daemon/utils/session-task-state.d.ts +7 -2
  163. package/dist/daemon/utils/session-task-state.d.ts.map +1 -1
  164. package/dist/daemon/utils/session-task-state.js +9 -3
  165. package/dist/daemon/utils/session-tasks.d.ts +4 -4
  166. package/dist/daemon/utils/session-tasks.d.ts.map +1 -1
  167. package/dist/daemon/utils/session-tasks.js +4 -8
  168. package/dist/executor/commands/environment.d.ts +13 -0
  169. package/dist/executor/commands/environment.d.ts.map +1 -0
  170. package/dist/executor/commands/environment.js +287 -0
  171. package/dist/executor/commands/index.d.ts.map +1 -1
  172. package/dist/executor/commands/index.js +5 -1
  173. package/dist/executor/commands/unix.d.ts +8 -1
  174. package/dist/executor/commands/unix.d.ts.map +1 -1
  175. package/dist/executor/commands/unix.js +157 -2
  176. package/dist/executor/payload-types.d.ts +201 -5
  177. package/dist/executor/payload-types.d.ts.map +1 -1
  178. package/dist/executor/payload-types.js +98 -0
  179. package/dist/executor/sdk-handlers/base/mcp-scoping.d.ts.map +1 -1
  180. package/dist/executor/sdk-handlers/base/mcp-scoping.js +14 -0
  181. package/dist/executor/sdk-handlers/claude/message-processor.d.ts.map +1 -1
  182. package/dist/executor/sdk-handlers/claude/message-processor.js +0 -1
  183. package/dist/executor/sdk-handlers/claude/query-builder.d.ts +1 -0
  184. package/dist/executor/sdk-handlers/claude/query-builder.d.ts.map +1 -1
  185. package/dist/executor/sdk-handlers/claude/query-builder.js +91 -39
  186. package/dist/executor/sdk-handlers/codex/prompt-service.d.ts +12 -5
  187. package/dist/executor/sdk-handlers/codex/prompt-service.d.ts.map +1 -1
  188. package/dist/executor/sdk-handlers/codex/prompt-service.js +72 -30
  189. package/dist/executor/sdk-handlers/copilot/prompt-service.d.ts +2 -4
  190. package/dist/executor/sdk-handlers/copilot/prompt-service.d.ts.map +1 -1
  191. package/dist/executor/sdk-handlers/copilot/prompt-service.js +4 -13
  192. package/dist/executor/sdk-handlers/gemini/prompt-service.d.ts +2 -4
  193. package/dist/executor/sdk-handlers/gemini/prompt-service.d.ts.map +1 -1
  194. package/dist/executor/sdk-handlers/gemini/prompt-service.js +4 -13
  195. package/dist/ui/assets/App-DcEY8Ota.js +3 -0
  196. package/dist/ui/assets/App-DcEY8Ota.js.gz +0 -0
  197. package/dist/ui/assets/{ArtifactConsentModal-ParNk5kW.js → ArtifactConsentModal-CiCbK9iv.js} +1 -1
  198. package/dist/ui/assets/ArtifactConsentModal-CiCbK9iv.js.gz +0 -0
  199. package/dist/ui/assets/ArtifactFullscreenPage-CfsTEGKd.js +9 -0
  200. package/dist/ui/assets/ArtifactFullscreenPage-CfsTEGKd.js.gz +0 -0
  201. package/dist/ui/assets/AutocompleteTextarea-BAFFH_5e.js +18 -0
  202. package/dist/ui/assets/AutocompleteTextarea-BAFFH_5e.js.gz +0 -0
  203. package/dist/ui/assets/BoardObjectNodes-D-O6bZIG.js +34 -0
  204. package/dist/ui/assets/BoardObjectNodes-D-O6bZIG.js.gz +0 -0
  205. package/dist/ui/assets/{CodeEditor.inner-D51Z_CLQ.js → CodeEditor.inner-DBgsP4tn.js} +2 -2
  206. package/dist/ui/assets/CodeEditor.inner-DBgsP4tn.js.gz +0 -0
  207. package/dist/ui/assets/ConversationView-CUWR0gR6.js +1 -0
  208. package/dist/ui/assets/ConversationView-CUWR0gR6.js.gz +0 -0
  209. package/dist/ui/assets/KnowledgePage-B2bzlXfn.js +24 -0
  210. package/dist/ui/assets/KnowledgePage-B2bzlXfn.js.gz +0 -0
  211. package/dist/ui/assets/MarketingScreenshotPage-9Qd7eZsm.css +1 -0
  212. package/dist/ui/assets/MarketingScreenshotPage-zv5RUCuV.js +143 -0
  213. package/dist/ui/assets/MarketingScreenshotPage-zv5RUCuV.js.gz +0 -0
  214. package/dist/ui/assets/MobileApp-VgVnsnsN.js +1 -0
  215. package/dist/ui/assets/MobileApp-VgVnsnsN.js.gz +0 -0
  216. package/dist/ui/assets/SessionCanvas-f1-1Gbcw.js +20 -0
  217. package/dist/ui/assets/SessionCanvas-f1-1Gbcw.js.gz +0 -0
  218. package/dist/ui/assets/{App-BAdBsEnV.css → SessionCanvas-mEmYGZhC.css} +1 -1
  219. package/dist/ui/assets/SessionCanvas-mEmYGZhC.css.gz +0 -0
  220. package/dist/ui/assets/{StreamdownDemoPage-B9wbgp2s.js → StreamdownDemoPage-wzWaqWwr.js} +1 -1
  221. package/dist/ui/assets/StreamdownDemoPage-wzWaqWwr.js.gz +0 -0
  222. package/dist/ui/assets/{ThemeSwitcher-ubn6IOz9.js → ThemeSwitcher-Dly2y9pi.js} +1 -1
  223. package/dist/ui/assets/ThemeSwitcher-Dly2y9pi.js.gz +0 -0
  224. package/dist/ui/assets/antd-CfbbHJOz.js +401 -0
  225. package/dist/ui/assets/antd-CfbbHJOz.js.gz +0 -0
  226. package/dist/ui/assets/architecture-U656AL7Q-CykGFbQU.js +1 -0
  227. package/dist/ui/assets/{architectureDiagram-VXUJARFQ-ChmZt3zk.js → architectureDiagram-VXUJARFQ-C8HXAenz.js} +1 -1
  228. package/dist/ui/assets/architectureDiagram-VXUJARFQ-C8HXAenz.js.gz +0 -0
  229. package/dist/ui/assets/{blockDiagram-VD42YOAC-CzGHAHao.js → blockDiagram-VD42YOAC-BhZaEN19.js} +1 -1
  230. package/dist/ui/assets/blockDiagram-VD42YOAC-BhZaEN19.js.gz +0 -0
  231. package/dist/ui/assets/{c4Diagram-YG6GDRKO-DscJyaWN.js → c4Diagram-YG6GDRKO-Dk_UH-sY.js} +1 -1
  232. package/dist/ui/assets/c4Diagram-YG6GDRKO-Dk_UH-sY.js.gz +0 -0
  233. package/dist/ui/assets/channel-D6_nUWlW.js +1 -0
  234. package/dist/ui/assets/{chunk-4BX2VUAB-DoWpTvP8.js → chunk-4BX2VUAB-XprbG2TG.js} +1 -1
  235. package/dist/ui/assets/chunk-55IACEB6-ByzqIgSb.js +1 -0
  236. package/dist/ui/assets/{chunk-ABZYJK2D-RzDCrjE6.js → chunk-ABZYJK2D-BJcrryHK.js} +1 -1
  237. package/dist/ui/assets/chunk-ABZYJK2D-BJcrryHK.js.gz +0 -0
  238. package/dist/ui/assets/{chunk-AGHRB4JF-jidCS5Of.js → chunk-AGHRB4JF-DvxmfbM0.js} +1 -1
  239. package/dist/ui/assets/chunk-AGHRB4JF-DvxmfbM0.js.gz +0 -0
  240. package/dist/ui/assets/{chunk-ATLVNIR6-BEIIfJtC.js → chunk-ATLVNIR6-DbeJ0OrR.js} +1 -1
  241. package/dist/ui/assets/chunk-ATLVNIR6-DbeJ0OrR.js.gz +0 -0
  242. package/dist/ui/assets/{chunk-B4BG7PRW-B8b6dQQ2.js → chunk-B4BG7PRW-C53q2ggf.js} +1 -1
  243. package/dist/ui/assets/chunk-B4BG7PRW-C53q2ggf.js.gz +0 -0
  244. package/dist/ui/assets/{chunk-CVBHYZKI-D-mQAfrk.js → chunk-CVBHYZKI-B3EBSlb3.js} +1 -1
  245. package/dist/ui/assets/{chunk-DI55MBZ5-BfATX3V8.js → chunk-DI55MBZ5-vIyNEQN-.js} +1 -1
  246. package/dist/ui/assets/chunk-DI55MBZ5-vIyNEQN-.js.gz +0 -0
  247. package/dist/ui/assets/chunk-EXTU4WIE-B3ObkuOm.js +1 -0
  248. package/dist/ui/assets/{chunk-FMBD7UC4-fqXscNvc.js → chunk-FMBD7UC4-rddmfK-Z.js} +1 -1
  249. package/dist/ui/assets/{chunk-HN2XXSSU-BCHvD80g.js → chunk-HN2XXSSU-Dttqcg3b.js} +1 -1
  250. package/dist/ui/assets/chunk-HN2XXSSU-Dttqcg3b.js.gz +0 -0
  251. package/dist/ui/assets/{chunk-JA3XYJ7Z-Cp6dqHnY.js → chunk-JA3XYJ7Z-DbNDev3D.js} +1 -1
  252. package/dist/ui/assets/chunk-JA3XYJ7Z-DbNDev3D.js.gz +0 -0
  253. package/dist/ui/assets/{chunk-JZLCHNYA-cKMooY3y.js → chunk-JZLCHNYA-EUmx2y4H.js} +1 -1
  254. package/dist/ui/assets/chunk-JZLCHNYA-EUmx2y4H.js.gz +0 -0
  255. package/dist/ui/assets/{chunk-MI3HLSF2-BlzO5wOE.js → chunk-MI3HLSF2-65n9Mkyc.js} +1 -1
  256. package/dist/ui/assets/chunk-MI3HLSF2-65n9Mkyc.js.gz +0 -0
  257. package/dist/ui/assets/chunk-N4CR4FBY-mv5koXqW.js +2 -0
  258. package/dist/ui/assets/chunk-N4CR4FBY-mv5koXqW.js.gz +0 -0
  259. package/dist/ui/assets/{chunk-QN33PNHL-DIHGQ_pd.js → chunk-QN33PNHL-DsRKK6NR.js} +1 -1
  260. package/dist/ui/assets/{chunk-QXUST7PY-C9l0muI0.js → chunk-QXUST7PY-BCYnMiS3.js} +1 -1
  261. package/dist/ui/assets/chunk-QXUST7PY-BCYnMiS3.js.gz +0 -0
  262. package/dist/ui/assets/chunk-QZHKN3VN-HucAw4xW.js +1 -0
  263. package/dist/ui/assets/{chunk-S3R3BYOJ-VJiLzt2o.js → chunk-S3R3BYOJ-CWMEa9Dc.js} +1 -1
  264. package/dist/ui/assets/chunk-S3R3BYOJ-CWMEa9Dc.js.gz +0 -0
  265. package/dist/ui/assets/{chunk-TZMSLE5B-DZwI0C_2.js → chunk-TZMSLE5B-BuQUQcTr.js} +1 -1
  266. package/dist/ui/assets/chunk-TZMSLE5B-BuQUQcTr.js.gz +0 -0
  267. package/dist/ui/assets/classDiagram-2ON5EDUG-CUT3rPTB.js +1 -0
  268. package/dist/ui/assets/classDiagram-v2-WZHVMYZB-CUT3rPTB.js +1 -0
  269. package/dist/ui/assets/{cose-bilkent-S5V4N54A-Ipik-oSD.js → cose-bilkent-S5V4N54A-CnPB3ARO.js} +1 -1
  270. package/dist/ui/assets/cose-bilkent-S5V4N54A-CnPB3ARO.js.gz +0 -0
  271. package/dist/ui/assets/cursor-QEb7m-rN.png +0 -0
  272. package/dist/ui/assets/{dagre-6UL2VRFP-BDpyWQnh.js → dagre-6UL2VRFP-DhS-k_Se.js} +1 -1
  273. package/dist/ui/assets/dagre-6UL2VRFP-DhS-k_Se.js.gz +0 -0
  274. package/dist/ui/assets/{dagre-CgA4KhUX.js → dagre-KgLoHEuy.js} +1 -1
  275. package/dist/ui/assets/dagre-KgLoHEuy.js.gz +0 -0
  276. package/dist/ui/assets/{diagram-PSM6KHXK-B4GRzxLJ.js → diagram-PSM6KHXK-BZg3MJmb.js} +1 -1
  277. package/dist/ui/assets/diagram-PSM6KHXK-BZg3MJmb.js.gz +0 -0
  278. package/dist/ui/assets/{diagram-QEK2KX5R-BWPW28XI.js → diagram-QEK2KX5R-BPCitvbo.js} +1 -1
  279. package/dist/ui/assets/diagram-QEK2KX5R-BPCitvbo.js.gz +0 -0
  280. package/dist/ui/assets/{diagram-S2PKOQOG-BIHhcGoV.js → diagram-S2PKOQOG-NW4uK6sx.js} +1 -1
  281. package/dist/ui/assets/diagram-S2PKOQOG-NW4uK6sx.js.gz +0 -0
  282. package/dist/ui/assets/{editor-C-HJ7Yw0.js → editor-CzFWIUw2.js} +1 -1
  283. package/dist/ui/assets/editor-CzFWIUw2.js.gz +0 -0
  284. package/dist/ui/assets/{emoji-D8F6B62m.js → emoji-Dkz4Zzv_.js} +1 -1
  285. package/dist/ui/assets/emoji-Dkz4Zzv_.js.gz +0 -0
  286. package/dist/ui/assets/{erDiagram-Q2GNP2WA-ubTaAFcK.js → erDiagram-Q2GNP2WA-me1fboaf.js} +1 -1
  287. package/dist/ui/assets/erDiagram-Q2GNP2WA-me1fboaf.js.gz +0 -0
  288. package/dist/ui/assets/{flowDiagram-NV44I4VS-BHLCTYjI.js → flowDiagram-NV44I4VS-DzE8dGsh.js} +1 -1
  289. package/dist/ui/assets/flowDiagram-NV44I4VS-DzE8dGsh.js.gz +0 -0
  290. package/dist/ui/assets/{ganttDiagram-LVOFAZNH-ClC3pay1.js → ganttDiagram-LVOFAZNH-CFQD09Mi.js} +2 -2
  291. package/dist/ui/assets/ganttDiagram-LVOFAZNH-CFQD09Mi.js.gz +0 -0
  292. package/dist/ui/assets/{gitGraph-F6HP7TQM-DghoobE6.js → gitGraph-F6HP7TQM-CfFE_uAC.js} +1 -1
  293. package/dist/ui/assets/{gitGraphDiagram-NY62KEGX-Clqpiswu.js → gitGraphDiagram-NY62KEGX-CaVoxU4C.js} +1 -1
  294. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-CaVoxU4C.js.gz +0 -0
  295. package/dist/ui/assets/index-BN5_Qq7R.js +324 -0
  296. package/dist/ui/assets/index-BN5_Qq7R.js.gz +0 -0
  297. package/dist/ui/assets/index-DxuPq13l.css +1 -0
  298. package/dist/ui/assets/index-DxuPq13l.css.gz +0 -0
  299. package/dist/ui/assets/{info-NVLQJR56-0ZldEXPQ.js → info-NVLQJR56-i_xHYg3f.js} +1 -1
  300. package/dist/ui/assets/{infoDiagram-ER5ION4S-DMmPX-il.js → infoDiagram-ER5ION4S-2NL93b78.js} +1 -1
  301. package/dist/ui/assets/{journeyDiagram-XKPGCS4Q-CrVickA2.js → journeyDiagram-XKPGCS4Q-CZF-2DHU.js} +1 -1
  302. package/dist/ui/assets/journeyDiagram-XKPGCS4Q-CZF-2DHU.js.gz +0 -0
  303. package/dist/ui/assets/{kanban-definition-3W4ZIXB7-C_BsdHYL.js → kanban-definition-3W4ZIXB7-CfvJIOny.js} +1 -1
  304. package/dist/ui/assets/kanban-definition-3W4ZIXB7-CfvJIOny.js.gz +0 -0
  305. package/dist/ui/assets/{line-CfBP7Yic.js → line-DDv8kOJk.js} +1 -1
  306. package/dist/ui/assets/{linear-BsjageUB.js → linear-Daef-l29.js} +1 -1
  307. package/dist/ui/assets/linear-Daef-l29.js.gz +0 -0
  308. package/dist/ui/assets/{mermaid-parser.core-DZdP-NFq.js → mermaid-parser.core-CdK9QgYV.js} +2 -2
  309. package/dist/ui/assets/mermaid-parser.core-CdK9QgYV.js.gz +0 -0
  310. package/dist/ui/assets/{mermaid.core-TNrI0pHG.js → mermaid.core-D6GS9mU-.js} +3 -3
  311. package/dist/ui/assets/mermaid.core-D6GS9mU-.js.gz +0 -0
  312. package/dist/ui/assets/message-SqLqNYcv.js +36 -0
  313. package/dist/ui/assets/message-SqLqNYcv.js.gz +0 -0
  314. package/dist/ui/assets/{mindmap-definition-VGOIOE7T-BbmaUjMY.js → mindmap-definition-VGOIOE7T-Cb3QMflX.js} +1 -1
  315. package/dist/ui/assets/mindmap-definition-VGOIOE7T-Cb3QMflX.js.gz +0 -0
  316. package/dist/ui/assets/{packet-BFZMPI3H-D_ZhkXuT.js → packet-BFZMPI3H-Bm2uwz4i.js} +1 -1
  317. package/dist/ui/assets/{particles-Dv28pjOd.js → particles-DsJFOarW.js} +1 -1
  318. package/dist/ui/assets/particles-DsJFOarW.js.gz +0 -0
  319. package/dist/ui/assets/{pie-7BOR55EZ-Dn0Q3qNx.js → pie-7BOR55EZ-5i17tVnF.js} +1 -1
  320. package/dist/ui/assets/{pieDiagram-ADFJNKIX-BbyjfYu8.js → pieDiagram-ADFJNKIX-BxIwQWvw.js} +1 -1
  321. package/dist/ui/assets/pieDiagram-ADFJNKIX-BxIwQWvw.js.gz +0 -0
  322. package/dist/ui/assets/{quadrantDiagram-AYHSOK5B-Bc3GqMKz.js → quadrantDiagram-AYHSOK5B-B5HPe4ga.js} +1 -1
  323. package/dist/ui/assets/quadrantDiagram-AYHSOK5B-B5HPe4ga.js.gz +0 -0
  324. package/dist/ui/assets/{radar-NHE76QYJ-BHwoAy1q.js → radar-NHE76QYJ-BTn-tq0k.js} +1 -1
  325. package/dist/ui/assets/{reactflow-BVYPxNhc.js → reactflow-Bf74ngoo.js} +2 -2
  326. package/dist/ui/assets/reactflow-Bf74ngoo.js.gz +0 -0
  327. package/dist/ui/assets/{requirementDiagram-UZGBJVZJ-BQaKKL09.js → requirementDiagram-UZGBJVZJ-YfI6llkX.js} +1 -1
  328. package/dist/ui/assets/requirementDiagram-UZGBJVZJ-YfI6llkX.js.gz +0 -0
  329. package/dist/ui/assets/{sandpack-BQW_FQ7G.js → sandpack-D7koO5op.js} +1 -1
  330. package/dist/ui/assets/sandpack-D7koO5op.js.gz +0 -0
  331. package/dist/ui/assets/{sankeyDiagram-TZEHDZUN-DiJvDvhb.js → sankeyDiagram-TZEHDZUN-DOk_B10B.js} +1 -1
  332. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-DOk_B10B.js.gz +0 -0
  333. package/dist/ui/assets/{sequenceDiagram-WL72ISMW-Dw32824o.js → sequenceDiagram-WL72ISMW-DAe4Um17.js} +1 -1
  334. package/dist/ui/assets/sequenceDiagram-WL72ISMW-DAe4Um17.js.gz +0 -0
  335. package/dist/ui/assets/{stateDiagram-FKZM4ZOC-BCOpNdHV.js → stateDiagram-FKZM4ZOC-CCesDu_C.js} +1 -1
  336. package/dist/ui/assets/stateDiagram-FKZM4ZOC-CCesDu_C.js.gz +0 -0
  337. package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-CMlIrsoO.js +1 -0
  338. package/dist/ui/assets/{syntax-VJrU5BEu.js → syntax-C-M-8jOU.js} +1 -1
  339. package/dist/ui/assets/syntax-C-M-8jOU.js.gz +0 -0
  340. package/dist/ui/assets/{theme-DZtFA8b4.js → theme-BQZdiqwv.js} +1 -1
  341. package/dist/ui/assets/{timeline-definition-IT6M3QCI-Jh_WZzXv.js → timeline-definition-IT6M3QCI-D6P5txjT.js} +1 -1
  342. package/dist/ui/assets/timeline-definition-IT6M3QCI-D6P5txjT.js.gz +0 -0
  343. package/dist/ui/assets/{treemap-KMMF4GRG-CPYIgjxE.js → treemap-KMMF4GRG-Bitm3gy4.js} +1 -1
  344. package/dist/ui/assets/{knowledgeRoutes-CivaUqha.js → useUserLocalStorage-Ckb8HsIw.js} +1 -1
  345. package/dist/ui/assets/useUserLocalStorage-Ckb8HsIw.js.gz +0 -0
  346. package/dist/ui/assets/{xychartDiagram-PRI3JC2R-CERc7Rdb.js → xychartDiagram-PRI3JC2R-CsybjUbd.js} +1 -1
  347. package/dist/ui/assets/xychartDiagram-PRI3JC2R-CsybjUbd.js.gz +0 -0
  348. package/dist/ui/index.html +13 -11
  349. package/dist/ui/index.html.gz +0 -0
  350. package/package.json +10 -9
  351. package/dist/ui/assets/App-9s2WHM6S.js +0 -22
  352. package/dist/ui/assets/App-9s2WHM6S.js.gz +0 -0
  353. package/dist/ui/assets/App-BAdBsEnV.css.gz +0 -0
  354. package/dist/ui/assets/ArtifactConsentModal-ParNk5kW.js.gz +0 -0
  355. package/dist/ui/assets/ArtifactFullscreenPage-VQxLMCiN.js +0 -9
  356. package/dist/ui/assets/ArtifactFullscreenPage-VQxLMCiN.js.gz +0 -0
  357. package/dist/ui/assets/AutocompleteTextarea-3RchrIgk.js +0 -18
  358. package/dist/ui/assets/AutocompleteTextarea-3RchrIgk.js.gz +0 -0
  359. package/dist/ui/assets/CodeEditor.inner-D51Z_CLQ.js.gz +0 -0
  360. package/dist/ui/assets/ConversationView-Dyddw2b1.js +0 -34
  361. package/dist/ui/assets/ConversationView-Dyddw2b1.js.gz +0 -0
  362. package/dist/ui/assets/KnowledgePage-CdftslnF.js +0 -24
  363. package/dist/ui/assets/KnowledgePage-CdftslnF.js.gz +0 -0
  364. package/dist/ui/assets/MobileApp-BdBMpnJ1.js +0 -1
  365. package/dist/ui/assets/MobileApp-BdBMpnJ1.js.gz +0 -0
  366. package/dist/ui/assets/StreamdownDemoPage-B9wbgp2s.js.gz +0 -0
  367. package/dist/ui/assets/ThemeSwitcher-ubn6IOz9.js.gz +0 -0
  368. package/dist/ui/assets/antd-C-HfEC4E.js +0 -400
  369. package/dist/ui/assets/antd-C-HfEC4E.js.gz +0 -0
  370. package/dist/ui/assets/architecture-U656AL7Q-dkBewUpN.js +0 -1
  371. package/dist/ui/assets/architectureDiagram-VXUJARFQ-ChmZt3zk.js.gz +0 -0
  372. package/dist/ui/assets/blockDiagram-VD42YOAC-CzGHAHao.js.gz +0 -0
  373. package/dist/ui/assets/c4Diagram-YG6GDRKO-DscJyaWN.js.gz +0 -0
  374. package/dist/ui/assets/channel-DvRQqEqC.js +0 -1
  375. package/dist/ui/assets/chunk-55IACEB6-DojF2pZN.js +0 -1
  376. package/dist/ui/assets/chunk-ABZYJK2D-RzDCrjE6.js.gz +0 -0
  377. package/dist/ui/assets/chunk-AGHRB4JF-jidCS5Of.js.gz +0 -0
  378. package/dist/ui/assets/chunk-ATLVNIR6-BEIIfJtC.js.gz +0 -0
  379. package/dist/ui/assets/chunk-B4BG7PRW-B8b6dQQ2.js.gz +0 -0
  380. package/dist/ui/assets/chunk-DI55MBZ5-BfATX3V8.js.gz +0 -0
  381. package/dist/ui/assets/chunk-EXTU4WIE-BKt6lPJM.js +0 -1
  382. package/dist/ui/assets/chunk-HN2XXSSU-BCHvD80g.js.gz +0 -0
  383. package/dist/ui/assets/chunk-JA3XYJ7Z-Cp6dqHnY.js.gz +0 -0
  384. package/dist/ui/assets/chunk-JZLCHNYA-cKMooY3y.js.gz +0 -0
  385. package/dist/ui/assets/chunk-MI3HLSF2-BlzO5wOE.js.gz +0 -0
  386. package/dist/ui/assets/chunk-N4CR4FBY-pASDorUx.js +0 -2
  387. package/dist/ui/assets/chunk-N4CR4FBY-pASDorUx.js.gz +0 -0
  388. package/dist/ui/assets/chunk-QXUST7PY-C9l0muI0.js.gz +0 -0
  389. package/dist/ui/assets/chunk-QZHKN3VN-CZskCFCf.js +0 -1
  390. package/dist/ui/assets/chunk-S3R3BYOJ-VJiLzt2o.js.gz +0 -0
  391. package/dist/ui/assets/chunk-TZMSLE5B-DZwI0C_2.js.gz +0 -0
  392. package/dist/ui/assets/classDiagram-2ON5EDUG-BFASUbmZ.js +0 -1
  393. package/dist/ui/assets/classDiagram-v2-WZHVMYZB-BFASUbmZ.js +0 -1
  394. package/dist/ui/assets/cose-bilkent-S5V4N54A-Ipik-oSD.js.gz +0 -0
  395. package/dist/ui/assets/dagre-6UL2VRFP-BDpyWQnh.js.gz +0 -0
  396. package/dist/ui/assets/dagre-CgA4KhUX.js.gz +0 -0
  397. package/dist/ui/assets/diagram-PSM6KHXK-B4GRzxLJ.js.gz +0 -0
  398. package/dist/ui/assets/diagram-QEK2KX5R-BWPW28XI.js.gz +0 -0
  399. package/dist/ui/assets/diagram-S2PKOQOG-BIHhcGoV.js.gz +0 -0
  400. package/dist/ui/assets/editor-C-HJ7Yw0.js.gz +0 -0
  401. package/dist/ui/assets/emoji-D8F6B62m.js.gz +0 -0
  402. package/dist/ui/assets/erDiagram-Q2GNP2WA-ubTaAFcK.js.gz +0 -0
  403. package/dist/ui/assets/flowDiagram-NV44I4VS-BHLCTYjI.js.gz +0 -0
  404. package/dist/ui/assets/ganttDiagram-LVOFAZNH-ClC3pay1.js.gz +0 -0
  405. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-Clqpiswu.js.gz +0 -0
  406. package/dist/ui/assets/index-D9OElx9A.css +0 -1
  407. package/dist/ui/assets/index-D9OElx9A.css.gz +0 -0
  408. package/dist/ui/assets/index-DxPuzG7E.js +0 -350
  409. package/dist/ui/assets/index-DxPuzG7E.js.gz +0 -0
  410. package/dist/ui/assets/journeyDiagram-XKPGCS4Q-CrVickA2.js.gz +0 -0
  411. package/dist/ui/assets/kanban-definition-3W4ZIXB7-C_BsdHYL.js.gz +0 -0
  412. package/dist/ui/assets/knowledgeRoutes-CivaUqha.js.gz +0 -0
  413. package/dist/ui/assets/linear-BsjageUB.js.gz +0 -0
  414. package/dist/ui/assets/mermaid-parser.core-DZdP-NFq.js.gz +0 -0
  415. package/dist/ui/assets/mermaid.core-TNrI0pHG.js.gz +0 -0
  416. package/dist/ui/assets/message-BtWWJ9Af.js +0 -36
  417. package/dist/ui/assets/message-BtWWJ9Af.js.gz +0 -0
  418. package/dist/ui/assets/mindmap-definition-VGOIOE7T-BbmaUjMY.js.gz +0 -0
  419. package/dist/ui/assets/particles-Dv28pjOd.js.gz +0 -0
  420. package/dist/ui/assets/pieDiagram-ADFJNKIX-BbyjfYu8.js.gz +0 -0
  421. package/dist/ui/assets/quadrantDiagram-AYHSOK5B-Bc3GqMKz.js.gz +0 -0
  422. package/dist/ui/assets/reactflow-BVYPxNhc.js.gz +0 -0
  423. package/dist/ui/assets/requirementDiagram-UZGBJVZJ-BQaKKL09.js.gz +0 -0
  424. package/dist/ui/assets/sandpack-BQW_FQ7G.js.gz +0 -0
  425. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-DiJvDvhb.js.gz +0 -0
  426. package/dist/ui/assets/sequenceDiagram-WL72ISMW-Dw32824o.js.gz +0 -0
  427. package/dist/ui/assets/stateDiagram-FKZM4ZOC-BCOpNdHV.js.gz +0 -0
  428. package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-Cuqwvgfg.js +0 -1
  429. package/dist/ui/assets/syntax-VJrU5BEu.js.gz +0 -0
  430. package/dist/ui/assets/timeline-definition-IT6M3QCI-Jh_WZzXv.js.gz +0 -0
  431. package/dist/ui/assets/xychartDiagram-PRI3JC2R-CERc7Rdb.js.gz +0 -0
@@ -92,6 +92,31 @@ async function runCommands(commands) {
92
92
  await runCommand(command);
93
93
  }
94
94
  }
95
+ function parseGroupMembers(output) {
96
+ return output.trim().split(',').filter(Boolean);
97
+ }
98
+ async function addUsersToGroup(usernames, groupName) {
99
+ let added = 0;
100
+ for (const username of usernames) {
101
+ const inGroup = await checkCommand(UnixGroupCommands.isUserInGroup(username, groupName));
102
+ if (!inGroup) {
103
+ await runCommand(UnixGroupCommands.addUserToGroup(username, groupName));
104
+ added++;
105
+ }
106
+ }
107
+ return added;
108
+ }
109
+ async function reconcileGroupMembers(groupName, allowedUsernames, logPrefix) {
110
+ const currentMembers = parseGroupMembers(await runCommand(UnixGroupCommands.listGroupMembers(groupName)));
111
+ for (const username of currentMembers) {
112
+ if (allowedUsernames.has(username))
113
+ continue;
114
+ await runCommand(UnixGroupCommands.removeUserFromGroup(username, groupName), {
115
+ ignoreErrors: true,
116
+ });
117
+ console.log(`${logPrefix} Removed stale group member ${username} from ${groupName}`);
118
+ }
119
+ }
95
120
  // ============================================================
96
121
  // REPO SYNC OPERATIONS
97
122
  // ============================================================
@@ -332,6 +357,28 @@ export async function handleUnixSyncBranch(payload, options) {
332
357
  catch (_error) {
333
358
  console.log(`[unix.sync-branch] Could not fetch owners, skipping user sync`);
334
359
  }
360
+ // Fetch and add all users with explicit filesystem access. This expands
361
+ // branch groups plus board owners/groups for board-aligned branches.
362
+ const explicitFsUsernames = new Set(ownerUsernames);
363
+ let fsAccessUsersAdded = 0;
364
+ let explicitFsUsersFetched = false;
365
+ try {
366
+ const fsUsersResult = await client.service(`branches/${branchId}/fs-access-users`).find({});
367
+ const fsUsers = Array.isArray(fsUsersResult) ? fsUsersResult : fsUsersResult.data || [];
368
+ for (const user of fsUsers) {
369
+ if (user.unix_username) {
370
+ explicitFsUsernames.add(user.unix_username);
371
+ }
372
+ }
373
+ explicitFsUsersFetched = true;
374
+ fsAccessUsersAdded = await addUsersToGroup(explicitFsUsernames, groupName);
375
+ if (fsAccessUsersAdded > 0) {
376
+ console.log(`[unix.sync-branch] Added ${fsAccessUsersAdded} explicit filesystem access user(s) to branch group`);
377
+ }
378
+ }
379
+ catch (_error) {
380
+ console.log(`[unix.sync-branch] Could not fetch filesystem access users, skipping`);
381
+ }
335
382
  // When others_fs_access is 'write', non-owner session users need branch group
336
383
  // membership for full read-write access. For 'read' mode, they rely on ACL "others"
337
384
  // bits (o::rX) on the branch directory — adding them to the branch group would
@@ -353,7 +400,7 @@ export async function handleUnixSyncBranch(payload, options) {
353
400
  // Collect unique non-owner unix_usernames from sessions
354
401
  const sessionUsernames = new Set();
355
402
  for (const session of sessions) {
356
- if (session.unix_username && !ownerUsernames.has(session.unix_username)) {
403
+ if (session.unix_username && !explicitFsUsernames.has(session.unix_username)) {
357
404
  sessionUsernames.add(session.unix_username);
358
405
  }
359
406
  }
@@ -370,6 +417,34 @@ export async function handleUnixSyncBranch(payload, options) {
370
417
  console.log(`[unix.sync-branch] Could not fetch sessions for non-owner group sync`);
371
418
  }
372
419
  }
420
+ const allowedBranchMembers = new Set(explicitFsUsernames);
421
+ if (payload.params.daemonUser)
422
+ allowedBranchMembers.add(payload.params.daemonUser);
423
+ if (othersAccess === 'write') {
424
+ try {
425
+ const sessionsResult = await client.service('sessions').find({
426
+ query: {
427
+ branch_id: branchId,
428
+ $select: ['unix_username'],
429
+ $limit: 500,
430
+ },
431
+ });
432
+ const sessions = Array.isArray(sessionsResult) ? sessionsResult : sessionsResult.data || [];
433
+ for (const session of sessions) {
434
+ if (session.unix_username)
435
+ allowedBranchMembers.add(session.unix_username);
436
+ }
437
+ }
438
+ catch {
439
+ // Best-effort stale-member cleanup only.
440
+ }
441
+ }
442
+ if (explicitFsUsersFetched) {
443
+ await reconcileGroupMembers(groupName, allowedBranchMembers, '[unix.sync-branch]');
444
+ }
445
+ else {
446
+ console.log('[unix.sync-branch] Skipping stale branch group member cleanup because explicit filesystem access users could not be fetched');
447
+ }
373
448
  // Also sync repo group (ensure owners and authorized session users have .git/ access)
374
449
  if (branch.repo_id) {
375
450
  try {
@@ -383,6 +458,8 @@ export async function handleUnixSyncBranch(payload, options) {
383
458
  console.log(`[unix.sync-branch] Added daemon user to repo group ${repo.unix_group}`);
384
459
  }
385
460
  }
461
+ // Add all explicit filesystem access users to repo group (for .git/ access)
462
+ await addUsersToGroup(explicitFsUsernames, repo.unix_group);
386
463
  // Add all branch owners to repo group (for .git/ access)
387
464
  // This ensures owners can run git commands which need .git/ access
388
465
  try {
@@ -418,7 +495,7 @@ export async function handleUnixSyncBranch(payload, options) {
418
495
  : sessionsResult.data || [];
419
496
  const sessionUsernames = new Set();
420
497
  for (const session of sessions) {
421
- if (session.unix_username && !ownerUsernames.has(session.unix_username)) {
498
+ if (session.unix_username && !explicitFsUsernames.has(session.unix_username)) {
422
499
  sessionUsernames.add(session.unix_username);
423
500
  }
424
501
  }
@@ -464,6 +541,7 @@ export async function handleUnixSyncBranch(payload, options) {
464
541
  branchId,
465
542
  groupName,
466
543
  ownersAdded,
544
+ fsAccessUsersAdded,
467
545
  sessionUsersAdded,
468
546
  },
469
547
  };
@@ -488,6 +566,83 @@ export async function handleUnixSyncBranch(payload, options) {
488
566
  }
489
567
  }
490
568
  // ============================================================
569
+ // BOARD SYNC OPERATIONS
570
+ // ============================================================
571
+ /**
572
+ * Sync Unix state for every branch currently aligned with a board.
573
+ *
574
+ * This keeps board permission propagation in one executor process while
575
+ * preserving the branch-level sync semantics and no-overgrant alignment gate.
576
+ */
577
+ export async function handleUnixSyncBoard(payload, options) {
578
+ if (options.dryRun) {
579
+ return {
580
+ success: true,
581
+ data: { dryRun: true, command: 'unix.sync-board', boardId: payload.params.boardId },
582
+ };
583
+ }
584
+ let client = null;
585
+ try {
586
+ const daemonUrl = payload.daemonUrl || 'http://localhost:3030';
587
+ client = await createExecutorClient(daemonUrl, payload.sessionToken);
588
+ console.log('[unix.sync-board] Connected to daemon');
589
+ const boardId = payload.params.boardId;
590
+ const branchesResult = await client.service(`boards/${boardId}/aligned-branches`).find({});
591
+ const branches = Array.isArray(branchesResult) ? branchesResult : branchesResult.data || [];
592
+ console.log(`[unix.sync-board] Syncing ${branches.length} board-aligned branch(es) for board ${shortId(boardId)}`);
593
+ // Keep this authenticated client open while nested branch syncs run.
594
+ // Branch syncs currently open their own daemon clients, but all work still
595
+ // runs inside this one executor process. Disconnecting here can race the
596
+ // auth client's async re-auth/logout bookkeeping while the nested syncs
597
+ // start. The finally block below closes the board client after all branch
598
+ // work finishes.
599
+ const results = [];
600
+ for (const branch of branches) {
601
+ if (!branch.branch_id)
602
+ continue;
603
+ const result = await handleUnixSyncBranch({
604
+ ...payload,
605
+ command: 'unix.sync-branch',
606
+ params: {
607
+ branchId: branch.branch_id,
608
+ daemonUser: payload.params.daemonUser,
609
+ },
610
+ }, options);
611
+ results.push({ branchId: branch.branch_id, success: result.success, error: result.error });
612
+ }
613
+ const failed = results.filter((result) => !result.success);
614
+ if (failed.length > 0) {
615
+ return {
616
+ success: false,
617
+ data: { boardId, synced: results.length, failed },
618
+ error: {
619
+ code: 'UNIX_SYNC_BOARD_PARTIAL_FAILURE',
620
+ message: `Failed to sync ${failed.length} of ${results.length} board-aligned branch(es)`,
621
+ },
622
+ };
623
+ }
624
+ return { success: true, data: { boardId, synced: results.length } };
625
+ }
626
+ catch (error) {
627
+ const errorMessage = error instanceof Error ? error.message : String(error);
628
+ console.error('[unix.sync-board] Failed:', errorMessage);
629
+ return {
630
+ success: false,
631
+ error: { code: 'UNIX_SYNC_BOARD_FAILED', message: errorMessage },
632
+ };
633
+ }
634
+ finally {
635
+ if (client) {
636
+ try {
637
+ client.io.disconnect();
638
+ }
639
+ catch {
640
+ // Ignore
641
+ }
642
+ }
643
+ }
644
+ }
645
+ // ============================================================
491
646
  // USER SYNC OPERATIONS
492
647
  // ============================================================
493
648
  /**
@@ -14,10 +14,10 @@ export { type ResolvedConfigSlice, ResolvedConfigSliceSchema };
14
14
  * Tool types supported by the prompt command
15
15
  */
16
16
  export declare const ToolTypeSchema: z.ZodEnum<{
17
- codex: "codex";
18
17
  "claude-code": "claude-code";
19
18
  "claude-code-cli": "claude-code-cli";
20
19
  gemini: "gemini";
20
+ codex: "codex";
21
21
  opencode: "opencode";
22
22
  copilot: "copilot";
23
23
  cursor: "cursor";
@@ -103,10 +103,10 @@ export declare const PromptPayloadSchema: z.ZodObject<{
103
103
  taskId: z.ZodString;
104
104
  prompt: z.ZodString;
105
105
  tool: z.ZodEnum<{
106
- codex: "codex";
107
106
  "claude-code": "claude-code";
108
107
  "claude-code-cli": "claude-code-cli";
109
108
  gemini: "gemini";
109
+ codex: "codex";
110
110
  opencode: "opencode";
111
111
  copilot: "copilot";
112
112
  cursor: "cursor";
@@ -126,8 +126,8 @@ export declare const PromptPayloadSchema: z.ZodObject<{
126
126
  }>>;
127
127
  cwd: z.ZodString;
128
128
  messageSource: z.ZodOptional<z.ZodEnum<{
129
- agor: "agor";
130
129
  gateway: "gateway";
130
+ agor: "agor";
131
131
  }>>;
132
132
  }, z.core.$strip>;
133
133
  }, z.core.$strip>;
@@ -429,6 +429,79 @@ export declare const BranchAgorYmlExportPayloadSchema: z.ZodObject<{
429
429
  }, z.core.$strip>;
430
430
  }, z.core.$strip>;
431
431
  export type BranchAgorYmlExportPayload = z.infer<typeof BranchAgorYmlExportPayloadSchema>;
432
+ /**
433
+ * Environment lifecycle payload - run shell-based start/stop/restart/nuke
434
+ * commands from the executor. Webhook lifecycle commands stay daemon-owned.
435
+ */
436
+ export declare const EnvironmentLifecyclePayloadSchema: z.ZodObject<{
437
+ daemonUrl: z.ZodOptional<z.ZodString>;
438
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
439
+ dataHome: z.ZodOptional<z.ZodString>;
440
+ resolvedConfig: z.ZodOptional<z.ZodObject<{
441
+ execution: z.ZodOptional<z.ZodObject<{
442
+ permission_timeout_ms: z.ZodOptional<z.ZodNumber>;
443
+ executor_heartbeat: z.ZodOptional<z.ZodObject<{
444
+ enabled: z.ZodBoolean;
445
+ interval_ms: z.ZodNumber;
446
+ }, z.core.$strip>>;
447
+ }, z.core.$strip>>;
448
+ opencode: z.ZodOptional<z.ZodObject<{
449
+ serverUrl: z.ZodOptional<z.ZodString>;
450
+ }, z.core.$strip>>;
451
+ daemon: z.ZodOptional<z.ZodObject<{
452
+ host_ip_address: z.ZodOptional<z.ZodString>;
453
+ }, z.core.$strip>>;
454
+ }, z.core.$strip>>;
455
+ command: z.ZodLiteral<"environment.lifecycle">;
456
+ sessionToken: z.ZodString;
457
+ params: z.ZodObject<{
458
+ branchId: z.ZodString;
459
+ branchPath: z.ZodOptional<z.ZodString>;
460
+ action: z.ZodEnum<{
461
+ start: "start";
462
+ stop: "stop";
463
+ restart: "restart";
464
+ nuke: "nuke";
465
+ }>;
466
+ startCommand: z.ZodOptional<z.ZodString>;
467
+ stopCommand: z.ZodOptional<z.ZodString>;
468
+ nukeCommand: z.ZodOptional<z.ZodString>;
469
+ appUrl: z.ZodOptional<z.ZodString>;
470
+ }, z.core.$strip>;
471
+ }, z.core.$strip>;
472
+ export type EnvironmentLifecyclePayload = z.infer<typeof EnvironmentLifecyclePayloadSchema>;
473
+ /**
474
+ * Environment logs payload - run shell-based logs command from executor.
475
+ * Webhook logs stay daemon-owned.
476
+ */
477
+ export declare const EnvironmentLogsPayloadSchema: z.ZodObject<{
478
+ daemonUrl: z.ZodOptional<z.ZodString>;
479
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
480
+ dataHome: z.ZodOptional<z.ZodString>;
481
+ resolvedConfig: z.ZodOptional<z.ZodObject<{
482
+ execution: z.ZodOptional<z.ZodObject<{
483
+ permission_timeout_ms: z.ZodOptional<z.ZodNumber>;
484
+ executor_heartbeat: z.ZodOptional<z.ZodObject<{
485
+ enabled: z.ZodBoolean;
486
+ interval_ms: z.ZodNumber;
487
+ }, z.core.$strip>>;
488
+ }, z.core.$strip>>;
489
+ opencode: z.ZodOptional<z.ZodObject<{
490
+ serverUrl: z.ZodOptional<z.ZodString>;
491
+ }, z.core.$strip>>;
492
+ daemon: z.ZodOptional<z.ZodObject<{
493
+ host_ip_address: z.ZodOptional<z.ZodString>;
494
+ }, z.core.$strip>>;
495
+ }, z.core.$strip>>;
496
+ command: z.ZodLiteral<"environment.logs">;
497
+ sessionToken: z.ZodString;
498
+ params: z.ZodObject<{
499
+ branchId: z.ZodString;
500
+ branchPath: z.ZodOptional<z.ZodString>;
501
+ logsCommand: z.ZodString;
502
+ }, z.core.$strip>;
503
+ }, z.core.$strip>;
504
+ export type EnvironmentLogsPayload = z.infer<typeof EnvironmentLogsPayloadSchema>;
432
505
  /**
433
506
  * Git repo origin realign payload - ensure remote.origin.url matches DB.
434
507
  */
@@ -530,6 +603,39 @@ export declare const UnixSyncBranchPayloadSchema: z.ZodObject<{
530
603
  }, z.core.$strip>;
531
604
  }, z.core.$strip>;
532
605
  export type UnixSyncBranchPayload = z.infer<typeof UnixSyncBranchPayloadSchema>;
606
+ /**
607
+ * Unix sync-board payload - Sync Unix state for every branch aligned with a board.
608
+ *
609
+ * The executor resolves board-aligned branches through the daemon, then reuses
610
+ * unix.sync-branch semantics for each branch in the same executor process.
611
+ */
612
+ export declare const UnixSyncBoardPayloadSchema: z.ZodObject<{
613
+ daemonUrl: z.ZodOptional<z.ZodString>;
614
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
615
+ dataHome: z.ZodOptional<z.ZodString>;
616
+ resolvedConfig: z.ZodOptional<z.ZodObject<{
617
+ execution: z.ZodOptional<z.ZodObject<{
618
+ permission_timeout_ms: z.ZodOptional<z.ZodNumber>;
619
+ executor_heartbeat: z.ZodOptional<z.ZodObject<{
620
+ enabled: z.ZodBoolean;
621
+ interval_ms: z.ZodNumber;
622
+ }, z.core.$strip>>;
623
+ }, z.core.$strip>>;
624
+ opencode: z.ZodOptional<z.ZodObject<{
625
+ serverUrl: z.ZodOptional<z.ZodString>;
626
+ }, z.core.$strip>>;
627
+ daemon: z.ZodOptional<z.ZodObject<{
628
+ host_ip_address: z.ZodOptional<z.ZodString>;
629
+ }, z.core.$strip>>;
630
+ }, z.core.$strip>>;
631
+ command: z.ZodLiteral<"unix.sync-board">;
632
+ sessionToken: z.ZodString;
633
+ params: z.ZodObject<{
634
+ boardId: z.ZodString;
635
+ daemonUser: z.ZodOptional<z.ZodString>;
636
+ }, z.core.$strip>;
637
+ }, z.core.$strip>;
638
+ export type UnixSyncBoardPayload = z.infer<typeof UnixSyncBoardPayloadSchema>;
533
639
  /**
534
640
  * Unix sync-repo payload - Sync all Unix state for a repo
535
641
  *
@@ -715,10 +821,10 @@ export declare const ExecutorPayloadSchema: z.ZodDiscriminatedUnion<[z.ZodObject
715
821
  taskId: z.ZodString;
716
822
  prompt: z.ZodString;
717
823
  tool: z.ZodEnum<{
718
- codex: "codex";
719
824
  "claude-code": "claude-code";
720
825
  "claude-code-cli": "claude-code-cli";
721
826
  gemini: "gemini";
827
+ codex: "codex";
722
828
  opencode: "opencode";
723
829
  copilot: "copilot";
724
830
  cursor: "cursor";
@@ -738,8 +844,8 @@ export declare const ExecutorPayloadSchema: z.ZodDiscriminatedUnion<[z.ZodObject
738
844
  }>>;
739
845
  cwd: z.ZodString;
740
846
  messageSource: z.ZodOptional<z.ZodEnum<{
741
- agor: "agor";
742
847
  gateway: "gateway";
848
+ agor: "agor";
743
849
  }>>;
744
850
  }, z.core.$strip>;
745
851
  }, z.core.$strip>, z.ZodObject<{
@@ -983,6 +1089,67 @@ export declare const ExecutorPayloadSchema: z.ZodDiscriminatedUnion<[z.ZodObject
983
1089
  branchId: z.ZodString;
984
1090
  environment: z.ZodUnknown;
985
1091
  }, z.core.$strip>;
1092
+ }, z.core.$strip>, z.ZodObject<{
1093
+ daemonUrl: z.ZodOptional<z.ZodString>;
1094
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1095
+ dataHome: z.ZodOptional<z.ZodString>;
1096
+ resolvedConfig: z.ZodOptional<z.ZodObject<{
1097
+ execution: z.ZodOptional<z.ZodObject<{
1098
+ permission_timeout_ms: z.ZodOptional<z.ZodNumber>;
1099
+ executor_heartbeat: z.ZodOptional<z.ZodObject<{
1100
+ enabled: z.ZodBoolean;
1101
+ interval_ms: z.ZodNumber;
1102
+ }, z.core.$strip>>;
1103
+ }, z.core.$strip>>;
1104
+ opencode: z.ZodOptional<z.ZodObject<{
1105
+ serverUrl: z.ZodOptional<z.ZodString>;
1106
+ }, z.core.$strip>>;
1107
+ daemon: z.ZodOptional<z.ZodObject<{
1108
+ host_ip_address: z.ZodOptional<z.ZodString>;
1109
+ }, z.core.$strip>>;
1110
+ }, z.core.$strip>>;
1111
+ command: z.ZodLiteral<"environment.lifecycle">;
1112
+ sessionToken: z.ZodString;
1113
+ params: z.ZodObject<{
1114
+ branchId: z.ZodString;
1115
+ branchPath: z.ZodOptional<z.ZodString>;
1116
+ action: z.ZodEnum<{
1117
+ start: "start";
1118
+ stop: "stop";
1119
+ restart: "restart";
1120
+ nuke: "nuke";
1121
+ }>;
1122
+ startCommand: z.ZodOptional<z.ZodString>;
1123
+ stopCommand: z.ZodOptional<z.ZodString>;
1124
+ nukeCommand: z.ZodOptional<z.ZodString>;
1125
+ appUrl: z.ZodOptional<z.ZodString>;
1126
+ }, z.core.$strip>;
1127
+ }, z.core.$strip>, z.ZodObject<{
1128
+ daemonUrl: z.ZodOptional<z.ZodString>;
1129
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1130
+ dataHome: z.ZodOptional<z.ZodString>;
1131
+ resolvedConfig: z.ZodOptional<z.ZodObject<{
1132
+ execution: z.ZodOptional<z.ZodObject<{
1133
+ permission_timeout_ms: z.ZodOptional<z.ZodNumber>;
1134
+ executor_heartbeat: z.ZodOptional<z.ZodObject<{
1135
+ enabled: z.ZodBoolean;
1136
+ interval_ms: z.ZodNumber;
1137
+ }, z.core.$strip>>;
1138
+ }, z.core.$strip>>;
1139
+ opencode: z.ZodOptional<z.ZodObject<{
1140
+ serverUrl: z.ZodOptional<z.ZodString>;
1141
+ }, z.core.$strip>>;
1142
+ daemon: z.ZodOptional<z.ZodObject<{
1143
+ host_ip_address: z.ZodOptional<z.ZodString>;
1144
+ }, z.core.$strip>>;
1145
+ }, z.core.$strip>>;
1146
+ command: z.ZodLiteral<"environment.logs">;
1147
+ sessionToken: z.ZodString;
1148
+ params: z.ZodObject<{
1149
+ branchId: z.ZodString;
1150
+ branchPath: z.ZodOptional<z.ZodString>;
1151
+ logsCommand: z.ZodString;
1152
+ }, z.core.$strip>;
986
1153
  }, z.core.$strip>, z.ZodObject<{
987
1154
  daemonUrl: z.ZodOptional<z.ZodString>;
988
1155
  env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
@@ -1057,6 +1224,31 @@ export declare const ExecutorPayloadSchema: z.ZodDiscriminatedUnion<[z.ZodObject
1057
1224
  daemonUser: z.ZodOptional<z.ZodString>;
1058
1225
  delete: z.ZodOptional<z.ZodBoolean>;
1059
1226
  }, z.core.$strip>;
1227
+ }, z.core.$strip>, z.ZodObject<{
1228
+ daemonUrl: z.ZodOptional<z.ZodString>;
1229
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1230
+ dataHome: z.ZodOptional<z.ZodString>;
1231
+ resolvedConfig: z.ZodOptional<z.ZodObject<{
1232
+ execution: z.ZodOptional<z.ZodObject<{
1233
+ permission_timeout_ms: z.ZodOptional<z.ZodNumber>;
1234
+ executor_heartbeat: z.ZodOptional<z.ZodObject<{
1235
+ enabled: z.ZodBoolean;
1236
+ interval_ms: z.ZodNumber;
1237
+ }, z.core.$strip>>;
1238
+ }, z.core.$strip>>;
1239
+ opencode: z.ZodOptional<z.ZodObject<{
1240
+ serverUrl: z.ZodOptional<z.ZodString>;
1241
+ }, z.core.$strip>>;
1242
+ daemon: z.ZodOptional<z.ZodObject<{
1243
+ host_ip_address: z.ZodOptional<z.ZodString>;
1244
+ }, z.core.$strip>>;
1245
+ }, z.core.$strip>>;
1246
+ command: z.ZodLiteral<"unix.sync-board">;
1247
+ sessionToken: z.ZodString;
1248
+ params: z.ZodObject<{
1249
+ boardId: z.ZodString;
1250
+ daemonUser: z.ZodOptional<z.ZodString>;
1251
+ }, z.core.$strip>;
1060
1252
  }, z.core.$strip>, z.ZodObject<{
1061
1253
  daemonUrl: z.ZodOptional<z.ZodString>;
1062
1254
  env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
@@ -1221,6 +1413,10 @@ export declare function isGitBranchCleanPayload(payload: ExecutorPayload): paylo
1221
1413
  * Type guard for UnixSyncBranchPayload
1222
1414
  */
1223
1415
  export declare function isUnixSyncBranchPayload(payload: ExecutorPayload): payload is UnixSyncBranchPayload;
1416
+ /**
1417
+ * Type guard for UnixSyncBoardPayload
1418
+ */
1419
+ export declare function isUnixSyncBoardPayload(payload: ExecutorPayload): payload is UnixSyncBoardPayload;
1224
1420
  /**
1225
1421
  * Type guard for UnixSyncRepoPayload
1226
1422
  */
@@ -1 +1 @@
1
- {"version":3,"file":"payload-types.d.ts","sourceRoot":"","sources":["../src/payload-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"payload-types.d.ts","sourceRoot":"","sources":["../src/payload-types.ts"],"names":[],"mappings":"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"}
@@ -427,6 +427,75 @@ export const BranchAgorYmlExportPayloadSchema = BasePayloadSchema.extend({
427
427
  }),
428
428
  });
429
429
  // ═══════════════════════════════════════════════════════════
430
+ // Environment Lifecycle Payload
431
+ // ═══════════════════════════════════════════════════════════
432
+ /**
433
+ * Environment lifecycle payload - run shell-based start/stop/restart/nuke
434
+ * commands from the executor. Webhook lifecycle commands stay daemon-owned.
435
+ */
436
+ export const EnvironmentLifecyclePayloadSchema = BasePayloadSchema.extend({
437
+ command: z.literal('environment.lifecycle'),
438
+ /** JWT for Feathers authentication */
439
+ sessionToken: z.string(),
440
+ params: z
441
+ .object({
442
+ /** Branch ID whose environment is being controlled */
443
+ branchId: z.string().uuid(),
444
+ /** Branch checkout path. Executor refetches the branch but this avoids ambiguity. */
445
+ branchPath: z.string().optional(),
446
+ /** Lifecycle action */
447
+ action: z.enum(['start', 'stop', 'restart', 'nuke']),
448
+ /** Shell start command. Required for start/restart. */
449
+ startCommand: z.string().optional(),
450
+ /** Shell stop command. Required for stop and used before restart when present. */
451
+ stopCommand: z.string().optional(),
452
+ /** Shell nuke command. Required for nuke. */
453
+ nukeCommand: z.string().optional(),
454
+ /** Static app URL rendered by the daemon/branch snapshot. */
455
+ appUrl: z.string().optional(),
456
+ })
457
+ .superRefine((params, ctx) => {
458
+ if ((params.action === 'start' || params.action === 'restart') && !params.startCommand) {
459
+ ctx.addIssue({
460
+ code: z.ZodIssueCode.custom,
461
+ path: ['startCommand'],
462
+ message: 'startCommand is required for start/restart',
463
+ });
464
+ }
465
+ if (params.action === 'stop' && !params.stopCommand) {
466
+ ctx.addIssue({
467
+ code: z.ZodIssueCode.custom,
468
+ path: ['stopCommand'],
469
+ message: 'stopCommand is required for stop',
470
+ });
471
+ }
472
+ if (params.action === 'nuke' && !params.nukeCommand) {
473
+ ctx.addIssue({
474
+ code: z.ZodIssueCode.custom,
475
+ path: ['nukeCommand'],
476
+ message: 'nukeCommand is required for nuke',
477
+ });
478
+ }
479
+ }),
480
+ });
481
+ /**
482
+ * Environment logs payload - run shell-based logs command from executor.
483
+ * Webhook logs stay daemon-owned.
484
+ */
485
+ export const EnvironmentLogsPayloadSchema = BasePayloadSchema.extend({
486
+ command: z.literal('environment.logs'),
487
+ /** JWT for Feathers authentication */
488
+ sessionToken: z.string(),
489
+ params: z.object({
490
+ /** Branch ID whose environment logs are being fetched */
491
+ branchId: z.string().uuid(),
492
+ /** Branch checkout path. Executor refetches the branch but this avoids ambiguity. */
493
+ branchPath: z.string().optional(),
494
+ /** Shell logs command */
495
+ logsCommand: z.string(),
496
+ }),
497
+ });
498
+ // ═══════════════════════════════════════════════════════════
430
499
  // Git Repo Realign Origin Payload
431
500
  // ═══════════════════════════════════════════════════════════
432
501
  /**
@@ -487,6 +556,23 @@ export const UnixSyncBranchPayloadSchema = BasePayloadSchema.extend({
487
556
  delete: z.boolean().optional(),
488
557
  }),
489
558
  });
559
+ /**
560
+ * Unix sync-board payload - Sync Unix state for every branch aligned with a board.
561
+ *
562
+ * The executor resolves board-aligned branches through the daemon, then reuses
563
+ * unix.sync-branch semantics for each branch in the same executor process.
564
+ */
565
+ export const UnixSyncBoardPayloadSchema = BasePayloadSchema.extend({
566
+ command: z.literal('unix.sync-board'),
567
+ /** JWT for Feathers authentication */
568
+ sessionToken: z.string(),
569
+ params: z.object({
570
+ /** Board ID whose aligned branches should be synced */
571
+ boardId: z.string().uuid(),
572
+ /** Daemon Unix user (added to all groups for daemon access) */
573
+ daemonUser: z.string().optional(),
574
+ }),
575
+ });
490
576
  /**
491
577
  * Unix sync-repo payload - Sync all Unix state for a repo
492
578
  *
@@ -632,9 +718,12 @@ export const ExecutorPayloadSchema = z.discriminatedUnion('command', [
632
718
  BranchInspectPayloadSchema,
633
719
  BranchAgorYmlImportPayloadSchema,
634
720
  BranchAgorYmlExportPayloadSchema,
721
+ EnvironmentLifecyclePayloadSchema,
722
+ EnvironmentLogsPayloadSchema,
635
723
  GitRepoRealignOriginPayloadSchema,
636
724
  GitRepoDeletePayloadSchema,
637
725
  UnixSyncBranchPayloadSchema,
726
+ UnixSyncBoardPayloadSchema,
638
727
  UnixSyncRepoPayloadSchema,
639
728
  UnixSyncUserPayloadSchema,
640
729
  ZellijAttachPayloadSchema,
@@ -683,9 +772,12 @@ export function getSupportedCommands() {
683
772
  'branch.inspect',
684
773
  'branch.agor-yml.import',
685
774
  'branch.agor-yml.export',
775
+ 'environment.lifecycle',
776
+ 'environment.logs',
686
777
  'git.repo.realign-origin',
687
778
  'git.repo.delete',
688
779
  'unix.sync-branch',
780
+ 'unix.sync-board',
689
781
  'unix.sync-repo',
690
782
  'unix.sync-user',
691
783
  'zellij.attach',
@@ -728,6 +820,12 @@ export function isGitBranchCleanPayload(payload) {
728
820
  export function isUnixSyncBranchPayload(payload) {
729
821
  return payload.command === 'unix.sync-branch';
730
822
  }
823
+ /**
824
+ * Type guard for UnixSyncBoardPayload
825
+ */
826
+ export function isUnixSyncBoardPayload(payload) {
827
+ return payload.command === 'unix.sync-board';
828
+ }
731
829
  /**
732
830
  * Type guard for UnixSyncRepoPayload
733
831
  */
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-scoping.d.ts","sourceRoot":"","sources":["../../../src/sdk-handlers/base/mcp-scoping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EACV,mBAAmB,EACnB,0BAA0B,EAC3B,MAAM,mCAAmC,CAAC;AAW3C;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,kBAAkB,GAAG,QAAQ,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,EAAE,0BAA0B,CAAC;IAC5C,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CA4IhC"}
1
+ {"version":3,"file":"mcp-scoping.d.ts","sourceRoot":"","sources":["../../../src/sdk-handlers/base/mcp-scoping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EACV,mBAAmB,EACnB,0BAA0B,EAC3B,MAAM,mCAAmC,CAAC;AAe3C;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,kBAAkB,GAAG,QAAQ,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,EAAE,0BAA0B,CAAC;IAC5C,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CA0JhC"}