agor-live 0.16.1 → 0.16.2

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 (326) hide show
  1. package/dist/cli/commands/daemon/sync.d.ts +19 -0
  2. package/dist/cli/commands/daemon/sync.js +277 -0
  3. package/dist/core/{agentic-tool-COqFrlmU.d.ts → agentic-tool-1L19ixPC.d.ts} +21 -2
  4. package/dist/core/{agentic-tool-o8Io8dDl.d.cts → agentic-tool-3oiAj9Lg.d.cts} +21 -2
  5. package/dist/core/api/index.d.cts +11 -11
  6. package/dist/core/api/index.d.ts +11 -11
  7. package/dist/core/{artifact-Cv9Bs4Z0.d.cts → artifact-B5MFR79G.d.ts} +31 -11
  8. package/dist/core/{artifact-KXt7SRRb.d.ts → artifact-Bi-1jifF.d.cts} +31 -11
  9. package/dist/core/{board-Bfd4UTxM.d.ts → board-B9Xnux_i.d.ts} +11 -7
  10. package/dist/core/{board-BTK4RUmB.d.cts → board-CPZGf5wF.d.cts} +11 -7
  11. package/dist/core/{board-comment-D8NdYb9y.d.cts → board-comment-BQKnob6r.d.cts} +1 -1
  12. package/dist/core/{board-comment-BZm5w5S2.d.ts → board-comment-BoDqwrnL.d.ts} +1 -1
  13. package/dist/core/claude/index.cjs +295 -110
  14. package/dist/core/claude/index.d.cts +3 -3
  15. package/dist/core/claude/index.d.ts +3 -3
  16. package/dist/core/claude/index.js +302 -117
  17. package/dist/core/{client-DJJl-TZq.d.cts → client-BC_18M7T.d.cts} +204 -25
  18. package/dist/core/{client-8v0GxKL_.d.ts → client-HEOUNaCs.d.ts} +204 -25
  19. package/dist/core/config/browser.cjs +4 -2
  20. package/dist/core/config/browser.d.cts +16 -4
  21. package/dist/core/config/browser.d.ts +16 -4
  22. package/dist/core/config/browser.js +3 -2
  23. package/dist/core/config/index.cjs +498 -103
  24. package/dist/core/config/index.d.cts +226 -15
  25. package/dist/core/config/index.d.ts +226 -15
  26. package/dist/core/config/index.js +492 -110
  27. package/dist/core/{config-manager-CFaSP-Ym.d.ts → config-manager-DK1LMXEc.d.cts} +9 -2
  28. package/dist/core/{config-manager-BLIWF6CF.d.cts → config-manager-YrO9mG5j.d.ts} +9 -2
  29. package/dist/core/config-services-CuhBWSs_.d.cts +183 -0
  30. package/dist/core/config-services-DrHSgUEm.d.ts +183 -0
  31. package/dist/core/db/index.cjs +432 -139
  32. package/dist/core/db/index.d.cts +216 -32
  33. package/dist/core/db/index.d.ts +216 -32
  34. package/dist/core/db/index.js +443 -150
  35. package/dist/core/db/session-guard.d.cts +8 -8
  36. package/dist/core/db/session-guard.d.ts +8 -8
  37. package/dist/core/drizzle/postgres/0023_tough_magik.sql +11 -0
  38. package/dist/core/drizzle/postgres/meta/0023_snapshot.json +3006 -0
  39. package/dist/core/drizzle/postgres/meta/_journal.json +7 -0
  40. package/dist/core/drizzle/sqlite/0033_dapper_thing.sql +34 -0
  41. package/dist/core/drizzle/sqlite/0034_add_session_to_others_can_check.sql +72 -0
  42. package/dist/core/drizzle/sqlite/meta/0033_snapshot.json +2401 -0
  43. package/dist/core/drizzle/sqlite/meta/_journal.json +14 -0
  44. package/dist/core/environment/variable-resolver.d.cts +2 -2
  45. package/dist/core/environment/variable-resolver.d.ts +2 -2
  46. package/dist/core/{feathers-DWfz4X2s.d.ts → feathers-CYAHFZ05.d.cts} +2 -2
  47. package/dist/core/{feathers-DstwBmky.d.cts → feathers-CzuSOZgY.d.ts} +2 -2
  48. package/dist/core/gateway/index.cjs +122 -16
  49. package/dist/core/gateway/index.d.cts +73 -11
  50. package/dist/core/gateway/index.d.ts +73 -11
  51. package/dist/core/gateway/index.js +121 -16
  52. package/dist/core/{gateway-BQsBWJXe.d.cts → gateway-Ci8LcUxK.d.ts} +24 -9
  53. package/dist/core/{gateway-BmsFBjwJ.d.ts → gateway-gHbaS6qt.d.cts} +24 -9
  54. package/dist/core/git/index.d.cts +9 -2
  55. package/dist/core/git/index.d.ts +9 -2
  56. package/dist/core/{id-DSzvIi3c.d.cts → id-Cv3ntaTJ.d.cts} +13 -1
  57. package/dist/core/{id-DSzvIi3c.d.ts → id-Cv3ntaTJ.d.ts} +13 -1
  58. package/dist/core/index.cjs +969 -280
  59. package/dist/core/index.d.cts +21 -19
  60. package/dist/core/index.d.ts +21 -19
  61. package/dist/core/index.js +949 -289
  62. package/dist/core/mcp/index.cjs +56 -14
  63. package/dist/core/mcp/index.d.cts +2 -2
  64. package/dist/core/mcp/index.d.ts +2 -2
  65. package/dist/core/mcp/index.js +56 -14
  66. package/dist/core/{mcp-DmSz5NtX.d.cts → mcp-CtC1DFEm.d.cts} +1 -1
  67. package/dist/core/{mcp-eYAM1JQj.d.ts → mcp-VhU-PMHo.d.ts} +1 -1
  68. package/dist/core/{message-ggLv6xJx.d.cts → message-CbD99EwO.d.cts} +33 -2
  69. package/dist/core/{message-DcNHiQJx.d.ts → message-Cwhx2ItQ.d.ts} +33 -2
  70. package/dist/core/models/index.cjs +21 -4
  71. package/dist/core/models/index.d.cts +29 -5
  72. package/dist/core/models/index.d.ts +29 -5
  73. package/dist/core/models/index.js +21 -4
  74. package/dist/core/permissions/index.d.cts +2 -2
  75. package/dist/core/permissions/index.d.ts +2 -2
  76. package/dist/core/{worktree-DQ1rsBlH.d.cts → repo-CcvhnJDf.d.cts} +177 -170
  77. package/dist/core/{worktree-CbBATC-0.d.ts → repo-j12tCmyK.d.ts} +177 -170
  78. package/dist/core/seed/index.cjs +353 -99
  79. package/dist/core/seed/index.d.cts +1 -1
  80. package/dist/core/seed/index.d.ts +1 -1
  81. package/dist/core/seed/index.js +361 -107
  82. package/dist/core/{session-I7SKR8X0.d.ts → session-Bw8_FN2l.d.ts} +20 -3
  83. package/dist/core/{session-DrNmhT4I.d.cts → session-DEU5FS0N.d.cts} +20 -3
  84. package/dist/core/{session-guard-DP0eaFA2.d.cts → session-guard-BjHxMpvV.d.cts} +3 -3
  85. package/dist/core/{session-guard-CpgPDegW.d.ts → session-guard-CJ7sfOF1.d.ts} +3 -3
  86. package/dist/core/{task-C_4XIEFP.d.ts → task-CKHC1gPj.d.ts} +1 -1
  87. package/dist/core/{task-Cobwzp1Z.d.cts → task-DCPYEXlG.d.cts} +1 -1
  88. package/dist/core/templates/session-context.d.cts +5 -5
  89. package/dist/core/templates/session-context.d.ts +5 -5
  90. package/dist/core/tools/mcp/jwt-auth.d.cts +2 -2
  91. package/dist/core/tools/mcp/jwt-auth.d.ts +2 -2
  92. package/dist/core/tools/mcp/oauth-mcp-transport.cjs +71 -16
  93. package/dist/core/tools/mcp/oauth-mcp-transport.d.cts +46 -11
  94. package/dist/core/tools/mcp/oauth-mcp-transport.d.ts +46 -11
  95. package/dist/core/tools/mcp/oauth-mcp-transport.js +69 -16
  96. package/dist/core/types/index.cjs +183 -2
  97. package/dist/core/types/index.d.cts +16 -15
  98. package/dist/core/types/index.d.ts +16 -15
  99. package/dist/core/types/index.js +166 -1
  100. package/dist/core/{types-DKptGEQi.d.ts → types-BE6DTpRe.d.cts} +37 -4
  101. package/dist/core/{types-DKptGEQi.d.cts → types-BvYoeNhO.d.ts} +37 -4
  102. package/dist/core/unix/index.cjs +360 -104
  103. package/dist/core/unix/index.d.cts +8 -8
  104. package/dist/core/unix/index.d.ts +8 -8
  105. package/dist/core/unix/index.js +368 -112
  106. package/dist/core/{user-gTo6uzKE.d.cts → user-BpKIlt04.d.cts} +3 -3
  107. package/dist/core/{user-C-kUEFPf.d.ts → user-pO3lB_da.d.ts} +3 -3
  108. package/dist/core/utils/board-placement.cjs +78 -11
  109. package/dist/core/utils/board-placement.d.cts +55 -10
  110. package/dist/core/utils/board-placement.d.ts +55 -10
  111. package/dist/core/utils/board-placement.js +71 -10
  112. package/dist/core/utils/permission-mode-mapper.d.cts +3 -3
  113. package/dist/core/utils/permission-mode-mapper.d.ts +3 -3
  114. package/dist/core/utils/url.d.cts +1 -1
  115. package/dist/core/utils/url.d.ts +1 -1
  116. package/dist/daemon/declarations.d.ts +4 -1
  117. package/dist/daemon/executor-tracking.d.ts +27 -0
  118. package/dist/daemon/executor-tracking.js +40 -0
  119. package/dist/daemon/index.js +12919 -12063
  120. package/dist/daemon/mcp/resolve-ids.d.ts +34 -0
  121. package/dist/daemon/mcp/resolve-ids.js +48 -0
  122. package/dist/daemon/mcp/server.d.ts +11 -3
  123. package/dist/daemon/mcp/server.js +562 -313
  124. package/dist/daemon/mcp/tools/analytics.js +29 -6
  125. package/dist/daemon/mcp/tools/artifacts.d.ts +2 -2
  126. package/dist/daemon/mcp/tools/artifacts.js +112 -55
  127. package/dist/daemon/mcp/tools/boards.js +12 -3
  128. package/dist/daemon/mcp/tools/card-types.js +12 -3
  129. package/dist/daemon/mcp/tools/cards.js +35 -12
  130. package/dist/daemon/mcp/tools/environment.js +12 -3
  131. package/dist/daemon/mcp/tools/mcp-servers.js +46 -128
  132. package/dist/daemon/mcp/tools/messages.js +27 -6
  133. package/dist/daemon/mcp/tools/repos.js +12 -3
  134. package/dist/daemon/mcp/tools/search.js +27 -5
  135. package/dist/daemon/mcp/tools/sessions.js +147 -48
  136. package/dist/daemon/mcp/tools/tasks.js +19 -4
  137. package/dist/daemon/mcp/tools/users.js +12 -3
  138. package/dist/daemon/mcp/tools/worktrees.js +168 -26
  139. package/dist/daemon/oauth-cache.d.ts +50 -0
  140. package/dist/daemon/oauth-cache.js +134 -0
  141. package/dist/daemon/register-hooks.d.ts +40 -0
  142. package/dist/daemon/register-hooks.js +2390 -0
  143. package/dist/daemon/register-routes.d.ts +49 -0
  144. package/dist/daemon/register-routes.js +20829 -0
  145. package/dist/daemon/register-services.d.ts +53 -0
  146. package/dist/daemon/register-services.js +8290 -0
  147. package/dist/daemon/services/artifacts.d.ts +49 -32
  148. package/dist/daemon/services/artifacts.js +193 -176
  149. package/dist/daemon/services/cards.js +12 -27
  150. package/dist/daemon/services/gateway.js +67 -1
  151. package/dist/daemon/services/health-monitor.d.ts +2 -2
  152. package/dist/daemon/services/repos.d.ts +3 -1
  153. package/dist/daemon/services/repos.js +20 -29
  154. package/dist/daemon/services/session-mcp-servers.d.ts +1 -1
  155. package/dist/daemon/services/sessions.js +3 -1
  156. package/dist/daemon/services/tasks.d.ts +6 -0
  157. package/dist/daemon/services/tasks.js +123 -1
  158. package/dist/daemon/services/worktree-owners.js +6 -4
  159. package/dist/daemon/setup/cors.d.ts +17 -7
  160. package/dist/daemon/setup/cors.js +57 -24
  161. package/dist/daemon/setup/index.d.ts +1 -0
  162. package/dist/daemon/setup/index.js +57 -24
  163. package/dist/daemon/setup/service-tiers.d.ts +45 -0
  164. package/dist/daemon/setup/service-tiers.js +111 -0
  165. package/dist/daemon/setup/socketio.d.ts +1 -0
  166. package/dist/daemon/startup.d.ts +27 -0
  167. package/dist/daemon/startup.js +750 -0
  168. package/dist/daemon/utils/worktree-authorization.d.ts +29 -6
  169. package/dist/daemon/utils/worktree-authorization.js +75 -18
  170. package/dist/executor/db/feathers-repositories.d.ts +0 -1
  171. package/dist/executor/db/feathers-repositories.d.ts.map +1 -1
  172. package/dist/executor/db/feathers-repositories.js +0 -2
  173. package/dist/executor/handlers/sdk/claude.d.ts.map +1 -1
  174. package/dist/executor/handlers/sdk/claude.js +0 -1
  175. package/dist/executor/sdk-handlers/base/diff-enrichment.d.ts +56 -0
  176. package/dist/executor/sdk-handlers/base/diff-enrichment.d.ts.map +1 -0
  177. package/dist/executor/sdk-handlers/base/diff-enrichment.js +329 -0
  178. package/dist/executor/sdk-handlers/claude/claude-tool.d.ts +0 -1
  179. package/dist/executor/sdk-handlers/claude/claude-tool.d.ts.map +1 -1
  180. package/dist/executor/sdk-handlers/claude/claude-tool.js +8 -3
  181. package/dist/executor/sdk-handlers/claude/prompt-service.d.ts +1 -3
  182. package/dist/executor/sdk-handlers/claude/prompt-service.d.ts.map +1 -1
  183. package/dist/executor/sdk-handlers/claude/prompt-service.js +3 -35
  184. package/dist/executor/sdk-handlers/claude/query-builder.d.ts +0 -8
  185. package/dist/executor/sdk-handlers/claude/query-builder.d.ts.map +1 -1
  186. package/dist/executor/sdk-handlers/claude/query-builder.js +0 -10
  187. package/dist/executor/sdk-handlers/codex/codex-tool.d.ts.map +1 -1
  188. package/dist/executor/sdk-handlers/codex/codex-tool.js +3 -0
  189. package/dist/executor/sdk-handlers/gemini/gemini-tool.d.ts.map +1 -1
  190. package/dist/executor/sdk-handlers/gemini/gemini-tool.js +5 -0
  191. package/dist/executor/sdk-handlers/opencode/opencode-tool.d.ts.map +1 -1
  192. package/dist/executor/sdk-handlers/opencode/opencode-tool.js +3 -0
  193. package/dist/ui/assets/{_basePickBy-BtVrd6dO.js → _basePickBy-By_woBZB.js} +1 -1
  194. package/dist/ui/assets/_basePickBy-By_woBZB.js.gz +0 -0
  195. package/dist/ui/assets/{_baseUniq-BH9GjWbF.js → _baseUniq-C2jLj-Al.js} +1 -1
  196. package/dist/ui/assets/_baseUniq-C2jLj-Al.js.gz +0 -0
  197. package/dist/ui/assets/{arc-B4KDi1iJ.js → arc-DADMFVbt.js} +1 -1
  198. package/dist/ui/assets/arc-DADMFVbt.js.gz +0 -0
  199. package/dist/ui/assets/{architectureDiagram-VXUJARFQ-CdvbpFNm.js → architectureDiagram-VXUJARFQ-rNJ5lYJQ.js} +1 -1
  200. package/dist/ui/assets/{architectureDiagram-VXUJARFQ-CdvbpFNm.js.gz → architectureDiagram-VXUJARFQ-rNJ5lYJQ.js.gz} +0 -0
  201. package/dist/ui/assets/{base-80a1f760-D-kQo-47.js → base-80a1f760-BVsv_T1S.js} +1 -1
  202. package/dist/ui/assets/{blockDiagram-VD42YOAC-B_mxl6Lf.js → blockDiagram-VD42YOAC-CezN66iB.js} +1 -1
  203. package/dist/ui/assets/blockDiagram-VD42YOAC-CezN66iB.js.gz +0 -0
  204. package/dist/ui/assets/{c4Diagram-YG6GDRKO-Dx6ylHPl.js → c4Diagram-YG6GDRKO-Dze59YuK.js} +1 -1
  205. package/dist/ui/assets/c4Diagram-YG6GDRKO-Dze59YuK.js.gz +0 -0
  206. package/dist/ui/assets/channel-B2nSdT47.js +1 -0
  207. package/dist/ui/assets/{chunk-4BX2VUAB-DNC2--Jg.js → chunk-4BX2VUAB-CXL-V_XA.js} +1 -1
  208. package/dist/ui/assets/{chunk-55IACEB6-gGF1w6GZ.js → chunk-55IACEB6-CI3h0xTl.js} +1 -1
  209. package/dist/ui/assets/{chunk-B4BG7PRW-FXlRD4Fw.js → chunk-B4BG7PRW-CFohiEqO.js} +1 -1
  210. package/dist/ui/assets/chunk-B4BG7PRW-CFohiEqO.js.gz +0 -0
  211. package/dist/ui/assets/{chunk-DI55MBZ5-DbBPQIQz.js → chunk-DI55MBZ5-BbF4fGKj.js} +1 -1
  212. package/dist/ui/assets/chunk-DI55MBZ5-BbF4fGKj.js.gz +0 -0
  213. package/dist/ui/assets/{chunk-FMBD7UC4-BqwS15h8.js → chunk-FMBD7UC4-C5x6cpDg.js} +1 -1
  214. package/dist/ui/assets/{chunk-QN33PNHL-E8BK1n1w.js → chunk-QN33PNHL-CEDiC29y.js} +1 -1
  215. package/dist/ui/assets/{chunk-QZHKN3VN-CoigW80z.js → chunk-QZHKN3VN-DPo28cCF.js} +1 -1
  216. package/dist/ui/assets/{chunk-TZMSLE5B-DdFLlZDV.js → chunk-TZMSLE5B-C94jSlIG.js} +1 -1
  217. package/dist/ui/assets/chunk-TZMSLE5B-C94jSlIG.js.gz +0 -0
  218. package/dist/ui/assets/classDiagram-2ON5EDUG-lwQJA5v0.js +1 -0
  219. package/dist/ui/assets/classDiagram-v2-WZHVMYZB-lwQJA5v0.js +1 -0
  220. package/dist/ui/assets/clone-DmZ98vg9.js +1 -0
  221. package/dist/ui/assets/{consoleHook-59e792cb-Dz0DMm-0.js → consoleHook-59e792cb-cpS6JVM4.js} +1 -1
  222. package/dist/ui/assets/consoleHook-59e792cb-cpS6JVM4.js.gz +0 -0
  223. package/dist/ui/assets/{cose-bilkent-S5V4N54A-tnhbVTPe.js → cose-bilkent-S5V4N54A-CcoEg_Ct.js} +1 -1
  224. package/dist/ui/assets/cose-bilkent-S5V4N54A-CcoEg_Ct.js.gz +0 -0
  225. package/dist/ui/assets/{dagre-6UL2VRFP-CVjnxYjN.js → dagre-6UL2VRFP-DWAyqs2B.js} +1 -1
  226. package/dist/ui/assets/dagre-6UL2VRFP-DWAyqs2B.js.gz +0 -0
  227. package/dist/ui/assets/{diagram-PSM6KHXK-CWFzevZb.js → diagram-PSM6KHXK-C7J2MNfc.js} +1 -1
  228. package/dist/ui/assets/diagram-PSM6KHXK-C7J2MNfc.js.gz +0 -0
  229. package/dist/ui/assets/{diagram-QEK2KX5R-T_J5IVCY.js → diagram-QEK2KX5R-6KZjqziN.js} +1 -1
  230. package/dist/ui/assets/diagram-QEK2KX5R-6KZjqziN.js.gz +0 -0
  231. package/dist/ui/assets/{diagram-S2PKOQOG-C4Dhp8jy.js → diagram-S2PKOQOG-DIL01325.js} +1 -1
  232. package/dist/ui/assets/diagram-S2PKOQOG-DIL01325.js.gz +0 -0
  233. package/dist/ui/assets/{erDiagram-Q2GNP2WA-D8w2VOw6.js → erDiagram-Q2GNP2WA-D5j4CetG.js} +1 -1
  234. package/dist/ui/assets/erDiagram-Q2GNP2WA-D5j4CetG.js.gz +0 -0
  235. package/dist/ui/assets/{flowDiagram-NV44I4VS-BxDP6XJj.js → flowDiagram-NV44I4VS-Bxx2iEi-.js} +1 -1
  236. package/dist/ui/assets/flowDiagram-NV44I4VS-Bxx2iEi-.js.gz +0 -0
  237. package/dist/ui/assets/{ganttDiagram-LVOFAZNH-Cqm31nz1.js → ganttDiagram-LVOFAZNH-BtBi1ZfT.js} +1 -1
  238. package/dist/ui/assets/ganttDiagram-LVOFAZNH-BtBi1ZfT.js.gz +0 -0
  239. package/dist/ui/assets/{gitGraphDiagram-NY62KEGX-49108Rzr.js → gitGraphDiagram-NY62KEGX-CY1TKvzA.js} +1 -1
  240. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-CY1TKvzA.js.gz +0 -0
  241. package/dist/ui/assets/{graph-Cl9WGtm3.js → graph-DC6eH7AX.js} +1 -1
  242. package/dist/ui/assets/graph-DC6eH7AX.js.gz +0 -0
  243. package/dist/ui/assets/{index-599aeaf7-tGQYdGhA.js → index-599aeaf7-Dh_oObwY.js} +1 -1
  244. package/dist/ui/assets/index-599aeaf7-Dh_oObwY.js.gz +0 -0
  245. package/dist/ui/assets/{index-DUaptCU5.js → index-CxWOjjRu.js} +1 -1
  246. package/dist/ui/assets/index-CxWOjjRu.js.gz +0 -0
  247. package/dist/ui/assets/{index-D_yKRJQj.js → index-DJLnZ-9H.js} +298 -282
  248. package/dist/ui/assets/index-DJLnZ-9H.js.gz +0 -0
  249. package/dist/ui/assets/{index-CKmdxjmm.js → index-DQn7RJ8z.js} +1 -1
  250. package/dist/ui/assets/index-DQn7RJ8z.js.gz +0 -0
  251. package/dist/ui/assets/{infoDiagram-ER5ION4S-CKv_e89I.js → infoDiagram-ER5ION4S-COpJ37pc.js} +1 -1
  252. package/dist/ui/assets/{journeyDiagram-XKPGCS4Q-BYXSkKZr.js → journeyDiagram-XKPGCS4Q-CpODBkng.js} +1 -1
  253. package/dist/ui/assets/journeyDiagram-XKPGCS4Q-CpODBkng.js.gz +0 -0
  254. package/dist/ui/assets/{kanban-definition-3W4ZIXB7-B4iIn-H8.js → kanban-definition-3W4ZIXB7-DWShJ5Su.js} +1 -1
  255. package/dist/ui/assets/kanban-definition-3W4ZIXB7-DWShJ5Su.js.gz +0 -0
  256. package/dist/ui/assets/{layout-AQEby1op.js → layout-ttMTfXMb.js} +1 -1
  257. package/dist/ui/assets/layout-ttMTfXMb.js.gz +0 -0
  258. package/dist/ui/assets/{linear-BfcSxAMZ.js → linear-DD8VTncp.js} +1 -1
  259. package/dist/ui/assets/linear-DD8VTncp.js.gz +0 -0
  260. package/dist/ui/assets/{mermaid.core-DuEkBmyB.js → mermaid.core-BlvxruUX.js} +5 -5
  261. package/dist/ui/assets/mermaid.core-BlvxruUX.js.gz +0 -0
  262. package/dist/ui/assets/{mindmap-definition-VGOIOE7T-BBDWarB6.js → mindmap-definition-VGOIOE7T-CR0ESdqM.js} +1 -1
  263. package/dist/ui/assets/mindmap-definition-VGOIOE7T-CR0ESdqM.js.gz +0 -0
  264. package/dist/ui/assets/{pieDiagram-ADFJNKIX-EQSvb4cC.js → pieDiagram-ADFJNKIX-B94eVYhY.js} +1 -1
  265. package/dist/ui/assets/pieDiagram-ADFJNKIX-B94eVYhY.js.gz +0 -0
  266. package/dist/ui/assets/{quadrantDiagram-AYHSOK5B-CpNlK4fQ.js → quadrantDiagram-AYHSOK5B-C4tNKfCm.js} +1 -1
  267. package/dist/ui/assets/quadrantDiagram-AYHSOK5B-C4tNKfCm.js.gz +0 -0
  268. package/dist/ui/assets/{requirementDiagram-UZGBJVZJ-BPMaEFDA.js → requirementDiagram-UZGBJVZJ-CuG3A95Q.js} +1 -1
  269. package/dist/ui/assets/requirementDiagram-UZGBJVZJ-CuG3A95Q.js.gz +0 -0
  270. package/dist/ui/assets/{sankeyDiagram-TZEHDZUN-BiceNoew.js → sankeyDiagram-TZEHDZUN-BCfc7mLC.js} +1 -1
  271. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-BCfc7mLC.js.gz +0 -0
  272. package/dist/ui/assets/{sequenceDiagram-WL72ISMW-CObp8n8B.js → sequenceDiagram-WL72ISMW-D8tVuIkx.js} +1 -1
  273. package/dist/ui/assets/sequenceDiagram-WL72ISMW-D8tVuIkx.js.gz +0 -0
  274. package/dist/ui/assets/{stateDiagram-FKZM4ZOC-DKNE6dA2.js → stateDiagram-FKZM4ZOC-DvM8so2A.js} +1 -1
  275. package/dist/ui/assets/stateDiagram-FKZM4ZOC-DvM8so2A.js.gz +0 -0
  276. package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-kQ-gZX7K.js +1 -0
  277. package/dist/ui/assets/{timeline-definition-IT6M3QCI-DLXCiWgU.js → timeline-definition-IT6M3QCI-CP2O8vqw.js} +1 -1
  278. package/dist/ui/assets/timeline-definition-IT6M3QCI-CP2O8vqw.js.gz +0 -0
  279. package/dist/ui/assets/{treemap-KMMF4GRG-TaU-Vz5l.js → treemap-KMMF4GRG-SGJAEegj.js} +1 -1
  280. package/dist/ui/assets/{treemap-KMMF4GRG-TaU-Vz5l.js.gz → treemap-KMMF4GRG-SGJAEegj.js.gz} +0 -0
  281. package/dist/ui/assets/{xychartDiagram-PRI3JC2R-ry-Xm_33.js → xychartDiagram-PRI3JC2R-CpwYBSmP.js} +1 -1
  282. package/dist/ui/assets/xychartDiagram-PRI3JC2R-CpwYBSmP.js.gz +0 -0
  283. package/dist/ui/index.html +1 -1
  284. package/package.json +3 -2
  285. package/dist/ui/assets/_basePickBy-BtVrd6dO.js.gz +0 -0
  286. package/dist/ui/assets/_baseUniq-BH9GjWbF.js.gz +0 -0
  287. package/dist/ui/assets/arc-B4KDi1iJ.js.gz +0 -0
  288. package/dist/ui/assets/blockDiagram-VD42YOAC-B_mxl6Lf.js.gz +0 -0
  289. package/dist/ui/assets/c4Diagram-YG6GDRKO-Dx6ylHPl.js.gz +0 -0
  290. package/dist/ui/assets/channel-CIT8bfEt.js +0 -1
  291. package/dist/ui/assets/chunk-B4BG7PRW-FXlRD4Fw.js.gz +0 -0
  292. package/dist/ui/assets/chunk-DI55MBZ5-DbBPQIQz.js.gz +0 -0
  293. package/dist/ui/assets/chunk-TZMSLE5B-DdFLlZDV.js.gz +0 -0
  294. package/dist/ui/assets/classDiagram-2ON5EDUG-CaaBDWvO.js +0 -1
  295. package/dist/ui/assets/classDiagram-v2-WZHVMYZB-CaaBDWvO.js +0 -1
  296. package/dist/ui/assets/clone-Dr8RgH2m.js +0 -1
  297. package/dist/ui/assets/consoleHook-59e792cb-Dz0DMm-0.js.gz +0 -0
  298. package/dist/ui/assets/cose-bilkent-S5V4N54A-tnhbVTPe.js.gz +0 -0
  299. package/dist/ui/assets/dagre-6UL2VRFP-CVjnxYjN.js.gz +0 -0
  300. package/dist/ui/assets/diagram-PSM6KHXK-CWFzevZb.js.gz +0 -0
  301. package/dist/ui/assets/diagram-QEK2KX5R-T_J5IVCY.js.gz +0 -0
  302. package/dist/ui/assets/diagram-S2PKOQOG-C4Dhp8jy.js.gz +0 -0
  303. package/dist/ui/assets/erDiagram-Q2GNP2WA-D8w2VOw6.js.gz +0 -0
  304. package/dist/ui/assets/flowDiagram-NV44I4VS-BxDP6XJj.js.gz +0 -0
  305. package/dist/ui/assets/ganttDiagram-LVOFAZNH-Cqm31nz1.js.gz +0 -0
  306. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-49108Rzr.js.gz +0 -0
  307. package/dist/ui/assets/graph-Cl9WGtm3.js.gz +0 -0
  308. package/dist/ui/assets/index-599aeaf7-tGQYdGhA.js.gz +0 -0
  309. package/dist/ui/assets/index-CKmdxjmm.js.gz +0 -0
  310. package/dist/ui/assets/index-DUaptCU5.js.gz +0 -0
  311. package/dist/ui/assets/index-D_yKRJQj.js.gz +0 -0
  312. package/dist/ui/assets/journeyDiagram-XKPGCS4Q-BYXSkKZr.js.gz +0 -0
  313. package/dist/ui/assets/kanban-definition-3W4ZIXB7-B4iIn-H8.js.gz +0 -0
  314. package/dist/ui/assets/layout-AQEby1op.js.gz +0 -0
  315. package/dist/ui/assets/linear-BfcSxAMZ.js.gz +0 -0
  316. package/dist/ui/assets/mermaid.core-DuEkBmyB.js.gz +0 -0
  317. package/dist/ui/assets/mindmap-definition-VGOIOE7T-BBDWarB6.js.gz +0 -0
  318. package/dist/ui/assets/pieDiagram-ADFJNKIX-EQSvb4cC.js.gz +0 -0
  319. package/dist/ui/assets/quadrantDiagram-AYHSOK5B-CpNlK4fQ.js.gz +0 -0
  320. package/dist/ui/assets/requirementDiagram-UZGBJVZJ-BPMaEFDA.js.gz +0 -0
  321. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-BiceNoew.js.gz +0 -0
  322. package/dist/ui/assets/sequenceDiagram-WL72ISMW-CObp8n8B.js.gz +0 -0
  323. package/dist/ui/assets/stateDiagram-FKZM4ZOC-DKNE6dA2.js.gz +0 -0
  324. package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-fBA8Sge7.js +0 -1
  325. package/dist/ui/assets/timeline-definition-IT6M3QCI-DLXCiWgU.js.gz +0 -0
  326. package/dist/ui/assets/xychartDiagram-PRI3JC2R-ry-Xm_33.js.gz +0 -0
@@ -0,0 +1,19 @@
1
+ import * as _oclif_core_interfaces from '@oclif/core/interfaces';
2
+ import { Command } from '@oclif/core';
3
+
4
+ declare class DaemonSync extends Command {
5
+ static description: string;
6
+ static examples: string[];
7
+ static flags: {
8
+ 'dry-run': _oclif_core_interfaces.BooleanFlag<boolean>;
9
+ config: _oclif_core_interfaces.OptionFlag<string | undefined, _oclif_core_interfaces.CustomOptions>;
10
+ };
11
+ run(): Promise<void>;
12
+ private loadConfigFromPath;
13
+ private logCounts;
14
+ private syncRepos;
15
+ private syncWorktrees;
16
+ private syncUsers;
17
+ }
18
+
19
+ export { DaemonSync as default };
@@ -0,0 +1,277 @@
1
+ // src/commands/daemon/sync.ts
2
+ import { existsSync, mkdirSync } from "fs";
3
+ import { join } from "path";
4
+ import {
5
+ buildSlugToRepoIdMap,
6
+ daemonResourcesConfigSchema,
7
+ determineRepoAction,
8
+ determineUserAction,
9
+ determineWorktreeAction,
10
+ getReposDir,
11
+ getWorktreePath,
12
+ loadConfig,
13
+ loadConfigFromFile,
14
+ resolvePassword,
15
+ validateResourceCrossReferences
16
+ } from "@agor/core/config";
17
+ import {
18
+ createDatabase,
19
+ getDatabaseUrl,
20
+ hash,
21
+ RepoRepository,
22
+ UsersRepository,
23
+ WorktreeRepository
24
+ } from "@agor/core/db";
25
+ import { autoAssignWorktreeUniqueId } from "@agor/core/environment/variable-resolver";
26
+ import { cloneRepo, createWorktree, getWorktreesDir } from "@agor/core/git";
27
+ import { Command, Flags } from "@oclif/core";
28
+ import chalk from "chalk";
29
+ var DaemonSync = class _DaemonSync extends Command {
30
+ static description = "Sync resources from config.yml into database and filesystem";
31
+ static examples = [
32
+ "<%= config.bin %> daemon sync",
33
+ "<%= config.bin %> daemon sync --dry-run",
34
+ "<%= config.bin %> daemon sync --config /path/to/config.yml"
35
+ ];
36
+ static flags = {
37
+ "dry-run": Flags.boolean({
38
+ description: "Validate and report what would change without making changes",
39
+ default: false
40
+ }),
41
+ config: Flags.string({
42
+ char: "c",
43
+ description: "Path to config file (default: ~/.agor/config.yaml)"
44
+ })
45
+ };
46
+ async run() {
47
+ const { flags } = await this.parse(_DaemonSync);
48
+ const dryRun = flags["dry-run"];
49
+ const config = flags.config ? await this.loadConfigFromPath(flags.config) : await loadConfig();
50
+ if (!config.resources) {
51
+ this.log(chalk.yellow("No resources section in config \u2014 nothing to sync."));
52
+ return;
53
+ }
54
+ const parseResult = daemonResourcesConfigSchema.safeParse(config.resources);
55
+ if (!parseResult.success) {
56
+ this.log(chalk.red("Config validation failed:"));
57
+ for (const issue of parseResult.error.issues) {
58
+ this.log(chalk.red(` ${issue.path.join(".")}: ${issue.message}`));
59
+ }
60
+ this.exit(1);
61
+ }
62
+ const resources = parseResult.data;
63
+ const crossRefErrors = validateResourceCrossReferences(resources);
64
+ if (crossRefErrors.length > 0) {
65
+ this.log(chalk.red("Resource cross-reference errors:"));
66
+ for (const err of crossRefErrors) {
67
+ this.log(chalk.red(` ${err.path}: ${err.message}`));
68
+ }
69
+ this.exit(1);
70
+ }
71
+ this.log(chalk.bold("Syncing resources from config..."));
72
+ if (dryRun) {
73
+ this.log(chalk.yellow("(dry-run mode \u2014 no changes will be made)"));
74
+ }
75
+ this.log("");
76
+ const dbUrl = getDatabaseUrl();
77
+ const db = createDatabase({ url: dbUrl });
78
+ const repoRepo = new RepoRepository(db);
79
+ const worktreeRepo = new WorktreeRepository(db);
80
+ const usersRepo = new UsersRepository(db);
81
+ const repoCounts = await this.syncRepos(resources.repos ?? [], repoRepo, dryRun);
82
+ const worktreeCounts = await this.syncWorktrees(
83
+ resources.worktrees ?? [],
84
+ resources.repos ?? [],
85
+ worktreeRepo,
86
+ dryRun
87
+ );
88
+ const userCounts = await this.syncUsers(resources.users ?? [], usersRepo, dryRun);
89
+ this.log("");
90
+ this.log(chalk.bold("Sync complete:"));
91
+ this.logCounts("Repos", repoCounts);
92
+ this.logCounts("Worktrees", worktreeCounts);
93
+ this.logCounts("Users", userCounts);
94
+ }
95
+ async loadConfigFromPath(configPath) {
96
+ try {
97
+ return await loadConfigFromFile(configPath);
98
+ } catch (error) {
99
+ this.log(chalk.red(`Failed to load config from ${configPath}:`));
100
+ this.log(chalk.red(` ${error instanceof Error ? error.message : String(error)}`));
101
+ this.exit(1);
102
+ }
103
+ }
104
+ logCounts(label, counts) {
105
+ const parts = [];
106
+ if (counts.created > 0) parts.push(chalk.green(`${counts.created} created`));
107
+ if (counts.updated > 0) parts.push(chalk.yellow(`${counts.updated} updated`));
108
+ if (counts.unchanged > 0) parts.push(chalk.dim(`${counts.unchanged} unchanged`));
109
+ this.log(` ${label}: ${parts.length > 0 ? parts.join(", ") : chalk.dim("none declared")}`);
110
+ }
111
+ // ---------------------------------------------------------------------------
112
+ // Repo sync
113
+ // ---------------------------------------------------------------------------
114
+ async syncRepos(repos, repoRepo, dryRun) {
115
+ const counts = { created: 0, updated: 0, unchanged: 0 };
116
+ for (const repoCfg of repos) {
117
+ const existing = await repoRepo.findBySlug(repoCfg.slug);
118
+ const repoPath = join(getReposDir(), repoCfg.slug);
119
+ const fsExists = existsSync(repoPath);
120
+ const action = determineRepoAction(repoCfg, existing);
121
+ if (action === "create") {
122
+ this.log(` ${chalk.green("create")} repo ${chalk.cyan(repoCfg.slug)}`);
123
+ if (!dryRun) {
124
+ if (repoCfg.remote_url) {
125
+ mkdirSync(getReposDir(), { recursive: true });
126
+ await cloneRepo({ url: repoCfg.remote_url, targetDir: repoPath });
127
+ }
128
+ await repoRepo.create({
129
+ repo_id: repoCfg.repo_id,
130
+ slug: repoCfg.slug,
131
+ name: repoCfg.slug,
132
+ repo_type: repoCfg.repo_type ?? "remote",
133
+ remote_url: repoCfg.remote_url,
134
+ default_branch: repoCfg.default_branch ?? "main",
135
+ local_path: repoPath
136
+ });
137
+ }
138
+ counts.created++;
139
+ } else if (action === "update") {
140
+ this.log(` ${chalk.yellow("update")} repo ${chalk.cyan(repoCfg.slug)}`);
141
+ if (!dryRun && existing) {
142
+ await repoRepo.update(existing.repo_id, {
143
+ remote_url: repoCfg.remote_url ?? existing.remote_url,
144
+ default_branch: repoCfg.default_branch ?? existing.default_branch
145
+ });
146
+ }
147
+ counts.updated++;
148
+ } else {
149
+ counts.unchanged++;
150
+ }
151
+ if (existing && !fsExists && repoCfg.remote_url && !dryRun) {
152
+ this.log(` ${chalk.green("clone")} repo ${chalk.cyan(repoCfg.slug)} (filesystem missing)`);
153
+ mkdirSync(getReposDir(), { recursive: true });
154
+ await cloneRepo({ url: repoCfg.remote_url, targetDir: repoPath });
155
+ }
156
+ }
157
+ return counts;
158
+ }
159
+ // ---------------------------------------------------------------------------
160
+ // Worktree sync
161
+ // ---------------------------------------------------------------------------
162
+ async syncWorktrees(worktrees, repos, worktreeRepo, dryRun) {
163
+ const counts = { created: 0, updated: 0, unchanged: 0 };
164
+ const slugToId = buildSlugToRepoIdMap(repos);
165
+ for (const wtCfg of worktrees) {
166
+ const repoId = slugToId.get(wtCfg.repo);
167
+ if (!repoId) {
168
+ this.log(chalk.red(` skip worktree "${wtCfg.name}" \u2014 repo "${wtCfg.repo}" not found`));
169
+ continue;
170
+ }
171
+ const existing = await worktreeRepo.findByRepoAndName(repoId, wtCfg.name);
172
+ const action = determineWorktreeAction(wtCfg, existing);
173
+ if (action === "create") {
174
+ this.log(
175
+ ` ${chalk.green("create")} worktree ${chalk.cyan(`${wtCfg.repo}/${wtCfg.name}`)}`
176
+ );
177
+ if (!dryRun) {
178
+ const repoPath = join(getReposDir(), wtCfg.repo);
179
+ const worktreePath = getWorktreePath(wtCfg.repo, wtCfg.name);
180
+ if (!existsSync(worktreePath)) {
181
+ mkdirSync(join(getWorktreesDir(), wtCfg.repo), { recursive: true });
182
+ await createWorktree(
183
+ repoPath,
184
+ worktreePath,
185
+ wtCfg.ref,
186
+ false,
187
+ false,
188
+ void 0,
189
+ void 0,
190
+ wtCfg.ref_type
191
+ );
192
+ }
193
+ const usedIds = await worktreeRepo.getAllUsedUniqueIds();
194
+ const nextId = autoAssignWorktreeUniqueId(usedIds);
195
+ await worktreeRepo.create({
196
+ worktree_id: wtCfg.worktree_id,
197
+ repo_id: repoId,
198
+ name: wtCfg.name,
199
+ ref: wtCfg.ref,
200
+ ref_type: wtCfg.ref_type ?? "branch",
201
+ path: worktreePath,
202
+ worktree_unique_id: nextId,
203
+ others_can: wtCfg.others_can ?? "session",
204
+ mcp_server_ids: wtCfg.mcp_server_ids,
205
+ new_branch: false,
206
+ last_used: (/* @__PURE__ */ new Date()).toISOString()
207
+ });
208
+ }
209
+ counts.created++;
210
+ } else if (action === "update") {
211
+ this.log(
212
+ ` ${chalk.yellow("update")} worktree ${chalk.cyan(`${wtCfg.repo}/${wtCfg.name}`)}`
213
+ );
214
+ if (!dryRun && existing) {
215
+ await worktreeRepo.update(existing.worktree_id, {
216
+ ref: wtCfg.ref,
217
+ ref_type: wtCfg.ref_type ?? existing.ref_type,
218
+ others_can: wtCfg.others_can ?? existing.others_can,
219
+ mcp_server_ids: wtCfg.mcp_server_ids ?? existing.mcp_server_ids
220
+ });
221
+ }
222
+ counts.updated++;
223
+ } else {
224
+ counts.unchanged++;
225
+ }
226
+ }
227
+ return counts;
228
+ }
229
+ // ---------------------------------------------------------------------------
230
+ // User sync
231
+ // ---------------------------------------------------------------------------
232
+ async syncUsers(users, usersRepo, dryRun) {
233
+ const counts = { created: 0, updated: 0, unchanged: 0 };
234
+ for (const userCfg of users) {
235
+ const existing = await usersRepo.findByEmail(userCfg.email);
236
+ const action = determineUserAction(userCfg, existing);
237
+ if (action === "create") {
238
+ this.log(` ${chalk.green("create")} user ${chalk.cyan(userCfg.email)}`);
239
+ if (!dryRun) {
240
+ const resolved = resolvePassword(userCfg.password);
241
+ if (resolved.mustChange) {
242
+ this.log(
243
+ ` ${chalk.dim("generated temporary password for")} ${userCfg.email}: ${chalk.yellow(resolved.password)}`
244
+ );
245
+ }
246
+ const hashedPassword = await hash(resolved.password, 12);
247
+ await usersRepo.create({
248
+ user_id: userCfg.user_id,
249
+ email: userCfg.email,
250
+ name: userCfg.name,
251
+ role: userCfg.role ?? "member",
252
+ unix_username: userCfg.unix_username,
253
+ password: hashedPassword,
254
+ must_change_password: resolved.mustChange
255
+ });
256
+ }
257
+ counts.created++;
258
+ } else if (action === "update") {
259
+ this.log(` ${chalk.yellow("update")} user ${chalk.cyan(userCfg.email)}`);
260
+ if (!dryRun && existing) {
261
+ await usersRepo.update(existing.user_id, {
262
+ name: userCfg.name ?? existing.name,
263
+ role: userCfg.role ?? existing.role,
264
+ unix_username: userCfg.unix_username ?? existing.unix_username
265
+ });
266
+ }
267
+ counts.updated++;
268
+ } else {
269
+ counts.unchanged++;
270
+ }
271
+ }
272
+ return counts;
273
+ }
274
+ };
275
+ export {
276
+ DaemonSync as default
277
+ };
@@ -1,4 +1,4 @@
1
- import { A as AgenticToolID } from './id-DSzvIi3c.js';
1
+ import { A as AgenticToolID } from './id-Cv3ntaTJ.js';
2
2
 
3
3
  /**
4
4
  * Agentic coding tool names
@@ -106,5 +106,24 @@ type CodexNetworkAccess = boolean;
106
106
  * - bypassPermissions: Auto-approve everything (equivalent to approveAll helper)
107
107
  */
108
108
  type CopilotPermissionMode = 'default' | 'acceptEdits' | 'bypassPermissions';
109
+ /**
110
+ * Static capability flags for agentic tools.
111
+ * Used by the UI to show/hide features based on what a tool supports.
112
+ * Mirrors the runtime ToolCapabilities in the executor but is available
113
+ * without instantiating a tool.
114
+ */
115
+ interface AgenticToolCapabilities {
116
+ /** Can fork sessions (branch conversation at a decision point) */
117
+ supportsSessionFork: boolean;
118
+ /** Can spawn child sessions for subsessions */
119
+ supportsChildSpawn: boolean;
120
+ /** Can import historical sessions from tool's storage */
121
+ supportsSessionImport: boolean;
122
+ }
123
+ /**
124
+ * Static capability map for all agentic tools.
125
+ * Source of truth for what each tool supports — avoids scattered `if (tool === 'codex')` checks.
126
+ */
127
+ declare const AGENTIC_TOOL_CAPABILITIES: Record<AgenticToolName, AgenticToolCapabilities>;
109
128
 
110
- export type { AgenticToolName as A, ClaudeCodePermissionMode as C, GeminiPermissionMode as G, OpenCodePermissionMode as O, CodexPermissionMode as a, AgenticTool as b, CodexSandboxMode as c, CodexApprovalPolicy as d, CodexNetworkAccess as e, CopilotPermissionMode as f };
129
+ export { type AgenticToolName as A, type ClaudeCodePermissionMode as C, type GeminiPermissionMode as G, type OpenCodePermissionMode as O, type CodexPermissionMode as a, type AgenticTool as b, type CodexSandboxMode as c, type CodexApprovalPolicy as d, type CodexNetworkAccess as e, type CopilotPermissionMode as f, type AgenticToolCapabilities as g, AGENTIC_TOOL_CAPABILITIES as h };
@@ -1,4 +1,4 @@
1
- import { A as AgenticToolID } from './id-DSzvIi3c.cjs';
1
+ import { A as AgenticToolID } from './id-Cv3ntaTJ.cjs';
2
2
 
3
3
  /**
4
4
  * Agentic coding tool names
@@ -106,5 +106,24 @@ type CodexNetworkAccess = boolean;
106
106
  * - bypassPermissions: Auto-approve everything (equivalent to approveAll helper)
107
107
  */
108
108
  type CopilotPermissionMode = 'default' | 'acceptEdits' | 'bypassPermissions';
109
+ /**
110
+ * Static capability flags for agentic tools.
111
+ * Used by the UI to show/hide features based on what a tool supports.
112
+ * Mirrors the runtime ToolCapabilities in the executor but is available
113
+ * without instantiating a tool.
114
+ */
115
+ interface AgenticToolCapabilities {
116
+ /** Can fork sessions (branch conversation at a decision point) */
117
+ supportsSessionFork: boolean;
118
+ /** Can spawn child sessions for subsessions */
119
+ supportsChildSpawn: boolean;
120
+ /** Can import historical sessions from tool's storage */
121
+ supportsSessionImport: boolean;
122
+ }
123
+ /**
124
+ * Static capability map for all agentic tools.
125
+ * Source of truth for what each tool supports — avoids scattered `if (tool === 'codex')` checks.
126
+ */
127
+ declare const AGENTIC_TOOL_CAPABILITIES: Record<AgenticToolName, AgenticToolCapabilities>;
109
128
 
110
- export type { AgenticToolName as A, ClaudeCodePermissionMode as C, GeminiPermissionMode as G, OpenCodePermissionMode as O, CodexPermissionMode as a, AgenticTool as b, CodexSandboxMode as c, CodexApprovalPolicy as d, CodexNetworkAccess as e, CopilotPermissionMode as f };
129
+ export { type AgenticToolName as A, type ClaudeCodePermissionMode as C, type GeminiPermissionMode as G, type OpenCodePermissionMode as O, type CodexPermissionMode as a, type AgenticTool as b, type CodexSandboxMode as c, type CodexApprovalPolicy as d, type CodexNetworkAccess as e, type CopilotPermissionMode as f, type AgenticToolCapabilities as g, AGENTIC_TOOL_CAPABILITIES as h };
@@ -1,18 +1,18 @@
1
- import { i as Message } from '../message-ggLv6xJx.cjs';
2
- import { a as Artifact } from '../artifact-Cv9Bs4Z0.cjs';
3
- import { g as Board, l as CardWithType, j as CardType, h as BoardExportBlob } from '../board-BTK4RUmB.cjs';
1
+ import { i as Message } from '../message-CbD99EwO.cjs';
2
+ import { a as Artifact } from '../artifact-Bi-1jifF.cjs';
3
+ import { h as Board, m as CardWithType, k as CardType, i as BoardExportBlob } from '../board-CPZGf5wF.cjs';
4
+ import { b as Repo, d as Worktree } from '../repo-CcvhnJDf.cjs';
5
+ import { a as Session } from '../session-DEU5FS0N.cjs';
6
+ import { d as User } from '../user-BpKIlt04.cjs';
4
7
  import { a as ContextFileListItem, b as ContextFileDetail } from '../context-ByxGjp5l.cjs';
5
- import { b as AuthenticationResult } from '../feathers-DstwBmky.cjs';
6
- import { a as Session } from '../session-DrNmhT4I.cjs';
7
- import { d as User } from '../user-gTo6uzKE.cjs';
8
- import { i as MCPServer } from '../mcp-DmSz5NtX.cjs';
9
- import { b as Repo, d as Worktree } from '../worktree-DQ1rsBlH.cjs';
10
- import { c as Task } from '../task-Cobwzp1Z.cjs';
8
+ import { b as AuthenticationResult } from '../feathers-CYAHFZ05.cjs';
9
+ import { i as MCPServer } from '../mcp-CtC1DFEm.cjs';
10
+ import { c as Task } from '../task-DCPYEXlG.cjs';
11
11
  import { Params, Paginated, Application } from '@feathersjs/feathers';
12
12
  import { Socket } from 'socket.io-client';
13
13
  export { default as authenticationClient } from '@feathersjs/authentication-client';
14
- import '../id-DSzvIi3c.cjs';
15
- import '../agentic-tool-o8Io8dDl.cjs';
14
+ import '../id-Cv3ntaTJ.cjs';
15
+ import '../agentic-tool-3oiAj9Lg.cjs';
16
16
 
17
17
  /**
18
18
  * Feathers Client for Agor
@@ -1,18 +1,18 @@
1
- import { i as Message } from '../message-DcNHiQJx.js';
2
- import { a as Artifact } from '../artifact-KXt7SRRb.js';
3
- import { g as Board, l as CardWithType, j as CardType, h as BoardExportBlob } from '../board-Bfd4UTxM.js';
1
+ import { i as Message } from '../message-Cwhx2ItQ.js';
2
+ import { a as Artifact } from '../artifact-B5MFR79G.js';
3
+ import { h as Board, m as CardWithType, k as CardType, i as BoardExportBlob } from '../board-B9Xnux_i.js';
4
+ import { b as Repo, d as Worktree } from '../repo-j12tCmyK.js';
5
+ import { a as Session } from '../session-Bw8_FN2l.js';
6
+ import { d as User } from '../user-pO3lB_da.js';
4
7
  import { a as ContextFileListItem, b as ContextFileDetail } from '../context-ByxGjp5l.js';
5
- import { b as AuthenticationResult } from '../feathers-DWfz4X2s.js';
6
- import { a as Session } from '../session-I7SKR8X0.js';
7
- import { d as User } from '../user-C-kUEFPf.js';
8
- import { i as MCPServer } from '../mcp-eYAM1JQj.js';
9
- import { b as Repo, d as Worktree } from '../worktree-CbBATC-0.js';
10
- import { c as Task } from '../task-C_4XIEFP.js';
8
+ import { b as AuthenticationResult } from '../feathers-CzuSOZgY.js';
9
+ import { i as MCPServer } from '../mcp-VhU-PMHo.js';
10
+ import { c as Task } from '../task-CKHC1gPj.js';
11
11
  import { Params, Paginated, Application } from '@feathersjs/feathers';
12
12
  import { Socket } from 'socket.io-client';
13
13
  export { default as authenticationClient } from '@feathersjs/authentication-client';
14
- import '../id-DSzvIi3c.js';
15
- import '../agentic-tool-COqFrlmU.js';
14
+ import '../id-Cv3ntaTJ.js';
15
+ import '../agentic-tool-1L19ixPC.js';
16
16
 
17
17
  /**
18
18
  * Feathers Client for Agor
@@ -1,12 +1,12 @@
1
- import { S as SandpackTemplate } from './board-BTK4RUmB.cjs';
2
- import { c as ArtifactID, W as WorktreeID, B as BoardID } from './id-DSzvIi3c.cjs';
1
+ import { S as SandpackTemplate } from './board-B9Xnux_i.js';
2
+ import { d as ArtifactID, W as WorktreeID, B as BoardID } from './id-Cv3ntaTJ.js';
3
3
 
4
4
  /**
5
5
  * Artifact Type Definitions
6
6
  *
7
- * Artifacts are live web applications rendered via Sandpack on the board canvas.
8
- * Code lives on the filesystem at {worktree_path}/.agor/artifacts/{artifact_id}/
9
- * with a sandpack.json manifest that maps directly to Sandpack React component props.
7
+ * Artifacts are board-scoped, DB-backed live web applications rendered via Sandpack.
8
+ * The filesystem folder is a transient staging area; on publish, the daemon serializes
9
+ * folder contents into the DB `files` column. Serving reads from DB only.
10
10
  */
11
11
 
12
12
  /**
@@ -16,21 +16,21 @@ type ArtifactBuildStatus = 'unknown' | 'checking' | 'success' | 'error';
16
16
  /**
17
17
  * Artifact - Live web application rendered via Sandpack on the board canvas
18
18
  *
19
- * Artifacts are filesystem-backed Sandpack applications managed by agents.
20
- * Code lives at {worktree_path}/.agor/artifacts/{artifact_id}/ with a sandpack.json manifest.
19
+ * Artifacts are board-scoped, DB-backed objects. The `files` column holds the
20
+ * serialized source code. `worktree_id` and `path` are provenance only.
21
21
  */
22
22
  interface Artifact {
23
23
  artifact_id: ArtifactID;
24
- /** Worktree this artifact belongs to (filesystem location) */
25
- worktree_id: WorktreeID;
24
+ /** Worktree provenance (nullable survives worktree deletion via SET NULL) */
25
+ worktree_id: WorktreeID | null;
26
26
  /** Board this artifact is displayed on */
27
27
  board_id: BoardID;
28
28
  /** Display name */
29
29
  name: string;
30
30
  /** Optional description */
31
31
  description?: string;
32
- /** Relative path within worktree (always .agor/artifacts/{artifact_id}) */
33
- path: string;
32
+ /** Provenance path where files were read from (nullable) */
33
+ path: string | null;
34
34
  /** Sandpack template */
35
35
  template: SandpackTemplate;
36
36
  /** Current build status */
@@ -39,6 +39,16 @@ interface Artifact {
39
39
  build_errors?: string[];
40
40
  /** Content hash for cache invalidation (MD5 of sorted file contents) */
41
41
  content_hash?: string;
42
+ /** Serialized file contents: path -> code. Null for legacy records not yet re-published. */
43
+ files?: Record<string, string>;
44
+ /** NPM dependencies from manifest */
45
+ dependencies?: Record<string, string>;
46
+ /** Entry file from manifest */
47
+ entry?: string;
48
+ /** Use self-hosted Sandpack bundler */
49
+ use_local_bundler?: boolean;
50
+ /** Whether this artifact is visible to all board viewers */
51
+ public: boolean;
42
52
  /** User who created this artifact */
43
53
  created_by?: string;
44
54
  created_at: string;
@@ -57,6 +67,14 @@ interface SandpackManifest {
57
67
  dependencies?: Record<string, string>;
58
68
  /** Entry file path */
59
69
  entry?: string;
70
+ /**
71
+ * Opt into the daemon's self-hosted Sandpack bundler instead of CodeSandbox's
72
+ * default hosted bundler. Stores intent rather than a concrete URL so the
73
+ * artifact keeps working if the daemon's origin changes. Resolved to the
74
+ * daemon's selfHostedBundlerURL at payload read time. If the local bundler
75
+ * is not available at read time, falls back silently to the hosted bundler.
76
+ */
77
+ use_local_bundler?: boolean;
60
78
  }
61
79
  /**
62
80
  * Artifact payload served to frontend via REST
@@ -74,6 +92,8 @@ interface ArtifactPayload {
74
92
  content_hash: string;
75
93
  /** Env vars referenced in agor.config.js that the requesting user hasn't configured */
76
94
  missing_env_vars?: string[];
95
+ /** Custom Sandpack bundler URL. Set when self-hosted bundler is available or specified in manifest. */
96
+ bundlerURL?: string;
77
97
  }
78
98
  /**
79
99
  * Console log entry from Sandpack runtime (captured in browser, sent to daemon)
@@ -1,12 +1,12 @@
1
- import { S as SandpackTemplate } from './board-Bfd4UTxM.js';
2
- import { c as ArtifactID, W as WorktreeID, B as BoardID } from './id-DSzvIi3c.js';
1
+ import { S as SandpackTemplate } from './board-CPZGf5wF.cjs';
2
+ import { d as ArtifactID, W as WorktreeID, B as BoardID } from './id-Cv3ntaTJ.cjs';
3
3
 
4
4
  /**
5
5
  * Artifact Type Definitions
6
6
  *
7
- * Artifacts are live web applications rendered via Sandpack on the board canvas.
8
- * Code lives on the filesystem at {worktree_path}/.agor/artifacts/{artifact_id}/
9
- * with a sandpack.json manifest that maps directly to Sandpack React component props.
7
+ * Artifacts are board-scoped, DB-backed live web applications rendered via Sandpack.
8
+ * The filesystem folder is a transient staging area; on publish, the daemon serializes
9
+ * folder contents into the DB `files` column. Serving reads from DB only.
10
10
  */
11
11
 
12
12
  /**
@@ -16,21 +16,21 @@ type ArtifactBuildStatus = 'unknown' | 'checking' | 'success' | 'error';
16
16
  /**
17
17
  * Artifact - Live web application rendered via Sandpack on the board canvas
18
18
  *
19
- * Artifacts are filesystem-backed Sandpack applications managed by agents.
20
- * Code lives at {worktree_path}/.agor/artifacts/{artifact_id}/ with a sandpack.json manifest.
19
+ * Artifacts are board-scoped, DB-backed objects. The `files` column holds the
20
+ * serialized source code. `worktree_id` and `path` are provenance only.
21
21
  */
22
22
  interface Artifact {
23
23
  artifact_id: ArtifactID;
24
- /** Worktree this artifact belongs to (filesystem location) */
25
- worktree_id: WorktreeID;
24
+ /** Worktree provenance (nullable survives worktree deletion via SET NULL) */
25
+ worktree_id: WorktreeID | null;
26
26
  /** Board this artifact is displayed on */
27
27
  board_id: BoardID;
28
28
  /** Display name */
29
29
  name: string;
30
30
  /** Optional description */
31
31
  description?: string;
32
- /** Relative path within worktree (always .agor/artifacts/{artifact_id}) */
33
- path: string;
32
+ /** Provenance path where files were read from (nullable) */
33
+ path: string | null;
34
34
  /** Sandpack template */
35
35
  template: SandpackTemplate;
36
36
  /** Current build status */
@@ -39,6 +39,16 @@ interface Artifact {
39
39
  build_errors?: string[];
40
40
  /** Content hash for cache invalidation (MD5 of sorted file contents) */
41
41
  content_hash?: string;
42
+ /** Serialized file contents: path -> code. Null for legacy records not yet re-published. */
43
+ files?: Record<string, string>;
44
+ /** NPM dependencies from manifest */
45
+ dependencies?: Record<string, string>;
46
+ /** Entry file from manifest */
47
+ entry?: string;
48
+ /** Use self-hosted Sandpack bundler */
49
+ use_local_bundler?: boolean;
50
+ /** Whether this artifact is visible to all board viewers */
51
+ public: boolean;
42
52
  /** User who created this artifact */
43
53
  created_by?: string;
44
54
  created_at: string;
@@ -57,6 +67,14 @@ interface SandpackManifest {
57
67
  dependencies?: Record<string, string>;
58
68
  /** Entry file path */
59
69
  entry?: string;
70
+ /**
71
+ * Opt into the daemon's self-hosted Sandpack bundler instead of CodeSandbox's
72
+ * default hosted bundler. Stores intent rather than a concrete URL so the
73
+ * artifact keeps working if the daemon's origin changes. Resolved to the
74
+ * daemon's selfHostedBundlerURL at payload read time. If the local bundler
75
+ * is not available at read time, falls back silently to the hosted bundler.
76
+ */
77
+ use_local_bundler?: boolean;
60
78
  }
61
79
  /**
62
80
  * Artifact payload served to frontend via REST
@@ -74,6 +92,8 @@ interface ArtifactPayload {
74
92
  content_hash: string;
75
93
  /** Env vars referenced in agor.config.js that the requesting user hasn't configured */
76
94
  missing_env_vars?: string[];
95
+ /** Custom Sandpack bundler URL. Set when self-hosted bundler is available or specified in manifest. */
96
+ bundlerURL?: string;
77
97
  }
78
98
  /**
79
99
  * Console log entry from Sandpack runtime (captured in browser, sent to daemon)
@@ -1,5 +1,5 @@
1
- import { A as AgenticToolName } from './agentic-tool-COqFrlmU.js';
2
- import { U as UUID, B as BoardID, c as ArtifactID, W as WorktreeID } from './id-DSzvIi3c.js';
1
+ import { A as AgenticToolName } from './agentic-tool-1L19ixPC.js';
2
+ import { U as UUID, B as BoardID, d as ArtifactID, W as WorktreeID } from './id-Cv3ntaTJ.js';
3
3
 
4
4
  /**
5
5
  * Card identifier
@@ -75,6 +75,13 @@ interface CardWithType extends Card {
75
75
  effective_color?: string;
76
76
  }
77
77
 
78
+ /**
79
+ * Canvas position (x/y coordinates in board space)
80
+ */
81
+ type BoardPosition = {
82
+ x: number;
83
+ y: number;
84
+ };
78
85
  /**
79
86
  * Board object types for canvas annotations
80
87
  */
@@ -101,10 +108,7 @@ interface BoardEntityObject {
101
108
  /** Computed entity type discriminator */
102
109
  entity_type: BoardEntityType;
103
110
  /** Position on canvas */
104
- position: {
105
- x: number;
106
- y: number;
107
- };
111
+ position: BoardPosition;
108
112
  /** Zone this entity is pinned to (optional) */
109
113
  zone_id?: string;
110
114
  /** When this entity was added to the board */
@@ -317,4 +321,4 @@ interface BoardExportBlob {
317
321
  custom_context?: Record<string, unknown>;
318
322
  }
319
323
 
320
- export type { AppBoardObject as A, BoardObjectType as B, CardID as C, MarkdownBoardObject as M, SandpackTemplate as S, TextBoardObject as T, ZoneTriggerBehavior as Z, BoardEntityType as a, BoardEntityObject as b, ZoneTrigger as c, ZoneBoardObject as d, ArtifactBoardObject as e, BoardObject as f, Board as g, BoardExportBlob as h, CardTypeID as i, CardType as j, Card as k, CardWithType as l };
324
+ export type { AppBoardObject as A, BoardPosition as B, CardID as C, MarkdownBoardObject as M, SandpackTemplate as S, TextBoardObject as T, ZoneTriggerBehavior as Z, BoardObjectType as a, BoardEntityType as b, BoardEntityObject as c, ZoneTrigger as d, ZoneBoardObject as e, ArtifactBoardObject as f, BoardObject as g, Board as h, BoardExportBlob as i, CardTypeID as j, CardType as k, Card as l, CardWithType as m };