agor-live 0.12.0 → 0.12.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 (174) hide show
  1. package/dist/core/api/index.d.cts +1 -1
  2. package/dist/core/api/index.d.ts +1 -1
  3. package/dist/core/{board-CKJQAhxz.d.ts → board-C-PU8jok.d.ts} +3 -0
  4. package/dist/core/{board-BGkmgUH3.d.cts → board-DCNkcsyf.d.cts} +3 -0
  5. package/dist/core/claude/index.cjs +2 -2
  6. package/dist/core/claude/index.js +2 -2
  7. package/dist/core/{client-BE40WsYn.d.ts → client-CGO13BG6.d.ts} +1 -1
  8. package/dist/core/{client-Z40920Ce.d.cts → client-DKbFqX_X.d.cts} +1 -1
  9. package/dist/core/config/browser.cjs +1 -0
  10. package/dist/core/config/browser.d.cts +1 -1
  11. package/dist/core/config/browser.d.ts +1 -1
  12. package/dist/core/config/browser.js +1 -0
  13. package/dist/core/config/index.cjs +16 -18
  14. package/dist/core/config/index.d.cts +6 -4
  15. package/dist/core/config/index.d.ts +6 -4
  16. package/dist/core/config/index.js +16 -18
  17. package/dist/core/{config-manager-CAIQUOj8.d.ts → config-manager-DGBdhxtZ.d.ts} +2 -2
  18. package/dist/core/{config-manager-tIFWlS73.d.cts → config-manager-sCgziLkz.d.cts} +2 -2
  19. package/dist/core/db/index.cjs +2 -2
  20. package/dist/core/db/index.d.cts +3 -3
  21. package/dist/core/db/index.d.ts +3 -3
  22. package/dist/core/db/index.js +2 -2
  23. package/dist/core/drizzle/postgres/0016_fix_thread_session_map_fk_cascade.sql +8 -0
  24. package/dist/core/drizzle/postgres/meta/_journal.json +7 -0
  25. package/dist/core/drizzle/sqlite/0026_fix_thread_session_map_fk_cascade.sql +28 -0
  26. package/dist/core/drizzle/sqlite/meta/_journal.json +7 -0
  27. package/dist/core/git/index.d.cts +2 -2
  28. package/dist/core/git/index.d.ts +2 -2
  29. package/dist/core/index.cjs +16 -18
  30. package/dist/core/index.d.cts +4 -4
  31. package/dist/core/index.d.ts +4 -4
  32. package/dist/core/index.js +16 -18
  33. package/dist/core/mcp/index.cjs +2 -2
  34. package/dist/core/mcp/index.js +2 -2
  35. package/dist/core/seed/index.cjs +2 -2
  36. package/dist/core/seed/index.js +2 -2
  37. package/dist/core/types/index.d.cts +1 -1
  38. package/dist/core/types/index.d.ts +1 -1
  39. package/dist/core/{types-eb2uYaBV.d.cts → types-D_wAaaE3.d.cts} +4 -0
  40. package/dist/core/{types-eb2uYaBV.d.ts → types-D_wAaaE3.d.ts} +4 -0
  41. package/dist/core/unix/index.cjs +2 -2
  42. package/dist/core/unix/index.d.cts +2 -2
  43. package/dist/core/unix/index.d.ts +2 -2
  44. package/dist/core/unix/index.js +2 -2
  45. package/dist/daemon/index.js +159 -178
  46. package/dist/daemon/mcp/routes.js +151 -177
  47. package/dist/daemon/services/config.d.ts +1 -0
  48. package/dist/daemon/services/config.js +3 -1
  49. package/dist/daemon/services/gateway.js +5 -0
  50. package/dist/executor/handlers/sdk/base-executor.d.ts.map +1 -1
  51. package/dist/executor/handlers/sdk/base-executor.js +6 -0
  52. package/dist/ui/assets/{_basePickBy-13K3GTi9.js → _basePickBy-a0JoJgXO.js} +1 -1
  53. package/dist/ui/assets/_basePickBy-a0JoJgXO.js.gz +0 -0
  54. package/dist/ui/assets/{_baseUniq-lck5RBgD.js → _baseUniq-IFulW561.js} +1 -1
  55. package/dist/ui/assets/_baseUniq-IFulW561.js.gz +0 -0
  56. package/dist/ui/assets/{arc-C0GcDF2P.js → arc-Dj6SyPh6.js} +1 -1
  57. package/dist/ui/assets/arc-Dj6SyPh6.js.gz +0 -0
  58. package/dist/ui/assets/{architectureDiagram-VXUJARFQ-Ck8B6z3I.js → architectureDiagram-VXUJARFQ-CjXOzrje.js} +1 -1
  59. package/dist/ui/assets/architectureDiagram-VXUJARFQ-CjXOzrje.js.gz +0 -0
  60. package/dist/ui/assets/{blockDiagram-VD42YOAC-BgMvAje1.js → blockDiagram-VD42YOAC-IFpdwkfg.js} +1 -1
  61. package/dist/ui/assets/blockDiagram-VD42YOAC-IFpdwkfg.js.gz +0 -0
  62. package/dist/ui/assets/{c4Diagram-YG6GDRKO-yA5XAZZf.js → c4Diagram-YG6GDRKO-qL4Ujfnz.js} +1 -1
  63. package/dist/ui/assets/c4Diagram-YG6GDRKO-qL4Ujfnz.js.gz +0 -0
  64. package/dist/ui/assets/channel-4SJF66Rh.js +1 -0
  65. package/dist/ui/assets/{chunk-4BX2VUAB-BaX7BHeh.js → chunk-4BX2VUAB-CH6tu0mB.js} +1 -1
  66. package/dist/ui/assets/{chunk-55IACEB6-B2DYiRo3.js → chunk-55IACEB6-DDAZjWTD.js} +1 -1
  67. package/dist/ui/assets/{chunk-B4BG7PRW-BcEBbodm.js → chunk-B4BG7PRW-BDSu72O0.js} +1 -1
  68. package/dist/ui/assets/chunk-B4BG7PRW-BDSu72O0.js.gz +0 -0
  69. package/dist/ui/assets/{chunk-DI55MBZ5-UDHzzgel.js → chunk-DI55MBZ5-C7merGRo.js} +1 -1
  70. package/dist/ui/assets/chunk-DI55MBZ5-C7merGRo.js.gz +0 -0
  71. package/dist/ui/assets/{chunk-FMBD7UC4-CgFuoUoR.js → chunk-FMBD7UC4-DX20G6ZX.js} +1 -1
  72. package/dist/ui/assets/{chunk-QN33PNHL-htWzBtUF.js → chunk-QN33PNHL-BvT3a5aI.js} +1 -1
  73. package/dist/ui/assets/{chunk-QZHKN3VN-CVq77ZeN.js → chunk-QZHKN3VN-oo-Lxdo7.js} +1 -1
  74. package/dist/ui/assets/{chunk-TZMSLE5B-krq2w8Wn.js → chunk-TZMSLE5B-BV4XHxKb.js} +1 -1
  75. package/dist/ui/assets/chunk-TZMSLE5B-BV4XHxKb.js.gz +0 -0
  76. package/dist/ui/assets/classDiagram-2ON5EDUG-BLjqJ_M9.js +1 -0
  77. package/dist/ui/assets/classDiagram-v2-WZHVMYZB-BLjqJ_M9.js +1 -0
  78. package/dist/ui/assets/clone-DjR0SEZ0.js +1 -0
  79. package/dist/ui/assets/{cose-bilkent-S5V4N54A-BJiZxo47.js → cose-bilkent-S5V4N54A-BA6VY55u.js} +1 -1
  80. package/dist/ui/assets/cose-bilkent-S5V4N54A-BA6VY55u.js.gz +0 -0
  81. package/dist/ui/assets/{dagre-6UL2VRFP-CycZ_vyT.js → dagre-6UL2VRFP-DiuqdLez.js} +1 -1
  82. package/dist/ui/assets/dagre-6UL2VRFP-DiuqdLez.js.gz +0 -0
  83. package/dist/ui/assets/{diagram-PSM6KHXK-BJVCx4MR.js → diagram-PSM6KHXK-DU4u6xZN.js} +1 -1
  84. package/dist/ui/assets/diagram-PSM6KHXK-DU4u6xZN.js.gz +0 -0
  85. package/dist/ui/assets/{diagram-QEK2KX5R-CpdqQZ9q.js → diagram-QEK2KX5R-CltgMeel.js} +1 -1
  86. package/dist/ui/assets/diagram-QEK2KX5R-CltgMeel.js.gz +0 -0
  87. package/dist/ui/assets/{diagram-S2PKOQOG-CeWK141q.js → diagram-S2PKOQOG-SkvAVcTN.js} +1 -1
  88. package/dist/ui/assets/diagram-S2PKOQOG-SkvAVcTN.js.gz +0 -0
  89. package/dist/ui/assets/{erDiagram-Q2GNP2WA-lGMSDK28.js → erDiagram-Q2GNP2WA-DJTHxEdE.js} +1 -1
  90. package/dist/ui/assets/erDiagram-Q2GNP2WA-DJTHxEdE.js.gz +0 -0
  91. package/dist/ui/assets/{flowDiagram-NV44I4VS-Dbmqc5na.js → flowDiagram-NV44I4VS-BwrFtsSc.js} +1 -1
  92. package/dist/ui/assets/flowDiagram-NV44I4VS-BwrFtsSc.js.gz +0 -0
  93. package/dist/ui/assets/{ganttDiagram-LVOFAZNH-BCpWCm_-.js → ganttDiagram-LVOFAZNH-BnGmdiBB.js} +1 -1
  94. package/dist/ui/assets/ganttDiagram-LVOFAZNH-BnGmdiBB.js.gz +0 -0
  95. package/dist/ui/assets/{gitGraphDiagram-NY62KEGX-8tfgNgvH.js → gitGraphDiagram-NY62KEGX-V6mHZ2jy.js} +1 -1
  96. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-V6mHZ2jy.js.gz +0 -0
  97. package/dist/ui/assets/{graph-IQh1JXQd.js → graph-3Ks94Pqc.js} +1 -1
  98. package/dist/ui/assets/graph-3Ks94Pqc.js.gz +0 -0
  99. package/dist/ui/assets/{index-B1uEuvdQ.js → index-Dl_jng3-.js} +210 -210
  100. package/dist/ui/assets/index-Dl_jng3-.js.gz +0 -0
  101. package/dist/ui/assets/{infoDiagram-ER5ION4S-DUSpEZVW.js → infoDiagram-ER5ION4S-DUuNVOek.js} +1 -1
  102. package/dist/ui/assets/{journeyDiagram-XKPGCS4Q-CQCmqdFR.js → journeyDiagram-XKPGCS4Q-D-N__rLx.js} +1 -1
  103. package/dist/ui/assets/journeyDiagram-XKPGCS4Q-D-N__rLx.js.gz +0 -0
  104. package/dist/ui/assets/{kanban-definition-3W4ZIXB7-D811ViNy.js → kanban-definition-3W4ZIXB7-DsPDRbRp.js} +1 -1
  105. package/dist/ui/assets/kanban-definition-3W4ZIXB7-DsPDRbRp.js.gz +0 -0
  106. package/dist/ui/assets/{layout-Cv3mAiDL.js → layout-TuyQIiWI.js} +1 -1
  107. package/dist/ui/assets/layout-TuyQIiWI.js.gz +0 -0
  108. package/dist/ui/assets/{linear-DQVbvBGW.js → linear-CQUCx9aD.js} +1 -1
  109. package/dist/ui/assets/linear-CQUCx9aD.js.gz +0 -0
  110. package/dist/ui/assets/{mermaid.core-CYNoJpXQ.js → mermaid.core-HQwFIIbn.js} +5 -5
  111. package/dist/ui/assets/mermaid.core-HQwFIIbn.js.gz +0 -0
  112. package/dist/ui/assets/{mindmap-definition-VGOIOE7T-BQvhdRXw.js → mindmap-definition-VGOIOE7T-DlR4HpYx.js} +1 -1
  113. package/dist/ui/assets/mindmap-definition-VGOIOE7T-DlR4HpYx.js.gz +0 -0
  114. package/dist/ui/assets/{pieDiagram-ADFJNKIX-BiFaGv3A.js → pieDiagram-ADFJNKIX-OfCYTJ7S.js} +1 -1
  115. package/dist/ui/assets/pieDiagram-ADFJNKIX-OfCYTJ7S.js.gz +0 -0
  116. package/dist/ui/assets/{quadrantDiagram-AYHSOK5B-Dp5wS_F1.js → quadrantDiagram-AYHSOK5B--irB7LvR.js} +1 -1
  117. package/dist/ui/assets/quadrantDiagram-AYHSOK5B--irB7LvR.js.gz +0 -0
  118. package/dist/ui/assets/{requirementDiagram-UZGBJVZJ-C6W7NTIN.js → requirementDiagram-UZGBJVZJ-iPensRLV.js} +1 -1
  119. package/dist/ui/assets/requirementDiagram-UZGBJVZJ-iPensRLV.js.gz +0 -0
  120. package/dist/ui/assets/{sankeyDiagram-TZEHDZUN-DNsSVDsG.js → sankeyDiagram-TZEHDZUN-BSidESLx.js} +1 -1
  121. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-BSidESLx.js.gz +0 -0
  122. package/dist/ui/assets/{sequenceDiagram-WL72ISMW-rqRiYL0z.js → sequenceDiagram-WL72ISMW-BUE46svP.js} +1 -1
  123. package/dist/ui/assets/sequenceDiagram-WL72ISMW-BUE46svP.js.gz +0 -0
  124. package/dist/ui/assets/{stateDiagram-FKZM4ZOC-SvEHAVeB.js → stateDiagram-FKZM4ZOC-BJ2azfLs.js} +1 -1
  125. package/dist/ui/assets/stateDiagram-FKZM4ZOC-BJ2azfLs.js.gz +0 -0
  126. package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-B9Lx1w-S.js +1 -0
  127. package/dist/ui/assets/{timeline-definition-IT6M3QCI-CTTXGBKf.js → timeline-definition-IT6M3QCI-YfwKc8ip.js} +1 -1
  128. package/dist/ui/assets/timeline-definition-IT6M3QCI-YfwKc8ip.js.gz +0 -0
  129. package/dist/ui/assets/{treemap-KMMF4GRG-Dmr_9bCh.js → treemap-KMMF4GRG-DMpxEEn1.js} +1 -1
  130. package/dist/ui/assets/treemap-KMMF4GRG-DMpxEEn1.js.gz +0 -0
  131. package/dist/ui/assets/{xychartDiagram-PRI3JC2R-Dy8qoKJm.js → xychartDiagram-PRI3JC2R-Bn_I2TeN.js} +1 -1
  132. package/dist/ui/assets/xychartDiagram-PRI3JC2R-Bn_I2TeN.js.gz +0 -0
  133. package/dist/ui/index.html +1 -1
  134. package/package.json +2 -2
  135. package/dist/ui/assets/_basePickBy-13K3GTi9.js.gz +0 -0
  136. package/dist/ui/assets/_baseUniq-lck5RBgD.js.gz +0 -0
  137. package/dist/ui/assets/arc-C0GcDF2P.js.gz +0 -0
  138. package/dist/ui/assets/architectureDiagram-VXUJARFQ-Ck8B6z3I.js.gz +0 -0
  139. package/dist/ui/assets/blockDiagram-VD42YOAC-BgMvAje1.js.gz +0 -0
  140. package/dist/ui/assets/c4Diagram-YG6GDRKO-yA5XAZZf.js.gz +0 -0
  141. package/dist/ui/assets/channel-DhySBSOt.js +0 -1
  142. package/dist/ui/assets/chunk-B4BG7PRW-BcEBbodm.js.gz +0 -0
  143. package/dist/ui/assets/chunk-DI55MBZ5-UDHzzgel.js.gz +0 -0
  144. package/dist/ui/assets/chunk-TZMSLE5B-krq2w8Wn.js.gz +0 -0
  145. package/dist/ui/assets/classDiagram-2ON5EDUG-Bg8-1Rkz.js +0 -1
  146. package/dist/ui/assets/classDiagram-v2-WZHVMYZB-Bg8-1Rkz.js +0 -1
  147. package/dist/ui/assets/clone-QTg4xOe_.js +0 -1
  148. package/dist/ui/assets/cose-bilkent-S5V4N54A-BJiZxo47.js.gz +0 -0
  149. package/dist/ui/assets/dagre-6UL2VRFP-CycZ_vyT.js.gz +0 -0
  150. package/dist/ui/assets/diagram-PSM6KHXK-BJVCx4MR.js.gz +0 -0
  151. package/dist/ui/assets/diagram-QEK2KX5R-CpdqQZ9q.js.gz +0 -0
  152. package/dist/ui/assets/diagram-S2PKOQOG-CeWK141q.js.gz +0 -0
  153. package/dist/ui/assets/erDiagram-Q2GNP2WA-lGMSDK28.js.gz +0 -0
  154. package/dist/ui/assets/flowDiagram-NV44I4VS-Dbmqc5na.js.gz +0 -0
  155. package/dist/ui/assets/ganttDiagram-LVOFAZNH-BCpWCm_-.js.gz +0 -0
  156. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-8tfgNgvH.js.gz +0 -0
  157. package/dist/ui/assets/graph-IQh1JXQd.js.gz +0 -0
  158. package/dist/ui/assets/index-B1uEuvdQ.js.gz +0 -0
  159. package/dist/ui/assets/journeyDiagram-XKPGCS4Q-CQCmqdFR.js.gz +0 -0
  160. package/dist/ui/assets/kanban-definition-3W4ZIXB7-D811ViNy.js.gz +0 -0
  161. package/dist/ui/assets/layout-Cv3mAiDL.js.gz +0 -0
  162. package/dist/ui/assets/linear-DQVbvBGW.js.gz +0 -0
  163. package/dist/ui/assets/mermaid.core-CYNoJpXQ.js.gz +0 -0
  164. package/dist/ui/assets/mindmap-definition-VGOIOE7T-BQvhdRXw.js.gz +0 -0
  165. package/dist/ui/assets/pieDiagram-ADFJNKIX-BiFaGv3A.js.gz +0 -0
  166. package/dist/ui/assets/quadrantDiagram-AYHSOK5B-Dp5wS_F1.js.gz +0 -0
  167. package/dist/ui/assets/requirementDiagram-UZGBJVZJ-C6W7NTIN.js.gz +0 -0
  168. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-DNsSVDsG.js.gz +0 -0
  169. package/dist/ui/assets/sequenceDiagram-WL72ISMW-rqRiYL0z.js.gz +0 -0
  170. package/dist/ui/assets/stateDiagram-FKZM4ZOC-SvEHAVeB.js.gz +0 -0
  171. package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-wm-0gu_X.js +0 -1
  172. package/dist/ui/assets/timeline-definition-IT6M3QCI-CTTXGBKf.js.gz +0 -0
  173. package/dist/ui/assets/treemap-KMMF4GRG-Dmr_9bCh.js.gz +0 -0
  174. package/dist/ui/assets/xychartDiagram-PRI3JC2R-Dy8qoKJm.js.gz +0 -0
@@ -1,5 +1,5 @@
1
1
  import { e as Message } from '../message-DZitapX9.cjs';
2
- import { e as Board, f as BoardExportBlob } from '../board-BGkmgUH3.cjs';
2
+ import { e as Board, f as BoardExportBlob } from '../board-DCNkcsyf.cjs';
3
3
  import { a as ContextFileListItem, b as ContextFileDetail } from '../context-ByxGjp5l.cjs';
4
4
  import { b as AuthenticationResult } from '../feathers-C1uChqXy.cjs';
5
5
  import { f as Session } from '../session-Bt9i9089.cjs';
@@ -1,5 +1,5 @@
1
1
  import { e as Message } from '../message-CrqsdxNE.js';
2
- import { e as Board, f as BoardExportBlob } from '../board-CKJQAhxz.js';
2
+ import { e as Board, f as BoardExportBlob } from '../board-C-PU8jok.js';
3
3
  import { a as ContextFileListItem, b as ContextFileDetail } from '../context-ByxGjp5l.js';
4
4
  import { b as AuthenticationResult } from '../feathers-B0zjReEk.js';
5
5
  import { f as Session } from '../session-Da9rf6n5.js';
@@ -1,3 +1,4 @@
1
+ import { A as AgenticToolName } from './session-Da9rf6n5.js';
1
2
  import { B as BoardID, W as WorktreeID } from './id-BwPJtWxW.js';
2
3
 
3
4
  /**
@@ -57,6 +58,8 @@ interface ZoneTrigger {
57
58
  template: string;
58
59
  /** Trigger behavior mode (default: 'show_picker') */
59
60
  behavior: ZoneTriggerBehavior;
61
+ /** Preferred agent for auto-created sessions (default: 'claude-code') */
62
+ agent?: AgenticToolName;
60
63
  }
61
64
  /**
62
65
  * Zone rectangle object (for organizing sessions visually)
@@ -1,3 +1,4 @@
1
+ import { A as AgenticToolName } from './session-Bt9i9089.cjs';
1
2
  import { B as BoardID, W as WorktreeID } from './id-BwPJtWxW.cjs';
2
3
 
3
4
  /**
@@ -57,6 +58,8 @@ interface ZoneTrigger {
57
58
  template: string;
58
59
  /** Trigger behavior mode (default: 'show_picker') */
59
60
  behavior: ZoneTriggerBehavior;
61
+ /** Preferred agent for auto-created sessions (default: 'claude-code') */
62
+ agent?: AgenticToolName;
60
63
  }
61
64
  /**
62
65
  * Zone rectangle object (for organizing sessions visually)
@@ -539,7 +539,7 @@ var init_schema_postgres = __esm({
539
539
  // Foreign keys
540
540
  channel_id: (0, import_pg_core.varchar)("channel_id", { length: 36 }).notNull().references(() => gatewayChannels.id, { onDelete: "cascade" }),
541
541
  thread_id: (0, import_pg_core.text)("thread_id").notNull(),
542
- session_id: (0, import_pg_core.varchar)("session_id", { length: 36 }).notNull().references(() => sessions.session_id),
542
+ session_id: (0, import_pg_core.varchar)("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
543
543
  worktree_id: (0, import_pg_core.varchar)("worktree_id", { length: 36 }).notNull().references(() => worktrees.worktree_id),
544
544
  // Materialized for queries
545
545
  status: (0, import_pg_core.text)("status", {
@@ -1050,7 +1050,7 @@ var init_schema_sqlite = __esm({
1050
1050
  // Foreign keys
1051
1051
  channel_id: (0, import_sqlite_core.text)("channel_id", { length: 36 }).notNull().references(() => gatewayChannels2.id, { onDelete: "cascade" }),
1052
1052
  thread_id: (0, import_sqlite_core.text)("thread_id").notNull(),
1053
- session_id: (0, import_sqlite_core.text)("session_id", { length: 36 }).notNull().references(() => sessions2.session_id),
1053
+ session_id: (0, import_sqlite_core.text)("session_id", { length: 36 }).notNull().references(() => sessions2.session_id, { onDelete: "cascade" }),
1054
1054
  worktree_id: (0, import_sqlite_core.text)("worktree_id", { length: 36 }).notNull().references(() => worktrees2.worktree_id),
1055
1055
  // Materialized for queries
1056
1056
  status: (0, import_sqlite_core.text)("status", {
@@ -530,7 +530,7 @@ var init_schema_postgres = __esm({
530
530
  // Foreign keys
531
531
  channel_id: varchar("channel_id", { length: 36 }).notNull().references(() => gatewayChannels.id, { onDelete: "cascade" }),
532
532
  thread_id: text("thread_id").notNull(),
533
- session_id: varchar("session_id", { length: 36 }).notNull().references(() => sessions.session_id),
533
+ session_id: varchar("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
534
534
  worktree_id: varchar("worktree_id", { length: 36 }).notNull().references(() => worktrees.worktree_id),
535
535
  // Materialized for queries
536
536
  status: text("status", {
@@ -1048,7 +1048,7 @@ var init_schema_sqlite = __esm({
1048
1048
  // Foreign keys
1049
1049
  channel_id: text2("channel_id", { length: 36 }).notNull().references(() => gatewayChannels2.id, { onDelete: "cascade" }),
1050
1050
  thread_id: text2("thread_id").notNull(),
1051
- session_id: text2("session_id", { length: 36 }).notNull().references(() => sessions2.session_id),
1051
+ session_id: text2("session_id", { length: 36 }).notNull().references(() => sessions2.session_id, { onDelete: "cascade" }),
1052
1052
  worktree_id: text2("worktree_id", { length: 36 }).notNull().references(() => worktrees2.worktree_id),
1053
1053
  // Materialized for queries
1054
1054
  status: text2("status", {
@@ -2,7 +2,7 @@ import { LibSQLDatabase } from 'drizzle-orm/libsql';
2
2
  import { PostgresJsDatabase } from 'drizzle-orm/postgres-js';
3
3
  import { e as Message } from './message-CrqsdxNE.js';
4
4
  import { f as Session, P as PermissionMode, c as CodexSandboxMode, d as CodexApprovalPolicy } from './session-Da9rf6n5.js';
5
- import { d as BoardObject } from './board-CKJQAhxz.js';
5
+ import { d as BoardObject } from './board-C-PU8jok.js';
6
6
  import { c as Task } from './task-D0i_mU9u.js';
7
7
  import * as drizzle_orm_pg_core from 'drizzle-orm/pg-core';
8
8
  import * as drizzle_orm_sqlite_core from 'drizzle-orm/sqlite-core';
@@ -2,7 +2,7 @@ import { LibSQLDatabase } from 'drizzle-orm/libsql';
2
2
  import { PostgresJsDatabase } from 'drizzle-orm/postgres-js';
3
3
  import { e as Message } from './message-DZitapX9.cjs';
4
4
  import { f as Session, P as PermissionMode, c as CodexSandboxMode, d as CodexApprovalPolicy } from './session-Bt9i9089.cjs';
5
- import { d as BoardObject } from './board-BGkmgUH3.cjs';
5
+ import { d as BoardObject } from './board-DCNkcsyf.cjs';
6
6
  import { c as Task } from './task-D5cWUcAY.cjs';
7
7
  import * as drizzle_orm_pg_core from 'drizzle-orm/pg-core';
8
8
  import * as drizzle_orm_sqlite_core from 'drizzle-orm/sqlite-core';
@@ -283,6 +283,7 @@ function formatRepoReference(slug, worktreeName) {
283
283
  // src/config/types.ts
284
284
  var CredentialKey = /* @__PURE__ */ ((CredentialKey2) => {
285
285
  CredentialKey2["ANTHROPIC_API_KEY"] = "ANTHROPIC_API_KEY";
286
+ CredentialKey2["ANTHROPIC_BASE_URL"] = "ANTHROPIC_BASE_URL";
286
287
  CredentialKey2["OPENAI_API_KEY"] = "OPENAI_API_KEY";
287
288
  CredentialKey2["GEMINI_API_KEY"] = "GEMINI_API_KEY";
288
289
  return CredentialKey2;
@@ -1,6 +1,6 @@
1
1
  import { R as RepoSlug, W as WorktreeName, b as Repo, d as Worktree } from '../worktree-hZImhblR.cjs';
2
2
  import { U as UUID } from '../id-BwPJtWxW.cjs';
3
- 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-eb2uYaBV.cjs';
3
+ export { f as AgorCodexSettings, j as AgorConfig, i as AgorCredentials, b as AgorDaemonSettings, e as AgorDatabaseSettings, A as AgorDefaults, a as AgorDisplaySettings, g as AgorExecutionSettings, d as AgorOpenCodeSettings, h as AgorPathSettings, c as AgorUISettings, k as ConfigKey, C as CredentialKey, U as UnknownJson } from '../types-D_wAaaE3.cjs';
4
4
 
5
5
  /**
6
6
  * App-level constants for Agor
@@ -1,6 +1,6 @@
1
1
  import { R as RepoSlug, W as WorktreeName, b as Repo, d as Worktree } from '../worktree-BR7Inm0-.js';
2
2
  import { U as UUID } from '../id-BwPJtWxW.js';
3
- 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-eb2uYaBV.js';
3
+ 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';
4
4
 
5
5
  /**
6
6
  * App-level constants for Agor
@@ -241,6 +241,7 @@ function formatRepoReference(slug, worktreeName) {
241
241
  // src/config/types.ts
242
242
  var CredentialKey = /* @__PURE__ */ ((CredentialKey2) => {
243
243
  CredentialKey2["ANTHROPIC_API_KEY"] = "ANTHROPIC_API_KEY";
244
+ CredentialKey2["ANTHROPIC_BASE_URL"] = "ANTHROPIC_BASE_URL";
244
245
  CredentialKey2["OPENAI_API_KEY"] = "OPENAI_API_KEY";
245
246
  CredentialKey2["GEMINI_API_KEY"] = "GEMINI_API_KEY";
246
247
  return CredentialKey2;
@@ -616,7 +616,7 @@ var init_schema_postgres = __esm({
616
616
  // Foreign keys
617
617
  channel_id: (0, import_pg_core.varchar)("channel_id", { length: 36 }).notNull().references(() => gatewayChannels.id, { onDelete: "cascade" }),
618
618
  thread_id: (0, import_pg_core.text)("thread_id").notNull(),
619
- session_id: (0, import_pg_core.varchar)("session_id", { length: 36 }).notNull().references(() => sessions.session_id),
619
+ session_id: (0, import_pg_core.varchar)("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
620
620
  worktree_id: (0, import_pg_core.varchar)("worktree_id", { length: 36 }).notNull().references(() => worktrees.worktree_id),
621
621
  // Materialized for queries
622
622
  status: (0, import_pg_core.text)("status", {
@@ -1127,7 +1127,7 @@ var init_schema_sqlite = __esm({
1127
1127
  // Foreign keys
1128
1128
  channel_id: (0, import_sqlite_core.text)("channel_id", { length: 36 }).notNull().references(() => gatewayChannels2.id, { onDelete: "cascade" }),
1129
1129
  thread_id: (0, import_sqlite_core.text)("thread_id").notNull(),
1130
- session_id: (0, import_sqlite_core.text)("session_id", { length: 36 }).notNull().references(() => sessions2.session_id),
1130
+ session_id: (0, import_sqlite_core.text)("session_id", { length: 36 }).notNull().references(() => sessions2.session_id, { onDelete: "cascade" }),
1131
1131
  worktree_id: (0, import_sqlite_core.text)("worktree_id", { length: 36 }).notNull().references(() => worktrees2.worktree_id),
1132
1132
  // Materialized for queries
1133
1133
  status: (0, import_sqlite_core.text)("status", {
@@ -2329,31 +2329,28 @@ async function resolveApiKey(keyName, context = {}) {
2329
2329
  );
2330
2330
  if (context.userId && context.db) {
2331
2331
  console.log(` \u2192 Checking user-level configuration...`);
2332
- try {
2333
- const row = await select(context.db).from(users3).where((0, import_drizzle_orm20.eq)(users3.user_id, context.userId)).one();
2334
- if (row) {
2335
- const data = row.data;
2336
- const encryptedKey = data.api_keys?.[keyName];
2337
- if (encryptedKey) {
2332
+ const row = await select(context.db).from(users3).where((0, import_drizzle_orm20.eq)(users3.user_id, context.userId)).one();
2333
+ if (row) {
2334
+ const data = row.data;
2335
+ const encryptedKey = data.api_keys?.[keyName];
2336
+ if (encryptedKey) {
2337
+ try {
2338
2338
  const decryptedKey = decryptApiKey(encryptedKey);
2339
2339
  if (decryptedKey && decryptedKey.length > 0) {
2340
2340
  console.log(
2341
2341
  ` \u2713 Found user-level API key for ${keyName} (user: ${context.userId.substring(0, 8)})`
2342
2342
  );
2343
2343
  return { apiKey: decryptedKey, source: "user", useNativeAuth: false };
2344
- } else {
2345
- console.log(
2346
- ` \u2717 User-level API key for ${keyName} is empty (user: ${context.userId.substring(0, 8)})`
2347
- );
2348
2344
  }
2349
- } else {
2350
- console.log(` \u2717 No user-level API key for ${keyName}`);
2345
+ } catch {
2346
+ return {
2347
+ apiKey: void 0,
2348
+ source: "user",
2349
+ useNativeAuth: false,
2350
+ decryptionFailed: true
2351
+ };
2351
2352
  }
2352
- } else {
2353
- console.log(` \u2717 User record not found`);
2354
2353
  }
2355
- } catch (err) {
2356
- console.error(` \u2717 Failed to check user-level key:`, err);
2357
2354
  }
2358
2355
  } else if (!context.userId) {
2359
2356
  console.log(` \u2192 Skipping user-level check (no user ID provided)`);
@@ -2524,6 +2521,7 @@ function formatRepoReference(slug, worktreeName) {
2524
2521
  init_cjs_shims();
2525
2522
  var CredentialKey = /* @__PURE__ */ ((CredentialKey2) => {
2526
2523
  CredentialKey2["ANTHROPIC_API_KEY"] = "ANTHROPIC_API_KEY";
2524
+ CredentialKey2["ANTHROPIC_BASE_URL"] = "ANTHROPIC_BASE_URL";
2527
2525
  CredentialKey2["OPENAI_API_KEY"] = "OPENAI_API_KEY";
2528
2526
  CredentialKey2["GEMINI_API_KEY"] = "GEMINI_API_KEY";
2529
2527
  return CredentialKey2;
@@ -1,15 +1,15 @@
1
1
  import { h as RepoEnvironmentConfig } from '../worktree-hZImhblR.cjs';
2
- 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-tIFWlS73.cjs';
2
+ export { c as ensureCodexHome, e as expandHomePath, g as getAgorHome, a as getConfigPath, d as getConfigValue, k as getCredential, h as getDaemonUrl, m as getDaemonUser, q as getDataHome, x as getDataHomeAsync, b as getDefaultConfig, t as getReposDir, y as getReposDirAsync, w as getWorktreePath, v as getWorktreesDir, z as getWorktreesDirAsync, i as initConfig, p as isUnixImpersonationEnabled, o as isWorktreeRbacEnabled, l as loadConfig, j as loadConfigSync, n as requireDaemonUser, r as resolveCodexHome, s as saveConfig, f as setConfigValue, u as unsetConfigValue } from '../config-manager-sCgziLkz.cjs';
3
3
  export { DAEMON, DATABASE, ENVIRONMENT, GIT, PAGINATION, RepoReference, RepoReferenceOption, SESSION, WEBSOCKET, extractSlugFromUrl, formatRepoReference, getDefaultRepoReference, getGroupedRepoReferenceOptions, getRepoReferenceOptions, isValidGitUrl, isValidSlug, parseRepoReference, resolveRepoReference } from './browser.cjs';
4
- import { d as Database } from '../client-Z40920Ce.cjs';
4
+ import { d as Database } from '../client-DKbFqX_X.cjs';
5
5
  import { b as UserID } from '../id-BwPJtWxW.cjs';
6
- 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-eb2uYaBV.cjs';
6
+ export { f as AgorCodexSettings, j as AgorConfig, i as AgorCredentials, b as AgorDaemonSettings, e as AgorDatabaseSettings, A as AgorDefaults, a as AgorDisplaySettings, g as AgorExecutionSettings, d as AgorOpenCodeSettings, h as AgorPathSettings, c as AgorUISettings, k as ConfigKey, C as CredentialKey, U as UnknownJson } from '../types-D_wAaaE3.cjs';
7
7
  import 'drizzle-orm/libsql';
8
8
  import 'drizzle-orm/postgres-js';
9
9
  import '../message-DZitapX9.cjs';
10
10
  import '../session-Bt9i9089.cjs';
11
11
  import '../context-ByxGjp5l.cjs';
12
- import '../board-BGkmgUH3.cjs';
12
+ import '../board-DCNkcsyf.cjs';
13
13
  import '../task-D5cWUcAY.cjs';
14
14
  import 'drizzle-orm/pg-core';
15
15
  import 'drizzle-orm/sqlite-core';
@@ -226,6 +226,8 @@ interface KeyResolutionResult {
226
226
  source: 'user' | 'config' | 'env' | 'none';
227
227
  /** Whether SDK should fall back to native auth (OAuth, CLI login, etc.) */
228
228
  useNativeAuth: boolean;
229
+ /** True when a user-level key exists but couldn't be decrypted (master secret mismatch) */
230
+ decryptionFailed?: boolean;
229
231
  }
230
232
  /**
231
233
  * Resolve API key with precedence:
@@ -1,15 +1,15 @@
1
1
  import { h as RepoEnvironmentConfig } from '../worktree-BR7Inm0-.js';
2
- 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-CAIQUOj8.js';
2
+ 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
3
  export { DAEMON, DATABASE, ENVIRONMENT, GIT, PAGINATION, RepoReference, RepoReferenceOption, SESSION, WEBSOCKET, extractSlugFromUrl, formatRepoReference, getDefaultRepoReference, getGroupedRepoReferenceOptions, getRepoReferenceOptions, isValidGitUrl, isValidSlug, parseRepoReference, resolveRepoReference } from './browser.js';
4
- import { d as Database } from '../client-BE40WsYn.js';
4
+ import { d as Database } from '../client-CGO13BG6.js';
5
5
  import { b as UserID } from '../id-BwPJtWxW.js';
6
- 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-eb2uYaBV.js';
6
+ 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';
7
7
  import 'drizzle-orm/libsql';
8
8
  import 'drizzle-orm/postgres-js';
9
9
  import '../message-CrqsdxNE.js';
10
10
  import '../session-Da9rf6n5.js';
11
11
  import '../context-ByxGjp5l.js';
12
- import '../board-CKJQAhxz.js';
12
+ import '../board-C-PU8jok.js';
13
13
  import '../task-D0i_mU9u.js';
14
14
  import 'drizzle-orm/pg-core';
15
15
  import 'drizzle-orm/sqlite-core';
@@ -226,6 +226,8 @@ interface KeyResolutionResult {
226
226
  source: 'user' | 'config' | 'env' | 'none';
227
227
  /** Whether SDK should fall back to native auth (OAuth, CLI login, etc.) */
228
228
  useNativeAuth: boolean;
229
+ /** True when a user-level key exists but couldn't be decrypted (master secret mismatch) */
230
+ decryptionFailed?: boolean;
229
231
  }
230
232
  /**
231
233
  * Resolve API key with precedence:
@@ -607,7 +607,7 @@ var init_schema_postgres = __esm({
607
607
  // Foreign keys
608
608
  channel_id: varchar("channel_id", { length: 36 }).notNull().references(() => gatewayChannels.id, { onDelete: "cascade" }),
609
609
  thread_id: text("thread_id").notNull(),
610
- session_id: varchar("session_id", { length: 36 }).notNull().references(() => sessions.session_id),
610
+ session_id: varchar("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
611
611
  worktree_id: varchar("worktree_id", { length: 36 }).notNull().references(() => worktrees.worktree_id),
612
612
  // Materialized for queries
613
613
  status: text("status", {
@@ -1125,7 +1125,7 @@ var init_schema_sqlite = __esm({
1125
1125
  // Foreign keys
1126
1126
  channel_id: text2("channel_id", { length: 36 }).notNull().references(() => gatewayChannels2.id, { onDelete: "cascade" }),
1127
1127
  thread_id: text2("thread_id").notNull(),
1128
- session_id: text2("session_id", { length: 36 }).notNull().references(() => sessions2.session_id),
1128
+ session_id: text2("session_id", { length: 36 }).notNull().references(() => sessions2.session_id, { onDelete: "cascade" }),
1129
1129
  worktree_id: text2("worktree_id", { length: 36 }).notNull().references(() => worktrees2.worktree_id),
1130
1130
  // Materialized for queries
1131
1131
  status: text2("status", {
@@ -2282,31 +2282,28 @@ async function resolveApiKey(keyName, context = {}) {
2282
2282
  );
2283
2283
  if (context.userId && context.db) {
2284
2284
  console.log(` \u2192 Checking user-level configuration...`);
2285
- try {
2286
- const row = await select(context.db).from(users3).where(eq17(users3.user_id, context.userId)).one();
2287
- if (row) {
2288
- const data = row.data;
2289
- const encryptedKey = data.api_keys?.[keyName];
2290
- if (encryptedKey) {
2285
+ const row = await select(context.db).from(users3).where(eq17(users3.user_id, context.userId)).one();
2286
+ if (row) {
2287
+ const data = row.data;
2288
+ const encryptedKey = data.api_keys?.[keyName];
2289
+ if (encryptedKey) {
2290
+ try {
2291
2291
  const decryptedKey = decryptApiKey(encryptedKey);
2292
2292
  if (decryptedKey && decryptedKey.length > 0) {
2293
2293
  console.log(
2294
2294
  ` \u2713 Found user-level API key for ${keyName} (user: ${context.userId.substring(0, 8)})`
2295
2295
  );
2296
2296
  return { apiKey: decryptedKey, source: "user", useNativeAuth: false };
2297
- } else {
2298
- console.log(
2299
- ` \u2717 User-level API key for ${keyName} is empty (user: ${context.userId.substring(0, 8)})`
2300
- );
2301
2297
  }
2302
- } else {
2303
- console.log(` \u2717 No user-level API key for ${keyName}`);
2298
+ } catch {
2299
+ return {
2300
+ apiKey: void 0,
2301
+ source: "user",
2302
+ useNativeAuth: false,
2303
+ decryptionFailed: true
2304
+ };
2304
2305
  }
2305
- } else {
2306
- console.log(` \u2717 User record not found`);
2307
2306
  }
2308
- } catch (err) {
2309
- console.error(` \u2717 Failed to check user-level key:`, err);
2310
2307
  }
2311
2308
  } else if (!context.userId) {
2312
2309
  console.log(` \u2192 Skipping user-level check (no user ID provided)`);
@@ -2477,6 +2474,7 @@ function formatRepoReference(slug, worktreeName) {
2477
2474
  init_esm_shims();
2478
2475
  var CredentialKey = /* @__PURE__ */ ((CredentialKey2) => {
2479
2476
  CredentialKey2["ANTHROPIC_API_KEY"] = "ANTHROPIC_API_KEY";
2477
+ CredentialKey2["ANTHROPIC_BASE_URL"] = "ANTHROPIC_BASE_URL";
2480
2478
  CredentialKey2["OPENAI_API_KEY"] = "OPENAI_API_KEY";
2481
2479
  CredentialKey2["GEMINI_API_KEY"] = "GEMINI_API_KEY";
2482
2480
  return CredentialKey2;
@@ -1,4 +1,4 @@
1
- import { j as AgorConfig } from './types-eb2uYaBV.js';
1
+ import { j as AgorConfig } from './types-D_wAaaE3.js';
2
2
 
3
3
  /**
4
4
  * Agor Config Manager
@@ -95,7 +95,7 @@ declare function loadConfigSync(): AgorConfig;
95
95
  * @param key - Credential key from CredentialKey enum
96
96
  * @returns API key or undefined
97
97
  */
98
- declare function getCredential(key: 'ANTHROPIC_API_KEY' | 'OPENAI_API_KEY' | 'GEMINI_API_KEY'): string | undefined;
98
+ declare function getCredential(key: 'ANTHROPIC_API_KEY' | 'ANTHROPIC_BASE_URL' | 'OPENAI_API_KEY' | 'GEMINI_API_KEY'): string | undefined;
99
99
  /**
100
100
  * Get the Unix user that the Agor daemon runs as
101
101
  *
@@ -1,4 +1,4 @@
1
- import { j as AgorConfig } from './types-eb2uYaBV.cjs';
1
+ import { j as AgorConfig } from './types-D_wAaaE3.cjs';
2
2
 
3
3
  /**
4
4
  * Agor Config Manager
@@ -95,7 +95,7 @@ declare function loadConfigSync(): AgorConfig;
95
95
  * @param key - Credential key from CredentialKey enum
96
96
  * @returns API key or undefined
97
97
  */
98
- declare function getCredential(key: 'ANTHROPIC_API_KEY' | 'OPENAI_API_KEY' | 'GEMINI_API_KEY'): string | undefined;
98
+ declare function getCredential(key: 'ANTHROPIC_API_KEY' | 'ANTHROPIC_BASE_URL' | 'OPENAI_API_KEY' | 'GEMINI_API_KEY'): string | undefined;
99
99
  /**
100
100
  * Get the Unix user that the Agor daemon runs as
101
101
  *
@@ -693,7 +693,7 @@ var init_schema_postgres = __esm({
693
693
  // Foreign keys
694
694
  channel_id: (0, import_pg_core.varchar)("channel_id", { length: 36 }).notNull().references(() => gatewayChannels.id, { onDelete: "cascade" }),
695
695
  thread_id: (0, import_pg_core.text)("thread_id").notNull(),
696
- session_id: (0, import_pg_core.varchar)("session_id", { length: 36 }).notNull().references(() => sessions.session_id),
696
+ session_id: (0, import_pg_core.varchar)("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
697
697
  worktree_id: (0, import_pg_core.varchar)("worktree_id", { length: 36 }).notNull().references(() => worktrees.worktree_id),
698
698
  // Materialized for queries
699
699
  status: (0, import_pg_core.text)("status", {
@@ -1204,7 +1204,7 @@ var init_schema_sqlite = __esm({
1204
1204
  // Foreign keys
1205
1205
  channel_id: (0, import_sqlite_core.text)("channel_id", { length: 36 }).notNull().references(() => gatewayChannels2.id, { onDelete: "cascade" }),
1206
1206
  thread_id: (0, import_sqlite_core.text)("thread_id").notNull(),
1207
- session_id: (0, import_sqlite_core.text)("session_id", { length: 36 }).notNull().references(() => sessions2.session_id),
1207
+ session_id: (0, import_sqlite_core.text)("session_id", { length: 36 }).notNull().references(() => sessions2.session_id, { onDelete: "cascade" }),
1208
1208
  worktree_id: (0, import_sqlite_core.text)("worktree_id", { length: 36 }).notNull().references(() => worktrees2.worktree_id),
1209
1209
  // Materialized for queries
1210
1210
  status: (0, import_sqlite_core.text)("status", {
@@ -1,8 +1,8 @@
1
1
  import { SQL } from 'drizzle-orm';
2
2
  export { SQL, and, asc, desc, eq, inArray, like, or, sql } from 'drizzle-orm';
3
3
  import bcryptjs from 'bcryptjs';
4
- import { d as Database, z as sqliteSchema, A as postgresSchema } from '../client-Z40920Ce.cjs';
5
- export { v as BoardCommentInsert, u as BoardCommentRow, k as BoardInsert, t as BoardObjectInsert, s as BoardObjectRow, B as BoardRow, e as DEFAULT_DB_PATH, 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-Z40920Ce.cjs';
4
+ import { d as Database, z as sqliteSchema, A as postgresSchema } from '../client-DKbFqX_X.cjs';
5
+ export { v as BoardCommentInsert, u as BoardCommentRow, k as BoardInsert, t as BoardObjectInsert, s as BoardObjectRow, B as BoardRow, e as DEFAULT_DB_PATH, a as DatabaseConnectionError, D as DbConfig, w as GatewayChannelInsert, G as GatewayChannelRow, p as MCPServerInsert, o as MCPServerRow, j as MessageInsert, M as MessageRow, l as RepoInsert, R as RepoRow, h as SessionInsert, r as SessionMCPServerInsert, q as SessionMCPServerRow, S as SessionRow, i as TaskInsert, T as TaskRow, y as ThreadSessionMapInsert, x as ThreadSessionMapRow, n as UserInsert, U as UserRow, m as WorktreeInsert, W as WorktreeRow, c as createDatabase, b as createDatabaseAsync, f as createLocalDatabase, g as getDatabaseUrl } from '../client-DKbFqX_X.cjs';
6
6
  import { LibSQLDatabase } from 'drizzle-orm/libsql';
7
7
  import * as drizzle_orm_pg_core from 'drizzle-orm/pg-core';
8
8
  import { PgTable } from 'drizzle-orm/pg-core';
@@ -11,7 +11,7 @@ import * as drizzle_orm_sqlite_core from 'drizzle-orm/sqlite-core';
11
11
  import { SQLiteTable } from 'drizzle-orm/sqlite-core';
12
12
  import { B as BoardComment } from '../board-comment-D9NA4gOJ.cjs';
13
13
  import { B as BoardID, W as WorktreeID, M as MessageID, a as SessionID, T as TaskID, U as UUID$1 } from '../id-BwPJtWxW.cjs';
14
- import { a as BoardEntityObject, e as Board, d as BoardObject, f as BoardExportBlob } from '../board-BGkmgUH3.cjs';
14
+ import { a as BoardEntityObject, e as Board, d as BoardObject, f as BoardExportBlob } from '../board-DCNkcsyf.cjs';
15
15
  import { c as GatewayChannel, G as GatewayChannelID, d as ThreadSessionMap, a as ThreadStatus, T as ThreadSessionMapID } from '../gateway-DGNtjRnd.cjs';
16
16
  import { i as MCPServer, C as CreateMCPServerInput, U as UpdateMCPServerInput, j as MCPServerFilters, M as MCPServerID, S as SessionMCPServer } from '../mcp-DqadENYY.cjs';
17
17
  import { e as Message } from '../message-DZitapX9.cjs';
@@ -1,8 +1,8 @@
1
1
  import { SQL } from 'drizzle-orm';
2
2
  export { SQL, and, asc, desc, eq, inArray, like, or, sql } from 'drizzle-orm';
3
3
  import bcryptjs from 'bcryptjs';
4
- import { d as Database, z as sqliteSchema, A as postgresSchema } from '../client-BE40WsYn.js';
5
- export { v as BoardCommentInsert, u as BoardCommentRow, k as BoardInsert, t as BoardObjectInsert, s as BoardObjectRow, B as BoardRow, e as DEFAULT_DB_PATH, 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-BE40WsYn.js';
4
+ import { d as Database, z as sqliteSchema, A as postgresSchema } from '../client-CGO13BG6.js';
5
+ export { v as BoardCommentInsert, u as BoardCommentRow, k as BoardInsert, t as BoardObjectInsert, s as BoardObjectRow, B as BoardRow, e as DEFAULT_DB_PATH, 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';
6
6
  import { LibSQLDatabase } from 'drizzle-orm/libsql';
7
7
  import * as drizzle_orm_pg_core from 'drizzle-orm/pg-core';
8
8
  import { PgTable } from 'drizzle-orm/pg-core';
@@ -11,7 +11,7 @@ import * as drizzle_orm_sqlite_core from 'drizzle-orm/sqlite-core';
11
11
  import { SQLiteTable } from 'drizzle-orm/sqlite-core';
12
12
  import { B as BoardComment } from '../board-comment-rH4c6eVl.js';
13
13
  import { B as BoardID, W as WorktreeID, M as MessageID, a as SessionID, T as TaskID, U as UUID$1 } from '../id-BwPJtWxW.js';
14
- import { a as BoardEntityObject, e as Board, d as BoardObject, f as BoardExportBlob } from '../board-CKJQAhxz.js';
14
+ import { a as BoardEntityObject, e as Board, d as BoardObject, f as BoardExportBlob } from '../board-C-PU8jok.js';
15
15
  import { c as GatewayChannel, G as GatewayChannelID, d as ThreadSessionMap, a as ThreadStatus, T as ThreadSessionMapID } from '../gateway-Dy9fVyiS.js';
16
16
  import { i as MCPServer, C as CreateMCPServerInput, U as UpdateMCPServerInput, j as MCPServerFilters, M as MCPServerID, S as SessionMCPServer } from '../mcp-Bm9HwvDf.js';
17
17
  import { e as Message } from '../message-CrqsdxNE.js';
@@ -682,7 +682,7 @@ var init_schema_postgres = __esm({
682
682
  // Foreign keys
683
683
  channel_id: varchar("channel_id", { length: 36 }).notNull().references(() => gatewayChannels.id, { onDelete: "cascade" }),
684
684
  thread_id: text("thread_id").notNull(),
685
- session_id: varchar("session_id", { length: 36 }).notNull().references(() => sessions.session_id),
685
+ session_id: varchar("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
686
686
  worktree_id: varchar("worktree_id", { length: 36 }).notNull().references(() => worktrees.worktree_id),
687
687
  // Materialized for queries
688
688
  status: text("status", {
@@ -1200,7 +1200,7 @@ var init_schema_sqlite = __esm({
1200
1200
  // Foreign keys
1201
1201
  channel_id: text2("channel_id", { length: 36 }).notNull().references(() => gatewayChannels2.id, { onDelete: "cascade" }),
1202
1202
  thread_id: text2("thread_id").notNull(),
1203
- session_id: text2("session_id", { length: 36 }).notNull().references(() => sessions2.session_id),
1203
+ session_id: text2("session_id", { length: 36 }).notNull().references(() => sessions2.session_id, { onDelete: "cascade" }),
1204
1204
  worktree_id: text2("worktree_id", { length: 36 }).notNull().references(() => worktrees2.worktree_id),
1205
1205
  // Materialized for queries
1206
1206
  status: text2("status", {
@@ -0,0 +1,8 @@
1
+ -- Fix foreign key constraint on thread_session_map.session_id to add ON DELETE CASCADE
2
+ -- This allows sessions to be deleted without violating the foreign key constraint
3
+
4
+ -- Drop the existing foreign key constraint
5
+ ALTER TABLE "thread_session_map" DROP CONSTRAINT IF EXISTS "thread_session_map_session_id_sessions_session_id_fk";
6
+
7
+ -- Recreate the foreign key constraint with ON DELETE CASCADE
8
+ ALTER TABLE "thread_session_map" ADD CONSTRAINT "thread_session_map_session_id_sessions_session_id_fk" FOREIGN KEY ("session_id") REFERENCES "public"."sessions"("session_id") ON DELETE cascade ON UPDATE no action;
@@ -113,6 +113,13 @@
113
113
  "when": 1770584538459,
114
114
  "tag": "0015_keen_veda",
115
115
  "breakpoints": true
116
+ },
117
+ {
118
+ "idx": 16,
119
+ "version": "7",
120
+ "when": 1770600000000,
121
+ "tag": "0016_fix_thread_session_map_fk_cascade",
122
+ "breakpoints": true
116
123
  }
117
124
  ]
118
125
  }
@@ -0,0 +1,28 @@
1
+ -- Fix foreign key constraint on thread_session_map.session_id to add ON DELETE CASCADE
2
+ -- This allows sessions to be deleted without violating the foreign key constraint
3
+ --
4
+ -- Note: SQLite doesn't support ALTER TABLE DROP/ADD CONSTRAINT directly.
5
+ -- We need to recreate the table with the correct foreign key.
6
+
7
+ PRAGMA foreign_keys=OFF;--> statement-breakpoint
8
+ CREATE TABLE "thread_session_map_new" (
9
+ "id" text(36) PRIMARY KEY NOT NULL,
10
+ "created_at" integer NOT NULL,
11
+ "last_message_at" integer NOT NULL,
12
+ "channel_id" text(36) NOT NULL,
13
+ "thread_id" text NOT NULL,
14
+ "session_id" text(36) NOT NULL,
15
+ "worktree_id" text(36) NOT NULL,
16
+ "status" text DEFAULT 'active' NOT NULL,
17
+ "metadata" text,
18
+ FOREIGN KEY ("channel_id") REFERENCES "gateway_channels"("id") ON DELETE cascade ON UPDATE no action,
19
+ FOREIGN KEY ("session_id") REFERENCES "sessions"("session_id") ON DELETE cascade ON UPDATE no action,
20
+ FOREIGN KEY ("worktree_id") REFERENCES "worktrees"("worktree_id") ON DELETE no action ON UPDATE no action
21
+ );--> statement-breakpoint
22
+ INSERT INTO "thread_session_map_new" SELECT * FROM "thread_session_map";--> statement-breakpoint
23
+ DROP TABLE "thread_session_map";--> statement-breakpoint
24
+ ALTER TABLE "thread_session_map_new" RENAME TO "thread_session_map";--> statement-breakpoint
25
+ CREATE UNIQUE INDEX "uniq_thread_map_channel_thread" ON "thread_session_map" ("channel_id","thread_id");--> statement-breakpoint
26
+ CREATE INDEX "idx_thread_map_session_id" ON "thread_session_map" ("session_id");--> statement-breakpoint
27
+ CREATE INDEX "idx_thread_map_channel_status" ON "thread_session_map" ("channel_id","status");--> statement-breakpoint
28
+ PRAGMA foreign_keys=ON;
@@ -169,6 +169,13 @@
169
169
  "when": 1770584533766,
170
170
  "tag": "0025_sticky_karnak",
171
171
  "breakpoints": true
172
+ },
173
+ {
174
+ "idx": 26,
175
+ "version": "6",
176
+ "when": 1770600000000,
177
+ "tag": "0026_fix_thread_session_map_fk_cascade",
178
+ "breakpoints": true
172
179
  }
173
180
  ]
174
181
  }
@@ -1,6 +1,6 @@
1
1
  export { simpleGit } from 'simple-git';
2
- export { t as getReposDir, w as getWorktreePath, v as getWorktreesDir } from '../config-manager-tIFWlS73.cjs';
3
- import '../types-eb2uYaBV.cjs';
2
+ export { t as getReposDir, w as getWorktreePath, v as getWorktreesDir } from '../config-manager-sCgziLkz.cjs';
3
+ import '../types-D_wAaaE3.cjs';
4
4
 
5
5
  /**
6
6
  * Git Utils for Agor
@@ -1,6 +1,6 @@
1
1
  export { simpleGit } from 'simple-git';
2
- export { t as getReposDir, w as getWorktreePath, v as getWorktreesDir } from '../config-manager-CAIQUOj8.js';
3
- import '../types-eb2uYaBV.js';
2
+ export { t as getReposDir, w as getWorktreePath, v as getWorktreesDir } from '../config-manager-DGBdhxtZ.js';
3
+ import '../types-D_wAaaE3.js';
4
4
 
5
5
  /**
6
6
  * Git Utils for Agor