agent-recorder 0.0.1 → 0.0.8

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 (208) hide show
  1. package/package.json +2 -2
  2. package/vendor/node_modules/@agent-recorder/core/db/migrations.d.ts +2 -2
  3. package/vendor/node_modules/@agent-recorder/core/db/migrations.d.ts.map +1 -1
  4. package/vendor/node_modules/@agent-recorder/core/db/migrations.js +14 -6
  5. package/vendor/node_modules/@agent-recorder/core/db/migrations.js.map +1 -1
  6. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics 2.js +0 -205
  7. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics.d 2.ts +0 -50
  8. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics.d.ts 2.map +0 -1
  9. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics.js 2.map +0 -1
  10. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics.test 2.js +0 -253
  11. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics.test.d 2.ts +0 -5
  12. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics.test.d.ts 2.map +0 -1
  13. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics.test.js 2.map +0 -1
  14. package/vendor/node_modules/@agent-recorder/cli/commands/configure 2.js +0 -144
  15. package/vendor/node_modules/@agent-recorder/cli/commands/configure.d 2.ts +0 -17
  16. package/vendor/node_modules/@agent-recorder/cli/commands/configure.d.ts 2.map +0 -1
  17. package/vendor/node_modules/@agent-recorder/cli/commands/configure.js 2.map +0 -1
  18. package/vendor/node_modules/@agent-recorder/cli/commands/diagnose 2.js +0 -141
  19. package/vendor/node_modules/@agent-recorder/cli/commands/diagnose.d 2.ts +0 -5
  20. package/vendor/node_modules/@agent-recorder/cli/commands/diagnose.d.ts 2.map +0 -1
  21. package/vendor/node_modules/@agent-recorder/cli/commands/diagnose.js 2.map +0 -1
  22. package/vendor/node_modules/@agent-recorder/cli/commands/doctor 2.js +0 -253
  23. package/vendor/node_modules/@agent-recorder/cli/commands/doctor.d 2.ts +0 -5
  24. package/vendor/node_modules/@agent-recorder/cli/commands/doctor.d.ts 2.map +0 -1
  25. package/vendor/node_modules/@agent-recorder/cli/commands/doctor.js 2.map +0 -1
  26. package/vendor/node_modules/@agent-recorder/cli/commands/export 2.js +0 -56
  27. package/vendor/node_modules/@agent-recorder/cli/commands/export.d 2.ts +0 -12
  28. package/vendor/node_modules/@agent-recorder/cli/commands/export.d.ts 2.map +0 -1
  29. package/vendor/node_modules/@agent-recorder/cli/commands/export.js 2.map +0 -1
  30. package/vendor/node_modules/@agent-recorder/cli/commands/install 2.js +0 -77
  31. package/vendor/node_modules/@agent-recorder/cli/commands/install.d 2.ts +0 -13
  32. package/vendor/node_modules/@agent-recorder/cli/commands/install.d.ts 2.map +0 -1
  33. package/vendor/node_modules/@agent-recorder/cli/commands/install.js 2.map +0 -1
  34. package/vendor/node_modules/@agent-recorder/cli/commands/logs 2.js +0 -40
  35. package/vendor/node_modules/@agent-recorder/cli/commands/logs.d 2.ts +0 -8
  36. package/vendor/node_modules/@agent-recorder/cli/commands/logs.d.ts 2.map +0 -1
  37. package/vendor/node_modules/@agent-recorder/cli/commands/logs.js 2.map +0 -1
  38. package/vendor/node_modules/@agent-recorder/cli/commands/mock-mcp 2.js +0 -188
  39. package/vendor/node_modules/@agent-recorder/cli/commands/mock-mcp.d 2.ts +0 -10
  40. package/vendor/node_modules/@agent-recorder/cli/commands/mock-mcp.d.ts 2.map +0 -1
  41. package/vendor/node_modules/@agent-recorder/cli/commands/mock-mcp.js 2.map +0 -1
  42. package/vendor/node_modules/@agent-recorder/cli/commands/restart 2.js +0 -67
  43. package/vendor/node_modules/@agent-recorder/cli/commands/restart.d 2.ts +0 -9
  44. package/vendor/node_modules/@agent-recorder/cli/commands/restart.d.ts 2.map +0 -1
  45. package/vendor/node_modules/@agent-recorder/cli/commands/restart.js 2.map +0 -1
  46. package/vendor/node_modules/@agent-recorder/cli/commands/sessions 2.js +0 -333
  47. package/vendor/node_modules/@agent-recorder/cli/commands/sessions.d 2.ts +0 -52
  48. package/vendor/node_modules/@agent-recorder/cli/commands/sessions.d.ts 2.map +0 -1
  49. package/vendor/node_modules/@agent-recorder/cli/commands/sessions.js 2.map +0 -1
  50. package/vendor/node_modules/@agent-recorder/cli/commands/start 2.js +0 -174
  51. package/vendor/node_modules/@agent-recorder/cli/commands/start.d 2.ts +0 -10
  52. package/vendor/node_modules/@agent-recorder/cli/commands/start.d.ts 2.map +0 -1
  53. package/vendor/node_modules/@agent-recorder/cli/commands/start.js 2.map +0 -1
  54. package/vendor/node_modules/@agent-recorder/cli/commands/status 2.js +0 -104
  55. package/vendor/node_modules/@agent-recorder/cli/commands/status.d 2.ts +0 -5
  56. package/vendor/node_modules/@agent-recorder/cli/commands/status.d.ts 2.map +0 -1
  57. package/vendor/node_modules/@agent-recorder/cli/commands/status.js 2.map +0 -1
  58. package/vendor/node_modules/@agent-recorder/cli/commands/stop 2.js +0 -89
  59. package/vendor/node_modules/@agent-recorder/cli/commands/stop.d 2.ts +0 -8
  60. package/vendor/node_modules/@agent-recorder/cli/commands/stop.d.ts 2.map +0 -1
  61. package/vendor/node_modules/@agent-recorder/cli/commands/stop.js 2.map +0 -1
  62. package/vendor/node_modules/@agent-recorder/cli/commands/tui 2.js +0 -14
  63. package/vendor/node_modules/@agent-recorder/cli/commands/tui.d 2.ts +0 -5
  64. package/vendor/node_modules/@agent-recorder/cli/commands/tui.d.ts 2.map +0 -1
  65. package/vendor/node_modules/@agent-recorder/cli/commands/tui.js 2.map +0 -1
  66. package/vendor/node_modules/@agent-recorder/cli/config/claude-paths 2.js +0 -117
  67. package/vendor/node_modules/@agent-recorder/cli/config/claude-paths.d 2.ts +0 -55
  68. package/vendor/node_modules/@agent-recorder/cli/config/claude-paths.d.ts 2.map +0 -1
  69. package/vendor/node_modules/@agent-recorder/cli/config/claude-paths.js 2.map +0 -1
  70. package/vendor/node_modules/@agent-recorder/cli/config/claude-paths.test 2.js +0 -152
  71. package/vendor/node_modules/@agent-recorder/cli/config/claude-paths.test.d 2.ts +0 -5
  72. package/vendor/node_modules/@agent-recorder/cli/config/claude-paths.test.d.ts 2.map +0 -1
  73. package/vendor/node_modules/@agent-recorder/cli/config/claude-paths.test.js 2.map +0 -1
  74. package/vendor/node_modules/@agent-recorder/cli/index 2.js +0 -194
  75. package/vendor/node_modules/@agent-recorder/cli/index.d 2.ts +0 -10
  76. package/vendor/node_modules/@agent-recorder/cli/index.d.ts 2.map +0 -1
  77. package/vendor/node_modules/@agent-recorder/cli/index.js 2.map +0 -1
  78. package/vendor/node_modules/@agent-recorder/cli/package 2.json +0 -17
  79. package/vendor/node_modules/@agent-recorder/cli/tui/App 2.js +0 -84
  80. package/vendor/node_modules/@agent-recorder/cli/tui/App.d 2.ts +0 -6
  81. package/vendor/node_modules/@agent-recorder/cli/tui/App.d.ts 2.map +0 -1
  82. package/vendor/node_modules/@agent-recorder/cli/tui/App.js 2.map +0 -1
  83. package/vendor/node_modules/@agent-recorder/cli/tui/api 2.js +0 -105
  84. package/vendor/node_modules/@agent-recorder/cli/tui/api.d 2.ts +0 -31
  85. package/vendor/node_modules/@agent-recorder/cli/tui/api.d.ts 2.map +0 -1
  86. package/vendor/node_modules/@agent-recorder/cli/tui/api.js 2.map +0 -1
  87. package/vendor/node_modules/@agent-recorder/cli/tui/components/EventInspectPanel 2.js +0 -45
  88. package/vendor/node_modules/@agent-recorder/cli/tui/components/EventInspectPanel.d 2.ts +0 -11
  89. package/vendor/node_modules/@agent-recorder/cli/tui/components/EventInspectPanel.d.ts 2.map +0 -1
  90. package/vendor/node_modules/@agent-recorder/cli/tui/components/EventInspectPanel.js 2.map +0 -1
  91. package/vendor/node_modules/@agent-recorder/cli/tui/components/Header 2.js +0 -13
  92. package/vendor/node_modules/@agent-recorder/cli/tui/components/Header.d 2.ts +0 -17
  93. package/vendor/node_modules/@agent-recorder/cli/tui/components/Header.d.ts 2.map +0 -1
  94. package/vendor/node_modules/@agent-recorder/cli/tui/components/Header.js 2.map +0 -1
  95. package/vendor/node_modules/@agent-recorder/cli/tui/components/Spinner 2.js +0 -21
  96. package/vendor/node_modules/@agent-recorder/cli/tui/components/Spinner.d 2.ts +0 -12
  97. package/vendor/node_modules/@agent-recorder/cli/tui/components/Spinner.d.ts 2.map +0 -1
  98. package/vendor/node_modules/@agent-recorder/cli/tui/components/Spinner.js 2.map +0 -1
  99. package/vendor/node_modules/@agent-recorder/cli/tui/components/StatusBadge 2.js +0 -50
  100. package/vendor/node_modules/@agent-recorder/cli/tui/components/StatusBadge.d 2.ts +0 -16
  101. package/vendor/node_modules/@agent-recorder/cli/tui/components/StatusBadge.d.ts 2.map +0 -1
  102. package/vendor/node_modules/@agent-recorder/cli/tui/components/StatusBadge.js 2.map +0 -1
  103. package/vendor/node_modules/@agent-recorder/cli/tui/components/Table 2.js +0 -20
  104. package/vendor/node_modules/@agent-recorder/cli/tui/components/Table.d 2.ts +0 -21
  105. package/vendor/node_modules/@agent-recorder/cli/tui/components/Table.d.ts 2.map +0 -1
  106. package/vendor/node_modules/@agent-recorder/cli/tui/components/Table.js 2.map +0 -1
  107. package/vendor/node_modules/@agent-recorder/cli/tui/components/index 2.js +0 -8
  108. package/vendor/node_modules/@agent-recorder/cli/tui/components/index.d 2.ts +0 -8
  109. package/vendor/node_modules/@agent-recorder/cli/tui/components/index.d.ts 2.map +0 -1
  110. package/vendor/node_modules/@agent-recorder/cli/tui/components/index.js 2.map +0 -1
  111. package/vendor/node_modules/@agent-recorder/cli/tui/hooks/useEventStream 2.js +0 -75
  112. package/vendor/node_modules/@agent-recorder/cli/tui/hooks/useEventStream.d 2.ts +0 -22
  113. package/vendor/node_modules/@agent-recorder/cli/tui/hooks/useEventStream.d.ts 2.map +0 -1
  114. package/vendor/node_modules/@agent-recorder/cli/tui/hooks/useEventStream.js 2.map +0 -1
  115. package/vendor/node_modules/@agent-recorder/cli/tui/screens/SessionDetailScreen 2.js +0 -190
  116. package/vendor/node_modules/@agent-recorder/cli/tui/screens/SessionDetailScreen.d 2.ts +0 -13
  117. package/vendor/node_modules/@agent-recorder/cli/tui/screens/SessionDetailScreen.d.ts 2.map +0 -1
  118. package/vendor/node_modules/@agent-recorder/cli/tui/screens/SessionDetailScreen.js 2.map +0 -1
  119. package/vendor/node_modules/@agent-recorder/cli/tui/screens/SessionsScreen 2.js +0 -166
  120. package/vendor/node_modules/@agent-recorder/cli/tui/screens/SessionsScreen.d 2.ts +0 -10
  121. package/vendor/node_modules/@agent-recorder/cli/tui/screens/SessionsScreen.d.ts 2.map +0 -1
  122. package/vendor/node_modules/@agent-recorder/cli/tui/screens/SessionsScreen.js 2.map +0 -1
  123. package/vendor/node_modules/@agent-recorder/cli/tui/screens/index 2.js +0 -6
  124. package/vendor/node_modules/@agent-recorder/cli/tui/screens/index.d 2.ts +0 -6
  125. package/vendor/node_modules/@agent-recorder/cli/tui/screens/index.d.ts 2.map +0 -1
  126. package/vendor/node_modules/@agent-recorder/cli/tui/screens/index.js 2.map +0 -1
  127. package/vendor/node_modules/@agent-recorder/core/config 2.js +0 -44
  128. package/vendor/node_modules/@agent-recorder/core/config.d 2.ts +0 -25
  129. package/vendor/node_modules/@agent-recorder/core/config.d.ts 2.map +0 -1
  130. package/vendor/node_modules/@agent-recorder/core/db/connection.d 2.ts +0 -15
  131. package/vendor/node_modules/@agent-recorder/core/migrations/001_initial 2.sql +0 -40
  132. package/vendor/node_modules/@agent-recorder/core/migrations/002_session_sequences 2.sql +0 -8
  133. package/vendor/node_modules/@agent-recorder/core/migrations/003_add_tool_columns 2.sql +0 -9
  134. package/vendor/node_modules/@agent-recorder/core/migrations/004_add_cancelled_status 2.sql +0 -23
  135. package/vendor/node_modules/@agent-recorder/core/migrations/005_add_error_category 2.sql +0 -6
  136. package/vendor/node_modules/@agent-recorder/core/package 2.json +0 -18
  137. package/vendor/node_modules/@agent-recorder/core/types/events.d 2.ts +0 -69
  138. package/vendor/node_modules/@agent-recorder/core/types/index 2.js +0 -2
  139. package/vendor/node_modules/@agent-recorder/core/types/index.js 2.map +0 -1
  140. package/vendor/node_modules/@agent-recorder/core/types/session 2.js +0 -6
  141. package/vendor/node_modules/@agent-recorder/core/types/session.d 2.ts +0 -22
  142. package/vendor/node_modules/@agent-recorder/core/types/session.d.ts 2.map +0 -1
  143. package/vendor/node_modules/@agent-recorder/core/types/session.js 2.map +0 -1
  144. package/vendor/node_modules/@agent-recorder/core/utils/error-category 2.js +0 -58
  145. package/vendor/node_modules/@agent-recorder/core/utils/error-category.d 2.ts +0 -22
  146. package/vendor/node_modules/@agent-recorder/core/utils/error-category.d.ts 2.map +0 -1
  147. package/vendor/node_modules/@agent-recorder/core/utils/error-category.js 2.map +0 -1
  148. package/vendor/node_modules/@agent-recorder/core/utils/error-category.test.d 2.ts +0 -5
  149. package/vendor/node_modules/@agent-recorder/core/utils/error-category.test.d.ts 2.map +0 -1
  150. package/vendor/node_modules/@agent-recorder/core/utils/error-category.test.js 2.map +0 -1
  151. package/vendor/node_modules/@agent-recorder/core/utils/index 2.js +0 -6
  152. package/vendor/node_modules/@agent-recorder/core/utils/index.d 2.ts +0 -6
  153. package/vendor/node_modules/@agent-recorder/core/utils/index.d.ts 2.map +0 -1
  154. package/vendor/node_modules/@agent-recorder/core/utils/index.js 2.map +0 -1
  155. package/vendor/node_modules/@agent-recorder/core/utils/redact.d 2.ts +0 -19
  156. package/vendor/node_modules/@agent-recorder/core/utils/redact.d.ts 2.map +0 -1
  157. package/vendor/node_modules/@agent-recorder/core/utils/redact.js 2.map +0 -1
  158. package/vendor/node_modules/@agent-recorder/service/index 2.js +0 -128
  159. package/vendor/node_modules/@agent-recorder/service/index.d 2.ts +0 -36
  160. package/vendor/node_modules/@agent-recorder/service/index.d.ts 2.map +0 -1
  161. package/vendor/node_modules/@agent-recorder/service/index.js 2.map +0 -1
  162. package/vendor/node_modules/@agent-recorder/service/mcp/index 2.js +0 -7
  163. package/vendor/node_modules/@agent-recorder/service/mcp/index.d 2.ts +0 -7
  164. package/vendor/node_modules/@agent-recorder/service/mcp/index.d.ts 2.map +0 -1
  165. package/vendor/node_modules/@agent-recorder/service/mcp/index.js 2.map +0 -1
  166. package/vendor/node_modules/@agent-recorder/service/mcp/proxy 2.js +0 -223
  167. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.d 2.ts +0 -26
  168. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.d.ts 2.map +0 -1
  169. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.js 2.map +0 -1
  170. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.test.d 2.ts +0 -5
  171. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.test.d.ts 2.map +0 -1
  172. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.test.js 2.map +0 -1
  173. package/vendor/node_modules/@agent-recorder/service/mcp/recorder 2.js +0 -62
  174. package/vendor/node_modules/@agent-recorder/service/mcp/recorder.d 2.ts +0 -31
  175. package/vendor/node_modules/@agent-recorder/service/mcp/recorder.d.ts 2.map +0 -1
  176. package/vendor/node_modules/@agent-recorder/service/mcp/recorder.js 2.map +0 -1
  177. package/vendor/node_modules/@agent-recorder/service/mcp/types 2.js +0 -15
  178. package/vendor/node_modules/@agent-recorder/service/mcp/types.d 2.ts +0 -40
  179. package/vendor/node_modules/@agent-recorder/service/mcp/types.d.ts 2.map +0 -1
  180. package/vendor/node_modules/@agent-recorder/service/mcp/types.js 2.map +0 -1
  181. package/vendor/node_modules/@agent-recorder/service/package 2.json +0 -15
  182. package/vendor/node_modules/@agent-recorder/service/routes/events 2.js +0 -71
  183. package/vendor/node_modules/@agent-recorder/service/routes/events.d 2.ts +0 -11
  184. package/vendor/node_modules/@agent-recorder/service/routes/events.d.ts 2.map +0 -1
  185. package/vendor/node_modules/@agent-recorder/service/routes/events.js 2.map +0 -1
  186. package/vendor/node_modules/@agent-recorder/service/routes/health 2.js +0 -18
  187. package/vendor/node_modules/@agent-recorder/service/routes/health.d 2.ts +0 -6
  188. package/vendor/node_modules/@agent-recorder/service/routes/health.d.ts 2.map +0 -1
  189. package/vendor/node_modules/@agent-recorder/service/routes/health.js 2.map +0 -1
  190. package/vendor/node_modules/@agent-recorder/service/routes/sessions 2.js +0 -80
  191. package/vendor/node_modules/@agent-recorder/service/routes/sessions.d 2.ts +0 -12
  192. package/vendor/node_modules/@agent-recorder/service/routes/sessions.d.ts 2.map +0 -1
  193. package/vendor/node_modules/@agent-recorder/service/routes/sessions.js 2.map +0 -1
  194. package/vendor/node_modules/@agent-recorder/service/server 2.js +0 -36
  195. package/vendor/node_modules/@agent-recorder/service/server.d 2.ts +0 -19
  196. package/vendor/node_modules/@agent-recorder/service/server.d.ts 2.map +0 -1
  197. package/vendor/node_modules/@agent-recorder/service/server.js 2.map +0 -1
  198. package/vendor/node_modules/@agent-recorder/service/server.test 2.js +0 -296
  199. package/vendor/node_modules/@agent-recorder/service/server.test.d 2.ts +0 -5
  200. package/vendor/node_modules/@agent-recorder/service/server.test.d.ts 2.map +0 -1
  201. package/vendor/node_modules/@agent-recorder/service/session-manager 2.js +0 -22
  202. package/vendor/node_modules/@agent-recorder/service/session-manager.d 2.ts +0 -16
  203. package/vendor/node_modules/@agent-recorder/service/session-manager.d.ts 2.map +0 -1
  204. package/vendor/node_modules/@agent-recorder/service/session-manager.js 2.map +0 -1
  205. package/vendor/node_modules/@agent-recorder/service/session-manager.test 2.js +0 -61
  206. package/vendor/node_modules/@agent-recorder/service/session-manager.test.d 2.ts +0 -5
  207. package/vendor/node_modules/@agent-recorder/service/session-manager.test.d.ts 2.map +0 -1
  208. package/vendor/node_modules/@agent-recorder/service/session-manager.test.js 2.map +0 -1
@@ -1,296 +0,0 @@
1
- /**
2
- * Integration test for the Agent Recorder service.
3
- */
4
- import { describe, it, expect, beforeAll, afterAll } from "vitest";
5
- import { openMemoryDatabase, runMigrations, } from "@agent-recorder/core";
6
- import { createServer } from "./server.js";
7
- import { join, dirname } from "node:path";
8
- import { fileURLToPath } from "node:url";
9
- import { randomUUID } from "node:crypto";
10
- const __filename = fileURLToPath(import.meta.url);
11
- const __dirname = dirname(__filename);
12
- describe("Agent Recorder Service", () => {
13
- let app;
14
- let db;
15
- beforeAll(async () => {
16
- // Create in-memory database
17
- db = openMemoryDatabase();
18
- // Run migrations - go from packages/service/src to packages/core/migrations
19
- const migrationsDir = join(__dirname, "..", "..", "core", "migrations");
20
- runMigrations(db, migrationsDir);
21
- // Create server
22
- app = await createServer({ db });
23
- await app.ready();
24
- });
25
- afterAll(async () => {
26
- await app.close();
27
- db.close();
28
- });
29
- it("GET /api/health returns ok", async () => {
30
- const response = await app.inject({
31
- method: "GET",
32
- url: "/api/health",
33
- });
34
- expect(response.statusCode).toBe(200);
35
- const health = response.json();
36
- expect(health.status).toBe("ok");
37
- expect(health).toHaveProperty("pid");
38
- expect(health).toHaveProperty("uptime");
39
- expect(health).toHaveProperty("mode");
40
- });
41
- it("POST /api/sessions creates a session", async () => {
42
- const response = await app.inject({
43
- method: "POST",
44
- url: "/api/sessions",
45
- });
46
- expect(response.statusCode).toBe(201);
47
- const session = response.json();
48
- expect(session).toHaveProperty("id");
49
- expect(session).toHaveProperty("startedAt");
50
- expect(session.status).toBe("active");
51
- });
52
- it("full session lifecycle with events", async () => {
53
- // Create session
54
- const createSessionRes = await app.inject({
55
- method: "POST",
56
- url: "/api/sessions",
57
- });
58
- expect(createSessionRes.statusCode).toBe(201);
59
- const session = createSessionRes.json();
60
- // Insert event
61
- const eventPayload = {
62
- id: randomUUID(),
63
- sessionId: session.id,
64
- parentEventId: null,
65
- sequence: 1,
66
- eventType: "agent_call",
67
- agentRole: "assistant",
68
- agentName: "claude",
69
- skillName: null,
70
- startedAt: new Date().toISOString(),
71
- status: "running",
72
- };
73
- const insertEventRes = await app.inject({
74
- method: "POST",
75
- url: "/api/events",
76
- payload: eventPayload,
77
- });
78
- expect(insertEventRes.statusCode).toBe(201);
79
- const event = insertEventRes.json();
80
- expect(event.id).toBe(eventPayload.id);
81
- expect(event.sessionId).toBe(session.id);
82
- // Get session events
83
- const getEventsRes = await app.inject({
84
- method: "GET",
85
- url: `/api/sessions/${session.id}/events`,
86
- });
87
- expect(getEventsRes.statusCode).toBe(200);
88
- const events = getEventsRes.json();
89
- expect(events).toHaveLength(1);
90
- expect(events[0].id).toBe(event.id);
91
- // End session
92
- const endSessionRes = await app.inject({
93
- method: "POST",
94
- url: `/api/sessions/${session.id}/end`,
95
- payload: { status: "completed" },
96
- });
97
- expect(endSessionRes.statusCode).toBe(200);
98
- const endedSession = endSessionRes.json();
99
- expect(endedSession.status).toBe("completed");
100
- expect(endedSession.endedAt).toBeTruthy();
101
- // Get session to verify
102
- const getSessionRes = await app.inject({
103
- method: "GET",
104
- url: `/api/sessions/${session.id}`,
105
- });
106
- expect(getSessionRes.statusCode).toBe(200);
107
- const fetchedSession = getSessionRes.json();
108
- expect(fetchedSession.status).toBe("completed");
109
- });
110
- it("enforces unique constraint on (session_id, sequence)", async () => {
111
- // Create session
112
- const createSessionRes = await app.inject({
113
- method: "POST",
114
- url: "/api/sessions",
115
- });
116
- const session = createSessionRes.json();
117
- // Insert first event with sequence 1
118
- const event1 = {
119
- id: randomUUID(),
120
- sessionId: session.id,
121
- parentEventId: null,
122
- sequence: 1,
123
- eventType: "agent_call",
124
- agentRole: "assistant",
125
- agentName: "claude",
126
- skillName: null,
127
- startedAt: new Date().toISOString(),
128
- status: "success",
129
- };
130
- const res1 = await app.inject({
131
- method: "POST",
132
- url: "/api/events",
133
- payload: event1,
134
- });
135
- expect(res1.statusCode).toBe(201);
136
- // Try to insert second event with same sequence - should fail
137
- const event2 = {
138
- id: randomUUID(),
139
- sessionId: session.id,
140
- parentEventId: null,
141
- sequence: 1, // duplicate sequence
142
- eventType: "tool_call",
143
- agentRole: "assistant",
144
- agentName: "claude",
145
- skillName: null,
146
- startedAt: new Date().toISOString(),
147
- status: "success",
148
- };
149
- const res2 = await app.inject({
150
- method: "POST",
151
- url: "/api/events",
152
- payload: event2,
153
- });
154
- expect(res2.statusCode).toBe(500); // Fails due to unique constraint
155
- });
156
- });
157
- describe("Agent Recorder Service - Current Session", () => {
158
- let db;
159
- beforeAll(() => {
160
- db = openMemoryDatabase();
161
- const migrationsDir = join(__dirname, "..", "..", "core", "migrations");
162
- runMigrations(db, migrationsDir);
163
- });
164
- afterAll(() => {
165
- db.close();
166
- });
167
- it("GET /api/sessions/current returns 404 when no currentSessionId", async () => {
168
- const app = await createServer({ db });
169
- await app.ready();
170
- const response = await app.inject({
171
- method: "GET",
172
- url: "/api/sessions/current",
173
- });
174
- expect(response.statusCode).toBe(404);
175
- expect(response.json()).toEqual({ error: "No active session" });
176
- await app.close();
177
- });
178
- it("GET /api/sessions/current returns session when currentSessionId is set", async () => {
179
- // Create a session first
180
- const appNoSession = await createServer({ db });
181
- await appNoSession.ready();
182
- const createRes = await appNoSession.inject({
183
- method: "POST",
184
- url: "/api/sessions",
185
- });
186
- const session = createRes.json();
187
- await appNoSession.close();
188
- // Now create server with currentSessionId
189
- const app = await createServer({ db, currentSessionId: session.id });
190
- await app.ready();
191
- const response = await app.inject({
192
- method: "GET",
193
- url: "/api/sessions/current",
194
- });
195
- expect(response.statusCode).toBe(200);
196
- const current = response.json();
197
- expect(current.id).toBe(session.id);
198
- expect(current.status).toBe("active");
199
- expect(current.startedAt).toBeTruthy();
200
- await app.close();
201
- });
202
- });
203
- describe("Agent Recorder Service - Paginated Events", () => {
204
- let app;
205
- let db;
206
- let sessionId;
207
- beforeAll(async () => {
208
- db = openMemoryDatabase();
209
- const migrationsDir = join(__dirname, "..", "..", "core", "migrations");
210
- runMigrations(db, migrationsDir);
211
- app = await createServer({ db });
212
- await app.ready();
213
- // Create a session
214
- const createRes = await app.inject({
215
- method: "POST",
216
- url: "/api/sessions",
217
- });
218
- sessionId = createRes.json().id;
219
- // Insert multiple events
220
- for (let i = 1; i <= 10; i++) {
221
- await app.inject({
222
- method: "POST",
223
- url: "/api/events",
224
- payload: {
225
- id: randomUUID(),
226
- sessionId,
227
- parentEventId: null,
228
- sequence: i,
229
- eventType: "tool_call",
230
- toolName: `tool_${i}`,
231
- agentRole: "assistant",
232
- agentName: "claude",
233
- skillName: null,
234
- startedAt: new Date().toISOString(),
235
- status: "success",
236
- },
237
- });
238
- }
239
- });
240
- afterAll(async () => {
241
- await app.close();
242
- db.close();
243
- });
244
- it("GET /api/sessions/:id/events returns all events without params", async () => {
245
- const response = await app.inject({
246
- method: "GET",
247
- url: `/api/sessions/${sessionId}/events`,
248
- });
249
- expect(response.statusCode).toBe(200);
250
- const events = response.json();
251
- expect(events).toHaveLength(10);
252
- });
253
- it("GET /api/sessions/:id/events?after=5 returns events after sequence 5", async () => {
254
- const response = await app.inject({
255
- method: "GET",
256
- url: `/api/sessions/${sessionId}/events?after=5`,
257
- });
258
- expect(response.statusCode).toBe(200);
259
- const events = response.json();
260
- expect(events).toHaveLength(5);
261
- expect(events[0].sequence).toBe(6);
262
- expect(events[4].sequence).toBe(10);
263
- });
264
- it("GET /api/sessions/:id/events?limit=3 returns first 3 events", async () => {
265
- const response = await app.inject({
266
- method: "GET",
267
- url: `/api/sessions/${sessionId}/events?limit=3`,
268
- });
269
- expect(response.statusCode).toBe(200);
270
- const events = response.json();
271
- expect(events).toHaveLength(3);
272
- expect(events[0].sequence).toBe(1);
273
- expect(events[2].sequence).toBe(3);
274
- });
275
- it("GET /api/sessions/:id/events?after=3&limit=2 returns 2 events after sequence 3", async () => {
276
- const response = await app.inject({
277
- method: "GET",
278
- url: `/api/sessions/${sessionId}/events?after=3&limit=2`,
279
- });
280
- expect(response.statusCode).toBe(200);
281
- const events = response.json();
282
- expect(events).toHaveLength(2);
283
- expect(events[0].sequence).toBe(4);
284
- expect(events[1].sequence).toBe(5);
285
- });
286
- it("GET /api/sessions/:id/events?after=10 returns empty array", async () => {
287
- const response = await app.inject({
288
- method: "GET",
289
- url: `/api/sessions/${sessionId}/events?after=10`,
290
- });
291
- expect(response.statusCode).toBe(200);
292
- const events = response.json();
293
- expect(events).toHaveLength(0);
294
- });
295
- });
296
- //# sourceMappingURL=server.test.js.map
@@ -1,5 +0,0 @@
1
- /**
2
- * Integration test for the Agent Recorder service.
3
- */
4
- export {};
5
- //# sourceMappingURL=server.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.test.d.ts","sourceRoot":"","sources":["../src/server.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,22 +0,0 @@
1
- /**
2
- * Session lifecycle manager for daemon.
3
- * Creates session on boot, ends on shutdown.
4
- */
5
- import { startSession, endSession, } from "@agent-recorder/core";
6
- /**
7
- * Create a session manager that starts a new session immediately.
8
- * The session is created in the database with status "active".
9
- */
10
- export function createSessionManager(db) {
11
- // Core generates the ID
12
- const session = startSession(db);
13
- console.log(`Session started: ${session.id}`);
14
- return {
15
- sessionId: session.id,
16
- shutdown(status = "cancelled") {
17
- endSession(db, session.id, new Date().toISOString(), status);
18
- console.log(`Session ended: ${session.id} (${status})`);
19
- },
20
- };
21
- }
22
- //# sourceMappingURL=session-manager.js.map
@@ -1,16 +0,0 @@
1
- /**
2
- * Session lifecycle manager for daemon.
3
- * Creates session on boot, ends on shutdown.
4
- */
5
- import type Database from "better-sqlite3";
6
- import { type SessionStatus } from "@agent-recorder/core";
7
- export interface SessionManager {
8
- readonly sessionId: string;
9
- shutdown(status?: SessionStatus): void;
10
- }
11
- /**
12
- * Create a session manager that starts a new session immediately.
13
- * The session is created in the database with status "active".
14
- */
15
- export declare function createSessionManager(db: Database.Database): SessionManager;
16
- //# sourceMappingURL=session-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../src/session-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;CACxC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,cAAc,CAY1E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../src/session-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,YAAY,EACZ,UAAU,GAEX,MAAM,sBAAsB,CAAC;AAO9B;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAqB;IACxD,wBAAwB;IACxB,MAAM,OAAO,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAE9C,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,EAAE;QACrB,QAAQ,CAAC,SAAwB,WAAW;YAC1C,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,EAAE,KAAK,MAAM,GAAG,CAAC,CAAC;QAC1D,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,61 +0,0 @@
1
- /**
2
- * Tests for session manager.
3
- */
4
- import { describe, it, expect, beforeEach, afterEach } from "vitest";
5
- import { openMemoryDatabase, runMigrations, getSessionById, } from "@agent-recorder/core";
6
- import { createSessionManager } from "./session-manager.js";
7
- import { join, dirname } from "node:path";
8
- import { fileURLToPath } from "node:url";
9
- const __filename = fileURLToPath(import.meta.url);
10
- const __dirname = dirname(__filename);
11
- describe("SessionManager", () => {
12
- let db;
13
- beforeEach(() => {
14
- db = openMemoryDatabase();
15
- const migrationsDir = join(__dirname, "..", "..", "core", "migrations");
16
- runMigrations(db, migrationsDir);
17
- });
18
- afterEach(() => {
19
- db.close();
20
- });
21
- it("creates active session on construction", () => {
22
- const manager = createSessionManager(db);
23
- expect(manager.sessionId).toBeDefined();
24
- expect(typeof manager.sessionId).toBe("string");
25
- expect(manager.sessionId.length).toBeGreaterThan(0);
26
- // Verify session exists in database with active status
27
- const session = getSessionById(db, manager.sessionId);
28
- expect(session).not.toBeNull();
29
- expect(session.status).toBe("active");
30
- expect(session.startedAt).toBeDefined();
31
- expect(session.endedAt).toBeNull();
32
- });
33
- it("ends session with cancelled status by default", () => {
34
- const manager = createSessionManager(db);
35
- const sessionId = manager.sessionId;
36
- manager.shutdown();
37
- const session = getSessionById(db, sessionId);
38
- expect(session).not.toBeNull();
39
- expect(session.status).toBe("cancelled");
40
- expect(session.endedAt).not.toBeNull();
41
- });
42
- it("ends session with specified status", () => {
43
- const manager = createSessionManager(db);
44
- const sessionId = manager.sessionId;
45
- manager.shutdown("completed");
46
- const session = getSessionById(db, sessionId);
47
- expect(session).not.toBeNull();
48
- expect(session.status).toBe("completed");
49
- expect(session.endedAt).not.toBeNull();
50
- });
51
- it("ends session with error status when specified", () => {
52
- const manager = createSessionManager(db);
53
- const sessionId = manager.sessionId;
54
- manager.shutdown("error");
55
- const session = getSessionById(db, sessionId);
56
- expect(session).not.toBeNull();
57
- expect(session.status).toBe("error");
58
- expect(session.endedAt).not.toBeNull();
59
- });
60
- });
61
- //# sourceMappingURL=session-manager.test.js.map
@@ -1,5 +0,0 @@
1
- /**
2
- * Tests for session manager.
3
- */
4
- export {};
5
- //# sourceMappingURL=session-manager.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-manager.test.d.ts","sourceRoot":"","sources":["../src/session-manager.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-manager.test.js","sourceRoot":"","sources":["../src/session-manager.test.ts"],"names":[],"mappings":"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"}