agor-live 0.3.7

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 (297) hide show
  1. package/LICENSE +94 -0
  2. package/README.md +163 -0
  3. package/bin/agor-daemon.js +20 -0
  4. package/bin/agor.js +14 -0
  5. package/dist/cli/base-command.d.ts +29 -0
  6. package/dist/cli/base-command.js +41 -0
  7. package/dist/cli/commands/board/add-session.d.ts +15 -0
  8. package/dist/cli/commands/board/add-session.js +102 -0
  9. package/dist/cli/commands/board/list.d.ts +14 -0
  10. package/dist/cli/commands/board/list.js +74 -0
  11. package/dist/cli/commands/config/clear.d.ts +13 -0
  12. package/dist/cli/commands/config/clear.js +21 -0
  13. package/dist/cli/commands/config/get.d.ts +13 -0
  14. package/dist/cli/commands/config/get.js +41 -0
  15. package/dist/cli/commands/config/index.d.ts +13 -0
  16. package/dist/cli/commands/config/index.js +118 -0
  17. package/dist/cli/commands/config/set.d.ts +14 -0
  18. package/dist/cli/commands/config/set.js +50 -0
  19. package/dist/cli/commands/config/unset.d.ts +13 -0
  20. package/dist/cli/commands/config/unset.js +35 -0
  21. package/dist/cli/commands/daemon/index.d.ts +13 -0
  22. package/dist/cli/commands/daemon/index.js +65 -0
  23. package/dist/cli/commands/daemon/logs.d.ts +13 -0
  24. package/dist/cli/commands/daemon/logs.js +78 -0
  25. package/dist/cli/commands/daemon/restart.d.ts +13 -0
  26. package/dist/cli/commands/daemon/restart.js +177 -0
  27. package/dist/cli/commands/daemon/start.d.ts +13 -0
  28. package/dist/cli/commands/daemon/start.js +193 -0
  29. package/dist/cli/commands/daemon/status.d.ts +13 -0
  30. package/dist/cli/commands/daemon/status.js +93 -0
  31. package/dist/cli/commands/daemon/stop.d.ts +13 -0
  32. package/dist/cli/commands/daemon/stop.js +108 -0
  33. package/dist/cli/commands/init.d.ts +44 -0
  34. package/dist/cli/commands/init.js +459 -0
  35. package/dist/cli/commands/mcp/add.d.ts +26 -0
  36. package/dist/cli/commands/mcp/add.js +162 -0
  37. package/dist/cli/commands/mcp/list.d.ts +16 -0
  38. package/dist/cli/commands/mcp/list.js +89 -0
  39. package/dist/cli/commands/mcp/remove.d.ts +17 -0
  40. package/dist/cli/commands/mcp/remove.js +86 -0
  41. package/dist/cli/commands/mcp/show.d.ts +14 -0
  42. package/dist/cli/commands/mcp/show.js +131 -0
  43. package/dist/cli/commands/repo/add.d.ts +16 -0
  44. package/dist/cli/commands/repo/add.js +105 -0
  45. package/dist/cli/commands/repo/list.d.ts +17 -0
  46. package/dist/cli/commands/repo/list.js +99 -0
  47. package/dist/cli/commands/repo/rm.d.ts +17 -0
  48. package/dist/cli/commands/repo/rm.js +126 -0
  49. package/dist/cli/commands/repo/worktree/add.d.ts +21 -0
  50. package/dist/cli/commands/repo/worktree/add.js +145 -0
  51. package/dist/cli/commands/repo/worktree/list.d.ts +21 -0
  52. package/dist/cli/commands/repo/worktree/list.js +136 -0
  53. package/dist/cli/commands/session/list.d.ts +30 -0
  54. package/dist/cli/commands/session/list.js +204 -0
  55. package/dist/cli/commands/session/load-claude.d.ts +16 -0
  56. package/dist/cli/commands/session/load-claude.js +211 -0
  57. package/dist/cli/commands/user/create-admin.d.ts +13 -0
  58. package/dist/cli/commands/user/create-admin.js +65 -0
  59. package/dist/cli/commands/user/create.d.ts +16 -0
  60. package/dist/cli/commands/user/create.js +126 -0
  61. package/dist/cli/commands/user/delete.d.ts +16 -0
  62. package/dist/cli/commands/user/delete.js +77 -0
  63. package/dist/cli/commands/user/list.d.ts +13 -0
  64. package/dist/cli/commands/user/list.js +78 -0
  65. package/dist/cli/commands/user/update.d.ts +19 -0
  66. package/dist/cli/commands/user/update.js +149 -0
  67. package/dist/cli/hooks/command-not-found.d.ts +9 -0
  68. package/dist/cli/hooks/command-not-found.js +14 -0
  69. package/dist/cli/lib/banner.d.ts +25 -0
  70. package/dist/cli/lib/banner.js +25 -0
  71. package/dist/cli/lib/context.d.ts +27 -0
  72. package/dist/cli/lib/context.js +32 -0
  73. package/dist/cli/lib/daemon-manager.d.ts +48 -0
  74. package/dist/cli/lib/daemon-manager.js +109 -0
  75. package/dist/cli/lib/help.d.ts +13 -0
  76. package/dist/cli/lib/help.js +46 -0
  77. package/dist/core/agentic-tool-B_gFNpk5.d.ts +33 -0
  78. package/dist/core/agentic-tool-DsyX8diw.d.cts +33 -0
  79. package/dist/core/api/index.cjs +98 -0
  80. package/dist/core/api/index.d.cts +174 -0
  81. package/dist/core/api/index.d.ts +174 -0
  82. package/dist/core/api/index.js +62 -0
  83. package/dist/core/board-comment-BUm0fpmD.d.cts +134 -0
  84. package/dist/core/board-comment-gC_-twPx.d.ts +134 -0
  85. package/dist/core/claude/index.cjs +673 -0
  86. package/dist/core/claude/index.d.cts +124 -0
  87. package/dist/core/claude/index.d.ts +124 -0
  88. package/dist/core/claude/index.js +629 -0
  89. package/dist/core/config/browser.cjs +165 -0
  90. package/dist/core/config/browser.d.cts +289 -0
  91. package/dist/core/config/browser.d.ts +289 -0
  92. package/dist/core/config/browser.js +131 -0
  93. package/dist/core/config/index.cjs +518 -0
  94. package/dist/core/config/index.d.cts +246 -0
  95. package/dist/core/config/index.d.ts +246 -0
  96. package/dist/core/config/index.js +451 -0
  97. package/dist/core/db/index.cjs +3726 -0
  98. package/dist/core/db/index.d.cts +631 -0
  99. package/dist/core/db/index.d.ts +631 -0
  100. package/dist/core/db/index.js +3649 -0
  101. package/dist/core/dist/agentic-tool-B_gFNpk5.d.ts +33 -0
  102. package/dist/core/dist/agentic-tool-DsyX8diw.d.cts +33 -0
  103. package/dist/core/dist/api/index.cjs +98 -0
  104. package/dist/core/dist/api/index.d.cts +174 -0
  105. package/dist/core/dist/api/index.d.ts +174 -0
  106. package/dist/core/dist/api/index.js +62 -0
  107. package/dist/core/dist/board-comment-BUm0fpmD.d.cts +134 -0
  108. package/dist/core/dist/board-comment-gC_-twPx.d.ts +134 -0
  109. package/dist/core/dist/claude/index.cjs +673 -0
  110. package/dist/core/dist/claude/index.d.cts +124 -0
  111. package/dist/core/dist/claude/index.d.ts +124 -0
  112. package/dist/core/dist/claude/index.js +629 -0
  113. package/dist/core/dist/config/browser.cjs +165 -0
  114. package/dist/core/dist/config/browser.d.cts +289 -0
  115. package/dist/core/dist/config/browser.d.ts +289 -0
  116. package/dist/core/dist/config/browser.js +131 -0
  117. package/dist/core/dist/config/index.cjs +518 -0
  118. package/dist/core/dist/config/index.d.cts +246 -0
  119. package/dist/core/dist/config/index.d.ts +246 -0
  120. package/dist/core/dist/config/index.js +451 -0
  121. package/dist/core/dist/db/index.cjs +3726 -0
  122. package/dist/core/dist/db/index.d.cts +631 -0
  123. package/dist/core/dist/db/index.d.ts +631 -0
  124. package/dist/core/dist/db/index.js +3649 -0
  125. package/dist/core/dist/environment/variable-resolver.cjs +92 -0
  126. package/dist/core/dist/environment/variable-resolver.d.cts +52 -0
  127. package/dist/core/dist/environment/variable-resolver.d.ts +52 -0
  128. package/dist/core/dist/environment/variable-resolver.js +53 -0
  129. package/dist/core/dist/feathers/index.cjs +66 -0
  130. package/dist/core/dist/feathers/index.d.cts +7 -0
  131. package/dist/core/dist/feathers/index.d.ts +7 -0
  132. package/dist/core/dist/feathers/index.js +25 -0
  133. package/dist/core/dist/feathers-BzHEPnpl.d.cts +228 -0
  134. package/dist/core/dist/feathers-BzHEPnpl.d.ts +228 -0
  135. package/dist/core/dist/git/index.cjs +302 -0
  136. package/dist/core/dist/git/index.d.cts +137 -0
  137. package/dist/core/dist/git/index.d.ts +137 -0
  138. package/dist/core/dist/git/index.js +260 -0
  139. package/dist/core/dist/id-DMqyogFB.d.cts +131 -0
  140. package/dist/core/dist/id-DMqyogFB.d.ts +131 -0
  141. package/dist/core/dist/index.cjs +4653 -0
  142. package/dist/core/dist/index.d.cts +23 -0
  143. package/dist/core/dist/index.d.ts +23 -0
  144. package/dist/core/dist/index.js +4509 -0
  145. package/dist/core/dist/message-BoxZISHg.d.cts +120 -0
  146. package/dist/core/dist/message-DvBzHu7V.d.ts +120 -0
  147. package/dist/core/dist/permissions/index.cjs +112 -0
  148. package/dist/core/dist/permissions/index.d.cts +81 -0
  149. package/dist/core/dist/permissions/index.d.ts +81 -0
  150. package/dist/core/dist/permissions/index.js +85 -0
  151. package/dist/core/dist/repo-3CUrCRbq.d.cts +405 -0
  152. package/dist/core/dist/repo-CnvJ0B6-.d.ts +405 -0
  153. package/dist/core/dist/session-BPjJlVdZ.d.cts +429 -0
  154. package/dist/core/dist/session-wAzjHatv.d.ts +429 -0
  155. package/dist/core/dist/task-BIEgT1DK.d.cts +163 -0
  156. package/dist/core/dist/task-DuIfiUbW.d.ts +163 -0
  157. package/dist/core/dist/templates/handlebars-helpers.cjs +156 -0
  158. package/dist/core/dist/templates/handlebars-helpers.d.cts +45 -0
  159. package/dist/core/dist/templates/handlebars-helpers.d.ts +45 -0
  160. package/dist/core/dist/templates/handlebars-helpers.js +119 -0
  161. package/dist/core/dist/tools/claude/models.cjs +70 -0
  162. package/dist/core/dist/tools/claude/models.d.cts +27 -0
  163. package/dist/core/dist/tools/claude/models.d.ts +27 -0
  164. package/dist/core/dist/tools/claude/models.js +44 -0
  165. package/dist/core/dist/tools/index.cjs +3367 -0
  166. package/dist/core/dist/tools/index.d.cts +967 -0
  167. package/dist/core/dist/tools/index.d.ts +967 -0
  168. package/dist/core/dist/tools/index.js +3314 -0
  169. package/dist/core/dist/tools/models.cjs +119 -0
  170. package/dist/core/dist/tools/models.d.cts +47 -0
  171. package/dist/core/dist/tools/models.d.ts +47 -0
  172. package/dist/core/dist/tools/models.js +86 -0
  173. package/dist/core/dist/types/index.cjs +152 -0
  174. package/dist/core/dist/types/index.d.cts +214 -0
  175. package/dist/core/dist/types/index.d.ts +214 -0
  176. package/dist/core/dist/types/index.js +112 -0
  177. package/dist/core/dist/user-BmL3kFol.d.ts +50 -0
  178. package/dist/core/dist/user-eUuKj7yM.d.cts +50 -0
  179. package/dist/core/dist/utils/pricing.cjs +102 -0
  180. package/dist/core/dist/utils/pricing.d.cts +43 -0
  181. package/dist/core/dist/utils/pricing.d.ts +43 -0
  182. package/dist/core/dist/utils/pricing.js +75 -0
  183. package/dist/core/dist/worktrees-BzIxB1U6.d.cts +2745 -0
  184. package/dist/core/dist/worktrees-CYem1ya2.d.ts +2745 -0
  185. package/dist/core/environment/variable-resolver.cjs +92 -0
  186. package/dist/core/environment/variable-resolver.d.cts +52 -0
  187. package/dist/core/environment/variable-resolver.d.ts +52 -0
  188. package/dist/core/environment/variable-resolver.js +53 -0
  189. package/dist/core/feathers/index.cjs +66 -0
  190. package/dist/core/feathers/index.d.cts +7 -0
  191. package/dist/core/feathers/index.d.ts +7 -0
  192. package/dist/core/feathers/index.js +25 -0
  193. package/dist/core/feathers-BzHEPnpl.d.cts +228 -0
  194. package/dist/core/feathers-BzHEPnpl.d.ts +228 -0
  195. package/dist/core/git/index.cjs +302 -0
  196. package/dist/core/git/index.d.cts +137 -0
  197. package/dist/core/git/index.d.ts +137 -0
  198. package/dist/core/git/index.js +260 -0
  199. package/dist/core/id-DMqyogFB.d.cts +131 -0
  200. package/dist/core/id-DMqyogFB.d.ts +131 -0
  201. package/dist/core/index.cjs +4653 -0
  202. package/dist/core/index.d.cts +23 -0
  203. package/dist/core/index.d.ts +23 -0
  204. package/dist/core/index.js +4509 -0
  205. package/dist/core/message-BoxZISHg.d.cts +120 -0
  206. package/dist/core/message-DvBzHu7V.d.ts +120 -0
  207. package/dist/core/package.json +133 -0
  208. package/dist/core/permissions/index.cjs +112 -0
  209. package/dist/core/permissions/index.d.cts +81 -0
  210. package/dist/core/permissions/index.d.ts +81 -0
  211. package/dist/core/permissions/index.js +85 -0
  212. package/dist/core/repo-3CUrCRbq.d.cts +405 -0
  213. package/dist/core/repo-CnvJ0B6-.d.ts +405 -0
  214. package/dist/core/session-BPjJlVdZ.d.cts +429 -0
  215. package/dist/core/session-wAzjHatv.d.ts +429 -0
  216. package/dist/core/task-BIEgT1DK.d.cts +163 -0
  217. package/dist/core/task-DuIfiUbW.d.ts +163 -0
  218. package/dist/core/templates/handlebars-helpers.cjs +156 -0
  219. package/dist/core/templates/handlebars-helpers.d.cts +45 -0
  220. package/dist/core/templates/handlebars-helpers.d.ts +45 -0
  221. package/dist/core/templates/handlebars-helpers.js +119 -0
  222. package/dist/core/tools/claude/models.cjs +70 -0
  223. package/dist/core/tools/claude/models.d.cts +27 -0
  224. package/dist/core/tools/claude/models.d.ts +27 -0
  225. package/dist/core/tools/claude/models.js +44 -0
  226. package/dist/core/tools/index.cjs +3367 -0
  227. package/dist/core/tools/index.d.cts +967 -0
  228. package/dist/core/tools/index.d.ts +967 -0
  229. package/dist/core/tools/index.js +3314 -0
  230. package/dist/core/tools/models.cjs +119 -0
  231. package/dist/core/tools/models.d.cts +47 -0
  232. package/dist/core/tools/models.d.ts +47 -0
  233. package/dist/core/tools/models.js +86 -0
  234. package/dist/core/types/index.cjs +152 -0
  235. package/dist/core/types/index.d.cts +214 -0
  236. package/dist/core/types/index.d.ts +214 -0
  237. package/dist/core/types/index.js +112 -0
  238. package/dist/core/user-BmL3kFol.d.ts +50 -0
  239. package/dist/core/user-eUuKj7yM.d.cts +50 -0
  240. package/dist/core/utils/pricing.cjs +102 -0
  241. package/dist/core/utils/pricing.d.cts +43 -0
  242. package/dist/core/utils/pricing.d.ts +43 -0
  243. package/dist/core/utils/pricing.js +75 -0
  244. package/dist/core/worktrees-BzIxB1U6.d.cts +2745 -0
  245. package/dist/core/worktrees-CYem1ya2.d.ts +2745 -0
  246. package/dist/daemon/adapters/drizzle.d.ts +114 -0
  247. package/dist/daemon/adapters/drizzle.js +219 -0
  248. package/dist/daemon/declarations.d.ts +101 -0
  249. package/dist/daemon/declarations.js +0 -0
  250. package/dist/daemon/index.d.ts +2 -0
  251. package/dist/daemon/index.js +4093 -0
  252. package/dist/daemon/mcp/routes.d.ts +15 -0
  253. package/dist/daemon/mcp/routes.js +641 -0
  254. package/dist/daemon/mcp/tokens.d.ts +50 -0
  255. package/dist/daemon/mcp/tokens.js +85 -0
  256. package/dist/daemon/services/board-comments.d.ts +97 -0
  257. package/dist/daemon/services/board-comments.js +326 -0
  258. package/dist/daemon/services/board-objects.d.ts +71 -0
  259. package/dist/daemon/services/board-objects.js +117 -0
  260. package/dist/daemon/services/boards.d.ts +64 -0
  261. package/dist/daemon/services/boards.js +286 -0
  262. package/dist/daemon/services/config.d.ts +35 -0
  263. package/dist/daemon/services/config.js +68 -0
  264. package/dist/daemon/services/context.d.ts +55 -0
  265. package/dist/daemon/services/context.js +113 -0
  266. package/dist/daemon/services/health-monitor.d.ts +58 -0
  267. package/dist/daemon/services/health-monitor.js +158 -0
  268. package/dist/daemon/services/mcp-servers.d.ts +42 -0
  269. package/dist/daemon/services/mcp-servers.js +275 -0
  270. package/dist/daemon/services/messages.d.ts +49 -0
  271. package/dist/daemon/services/messages.js +269 -0
  272. package/dist/daemon/services/repos.d.ts +61 -0
  273. package/dist/daemon/services/repos.js +350 -0
  274. package/dist/daemon/services/session-mcp-servers.d.ts +56 -0
  275. package/dist/daemon/services/session-mcp-servers.js +51 -0
  276. package/dist/daemon/services/sessions.d.ts +64 -0
  277. package/dist/daemon/services/sessions.js +398 -0
  278. package/dist/daemon/services/tasks.d.ts +55 -0
  279. package/dist/daemon/services/tasks.js +318 -0
  280. package/dist/daemon/services/terminals.d.ts +75 -0
  281. package/dist/daemon/services/terminals.js +110 -0
  282. package/dist/daemon/services/users.d.ts +98 -0
  283. package/dist/daemon/services/users.js +177 -0
  284. package/dist/daemon/services/worktrees.d.ts +98 -0
  285. package/dist/daemon/services/worktrees.js +719 -0
  286. package/dist/daemon/strategies/anonymous.d.ts +20 -0
  287. package/dist/daemon/strategies/anonymous.js +32 -0
  288. package/dist/ui/assets/cc-CYmbalCD.png +0 -0
  289. package/dist/ui/assets/codex-4sLD1mVS.png +0 -0
  290. package/dist/ui/assets/cursor-BUy5pFVL.png +0 -0
  291. package/dist/ui/assets/gemini-ajOb7iAl.png +0 -0
  292. package/dist/ui/assets/index-Dc4ELxry.css +32 -0
  293. package/dist/ui/assets/index-KfIu8v4V.js +578 -0
  294. package/dist/ui/favicon.png +0 -0
  295. package/dist/ui/index.html +26 -0
  296. package/dist/ui/vite.svg +1 -0
  297. package/package.json +90 -0
@@ -0,0 +1,405 @@
1
+ import { W as WorktreeID, U as UUID, B as BoardID, a as SessionID } from './id-DMqyogFB.js';
2
+
3
+ /**
4
+ * Git worktree - First-class entity for isolated development contexts
5
+ *
6
+ * Worktrees are persistent work contexts that outlive individual sessions.
7
+ * Each worktree has:
8
+ * - Isolated git working directory and branch
9
+ * - Environment configuration and runtime state
10
+ * - Work metadata (issue, PR, notes)
11
+ * - Session history
12
+ *
13
+ * Relationship to sessions:
14
+ * - Sessions = ephemeral conversations with AI agents
15
+ * - Worktrees = persistent work contexts (git + environment + metadata)
16
+ * - Multiple sessions can work on the same worktree over time
17
+ */
18
+ interface Worktree {
19
+ /** Unique worktree identifier (UUIDv7) */
20
+ worktree_id: WorktreeID;
21
+ /** Repository this worktree belongs to */
22
+ repo_id: UUID;
23
+ /**
24
+ * Unique numeric ID for this worktree (auto-assigned, sequential)
25
+ *
26
+ * Used in environment templates for port allocation:
27
+ * Example: {{add 9000 WORKTREE_UNIQUE_ID}} → 9001, 9002, 9003, ...
28
+ *
29
+ * Auto-incremented when worktree is created (1, 2, 3, ...)
30
+ */
31
+ worktree_unique_id: number;
32
+ /** Timestamps */
33
+ created_at: string;
34
+ updated_at: string;
35
+ /** User who created this worktree */
36
+ created_by: UUID;
37
+ /**
38
+ * Worktree name (slug format)
39
+ *
40
+ * Used for:
41
+ * - Directory name: ~/.agor/worktrees/{repo-slug}/{name}
42
+ * - Default branch name (if creating new branch)
43
+ * - CLI references
44
+ *
45
+ * Examples: "main", "feat-auth", "exp-rewrite"
46
+ */
47
+ name: WorktreeName;
48
+ /**
49
+ * Git ref (branch/tag/commit) currently checked out
50
+ *
51
+ * Examples: "feat-auth", "main", "v1.2.3", "a1b2c3d"
52
+ */
53
+ ref: string;
54
+ /**
55
+ * Absolute path to worktree directory
56
+ *
57
+ * Example: "/Users/max/.agor/worktrees/myapp/feat-auth"
58
+ */
59
+ path: string;
60
+ /**
61
+ * Branch this worktree diverged from
62
+ *
63
+ * Example: "main" (if this is a feature branch)
64
+ */
65
+ base_ref?: string;
66
+ /**
67
+ * SHA at worktree creation (base commit)
68
+ *
69
+ * Tracks where this branch started.
70
+ */
71
+ base_sha?: string;
72
+ /**
73
+ * Latest commit SHA in this worktree
74
+ *
75
+ * Updated when sessions make commits.
76
+ */
77
+ last_commit_sha?: string;
78
+ /**
79
+ * Remote tracking branch (if any)
80
+ *
81
+ * Examples: "origin/feat-auth", "upstream/main"
82
+ */
83
+ tracking_branch?: string;
84
+ /**
85
+ * Whether this ref is a new branch created by Agor
86
+ *
87
+ * true: Branch was created during worktree creation
88
+ * false: Branch existed before (tracked from remote or local)
89
+ */
90
+ new_branch: boolean;
91
+ /**
92
+ * Board this worktree belongs to (if any)
93
+ *
94
+ * Worktrees can live on ONE board (not many).
95
+ * Sessions within the worktree are accessed through the worktree card.
96
+ */
97
+ board_id?: BoardID;
98
+ /**
99
+ * Associated GitHub/GitLab issue
100
+ *
101
+ * Links worktree to issue it addresses.
102
+ * Worktree-level (not session) because work persists across sessions.
103
+ *
104
+ * Example: "https://github.com/org/repo/issues/123"
105
+ */
106
+ issue_url?: string;
107
+ /**
108
+ * Associated pull request
109
+ *
110
+ * Links worktree to PR containing changes.
111
+ * Auto-populated when user creates PR.
112
+ *
113
+ * Example: "https://github.com/org/repo/pull/42"
114
+ */
115
+ pull_request_url?: string;
116
+ /**
117
+ * Freeform notes about this worktree
118
+ *
119
+ * User can document:
120
+ * - What they're working on
121
+ * - Blockers or issues
122
+ * - Design decisions
123
+ * - Next steps
124
+ *
125
+ * Supports markdown.
126
+ */
127
+ notes?: string;
128
+ /**
129
+ * Environment instance (if repo has environment config)
130
+ *
131
+ * Tracks runtime state, process info, variable values.
132
+ * Each worktree gets its own environment instance with unique ports.
133
+ */
134
+ environment_instance?: WorktreeEnvironmentInstance;
135
+ /**
136
+ * Sessions using this worktree
137
+ *
138
+ * Multiple sessions can work on same worktree over time.
139
+ * Useful for:
140
+ * - Continuing work across sessions
141
+ * - Collaboration (multiple users working on same worktree)
142
+ * - Fork/spawn relationships on same branch
143
+ */
144
+ sessions: SessionID[];
145
+ /**
146
+ * Last time this worktree was used
147
+ *
148
+ * Updated when sessions start/complete.
149
+ */
150
+ last_used: string;
151
+ /**
152
+ * Custom context for Handlebars templates
153
+ *
154
+ * User-defined variables for zone triggers, reports, etc.
155
+ */
156
+ custom_context?: Record<string, unknown>;
157
+ }
158
+ /**
159
+ * Worktree environment instance
160
+ *
161
+ * Runtime state for a worktree's environment (dev server, Docker, etc.).
162
+ * Template variables are resolved from:
163
+ * - Built-in: WORKTREE_UNIQUE_ID, WORKTREE_NAME, WORKTREE_PATH, REPO_SLUG
164
+ * - Custom: worktree.custom_context (JSON object)
165
+ */
166
+ interface WorktreeEnvironmentInstance {
167
+ /**
168
+ * Current environment status
169
+ */
170
+ status: 'stopped' | 'starting' | 'running' | 'stopping' | 'error';
171
+ /**
172
+ * Process metadata (if managed by Agor)
173
+ */
174
+ process?: {
175
+ /** Process ID */
176
+ pid?: number;
177
+ /** When process started */
178
+ started_at?: string;
179
+ /** Human-readable uptime */
180
+ uptime?: string;
181
+ };
182
+ /**
183
+ * Last health check result
184
+ */
185
+ last_health_check?: {
186
+ timestamp: string;
187
+ status: 'healthy' | 'unhealthy' | 'unknown';
188
+ message?: string;
189
+ };
190
+ /**
191
+ * Resolved access URLs (after template substitution)
192
+ *
193
+ * Example: [
194
+ * { name: "UI", url: "http://localhost:5173" },
195
+ * { name: "API", url: "http://localhost:3030" }
196
+ * ]
197
+ */
198
+ access_urls?: Array<{
199
+ name: string;
200
+ url: string;
201
+ }>;
202
+ /**
203
+ * Process logs (last N lines)
204
+ *
205
+ * Captured from stdout/stderr of environment process.
206
+ */
207
+ logs?: string[];
208
+ }
209
+ /**
210
+ * Repository environment configuration template
211
+ *
212
+ * Defines how to run environments for all worktrees in a repo.
213
+ * Uses Handlebars templating with scoped entity references.
214
+ *
215
+ * Template context (always available):
216
+ * - {{worktree.unique_id}} - Auto-assigned unique number (1, 2, 3, ...)
217
+ * - {{worktree.name}} - Worktree name (e.g., "feat-auth")
218
+ * - {{worktree.path}} - Absolute path to worktree directory
219
+ * - {{repo.slug}} - Repository slug (e.g., "agor")
220
+ * - {{custom.*}} - Any custom context from worktree.custom_context
221
+ * - {{add a b}}, {{sub a b}}, {{mul a b}} - Math helpers
222
+ */
223
+ interface RepoEnvironmentConfig {
224
+ /**
225
+ * Command to start environment (Handlebars template)
226
+ *
227
+ * Examples:
228
+ * - "docker compose -p {{worktree.name}} up -d"
229
+ * - "UI_PORT={{add 9000 worktree.unique_id}} DAEMON_PORT={{add 8000 worktree.unique_id}} pnpm dev"
230
+ * - "PORT={{add 5000 worktree.unique_id}} npm start"
231
+ */
232
+ up_command: string;
233
+ /**
234
+ * Command to stop environment (Handlebars template)
235
+ *
236
+ * Examples:
237
+ * - "docker compose -p {{worktree.name}} down"
238
+ * - "pkill -f 'vite.*{{add 9000 worktree.unique_id}}'"
239
+ */
240
+ down_command: string;
241
+ /**
242
+ * Optional health check configuration
243
+ */
244
+ health_check?: {
245
+ /** Health check type */
246
+ type: 'http' | 'tcp' | 'process';
247
+ /**
248
+ * URL template for HTTP checks
249
+ *
250
+ * Example: "http://localhost:{{add 9000 worktree.unique_id}}/health"
251
+ */
252
+ url_template?: string;
253
+ };
254
+ /**
255
+ * App URL template (Handlebars template)
256
+ * URL to access the running application
257
+ *
258
+ * Example: "http://localhost:{{add 5000 worktree.unique_id}}"
259
+ */
260
+ app_url_template?: string;
261
+ }
262
+
263
+ /**
264
+ * URL-friendly identifier for repositories and worktrees
265
+ *
266
+ * Used for:
267
+ * - Repository slugs (e.g., "myapp", "backend-api")
268
+ * - Worktree names (e.g., "feat-auth", "fix-cors")
269
+ * - Directory names in ~/.agor/repos/ and ~/.agor/worktrees/
270
+ *
271
+ * Format: lowercase, alphanumeric, hyphens only
272
+ *
273
+ * Examples: "myapp", "backend", "feat-auth-middleware"
274
+ */
275
+ type RepoSlug = string;
276
+ /**
277
+ * Worktree name (slug-formatted)
278
+ *
279
+ * Becomes both the directory name and (optionally) the branch name.
280
+ */
281
+ type WorktreeName = string;
282
+ /**
283
+ * Git repository managed by Agor
284
+ *
285
+ * All repositories are cloned to ~/.agor/repos/{slug}
286
+ * and managed by Agor for worktree creation and parallel development.
287
+ */
288
+ interface Repo {
289
+ /** Unique repository identifier (UUIDv7) */
290
+ repo_id: UUID;
291
+ /**
292
+ * URL-friendly slug for the repository
293
+ *
294
+ * Used for:
295
+ * - Directory name: ~/.agor/repos/{slug}
296
+ * - CLI references: agor repo show {slug}
297
+ * - Worktree organization
298
+ *
299
+ * Must be unique across all repos.
300
+ */
301
+ slug: RepoSlug;
302
+ /**
303
+ * Human-readable name
304
+ *
305
+ * Defaults to slug but can be customized.
306
+ */
307
+ name: string;
308
+ /**
309
+ * Git remote URL
310
+ *
311
+ * Examples:
312
+ * - "https://github.com/user/repo.git"
313
+ * - "git@github.com:user/repo.git"
314
+ */
315
+ remote_url: string;
316
+ /**
317
+ * Local path to repository
318
+ *
319
+ * Always: ~/.agor/repos/{slug}
320
+ */
321
+ local_path: string;
322
+ /**
323
+ * Default branch name
324
+ *
325
+ * Detected from remote or HEAD.
326
+ * Used when creating new worktrees without explicit ref.
327
+ */
328
+ default_branch?: string;
329
+ /**
330
+ * Environment configuration template (optional)
331
+ *
332
+ * Defines how to run environments for all worktrees in this repo.
333
+ * Each worktree creates an instance with specific variable values.
334
+ */
335
+ environment_config?: RepoEnvironmentConfig;
336
+ /** Repository metadata */
337
+ created_at: string;
338
+ last_updated: string;
339
+ }
340
+ /**
341
+ * Git worktree configuration
342
+ *
343
+ * Worktrees are working directories for specific branches,
344
+ * allowing multiple branches to be checked out simultaneously.
345
+ *
346
+ * Structure: ~/.agor/worktrees/{repo-slug}/{name}/
347
+ */
348
+ interface WorktreeConfig {
349
+ /**
350
+ * Worktree name (slug format)
351
+ *
352
+ * Used for:
353
+ * - Directory name: ~/.agor/worktrees/{repo-slug}/{name}
354
+ * - Default branch name (if creating new branch)
355
+ * - CLI references
356
+ *
357
+ * Examples: "main", "feat-auth", "exp-rewrite"
358
+ */
359
+ name: WorktreeName;
360
+ /**
361
+ * Absolute path to worktree directory
362
+ *
363
+ * Example: "/Users/max/.agor/worktrees/myapp/feat-auth"
364
+ */
365
+ path: string;
366
+ /**
367
+ * Git ref (branch/tag/commit) checked out in this worktree
368
+ *
369
+ * Examples: "feat-auth", "main", "v1.2.3", "a1b2c3d"
370
+ */
371
+ ref: string;
372
+ /**
373
+ * Whether this ref is a new branch created by Agor
374
+ *
375
+ * true: Branch was created during worktree creation
376
+ * false: Branch existed before (tracked from remote or local)
377
+ */
378
+ new_branch: boolean;
379
+ /**
380
+ * Remote tracking branch (if any)
381
+ *
382
+ * Examples: "origin/feat-auth", "upstream/main"
383
+ */
384
+ tracking_branch?: string;
385
+ /**
386
+ * Sessions using this worktree
387
+ *
388
+ * Multiple sessions can share a worktree (same working directory).
389
+ * Useful for:
390
+ * - Continuing work across sessions
391
+ * - Fork/spawn relationships on same branch
392
+ */
393
+ sessions: SessionID[];
394
+ /**
395
+ * Last git commit SHA in this worktree
396
+ *
397
+ * Updated when sessions complete tasks.
398
+ */
399
+ last_commit_sha?: string;
400
+ /** Worktree metadata */
401
+ created_at: string;
402
+ last_used: string;
403
+ }
404
+
405
+ export type { RepoSlug as R, WorktreeName as W, Repo as a, WorktreeConfig as b, Worktree as c, WorktreeEnvironmentInstance as d, RepoEnvironmentConfig as e };