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
@@ -15658,6 +15658,7 @@ IMPORTANT:
15658
15658
  {
15659
15659
  folderPath,
15660
15660
  branch_id: resolvedBranchId,
15661
+ source_session_id: ctx.sessionId,
15661
15662
  subpath,
15662
15663
  board_id: resolvedBoardId,
15663
15664
  name: coerceString(args.name),
@@ -17977,7 +17978,11 @@ function registerEnvironmentTools(server, ctx) {
17977
17978
  branchId,
17978
17979
  ctx.baseServiceParams
17979
17980
  );
17980
- return textResult({ success: true, branch });
17981
+ return textResult({
17982
+ success: true,
17983
+ branch,
17984
+ message: "Environment start requested. Poll agor_environment_health and agor_environment_logs for readiness, progress, or failures."
17985
+ });
17981
17986
  } catch (error51) {
17982
17987
  const errorMessage = error51 instanceof Error ? error51.message : "Unknown error";
17983
17988
  const commandOutput = error51 instanceof Error ? error51.commandOutput : void 0;
@@ -18006,7 +18011,11 @@ function registerEnvironmentTools(server, ctx) {
18006
18011
  branchId,
18007
18012
  ctx.baseServiceParams
18008
18013
  );
18009
- return textResult({ success: true, branch });
18014
+ return textResult({
18015
+ success: true,
18016
+ branch,
18017
+ message: "Environment stop requested. Poll agor_environment_health for final status and agor_environment_logs for command output."
18018
+ });
18010
18019
  } catch (error51) {
18011
18020
  return textResult({
18012
18021
  success: false,
@@ -18048,7 +18057,7 @@ function registerEnvironmentTools(server, ctx) {
18048
18057
  server.registerTool(
18049
18058
  "agor_environment_logs",
18050
18059
  {
18051
- description: "Fetch recent logs from a branch environment (non-streaming, last ~100 lines; shell command by default, or HTTP(S) GET webhook when URL-shaped / webhook-only mode)",
18060
+ description: "Fetch recent logs from a branch environment (non-streaming, last ~500 lines; shell command by default, or HTTP(S) GET webhook when URL-shaped / webhook-only mode)",
18052
18061
  annotations: { readOnlyHint: true },
18053
18062
  inputSchema: external_exports.object({
18054
18063
  branchId: mcpRequiredId("branchId", "Branch")
@@ -18137,7 +18146,7 @@ function registerEnvironmentTools(server, ctx) {
18137
18146
  return textResult({
18138
18147
  success: true,
18139
18148
  branch: started,
18140
- message: `Environment variant set to "${updated.environment_variant}" and started.`
18149
+ message: `Environment variant set to "${updated.environment_variant}" and start requested. Poll agor_environment_health and agor_environment_logs for readiness, progress, or failures.`
18141
18150
  });
18142
18151
  } catch (startError) {
18143
18152
  const startMessage = startError instanceof Error ? startError.message : "Unknown error";
@@ -18181,7 +18190,7 @@ function registerEnvironmentTools(server, ctx) {
18181
18190
  return textResult({
18182
18191
  success: true,
18183
18192
  branch,
18184
- message: "Environment nuked successfully - all data and volumes destroyed"
18193
+ message: "Environment nuke requested. Poll agor_environment_health for final status and agor_environment_logs for command output."
18185
18194
  });
18186
18195
  } catch (error51) {
18187
18196
  return textResult({
@@ -21068,7 +21077,11 @@ function registerSearchTools(server, registry2) {
21068
21077
  }
21069
21078
 
21070
21079
  // src/mcp/tools/sessions.ts
21071
- import { BranchRepository as BranchRepository5, shortId as shortId5 } from "@agor/core/db";
21080
+ import {
21081
+ BranchRepository as BranchRepository5,
21082
+ SessionRelationshipRepository,
21083
+ shortId as shortId5
21084
+ } from "@agor/core/db";
21072
21085
  import {
21073
21086
  AVAILABLE_CLAUDE_MODEL_ALIASES,
21074
21087
  CODEX_MODEL_METADATA,
@@ -21603,10 +21616,70 @@ function registerSessionTools(server, ctx) {
21603
21616
  return textResult({ error: `Unknown mode: ${mode}` });
21604
21617
  }
21605
21618
  );
21619
+ server.registerTool(
21620
+ "agor_session_relationships_list",
21621
+ {
21622
+ description: "List durable non-genealogy relationships for a session, including cross-branch remote-created child/parent links. Defaults to the current session.",
21623
+ annotations: { readOnlyHint: true },
21624
+ inputSchema: external_exports.object({
21625
+ sessionId: mcpOptionalId(
21626
+ "sessionId",
21627
+ "Session",
21628
+ "Session ID to inspect (defaults to current session)"
21629
+ )
21630
+ })
21631
+ },
21632
+ async (args) => {
21633
+ const sessionId = args.sessionId ? await resolveSessionId(ctx, args.sessionId) : ctx.sessionId;
21634
+ if (!sessionId) return sessionContextRequiredResult();
21635
+ await ctx.app.service("sessions").get(sessionId, ctx.baseServiceParams);
21636
+ const relationships = await new SessionRelationshipRepository(ctx.db).findForSession(
21637
+ sessionId
21638
+ );
21639
+ return textResult({ relationships });
21640
+ }
21641
+ );
21642
+ server.registerTool(
21643
+ "agor_session_relationships_set_callback",
21644
+ {
21645
+ description: "Enable or disable callback/report-back delivery for a durable session relationship without deleting the relationship itself.",
21646
+ inputSchema: external_exports.object({
21647
+ relationshipId: mcpRequiredString(
21648
+ "relationshipId",
21649
+ "Session relationship ID returned by agor_session_relationships_list"
21650
+ ),
21651
+ callbackEnabled: external_exports.boolean().describe("Whether the remote child should report back.")
21652
+ })
21653
+ },
21654
+ async (args) => {
21655
+ const repo = new SessionRelationshipRepository(ctx.db);
21656
+ const relationshipId = args.relationshipId;
21657
+ const existingRelationship = await repo.get(relationshipId);
21658
+ await ctx.app.service("sessions").get(existingRelationship.source_session_id, ctx.baseServiceParams);
21659
+ const targetSession = await ctx.app.service("sessions").get(existingRelationship.target_session_id, ctx.baseServiceParams);
21660
+ const relationship = await repo.setCallbackEnabled(relationshipId, args.callbackEnabled);
21661
+ const callbackSessionId = relationship.callback_session_id ?? relationship.source_session_id;
21662
+ await ctx.app.service("sessions").patch(
21663
+ relationship.target_session_id,
21664
+ {
21665
+ callback_config: {
21666
+ ...targetSession.callback_config ?? {},
21667
+ enabled: args.callbackEnabled,
21668
+ callback_session_id: callbackSessionId
21669
+ }
21670
+ },
21671
+ {
21672
+ ...ctx.baseServiceParams,
21673
+ _skipRelationshipCallbackSync: true
21674
+ }
21675
+ );
21676
+ return textResult({ relationship });
21677
+ }
21678
+ );
21606
21679
  server.registerTool(
21607
21680
  "agor_sessions_create",
21608
21681
  {
21609
- description: 'Create a new session in an existing branch. Use for starting fresh work on a new task in the same codebase (e.g., new feature branch, separate investigation). Unlike spawn, this creates an independent session with no parent-child relationship. MCP servers are inherited from the branch (if configured) or user defaults, or can be overridden via `mcpServerIds`. Model selection falls back to user defaults and can be overridden via `modelConfig` (accepts either a model ID string like "claude-opus-4-6" or a full {mode, model, effort, advisorModel, provider} object \u2014 call `agor_models_list` to discover valid model IDs per agenticTool). Supports optional callbacks to notify the creating session when the new session completes.',
21682
+ description: 'Create a new session in an existing branch. When called from an MCP session context in the same target branch (the default for branch-local orchestrator agents), the new session is automatically linked to the calling session as its parent \u2014 pass `parentSessionId: null` to create an unlinked root session instead. Cross-branch sessions are not genealogy-linked automatically; use callbacks for remote completion routing. Use for starting work on a new task in the same codebase (e.g., new feature branch, separate investigation). MCP servers are inherited from the branch (if configured) or user defaults, or can be overridden via `mcpServerIds`. Model selection falls back to user defaults and can be overridden via `modelConfig` (accepts either a model ID string like "claude-opus-4-6" or a full {mode, model, effort, advisorModel, provider} object \u2014 call `agor_models_list` to discover valid model IDs per agenticTool). Supports optional callbacks to notify the creating session when the new session completes.',
21610
21683
  inputSchema: external_exports.object({
21611
21684
  branchId: mcpRequiredId(
21612
21685
  "branchId",
@@ -21636,6 +21709,9 @@ function registerSessionTools(server, ctx) {
21636
21709
  callbackMode: external_exports.enum(["once", "persistent"]).optional().describe(
21637
21710
  'Callback firing mode: "once" (default) fires on first completion then auto-disables, "persistent" fires on every completion'
21638
21711
  ),
21712
+ parentSessionId: external_exports.string().min(1, "parentSessionId cannot be empty when provided.").nullish().describe(
21713
+ "Parent session ID to link this session to in the branch-local genealogy tree. Must be in the target branch. When omitted and called from a session MCP context in the same branch, automatically defaults to the calling session. Pass null to explicitly create a root session with no parent; use callbackSessionId for cross-branch routing."
21714
+ ),
21639
21715
  mcpServerIds: external_exports.array(mcpRequiredId("mcpServerIds[]", "MCP server")).optional().describe(
21640
21716
  "MCP server IDs to attach. Overrides branch and user default inheritance. Omit to use branch config > user defaults."
21641
21717
  ),
@@ -21690,6 +21766,37 @@ function registerSessionTools(server, ctx) {
21690
21766
  if (wantsCallback) {
21691
21767
  callbackConfig.callback_mode = args.callbackMode ?? "once";
21692
21768
  }
21769
+ let resolvedParentSessionId;
21770
+ let parentSessionForPatch;
21771
+ let skippedAutoParentDueToBranchMismatch = false;
21772
+ let remoteRelationshipSourceSessionId;
21773
+ let remoteRelationshipSourceBranchId;
21774
+ if (args.parentSessionId !== void 0) {
21775
+ if (args.parentSessionId !== null) {
21776
+ resolvedParentSessionId = await resolveSessionId(ctx, args.parentSessionId);
21777
+ parentSessionForPatch = await ctx.app.service("sessions").get(resolvedParentSessionId, ctx.baseServiceParams);
21778
+ if (parentSessionForPatch.branch_id !== branch.branch_id) {
21779
+ throw new Error(
21780
+ `parentSessionId must reference a session in the target branch (${shortId5(branch.branch_id)}). For cross-branch completion routing, use enableCallback/callbackSessionId instead of genealogy.`
21781
+ );
21782
+ }
21783
+ }
21784
+ } else if (ctx.sessionId) {
21785
+ const callingSession = await ctx.app.service("sessions").get(ctx.sessionId, ctx.baseServiceParams);
21786
+ if (callingSession.branch_id === branch.branch_id) {
21787
+ resolvedParentSessionId = callingSession.session_id;
21788
+ parentSessionForPatch = callingSession;
21789
+ } else {
21790
+ skippedAutoParentDueToBranchMismatch = true;
21791
+ remoteRelationshipSourceSessionId = callingSession.session_id;
21792
+ remoteRelationshipSourceBranchId = callingSession.branch_id;
21793
+ }
21794
+ }
21795
+ if (remoteRelationshipSourceSessionId && effectiveCallbackSessionId) {
21796
+ callbackConfig.enabled ??= Boolean(wantsCallback);
21797
+ callbackConfig.callback_session_id ??= effectiveCallbackSessionId;
21798
+ callbackConfig.callback_created_by ??= ctx.userId;
21799
+ }
21693
21800
  const sessionData = {
21694
21801
  branch_id: branch.branch_id,
21695
21802
  agentic_tool: agenticTool,
@@ -21707,10 +21814,44 @@ function registerSessionTools(server, ctx) {
21707
21814
  base_sha: currentSha,
21708
21815
  current_sha: currentSha
21709
21816
  },
21710
- genealogy: { children: [] },
21817
+ genealogy: {
21818
+ ...resolvedParentSessionId && { parent_session_id: resolvedParentSessionId },
21819
+ children: []
21820
+ },
21711
21821
  tasks: []
21712
21822
  };
21713
21823
  const session = await ctx.app.service("sessions").create(sessionData, ctx.baseServiceParams);
21824
+ const remoteRelationship = remoteRelationshipSourceSessionId ? await new SessionRelationshipRepository(ctx.db).create({
21825
+ source_session_id: remoteRelationshipSourceSessionId,
21826
+ target_session_id: session.session_id,
21827
+ relationship_type: "remote_create",
21828
+ created_by: ctx.userId,
21829
+ callback_enabled: Boolean(wantsCallback),
21830
+ // Keep the durable relationship target even when callbacks are
21831
+ // muted. callback_enabled/callback_config.enabled are the delivery
21832
+ // switches; callback_session_id is the stable endpoint to re-enable.
21833
+ callback_session_id: effectiveCallbackSessionId ? effectiveCallbackSessionId : null,
21834
+ data: {
21835
+ source_branch_id: remoteRelationshipSourceBranchId,
21836
+ target_branch_id: branch.branch_id
21837
+ }
21838
+ }) : null;
21839
+ if (remoteRelationship && remoteRelationshipSourceSessionId) {
21840
+ const sourceSession = await ctx.app.service("sessions").get(remoteRelationshipSourceSessionId, ctx.baseServiceParams);
21841
+ ctx.app.service("sessions").emit?.("patched", sourceSession, ctx.baseServiceParams);
21842
+ }
21843
+ if (resolvedParentSessionId && parentSessionForPatch) {
21844
+ await ctx.app.service("sessions").patch(
21845
+ resolvedParentSessionId,
21846
+ {
21847
+ genealogy: {
21848
+ ...parentSessionForPatch.genealogy,
21849
+ children: [...parentSessionForPatch.genealogy?.children ?? [], session.session_id]
21850
+ }
21851
+ },
21852
+ ctx.baseServiceParams
21853
+ );
21854
+ }
21714
21855
  const mcpAttachFailures = [];
21715
21856
  if (mcpServerIds && mcpServerIds.length > 0) {
21716
21857
  for (const mcpServerId of mcpServerIds) {
@@ -21739,11 +21880,13 @@ function registerSessionTools(server, ctx) {
21739
21880
  );
21740
21881
  }
21741
21882
  const callbackNote = callbackConfig.callback_session_id ? ` Callback will be sent to session ${shortId5(callbackConfig.callback_session_id)} on completion.` : "";
21883
+ const parentNote = resolvedParentSessionId ? ` Linked to parent session ${shortId5(resolvedParentSessionId)}.` : skippedAutoParentDueToBranchMismatch ? " Not genealogy-linked because the target branch differs from the calling session branch." : "";
21742
21884
  const mcpFailureNote = mcpAttachFailures.length > 0 ? ` Warning: ${mcpAttachFailures.length} requested MCP server(s) failed to attach \u2014 see mcpAttachFailures.` : "";
21743
21885
  return textResult({
21744
21886
  session: redactSessionForMcp(session),
21745
21887
  taskId: initialTask?.task_id,
21746
- note: args.initialPrompt ? `Session created and initial prompt execution started.${callbackNote}${mcpFailureNote}` : `Session created successfully.${callbackNote}${mcpFailureNote}`,
21888
+ note: args.initialPrompt ? `Session created and initial prompt execution started.${parentNote}${callbackNote}${mcpFailureNote}` : `Session created successfully.${parentNote}${callbackNote}${mcpFailureNote}`,
21889
+ ...remoteRelationship && { remoteRelationship },
21747
21890
  ...mcpAttachFailures.length > 0 && { mcpAttachFailures }
21748
21891
  });
21749
21892
  }
@@ -21992,7 +22135,7 @@ function registerSessionTools(server, ctx) {
21992
22135
  server.registerTool(
21993
22136
  "agor_sessions_stop",
21994
22137
  {
21995
- description: "Stop a running session. Kills the executor process and sets the session to idle. Use this for emergency stops, timeout-based cancellation, or human-in-the-loop gates. Only works on sessions in active states (running, awaiting_permission, stopping).",
22138
+ description: "Stop a running session. Kills the executor process and sets the session to idle. Use this for emergency stops, timeout-based cancellation, or human-in-the-loop gates. Only works on sessions in active states (running, stopping, awaiting_permission, awaiting_input).",
21996
22139
  annotations: { destructiveHint: true },
21997
22140
  inputSchema: external_exports.object({
21998
22141
  sessionId: mcpRequiredId("sessionId", "Session", "Session ID to stop (UUIDv7 or short ID)"),
@@ -22430,12 +22573,7 @@ async function appendSystemMessage(opts) {
22430
22573
  }
22431
22574
 
22432
22575
  // src/utils/session-tasks.ts
22433
- import { TaskStatus } from "@agor/core/types";
22434
- var ACTIVE_TASK_STATUSES = /* @__PURE__ */ new Set([
22435
- TaskStatus.RUNNING,
22436
- TaskStatus.AWAITING_PERMISSION,
22437
- TaskStatus.STOPPING
22438
- ]);
22576
+ import { EXECUTING_TASK_STATUSES, isTaskExecuting } from "@agor/core/types";
22439
22577
  function recencyKey(t) {
22440
22578
  return new Date(t.started_at || t.created_at).getTime();
22441
22579
  }
@@ -22456,7 +22594,7 @@ async function findTasksForSession(app, sessionId, params) {
22456
22594
  async function findHostTaskForSession(app, sessionId, params) {
22457
22595
  const all = await findTasksForSession(app, sessionId, params);
22458
22596
  if (all.length === 0) return void 0;
22459
- return all.find((t) => ACTIVE_TASK_STATUSES.has(t.status)) ?? all[0];
22597
+ return all.find((t) => isTaskExecuting(t)) ?? all[0];
22460
22598
  }
22461
22599
 
22462
22600
  // src/widgets/env-vars/index.ts
@@ -14977,7 +14977,11 @@ var agenticToolConfigSchema = external_exports.object({
14977
14977
  );
14978
14978
 
14979
14979
  // src/mcp/tools/sessions.ts
14980
- import { BranchRepository as BranchRepository5, shortId as shortId5 } from "@agor/core/db";
14980
+ import {
14981
+ BranchRepository as BranchRepository5,
14982
+ SessionRelationshipRepository,
14983
+ shortId as shortId5
14984
+ } from "@agor/core/db";
14981
14985
  import {
14982
14986
  AVAILABLE_CLAUDE_MODEL_ALIASES,
14983
14987
  CODEX_MODEL_METADATA,
@@ -15036,12 +15040,7 @@ import { generateId as generateId2, SessionRepository as SessionRepository3 } fr
15036
15040
  import { MessageRole } from "@agor/core/types";
15037
15041
 
15038
15042
  // src/utils/session-tasks.ts
15039
- import { TaskStatus } from "@agor/core/types";
15040
- var ACTIVE_TASK_STATUSES = /* @__PURE__ */ new Set([
15041
- TaskStatus.RUNNING,
15042
- TaskStatus.AWAITING_PERMISSION,
15043
- TaskStatus.STOPPING
15044
- ]);
15043
+ import { EXECUTING_TASK_STATUSES, isTaskExecuting } from "@agor/core/types";
15045
15044
 
15046
15045
  // src/widgets/env-vars/index.ts
15047
15046
  import { ENV_VAR_CONSTRAINTS, isEnvVarAllowed, validateEnvVar } from "@agor/core/config";
@@ -1 +1 @@
1
- {"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/artifacts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAcH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAgE/C,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAmxB9E"}
1
+ {"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/artifacts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAcH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAgE/C,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAoxB9E"}
@@ -14944,7 +14944,11 @@ var agenticToolConfigSchema = external_exports.object({
14944
14944
  );
14945
14945
 
14946
14946
  // src/mcp/tools/sessions.ts
14947
- import { BranchRepository as BranchRepository4, shortId as shortId5 } from "@agor/core/db";
14947
+ import {
14948
+ BranchRepository as BranchRepository4,
14949
+ SessionRelationshipRepository,
14950
+ shortId as shortId5
14951
+ } from "@agor/core/db";
14948
14952
  import {
14949
14953
  AVAILABLE_CLAUDE_MODEL_ALIASES,
14950
14954
  CODEX_MODEL_METADATA,
@@ -15003,12 +15007,7 @@ import { generateId as generateId2, SessionRepository as SessionRepository3 } fr
15003
15007
  import { MessageRole } from "@agor/core/types";
15004
15008
 
15005
15009
  // src/utils/session-tasks.ts
15006
- import { TaskStatus } from "@agor/core/types";
15007
- var ACTIVE_TASK_STATUSES = /* @__PURE__ */ new Set([
15008
- TaskStatus.RUNNING,
15009
- TaskStatus.AWAITING_PERMISSION,
15010
- TaskStatus.STOPPING
15011
- ]);
15010
+ import { EXECUTING_TASK_STATUSES, isTaskExecuting } from "@agor/core/types";
15012
15011
 
15013
15012
  // src/widgets/env-vars/index.ts
15014
15013
  import { ENV_VAR_CONSTRAINTS, isEnvVarAllowed, validateEnvVar } from "@agor/core/config";
@@ -15223,6 +15222,7 @@ IMPORTANT:
15223
15222
  {
15224
15223
  folderPath,
15225
15224
  branch_id: resolvedBranchId,
15225
+ source_session_id: ctx.sessionId,
15226
15226
  subpath,
15227
15227
  board_id: resolvedBoardId,
15228
15228
  name: coerceString(args.name),
@@ -14957,7 +14957,11 @@ var agenticToolConfigSchema = external_exports.object({
14957
14957
  );
14958
14958
 
14959
14959
  // src/mcp/tools/sessions.ts
14960
- import { BranchRepository as BranchRepository5, shortId as shortId5 } from "@agor/core/db";
14960
+ import {
14961
+ BranchRepository as BranchRepository5,
14962
+ SessionRelationshipRepository,
14963
+ shortId as shortId5
14964
+ } from "@agor/core/db";
14961
14965
  import {
14962
14966
  AVAILABLE_CLAUDE_MODEL_ALIASES,
14963
14967
  CODEX_MODEL_METADATA,
@@ -15016,12 +15020,7 @@ import { generateId as generateId2, SessionRepository as SessionRepository3 } fr
15016
15020
  import { MessageRole } from "@agor/core/types";
15017
15021
 
15018
15022
  // src/utils/session-tasks.ts
15019
- import { TaskStatus } from "@agor/core/types";
15020
- var ACTIVE_TASK_STATUSES = /* @__PURE__ */ new Set([
15021
- TaskStatus.RUNNING,
15022
- TaskStatus.AWAITING_PERMISSION,
15023
- TaskStatus.STOPPING
15024
- ]);
15023
+ import { EXECUTING_TASK_STATUSES, isTaskExecuting } from "@agor/core/types";
15025
15024
 
15026
15025
  // src/widgets/env-vars/index.ts
15027
15026
  import { ENV_VAR_CONSTRAINTS, isEnvVarAllowed, validateEnvVar } from "@agor/core/config";
@@ -15518,7 +15518,11 @@ var agenticToolConfigSchema = external_exports.object({
15518
15518
  );
15519
15519
 
15520
15520
  // src/mcp/tools/sessions.ts
15521
- import { BranchRepository as BranchRepository4, shortId as shortId4 } from "@agor/core/db";
15521
+ import {
15522
+ BranchRepository as BranchRepository4,
15523
+ SessionRelationshipRepository,
15524
+ shortId as shortId4
15525
+ } from "@agor/core/db";
15522
15526
  import {
15523
15527
  AVAILABLE_CLAUDE_MODEL_ALIASES,
15524
15528
  CODEX_MODEL_METADATA,
@@ -15577,12 +15581,7 @@ import { generateId as generateId2, SessionRepository as SessionRepository3 } fr
15577
15581
  import { MessageRole } from "@agor/core/types";
15578
15582
 
15579
15583
  // src/utils/session-tasks.ts
15580
- import { TaskStatus } from "@agor/core/types";
15581
- var ACTIVE_TASK_STATUSES = /* @__PURE__ */ new Set([
15582
- TaskStatus.RUNNING,
15583
- TaskStatus.AWAITING_PERMISSION,
15584
- TaskStatus.STOPPING
15585
- ]);
15584
+ import { EXECUTING_TASK_STATUSES, isTaskExecuting } from "@agor/core/types";
15586
15585
 
15587
15586
  // src/widgets/env-vars/index.ts
15588
15587
  import { ENV_VAR_CONSTRAINTS, isEnvVarAllowed, validateEnvVar } from "@agor/core/config";
@@ -14952,7 +14952,11 @@ var agenticToolConfigSchema = external_exports.object({
14952
14952
  );
14953
14953
 
14954
14954
  // src/mcp/tools/sessions.ts
14955
- import { BranchRepository as BranchRepository5, shortId as shortId5 } from "@agor/core/db";
14955
+ import {
14956
+ BranchRepository as BranchRepository5,
14957
+ SessionRelationshipRepository,
14958
+ shortId as shortId5
14959
+ } from "@agor/core/db";
14956
14960
  import {
14957
14961
  AVAILABLE_CLAUDE_MODEL_ALIASES,
14958
14962
  CODEX_MODEL_METADATA,
@@ -15011,12 +15015,7 @@ import { generateId as generateId2, SessionRepository as SessionRepository3 } fr
15011
15015
  import { MessageRole } from "@agor/core/types";
15012
15016
 
15013
15017
  // src/utils/session-tasks.ts
15014
- import { TaskStatus } from "@agor/core/types";
15015
- var ACTIVE_TASK_STATUSES = /* @__PURE__ */ new Set([
15016
- TaskStatus.RUNNING,
15017
- TaskStatus.AWAITING_PERMISSION,
15018
- TaskStatus.STOPPING
15019
- ]);
15018
+ import { EXECUTING_TASK_STATUSES, isTaskExecuting } from "@agor/core/types";
15020
15019
 
15021
15020
  // src/widgets/env-vars/index.ts
15022
15021
  import { ENV_VAR_CONSTRAINTS, isEnvVarAllowed, validateEnvVar } from "@agor/core/config";
@@ -14978,7 +14978,11 @@ var agenticToolConfigSchema = external_exports.object({
14978
14978
  );
14979
14979
 
14980
14980
  // src/mcp/tools/sessions.ts
14981
- import { BranchRepository as BranchRepository5, shortId as shortId5 } from "@agor/core/db";
14981
+ import {
14982
+ BranchRepository as BranchRepository5,
14983
+ SessionRelationshipRepository,
14984
+ shortId as shortId5
14985
+ } from "@agor/core/db";
14982
14986
  import {
14983
14987
  AVAILABLE_CLAUDE_MODEL_ALIASES,
14984
14988
  CODEX_MODEL_METADATA,
@@ -15037,12 +15041,7 @@ import { generateId as generateId2, SessionRepository as SessionRepository3 } fr
15037
15041
  import { MessageRole } from "@agor/core/types";
15038
15042
 
15039
15043
  // src/utils/session-tasks.ts
15040
- import { TaskStatus } from "@agor/core/types";
15041
- var ACTIVE_TASK_STATUSES = /* @__PURE__ */ new Set([
15042
- TaskStatus.RUNNING,
15043
- TaskStatus.AWAITING_PERMISSION,
15044
- TaskStatus.STOPPING
15045
- ]);
15044
+ import { EXECUTING_TASK_STATUSES, isTaskExecuting } from "@agor/core/types";
15046
15045
 
15047
15046
  // src/widgets/env-vars/index.ts
15048
15047
  import { ENV_VAR_CONSTRAINTS, isEnvVarAllowed, validateEnvVar } from "@agor/core/config";
@@ -1 +1 @@
1
- {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/environment.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI/C,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CA4SjF"}
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/environment.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI/C,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAyTjF"}
@@ -14955,7 +14955,11 @@ var agenticToolConfigSchema = external_exports.object({
14955
14955
  );
14956
14956
 
14957
14957
  // src/mcp/tools/sessions.ts
14958
- import { BranchRepository as BranchRepository5, shortId as shortId5 } from "@agor/core/db";
14958
+ import {
14959
+ BranchRepository as BranchRepository5,
14960
+ SessionRelationshipRepository,
14961
+ shortId as shortId5
14962
+ } from "@agor/core/db";
14959
14963
  import {
14960
14964
  AVAILABLE_CLAUDE_MODEL_ALIASES,
14961
14965
  CODEX_MODEL_METADATA,
@@ -15014,12 +15018,7 @@ import { generateId as generateId2, SessionRepository as SessionRepository3 } fr
15014
15018
  import { MessageRole } from "@agor/core/types";
15015
15019
 
15016
15020
  // src/utils/session-tasks.ts
15017
- import { TaskStatus } from "@agor/core/types";
15018
- var ACTIVE_TASK_STATUSES = /* @__PURE__ */ new Set([
15019
- TaskStatus.RUNNING,
15020
- TaskStatus.AWAITING_PERMISSION,
15021
- TaskStatus.STOPPING
15022
- ]);
15021
+ import { EXECUTING_TASK_STATUSES, isTaskExecuting } from "@agor/core/types";
15023
15022
 
15024
15023
  // src/widgets/env-vars/index.ts
15025
15024
  import { ENV_VAR_CONSTRAINTS, isEnvVarAllowed, validateEnvVar } from "@agor/core/config";
@@ -15104,7 +15103,11 @@ function registerEnvironmentTools(server, ctx) {
15104
15103
  branchId,
15105
15104
  ctx.baseServiceParams
15106
15105
  );
15107
- return textResult({ success: true, branch });
15106
+ return textResult({
15107
+ success: true,
15108
+ branch,
15109
+ message: "Environment start requested. Poll agor_environment_health and agor_environment_logs for readiness, progress, or failures."
15110
+ });
15108
15111
  } catch (error51) {
15109
15112
  const errorMessage = error51 instanceof Error ? error51.message : "Unknown error";
15110
15113
  const commandOutput = error51 instanceof Error ? error51.commandOutput : void 0;
@@ -15133,7 +15136,11 @@ function registerEnvironmentTools(server, ctx) {
15133
15136
  branchId,
15134
15137
  ctx.baseServiceParams
15135
15138
  );
15136
- return textResult({ success: true, branch });
15139
+ return textResult({
15140
+ success: true,
15141
+ branch,
15142
+ message: "Environment stop requested. Poll agor_environment_health for final status and agor_environment_logs for command output."
15143
+ });
15137
15144
  } catch (error51) {
15138
15145
  return textResult({
15139
15146
  success: false,
@@ -15175,7 +15182,7 @@ function registerEnvironmentTools(server, ctx) {
15175
15182
  server.registerTool(
15176
15183
  "agor_environment_logs",
15177
15184
  {
15178
- description: "Fetch recent logs from a branch environment (non-streaming, last ~100 lines; shell command by default, or HTTP(S) GET webhook when URL-shaped / webhook-only mode)",
15185
+ description: "Fetch recent logs from a branch environment (non-streaming, last ~500 lines; shell command by default, or HTTP(S) GET webhook when URL-shaped / webhook-only mode)",
15179
15186
  annotations: { readOnlyHint: true },
15180
15187
  inputSchema: external_exports.object({
15181
15188
  branchId: mcpRequiredId("branchId", "Branch")
@@ -15264,7 +15271,7 @@ function registerEnvironmentTools(server, ctx) {
15264
15271
  return textResult({
15265
15272
  success: true,
15266
15273
  branch: started,
15267
- message: `Environment variant set to "${updated.environment_variant}" and started.`
15274
+ message: `Environment variant set to "${updated.environment_variant}" and start requested. Poll agor_environment_health and agor_environment_logs for readiness, progress, or failures.`
15268
15275
  });
15269
15276
  } catch (startError) {
15270
15277
  const startMessage = startError instanceof Error ? startError.message : "Unknown error";
@@ -15308,7 +15315,7 @@ function registerEnvironmentTools(server, ctx) {
15308
15315
  return textResult({
15309
15316
  success: true,
15310
15317
  branch,
15311
- message: "Environment nuked successfully - all data and volumes destroyed"
15318
+ message: "Environment nuke requested. Poll agor_environment_health for final status and agor_environment_logs for command output."
15312
15319
  });
15313
15320
  } catch (error51) {
15314
15321
  return textResult({
@@ -15017,7 +15017,11 @@ var agenticToolConfigSchema = external_exports.object({
15017
15017
  );
15018
15018
 
15019
15019
  // src/mcp/tools/sessions.ts
15020
- import { BranchRepository as BranchRepository4, shortId as shortId5 } from "@agor/core/db";
15020
+ import {
15021
+ BranchRepository as BranchRepository4,
15022
+ SessionRelationshipRepository,
15023
+ shortId as shortId5
15024
+ } from "@agor/core/db";
15021
15025
  import {
15022
15026
  AVAILABLE_CLAUDE_MODEL_ALIASES,
15023
15027
  CODEX_MODEL_METADATA,
@@ -15076,12 +15080,7 @@ import { generateId as generateId2, SessionRepository as SessionRepository3 } fr
15076
15080
  import { MessageRole } from "@agor/core/types";
15077
15081
 
15078
15082
  // src/utils/session-tasks.ts
15079
- import { TaskStatus } from "@agor/core/types";
15080
- var ACTIVE_TASK_STATUSES = /* @__PURE__ */ new Set([
15081
- TaskStatus.RUNNING,
15082
- TaskStatus.AWAITING_PERMISSION,
15083
- TaskStatus.STOPPING
15084
- ]);
15083
+ import { EXECUTING_TASK_STATUSES, isTaskExecuting } from "@agor/core/types";
15085
15084
 
15086
15085
  // src/widgets/env-vars/index.ts
15087
15086
  import { ENV_VAR_CONSTRAINTS, isEnvVarAllowed, validateEnvVar } from "@agor/core/config";
@@ -14944,7 +14944,11 @@ var agenticToolConfigSchema = external_exports.object({
14944
14944
  );
14945
14945
 
14946
14946
  // src/mcp/tools/sessions.ts
14947
- import { BranchRepository as BranchRepository5, shortId as shortId5 } from "@agor/core/db";
14947
+ import {
14948
+ BranchRepository as BranchRepository5,
14949
+ SessionRelationshipRepository,
14950
+ shortId as shortId5
14951
+ } from "@agor/core/db";
14948
14952
  import {
14949
14953
  AVAILABLE_CLAUDE_MODEL_ALIASES,
14950
14954
  CODEX_MODEL_METADATA,
@@ -15003,12 +15007,7 @@ import { generateId as generateId2, SessionRepository as SessionRepository3 } fr
15003
15007
  import { MessageRole } from "@agor/core/types";
15004
15008
 
15005
15009
  // src/utils/session-tasks.ts
15006
- import { TaskStatus } from "@agor/core/types";
15007
- var ACTIVE_TASK_STATUSES = /* @__PURE__ */ new Set([
15008
- TaskStatus.RUNNING,
15009
- TaskStatus.AWAITING_PERMISSION,
15010
- TaskStatus.STOPPING
15011
- ]);
15010
+ import { EXECUTING_TASK_STATUSES, isTaskExecuting } from "@agor/core/types";
15012
15011
 
15013
15012
  // src/widgets/env-vars/index.ts
15014
15013
  import { ENV_VAR_CONSTRAINTS, isEnvVarAllowed, validateEnvVar } from "@agor/core/config";
@@ -14975,7 +14975,11 @@ var agenticToolConfigSchema = external_exports.object({
14975
14975
  );
14976
14976
 
14977
14977
  // src/mcp/tools/sessions.ts
14978
- import { BranchRepository as BranchRepository5, shortId as shortId5 } from "@agor/core/db";
14978
+ import {
14979
+ BranchRepository as BranchRepository5,
14980
+ SessionRelationshipRepository,
14981
+ shortId as shortId5
14982
+ } from "@agor/core/db";
14979
14983
  import {
14980
14984
  AVAILABLE_CLAUDE_MODEL_ALIASES,
14981
14985
  CODEX_MODEL_METADATA,
@@ -15034,12 +15038,7 @@ import { generateId as generateId2, SessionRepository as SessionRepository2 } fr
15034
15038
  import { MessageRole } from "@agor/core/types";
15035
15039
 
15036
15040
  // src/utils/session-tasks.ts
15037
- import { TaskStatus } from "@agor/core/types";
15038
- var ACTIVE_TASK_STATUSES = /* @__PURE__ */ new Set([
15039
- TaskStatus.RUNNING,
15040
- TaskStatus.AWAITING_PERMISSION,
15041
- TaskStatus.STOPPING
15042
- ]);
15041
+ import { EXECUTING_TASK_STATUSES, isTaskExecuting } from "@agor/core/types";
15043
15042
 
15044
15043
  // src/widgets/env-vars/index.ts
15045
15044
  import { ENV_VAR_CONSTRAINTS, isEnvVarAllowed, validateEnvVar } from "@agor/core/config";
@@ -14944,7 +14944,11 @@ var agenticToolConfigSchema = external_exports.object({
14944
14944
  );
14945
14945
 
14946
14946
  // src/mcp/tools/sessions.ts
14947
- import { BranchRepository as BranchRepository5, shortId as shortId5 } from "@agor/core/db";
14947
+ import {
14948
+ BranchRepository as BranchRepository5,
14949
+ SessionRelationshipRepository,
14950
+ shortId as shortId5
14951
+ } from "@agor/core/db";
14948
14952
  import {
14949
14953
  AVAILABLE_CLAUDE_MODEL_ALIASES,
14950
14954
  CODEX_MODEL_METADATA,
@@ -15003,12 +15007,7 @@ import { generateId as generateId2, SessionRepository as SessionRepository3 } fr
15003
15007
  import { MessageRole } from "@agor/core/types";
15004
15008
 
15005
15009
  // src/utils/session-tasks.ts
15006
- import { TaskStatus } from "@agor/core/types";
15007
- var ACTIVE_TASK_STATUSES = /* @__PURE__ */ new Set([
15008
- TaskStatus.RUNNING,
15009
- TaskStatus.AWAITING_PERMISSION,
15010
- TaskStatus.STOPPING
15011
- ]);
15010
+ import { EXECUTING_TASK_STATUSES, isTaskExecuting } from "@agor/core/types";
15012
15011
 
15013
15012
  // src/widgets/env-vars/index.ts
15014
15013
  import { ENV_VAR_CONSTRAINTS, isEnvVarAllowed, validateEnvVar } from "@agor/core/config";