@creativeintelligence/abbie 0.1.4 → 0.1.5

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 (537) hide show
  1. package/dist/cli/commands/start.js +2 -1
  2. package/oclif.manifest.json +1 -1
  3. package/package.json +9 -5
  4. package/dist/cli/base-command.d.ts.map +0 -1
  5. package/dist/cli/commands/agent/list.d.ts.map +0 -1
  6. package/dist/cli/commands/annotation/ack.d.ts.map +0 -1
  7. package/dist/cli/commands/annotation/create.d.ts.map +0 -1
  8. package/dist/cli/commands/annotation/events.d.ts.map +0 -1
  9. package/dist/cli/commands/annotation/export.d.ts.map +0 -1
  10. package/dist/cli/commands/annotation/import.d.ts.map +0 -1
  11. package/dist/cli/commands/annotation/ingest.d.ts.map +0 -1
  12. package/dist/cli/commands/annotation/list.d.ts.map +0 -1
  13. package/dist/cli/commands/annotation/reply.d.ts.map +0 -1
  14. package/dist/cli/commands/annotation/resolve.d.ts.map +0 -1
  15. package/dist/cli/commands/auto/index.d.ts.map +0 -1
  16. package/dist/cli/commands/backlog/add.d.ts.map +0 -1
  17. package/dist/cli/commands/backlog/claim.d.ts.map +0 -1
  18. package/dist/cli/commands/backlog/complete.d.ts.map +0 -1
  19. package/dist/cli/commands/backlog/list.d.ts.map +0 -1
  20. package/dist/cli/commands/backlog/pick.d.ts.map +0 -1
  21. package/dist/cli/commands/backlog/sync.d.ts.map +0 -1
  22. package/dist/cli/commands/bootstrap.d.ts.map +0 -1
  23. package/dist/cli/commands/bridge.d.ts.map +0 -1
  24. package/dist/cli/commands/context/inject.d.ts.map +0 -1
  25. package/dist/cli/commands/context/list.d.ts.map +0 -1
  26. package/dist/cli/commands/context/publish.d.ts.map +0 -1
  27. package/dist/cli/commands/context/read.d.ts.map +0 -1
  28. package/dist/cli/commands/daemon.d.ts.map +0 -1
  29. package/dist/cli/commands/digest/index.d.ts.map +0 -1
  30. package/dist/cli/commands/docs/lint.d.ts.map +0 -1
  31. package/dist/cli/commands/docs/sync.d.ts.map +0 -1
  32. package/dist/cli/commands/doctor.d.ts.map +0 -1
  33. package/dist/cli/commands/find/index.d.ts.map +0 -1
  34. package/dist/cli/commands/gc.d.ts.map +0 -1
  35. package/dist/cli/commands/history/index.d.ts.map +0 -1
  36. package/dist/cli/commands/hooks/guard.d.ts.map +0 -1
  37. package/dist/cli/commands/hooks/list.d.ts.map +0 -1
  38. package/dist/cli/commands/hooks/lock.d.ts.map +0 -1
  39. package/dist/cli/commands/hooks/status.d.ts.map +0 -1
  40. package/dist/cli/commands/hooks/test.d.ts.map +0 -1
  41. package/dist/cli/commands/hooks/unlock.d.ts.map +0 -1
  42. package/dist/cli/commands/index.d.ts.map +0 -1
  43. package/dist/cli/commands/list.d.ts.map +0 -1
  44. package/dist/cli/commands/list.e2e.test.d.ts +0 -1
  45. package/dist/cli/commands/list.e2e.test.js +0 -47
  46. package/dist/cli/commands/login.d.ts.map +0 -1
  47. package/dist/cli/commands/logout.d.ts.map +0 -1
  48. package/dist/cli/commands/panes/broker.d.ts.map +0 -1
  49. package/dist/cli/commands/panes/pipe-sink.d.ts.map +0 -1
  50. package/dist/cli/commands/panes/snapshot.d.ts.map +0 -1
  51. package/dist/cli/commands/plan.d.ts.map +0 -1
  52. package/dist/cli/commands/plan.e2e.test.d.ts +0 -1
  53. package/dist/cli/commands/plan.e2e.test.js +0 -74
  54. package/dist/cli/commands/preview/index.d.ts.map +0 -1
  55. package/dist/cli/commands/preview/init.d.ts.map +0 -1
  56. package/dist/cli/commands/preview/list.d.ts.map +0 -1
  57. package/dist/cli/commands/preview/status.d.ts.map +0 -1
  58. package/dist/cli/commands/preview/stop.d.ts.map +0 -1
  59. package/dist/cli/commands/preview/sync.d.ts.map +0 -1
  60. package/dist/cli/commands/preview/watch.d.ts.map +0 -1
  61. package/dist/cli/commands/project/add.d.ts.map +0 -1
  62. package/dist/cli/commands/project/list.d.ts.map +0 -1
  63. package/dist/cli/commands/project/remove.d.ts.map +0 -1
  64. package/dist/cli/commands/push.d.ts.map +0 -1
  65. package/dist/cli/commands/reference/add.d.ts.map +0 -1
  66. package/dist/cli/commands/reference/delete.d.ts.map +0 -1
  67. package/dist/cli/commands/reference/extract.d.ts.map +0 -1
  68. package/dist/cli/commands/reference/list.d.ts.map +0 -1
  69. package/dist/cli/commands/reference/normalize.d.ts.map +0 -1
  70. package/dist/cli/commands/reference/open.d.ts.map +0 -1
  71. package/dist/cli/commands/reference/save.d.ts.map +0 -1
  72. package/dist/cli/commands/reference/search.d.ts.map +0 -1
  73. package/dist/cli/commands/reference/show.d.ts.map +0 -1
  74. package/dist/cli/commands/reference/update-index.d.ts.map +0 -1
  75. package/dist/cli/commands/reference/update.d.ts.map +0 -1
  76. package/dist/cli/commands/report/blocked.d.ts.map +0 -1
  77. package/dist/cli/commands/report/complete.d.ts.map +0 -1
  78. package/dist/cli/commands/report/progress.d.ts.map +0 -1
  79. package/dist/cli/commands/report/start.d.ts.map +0 -1
  80. package/dist/cli/commands/resource/acquire.d.ts.map +0 -1
  81. package/dist/cli/commands/resource/list.d.ts.map +0 -1
  82. package/dist/cli/commands/resource/release.d.ts.map +0 -1
  83. package/dist/cli/commands/resource/wait.d.ts.map +0 -1
  84. package/dist/cli/commands/review.d.ts.map +0 -1
  85. package/dist/cli/commands/session/attach.d.ts.map +0 -1
  86. package/dist/cli/commands/session/await.d.ts.map +0 -1
  87. package/dist/cli/commands/session/complete.d.ts.map +0 -1
  88. package/dist/cli/commands/session/create.d.ts.map +0 -1
  89. package/dist/cli/commands/session/heartbeat.d.ts.map +0 -1
  90. package/dist/cli/commands/session/list.d.ts.map +0 -1
  91. package/dist/cli/commands/session/mark-done.d.ts.map +0 -1
  92. package/dist/cli/commands/session/mine.d.ts.map +0 -1
  93. package/dist/cli/commands/session/replay.d.ts.map +0 -1
  94. package/dist/cli/commands/session/run.d.ts.map +0 -1
  95. package/dist/cli/commands/session/show.d.ts.map +0 -1
  96. package/dist/cli/commands/session/start.d.ts.map +0 -1
  97. package/dist/cli/commands/session/state/cleanup.d.ts.map +0 -1
  98. package/dist/cli/commands/session/state/end.d.ts.map +0 -1
  99. package/dist/cli/commands/session/state/get.d.ts.map +0 -1
  100. package/dist/cli/commands/session/state/init.d.ts.map +0 -1
  101. package/dist/cli/commands/session/state/list.d.ts.map +0 -1
  102. package/dist/cli/commands/session/state/update.d.ts.map +0 -1
  103. package/dist/cli/commands/session/stop.d.ts.map +0 -1
  104. package/dist/cli/commands/session/view.d.ts.map +0 -1
  105. package/dist/cli/commands/start.d.ts.map +0 -1
  106. package/dist/cli/commands/state/dump.d.ts.map +0 -1
  107. package/dist/cli/commands/status.d.ts.map +0 -1
  108. package/dist/cli/commands/sync.d.ts.map +0 -1
  109. package/dist/cli/commands/trace/export.d.ts.map +0 -1
  110. package/dist/cli/commands/triage/claim.d.ts.map +0 -1
  111. package/dist/cli/commands/triage/list.d.ts.map +0 -1
  112. package/dist/cli/commands/triage/next.d.ts.map +0 -1
  113. package/dist/cli/commands/triage/pull.d.ts.map +0 -1
  114. package/dist/cli/commands/triage/stats.d.ts.map +0 -1
  115. package/dist/cli/commands/tunnel/list.d.ts.map +0 -1
  116. package/dist/cli/commands/tunnel/start.d.ts.map +0 -1
  117. package/dist/cli/commands/tunnel/stop.d.ts.map +0 -1
  118. package/dist/cli/commands/tunnel/url.d.ts.map +0 -1
  119. package/dist/cli/commands/web/start.d.ts.map +0 -1
  120. package/dist/cli/commands/windows/context.d.ts.map +0 -1
  121. package/dist/cli/commands/windows/focus.d.ts.map +0 -1
  122. package/dist/cli/commands/windows/list.d.ts.map +0 -1
  123. package/dist/cli/commands/windows/map.d.ts.map +0 -1
  124. package/dist/cli/commands/windows/read.d.ts.map +0 -1
  125. package/dist/cli/commands/windows/search.d.ts.map +0 -1
  126. package/dist/cli/commands/windows/show.d.ts.map +0 -1
  127. package/dist/cli/commands/windows/watch.d.ts.map +0 -1
  128. package/dist/lib/active-sessions.d.ts.map +0 -1
  129. package/dist/lib/agent-adapters.d.ts.map +0 -1
  130. package/dist/lib/agent-sessions.d.ts.map +0 -1
  131. package/dist/lib/agent-trace.d.ts.map +0 -1
  132. package/dist/lib/analytics.d.ts.map +0 -1
  133. package/dist/lib/annotations-convex.d.ts.map +0 -1
  134. package/dist/lib/annotations.d.ts.map +0 -1
  135. package/dist/lib/auto/discover.d.ts.map +0 -1
  136. package/dist/lib/auto/ideate.d.ts.map +0 -1
  137. package/dist/lib/auto/spawn.d.ts.map +0 -1
  138. package/dist/lib/auto/workspace.d.ts.map +0 -1
  139. package/dist/lib/backlog.d.ts.map +0 -1
  140. package/dist/lib/backlog.test.d.ts +0 -1
  141. package/dist/lib/backlog.test.js +0 -162
  142. package/dist/lib/config-loader.d.ts.map +0 -1
  143. package/dist/lib/config-sync/adapters/claude.d.ts.map +0 -1
  144. package/dist/lib/config-sync/adapters/codex.d.ts.map +0 -1
  145. package/dist/lib/config-sync/adapters/copilot.d.ts.map +0 -1
  146. package/dist/lib/config-sync/adapters/gemini.d.ts.map +0 -1
  147. package/dist/lib/config-sync/adapters/index.d.ts.map +0 -1
  148. package/dist/lib/config-sync/adapters/opencode.d.ts.map +0 -1
  149. package/dist/lib/config-sync/index.d.ts.map +0 -1
  150. package/dist/lib/config-sync/types.d.ts.map +0 -1
  151. package/dist/lib/config-sync/writer.d.ts.map +0 -1
  152. package/dist/lib/content-sync/index.d.ts.map +0 -1
  153. package/dist/lib/content-sync/types.d.ts.map +0 -1
  154. package/dist/lib/contracts.d.ts.map +0 -1
  155. package/dist/lib/convex.d.ts.map +0 -1
  156. package/dist/lib/device.d.ts.map +0 -1
  157. package/dist/lib/digest/index.d.ts.map +0 -1
  158. package/dist/lib/docs/lint.d.ts.map +0 -1
  159. package/dist/lib/docs/lint.test.d.ts +0 -1
  160. package/dist/lib/docs/lint.test.js +0 -120
  161. package/dist/lib/docs/sync.d.ts.map +0 -1
  162. package/dist/lib/doctor/index.d.ts.map +0 -1
  163. package/dist/lib/doctor/repos.d.ts.map +0 -1
  164. package/dist/lib/doctor/templates.d.ts.map +0 -1
  165. package/dist/lib/errors.d.ts.map +0 -1
  166. package/dist/lib/events.d.ts.map +0 -1
  167. package/dist/lib/heartbeat.d.ts.map +0 -1
  168. package/dist/lib/heartbeat.test.d.ts +0 -1
  169. package/dist/lib/heartbeat.test.js +0 -124
  170. package/dist/lib/hooks/adapters/claude.d.ts.map +0 -1
  171. package/dist/lib/hooks/adapters/codex.d.ts.map +0 -1
  172. package/dist/lib/hooks/adapters/copilot.d.ts.map +0 -1
  173. package/dist/lib/hooks/context.d.ts.map +0 -1
  174. package/dist/lib/hooks/index.d.ts.map +0 -1
  175. package/dist/lib/hooks/registry.d.ts.map +0 -1
  176. package/dist/lib/hooks/runner.d.ts.map +0 -1
  177. package/dist/lib/hooks/types.d.ts.map +0 -1
  178. package/dist/lib/index.test.d.ts +0 -1
  179. package/dist/lib/index.test.js +0 -334
  180. package/dist/lib/managed-session.d.ts.map +0 -1
  181. package/dist/lib/math.d.ts.map +0 -1
  182. package/dist/lib/math.test.d.ts +0 -1
  183. package/dist/lib/math.test.js +0 -238
  184. package/dist/lib/ngrok.d.ts.map +0 -1
  185. package/dist/lib/nvim/discovery.d.ts.map +0 -1
  186. package/dist/lib/nvim/discovery.test.d.ts +0 -1
  187. package/dist/lib/nvim/discovery.test.js +0 -131
  188. package/dist/lib/nvim/index.d.ts.map +0 -1
  189. package/dist/lib/nvim/remote.d.ts.map +0 -1
  190. package/dist/lib/nvim/remote.test.d.ts +0 -1
  191. package/dist/lib/nvim/remote.test.js +0 -18
  192. package/dist/lib/panes/broker.d.ts.map +0 -1
  193. package/dist/lib/panes/index.d.ts.map +0 -1
  194. package/dist/lib/panes/server.d.ts.map +0 -1
  195. package/dist/lib/preview/detect.d.ts.map +0 -1
  196. package/dist/lib/preview/index.d.ts.map +0 -1
  197. package/dist/lib/preview/manager.d.ts.map +0 -1
  198. package/dist/lib/preview/schema.d.ts.map +0 -1
  199. package/dist/lib/preview/sprite.d.ts.map +0 -1
  200. package/dist/lib/preview/watcher.d.ts.map +0 -1
  201. package/dist/lib/process/index.d.ts.map +0 -1
  202. package/dist/lib/process/snapshot.d.ts.map +0 -1
  203. package/dist/lib/process/snapshot.test.d.ts +0 -1
  204. package/dist/lib/process/snapshot.test.js +0 -127
  205. package/dist/lib/project-identity.d.ts.map +0 -1
  206. package/dist/lib/provider-auth.d.ts.map +0 -1
  207. package/dist/lib/references.d.ts.map +0 -1
  208. package/dist/lib/report.d.ts.map +0 -1
  209. package/dist/lib/resources.d.ts.map +0 -1
  210. package/dist/lib/resources.test.d.ts +0 -1
  211. package/dist/lib/resources.test.js +0 -94
  212. package/dist/lib/runner.d.ts.map +0 -1
  213. package/dist/lib/runner.test.d.ts +0 -1
  214. package/dist/lib/runner.test.js +0 -234
  215. package/dist/lib/session-artifacts.d.ts.map +0 -1
  216. package/dist/lib/session-manager.d.ts.map +0 -1
  217. package/dist/lib/session-manager.test.d.ts +0 -1
  218. package/dist/lib/session-manager.test.js +0 -310
  219. package/dist/lib/session-result.d.ts.map +0 -1
  220. package/dist/lib/session-state.d.ts.map +0 -1
  221. package/dist/lib/slack-workspace.d.ts.map +0 -1
  222. package/dist/lib/tmux/bridge.d.ts.map +0 -1
  223. package/dist/lib/tmux/context.d.ts.map +0 -1
  224. package/dist/lib/tmux/context.test.d.ts +0 -1
  225. package/dist/lib/tmux/context.test.js +0 -215
  226. package/dist/lib/tmux/index.d.ts.map +0 -1
  227. package/dist/lib/tmux/map.d.ts.map +0 -1
  228. package/dist/lib/tmux/map.test.d.ts +0 -1
  229. package/dist/lib/tmux/map.test.js +0 -80
  230. package/dist/lib/tmux/panes.d.ts.map +0 -1
  231. package/dist/lib/tmux/redaction.d.ts.map +0 -1
  232. package/dist/lib/tmux/redaction.test.d.ts +0 -1
  233. package/dist/lib/tmux/redaction.test.js +0 -183
  234. package/dist/lib/triage-llm.d.ts.map +0 -1
  235. package/dist/lib/triage-tracker.d.ts.map +0 -1
  236. package/dist/lib/triage.d.ts.map +0 -1
  237. package/dist/lib/types.d.ts.map +0 -1
  238. package/dist/lib/windows/index.d.ts.map +0 -1
  239. package/dist/lib/windows/inventory.d.ts.map +0 -1
  240. package/dist/lib/windows/inventory.test.d.ts +0 -1
  241. package/dist/lib/windows/inventory.test.js +0 -292
  242. package/dist/lib/windows/types.d.ts.map +0 -1
  243. package/dist/lib.d.ts.map +0 -1
  244. package/dist/web/app/@overlay/default.d.ts +0 -1
  245. package/dist/web/app/@overlay/default.js +0 -3
  246. package/dist/web/app/about/page.d.ts +0 -1
  247. package/dist/web/app/about/page.js +0 -6
  248. package/dist/web/app/layout.d.ts +0 -7
  249. package/dist/web/app/layout.js +0 -19
  250. package/dist/web/app/page.d.ts +0 -1
  251. package/dist/web/app/page.js +0 -38
  252. package/dist/web/app/settings/page.d.ts +0 -1
  253. package/dist/web/app/settings/page.js +0 -6
  254. package/dist/web/app/shortcuts/page.d.ts +0 -1
  255. package/dist/web/app/shortcuts/page.js +0 -6
  256. package/dist/web/atoms/sidebar.d.ts +0 -16
  257. package/dist/web/atoms/sidebar.js +0 -58
  258. package/dist/web/atoms/state.d.ts +0 -24
  259. package/dist/web/atoms/state.js +0 -43
  260. package/dist/web/components/command-palette.d.ts +0 -6
  261. package/dist/web/components/command-palette.js +0 -297
  262. package/dist/web/components/main-view.d.ts +0 -1
  263. package/dist/web/components/main-view.js +0 -93
  264. package/dist/web/components/overlay/page-overlay.d.ts +0 -16
  265. package/dist/web/components/overlay/page-overlay.js +0 -84
  266. package/dist/web/components/pane-view.d.ts +0 -5
  267. package/dist/web/components/pane-view.js +0 -168
  268. package/dist/web/components/project-files-view.d.ts +0 -6
  269. package/dist/web/components/project-files-view.js +0 -205
  270. package/dist/web/components/project-planning-view.d.ts +0 -6
  271. package/dist/web/components/project-planning-view.js +0 -146
  272. package/dist/web/components/session-view.d.ts +0 -6
  273. package/dist/web/components/session-view.js +0 -211
  274. package/dist/web/components/sessions-list-view.d.ts +0 -1
  275. package/dist/web/components/sessions-list-view.js +0 -118
  276. package/dist/web/components/sidebar/index.d.ts +0 -9
  277. package/dist/web/components/sidebar/index.js +0 -29
  278. package/dist/web/components/sidebar/kbd.d.ts +0 -17
  279. package/dist/web/components/sidebar/kbd.js +0 -47
  280. package/dist/web/components/sidebar/nav-group.d.ts +0 -22
  281. package/dist/web/components/sidebar/nav-group.js +0 -43
  282. package/dist/web/components/sidebar/nav-item.d.ts +0 -17
  283. package/dist/web/components/sidebar/nav-item.js +0 -38
  284. package/dist/web/components/sidebar/sidebar-header.d.ts +0 -9
  285. package/dist/web/components/sidebar/sidebar-header.js +0 -18
  286. package/dist/web/components/sidebar/sidebar-nav.d.ts +0 -7
  287. package/dist/web/components/sidebar/sidebar-nav.js +0 -505
  288. package/dist/web/components/sidebar/sidebar-search.d.ts +0 -7
  289. package/dist/web/components/sidebar/sidebar-search.js +0 -18
  290. package/dist/web/components/sidebar/sidebar-settings.d.ts +0 -4
  291. package/dist/web/components/sidebar/sidebar-settings.js +0 -28
  292. package/dist/web/components/sidebar/sidebar-transition.d.ts +0 -12
  293. package/dist/web/components/sidebar/sidebar-transition.js +0 -58
  294. package/dist/web/components/status-bar.d.ts +0 -1
  295. package/dist/web/components/status-bar.js +0 -53
  296. package/dist/web/components/terminal.d.ts +0 -4
  297. package/dist/web/components/terminal.js +0 -324
  298. package/dist/web/components/toast.d.ts +0 -7
  299. package/dist/web/components/toast.js +0 -72
  300. package/dist/web/hooks/use-keybindings.d.ts +0 -30
  301. package/dist/web/hooks/use-keybindings.js +0 -322
  302. package/dist/web/hooks/use-state.d.ts +0 -11
  303. package/dist/web/hooks/use-state.js +0 -84
  304. package/dist/web/lib/api.d.ts +0 -179
  305. package/dist/web/lib/api.js +0 -79
  306. package/dist/web/lib/paths.d.ts +0 -2
  307. package/dist/web/lib/paths.js +0 -26
  308. package/dist/web/lib/utils.d.ts +0 -2
  309. package/dist/web/lib/utils.js +0 -5
  310. package/dist/web/lib/ws.d.ts +0 -18
  311. package/dist/web/lib/ws.js +0 -138
  312. package/dist/web/next.config.d.ts +0 -3
  313. package/dist/web/next.config.js +0 -9
  314. package/scripts/generate-manifest.ts +0 -44
  315. package/src/cli/base-command.ts +0 -233
  316. package/src/cli/commands/__tests__/annotations.test.ts +0 -704
  317. package/src/cli/commands/__tests__/bridge.test.ts +0 -101
  318. package/src/cli/commands/__tests__/daemon.test.ts +0 -79
  319. package/src/cli/commands/agent/list.ts +0 -75
  320. package/src/cli/commands/annotation/ack.ts +0 -37
  321. package/src/cli/commands/annotation/create.ts +0 -67
  322. package/src/cli/commands/annotation/events.ts +0 -63
  323. package/src/cli/commands/annotation/export.ts +0 -67
  324. package/src/cli/commands/annotation/import.ts +0 -98
  325. package/src/cli/commands/annotation/ingest.ts +0 -112
  326. package/src/cli/commands/annotation/list.ts +0 -57
  327. package/src/cli/commands/annotation/reply.ts +0 -46
  328. package/src/cli/commands/annotation/resolve.ts +0 -37
  329. package/src/cli/commands/auto/index.ts +0 -755
  330. package/src/cli/commands/backlog/add.ts +0 -74
  331. package/src/cli/commands/backlog/claim.ts +0 -53
  332. package/src/cli/commands/backlog/complete.ts +0 -51
  333. package/src/cli/commands/backlog/list.ts +0 -107
  334. package/src/cli/commands/backlog/pick.ts +0 -50
  335. package/src/cli/commands/backlog/sync.ts +0 -131
  336. package/src/cli/commands/bootstrap.ts +0 -205
  337. package/src/cli/commands/bridge.ts +0 -233
  338. package/src/cli/commands/context/inject.ts +0 -103
  339. package/src/cli/commands/context/list.ts +0 -112
  340. package/src/cli/commands/context/publish.ts +0 -83
  341. package/src/cli/commands/context/read.ts +0 -85
  342. package/src/cli/commands/daemon.ts +0 -1809
  343. package/src/cli/commands/digest/index.ts +0 -245
  344. package/src/cli/commands/docs/lint.ts +0 -93
  345. package/src/cli/commands/docs/sync.ts +0 -90
  346. package/src/cli/commands/doctor.ts +0 -267
  347. package/src/cli/commands/find/index.ts +0 -313
  348. package/src/cli/commands/history/index.ts +0 -269
  349. package/src/cli/commands/hooks/guard.ts +0 -71
  350. package/src/cli/commands/hooks/list.ts +0 -139
  351. package/src/cli/commands/hooks/lock.ts +0 -47
  352. package/src/cli/commands/hooks/status.ts +0 -56
  353. package/src/cli/commands/hooks/test.ts +0 -190
  354. package/src/cli/commands/hooks/unlock.ts +0 -56
  355. package/src/cli/commands/list.e2e.test.ts +0 -58
  356. package/src/cli/commands/list.ts +0 -96
  357. package/src/cli/commands/login.ts +0 -236
  358. package/src/cli/commands/logout.ts +0 -45
  359. package/src/cli/commands/panes/broker.ts +0 -68
  360. package/src/cli/commands/panes/pipe-sink.ts +0 -101
  361. package/src/cli/commands/panes/snapshot.ts +0 -156
  362. package/src/cli/commands/plan.e2e.test.ts +0 -90
  363. package/src/cli/commands/plan.ts +0 -68
  364. package/src/cli/commands/preview/index.ts +0 -282
  365. package/src/cli/commands/preview/list.ts +0 -116
  366. package/src/cli/commands/preview/status.ts +0 -137
  367. package/src/cli/commands/preview/stop.ts +0 -165
  368. package/src/cli/commands/project/add.ts +0 -110
  369. package/src/cli/commands/project/list.ts +0 -136
  370. package/src/cli/commands/project/remove.ts +0 -60
  371. package/src/cli/commands/push.ts +0 -115
  372. package/src/cli/commands/reference/add.ts +0 -266
  373. package/src/cli/commands/reference/delete.ts +0 -67
  374. package/src/cli/commands/reference/extract.ts +0 -389
  375. package/src/cli/commands/reference/list.ts +0 -117
  376. package/src/cli/commands/reference/normalize.ts +0 -90
  377. package/src/cli/commands/reference/open.ts +0 -92
  378. package/src/cli/commands/reference/save.ts +0 -103
  379. package/src/cli/commands/reference/search.ts +0 -85
  380. package/src/cli/commands/reference/show.ts +0 -174
  381. package/src/cli/commands/reference/update-index.ts +0 -103
  382. package/src/cli/commands/reference/update.ts +0 -136
  383. package/src/cli/commands/report/blocked.ts +0 -165
  384. package/src/cli/commands/report/complete.ts +0 -179
  385. package/src/cli/commands/report/progress.ts +0 -142
  386. package/src/cli/commands/report/start.ts +0 -140
  387. package/src/cli/commands/resource/acquire.ts +0 -116
  388. package/src/cli/commands/resource/list.ts +0 -77
  389. package/src/cli/commands/resource/release.ts +0 -64
  390. package/src/cli/commands/resource/wait.ts +0 -93
  391. package/src/cli/commands/review.ts +0 -105
  392. package/src/cli/commands/session/attach.ts +0 -200
  393. package/src/cli/commands/session/await.ts +0 -83
  394. package/src/cli/commands/session/complete.ts +0 -100
  395. package/src/cli/commands/session/create.ts +0 -92
  396. package/src/cli/commands/session/heartbeat.ts +0 -63
  397. package/src/cli/commands/session/list.ts +0 -281
  398. package/src/cli/commands/session/mark-done.ts +0 -132
  399. package/src/cli/commands/session/mine.ts +0 -189
  400. package/src/cli/commands/session/replay.ts +0 -659
  401. package/src/cli/commands/session/run.ts +0 -44
  402. package/src/cli/commands/session/show.ts +0 -177
  403. package/src/cli/commands/session/start.ts +0 -580
  404. package/src/cli/commands/session/state/cleanup.ts +0 -61
  405. package/src/cli/commands/session/state/end.ts +0 -47
  406. package/src/cli/commands/session/state/get.ts +0 -65
  407. package/src/cli/commands/session/state/init.ts +0 -50
  408. package/src/cli/commands/session/state/list.ts +0 -68
  409. package/src/cli/commands/session/state/update.ts +0 -108
  410. package/src/cli/commands/session/stop.ts +0 -134
  411. package/src/cli/commands/session/view.ts +0 -186
  412. package/src/cli/commands/start.ts +0 -256
  413. package/src/cli/commands/state/dump.ts +0 -449
  414. package/src/cli/commands/status.ts +0 -244
  415. package/src/cli/commands/sync.ts +0 -174
  416. package/src/cli/commands/trace/export.ts +0 -255
  417. package/src/cli/commands/triage/claim.ts +0 -203
  418. package/src/cli/commands/triage/list.ts +0 -137
  419. package/src/cli/commands/triage/next.ts +0 -73
  420. package/src/cli/commands/triage/pull.ts +0 -97
  421. package/src/cli/commands/triage/stats.ts +0 -82
  422. package/src/cli/commands/tunnel/list.ts +0 -113
  423. package/src/cli/commands/tunnel/start.ts +0 -122
  424. package/src/cli/commands/tunnel/stop.ts +0 -108
  425. package/src/cli/commands/tunnel/url.ts +0 -82
  426. package/src/cli/commands/web/start.ts +0 -125
  427. package/src/cli/commands/windows/context.ts +0 -439
  428. package/src/cli/commands/windows/focus.ts +0 -130
  429. package/src/cli/commands/windows/list.ts +0 -213
  430. package/src/cli/commands/windows/map.ts +0 -223
  431. package/src/cli/commands/windows/read.ts +0 -279
  432. package/src/cli/commands/windows/search.ts +0 -219
  433. package/src/cli/commands/windows/show.ts +0 -188
  434. package/src/cli/commands/windows/watch.ts +0 -262
  435. package/src/lib/__tests__/annotations-convex.test.ts +0 -104
  436. package/src/lib/active-sessions.ts +0 -1486
  437. package/src/lib/agent-adapters.ts +0 -412
  438. package/src/lib/agent-sessions.ts +0 -671
  439. package/src/lib/agent-trace.test.ts +0 -296
  440. package/src/lib/agent-trace.ts +0 -513
  441. package/src/lib/analytics.ts +0 -178
  442. package/src/lib/annotations-convex.ts +0 -296
  443. package/src/lib/annotations.test.ts +0 -274
  444. package/src/lib/annotations.ts +0 -836
  445. package/src/lib/auto/discover.ts +0 -545
  446. package/src/lib/auto/ideate.ts +0 -412
  447. package/src/lib/auto/spawn.ts +0 -549
  448. package/src/lib/auto/workspace.ts +0 -282
  449. package/src/lib/backlog.test.ts +0 -194
  450. package/src/lib/backlog.ts +0 -428
  451. package/src/lib/config-loader.ts +0 -391
  452. package/src/lib/config-sync/adapters/claude.ts +0 -91
  453. package/src/lib/config-sync/adapters/codex.ts +0 -135
  454. package/src/lib/config-sync/adapters/copilot.ts +0 -98
  455. package/src/lib/config-sync/adapters/gemini.ts +0 -86
  456. package/src/lib/config-sync/adapters/index.ts +0 -39
  457. package/src/lib/config-sync/adapters/opencode.ts +0 -94
  458. package/src/lib/config-sync/index.ts +0 -399
  459. package/src/lib/config-sync/types.ts +0 -92
  460. package/src/lib/config-sync/writer.ts +0 -188
  461. package/src/lib/content-sync/index.ts +0 -882
  462. package/src/lib/content-sync/types.ts +0 -104
  463. package/src/lib/contracts.test.ts +0 -186
  464. package/src/lib/contracts.ts +0 -195
  465. package/src/lib/convex.ts +0 -54
  466. package/src/lib/device.ts +0 -41
  467. package/src/lib/digest/index.ts +0 -529
  468. package/src/lib/docs/lint.test.ts +0 -135
  469. package/src/lib/docs/lint.ts +0 -310
  470. package/src/lib/docs/sync.ts +0 -184
  471. package/src/lib/doctor/index.ts +0 -647
  472. package/src/lib/doctor/repos.ts +0 -381
  473. package/src/lib/doctor/templates.ts +0 -191
  474. package/src/lib/errors.ts +0 -111
  475. package/src/lib/events.ts +0 -479
  476. package/src/lib/heartbeat.test.ts +0 -164
  477. package/src/lib/heartbeat.ts +0 -326
  478. package/src/lib/hooks/adapters/claude.ts +0 -115
  479. package/src/lib/hooks/adapters/codex.ts +0 -92
  480. package/src/lib/hooks/adapters/copilot.ts +0 -141
  481. package/src/lib/hooks/context.ts +0 -174
  482. package/src/lib/hooks/index.ts +0 -39
  483. package/src/lib/hooks/registry.ts +0 -101
  484. package/src/lib/hooks/runner.ts +0 -208
  485. package/src/lib/hooks/types.ts +0 -89
  486. package/src/lib/index.test.ts +0 -426
  487. package/src/lib/managed-session.ts +0 -117
  488. package/src/lib/math.test.ts +0 -299
  489. package/src/lib/math.ts +0 -120
  490. package/src/lib/ngrok.ts +0 -441
  491. package/src/lib/nvim/discovery.test.ts +0 -157
  492. package/src/lib/nvim/discovery.ts +0 -181
  493. package/src/lib/nvim/index.ts +0 -28
  494. package/src/lib/nvim/remote.test.ts +0 -21
  495. package/src/lib/nvim/remote.ts +0 -184
  496. package/src/lib/panes/README.md +0 -20
  497. package/src/lib/panes/broker.ts +0 -261
  498. package/src/lib/panes/index.ts +0 -1
  499. package/src/lib/panes/server.ts +0 -379
  500. package/src/lib/preview/detect.ts +0 -184
  501. package/src/lib/preview/index.ts +0 -1
  502. package/src/lib/process/index.ts +0 -16
  503. package/src/lib/process/snapshot.test.ts +0 -188
  504. package/src/lib/process/snapshot.ts +0 -257
  505. package/src/lib/provider-auth.ts +0 -258
  506. package/src/lib/references.ts +0 -481
  507. package/src/lib/report.ts +0 -973
  508. package/src/lib/resources.test.ts +0 -132
  509. package/src/lib/resources.ts +0 -429
  510. package/src/lib/runner.test.ts +0 -288
  511. package/src/lib/runner.ts +0 -1223
  512. package/src/lib/session-artifacts.test.ts +0 -107
  513. package/src/lib/session-artifacts.ts +0 -193
  514. package/src/lib/session-manager.test.ts +0 -402
  515. package/src/lib/session-manager.ts +0 -150
  516. package/src/lib/session-result.test.ts +0 -98
  517. package/src/lib/session-result.ts +0 -262
  518. package/src/lib/session-state.ts +0 -470
  519. package/src/lib/slack-workspace.ts +0 -25
  520. package/src/lib/tmux/bridge.ts +0 -439
  521. package/src/lib/tmux/context.test.ts +0 -242
  522. package/src/lib/tmux/context.ts +0 -380
  523. package/src/lib/tmux/index.ts +0 -46
  524. package/src/lib/tmux/map.test.ts +0 -99
  525. package/src/lib/tmux/map.ts +0 -252
  526. package/src/lib/tmux/panes.ts +0 -170
  527. package/src/lib/tmux/redaction.test.ts +0 -231
  528. package/src/lib/tmux/redaction.ts +0 -201
  529. package/src/lib/triage-llm.ts +0 -312
  530. package/src/lib/triage-tracker.ts +0 -400
  531. package/src/lib/triage.ts +0 -655
  532. package/src/lib/types.ts +0 -61
  533. package/src/lib/windows/index.ts +0 -2
  534. package/src/lib/windows/inventory.test.ts +0 -370
  535. package/src/lib/windows/inventory.ts +0 -352
  536. package/src/lib/windows/types.ts +0 -46
  537. package/src/lib.ts +0 -260
@@ -1,139 +0,0 @@
1
- import { Flags } from "@oclif/core";
2
- import {
3
- type AgentPlatform,
4
- discoverAllHooks,
5
- getConfigPaths,
6
- HOOK_PLATFORMS,
7
- type HookRegistry,
8
- } from "../../../lib/hooks/index.js";
9
- import { BaseCommand } from "../../base-command.js";
10
-
11
- interface ListOutput {
12
- registry: HookRegistry;
13
- configPaths: Record<AgentPlatform, string>;
14
- }
15
-
16
- export default class HooksListCommand extends BaseCommand {
17
- static override summary = "List configured hooks across all agent platforms";
18
- static override description = `Discovers and displays hooks from:
19
- - Claude Code (~/.claude/settings.json)
20
- - Codex (~/.codex/config.toml)
21
- - Copilot (.github/hooks/hooks.json per-repo)`;
22
-
23
- static override examples = [
24
- "$ abbie hooks list",
25
- "$ abbie hooks list --platform claude",
26
- "$ abbie hooks list --json --quiet",
27
- ];
28
-
29
- static override flags = {
30
- ...BaseCommand.baseFlags,
31
- platform: Flags.string({
32
- char: "p",
33
- description: `Filter by platform (${HOOK_PLATFORMS.join(", ")})`,
34
- options: [...HOOK_PLATFORMS],
35
- }),
36
- };
37
-
38
- async execute(): Promise<ListOutput> {
39
- const { flags } = await this.parse(HooksListCommand);
40
- this.parsedFlags = flags;
41
-
42
- const registry = await discoverAllHooks();
43
- const configPaths = getConfigPaths();
44
-
45
- // Filter by platform if specified
46
- if (flags.platform) {
47
- const platform = flags.platform as AgentPlatform;
48
- // Build filtered platforms object dynamically
49
- const filteredPlatforms = Object.fromEntries(
50
- HOOK_PLATFORMS.map((p) => [p, p === platform ? registry.platforms[p] : []]),
51
- ) as Record<AgentPlatform, (typeof registry.platforms)[AgentPlatform]>;
52
-
53
- const filtered: HookRegistry = {
54
- platforms: filteredPlatforms,
55
- totalCount: registry.platforms[platform].length,
56
- discoveredAt: registry.discoveredAt,
57
- errors: registry.errors.filter((e) => e.platform === platform),
58
- };
59
-
60
- if (!this.jsonEnabled?.()) {
61
- this.renderTextOutput(filtered, configPaths, platform);
62
- }
63
-
64
- return { registry: filtered, configPaths };
65
- }
66
-
67
- // NDJSON: flatten all hooks, one per line
68
- if (this.ndjsonEnabled()) {
69
- const items: Array<{
70
- platform: string;
71
- event: string;
72
- name: string;
73
- path: string;
74
- timeout?: number;
75
- }> = [];
76
- for (const platform of HOOK_PLATFORMS) {
77
- for (const hook of registry.platforms[platform]) {
78
- items.push({
79
- platform,
80
- event: hook.event,
81
- name: hook.name,
82
- path: hook.path,
83
- timeout: hook.timeout,
84
- });
85
- }
86
- }
87
- this.outputNdjson(items);
88
- return { registry, configPaths };
89
- }
90
-
91
- // Full output
92
- if (!this.jsonEnabled?.()) {
93
- this.renderTextOutput(registry, configPaths);
94
- }
95
-
96
- return { registry, configPaths };
97
- }
98
-
99
- private renderTextOutput(
100
- registry: HookRegistry,
101
- configPaths: Record<AgentPlatform, string>,
102
- filterPlatform?: AgentPlatform,
103
- ): void {
104
- const platforms: AgentPlatform[] = filterPlatform ? [filterPlatform] : HOOK_PLATFORMS;
105
-
106
- for (const platform of platforms) {
107
- const hooks = registry.platforms[platform];
108
- const configPath = configPaths[platform];
109
-
110
- this.log(`\n=== ${platform} ===`);
111
- this.log(`config: ${configPath}`);
112
-
113
- if (hooks.length === 0) {
114
- this.log(" (no hooks configured)");
115
- continue;
116
- }
117
-
118
- for (const hook of hooks) {
119
- this.log(` ${hook.event}: ${hook.name}`);
120
- this.log(` path: ${hook.path}`);
121
- if (hook.timeout) {
122
- this.log(` timeout: ${hook.timeout}s`);
123
- }
124
- }
125
- }
126
-
127
- // Summary
128
- this.log("");
129
- this.logInfo(`total: ${registry.totalCount} hooks`);
130
-
131
- // Errors
132
- if (registry.errors.length > 0) {
133
- this.log("\nerrors:");
134
- for (const err of registry.errors) {
135
- this.log(` ${err.platform}: ${err.message}`);
136
- }
137
- }
138
- }
139
- }
@@ -1,47 +0,0 @@
1
- import { createLockfile } from "../../../lib/hooks/index.js";
2
- import { BaseCommand } from "../../base-command.js";
3
-
4
- interface LockOutput {
5
- path: string;
6
- pid: number;
7
- }
8
-
9
- export default class HooksLockCommand extends BaseCommand {
10
- static override summary = "Create a hook context lockfile";
11
- static override description = `Creates a lockfile to signal that hooks should be skipped.
12
-
13
- Use before spawning agents that might trigger their own hooks:
14
- LOCK=$(abbie hook lock)
15
- trap "abbie hook unlock $LOCK" EXIT
16
- copilot ...
17
-
18
- Lockfiles auto-expire after 2 minutes (cleaned by guard command).`;
19
-
20
- static override examples = [
21
- "# Create lockfile",
22
- "LOCK=$(abbie hook lock)",
23
- "",
24
- "# With cleanup trap",
25
- "LOCK=$(abbie hook lock)",
26
- 'trap "abbie hook unlock $LOCK" EXIT',
27
- 'copilot -p "summarize"',
28
- ];
29
-
30
- static override flags = {
31
- ...BaseCommand.baseFlags,
32
- };
33
-
34
- async execute(): Promise<LockOutput> {
35
- const path = createLockfile();
36
-
37
- if (!this.jsonEnabled?.()) {
38
- // Just output the path for shell capture
39
- this.log(path);
40
- }
41
-
42
- return {
43
- path,
44
- pid: process.pid,
45
- };
46
- }
47
- }
@@ -1,56 +0,0 @@
1
- import { getAllLockfiles, type LockfileInfo } from "../../../lib/hooks/index.js";
2
- import { BaseCommand } from "../../base-command.js";
3
-
4
- interface StatusOutput {
5
- lockfiles: LockfileInfo[];
6
- active: number;
7
- stale: number;
8
- envVar: boolean;
9
- }
10
-
11
- export default class HooksStatusCommand extends BaseCommand {
12
- static override summary = "Show hook context status and lockfiles";
13
- static override description = `Lists all lockfiles (active and stale) for debugging hook issues.
14
-
15
- Active lockfiles are <2 minutes old and will cause 'abbie hook guard' to return 0.
16
- Stale lockfiles are >2 minutes old and will be cleaned up by 'abbie hook guard'.`;
17
-
18
- static override examples = ["$ abbie hook status", "$ abbie hook status --json --quiet"];
19
-
20
- static override flags = {
21
- ...BaseCommand.baseFlags,
22
- };
23
-
24
- async execute(): Promise<StatusOutput> {
25
- const lockfiles = getAllLockfiles();
26
- const active = lockfiles.filter((l) => !l.stale);
27
- const stale = lockfiles.filter((l) => l.stale);
28
- const envVar = process.env.AGENTS_HOOK_CONTEXT === "true";
29
-
30
- if (!this.jsonEnabled?.()) {
31
- this.log(`AGENTS_HOOK_CONTEXT env: ${envVar ? "true" : "not set"}`);
32
- this.log(`active lockfiles: ${active.length}`);
33
- this.log(`stale lockfiles: ${stale.length}`);
34
-
35
- if (lockfiles.length > 0) {
36
- this.log("");
37
- for (const l of lockfiles) {
38
- const status = l.stale ? "(stale)" : "(active)";
39
- this.log(` ${l.path} - ${l.age}s old ${status}`);
40
- }
41
- }
42
-
43
- if (active.length > 0 || envVar) {
44
- this.log("");
45
- this.logInfo("hooks will be skipped (guard returns 0)");
46
- }
47
- }
48
-
49
- return {
50
- lockfiles,
51
- active: active.length,
52
- stale: stale.length,
53
- envVar,
54
- };
55
- }
56
- }
@@ -1,190 +0,0 @@
1
- import { Args, Flags } from "@oclif/core";
2
- import {
3
- discoverAllHooks,
4
- generateMockPayload,
5
- type Hook,
6
- type HookTestResult,
7
- runHook,
8
- } from "../../../lib/hooks/index.js";
9
- import { BaseCommand } from "../../base-command.js";
10
-
11
- interface TestOutput {
12
- results: HookTestResult[];
13
- summary: {
14
- total: number;
15
- passed: number;
16
- failed: number;
17
- };
18
- }
19
-
20
- export default class HooksTestCommand extends BaseCommand {
21
- static override summary = "Test hooks by executing them with mock payloads";
22
- static override description = `Runs hooks with mock payloads to verify they work correctly.
23
-
24
- Each platform receives appropriately formatted test data:
25
- - Claude Code: JSON via stdin (Stop event format)
26
- - Codex: JSON as CLI argument (turn-complete format)
27
- - OpenCode: JSON via stdin to JS plugin
28
-
29
- Test mode sets HOOK_TEST_MODE=true in the environment.`;
30
-
31
- static override examples = [
32
- "$ abbie hooks test # Test all hooks",
33
- "$ abbie hooks test --platform claude # Test only Claude hooks",
34
- "$ abbie hooks test notify-stop.sh # Test specific hook by name",
35
- "$ abbie hooks test --json --quiet # JSON output for agents",
36
- ];
37
-
38
- static override args = {
39
- hook: Args.string({
40
- description: "Hook name or ID to test (optional, tests all if omitted)",
41
- required: false,
42
- }),
43
- };
44
-
45
- static override flags = {
46
- ...BaseCommand.baseFlags,
47
- platform: Flags.string({
48
- char: "p",
49
- description: "Filter by platform (claude, codex, copilot)",
50
- options: ["claude", "codex", "copilot"],
51
- }),
52
- "show-payload": Flags.boolean({
53
- description: "Show the mock payload that will be sent",
54
- default: false,
55
- }),
56
- "dry-run": Flags.boolean({
57
- description: "Show what would be tested without executing",
58
- default: false,
59
- }),
60
- };
61
-
62
- async execute(): Promise<TestOutput> {
63
- const { args, flags } = await this.parse(HooksTestCommand);
64
- this.parsedFlags = flags;
65
-
66
- const registry = await discoverAllHooks();
67
-
68
- // Collect all hooks
69
- let hooksToTest: Hook[] = [];
70
-
71
- if (flags.platform) {
72
- hooksToTest = registry.platforms[flags.platform as keyof typeof registry.platforms];
73
- } else {
74
- hooksToTest = [
75
- ...registry.platforms.claude,
76
- ...registry.platforms.codex,
77
- ...registry.platforms.copilot,
78
- ];
79
- }
80
-
81
- // Filter by name if specified
82
- if (args.hook) {
83
- const searchTerm = args.hook.toLowerCase();
84
- hooksToTest = hooksToTest.filter(
85
- (h) =>
86
- h.name.toLowerCase().includes(searchTerm) ||
87
- h.id.toLowerCase().includes(searchTerm) ||
88
- h.path.toLowerCase().includes(searchTerm),
89
- );
90
-
91
- if (hooksToTest.length === 0) {
92
- this.logInfo(`no hooks matching "${args.hook}" found`);
93
- return {
94
- results: [],
95
- summary: { total: 0, passed: 0, failed: 0 },
96
- };
97
- }
98
- }
99
-
100
- if (hooksToTest.length === 0) {
101
- this.logInfo("no hooks found to test");
102
- return {
103
- results: [],
104
- summary: { total: 0, passed: 0, failed: 0 },
105
- };
106
- }
107
-
108
- // Show what will be tested
109
- if (!this.jsonEnabled?.()) {
110
- this.log(`\ntesting ${hooksToTest.length} hook(s)...\n`);
111
- }
112
-
113
- // Show payload if requested
114
- if (flags["show-payload"] && !this.jsonEnabled?.()) {
115
- for (const hook of hooksToTest) {
116
- const payload = generateMockPayload(hook);
117
- this.log(`=== ${hook.platform}:${hook.name} payload ===`);
118
- this.log(JSON.stringify(payload, null, 2));
119
- this.log("");
120
- }
121
- }
122
-
123
- // Dry run - just show what would be tested
124
- if (flags["dry-run"]) {
125
- if (!this.jsonEnabled?.()) {
126
- for (const hook of hooksToTest) {
127
- this.log(`[dry-run] ${hook.platform}:${hook.name}`);
128
- this.log(` path: ${hook.path}`);
129
- this.log(` event: ${hook.event}`);
130
- }
131
- }
132
- return {
133
- results: hooksToTest.map((hook) => ({
134
- hook,
135
- success: true,
136
- durationMs: 0,
137
- })),
138
- summary: {
139
- total: hooksToTest.length,
140
- passed: hooksToTest.length,
141
- failed: 0,
142
- },
143
- };
144
- }
145
-
146
- // Execute tests
147
- const results: HookTestResult[] = [];
148
-
149
- for (const hook of hooksToTest) {
150
- if (!this.jsonEnabled?.()) {
151
- this.log(`testing ${hook.platform}:${hook.name}...`);
152
- }
153
-
154
- const result = await runHook(hook);
155
- results.push(result);
156
-
157
- if (!this.jsonEnabled?.()) {
158
- if (result.success) {
159
- this.log(` ✓ passed (${result.durationMs}ms)`);
160
- } else {
161
- this.log(` ✗ failed (${result.durationMs}ms)`);
162
- if (result.error) {
163
- this.log(` error: ${result.error}`);
164
- }
165
- if (result.stderr) {
166
- this.log(` stderr: ${result.stderr.slice(0, 200)}`);
167
- }
168
- }
169
- }
170
- }
171
-
172
- // Summary
173
- const passed = results.filter((r) => r.success).length;
174
- const failed = results.filter((r) => !r.success).length;
175
-
176
- if (!this.jsonEnabled?.()) {
177
- this.log("");
178
- this.logInfo(`results: ${passed} passed, ${failed} failed`);
179
- }
180
-
181
- return {
182
- results,
183
- summary: {
184
- total: results.length,
185
- passed,
186
- failed,
187
- },
188
- };
189
- }
190
- }
@@ -1,56 +0,0 @@
1
- import { Args } from "@oclif/core";
2
- import { removeLockfile } from "../../../lib/hooks/index.js";
3
- import { BaseCommand } from "../../base-command.js";
4
-
5
- interface UnlockOutput {
6
- path: string;
7
- removed: boolean;
8
- }
9
-
10
- export default class HooksUnlockCommand extends BaseCommand {
11
- static override summary = "Remove a hook context lockfile";
12
- static override description = `Removes a lockfile created by 'abbie hook lock'.
13
-
14
- Usually called via trap for cleanup:
15
- LOCK=$(abbie hook lock)
16
- trap "abbie hook unlock $LOCK" EXIT`;
17
-
18
- static override examples = [
19
- "# Remove specific lockfile",
20
- "abbie hook unlock /tmp/.abbie-hook-context-12345-abc",
21
- "",
22
- "# In trap",
23
- 'trap "abbie hook unlock $LOCK" EXIT',
24
- ];
25
-
26
- static override args = {
27
- path: Args.string({
28
- description: "Path to lockfile (from abbie hook lock)",
29
- required: true,
30
- }),
31
- };
32
-
33
- static override flags = {
34
- ...BaseCommand.baseFlags,
35
- };
36
-
37
- async execute(): Promise<UnlockOutput> {
38
- const { args } = await this.parse(HooksUnlockCommand);
39
- const { path } = args;
40
-
41
- const removed = removeLockfile(path);
42
-
43
- if (!this.jsonEnabled?.()) {
44
- if (removed) {
45
- this.log(`removed: ${path}`);
46
- } else {
47
- this.log(`not found: ${path}`);
48
- }
49
- }
50
-
51
- return {
52
- path,
53
- removed,
54
- };
55
- }
56
- }
@@ -1,58 +0,0 @@
1
- import { describe, expect, it } from "bun:test";
2
-
3
- /**
4
- * E2E tests for abbie list command.
5
- * Tests the actual CLI binary using Bun.spawn().
6
- */
7
-
8
- describe("abbie list (E2E)", () => {
9
- async function runCLI(
10
- args: string[],
11
- ): Promise<{ stdout: string; stderr: string; exitCode: number | null }> {
12
- const proc = Bun.spawn(["bun", "bin/run.js", "list", ...args], {
13
- cwd: `${import.meta.dir}/../../..`,
14
- stdout: "pipe",
15
- stderr: "pipe",
16
- });
17
-
18
- const stdout = await new Response(proc.stdout).text();
19
- const stderr = await new Response(proc.stderr).text();
20
- await proc.exited;
21
-
22
- return { stdout, stderr, exitCode: proc.exitCode };
23
- }
24
-
25
- it("lists all sessions successfully", async () => {
26
- const { stdout, exitCode } = await runCLI([]);
27
- expect(exitCode).toBe(0);
28
- // Should list sessions (may be empty if no sessions exist)
29
- expect(stdout.length).toBeGreaterThan(0);
30
- });
31
-
32
- it("filters by project", async () => {
33
- const { stdout, exitCode } = await runCLI(["--project", "arbor"]);
34
- expect(exitCode).toBe(0);
35
- if (stdout.includes("arbor:")) {
36
- expect(stdout).toContain("arbor:");
37
- }
38
- });
39
-
40
- it("outputs JSON format", async () => {
41
- const { stdout, exitCode } = await runCLI(["--json"]);
42
- expect(exitCode).toBe(0);
43
- const data = JSON.parse(stdout);
44
- expect(typeof data).toBe("object");
45
- });
46
-
47
- it("suppresses info with --quiet", async () => {
48
- const { stdout, exitCode } = await runCLI(["--quiet"]);
49
- expect(exitCode).toBe(0);
50
- expect(stdout).not.toContain("Total:");
51
- });
52
-
53
- it("handles non-existent project gracefully", async () => {
54
- const { stderr, exitCode } = await runCLI(["--project", "nonexistent-project-12345"]);
55
- expect(exitCode).toBe(0); // Not an error, just no results
56
- expect(stderr).toContain("No sessions found");
57
- });
58
- });
@@ -1,96 +0,0 @@
1
- import { existsSync, readdirSync, statSync } from "node:fs";
2
- import { join } from "node:path";
3
- import { Flags } from "@oclif/core";
4
- import { BaseCommand } from "../base-command.js";
5
-
6
- type SessionList = Record<string, string[]>;
7
-
8
- export default class ListCommand extends BaseCommand {
9
- static override summary = "List planning sessions";
10
- static override description =
11
- "Lists all planning sessions organized by project in ~/.abbie/plans/";
12
-
13
- static override examples = [
14
- "$ abbie list",
15
- "$ abbie list --project arbor",
16
- "$ abbie list --json",
17
- ];
18
-
19
- static override flags = {
20
- ...BaseCommand.baseFlags,
21
- project: Flags.string({
22
- char: "p",
23
- description: "Filter by project name",
24
- }),
25
- };
26
-
27
- async execute(): Promise<SessionList> {
28
- const { flags } = await this.parse(ListCommand);
29
- this.parsedFlags = flags;
30
-
31
- const plansDir = this.getPlansDir();
32
-
33
- if (!existsSync(plansDir)) {
34
- this.logWarn(`Plans directory not found: ${plansDir}`);
35
- return {};
36
- }
37
-
38
- const projects = readdirSync(plansDir).filter((name) => {
39
- const path = join(plansDir, name);
40
- return statSync(path).isDirectory();
41
- });
42
-
43
- const filtered = flags.project ? projects.filter((p) => p === flags.project) : projects;
44
-
45
- if (filtered.length === 0 && flags.project) {
46
- this.logWarn(`No sessions found for project: ${flags.project}`);
47
- return {};
48
- }
49
-
50
- const result = this.gatherSessions(plansDir, filtered);
51
-
52
- // NDJSON: flatten to {project, session} per line
53
- if (this.ndjsonEnabled()) {
54
- const items: Array<{ project: string; session: string }> = [];
55
- for (const [project, sessions] of Object.entries(result)) {
56
- for (const session of sessions) {
57
- items.push({ project, session });
58
- }
59
- }
60
- this.outputNdjson(items);
61
- return result;
62
- }
63
-
64
- // Output human-readable format if not JSON mode
65
- if (!this.jsonEnabled?.()) {
66
- for (const [project, sessions] of Object.entries(result)) {
67
- this.log(`${project}:`);
68
- for (const session of sessions) {
69
- this.log(` ${session}`);
70
- }
71
- }
72
-
73
- const totalSessions = Object.values(result).flat().length;
74
- this.logInfo(`\nTotal: ${totalSessions} sessions across ${filtered.length} projects`);
75
- }
76
-
77
- // Always return data for programmatic use
78
- return result;
79
- }
80
-
81
- private gatherSessions(plansDir: string, projects: string[]): SessionList {
82
- const result: SessionList = {};
83
-
84
- for (const project of projects) {
85
- const projectDir = join(plansDir, project);
86
- const sessions = readdirSync(projectDir)
87
- .filter((name) => statSync(join(projectDir, name)).isDirectory())
88
- .sort()
89
- .reverse(); // Most recent first
90
-
91
- result[project] = sessions;
92
- }
93
-
94
- return result;
95
- }
96
- }