agent-recorder 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (477) hide show
  1. package/README.md +133 -0
  2. package/dist/bundle.d.ts +8 -0
  3. package/dist/bundle.d.ts.map +1 -0
  4. package/dist/bundle.js +131 -0
  5. package/dist/bundle.js.map +1 -0
  6. package/dist/index.d.ts +10 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +31 -0
  9. package/dist/index.js.map +1 -0
  10. package/package.json +53 -0
  11. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics 2.js +205 -0
  12. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics.d 2.ts +50 -0
  13. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics.d.ts +50 -0
  14. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics.d.ts 2.map +1 -0
  15. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics.d.ts.map +1 -0
  16. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics.js +205 -0
  17. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics.js 2.map +1 -0
  18. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics.js.map +1 -0
  19. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics.test 2.js +253 -0
  20. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics.test.d 2.ts +5 -0
  21. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics.test.d.ts +5 -0
  22. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics.test.d.ts 2.map +1 -0
  23. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics.test.d.ts.map +1 -0
  24. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics.test.js +253 -0
  25. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics.test.js 2.map +1 -0
  26. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics.test.js.map +1 -0
  27. package/vendor/node_modules/@agent-recorder/cli/commands/configure 2.js +144 -0
  28. package/vendor/node_modules/@agent-recorder/cli/commands/configure.d 2.ts +17 -0
  29. package/vendor/node_modules/@agent-recorder/cli/commands/configure.d.ts +17 -0
  30. package/vendor/node_modules/@agent-recorder/cli/commands/configure.d.ts 2.map +1 -0
  31. package/vendor/node_modules/@agent-recorder/cli/commands/configure.d.ts.map +1 -0
  32. package/vendor/node_modules/@agent-recorder/cli/commands/configure.js +144 -0
  33. package/vendor/node_modules/@agent-recorder/cli/commands/configure.js 2.map +1 -0
  34. package/vendor/node_modules/@agent-recorder/cli/commands/configure.js.map +1 -0
  35. package/vendor/node_modules/@agent-recorder/cli/commands/diagnose 2.js +141 -0
  36. package/vendor/node_modules/@agent-recorder/cli/commands/diagnose.d 2.ts +5 -0
  37. package/vendor/node_modules/@agent-recorder/cli/commands/diagnose.d.ts +5 -0
  38. package/vendor/node_modules/@agent-recorder/cli/commands/diagnose.d.ts 2.map +1 -0
  39. package/vendor/node_modules/@agent-recorder/cli/commands/diagnose.d.ts.map +1 -0
  40. package/vendor/node_modules/@agent-recorder/cli/commands/diagnose.js +141 -0
  41. package/vendor/node_modules/@agent-recorder/cli/commands/diagnose.js 2.map +1 -0
  42. package/vendor/node_modules/@agent-recorder/cli/commands/diagnose.js.map +1 -0
  43. package/vendor/node_modules/@agent-recorder/cli/commands/doctor 2.js +253 -0
  44. package/vendor/node_modules/@agent-recorder/cli/commands/doctor.d 2.ts +5 -0
  45. package/vendor/node_modules/@agent-recorder/cli/commands/doctor.d.ts +5 -0
  46. package/vendor/node_modules/@agent-recorder/cli/commands/doctor.d.ts 2.map +1 -0
  47. package/vendor/node_modules/@agent-recorder/cli/commands/doctor.d.ts.map +1 -0
  48. package/vendor/node_modules/@agent-recorder/cli/commands/doctor.js +253 -0
  49. package/vendor/node_modules/@agent-recorder/cli/commands/doctor.js 2.map +1 -0
  50. package/vendor/node_modules/@agent-recorder/cli/commands/doctor.js.map +1 -0
  51. package/vendor/node_modules/@agent-recorder/cli/commands/export 2.js +56 -0
  52. package/vendor/node_modules/@agent-recorder/cli/commands/export.d 2.ts +12 -0
  53. package/vendor/node_modules/@agent-recorder/cli/commands/export.d.ts +12 -0
  54. package/vendor/node_modules/@agent-recorder/cli/commands/export.d.ts 2.map +1 -0
  55. package/vendor/node_modules/@agent-recorder/cli/commands/export.d.ts.map +1 -0
  56. package/vendor/node_modules/@agent-recorder/cli/commands/export.js +56 -0
  57. package/vendor/node_modules/@agent-recorder/cli/commands/export.js 2.map +1 -0
  58. package/vendor/node_modules/@agent-recorder/cli/commands/export.js.map +1 -0
  59. package/vendor/node_modules/@agent-recorder/cli/commands/install 2.js +77 -0
  60. package/vendor/node_modules/@agent-recorder/cli/commands/install.d 2.ts +13 -0
  61. package/vendor/node_modules/@agent-recorder/cli/commands/install.d.ts +13 -0
  62. package/vendor/node_modules/@agent-recorder/cli/commands/install.d.ts 2.map +1 -0
  63. package/vendor/node_modules/@agent-recorder/cli/commands/install.d.ts.map +1 -0
  64. package/vendor/node_modules/@agent-recorder/cli/commands/install.js +77 -0
  65. package/vendor/node_modules/@agent-recorder/cli/commands/install.js 2.map +1 -0
  66. package/vendor/node_modules/@agent-recorder/cli/commands/install.js.map +1 -0
  67. package/vendor/node_modules/@agent-recorder/cli/commands/logs 2.js +40 -0
  68. package/vendor/node_modules/@agent-recorder/cli/commands/logs.d 2.ts +8 -0
  69. package/vendor/node_modules/@agent-recorder/cli/commands/logs.d.ts +8 -0
  70. package/vendor/node_modules/@agent-recorder/cli/commands/logs.d.ts 2.map +1 -0
  71. package/vendor/node_modules/@agent-recorder/cli/commands/logs.d.ts.map +1 -0
  72. package/vendor/node_modules/@agent-recorder/cli/commands/logs.js +40 -0
  73. package/vendor/node_modules/@agent-recorder/cli/commands/logs.js 2.map +1 -0
  74. package/vendor/node_modules/@agent-recorder/cli/commands/logs.js.map +1 -0
  75. package/vendor/node_modules/@agent-recorder/cli/commands/mock-mcp 2.js +188 -0
  76. package/vendor/node_modules/@agent-recorder/cli/commands/mock-mcp.d 2.ts +10 -0
  77. package/vendor/node_modules/@agent-recorder/cli/commands/mock-mcp.d.ts +10 -0
  78. package/vendor/node_modules/@agent-recorder/cli/commands/mock-mcp.d.ts 2.map +1 -0
  79. package/vendor/node_modules/@agent-recorder/cli/commands/mock-mcp.d.ts.map +1 -0
  80. package/vendor/node_modules/@agent-recorder/cli/commands/mock-mcp.js +188 -0
  81. package/vendor/node_modules/@agent-recorder/cli/commands/mock-mcp.js 2.map +1 -0
  82. package/vendor/node_modules/@agent-recorder/cli/commands/mock-mcp.js.map +1 -0
  83. package/vendor/node_modules/@agent-recorder/cli/commands/restart 2.js +67 -0
  84. package/vendor/node_modules/@agent-recorder/cli/commands/restart.d 2.ts +9 -0
  85. package/vendor/node_modules/@agent-recorder/cli/commands/restart.d.ts +9 -0
  86. package/vendor/node_modules/@agent-recorder/cli/commands/restart.d.ts 2.map +1 -0
  87. package/vendor/node_modules/@agent-recorder/cli/commands/restart.d.ts.map +1 -0
  88. package/vendor/node_modules/@agent-recorder/cli/commands/restart.js +67 -0
  89. package/vendor/node_modules/@agent-recorder/cli/commands/restart.js 2.map +1 -0
  90. package/vendor/node_modules/@agent-recorder/cli/commands/restart.js.map +1 -0
  91. package/vendor/node_modules/@agent-recorder/cli/commands/sessions 2.js +333 -0
  92. package/vendor/node_modules/@agent-recorder/cli/commands/sessions.d 2.ts +52 -0
  93. package/vendor/node_modules/@agent-recorder/cli/commands/sessions.d.ts +52 -0
  94. package/vendor/node_modules/@agent-recorder/cli/commands/sessions.d.ts 2.map +1 -0
  95. package/vendor/node_modules/@agent-recorder/cli/commands/sessions.d.ts.map +1 -0
  96. package/vendor/node_modules/@agent-recorder/cli/commands/sessions.js +333 -0
  97. package/vendor/node_modules/@agent-recorder/cli/commands/sessions.js 2.map +1 -0
  98. package/vendor/node_modules/@agent-recorder/cli/commands/sessions.js.map +1 -0
  99. package/vendor/node_modules/@agent-recorder/cli/commands/start 2.js +174 -0
  100. package/vendor/node_modules/@agent-recorder/cli/commands/start.d 2.ts +10 -0
  101. package/vendor/node_modules/@agent-recorder/cli/commands/start.d.ts +10 -0
  102. package/vendor/node_modules/@agent-recorder/cli/commands/start.d.ts 2.map +1 -0
  103. package/vendor/node_modules/@agent-recorder/cli/commands/start.d.ts.map +1 -0
  104. package/vendor/node_modules/@agent-recorder/cli/commands/start.js +174 -0
  105. package/vendor/node_modules/@agent-recorder/cli/commands/start.js 2.map +1 -0
  106. package/vendor/node_modules/@agent-recorder/cli/commands/start.js.map +1 -0
  107. package/vendor/node_modules/@agent-recorder/cli/commands/status 2.js +104 -0
  108. package/vendor/node_modules/@agent-recorder/cli/commands/status.d 2.ts +5 -0
  109. package/vendor/node_modules/@agent-recorder/cli/commands/status.d.ts +5 -0
  110. package/vendor/node_modules/@agent-recorder/cli/commands/status.d.ts 2.map +1 -0
  111. package/vendor/node_modules/@agent-recorder/cli/commands/status.d.ts.map +1 -0
  112. package/vendor/node_modules/@agent-recorder/cli/commands/status.js +104 -0
  113. package/vendor/node_modules/@agent-recorder/cli/commands/status.js 2.map +1 -0
  114. package/vendor/node_modules/@agent-recorder/cli/commands/status.js.map +1 -0
  115. package/vendor/node_modules/@agent-recorder/cli/commands/stop 2.js +89 -0
  116. package/vendor/node_modules/@agent-recorder/cli/commands/stop.d 2.ts +8 -0
  117. package/vendor/node_modules/@agent-recorder/cli/commands/stop.d.ts +8 -0
  118. package/vendor/node_modules/@agent-recorder/cli/commands/stop.d.ts 2.map +1 -0
  119. package/vendor/node_modules/@agent-recorder/cli/commands/stop.d.ts.map +1 -0
  120. package/vendor/node_modules/@agent-recorder/cli/commands/stop.js +89 -0
  121. package/vendor/node_modules/@agent-recorder/cli/commands/stop.js 2.map +1 -0
  122. package/vendor/node_modules/@agent-recorder/cli/commands/stop.js.map +1 -0
  123. package/vendor/node_modules/@agent-recorder/cli/commands/tui 2.js +14 -0
  124. package/vendor/node_modules/@agent-recorder/cli/commands/tui.d 2.ts +5 -0
  125. package/vendor/node_modules/@agent-recorder/cli/commands/tui.d.ts +5 -0
  126. package/vendor/node_modules/@agent-recorder/cli/commands/tui.d.ts 2.map +1 -0
  127. package/vendor/node_modules/@agent-recorder/cli/commands/tui.d.ts.map +1 -0
  128. package/vendor/node_modules/@agent-recorder/cli/commands/tui.js +14 -0
  129. package/vendor/node_modules/@agent-recorder/cli/commands/tui.js 2.map +1 -0
  130. package/vendor/node_modules/@agent-recorder/cli/commands/tui.js.map +1 -0
  131. package/vendor/node_modules/@agent-recorder/cli/config/claude-paths 2.js +117 -0
  132. package/vendor/node_modules/@agent-recorder/cli/config/claude-paths.d 2.ts +55 -0
  133. package/vendor/node_modules/@agent-recorder/cli/config/claude-paths.d.ts +55 -0
  134. package/vendor/node_modules/@agent-recorder/cli/config/claude-paths.d.ts 2.map +1 -0
  135. package/vendor/node_modules/@agent-recorder/cli/config/claude-paths.d.ts.map +1 -0
  136. package/vendor/node_modules/@agent-recorder/cli/config/claude-paths.js +117 -0
  137. package/vendor/node_modules/@agent-recorder/cli/config/claude-paths.js 2.map +1 -0
  138. package/vendor/node_modules/@agent-recorder/cli/config/claude-paths.js.map +1 -0
  139. package/vendor/node_modules/@agent-recorder/cli/config/claude-paths.test 2.js +152 -0
  140. package/vendor/node_modules/@agent-recorder/cli/config/claude-paths.test.d 2.ts +5 -0
  141. package/vendor/node_modules/@agent-recorder/cli/config/claude-paths.test.d.ts +5 -0
  142. package/vendor/node_modules/@agent-recorder/cli/config/claude-paths.test.d.ts 2.map +1 -0
  143. package/vendor/node_modules/@agent-recorder/cli/config/claude-paths.test.d.ts.map +1 -0
  144. package/vendor/node_modules/@agent-recorder/cli/config/claude-paths.test.js +152 -0
  145. package/vendor/node_modules/@agent-recorder/cli/config/claude-paths.test.js 2.map +1 -0
  146. package/vendor/node_modules/@agent-recorder/cli/config/claude-paths.test.js.map +1 -0
  147. package/vendor/node_modules/@agent-recorder/cli/index 2.js +194 -0
  148. package/vendor/node_modules/@agent-recorder/cli/index.d 2.ts +10 -0
  149. package/vendor/node_modules/@agent-recorder/cli/index.d.ts +10 -0
  150. package/vendor/node_modules/@agent-recorder/cli/index.d.ts 2.map +1 -0
  151. package/vendor/node_modules/@agent-recorder/cli/index.d.ts.map +1 -0
  152. package/vendor/node_modules/@agent-recorder/cli/index.js +194 -0
  153. package/vendor/node_modules/@agent-recorder/cli/index.js 2.map +1 -0
  154. package/vendor/node_modules/@agent-recorder/cli/index.js.map +1 -0
  155. package/vendor/node_modules/@agent-recorder/cli/package 2.json +17 -0
  156. package/vendor/node_modules/@agent-recorder/cli/package.json +17 -0
  157. package/vendor/node_modules/@agent-recorder/cli/tui/App 2.js +84 -0
  158. package/vendor/node_modules/@agent-recorder/cli/tui/App.d 2.ts +6 -0
  159. package/vendor/node_modules/@agent-recorder/cli/tui/App.d.ts +6 -0
  160. package/vendor/node_modules/@agent-recorder/cli/tui/App.d.ts 2.map +1 -0
  161. package/vendor/node_modules/@agent-recorder/cli/tui/App.d.ts.map +1 -0
  162. package/vendor/node_modules/@agent-recorder/cli/tui/App.js +84 -0
  163. package/vendor/node_modules/@agent-recorder/cli/tui/App.js 2.map +1 -0
  164. package/vendor/node_modules/@agent-recorder/cli/tui/App.js.map +1 -0
  165. package/vendor/node_modules/@agent-recorder/cli/tui/api 2.js +105 -0
  166. package/vendor/node_modules/@agent-recorder/cli/tui/api.d 2.ts +31 -0
  167. package/vendor/node_modules/@agent-recorder/cli/tui/api.d.ts +31 -0
  168. package/vendor/node_modules/@agent-recorder/cli/tui/api.d.ts 2.map +1 -0
  169. package/vendor/node_modules/@agent-recorder/cli/tui/api.d.ts.map +1 -0
  170. package/vendor/node_modules/@agent-recorder/cli/tui/api.js +105 -0
  171. package/vendor/node_modules/@agent-recorder/cli/tui/api.js 2.map +1 -0
  172. package/vendor/node_modules/@agent-recorder/cli/tui/api.js.map +1 -0
  173. package/vendor/node_modules/@agent-recorder/cli/tui/components/EventInspectPanel 2.js +45 -0
  174. package/vendor/node_modules/@agent-recorder/cli/tui/components/EventInspectPanel.d 2.ts +11 -0
  175. package/vendor/node_modules/@agent-recorder/cli/tui/components/EventInspectPanel.d.ts +11 -0
  176. package/vendor/node_modules/@agent-recorder/cli/tui/components/EventInspectPanel.d.ts 2.map +1 -0
  177. package/vendor/node_modules/@agent-recorder/cli/tui/components/EventInspectPanel.d.ts.map +1 -0
  178. package/vendor/node_modules/@agent-recorder/cli/tui/components/EventInspectPanel.js +45 -0
  179. package/vendor/node_modules/@agent-recorder/cli/tui/components/EventInspectPanel.js 2.map +1 -0
  180. package/vendor/node_modules/@agent-recorder/cli/tui/components/EventInspectPanel.js.map +1 -0
  181. package/vendor/node_modules/@agent-recorder/cli/tui/components/Header 2.js +13 -0
  182. package/vendor/node_modules/@agent-recorder/cli/tui/components/Header.d 2.ts +17 -0
  183. package/vendor/node_modules/@agent-recorder/cli/tui/components/Header.d.ts +17 -0
  184. package/vendor/node_modules/@agent-recorder/cli/tui/components/Header.d.ts 2.map +1 -0
  185. package/vendor/node_modules/@agent-recorder/cli/tui/components/Header.d.ts.map +1 -0
  186. package/vendor/node_modules/@agent-recorder/cli/tui/components/Header.js +13 -0
  187. package/vendor/node_modules/@agent-recorder/cli/tui/components/Header.js 2.map +1 -0
  188. package/vendor/node_modules/@agent-recorder/cli/tui/components/Header.js.map +1 -0
  189. package/vendor/node_modules/@agent-recorder/cli/tui/components/Spinner 2.js +21 -0
  190. package/vendor/node_modules/@agent-recorder/cli/tui/components/Spinner.d 2.ts +12 -0
  191. package/vendor/node_modules/@agent-recorder/cli/tui/components/Spinner.d.ts +12 -0
  192. package/vendor/node_modules/@agent-recorder/cli/tui/components/Spinner.d.ts 2.map +1 -0
  193. package/vendor/node_modules/@agent-recorder/cli/tui/components/Spinner.d.ts.map +1 -0
  194. package/vendor/node_modules/@agent-recorder/cli/tui/components/Spinner.js +21 -0
  195. package/vendor/node_modules/@agent-recorder/cli/tui/components/Spinner.js 2.map +1 -0
  196. package/vendor/node_modules/@agent-recorder/cli/tui/components/Spinner.js.map +1 -0
  197. package/vendor/node_modules/@agent-recorder/cli/tui/components/StatusBadge 2.js +50 -0
  198. package/vendor/node_modules/@agent-recorder/cli/tui/components/StatusBadge.d 2.ts +16 -0
  199. package/vendor/node_modules/@agent-recorder/cli/tui/components/StatusBadge.d.ts +16 -0
  200. package/vendor/node_modules/@agent-recorder/cli/tui/components/StatusBadge.d.ts 2.map +1 -0
  201. package/vendor/node_modules/@agent-recorder/cli/tui/components/StatusBadge.d.ts.map +1 -0
  202. package/vendor/node_modules/@agent-recorder/cli/tui/components/StatusBadge.js +50 -0
  203. package/vendor/node_modules/@agent-recorder/cli/tui/components/StatusBadge.js 2.map +1 -0
  204. package/vendor/node_modules/@agent-recorder/cli/tui/components/StatusBadge.js.map +1 -0
  205. package/vendor/node_modules/@agent-recorder/cli/tui/components/Table 2.js +20 -0
  206. package/vendor/node_modules/@agent-recorder/cli/tui/components/Table.d 2.ts +21 -0
  207. package/vendor/node_modules/@agent-recorder/cli/tui/components/Table.d.ts +21 -0
  208. package/vendor/node_modules/@agent-recorder/cli/tui/components/Table.d.ts 2.map +1 -0
  209. package/vendor/node_modules/@agent-recorder/cli/tui/components/Table.d.ts.map +1 -0
  210. package/vendor/node_modules/@agent-recorder/cli/tui/components/Table.js +20 -0
  211. package/vendor/node_modules/@agent-recorder/cli/tui/components/Table.js 2.map +1 -0
  212. package/vendor/node_modules/@agent-recorder/cli/tui/components/Table.js.map +1 -0
  213. package/vendor/node_modules/@agent-recorder/cli/tui/components/index 2.js +8 -0
  214. package/vendor/node_modules/@agent-recorder/cli/tui/components/index.d 2.ts +8 -0
  215. package/vendor/node_modules/@agent-recorder/cli/tui/components/index.d.ts +8 -0
  216. package/vendor/node_modules/@agent-recorder/cli/tui/components/index.d.ts 2.map +1 -0
  217. package/vendor/node_modules/@agent-recorder/cli/tui/components/index.d.ts.map +1 -0
  218. package/vendor/node_modules/@agent-recorder/cli/tui/components/index.js +8 -0
  219. package/vendor/node_modules/@agent-recorder/cli/tui/components/index.js 2.map +1 -0
  220. package/vendor/node_modules/@agent-recorder/cli/tui/components/index.js.map +1 -0
  221. package/vendor/node_modules/@agent-recorder/cli/tui/hooks/useEventStream 2.js +75 -0
  222. package/vendor/node_modules/@agent-recorder/cli/tui/hooks/useEventStream.d 2.ts +22 -0
  223. package/vendor/node_modules/@agent-recorder/cli/tui/hooks/useEventStream.d.ts +22 -0
  224. package/vendor/node_modules/@agent-recorder/cli/tui/hooks/useEventStream.d.ts 2.map +1 -0
  225. package/vendor/node_modules/@agent-recorder/cli/tui/hooks/useEventStream.d.ts.map +1 -0
  226. package/vendor/node_modules/@agent-recorder/cli/tui/hooks/useEventStream.js +75 -0
  227. package/vendor/node_modules/@agent-recorder/cli/tui/hooks/useEventStream.js 2.map +1 -0
  228. package/vendor/node_modules/@agent-recorder/cli/tui/hooks/useEventStream.js.map +1 -0
  229. package/vendor/node_modules/@agent-recorder/cli/tui/screens/SessionDetailScreen 2.js +190 -0
  230. package/vendor/node_modules/@agent-recorder/cli/tui/screens/SessionDetailScreen.d 2.ts +13 -0
  231. package/vendor/node_modules/@agent-recorder/cli/tui/screens/SessionDetailScreen.d.ts +13 -0
  232. package/vendor/node_modules/@agent-recorder/cli/tui/screens/SessionDetailScreen.d.ts 2.map +1 -0
  233. package/vendor/node_modules/@agent-recorder/cli/tui/screens/SessionDetailScreen.d.ts.map +1 -0
  234. package/vendor/node_modules/@agent-recorder/cli/tui/screens/SessionDetailScreen.js +190 -0
  235. package/vendor/node_modules/@agent-recorder/cli/tui/screens/SessionDetailScreen.js 2.map +1 -0
  236. package/vendor/node_modules/@agent-recorder/cli/tui/screens/SessionDetailScreen.js.map +1 -0
  237. package/vendor/node_modules/@agent-recorder/cli/tui/screens/SessionsScreen 2.js +166 -0
  238. package/vendor/node_modules/@agent-recorder/cli/tui/screens/SessionsScreen.d 2.ts +10 -0
  239. package/vendor/node_modules/@agent-recorder/cli/tui/screens/SessionsScreen.d.ts +10 -0
  240. package/vendor/node_modules/@agent-recorder/cli/tui/screens/SessionsScreen.d.ts 2.map +1 -0
  241. package/vendor/node_modules/@agent-recorder/cli/tui/screens/SessionsScreen.d.ts.map +1 -0
  242. package/vendor/node_modules/@agent-recorder/cli/tui/screens/SessionsScreen.js +166 -0
  243. package/vendor/node_modules/@agent-recorder/cli/tui/screens/SessionsScreen.js 2.map +1 -0
  244. package/vendor/node_modules/@agent-recorder/cli/tui/screens/SessionsScreen.js.map +1 -0
  245. package/vendor/node_modules/@agent-recorder/cli/tui/screens/index 2.js +6 -0
  246. package/vendor/node_modules/@agent-recorder/cli/tui/screens/index.d 2.ts +6 -0
  247. package/vendor/node_modules/@agent-recorder/cli/tui/screens/index.d.ts +6 -0
  248. package/vendor/node_modules/@agent-recorder/cli/tui/screens/index.d.ts 2.map +1 -0
  249. package/vendor/node_modules/@agent-recorder/cli/tui/screens/index.d.ts.map +1 -0
  250. package/vendor/node_modules/@agent-recorder/cli/tui/screens/index.js +6 -0
  251. package/vendor/node_modules/@agent-recorder/cli/tui/screens/index.js 2.map +1 -0
  252. package/vendor/node_modules/@agent-recorder/cli/tui/screens/index.js.map +1 -0
  253. package/vendor/node_modules/@agent-recorder/core/config 2.js +44 -0
  254. package/vendor/node_modules/@agent-recorder/core/config.d 2.ts +25 -0
  255. package/vendor/node_modules/@agent-recorder/core/config.d.ts +25 -0
  256. package/vendor/node_modules/@agent-recorder/core/config.d.ts 2.map +1 -0
  257. package/vendor/node_modules/@agent-recorder/core/config.d.ts.map +1 -0
  258. package/vendor/node_modules/@agent-recorder/core/config.js +44 -0
  259. package/vendor/node_modules/@agent-recorder/core/config.js.map +1 -0
  260. package/vendor/node_modules/@agent-recorder/core/config.test.d.ts +5 -0
  261. package/vendor/node_modules/@agent-recorder/core/config.test.d.ts.map +1 -0
  262. package/vendor/node_modules/@agent-recorder/core/config.test.js +78 -0
  263. package/vendor/node_modules/@agent-recorder/core/config.test.js.map +1 -0
  264. package/vendor/node_modules/@agent-recorder/core/daemon-paths.d.ts +50 -0
  265. package/vendor/node_modules/@agent-recorder/core/daemon-paths.d.ts.map +1 -0
  266. package/vendor/node_modules/@agent-recorder/core/daemon-paths.js +113 -0
  267. package/vendor/node_modules/@agent-recorder/core/daemon-paths.js.map +1 -0
  268. package/vendor/node_modules/@agent-recorder/core/daemon-paths.test.d.ts +5 -0
  269. package/vendor/node_modules/@agent-recorder/core/daemon-paths.test.d.ts.map +1 -0
  270. package/vendor/node_modules/@agent-recorder/core/daemon-paths.test.js +143 -0
  271. package/vendor/node_modules/@agent-recorder/core/daemon-paths.test.js.map +1 -0
  272. package/vendor/node_modules/@agent-recorder/core/db/connection.d 2.ts +15 -0
  273. package/vendor/node_modules/@agent-recorder/core/db/connection.d.ts +15 -0
  274. package/vendor/node_modules/@agent-recorder/core/db/connection.d.ts.map +1 -0
  275. package/vendor/node_modules/@agent-recorder/core/db/connection.js +30 -0
  276. package/vendor/node_modules/@agent-recorder/core/db/connection.js.map +1 -0
  277. package/vendor/node_modules/@agent-recorder/core/db/events.d.ts +65 -0
  278. package/vendor/node_modules/@agent-recorder/core/db/events.d.ts.map +1 -0
  279. package/vendor/node_modules/@agent-recorder/core/db/events.js +117 -0
  280. package/vendor/node_modules/@agent-recorder/core/db/events.js.map +1 -0
  281. package/vendor/node_modules/@agent-recorder/core/db/events.test.d.ts +5 -0
  282. package/vendor/node_modules/@agent-recorder/core/db/events.test.d.ts.map +1 -0
  283. package/vendor/node_modules/@agent-recorder/core/db/events.test.js +72 -0
  284. package/vendor/node_modules/@agent-recorder/core/db/events.test.js.map +1 -0
  285. package/vendor/node_modules/@agent-recorder/core/db/index.d.ts +9 -0
  286. package/vendor/node_modules/@agent-recorder/core/db/index.d.ts.map +1 -0
  287. package/vendor/node_modules/@agent-recorder/core/db/index.js +9 -0
  288. package/vendor/node_modules/@agent-recorder/core/db/index.js.map +1 -0
  289. package/vendor/node_modules/@agent-recorder/core/db/migrations.d.ts +17 -0
  290. package/vendor/node_modules/@agent-recorder/core/db/migrations.d.ts.map +1 -0
  291. package/vendor/node_modules/@agent-recorder/core/db/migrations.js +56 -0
  292. package/vendor/node_modules/@agent-recorder/core/db/migrations.js.map +1 -0
  293. package/vendor/node_modules/@agent-recorder/core/db/sequences.d.ts +17 -0
  294. package/vendor/node_modules/@agent-recorder/core/db/sequences.d.ts.map +1 -0
  295. package/vendor/node_modules/@agent-recorder/core/db/sequences.js +41 -0
  296. package/vendor/node_modules/@agent-recorder/core/db/sequences.js.map +1 -0
  297. package/vendor/node_modules/@agent-recorder/core/db/sessions.d.ts +17 -0
  298. package/vendor/node_modules/@agent-recorder/core/db/sessions.d.ts.map +1 -0
  299. package/vendor/node_modules/@agent-recorder/core/db/sessions.js +61 -0
  300. package/vendor/node_modules/@agent-recorder/core/db/sessions.js.map +1 -0
  301. package/vendor/node_modules/@agent-recorder/core/index.d.ts +13 -0
  302. package/vendor/node_modules/@agent-recorder/core/index.d.ts.map +1 -0
  303. package/vendor/node_modules/@agent-recorder/core/index.js +13 -0
  304. package/vendor/node_modules/@agent-recorder/core/index.js.map +1 -0
  305. package/vendor/node_modules/@agent-recorder/core/lockfile.d.ts +42 -0
  306. package/vendor/node_modules/@agent-recorder/core/lockfile.d.ts.map +1 -0
  307. package/vendor/node_modules/@agent-recorder/core/lockfile.js +122 -0
  308. package/vendor/node_modules/@agent-recorder/core/lockfile.js.map +1 -0
  309. package/vendor/node_modules/@agent-recorder/core/lockfile.test.d.ts +5 -0
  310. package/vendor/node_modules/@agent-recorder/core/lockfile.test.d.ts.map +1 -0
  311. package/vendor/node_modules/@agent-recorder/core/lockfile.test.js +136 -0
  312. package/vendor/node_modules/@agent-recorder/core/lockfile.test.js.map +1 -0
  313. package/vendor/node_modules/@agent-recorder/core/migrations/001_initial 2.sql +40 -0
  314. package/vendor/node_modules/@agent-recorder/core/migrations/001_initial.sql +40 -0
  315. package/vendor/node_modules/@agent-recorder/core/migrations/002_session_sequences 2.sql +8 -0
  316. package/vendor/node_modules/@agent-recorder/core/migrations/002_session_sequences.sql +8 -0
  317. package/vendor/node_modules/@agent-recorder/core/migrations/003_add_tool_columns 2.sql +9 -0
  318. package/vendor/node_modules/@agent-recorder/core/migrations/003_add_tool_columns.sql +9 -0
  319. package/vendor/node_modules/@agent-recorder/core/migrations/004_add_cancelled_status 2.sql +23 -0
  320. package/vendor/node_modules/@agent-recorder/core/migrations/004_add_cancelled_status.sql +23 -0
  321. package/vendor/node_modules/@agent-recorder/core/migrations/005_add_error_category 2.sql +6 -0
  322. package/vendor/node_modules/@agent-recorder/core/migrations/005_add_error_category.sql +6 -0
  323. package/vendor/node_modules/@agent-recorder/core/package 2.json +18 -0
  324. package/vendor/node_modules/@agent-recorder/core/package.json +18 -0
  325. package/vendor/node_modules/@agent-recorder/core/types/events.d 2.ts +69 -0
  326. package/vendor/node_modules/@agent-recorder/core/types/events.d.ts +69 -0
  327. package/vendor/node_modules/@agent-recorder/core/types/events.d.ts.map +1 -0
  328. package/vendor/node_modules/@agent-recorder/core/types/events.js +6 -0
  329. package/vendor/node_modules/@agent-recorder/core/types/events.js.map +1 -0
  330. package/vendor/node_modules/@agent-recorder/core/types/index 2.js +2 -0
  331. package/vendor/node_modules/@agent-recorder/core/types/index.d.ts +3 -0
  332. package/vendor/node_modules/@agent-recorder/core/types/index.d.ts.map +1 -0
  333. package/vendor/node_modules/@agent-recorder/core/types/index.js +2 -0
  334. package/vendor/node_modules/@agent-recorder/core/types/index.js 2.map +1 -0
  335. package/vendor/node_modules/@agent-recorder/core/types/index.js.map +1 -0
  336. package/vendor/node_modules/@agent-recorder/core/types/session 2.js +6 -0
  337. package/vendor/node_modules/@agent-recorder/core/types/session.d 2.ts +22 -0
  338. package/vendor/node_modules/@agent-recorder/core/types/session.d.ts +22 -0
  339. package/vendor/node_modules/@agent-recorder/core/types/session.d.ts 2.map +1 -0
  340. package/vendor/node_modules/@agent-recorder/core/types/session.d.ts.map +1 -0
  341. package/vendor/node_modules/@agent-recorder/core/types/session.js +6 -0
  342. package/vendor/node_modules/@agent-recorder/core/types/session.js 2.map +1 -0
  343. package/vendor/node_modules/@agent-recorder/core/types/session.js.map +1 -0
  344. package/vendor/node_modules/@agent-recorder/core/utils/error-category 2.js +58 -0
  345. package/vendor/node_modules/@agent-recorder/core/utils/error-category.d 2.ts +22 -0
  346. package/vendor/node_modules/@agent-recorder/core/utils/error-category.d.ts +22 -0
  347. package/vendor/node_modules/@agent-recorder/core/utils/error-category.d.ts 2.map +1 -0
  348. package/vendor/node_modules/@agent-recorder/core/utils/error-category.d.ts.map +1 -0
  349. package/vendor/node_modules/@agent-recorder/core/utils/error-category.js +58 -0
  350. package/vendor/node_modules/@agent-recorder/core/utils/error-category.js 2.map +1 -0
  351. package/vendor/node_modules/@agent-recorder/core/utils/error-category.js.map +1 -0
  352. package/vendor/node_modules/@agent-recorder/core/utils/error-category.test.d 2.ts +5 -0
  353. package/vendor/node_modules/@agent-recorder/core/utils/error-category.test.d.ts +5 -0
  354. package/vendor/node_modules/@agent-recorder/core/utils/error-category.test.d.ts 2.map +1 -0
  355. package/vendor/node_modules/@agent-recorder/core/utils/error-category.test.d.ts.map +1 -0
  356. package/vendor/node_modules/@agent-recorder/core/utils/error-category.test.js +89 -0
  357. package/vendor/node_modules/@agent-recorder/core/utils/error-category.test.js 2.map +1 -0
  358. package/vendor/node_modules/@agent-recorder/core/utils/error-category.test.js.map +1 -0
  359. package/vendor/node_modules/@agent-recorder/core/utils/index 2.js +6 -0
  360. package/vendor/node_modules/@agent-recorder/core/utils/index.d 2.ts +6 -0
  361. package/vendor/node_modules/@agent-recorder/core/utils/index.d.ts +6 -0
  362. package/vendor/node_modules/@agent-recorder/core/utils/index.d.ts 2.map +1 -0
  363. package/vendor/node_modules/@agent-recorder/core/utils/index.d.ts.map +1 -0
  364. package/vendor/node_modules/@agent-recorder/core/utils/index.js +6 -0
  365. package/vendor/node_modules/@agent-recorder/core/utils/index.js 2.map +1 -0
  366. package/vendor/node_modules/@agent-recorder/core/utils/index.js.map +1 -0
  367. package/vendor/node_modules/@agent-recorder/core/utils/redact.d 2.ts +19 -0
  368. package/vendor/node_modules/@agent-recorder/core/utils/redact.d.ts +19 -0
  369. package/vendor/node_modules/@agent-recorder/core/utils/redact.d.ts 2.map +1 -0
  370. package/vendor/node_modules/@agent-recorder/core/utils/redact.d.ts.map +1 -0
  371. package/vendor/node_modules/@agent-recorder/core/utils/redact.js +52 -0
  372. package/vendor/node_modules/@agent-recorder/core/utils/redact.js 2.map +1 -0
  373. package/vendor/node_modules/@agent-recorder/core/utils/redact.js.map +1 -0
  374. package/vendor/node_modules/@agent-recorder/service/index 2.js +128 -0
  375. package/vendor/node_modules/@agent-recorder/service/index.d 2.ts +36 -0
  376. package/vendor/node_modules/@agent-recorder/service/index.d.ts +36 -0
  377. package/vendor/node_modules/@agent-recorder/service/index.d.ts 2.map +1 -0
  378. package/vendor/node_modules/@agent-recorder/service/index.d.ts.map +1 -0
  379. package/vendor/node_modules/@agent-recorder/service/index.js +128 -0
  380. package/vendor/node_modules/@agent-recorder/service/index.js 2.map +1 -0
  381. package/vendor/node_modules/@agent-recorder/service/index.js.map +1 -0
  382. package/vendor/node_modules/@agent-recorder/service/mcp/index 2.js +7 -0
  383. package/vendor/node_modules/@agent-recorder/service/mcp/index.d 2.ts +7 -0
  384. package/vendor/node_modules/@agent-recorder/service/mcp/index.d.ts +7 -0
  385. package/vendor/node_modules/@agent-recorder/service/mcp/index.d.ts 2.map +1 -0
  386. package/vendor/node_modules/@agent-recorder/service/mcp/index.d.ts.map +1 -0
  387. package/vendor/node_modules/@agent-recorder/service/mcp/index.js +7 -0
  388. package/vendor/node_modules/@agent-recorder/service/mcp/index.js 2.map +1 -0
  389. package/vendor/node_modules/@agent-recorder/service/mcp/index.js.map +1 -0
  390. package/vendor/node_modules/@agent-recorder/service/mcp/proxy 2.js +223 -0
  391. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.d 2.ts +26 -0
  392. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.d.ts +26 -0
  393. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.d.ts 2.map +1 -0
  394. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.d.ts.map +1 -0
  395. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.js +223 -0
  396. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.js 2.map +1 -0
  397. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.js.map +1 -0
  398. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.test.d 2.ts +5 -0
  399. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.test.d.ts +5 -0
  400. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.test.d.ts 2.map +1 -0
  401. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.test.d.ts.map +1 -0
  402. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.test.js +367 -0
  403. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.test.js 2.map +1 -0
  404. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.test.js.map +1 -0
  405. package/vendor/node_modules/@agent-recorder/service/mcp/recorder 2.js +62 -0
  406. package/vendor/node_modules/@agent-recorder/service/mcp/recorder.d 2.ts +31 -0
  407. package/vendor/node_modules/@agent-recorder/service/mcp/recorder.d.ts +31 -0
  408. package/vendor/node_modules/@agent-recorder/service/mcp/recorder.d.ts 2.map +1 -0
  409. package/vendor/node_modules/@agent-recorder/service/mcp/recorder.d.ts.map +1 -0
  410. package/vendor/node_modules/@agent-recorder/service/mcp/recorder.js +62 -0
  411. package/vendor/node_modules/@agent-recorder/service/mcp/recorder.js 2.map +1 -0
  412. package/vendor/node_modules/@agent-recorder/service/mcp/recorder.js.map +1 -0
  413. package/vendor/node_modules/@agent-recorder/service/mcp/types 2.js +15 -0
  414. package/vendor/node_modules/@agent-recorder/service/mcp/types.d 2.ts +40 -0
  415. package/vendor/node_modules/@agent-recorder/service/mcp/types.d.ts +40 -0
  416. package/vendor/node_modules/@agent-recorder/service/mcp/types.d.ts 2.map +1 -0
  417. package/vendor/node_modules/@agent-recorder/service/mcp/types.d.ts.map +1 -0
  418. package/vendor/node_modules/@agent-recorder/service/mcp/types.js +15 -0
  419. package/vendor/node_modules/@agent-recorder/service/mcp/types.js 2.map +1 -0
  420. package/vendor/node_modules/@agent-recorder/service/mcp/types.js.map +1 -0
  421. package/vendor/node_modules/@agent-recorder/service/package 2.json +15 -0
  422. package/vendor/node_modules/@agent-recorder/service/package.json +15 -0
  423. package/vendor/node_modules/@agent-recorder/service/routes/events 2.js +71 -0
  424. package/vendor/node_modules/@agent-recorder/service/routes/events.d 2.ts +11 -0
  425. package/vendor/node_modules/@agent-recorder/service/routes/events.d.ts +11 -0
  426. package/vendor/node_modules/@agent-recorder/service/routes/events.d.ts 2.map +1 -0
  427. package/vendor/node_modules/@agent-recorder/service/routes/events.d.ts.map +1 -0
  428. package/vendor/node_modules/@agent-recorder/service/routes/events.js +71 -0
  429. package/vendor/node_modules/@agent-recorder/service/routes/events.js 2.map +1 -0
  430. package/vendor/node_modules/@agent-recorder/service/routes/events.js.map +1 -0
  431. package/vendor/node_modules/@agent-recorder/service/routes/health 2.js +18 -0
  432. package/vendor/node_modules/@agent-recorder/service/routes/health.d 2.ts +6 -0
  433. package/vendor/node_modules/@agent-recorder/service/routes/health.d.ts +6 -0
  434. package/vendor/node_modules/@agent-recorder/service/routes/health.d.ts 2.map +1 -0
  435. package/vendor/node_modules/@agent-recorder/service/routes/health.d.ts.map +1 -0
  436. package/vendor/node_modules/@agent-recorder/service/routes/health.js +18 -0
  437. package/vendor/node_modules/@agent-recorder/service/routes/health.js 2.map +1 -0
  438. package/vendor/node_modules/@agent-recorder/service/routes/health.js.map +1 -0
  439. package/vendor/node_modules/@agent-recorder/service/routes/sessions 2.js +80 -0
  440. package/vendor/node_modules/@agent-recorder/service/routes/sessions.d 2.ts +12 -0
  441. package/vendor/node_modules/@agent-recorder/service/routes/sessions.d.ts +12 -0
  442. package/vendor/node_modules/@agent-recorder/service/routes/sessions.d.ts 2.map +1 -0
  443. package/vendor/node_modules/@agent-recorder/service/routes/sessions.d.ts.map +1 -0
  444. package/vendor/node_modules/@agent-recorder/service/routes/sessions.js +80 -0
  445. package/vendor/node_modules/@agent-recorder/service/routes/sessions.js 2.map +1 -0
  446. package/vendor/node_modules/@agent-recorder/service/routes/sessions.js.map +1 -0
  447. package/vendor/node_modules/@agent-recorder/service/server 2.js +36 -0
  448. package/vendor/node_modules/@agent-recorder/service/server.d 2.ts +19 -0
  449. package/vendor/node_modules/@agent-recorder/service/server.d.ts +19 -0
  450. package/vendor/node_modules/@agent-recorder/service/server.d.ts 2.map +1 -0
  451. package/vendor/node_modules/@agent-recorder/service/server.d.ts.map +1 -0
  452. package/vendor/node_modules/@agent-recorder/service/server.js +36 -0
  453. package/vendor/node_modules/@agent-recorder/service/server.js 2.map +1 -0
  454. package/vendor/node_modules/@agent-recorder/service/server.js.map +1 -0
  455. package/vendor/node_modules/@agent-recorder/service/server.test 2.js +296 -0
  456. package/vendor/node_modules/@agent-recorder/service/server.test.d 2.ts +5 -0
  457. package/vendor/node_modules/@agent-recorder/service/server.test.d.ts +5 -0
  458. package/vendor/node_modules/@agent-recorder/service/server.test.d.ts 2.map +1 -0
  459. package/vendor/node_modules/@agent-recorder/service/server.test.d.ts.map +1 -0
  460. package/vendor/node_modules/@agent-recorder/service/server.test.js +296 -0
  461. package/vendor/node_modules/@agent-recorder/service/server.test.js.map +1 -0
  462. package/vendor/node_modules/@agent-recorder/service/session-manager 2.js +22 -0
  463. package/vendor/node_modules/@agent-recorder/service/session-manager.d 2.ts +16 -0
  464. package/vendor/node_modules/@agent-recorder/service/session-manager.d.ts +16 -0
  465. package/vendor/node_modules/@agent-recorder/service/session-manager.d.ts 2.map +1 -0
  466. package/vendor/node_modules/@agent-recorder/service/session-manager.d.ts.map +1 -0
  467. package/vendor/node_modules/@agent-recorder/service/session-manager.js +22 -0
  468. package/vendor/node_modules/@agent-recorder/service/session-manager.js 2.map +1 -0
  469. package/vendor/node_modules/@agent-recorder/service/session-manager.js.map +1 -0
  470. package/vendor/node_modules/@agent-recorder/service/session-manager.test 2.js +61 -0
  471. package/vendor/node_modules/@agent-recorder/service/session-manager.test.d 2.ts +5 -0
  472. package/vendor/node_modules/@agent-recorder/service/session-manager.test.d.ts +5 -0
  473. package/vendor/node_modules/@agent-recorder/service/session-manager.test.d.ts 2.map +1 -0
  474. package/vendor/node_modules/@agent-recorder/service/session-manager.test.d.ts.map +1 -0
  475. package/vendor/node_modules/@agent-recorder/service/session-manager.test.js +61 -0
  476. package/vendor/node_modules/@agent-recorder/service/session-manager.test.js 2.map +1 -0
  477. package/vendor/node_modules/@agent-recorder/service/session-manager.test.js.map +1 -0
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Lockfile handling for single-instance daemon enforcement.
3
+ * Uses exclusive file creation for atomic lock acquisition.
4
+ */
5
+ import * as fs from "node:fs";
6
+ import * as path from "node:path";
7
+ import { isProcessRunning, removePidFile } from "./daemon-paths.js";
8
+ /**
9
+ * Attempt to acquire an exclusive lock.
10
+ * Uses fs.openSync with 'wx' flag for atomic exclusive creation.
11
+ *
12
+ * @param lockPath - Path to lock file
13
+ * @param pid - PID to write to lock file (defaults to current process)
14
+ * @returns Result indicating success or failure with details
15
+ */
16
+ export function acquireLock(lockPath, pid) {
17
+ const currentPid = pid ?? process.pid;
18
+ const dir = path.dirname(lockPath);
19
+ // Ensure directory exists
20
+ if (!fs.existsSync(dir)) {
21
+ fs.mkdirSync(dir, { recursive: true });
22
+ }
23
+ try {
24
+ // 'wx' flag: exclusive create, fails if file exists
25
+ const fd = fs.openSync(lockPath, "wx");
26
+ fs.writeSync(fd, String(currentPid));
27
+ fs.closeSync(fd);
28
+ return { acquired: true };
29
+ }
30
+ catch (error) {
31
+ const err = error;
32
+ if (err.code === "EEXIST") {
33
+ // Lock file exists, read existing PID
34
+ try {
35
+ const content = fs.readFileSync(lockPath, "utf-8").trim();
36
+ const existingPid = parseInt(content, 10);
37
+ if (!isNaN(existingPid) && existingPid > 0) {
38
+ return { acquired: false, existingPid };
39
+ }
40
+ return { acquired: false, error: "Invalid PID in lock file" };
41
+ }
42
+ catch {
43
+ return { acquired: false, error: "Could not read lock file" };
44
+ }
45
+ }
46
+ return {
47
+ acquired: false,
48
+ error: error instanceof Error ? error.message : "Unknown error",
49
+ };
50
+ }
51
+ }
52
+ /**
53
+ * Release a lock by removing the lock file.
54
+ * Safe to call even if lock doesn't exist.
55
+ */
56
+ export function releaseLock(lockPath) {
57
+ try {
58
+ fs.unlinkSync(lockPath);
59
+ }
60
+ catch {
61
+ // Ignore errors (file may not exist)
62
+ }
63
+ }
64
+ /**
65
+ * Check if lock is stale (process no longer running).
66
+ * If stale, clean up the lock file and PID file.
67
+ *
68
+ * @param lockPath - Path to lock file
69
+ * @param pidPath - Optional path to PID file (for cleanup)
70
+ * @returns true if lock was stale and cleaned up
71
+ */
72
+ export function checkAndCleanStaleLock(lockPath, pidPath) {
73
+ // Check if lock file exists
74
+ if (!fs.existsSync(lockPath)) {
75
+ return false;
76
+ }
77
+ // Read PID from lock file
78
+ let existingPid;
79
+ try {
80
+ const content = fs.readFileSync(lockPath, "utf-8").trim();
81
+ existingPid = parseInt(content, 10);
82
+ if (isNaN(existingPid) || existingPid <= 0) {
83
+ // Invalid PID, remove stale lock
84
+ releaseLock(lockPath);
85
+ if (pidPath)
86
+ removePidFile(pidPath);
87
+ return true;
88
+ }
89
+ }
90
+ catch {
91
+ // Can't read lock file, try to remove it
92
+ releaseLock(lockPath);
93
+ if (pidPath)
94
+ removePidFile(pidPath);
95
+ return true;
96
+ }
97
+ // Check if process is still running
98
+ if (!isProcessRunning(existingPid)) {
99
+ // Process is dead, clean up
100
+ releaseLock(lockPath);
101
+ if (pidPath)
102
+ removePidFile(pidPath);
103
+ return true;
104
+ }
105
+ // Process is still running, lock is valid
106
+ return false;
107
+ }
108
+ /**
109
+ * Try to acquire lock, cleaning up stale locks first.
110
+ * This is the recommended way to acquire a lock.
111
+ *
112
+ * @param lockPath - Path to lock file
113
+ * @param pidPath - Optional path to PID file (for stale cleanup)
114
+ * @param pid - PID to write (defaults to current process)
115
+ */
116
+ export function acquireLockWithCleanup(lockPath, pidPath, pid) {
117
+ // First, check and clean any stale lock
118
+ checkAndCleanStaleLock(lockPath, pidPath);
119
+ // Now try to acquire
120
+ return acquireLock(lockPath, pid);
121
+ }
122
+ //# sourceMappingURL=lockfile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lockfile.js","sourceRoot":"","sources":["../src/lockfile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for lockfile handling.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=lockfile.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lockfile.test.d.ts","sourceRoot":"","sources":["../src/lockfile.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Tests for lockfile handling.
3
+ */
4
+ import { describe, it, expect, beforeEach, afterEach } from "vitest";
5
+ import * as fs from "node:fs";
6
+ import * as path from "node:path";
7
+ import * as os from "node:os";
8
+ import { acquireLock, releaseLock, checkAndCleanStaleLock, acquireLockWithCleanup, } from "./lockfile.js";
9
+ describe("lockfile", () => {
10
+ let tempDir;
11
+ let lockPath;
12
+ let pidPath;
13
+ beforeEach(() => {
14
+ tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "ar-lock-test-"));
15
+ lockPath = path.join(tempDir, "test.lock");
16
+ pidPath = path.join(tempDir, "test.pid");
17
+ });
18
+ afterEach(() => {
19
+ fs.rmSync(tempDir, { recursive: true, force: true });
20
+ });
21
+ describe("acquireLock", () => {
22
+ it("acquires lock when file does not exist", () => {
23
+ const result = acquireLock(lockPath);
24
+ expect(result.acquired).toBe(true);
25
+ expect(result.existingPid).toBeUndefined();
26
+ expect(fs.existsSync(lockPath)).toBe(true);
27
+ });
28
+ it("writes current PID to lock file", () => {
29
+ acquireLock(lockPath);
30
+ const content = fs.readFileSync(lockPath, "utf-8");
31
+ expect(content).toBe(String(process.pid));
32
+ });
33
+ it("writes custom PID to lock file", () => {
34
+ acquireLock(lockPath, 12345);
35
+ const content = fs.readFileSync(lockPath, "utf-8");
36
+ expect(content).toBe("12345");
37
+ });
38
+ it("fails when lock already exists", () => {
39
+ acquireLock(lockPath, 11111);
40
+ const result = acquireLock(lockPath, 22222);
41
+ expect(result.acquired).toBe(false);
42
+ expect(result.existingPid).toBe(11111);
43
+ });
44
+ it("creates parent directory if needed", () => {
45
+ const nestedLock = path.join(tempDir, "nested", "dir", "test.lock");
46
+ const result = acquireLock(nestedLock);
47
+ expect(result.acquired).toBe(true);
48
+ expect(fs.existsSync(nestedLock)).toBe(true);
49
+ });
50
+ });
51
+ describe("releaseLock", () => {
52
+ it("removes existing lock file", () => {
53
+ acquireLock(lockPath);
54
+ expect(fs.existsSync(lockPath)).toBe(true);
55
+ releaseLock(lockPath);
56
+ expect(fs.existsSync(lockPath)).toBe(false);
57
+ });
58
+ it("does not throw when lock does not exist", () => {
59
+ expect(() => releaseLock(lockPath)).not.toThrow();
60
+ });
61
+ });
62
+ describe("checkAndCleanStaleLock", () => {
63
+ it("returns false when no lock exists", () => {
64
+ expect(checkAndCleanStaleLock(lockPath)).toBe(false);
65
+ });
66
+ it("returns false for running process", () => {
67
+ // Write lock with current process PID
68
+ fs.writeFileSync(lockPath, String(process.pid));
69
+ expect(checkAndCleanStaleLock(lockPath)).toBe(false);
70
+ // Lock should still exist
71
+ expect(fs.existsSync(lockPath)).toBe(true);
72
+ });
73
+ it("returns true and cleans stale lock", () => {
74
+ // Write lock with non-existent PID
75
+ fs.writeFileSync(lockPath, "999999999");
76
+ expect(checkAndCleanStaleLock(lockPath)).toBe(true);
77
+ // Lock should be removed
78
+ expect(fs.existsSync(lockPath)).toBe(false);
79
+ });
80
+ it("cleans PID file along with lock", () => {
81
+ fs.writeFileSync(lockPath, "999999999");
82
+ fs.writeFileSync(pidPath, "999999999");
83
+ expect(checkAndCleanStaleLock(lockPath, pidPath)).toBe(true);
84
+ expect(fs.existsSync(lockPath)).toBe(false);
85
+ expect(fs.existsSync(pidPath)).toBe(false);
86
+ });
87
+ it("cleans invalid PID content", () => {
88
+ fs.writeFileSync(lockPath, "not-a-pid");
89
+ expect(checkAndCleanStaleLock(lockPath)).toBe(true);
90
+ expect(fs.existsSync(lockPath)).toBe(false);
91
+ });
92
+ });
93
+ describe("acquireLockWithCleanup", () => {
94
+ it("acquires lock when none exists", () => {
95
+ const result = acquireLockWithCleanup(lockPath);
96
+ expect(result.acquired).toBe(true);
97
+ });
98
+ it("cleans stale lock and acquires", () => {
99
+ // Create stale lock
100
+ fs.writeFileSync(lockPath, "999999999");
101
+ const result = acquireLockWithCleanup(lockPath);
102
+ expect(result.acquired).toBe(true);
103
+ // Verify new lock has correct PID
104
+ const content = fs.readFileSync(lockPath, "utf-8");
105
+ expect(content).toBe(String(process.pid));
106
+ });
107
+ it("fails for active lock", () => {
108
+ // Create lock with current process PID
109
+ fs.writeFileSync(lockPath, String(process.pid));
110
+ const result = acquireLockWithCleanup(lockPath, undefined, 99999);
111
+ expect(result.acquired).toBe(false);
112
+ expect(result.existingPid).toBe(process.pid);
113
+ });
114
+ it("cleans PID file with stale lock", () => {
115
+ fs.writeFileSync(lockPath, "999999999");
116
+ fs.writeFileSync(pidPath, "999999999");
117
+ const result = acquireLockWithCleanup(lockPath, pidPath);
118
+ expect(result.acquired).toBe(true);
119
+ expect(fs.existsSync(pidPath)).toBe(false);
120
+ });
121
+ });
122
+ describe("concurrent lock attempts", () => {
123
+ it("only one acquire succeeds for multiple attempts", () => {
124
+ const results = [
125
+ acquireLock(lockPath, 1),
126
+ acquireLock(lockPath, 2),
127
+ acquireLock(lockPath, 3),
128
+ ];
129
+ const acquired = results.filter((r) => r.acquired);
130
+ const failed = results.filter((r) => !r.acquired);
131
+ expect(acquired).toHaveLength(1);
132
+ expect(failed).toHaveLength(2);
133
+ });
134
+ });
135
+ });
136
+ //# sourceMappingURL=lockfile.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lockfile.test.js","sourceRoot":"","sources":["../src/lockfile.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ -- Agent Recorder: Initial Schema
2
+ -- Migration: 001_initial
3
+ --
4
+ -- Creates sessions and events tables with denormalized fields
5
+ -- for efficient querying and hierarchical timeline rendering.
6
+
7
+ -- Sessions table
8
+ CREATE TABLE IF NOT EXISTS sessions (
9
+ id TEXT PRIMARY KEY,
10
+ started_at TEXT NOT NULL,
11
+ ended_at TEXT,
12
+ status TEXT NOT NULL CHECK (status IN ('active', 'completed', 'error')),
13
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
14
+ );
15
+
16
+ -- Events table with denormalized fields
17
+ CREATE TABLE IF NOT EXISTS events (
18
+ id TEXT PRIMARY KEY,
19
+ session_id TEXT NOT NULL,
20
+ parent_event_id TEXT,
21
+ sequence INTEGER NOT NULL,
22
+ event_type TEXT NOT NULL CHECK (event_type IN ('agent_call', 'subagent_call', 'skill_call', 'tool_call')),
23
+ agent_role TEXT NOT NULL,
24
+ agent_name TEXT NOT NULL,
25
+ skill_name TEXT,
26
+ started_at TEXT NOT NULL,
27
+ ended_at TEXT,
28
+ status TEXT NOT NULL CHECK (status IN ('running', 'success', 'error', 'timeout', 'cancelled')),
29
+ input_json TEXT,
30
+ output_json TEXT,
31
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
32
+ FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE CASCADE,
33
+ FOREIGN KEY (parent_event_id) REFERENCES events(id) ON DELETE SET NULL
34
+ );
35
+
36
+ -- Indexes for common query patterns
37
+ CREATE INDEX IF NOT EXISTS idx_events_session_id ON events(session_id);
38
+ CREATE INDEX IF NOT EXISTS idx_events_parent_event_id ON events(parent_event_id);
39
+ CREATE INDEX IF NOT EXISTS idx_events_event_type ON events(event_type);
40
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_events_session_sequence ON events(session_id, sequence);
@@ -0,0 +1,40 @@
1
+ -- Agent Recorder: Initial Schema
2
+ -- Migration: 001_initial
3
+ --
4
+ -- Creates sessions and events tables with denormalized fields
5
+ -- for efficient querying and hierarchical timeline rendering.
6
+
7
+ -- Sessions table
8
+ CREATE TABLE IF NOT EXISTS sessions (
9
+ id TEXT PRIMARY KEY,
10
+ started_at TEXT NOT NULL,
11
+ ended_at TEXT,
12
+ status TEXT NOT NULL CHECK (status IN ('active', 'completed', 'error')),
13
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
14
+ );
15
+
16
+ -- Events table with denormalized fields
17
+ CREATE TABLE IF NOT EXISTS events (
18
+ id TEXT PRIMARY KEY,
19
+ session_id TEXT NOT NULL,
20
+ parent_event_id TEXT,
21
+ sequence INTEGER NOT NULL,
22
+ event_type TEXT NOT NULL CHECK (event_type IN ('agent_call', 'subagent_call', 'skill_call', 'tool_call')),
23
+ agent_role TEXT NOT NULL,
24
+ agent_name TEXT NOT NULL,
25
+ skill_name TEXT,
26
+ started_at TEXT NOT NULL,
27
+ ended_at TEXT,
28
+ status TEXT NOT NULL CHECK (status IN ('running', 'success', 'error', 'timeout', 'cancelled')),
29
+ input_json TEXT,
30
+ output_json TEXT,
31
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
32
+ FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE CASCADE,
33
+ FOREIGN KEY (parent_event_id) REFERENCES events(id) ON DELETE SET NULL
34
+ );
35
+
36
+ -- Indexes for common query patterns
37
+ CREATE INDEX IF NOT EXISTS idx_events_session_id ON events(session_id);
38
+ CREATE INDEX IF NOT EXISTS idx_events_parent_event_id ON events(parent_event_id);
39
+ CREATE INDEX IF NOT EXISTS idx_events_event_type ON events(event_type);
40
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_events_session_sequence ON events(session_id, sequence);
@@ -0,0 +1,8 @@
1
+ -- Session sequences table for atomic sequence number generation
2
+ -- Each session has its own sequence counter
3
+
4
+ CREATE TABLE IF NOT EXISTS session_sequences (
5
+ session_id TEXT PRIMARY KEY,
6
+ next_sequence INTEGER NOT NULL DEFAULT 1,
7
+ FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE CASCADE
8
+ );
@@ -0,0 +1,8 @@
1
+ -- Session sequences table for atomic sequence number generation
2
+ -- Each session has its own sequence counter
3
+
4
+ CREATE TABLE IF NOT EXISTS session_sequences (
5
+ session_id TEXT PRIMARY KEY,
6
+ next_sequence INTEGER NOT NULL DEFAULT 1,
7
+ FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE CASCADE
8
+ );
@@ -0,0 +1,9 @@
1
+ -- Add tool_name and mcp_method columns for proper tool call metadata
2
+ -- SQLite allows ADD COLUMN without rebuilding table
3
+
4
+ ALTER TABLE events ADD COLUMN tool_name TEXT;
5
+ ALTER TABLE events ADD COLUMN mcp_method TEXT;
6
+
7
+ -- Indexes for efficient filtering by tool name and MCP method
8
+ CREATE INDEX IF NOT EXISTS idx_events_tool_name ON events(tool_name);
9
+ CREATE INDEX IF NOT EXISTS idx_events_mcp_method ON events(mcp_method);
@@ -0,0 +1,9 @@
1
+ -- Add tool_name and mcp_method columns for proper tool call metadata
2
+ -- SQLite allows ADD COLUMN without rebuilding table
3
+
4
+ ALTER TABLE events ADD COLUMN tool_name TEXT;
5
+ ALTER TABLE events ADD COLUMN mcp_method TEXT;
6
+
7
+ -- Indexes for efficient filtering by tool name and MCP method
8
+ CREATE INDEX IF NOT EXISTS idx_events_tool_name ON events(tool_name);
9
+ CREATE INDEX IF NOT EXISTS idx_events_mcp_method ON events(mcp_method);
@@ -0,0 +1,23 @@
1
+ -- Agent Recorder: Add 'cancelled' status to sessions
2
+ -- Migration: 004_add_cancelled_status
3
+ --
4
+ -- Adds 'cancelled' to the sessions status CHECK constraint.
5
+ -- SQLite doesn't support ALTER CHECK, so we recreate the table.
6
+
7
+ -- Create new sessions table with updated constraint
8
+ CREATE TABLE sessions_new (
9
+ id TEXT PRIMARY KEY,
10
+ started_at TEXT NOT NULL,
11
+ ended_at TEXT,
12
+ status TEXT NOT NULL CHECK (status IN ('active', 'completed', 'error', 'cancelled')),
13
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
14
+ );
15
+
16
+ -- Copy existing data
17
+ INSERT INTO sessions_new SELECT * FROM sessions;
18
+
19
+ -- Drop old table
20
+ DROP TABLE sessions;
21
+
22
+ -- Rename new table
23
+ ALTER TABLE sessions_new RENAME TO sessions;
@@ -0,0 +1,23 @@
1
+ -- Agent Recorder: Add 'cancelled' status to sessions
2
+ -- Migration: 004_add_cancelled_status
3
+ --
4
+ -- Adds 'cancelled' to the sessions status CHECK constraint.
5
+ -- SQLite doesn't support ALTER CHECK, so we recreate the table.
6
+
7
+ -- Create new sessions table with updated constraint
8
+ CREATE TABLE sessions_new (
9
+ id TEXT PRIMARY KEY,
10
+ started_at TEXT NOT NULL,
11
+ ended_at TEXT,
12
+ status TEXT NOT NULL CHECK (status IN ('active', 'completed', 'error', 'cancelled')),
13
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
14
+ );
15
+
16
+ -- Copy existing data
17
+ INSERT INTO sessions_new SELECT * FROM sessions;
18
+
19
+ -- Drop old table
20
+ DROP TABLE sessions;
21
+
22
+ -- Rename new table
23
+ ALTER TABLE sessions_new RENAME TO sessions;
@@ -0,0 +1,6 @@
1
+ -- Add error_category column for stable error classification
2
+ -- Categories: downstream_timeout, downstream_unreachable, jsonrpc_invalid, jsonrpc_error, unknown
3
+ ALTER TABLE events ADD COLUMN error_category TEXT;
4
+
5
+ -- Index for filtering by error category
6
+ CREATE INDEX IF NOT EXISTS idx_events_error_category ON events(error_category);
@@ -0,0 +1,6 @@
1
+ -- Add error_category column for stable error classification
2
+ -- Categories: downstream_timeout, downstream_unreachable, jsonrpc_invalid, jsonrpc_error, unknown
3
+ ALTER TABLE events ADD COLUMN error_category TEXT;
4
+
5
+ -- Index for filtering by error category
6
+ CREATE INDEX IF NOT EXISTS idx_events_error_category ON events(error_category);
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "@agent-recorder/core",
3
+ "version": "0.0.1",
4
+ "type": "module",
5
+ "exports": {
6
+ ".": {
7
+ "types": "./index.d.ts",
8
+ "import": "./index.js"
9
+ },
10
+ "./types": {
11
+ "types": "./types/index.d.ts",
12
+ "import": "./types/index.js"
13
+ }
14
+ },
15
+ "dependencies": {
16
+ "better-sqlite3": "^11.7.0"
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "@agent-recorder/core",
3
+ "version": "0.0.1",
4
+ "type": "module",
5
+ "exports": {
6
+ ".": {
7
+ "types": "./index.d.ts",
8
+ "import": "./index.js"
9
+ },
10
+ "./types": {
11
+ "types": "./types/index.d.ts",
12
+ "import": "./types/index.js"
13
+ }
14
+ },
15
+ "dependencies": {
16
+ "better-sqlite3": "^11.7.0"
17
+ }
18
+ }
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Event types for Agent Recorder.
3
+ * Records observable execution boundaries only — no prompts, no reasoning.
4
+ */
5
+ /** Supported event types in the execution hierarchy */
6
+ export type EventType = "agent_call" | "subagent_call" | "skill_call" | "tool_call";
7
+ /** Status of an event */
8
+ export type EventStatus = "running" | "success" | "error" | "timeout" | "cancelled";
9
+ /** Error category for failed events (stable enum-like values) */
10
+ export type ErrorCategory = "downstream_timeout" | "downstream_unreachable" | "jsonrpc_invalid" | "jsonrpc_error" | "unknown";
11
+ /**
12
+ * Base event shared by all event types.
13
+ * Matches the SQLite schema with denormalized fields for efficient querying.
14
+ */
15
+ export interface BaseEvent {
16
+ /** Unique event ID (UUID) */
17
+ id: string;
18
+ /** Session this event belongs to */
19
+ sessionId: string;
20
+ /** Parent event ID (null for root agent_call) */
21
+ parentEventId: string | null;
22
+ /** Per-session ordering sequence number */
23
+ sequence: number;
24
+ /** Type of this event */
25
+ eventType: EventType;
26
+ /** Role of the agent (e.g., "assistant", "user") */
27
+ agentRole: string;
28
+ /** Name of the agent or subagent */
29
+ agentName: string;
30
+ /** Name of the skill (null if not a skill_call or tool within a skill) */
31
+ skillName: string | null;
32
+ /** Name of the tool (for tool_call events) */
33
+ toolName: string | null;
34
+ /** MCP method name (e.g., "tools/call") */
35
+ mcpMethod: string | null;
36
+ /** When this event started (ISO 8601) */
37
+ startedAt: string;
38
+ /** When this event ended (ISO 8601, null if still running) */
39
+ endedAt: string | null;
40
+ /** Current status of this event */
41
+ status: EventStatus;
42
+ /** Redacted+truncated input JSON blob */
43
+ inputJson: string | null;
44
+ /** Redacted+truncated output JSON blob */
45
+ outputJson: string | null;
46
+ /** Error category for failed events (null if success/running) */
47
+ errorCategory: ErrorCategory | null;
48
+ /** When this record was created (ISO 8601) */
49
+ createdAt: string;
50
+ }
51
+ /** Agent call event (root of an execution tree) */
52
+ export interface AgentCallEvent extends BaseEvent {
53
+ eventType: "agent_call";
54
+ }
55
+ /** Subagent call event (child of agent_call or another subagent_call) */
56
+ export interface SubagentCallEvent extends BaseEvent {
57
+ eventType: "subagent_call";
58
+ }
59
+ /** Skill call event (groups related tool calls) */
60
+ export interface SkillCallEvent extends BaseEvent {
61
+ eventType: "skill_call";
62
+ }
63
+ /** Tool call event (leaf node in the hierarchy) */
64
+ export interface ToolCallEvent extends BaseEvent {
65
+ eventType: "tool_call";
66
+ }
67
+ /** Union type for all event types */
68
+ export type RecordedEvent = AgentCallEvent | SubagentCallEvent | SkillCallEvent | ToolCallEvent;
69
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Event types for Agent Recorder.
3
+ * Records observable execution boundaries only — no prompts, no reasoning.
4
+ */
5
+ /** Supported event types in the execution hierarchy */
6
+ export type EventType = "agent_call" | "subagent_call" | "skill_call" | "tool_call";
7
+ /** Status of an event */
8
+ export type EventStatus = "running" | "success" | "error" | "timeout" | "cancelled";
9
+ /** Error category for failed events (stable enum-like values) */
10
+ export type ErrorCategory = "downstream_timeout" | "downstream_unreachable" | "jsonrpc_invalid" | "jsonrpc_error" | "unknown";
11
+ /**
12
+ * Base event shared by all event types.
13
+ * Matches the SQLite schema with denormalized fields for efficient querying.
14
+ */
15
+ export interface BaseEvent {
16
+ /** Unique event ID (UUID) */
17
+ id: string;
18
+ /** Session this event belongs to */
19
+ sessionId: string;
20
+ /** Parent event ID (null for root agent_call) */
21
+ parentEventId: string | null;
22
+ /** Per-session ordering sequence number */
23
+ sequence: number;
24
+ /** Type of this event */
25
+ eventType: EventType;
26
+ /** Role of the agent (e.g., "assistant", "user") */
27
+ agentRole: string;
28
+ /** Name of the agent or subagent */
29
+ agentName: string;
30
+ /** Name of the skill (null if not a skill_call or tool within a skill) */
31
+ skillName: string | null;
32
+ /** Name of the tool (for tool_call events) */
33
+ toolName: string | null;
34
+ /** MCP method name (e.g., "tools/call") */
35
+ mcpMethod: string | null;
36
+ /** When this event started (ISO 8601) */
37
+ startedAt: string;
38
+ /** When this event ended (ISO 8601, null if still running) */
39
+ endedAt: string | null;
40
+ /** Current status of this event */
41
+ status: EventStatus;
42
+ /** Redacted+truncated input JSON blob */
43
+ inputJson: string | null;
44
+ /** Redacted+truncated output JSON blob */
45
+ outputJson: string | null;
46
+ /** Error category for failed events (null if success/running) */
47
+ errorCategory: ErrorCategory | null;
48
+ /** When this record was created (ISO 8601) */
49
+ createdAt: string;
50
+ }
51
+ /** Agent call event (root of an execution tree) */
52
+ export interface AgentCallEvent extends BaseEvent {
53
+ eventType: "agent_call";
54
+ }
55
+ /** Subagent call event (child of agent_call or another subagent_call) */
56
+ export interface SubagentCallEvent extends BaseEvent {
57
+ eventType: "subagent_call";
58
+ }
59
+ /** Skill call event (groups related tool calls) */
60
+ export interface SkillCallEvent extends BaseEvent {
61
+ eventType: "skill_call";
62
+ }
63
+ /** Tool call event (leaf node in the hierarchy) */
64
+ export interface ToolCallEvent extends BaseEvent {
65
+ eventType: "tool_call";
66
+ }
67
+ /** Union type for all event types */
68
+ export type RecordedEvent = AgentCallEvent | SubagentCallEvent | SkillCallEvent | ToolCallEvent;
69
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/types/events.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,uDAAuD;AACvD,MAAM,MAAM,SAAS,GACjB,YAAY,GACZ,eAAe,GACf,YAAY,GACZ,WAAW,CAAC;AAEhB,yBAAyB;AACzB,MAAM,MAAM,WAAW,GACnB,SAAS,GACT,SAAS,GACT,OAAO,GACP,SAAS,GACT,WAAW,CAAC;AAEhB,iEAAiE;AACjE,MAAM,MAAM,aAAa,GACrB,oBAAoB,GACpB,wBAAwB,GACxB,iBAAiB,GACjB,eAAe,GACf,SAAS,CAAC;AAEd;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAC;IAEX,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAC;IAElB,iDAAiD;IACjD,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7B,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IAEjB,yBAAyB;IACzB,SAAS,EAAE,SAAS,CAAC;IAErB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAElB,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAC;IAElB,0EAA0E;IAC1E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAElB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB,mCAAmC;IACnC,MAAM,EAAE,WAAW,CAAC;IAEpB,yCAAyC;IACzC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1B,iEAAiE;IACjE,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IAEpC,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,mDAAmD;AACnD,MAAM,WAAW,cAAe,SAAQ,SAAS;IAC/C,SAAS,EAAE,YAAY,CAAC;CACzB;AAED,yEAAyE;AACzE,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD,SAAS,EAAE,eAAe,CAAC;CAC5B;AAED,mDAAmD;AACnD,MAAM,WAAW,cAAe,SAAQ,SAAS;IAC/C,SAAS,EAAE,YAAY,CAAC;CACzB;AAED,mDAAmD;AACnD,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C,SAAS,EAAE,WAAW,CAAC;CACxB;AAED,qCAAqC;AACrC,MAAM,MAAM,aAAa,GACrB,cAAc,GACd,iBAAiB,GACjB,cAAc,GACd,aAAa,CAAC"}