agor-live 0.12.2 → 0.12.3

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 (372) hide show
  1. package/dist/core/api/index.d.cts +4 -4
  2. package/dist/core/api/index.d.ts +4 -4
  3. package/dist/core/{board-DCNkcsyf.d.cts → board-ByCag4EG.d.cts} +8 -1
  4. package/dist/core/{board-C-PU8jok.d.ts → board-CZuyMRpr.d.ts} +8 -1
  5. package/dist/core/claude/index.cjs +46 -5
  6. package/dist/core/claude/index.js +51 -21
  7. package/dist/core/{client-CGO13BG6.d.ts → client-BoLj-jqT.d.ts} +30 -5
  8. package/dist/core/{client-DKbFqX_X.d.cts → client-gnSCmSyL.d.cts} +30 -5
  9. package/dist/core/config/browser.d.cts +1 -1
  10. package/dist/core/config/browser.d.ts +1 -1
  11. package/dist/core/config/index.cjs +60 -4
  12. package/dist/core/config/index.d.cts +6 -5
  13. package/dist/core/config/index.d.ts +6 -5
  14. package/dist/core/config/index.js +64 -20
  15. package/dist/core/{config-manager-DGBdhxtZ.d.ts → config-manager-BLDGbZHT.d.ts} +16 -2
  16. package/dist/core/{config-manager-sCgziLkz.d.cts → config-manager-CsBk-Rh2.d.cts} +16 -2
  17. package/dist/core/db/index.cjs +332 -60
  18. package/dist/core/db/index.d.cts +33 -7
  19. package/dist/core/db/index.d.ts +33 -7
  20. package/dist/core/db/index.js +338 -77
  21. package/dist/core/drizzle/postgres/meta/_journal.json +1 -1
  22. package/dist/core/drizzle/sqlite/meta/_journal.json +1 -1
  23. package/dist/core/{feathers-B0zjReEk.d.ts → feathers-CYMJeMWB.d.ts} +1 -1
  24. package/dist/core/{feathers-C1uChqXy.d.cts → feathers-Cyk1lpAM.d.cts} +1 -1
  25. package/dist/core/gateway/index.cjs +137 -12
  26. package/dist/core/gateway/index.d.cts +22 -6
  27. package/dist/core/gateway/index.d.ts +22 -6
  28. package/dist/core/gateway/index.js +137 -12
  29. package/dist/core/{gateway-Dy9fVyiS.d.ts → gateway-B4CaePYV.d.ts} +2 -2
  30. package/dist/core/{gateway-DGNtjRnd.d.cts → gateway-C2NOdrxu.d.cts} +2 -2
  31. package/dist/core/git/index.d.cts +2 -2
  32. package/dist/core/git/index.d.ts +2 -2
  33. package/dist/core/index.cjs +226 -48
  34. package/dist/core/index.d.cts +8 -8
  35. package/dist/core/index.d.ts +8 -8
  36. package/dist/core/index.js +230 -64
  37. package/dist/core/mcp/index.cjs +24 -2
  38. package/dist/core/mcp/index.js +26 -4
  39. package/dist/core/seed/index.cjs +83 -13
  40. package/dist/core/seed/index.js +88 -29
  41. package/dist/core/{session-Bt9i9089.d.cts → session-BJbTzw3y.d.cts} +17 -1
  42. package/dist/core/{session-Da9rf6n5.d.ts → session-DLVkt-jY.d.ts} +17 -1
  43. package/dist/core/templates/session-context.d.cts +1 -1
  44. package/dist/core/templates/session-context.d.ts +1 -1
  45. package/dist/core/types/index.d.cts +6 -6
  46. package/dist/core/types/index.d.ts +6 -6
  47. package/dist/core/{types-D_wAaaE3.d.cts → types-Ddri21rw.d.cts} +18 -0
  48. package/dist/core/{types-D_wAaaE3.d.ts → types-Ddri21rw.d.ts} +18 -0
  49. package/dist/core/unix/index.cjs +63 -6
  50. package/dist/core/unix/index.d.cts +4 -3
  51. package/dist/core/unix/index.d.ts +4 -3
  52. package/dist/core/unix/index.js +68 -22
  53. package/dist/core/{user-DT1Qzfep.d.ts → user-B77oCF14.d.ts} +1 -1
  54. package/dist/core/{user-C5id0Zhj.d.cts → user-LBRon9n1.d.cts} +1 -1
  55. package/dist/core/utils/permission-mode-mapper.d.cts +1 -1
  56. package/dist/core/utils/permission-mode-mapper.d.ts +1 -1
  57. package/dist/core/utils/url.cjs +22 -0
  58. package/dist/core/utils/url.d.cts +45 -1
  59. package/dist/core/utils/url.d.ts +45 -1
  60. package/dist/core/utils/url.js +18 -0
  61. package/dist/daemon/index.js +168 -38
  62. package/dist/daemon/mcp/routes.js +5 -5
  63. package/dist/daemon/services/gateway.d.ts +9 -0
  64. package/dist/daemon/services/gateway.js +73 -6
  65. package/dist/daemon/services/repos.js +1 -0
  66. package/dist/daemon/services/thread-session-map.d.ts +6 -0
  67. package/dist/daemon/services/thread-session-map.js +9 -0
  68. package/dist/executor/cli.d.ts +0 -0
  69. package/dist/executor/cli.d.ts.map +0 -0
  70. package/dist/executor/cli.js +0 -0
  71. package/dist/executor/commands/git.d.ts +0 -0
  72. package/dist/executor/commands/git.d.ts.map +1 -1
  73. package/dist/executor/commands/git.js +3 -2
  74. package/dist/executor/commands/index.d.ts +0 -0
  75. package/dist/executor/commands/index.d.ts.map +0 -0
  76. package/dist/executor/commands/index.js +0 -0
  77. package/dist/executor/commands/unix.d.ts +0 -0
  78. package/dist/executor/commands/unix.d.ts.map +0 -0
  79. package/dist/executor/commands/unix.js +0 -0
  80. package/dist/executor/commands/zellij.d.ts +0 -0
  81. package/dist/executor/commands/zellij.d.ts.map +0 -0
  82. package/dist/executor/commands/zellij.js +0 -0
  83. package/dist/executor/config.d.ts +0 -0
  84. package/dist/executor/config.d.ts.map +0 -0
  85. package/dist/executor/config.js +0 -0
  86. package/dist/executor/db/feathers-repositories.d.ts +0 -0
  87. package/dist/executor/db/feathers-repositories.d.ts.map +0 -0
  88. package/dist/executor/db/feathers-repositories.js +0 -0
  89. package/dist/executor/handlers/sdk/base-executor.d.ts +0 -0
  90. package/dist/executor/handlers/sdk/base-executor.d.ts.map +0 -0
  91. package/dist/executor/handlers/sdk/base-executor.js +0 -0
  92. package/dist/executor/handlers/sdk/claude.d.ts +0 -0
  93. package/dist/executor/handlers/sdk/claude.d.ts.map +0 -0
  94. package/dist/executor/handlers/sdk/claude.js +0 -0
  95. package/dist/executor/handlers/sdk/codex.d.ts +0 -0
  96. package/dist/executor/handlers/sdk/codex.d.ts.map +0 -0
  97. package/dist/executor/handlers/sdk/codex.js +0 -0
  98. package/dist/executor/handlers/sdk/gemini.d.ts +0 -0
  99. package/dist/executor/handlers/sdk/gemini.d.ts.map +0 -0
  100. package/dist/executor/handlers/sdk/gemini.js +0 -0
  101. package/dist/executor/handlers/sdk/opencode.d.ts +0 -0
  102. package/dist/executor/handlers/sdk/opencode.d.ts.map +0 -0
  103. package/dist/executor/handlers/sdk/opencode.js +0 -0
  104. package/dist/executor/handlers/sdk/tool-registry.d.ts +0 -0
  105. package/dist/executor/handlers/sdk/tool-registry.d.ts.map +0 -0
  106. package/dist/executor/handlers/sdk/tool-registry.js +0 -0
  107. package/dist/executor/index.d.ts +0 -0
  108. package/dist/executor/index.d.ts.map +0 -0
  109. package/dist/executor/index.js +0 -0
  110. package/dist/executor/payload-types.d.ts +8 -0
  111. package/dist/executor/payload-types.d.ts.map +1 -1
  112. package/dist/executor/payload-types.js +2 -0
  113. package/dist/executor/permissions/permission-manager.d.ts +0 -0
  114. package/dist/executor/permissions/permission-manager.d.ts.map +0 -0
  115. package/dist/executor/permissions/permission-manager.js +0 -0
  116. package/dist/executor/permissions/permission-service.d.ts +0 -0
  117. package/dist/executor/permissions/permission-service.d.ts.map +0 -0
  118. package/dist/executor/permissions/permission-service.js +0 -0
  119. package/dist/executor/sdk-handlers/base/index.d.ts +0 -0
  120. package/dist/executor/sdk-handlers/base/index.d.ts.map +0 -0
  121. package/dist/executor/sdk-handlers/base/index.js +0 -0
  122. package/dist/executor/sdk-handlers/base/mcp-scoping.d.ts +0 -0
  123. package/dist/executor/sdk-handlers/base/mcp-scoping.d.ts.map +0 -0
  124. package/dist/executor/sdk-handlers/base/mcp-scoping.js +0 -0
  125. package/dist/executor/sdk-handlers/base/normalizer.interface.d.ts +0 -0
  126. package/dist/executor/sdk-handlers/base/normalizer.interface.d.ts.map +0 -0
  127. package/dist/executor/sdk-handlers/base/normalizer.interface.js +0 -0
  128. package/dist/executor/sdk-handlers/base/tool.interface.d.ts +0 -0
  129. package/dist/executor/sdk-handlers/base/tool.interface.d.ts.map +0 -0
  130. package/dist/executor/sdk-handlers/base/tool.interface.js +0 -0
  131. package/dist/executor/sdk-handlers/base/types.d.ts +0 -0
  132. package/dist/executor/sdk-handlers/base/types.d.ts.map +0 -0
  133. package/dist/executor/sdk-handlers/base/types.js +0 -0
  134. package/dist/executor/sdk-handlers/claude/claude-tool.d.ts +0 -0
  135. package/dist/executor/sdk-handlers/claude/claude-tool.d.ts.map +0 -0
  136. package/dist/executor/sdk-handlers/claude/claude-tool.js +0 -0
  137. package/dist/executor/sdk-handlers/claude/import/load-session.d.ts +0 -0
  138. package/dist/executor/sdk-handlers/claude/import/load-session.d.ts.map +0 -0
  139. package/dist/executor/sdk-handlers/claude/import/load-session.js +0 -0
  140. package/dist/executor/sdk-handlers/claude/import/message-converter.d.ts +0 -0
  141. package/dist/executor/sdk-handlers/claude/import/message-converter.d.ts.map +0 -0
  142. package/dist/executor/sdk-handlers/claude/import/message-converter.js +0 -0
  143. package/dist/executor/sdk-handlers/claude/import/task-extractor.d.ts +0 -0
  144. package/dist/executor/sdk-handlers/claude/import/task-extractor.d.ts.map +0 -0
  145. package/dist/executor/sdk-handlers/claude/import/task-extractor.js +0 -0
  146. package/dist/executor/sdk-handlers/claude/import/transcript-parser.d.ts +0 -0
  147. package/dist/executor/sdk-handlers/claude/import/transcript-parser.d.ts.map +0 -0
  148. package/dist/executor/sdk-handlers/claude/import/transcript-parser.js +0 -0
  149. package/dist/executor/sdk-handlers/claude/index.d.ts +0 -0
  150. package/dist/executor/sdk-handlers/claude/index.d.ts.map +0 -0
  151. package/dist/executor/sdk-handlers/claude/index.js +0 -0
  152. package/dist/executor/sdk-handlers/claude/message-builder.d.ts +0 -0
  153. package/dist/executor/sdk-handlers/claude/message-builder.d.ts.map +0 -0
  154. package/dist/executor/sdk-handlers/claude/message-builder.js +0 -0
  155. package/dist/executor/sdk-handlers/claude/message-processor.d.ts +0 -0
  156. package/dist/executor/sdk-handlers/claude/message-processor.d.ts.map +0 -0
  157. package/dist/executor/sdk-handlers/claude/message-processor.js +0 -0
  158. package/dist/executor/sdk-handlers/claude/models.d.ts +0 -0
  159. package/dist/executor/sdk-handlers/claude/models.d.ts.map +0 -0
  160. package/dist/executor/sdk-handlers/claude/models.js +0 -0
  161. package/dist/executor/sdk-handlers/claude/normalizer.d.ts +0 -0
  162. package/dist/executor/sdk-handlers/claude/normalizer.d.ts.map +0 -0
  163. package/dist/executor/sdk-handlers/claude/normalizer.js +0 -0
  164. package/dist/executor/sdk-handlers/claude/permissions/permission-hooks.d.ts +0 -0
  165. package/dist/executor/sdk-handlers/claude/permissions/permission-hooks.d.ts.map +0 -0
  166. package/dist/executor/sdk-handlers/claude/permissions/permission-hooks.js +0 -0
  167. package/dist/executor/sdk-handlers/claude/prompt-service.d.ts +0 -0
  168. package/dist/executor/sdk-handlers/claude/prompt-service.d.ts.map +0 -0
  169. package/dist/executor/sdk-handlers/claude/prompt-service.js +0 -0
  170. package/dist/executor/sdk-handlers/claude/query-builder.d.ts +0 -0
  171. package/dist/executor/sdk-handlers/claude/query-builder.d.ts.map +0 -0
  172. package/dist/executor/sdk-handlers/claude/query-builder.js +0 -0
  173. package/dist/executor/sdk-handlers/claude/safe-message-service.d.ts +0 -0
  174. package/dist/executor/sdk-handlers/claude/safe-message-service.d.ts.map +0 -0
  175. package/dist/executor/sdk-handlers/claude/safe-message-service.js +0 -0
  176. package/dist/executor/sdk-handlers/claude/session-context.d.ts +0 -0
  177. package/dist/executor/sdk-handlers/claude/session-context.d.ts.map +0 -0
  178. package/dist/executor/sdk-handlers/claude/session-context.js +0 -0
  179. package/dist/executor/sdk-handlers/claude/thinking-detector.d.ts +0 -0
  180. package/dist/executor/sdk-handlers/claude/thinking-detector.d.ts.map +0 -0
  181. package/dist/executor/sdk-handlers/claude/thinking-detector.js +0 -0
  182. package/dist/executor/sdk-handlers/codex/codex-tool.d.ts +0 -0
  183. package/dist/executor/sdk-handlers/codex/codex-tool.d.ts.map +0 -0
  184. package/dist/executor/sdk-handlers/codex/codex-tool.js +0 -0
  185. package/dist/executor/sdk-handlers/codex/index.d.ts +0 -0
  186. package/dist/executor/sdk-handlers/codex/index.d.ts.map +0 -0
  187. package/dist/executor/sdk-handlers/codex/index.js +0 -0
  188. package/dist/executor/sdk-handlers/codex/models.d.ts +0 -0
  189. package/dist/executor/sdk-handlers/codex/models.d.ts.map +0 -0
  190. package/dist/executor/sdk-handlers/codex/models.js +0 -0
  191. package/dist/executor/sdk-handlers/codex/normalizer.d.ts +0 -0
  192. package/dist/executor/sdk-handlers/codex/normalizer.d.ts.map +0 -0
  193. package/dist/executor/sdk-handlers/codex/normalizer.js +0 -0
  194. package/dist/executor/sdk-handlers/codex/prompt-service.d.ts +0 -0
  195. package/dist/executor/sdk-handlers/codex/prompt-service.d.ts.map +0 -0
  196. package/dist/executor/sdk-handlers/codex/prompt-service.js +0 -0
  197. package/dist/executor/sdk-handlers/codex/usage.d.ts +0 -0
  198. package/dist/executor/sdk-handlers/codex/usage.d.ts.map +0 -0
  199. package/dist/executor/sdk-handlers/codex/usage.js +0 -0
  200. package/dist/executor/sdk-handlers/gemini/conversation-converter.d.ts +0 -0
  201. package/dist/executor/sdk-handlers/gemini/conversation-converter.d.ts.map +0 -0
  202. package/dist/executor/sdk-handlers/gemini/conversation-converter.js +0 -0
  203. package/dist/executor/sdk-handlers/gemini/gemini-tool.d.ts +0 -0
  204. package/dist/executor/sdk-handlers/gemini/gemini-tool.d.ts.map +0 -0
  205. package/dist/executor/sdk-handlers/gemini/gemini-tool.js +0 -0
  206. package/dist/executor/sdk-handlers/gemini/index.d.ts +0 -0
  207. package/dist/executor/sdk-handlers/gemini/index.d.ts.map +0 -0
  208. package/dist/executor/sdk-handlers/gemini/index.js +0 -0
  209. package/dist/executor/sdk-handlers/gemini/models.d.ts +0 -0
  210. package/dist/executor/sdk-handlers/gemini/models.d.ts.map +0 -0
  211. package/dist/executor/sdk-handlers/gemini/models.js +0 -0
  212. package/dist/executor/sdk-handlers/gemini/normalizer.d.ts +0 -0
  213. package/dist/executor/sdk-handlers/gemini/normalizer.d.ts.map +0 -0
  214. package/dist/executor/sdk-handlers/gemini/normalizer.js +0 -0
  215. package/dist/executor/sdk-handlers/gemini/permission-mapper.d.ts +0 -0
  216. package/dist/executor/sdk-handlers/gemini/permission-mapper.d.ts.map +0 -0
  217. package/dist/executor/sdk-handlers/gemini/permission-mapper.js +0 -0
  218. package/dist/executor/sdk-handlers/gemini/prompt-service.d.ts +0 -0
  219. package/dist/executor/sdk-handlers/gemini/prompt-service.d.ts.map +0 -0
  220. package/dist/executor/sdk-handlers/gemini/prompt-service.js +0 -0
  221. package/dist/executor/sdk-handlers/gemini/usage.d.ts +0 -0
  222. package/dist/executor/sdk-handlers/gemini/usage.d.ts.map +0 -0
  223. package/dist/executor/sdk-handlers/gemini/usage.js +0 -0
  224. package/dist/executor/sdk-handlers/models.d.ts +0 -0
  225. package/dist/executor/sdk-handlers/models.d.ts.map +0 -0
  226. package/dist/executor/sdk-handlers/models.js +0 -0
  227. package/dist/executor/sdk-handlers/normalizer-factory.d.ts +0 -0
  228. package/dist/executor/sdk-handlers/normalizer-factory.d.ts.map +0 -0
  229. package/dist/executor/sdk-handlers/normalizer-factory.js +0 -0
  230. package/dist/executor/sdk-handlers/opencode/index.d.ts +0 -0
  231. package/dist/executor/sdk-handlers/opencode/index.d.ts.map +0 -0
  232. package/dist/executor/sdk-handlers/opencode/index.js +0 -0
  233. package/dist/executor/sdk-handlers/opencode/opencode-tool.d.ts +0 -0
  234. package/dist/executor/sdk-handlers/opencode/opencode-tool.d.ts.map +0 -0
  235. package/dist/executor/sdk-handlers/opencode/opencode-tool.js +0 -0
  236. package/dist/executor/services/feathers-client.d.ts +0 -0
  237. package/dist/executor/services/feathers-client.d.ts.map +0 -0
  238. package/dist/executor/services/feathers-client.js +0 -0
  239. package/dist/executor/types/sdk-response.d.ts +0 -0
  240. package/dist/executor/types/sdk-response.d.ts.map +0 -0
  241. package/dist/executor/types/sdk-response.js +0 -0
  242. package/dist/executor/types/token-usage.d.ts +0 -0
  243. package/dist/executor/types/token-usage.d.ts.map +0 -0
  244. package/dist/executor/types/token-usage.js +0 -0
  245. package/dist/executor/types.d.ts +0 -0
  246. package/dist/executor/types.d.ts.map +0 -0
  247. package/dist/executor/types.js +0 -0
  248. package/dist/ui/assets/{_basePickBy-a0JoJgXO.js → _basePickBy-DM-YlwQP.js} +1 -1
  249. package/dist/ui/assets/_basePickBy-DM-YlwQP.js.gz +0 -0
  250. package/dist/ui/assets/{_baseUniq-IFulW561.js → _baseUniq-w9wJK0j5.js} +1 -1
  251. package/dist/ui/assets/_baseUniq-w9wJK0j5.js.gz +0 -0
  252. package/dist/ui/assets/{arc-Dj6SyPh6.js → arc-CVXkw1SJ.js} +1 -1
  253. package/dist/ui/assets/arc-CVXkw1SJ.js.gz +0 -0
  254. package/dist/ui/assets/{architectureDiagram-VXUJARFQ-CjXOzrje.js → architectureDiagram-VXUJARFQ-CevjfWlW.js} +1 -1
  255. package/dist/ui/assets/{architectureDiagram-VXUJARFQ-CjXOzrje.js.gz → architectureDiagram-VXUJARFQ-CevjfWlW.js.gz} +0 -0
  256. package/dist/ui/assets/{blockDiagram-VD42YOAC-IFpdwkfg.js → blockDiagram-VD42YOAC-b9JU-Vzx.js} +1 -1
  257. package/dist/ui/assets/{blockDiagram-VD42YOAC-IFpdwkfg.js.gz → blockDiagram-VD42YOAC-b9JU-Vzx.js.gz} +0 -0
  258. package/dist/ui/assets/{c4Diagram-YG6GDRKO-qL4Ujfnz.js → c4Diagram-YG6GDRKO-j7VSccDF.js} +1 -1
  259. package/dist/ui/assets/c4Diagram-YG6GDRKO-j7VSccDF.js.gz +0 -0
  260. package/dist/ui/assets/channel-BNIBtjaQ.js +1 -0
  261. package/dist/ui/assets/{chunk-4BX2VUAB-CH6tu0mB.js → chunk-4BX2VUAB-D_codqcR.js} +1 -1
  262. package/dist/ui/assets/{chunk-55IACEB6-DDAZjWTD.js → chunk-55IACEB6-nQq1kviw.js} +1 -1
  263. package/dist/ui/assets/{chunk-B4BG7PRW-BDSu72O0.js → chunk-B4BG7PRW-DlVxaJL9.js} +1 -1
  264. package/dist/ui/assets/chunk-B4BG7PRW-DlVxaJL9.js.gz +0 -0
  265. package/dist/ui/assets/{chunk-DI55MBZ5-C7merGRo.js → chunk-DI55MBZ5-Dw95m49m.js} +1 -1
  266. package/dist/ui/assets/chunk-DI55MBZ5-Dw95m49m.js.gz +0 -0
  267. package/dist/ui/assets/{chunk-FMBD7UC4-DX20G6ZX.js → chunk-FMBD7UC4-Bnk79OV8.js} +1 -1
  268. package/dist/ui/assets/{chunk-QN33PNHL-BvT3a5aI.js → chunk-QN33PNHL-sqjI-sXo.js} +1 -1
  269. package/dist/ui/assets/{chunk-QZHKN3VN-oo-Lxdo7.js → chunk-QZHKN3VN-T7CEGHh9.js} +1 -1
  270. package/dist/ui/assets/{chunk-TZMSLE5B-BV4XHxKb.js → chunk-TZMSLE5B-ok9YQuUI.js} +1 -1
  271. package/dist/ui/assets/chunk-TZMSLE5B-ok9YQuUI.js.gz +0 -0
  272. package/dist/ui/assets/classDiagram-2ON5EDUG-DeHTLUto.js +1 -0
  273. package/dist/ui/assets/classDiagram-v2-WZHVMYZB-DeHTLUto.js +1 -0
  274. package/dist/ui/assets/clone-BObtDhw7.js +1 -0
  275. package/dist/ui/assets/{cose-bilkent-S5V4N54A-BA6VY55u.js → cose-bilkent-S5V4N54A-BtanJFqC.js} +1 -1
  276. package/dist/ui/assets/cose-bilkent-S5V4N54A-BtanJFqC.js.gz +0 -0
  277. package/dist/ui/assets/{dagre-6UL2VRFP-DiuqdLez.js → dagre-6UL2VRFP-CIJlfoaz.js} +1 -1
  278. package/dist/ui/assets/dagre-6UL2VRFP-CIJlfoaz.js.gz +0 -0
  279. package/dist/ui/assets/{diagram-PSM6KHXK-DU4u6xZN.js → diagram-PSM6KHXK-DhKlHuZN.js} +1 -1
  280. package/dist/ui/assets/diagram-PSM6KHXK-DhKlHuZN.js.gz +0 -0
  281. package/dist/ui/assets/{diagram-QEK2KX5R-CltgMeel.js → diagram-QEK2KX5R-BbwaTbd7.js} +1 -1
  282. package/dist/ui/assets/diagram-QEK2KX5R-BbwaTbd7.js.gz +0 -0
  283. package/dist/ui/assets/{diagram-S2PKOQOG-SkvAVcTN.js → diagram-S2PKOQOG-Dx1rRlHZ.js} +1 -1
  284. package/dist/ui/assets/diagram-S2PKOQOG-Dx1rRlHZ.js.gz +0 -0
  285. package/dist/ui/assets/{erDiagram-Q2GNP2WA-DJTHxEdE.js → erDiagram-Q2GNP2WA-w60Up3Mg.js} +1 -1
  286. package/dist/ui/assets/erDiagram-Q2GNP2WA-w60Up3Mg.js.gz +0 -0
  287. package/dist/ui/assets/{flowDiagram-NV44I4VS-BwrFtsSc.js → flowDiagram-NV44I4VS-yvyTqNEi.js} +1 -1
  288. package/dist/ui/assets/flowDiagram-NV44I4VS-yvyTqNEi.js.gz +0 -0
  289. package/dist/ui/assets/{ganttDiagram-LVOFAZNH-BnGmdiBB.js → ganttDiagram-LVOFAZNH-NBBWMpCB.js} +1 -1
  290. package/dist/ui/assets/ganttDiagram-LVOFAZNH-NBBWMpCB.js.gz +0 -0
  291. package/dist/ui/assets/{gitGraphDiagram-NY62KEGX-V6mHZ2jy.js → gitGraphDiagram-NY62KEGX-Dc0qrZJi.js} +1 -1
  292. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-Dc0qrZJi.js.gz +0 -0
  293. package/dist/ui/assets/{graph-3Ks94Pqc.js → graph-RIZM2qth.js} +1 -1
  294. package/dist/ui/assets/graph-RIZM2qth.js.gz +0 -0
  295. package/dist/ui/assets/{index-Dl_jng3-.js → index-BcHc8U_m.js} +240 -240
  296. package/dist/ui/assets/index-BcHc8U_m.js.gz +0 -0
  297. package/dist/ui/assets/index-BjxbtAmt.css +1 -0
  298. package/dist/ui/assets/index-BjxbtAmt.css.gz +0 -0
  299. package/dist/ui/assets/{infoDiagram-ER5ION4S-DUuNVOek.js → infoDiagram-ER5ION4S-Co1qQ3-G.js} +1 -1
  300. package/dist/ui/assets/{journeyDiagram-XKPGCS4Q-D-N__rLx.js → journeyDiagram-XKPGCS4Q-QaBi_wAx.js} +1 -1
  301. package/dist/ui/assets/journeyDiagram-XKPGCS4Q-QaBi_wAx.js.gz +0 -0
  302. package/dist/ui/assets/{kanban-definition-3W4ZIXB7-DsPDRbRp.js → kanban-definition-3W4ZIXB7-B3k5rpP3.js} +1 -1
  303. package/dist/ui/assets/kanban-definition-3W4ZIXB7-B3k5rpP3.js.gz +0 -0
  304. package/dist/ui/assets/{layout-TuyQIiWI.js → layout-YqNNovOM.js} +1 -1
  305. package/dist/ui/assets/layout-YqNNovOM.js.gz +0 -0
  306. package/dist/ui/assets/{linear-CQUCx9aD.js → linear-DpjTIW7z.js} +1 -1
  307. package/dist/ui/assets/linear-DpjTIW7z.js.gz +0 -0
  308. package/dist/ui/assets/{mermaid.core-HQwFIIbn.js → mermaid.core-D-fYaKXC.js} +5 -5
  309. package/dist/ui/assets/mermaid.core-D-fYaKXC.js.gz +0 -0
  310. package/dist/ui/assets/{mindmap-definition-VGOIOE7T-DlR4HpYx.js → mindmap-definition-VGOIOE7T-CddQalgD.js} +1 -1
  311. package/dist/ui/assets/mindmap-definition-VGOIOE7T-CddQalgD.js.gz +0 -0
  312. package/dist/ui/assets/{pieDiagram-ADFJNKIX-OfCYTJ7S.js → pieDiagram-ADFJNKIX-BCPzhaBq.js} +1 -1
  313. package/dist/ui/assets/pieDiagram-ADFJNKIX-BCPzhaBq.js.gz +0 -0
  314. package/dist/ui/assets/{quadrantDiagram-AYHSOK5B--irB7LvR.js → quadrantDiagram-AYHSOK5B-DrdJW-2E.js} +1 -1
  315. package/dist/ui/assets/quadrantDiagram-AYHSOK5B-DrdJW-2E.js.gz +0 -0
  316. package/dist/ui/assets/{requirementDiagram-UZGBJVZJ-iPensRLV.js → requirementDiagram-UZGBJVZJ-dV0cdx6D.js} +1 -1
  317. package/dist/ui/assets/requirementDiagram-UZGBJVZJ-dV0cdx6D.js.gz +0 -0
  318. package/dist/ui/assets/{sankeyDiagram-TZEHDZUN-BSidESLx.js → sankeyDiagram-TZEHDZUN-SLmqiy7a.js} +1 -1
  319. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-SLmqiy7a.js.gz +0 -0
  320. package/dist/ui/assets/{sequenceDiagram-WL72ISMW-BUE46svP.js → sequenceDiagram-WL72ISMW-CyH5EbRm.js} +1 -1
  321. package/dist/ui/assets/sequenceDiagram-WL72ISMW-CyH5EbRm.js.gz +0 -0
  322. package/dist/ui/assets/{stateDiagram-FKZM4ZOC-BJ2azfLs.js → stateDiagram-FKZM4ZOC-DbtBIYM6.js} +1 -1
  323. package/dist/ui/assets/stateDiagram-FKZM4ZOC-DbtBIYM6.js.gz +0 -0
  324. package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-DOAHUeXQ.js +1 -0
  325. package/dist/ui/assets/{timeline-definition-IT6M3QCI-YfwKc8ip.js → timeline-definition-IT6M3QCI-CzdpjKni.js} +1 -1
  326. package/dist/ui/assets/timeline-definition-IT6M3QCI-CzdpjKni.js.gz +0 -0
  327. package/dist/ui/assets/{treemap-KMMF4GRG-DMpxEEn1.js → treemap-KMMF4GRG-D_MXp3HZ.js} +1 -1
  328. package/dist/ui/assets/treemap-KMMF4GRG-D_MXp3HZ.js.gz +0 -0
  329. package/dist/ui/assets/{xychartDiagram-PRI3JC2R-Bn_I2TeN.js → xychartDiagram-PRI3JC2R-BMwyKz4M.js} +1 -1
  330. package/dist/ui/assets/xychartDiagram-PRI3JC2R-BMwyKz4M.js.gz +0 -0
  331. package/dist/ui/index.html +2 -2
  332. package/package.json +1 -1
  333. package/dist/ui/assets/_basePickBy-a0JoJgXO.js.gz +0 -0
  334. package/dist/ui/assets/_baseUniq-IFulW561.js.gz +0 -0
  335. package/dist/ui/assets/arc-Dj6SyPh6.js.gz +0 -0
  336. package/dist/ui/assets/c4Diagram-YG6GDRKO-qL4Ujfnz.js.gz +0 -0
  337. package/dist/ui/assets/channel-4SJF66Rh.js +0 -1
  338. package/dist/ui/assets/chunk-B4BG7PRW-BDSu72O0.js.gz +0 -0
  339. package/dist/ui/assets/chunk-DI55MBZ5-C7merGRo.js.gz +0 -0
  340. package/dist/ui/assets/chunk-TZMSLE5B-BV4XHxKb.js.gz +0 -0
  341. package/dist/ui/assets/classDiagram-2ON5EDUG-BLjqJ_M9.js +0 -1
  342. package/dist/ui/assets/classDiagram-v2-WZHVMYZB-BLjqJ_M9.js +0 -1
  343. package/dist/ui/assets/clone-DjR0SEZ0.js +0 -1
  344. package/dist/ui/assets/cose-bilkent-S5V4N54A-BA6VY55u.js.gz +0 -0
  345. package/dist/ui/assets/dagre-6UL2VRFP-DiuqdLez.js.gz +0 -0
  346. package/dist/ui/assets/diagram-PSM6KHXK-DU4u6xZN.js.gz +0 -0
  347. package/dist/ui/assets/diagram-QEK2KX5R-CltgMeel.js.gz +0 -0
  348. package/dist/ui/assets/diagram-S2PKOQOG-SkvAVcTN.js.gz +0 -0
  349. package/dist/ui/assets/erDiagram-Q2GNP2WA-DJTHxEdE.js.gz +0 -0
  350. package/dist/ui/assets/flowDiagram-NV44I4VS-BwrFtsSc.js.gz +0 -0
  351. package/dist/ui/assets/ganttDiagram-LVOFAZNH-BnGmdiBB.js.gz +0 -0
  352. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-V6mHZ2jy.js.gz +0 -0
  353. package/dist/ui/assets/graph-3Ks94Pqc.js.gz +0 -0
  354. package/dist/ui/assets/index-CoHRmHKF.css +0 -1
  355. package/dist/ui/assets/index-CoHRmHKF.css.gz +0 -0
  356. package/dist/ui/assets/index-Dl_jng3-.js.gz +0 -0
  357. package/dist/ui/assets/journeyDiagram-XKPGCS4Q-D-N__rLx.js.gz +0 -0
  358. package/dist/ui/assets/kanban-definition-3W4ZIXB7-DsPDRbRp.js.gz +0 -0
  359. package/dist/ui/assets/layout-TuyQIiWI.js.gz +0 -0
  360. package/dist/ui/assets/linear-CQUCx9aD.js.gz +0 -0
  361. package/dist/ui/assets/mermaid.core-HQwFIIbn.js.gz +0 -0
  362. package/dist/ui/assets/mindmap-definition-VGOIOE7T-DlR4HpYx.js.gz +0 -0
  363. package/dist/ui/assets/pieDiagram-ADFJNKIX-OfCYTJ7S.js.gz +0 -0
  364. package/dist/ui/assets/quadrantDiagram-AYHSOK5B--irB7LvR.js.gz +0 -0
  365. package/dist/ui/assets/requirementDiagram-UZGBJVZJ-iPensRLV.js.gz +0 -0
  366. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-BSidESLx.js.gz +0 -0
  367. package/dist/ui/assets/sequenceDiagram-WL72ISMW-BUE46svP.js.gz +0 -0
  368. package/dist/ui/assets/stateDiagram-FKZM4ZOC-BJ2azfLs.js.gz +0 -0
  369. package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-B9Lx1w-S.js +0 -1
  370. package/dist/ui/assets/timeline-definition-IT6M3QCI-YfwKc8ip.js.gz +0 -0
  371. package/dist/ui/assets/treemap-KMMF4GRG-DMpxEEn1.js.gz +0 -0
  372. package/dist/ui/assets/xychartDiagram-PRI3JC2R-Bn_I2TeN.js.gz +0 -0
@@ -166,6 +166,7 @@ __export(config_manager_exports, {
166
166
  ensureCodexHome: () => ensureCodexHome,
167
167
  expandHomePath: () => expandHomePath,
168
168
  getAgorHome: () => getAgorHome,
169
+ getBaseUrl: () => getBaseUrl,
169
170
  getConfigPath: () => getConfigPath,
170
171
  getConfigValue: () => getConfigValue,
171
172
  getCredential: () => getCredential,
@@ -383,6 +384,32 @@ async function getDaemonUrl() {
383
384
  const host = config.daemon?.host || defaults.daemon?.host || DAEMON.DEFAULT_HOST;
384
385
  return `http://${host}:${port}`;
385
386
  }
387
+ function validateBaseUrl(url) {
388
+ const trimmed = url.trim().replace(/\/$/, "");
389
+ if (!trimmed.startsWith("http://") && !trimmed.startsWith("https://")) {
390
+ throw new Error(`Invalid base URL: "${url}". Must start with http:// or https://`);
391
+ }
392
+ try {
393
+ new URL(trimmed);
394
+ } catch {
395
+ throw new Error(`Invalid base URL format: "${url}". Must be a valid HTTP(S) URL.`);
396
+ }
397
+ return trimmed;
398
+ }
399
+ async function getBaseUrl() {
400
+ if (process.env.AGOR_BASE_URL) {
401
+ return validateBaseUrl(process.env.AGOR_BASE_URL);
402
+ }
403
+ const config = await loadConfig();
404
+ if (config.daemon?.base_url) {
405
+ return validateBaseUrl(config.daemon.base_url);
406
+ }
407
+ const defaults = getDefaultConfig();
408
+ const envPort = process.env.PORT ? Number.parseInt(process.env.PORT, 10) : void 0;
409
+ const port = envPort || config.daemon?.port || defaults.daemon?.port || DAEMON.DEFAULT_PORT;
410
+ const host = config.daemon?.host || defaults.daemon?.host || DAEMON.DEFAULT_HOST;
411
+ return `http://${host}:${port}`;
412
+ }
386
413
  function loadConfigSync() {
387
414
  const configPath = getConfigPath();
388
415
  try {
@@ -711,13 +738,15 @@ __export(schema_postgres_exports, {
711
738
  repos: () => repos,
712
739
  sessionMcpServers: () => sessionMcpServers,
713
740
  sessions: () => sessions,
741
+ sessionsRelations: () => sessionsRelations,
714
742
  tasks: () => tasks,
715
743
  threadSessionMap: () => threadSessionMap,
716
744
  users: () => users,
717
745
  worktreeOwners: () => worktreeOwners,
718
- worktrees: () => worktrees
746
+ worktrees: () => worktrees,
747
+ worktreesRelations: () => worktreesRelations
719
748
  });
720
- var import_drizzle_orm2, import_pg_core, t, sessions, tasks, messages, boards, repos, worktrees, worktreeOwners, users, mcpServers, boardObjects, sessionMcpServers, boardComments, gatewayChannels, threadSessionMap;
749
+ var import_drizzle_orm2, import_pg_core, t, sessions, tasks, messages, boards, repos, worktrees, worktreeOwners, users, mcpServers, boardObjects, sessionMcpServers, boardComments, gatewayChannels, threadSessionMap, sessionsRelations, worktreesRelations;
721
750
  var init_schema_postgres = __esm({
722
751
  "src/db/schema.postgres.ts"() {
723
752
  "use strict";
@@ -1206,6 +1235,15 @@ var init_schema_postgres = __esm({
1206
1235
  channelStatusIdx: (0, import_pg_core.index)("idx_thread_map_channel_status").on(table.channel_id, table.status)
1207
1236
  })
1208
1237
  );
1238
+ sessionsRelations = (0, import_drizzle_orm2.relations)(sessions, ({ one }) => ({
1239
+ worktree: one(worktrees, {
1240
+ fields: [sessions.worktree_id],
1241
+ references: [worktrees.worktree_id]
1242
+ })
1243
+ }));
1244
+ worktreesRelations = (0, import_drizzle_orm2.relations)(worktrees, ({ many }) => ({
1245
+ sessions: many(sessions)
1246
+ }));
1209
1247
  }
1210
1248
  });
1211
1249
 
@@ -1221,13 +1259,15 @@ __export(schema_sqlite_exports, {
1221
1259
  repos: () => repos2,
1222
1260
  sessionMcpServers: () => sessionMcpServers2,
1223
1261
  sessions: () => sessions2,
1262
+ sessionsRelations: () => sessionsRelations2,
1224
1263
  tasks: () => tasks2,
1225
1264
  threadSessionMap: () => threadSessionMap2,
1226
1265
  users: () => users2,
1227
1266
  worktreeOwners: () => worktreeOwners2,
1228
- worktrees: () => worktrees2
1267
+ worktrees: () => worktrees2,
1268
+ worktreesRelations: () => worktreesRelations2
1229
1269
  });
1230
- var import_drizzle_orm3, import_sqlite_core, t2, sessions2, tasks2, messages2, boards2, repos2, worktrees2, worktreeOwners2, users2, mcpServers2, boardObjects2, sessionMcpServers2, boardComments2, gatewayChannels2, threadSessionMap2;
1270
+ var import_drizzle_orm3, import_sqlite_core, t2, sessions2, tasks2, messages2, boards2, repos2, worktrees2, worktreeOwners2, users2, mcpServers2, boardObjects2, sessionMcpServers2, boardComments2, gatewayChannels2, threadSessionMap2, sessionsRelations2, worktreesRelations2;
1231
1271
  var init_schema_sqlite = __esm({
1232
1272
  "src/db/schema.sqlite.ts"() {
1233
1273
  "use strict";
@@ -1717,6 +1757,15 @@ var init_schema_sqlite = __esm({
1717
1757
  channelStatusIdx: (0, import_sqlite_core.index)("idx_thread_map_channel_status").on(table.channel_id, table.status)
1718
1758
  })
1719
1759
  );
1760
+ sessionsRelations2 = (0, import_drizzle_orm3.relations)(sessions2, ({ one }) => ({
1761
+ worktree: one(worktrees2, {
1762
+ fields: [sessions2.worktree_id],
1763
+ references: [worktrees2.worktree_id]
1764
+ })
1765
+ }));
1766
+ worktreesRelations2 = (0, import_drizzle_orm3.relations)(worktrees2, ({ many }) => ({
1767
+ sessions: many(sessions2)
1768
+ }));
1720
1769
  }
1721
1770
  });
1722
1771
 
@@ -2077,6 +2126,7 @@ __export(src_exports, {
2077
2126
  generateUnixUsername: () => generateUnixUsername,
2078
2127
  generateWorktreeGroupName: () => generateWorktreeGroupName,
2079
2128
  getAgorHome: () => getAgorHome,
2129
+ getBaseUrl: () => getBaseUrl,
2080
2130
  getCommentAttachmentType: () => getCommentAttachmentType,
2081
2131
  getConfigPath: () => getConfigPath,
2082
2132
  getConfigValue: () => getConfigValue,
@@ -3024,18 +3074,8 @@ async function checkMigrationStatus(db) {
3024
3074
  );
3025
3075
  appliedHashes = result.map((row) => String(row.hash));
3026
3076
  }
3027
- const normalizedAppliedHashes = appliedHashes;
3028
- const numExpected = expectedMigrations.length;
3029
- const numApplied = normalizedAppliedHashes.length;
3030
- if (numApplied >= numExpected) {
3031
- return {
3032
- hasPending: false,
3033
- pending: [],
3034
- applied: expectedMigrations.map((m) => m.tag)
3035
- };
3036
- }
3037
- const pending = expectedMigrations.filter((m) => !normalizedAppliedHashes.includes(m.hash)).map((m) => m.tag);
3038
- const appliedTags = expectedMigrations.filter((m) => normalizedAppliedHashes.includes(m.hash)).map((m) => m.tag);
3077
+ const pending = expectedMigrations.filter((m) => !appliedHashes.includes(m.hash)).map((m) => m.tag);
3078
+ const appliedTags = expectedMigrations.filter((m) => appliedHashes.includes(m.hash)).map((m) => m.tag);
3039
3079
  return {
3040
3080
  hasPending: pending.length > 0,
3041
3081
  pending,
@@ -3741,7 +3781,23 @@ var BoardObjectRepository = class {
3741
3781
  init_cjs_shims();
3742
3782
  var import_drizzle_orm8 = require("drizzle-orm");
3743
3783
  var yaml3 = __toESM(require("js-yaml"), 1);
3784
+ init_config_manager();
3785
+ init_ids();
3786
+
3787
+ // src/utils/url.ts
3788
+ init_cjs_shims();
3744
3789
  init_ids();
3790
+ function getSessionUrl(sessionId, boardId, boardSlug, baseUrl) {
3791
+ if (!boardId) return null;
3792
+ const boardParam = boardSlug || shortId(boardId);
3793
+ return `${baseUrl}/b/${boardParam}/${shortId(sessionId)}`;
3794
+ }
3795
+ function getBoardUrl(boardId, boardSlug, baseUrl) {
3796
+ const boardParam = boardSlug || shortId(boardId);
3797
+ return `${baseUrl}/b/${boardParam}`;
3798
+ }
3799
+
3800
+ // src/db/repositories/boards.ts
3745
3801
  init_database_wrapper();
3746
3802
  init_schema();
3747
3803
  var BoardRepository = class {
@@ -3750,16 +3806,23 @@ var BoardRepository = class {
3750
3806
  }
3751
3807
  /**
3752
3808
  * Convert database row to Board type
3809
+ *
3810
+ * @param row - Database row
3811
+ * @param baseUrl - Base URL for generating board URLs
3753
3812
  */
3754
- rowToBoard(row) {
3813
+ rowToBoard(row, baseUrl) {
3755
3814
  const data = row.data;
3815
+ const boardId = row.board_id;
3816
+ const slug = row.slug !== null ? row.slug : void 0;
3817
+ const url = baseUrl ? getBoardUrl(boardId, slug, baseUrl) : "";
3756
3818
  return {
3757
- board_id: row.board_id,
3819
+ board_id: boardId,
3758
3820
  name: row.name,
3759
- slug: row.slug !== null ? row.slug : void 0,
3821
+ slug,
3760
3822
  created_at: new Date(row.created_at).toISOString(),
3761
3823
  last_updated: row.updated_at ? new Date(row.updated_at).toISOString() : new Date(row.created_at).toISOString(),
3762
3824
  created_by: row.created_by,
3825
+ url,
3763
3826
  ...data
3764
3827
  };
3765
3828
  }
@@ -3839,6 +3902,7 @@ var BoardRepository = class {
3839
3902
  async create(data) {
3840
3903
  try {
3841
3904
  const boardId = data.board_id ?? generateId();
3905
+ const baseUrl = await getBaseUrl();
3842
3906
  let finalSlug;
3843
3907
  if (data.slug === null) {
3844
3908
  finalSlug = void 0;
@@ -3861,7 +3925,7 @@ var BoardRepository = class {
3861
3925
  if (!row) {
3862
3926
  throw new RepositoryError("Failed to retrieve created board");
3863
3927
  }
3864
- return this.rowToBoard(row);
3928
+ return this.rowToBoard(row, baseUrl);
3865
3929
  } catch (error) {
3866
3930
  if (error instanceof RepositoryError) throw error;
3867
3931
  throw new RepositoryError(
@@ -3876,8 +3940,9 @@ var BoardRepository = class {
3876
3940
  async findById(id) {
3877
3941
  try {
3878
3942
  const fullId = await this.resolveId(id);
3943
+ const baseUrl = await getBaseUrl();
3879
3944
  const row = await select(this.db).from(boards3).where((0, import_drizzle_orm8.eq)(boards3.board_id, fullId)).one();
3880
- return row ? this.rowToBoard(row) : null;
3945
+ return row ? this.rowToBoard(row, baseUrl) : null;
3881
3946
  } catch (error) {
3882
3947
  if (error instanceof EntityNotFoundError) return null;
3883
3948
  if (error instanceof AmbiguousIdError) throw error;
@@ -3892,8 +3957,9 @@ var BoardRepository = class {
3892
3957
  */
3893
3958
  async findBySlug(slug) {
3894
3959
  try {
3960
+ const baseUrl = await getBaseUrl();
3895
3961
  const row = await select(this.db).from(boards3).where((0, import_drizzle_orm8.eq)(boards3.slug, slug)).one();
3896
- return row ? this.rowToBoard(row) : null;
3962
+ return row ? this.rowToBoard(row, baseUrl) : null;
3897
3963
  } catch (error) {
3898
3964
  throw new RepositoryError(
3899
3965
  `Failed to find board by slug: ${error instanceof Error ? error.message : String(error)}`,
@@ -3918,8 +3984,9 @@ var BoardRepository = class {
3918
3984
  */
3919
3985
  async findAll() {
3920
3986
  try {
3987
+ const baseUrl = await getBaseUrl();
3921
3988
  const rows = await select(this.db).from(boards3).all();
3922
- return rows.map((row) => this.rowToBoard(row));
3989
+ return rows.map((row) => this.rowToBoard(row, baseUrl));
3923
3990
  } catch (error) {
3924
3991
  throw new RepositoryError(
3925
3992
  `Failed to find all boards: ${error instanceof Error ? error.message : String(error)}`,
@@ -4269,7 +4336,14 @@ function decryptConfig(config) {
4269
4336
  if (typeof decrypted[field] === "string" && decrypted[field]) {
4270
4337
  try {
4271
4338
  decrypted[field] = decryptApiKey(decrypted[field]);
4272
- } catch {
4339
+ } catch (error) {
4340
+ console.error(
4341
+ `[gateway-channels] Failed to decrypt ${field}:`,
4342
+ error instanceof Error ? error.message : String(error)
4343
+ );
4344
+ console.error(
4345
+ "[gateway-channels] Channel credentials may be corrupted or master secret changed"
4346
+ );
4273
4347
  }
4274
4348
  }
4275
4349
  }
@@ -4410,6 +4484,15 @@ var GatewayChannelRepository = class {
4410
4484
  throw new EntityNotFoundError("GatewayChannel", id);
4411
4485
  }
4412
4486
  const merged = { ...current, ...updates };
4487
+ if (updates.config) {
4488
+ const mergedConfig = { ...current.config, ...updates.config };
4489
+ for (const field of SENSITIVE_CONFIG_FIELDS) {
4490
+ if (!updates.config[field] && current.config[field]) {
4491
+ mergedConfig[field] = current.config[field];
4492
+ }
4493
+ }
4494
+ merged.config = mergedConfig;
4495
+ }
4413
4496
  const insertData = this.channelToInsert(merged);
4414
4497
  await update(this.db, gatewayChannels3).set({
4415
4498
  name: insertData.name,
@@ -5406,6 +5489,7 @@ init_cjs_shims();
5406
5489
 
5407
5490
  // src/db/repositories/sessions.ts
5408
5491
  var import_drizzle_orm13 = require("drizzle-orm");
5492
+ init_config_manager();
5409
5493
  init_ids();
5410
5494
  init_database_wrapper();
5411
5495
  init_schema();
@@ -5415,11 +5499,19 @@ var SessionRepository = class {
5415
5499
  }
5416
5500
  /**
5417
5501
  * Convert database row to Session type
5502
+ *
5503
+ * @param row - Database row
5504
+ * @param worktreeBoardId - Board ID from worktree (if JOINed)
5505
+ * @param boardSlug - Board slug from boards table (if JOINed)
5506
+ * @param baseUrl - Base URL for generating session URLs
5418
5507
  */
5419
- rowToSession(row) {
5508
+ rowToSession(row, worktreeBoardId, boardSlug, baseUrl) {
5420
5509
  const genealogyData = row.data.genealogy || { children: [] };
5510
+ const sessionId = row.session_id;
5511
+ const boardId = worktreeBoardId ?? null;
5512
+ const url = baseUrl ? getSessionUrl(sessionId, boardId, boardSlug, baseUrl) : null;
5421
5513
  return {
5422
- session_id: row.session_id,
5514
+ session_id: sessionId,
5423
5515
  status: row.status,
5424
5516
  agentic_tool: row.agentic_tool,
5425
5517
  created_at: new Date(row.created_at).toISOString(),
@@ -5427,6 +5519,8 @@ var SessionRepository = class {
5427
5519
  created_by: row.created_by,
5428
5520
  unix_username: row.unix_username || null,
5429
5521
  worktree_id: row.worktree_id,
5522
+ worktree_board_id: boardId,
5523
+ url,
5430
5524
  ...row.data,
5431
5525
  tasks: row.data.tasks.map((id) => id),
5432
5526
  genealogy: {
@@ -5539,11 +5633,15 @@ var SessionRepository = class {
5539
5633
  try {
5540
5634
  const insertData = this.sessionToInsert(data);
5541
5635
  await insert(this.db, sessions3).values(insertData).run();
5542
- const row = await select(this.db).from(sessions3).where((0, import_drizzle_orm13.eq)(sessions3.session_id, insertData.session_id)).one();
5543
- if (!row) {
5636
+ const baseUrl = await getBaseUrl();
5637
+ const result = await select(this.db).from(sessions3).leftJoin(worktrees3, (0, import_drizzle_orm13.eq)(sessions3.worktree_id, worktrees3.worktree_id)).leftJoin(boards3, (0, import_drizzle_orm13.eq)(worktrees3.board_id, boards3.board_id)).where((0, import_drizzle_orm13.eq)(sessions3.session_id, insertData.session_id)).one();
5638
+ if (!result) {
5544
5639
  throw new RepositoryError("Failed to retrieve created session");
5545
5640
  }
5546
- return this.rowToSession(row);
5641
+ const sessionRow = result.sessions;
5642
+ const boardId = result.worktrees?.board_id ?? null;
5643
+ const boardSlug = result.boards?.slug ?? null;
5644
+ return this.rowToSession(sessionRow, boardId, boardSlug, baseUrl);
5547
5645
  } catch (error) {
5548
5646
  if (error instanceof RepositoryError) throw error;
5549
5647
  throw new RepositoryError(
@@ -5554,12 +5652,22 @@ var SessionRepository = class {
5554
5652
  }
5555
5653
  /**
5556
5654
  * Find session by ID (supports short ID)
5655
+ *
5656
+ * Automatically LEFT JOINs with worktrees table to populate worktree_board_id and url.
5657
+ * This avoids N+1 queries when URL generation is needed.
5557
5658
  */
5558
5659
  async findById(id) {
5559
5660
  try {
5560
5661
  const fullId = await this.resolveId(id);
5561
- const row = await select(this.db).from(sessions3).where((0, import_drizzle_orm13.eq)(sessions3.session_id, fullId)).one();
5562
- return row ? this.rowToSession(row) : null;
5662
+ const baseUrl = await getBaseUrl();
5663
+ const result = await select(this.db).from(sessions3).leftJoin(worktrees3, (0, import_drizzle_orm13.eq)(sessions3.worktree_id, worktrees3.worktree_id)).leftJoin(boards3, (0, import_drizzle_orm13.eq)(worktrees3.board_id, boards3.board_id)).where((0, import_drizzle_orm13.eq)(sessions3.session_id, fullId)).one();
5664
+ if (!result) {
5665
+ return null;
5666
+ }
5667
+ const sessionRow = result.sessions;
5668
+ const boardId = result.worktrees?.board_id ?? null;
5669
+ const boardSlug = result.boards?.slug ?? null;
5670
+ return this.rowToSession(sessionRow, boardId, boardSlug, baseUrl);
5563
5671
  } catch (error) {
5564
5672
  if (error instanceof EntityNotFoundError) return null;
5565
5673
  if (error instanceof AmbiguousIdError) throw error;
@@ -5571,11 +5679,21 @@ var SessionRepository = class {
5571
5679
  }
5572
5680
  /**
5573
5681
  * Find all sessions
5682
+ *
5683
+ * LEFT JOINs with worktrees to populate board_id and url in a single query.
5574
5684
  */
5575
5685
  async findAll() {
5576
5686
  try {
5577
- const rows = await select(this.db).from(sessions3).all();
5578
- return rows.map((row) => this.rowToSession(row));
5687
+ const baseUrl = await getBaseUrl();
5688
+ const results = await select(this.db).from(sessions3).leftJoin(worktrees3, (0, import_drizzle_orm13.eq)(sessions3.worktree_id, worktrees3.worktree_id)).leftJoin(boards3, (0, import_drizzle_orm13.eq)(worktrees3.board_id, boards3.board_id)).all();
5689
+ return results.map(
5690
+ (result) => {
5691
+ const sessionRow = result.sessions;
5692
+ const boardId = result.worktrees?.board_id ?? null;
5693
+ const boardSlug = result.boards?.slug ?? null;
5694
+ return this.rowToSession(sessionRow, boardId, boardSlug, baseUrl);
5695
+ }
5696
+ );
5579
5697
  } catch (error) {
5580
5698
  throw new RepositoryError(
5581
5699
  `Failed to find all sessions: ${error instanceof Error ? error.message : String(error)}`,
@@ -5585,11 +5703,21 @@ var SessionRepository = class {
5585
5703
  }
5586
5704
  /**
5587
5705
  * Find sessions by status
5706
+ *
5707
+ * LEFT JOINs with worktrees to populate board_id and url.
5588
5708
  */
5589
5709
  async findByStatus(status) {
5590
5710
  try {
5591
- const rows = await select(this.db).from(sessions3).where((0, import_drizzle_orm13.eq)(sessions3.status, status)).all();
5592
- return rows.map((row) => this.rowToSession(row));
5711
+ const baseUrl = await getBaseUrl();
5712
+ const results = await select(this.db).from(sessions3).leftJoin(worktrees3, (0, import_drizzle_orm13.eq)(sessions3.worktree_id, worktrees3.worktree_id)).leftJoin(boards3, (0, import_drizzle_orm13.eq)(worktrees3.board_id, boards3.board_id)).where((0, import_drizzle_orm13.eq)(sessions3.status, status)).all();
5713
+ return results.map(
5714
+ (result) => {
5715
+ const sessionRow = result.sessions;
5716
+ const boardId = result.worktrees?.board_id ?? null;
5717
+ const boardSlug = result.boards?.slug ?? null;
5718
+ return this.rowToSession(sessionRow, boardId, boardSlug, baseUrl);
5719
+ }
5720
+ );
5593
5721
  } catch (error) {
5594
5722
  throw new RepositoryError(
5595
5723
  `Failed to find sessions by status: ${error instanceof Error ? error.message : String(error)}`,
@@ -5599,11 +5727,22 @@ var SessionRepository = class {
5599
5727
  }
5600
5728
  /**
5601
5729
  * Find sessions by board ID
5730
+ *
5731
+ * Uses materialized board_id column for O(1) indexed lookup.
5732
+ * LEFT JOINs with worktrees to populate url (board_id already known from filter).
5602
5733
  */
5603
5734
  async findByBoard(boardId) {
5604
5735
  try {
5605
- const rows = await select(this.db).from(sessions3).where((0, import_drizzle_orm13.eq)(sessions3.board_id, boardId)).all();
5606
- return rows.map((row) => this.rowToSession(row));
5736
+ const baseUrl = await getBaseUrl();
5737
+ const results = await select(this.db).from(sessions3).leftJoin(worktrees3, (0, import_drizzle_orm13.eq)(sessions3.worktree_id, worktrees3.worktree_id)).leftJoin(boards3, (0, import_drizzle_orm13.eq)(worktrees3.board_id, boards3.board_id)).where((0, import_drizzle_orm13.eq)(sessions3.board_id, boardId)).all();
5738
+ return results.map(
5739
+ (result) => {
5740
+ const sessionRow = result.sessions;
5741
+ const board_id = result.worktrees?.board_id ?? null;
5742
+ const boardSlug = result.boards?.slug ?? null;
5743
+ return this.rowToSession(sessionRow, board_id, boardSlug, baseUrl);
5744
+ }
5745
+ );
5607
5746
  } catch (error) {
5608
5747
  throw new RepositoryError(
5609
5748
  `Failed to find sessions by board: ${error instanceof Error ? error.message : String(error)}`,
@@ -5613,18 +5752,28 @@ var SessionRepository = class {
5613
5752
  }
5614
5753
  /**
5615
5754
  * Find child sessions (forked or spawned from this session)
5755
+ *
5756
+ * LEFT JOINs with worktrees to populate board_id and url.
5616
5757
  */
5617
5758
  async findChildren(sessionId) {
5618
5759
  try {
5619
5760
  const fullId = await this.resolveId(sessionId);
5761
+ const baseUrl = await getBaseUrl();
5620
5762
  const { jsonExtract: jsonExtract2 } = await Promise.resolve().then(() => (init_database_wrapper(), database_wrapper_exports));
5621
- const rows = await select(this.db).from(sessions3).where(
5763
+ const results = await select(this.db).from(sessions3).leftJoin(worktrees3, (0, import_drizzle_orm13.eq)(sessions3.worktree_id, worktrees3.worktree_id)).leftJoin(boards3, (0, import_drizzle_orm13.eq)(worktrees3.board_id, boards3.board_id)).where(
5622
5764
  (0, import_drizzle_orm13.or)(
5623
5765
  import_drizzle_orm13.sql`${jsonExtract2(this.db, sessions3.data, "genealogy.parent_session_id")} = ${fullId}`,
5624
5766
  import_drizzle_orm13.sql`${jsonExtract2(this.db, sessions3.data, "genealogy.forked_from_session_id")} = ${fullId}`
5625
5767
  )
5626
5768
  ).all();
5627
- return rows.map((row) => this.rowToSession(row));
5769
+ return results.map(
5770
+ (result) => {
5771
+ const sessionRow = result.sessions;
5772
+ const boardId = result.worktrees?.board_id ?? null;
5773
+ const boardSlug = result.boards?.slug ?? null;
5774
+ return this.rowToSession(sessionRow, boardId, boardSlug, baseUrl);
5775
+ }
5776
+ );
5628
5777
  } catch (error) {
5629
5778
  throw new RepositoryError(
5630
5779
  `Failed to find child sessions: ${error instanceof Error ? error.message : String(error)}`,
@@ -5677,14 +5826,18 @@ var SessionRepository = class {
5677
5826
  async update(id, updates) {
5678
5827
  try {
5679
5828
  const fullId = await this.resolveId(id);
5829
+ const baseUrl = await getBaseUrl();
5680
5830
  const statusInfo = updates.status ? ` (status: ${updates.status}, ready_for_prompt: ${updates.ready_for_prompt})` : "";
5681
5831
  console.debug(`\u{1F504} [SessionRepo] Updating session ${fullId.substring(0, 8)}${statusInfo}`);
5682
5832
  const result = await this.db.transaction(async (tx) => {
5683
- const currentRow = await select(tx).from(sessions3).where((0, import_drizzle_orm13.eq)(sessions3.session_id, fullId)).one();
5684
- if (!currentRow) {
5833
+ const currentResult = await select(tx).from(sessions3).leftJoin(worktrees3, (0, import_drizzle_orm13.eq)(sessions3.worktree_id, worktrees3.worktree_id)).leftJoin(boards3, (0, import_drizzle_orm13.eq)(worktrees3.board_id, boards3.board_id)).where((0, import_drizzle_orm13.eq)(sessions3.session_id, fullId)).one();
5834
+ if (!currentResult) {
5685
5835
  throw new EntityNotFoundError("Session", id);
5686
5836
  }
5687
- const current = this.rowToSession(currentRow);
5837
+ const currentRow = currentResult.sessions;
5838
+ const boardId = currentResult.worktrees?.board_id ?? null;
5839
+ const boardSlug = currentResult.boards?.slug ?? null;
5840
+ const current = this.rowToSession(currentRow, boardId, boardSlug, baseUrl);
5688
5841
  const merged = deepMerge(current, updates);
5689
5842
  const insertData = this.sessionToInsert(merged);
5690
5843
  await update(tx, sessions3).set({
@@ -5751,15 +5904,18 @@ var SessionRepository = class {
5751
5904
  * instead of N+1. Returns sessions where user is a worktree owner OR worktree.others_can
5752
5905
  * allows at least 'view' access.
5753
5906
  *
5907
+ * Also populates board_id and url via the worktrees JOIN.
5908
+ *
5754
5909
  * NOTE: This method should only be called when RBAC is enabled. When RBAC is disabled,
5755
5910
  * the scopeSessionQuery hook is not registered, so default Feathers query is used
5756
5911
  * (which returns all sessions without filtering).
5757
5912
  *
5758
5913
  * @param userId - User ID to check access for
5759
- * @returns Array of accessible sessions
5914
+ * @returns Array of accessible sessions with urls populated
5760
5915
  */
5761
5916
  async findAccessibleSessions(userId) {
5762
- const rows = await select(this.db, (0, import_drizzle_orm13.getTableColumns)(sessions3)).from(sessions3).innerJoin(worktrees3, (0, import_drizzle_orm13.eq)(sessions3.worktree_id, worktrees3.worktree_id)).leftJoin(
5917
+ const baseUrl = await getBaseUrl();
5918
+ const results = await select(this.db).from(sessions3).innerJoin(worktrees3, (0, import_drizzle_orm13.eq)(sessions3.worktree_id, worktrees3.worktree_id)).leftJoin(boards3, (0, import_drizzle_orm13.eq)(worktrees3.board_id, boards3.board_id)).leftJoin(
5763
5919
  worktreeOwners3,
5764
5920
  (0, import_drizzle_orm13.and)(
5765
5921
  (0, import_drizzle_orm13.eq)(worktreeOwners3.worktree_id, worktrees3.worktree_id),
@@ -5771,7 +5927,14 @@ var SessionRepository = class {
5771
5927
  (0, import_drizzle_orm13.inArray)(worktrees3.others_can, ["view", "prompt", "all"])
5772
5928
  )
5773
5929
  ).all();
5774
- return rows.map((row) => this.rowToSession(row));
5930
+ return results.map(
5931
+ (result) => {
5932
+ const sessionRow = result.sessions;
5933
+ const boardId = result.worktrees?.board_id ?? null;
5934
+ const boardSlug = result.boards?.slug ?? null;
5935
+ return this.rowToSession(sessionRow, boardId, boardSlug, baseUrl);
5936
+ }
5937
+ );
5775
5938
  }
5776
5939
  /**
5777
5940
  * Enrich a single session with last assistant message
@@ -5820,7 +5983,7 @@ var SessionRepository = class {
5820
5983
  fullText = messageData.content.filter((block) => block.type === "text" && block.text).map((block) => block.text).join("\n");
5821
5984
  }
5822
5985
  if (fullText.length > truncationLength) {
5823
- fullText = fullText.substring(0, truncationLength) + "...";
5986
+ fullText = `${fullText.substring(0, truncationLength)}...`;
5824
5987
  }
5825
5988
  lastMessageBySession.set(sessionId, fullText);
5826
5989
  }
@@ -6607,6 +6770,20 @@ var ThreadSessionMapRepository = class {
6607
6770
  );
6608
6771
  }
6609
6772
  }
6773
+ /**
6774
+ * Find all mappings for a worktree (for UI filtering gateway sessions)
6775
+ */
6776
+ async findByWorktree(worktreeId) {
6777
+ try {
6778
+ const rows = await select(this.db).from(threadSessionMap3).where((0, import_drizzle_orm16.eq)(threadSessionMap3.worktree_id, worktreeId)).all();
6779
+ return rows.map((row) => this.rowToMapping(row));
6780
+ } catch (error) {
6781
+ throw new RepositoryError(
6782
+ `Failed to find mappings by worktree: ${error instanceof Error ? error.message : String(error)}`,
6783
+ error
6784
+ );
6785
+ }
6786
+ }
6610
6787
  };
6611
6788
 
6612
6789
  // src/db/repositories/users.ts
@@ -7383,7 +7560,7 @@ var WorktreeRepository = class {
7383
7560
  fullText = messageData.content.filter((block) => block.type === "text" && block.text).map((block) => block.text).join("\n");
7384
7561
  }
7385
7562
  if (fullText.length > truncationLength) {
7386
- fullText = fullText.substring(0, truncationLength) + "...";
7563
+ fullText = `${fullText.substring(0, truncationLength)}...`;
7387
7564
  }
7388
7565
  lastMessageBySession.set(sessionId, fullText);
7389
7566
  }
@@ -7394,7 +7571,7 @@ var WorktreeRepository = class {
7394
7571
  const sessionId = row.session_id;
7395
7572
  let lastMessage = lastMessageBySession.get(sessionId) || "";
7396
7573
  if (lastMessage.length > truncationLength) {
7397
- lastMessage = lastMessage.substring(0, truncationLength) + "...truncated";
7574
+ lastMessage = `${lastMessage.substring(0, truncationLength)}...truncated`;
7398
7575
  }
7399
7576
  const sessionData = row.data;
7400
7577
  const messageCount = sessionData?.message_count ?? 0;
@@ -10571,6 +10748,7 @@ function unpatchConsole() {
10571
10748
  generateUnixUsername,
10572
10749
  generateWorktreeGroupName,
10573
10750
  getAgorHome,
10751
+ getBaseUrl,
10574
10752
  getCommentAttachmentType,
10575
10753
  getConfigPath,
10576
10754
  getConfigValue,
@@ -1,30 +1,30 @@
1
1
  export { AgorClient, AgorService, BoardsService, MessagesService, ReposLocalService, ReposService, ServiceTypes, SessionsService, TasksService, WorktreesService, createClient, createRestClient, isDaemonRunning } from './api/index.cjs';
2
2
  export { AGOR_INTERNAL_ENV_VARS, AGOR_USER_ENV_KEYS_VAR, AgorYmlSchema, ApiKeyName, BLOCKED_ENV_VARS, ENV_VAR_CONSTRAINTS, KeyResolutionContext, KeyResolutionResult, ValidationError, createUserProcessEnvironment, formatValidationError, formatValidationErrors, getEnvVarBlockReason, isEnvVarAllowed, isValid, parseAgorYml, resolveApiKey, resolveApiKeySync, resolveSystemEnvironment, resolveUserEnvironment, validateEnvVar, withUserEnvironment, withUserEnvironmentSync, writeAgorYml } from './config/index.cjs';
3
- export { c as ensureCodexHome, e as expandHomePath, g as getAgorHome, a as getConfigPath, d as getConfigValue, k as getCredential, h as getDaemonUrl, m as getDaemonUser, q as getDataHome, x as getDataHomeAsync, b as getDefaultConfig, t as getReposDir, y as getReposDirAsync, w as getWorktreePath, v as getWorktreesDir, z as getWorktreesDirAsync, i as initConfig, p as isUnixImpersonationEnabled, o as isWorktreeRbacEnabled, l as loadConfig, j as loadConfigSync, n as requireDaemonUser, r as resolveCodexHome, s as saveConfig, f as setConfigValue, u as unsetConfigValue } from './config-manager-sCgziLkz.cjs';
3
+ export { c as ensureCodexHome, e as expandHomePath, g as getAgorHome, j as getBaseUrl, a as getConfigPath, d as getConfigValue, m as getCredential, h as getDaemonUrl, n as getDaemonUser, t as getDataHome, y as getDataHomeAsync, b as getDefaultConfig, v as getReposDir, z as getReposDirAsync, x as getWorktreePath, w as getWorktreesDir, A as getWorktreesDirAsync, i as initConfig, q as isUnixImpersonationEnabled, p as isWorktreeRbacEnabled, l as loadConfig, k as loadConfigSync, o as requireDaemonUser, r as resolveCodexHome, s as saveConfig, f as setConfigValue, u as unsetConfigValue } from './config-manager-CsBk-Rh2.cjs';
4
4
  export { DAEMON, DATABASE, ENVIRONMENT, GIT, PAGINATION, RepoReference, RepoReferenceOption, SESSION, WEBSOCKET, extractSlugFromUrl, formatRepoReference, getDefaultRepoReference, getGroupedRepoReferenceOptions, getRepoReferenceOptions, isValidGitUrl, isValidSlug, parseRepoReference, resolveRepoReference } from './config/browser.cjs';
5
- export { f as AgorCodexSettings, j as AgorConfig, i as AgorCredentials, b as AgorDaemonSettings, e as AgorDatabaseSettings, A as AgorDefaults, a as AgorDisplaySettings, g as AgorExecutionSettings, d as AgorOpenCodeSettings, h as AgorPathSettings, c as AgorUISettings, k as ConfigKey, C as CredentialKey, U as UnknownJson } from './types-D_wAaaE3.cjs';
5
+ export { f as AgorCodexSettings, j as AgorConfig, i as AgorCredentials, b as AgorDaemonSettings, e as AgorDatabaseSettings, A as AgorDefaults, a as AgorDisplaySettings, g as AgorExecutionSettings, d as AgorOpenCodeSettings, h as AgorPathSettings, c as AgorUISettings, k as ConfigKey, C as CredentialKey, U as UnknownJson } from './types-Ddri21rw.cjs';
6
6
  export { AmbiguousIdError, BaseRepository, BoardCommentsRepository, BoardObjectRepository, BoardRepository, CreateUserData, DEFAULT_ADMIN_USER, EntityNotFoundError, GatewayChannelRepository, IdResolutionError, InsertValues, MCPServerRepository, MessagesRepository, MigrationError, MutationResult, RawQueryResult, RepoRepository, RepositoryError, SessionMCPServerRepository, SessionRepository, SessionWithLastMessage, TaskRepository, ThreadSessionMapRepository, UnifiedQuery, UnifiedReturning, UsersRepository, WorktreeRepository, WorktreeSessionActivity, WorktreeWithZone, WorktreeWithZoneAndSessions, boardComments, boardObjects, boards, checkMigrationStatus, compare, createDefaultAdminUser, createUser, decryptApiKey, deleteFrom, encryptApiKey, executeAll, executeGet, executeRaw, executeRun, formatShortId, gatewayChannels, generateId, generateSlug, generateUniqueSlug, getOne, getUserByEmail, hash, identifyUrlParam, initializeDatabase, insert, insertOne, isEncrypted, isForeignKeyConstraintError, isPostgresDatabase, isSQLiteDatabase, isShortId, jsonExtract, mcpServers, messages, repos, resolveShortId, runMigrations, seedInitialData, select, sessionMcpServers, sessions, tasks, threadSessionMap, update, userExists, users, withSessionGuard, worktreeOwners, worktrees } from './db/index.cjs';
7
7
  export { CloneOptions, CloneProgress, CloneResult, WorktreeInfo, cleanWorktree, cloneRepo, createWorktree, deleteRepoDirectory, deleteWorktreeDirectory, extractRepoName, getCurrentBranch, getCurrentSha, getDefaultBranch, getGitState, getRemoteBranches, getRemoteUrl, hasRemoteBranch, isClean, isGitRepo, isValidGitRepo, listWorktrees, pruneWorktrees, removeWorktree } from './git/index.cjs';
8
8
  export { MCPTemplateContext, MCPTemplateResolutionResult, buildMCPTemplateContextFromEnv, resolveMcpServerEnv, resolveMcpServerTemplates, resolveMcpServersTemplates } from './mcp/index.cjs';
9
9
  export { PermissionDecision, PermissionRequest } from './permissions/index.cjs';
10
- export { b as AgenticTool, A as AgenticToolName, C as ClaudeCodePermissionMode, d as CodexApprovalPolicy, e as CodexNetworkAccess, a as CodexPermissionMode, c as CodexSandboxMode, G as GeminiPermissionMode, O as OpenCodePermissionMode, P as PermissionMode, h as ScheduledRunMetadata, f as Session, S as SessionStatus, i as SpawnConfig, g as getDefaultPermissionMode } from './session-Bt9i9089.cjs';
11
- export { e as Board, a as BoardEntityObject, f as BoardExportBlob, d as BoardObject, B as BoardObjectType, M as MarkdownBoardObject, T as TextBoardObject, c as ZoneBoardObject, b as ZoneTrigger, Z as ZoneTriggerBehavior } from './board-DCNkcsyf.cjs';
10
+ export { b as AgenticTool, A as AgenticToolName, C as ClaudeCodePermissionMode, d as CodexApprovalPolicy, e as CodexNetworkAccess, a as CodexPermissionMode, c as CodexSandboxMode, G as GeminiPermissionMode, O as OpenCodePermissionMode, P as PermissionMode, h as ScheduledRunMetadata, f as Session, S as SessionStatus, i as SpawnConfig, g as getDefaultPermissionMode } from './session-BJbTzw3y.cjs';
11
+ export { e as Board, a as BoardEntityObject, f as BoardExportBlob, d as BoardObject, B as BoardObjectType, M as MarkdownBoardObject, T as TextBoardObject, c as ZoneBoardObject, b as ZoneTrigger, Z as ZoneTriggerBehavior } from './board-ByCag4EG.cjs';
12
12
  export { B as BoardComment, b as BoardCommentCreate, c as BoardCommentPatch, a as CommentAttachmentType, C as CommentReaction, R as ReactionSummary, g as getCommentAttachmentType, f as groupReactions, d as isReply, e as isResolvable, i as isThreadRoot } from './board-comment-D9NA4gOJ.cjs';
13
13
  export { b as ContextFileDetail, a as ContextFileListItem, C as ContextFilePath } from './context-ByxGjp5l.cjs';
14
- export { a as AuthenticatedParams, A as AuthenticatedUser, b as AuthenticationResult, B as BaseService, C as CreateHookContext, H as HookContext, Q as QueryParams, R as RBACParams, S as ServiceWithEvents } from './feathers-C1uChqXy.cjs';
14
+ export { a as AuthenticatedParams, A as AuthenticatedUser, b as AuthenticationResult, B as BaseService, C as CreateHookContext, H as HookContext, Q as QueryParams, R as RBACParams, S as ServiceWithEvents } from './feathers-Cyk1lpAM.cjs';
15
15
  export { ActiveUser, CreateInput, CursorLeaveEvent, CursorMoveEvent, CursorMovedEvent, DeepReadonly, FileDetail, FileListItem, FileListResponse, FilePath, FlattenObject, PaginatedResult, PartialKeys, RemoteCursor, RequireKeys, SessionViewMode, UpdateInput, isDefined, isNonEmptyString } from './types/index.cjs';
16
- export { C as ChannelType, b as GatewayAgenticConfig, c as GatewayChannel, G as GatewayChannelID, d as ThreadSessionMap, T as ThreadSessionMapID, a as ThreadStatus } from './gateway-DGNtjRnd.cjs';
16
+ export { C as ChannelType, b as GatewayAgenticConfig, c as GatewayChannel, G as GatewayChannelID, d as ThreadSessionMap, T as ThreadSessionMapID, a as ThreadStatus } from './gateway-C2NOdrxu.cjs';
17
17
  export { A as AgenticToolID, B as BoardID, C as CommentID, I as IDPrefix, M as MessageID, R as RepoID, a as SessionID, S as ShortID, T as TaskID, U as UUID, b as UserID, W as WorktreeID } from './id-BwPJtWxW.cjs';
18
18
  export { C as CreateMCPServerInput, J as JSONSchema, d as MCPAuth, h as MCPCapabilities, l as MCPConfigFile, g as MCPPrompt, f as MCPResource, b as MCPScope, i as MCPServer, j as MCPServerFilters, M as MCPServerID, m as MCPServersConfig, c as MCPSource, k as MCPTestResult, e as MCPTool, a as MCPTransport, P as PromptArgument, S as SessionMCPServer, T as ToolPermission, U as UpdateMCPServerInput } from './mcp-DqadENYY.cjs';
19
19
  export { C as ContentBlock, e as Message, f as MessageCreate, M as MessageRole, a as MessageStatus, b as MessageType, d as PermissionRequestContent, P as PermissionScope, c as PermissionStatus, S as StreamingEventType, T as ToolUse } from './message-DZitapX9.cjs';
20
20
  export { b as Repo, h as RepoEnvironmentConfig, R as RepoSlug, a as RepoType, d as Worktree, c as WorktreeConfig, g as WorktreeEnvironmentInstance, W as WorktreeName, e as WorktreePermissionLevel, f as WorktreeScheduleConfig } from './worktree-hZImhblR.cjs';
21
21
  export { b as Report, R as ReportPath, a as ReportTemplate, c as Task, T as TaskStatus } from './task-D5cWUcAY.cjs';
22
- export { A as AudioPreferences, B as BaseUserFields, C as ChimeSound, e as CreateUserInput, b as DefaultAgenticConfig, a as DefaultAgenticToolConfig, D as DefaultModelConfig, E as EventStreamPreferences, f as UpdateUserInput, d as User, c as UserPreferences, U as UserRole } from './user-C5id0Zhj.cjs';
22
+ export { A as AudioPreferences, B as BaseUserFields, C as ChimeSound, e as CreateUserInput, b as DefaultAgenticConfig, a as DefaultAgenticToolConfig, D as DefaultModelConfig, E as EventStreamPreferences, f as UpdateUserInput, d as User, c as UserPreferences, U as UserRole } from './user-LBRon9n1.cjs';
23
23
  export { AGOR_DEFAULT_SHELL, AGOR_HOME_BASE, AGOR_USERS_GROUP, AGOR_WORKTREES_DIR, AGOR_ZELLIJ_CONFIG, BuildSpawnArgsOptions, CommandError, CommandExecutor, CommandResult, CreateExecutorOptions, DirectExecutor, DryRunExecutor, EnvironmentCommandType, ExecWithInputOptions, ImpersonationResult, LoggingExecutor, NoOpExecutor, REPO_GIT_PERMISSION_MODE, ResolveImpersonationOptions, RunAsUserOptions, SpawnEnvironmentCommandOptions, SudoCliExecutor, SudoCliExecutorConfig, SudoDirectExecutor, SymlinkCommands, ThrowingExecutor, UnixGroupCommands, UnixIntegrationConfig, UnixIntegrationService, UnixOperationResult, UnixUserCommands, UnixUserMode, UnixUserNotFoundError, WorktreePermissionModes, WorktreeSymlinkInfo, buildSpawnArgs, buildSymlinkInfo, checkAsUser, createAdminExecutor, createExecutor, escapeShellArg, generateRepoGroupName, generateUnixUsername, generateWorktreeGroupName, getGidFromGroupName, getUidFromUsername, getUserHomeDir, getUserWorktreesDir, getWorktreePermissionMode, getWorktreeSymlinkPath, isAutoGeneratedUsername, isValidRepoGroupName, isValidUnixUsername, isValidWorktreeGroupName, parseRepoGroupName, parseUnixUsername, parseWorktreeGroupName, resolveUnixUserForImpersonation, runAsUser, spawnEnvironmentCommand, unixUserExists, validateResolvedUnixUser } from './unix/index.cjs';
24
24
  export { patchConsole, unpatchConsole } from './utils/logger.cjs';
25
25
  export { default as authenticationClient } from '@feathersjs/authentication-client';
26
26
  export { SQL, and, asc, desc, eq, inArray, like, or, sql } from 'drizzle-orm';
27
- export { v as BoardCommentInsert, u as BoardCommentRow, k as BoardInsert, t as BoardObjectInsert, s as BoardObjectRow, B as BoardRow, e as DEFAULT_DB_PATH, d as Database, a as DatabaseConnectionError, D as DbConfig, w as GatewayChannelInsert, G as GatewayChannelRow, p as MCPServerInsert, o as MCPServerRow, j as MessageInsert, M as MessageRow, l as RepoInsert, R as RepoRow, h as SessionInsert, r as SessionMCPServerInsert, q as SessionMCPServerRow, S as SessionRow, i as TaskInsert, T as TaskRow, y as ThreadSessionMapInsert, x as ThreadSessionMapRow, n as UserInsert, U as UserRow, m as WorktreeInsert, W as WorktreeRow, c as createDatabase, b as createDatabaseAsync, f as createLocalDatabase, g as getDatabaseUrl } from './client-DKbFqX_X.cjs';
27
+ export { v as BoardCommentInsert, u as BoardCommentRow, k as BoardInsert, t as BoardObjectInsert, s as BoardObjectRow, B as BoardRow, e as DEFAULT_DB_PATH, d as Database, a as DatabaseConnectionError, D as DbConfig, w as GatewayChannelInsert, G as GatewayChannelRow, p as MCPServerInsert, o as MCPServerRow, j as MessageInsert, M as MessageRow, l as RepoInsert, R as RepoRow, h as SessionInsert, r as SessionMCPServerInsert, q as SessionMCPServerRow, S as SessionRow, i as TaskInsert, T as TaskRow, y as ThreadSessionMapInsert, x as ThreadSessionMapRow, n as UserInsert, U as UserRow, m as WorktreeInsert, W as WorktreeRow, c as createDatabase, b as createDatabaseAsync, f as createLocalDatabase, g as getDatabaseUrl, z as sessionsRelations, A as worktreesRelations } from './client-gnSCmSyL.cjs';
28
28
  export { simpleGit } from 'simple-git';
29
29
  export { Id, NullableId, Paginated, Params, Service, ServiceMethods } from '@feathersjs/feathers';
30
30
  import 'socket.io-client';