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
@@ -1,30 +1,30 @@
1
1
  export { AgorClient, AgorService, BoardsService, MessagesService, ReposLocalService, ReposService, ServiceTypes, SessionsService, TasksService, WorktreesService, createClient, createRestClient, isDaemonRunning } from './api/index.js';
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.js';
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-DGBdhxtZ.js';
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-BLDGbZHT.js';
4
4
  export { DAEMON, DATABASE, ENVIRONMENT, GIT, PAGINATION, RepoReference, RepoReferenceOption, SESSION, WEBSOCKET, extractSlugFromUrl, formatRepoReference, getDefaultRepoReference, getGroupedRepoReferenceOptions, getRepoReferenceOptions, isValidGitUrl, isValidSlug, parseRepoReference, resolveRepoReference } from './config/browser.js';
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.js';
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.js';
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.js';
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.js';
8
8
  export { MCPTemplateContext, MCPTemplateResolutionResult, buildMCPTemplateContextFromEnv, resolveMcpServerEnv, resolveMcpServerTemplates, resolveMcpServersTemplates } from './mcp/index.js';
9
9
  export { PermissionDecision, PermissionRequest } from './permissions/index.js';
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-Da9rf6n5.js';
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-C-PU8jok.js';
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-DLVkt-jY.js';
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-CZuyMRpr.js';
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-rH4c6eVl.js';
13
13
  export { b as ContextFileDetail, a as ContextFileListItem, C as ContextFilePath } from './context-ByxGjp5l.js';
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-B0zjReEk.js';
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-CYMJeMWB.js';
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.js';
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-Dy9fVyiS.js';
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-B4CaePYV.js';
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.js';
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-Bm9HwvDf.js';
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-CrqsdxNE.js';
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-BR7Inm0-.js';
21
21
  export { b as Report, R as ReportPath, a as ReportTemplate, c as Task, T as TaskStatus } from './task-D0i_mU9u.js';
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-DT1Qzfep.js';
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-B77oCF14.js';
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.js';
24
24
  export { patchConsole, unpatchConsole } from './utils/logger.js';
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-CGO13BG6.js';
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-BoLj-jqT.js';
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';
@@ -143,6 +143,7 @@ __export(config_manager_exports, {
143
143
  ensureCodexHome: () => ensureCodexHome,
144
144
  expandHomePath: () => expandHomePath,
145
145
  getAgorHome: () => getAgorHome,
146
+ getBaseUrl: () => getBaseUrl,
146
147
  getConfigPath: () => getConfigPath,
147
148
  getConfigValue: () => getConfigValue,
148
149
  getCredential: () => getCredential,
@@ -365,6 +366,32 @@ async function getDaemonUrl() {
365
366
  const host = config.daemon?.host || defaults.daemon?.host || DAEMON.DEFAULT_HOST;
366
367
  return `http://${host}:${port}`;
367
368
  }
369
+ function validateBaseUrl(url) {
370
+ const trimmed = url.trim().replace(/\/$/, "");
371
+ if (!trimmed.startsWith("http://") && !trimmed.startsWith("https://")) {
372
+ throw new Error(`Invalid base URL: "${url}". Must start with http:// or https://`);
373
+ }
374
+ try {
375
+ new URL(trimmed);
376
+ } catch {
377
+ throw new Error(`Invalid base URL format: "${url}". Must be a valid HTTP(S) URL.`);
378
+ }
379
+ return trimmed;
380
+ }
381
+ async function getBaseUrl() {
382
+ if (process.env.AGOR_BASE_URL) {
383
+ return validateBaseUrl(process.env.AGOR_BASE_URL);
384
+ }
385
+ const config = await loadConfig();
386
+ if (config.daemon?.base_url) {
387
+ return validateBaseUrl(config.daemon.base_url);
388
+ }
389
+ const defaults = getDefaultConfig();
390
+ const envPort = process.env.PORT ? Number.parseInt(process.env.PORT, 10) : void 0;
391
+ const port = envPort || config.daemon?.port || defaults.daemon?.port || DAEMON.DEFAULT_PORT;
392
+ const host = config.daemon?.host || defaults.daemon?.host || DAEMON.DEFAULT_HOST;
393
+ return `http://${host}:${port}`;
394
+ }
368
395
  function loadConfigSync() {
369
396
  const configPath = getConfigPath();
370
397
  try {
@@ -686,13 +713,15 @@ __export(schema_postgres_exports, {
686
713
  repos: () => repos,
687
714
  sessionMcpServers: () => sessionMcpServers,
688
715
  sessions: () => sessions,
716
+ sessionsRelations: () => sessionsRelations,
689
717
  tasks: () => tasks,
690
718
  threadSessionMap: () => threadSessionMap,
691
719
  users: () => users,
692
720
  worktreeOwners: () => worktreeOwners,
693
- worktrees: () => worktrees
721
+ worktrees: () => worktrees,
722
+ worktreesRelations: () => worktreesRelations
694
723
  });
695
- import { sql as sql2 } from "drizzle-orm";
724
+ import { relations, sql as sql2 } from "drizzle-orm";
696
725
  import {
697
726
  bigint,
698
727
  boolean,
@@ -706,7 +735,7 @@ import {
706
735
  uniqueIndex,
707
736
  varchar
708
737
  } from "drizzle-orm/pg-core";
709
- var t, sessions, tasks, messages, boards, repos, worktrees, worktreeOwners, users, mcpServers, boardObjects, sessionMcpServers, boardComments, gatewayChannels, threadSessionMap;
738
+ var t, sessions, tasks, messages, boards, repos, worktrees, worktreeOwners, users, mcpServers, boardObjects, sessionMcpServers, boardComments, gatewayChannels, threadSessionMap, sessionsRelations, worktreesRelations;
710
739
  var init_schema_postgres = __esm({
711
740
  "src/db/schema.postgres.ts"() {
712
741
  "use strict";
@@ -1193,6 +1222,15 @@ var init_schema_postgres = __esm({
1193
1222
  channelStatusIdx: index("idx_thread_map_channel_status").on(table.channel_id, table.status)
1194
1223
  })
1195
1224
  );
1225
+ sessionsRelations = relations(sessions, ({ one }) => ({
1226
+ worktree: one(worktrees, {
1227
+ fields: [sessions.worktree_id],
1228
+ references: [worktrees.worktree_id]
1229
+ })
1230
+ }));
1231
+ worktreesRelations = relations(worktrees, ({ many }) => ({
1232
+ sessions: many(sessions)
1233
+ }));
1196
1234
  }
1197
1235
  });
1198
1236
 
@@ -1208,13 +1246,15 @@ __export(schema_sqlite_exports, {
1208
1246
  repos: () => repos2,
1209
1247
  sessionMcpServers: () => sessionMcpServers2,
1210
1248
  sessions: () => sessions2,
1249
+ sessionsRelations: () => sessionsRelations2,
1211
1250
  tasks: () => tasks2,
1212
1251
  threadSessionMap: () => threadSessionMap2,
1213
1252
  users: () => users2,
1214
1253
  worktreeOwners: () => worktreeOwners2,
1215
- worktrees: () => worktrees2
1254
+ worktrees: () => worktrees2,
1255
+ worktreesRelations: () => worktreesRelations2
1216
1256
  });
1217
- import { sql as sql3 } from "drizzle-orm";
1257
+ import { relations as relations2, sql as sql3 } from "drizzle-orm";
1218
1258
  import {
1219
1259
  index as index2,
1220
1260
  integer as integer2,
@@ -1223,7 +1263,7 @@ import {
1223
1263
  text as text2,
1224
1264
  uniqueIndex as uniqueIndex2
1225
1265
  } from "drizzle-orm/sqlite-core";
1226
- var t2, sessions2, tasks2, messages2, boards2, repos2, worktrees2, worktreeOwners2, users2, mcpServers2, boardObjects2, sessionMcpServers2, boardComments2, gatewayChannels2, threadSessionMap2;
1266
+ var t2, sessions2, tasks2, messages2, boards2, repos2, worktrees2, worktreeOwners2, users2, mcpServers2, boardObjects2, sessionMcpServers2, boardComments2, gatewayChannels2, threadSessionMap2, sessionsRelations2, worktreesRelations2;
1227
1267
  var init_schema_sqlite = __esm({
1228
1268
  "src/db/schema.sqlite.ts"() {
1229
1269
  "use strict";
@@ -1711,6 +1751,15 @@ var init_schema_sqlite = __esm({
1711
1751
  channelStatusIdx: index2("idx_thread_map_channel_status").on(table.channel_id, table.status)
1712
1752
  })
1713
1753
  );
1754
+ sessionsRelations2 = relations2(sessions2, ({ one }) => ({
1755
+ worktree: one(worktrees2, {
1756
+ fields: [sessions2.worktree_id],
1757
+ references: [worktrees2.worktree_id]
1758
+ })
1759
+ }));
1760
+ worktreesRelations2 = relations2(worktrees2, ({ many }) => ({
1761
+ sessions: many(sessions2)
1762
+ }));
1714
1763
  }
1715
1764
  });
1716
1765
 
@@ -2778,18 +2827,8 @@ async function checkMigrationStatus(db) {
2778
2827
  );
2779
2828
  appliedHashes = result.map((row) => String(row.hash));
2780
2829
  }
2781
- const normalizedAppliedHashes = appliedHashes;
2782
- const numExpected = expectedMigrations.length;
2783
- const numApplied = normalizedAppliedHashes.length;
2784
- if (numApplied >= numExpected) {
2785
- return {
2786
- hasPending: false,
2787
- pending: [],
2788
- applied: expectedMigrations.map((m) => m.tag)
2789
- };
2790
- }
2791
- const pending = expectedMigrations.filter((m) => !normalizedAppliedHashes.includes(m.hash)).map((m) => m.tag);
2792
- const appliedTags = expectedMigrations.filter((m) => normalizedAppliedHashes.includes(m.hash)).map((m) => m.tag);
2830
+ const pending = expectedMigrations.filter((m) => !appliedHashes.includes(m.hash)).map((m) => m.tag);
2831
+ const appliedTags = expectedMigrations.filter((m) => appliedHashes.includes(m.hash)).map((m) => m.tag);
2793
2832
  return {
2794
2833
  hasPending: pending.length > 0,
2795
2834
  pending,
@@ -3493,9 +3532,25 @@ var BoardObjectRepository = class {
3493
3532
 
3494
3533
  // src/db/repositories/boards.ts
3495
3534
  init_esm_shims();
3535
+ init_config_manager();
3496
3536
  init_ids();
3497
3537
  import { and as and2, eq as eq5, like as like2, ne } from "drizzle-orm";
3498
3538
  import * as yaml3 from "js-yaml";
3539
+
3540
+ // src/utils/url.ts
3541
+ init_esm_shims();
3542
+ init_ids();
3543
+ function getSessionUrl(sessionId, boardId, boardSlug, baseUrl) {
3544
+ if (!boardId) return null;
3545
+ const boardParam = boardSlug || shortId(boardId);
3546
+ return `${baseUrl}/b/${boardParam}/${shortId(sessionId)}`;
3547
+ }
3548
+ function getBoardUrl(boardId, boardSlug, baseUrl) {
3549
+ const boardParam = boardSlug || shortId(boardId);
3550
+ return `${baseUrl}/b/${boardParam}`;
3551
+ }
3552
+
3553
+ // src/db/repositories/boards.ts
3499
3554
  init_database_wrapper();
3500
3555
  init_schema();
3501
3556
  var BoardRepository = class {
@@ -3504,16 +3559,23 @@ var BoardRepository = class {
3504
3559
  }
3505
3560
  /**
3506
3561
  * Convert database row to Board type
3562
+ *
3563
+ * @param row - Database row
3564
+ * @param baseUrl - Base URL for generating board URLs
3507
3565
  */
3508
- rowToBoard(row) {
3566
+ rowToBoard(row, baseUrl) {
3509
3567
  const data = row.data;
3568
+ const boardId = row.board_id;
3569
+ const slug = row.slug !== null ? row.slug : void 0;
3570
+ const url = baseUrl ? getBoardUrl(boardId, slug, baseUrl) : "";
3510
3571
  return {
3511
- board_id: row.board_id,
3572
+ board_id: boardId,
3512
3573
  name: row.name,
3513
- slug: row.slug !== null ? row.slug : void 0,
3574
+ slug,
3514
3575
  created_at: new Date(row.created_at).toISOString(),
3515
3576
  last_updated: row.updated_at ? new Date(row.updated_at).toISOString() : new Date(row.created_at).toISOString(),
3516
3577
  created_by: row.created_by,
3578
+ url,
3517
3579
  ...data
3518
3580
  };
3519
3581
  }
@@ -3593,6 +3655,7 @@ var BoardRepository = class {
3593
3655
  async create(data) {
3594
3656
  try {
3595
3657
  const boardId = data.board_id ?? generateId();
3658
+ const baseUrl = await getBaseUrl();
3596
3659
  let finalSlug;
3597
3660
  if (data.slug === null) {
3598
3661
  finalSlug = void 0;
@@ -3615,7 +3678,7 @@ var BoardRepository = class {
3615
3678
  if (!row) {
3616
3679
  throw new RepositoryError("Failed to retrieve created board");
3617
3680
  }
3618
- return this.rowToBoard(row);
3681
+ return this.rowToBoard(row, baseUrl);
3619
3682
  } catch (error) {
3620
3683
  if (error instanceof RepositoryError) throw error;
3621
3684
  throw new RepositoryError(
@@ -3630,8 +3693,9 @@ var BoardRepository = class {
3630
3693
  async findById(id) {
3631
3694
  try {
3632
3695
  const fullId = await this.resolveId(id);
3696
+ const baseUrl = await getBaseUrl();
3633
3697
  const row = await select(this.db).from(boards3).where(eq5(boards3.board_id, fullId)).one();
3634
- return row ? this.rowToBoard(row) : null;
3698
+ return row ? this.rowToBoard(row, baseUrl) : null;
3635
3699
  } catch (error) {
3636
3700
  if (error instanceof EntityNotFoundError) return null;
3637
3701
  if (error instanceof AmbiguousIdError) throw error;
@@ -3646,8 +3710,9 @@ var BoardRepository = class {
3646
3710
  */
3647
3711
  async findBySlug(slug) {
3648
3712
  try {
3713
+ const baseUrl = await getBaseUrl();
3649
3714
  const row = await select(this.db).from(boards3).where(eq5(boards3.slug, slug)).one();
3650
- return row ? this.rowToBoard(row) : null;
3715
+ return row ? this.rowToBoard(row, baseUrl) : null;
3651
3716
  } catch (error) {
3652
3717
  throw new RepositoryError(
3653
3718
  `Failed to find board by slug: ${error instanceof Error ? error.message : String(error)}`,
@@ -3672,8 +3737,9 @@ var BoardRepository = class {
3672
3737
  */
3673
3738
  async findAll() {
3674
3739
  try {
3740
+ const baseUrl = await getBaseUrl();
3675
3741
  const rows = await select(this.db).from(boards3).all();
3676
- return rows.map((row) => this.rowToBoard(row));
3742
+ return rows.map((row) => this.rowToBoard(row, baseUrl));
3677
3743
  } catch (error) {
3678
3744
  throw new RepositoryError(
3679
3745
  `Failed to find all boards: ${error instanceof Error ? error.message : String(error)}`,
@@ -4023,7 +4089,14 @@ function decryptConfig(config) {
4023
4089
  if (typeof decrypted[field] === "string" && decrypted[field]) {
4024
4090
  try {
4025
4091
  decrypted[field] = decryptApiKey(decrypted[field]);
4026
- } catch {
4092
+ } catch (error) {
4093
+ console.error(
4094
+ `[gateway-channels] Failed to decrypt ${field}:`,
4095
+ error instanceof Error ? error.message : String(error)
4096
+ );
4097
+ console.error(
4098
+ "[gateway-channels] Channel credentials may be corrupted or master secret changed"
4099
+ );
4027
4100
  }
4028
4101
  }
4029
4102
  }
@@ -4164,6 +4237,15 @@ var GatewayChannelRepository = class {
4164
4237
  throw new EntityNotFoundError("GatewayChannel", id);
4165
4238
  }
4166
4239
  const merged = { ...current, ...updates };
4240
+ if (updates.config) {
4241
+ const mergedConfig = { ...current.config, ...updates.config };
4242
+ for (const field of SENSITIVE_CONFIG_FIELDS) {
4243
+ if (!updates.config[field] && current.config[field]) {
4244
+ mergedConfig[field] = current.config[field];
4245
+ }
4246
+ }
4247
+ merged.config = mergedConfig;
4248
+ }
4167
4249
  const insertData = this.channelToInsert(merged);
4168
4250
  await update(this.db, gatewayChannels3).set({
4169
4251
  name: insertData.name,
@@ -5159,32 +5241,30 @@ function isNonEmptyString(value) {
5159
5241
  init_esm_shims();
5160
5242
 
5161
5243
  // src/db/repositories/sessions.ts
5244
+ init_config_manager();
5162
5245
  init_ids();
5246
+ import { and as and4, desc, eq as eq10, inArray, isNotNull, isNull as isNull2, like as like6, or, sql as sql6 } from "drizzle-orm";
5163
5247
  init_database_wrapper();
5164
5248
  init_schema();
5165
- import {
5166
- and as and4,
5167
- desc,
5168
- eq as eq10,
5169
- getTableColumns,
5170
- inArray,
5171
- isNotNull,
5172
- isNull as isNull2,
5173
- like as like6,
5174
- or,
5175
- sql as sql6
5176
- } from "drizzle-orm";
5177
5249
  var SessionRepository = class {
5178
5250
  constructor(db) {
5179
5251
  this.db = db;
5180
5252
  }
5181
5253
  /**
5182
5254
  * Convert database row to Session type
5255
+ *
5256
+ * @param row - Database row
5257
+ * @param worktreeBoardId - Board ID from worktree (if JOINed)
5258
+ * @param boardSlug - Board slug from boards table (if JOINed)
5259
+ * @param baseUrl - Base URL for generating session URLs
5183
5260
  */
5184
- rowToSession(row) {
5261
+ rowToSession(row, worktreeBoardId, boardSlug, baseUrl) {
5185
5262
  const genealogyData = row.data.genealogy || { children: [] };
5263
+ const sessionId = row.session_id;
5264
+ const boardId = worktreeBoardId ?? null;
5265
+ const url = baseUrl ? getSessionUrl(sessionId, boardId, boardSlug, baseUrl) : null;
5186
5266
  return {
5187
- session_id: row.session_id,
5267
+ session_id: sessionId,
5188
5268
  status: row.status,
5189
5269
  agentic_tool: row.agentic_tool,
5190
5270
  created_at: new Date(row.created_at).toISOString(),
@@ -5192,6 +5272,8 @@ var SessionRepository = class {
5192
5272
  created_by: row.created_by,
5193
5273
  unix_username: row.unix_username || null,
5194
5274
  worktree_id: row.worktree_id,
5275
+ worktree_board_id: boardId,
5276
+ url,
5195
5277
  ...row.data,
5196
5278
  tasks: row.data.tasks.map((id) => id),
5197
5279
  genealogy: {
@@ -5304,11 +5386,15 @@ var SessionRepository = class {
5304
5386
  try {
5305
5387
  const insertData = this.sessionToInsert(data);
5306
5388
  await insert(this.db, sessions3).values(insertData).run();
5307
- const row = await select(this.db).from(sessions3).where(eq10(sessions3.session_id, insertData.session_id)).one();
5308
- if (!row) {
5389
+ const baseUrl = await getBaseUrl();
5390
+ const result = await select(this.db).from(sessions3).leftJoin(worktrees3, eq10(sessions3.worktree_id, worktrees3.worktree_id)).leftJoin(boards3, eq10(worktrees3.board_id, boards3.board_id)).where(eq10(sessions3.session_id, insertData.session_id)).one();
5391
+ if (!result) {
5309
5392
  throw new RepositoryError("Failed to retrieve created session");
5310
5393
  }
5311
- return this.rowToSession(row);
5394
+ const sessionRow = result.sessions;
5395
+ const boardId = result.worktrees?.board_id ?? null;
5396
+ const boardSlug = result.boards?.slug ?? null;
5397
+ return this.rowToSession(sessionRow, boardId, boardSlug, baseUrl);
5312
5398
  } catch (error) {
5313
5399
  if (error instanceof RepositoryError) throw error;
5314
5400
  throw new RepositoryError(
@@ -5319,12 +5405,22 @@ var SessionRepository = class {
5319
5405
  }
5320
5406
  /**
5321
5407
  * Find session by ID (supports short ID)
5408
+ *
5409
+ * Automatically LEFT JOINs with worktrees table to populate worktree_board_id and url.
5410
+ * This avoids N+1 queries when URL generation is needed.
5322
5411
  */
5323
5412
  async findById(id) {
5324
5413
  try {
5325
5414
  const fullId = await this.resolveId(id);
5326
- const row = await select(this.db).from(sessions3).where(eq10(sessions3.session_id, fullId)).one();
5327
- return row ? this.rowToSession(row) : null;
5415
+ const baseUrl = await getBaseUrl();
5416
+ const result = await select(this.db).from(sessions3).leftJoin(worktrees3, eq10(sessions3.worktree_id, worktrees3.worktree_id)).leftJoin(boards3, eq10(worktrees3.board_id, boards3.board_id)).where(eq10(sessions3.session_id, fullId)).one();
5417
+ if (!result) {
5418
+ return null;
5419
+ }
5420
+ const sessionRow = result.sessions;
5421
+ const boardId = result.worktrees?.board_id ?? null;
5422
+ const boardSlug = result.boards?.slug ?? null;
5423
+ return this.rowToSession(sessionRow, boardId, boardSlug, baseUrl);
5328
5424
  } catch (error) {
5329
5425
  if (error instanceof EntityNotFoundError) return null;
5330
5426
  if (error instanceof AmbiguousIdError) throw error;
@@ -5336,11 +5432,21 @@ var SessionRepository = class {
5336
5432
  }
5337
5433
  /**
5338
5434
  * Find all sessions
5435
+ *
5436
+ * LEFT JOINs with worktrees to populate board_id and url in a single query.
5339
5437
  */
5340
5438
  async findAll() {
5341
5439
  try {
5342
- const rows = await select(this.db).from(sessions3).all();
5343
- return rows.map((row) => this.rowToSession(row));
5440
+ const baseUrl = await getBaseUrl();
5441
+ const results = await select(this.db).from(sessions3).leftJoin(worktrees3, eq10(sessions3.worktree_id, worktrees3.worktree_id)).leftJoin(boards3, eq10(worktrees3.board_id, boards3.board_id)).all();
5442
+ return results.map(
5443
+ (result) => {
5444
+ const sessionRow = result.sessions;
5445
+ const boardId = result.worktrees?.board_id ?? null;
5446
+ const boardSlug = result.boards?.slug ?? null;
5447
+ return this.rowToSession(sessionRow, boardId, boardSlug, baseUrl);
5448
+ }
5449
+ );
5344
5450
  } catch (error) {
5345
5451
  throw new RepositoryError(
5346
5452
  `Failed to find all sessions: ${error instanceof Error ? error.message : String(error)}`,
@@ -5350,11 +5456,21 @@ var SessionRepository = class {
5350
5456
  }
5351
5457
  /**
5352
5458
  * Find sessions by status
5459
+ *
5460
+ * LEFT JOINs with worktrees to populate board_id and url.
5353
5461
  */
5354
5462
  async findByStatus(status) {
5355
5463
  try {
5356
- const rows = await select(this.db).from(sessions3).where(eq10(sessions3.status, status)).all();
5357
- return rows.map((row) => this.rowToSession(row));
5464
+ const baseUrl = await getBaseUrl();
5465
+ const results = await select(this.db).from(sessions3).leftJoin(worktrees3, eq10(sessions3.worktree_id, worktrees3.worktree_id)).leftJoin(boards3, eq10(worktrees3.board_id, boards3.board_id)).where(eq10(sessions3.status, status)).all();
5466
+ return results.map(
5467
+ (result) => {
5468
+ const sessionRow = result.sessions;
5469
+ const boardId = result.worktrees?.board_id ?? null;
5470
+ const boardSlug = result.boards?.slug ?? null;
5471
+ return this.rowToSession(sessionRow, boardId, boardSlug, baseUrl);
5472
+ }
5473
+ );
5358
5474
  } catch (error) {
5359
5475
  throw new RepositoryError(
5360
5476
  `Failed to find sessions by status: ${error instanceof Error ? error.message : String(error)}`,
@@ -5364,11 +5480,22 @@ var SessionRepository = class {
5364
5480
  }
5365
5481
  /**
5366
5482
  * Find sessions by board ID
5483
+ *
5484
+ * Uses materialized board_id column for O(1) indexed lookup.
5485
+ * LEFT JOINs with worktrees to populate url (board_id already known from filter).
5367
5486
  */
5368
5487
  async findByBoard(boardId) {
5369
5488
  try {
5370
- const rows = await select(this.db).from(sessions3).where(eq10(sessions3.board_id, boardId)).all();
5371
- return rows.map((row) => this.rowToSession(row));
5489
+ const baseUrl = await getBaseUrl();
5490
+ const results = await select(this.db).from(sessions3).leftJoin(worktrees3, eq10(sessions3.worktree_id, worktrees3.worktree_id)).leftJoin(boards3, eq10(worktrees3.board_id, boards3.board_id)).where(eq10(sessions3.board_id, boardId)).all();
5491
+ return results.map(
5492
+ (result) => {
5493
+ const sessionRow = result.sessions;
5494
+ const board_id = result.worktrees?.board_id ?? null;
5495
+ const boardSlug = result.boards?.slug ?? null;
5496
+ return this.rowToSession(sessionRow, board_id, boardSlug, baseUrl);
5497
+ }
5498
+ );
5372
5499
  } catch (error) {
5373
5500
  throw new RepositoryError(
5374
5501
  `Failed to find sessions by board: ${error instanceof Error ? error.message : String(error)}`,
@@ -5378,18 +5505,28 @@ var SessionRepository = class {
5378
5505
  }
5379
5506
  /**
5380
5507
  * Find child sessions (forked or spawned from this session)
5508
+ *
5509
+ * LEFT JOINs with worktrees to populate board_id and url.
5381
5510
  */
5382
5511
  async findChildren(sessionId) {
5383
5512
  try {
5384
5513
  const fullId = await this.resolveId(sessionId);
5514
+ const baseUrl = await getBaseUrl();
5385
5515
  const { jsonExtract: jsonExtract2 } = await Promise.resolve().then(() => (init_database_wrapper(), database_wrapper_exports));
5386
- const rows = await select(this.db).from(sessions3).where(
5516
+ const results = await select(this.db).from(sessions3).leftJoin(worktrees3, eq10(sessions3.worktree_id, worktrees3.worktree_id)).leftJoin(boards3, eq10(worktrees3.board_id, boards3.board_id)).where(
5387
5517
  or(
5388
5518
  sql6`${jsonExtract2(this.db, sessions3.data, "genealogy.parent_session_id")} = ${fullId}`,
5389
5519
  sql6`${jsonExtract2(this.db, sessions3.data, "genealogy.forked_from_session_id")} = ${fullId}`
5390
5520
  )
5391
5521
  ).all();
5392
- return rows.map((row) => this.rowToSession(row));
5522
+ return results.map(
5523
+ (result) => {
5524
+ const sessionRow = result.sessions;
5525
+ const boardId = result.worktrees?.board_id ?? null;
5526
+ const boardSlug = result.boards?.slug ?? null;
5527
+ return this.rowToSession(sessionRow, boardId, boardSlug, baseUrl);
5528
+ }
5529
+ );
5393
5530
  } catch (error) {
5394
5531
  throw new RepositoryError(
5395
5532
  `Failed to find child sessions: ${error instanceof Error ? error.message : String(error)}`,
@@ -5442,14 +5579,18 @@ var SessionRepository = class {
5442
5579
  async update(id, updates) {
5443
5580
  try {
5444
5581
  const fullId = await this.resolveId(id);
5582
+ const baseUrl = await getBaseUrl();
5445
5583
  const statusInfo = updates.status ? ` (status: ${updates.status}, ready_for_prompt: ${updates.ready_for_prompt})` : "";
5446
5584
  console.debug(`\u{1F504} [SessionRepo] Updating session ${fullId.substring(0, 8)}${statusInfo}`);
5447
5585
  const result = await this.db.transaction(async (tx) => {
5448
- const currentRow = await select(tx).from(sessions3).where(eq10(sessions3.session_id, fullId)).one();
5449
- if (!currentRow) {
5586
+ const currentResult = await select(tx).from(sessions3).leftJoin(worktrees3, eq10(sessions3.worktree_id, worktrees3.worktree_id)).leftJoin(boards3, eq10(worktrees3.board_id, boards3.board_id)).where(eq10(sessions3.session_id, fullId)).one();
5587
+ if (!currentResult) {
5450
5588
  throw new EntityNotFoundError("Session", id);
5451
5589
  }
5452
- const current = this.rowToSession(currentRow);
5590
+ const currentRow = currentResult.sessions;
5591
+ const boardId = currentResult.worktrees?.board_id ?? null;
5592
+ const boardSlug = currentResult.boards?.slug ?? null;
5593
+ const current = this.rowToSession(currentRow, boardId, boardSlug, baseUrl);
5453
5594
  const merged = deepMerge(current, updates);
5454
5595
  const insertData = this.sessionToInsert(merged);
5455
5596
  await update(tx, sessions3).set({
@@ -5516,15 +5657,18 @@ var SessionRepository = class {
5516
5657
  * instead of N+1. Returns sessions where user is a worktree owner OR worktree.others_can
5517
5658
  * allows at least 'view' access.
5518
5659
  *
5660
+ * Also populates board_id and url via the worktrees JOIN.
5661
+ *
5519
5662
  * NOTE: This method should only be called when RBAC is enabled. When RBAC is disabled,
5520
5663
  * the scopeSessionQuery hook is not registered, so default Feathers query is used
5521
5664
  * (which returns all sessions without filtering).
5522
5665
  *
5523
5666
  * @param userId - User ID to check access for
5524
- * @returns Array of accessible sessions
5667
+ * @returns Array of accessible sessions with urls populated
5525
5668
  */
5526
5669
  async findAccessibleSessions(userId) {
5527
- const rows = await select(this.db, getTableColumns(sessions3)).from(sessions3).innerJoin(worktrees3, eq10(sessions3.worktree_id, worktrees3.worktree_id)).leftJoin(
5670
+ const baseUrl = await getBaseUrl();
5671
+ const results = await select(this.db).from(sessions3).innerJoin(worktrees3, eq10(sessions3.worktree_id, worktrees3.worktree_id)).leftJoin(boards3, eq10(worktrees3.board_id, boards3.board_id)).leftJoin(
5528
5672
  worktreeOwners3,
5529
5673
  and4(
5530
5674
  eq10(worktreeOwners3.worktree_id, worktrees3.worktree_id),
@@ -5536,7 +5680,14 @@ var SessionRepository = class {
5536
5680
  inArray(worktrees3.others_can, ["view", "prompt", "all"])
5537
5681
  )
5538
5682
  ).all();
5539
- return rows.map((row) => this.rowToSession(row));
5683
+ return results.map(
5684
+ (result) => {
5685
+ const sessionRow = result.sessions;
5686
+ const boardId = result.worktrees?.board_id ?? null;
5687
+ const boardSlug = result.boards?.slug ?? null;
5688
+ return this.rowToSession(sessionRow, boardId, boardSlug, baseUrl);
5689
+ }
5690
+ );
5540
5691
  }
5541
5692
  /**
5542
5693
  * Enrich a single session with last assistant message
@@ -5585,7 +5736,7 @@ var SessionRepository = class {
5585
5736
  fullText = messageData.content.filter((block) => block.type === "text" && block.text).map((block) => block.text).join("\n");
5586
5737
  }
5587
5738
  if (fullText.length > truncationLength) {
5588
- fullText = fullText.substring(0, truncationLength) + "...";
5739
+ fullText = `${fullText.substring(0, truncationLength)}...`;
5589
5740
  }
5590
5741
  lastMessageBySession.set(sessionId, fullText);
5591
5742
  }
@@ -6372,6 +6523,20 @@ var ThreadSessionMapRepository = class {
6372
6523
  );
6373
6524
  }
6374
6525
  }
6526
+ /**
6527
+ * Find all mappings for a worktree (for UI filtering gateway sessions)
6528
+ */
6529
+ async findByWorktree(worktreeId) {
6530
+ try {
6531
+ const rows = await select(this.db).from(threadSessionMap3).where(eq13(threadSessionMap3.worktree_id, worktreeId)).all();
6532
+ return rows.map((row) => this.rowToMapping(row));
6533
+ } catch (error) {
6534
+ throw new RepositoryError(
6535
+ `Failed to find mappings by worktree: ${error instanceof Error ? error.message : String(error)}`,
6536
+ error
6537
+ );
6538
+ }
6539
+ }
6375
6540
  };
6376
6541
 
6377
6542
  // src/db/repositories/users.ts
@@ -6691,7 +6856,7 @@ import {
6691
6856
  and as and7,
6692
6857
  desc as desc2,
6693
6858
  eq as eq15,
6694
- getTableColumns as getTableColumns2,
6859
+ getTableColumns,
6695
6860
  inArray as inArray2,
6696
6861
  isNotNull as isNotNull2,
6697
6862
  isNull as isNull3,
@@ -7010,7 +7175,7 @@ var WorktreeRepository = class {
7010
7175
  * @returns Array of accessible worktrees
7011
7176
  */
7012
7177
  async findAccessibleWorktrees(userId) {
7013
- const rows = await select(this.db, getTableColumns2(worktrees3)).from(worktrees3).leftJoin(
7178
+ const rows = await select(this.db, getTableColumns(worktrees3)).from(worktrees3).leftJoin(
7014
7179
  worktreeOwners3,
7015
7180
  and7(
7016
7181
  eq15(worktreeOwners3.worktree_id, worktrees3.worktree_id),
@@ -7159,7 +7324,7 @@ var WorktreeRepository = class {
7159
7324
  fullText = messageData.content.filter((block) => block.type === "text" && block.text).map((block) => block.text).join("\n");
7160
7325
  }
7161
7326
  if (fullText.length > truncationLength) {
7162
- fullText = fullText.substring(0, truncationLength) + "...";
7327
+ fullText = `${fullText.substring(0, truncationLength)}...`;
7163
7328
  }
7164
7329
  lastMessageBySession.set(sessionId, fullText);
7165
7330
  }
@@ -7170,7 +7335,7 @@ var WorktreeRepository = class {
7170
7335
  const sessionId = row.session_id;
7171
7336
  let lastMessage = lastMessageBySession.get(sessionId) || "";
7172
7337
  if (lastMessage.length > truncationLength) {
7173
- lastMessage = lastMessage.substring(0, truncationLength) + "...truncated";
7338
+ lastMessage = `${lastMessage.substring(0, truncationLength)}...truncated`;
7174
7339
  }
7175
7340
  const sessionData = row.data;
7176
7341
  const messageCount = sessionData?.message_count ?? 0;
@@ -10346,6 +10511,7 @@ export {
10346
10511
  generateUnixUsername,
10347
10512
  generateWorktreeGroupName,
10348
10513
  getAgorHome,
10514
+ getBaseUrl,
10349
10515
  getCommentAttachmentType,
10350
10516
  getConfigPath,
10351
10517
  getConfigValue,