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
@@ -29,6 +29,8 @@ export declare function requireBranchGrantManager(branchRepo: BranchRepository,
29
29
  export declare function setupBranchGroupGrantsService(app: import('@agor/core/feathers').Application, db: Database, branchRepo: BranchRepository): void;
30
30
  export declare function setupBoardGroupGrantsService(app: import('@agor/core/feathers').Application, db: Database): void;
31
31
  export declare function setupBranchEffectiveAccessService(app: import('@agor/core/feathers').Application, branchRepo: BranchRepository): void;
32
+ export declare function setupBoardAlignedBranchesService(app: import('@agor/core/feathers').Application, branchRepo: BranchRepository): void;
33
+ export declare function setupBranchFsAccessUsersService(app: import('@agor/core/feathers').Application, branchRepo: BranchRepository): void;
32
34
  export declare const groupsHooks: {
33
35
  before: {
34
36
  all: (typeof requireMember)[];
@@ -1 +1 @@
1
- {"version":3,"file":"groups.d.ts","sourceRoot":"","sources":["../../src/services/groups.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAmB,KAAK,QAAQ,EAAmB,MAAM,eAAe,CAAC;AAEhF,OAAO,KAAK,EAIV,qBAAqB,EAErB,KAAK,EACL,eAAe,EACf,WAAW,EACX,MAAM,EAEP,MAAM,kBAAkB,CAAC;AAI1B,iBAAS,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,CAQxD;AAED,iBAAS,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,CAQvD;AAmBD,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,KAAK,IAAI,qBAAqB,CAKxC;AAED,wBAAgB,wCAAwC,CAAC,KAAK,EAAE,OAAO,GAAG,qBAAqB,CAI9F;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,QAAQ;kBAGxB,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;YAI/B,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;iBAKlB,OAAO,CAAC,KAAK,CAAC,WAAW,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;cAQnD,MAAM,QAAQ,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;eAQ5C,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;EAI3C;AAED,wBAAgB,6BAA6B,CAAC,EAAE,EAAE,QAAQ;kBAGlC,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;iBAO/C;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,WACpC,MAAM,GACd,OAAO,CAAC,eAAe,CAAC;eASV,MAAM,WAAW,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;EAWtE;AAuBD,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,gBAAgB,EAC5B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,WAAW,CAAC,CAgBtB;AAED,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,OAAO,qBAAqB,EAAE,WAAW,EAC9C,EAAE,EAAE,QAAQ,EACZ,UAAU,EAAE,gBAAgB,QAqE7B;AAgCD,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,OAAO,qBAAqB,EAAE,WAAW,EAC9C,EAAE,EAAE,QAAQ,QAoEb;AAED,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,OAAO,qBAAqB,EAAE,WAAW,EAC9C,UAAU,EAAE,gBAAgB,QA4C7B;AAED,eAAO,MAAM,WAAW;;;;;;;CAOvB,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;CAIjC,CAAC"}
1
+ {"version":3,"file":"groups.d.ts","sourceRoot":"","sources":["../../src/services/groups.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAmB,KAAK,QAAQ,EAAmB,MAAM,eAAe,CAAC;AAEhF,OAAO,KAAK,EAMV,qBAAqB,EAErB,KAAK,EACL,eAAe,EACf,WAAW,EACX,MAAM,EAGP,MAAM,kBAAkB,CAAC;AAI1B,iBAAS,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,CAQxD;AAED,iBAAS,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,CAQvD;AAmBD,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,KAAK,IAAI,qBAAqB,CAKxC;AAED,wBAAgB,wCAAwC,CAAC,KAAK,EAAE,OAAO,GAAG,qBAAqB,CAI9F;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,QAAQ;kBAGxB,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;YAI/B,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;iBAKlB,OAAO,CAAC,KAAK,CAAC,WAAW,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;cAQnD,MAAM,QAAQ,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;eAQ5C,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;EAI3C;AAED,wBAAgB,6BAA6B,CAAC,EAAE,EAAE,QAAQ;kBAGlC,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;iBAO/C;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,WACpC,MAAM,GACd,OAAO,CAAC,eAAe,CAAC;eASV,MAAM,WAAW,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;EAWtE;AAuBD,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,gBAAgB,EAC5B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,WAAW,CAAC,CAgBtB;AAED,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,OAAO,qBAAqB,EAAE,WAAW,EAC9C,EAAE,EAAE,QAAQ,EACZ,UAAU,EAAE,gBAAgB,QAqE7B;AAgCD,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,OAAO,qBAAqB,EAAE,WAAW,EAC9C,EAAE,EAAE,QAAQ,QAoEb;AAED,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,OAAO,qBAAqB,EAAE,WAAW,EAC9C,UAAU,EAAE,gBAAgB,QA4C7B;AAED,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,OAAO,qBAAqB,EAAE,WAAW,EAC9C,UAAU,EAAE,gBAAgB,QAwB7B;AAED,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,OAAO,qBAAqB,EAAE,WAAW,EAC9C,UAAU,EAAE,gBAAgB,QAoC7B;AAED,eAAO,MAAM,WAAW;;;;;;;CAOvB,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;CAIjC,CAAC"}
@@ -320,6 +320,60 @@ function setupBranchEffectiveAccessService(app, branchRepo) {
320
320
  { methods: ["find"] }
321
321
  );
322
322
  }
323
+ function setupBoardAlignedBranchesService(app, branchRepo) {
324
+ app.use(
325
+ "boards/:id/aligned-branches",
326
+ {
327
+ async find(params) {
328
+ const authParams = params;
329
+ if (authParams?.provider && !authParams.user?._isServiceAccount) {
330
+ const user = authParams.user;
331
+ if (!user) throw new NotAuthenticated2("Authentication required");
332
+ if (!hasMinimumRole2(user.role, ROLES2.ADMIN)) {
333
+ throw new Forbidden2("Only admins can list board-aligned branches");
334
+ }
335
+ }
336
+ const boardId = paramsRoute(params)?.id;
337
+ if (!boardId) throw new BadRequest("Board ID is required");
338
+ return branchRepo.findBoardAlignedBranches(boardId);
339
+ }
340
+ },
341
+ { methods: ["find"] }
342
+ );
343
+ }
344
+ function setupBranchFsAccessUsersService(app, branchRepo) {
345
+ app.use(
346
+ "branches/:id/fs-access-users",
347
+ {
348
+ async find(params) {
349
+ const authParams = params;
350
+ if (authParams?.provider && !authParams.user?._isServiceAccount) {
351
+ const user = authParams.user;
352
+ if (!user) throw new NotAuthenticated2("Authentication required");
353
+ if (!hasMinimumRole2(user.role, ROLES2.ADMIN)) {
354
+ throw new Forbidden2("Only admins can list branch filesystem access users");
355
+ }
356
+ }
357
+ const branchId = paramsRoute(params)?.id;
358
+ if (!branchId) throw new BadRequest("Branch ID is required");
359
+ const userIds = await branchRepo.findExplicitFsAccessUserIds(branchId);
360
+ const usersService = app.service("users");
361
+ const users = await Promise.all(
362
+ userIds.map(async (userId) => {
363
+ try {
364
+ return await usersService.get(userId);
365
+ } catch (error) {
366
+ console.error(`Failed to fetch branch filesystem access user ${userId}:`, error);
367
+ return null;
368
+ }
369
+ })
370
+ );
371
+ return users.filter((user) => user !== null);
372
+ }
373
+ },
374
+ { methods: ["find"] }
375
+ );
376
+ }
323
377
  var groupsHooks = {
324
378
  before: {
325
379
  all: [requireMember],
@@ -341,7 +395,9 @@ export {
341
395
  groupMembershipsHooks,
342
396
  groupsHooks,
343
397
  requireBranchGrantManager,
398
+ setupBoardAlignedBranchesService,
344
399
  setupBoardGroupGrantsService,
345
400
  setupBranchEffectiveAccessService,
401
+ setupBranchFsAccessUsersService,
346
402
  setupBranchGroupGrantsService
347
403
  };
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-servers.d.ts","sourceRoot":"","sources":["../../src/services/mcp-servers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,KAAK,QAAQ,EAAuB,MAAM,eAAe,CAAC;AACnE,OAAO,KAAK,EACV,oBAAoB,EAEpB,SAAS,EAIT,SAAS,EACT,WAAW,EACX,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC,CAAC;AAEH;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,cAAc,CACnD,SAAS,EACT,oBAAoB,GAAG,oBAAoB,EAC3C,eAAe,CAChB;IACC,OAAO,CAAC,aAAa,CAAsB;gBAE/B,EAAE,EAAE,QAAQ;IAcxB;;OAEG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,eAAe;IA0CnC;;OAEG;IACG,WAAW,CACf,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,SAAS,EAAE,CAAC;CAGxB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,QAAQ,GAAG,iBAAiB,CAEvE"}
1
+ {"version":3,"file":"mcp-servers.d.ts","sourceRoot":"","sources":["../../src/services/mcp-servers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,KAAK,QAAQ,EAAuB,MAAM,eAAe,CAAC;AACnE,OAAO,KAAK,EACV,oBAAoB,EAEpB,SAAS,EAIT,SAAS,EACT,WAAW,EACX,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC,CAAC;AAEH;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,cAAc,CACnD,SAAS,EACT,oBAAoB,GAAG,oBAAoB,EAC3C,eAAe,CAChB;IACC,OAAO,CAAC,aAAa,CAAsB;gBAE/B,EAAE,EAAE,QAAQ;IAcxB;;OAEG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,eAAe;IAgCnC;;OAEG;IACG,WAAW,CACf,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,SAAS,EAAE,CAAC;CAGxB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,QAAQ,GAAG,iBAAiB,CAEvE"}
@@ -241,12 +241,6 @@ var MCPServersService = class extends DrizzleService {
241
241
  * Override find to support filter params
242
242
  */
243
243
  async find(params) {
244
- const paramsRecord = params;
245
- const userRecord = paramsRecord?.user;
246
- const userId = userRecord?.user_id;
247
- console.log(
248
- `[MCPServersService.find] Called with userId: ${userId || "NONE"}, provider: ${params?.provider || "internal"}, hasConnection: ${!!paramsRecord?.connection}`
249
- );
250
244
  const filters = {};
251
245
  if (params?.query) {
252
246
  if (params.query.scope) filters.scope = params.query.scope;
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/services/scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAe9C,OAAO,KAAK,EACV,MAAM,EAGN,QAAQ,EACR,UAAU,EACV,OAAO,EAGP,IAAI,EACL,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAQpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAiCnD;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,MAAM,GACrB,MAAM,CA8BR;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,SAAgB,IAAI,mBAAmB;gBAC3B,UAAU,EAAE,MAAM;CAM/B;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,SAAgB,IAAI,EAAE,mBAAmB,GAAG,qBAAqB,CAAC;gBACtD,IAAI,EAAE,mBAAmB,GAAG,qBAAqB,EAAE,OAAO,EAAE,MAAM;CAK/E;AAED,MAAM,WAAW,eAAe;IAC9B,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wDAAwD;IACxD,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,EAAE,CAAW;IACrB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,cAAc,CAA6B;gBAEvC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,GAAE,eAAoB;IAgBxE;;OAEG;IACH,KAAK,IAAI,IAAI;IAwBb;;OAEG;IACH,IAAI,IAAI,IAAI;IAeZ;;;;;;;;;OASG;YACW,IAAI;IA2BlB;;;;;;;;;;;;;OAaG;YACW,eAAe;IA0E7B;;;;;;;;;;;;;OAaG;IACG,kBAAkB,CAAC,IAAI,EAAE;QAAE,UAAU,EAAE,UAAU,CAAC;QAAC,WAAW,EAAE,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAuC/F;;;;;;;;;;;;;;;OAeG;YACW,0BAA0B;IAsCxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;YACW,qBAAqB;IA2NnC;;;OAGG;YACW,sBAAsB;IAuBpC;;;;;;;;OAQG;YACW,sBAAsB;CAyBrC"}
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/services/scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAe9C,OAAO,KAAK,EACV,MAAM,EAGN,QAAQ,EACR,UAAU,EACV,OAAO,EAGP,IAAI,EACL,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAQpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAiCnD;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,MAAM,GACrB,MAAM,CA8BR;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,SAAgB,IAAI,mBAAmB;gBAC3B,UAAU,EAAE,MAAM;CAM/B;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,SAAgB,IAAI,EAAE,mBAAmB,GAAG,qBAAqB,CAAC;gBACtD,IAAI,EAAE,mBAAmB,GAAG,qBAAqB,EAAE,OAAO,EAAE,MAAM;CAK/E;AAED,MAAM,WAAW,eAAe;IAC9B,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wDAAwD;IACxD,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,EAAE,CAAW;IACrB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,cAAc,CAA6B;gBAEvC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,GAAE,eAAoB;IAgBxE;;OAEG;IACH,KAAK,IAAI,IAAI;IAwBb;;OAEG;IACH,IAAI,IAAI,IAAI;IAeZ;;;;;;;;;OASG;YACW,IAAI;IA2BlB;;;;;;;;;;;;;OAaG;YACW,eAAe;IA8E7B;;;;;;;;;;;;;OAaG;IACG,kBAAkB,CAAC,IAAI,EAAE;QAAE,UAAU,EAAE,UAAU,CAAC;QAAC,WAAW,EAAE,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAuC/F;;;;;;;;;;;;;;;OAeG;YACW,0BAA0B;IAsCxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;YACW,qBAAqB;IA2NnC;;;OAGG;YACW,sBAAsB;IAuBpC;;;;;;;;OAQG;YACW,sBAAsB;CAyBrC"}
@@ -231,11 +231,15 @@ var SchedulerService = class {
231
231
  }
232
232
  return;
233
233
  }
234
- console.log(` \u2705 ${schedule.name}: Schedule is due, spawning session...`);
234
+ console.log(
235
+ ` \u{1F552} Scheduler due: "${schedule.name}" scheduled_at=${new Date(scheduledRunAt).toISOString()} \u2014 spawning session`
236
+ );
235
237
  await this.spawnScheduledSession(schedule, scheduledRunAt, now, { source: "cron" });
236
238
  });
237
239
  } else {
238
- console.log(` \u2705 ${schedule.name}: Schedule is due, spawning session...`);
240
+ console.log(
241
+ ` \u{1F552} Scheduler due: "${schedule.name}" scheduled_at=${new Date(scheduledRunAt).toISOString()} \u2014 spawning session`
242
+ );
239
243
  await this.spawnScheduledSession(schedule, scheduledRunAt, now, { source: "cron" });
240
244
  }
241
245
  }
@@ -29,6 +29,8 @@ export type SessionParams = QueryParams<{
29
29
  /** Root-level include_last_message flag (bypasses Feathers query filtering, used by internal service calls) */
30
30
  _include_last_message?: boolean | 'true' | 'false';
31
31
  };
32
+ export declare function markRemoteRelationshipsEnrichedResult<T extends object>(result: T): T;
33
+ export declare function isRemoteRelationshipsEnrichedResult(result: unknown): boolean;
32
34
  /**
33
35
  * Execute task data payload
34
36
  * Used by setExecuteHandler, executeTask, and related methods
@@ -47,10 +49,12 @@ export declare class SessionsService extends DrizzleService<Session, Partial<Ses
47
49
  private sessionRepo;
48
50
  private app;
49
51
  private sessionMCPRepo;
52
+ private sessionRelationshipRepo;
50
53
  private sessionEnvSelectionRepo;
51
54
  private usersRepo;
52
55
  private branchRepo;
53
56
  constructor(db: Database, app: Application);
57
+ enrichRemoteRelationships(sessionList: Session[]): Promise<Session[]>;
54
58
  /**
55
59
  * Attach explicit MCP server IDs to a session.
56
60
  * Emits WebSocket events so the UI updates in real-time.
@@ -176,6 +180,11 @@ export declare class SessionsService extends DrizzleService<Session, Partial<Ses
176
180
  * Override remove to cascade delete children (forks and subsessions)
177
181
  */
178
182
  remove(id: import('@agor/core/types').NullableId, params?: SessionParams): Promise<Session | Session[]>;
183
+ /**
184
+ * Override patch to keep durable relationship callback state synchronized
185
+ * with the existing callback_config.enabled execution switch.
186
+ */
187
+ patch(id: import('@agor/core/types').NullableId, data: Partial<Session>, params?: SessionParams): Promise<Session | Session[]>;
179
188
  /**
180
189
  * Override get to optionally enrich with last message
181
190
  *
@@ -183,9 +192,8 @@ export declare class SessionsService extends DrizzleService<Session, Partial<Ses
183
192
  */
184
193
  get(id: string, params?: SessionParams): Promise<SessionWithLastMessage>;
185
194
  /**
186
- * Override find - no custom logic, just use default find
187
- *
188
- * Note: Last message is NOT included in list operations - only on single GET
195
+ * Override find to include durable remote relationships in list results.
196
+ * Note: Last message is NOT included in list operations - only on single GET.
189
197
  */
190
198
  find(params?: SessionParams): Promise<Paginated<Session> | Session[]>;
191
199
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/services/sessions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/services/sessions.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import {
4
4
  BranchRepository,
5
5
  SessionEnvSelectionRepository,
6
6
  SessionMCPServerRepository,
7
+ SessionRelationshipRepository,
7
8
  SessionRepository,
8
9
  UsersRepository
9
10
  } from "@agor/core/db";
@@ -309,10 +310,19 @@ function getInheritableConfig(parent) {
309
310
  model_config: parent.model_config
310
311
  };
311
312
  }
313
+ var remoteRelationshipsEnrichedResults = /* @__PURE__ */ new WeakSet();
314
+ function markRemoteRelationshipsEnrichedResult(result) {
315
+ remoteRelationshipsEnrichedResults.add(result);
316
+ return result;
317
+ }
318
+ function isRemoteRelationshipsEnrichedResult(result) {
319
+ return typeof result === "object" && result !== null && remoteRelationshipsEnrichedResults.has(result);
320
+ }
312
321
  var SessionsService = class extends DrizzleService {
313
322
  sessionRepo;
314
323
  app;
315
324
  sessionMCPRepo;
325
+ sessionRelationshipRepo;
316
326
  sessionEnvSelectionRepo;
317
327
  usersRepo;
318
328
  branchRepo;
@@ -331,10 +341,31 @@ var SessionsService = class extends DrizzleService {
331
341
  this.sessionRepo = sessionRepo;
332
342
  this.app = app;
333
343
  this.sessionMCPRepo = new SessionMCPServerRepository(db);
344
+ this.sessionRelationshipRepo = new SessionRelationshipRepository(db);
334
345
  this.sessionEnvSelectionRepo = new SessionEnvSelectionRepository(db);
335
346
  this.branchRepo = new BranchRepository(db);
336
347
  this.usersRepo = new UsersRepository(db);
337
348
  }
349
+ async enrichRemoteRelationships(sessionList) {
350
+ const sessionIds = sessionList.map((session) => session.session_id);
351
+ if (sessionIds.length === 0) return sessionList;
352
+ const relationships = await this.sessionRelationshipRepo.findForSessions(sessionIds);
353
+ if (relationships.length === 0) return sessionList;
354
+ const bySessionId = /* @__PURE__ */ new Map();
355
+ for (const relationship of relationships) {
356
+ const sourceBucket = bySessionId.get(relationship.source_session_id) ?? { as_source: [], as_target: [] };
357
+ sourceBucket.as_source?.push(relationship);
358
+ bySessionId.set(relationship.source_session_id, sourceBucket);
359
+ const targetBucket = bySessionId.get(relationship.target_session_id) ?? { as_source: [], as_target: [] };
360
+ targetBucket.as_target?.push(relationship);
361
+ bySessionId.set(relationship.target_session_id, targetBucket);
362
+ }
363
+ return sessionList.map((session) => {
364
+ const remoteRelationships = bySessionId.get(session.session_id);
365
+ if (!remoteRelationships) return session;
366
+ return { ...session, remote_relationships: remoteRelationships };
367
+ });
368
+ }
338
369
  /**
339
370
  * Attach explicit MCP server IDs to a session.
340
371
  * Emits WebSocket events so the UI updates in real-time.
@@ -737,6 +768,24 @@ ${data.extraInstructions}`;
737
768
  this.emit?.("removed", session, params);
738
769
  return session;
739
770
  }
771
+ /**
772
+ * Override patch to keep durable relationship callback state synchronized
773
+ * with the existing callback_config.enabled execution switch.
774
+ */
775
+ async patch(id, data, params) {
776
+ const result = await super.patch(id, data, params);
777
+ const callbackEnabled = data.callback_config?.enabled;
778
+ if (typeof callbackEnabled === "boolean" && !params?._skipRelationshipCallbackSync) {
779
+ const sessionsToSync = Array.isArray(result) ? result : [result];
780
+ for (const session of sessionsToSync) {
781
+ await this.sessionRelationshipRepo.setCallbackEnabledForTargetSession(
782
+ session.session_id,
783
+ callbackEnabled
784
+ );
785
+ }
786
+ }
787
+ return result;
788
+ }
740
789
  /**
741
790
  * Override get to optionally enrich with last message
742
791
  *
@@ -747,6 +796,8 @@ ${data.extraInstructions}`;
747
796
  const includeLastMessageRoot = params?._include_last_message;
748
797
  const includeLastMessage = includeLastMessageRoot ?? includeLastMessageQuery;
749
798
  const session = await super.get(id, params);
799
+ const [enrichedSession] = await this.enrichRemoteRelationships([session]);
800
+ const sessionWithRelationships = enrichedSession ?? session;
750
801
  if (includeLastMessage === true || includeLastMessage === "true") {
751
802
  const truncationLengthQuery = params?.query?.last_message_truncation_length;
752
803
  const truncationLengthRoot = params?._last_message_truncation_length;
@@ -754,20 +805,28 @@ ${data.extraInstructions}`;
754
805
  truncationLengthRoot ?? truncationLengthQuery
755
806
  );
756
807
  const result = await this.sessionRepo.enrichWithLastMessage(
757
- session,
808
+ sessionWithRelationships,
758
809
  truncationLength
759
810
  );
760
811
  return result;
761
812
  }
762
- return session;
813
+ return sessionWithRelationships;
763
814
  }
764
815
  /**
765
- * Override find - no custom logic, just use default find
766
- *
767
- * Note: Last message is NOT included in list operations - only on single GET
816
+ * Override find to include durable remote relationships in list results.
817
+ * Note: Last message is NOT included in list operations - only on single GET.
768
818
  */
769
819
  async find(params) {
770
- return super.find(params);
820
+ const result = await super.find(params);
821
+ if (Array.isArray(result)) {
822
+ const enriched = await this.enrichRemoteRelationships(result);
823
+ return markRemoteRelationshipsEnrichedResult(enriched);
824
+ }
825
+ const enrichedData = await this.enrichRemoteRelationships(result.data);
826
+ return markRemoteRelationshipsEnrichedResult({
827
+ ...result,
828
+ data: enrichedData
829
+ });
771
830
  }
772
831
  };
773
832
  function createSessionsService(db, app) {
@@ -775,5 +834,7 @@ function createSessionsService(db, app) {
775
834
  }
776
835
  export {
777
836
  SessionsService,
778
- createSessionsService
837
+ createSessionsService,
838
+ isRemoteRelationshipsEnrichedResult,
839
+ markRemoteRelationshipsEnrichedResult
779
840
  };
@@ -14,14 +14,25 @@ export type TaskParams = QueryParams<{
14
14
  }> & {
15
15
  /**
16
16
  * Internal-only: terminal task patches normally transition the owning session
17
- * back to idle. Heartbeat-loss handling marks the session failed instead.
17
+ * back to a promptable terminal state. Heartbeat-loss handling marks the session failed instead.
18
18
  */
19
- suppressTerminalSessionIdle?: boolean;
19
+ suppressTerminalSessionStateUpdate?: boolean;
20
20
  /**
21
21
  * Internal-only: terminal task patches normally drain queued work for the
22
22
  * owning session. Heartbeat-loss handling must not auto-start queued prompts.
23
23
  */
24
24
  suppressTerminalQueueProcessing?: boolean;
25
+ /**
26
+ * Internal-only: skip parent callback dispatch for terminal transitions that
27
+ * are administrative cancellation, not agent output. Does not disable BTW
28
+ * fork archival; those ephemeral sessions should still be cleaned up.
29
+ */
30
+ suppressCompletionCallbacks?: boolean;
31
+ /**
32
+ * Internal-only escape hatch for preserving an ephemeral BTW fork after
33
+ * terminal transition. Most callers should leave this unset.
34
+ */
35
+ suppressBtwCleanup?: boolean;
25
36
  };
26
37
  /**
27
38
  * Extended tasks service with custom methods
@@ -1 +1 @@
1
- {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/services/tasks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/services/tasks.ts"],"names":[],"mappings":"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"}
@@ -849,7 +849,7 @@ var TasksService = class extends DrizzleService {
849
849
  },
850
850
  {
851
851
  ...params,
852
- suppressTerminalSessionIdle: true,
852
+ suppressTerminalSessionStateUpdate: true,
853
853
  suppressTerminalQueueProcessing: true
854
854
  }
855
855
  );
@@ -861,10 +861,17 @@ var TasksService = class extends DrizzleService {
861
861
  );
862
862
  return failedTask;
863
863
  }
864
+ const sessionPatchParams = {
865
+ ...params,
866
+ suppressTerminalQueueProcessing: true
867
+ };
864
868
  await this.app.service("sessions").patch(
865
869
  failedTask.session_id,
866
- { status: SessionStatus.FAILED, ready_for_prompt: true },
867
- params
870
+ {
871
+ status: SessionStatus.FAILED,
872
+ ready_for_prompt: true
873
+ },
874
+ sessionPatchParams
868
875
  ).catch((error) => {
869
876
  console.warn(
870
877
  `[executor-heartbeat] Failed to mark session ${shortId2(failedTask.session_id)} failed after stale heartbeat:`,
@@ -903,11 +910,10 @@ var TasksService = class extends DrizzleService {
903
910
  */
904
911
  async patch(id, data, params) {
905
912
  const nextStatus = data.status;
906
- const mayTransitionStatus = nextStatus === TaskStatus.RUNNING || isAnalyticsTerminalTaskStatus(nextStatus);
907
- const currentTask = mayTransitionStatus ? await this.get(id, params) : void 0;
908
- if (currentTask && isTerminalTaskStatus(currentTask.status) && isTerminalTaskStatus(nextStatus)) {
913
+ const currentTask = nextStatus !== void 0 ? await this.get(id, params) : void 0;
914
+ if (currentTask && isTerminalTaskStatus(currentTask.status) && nextStatus !== void 0) {
909
915
  console.warn(
910
- `\u23ED\uFE0F [TasksService] Ignoring terminal status rewrite for task ${shortId2(currentTask.task_id)} (${currentTask.status} \u2192 ${nextStatus})`
916
+ `\u23ED\uFE0F [TasksService] Ignoring status rewrite for terminal task ${shortId2(currentTask.task_id)} (${currentTask.status} \u2192 ${nextStatus})`
911
917
  );
912
918
  return currentTask;
913
919
  }
@@ -984,49 +990,59 @@ var TasksService = class extends DrizzleService {
984
990
  });
985
991
  }
986
992
  const latestTaskId = session.tasks?.[session.tasks.length - 1];
993
+ const suppressCompletionCallbacks = params?.suppressCompletionCallbacks === true;
994
+ const suppressBtwCleanup = params?.suppressBtwCleanup === true;
987
995
  if (latestTaskId && latestTaskId !== task.task_id) {
988
996
  console.log(
989
- `\u23ED\uFE0F [TasksService] Skipping session IDLE update - task ${shortId2(task.task_id)} is not the latest (latest: ${shortId2(latestTaskId)})`
997
+ `\u23ED\uFE0F [TasksService] Skipping session terminal-state update - task ${shortId2(task.task_id)} is not the latest (latest: ${shortId2(latestTaskId)})`
990
998
  );
991
- await this.dispatchCompletionCallbacks(task, session, params);
999
+ if (!suppressCompletionCallbacks) {
1000
+ await this.dispatchCompletionCallbacks(task, session, params);
1001
+ }
992
1002
  return result;
993
1003
  }
994
1004
  const isUserInitiatedStop = data.status === TaskStatus.STOPPED;
995
1005
  if (isUserInitiatedStop) {
996
1006
  console.log(
997
- `\u23ED\uFE0F [TasksService] Skipping session IDLE update for STOPPED task ${shortId2(task.task_id)} \u2014 stop endpoint handles session state`
1007
+ `\u23ED\uFE0F [TasksService] Skipping session terminal-state update for STOPPED task ${shortId2(task.task_id)} \u2014 stop endpoint handles session state`
998
1008
  );
999
- } else if (params?.suppressTerminalSessionIdle) {
1009
+ } else if (params?.suppressTerminalSessionStateUpdate) {
1000
1010
  console.log(
1001
- `\u23ED\uFE0F [TasksService] Skipping session IDLE update for task ${shortId2(task.task_id)} (${data.status}) due to internal patch params`
1011
+ `\u23ED\uFE0F [TasksService] Skipping session terminal-state update for task ${shortId2(task.task_id)} (${data.status}) due to internal patch params`
1002
1012
  );
1003
1013
  } else {
1004
1014
  await this.app.service("sessions").patch(
1005
1015
  task.session_id,
1006
1016
  {
1007
- status: "idle",
1017
+ status: data.status === TaskStatus.FAILED ? SessionStatus.FAILED : SessionStatus.IDLE,
1008
1018
  ready_for_prompt: true
1009
1019
  },
1010
1020
  params
1011
1021
  );
1012
1022
  console.log(
1013
- `\u2705 [TasksService] Session ${shortId2(task.session_id)} status updated to IDLE (task ${shortId2(task.task_id)} ${data.status})`
1023
+ `\u2705 [TasksService] Session ${shortId2(task.session_id)} status updated after terminal task (task ${shortId2(task.task_id)} ${data.status})`
1014
1024
  );
1015
1025
  }
1016
- await this.dispatchCompletionCallbacks(task, session, params);
1026
+ if (!suppressCompletionCallbacks) {
1027
+ await this.dispatchCompletionCallbacks(task, session, params);
1028
+ }
1017
1029
  if (session.fork_origin === "btw") {
1018
- try {
1019
- await this.app.service("sessions").patch(session.session_id, {
1020
- archived: true,
1021
- archived_reason: "btw_completed"
1022
- });
1023
- console.log(
1024
- `\u{1F4E6} [TasksService] Auto-archived btw fork session ${shortId2(session.session_id)}`
1025
- );
1026
- } catch (error) {
1027
- console.warn(`\u26A0\uFE0F [TasksService] Failed to auto-archive btw fork:`, error);
1030
+ if (!suppressBtwCleanup) {
1031
+ try {
1032
+ await this.app.service("sessions").patch(session.session_id, {
1033
+ archived: true,
1034
+ archived_reason: "btw_completed"
1035
+ });
1036
+ console.log(
1037
+ `\u{1F4E6} [TasksService] Auto-archived btw fork session ${shortId2(session.session_id)}`
1038
+ );
1039
+ } catch (error) {
1040
+ console.warn(`\u26A0\uFE0F [TasksService] Failed to auto-archive btw fork:`, error);
1041
+ }
1042
+ }
1043
+ if (!suppressCompletionCallbacks) {
1044
+ await this.injectBtwResultMessage(task, session, params);
1028
1045
  }
1029
- await this.injectBtwResultMessage(task, session, params);
1030
1046
  }
1031
1047
  const sessionsService = this.app.service("sessions");
1032
1048
  if (!params?.suppressTerminalQueueProcessing && sessionsService.triggerQueueProcessing) {
@@ -1103,11 +1103,15 @@ var SchedulerService = class {
1103
1103
  }
1104
1104
  return;
1105
1105
  }
1106
- console.log(` \u2705 ${schedule.name}: Schedule is due, spawning session...`);
1106
+ console.log(
1107
+ ` \u{1F552} Scheduler due: "${schedule.name}" scheduled_at=${new Date(scheduledRunAt).toISOString()} \u2014 spawning session`
1108
+ );
1107
1109
  await this.spawnScheduledSession(schedule, scheduledRunAt, now, { source: "cron" });
1108
1110
  });
1109
1111
  } else {
1110
- console.log(` \u2705 ${schedule.name}: Schedule is due, spawning session...`);
1112
+ console.log(
1113
+ ` \u{1F552} Scheduler due: "${schedule.name}" scheduled_at=${new Date(scheduledRunAt).toISOString()} \u2014 spawning session`
1114
+ );
1111
1115
  await this.spawnScheduledSession(schedule, scheduledRunAt, now, { source: "cron" });
1112
1116
  }
1113
1117
  }
@@ -0,0 +1,43 @@
1
+ import { type TaskRepository } from '@agor/core/db';
2
+ import type { Application } from '@agor/core/feathers';
3
+ import type { Params, SessionID } from '@agor/core/types';
4
+ import { SessionStatus } from '@agor/core/types';
5
+ import type { SessionsServiceImpl, TasksServiceImpl } from '../declarations.js';
6
+ export interface StopSessionResult {
7
+ success: boolean;
8
+ status?: typeof SessionStatus.IDLE;
9
+ reason?: string;
10
+ stoppedTaskId?: string;
11
+ queuedTasksPreserved?: number;
12
+ }
13
+ export interface StopSessionDeps {
14
+ app: Application;
15
+ taskRepo: Pick<TaskRepository, 'findQueued'>;
16
+ sessionsService: Pick<SessionsServiceImpl, 'get' | 'patch'>;
17
+ tasksService: Pick<TasksServiceImpl, 'patch'>;
18
+ killExecutorProcess: (sessionId: string) => boolean;
19
+ }
20
+ /**
21
+ * Mark a stopped session promptable without letting the session after.patch
22
+ * hook drain the queue while the Stop route still holds the turn lock.
23
+ *
24
+ * The route schedules queue processing after the lock is released. Doing it
25
+ * here would deadlock/retry against the same in-flight lock.
26
+ */
27
+ export declare function markStoppedSessionPromptableNoDrain(sessionsService: Pick<SessionsServiceImpl, 'patch'>, sessionId: SessionID, params?: Params): Promise<void>;
28
+ /**
29
+ * Stop semantics, in one place:
30
+ * - target only the active task for the session;
31
+ * - preserve queued work so it can drain after Stop;
32
+ * - suppress task-terminal side effects that would independently drain or
33
+ * dispatch callbacks for a user-stopped turn;
34
+ * - leave the session idle/promptable before the caller kicks the queue
35
+ * drainer after releasing the session turn lock.
36
+ *
37
+ * Callers must hold the session turn lock while invoking this function, and
38
+ * must trigger queue processing only after the lock is released.
39
+ */
40
+ export declare function stopSessionPreserveQueue(deps: StopSessionDeps, sessionId: SessionID, params?: Params, options?: {
41
+ reason?: string;
42
+ }): Promise<StopSessionResult>;
43
+ //# sourceMappingURL=session-stop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-stop.d.ts","sourceRoot":"","sources":["../../src/utils/session-stop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAsB,aAAa,EAAc,MAAM,kBAAkB,CAAC;AACjF,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGhF,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,aAAa,CAAC,IAAI,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,WAAW,CAAC;IACjB,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAC7C,eAAe,EAAE,IAAI,CAAC,mBAAmB,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC;IAC5D,YAAY,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAC9C,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;CACrD;AAED;;;;;;GAMG;AACH,wBAAsB,mCAAmC,CACvD,eAAe,EAAE,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,EACnD,SAAS,EAAE,SAAS,EACpB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,eAAe,EACrB,SAAS,EAAE,SAAS,EACpB,MAAM,GAAE,MAAW,EACnB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAgE5B"}