chatroom-cli 1.31.1 → 1.32.1

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 (837) hide show
  1. package/dist/api.d.ts +61 -0
  2. package/dist/api.d.ts.map +1 -0
  3. package/dist/api.js +10 -0
  4. package/dist/api.js.map +1 -0
  5. package/dist/commands/artifact/deps.d.ts +6 -0
  6. package/dist/commands/artifact/deps.d.ts.map +1 -0
  7. package/dist/commands/artifact/deps.js +2 -0
  8. package/dist/commands/artifact/deps.js.map +1 -0
  9. package/dist/commands/artifact/index.d.ts +43 -0
  10. package/dist/commands/artifact/index.d.ts.map +1 -0
  11. package/dist/commands/artifact/index.js +205 -0
  12. package/dist/commands/artifact/index.js.map +1 -0
  13. package/dist/commands/artifact/index.test.d.ts +8 -0
  14. package/dist/commands/artifact/index.test.d.ts.map +1 -0
  15. package/dist/commands/artifact/index.test.js +188 -0
  16. package/dist/commands/artifact/index.test.js.map +1 -0
  17. package/dist/commands/auth-login/deps.d.ts +50 -0
  18. package/dist/commands/auth-login/deps.d.ts.map +1 -0
  19. package/dist/commands/auth-login/deps.js +9 -0
  20. package/dist/commands/auth-login/deps.js.map +1 -0
  21. package/dist/commands/auth-login/index.d.ts +22 -0
  22. package/dist/commands/auth-login/index.d.ts.map +1 -0
  23. package/dist/commands/auth-login/index.js +246 -0
  24. package/dist/commands/auth-login/index.js.map +1 -0
  25. package/dist/commands/auth-login/index.test.d.ts +9 -0
  26. package/dist/commands/auth-login/index.test.d.ts.map +1 -0
  27. package/dist/commands/auth-login/index.test.js +297 -0
  28. package/dist/commands/auth-login/index.test.js.map +1 -0
  29. package/dist/commands/auth-logout/deps.d.ts +20 -0
  30. package/dist/commands/auth-logout/deps.d.ts.map +1 -0
  31. package/dist/commands/auth-logout/deps.js +7 -0
  32. package/dist/commands/auth-logout/deps.js.map +1 -0
  33. package/dist/commands/auth-logout/index.d.ts +8 -0
  34. package/dist/commands/auth-logout/index.d.ts.map +1 -0
  35. package/dist/commands/auth-logout/index.js +34 -0
  36. package/dist/commands/auth-logout/index.js.map +1 -0
  37. package/dist/commands/auth-logout/index.test.d.ts +8 -0
  38. package/dist/commands/auth-logout/index.test.d.ts.map +1 -0
  39. package/dist/commands/auth-logout/index.test.js +85 -0
  40. package/dist/commands/auth-logout/index.test.js.map +1 -0
  41. package/dist/commands/auth-status/deps.d.ts +35 -0
  42. package/dist/commands/auth-status/deps.d.ts.map +1 -0
  43. package/dist/commands/auth-status/deps.js +7 -0
  44. package/dist/commands/auth-status/deps.js.map +1 -0
  45. package/dist/commands/auth-status/index.d.ts +8 -0
  46. package/dist/commands/auth-status/index.d.ts.map +1 -0
  47. package/dist/commands/auth-status/index.js +80 -0
  48. package/dist/commands/auth-status/index.js.map +1 -0
  49. package/dist/commands/auth-status/index.test.d.ts +8 -0
  50. package/dist/commands/auth-status/index.test.d.ts.map +1 -0
  51. package/dist/commands/auth-status/index.test.js +116 -0
  52. package/dist/commands/auth-status/index.test.js.map +1 -0
  53. package/dist/commands/backlog/deps.d.ts +21 -0
  54. package/dist/commands/backlog/deps.d.ts.map +1 -0
  55. package/dist/commands/backlog/deps.js +5 -0
  56. package/dist/commands/backlog/deps.js.map +1 -0
  57. package/dist/commands/backlog/index.d.ts +129 -0
  58. package/dist/commands/backlog/index.d.ts.map +1 -0
  59. package/dist/commands/backlog/index.js +694 -0
  60. package/dist/commands/backlog/index.js.map +1 -0
  61. package/dist/commands/backlog/index.test.d.ts +7 -0
  62. package/dist/commands/backlog/index.test.d.ts.map +1 -0
  63. package/dist/commands/backlog/index.test.js +395 -0
  64. package/dist/commands/backlog/index.test.js.map +1 -0
  65. package/dist/commands/classify/deps.d.ts +18 -0
  66. package/dist/commands/classify/deps.d.ts.map +1 -0
  67. package/dist/commands/classify/deps.js +8 -0
  68. package/dist/commands/classify/deps.js.map +1 -0
  69. package/dist/commands/classify/index.d.ts +19 -0
  70. package/dist/commands/classify/index.d.ts.map +1 -0
  71. package/dist/commands/classify/index.js +162 -0
  72. package/dist/commands/classify/index.js.map +1 -0
  73. package/dist/commands/classify/index.test.d.ts +9 -0
  74. package/dist/commands/classify/index.test.d.ts.map +1 -0
  75. package/dist/commands/classify/index.test.js +263 -0
  76. package/dist/commands/classify/index.test.js.map +1 -0
  77. package/dist/commands/context/deps.d.ts +6 -0
  78. package/dist/commands/context/deps.d.ts.map +1 -0
  79. package/dist/commands/context/deps.js +2 -0
  80. package/dist/commands/context/deps.js.map +1 -0
  81. package/dist/commands/context/index.d.ts +42 -0
  82. package/dist/commands/context/index.d.ts.map +1 -0
  83. package/dist/commands/context/index.js +324 -0
  84. package/dist/commands/context/index.js.map +1 -0
  85. package/dist/commands/context/index.test.d.ts +9 -0
  86. package/dist/commands/context/index.test.d.ts.map +1 -0
  87. package/dist/commands/context/index.test.js +272 -0
  88. package/dist/commands/context/index.test.js.map +1 -0
  89. package/dist/commands/get-next-task/index.d.ts +20 -0
  90. package/dist/commands/get-next-task/index.d.ts.map +1 -0
  91. package/dist/commands/get-next-task/index.js +156 -0
  92. package/dist/commands/get-next-task/index.js.map +1 -0
  93. package/dist/commands/get-next-task/index.test.d.ts +9 -0
  94. package/dist/commands/get-next-task/index.test.d.ts.map +1 -0
  95. package/dist/commands/get-next-task/index.test.js +125 -0
  96. package/dist/commands/get-next-task/index.test.js.map +1 -0
  97. package/dist/commands/get-next-task/session.d.ts +127 -0
  98. package/dist/commands/get-next-task/session.d.ts.map +1 -0
  99. package/dist/commands/get-next-task/session.js +335 -0
  100. package/dist/commands/get-next-task/session.js.map +1 -0
  101. package/dist/commands/get-next-task/session.test.d.ts +11 -0
  102. package/dist/commands/get-next-task/session.test.d.ts.map +1 -0
  103. package/dist/commands/get-next-task/session.test.js +367 -0
  104. package/dist/commands/get-next-task/session.test.js.map +1 -0
  105. package/dist/commands/get-system-prompt/deps.d.ts +14 -0
  106. package/dist/commands/get-system-prompt/deps.d.ts.map +1 -0
  107. package/dist/commands/get-system-prompt/deps.js +7 -0
  108. package/dist/commands/get-system-prompt/deps.js.map +1 -0
  109. package/dist/commands/get-system-prompt/index.d.ts +16 -0
  110. package/dist/commands/get-system-prompt/index.d.ts.map +1 -0
  111. package/dist/commands/get-system-prompt/index.js +70 -0
  112. package/dist/commands/get-system-prompt/index.js.map +1 -0
  113. package/dist/commands/guidelines/deps.d.ts +14 -0
  114. package/dist/commands/guidelines/deps.d.ts.map +1 -0
  115. package/dist/commands/guidelines/deps.js +7 -0
  116. package/dist/commands/guidelines/deps.js.map +1 -0
  117. package/dist/commands/guidelines/index.d.ts +19 -0
  118. package/dist/commands/guidelines/index.d.ts.map +1 -0
  119. package/dist/commands/guidelines/index.js +92 -0
  120. package/dist/commands/guidelines/index.js.map +1 -0
  121. package/dist/commands/guidelines/index.test.d.ts +8 -0
  122. package/dist/commands/guidelines/index.test.d.ts.map +1 -0
  123. package/dist/commands/guidelines/index.test.js +140 -0
  124. package/dist/commands/guidelines/index.test.js.map +1 -0
  125. package/dist/commands/handoff/deps.d.ts +9 -0
  126. package/dist/commands/handoff/deps.d.ts.map +1 -0
  127. package/dist/commands/handoff/deps.js +5 -0
  128. package/dist/commands/handoff/deps.js.map +1 -0
  129. package/dist/commands/handoff/index.d.ts +23 -0
  130. package/dist/commands/handoff/index.d.ts.map +1 -0
  131. package/dist/commands/handoff/index.js +226 -0
  132. package/dist/commands/handoff/index.js.map +1 -0
  133. package/dist/commands/handoff/index.test.d.ts +9 -0
  134. package/dist/commands/handoff/index.test.d.ts.map +1 -0
  135. package/dist/commands/handoff/index.test.js +189 -0
  136. package/dist/commands/handoff/index.test.js.map +1 -0
  137. package/dist/commands/init/deps.d.ts +21 -0
  138. package/dist/commands/init/deps.d.ts.map +1 -0
  139. package/dist/commands/init/deps.js +8 -0
  140. package/dist/commands/init/deps.js.map +1 -0
  141. package/dist/commands/init/index.d.ts +22 -0
  142. package/dist/commands/init/index.d.ts.map +1 -0
  143. package/dist/commands/init/index.js +181 -0
  144. package/dist/commands/init/index.js.map +1 -0
  145. package/dist/commands/init/index.test.d.ts +8 -0
  146. package/dist/commands/init/index.test.d.ts.map +1 -0
  147. package/dist/commands/init/index.test.js +170 -0
  148. package/dist/commands/init/index.test.js.map +1 -0
  149. package/dist/commands/machine/daemon-start/command-loop.d.ts +15 -0
  150. package/dist/commands/machine/daemon-start/command-loop.d.ts.map +1 -0
  151. package/dist/commands/machine/daemon-start/command-loop.js +295 -0
  152. package/dist/commands/machine/daemon-start/command-loop.js.map +1 -0
  153. package/dist/commands/machine/daemon-start/command-loop.test.d.ts +13 -0
  154. package/dist/commands/machine/daemon-start/command-loop.test.d.ts.map +1 -0
  155. package/dist/commands/machine/daemon-start/command-loop.test.js +156 -0
  156. package/dist/commands/machine/daemon-start/command-loop.test.js.map +1 -0
  157. package/dist/commands/machine/daemon-start/command-sync-heartbeat.d.ts +12 -0
  158. package/dist/commands/machine/daemon-start/command-sync-heartbeat.d.ts.map +1 -0
  159. package/dist/commands/machine/daemon-start/command-sync-heartbeat.js +58 -0
  160. package/dist/commands/machine/daemon-start/command-sync-heartbeat.js.map +1 -0
  161. package/dist/commands/machine/daemon-start/deps.d.ts +85 -0
  162. package/dist/commands/machine/daemon-start/deps.d.ts.map +1 -0
  163. package/dist/commands/machine/daemon-start/deps.js +14 -0
  164. package/dist/commands/machine/daemon-start/deps.js.map +1 -0
  165. package/dist/commands/machine/daemon-start/event-bus.test.d.ts +2 -0
  166. package/dist/commands/machine/daemon-start/event-bus.test.d.ts.map +1 -0
  167. package/dist/commands/machine/daemon-start/event-bus.test.js +100 -0
  168. package/dist/commands/machine/daemon-start/event-bus.test.js.map +1 -0
  169. package/dist/commands/machine/daemon-start/event-listeners.test.d.ts +2 -0
  170. package/dist/commands/machine/daemon-start/event-listeners.test.d.ts.map +1 -0
  171. package/dist/commands/machine/daemon-start/event-listeners.test.js +155 -0
  172. package/dist/commands/machine/daemon-start/event-listeners.test.js.map +1 -0
  173. package/dist/commands/machine/daemon-start/file-content-fulfillment.d.ts +12 -0
  174. package/dist/commands/machine/daemon-start/file-content-fulfillment.d.ts.map +1 -0
  175. package/dist/commands/machine/daemon-start/file-content-fulfillment.js +120 -0
  176. package/dist/commands/machine/daemon-start/file-content-fulfillment.js.map +1 -0
  177. package/dist/commands/machine/daemon-start/file-content-subscription.d.ts +29 -0
  178. package/dist/commands/machine/daemon-start/file-content-subscription.d.ts.map +1 -0
  179. package/dist/commands/machine/daemon-start/file-content-subscription.js +55 -0
  180. package/dist/commands/machine/daemon-start/file-content-subscription.js.map +1 -0
  181. package/dist/commands/machine/daemon-start/file-tree-subscription.d.ts +22 -0
  182. package/dist/commands/machine/daemon-start/file-tree-subscription.d.ts.map +1 -0
  183. package/dist/commands/machine/daemon-start/file-tree-subscription.js +83 -0
  184. package/dist/commands/machine/daemon-start/file-tree-subscription.js.map +1 -0
  185. package/dist/commands/machine/daemon-start/git-heartbeat.d.ts +18 -0
  186. package/dist/commands/machine/daemon-start/git-heartbeat.d.ts.map +1 -0
  187. package/dist/commands/machine/daemon-start/git-heartbeat.js +218 -0
  188. package/dist/commands/machine/daemon-start/git-heartbeat.js.map +1 -0
  189. package/dist/commands/machine/daemon-start/git-subscription.d.ts +60 -0
  190. package/dist/commands/machine/daemon-start/git-subscription.d.ts.map +1 -0
  191. package/dist/commands/machine/daemon-start/git-subscription.js +389 -0
  192. package/dist/commands/machine/daemon-start/git-subscription.js.map +1 -0
  193. package/dist/commands/machine/daemon-start/git-subscription.test.d.ts +2 -0
  194. package/dist/commands/machine/daemon-start/git-subscription.test.d.ts.map +1 -0
  195. package/dist/commands/machine/daemon-start/git-subscription.test.js +103 -0
  196. package/dist/commands/machine/daemon-start/git-subscription.test.js.map +1 -0
  197. package/dist/commands/machine/daemon-start/handlers/command-runner.d.ts +23 -0
  198. package/dist/commands/machine/daemon-start/handlers/command-runner.d.ts.map +1 -0
  199. package/dist/commands/machine/daemon-start/handlers/command-runner.js +236 -0
  200. package/dist/commands/machine/daemon-start/handlers/command-runner.js.map +1 -0
  201. package/dist/commands/machine/daemon-start/handlers/ping.d.ts +6 -0
  202. package/dist/commands/machine/daemon-start/handlers/ping.d.ts.map +1 -0
  203. package/dist/commands/machine/daemon-start/handlers/ping.js +8 -0
  204. package/dist/commands/machine/daemon-start/handlers/ping.js.map +1 -0
  205. package/dist/commands/machine/daemon-start/handlers/ping.test.d.ts +5 -0
  206. package/dist/commands/machine/daemon-start/handlers/ping.test.d.ts.map +1 -0
  207. package/dist/commands/machine/daemon-start/handlers/ping.test.js +23 -0
  208. package/dist/commands/machine/daemon-start/handlers/ping.test.js.map +1 -0
  209. package/dist/commands/machine/daemon-start/handlers/shared.d.ts +11 -0
  210. package/dist/commands/machine/daemon-start/handlers/shared.d.ts.map +1 -0
  211. package/dist/commands/machine/daemon-start/handlers/shared.js +25 -0
  212. package/dist/commands/machine/daemon-start/handlers/shared.js.map +1 -0
  213. package/dist/commands/machine/daemon-start/handlers/state-recovery.d.ts +19 -0
  214. package/dist/commands/machine/daemon-start/handlers/state-recovery.d.ts.map +1 -0
  215. package/dist/commands/machine/daemon-start/handlers/state-recovery.js +61 -0
  216. package/dist/commands/machine/daemon-start/handlers/state-recovery.js.map +1 -0
  217. package/dist/commands/machine/daemon-start/handlers/state-recovery.test.d.ts +8 -0
  218. package/dist/commands/machine/daemon-start/handlers/state-recovery.test.d.ts.map +1 -0
  219. package/dist/commands/machine/daemon-start/handlers/state-recovery.test.js +98 -0
  220. package/dist/commands/machine/daemon-start/handlers/state-recovery.test.js.map +1 -0
  221. package/dist/commands/machine/daemon-start/handlers/status.d.ts +6 -0
  222. package/dist/commands/machine/daemon-start/handlers/status.d.ts.map +1 -0
  223. package/dist/commands/machine/daemon-start/handlers/status.js +13 -0
  224. package/dist/commands/machine/daemon-start/handlers/status.js.map +1 -0
  225. package/dist/commands/machine/daemon-start/handlers/status.test.d.ts +5 -0
  226. package/dist/commands/machine/daemon-start/handlers/status.test.d.ts.map +1 -0
  227. package/dist/commands/machine/daemon-start/handlers/status.test.js +51 -0
  228. package/dist/commands/machine/daemon-start/handlers/status.test.js.map +1 -0
  229. package/dist/commands/machine/daemon-start/handlers/stop-agent.d.ts +21 -0
  230. package/dist/commands/machine/daemon-start/handlers/stop-agent.d.ts.map +1 -0
  231. package/dist/commands/machine/daemon-start/handlers/stop-agent.js +36 -0
  232. package/dist/commands/machine/daemon-start/handlers/stop-agent.js.map +1 -0
  233. package/dist/commands/machine/daemon-start/handlers/stop-agent.test.d.ts +7 -0
  234. package/dist/commands/machine/daemon-start/handlers/stop-agent.test.d.ts.map +1 -0
  235. package/dist/commands/machine/daemon-start/handlers/stop-agent.test.js +135 -0
  236. package/dist/commands/machine/daemon-start/handlers/stop-agent.test.js.map +1 -0
  237. package/dist/commands/machine/daemon-start/index.d.ts +16 -0
  238. package/dist/commands/machine/daemon-start/index.d.ts.map +1 -0
  239. package/dist/commands/machine/daemon-start/index.js +21 -0
  240. package/dist/commands/machine/daemon-start/index.js.map +1 -0
  241. package/dist/commands/machine/daemon-start/init.d.ts +23 -0
  242. package/dist/commands/machine/daemon-start/init.d.ts.map +1 -0
  243. package/dist/commands/machine/daemon-start/init.js +338 -0
  244. package/dist/commands/machine/daemon-start/init.js.map +1 -0
  245. package/dist/commands/machine/daemon-start/init.test.d.ts +8 -0
  246. package/dist/commands/machine/daemon-start/init.test.d.ts.map +1 -0
  247. package/dist/commands/machine/daemon-start/init.test.js +385 -0
  248. package/dist/commands/machine/daemon-start/init.test.js.map +1 -0
  249. package/dist/commands/machine/daemon-start/testing/index.d.ts +5 -0
  250. package/dist/commands/machine/daemon-start/testing/index.d.ts.map +1 -0
  251. package/dist/commands/machine/daemon-start/testing/index.js +5 -0
  252. package/dist/commands/machine/daemon-start/testing/index.js.map +1 -0
  253. package/dist/commands/machine/daemon-start/testing/mock-daemon-deps.d.ts +26 -0
  254. package/dist/commands/machine/daemon-start/testing/mock-daemon-deps.d.ts.map +1 -0
  255. package/dist/commands/machine/daemon-start/testing/mock-daemon-deps.js +68 -0
  256. package/dist/commands/machine/daemon-start/testing/mock-daemon-deps.js.map +1 -0
  257. package/dist/commands/machine/daemon-start/types.d.ts +89 -0
  258. package/dist/commands/machine/daemon-start/types.d.ts.map +1 -0
  259. package/dist/commands/machine/daemon-start/types.js +5 -0
  260. package/dist/commands/machine/daemon-start/types.js.map +1 -0
  261. package/dist/commands/machine/daemon-start/utils.d.ts +8 -0
  262. package/dist/commands/machine/daemon-start/utils.d.ts.map +1 -0
  263. package/dist/commands/machine/daemon-start/utils.js +10 -0
  264. package/dist/commands/machine/daemon-start/utils.js.map +1 -0
  265. package/dist/commands/machine/daemon-status.d.ts +10 -0
  266. package/dist/commands/machine/daemon-status.d.ts.map +1 -0
  267. package/dist/commands/machine/daemon-status.js +23 -0
  268. package/dist/commands/machine/daemon-status.js.map +1 -0
  269. package/dist/commands/machine/daemon-stop.d.ts +10 -0
  270. package/dist/commands/machine/daemon-stop.d.ts.map +1 -0
  271. package/dist/commands/machine/daemon-stop.js +44 -0
  272. package/dist/commands/machine/daemon-stop.js.map +1 -0
  273. package/dist/commands/machine/index.d.ts +9 -0
  274. package/dist/commands/machine/index.d.ts.map +1 -0
  275. package/dist/commands/machine/index.js +9 -0
  276. package/dist/commands/machine/index.js.map +1 -0
  277. package/dist/commands/machine/pid.d.ts +48 -0
  278. package/dist/commands/machine/pid.d.ts.map +1 -0
  279. package/dist/commands/machine/pid.js +141 -0
  280. package/dist/commands/machine/pid.js.map +1 -0
  281. package/dist/commands/messages/deps.d.ts +6 -0
  282. package/dist/commands/messages/deps.d.ts.map +1 -0
  283. package/dist/commands/messages/deps.js +2 -0
  284. package/dist/commands/messages/deps.js.map +1 -0
  285. package/dist/commands/messages/index.d.ts +28 -0
  286. package/dist/commands/messages/index.d.ts.map +1 -0
  287. package/dist/commands/messages/index.js +166 -0
  288. package/dist/commands/messages/index.js.map +1 -0
  289. package/dist/commands/messages/index.test.d.ts +8 -0
  290. package/dist/commands/messages/index.test.d.ts.map +1 -0
  291. package/dist/commands/messages/index.test.js +159 -0
  292. package/dist/commands/messages/index.test.js.map +1 -0
  293. package/dist/commands/opencode-install/deps.d.ts +32 -0
  294. package/dist/commands/opencode-install/deps.d.ts.map +1 -0
  295. package/dist/commands/opencode-install/deps.js +8 -0
  296. package/dist/commands/opencode-install/deps.js.map +1 -0
  297. package/dist/commands/opencode-install/index.d.ts +31 -0
  298. package/dist/commands/opencode-install/index.d.ts.map +1 -0
  299. package/dist/commands/opencode-install/index.js +440 -0
  300. package/dist/commands/opencode-install/index.js.map +1 -0
  301. package/dist/commands/opencode-install/index.test.d.ts +8 -0
  302. package/dist/commands/opencode-install/index.test.d.ts.map +1 -0
  303. package/dist/commands/opencode-install/index.test.js +123 -0
  304. package/dist/commands/opencode-install/index.test.js.map +1 -0
  305. package/dist/commands/register-agent/deps.d.ts +12 -0
  306. package/dist/commands/register-agent/deps.d.ts.map +1 -0
  307. package/dist/commands/register-agent/deps.js +8 -0
  308. package/dist/commands/register-agent/deps.js.map +1 -0
  309. package/dist/commands/register-agent/index.d.ts +15 -0
  310. package/dist/commands/register-agent/index.d.ts.map +1 -0
  311. package/dist/commands/register-agent/index.js +118 -0
  312. package/dist/commands/register-agent/index.js.map +1 -0
  313. package/dist/commands/register-agent/index.test.d.ts +9 -0
  314. package/dist/commands/register-agent/index.test.d.ts.map +1 -0
  315. package/dist/commands/register-agent/index.test.js +204 -0
  316. package/dist/commands/register-agent/index.test.js.map +1 -0
  317. package/dist/commands/report-progress/deps.d.ts +9 -0
  318. package/dist/commands/report-progress/deps.d.ts.map +1 -0
  319. package/dist/commands/report-progress/deps.js +5 -0
  320. package/dist/commands/report-progress/deps.js.map +1 -0
  321. package/dist/commands/report-progress/index.d.ts +14 -0
  322. package/dist/commands/report-progress/index.d.ts.map +1 -0
  323. package/dist/commands/report-progress/index.js +110 -0
  324. package/dist/commands/report-progress/index.js.map +1 -0
  325. package/dist/commands/report-progress/index.test.d.ts +8 -0
  326. package/dist/commands/report-progress/index.test.d.ts.map +1 -0
  327. package/dist/commands/report-progress/index.test.js +114 -0
  328. package/dist/commands/report-progress/index.test.js.map +1 -0
  329. package/dist/commands/skill/deps.d.ts +9 -0
  330. package/dist/commands/skill/deps.d.ts.map +1 -0
  331. package/dist/commands/skill/deps.js +5 -0
  332. package/dist/commands/skill/deps.js.map +1 -0
  333. package/dist/commands/skill/index.d.ts +20 -0
  334. package/dist/commands/skill/index.d.ts.map +1 -0
  335. package/dist/commands/skill/index.js +86 -0
  336. package/dist/commands/skill/index.js.map +1 -0
  337. package/dist/commands/skill/index.test.d.ts +8 -0
  338. package/dist/commands/skill/index.test.d.ts.map +1 -0
  339. package/dist/commands/skill/index.test.js +166 -0
  340. package/dist/commands/skill/index.test.js.map +1 -0
  341. package/dist/commands/task/read/deps.d.ts +18 -0
  342. package/dist/commands/task/read/deps.d.ts.map +1 -0
  343. package/dist/commands/task/read/deps.js +8 -0
  344. package/dist/commands/task/read/deps.js.map +1 -0
  345. package/dist/commands/task/read/index.d.ts +17 -0
  346. package/dist/commands/task/read/index.d.ts.map +1 -0
  347. package/dist/commands/task/read/index.js +144 -0
  348. package/dist/commands/task/read/index.js.map +1 -0
  349. package/dist/commands/telegram/deps.d.ts +13 -0
  350. package/dist/commands/telegram/deps.d.ts.map +1 -0
  351. package/dist/commands/telegram/deps.js +5 -0
  352. package/dist/commands/telegram/deps.js.map +1 -0
  353. package/dist/commands/telegram/index.d.ts +18 -0
  354. package/dist/commands/telegram/index.d.ts.map +1 -0
  355. package/dist/commands/telegram/index.js +94 -0
  356. package/dist/commands/telegram/index.js.map +1 -0
  357. package/dist/commands/update/deps.d.ts +21 -0
  358. package/dist/commands/update/deps.d.ts.map +1 -0
  359. package/dist/commands/update/deps.js +8 -0
  360. package/dist/commands/update/deps.js.map +1 -0
  361. package/dist/commands/update/index.d.ts +8 -0
  362. package/dist/commands/update/index.d.ts.map +1 -0
  363. package/dist/commands/update/index.js +70 -0
  364. package/dist/commands/update/index.js.map +1 -0
  365. package/dist/commands/update/index.test.d.ts +8 -0
  366. package/dist/commands/update/index.test.d.ts.map +1 -0
  367. package/dist/commands/update/index.test.js +108 -0
  368. package/dist/commands/update/index.test.js.map +1 -0
  369. package/dist/commands/workflow/deps.d.ts +9 -0
  370. package/dist/commands/workflow/deps.d.ts.map +1 -0
  371. package/dist/commands/workflow/deps.js +5 -0
  372. package/dist/commands/workflow/deps.js.map +1 -0
  373. package/dist/commands/workflow/index.d.ts +73 -0
  374. package/dist/commands/workflow/index.d.ts.map +1 -0
  375. package/dist/commands/workflow/index.js +545 -0
  376. package/dist/commands/workflow/index.js.map +1 -0
  377. package/dist/commands/workflow/index.test.d.ts +7 -0
  378. package/dist/commands/workflow/index.test.d.ts.map +1 -0
  379. package/dist/commands/workflow/index.test.js +315 -0
  380. package/dist/commands/workflow/index.test.js.map +1 -0
  381. package/dist/config/defaults.d.ts +10 -0
  382. package/dist/config/defaults.d.ts.map +1 -0
  383. package/dist/config/defaults.js +79 -0
  384. package/dist/config/defaults.js.map +1 -0
  385. package/dist/config/loader.d.ts +52 -0
  386. package/dist/config/loader.d.ts.map +1 -0
  387. package/dist/config/loader.js +202 -0
  388. package/dist/config/loader.js.map +1 -0
  389. package/dist/config/schema.d.ts +50 -0
  390. package/dist/config/schema.d.ts.map +1 -0
  391. package/dist/config/schema.js +99 -0
  392. package/dist/config/schema.js.map +1 -0
  393. package/dist/config.d.ts +14 -0
  394. package/dist/config.d.ts.map +1 -0
  395. package/dist/config.js +14 -0
  396. package/dist/config.js.map +1 -0
  397. package/dist/events/daemon/agent/on-agent-exited.d.ts +26 -0
  398. package/dist/events/daemon/agent/on-agent-exited.d.ts.map +1 -0
  399. package/dist/events/daemon/agent/on-agent-exited.js +20 -0
  400. package/dist/events/daemon/agent/on-agent-exited.js.map +1 -0
  401. package/dist/events/daemon/agent/on-agent-started.d.ts +16 -0
  402. package/dist/events/daemon/agent/on-agent-started.d.ts.map +1 -0
  403. package/dist/events/daemon/agent/on-agent-started.js +11 -0
  404. package/dist/events/daemon/agent/on-agent-started.js.map +1 -0
  405. package/dist/events/daemon/agent/on-agent-stopped.d.ts +14 -0
  406. package/dist/events/daemon/agent/on-agent-stopped.d.ts.map +1 -0
  407. package/dist/events/daemon/agent/on-agent-stopped.js +11 -0
  408. package/dist/events/daemon/agent/on-agent-stopped.js.map +1 -0
  409. package/dist/events/daemon/agent/on-request-start-agent.d.ts +19 -0
  410. package/dist/events/daemon/agent/on-request-start-agent.d.ts.map +1 -0
  411. package/dist/events/daemon/agent/on-request-start-agent.js +55 -0
  412. package/dist/events/daemon/agent/on-request-start-agent.js.map +1 -0
  413. package/dist/events/daemon/agent/on-request-start-agent.test.d.ts +2 -0
  414. package/dist/events/daemon/agent/on-request-start-agent.test.d.ts.map +1 -0
  415. package/dist/events/daemon/agent/on-request-start-agent.test.js +96 -0
  416. package/dist/events/daemon/agent/on-request-start-agent.test.js.map +1 -0
  417. package/dist/events/daemon/agent/on-request-stop-agent.d.ts +16 -0
  418. package/dist/events/daemon/agent/on-request-stop-agent.d.ts.map +1 -0
  419. package/dist/events/daemon/agent/on-request-stop-agent.js +19 -0
  420. package/dist/events/daemon/agent/on-request-stop-agent.js.map +1 -0
  421. package/dist/events/daemon/event-bus.d.ts +87 -0
  422. package/dist/events/daemon/event-bus.d.ts.map +1 -0
  423. package/dist/events/daemon/event-bus.js +50 -0
  424. package/dist/events/daemon/event-bus.js.map +1 -0
  425. package/dist/events/daemon/register-listeners.d.ts +9 -0
  426. package/dist/events/daemon/register-listeners.d.ts.map +1 -0
  427. package/dist/events/daemon/register-listeners.js +21 -0
  428. package/dist/events/daemon/register-listeners.js.map +1 -0
  429. package/dist/events/lifecycle/on-daemon-shutdown.d.ts +9 -0
  430. package/dist/events/lifecycle/on-daemon-shutdown.d.ts.map +1 -0
  431. package/dist/events/lifecycle/on-daemon-shutdown.js +43 -0
  432. package/dist/events/lifecycle/on-daemon-shutdown.js.map +1 -0
  433. package/dist/index.d.ts +9 -0
  434. package/dist/index.d.ts.map +1 -0
  435. package/dist/index.js +210 -25
  436. package/dist/index.js.map +1 -0
  437. package/dist/infrastructure/auth/middleware.d.ts +21 -0
  438. package/dist/infrastructure/auth/middleware.d.ts.map +1 -0
  439. package/dist/infrastructure/auth/middleware.js +106 -0
  440. package/dist/infrastructure/auth/middleware.js.map +1 -0
  441. package/dist/infrastructure/auth/storage.d.ts +59 -0
  442. package/dist/infrastructure/auth/storage.d.ts.map +1 -0
  443. package/dist/infrastructure/auth/storage.js +242 -0
  444. package/dist/infrastructure/auth/storage.js.map +1 -0
  445. package/dist/infrastructure/convex/client.d.ts +28 -0
  446. package/dist/infrastructure/convex/client.d.ts.map +1 -0
  447. package/dist/infrastructure/convex/client.js +77 -0
  448. package/dist/infrastructure/convex/client.js.map +1 -0
  449. package/dist/infrastructure/deps/backend.d.ts +13 -0
  450. package/dist/infrastructure/deps/backend.d.ts.map +1 -0
  451. package/dist/infrastructure/deps/backend.js +8 -0
  452. package/dist/infrastructure/deps/backend.js.map +1 -0
  453. package/dist/infrastructure/deps/clock.d.ts +13 -0
  454. package/dist/infrastructure/deps/clock.d.ts.map +1 -0
  455. package/dist/infrastructure/deps/clock.js +8 -0
  456. package/dist/infrastructure/deps/clock.js.map +1 -0
  457. package/dist/infrastructure/deps/fs.d.ts +12 -0
  458. package/dist/infrastructure/deps/fs.d.ts.map +1 -0
  459. package/dist/infrastructure/deps/fs.js +8 -0
  460. package/dist/infrastructure/deps/fs.js.map +1 -0
  461. package/dist/infrastructure/deps/index.d.ts +12 -0
  462. package/dist/infrastructure/deps/index.d.ts.map +1 -0
  463. package/dist/infrastructure/deps/index.js +8 -0
  464. package/dist/infrastructure/deps/index.js.map +1 -0
  465. package/dist/infrastructure/deps/process.d.ts +11 -0
  466. package/dist/infrastructure/deps/process.d.ts.map +1 -0
  467. package/dist/infrastructure/deps/process.js +8 -0
  468. package/dist/infrastructure/deps/process.js.map +1 -0
  469. package/dist/infrastructure/deps/session.d.ts +16 -0
  470. package/dist/infrastructure/deps/session.d.ts.map +1 -0
  471. package/dist/infrastructure/deps/session.js +8 -0
  472. package/dist/infrastructure/deps/session.js.map +1 -0
  473. package/dist/infrastructure/git/git-reader.d.ts +206 -0
  474. package/dist/infrastructure/git/git-reader.d.ts.map +1 -0
  475. package/dist/infrastructure/git/git-reader.js +711 -0
  476. package/dist/infrastructure/git/git-reader.js.map +1 -0
  477. package/dist/infrastructure/git/git-reader.test.d.ts +8 -0
  478. package/dist/infrastructure/git/git-reader.test.d.ts.map +1 -0
  479. package/dist/infrastructure/git/git-reader.test.js +598 -0
  480. package/dist/infrastructure/git/git-reader.test.js.map +1 -0
  481. package/dist/infrastructure/git/index.d.ts +9 -0
  482. package/dist/infrastructure/git/index.d.ts.map +1 -0
  483. package/dist/infrastructure/git/index.js +8 -0
  484. package/dist/infrastructure/git/index.js.map +1 -0
  485. package/dist/infrastructure/git/types.d.ts +102 -0
  486. package/dist/infrastructure/git/types.d.ts.map +1 -0
  487. package/dist/infrastructure/git/types.js +20 -0
  488. package/dist/infrastructure/git/types.js.map +1 -0
  489. package/dist/infrastructure/history/storage.d.ts +21 -0
  490. package/dist/infrastructure/history/storage.d.ts.map +1 -0
  491. package/dist/infrastructure/history/storage.js +56 -0
  492. package/dist/infrastructure/history/storage.js.map +1 -0
  493. package/dist/infrastructure/lifecycle-heartbeat.d.ts +18 -0
  494. package/dist/infrastructure/lifecycle-heartbeat.d.ts.map +1 -0
  495. package/dist/infrastructure/lifecycle-heartbeat.js +21 -0
  496. package/dist/infrastructure/lifecycle-heartbeat.js.map +1 -0
  497. package/dist/infrastructure/local-actions/execute-local-action.d.ts +30 -0
  498. package/dist/infrastructure/local-actions/execute-local-action.d.ts.map +1 -0
  499. package/dist/infrastructure/local-actions/execute-local-action.js +76 -0
  500. package/dist/infrastructure/local-actions/execute-local-action.js.map +1 -0
  501. package/dist/infrastructure/local-actions/index.d.ts +9 -0
  502. package/dist/infrastructure/local-actions/index.d.ts.map +1 -0
  503. package/dist/infrastructure/local-actions/index.js +8 -0
  504. package/dist/infrastructure/local-actions/index.js.map +1 -0
  505. package/dist/infrastructure/local-api/cors.d.ts +19 -0
  506. package/dist/infrastructure/local-api/cors.d.ts.map +1 -0
  507. package/dist/infrastructure/local-api/cors.js +50 -0
  508. package/dist/infrastructure/local-api/cors.js.map +1 -0
  509. package/dist/infrastructure/local-api/identity.test.d.ts +8 -0
  510. package/dist/infrastructure/local-api/identity.test.d.ts.map +1 -0
  511. package/dist/infrastructure/local-api/identity.test.js +71 -0
  512. package/dist/infrastructure/local-api/identity.test.js.map +1 -0
  513. package/dist/infrastructure/local-api/index.d.ts +10 -0
  514. package/dist/infrastructure/local-api/index.d.ts.map +1 -0
  515. package/dist/infrastructure/local-api/index.js +8 -0
  516. package/dist/infrastructure/local-api/index.js.map +1 -0
  517. package/dist/infrastructure/local-api/open-finder.test.d.ts +13 -0
  518. package/dist/infrastructure/local-api/open-finder.test.d.ts.map +1 -0
  519. package/dist/infrastructure/local-api/open-finder.test.js +112 -0
  520. package/dist/infrastructure/local-api/open-finder.test.js.map +1 -0
  521. package/dist/infrastructure/local-api/open-github-desktop.test.d.ts +12 -0
  522. package/dist/infrastructure/local-api/open-github-desktop.test.d.ts.map +1 -0
  523. package/dist/infrastructure/local-api/open-github-desktop.test.js +129 -0
  524. package/dist/infrastructure/local-api/open-github-desktop.test.js.map +1 -0
  525. package/dist/infrastructure/local-api/open-vscode.test.d.ts +12 -0
  526. package/dist/infrastructure/local-api/open-vscode.test.d.ts.map +1 -0
  527. package/dist/infrastructure/local-api/open-vscode.test.js +130 -0
  528. package/dist/infrastructure/local-api/open-vscode.test.js.map +1 -0
  529. package/dist/infrastructure/local-api/router.d.ts +28 -0
  530. package/dist/infrastructure/local-api/router.d.ts.map +1 -0
  531. package/dist/infrastructure/local-api/router.js +60 -0
  532. package/dist/infrastructure/local-api/router.js.map +1 -0
  533. package/dist/infrastructure/local-api/router.test.d.ts +8 -0
  534. package/dist/infrastructure/local-api/router.test.d.ts.map +1 -0
  535. package/dist/infrastructure/local-api/router.test.js +142 -0
  536. package/dist/infrastructure/local-api/router.test.js.map +1 -0
  537. package/dist/infrastructure/local-api/routes/identity.d.ts +28 -0
  538. package/dist/infrastructure/local-api/routes/identity.d.ts.map +1 -0
  539. package/dist/infrastructure/local-api/routes/identity.js +42 -0
  540. package/dist/infrastructure/local-api/routes/identity.js.map +1 -0
  541. package/dist/infrastructure/local-api/routes/open-finder.d.ts +25 -0
  542. package/dist/infrastructure/local-api/routes/open-finder.d.ts.map +1 -0
  543. package/dist/infrastructure/local-api/routes/open-finder.js +58 -0
  544. package/dist/infrastructure/local-api/routes/open-finder.js.map +1 -0
  545. package/dist/infrastructure/local-api/routes/open-github-desktop.d.ts +21 -0
  546. package/dist/infrastructure/local-api/routes/open-github-desktop.d.ts.map +1 -0
  547. package/dist/infrastructure/local-api/routes/open-github-desktop.js +43 -0
  548. package/dist/infrastructure/local-api/routes/open-github-desktop.js.map +1 -0
  549. package/dist/infrastructure/local-api/routes/open-vscode.d.ts +23 -0
  550. package/dist/infrastructure/local-api/routes/open-vscode.d.ts.map +1 -0
  551. package/dist/infrastructure/local-api/routes/open-vscode.js +51 -0
  552. package/dist/infrastructure/local-api/routes/open-vscode.js.map +1 -0
  553. package/dist/infrastructure/local-api/routes/shared-utils.d.ts +51 -0
  554. package/dist/infrastructure/local-api/routes/shared-utils.d.ts.map +1 -0
  555. package/dist/infrastructure/local-api/routes/shared-utils.js +96 -0
  556. package/dist/infrastructure/local-api/routes/shared-utils.js.map +1 -0
  557. package/dist/infrastructure/local-api/server.d.ts +40 -0
  558. package/dist/infrastructure/local-api/server.d.ts.map +1 -0
  559. package/dist/infrastructure/local-api/server.js +153 -0
  560. package/dist/infrastructure/local-api/server.js.map +1 -0
  561. package/dist/infrastructure/local-api/types.d.ts +48 -0
  562. package/dist/infrastructure/local-api/types.d.ts.map +1 -0
  563. package/dist/infrastructure/local-api/types.js +8 -0
  564. package/dist/infrastructure/local-api/types.js.map +1 -0
  565. package/dist/infrastructure/machine/crash-loop-tracker.d.ts +69 -0
  566. package/dist/infrastructure/machine/crash-loop-tracker.d.ts.map +1 -0
  567. package/dist/infrastructure/machine/crash-loop-tracker.js +116 -0
  568. package/dist/infrastructure/machine/crash-loop-tracker.js.map +1 -0
  569. package/dist/infrastructure/machine/crash-loop-tracker.test.d.ts +8 -0
  570. package/dist/infrastructure/machine/crash-loop-tracker.test.d.ts.map +1 -0
  571. package/dist/infrastructure/machine/crash-loop-tracker.test.js +210 -0
  572. package/dist/infrastructure/machine/crash-loop-tracker.test.js.map +1 -0
  573. package/dist/infrastructure/machine/daemon-state.d.ts +96 -0
  574. package/dist/infrastructure/machine/daemon-state.d.ts.map +1 -0
  575. package/dist/infrastructure/machine/daemon-state.js +183 -0
  576. package/dist/infrastructure/machine/daemon-state.js.map +1 -0
  577. package/dist/infrastructure/machine/daemon-state.test.d.ts +10 -0
  578. package/dist/infrastructure/machine/daemon-state.test.d.ts.map +1 -0
  579. package/dist/infrastructure/machine/daemon-state.test.js +128 -0
  580. package/dist/infrastructure/machine/daemon-state.test.js.map +1 -0
  581. package/dist/infrastructure/machine/detection.d.ts +27 -0
  582. package/dist/infrastructure/machine/detection.d.ts.map +1 -0
  583. package/dist/infrastructure/machine/detection.js +47 -0
  584. package/dist/infrastructure/machine/detection.js.map +1 -0
  585. package/dist/infrastructure/machine/index.d.ts +10 -0
  586. package/dist/infrastructure/machine/index.d.ts.map +1 -0
  587. package/dist/infrastructure/machine/index.js +11 -0
  588. package/dist/infrastructure/machine/index.js.map +1 -0
  589. package/dist/infrastructure/machine/stop-reason.d.ts +26 -0
  590. package/dist/infrastructure/machine/stop-reason.d.ts.map +1 -0
  591. package/dist/infrastructure/machine/stop-reason.js +22 -0
  592. package/dist/infrastructure/machine/stop-reason.js.map +1 -0
  593. package/dist/infrastructure/machine/stop-reason.test.d.ts +2 -0
  594. package/dist/infrastructure/machine/stop-reason.test.d.ts.map +1 -0
  595. package/dist/infrastructure/machine/stop-reason.test.js +32 -0
  596. package/dist/infrastructure/machine/stop-reason.test.js.map +1 -0
  597. package/dist/infrastructure/machine/storage.d.ts +42 -0
  598. package/dist/infrastructure/machine/storage.d.ts.map +1 -0
  599. package/dist/infrastructure/machine/storage.js +156 -0
  600. package/dist/infrastructure/machine/storage.js.map +1 -0
  601. package/dist/infrastructure/machine/types.d.ts +58 -0
  602. package/dist/infrastructure/machine/types.d.ts.map +1 -0
  603. package/dist/infrastructure/machine/types.js +11 -0
  604. package/dist/infrastructure/machine/types.js.map +1 -0
  605. package/dist/infrastructure/retry-queue.d.ts +17 -0
  606. package/dist/infrastructure/retry-queue.d.ts.map +1 -0
  607. package/dist/infrastructure/retry-queue.js +33 -0
  608. package/dist/infrastructure/retry-queue.js.map +1 -0
  609. package/dist/infrastructure/services/agent-process-manager/agent-process-manager.d.ts +142 -0
  610. package/dist/infrastructure/services/agent-process-manager/agent-process-manager.d.ts.map +1 -0
  611. package/dist/infrastructure/services/agent-process-manager/agent-process-manager.js +567 -0
  612. package/dist/infrastructure/services/agent-process-manager/agent-process-manager.js.map +1 -0
  613. package/dist/infrastructure/services/agent-process-manager/agent-process-manager.test.d.ts +2 -0
  614. package/dist/infrastructure/services/agent-process-manager/agent-process-manager.test.d.ts.map +1 -0
  615. package/dist/infrastructure/services/agent-process-manager/agent-process-manager.test.js +692 -0
  616. package/dist/infrastructure/services/agent-process-manager/agent-process-manager.test.js.map +1 -0
  617. package/dist/infrastructure/services/harness-spawning/harness-spawning-service.d.ts +47 -0
  618. package/dist/infrastructure/services/harness-spawning/harness-spawning-service.d.ts.map +1 -0
  619. package/dist/infrastructure/services/harness-spawning/harness-spawning-service.js +68 -0
  620. package/dist/infrastructure/services/harness-spawning/harness-spawning-service.js.map +1 -0
  621. package/dist/infrastructure/services/harness-spawning/harness-spawning-service.test.d.ts +2 -0
  622. package/dist/infrastructure/services/harness-spawning/harness-spawning-service.test.d.ts.map +1 -0
  623. package/dist/infrastructure/services/harness-spawning/harness-spawning-service.test.js +149 -0
  624. package/dist/infrastructure/services/harness-spawning/harness-spawning-service.test.js.map +1 -0
  625. package/dist/infrastructure/services/harness-spawning/index.d.ts +5 -0
  626. package/dist/infrastructure/services/harness-spawning/index.d.ts.map +1 -0
  627. package/dist/infrastructure/services/harness-spawning/index.js +3 -0
  628. package/dist/infrastructure/services/harness-spawning/index.js.map +1 -0
  629. package/dist/infrastructure/services/harness-spawning/rate-limiter.d.ts +45 -0
  630. package/dist/infrastructure/services/harness-spawning/rate-limiter.d.ts.map +1 -0
  631. package/dist/infrastructure/services/harness-spawning/rate-limiter.js +84 -0
  632. package/dist/infrastructure/services/harness-spawning/rate-limiter.js.map +1 -0
  633. package/dist/infrastructure/services/harness-spawning/rate-limiter.test.d.ts +2 -0
  634. package/dist/infrastructure/services/harness-spawning/rate-limiter.test.d.ts.map +1 -0
  635. package/dist/infrastructure/services/harness-spawning/rate-limiter.test.js +179 -0
  636. package/dist/infrastructure/services/harness-spawning/rate-limiter.test.js.map +1 -0
  637. package/dist/infrastructure/services/remote-agents/base-cli-agent-service.d.ts +77 -0
  638. package/dist/infrastructure/services/remote-agents/base-cli-agent-service.d.ts.map +1 -0
  639. package/dist/infrastructure/services/remote-agents/base-cli-agent-service.js +149 -0
  640. package/dist/infrastructure/services/remote-agents/base-cli-agent-service.js.map +1 -0
  641. package/dist/infrastructure/services/remote-agents/base-cli-agent-service.test.d.ts +2 -0
  642. package/dist/infrastructure/services/remote-agents/base-cli-agent-service.test.d.ts.map +1 -0
  643. package/dist/infrastructure/services/remote-agents/base-cli-agent-service.test.js +273 -0
  644. package/dist/infrastructure/services/remote-agents/base-cli-agent-service.test.js.map +1 -0
  645. package/dist/infrastructure/services/remote-agents/claude/claude-code-agent-service.d.ts +30 -0
  646. package/dist/infrastructure/services/remote-agents/claude/claude-code-agent-service.d.ts.map +1 -0
  647. package/dist/infrastructure/services/remote-agents/claude/claude-code-agent-service.js +186 -0
  648. package/dist/infrastructure/services/remote-agents/claude/claude-code-agent-service.js.map +1 -0
  649. package/dist/infrastructure/services/remote-agents/claude/claude-stream-reader.d.ts +42 -0
  650. package/dist/infrastructure/services/remote-agents/claude/claude-stream-reader.d.ts.map +1 -0
  651. package/dist/infrastructure/services/remote-agents/claude/claude-stream-reader.js +92 -0
  652. package/dist/infrastructure/services/remote-agents/claude/claude-stream-reader.js.map +1 -0
  653. package/dist/infrastructure/services/remote-agents/claude/index.d.ts +2 -0
  654. package/dist/infrastructure/services/remote-agents/claude/index.d.ts.map +1 -0
  655. package/dist/infrastructure/services/remote-agents/claude/index.js +2 -0
  656. package/dist/infrastructure/services/remote-agents/claude/index.js.map +1 -0
  657. package/dist/infrastructure/services/remote-agents/copilot/copilot-agent-service.d.ts +44 -0
  658. package/dist/infrastructure/services/remote-agents/copilot/copilot-agent-service.d.ts.map +1 -0
  659. package/dist/infrastructure/services/remote-agents/copilot/copilot-agent-service.js +160 -0
  660. package/dist/infrastructure/services/remote-agents/copilot/copilot-agent-service.js.map +1 -0
  661. package/dist/infrastructure/services/remote-agents/copilot/copilot-stream-reader.d.ts +59 -0
  662. package/dist/infrastructure/services/remote-agents/copilot/copilot-stream-reader.d.ts.map +1 -0
  663. package/dist/infrastructure/services/remote-agents/copilot/copilot-stream-reader.js +100 -0
  664. package/dist/infrastructure/services/remote-agents/copilot/copilot-stream-reader.js.map +1 -0
  665. package/dist/infrastructure/services/remote-agents/copilot/copilot-stream-reader.test.d.ts +2 -0
  666. package/dist/infrastructure/services/remote-agents/copilot/copilot-stream-reader.test.d.ts.map +1 -0
  667. package/dist/infrastructure/services/remote-agents/copilot/copilot-stream-reader.test.js +105 -0
  668. package/dist/infrastructure/services/remote-agents/copilot/copilot-stream-reader.test.js.map +1 -0
  669. package/dist/infrastructure/services/remote-agents/copilot/index.d.ts +3 -0
  670. package/dist/infrastructure/services/remote-agents/copilot/index.d.ts.map +1 -0
  671. package/dist/infrastructure/services/remote-agents/copilot/index.js +3 -0
  672. package/dist/infrastructure/services/remote-agents/copilot/index.js.map +1 -0
  673. package/dist/infrastructure/services/remote-agents/cursor/cursor-agent-service.d.ts +29 -0
  674. package/dist/infrastructure/services/remote-agents/cursor/cursor-agent-service.d.ts.map +1 -0
  675. package/dist/infrastructure/services/remote-agents/cursor/cursor-agent-service.js +219 -0
  676. package/dist/infrastructure/services/remote-agents/cursor/cursor-agent-service.js.map +1 -0
  677. package/dist/infrastructure/services/remote-agents/cursor/cursor-agent-service.test.d.ts +2 -0
  678. package/dist/infrastructure/services/remote-agents/cursor/cursor-agent-service.test.d.ts.map +1 -0
  679. package/dist/infrastructure/services/remote-agents/cursor/cursor-agent-service.test.js +223 -0
  680. package/dist/infrastructure/services/remote-agents/cursor/cursor-agent-service.test.js.map +1 -0
  681. package/dist/infrastructure/services/remote-agents/cursor/cursor-stream-reader.d.ts +41 -0
  682. package/dist/infrastructure/services/remote-agents/cursor/cursor-stream-reader.d.ts.map +1 -0
  683. package/dist/infrastructure/services/remote-agents/cursor/cursor-stream-reader.js +95 -0
  684. package/dist/infrastructure/services/remote-agents/cursor/cursor-stream-reader.js.map +1 -0
  685. package/dist/infrastructure/services/remote-agents/cursor/cursor-stream-reader.test.d.ts +2 -0
  686. package/dist/infrastructure/services/remote-agents/cursor/cursor-stream-reader.test.d.ts.map +1 -0
  687. package/dist/infrastructure/services/remote-agents/cursor/cursor-stream-reader.test.js +334 -0
  688. package/dist/infrastructure/services/remote-agents/cursor/cursor-stream-reader.test.js.map +1 -0
  689. package/dist/infrastructure/services/remote-agents/cursor/index.d.ts +3 -0
  690. package/dist/infrastructure/services/remote-agents/cursor/index.d.ts.map +1 -0
  691. package/dist/infrastructure/services/remote-agents/cursor/index.js +2 -0
  692. package/dist/infrastructure/services/remote-agents/cursor/index.js.map +1 -0
  693. package/dist/infrastructure/services/remote-agents/index.d.ts +8 -0
  694. package/dist/infrastructure/services/remote-agents/index.d.ts.map +1 -0
  695. package/dist/infrastructure/services/remote-agents/index.js +7 -0
  696. package/dist/infrastructure/services/remote-agents/index.js.map +1 -0
  697. package/dist/infrastructure/services/remote-agents/init-registry.d.ts +3 -0
  698. package/dist/infrastructure/services/remote-agents/init-registry.d.ts.map +1 -0
  699. package/dist/infrastructure/services/remote-agents/init-registry.js +19 -0
  700. package/dist/infrastructure/services/remote-agents/init-registry.js.map +1 -0
  701. package/dist/infrastructure/services/remote-agents/opencode/index.d.ts +4 -0
  702. package/dist/infrastructure/services/remote-agents/opencode/index.d.ts.map +1 -0
  703. package/dist/infrastructure/services/remote-agents/opencode/index.js +3 -0
  704. package/dist/infrastructure/services/remote-agents/opencode/index.js.map +1 -0
  705. package/dist/infrastructure/services/remote-agents/opencode/opencode-agent-service.d.ts +32 -0
  706. package/dist/infrastructure/services/remote-agents/opencode/opencode-agent-service.d.ts.map +1 -0
  707. package/dist/infrastructure/services/remote-agents/opencode/opencode-agent-service.js +225 -0
  708. package/dist/infrastructure/services/remote-agents/opencode/opencode-agent-service.js.map +1 -0
  709. package/dist/infrastructure/services/remote-agents/opencode/opencode-agent-service.test.d.ts +2 -0
  710. package/dist/infrastructure/services/remote-agents/opencode/opencode-agent-service.test.d.ts.map +1 -0
  711. package/dist/infrastructure/services/remote-agents/opencode/opencode-agent-service.test.js +226 -0
  712. package/dist/infrastructure/services/remote-agents/opencode/opencode-agent-service.test.js.map +1 -0
  713. package/dist/infrastructure/services/remote-agents/opencode/opencode-json-reader.d.ts +46 -0
  714. package/dist/infrastructure/services/remote-agents/opencode/opencode-json-reader.d.ts.map +1 -0
  715. package/dist/infrastructure/services/remote-agents/opencode/opencode-json-reader.js +104 -0
  716. package/dist/infrastructure/services/remote-agents/opencode/opencode-json-reader.js.map +1 -0
  717. package/dist/infrastructure/services/remote-agents/opencode/opencode-json-reader.test.d.ts +2 -0
  718. package/dist/infrastructure/services/remote-agents/opencode/opencode-json-reader.test.d.ts.map +1 -0
  719. package/dist/infrastructure/services/remote-agents/opencode/opencode-json-reader.test.js +268 -0
  720. package/dist/infrastructure/services/remote-agents/opencode/opencode-json-reader.test.js.map +1 -0
  721. package/dist/infrastructure/services/remote-agents/pi/index.d.ts +3 -0
  722. package/dist/infrastructure/services/remote-agents/pi/index.d.ts.map +1 -0
  723. package/dist/infrastructure/services/remote-agents/pi/index.js +2 -0
  724. package/dist/infrastructure/services/remote-agents/pi/index.js.map +1 -0
  725. package/dist/infrastructure/services/remote-agents/pi/pi-agent-service.d.ts +35 -0
  726. package/dist/infrastructure/services/remote-agents/pi/pi-agent-service.d.ts.map +1 -0
  727. package/dist/infrastructure/services/remote-agents/pi/pi-agent-service.js +253 -0
  728. package/dist/infrastructure/services/remote-agents/pi/pi-agent-service.js.map +1 -0
  729. package/dist/infrastructure/services/remote-agents/pi/pi-agent-service.test.d.ts +2 -0
  730. package/dist/infrastructure/services/remote-agents/pi/pi-agent-service.test.d.ts.map +1 -0
  731. package/dist/infrastructure/services/remote-agents/pi/pi-agent-service.test.js +348 -0
  732. package/dist/infrastructure/services/remote-agents/pi/pi-agent-service.test.js.map +1 -0
  733. package/dist/infrastructure/services/remote-agents/pi/pi-rpc-reader.d.ts +50 -0
  734. package/dist/infrastructure/services/remote-agents/pi/pi-rpc-reader.d.ts.map +1 -0
  735. package/dist/infrastructure/services/remote-agents/pi/pi-rpc-reader.js +120 -0
  736. package/dist/infrastructure/services/remote-agents/pi/pi-rpc-reader.js.map +1 -0
  737. package/dist/infrastructure/services/remote-agents/pi/pi-rpc-reader.test.d.ts +2 -0
  738. package/dist/infrastructure/services/remote-agents/pi/pi-rpc-reader.test.d.ts.map +1 -0
  739. package/dist/infrastructure/services/remote-agents/pi/pi-rpc-reader.test.js +288 -0
  740. package/dist/infrastructure/services/remote-agents/pi/pi-rpc-reader.test.js.map +1 -0
  741. package/dist/infrastructure/services/remote-agents/registry.d.ts +8 -0
  742. package/dist/infrastructure/services/remote-agents/registry.d.ts.map +1 -0
  743. package/dist/infrastructure/services/remote-agents/registry.js +14 -0
  744. package/dist/infrastructure/services/remote-agents/registry.js.map +1 -0
  745. package/dist/infrastructure/services/remote-agents/remote-agent-service.d.ts +79 -0
  746. package/dist/infrastructure/services/remote-agents/remote-agent-service.d.ts.map +1 -0
  747. package/dist/infrastructure/services/remote-agents/remote-agent-service.js +9 -0
  748. package/dist/infrastructure/services/remote-agents/remote-agent-service.js.map +1 -0
  749. package/dist/infrastructure/services/workspace/command-discovery.d.ts +65 -0
  750. package/dist/infrastructure/services/workspace/command-discovery.d.ts.map +1 -0
  751. package/dist/infrastructure/services/workspace/command-discovery.js +193 -0
  752. package/dist/infrastructure/services/workspace/command-discovery.js.map +1 -0
  753. package/dist/infrastructure/services/workspace/command-discovery.test.d.ts +7 -0
  754. package/dist/infrastructure/services/workspace/command-discovery.test.d.ts.map +1 -0
  755. package/dist/infrastructure/services/workspace/command-discovery.test.js +182 -0
  756. package/dist/infrastructure/services/workspace/command-discovery.test.js.map +1 -0
  757. package/dist/infrastructure/services/workspace/file-tree-scanner.d.ts +47 -0
  758. package/dist/infrastructure/services/workspace/file-tree-scanner.d.ts.map +1 -0
  759. package/dist/infrastructure/services/workspace/file-tree-scanner.js +159 -0
  760. package/dist/infrastructure/services/workspace/file-tree-scanner.js.map +1 -0
  761. package/dist/infrastructure/services/workspace/file-tree-scanner.test.d.ts +2 -0
  762. package/dist/infrastructure/services/workspace/file-tree-scanner.test.d.ts.map +1 -0
  763. package/dist/infrastructure/services/workspace/file-tree-scanner.test.js +132 -0
  764. package/dist/infrastructure/services/workspace/file-tree-scanner.test.js.map +1 -0
  765. package/dist/infrastructure/services/workspace/workspace-resolver.d.ts +34 -0
  766. package/dist/infrastructure/services/workspace/workspace-resolver.d.ts.map +1 -0
  767. package/dist/infrastructure/services/workspace/workspace-resolver.js +187 -0
  768. package/dist/infrastructure/services/workspace/workspace-resolver.js.map +1 -0
  769. package/dist/infrastructure/services/workspace/workspace-resolver.test.d.ts +5 -0
  770. package/dist/infrastructure/services/workspace/workspace-resolver.test.d.ts.map +1 -0
  771. package/dist/infrastructure/services/workspace/workspace-resolver.test.js +152 -0
  772. package/dist/infrastructure/services/workspace/workspace-resolver.test.js.map +1 -0
  773. package/dist/tools/index.d.ts +7 -0
  774. package/dist/tools/index.d.ts.map +1 -0
  775. package/dist/tools/index.js +5 -0
  776. package/dist/tools/index.js.map +1 -0
  777. package/dist/tools/output.d.ts +50 -0
  778. package/dist/tools/output.d.ts.map +1 -0
  779. package/dist/tools/output.js +78 -0
  780. package/dist/tools/output.js.map +1 -0
  781. package/dist/tools/output.test.d.ts +8 -0
  782. package/dist/tools/output.test.d.ts.map +1 -0
  783. package/dist/tools/output.test.js +120 -0
  784. package/dist/tools/output.test.js.map +1 -0
  785. package/dist/tools/parse-pdf/deps.d.ts +42 -0
  786. package/dist/tools/parse-pdf/deps.d.ts.map +1 -0
  787. package/dist/tools/parse-pdf/deps.js +8 -0
  788. package/dist/tools/parse-pdf/deps.js.map +1 -0
  789. package/dist/tools/parse-pdf/index.d.ts +18 -0
  790. package/dist/tools/parse-pdf/index.d.ts.map +1 -0
  791. package/dist/tools/parse-pdf/index.js +160 -0
  792. package/dist/tools/parse-pdf/index.js.map +1 -0
  793. package/dist/tools/parse-pdf/index.test.d.ts +8 -0
  794. package/dist/tools/parse-pdf/index.test.d.ts.map +1 -0
  795. package/dist/tools/parse-pdf/index.test.js +183 -0
  796. package/dist/tools/parse-pdf/index.test.js.map +1 -0
  797. package/dist/tools/types.d.ts +12 -0
  798. package/dist/tools/types.d.ts.map +1 -0
  799. package/dist/tools/types.js +5 -0
  800. package/dist/tools/types.js.map +1 -0
  801. package/dist/utils/convex-error.d.ts +19 -0
  802. package/dist/utils/convex-error.d.ts.map +1 -0
  803. package/dist/utils/convex-error.js +38 -0
  804. package/dist/utils/convex-error.js.map +1 -0
  805. package/dist/utils/convex-error.test.d.ts +7 -0
  806. package/dist/utils/convex-error.test.d.ts.map +1 -0
  807. package/dist/utils/convex-error.test.js +71 -0
  808. package/dist/utils/convex-error.test.js.map +1 -0
  809. package/dist/utils/error-formatting.d.ts +33 -0
  810. package/dist/utils/error-formatting.d.ts.map +1 -0
  811. package/dist/utils/error-formatting.js +96 -0
  812. package/dist/utils/error-formatting.js.map +1 -0
  813. package/dist/utils/file-content.d.ts +24 -0
  814. package/dist/utils/file-content.d.ts.map +1 -0
  815. package/dist/utils/file-content.js +35 -0
  816. package/dist/utils/file-content.js.map +1 -0
  817. package/dist/utils/serialization/decode/index.d.ts +71 -0
  818. package/dist/utils/serialization/decode/index.d.ts.map +1 -0
  819. package/dist/utils/serialization/decode/index.js +167 -0
  820. package/dist/utils/serialization/decode/index.js.map +1 -0
  821. package/dist/utils/serialization/decode/index.test.d.ts +5 -0
  822. package/dist/utils/serialization/decode/index.test.d.ts.map +1 -0
  823. package/dist/utils/serialization/decode/index.test.js +226 -0
  824. package/dist/utils/serialization/decode/index.test.js.map +1 -0
  825. package/dist/utils/stdin.d.ts +6 -0
  826. package/dist/utils/stdin.d.ts.map +1 -0
  827. package/dist/utils/stdin.js +19 -0
  828. package/dist/utils/stdin.js.map +1 -0
  829. package/dist/utils/terminal-safety.d.ts +7 -0
  830. package/dist/utils/terminal-safety.d.ts.map +1 -0
  831. package/dist/utils/terminal-safety.js +17 -0
  832. package/dist/utils/terminal-safety.js.map +1 -0
  833. package/dist/version.d.ts +14 -0
  834. package/dist/version.d.ts.map +1 -0
  835. package/dist/version.js +43 -0
  836. package/dist/version.js.map +1 -0
  837. package/package.json +2 -2
@@ -0,0 +1,711 @@
1
+ /**
2
+ * Git command execution wrappers.
3
+ *
4
+ * All functions return discriminated unions — no throws.
5
+ * Errors from git (non-zero exit) or missing git installation are
6
+ * captured and returned as `{ status: 'error' }` or `{ status: 'not_found' }`.
7
+ */
8
+ import { exec } from 'node:child_process';
9
+ import { promisify } from 'node:util';
10
+ import { FULL_DIFF_MAX_BYTES } from './types.js';
11
+ const execAsync = promisify(exec);
12
+ // ─── Internal Helpers ────────────────────────────────────────────────────────
13
+ /**
14
+ * Run a git command in `cwd`.
15
+ * Returns `{ stdout, stderr }` on success, `{ error }` on failure.
16
+ * Never throws.
17
+ */
18
+ async function runGit(args, cwd) {
19
+ try {
20
+ const result = await execAsync(`git ${args}`, {
21
+ cwd,
22
+ // Disable paging and colour for scriptable output
23
+ env: { ...process.env, GIT_TERMINAL_PROMPT: '0', GIT_PAGER: 'cat', NO_COLOR: '1' },
24
+ // Increase buffer for large diffs; we'll cap in the caller
25
+ maxBuffer: FULL_DIFF_MAX_BYTES + 64 * 1024,
26
+ });
27
+ return result;
28
+ }
29
+ catch (err) {
30
+ return { error: err };
31
+ }
32
+ }
33
+ /** Returns true if the error message indicates git is not installed. */
34
+ function isGitNotInstalled(message) {
35
+ return (message.includes('command not found') ||
36
+ message.includes('ENOENT') ||
37
+ message.includes('not found') ||
38
+ message.includes("'git' is not recognized"));
39
+ }
40
+ /** Returns true if the error message indicates this is not a git repository. */
41
+ function isNotAGitRepo(message) {
42
+ return message.includes('not a git repository') || message.includes('Not a git repository');
43
+ }
44
+ /** Returns true if the error message indicates permission was denied. */
45
+ function isPermissionDenied(message) {
46
+ return message.includes('Permission denied') || message.includes('EACCES');
47
+ }
48
+ /** Returns true if the error indicates no commits exist yet (empty repo). */
49
+ function isEmptyRepo(stderr) {
50
+ return (stderr.includes('does not have any commits yet') ||
51
+ stderr.includes('no commits yet') ||
52
+ stderr.includes("ambiguous argument 'HEAD'") ||
53
+ stderr.includes('unknown revision or path'));
54
+ }
55
+ /**
56
+ * Classify a git error into a structured result type.
57
+ * Covers: git not installed, not a repo, permission denied, empty repo,
58
+ * or a generic error with the raw message.
59
+ */
60
+ function classifyError(errMessage) {
61
+ if (isGitNotInstalled(errMessage)) {
62
+ return { status: 'error', message: 'git is not installed or not in PATH' };
63
+ }
64
+ if (isNotAGitRepo(errMessage)) {
65
+ return { status: 'not_found' };
66
+ }
67
+ if (isPermissionDenied(errMessage)) {
68
+ return { status: 'error', message: `Permission denied: ${errMessage}` };
69
+ }
70
+ return { status: 'error', message: errMessage.trim() };
71
+ }
72
+ // ─── Public API ──────────────────────────────────────────────────────────────
73
+ /**
74
+ * Returns `true` if `workingDir` is inside a git repository.
75
+ * Returns `false` for non-git directories, missing git, or any error.
76
+ */
77
+ export async function isGitRepo(workingDir) {
78
+ const result = await runGit('rev-parse --git-dir', workingDir);
79
+ if ('error' in result)
80
+ return false;
81
+ return result.stdout.trim().length > 0;
82
+ }
83
+ /**
84
+ * Returns the current branch name for the repository at `workingDir`.
85
+ *
86
+ * For a detached HEAD, returns `{ status: 'available', branch: 'HEAD' }`.
87
+ * For a non-git directory, returns `{ status: 'not_found' }`.
88
+ */
89
+ export async function getBranch(workingDir) {
90
+ const result = await runGit('rev-parse --abbrev-ref HEAD', workingDir);
91
+ if ('error' in result) {
92
+ const errMsg = result.error.message;
93
+ // Empty repo: HEAD reference doesn't exist yet
94
+ if (errMsg.includes('unknown revision') ||
95
+ errMsg.includes('No such file or directory') ||
96
+ errMsg.includes('does not have any commits')) {
97
+ return { status: 'available', branch: 'HEAD' };
98
+ }
99
+ return classifyError(errMsg);
100
+ }
101
+ const branch = result.stdout.trim();
102
+ if (!branch) {
103
+ return { status: 'error', message: 'git rev-parse returned empty output' };
104
+ }
105
+ return { status: 'available', branch };
106
+ }
107
+ /**
108
+ * Returns `true` if the working tree has uncommitted changes (staged or unstaged).
109
+ * Returns `false` for a clean tree, empty repo, or non-git directory.
110
+ */
111
+ export async function isDirty(workingDir) {
112
+ const result = await runGit('status --porcelain', workingDir);
113
+ if ('error' in result)
114
+ return false;
115
+ return result.stdout.trim().length > 0;
116
+ }
117
+ /**
118
+ * Parses `--stat` output into a `DiffStat`.
119
+ * Input: the summary line, e.g. "3 files changed, 45 insertions(+), 12 deletions(-)"
120
+ * Returns zero values if the tree is clean or the line cannot be parsed.
121
+ *
122
+ * Exported for direct unit testing.
123
+ */
124
+ export function parseDiffStatLine(statLine) {
125
+ const filesMatch = statLine.match(/(\d+)\s+file/);
126
+ const insertMatch = statLine.match(/(\d+)\s+insertion/);
127
+ const deleteMatch = statLine.match(/(\d+)\s+deletion/);
128
+ return {
129
+ filesChanged: filesMatch ? parseInt(filesMatch[1], 10) : 0,
130
+ insertions: insertMatch ? parseInt(insertMatch[1], 10) : 0,
131
+ deletions: deleteMatch ? parseInt(deleteMatch[1], 10) : 0,
132
+ };
133
+ }
134
+ /**
135
+ * Returns diff statistics (files changed, insertions, deletions) for the current
136
+ * working tree against HEAD (`git diff HEAD --stat`).
137
+ *
138
+ * Returns zero-value stats for a clean tree (no changes).
139
+ */
140
+ export async function getDiffStat(workingDir) {
141
+ const result = await runGit('diff HEAD --stat', workingDir);
142
+ if ('error' in result) {
143
+ const errMsg = result.error.message;
144
+ if (isEmptyRepo(result.error.message)) {
145
+ return { status: 'no_commits' };
146
+ }
147
+ const classified = classifyError(errMsg);
148
+ if (classified.status === 'not_found')
149
+ return { status: 'not_found' };
150
+ // Also check stderr embedded in error message for empty repo clues
151
+ return classified;
152
+ }
153
+ // git diff exits 0 for both clean and dirty trees
154
+ const output = result.stdout;
155
+ const stderr = result.stderr;
156
+ if (isEmptyRepo(stderr)) {
157
+ return { status: 'no_commits' };
158
+ }
159
+ if (!output.trim()) {
160
+ // Clean tree — zero changes
161
+ return {
162
+ status: 'available',
163
+ diffStat: { filesChanged: 0, insertions: 0, deletions: 0 },
164
+ };
165
+ }
166
+ // The summary line is the last non-empty line
167
+ const lines = output.trim().split('\n');
168
+ const summaryLine = lines[lines.length - 1] ?? '';
169
+ const diffStat = parseDiffStatLine(summaryLine);
170
+ return { status: 'available', diffStat };
171
+ }
172
+ /**
173
+ * Returns the full unified diff for the current working tree against HEAD.
174
+ * Content is capped at `FULL_DIFF_MAX_BYTES` (500 KB).
175
+ *
176
+ * Note: Binary files appear as "Binary files differ" in the output — handled
177
+ * transparently (no special treatment needed; output is valid UTF-8 text).
178
+ */
179
+ export async function getFullDiff(workingDir) {
180
+ const result = await runGit('diff HEAD', workingDir);
181
+ if ('error' in result) {
182
+ const errMsg = result.error.message;
183
+ if (isEmptyRepo(errMsg)) {
184
+ return { status: 'no_commits' };
185
+ }
186
+ const classified = classifyError(errMsg);
187
+ if (classified.status === 'not_found')
188
+ return { status: 'not_found' };
189
+ return classified;
190
+ }
191
+ const stderr = result.stderr;
192
+ if (isEmptyRepo(stderr)) {
193
+ return { status: 'no_commits' };
194
+ }
195
+ const raw = result.stdout;
196
+ const byteLength = Buffer.byteLength(raw, 'utf8');
197
+ if (byteLength > FULL_DIFF_MAX_BYTES) {
198
+ // Truncate at a safe character boundary
199
+ const truncated = Buffer.from(raw, 'utf8').subarray(0, FULL_DIFF_MAX_BYTES).toString('utf8');
200
+ return { status: 'truncated', content: truncated, truncated: true };
201
+ }
202
+ return { status: 'available', content: raw, truncated: false };
203
+ }
204
+ /**
205
+ * Returns diff statistics for a PR (diff between origin/<baseBranch> and HEAD).
206
+ * Uses three-dot syntax to diff from the merge-base.
207
+ */
208
+ export async function getPRDiffStat(workingDir, baseBranch) {
209
+ const result = await runGit(`diff --stat origin/${baseBranch}...HEAD`, workingDir);
210
+ if ('error' in result) {
211
+ const errMsg = result.error.message;
212
+ if (isEmptyRepo(errMsg)) {
213
+ return { status: 'no_commits' };
214
+ }
215
+ const classified = classifyError(errMsg);
216
+ if (classified.status === 'not_found')
217
+ return { status: 'not_found' };
218
+ return classified;
219
+ }
220
+ const output = result.stdout;
221
+ const stderr = result.stderr;
222
+ if (isEmptyRepo(stderr)) {
223
+ return { status: 'no_commits' };
224
+ }
225
+ if (!output.trim()) {
226
+ return {
227
+ status: 'available',
228
+ diffStat: { filesChanged: 0, insertions: 0, deletions: 0 },
229
+ };
230
+ }
231
+ const lines = output.trim().split('\n');
232
+ const summaryLine = lines[lines.length - 1] ?? '';
233
+ const diffStat = parseDiffStatLine(summaryLine);
234
+ return { status: 'available', diffStat };
235
+ }
236
+ /**
237
+ * Returns the full unified PR diff (diff between origin/<baseBranch> and HEAD).
238
+ * Uses three-dot syntax to diff from the merge-base.
239
+ * Content is capped at `FULL_DIFF_MAX_BYTES` (500 KB).
240
+ */
241
+ export async function getPRDiff(workingDir, baseBranch) {
242
+ const result = await runGit(`diff origin/${baseBranch}...HEAD`, workingDir);
243
+ if ('error' in result) {
244
+ const errMsg = result.error.message;
245
+ if (isEmptyRepo(errMsg)) {
246
+ return { status: 'no_commits' };
247
+ }
248
+ const classified = classifyError(errMsg);
249
+ if (classified.status === 'not_found')
250
+ return { status: 'not_found' };
251
+ return classified;
252
+ }
253
+ const stderr = result.stderr;
254
+ if (isEmptyRepo(stderr)) {
255
+ return { status: 'no_commits' };
256
+ }
257
+ const raw = result.stdout;
258
+ const byteLength = Buffer.byteLength(raw, 'utf8');
259
+ if (byteLength > FULL_DIFF_MAX_BYTES) {
260
+ const truncated = Buffer.from(raw, 'utf8').subarray(0, FULL_DIFF_MAX_BYTES).toString('utf8');
261
+ return { status: 'truncated', content: truncated, truncated: true };
262
+ }
263
+ return { status: 'available', content: raw, truncated: false };
264
+ }
265
+ /**
266
+ * Returns the diff for a specific PR by number using `gh pr diff <number>`.
267
+ * Content is capped at `FULL_DIFF_MAX_BYTES` (500 KB).
268
+ */
269
+ export async function getPRDiffByNumber(cwd, prNumber) {
270
+ const repoSlug = await getOriginRepoSlug(cwd);
271
+ const repoFlag = repoSlug ? ` --repo ${JSON.stringify(repoSlug)}` : '';
272
+ const result = await runCommand(`gh pr diff ${prNumber}${repoFlag}`, cwd);
273
+ if ('error' in result) {
274
+ return { status: 'error', message: result.error.message };
275
+ }
276
+ const raw = result.stdout;
277
+ if (!raw.trim()) {
278
+ return { status: 'available', content: '', truncated: false };
279
+ }
280
+ const byteLength = Buffer.byteLength(raw, 'utf8');
281
+ if (byteLength > FULL_DIFF_MAX_BYTES) {
282
+ const truncated = Buffer.from(raw, 'utf8').subarray(0, FULL_DIFF_MAX_BYTES).toString('utf8');
283
+ return { status: 'truncated', content: truncated, truncated: true };
284
+ }
285
+ return { status: 'available', content: raw, truncated: false };
286
+ }
287
+ /**
288
+ * Returns up to `count` recent commits from the current branch.
289
+ * Default: 20 commits. Optional `skip` to paginate (0-based offset).
290
+ *
291
+ * Returns an empty array for an empty repository (no commits).
292
+ * Returns an empty array for non-git directories (does not throw).
293
+ */
294
+ export async function getRecentCommits(workingDir, count = 20, skip = 0) {
295
+ // Use a null-byte separator to safely handle multi-line messages
296
+ const format = '%H%x00%h%x00%s%x00%an%x00%aI';
297
+ const skipArg = skip > 0 ? ` --skip=${skip}` : '';
298
+ const result = await runGit(`log -${count}${skipArg} --format=${format}`, workingDir);
299
+ if ('error' in result) {
300
+ // Empty repo or non-git directory — return empty list, not an error
301
+ return [];
302
+ }
303
+ const output = result.stdout.trim();
304
+ if (!output)
305
+ return [];
306
+ const commits = [];
307
+ for (const line of output.split('\n')) {
308
+ const trimmed = line.trim();
309
+ if (!trimmed)
310
+ continue;
311
+ const parts = trimmed.split('\x00');
312
+ if (parts.length !== 5)
313
+ continue;
314
+ const [sha, shortSha, message, author, date] = parts;
315
+ commits.push({ sha, shortSha, message, author, date });
316
+ }
317
+ return commits;
318
+ }
319
+ /**
320
+ * Returns the full diff for a specific commit SHA (`git show <sha>`).
321
+ * Content is capped at `FULL_DIFF_MAX_BYTES` (500 KB).
322
+ *
323
+ * Returns `{ status: 'not_found' }` if the SHA does not exist in the
324
+ * repository, or if the repository has no commits yet (empty repo).
325
+ */
326
+ export async function getCommitDetail(workingDir, sha) {
327
+ // --format="" suppresses the commit header; we only want the diff
328
+ const result = await runGit(`show ${sha} --format="" --stat -p`, workingDir);
329
+ if ('error' in result) {
330
+ const errMsg = result.error.message;
331
+ // Non-git directory: return not_found
332
+ const classified = classifyError(errMsg);
333
+ if (classified.status === 'not_found')
334
+ return { status: 'not_found' };
335
+ // Empty repo or non-existent SHA → not_found.
336
+ // Distinguishing "sha doesn't exist" from "no commits yet" is not useful to callers.
337
+ if (isEmptyRepo(errMsg) ||
338
+ errMsg.includes('unknown revision') ||
339
+ errMsg.includes('bad object') ||
340
+ errMsg.includes('does not exist')) {
341
+ return { status: 'not_found' };
342
+ }
343
+ return classified;
344
+ }
345
+ const raw = result.stdout;
346
+ const byteLength = Buffer.byteLength(raw, 'utf8');
347
+ if (byteLength > FULL_DIFF_MAX_BYTES) {
348
+ const truncated = Buffer.from(raw, 'utf8').subarray(0, FULL_DIFF_MAX_BYTES).toString('utf8');
349
+ return { status: 'truncated', content: truncated, truncated: true };
350
+ }
351
+ return { status: 'available', content: raw, truncated: false };
352
+ }
353
+ /**
354
+ * Returns commit metadata (message, author, date) for a specific SHA.
355
+ *
356
+ * Uses `git log -1 --format=...` with null-byte separators for safe parsing.
357
+ * Returns `null` if the SHA is not found or the directory is not a git repo.
358
+ */
359
+ export async function getCommitMetadata(workingDir, sha) {
360
+ const format = '%s%x00%an%x00%aI';
361
+ const result = await runGit(`log -1 --format=${format} ${sha}`, workingDir);
362
+ if ('error' in result)
363
+ return null;
364
+ const output = result.stdout.trim();
365
+ if (!output)
366
+ return null;
367
+ const parts = output.split('\x00');
368
+ if (parts.length !== 3)
369
+ return null;
370
+ return { message: parts[0], author: parts[1], date: parts[2] };
371
+ }
372
+ // ─── GitHub CLI Integration ──────────────────────────────────────────────────
373
+ /**
374
+ * Run an arbitrary command in `cwd`.
375
+ * Returns `{ stdout, stderr }` on success, `{ error }` on failure.
376
+ * Never throws.
377
+ */
378
+ async function runCommand(command, cwd) {
379
+ try {
380
+ const result = await execAsync(command, {
381
+ cwd,
382
+ env: { ...process.env, NO_COLOR: '1' },
383
+ timeout: 15_000, // 15s timeout for gh commands
384
+ });
385
+ return result;
386
+ }
387
+ catch (err) {
388
+ return { error: err };
389
+ }
390
+ }
391
+ /**
392
+ * Parse a git remote URL into an `owner/repo` slug.
393
+ * Handles both HTTPS and SSH URL formats, with or without `.git` suffix.
394
+ *
395
+ * Examples:
396
+ * https://github.com/owner/repo.git → owner/repo
397
+ * https://github.com/owner/repo → owner/repo
398
+ * git@github.com:owner/repo.git → owner/repo
399
+ * git@github.com:owner/repo → owner/repo
400
+ *
401
+ * Returns `null` if the URL cannot be parsed.
402
+ *
403
+ * Exported for unit testing.
404
+ */
405
+ export function parseRepoSlug(remoteUrl) {
406
+ const trimmed = remoteUrl.trim();
407
+ // HTTPS format: https://github.com/owner/repo.git or https://github.com/owner/repo
408
+ const httpsMatch = trimmed.match(/https?:\/\/[^/]+\/([^/]+)\/([^/]+?)(?:\.git)?$/);
409
+ if (httpsMatch && httpsMatch[1] && httpsMatch[2]) {
410
+ return `${httpsMatch[1]}/${httpsMatch[2]}`;
411
+ }
412
+ // SSH format: git@github.com:owner/repo.git or git@github.com:owner/repo
413
+ const sshMatch = trimmed.match(/git@[^:]+:([^/]+)\/([^/]+?)(?:\.git)?$/);
414
+ if (sshMatch && sshMatch[1] && sshMatch[2]) {
415
+ return `${sshMatch[1]}/${sshMatch[2]}`;
416
+ }
417
+ return null;
418
+ }
419
+ /**
420
+ * Get the `owner/repo` slug for the `origin` remote of the repository at `cwd`.
421
+ *
422
+ * Returns `null` if:
423
+ * - The `origin` remote does not exist
424
+ * - The URL cannot be parsed
425
+ * - Any error occurs (graceful degradation)
426
+ *
427
+ * Exported for unit testing.
428
+ */
429
+ export async function getOriginRepoSlug(cwd) {
430
+ const result = await runGit('remote get-url origin', cwd);
431
+ if ('error' in result)
432
+ return null;
433
+ const url = result.stdout.trim();
434
+ if (!url)
435
+ return null;
436
+ return parseRepoSlug(url);
437
+ }
438
+ /**
439
+ * Get open pull requests for the given branch using `gh pr list`.
440
+ *
441
+ * Returns an empty array if:
442
+ * - The `gh` CLI is not installed
443
+ * - The user is not authenticated with `gh`
444
+ * - There are no open PRs for the branch
445
+ * - Any error occurs (graceful degradation)
446
+ */
447
+ export async function getOpenPRsForBranch(cwd, branch) {
448
+ // Resolve the origin repo slug to target the correct repository
449
+ const repoSlug = await getOriginRepoSlug(cwd);
450
+ const repoFlag = repoSlug ? ` --repo ${JSON.stringify(repoSlug)}` : '';
451
+ // Extract owner from repo slug (e.g., 'owner/repo' → 'owner')
452
+ const repoOwner = repoSlug?.split('/')[0] ?? null;
453
+ const result = await runCommand(`gh pr list --head ${JSON.stringify(branch)} --state open --author @me --json number,title,url,headRefName,state,headRepositoryOwner --limit 5${repoFlag}`, cwd);
454
+ if ('error' in result) {
455
+ // gh not installed, not authenticated, or other failure — degrade gracefully
456
+ return [];
457
+ }
458
+ const output = result.stdout.trim();
459
+ if (!output)
460
+ return [];
461
+ try {
462
+ const parsed = JSON.parse(output);
463
+ if (!Array.isArray(parsed))
464
+ return [];
465
+ return parsed
466
+ .filter((item) => typeof item === 'object' &&
467
+ item !== null &&
468
+ typeof item.number === 'number' &&
469
+ typeof item.title === 'string' &&
470
+ typeof item.url === 'string' &&
471
+ typeof item.headRefName === 'string' &&
472
+ typeof item.state === 'string')
473
+ .filter((item) => {
474
+ // Filter out cross-fork PRs: only include PRs from the same repo owner
475
+ // This prevents PRs from forks (e.g., fork's main → upstream's main) from showing
476
+ if (!repoOwner || !item.headRepositoryOwner?.login)
477
+ return true;
478
+ return item.headRepositoryOwner.login === repoOwner;
479
+ })
480
+ .map((item) => ({
481
+ number: item.number,
482
+ title: item.title,
483
+ url: item.url,
484
+ headRefName: item.headRefName,
485
+ state: item.state,
486
+ }));
487
+ }
488
+ catch {
489
+ // JSON parse failure — degrade gracefully
490
+ return [];
491
+ }
492
+ }
493
+ function isGHPRItem(item) {
494
+ return (typeof item === 'object' &&
495
+ item !== null &&
496
+ typeof item.number === 'number' &&
497
+ typeof item.title === 'string');
498
+ }
499
+ /**
500
+ * Get all pull requests (open, closed, merged) for the repository using `gh pr list`.
501
+ * Returns up to 20 most recent PRs.
502
+ */
503
+ export async function getAllPRs(cwd) {
504
+ const repoSlug = await getOriginRepoSlug(cwd);
505
+ const repoFlag = repoSlug ? ` --repo ${JSON.stringify(repoSlug)}` : '';
506
+ const result = await runCommand(`gh pr list --limit 20 --state all --json number,title,state,headRefName,baseRefName,url,author,createdAt,updatedAt,mergedAt,closedAt,isDraft${repoFlag}`, cwd);
507
+ if ('error' in result) {
508
+ return [];
509
+ }
510
+ const output = result.stdout.trim();
511
+ if (!output)
512
+ return [];
513
+ try {
514
+ const parsed = JSON.parse(output);
515
+ if (!Array.isArray(parsed))
516
+ return [];
517
+ return parsed
518
+ .filter(isGHPRItem)
519
+ .map((item) => {
520
+ const author = typeof item.author === 'object' && item.author !== null
521
+ ? item.author.login
522
+ : undefined;
523
+ return {
524
+ number: item.number,
525
+ title: item.title,
526
+ url: item.url ?? '',
527
+ headRefName: item.headRefName ?? '',
528
+ baseRefName: item.baseRefName ?? 'main',
529
+ state: item.state ?? 'OPEN',
530
+ author,
531
+ createdAt: item.createdAt ?? undefined,
532
+ updatedAt: item.updatedAt ?? undefined,
533
+ mergedAt: item.mergedAt ?? null,
534
+ closedAt: item.closedAt ?? null,
535
+ isDraft: item.isDraft ?? false,
536
+ };
537
+ });
538
+ }
539
+ catch {
540
+ return [];
541
+ }
542
+ }
543
+ /**
544
+ * Get the list of commits for a specific PR number.
545
+ * Uses `gh pr view <number> --json commits`.
546
+ */
547
+ export async function getPRCommits(cwd, prNumber) {
548
+ const repoSlug = await getOriginRepoSlug(cwd);
549
+ const repoFlag = repoSlug ? ` --repo ${JSON.stringify(repoSlug)}` : '';
550
+ const result = await runCommand(`gh pr view ${prNumber} --json commits${repoFlag}`, cwd);
551
+ if ('error' in result) {
552
+ return [];
553
+ }
554
+ const output = result.stdout.trim();
555
+ if (!output)
556
+ return [];
557
+ try {
558
+ const parsed = JSON.parse(output);
559
+ if (typeof parsed !== 'object' || parsed === null || !('commits' in parsed))
560
+ return [];
561
+ const commits = parsed.commits;
562
+ if (!Array.isArray(commits))
563
+ return [];
564
+ return commits.map((c) => {
565
+ const commit = c;
566
+ const oid = typeof commit.oid === 'string' ? commit.oid : '';
567
+ const headline = typeof commit.messageHeadline === 'string' ? commit.messageHeadline : '';
568
+ const date = typeof commit.committedDate === 'string' ? commit.committedDate : '';
569
+ // Authors array
570
+ let authorLogin = '';
571
+ if (Array.isArray(commit.authors) && commit.authors.length > 0) {
572
+ const first = commit.authors[0];
573
+ authorLogin = typeof first.login === 'string' ? first.login : (typeof first.name === 'string' ? first.name : '');
574
+ }
575
+ return {
576
+ sha: oid,
577
+ shortSha: oid.slice(0, 7),
578
+ message: headline,
579
+ author: authorLogin,
580
+ date,
581
+ };
582
+ });
583
+ }
584
+ catch {
585
+ return [];
586
+ }
587
+ }
588
+ /**
589
+ * Get all configured git remotes for the repository at `cwd`.
590
+ *
591
+ * Runs `git remote -v` and deduplicates (keeping fetch entries).
592
+ * Returns an empty array if no remotes are configured or the command fails.
593
+ */
594
+ export async function getRemotes(cwd) {
595
+ const result = await runGit('remote -v', cwd);
596
+ if ('error' in result)
597
+ return [];
598
+ if (!result.stdout.trim())
599
+ return [];
600
+ const lines = result.stdout.trim().split('\n');
601
+ const seen = new Set();
602
+ const remotes = [];
603
+ for (const line of lines) {
604
+ // Format: "origin\thttps://github.com/user/repo.git (fetch)"
605
+ const match = line.match(/^(\S+)\s+(\S+)\s+\((\w+)\)$/);
606
+ if (!match)
607
+ continue;
608
+ const [, name, url, type] = match;
609
+ if (!name || !url)
610
+ continue;
611
+ // Deduplicate — prefer fetch entry (listed first)
612
+ if (type === 'fetch' && !seen.has(name)) {
613
+ seen.add(name);
614
+ remotes.push({ name, url });
615
+ }
616
+ }
617
+ return remotes;
618
+ }
619
+ /**
620
+ * Returns the number of commits on the current branch that are ahead of the
621
+ * tracking remote branch (i.e. unpushed commits).
622
+ *
623
+ * Uses `git rev-list --count @{upstream}..HEAD` which counts commits reachable
624
+ * from HEAD but not from the upstream tracking branch.
625
+ *
626
+ * Returns 0 if:
627
+ * - There is no upstream configured for the current branch
628
+ * - The repository has no commits
629
+ * - The directory is not a git repository
630
+ * - Any other error occurs
631
+ *
632
+ * This is intentionally lenient — unpushed count is supplementary info and
633
+ * should never cause the git state push to fail.
634
+ */
635
+ export async function getCommitsAhead(workingDir) {
636
+ const result = await runGit('rev-list --count @{upstream}..HEAD', workingDir);
637
+ if ('error' in result)
638
+ return 0;
639
+ const count = parseInt(result.stdout.trim(), 10);
640
+ return Number.isNaN(count) ? 0 : count;
641
+ }
642
+ /**
643
+ * Get CI/CD commit status checks for a given ref (branch or SHA).
644
+ *
645
+ * Uses `gh api` to fetch check runs and combined commit status.
646
+ * Returns null if `gh` is unavailable or any error occurs (non-blocking).
647
+ */
648
+ export async function getCommitStatusChecks(cwd, ref) {
649
+ const repoSlug = await getOriginRepoSlug(cwd);
650
+ if (!repoSlug)
651
+ return null;
652
+ try {
653
+ // Fetch check runs and combined status in parallel
654
+ const [checkRunsResult, statusResult] = await Promise.all([
655
+ runCommand(`gh api repos/${repoSlug}/commits/${encodeURIComponent(ref)}/check-runs --jq '{check_runs: [.check_runs[] | {name: .name, status: .status, conclusion: .conclusion}], total_count: .total_count}'`, cwd),
656
+ runCommand(`gh api repos/${repoSlug}/commits/${encodeURIComponent(ref)}/status --jq '.state'`, cwd),
657
+ ]);
658
+ if ('error' in checkRunsResult || 'error' in statusResult)
659
+ return null;
660
+ const checkRunsData = JSON.parse(checkRunsResult.stdout.trim());
661
+ const combinedState = statusResult.stdout.trim() || 'pending';
662
+ // Determine overall state: prefer check runs conclusion over legacy status API
663
+ let state = combinedState;
664
+ if (checkRunsData.total_count > 0) {
665
+ const conclusions = checkRunsData.check_runs.map((cr) => cr.conclusion);
666
+ if (conclusions.some((c) => c === 'failure' || c === 'timed_out')) {
667
+ state = 'failure';
668
+ }
669
+ else if (conclusions.every((c) => c === 'success' || c === 'skipped' || c === 'neutral')) {
670
+ state = 'success';
671
+ }
672
+ else if (checkRunsData.check_runs.some((cr) => cr.status !== 'completed')) {
673
+ state = 'pending';
674
+ }
675
+ }
676
+ return {
677
+ state,
678
+ checkRuns: checkRunsData.check_runs.map((cr) => ({
679
+ name: cr.name,
680
+ status: cr.status,
681
+ conclusion: cr.conclusion,
682
+ })),
683
+ totalCount: checkRunsData.total_count,
684
+ };
685
+ }
686
+ catch {
687
+ return null;
688
+ }
689
+ }
690
+ /**
691
+ * Get the default branch name for the repository (e.g. 'main', 'master').
692
+ *
693
+ * Uses `gh api` to query the repo metadata.
694
+ * Returns null if `gh` is unavailable or any error occurs.
695
+ */
696
+ export async function getDefaultBranch(cwd) {
697
+ const repoSlug = await getOriginRepoSlug(cwd);
698
+ if (!repoSlug)
699
+ return null;
700
+ try {
701
+ const result = await runCommand(`gh api repos/${repoSlug} --jq '.default_branch'`, cwd);
702
+ if ('error' in result)
703
+ return null;
704
+ const branch = result.stdout.trim();
705
+ return branch || null;
706
+ }
707
+ catch {
708
+ return null;
709
+ }
710
+ }
711
+ //# sourceMappingURL=git-reader.js.map