agor-live 0.7.9 → 0.7.11

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 (155) 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-DV5ph4MH.d.cts → board-U6lVA7h2.d.cts} +5 -0
  4. package/dist/core/{board-BG4dLPPR.d.ts → board-slTuqYl5.d.ts} +5 -0
  5. package/dist/core/{client-D3prsJYh.d.cts → client-BitSyI31.d.cts} +1 -1
  6. package/dist/core/{client-XOAVBUuQ.d.ts → client-RCxWXp9Z.d.ts} +1 -1
  7. package/dist/core/config/index.d.cts +2 -2
  8. package/dist/core/config/index.d.ts +2 -2
  9. package/dist/core/db/index.d.cts +5 -5
  10. package/dist/core/db/index.d.ts +5 -5
  11. package/dist/core/git/index.cjs +22 -6
  12. package/dist/core/git/index.d.cts +24 -1
  13. package/dist/core/git/index.d.ts +24 -1
  14. package/dist/core/git/index.js +22 -6
  15. package/dist/core/index.cjs +22 -6
  16. package/dist/core/index.d.cts +3 -3
  17. package/dist/core/index.d.ts +3 -3
  18. package/dist/core/index.js +22 -6
  19. package/dist/core/seed/index.cjs +20 -4
  20. package/dist/core/seed/index.js +20 -4
  21. package/dist/core/tools/index.cjs +10 -4
  22. package/dist/core/tools/index.d.cts +3 -3
  23. package/dist/core/tools/index.d.ts +3 -3
  24. package/dist/core/tools/index.js +10 -4
  25. package/dist/core/types/index.d.cts +1 -1
  26. package/dist/core/types/index.d.ts +1 -1
  27. package/dist/core/{worktrees-DffEZMyv.d.ts → worktrees-BLxDBeu5.d.ts} +1 -1
  28. package/dist/core/{worktrees-Bq1te_We.d.cts → worktrees-DRL7PV6j.d.cts} +1 -1
  29. package/dist/daemon/index.js +25 -5
  30. package/dist/daemon/services/repos.d.ts +1 -0
  31. package/dist/daemon/services/repos.js +22 -2
  32. package/dist/daemon/services/sessions.js +1 -1
  33. package/dist/ui/assets/{_basePickBy-1oVZw6zW.js → _basePickBy-bB2ezU2v.js} +1 -1
  34. package/dist/ui/assets/_basePickBy-bB2ezU2v.js.gz +0 -0
  35. package/dist/ui/assets/{_baseUniq-D67yQP4w.js → _baseUniq-RUWVF8ic.js} +1 -1
  36. package/dist/ui/assets/_baseUniq-RUWVF8ic.js.gz +0 -0
  37. package/dist/ui/assets/{arc-B8GWz0RB.js → arc-Bdb-KAhl.js} +1 -1
  38. package/dist/ui/assets/arc-Bdb-KAhl.js.gz +0 -0
  39. package/dist/ui/assets/{architectureDiagram-VXUJARFQ-BgXeKqF3.js → architectureDiagram-VXUJARFQ-B_6QbUf9.js} +1 -1
  40. package/dist/ui/assets/architectureDiagram-VXUJARFQ-B_6QbUf9.js.gz +0 -0
  41. package/dist/ui/assets/{blockDiagram-VD42YOAC-Br4wv6oE.js → blockDiagram-VD42YOAC-DBgUwFOT.js} +1 -1
  42. package/dist/ui/assets/blockDiagram-VD42YOAC-DBgUwFOT.js.gz +0 -0
  43. package/dist/ui/assets/{c4Diagram-YG6GDRKO-DoacZ-bP.js → c4Diagram-YG6GDRKO-Dkelkt0U.js} +1 -1
  44. package/dist/ui/assets/c4Diagram-YG6GDRKO-Dkelkt0U.js.gz +0 -0
  45. package/dist/ui/assets/channel-DD_4p0gB.js +1 -0
  46. package/dist/ui/assets/{chunk-4BX2VUAB-DeBUzfse.js → chunk-4BX2VUAB-CNl5rJW5.js} +1 -1
  47. package/dist/ui/assets/{chunk-55IACEB6-Dg1XR9KY.js → chunk-55IACEB6-Dj5VgM5k.js} +1 -1
  48. package/dist/ui/assets/{chunk-B4BG7PRW-BT-McvBZ.js → chunk-B4BG7PRW-1pqlFewX.js} +1 -1
  49. package/dist/ui/assets/chunk-B4BG7PRW-1pqlFewX.js.gz +0 -0
  50. package/dist/ui/assets/{chunk-DI55MBZ5-C3RhUPYz.js → chunk-DI55MBZ5-CIuFifgY.js} +1 -1
  51. package/dist/ui/assets/chunk-DI55MBZ5-CIuFifgY.js.gz +0 -0
  52. package/dist/ui/assets/{chunk-FMBD7UC4-o24Oz_S3.js → chunk-FMBD7UC4-B50WasIE.js} +1 -1
  53. package/dist/ui/assets/{chunk-QN33PNHL-IkTn9zca.js → chunk-QN33PNHL-D91AM57m.js} +1 -1
  54. package/dist/ui/assets/{chunk-QZHKN3VN-Cdbhn40g.js → chunk-QZHKN3VN-BybmAXfX.js} +1 -1
  55. package/dist/ui/assets/{chunk-TZMSLE5B-BPOasa48.js → chunk-TZMSLE5B-C4iOS8Q9.js} +1 -1
  56. package/dist/ui/assets/chunk-TZMSLE5B-C4iOS8Q9.js.gz +0 -0
  57. package/dist/ui/assets/classDiagram-2ON5EDUG-Bs6mu7z9.js +1 -0
  58. package/dist/ui/assets/classDiagram-v2-WZHVMYZB-Bs6mu7z9.js +1 -0
  59. package/dist/ui/assets/clone-CrzWxK3i.js +1 -0
  60. package/dist/ui/assets/{cose-bilkent-S5V4N54A-C1U8rZC3.js → cose-bilkent-S5V4N54A-DLgO8Qez.js} +1 -1
  61. package/dist/ui/assets/cose-bilkent-S5V4N54A-DLgO8Qez.js.gz +0 -0
  62. package/dist/ui/assets/{dagre-6UL2VRFP-CD4UN-xQ.js → dagre-6UL2VRFP-DMVxdIPl.js} +1 -1
  63. package/dist/ui/assets/dagre-6UL2VRFP-DMVxdIPl.js.gz +0 -0
  64. package/dist/ui/assets/{diagram-PSM6KHXK-BEaYi66Q.js → diagram-PSM6KHXK-CWKBXl_p.js} +1 -1
  65. package/dist/ui/assets/diagram-PSM6KHXK-CWKBXl_p.js.gz +0 -0
  66. package/dist/ui/assets/{diagram-QEK2KX5R-ZHJjFEuS.js → diagram-QEK2KX5R-DNN2rVz0.js} +1 -1
  67. package/dist/ui/assets/diagram-QEK2KX5R-DNN2rVz0.js.gz +0 -0
  68. package/dist/ui/assets/{diagram-S2PKOQOG-BCTDu72M.js → diagram-S2PKOQOG-DpUxeqqm.js} +1 -1
  69. package/dist/ui/assets/diagram-S2PKOQOG-DpUxeqqm.js.gz +0 -0
  70. package/dist/ui/assets/{erDiagram-Q2GNP2WA-CY-kvCgZ.js → erDiagram-Q2GNP2WA-DrD-05U3.js} +1 -1
  71. package/dist/ui/assets/erDiagram-Q2GNP2WA-DrD-05U3.js.gz +0 -0
  72. package/dist/ui/assets/{flowDiagram-NV44I4VS-DkqVD1sm.js → flowDiagram-NV44I4VS-dxQvrUS5.js} +1 -1
  73. package/dist/ui/assets/flowDiagram-NV44I4VS-dxQvrUS5.js.gz +0 -0
  74. package/dist/ui/assets/{ganttDiagram-LVOFAZNH-B0E8leMt.js → ganttDiagram-LVOFAZNH-DCIoecwf.js} +1 -1
  75. package/dist/ui/assets/ganttDiagram-LVOFAZNH-DCIoecwf.js.gz +0 -0
  76. package/dist/ui/assets/{gitGraphDiagram-NY62KEGX-D88zVDqI.js → gitGraphDiagram-NY62KEGX-CzEsidgy.js} +1 -1
  77. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-CzEsidgy.js.gz +0 -0
  78. package/dist/ui/assets/{graph-C4G85eln.js → graph-TZwFVAsh.js} +1 -1
  79. package/dist/ui/assets/graph-TZwFVAsh.js.gz +0 -0
  80. package/dist/ui/assets/{index-CEd4eDTr.js → index-K-Kg078G.js} +201 -208
  81. package/dist/ui/assets/index-K-Kg078G.js.gz +0 -0
  82. package/dist/ui/assets/{infoDiagram-ER5ION4S-Dc_jcdn4.js → infoDiagram-ER5ION4S-CZVR-m1e.js} +1 -1
  83. package/dist/ui/assets/{journeyDiagram-XKPGCS4Q-7p82w5W2.js → journeyDiagram-XKPGCS4Q-B5mRccbw.js} +1 -1
  84. package/dist/ui/assets/journeyDiagram-XKPGCS4Q-B5mRccbw.js.gz +0 -0
  85. package/dist/ui/assets/{kanban-definition-3W4ZIXB7-Tk7V6AIx.js → kanban-definition-3W4ZIXB7-BYA_-N9n.js} +1 -1
  86. package/dist/ui/assets/kanban-definition-3W4ZIXB7-BYA_-N9n.js.gz +0 -0
  87. package/dist/ui/assets/{layout-DzLX8zFz.js → layout-BBQ7iLI_.js} +1 -1
  88. package/dist/ui/assets/layout-BBQ7iLI_.js.gz +0 -0
  89. package/dist/ui/assets/{linear-GuZIJNBg.js → linear-Cn4ZTn-s.js} +1 -1
  90. package/dist/ui/assets/linear-Cn4ZTn-s.js.gz +0 -0
  91. package/dist/ui/assets/{mermaid.core-ONFmclFP.js → mermaid.core-8-gUU2qT.js} +5 -5
  92. package/dist/ui/assets/mermaid.core-8-gUU2qT.js.gz +0 -0
  93. package/dist/ui/assets/{mindmap-definition-VGOIOE7T-Cq9_WtXJ.js → mindmap-definition-VGOIOE7T-BvPkTn7S.js} +1 -1
  94. package/dist/ui/assets/mindmap-definition-VGOIOE7T-BvPkTn7S.js.gz +0 -0
  95. package/dist/ui/assets/{pieDiagram-ADFJNKIX-X1IxKnh8.js → pieDiagram-ADFJNKIX-DdNLX2hP.js} +1 -1
  96. package/dist/ui/assets/pieDiagram-ADFJNKIX-DdNLX2hP.js.gz +0 -0
  97. package/dist/ui/assets/{quadrantDiagram-AYHSOK5B-BfnyD5OD.js → quadrantDiagram-AYHSOK5B-DfsIcRsx.js} +1 -1
  98. package/dist/ui/assets/quadrantDiagram-AYHSOK5B-DfsIcRsx.js.gz +0 -0
  99. package/dist/ui/assets/{requirementDiagram-UZGBJVZJ-DV9jFd-5.js → requirementDiagram-UZGBJVZJ-DRhEImlm.js} +1 -1
  100. package/dist/ui/assets/requirementDiagram-UZGBJVZJ-DRhEImlm.js.gz +0 -0
  101. package/dist/ui/assets/{sankeyDiagram-TZEHDZUN-C79HXGjK.js → sankeyDiagram-TZEHDZUN-BgzqHjaR.js} +1 -1
  102. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-BgzqHjaR.js.gz +0 -0
  103. package/dist/ui/assets/{sequenceDiagram-WL72ISMW-CJvkyNv_.js → sequenceDiagram-WL72ISMW-BICxMuQn.js} +1 -1
  104. package/dist/ui/assets/sequenceDiagram-WL72ISMW-BICxMuQn.js.gz +0 -0
  105. package/dist/ui/assets/{stateDiagram-FKZM4ZOC-BXVYlAXZ.js → stateDiagram-FKZM4ZOC-CfdIVyGi.js} +1 -1
  106. package/dist/ui/assets/stateDiagram-FKZM4ZOC-CfdIVyGi.js.gz +0 -0
  107. package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-BlieNYq_.js +1 -0
  108. package/dist/ui/assets/{timeline-definition-IT6M3QCI-CkIekLbL.js → timeline-definition-IT6M3QCI-D1H29Rej.js} +1 -1
  109. package/dist/ui/assets/timeline-definition-IT6M3QCI-D1H29Rej.js.gz +0 -0
  110. package/dist/ui/assets/{treemap-KMMF4GRG-DS1hOhoS.js → treemap-KMMF4GRG-DRwV36yK.js} +1 -1
  111. package/dist/ui/assets/treemap-KMMF4GRG-DRwV36yK.js.gz +0 -0
  112. package/dist/ui/assets/{xychartDiagram-PRI3JC2R-CcJuobB0.js → xychartDiagram-PRI3JC2R-BaOyO6Rg.js} +1 -1
  113. package/dist/ui/assets/xychartDiagram-PRI3JC2R-BaOyO6Rg.js.gz +0 -0
  114. package/dist/ui/index.html +1 -1
  115. package/package.json +1 -1
  116. package/dist/ui/assets/_basePickBy-1oVZw6zW.js.gz +0 -0
  117. package/dist/ui/assets/_baseUniq-D67yQP4w.js.gz +0 -0
  118. package/dist/ui/assets/arc-B8GWz0RB.js.gz +0 -0
  119. package/dist/ui/assets/architectureDiagram-VXUJARFQ-BgXeKqF3.js.gz +0 -0
  120. package/dist/ui/assets/blockDiagram-VD42YOAC-Br4wv6oE.js.gz +0 -0
  121. package/dist/ui/assets/c4Diagram-YG6GDRKO-DoacZ-bP.js.gz +0 -0
  122. package/dist/ui/assets/channel-Dvjnx5-0.js +0 -1
  123. package/dist/ui/assets/chunk-B4BG7PRW-BT-McvBZ.js.gz +0 -0
  124. package/dist/ui/assets/chunk-DI55MBZ5-C3RhUPYz.js.gz +0 -0
  125. package/dist/ui/assets/chunk-TZMSLE5B-BPOasa48.js.gz +0 -0
  126. package/dist/ui/assets/classDiagram-2ON5EDUG-tkMozqw-.js +0 -1
  127. package/dist/ui/assets/classDiagram-v2-WZHVMYZB-tkMozqw-.js +0 -1
  128. package/dist/ui/assets/clone-DkPf4KQ_.js +0 -1
  129. package/dist/ui/assets/cose-bilkent-S5V4N54A-C1U8rZC3.js.gz +0 -0
  130. package/dist/ui/assets/dagre-6UL2VRFP-CD4UN-xQ.js.gz +0 -0
  131. package/dist/ui/assets/diagram-PSM6KHXK-BEaYi66Q.js.gz +0 -0
  132. package/dist/ui/assets/diagram-QEK2KX5R-ZHJjFEuS.js.gz +0 -0
  133. package/dist/ui/assets/diagram-S2PKOQOG-BCTDu72M.js.gz +0 -0
  134. package/dist/ui/assets/erDiagram-Q2GNP2WA-CY-kvCgZ.js.gz +0 -0
  135. package/dist/ui/assets/flowDiagram-NV44I4VS-DkqVD1sm.js.gz +0 -0
  136. package/dist/ui/assets/ganttDiagram-LVOFAZNH-B0E8leMt.js.gz +0 -0
  137. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-D88zVDqI.js.gz +0 -0
  138. package/dist/ui/assets/graph-C4G85eln.js.gz +0 -0
  139. package/dist/ui/assets/index-CEd4eDTr.js.gz +0 -0
  140. package/dist/ui/assets/journeyDiagram-XKPGCS4Q-7p82w5W2.js.gz +0 -0
  141. package/dist/ui/assets/kanban-definition-3W4ZIXB7-Tk7V6AIx.js.gz +0 -0
  142. package/dist/ui/assets/layout-DzLX8zFz.js.gz +0 -0
  143. package/dist/ui/assets/linear-GuZIJNBg.js.gz +0 -0
  144. package/dist/ui/assets/mermaid.core-ONFmclFP.js.gz +0 -0
  145. package/dist/ui/assets/mindmap-definition-VGOIOE7T-Cq9_WtXJ.js.gz +0 -0
  146. package/dist/ui/assets/pieDiagram-ADFJNKIX-X1IxKnh8.js.gz +0 -0
  147. package/dist/ui/assets/quadrantDiagram-AYHSOK5B-BfnyD5OD.js.gz +0 -0
  148. package/dist/ui/assets/requirementDiagram-UZGBJVZJ-DV9jFd-5.js.gz +0 -0
  149. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-C79HXGjK.js.gz +0 -0
  150. package/dist/ui/assets/sequenceDiagram-WL72ISMW-CJvkyNv_.js.gz +0 -0
  151. package/dist/ui/assets/stateDiagram-FKZM4ZOC-BXVYlAXZ.js.gz +0 -0
  152. package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-D3mtkgua.js +0 -1
  153. package/dist/ui/assets/timeline-definition-IT6M3QCI-CkIekLbL.js.gz +0 -0
  154. package/dist/ui/assets/treemap-KMMF4GRG-DS1hOhoS.js.gz +0 -0
  155. package/dist/ui/assets/xychartDiagram-PRI3JC2R-CcJuobB0.js.gz +0 -0
@@ -1,5 +1,5 @@
1
1
  import { e as Message } from '../message-2XWJyHm9.cjs';
2
- import { e as Board } from '../board-DV5ph4MH.cjs';
2
+ import { e as Board } from '../board-U6lVA7h2.cjs';
3
3
  import { a as ContextFileListItem, b as ContextFileDetail } from '../context-ByxGjp5l.cjs';
4
4
  import { b as AuthenticationResult } from '../feathers-BzHEPnpl.cjs';
5
5
  import { h as MCPServer } from '../mcp-DpJnAKie.cjs';
@@ -1,5 +1,5 @@
1
1
  import { e as Message } from '../message-CvkDJT8d.js';
2
- import { e as Board } from '../board-BG4dLPPR.js';
2
+ import { e as Board } from '../board-slTuqYl5.js';
3
3
  import { a as ContextFileListItem, b as ContextFileDetail } from '../context-ByxGjp5l.js';
4
4
  import { b as AuthenticationResult } from '../feathers-BzHEPnpl.js';
5
5
  import { h as MCPServer } from '../mcp-BJoCdfzv.js';
@@ -68,6 +68,11 @@ interface ZoneBoardObject {
68
68
  width: number;
69
69
  height: number;
70
70
  label: string;
71
+ /** Border color (supports alpha) - falls back to `color` for backwards compatibility */
72
+ borderColor?: string;
73
+ /** Background color (supports alpha) - falls back to derived from `color` for backwards compatibility */
74
+ backgroundColor?: string;
75
+ /** @deprecated Use borderColor instead. Kept for backwards compatibility */
71
76
  color?: string;
72
77
  status?: string;
73
78
  /** Lock zone to prevent dragging/resizing */
@@ -68,6 +68,11 @@ interface ZoneBoardObject {
68
68
  width: number;
69
69
  height: number;
70
70
  label: string;
71
+ /** Border color (supports alpha) - falls back to `color` for backwards compatibility */
72
+ borderColor?: string;
73
+ /** Background color (supports alpha) - falls back to derived from `color` for backwards compatibility */
74
+ backgroundColor?: string;
75
+ /** @deprecated Use borderColor instead. Kept for backwards compatibility */
71
76
  color?: string;
72
77
  status?: string;
73
78
  /** Lock zone to prevent dragging/resizing */
@@ -1,7 +1,7 @@
1
1
  import { LibSQLDatabase } from 'drizzle-orm/libsql';
2
2
  import { e as Message } from './message-2XWJyHm9.cjs';
3
3
  import { c as CodexSandboxMode, d as CodexApprovalPolicy } from './agentic-tool-Beqe459E.cjs';
4
- import { d as BoardObject } from './board-DV5ph4MH.cjs';
4
+ import { d as BoardObject } from './board-U6lVA7h2.cjs';
5
5
  import { a as Session, P as PermissionMode } from './session-BvKYnyu1.cjs';
6
6
  import { c as Task } from './task-D3MLENFX.cjs';
7
7
  import * as drizzle_orm_sqlite_core from 'drizzle-orm/sqlite-core';
@@ -1,7 +1,7 @@
1
1
  import { LibSQLDatabase } from 'drizzle-orm/libsql';
2
2
  import { e as Message } from './message-CvkDJT8d.js';
3
3
  import { c as CodexSandboxMode, d as CodexApprovalPolicy } from './agentic-tool-DQc61m9k.js';
4
- import { d as BoardObject } from './board-BG4dLPPR.js';
4
+ import { d as BoardObject } from './board-slTuqYl5.js';
5
5
  import { a as Session, P as PermissionMode } from './session-BKy_YLbt.js';
6
6
  import { c as Task } from './task-P83UMXcT.js';
7
7
  import * as drizzle_orm_sqlite_core from 'drizzle-orm/sqlite-core';
@@ -1,12 +1,12 @@
1
1
  import { AgorConfig } from './browser.cjs';
2
2
  export { AgorCredentials, AgorDaemonSettings, AgorDefaults, AgorDisplaySettings, AgorOpenCodeSettings, AgorUISettings, ConfigKey, CredentialKey, DAEMON, DATABASE, ENVIRONMENT, GIT, RepoReference, RepoReferenceOption, SESSION, UnknownJson, WEBSOCKET, extractSlugFromUrl, formatRepoReference, getDefaultRepoReference, getGroupedRepoReferenceOptions, getRepoReferenceOptions, isValidGitUrl, isValidSlug, parseRepoReference, resolveRepoReference } from './browser.cjs';
3
- import { d as Database } from '../client-D3prsJYh.cjs';
3
+ import { d as Database } from '../client-BitSyI31.cjs';
4
4
  import { b as UserID } from '../id-DMqyogFB.cjs';
5
5
  import '../repo-D4EXWOuB.cjs';
6
6
  import 'drizzle-orm/libsql';
7
7
  import '../message-2XWJyHm9.cjs';
8
8
  import '../agentic-tool-Beqe459E.cjs';
9
- import '../board-DV5ph4MH.cjs';
9
+ import '../board-U6lVA7h2.cjs';
10
10
  import '../session-BvKYnyu1.cjs';
11
11
  import '../context-ByxGjp5l.cjs';
12
12
  import '../task-D3MLENFX.cjs';
@@ -1,12 +1,12 @@
1
1
  import { AgorConfig } from './browser.js';
2
2
  export { AgorCredentials, AgorDaemonSettings, AgorDefaults, AgorDisplaySettings, AgorOpenCodeSettings, AgorUISettings, ConfigKey, CredentialKey, DAEMON, DATABASE, ENVIRONMENT, GIT, RepoReference, RepoReferenceOption, SESSION, UnknownJson, WEBSOCKET, extractSlugFromUrl, formatRepoReference, getDefaultRepoReference, getGroupedRepoReferenceOptions, getRepoReferenceOptions, isValidGitUrl, isValidSlug, parseRepoReference, resolveRepoReference } from './browser.js';
3
- import { d as Database } from '../client-XOAVBUuQ.js';
3
+ import { d as Database } from '../client-RCxWXp9Z.js';
4
4
  import { b as UserID } from '../id-DMqyogFB.js';
5
5
  import '../repo-B1M9axPS.js';
6
6
  import 'drizzle-orm/libsql';
7
7
  import '../message-CvkDJT8d.js';
8
8
  import '../agentic-tool-DQc61m9k.js';
9
- import '../board-BG4dLPPR.js';
9
+ import '../board-slTuqYl5.js';
10
10
  import '../session-BKy_YLbt.js';
11
11
  import '../context-ByxGjp5l.js';
12
12
  import '../task-P83UMXcT.js';
@@ -1,12 +1,12 @@
1
1
  export { SQL, and, asc, desc, eq, inArray, like, or, sql } from 'drizzle-orm';
2
2
  import bcryptjs from 'bcryptjs';
3
- import { d as Database } from '../client-D3prsJYh.cjs';
4
- export { H as BoardCommentInsert, G as BoardCommentRow, p as BoardInsert, F as BoardObjectInsert, E as BoardObjectRow, B as BoardRow, e as DEFAULT_DB_PATH, a as DatabaseConnectionError, D as DbConfig, z as MCPServerInsert, y as MCPServerRow, o as MessageInsert, M as MessageRow, q as RepoInsert, R as RepoRow, l as SessionInsert, C as SessionMCPServerInsert, A as SessionMCPServerRow, S as SessionRow, n as TaskInsert, T as TaskRow, x as UserInsert, U as UserRow, v as WorktreeInsert, W as WorktreeRow, k as boardComments, i as boardObjects, g as boards, c as createDatabase, b as createDatabaseAsync, f as createLocalDatabase, h as mcpServers, m as messages, r as repos, j as sessionMcpServers, s as sessions, t as tasks, u as users, w as worktrees } from '../client-D3prsJYh.cjs';
5
- import { B as BaseRepository, c as SessionRepository } from '../worktrees-Bq1te_We.cjs';
6
- export { A as AmbiguousIdError, E as EntityNotFoundError, M as MCPServerRepository, a as MessagesRepository, b as RepoRepository, R as RepositoryError, S as SessionMCPServerRepository, W as WorktreeRepository } from '../worktrees-Bq1te_We.cjs';
3
+ import { d as Database } from '../client-BitSyI31.cjs';
4
+ export { H as BoardCommentInsert, G as BoardCommentRow, p as BoardInsert, F as BoardObjectInsert, E as BoardObjectRow, B as BoardRow, e as DEFAULT_DB_PATH, a as DatabaseConnectionError, D as DbConfig, z as MCPServerInsert, y as MCPServerRow, o as MessageInsert, M as MessageRow, q as RepoInsert, R as RepoRow, l as SessionInsert, C as SessionMCPServerInsert, A as SessionMCPServerRow, S as SessionRow, n as TaskInsert, T as TaskRow, x as UserInsert, U as UserRow, v as WorktreeInsert, W as WorktreeRow, k as boardComments, i as boardObjects, g as boards, c as createDatabase, b as createDatabaseAsync, f as createLocalDatabase, h as mcpServers, m as messages, r as repos, j as sessionMcpServers, s as sessions, t as tasks, u as users, w as worktrees } from '../client-BitSyI31.cjs';
5
+ import { B as BaseRepository, c as SessionRepository } from '../worktrees-DRL7PV6j.cjs';
6
+ export { A as AmbiguousIdError, E as EntityNotFoundError, M as MCPServerRepository, a as MessagesRepository, b as RepoRepository, R as RepositoryError, S as SessionMCPServerRepository, W as WorktreeRepository } from '../worktrees-DRL7PV6j.cjs';
7
7
  import { B as BoardComment } from '../board-comment-CaUiaZB5.cjs';
8
8
  import { B as BoardID, W as WorktreeID, a as SessionID } from '../id-DMqyogFB.cjs';
9
- import { a as BoardEntityObject, e as Board, d as BoardObject } from '../board-DV5ph4MH.cjs';
9
+ import { a as BoardEntityObject, e as Board, d as BoardObject } from '../board-U6lVA7h2.cjs';
10
10
  import { c as Task } from '../task-D3MLENFX.cjs';
11
11
  import { d as User } from '../user-rPwVqPEv.cjs';
12
12
  import 'drizzle-orm/libsql';
@@ -1,12 +1,12 @@
1
1
  export { SQL, and, asc, desc, eq, inArray, like, or, sql } from 'drizzle-orm';
2
2
  import bcryptjs from 'bcryptjs';
3
- import { d as Database } from '../client-XOAVBUuQ.js';
4
- export { H as BoardCommentInsert, G as BoardCommentRow, p as BoardInsert, F as BoardObjectInsert, E as BoardObjectRow, B as BoardRow, e as DEFAULT_DB_PATH, a as DatabaseConnectionError, D as DbConfig, z as MCPServerInsert, y as MCPServerRow, o as MessageInsert, M as MessageRow, q as RepoInsert, R as RepoRow, l as SessionInsert, C as SessionMCPServerInsert, A as SessionMCPServerRow, S as SessionRow, n as TaskInsert, T as TaskRow, x as UserInsert, U as UserRow, v as WorktreeInsert, W as WorktreeRow, k as boardComments, i as boardObjects, g as boards, c as createDatabase, b as createDatabaseAsync, f as createLocalDatabase, h as mcpServers, m as messages, r as repos, j as sessionMcpServers, s as sessions, t as tasks, u as users, w as worktrees } from '../client-XOAVBUuQ.js';
5
- import { B as BaseRepository, c as SessionRepository } from '../worktrees-DffEZMyv.js';
6
- export { A as AmbiguousIdError, E as EntityNotFoundError, M as MCPServerRepository, a as MessagesRepository, b as RepoRepository, R as RepositoryError, S as SessionMCPServerRepository, W as WorktreeRepository } from '../worktrees-DffEZMyv.js';
3
+ import { d as Database } from '../client-RCxWXp9Z.js';
4
+ export { H as BoardCommentInsert, G as BoardCommentRow, p as BoardInsert, F as BoardObjectInsert, E as BoardObjectRow, B as BoardRow, e as DEFAULT_DB_PATH, a as DatabaseConnectionError, D as DbConfig, z as MCPServerInsert, y as MCPServerRow, o as MessageInsert, M as MessageRow, q as RepoInsert, R as RepoRow, l as SessionInsert, C as SessionMCPServerInsert, A as SessionMCPServerRow, S as SessionRow, n as TaskInsert, T as TaskRow, x as UserInsert, U as UserRow, v as WorktreeInsert, W as WorktreeRow, k as boardComments, i as boardObjects, g as boards, c as createDatabase, b as createDatabaseAsync, f as createLocalDatabase, h as mcpServers, m as messages, r as repos, j as sessionMcpServers, s as sessions, t as tasks, u as users, w as worktrees } from '../client-RCxWXp9Z.js';
5
+ import { B as BaseRepository, c as SessionRepository } from '../worktrees-BLxDBeu5.js';
6
+ export { A as AmbiguousIdError, E as EntityNotFoundError, M as MCPServerRepository, a as MessagesRepository, b as RepoRepository, R as RepositoryError, S as SessionMCPServerRepository, W as WorktreeRepository } from '../worktrees-BLxDBeu5.js';
7
7
  import { B as BoardComment } from '../board-comment-BCrDUioT.js';
8
8
  import { B as BoardID, W as WorktreeID, a as SessionID } from '../id-DMqyogFB.js';
9
- import { a as BoardEntityObject, e as Board, d as BoardObject } from '../board-BG4dLPPR.js';
9
+ import { a as BoardEntityObject, e as Board, d as BoardObject } from '../board-slTuqYl5.js';
10
10
  import { c as Task } from '../task-P83UMXcT.js';
11
11
  import { d as User } from '../user-tNPw17ie.js';
12
12
  import 'drizzle-orm/libsql';
@@ -63,16 +63,32 @@ function getGitBinary() {
63
63
  }
64
64
  return void 0;
65
65
  }
66
- function createGit(baseDir) {
66
+ function createGit(baseDir, env) {
67
67
  const gitBinary = getGitBinary();
68
68
  const config = [
69
69
  "core.sshCommand=ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
70
70
  ];
71
- return (0, import_simple_git.simpleGit)({
71
+ if (env?.GITHUB_TOKEN) {
72
+ const token = env.GITHUB_TOKEN;
73
+ const credentialHelper = `!f() { echo "username=x-access-token"; echo "password=${token}"; }; f`;
74
+ config.push(`credential.helper=${credentialHelper}`);
75
+ } else if (env?.GH_TOKEN) {
76
+ const token = env.GH_TOKEN;
77
+ const credentialHelper = `!f() { echo "username=x-access-token"; echo "password=${token}"; }; f`;
78
+ config.push(`credential.helper=${credentialHelper}`);
79
+ }
80
+ const git = (0, import_simple_git.simpleGit)({
72
81
  baseDir,
73
82
  binary: gitBinary,
74
- config
83
+ config,
84
+ spawnOptions: env ? {
85
+ // Merge user env vars with process.env (user vars take precedence)
86
+ // This allows per-user GitHub PATs, SSH keys, etc. to work with git operations
87
+ env: { ...process.env, ...env }
88
+ // biome-ignore lint/suspicious/noExplicitAny: simple-git types don't expose env in spawnOptions but it works at runtime
89
+ } : void 0
75
90
  });
91
+ return git;
76
92
  }
77
93
  function getReposDir() {
78
94
  return (0, import_node_path.join)((0, import_node_os.homedir)(), ".agor", "repos");
@@ -107,7 +123,7 @@ Please delete this directory manually and try again.`
107
123
  );
108
124
  }
109
125
  }
110
- const git = createGit();
126
+ const git = createGit(void 0, options.env);
111
127
  if (options.onProgress) {
112
128
  git.outputHandler((_command, _stdout, _stderr) => {
113
129
  });
@@ -174,8 +190,8 @@ function getWorktreesDir() {
174
190
  function getWorktreePath(repoSlug, worktreeName) {
175
191
  return (0, import_node_path.join)(getWorktreesDir(), repoSlug, worktreeName);
176
192
  }
177
- async function createWorktree(repoPath, worktreePath, ref, createBranch = false, pullLatest = true, sourceBranch) {
178
- const git = createGit(repoPath);
193
+ async function createWorktree(repoPath, worktreePath, ref, createBranch = false, pullLatest = true, sourceBranch, env) {
194
+ const git = createGit(repoPath, env);
179
195
  let fetchSucceeded = false;
180
196
  if (pullLatest) {
181
197
  try {
@@ -4,6 +4,27 @@ export { simpleGit } from 'simple-git';
4
4
  * Git Utils for Agor
5
5
  *
6
6
  * Provides Git operations for repo management and worktree isolation
7
+ *
8
+ * ## Authentication Strategy
9
+ *
10
+ * Git operations (clone, fetch, etc.) require authentication for private repositories.
11
+ * This module supports multiple authentication methods:
12
+ *
13
+ * 1. **SSH Keys** - Traditional SSH key-based auth (works automatically if keys are mounted)
14
+ * 2. **User Environment Variables** - Per-user GITHUB_TOKEN or GH_TOKEN from Agor user settings
15
+ * 3. **System Credential Helpers** - Existing git credential helpers (e.g., gh auth, git-credential-store)
16
+ *
17
+ * ### How User Environment Variables Work
18
+ *
19
+ * When a user configures GITHUB_TOKEN in their Agor user settings:
20
+ * 1. The token is encrypted and stored in the database
21
+ * 2. During git operations, we decrypt and pass it via the `env` parameter
22
+ * 3. We configure a **Git credential helper** (via `-c credential.helper=...`) that provides the token
23
+ * 4. When Git needs credentials for HTTPS operations, it calls our helper function
24
+ * 5. The helper outputs `username=x-access-token\npassword=TOKEN` in the format Git expects
25
+ *
26
+ * This approach mirrors how `gh auth` works - it's clean, secure, and doesn't pollute URLs with tokens.
27
+ * The credential helper is **ephemeral** and **scoped to the specific git command**, not system-wide.
7
28
  */
8
29
 
9
30
  interface CloneOptions {
@@ -11,6 +32,7 @@ interface CloneOptions {
11
32
  targetDir?: string;
12
33
  bare?: boolean;
13
34
  onProgress?: (progress: CloneProgress) => void;
35
+ env?: Record<string, string>;
14
36
  }
15
37
  interface CloneProgress {
16
38
  method: string;
@@ -101,9 +123,10 @@ interface WorktreeInfo {
101
123
  * @param createBranch - Whether to create a new branch
102
124
  * @param pullLatest - Whether to fetch from remote before creating worktree (defaults to true)
103
125
  * @param sourceBranch - Source branch to base new branch on (used with createBranch)
126
+ * @param env - Optional user environment variables (e.g., for private repo access)
104
127
  */
105
128
  declare function createWorktree(repoPath: string, worktreePath: string, ref: string, createBranch?: boolean, pullLatest?: boolean, // Changed default to true - always fetch latest!
106
- sourceBranch?: string): Promise<void>;
129
+ sourceBranch?: string, env?: Record<string, string>): Promise<void>;
107
130
  /**
108
131
  * List all worktrees for a repository
109
132
  */
@@ -4,6 +4,27 @@ export { simpleGit } from 'simple-git';
4
4
  * Git Utils for Agor
5
5
  *
6
6
  * Provides Git operations for repo management and worktree isolation
7
+ *
8
+ * ## Authentication Strategy
9
+ *
10
+ * Git operations (clone, fetch, etc.) require authentication for private repositories.
11
+ * This module supports multiple authentication methods:
12
+ *
13
+ * 1. **SSH Keys** - Traditional SSH key-based auth (works automatically if keys are mounted)
14
+ * 2. **User Environment Variables** - Per-user GITHUB_TOKEN or GH_TOKEN from Agor user settings
15
+ * 3. **System Credential Helpers** - Existing git credential helpers (e.g., gh auth, git-credential-store)
16
+ *
17
+ * ### How User Environment Variables Work
18
+ *
19
+ * When a user configures GITHUB_TOKEN in their Agor user settings:
20
+ * 1. The token is encrypted and stored in the database
21
+ * 2. During git operations, we decrypt and pass it via the `env` parameter
22
+ * 3. We configure a **Git credential helper** (via `-c credential.helper=...`) that provides the token
23
+ * 4. When Git needs credentials for HTTPS operations, it calls our helper function
24
+ * 5. The helper outputs `username=x-access-token\npassword=TOKEN` in the format Git expects
25
+ *
26
+ * This approach mirrors how `gh auth` works - it's clean, secure, and doesn't pollute URLs with tokens.
27
+ * The credential helper is **ephemeral** and **scoped to the specific git command**, not system-wide.
7
28
  */
8
29
 
9
30
  interface CloneOptions {
@@ -11,6 +32,7 @@ interface CloneOptions {
11
32
  targetDir?: string;
12
33
  bare?: boolean;
13
34
  onProgress?: (progress: CloneProgress) => void;
35
+ env?: Record<string, string>;
14
36
  }
15
37
  interface CloneProgress {
16
38
  method: string;
@@ -101,9 +123,10 @@ interface WorktreeInfo {
101
123
  * @param createBranch - Whether to create a new branch
102
124
  * @param pullLatest - Whether to fetch from remote before creating worktree (defaults to true)
103
125
  * @param sourceBranch - Source branch to base new branch on (used with createBranch)
126
+ * @param env - Optional user environment variables (e.g., for private repo access)
104
127
  */
105
128
  declare function createWorktree(repoPath: string, worktreePath: string, ref: string, createBranch?: boolean, pullLatest?: boolean, // Changed default to true - always fetch latest!
106
- sourceBranch?: string): Promise<void>;
129
+ sourceBranch?: string, env?: Record<string, string>): Promise<void>;
107
130
  /**
108
131
  * List all worktrees for a repository
109
132
  */
@@ -20,16 +20,32 @@ function getGitBinary() {
20
20
  }
21
21
  return void 0;
22
22
  }
23
- function createGit(baseDir) {
23
+ function createGit(baseDir, env) {
24
24
  const gitBinary = getGitBinary();
25
25
  const config = [
26
26
  "core.sshCommand=ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
27
27
  ];
28
- return simpleGit({
28
+ if (env?.GITHUB_TOKEN) {
29
+ const token = env.GITHUB_TOKEN;
30
+ const credentialHelper = `!f() { echo "username=x-access-token"; echo "password=${token}"; }; f`;
31
+ config.push(`credential.helper=${credentialHelper}`);
32
+ } else if (env?.GH_TOKEN) {
33
+ const token = env.GH_TOKEN;
34
+ const credentialHelper = `!f() { echo "username=x-access-token"; echo "password=${token}"; }; f`;
35
+ config.push(`credential.helper=${credentialHelper}`);
36
+ }
37
+ const git = simpleGit({
29
38
  baseDir,
30
39
  binary: gitBinary,
31
- config
40
+ config,
41
+ spawnOptions: env ? {
42
+ // Merge user env vars with process.env (user vars take precedence)
43
+ // This allows per-user GitHub PATs, SSH keys, etc. to work with git operations
44
+ env: { ...process.env, ...env }
45
+ // biome-ignore lint/suspicious/noExplicitAny: simple-git types don't expose env in spawnOptions but it works at runtime
46
+ } : void 0
32
47
  });
48
+ return git;
33
49
  }
34
50
  function getReposDir() {
35
51
  return join(homedir(), ".agor", "repos");
@@ -64,7 +80,7 @@ Please delete this directory manually and try again.`
64
80
  );
65
81
  }
66
82
  }
67
- const git = createGit();
83
+ const git = createGit(void 0, options.env);
68
84
  if (options.onProgress) {
69
85
  git.outputHandler((_command, _stdout, _stderr) => {
70
86
  });
@@ -131,8 +147,8 @@ function getWorktreesDir() {
131
147
  function getWorktreePath(repoSlug, worktreeName) {
132
148
  return join(getWorktreesDir(), repoSlug, worktreeName);
133
149
  }
134
- async function createWorktree(repoPath, worktreePath, ref, createBranch = false, pullLatest = true, sourceBranch) {
135
- const git = createGit(repoPath);
150
+ async function createWorktree(repoPath, worktreePath, ref, createBranch = false, pullLatest = true, sourceBranch, env) {
151
+ const git = createGit(repoPath, env);
136
152
  let fetchSucceeded = false;
137
153
  if (pullLatest) {
138
154
  try {
@@ -4680,16 +4680,32 @@ function getGitBinary() {
4680
4680
  }
4681
4681
  return void 0;
4682
4682
  }
4683
- function createGit(baseDir) {
4683
+ function createGit(baseDir, env) {
4684
4684
  const gitBinary = getGitBinary();
4685
4685
  const config = [
4686
4686
  "core.sshCommand=ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
4687
4687
  ];
4688
- return (0, import_simple_git.simpleGit)({
4688
+ if (env?.GITHUB_TOKEN) {
4689
+ const token = env.GITHUB_TOKEN;
4690
+ const credentialHelper = `!f() { echo "username=x-access-token"; echo "password=${token}"; }; f`;
4691
+ config.push(`credential.helper=${credentialHelper}`);
4692
+ } else if (env?.GH_TOKEN) {
4693
+ const token = env.GH_TOKEN;
4694
+ const credentialHelper = `!f() { echo "username=x-access-token"; echo "password=${token}"; }; f`;
4695
+ config.push(`credential.helper=${credentialHelper}`);
4696
+ }
4697
+ const git = (0, import_simple_git.simpleGit)({
4689
4698
  baseDir,
4690
4699
  binary: gitBinary,
4691
- config
4700
+ config,
4701
+ spawnOptions: env ? {
4702
+ // Merge user env vars with process.env (user vars take precedence)
4703
+ // This allows per-user GitHub PATs, SSH keys, etc. to work with git operations
4704
+ env: { ...process.env, ...env }
4705
+ // biome-ignore lint/suspicious/noExplicitAny: simple-git types don't expose env in spawnOptions but it works at runtime
4706
+ } : void 0
4692
4707
  });
4708
+ return git;
4693
4709
  }
4694
4710
  function getReposDir() {
4695
4711
  return (0, import_node_path4.join)((0, import_node_os3.homedir)(), ".agor", "repos");
@@ -4724,7 +4740,7 @@ Please delete this directory manually and try again.`
4724
4740
  );
4725
4741
  }
4726
4742
  }
4727
- const git = createGit();
4743
+ const git = createGit(void 0, options.env);
4728
4744
  if (options.onProgress) {
4729
4745
  git.outputHandler((_command, _stdout, _stderr) => {
4730
4746
  });
@@ -4791,8 +4807,8 @@ function getWorktreesDir() {
4791
4807
  function getWorktreePath(repoSlug, worktreeName) {
4792
4808
  return (0, import_node_path4.join)(getWorktreesDir(), repoSlug, worktreeName);
4793
4809
  }
4794
- async function createWorktree(repoPath, worktreePath, ref, createBranch = false, pullLatest = true, sourceBranch) {
4795
- const git = createGit(repoPath);
4810
+ async function createWorktree(repoPath, worktreePath, ref, createBranch = false, pullLatest = true, sourceBranch, env) {
4811
+ const git = createGit(repoPath, env);
4796
4812
  let fetchSucceeded = false;
4797
4813
  if (pullLatest) {
4798
4814
  try {
@@ -5,7 +5,7 @@ export { BoardCommentsRepository, BoardObjectRepository, BoardRepository, Create
5
5
  export { CloneOptions, CloneProgress, CloneResult, WorktreeInfo, cleanWorktree, cloneRepo, createWorktree, extractRepoName, getCurrentBranch, getCurrentSha, getDefaultBranch, getGitState, getRemoteBranches, getRemoteUrl, getReposDir, getWorktreePath, getWorktreesDir, hasRemoteBranch, isClean, isGitRepo, listWorktrees, pruneWorktrees, removeWorktree } from './git/index.cjs';
6
6
  export { PermissionDecision, PermissionRequest } from './permissions/index.cjs';
7
7
  export { b as AgenticTool, A as AgenticToolName, C as ClaudeCodePermissionMode, d as CodexApprovalPolicy, e as CodexNetworkAccess, a as CodexPermissionMode, c as CodexSandboxMode, G as GeminiPermissionMode, O as OpenCodePermissionMode } from './agentic-tool-Beqe459E.cjs';
8
- export { e as Board, a as BoardEntityObject, d as BoardObject, B as BoardObjectType, T as TextBoardObject, c as ZoneBoardObject, b as ZoneTrigger, Z as ZoneTriggerBehavior } from './board-DV5ph4MH.cjs';
8
+ export { e as Board, a as BoardEntityObject, d as BoardObject, B as BoardObjectType, T as TextBoardObject, c as ZoneBoardObject, b as ZoneTrigger, Z as ZoneTriggerBehavior } from './board-U6lVA7h2.cjs';
9
9
  export { B as BoardComment, b as BoardCommentCreate, c as BoardCommentPatch, a as CommentAttachmentType, C as CommentReaction, R as ReactionSummary, g as getCommentAttachmentType, f as groupReactions, d as isReply, e as isResolvable, i as isThreadRoot } from './board-comment-CaUiaZB5.cjs';
10
10
  export { b as ContextFileDetail, a as ContextFileListItem, C as ContextFilePath } from './context-ByxGjp5l.cjs';
11
11
  export { a as AuthenticatedParams, A as AuthenticatedUser, b as AuthenticationResult, B as BaseService, C as CreateHookContext, H as HookContext, Q as QueryParams, S as ServiceWithEvents } from './feathers-BzHEPnpl.cjs';
@@ -18,8 +18,8 @@ export { b as Report, R as ReportPath, a as ReportTemplate, c as Task, T as Task
18
18
  export { P as PermissionMode, b as ScheduledRunMetadata, a as Session, S as SessionStatus, g as getDefaultPermissionMode } from './session-BvKYnyu1.cjs';
19
19
  export { A as AudioPreferences, C as ChimeSound, e as CreateUserInput, b as DefaultAgenticConfig, a as DefaultAgenticToolConfig, D as DefaultModelConfig, f as UpdateUserInput, d as User, c as UserPreferences, U as UserRole } from './user-rPwVqPEv.cjs';
20
20
  export { SQL, and, asc, desc, eq, inArray, like, or, sql } from 'drizzle-orm';
21
- export { H as BoardCommentInsert, G as BoardCommentRow, p as BoardInsert, F as BoardObjectInsert, E as BoardObjectRow, B as BoardRow, e as DEFAULT_DB_PATH, d as Database, a as DatabaseConnectionError, D as DbConfig, z as MCPServerInsert, y as MCPServerRow, o as MessageInsert, M as MessageRow, q as RepoInsert, R as RepoRow, l as SessionInsert, C as SessionMCPServerInsert, A as SessionMCPServerRow, S as SessionRow, n as TaskInsert, T as TaskRow, x as UserInsert, U as UserRow, v as WorktreeInsert, W as WorktreeRow, k as boardComments, i as boardObjects, g as boards, c as createDatabase, b as createDatabaseAsync, f as createLocalDatabase, h as mcpServers, m as messages, r as repos, j as sessionMcpServers, s as sessions, t as tasks, u as users, w as worktrees } from './client-D3prsJYh.cjs';
22
- export { A as AmbiguousIdError, B as BaseRepository, E as EntityNotFoundError, M as MCPServerRepository, a as MessagesRepository, b as RepoRepository, R as RepositoryError, S as SessionMCPServerRepository, c as SessionRepository, W as WorktreeRepository } from './worktrees-Bq1te_We.cjs';
21
+ export { H as BoardCommentInsert, G as BoardCommentRow, p as BoardInsert, F as BoardObjectInsert, E as BoardObjectRow, B as BoardRow, e as DEFAULT_DB_PATH, d as Database, a as DatabaseConnectionError, D as DbConfig, z as MCPServerInsert, y as MCPServerRow, o as MessageInsert, M as MessageRow, q as RepoInsert, R as RepoRow, l as SessionInsert, C as SessionMCPServerInsert, A as SessionMCPServerRow, S as SessionRow, n as TaskInsert, T as TaskRow, x as UserInsert, U as UserRow, v as WorktreeInsert, W as WorktreeRow, k as boardComments, i as boardObjects, g as boards, c as createDatabase, b as createDatabaseAsync, f as createLocalDatabase, h as mcpServers, m as messages, r as repos, j as sessionMcpServers, s as sessions, t as tasks, u as users, w as worktrees } from './client-BitSyI31.cjs';
22
+ export { A as AmbiguousIdError, B as BaseRepository, E as EntityNotFoundError, M as MCPServerRepository, a as MessagesRepository, b as RepoRepository, R as RepositoryError, S as SessionMCPServerRepository, c as SessionRepository, W as WorktreeRepository } from './worktrees-DRL7PV6j.cjs';
23
23
  export { simpleGit } from 'simple-git';
24
24
  export { Id, NullableId, Paginated, Params, Service, ServiceMethods } from '@feathersjs/feathers';
25
25
  import 'socket.io-client';
@@ -5,7 +5,7 @@ export { BoardCommentsRepository, BoardObjectRepository, BoardRepository, Create
5
5
  export { CloneOptions, CloneProgress, CloneResult, WorktreeInfo, cleanWorktree, cloneRepo, createWorktree, extractRepoName, getCurrentBranch, getCurrentSha, getDefaultBranch, getGitState, getRemoteBranches, getRemoteUrl, getReposDir, getWorktreePath, getWorktreesDir, hasRemoteBranch, isClean, isGitRepo, listWorktrees, pruneWorktrees, removeWorktree } from './git/index.js';
6
6
  export { PermissionDecision, PermissionRequest } from './permissions/index.js';
7
7
  export { b as AgenticTool, A as AgenticToolName, C as ClaudeCodePermissionMode, d as CodexApprovalPolicy, e as CodexNetworkAccess, a as CodexPermissionMode, c as CodexSandboxMode, G as GeminiPermissionMode, O as OpenCodePermissionMode } from './agentic-tool-DQc61m9k.js';
8
- export { e as Board, a as BoardEntityObject, d as BoardObject, B as BoardObjectType, T as TextBoardObject, c as ZoneBoardObject, b as ZoneTrigger, Z as ZoneTriggerBehavior } from './board-BG4dLPPR.js';
8
+ export { e as Board, a as BoardEntityObject, d as BoardObject, B as BoardObjectType, T as TextBoardObject, c as ZoneBoardObject, b as ZoneTrigger, Z as ZoneTriggerBehavior } from './board-slTuqYl5.js';
9
9
  export { B as BoardComment, b as BoardCommentCreate, c as BoardCommentPatch, a as CommentAttachmentType, C as CommentReaction, R as ReactionSummary, g as getCommentAttachmentType, f as groupReactions, d as isReply, e as isResolvable, i as isThreadRoot } from './board-comment-BCrDUioT.js';
10
10
  export { b as ContextFileDetail, a as ContextFileListItem, C as ContextFilePath } from './context-ByxGjp5l.js';
11
11
  export { a as AuthenticatedParams, A as AuthenticatedUser, b as AuthenticationResult, B as BaseService, C as CreateHookContext, H as HookContext, Q as QueryParams, S as ServiceWithEvents } from './feathers-BzHEPnpl.js';
@@ -18,8 +18,8 @@ export { b as Report, R as ReportPath, a as ReportTemplate, c as Task, T as Task
18
18
  export { P as PermissionMode, b as ScheduledRunMetadata, a as Session, S as SessionStatus, g as getDefaultPermissionMode } from './session-BKy_YLbt.js';
19
19
  export { A as AudioPreferences, C as ChimeSound, e as CreateUserInput, b as DefaultAgenticConfig, a as DefaultAgenticToolConfig, D as DefaultModelConfig, f as UpdateUserInput, d as User, c as UserPreferences, U as UserRole } from './user-tNPw17ie.js';
20
20
  export { SQL, and, asc, desc, eq, inArray, like, or, sql } from 'drizzle-orm';
21
- export { H as BoardCommentInsert, G as BoardCommentRow, p as BoardInsert, F as BoardObjectInsert, E as BoardObjectRow, B as BoardRow, e as DEFAULT_DB_PATH, d as Database, a as DatabaseConnectionError, D as DbConfig, z as MCPServerInsert, y as MCPServerRow, o as MessageInsert, M as MessageRow, q as RepoInsert, R as RepoRow, l as SessionInsert, C as SessionMCPServerInsert, A as SessionMCPServerRow, S as SessionRow, n as TaskInsert, T as TaskRow, x as UserInsert, U as UserRow, v as WorktreeInsert, W as WorktreeRow, k as boardComments, i as boardObjects, g as boards, c as createDatabase, b as createDatabaseAsync, f as createLocalDatabase, h as mcpServers, m as messages, r as repos, j as sessionMcpServers, s as sessions, t as tasks, u as users, w as worktrees } from './client-XOAVBUuQ.js';
22
- export { A as AmbiguousIdError, B as BaseRepository, E as EntityNotFoundError, M as MCPServerRepository, a as MessagesRepository, b as RepoRepository, R as RepositoryError, S as SessionMCPServerRepository, c as SessionRepository, W as WorktreeRepository } from './worktrees-DffEZMyv.js';
21
+ export { H as BoardCommentInsert, G as BoardCommentRow, p as BoardInsert, F as BoardObjectInsert, E as BoardObjectRow, B as BoardRow, e as DEFAULT_DB_PATH, d as Database, a as DatabaseConnectionError, D as DbConfig, z as MCPServerInsert, y as MCPServerRow, o as MessageInsert, M as MessageRow, q as RepoInsert, R as RepoRow, l as SessionInsert, C as SessionMCPServerInsert, A as SessionMCPServerRow, S as SessionRow, n as TaskInsert, T as TaskRow, x as UserInsert, U as UserRow, v as WorktreeInsert, W as WorktreeRow, k as boardComments, i as boardObjects, g as boards, c as createDatabase, b as createDatabaseAsync, f as createLocalDatabase, h as mcpServers, m as messages, r as repos, j as sessionMcpServers, s as sessions, t as tasks, u as users, w as worktrees } from './client-RCxWXp9Z.js';
22
+ export { A as AmbiguousIdError, B as BaseRepository, E as EntityNotFoundError, M as MCPServerRepository, a as MessagesRepository, b as RepoRepository, R as RepositoryError, S as SessionMCPServerRepository, c as SessionRepository, W as WorktreeRepository } from './worktrees-BLxDBeu5.js';
23
23
  export { simpleGit } from 'simple-git';
24
24
  export { Id, NullableId, Paginated, Params, Service, ServiceMethods } from '@feathersjs/feathers';
25
25
  import 'socket.io-client';
@@ -4516,16 +4516,32 @@ function getGitBinary() {
4516
4516
  }
4517
4517
  return void 0;
4518
4518
  }
4519
- function createGit(baseDir) {
4519
+ function createGit(baseDir, env) {
4520
4520
  const gitBinary = getGitBinary();
4521
4521
  const config = [
4522
4522
  "core.sshCommand=ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
4523
4523
  ];
4524
- return simpleGit({
4524
+ if (env?.GITHUB_TOKEN) {
4525
+ const token = env.GITHUB_TOKEN;
4526
+ const credentialHelper = `!f() { echo "username=x-access-token"; echo "password=${token}"; }; f`;
4527
+ config.push(`credential.helper=${credentialHelper}`);
4528
+ } else if (env?.GH_TOKEN) {
4529
+ const token = env.GH_TOKEN;
4530
+ const credentialHelper = `!f() { echo "username=x-access-token"; echo "password=${token}"; }; f`;
4531
+ config.push(`credential.helper=${credentialHelper}`);
4532
+ }
4533
+ const git = simpleGit({
4525
4534
  baseDir,
4526
4535
  binary: gitBinary,
4527
- config
4536
+ config,
4537
+ spawnOptions: env ? {
4538
+ // Merge user env vars with process.env (user vars take precedence)
4539
+ // This allows per-user GitHub PATs, SSH keys, etc. to work with git operations
4540
+ env: { ...process.env, ...env }
4541
+ // biome-ignore lint/suspicious/noExplicitAny: simple-git types don't expose env in spawnOptions but it works at runtime
4542
+ } : void 0
4528
4543
  });
4544
+ return git;
4529
4545
  }
4530
4546
  function getReposDir() {
4531
4547
  return join3(homedir2(), ".agor", "repos");
@@ -4560,7 +4576,7 @@ Please delete this directory manually and try again.`
4560
4576
  );
4561
4577
  }
4562
4578
  }
4563
- const git = createGit();
4579
+ const git = createGit(void 0, options.env);
4564
4580
  if (options.onProgress) {
4565
4581
  git.outputHandler((_command, _stdout, _stderr) => {
4566
4582
  });
@@ -4627,8 +4643,8 @@ function getWorktreesDir() {
4627
4643
  function getWorktreePath(repoSlug, worktreeName) {
4628
4644
  return join3(getWorktreesDir(), repoSlug, worktreeName);
4629
4645
  }
4630
- async function createWorktree(repoPath, worktreePath, ref, createBranch = false, pullLatest = true, sourceBranch) {
4631
- const git = createGit(repoPath);
4646
+ async function createWorktree(repoPath, worktreePath, ref, createBranch = false, pullLatest = true, sourceBranch, env) {
4647
+ const git = createGit(repoPath, env);
4632
4648
  let fetchSucceeded = false;
4633
4649
  if (pullLatest) {
4634
4650
  try {
@@ -1455,16 +1455,32 @@ function getGitBinary() {
1455
1455
  }
1456
1456
  return void 0;
1457
1457
  }
1458
- function createGit(baseDir) {
1458
+ function createGit(baseDir, env) {
1459
1459
  const gitBinary = getGitBinary();
1460
1460
  const config = [
1461
1461
  "core.sshCommand=ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
1462
1462
  ];
1463
- return (0, import_simple_git.simpleGit)({
1463
+ if (env?.GITHUB_TOKEN) {
1464
+ const token = env.GITHUB_TOKEN;
1465
+ const credentialHelper = `!f() { echo "username=x-access-token"; echo "password=${token}"; }; f`;
1466
+ config.push(`credential.helper=${credentialHelper}`);
1467
+ } else if (env?.GH_TOKEN) {
1468
+ const token = env.GH_TOKEN;
1469
+ const credentialHelper = `!f() { echo "username=x-access-token"; echo "password=${token}"; }; f`;
1470
+ config.push(`credential.helper=${credentialHelper}`);
1471
+ }
1472
+ const git = (0, import_simple_git.simpleGit)({
1464
1473
  baseDir,
1465
1474
  binary: gitBinary,
1466
- config
1475
+ config,
1476
+ spawnOptions: env ? {
1477
+ // Merge user env vars with process.env (user vars take precedence)
1478
+ // This allows per-user GitHub PATs, SSH keys, etc. to work with git operations
1479
+ env: { ...process.env, ...env }
1480
+ // biome-ignore lint/suspicious/noExplicitAny: simple-git types don't expose env in spawnOptions but it works at runtime
1481
+ } : void 0
1467
1482
  });
1483
+ return git;
1468
1484
  }
1469
1485
  function getReposDir() {
1470
1486
  return (0, import_node_path2.join)((0, import_node_os2.homedir)(), ".agor", "repos");
@@ -1499,7 +1515,7 @@ Please delete this directory manually and try again.`
1499
1515
  );
1500
1516
  }
1501
1517
  }
1502
- const git = createGit();
1518
+ const git = createGit(void 0, options.env);
1503
1519
  if (options.onProgress) {
1504
1520
  git.outputHandler((_command, _stdout, _stderr) => {
1505
1521
  });
@@ -1428,16 +1428,32 @@ function getGitBinary() {
1428
1428
  }
1429
1429
  return void 0;
1430
1430
  }
1431
- function createGit(baseDir) {
1431
+ function createGit(baseDir, env) {
1432
1432
  const gitBinary = getGitBinary();
1433
1433
  const config = [
1434
1434
  "core.sshCommand=ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
1435
1435
  ];
1436
- return simpleGit({
1436
+ if (env?.GITHUB_TOKEN) {
1437
+ const token = env.GITHUB_TOKEN;
1438
+ const credentialHelper = `!f() { echo "username=x-access-token"; echo "password=${token}"; }; f`;
1439
+ config.push(`credential.helper=${credentialHelper}`);
1440
+ } else if (env?.GH_TOKEN) {
1441
+ const token = env.GH_TOKEN;
1442
+ const credentialHelper = `!f() { echo "username=x-access-token"; echo "password=${token}"; }; f`;
1443
+ config.push(`credential.helper=${credentialHelper}`);
1444
+ }
1445
+ const git = simpleGit({
1437
1446
  baseDir,
1438
1447
  binary: gitBinary,
1439
- config
1448
+ config,
1449
+ spawnOptions: env ? {
1450
+ // Merge user env vars with process.env (user vars take precedence)
1451
+ // This allows per-user GitHub PATs, SSH keys, etc. to work with git operations
1452
+ env: { ...process.env, ...env }
1453
+ // biome-ignore lint/suspicious/noExplicitAny: simple-git types don't expose env in spawnOptions but it works at runtime
1454
+ } : void 0
1440
1455
  });
1456
+ return git;
1441
1457
  }
1442
1458
  function getReposDir() {
1443
1459
  return join2(homedir2(), ".agor", "repos");
@@ -1472,7 +1488,7 @@ Please delete this directory manually and try again.`
1472
1488
  );
1473
1489
  }
1474
1490
  }
1475
- const git = createGit();
1491
+ const git = createGit(void 0, options.env);
1476
1492
  if (options.onProgress) {
1477
1493
  git.outputHandler((_command, _stdout, _stderr) => {
1478
1494
  });
@@ -2150,9 +2150,10 @@ async function setupQuery(sessionId, prompt, deps, options = {}) {
2150
2150
  }
2151
2151
  }
2152
2152
  if (resume) {
2153
- const parentSessionId = session.genealogy?.forked_from_session_id || session.genealogy?.parent_session_id;
2154
- if (parentSessionId && !session.sdk_session_id && deps.sessionsRepo) {
2155
- const parentSession = await deps.sessionsRepo.findById(parentSessionId);
2153
+ const forkedFromSessionId = session.genealogy?.forked_from_session_id;
2154
+ const parentSessionId = session.genealogy?.parent_session_id;
2155
+ if (forkedFromSessionId && !session.sdk_session_id && deps.sessionsRepo) {
2156
+ const parentSession = await deps.sessionsRepo.findById(forkedFromSessionId);
2156
2157
  if (parentSession?.sdk_session_id) {
2157
2158
  queryOptions.resume = parentSession.sdk_session_id;
2158
2159
  queryOptions.forkSession = true;
@@ -2162,9 +2163,14 @@ async function setupQuery(sessionId, prompt, deps, options = {}) {
2162
2163
  console.log(` SDK will return new session ID for this fork`);
2163
2164
  } else {
2164
2165
  console.warn(
2165
- `\u26A0\uFE0F Parent session ${parentSessionId.substring(0, 8)} has no sdk_session_id - starting fresh`
2166
+ `\u26A0\uFE0F Parent session ${forkedFromSessionId.substring(0, 8)} has no sdk_session_id - starting fresh`
2166
2167
  );
2167
2168
  }
2169
+ } else if (parentSessionId && !forkedFromSessionId && !session.sdk_session_id) {
2170
+ console.log(
2171
+ `\u{1F331} Spawning fresh session (parent: ${parentSessionId.substring(0, 8)}) - NOT forking SDK session`
2172
+ );
2173
+ console.log(` Child will start with clean context (spawns don't inherit parent history)`);
2168
2174
  } else if (session?.sdk_session_id) {
2169
2175
  const hoursSinceUpdate = session.last_updated ? (Date.now() - new Date(session.last_updated).getTime()) / (1e3 * 60 * 60) : 999;
2170
2176
  const isLikelyStale = hoursSinceUpdate > 24 || // Session older than 24 hours