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,163 @@
1
+ import { T as TaskID, a as SessionID } from './id-DMqyogFB.js';
2
+
3
+ /**
4
+ * Path to a context file (markdown) relative to context/
5
+ *
6
+ * Examples:
7
+ * - "README.md"
8
+ * - "concepts/core.md"
9
+ * - "explorations/subsession-orchestration.md"
10
+ */
11
+ type ContextFilePath = string;
12
+ /**
13
+ * Context file list item (lightweight, for browsing)
14
+ * Returned by GET /context
15
+ */
16
+ interface ContextFileListItem {
17
+ /**
18
+ * File path relative to context/
19
+ * Examples: "concepts/core.md", "explorations/cli.md", "README.md"
20
+ */
21
+ path: ContextFilePath;
22
+ /** Human-readable title (extracted from first H1 or filename) */
23
+ title: string;
24
+ /** File size in bytes */
25
+ size: number;
26
+ /** Last modified timestamp (ISO 8601) */
27
+ lastModified: string;
28
+ }
29
+ /**
30
+ * Full context file details (includes content)
31
+ * Returned by GET /context/:path
32
+ */
33
+ interface ContextFileDetail extends ContextFileListItem {
34
+ /** Full markdown content */
35
+ content: string;
36
+ }
37
+
38
+ /**
39
+ * Path to a report file relative to context/reports/
40
+ *
41
+ * Structure: context/reports/<session-id>/<task-id>.md
42
+ *
43
+ * Examples:
44
+ * - "01933e4a-7b89-7c35-a8f3-9d2e1c4b5a6f/0193a1b2-3c4d-7e5f-a8f3-9d2e1c4b5a6f.md"
45
+ * - "01934c2d-1234-7c35-a8f3-9d2e1c4b5a6f/0193b3c4-5d6e-7f8a-b9c0-d1e2f3a4b5c6.md"
46
+ */
47
+ type ReportPath = string;
48
+ /**
49
+ * Template type for report generation
50
+ *
51
+ * Different templates structure the report differently:
52
+ * - "standard": Default template with learnings, decisions, blockers
53
+ * - "technical": Deep dive into technical decisions and trade-offs
54
+ * - "summary": Brief summary of work completed
55
+ * - "custom": User-defined template
56
+ */
57
+ type ReportTemplate = 'standard' | 'technical' | 'summary' | 'custom';
58
+ /**
59
+ * Report metadata
60
+ *
61
+ * Reports are auto-generated after task completion, capturing:
62
+ * - What was learned during the task
63
+ * - Key decisions made
64
+ * - Concepts that emerged
65
+ * - Blockers encountered
66
+ */
67
+ interface Report {
68
+ /**
69
+ * File path relative to context/reports/
70
+ * This serves as the unique identifier.
71
+ *
72
+ * Format: "<session-id>/<task-id>.md"
73
+ */
74
+ path: ReportPath;
75
+ /** Task this report belongs to */
76
+ task_id: TaskID;
77
+ /** Template used for report generation */
78
+ template: ReportTemplate;
79
+ /** Markdown content of the report */
80
+ content: string;
81
+ /**
82
+ * Context files extracted or referenced in this report
83
+ * Can reference existing context files or suggest new ones
84
+ */
85
+ contextFiles: ContextFilePath[];
86
+ /** When the report was generated */
87
+ generated_at: string;
88
+ /** File metadata */
89
+ created_at: string;
90
+ last_updated: string;
91
+ }
92
+
93
+ declare const TaskStatus: {
94
+ readonly CREATED: "created";
95
+ readonly RUNNING: "running";
96
+ readonly STOPPING: "stopping";
97
+ readonly AWAITING_PERMISSION: "awaiting_permission";
98
+ readonly COMPLETED: "completed";
99
+ readonly FAILED: "failed";
100
+ readonly STOPPED: "stopped";
101
+ };
102
+ type TaskStatus = (typeof TaskStatus)[keyof typeof TaskStatus];
103
+ interface Task {
104
+ /** Unique task identifier (UUIDv7) */
105
+ task_id: TaskID;
106
+ /** Session this task belongs to */
107
+ session_id: SessionID;
108
+ /** User ID of the user who created this task */
109
+ created_by: string;
110
+ /** Original user prompt (can be multi-line) */
111
+ full_prompt: string;
112
+ /** Optional: LLM-generated short summary */
113
+ description?: string;
114
+ status: TaskStatus;
115
+ message_range: {
116
+ start_index: number;
117
+ end_index: number;
118
+ start_timestamp: string;
119
+ end_timestamp?: string;
120
+ };
121
+ tool_use_count: number;
122
+ git_state: {
123
+ ref_at_start: string;
124
+ sha_at_start: string;
125
+ sha_at_end?: string;
126
+ commit_message?: string;
127
+ };
128
+ usage?: {
129
+ input_tokens?: number;
130
+ output_tokens?: number;
131
+ total_tokens?: number;
132
+ cache_read_tokens?: number;
133
+ cache_creation_tokens?: number;
134
+ estimated_cost_usd?: number;
135
+ };
136
+ duration_ms?: number;
137
+ agent_session_id?: string;
138
+ context_window?: number;
139
+ context_window_limit?: number;
140
+ model?: string;
141
+ report?: {
142
+ /**
143
+ * File path relative to context/reports/
144
+ * Format: "<session-id>/<task-id>.md"
145
+ */
146
+ path: ReportPath;
147
+ template: ReportTemplate;
148
+ generated_at: string;
149
+ };
150
+ permission_request?: {
151
+ request_id: string;
152
+ tool_name: string;
153
+ tool_input: Record<string, unknown>;
154
+ tool_use_id?: string;
155
+ requested_at: string;
156
+ approved_by?: string;
157
+ approved_at?: string;
158
+ };
159
+ created_at: string;
160
+ completed_at?: string;
161
+ }
162
+
163
+ export { type ContextFilePath as C, type ReportPath as R, TaskStatus as T, type ContextFileListItem as a, type ContextFileDetail as b, type ReportTemplate as c, type Report as d, type Task as e };
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/templates/handlebars-helpers.ts
31
+ var handlebars_helpers_exports = {};
32
+ __export(handlebars_helpers_exports, {
33
+ buildWorktreeContext: () => buildWorktreeContext,
34
+ registerHandlebarsHelpers: () => registerHandlebarsHelpers,
35
+ renderTemplate: () => renderTemplate
36
+ });
37
+ module.exports = __toCommonJS(handlebars_helpers_exports);
38
+ var import_handlebars = __toESM(require("handlebars"), 1);
39
+ function registerHandlebarsHelpers() {
40
+ import_handlebars.default.registerHelper("add", (a, b) => {
41
+ const numA = Number(a);
42
+ const numB = Number(b);
43
+ if (Number.isNaN(numA) || Number.isNaN(numB)) {
44
+ console.warn(`\u26A0\uFE0F add helper received non-numeric values: ${a}, ${b}`);
45
+ return 0;
46
+ }
47
+ return numA + numB;
48
+ });
49
+ import_handlebars.default.registerHelper("sub", (a, b) => {
50
+ const numA = Number(a);
51
+ const numB = Number(b);
52
+ if (Number.isNaN(numA) || Number.isNaN(numB)) {
53
+ console.warn(`\u26A0\uFE0F sub helper received non-numeric values: ${a}, ${b}`);
54
+ return 0;
55
+ }
56
+ return numA - numB;
57
+ });
58
+ import_handlebars.default.registerHelper("mul", (a, b) => {
59
+ const numA = Number(a);
60
+ const numB = Number(b);
61
+ if (Number.isNaN(numA) || Number.isNaN(numB)) {
62
+ console.warn(`\u26A0\uFE0F mul helper received non-numeric values: ${a}, ${b}`);
63
+ return 0;
64
+ }
65
+ return numA * numB;
66
+ });
67
+ import_handlebars.default.registerHelper("div", (a, b) => {
68
+ const numA = Number(a);
69
+ const numB = Number(b);
70
+ if (Number.isNaN(numA) || Number.isNaN(numB)) {
71
+ console.warn(`\u26A0\uFE0F div helper received non-numeric values: ${a}, ${b}`);
72
+ return 0;
73
+ }
74
+ if (numB === 0) {
75
+ console.warn(`\u26A0\uFE0F div helper received zero divisor`);
76
+ return 0;
77
+ }
78
+ return numA / numB;
79
+ });
80
+ import_handlebars.default.registerHelper("mod", (a, b) => {
81
+ const numA = Number(a);
82
+ const numB = Number(b);
83
+ if (Number.isNaN(numA) || Number.isNaN(numB)) {
84
+ console.warn(`\u26A0\uFE0F mod helper received non-numeric values: ${a}, ${b}`);
85
+ return 0;
86
+ }
87
+ if (numB === 0) {
88
+ console.warn(`\u26A0\uFE0F mod helper received zero divisor`);
89
+ return 0;
90
+ }
91
+ return numA % numB;
92
+ });
93
+ import_handlebars.default.registerHelper("uppercase", (str) => {
94
+ return String(str || "").toUpperCase();
95
+ });
96
+ import_handlebars.default.registerHelper("lowercase", (str) => {
97
+ return String(str || "").toLowerCase();
98
+ });
99
+ import_handlebars.default.registerHelper("replace", (str, search, replace) => {
100
+ return String(str || "").split(search).join(replace);
101
+ });
102
+ import_handlebars.default.registerHelper("eq", (a, b) => {
103
+ return a === b;
104
+ });
105
+ import_handlebars.default.registerHelper("neq", (a, b) => {
106
+ return a !== b;
107
+ });
108
+ import_handlebars.default.registerHelper("gt", (a, b) => {
109
+ return Number(a) > Number(b);
110
+ });
111
+ import_handlebars.default.registerHelper("lt", (a, b) => {
112
+ return Number(a) < Number(b);
113
+ });
114
+ import_handlebars.default.registerHelper("gte", (a, b) => {
115
+ return Number(a) >= Number(b);
116
+ });
117
+ import_handlebars.default.registerHelper("lte", (a, b) => {
118
+ return Number(a) <= Number(b);
119
+ });
120
+ import_handlebars.default.registerHelper("default", (value, defaultValue) => {
121
+ return value ?? defaultValue;
122
+ });
123
+ import_handlebars.default.registerHelper("json", (obj) => {
124
+ return JSON.stringify(obj, null, 2);
125
+ });
126
+ }
127
+ function renderTemplate(templateString, context) {
128
+ try {
129
+ const template = import_handlebars.default.compile(templateString);
130
+ return template(context);
131
+ } catch (error) {
132
+ console.error("\u274C Handlebars template error:", error);
133
+ throw error;
134
+ }
135
+ }
136
+ function buildWorktreeContext(worktree) {
137
+ return {
138
+ // Scoped entities (accessible as {{entity.property}})
139
+ worktree: {
140
+ unique_id: worktree.worktree_unique_id,
141
+ name: worktree.name,
142
+ path: worktree.path
143
+ },
144
+ repo: {
145
+ slug: worktree.repo_slug || ""
146
+ },
147
+ // User-defined custom context (accessible as {{custom.key}})
148
+ custom: worktree.custom_context || {}
149
+ };
150
+ }
151
+ // Annotate the CommonJS export names for ESM import in node:
152
+ 0 && (module.exports = {
153
+ buildWorktreeContext,
154
+ registerHandlebarsHelpers,
155
+ renderTemplate
156
+ });
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Handlebars helper functions for template rendering
3
+ *
4
+ * Shared between frontend and backend for consistent template evaluation.
5
+ * Used in:
6
+ * - Environment config templates (up/down commands)
7
+ * - Zone triggers
8
+ * - Report templates
9
+ * - Any other Handlebars-based templating
10
+ */
11
+ /**
12
+ * Register all Handlebars helpers
13
+ *
14
+ * Call this once during application initialization.
15
+ */
16
+ declare function registerHandlebarsHelpers(): void;
17
+ /**
18
+ * Render a Handlebars template with given context
19
+ *
20
+ * Automatically registers helpers if not already registered.
21
+ *
22
+ * @param templateString - Handlebars template string
23
+ * @param context - Template context variables
24
+ * @returns Rendered string
25
+ */
26
+ declare function renderTemplate(templateString: string, context: Record<string, unknown>): string;
27
+ /**
28
+ * Build standard template context for worktree environments
29
+ *
30
+ * Provides scoped entity references (consistent with zone triggers):
31
+ * - {{worktree.unique_id}} - Auto-assigned unique number (1, 2, 3, ...)
32
+ * - {{worktree.name}} - Worktree name (slug format)
33
+ * - {{worktree.path}} - Absolute path to worktree directory
34
+ * - {{repo.slug}} - Repository slug
35
+ * - {{custom.*}} - Any custom context from worktree.custom_context
36
+ */
37
+ declare function buildWorktreeContext(worktree: {
38
+ worktree_unique_id: number;
39
+ name: string;
40
+ path: string;
41
+ repo_slug?: string;
42
+ custom_context?: Record<string, unknown>;
43
+ }): Record<string, unknown>;
44
+
45
+ export { buildWorktreeContext, registerHandlebarsHelpers, renderTemplate };
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Handlebars helper functions for template rendering
3
+ *
4
+ * Shared between frontend and backend for consistent template evaluation.
5
+ * Used in:
6
+ * - Environment config templates (up/down commands)
7
+ * - Zone triggers
8
+ * - Report templates
9
+ * - Any other Handlebars-based templating
10
+ */
11
+ /**
12
+ * Register all Handlebars helpers
13
+ *
14
+ * Call this once during application initialization.
15
+ */
16
+ declare function registerHandlebarsHelpers(): void;
17
+ /**
18
+ * Render a Handlebars template with given context
19
+ *
20
+ * Automatically registers helpers if not already registered.
21
+ *
22
+ * @param templateString - Handlebars template string
23
+ * @param context - Template context variables
24
+ * @returns Rendered string
25
+ */
26
+ declare function renderTemplate(templateString: string, context: Record<string, unknown>): string;
27
+ /**
28
+ * Build standard template context for worktree environments
29
+ *
30
+ * Provides scoped entity references (consistent with zone triggers):
31
+ * - {{worktree.unique_id}} - Auto-assigned unique number (1, 2, 3, ...)
32
+ * - {{worktree.name}} - Worktree name (slug format)
33
+ * - {{worktree.path}} - Absolute path to worktree directory
34
+ * - {{repo.slug}} - Repository slug
35
+ * - {{custom.*}} - Any custom context from worktree.custom_context
36
+ */
37
+ declare function buildWorktreeContext(worktree: {
38
+ worktree_unique_id: number;
39
+ name: string;
40
+ path: string;
41
+ repo_slug?: string;
42
+ custom_context?: Record<string, unknown>;
43
+ }): Record<string, unknown>;
44
+
45
+ export { buildWorktreeContext, registerHandlebarsHelpers, renderTemplate };
@@ -0,0 +1,119 @@
1
+ // src/templates/handlebars-helpers.ts
2
+ import Handlebars from "handlebars";
3
+ function registerHandlebarsHelpers() {
4
+ Handlebars.registerHelper("add", (a, b) => {
5
+ const numA = Number(a);
6
+ const numB = Number(b);
7
+ if (Number.isNaN(numA) || Number.isNaN(numB)) {
8
+ console.warn(`\u26A0\uFE0F add helper received non-numeric values: ${a}, ${b}`);
9
+ return 0;
10
+ }
11
+ return numA + numB;
12
+ });
13
+ Handlebars.registerHelper("sub", (a, b) => {
14
+ const numA = Number(a);
15
+ const numB = Number(b);
16
+ if (Number.isNaN(numA) || Number.isNaN(numB)) {
17
+ console.warn(`\u26A0\uFE0F sub helper received non-numeric values: ${a}, ${b}`);
18
+ return 0;
19
+ }
20
+ return numA - numB;
21
+ });
22
+ Handlebars.registerHelper("mul", (a, b) => {
23
+ const numA = Number(a);
24
+ const numB = Number(b);
25
+ if (Number.isNaN(numA) || Number.isNaN(numB)) {
26
+ console.warn(`\u26A0\uFE0F mul helper received non-numeric values: ${a}, ${b}`);
27
+ return 0;
28
+ }
29
+ return numA * numB;
30
+ });
31
+ Handlebars.registerHelper("div", (a, b) => {
32
+ const numA = Number(a);
33
+ const numB = Number(b);
34
+ if (Number.isNaN(numA) || Number.isNaN(numB)) {
35
+ console.warn(`\u26A0\uFE0F div helper received non-numeric values: ${a}, ${b}`);
36
+ return 0;
37
+ }
38
+ if (numB === 0) {
39
+ console.warn(`\u26A0\uFE0F div helper received zero divisor`);
40
+ return 0;
41
+ }
42
+ return numA / numB;
43
+ });
44
+ Handlebars.registerHelper("mod", (a, b) => {
45
+ const numA = Number(a);
46
+ const numB = Number(b);
47
+ if (Number.isNaN(numA) || Number.isNaN(numB)) {
48
+ console.warn(`\u26A0\uFE0F mod helper received non-numeric values: ${a}, ${b}`);
49
+ return 0;
50
+ }
51
+ if (numB === 0) {
52
+ console.warn(`\u26A0\uFE0F mod helper received zero divisor`);
53
+ return 0;
54
+ }
55
+ return numA % numB;
56
+ });
57
+ Handlebars.registerHelper("uppercase", (str) => {
58
+ return String(str || "").toUpperCase();
59
+ });
60
+ Handlebars.registerHelper("lowercase", (str) => {
61
+ return String(str || "").toLowerCase();
62
+ });
63
+ Handlebars.registerHelper("replace", (str, search, replace) => {
64
+ return String(str || "").split(search).join(replace);
65
+ });
66
+ Handlebars.registerHelper("eq", (a, b) => {
67
+ return a === b;
68
+ });
69
+ Handlebars.registerHelper("neq", (a, b) => {
70
+ return a !== b;
71
+ });
72
+ Handlebars.registerHelper("gt", (a, b) => {
73
+ return Number(a) > Number(b);
74
+ });
75
+ Handlebars.registerHelper("lt", (a, b) => {
76
+ return Number(a) < Number(b);
77
+ });
78
+ Handlebars.registerHelper("gte", (a, b) => {
79
+ return Number(a) >= Number(b);
80
+ });
81
+ Handlebars.registerHelper("lte", (a, b) => {
82
+ return Number(a) <= Number(b);
83
+ });
84
+ Handlebars.registerHelper("default", (value, defaultValue) => {
85
+ return value ?? defaultValue;
86
+ });
87
+ Handlebars.registerHelper("json", (obj) => {
88
+ return JSON.stringify(obj, null, 2);
89
+ });
90
+ }
91
+ function renderTemplate(templateString, context) {
92
+ try {
93
+ const template = Handlebars.compile(templateString);
94
+ return template(context);
95
+ } catch (error) {
96
+ console.error("\u274C Handlebars template error:", error);
97
+ throw error;
98
+ }
99
+ }
100
+ function buildWorktreeContext(worktree) {
101
+ return {
102
+ // Scoped entities (accessible as {{entity.property}})
103
+ worktree: {
104
+ unique_id: worktree.worktree_unique_id,
105
+ name: worktree.name,
106
+ path: worktree.path
107
+ },
108
+ repo: {
109
+ slug: worktree.repo_slug || ""
110
+ },
111
+ // User-defined custom context (accessible as {{custom.key}})
112
+ custom: worktree.custom_context || {}
113
+ };
114
+ }
115
+ export {
116
+ buildWorktreeContext,
117
+ registerHandlebarsHelpers,
118
+ renderTemplate
119
+ };
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/tools/claude/models.ts
21
+ var models_exports = {};
22
+ __export(models_exports, {
23
+ AVAILABLE_CLAUDE_MODEL_ALIASES: () => AVAILABLE_CLAUDE_MODEL_ALIASES,
24
+ DEFAULT_CLAUDE_MODEL: () => DEFAULT_CLAUDE_MODEL
25
+ });
26
+ module.exports = __toCommonJS(models_exports);
27
+ var AVAILABLE_CLAUDE_MODEL_ALIASES = [
28
+ {
29
+ id: "claude-opus-4-1",
30
+ displayName: "Claude Opus 4.1",
31
+ family: "claude-4",
32
+ description: "Most capable model (latest)"
33
+ },
34
+ {
35
+ id: "claude-sonnet-4-5",
36
+ displayName: "Claude Sonnet 4.5",
37
+ family: "claude-4",
38
+ description: "Best for coding (latest)"
39
+ },
40
+ {
41
+ id: "claude-sonnet-4-0",
42
+ displayName: "Claude Sonnet 4.0",
43
+ family: "claude-4",
44
+ description: "Sonnet 4.0 (previous)"
45
+ },
46
+ {
47
+ id: "claude-3-7-sonnet-latest",
48
+ displayName: "Claude 3.7 Sonnet",
49
+ family: "claude-3.7",
50
+ description: "Fast & balanced"
51
+ },
52
+ {
53
+ id: "claude-haiku-4-5",
54
+ displayName: "Claude Haiku 4.5",
55
+ family: "claude-4",
56
+ description: "Fastest (latest)"
57
+ },
58
+ {
59
+ id: "claude-3-5-haiku-latest",
60
+ displayName: "Claude 3.5 Haiku",
61
+ family: "claude-3.5",
62
+ description: "Fastest (previous)"
63
+ }
64
+ ];
65
+ var DEFAULT_CLAUDE_MODEL = "claude-sonnet-4-5";
66
+ // Annotate the CommonJS export names for ESM import in node:
67
+ 0 && (module.exports = {
68
+ AVAILABLE_CLAUDE_MODEL_ALIASES,
69
+ DEFAULT_CLAUDE_MODEL
70
+ });
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Claude model metadata for UI display and selection
3
+ */
4
+ interface ClaudeModel {
5
+ /** Model ID or alias (e.g., "claude-sonnet-4-5-latest" or "claude-sonnet-4-5-20250929") */
6
+ id: string;
7
+ /** Display name for UI (e.g., "Claude Sonnet 4.5") */
8
+ displayName: string;
9
+ /** Model family (e.g., "claude-4", "claude-3.5") */
10
+ family: string;
11
+ /** User-facing description */
12
+ description: string;
13
+ }
14
+ /**
15
+ * Available Claude model aliases (API-provided, auto-update to latest versions)
16
+ *
17
+ * Note: Anthropic's naming is inconsistent:
18
+ * - Newer models (Claude 4.x) use version-based aliases: claude-sonnet-4-5, claude-opus-4-1
19
+ * - Older models (Claude 3.x) use -latest suffix: claude-3-7-sonnet-latest
20
+ */
21
+ declare const AVAILABLE_CLAUDE_MODEL_ALIASES: ClaudeModel[];
22
+ /**
23
+ * Default Claude model for new sessions (uses Sonnet 4.5 for best coding performance)
24
+ */
25
+ declare const DEFAULT_CLAUDE_MODEL = "claude-sonnet-4-5";
26
+
27
+ export { AVAILABLE_CLAUDE_MODEL_ALIASES, type ClaudeModel, DEFAULT_CLAUDE_MODEL };
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Claude model metadata for UI display and selection
3
+ */
4
+ interface ClaudeModel {
5
+ /** Model ID or alias (e.g., "claude-sonnet-4-5-latest" or "claude-sonnet-4-5-20250929") */
6
+ id: string;
7
+ /** Display name for UI (e.g., "Claude Sonnet 4.5") */
8
+ displayName: string;
9
+ /** Model family (e.g., "claude-4", "claude-3.5") */
10
+ family: string;
11
+ /** User-facing description */
12
+ description: string;
13
+ }
14
+ /**
15
+ * Available Claude model aliases (API-provided, auto-update to latest versions)
16
+ *
17
+ * Note: Anthropic's naming is inconsistent:
18
+ * - Newer models (Claude 4.x) use version-based aliases: claude-sonnet-4-5, claude-opus-4-1
19
+ * - Older models (Claude 3.x) use -latest suffix: claude-3-7-sonnet-latest
20
+ */
21
+ declare const AVAILABLE_CLAUDE_MODEL_ALIASES: ClaudeModel[];
22
+ /**
23
+ * Default Claude model for new sessions (uses Sonnet 4.5 for best coding performance)
24
+ */
25
+ declare const DEFAULT_CLAUDE_MODEL = "claude-sonnet-4-5";
26
+
27
+ export { AVAILABLE_CLAUDE_MODEL_ALIASES, type ClaudeModel, DEFAULT_CLAUDE_MODEL };