@creativeintelligence/abbie 0.1.3 → 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 +13 -7
  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,313 +0,0 @@
1
- import { execSync } from "node:child_process";
2
- import { readdir, readFile } from "node:fs/promises";
3
- import { homedir } from "node:os";
4
- import { join } from "node:path";
5
- import { Args, Flags } from "@oclif/core";
6
- import { BaseCommand } from "../../base-command.js";
7
-
8
- interface ToolMatch {
9
- type: "cli" | "skill" | "prompt" | "role";
10
- name: string;
11
- description: string;
12
- score: number;
13
- usage?: string;
14
- }
15
-
16
- export default class Find extends BaseCommand {
17
- static override description =
18
- "Find tools by intent or keyword. Searches across CLIs, skills, prompts, and roles.";
19
- static override hidden = false;
20
-
21
- static override examples = [
22
- '<%= config.bin %> find "run tests"',
23
- '<%= config.bin %> find "send slack message"',
24
- '<%= config.bin %> find "analyze code" --type cli',
25
- '<%= config.bin %> find "architect" --type role',
26
- ];
27
-
28
- static override args = {
29
- query: Args.string({
30
- description: "Search query (intent or keyword)",
31
- required: true,
32
- }),
33
- };
34
-
35
- static override flags = {
36
- ...BaseCommand.baseFlags,
37
- type: Flags.string({
38
- char: "t",
39
- description: "Filter by tool type",
40
- options: ["cli", "skill", "prompt", "role", "all"],
41
- default: "all",
42
- }),
43
- limit: Flags.integer({
44
- char: "l",
45
- description: "Limit results",
46
- default: 5,
47
- }),
48
- };
49
-
50
- protected async execute(): Promise<unknown> {
51
- const { args, flags } = await this.parse(Find);
52
- this.parsedFlags = flags;
53
-
54
- const query = args.query.toLowerCase();
55
- const toolType = flags.type;
56
- const limit = flags.limit;
57
-
58
- const allMatches: ToolMatch[] = [];
59
-
60
- // Search CLIs
61
- if (toolType === "all" || toolType === "cli") {
62
- const cliMatches = await this.searchCLIs(query);
63
- allMatches.push(...cliMatches);
64
- }
65
-
66
- // Search skills
67
- if (toolType === "all" || toolType === "skill") {
68
- const skillMatches = await this.searchSkills(query);
69
- allMatches.push(...skillMatches);
70
- }
71
-
72
- // Search prompts
73
- if (toolType === "all" || toolType === "prompt") {
74
- const promptMatches = await this.searchPrompts(query);
75
- allMatches.push(...promptMatches);
76
- }
77
-
78
- // Search roles
79
- if (toolType === "all" || toolType === "role") {
80
- const roleMatches = await this.searchRoles(query);
81
- allMatches.push(...roleMatches);
82
- }
83
-
84
- // Sort by score and limit
85
- const sortedMatches = allMatches.sort((a, b) => b.score - a.score).slice(0, limit);
86
-
87
- if (flags.json || flags.format === "json") {
88
- return sortedMatches;
89
- }
90
-
91
- // Text output
92
- if (sortedMatches.length === 0) {
93
- console.log(`No matches found for "${args.query}"`);
94
- return sortedMatches;
95
- }
96
-
97
- console.log(`\nFound ${sortedMatches.length} match(es) for "${args.query}":\n`);
98
-
99
- for (const match of sortedMatches) {
100
- const typeIcon = this.getTypeIcon(match.type);
101
- console.log(`${typeIcon} ${match.name} (${match.type})`);
102
- console.log(` ${match.description}`);
103
- if (match.usage) {
104
- console.log(` Usage: ${match.usage}`);
105
- }
106
- console.log("");
107
- }
108
-
109
- return sortedMatches;
110
- }
111
-
112
- private getTypeIcon(type: string): string {
113
- switch (type) {
114
- case "cli":
115
- return "🔧";
116
- case "skill":
117
- return "⚡";
118
- case "prompt":
119
- return "📝";
120
- case "role":
121
- return "🎭";
122
- default:
123
- return "•";
124
- }
125
- }
126
-
127
- private calculateScore(text: string, query: string): number {
128
- const lowerText = text.toLowerCase();
129
- const words = query.split(/\s+/);
130
-
131
- // Exact match
132
- if (lowerText.includes(query)) {
133
- return 100;
134
- }
135
-
136
- // All words present
137
- const allWordsPresent = words.every((word) => lowerText.includes(word));
138
- if (allWordsPresent) {
139
- return 80;
140
- }
141
-
142
- // Count matching words
143
- const matchingWords = words.filter((word) => lowerText.includes(word));
144
- const wordScore = (matchingWords.length / words.length) * 60;
145
-
146
- return wordScore;
147
- }
148
-
149
- private async searchCLIs(query: string): Promise<ToolMatch[]> {
150
- const clis = [
151
- { name: "outline", desc: "AST-based code structure analysis", usage: "outline src/" },
152
- { name: "layer", desc: "Dependency and architecture analysis", usage: "layer ." },
153
- { name: "verify", desc: "Test runner adapter", usage: "verify --format=summary" },
154
- {
155
- name: "abbie",
156
- desc: "Agent session management and orchestration",
157
- usage: "abbie session start",
158
- },
159
- {
160
- name: "abbie report",
161
- desc: "Lifecycle event persistence and notifications",
162
- usage: "abbie report start \"task\"",
163
- },
164
- { name: "abbie history", desc: "Query lifecycle event history", usage: "abbie history" },
165
- { name: "mem", desc: "Memory audit and zombie cleanup", usage: "mem audit" },
166
- {
167
- name: "slack",
168
- desc: "Slack messaging and notifications",
169
- usage: "slack dm send --user luke",
170
- },
171
- { name: "linear", desc: "Linear issue tracking", usage: "linear issue view ARBOR-123" },
172
- {
173
- name: "format",
174
- desc: "Cross-platform markdown formatting",
175
- usage: 'echo "**bold**" | format slack',
176
- },
177
- {
178
- name: "prompts",
179
- desc: "Prompt templates and commands",
180
- usage: "prompts commands export /tdd",
181
- },
182
- { name: "roles", desc: "Agent persona management", usage: "roles export jony" },
183
- { name: "epub", desc: "E-book generation and library management", usage: "epub compile" },
184
- ];
185
-
186
- const matches: ToolMatch[] = [];
187
- for (const cli of clis) {
188
- const searchText = `${cli.name} ${cli.desc}`;
189
- const score = this.calculateScore(searchText, query);
190
- if (score > 20) {
191
- matches.push({
192
- type: "cli",
193
- name: cli.name,
194
- description: cli.desc,
195
- score,
196
- usage: cli.usage,
197
- });
198
- }
199
- }
200
- return matches;
201
- }
202
-
203
- private async searchSkills(query: string): Promise<ToolMatch[]> {
204
- const skillsDir = join(homedir(), ".abbie", "skills");
205
- const matches: ToolMatch[] = [];
206
-
207
- try {
208
- const entries = await readdir(skillsDir, { withFileTypes: true });
209
-
210
- for (const entry of entries) {
211
- if (!entry.isDirectory()) continue;
212
- if (entry.name === "components" || entry.name === "runbooks") continue;
213
-
214
- const skillPath = join(skillsDir, entry.name, "SKILL.md");
215
- try {
216
- const content = await readFile(skillPath, "utf-8");
217
-
218
- // Parse frontmatter for description
219
- const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
220
- let description = entry.name;
221
-
222
- if (frontmatterMatch) {
223
- const descMatch = frontmatterMatch[1].match(/description:\s*(.+)/);
224
- if (descMatch) {
225
- description = descMatch[1].trim();
226
- }
227
- }
228
-
229
- const searchText = `${entry.name} ${description}`;
230
- const score = this.calculateScore(searchText, query);
231
-
232
- if (score > 20) {
233
- matches.push({
234
- type: "skill",
235
- name: entry.name,
236
- description,
237
- score,
238
- usage: `Use skill: /${entry.name}`,
239
- });
240
- }
241
- } catch {
242
- // Skill file doesn't exist or can't be read
243
- }
244
- }
245
- } catch {
246
- // Skills directory doesn't exist
247
- }
248
-
249
- return matches;
250
- }
251
-
252
- private async searchPrompts(query: string): Promise<ToolMatch[]> {
253
- const matches: ToolMatch[] = [];
254
-
255
- try {
256
- const output = execSync("prompts commands list --json --quiet 2>/dev/null", {
257
- encoding: "utf-8",
258
- });
259
- const prompts = JSON.parse(output);
260
-
261
- for (const prompt of prompts) {
262
- const searchText = `${prompt.alias || prompt.id} ${prompt.title || ""}`;
263
- const score = this.calculateScore(searchText, query);
264
-
265
- if (score > 20) {
266
- matches.push({
267
- type: "prompt",
268
- name: prompt.alias || prompt.id,
269
- description: prompt.title || prompt.id,
270
- score,
271
- usage: `prompts commands export ${prompt.alias || prompt.id}`,
272
- });
273
- }
274
- }
275
- } catch {
276
- // prompts CLI not available
277
- }
278
-
279
- return matches;
280
- }
281
-
282
- private async searchRoles(query: string): Promise<ToolMatch[]> {
283
- const matches: ToolMatch[] = [];
284
-
285
- try {
286
- const output = execSync("roles list --json --quiet 2>/dev/null", { encoding: "utf-8" });
287
- const categories = JSON.parse(output);
288
-
289
- for (const [category, roles] of Object.entries(categories)) {
290
- if (!Array.isArray(roles)) continue;
291
-
292
- for (const role of roles) {
293
- const searchText = `${role.name} ${role.description || ""} ${category}`;
294
- const score = this.calculateScore(searchText, query);
295
-
296
- if (score > 20) {
297
- matches.push({
298
- type: "role",
299
- name: role.name,
300
- description: `${role.description || role.name} (${category})`,
301
- score,
302
- usage: `roles export ${role.name}`,
303
- });
304
- }
305
- }
306
- }
307
- } catch {
308
- // roles CLI not available
309
- }
310
-
311
- return matches;
312
- }
313
- }
@@ -1,269 +0,0 @@
1
- import { api, getHttpClient } from "@creativeintelligence/sdk/convex";
2
- import { Flags } from "@oclif/core";
3
- import { BaseCommand } from "../../base-command.js";
4
-
5
- type HistoryEvent = {
6
- _id: string;
7
- _creationTime: number;
8
- timestamp?: number;
9
- action?: string;
10
- task?: string;
11
- confidence?: number;
12
- project?: string;
13
- deviceId?: string;
14
- agent?: string;
15
- traceId?: string;
16
- [key: string]: unknown;
17
- };
18
-
19
- interface HistoryResult {
20
- success: boolean;
21
- events: HistoryEvent[];
22
- count: number;
23
- filters: {
24
- last?: number;
25
- since?: string;
26
- sessionId?: string;
27
- traceId?: string;
28
- agent?: string;
29
- };
30
- }
31
-
32
- /**
33
- * Parse duration strings like "1h", "30m", "2d", "24h" into milliseconds.
34
- */
35
- function parseDuration(input: string): number {
36
- const match = input.match(/^(\d+(?:\.\d+)?)\s*(ms|s|m|h|d|w)$/);
37
- if (!match) throw new Error(`Invalid duration: "${input}" (expected e.g. 1h, 30m, 2d)`);
38
-
39
- const value = parseFloat(match[1]);
40
- const unit = match[2];
41
-
42
- const multipliers: Record<string, number> = {
43
- ms: 1,
44
- s: 1000,
45
- m: 60_000,
46
- h: 3_600_000,
47
- d: 86_400_000,
48
- w: 604_800_000,
49
- };
50
-
51
- return value * multipliers[unit];
52
- }
53
-
54
- export default class HistoryCommand extends BaseCommand {
55
- static override summary = "Query agent event history";
56
- static override description = `Query event history with a unified interface.
57
-
58
- Reads lifecycle events from Convex reports table.
59
-
60
- SYMMETRY: abbie report writes → abbie history reads`;
61
-
62
- static override examples = [
63
- "$ abbie history # recent events (default: 10)",
64
- "$ abbie history --last 20 # last 20 events",
65
- "$ abbie history --since 1h # events from last hour",
66
- "$ abbie history --since 24h --agent claude",
67
- "$ abbie history --trace-id tr_abc123 # events in a trace",
68
- "$ abbie history --session sess_xyz # events in a session",
69
- "$ abbie history --json # machine output",
70
- ];
71
-
72
- static override flags = {
73
- ...BaseCommand.baseFlags,
74
- last: Flags.integer({
75
- char: "n",
76
- description: "Number of recent events to show",
77
- default: 10,
78
- }),
79
- since: Flags.string({
80
- char: "s",
81
- description: "Time filter (e.g., 1h, 30m, 2d, 24h)",
82
- }),
83
- "trace-id": Flags.string({
84
- char: "t",
85
- description: "Filter by trace ID",
86
- }),
87
- session: Flags.string({
88
- description: "Filter by session ID",
89
- }),
90
- agent: Flags.string({
91
- char: "a",
92
- description: "Filter by agent (claude, codex, copilot, etc.)",
93
- }),
94
- action: Flags.string({
95
- description: "Filter by action (started, completed, blocked, escalated)",
96
- }),
97
- "min-confidence": Flags.integer({
98
- description: "Minimum confidence score",
99
- min: 1,
100
- max: 10,
101
- }),
102
- pattern: Flags.string({
103
- char: "p",
104
- description: "Regex pattern to match task/summary",
105
- }),
106
- count: Flags.boolean({
107
- description: "Only output count of matching events",
108
- default: false,
109
- }),
110
- };
111
-
112
- async execute(): Promise<HistoryResult> {
113
- const { flags } = await this.parse(HistoryCommand);
114
- this.parsedFlags = flags;
115
-
116
- const hasSieveFilters = flags.agent || flags.action || flags["min-confidence"];
117
-
118
- try {
119
- const client = getHttpClient();
120
-
121
- let sinceMs: number | undefined;
122
- if (flags.since) {
123
- sinceMs = Date.now() - parseDuration(flags.since);
124
- }
125
-
126
- let events: HistoryEvent[];
127
- if (flags["trace-id"]) {
128
- events = await client.query(api.reports.getTrace, {
129
- traceId: flags["trace-id"],
130
- limit: flags.last,
131
- });
132
- } else if (hasSieveFilters) {
133
- events = await client.query(api.reports.sieve, {
134
- agent: flags.agent,
135
- action: flags.action,
136
- minConfidence: flags["min-confidence"],
137
- since: sinceMs,
138
- sessionId: flags.session,
139
- limit: flags.last,
140
- });
141
- } else {
142
- events = await client.query(api.reports.replay, {
143
- limit: flags.last,
144
- since: sinceMs,
145
- sessionId: flags.session,
146
- });
147
- }
148
-
149
- events = this.postFilter(events, flags, sinceMs);
150
- if (flags.last) {
151
- events = events.slice(0, flags.last);
152
- }
153
-
154
- const result: HistoryResult = {
155
- success: true,
156
- events,
157
- count: events.length,
158
- filters: this.buildFilters(flags),
159
- };
160
-
161
- if (!this.jsonEnabled?.()) {
162
- this.renderTextOutput(result, flags);
163
- }
164
-
165
- return result;
166
- } catch (error) {
167
- const message = error instanceof Error ? error.message : String(error);
168
- return this.error(`history query failed: ${message}`, { exit: 1 });
169
- }
170
- }
171
-
172
- /**
173
- * Client-side post-filter for cross-filter scenarios.
174
- *
175
- * The server query picks the best single index (e.g., by_agent, by_timestamp),
176
- * but can't intersect multiple dimensions in one index scan. This pass applies
177
- * all remaining filters unconditionally — redundant filters are no-ops.
178
- * Pattern matching also uses regex here vs. substring on the server.
179
- */
180
- private postFilter(
181
- events: HistoryEvent[],
182
- flags: {
183
- "trace-id"?: string;
184
- session?: string;
185
- agent?: string;
186
- action?: string;
187
- "min-confidence"?: number;
188
- pattern?: string;
189
- },
190
- sinceMs?: number,
191
- ): HistoryEvent[] {
192
- let filtered = events;
193
-
194
- if (sinceMs !== undefined) {
195
- filtered = filtered.filter((e) => (e.timestamp ?? 0) >= sinceMs);
196
- }
197
- if (flags["trace-id"]) {
198
- filtered = filtered.filter((e) => e.traceId === flags["trace-id"]);
199
- }
200
- if (flags.session) {
201
- filtered = filtered.filter((e) => e.sessionId === flags.session);
202
- }
203
- if (flags.agent) {
204
- filtered = filtered.filter((e) => e.agent === flags.agent);
205
- }
206
- if (flags.action) {
207
- filtered = filtered.filter((e) => e.action === flags.action);
208
- }
209
- if (flags["min-confidence"] !== undefined) {
210
- filtered = filtered.filter((e) => (e.confidence ?? 0) >= flags["min-confidence"]!);
211
- }
212
- if (flags.pattern) {
213
- let regex: RegExp;
214
- try {
215
- regex = new RegExp(flags.pattern, "i");
216
- } catch (error) {
217
- const msg = error instanceof Error ? error.message : String(error);
218
- throw new Error(`Invalid regex pattern "${flags.pattern}": ${msg}`);
219
- }
220
- filtered = filtered.filter((e) => regex.test(`${e.task ?? ""} ${e.summary ?? ""}`));
221
- }
222
-
223
- return filtered;
224
- }
225
-
226
- private buildFilters(flags: unknown): HistoryResult["filters"] {
227
- const typedFlags = flags as Record<string, unknown>;
228
- return {
229
- last: typeof typedFlags.last === "number" ? typedFlags.last : undefined,
230
- since: typeof typedFlags.since === "string" ? typedFlags.since : undefined,
231
- sessionId: typeof typedFlags.session === "string" ? typedFlags.session : undefined,
232
- traceId: typeof typedFlags["trace-id"] === "string" ? typedFlags["trace-id"] : undefined,
233
- agent: typeof typedFlags.agent === "string" ? typedFlags.agent : undefined,
234
- };
235
- }
236
-
237
- private renderTextOutput(result: HistoryResult, flags: unknown): void {
238
- const typedFlags = flags as Record<string, unknown>;
239
- if (typedFlags.count === true) {
240
- this.log(`${result.count} events`);
241
- return;
242
- }
243
-
244
- if (result.events.length === 0) {
245
- this.logInfo("no events found");
246
- return;
247
- }
248
-
249
- for (const event of result.events) {
250
- const timestamp = event.timestamp
251
- ? new Date(event.timestamp).toLocaleString("en-US", {
252
- month: "short",
253
- day: "numeric",
254
- hour: "2-digit",
255
- minute: "2-digit",
256
- })
257
- : "";
258
-
259
- const agent = event.agent ?? "unknown";
260
- const action = event.action ?? "";
261
- const confidence = event.confidence !== undefined ? `(${event.confidence}/10)` : "";
262
- const task = event.task ?? event.summary ?? "";
263
-
264
- this.log(`${timestamp} ${agent}:${action} ${confidence} ${task}`.trim());
265
- }
266
-
267
- this.logInfo(`\n${result.count} events`);
268
- }
269
- }
@@ -1,71 +0,0 @@
1
- import {
2
- cleanupStaleLockfiles,
3
- getActiveLockfiles,
4
- isInHookContext,
5
- } from "../../../lib/hooks/index.js";
6
- import { BaseCommand } from "../../base-command.js";
7
-
8
- interface GuardOutput {
9
- inContext: boolean;
10
- lockfiles: number;
11
- cleaned: number;
12
- }
13
-
14
- export default class HooksGuardCommand extends BaseCommand {
15
- static override summary = "Check if currently in hook context (should skip execution)";
16
- static override description = `Returns exit code 0 if in hook context (skip), 1 if should proceed.
17
-
18
- Used at the start of hook scripts to prevent recursive triggers:
19
- abbie hook guard && exit 0
20
-
21
- Also cleans up stale lockfiles (>2 minutes old) on each check.`;
22
-
23
- static override examples = [
24
- "# In a hook script",
25
- "abbie hook guard && exit 0",
26
- "",
27
- "# Check status",
28
- "abbie hook guard --json --quiet",
29
- ];
30
-
31
- static override flags = {
32
- ...BaseCommand.baseFlags,
33
- };
34
-
35
- async execute(): Promise<GuardOutput> {
36
- // Clean up stale lockfiles first
37
- const cleaned = cleanupStaleLockfiles();
38
-
39
- const inContext = isInHookContext();
40
- const lockfiles = getActiveLockfiles();
41
-
42
- if (!this.jsonEnabled?.()) {
43
- if (inContext) {
44
- this.log(
45
- `in hook context (${lockfiles.length} active lockfile${lockfiles.length === 1 ? "" : "s"})`,
46
- );
47
- if (cleaned > 0) {
48
- this.logInfo(`cleaned ${cleaned} stale lockfile${cleaned === 1 ? "" : "s"}`);
49
- }
50
- } else {
51
- this.log("not in hook context");
52
- if (cleaned > 0) {
53
- this.logInfo(`cleaned ${cleaned} stale lockfile${cleaned === 1 ? "" : "s"}`);
54
- }
55
- }
56
- }
57
-
58
- // Exit 0 if in context (caller should skip), 1 if should proceed
59
- if (inContext) {
60
- process.exitCode = 0;
61
- } else {
62
- process.exitCode = 1;
63
- }
64
-
65
- return {
66
- inContext,
67
- lockfiles: lockfiles.length,
68
- cleaned,
69
- };
70
- }
71
- }