agent-recorder 0.0.8 → 0.0.10

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 (101) hide show
  1. package/package.json +1 -1
  2. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics.test.js +1 -0
  3. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics.test.js.map +1 -1
  4. package/vendor/node_modules/@agent-recorder/cli/commands/configure-wrap.d.ts +15 -0
  5. package/vendor/node_modules/@agent-recorder/cli/commands/configure-wrap.d.ts.map +1 -0
  6. package/vendor/node_modules/@agent-recorder/cli/commands/configure-wrap.js +207 -0
  7. package/vendor/node_modules/@agent-recorder/cli/commands/configure-wrap.js.map +1 -0
  8. package/vendor/node_modules/@agent-recorder/cli/commands/configure.d.ts +2 -0
  9. package/vendor/node_modules/@agent-recorder/cli/commands/configure.d.ts.map +1 -1
  10. package/vendor/node_modules/@agent-recorder/cli/commands/configure.js +117 -1
  11. package/vendor/node_modules/@agent-recorder/cli/commands/configure.js.map +1 -1
  12. package/vendor/node_modules/@agent-recorder/cli/commands/doctor.d.ts.map +1 -1
  13. package/vendor/node_modules/@agent-recorder/cli/commands/doctor.js +113 -19
  14. package/vendor/node_modules/@agent-recorder/cli/commands/doctor.js.map +1 -1
  15. package/vendor/node_modules/@agent-recorder/cli/commands/doctor.test.d.ts +5 -0
  16. package/vendor/node_modules/@agent-recorder/cli/commands/doctor.test.d.ts.map +1 -0
  17. package/vendor/node_modules/@agent-recorder/cli/commands/doctor.test.js +152 -0
  18. package/vendor/node_modules/@agent-recorder/cli/commands/doctor.test.js.map +1 -0
  19. package/vendor/node_modules/@agent-recorder/cli/commands/install.d.ts +7 -1
  20. package/vendor/node_modules/@agent-recorder/cli/commands/install.d.ts.map +1 -1
  21. package/vendor/node_modules/@agent-recorder/cli/commands/install.js +98 -14
  22. package/vendor/node_modules/@agent-recorder/cli/commands/install.js.map +1 -1
  23. package/vendor/node_modules/@agent-recorder/cli/commands/install.test.d.ts +5 -0
  24. package/vendor/node_modules/@agent-recorder/cli/commands/install.test.d.ts.map +1 -0
  25. package/vendor/node_modules/@agent-recorder/cli/commands/install.test.js +173 -0
  26. package/vendor/node_modules/@agent-recorder/cli/commands/install.test.js.map +1 -0
  27. package/vendor/node_modules/@agent-recorder/cli/config/hubify.d.ts +51 -0
  28. package/vendor/node_modules/@agent-recorder/cli/config/hubify.d.ts.map +1 -0
  29. package/vendor/node_modules/@agent-recorder/cli/config/hubify.js +125 -0
  30. package/vendor/node_modules/@agent-recorder/cli/config/hubify.js.map +1 -0
  31. package/vendor/node_modules/@agent-recorder/cli/config/hubify.test.d.ts +5 -0
  32. package/vendor/node_modules/@agent-recorder/cli/config/hubify.test.d.ts.map +1 -0
  33. package/vendor/node_modules/@agent-recorder/cli/config/hubify.test.js +329 -0
  34. package/vendor/node_modules/@agent-recorder/cli/config/hubify.test.js.map +1 -0
  35. package/vendor/node_modules/@agent-recorder/cli/index.js +18 -3
  36. package/vendor/node_modules/@agent-recorder/cli/index.js.map +1 -1
  37. package/vendor/node_modules/@agent-recorder/core/claude-config.d.ts +32 -0
  38. package/vendor/node_modules/@agent-recorder/core/claude-config.d.ts.map +1 -0
  39. package/vendor/node_modules/@agent-recorder/core/claude-config.js +65 -0
  40. package/vendor/node_modules/@agent-recorder/core/claude-config.js.map +1 -0
  41. package/vendor/node_modules/@agent-recorder/core/config.d.ts +4 -0
  42. package/vendor/node_modules/@agent-recorder/core/config.d.ts.map +1 -1
  43. package/vendor/node_modules/@agent-recorder/core/config.js +6 -0
  44. package/vendor/node_modules/@agent-recorder/core/config.js.map +1 -1
  45. package/vendor/node_modules/@agent-recorder/core/db/events.d.ts +3 -0
  46. package/vendor/node_modules/@agent-recorder/core/db/events.d.ts.map +1 -1
  47. package/vendor/node_modules/@agent-recorder/core/db/events.js +8 -3
  48. package/vendor/node_modules/@agent-recorder/core/db/events.js.map +1 -1
  49. package/vendor/node_modules/@agent-recorder/core/db/events.test.js +34 -0
  50. package/vendor/node_modules/@agent-recorder/core/db/events.test.js.map +1 -1
  51. package/vendor/node_modules/@agent-recorder/core/index.d.ts +4 -1
  52. package/vendor/node_modules/@agent-recorder/core/index.d.ts.map +1 -1
  53. package/vendor/node_modules/@agent-recorder/core/index.js +4 -1
  54. package/vendor/node_modules/@agent-recorder/core/index.js.map +1 -1
  55. package/vendor/node_modules/@agent-recorder/core/migrations/006_add_upstream_key.sql +7 -0
  56. package/vendor/node_modules/@agent-recorder/core/providers/index.d.ts +9 -0
  57. package/vendor/node_modules/@agent-recorder/core/providers/index.d.ts.map +1 -0
  58. package/vendor/node_modules/@agent-recorder/core/providers/index.js +9 -0
  59. package/vendor/node_modules/@agent-recorder/core/providers/index.js.map +1 -0
  60. package/vendor/node_modules/@agent-recorder/core/providers/io.d.ts +36 -0
  61. package/vendor/node_modules/@agent-recorder/core/providers/io.d.ts.map +1 -0
  62. package/vendor/node_modules/@agent-recorder/core/providers/io.js +88 -0
  63. package/vendor/node_modules/@agent-recorder/core/providers/io.js.map +1 -0
  64. package/vendor/node_modules/@agent-recorder/core/providers/io.test.d.ts +5 -0
  65. package/vendor/node_modules/@agent-recorder/core/providers/io.test.d.ts.map +1 -0
  66. package/vendor/node_modules/@agent-recorder/core/providers/io.test.js +248 -0
  67. package/vendor/node_modules/@agent-recorder/core/providers/io.test.js.map +1 -0
  68. package/vendor/node_modules/@agent-recorder/core/providers/types.d.ts +36 -0
  69. package/vendor/node_modules/@agent-recorder/core/providers/types.d.ts.map +1 -0
  70. package/vendor/node_modules/@agent-recorder/core/providers/types.js +6 -0
  71. package/vendor/node_modules/@agent-recorder/core/providers/types.js.map +1 -0
  72. package/vendor/node_modules/@agent-recorder/core/types/events.d.ts +2 -0
  73. package/vendor/node_modules/@agent-recorder/core/types/events.d.ts.map +1 -1
  74. package/vendor/node_modules/@agent-recorder/core/wrap-utils.d.ts +42 -0
  75. package/vendor/node_modules/@agent-recorder/core/wrap-utils.d.ts.map +1 -0
  76. package/vendor/node_modules/@agent-recorder/core/wrap-utils.js +80 -0
  77. package/vendor/node_modules/@agent-recorder/core/wrap-utils.js.map +1 -0
  78. package/vendor/node_modules/@agent-recorder/service/index.d.ts.map +1 -1
  79. package/vendor/node_modules/@agent-recorder/service/index.js +19 -0
  80. package/vendor/node_modules/@agent-recorder/service/index.js.map +1 -1
  81. package/vendor/node_modules/@agent-recorder/service/mcp/auto-wrap-manager.d.ts +43 -0
  82. package/vendor/node_modules/@agent-recorder/service/mcp/auto-wrap-manager.d.ts.map +1 -0
  83. package/vendor/node_modules/@agent-recorder/service/mcp/auto-wrap-manager.js +221 -0
  84. package/vendor/node_modules/@agent-recorder/service/mcp/auto-wrap-manager.js.map +1 -0
  85. package/vendor/node_modules/@agent-recorder/service/mcp/hub.test.d.ts +6 -0
  86. package/vendor/node_modules/@agent-recorder/service/mcp/hub.test.d.ts.map +1 -0
  87. package/vendor/node_modules/@agent-recorder/service/mcp/hub.test.js +319 -0
  88. package/vendor/node_modules/@agent-recorder/service/mcp/hub.test.js.map +1 -0
  89. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.d.ts +1 -0
  90. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.d.ts.map +1 -1
  91. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.js +267 -17
  92. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.js.map +1 -1
  93. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.test.js +165 -0
  94. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.test.js.map +1 -1
  95. package/vendor/node_modules/@agent-recorder/service/mcp/recorder.d.ts +1 -0
  96. package/vendor/node_modules/@agent-recorder/service/mcp/recorder.d.ts.map +1 -1
  97. package/vendor/node_modules/@agent-recorder/service/mcp/recorder.js +5 -2
  98. package/vendor/node_modules/@agent-recorder/service/mcp/recorder.js.map +1 -1
  99. package/vendor/node_modules/@agent-recorder/service/routes/events.d.ts.map +1 -1
  100. package/vendor/node_modules/@agent-recorder/service/routes/events.js +1 -0
  101. package/vendor/node_modules/@agent-recorder/service/routes/events.js.map +1 -1
@@ -15,6 +15,7 @@ function rowToEvent(row) {
15
15
  skillName: row.skill_name,
16
16
  toolName: row.tool_name,
17
17
  mcpMethod: row.mcp_method,
18
+ upstreamKey: row.upstream_key,
18
19
  startedAt: row.started_at,
19
20
  endedAt: row.ended_at,
20
21
  status: row.status,
@@ -29,11 +30,11 @@ export function insertEvent(db, event) {
29
30
  const stmt = db.prepare(`
30
31
  INSERT INTO events (
31
32
  id, session_id, parent_event_id, sequence, event_type,
32
- agent_role, agent_name, skill_name, tool_name, mcp_method,
33
+ agent_role, agent_name, skill_name, tool_name, mcp_method, upstream_key,
33
34
  started_at, ended_at, status, input_json, output_json, error_category, created_at
34
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, datetime('now'))
35
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, datetime('now'))
35
36
  `);
36
- stmt.run(event.id, event.sessionId, event.parentEventId ?? null, event.sequence, event.eventType, event.agentRole, event.agentName, event.skillName ?? null, event.toolName ?? null, event.mcpMethod ?? null, event.startedAt, event.endedAt ?? null, event.status, event.inputJson ?? null, event.outputJson ?? null, event.errorCategory ?? null);
37
+ stmt.run(event.id, event.sessionId, event.parentEventId ?? null, event.sequence, event.eventType, event.agentRole, event.agentName, event.skillName ?? null, event.toolName ?? null, event.mcpMethod ?? null, event.upstreamKey ?? null, event.startedAt, event.endedAt ?? null, event.status, event.inputJson ?? null, event.outputJson ?? null, event.errorCategory ?? null);
37
38
  return getEventById(db, event.id);
38
39
  }
39
40
  /** Get event by ID */
@@ -88,6 +89,10 @@ export function getEventsBySessionFiltered(db, sessionId, options = {}) {
88
89
  conditions.push("error_category = ?");
89
90
  params.push(options.errorCategory);
90
91
  }
92
+ if (options.upstreamKey) {
93
+ conditions.push("upstream_key = ?");
94
+ params.push(options.upstreamKey);
95
+ }
91
96
  if (options.sinceSeq !== undefined) {
92
97
  conditions.push("sequence > ?");
93
98
  params.push(options.sinceSeq);
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/db/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/db/events.ts"],"names":[],"mappings":"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"}
@@ -52,6 +52,40 @@ describe("events", () => {
52
52
  expect(result2.toolName).toBe("session2-tool");
53
53
  });
54
54
  });
55
+ describe("upstream_key column", () => {
56
+ it("persists and retrieves upstreamKey correctly", () => {
57
+ const eventWithUpstream = insertEvent(db, {
58
+ id: randomUUID(),
59
+ sessionId,
60
+ sequence: 1,
61
+ eventType: "tool_call",
62
+ agentRole: "assistant",
63
+ agentName: "claude-code",
64
+ toolName: "test-tool",
65
+ mcpMethod: "tools/call",
66
+ upstreamKey: "amplitude",
67
+ startedAt: new Date().toISOString(),
68
+ status: "success",
69
+ });
70
+ expect(eventWithUpstream.upstreamKey).toBe("amplitude");
71
+ });
72
+ it("handles null upstreamKey correctly", () => {
73
+ const eventWithoutUpstream = insertEvent(db, {
74
+ id: randomUUID(),
75
+ sessionId,
76
+ sequence: 2,
77
+ eventType: "tool_call",
78
+ agentRole: "assistant",
79
+ agentName: "claude-code",
80
+ toolName: "test-tool",
81
+ mcpMethod: "tools/call",
82
+ upstreamKey: null,
83
+ startedAt: new Date().toISOString(),
84
+ status: "success",
85
+ });
86
+ expect(eventWithoutUpstream.upstreamKey).toBeNull();
87
+ });
88
+ });
55
89
  });
56
90
  /**
57
91
  * Helper to create a test event input.
@@ -1 +1 @@
1
- {"version":3,"file":"events.test.js","sourceRoot":"","sources":["../../src/db/events.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.test.js","sourceRoot":"","sources":["../../src/db/events.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,uBAAuB,EACvB,WAAW,EACX,sBAAsB,EACtB,aAAa,GAEd,MAAM,aAAa,CAAC;AAGrB,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,IAAI,EAAqB,CAAC;IAC1B,IAAI,SAAiB,CAAC;IAEtB,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,GAAG,kBAAkB,EAAE,CAAC;QAC1B,aAAa,CAAC,EAAE,EAAE,uBAAuB,EAAE,CAAC,CAAC;QAE7C,mBAAmB;QACnB,SAAS,GAAG,UAAU,EAAE,CAAC;QACzB,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,MAAM,GAAG,sBAAsB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;YAEzD,MAAM,MAAM,GAAG,sBAAsB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,yBAAyB;YACzB,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;YAClE,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;YACzD,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;YAClE,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;YAEzD,MAAM,MAAM,GAAG,sBAAsB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YAErD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,MAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,MAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,yBAAyB;YACzB,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;YAChC,aAAa,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;YAExD,oCAAoC;YACpC,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC;YAEzE,qCAAqC;YACrC,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC;YAE1E,MAAM,OAAO,GAAG,sBAAsB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,sBAAsB,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;YAEvD,MAAM,CAAC,OAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAChD,MAAM,CAAC,OAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,iBAAiB,GAAG,WAAW,CAAC,EAAE,EAAE;gBACxC,EAAE,EAAE,UAAU,EAAE;gBAChB,SAAS;gBACT,QAAQ,EAAE,CAAC;gBACX,SAAS,EAAE,WAAW;gBACtB,SAAS,EAAE,WAAW;gBACtB,SAAS,EAAE,aAAa;gBACxB,QAAQ,EAAE,WAAW;gBACrB,SAAS,EAAE,YAAY;gBACvB,WAAW,EAAE,WAAW;gBACxB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;YAEH,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,oBAAoB,GAAG,WAAW,CAAC,EAAE,EAAE;gBAC3C,EAAE,EAAE,UAAU,EAAE;gBAChB,SAAS;gBACT,QAAQ,EAAE,CAAC;gBACX,SAAS,EAAE,WAAW;gBACtB,SAAS,EAAE,WAAW;gBACtB,SAAS,EAAE,aAAa;gBACxB,QAAQ,EAAE,WAAW;gBACrB,SAAS,EAAE,YAAY;gBACvB,WAAW,EAAE,IAAI;gBACjB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;YAEH,MAAM,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH;;GAEG;AACH,SAAS,WAAW,CAClB,SAAiB,EACjB,QAAgB,EAChB,SAAsE,EACtE,QAAiB;IAEjB,OAAO;QACL,EAAE,EAAE,SAAS,SAAS,IAAI,QAAQ,EAAE;QACpC,SAAS;QACT,QAAQ;QACR,SAAS;QACT,SAAS,EAAE,MAAM;QACjB,SAAS,EAAE,YAAY;QACvB,QAAQ,EAAE,QAAQ,IAAI,IAAI;QAC1B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,MAAM,EAAE,SAAS;KAClB,CAAC;AACJ,CAAC"}
@@ -7,7 +7,10 @@
7
7
  export * from "./types/index.js";
8
8
  export * from "./db/index.js";
9
9
  export * from "./utils/index.js";
10
- export { loadConfig, type Config } from "./config.js";
10
+ export { loadConfig, getDefaultUpstreamsPath, type Config } from "./config.js";
11
11
  export * from "./daemon-paths.js";
12
12
  export * from "./lockfile.js";
13
+ export * from "./wrap-utils.js";
14
+ export * from "./claude-config.js";
15
+ export * from "./providers/index.js";
13
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AACtD,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAC/E,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC"}
@@ -7,7 +7,10 @@
7
7
  export * from "./types/index.js";
8
8
  export * from "./db/index.js";
9
9
  export * from "./utils/index.js";
10
- export { loadConfig } from "./config.js";
10
+ export { loadConfig, getDefaultUpstreamsPath } from "./config.js";
11
11
  export * from "./daemon-paths.js";
12
12
  export * from "./lockfile.js";
13
+ export * from "./wrap-utils.js";
14
+ export * from "./claude-config.js";
15
+ export * from "./providers/index.js";
13
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAe,MAAM,aAAa,CAAC;AACtD,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAe,MAAM,aAAa,CAAC;AAC/E,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,7 @@
1
+ -- Add upstream_key column for router mode
2
+ -- This column tracks which upstream MCP server a tool call was routed to
3
+
4
+ ALTER TABLE events ADD COLUMN upstream_key TEXT;
5
+
6
+ -- Index for filtering by upstream
7
+ CREATE INDEX IF NOT EXISTS idx_events_upstream_key ON events(upstream_key);
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @agent-recorder/core/providers
3
+ *
4
+ * Providers registry for Agent Recorder Hub.
5
+ * Types and I/O utilities for managing downstream MCP server providers.
6
+ */
7
+ export * from "./types.js";
8
+ export * from "./io.js";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @agent-recorder/core/providers
3
+ *
4
+ * Providers registry for Agent Recorder Hub.
5
+ * Types and I/O utilities for managing downstream MCP server providers.
6
+ */
7
+ export * from "./types.js";
8
+ export * from "./io.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * I/O utilities for providers registry.
3
+ * Handles reading/writing providers.json file.
4
+ */
5
+ import type { ProvidersFile, Provider } from "./types.js";
6
+ /**
7
+ * Get the default path for providers.json.
8
+ * Returns ~/.agent-recorder/providers.json
9
+ */
10
+ export declare function getDefaultProvidersPath(): string;
11
+ /**
12
+ * Read providers file from disk.
13
+ * Returns empty providers list if file doesn't exist or is invalid.
14
+ *
15
+ * @param filePath - Path to providers.json (defaults to ~/.agent-recorder/providers.json)
16
+ */
17
+ export declare function readProvidersFile(filePath?: string): ProvidersFile;
18
+ /**
19
+ * Write providers file to disk.
20
+ * Creates parent directory if needed.
21
+ * Writes pretty-printed JSON with 2-space indent.
22
+ *
23
+ * @param file - Providers file to write
24
+ * @param filePath - Path to providers.json (defaults to ~/.agent-recorder/providers.json)
25
+ */
26
+ export declare function writeProvidersFile(file: ProvidersFile, filePath?: string): void;
27
+ /**
28
+ * Upsert providers into a providers file.
29
+ * Merges providers by provider.id - replaces if exists, adds if new.
30
+ *
31
+ * @param file - Existing providers file
32
+ * @param providers - Providers to upsert
33
+ * @returns New providers file with merged providers
34
+ */
35
+ export declare function upsertProviders(file: ProvidersFile, providers: Provider[]): ProvidersFile;
36
+ //# sourceMappingURL=io.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../../src/providers/io.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE1D;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,aAAa,CAgClE;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,aAAa,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,IAAI,CAYN;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,QAAQ,EAAE,GACpB,aAAa,CAoBf"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * I/O utilities for providers registry.
3
+ * Handles reading/writing providers.json file.
4
+ */
5
+ import * as fs from "node:fs";
6
+ import * as path from "node:path";
7
+ import * as os from "node:os";
8
+ /**
9
+ * Get the default path for providers.json.
10
+ * Returns ~/.agent-recorder/providers.json
11
+ */
12
+ export function getDefaultProvidersPath() {
13
+ return path.join(os.homedir(), ".agent-recorder", "providers.json");
14
+ }
15
+ /**
16
+ * Read providers file from disk.
17
+ * Returns empty providers list if file doesn't exist or is invalid.
18
+ *
19
+ * @param filePath - Path to providers.json (defaults to ~/.agent-recorder/providers.json)
20
+ */
21
+ export function readProvidersFile(filePath) {
22
+ const targetPath = filePath ?? getDefaultProvidersPath();
23
+ try {
24
+ if (!fs.existsSync(targetPath)) {
25
+ return { version: 1, providers: [] };
26
+ }
27
+ const content = fs.readFileSync(targetPath, "utf-8");
28
+ const parsed = JSON.parse(content);
29
+ // Validate version and providers array
30
+ if (typeof parsed !== "object" ||
31
+ parsed === null ||
32
+ parsed.version !== 1 ||
33
+ !Array.isArray(parsed.providers)) {
34
+ console.warn(`[Providers] Invalid file format at ${targetPath}, returning empty`);
35
+ return { version: 1, providers: [] };
36
+ }
37
+ return parsed;
38
+ }
39
+ catch (error) {
40
+ console.warn(`[Providers] Failed to read ${targetPath}:`, error instanceof Error ? error.message : "Unknown error");
41
+ return { version: 1, providers: [] };
42
+ }
43
+ }
44
+ /**
45
+ * Write providers file to disk.
46
+ * Creates parent directory if needed.
47
+ * Writes pretty-printed JSON with 2-space indent.
48
+ *
49
+ * @param file - Providers file to write
50
+ * @param filePath - Path to providers.json (defaults to ~/.agent-recorder/providers.json)
51
+ */
52
+ export function writeProvidersFile(file, filePath) {
53
+ const targetPath = filePath ?? getDefaultProvidersPath();
54
+ const dir = path.dirname(targetPath);
55
+ // Create directory if it doesn't exist
56
+ if (!fs.existsSync(dir)) {
57
+ fs.mkdirSync(dir, { recursive: true });
58
+ }
59
+ // Write pretty-printed JSON with 2-space indent
60
+ const content = JSON.stringify(file, null, 2) + "\n";
61
+ fs.writeFileSync(targetPath, content, "utf-8");
62
+ }
63
+ /**
64
+ * Upsert providers into a providers file.
65
+ * Merges providers by provider.id - replaces if exists, adds if new.
66
+ *
67
+ * @param file - Existing providers file
68
+ * @param providers - Providers to upsert
69
+ * @returns New providers file with merged providers
70
+ */
71
+ export function upsertProviders(file, providers) {
72
+ const existingMap = new Map();
73
+ // Build map of existing providers
74
+ for (const provider of file.providers) {
75
+ existingMap.set(provider.id, provider);
76
+ }
77
+ // Upsert new providers
78
+ for (const provider of providers) {
79
+ existingMap.set(provider.id, provider);
80
+ }
81
+ // Convert back to array
82
+ const mergedProviders = Array.from(existingMap.values());
83
+ return {
84
+ version: 1,
85
+ providers: mergedProviders,
86
+ };
87
+ }
88
+ //# sourceMappingURL=io.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.js","sourceRoot":"","sources":["../../src/providers/io.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for providers I/O utilities.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=io.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.test.d.ts","sourceRoot":"","sources":["../../src/providers/io.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,248 @@
1
+ /**
2
+ * Tests for providers I/O utilities.
3
+ */
4
+ import { describe, it, expect, beforeEach, afterEach } from "vitest";
5
+ import { homedir } from "node:os";
6
+ import { join } from "node:path";
7
+ import * as fs from "node:fs";
8
+ import { getDefaultProvidersPath, readProvidersFile, writeProvidersFile, upsertProviders, } from "./io.js";
9
+ describe("Providers I/O", () => {
10
+ const testDir = join(homedir(), ".agent-recorder-test");
11
+ const testFilePath = join(testDir, "providers-test.json");
12
+ beforeEach(() => {
13
+ // Clean up test directory
14
+ if (fs.existsSync(testDir)) {
15
+ fs.rmSync(testDir, { recursive: true, force: true });
16
+ }
17
+ });
18
+ afterEach(() => {
19
+ // Clean up test directory
20
+ if (fs.existsSync(testDir)) {
21
+ fs.rmSync(testDir, { recursive: true, force: true });
22
+ }
23
+ });
24
+ describe("getDefaultProvidersPath", () => {
25
+ it("returns path in user home directory", () => {
26
+ const providersPath = getDefaultProvidersPath();
27
+ const expected = join(homedir(), ".agent-recorder", "providers.json");
28
+ expect(providersPath).toBe(expected);
29
+ });
30
+ });
31
+ describe("readProvidersFile", () => {
32
+ it("returns empty providers when file does not exist", () => {
33
+ const result = readProvidersFile(testFilePath);
34
+ expect(result).toEqual({
35
+ version: 1,
36
+ providers: [],
37
+ });
38
+ });
39
+ it("returns empty providers when file is invalid JSON", () => {
40
+ fs.mkdirSync(testDir, { recursive: true });
41
+ fs.writeFileSync(testFilePath, "invalid json", "utf-8");
42
+ const result = readProvidersFile(testFilePath);
43
+ expect(result).toEqual({
44
+ version: 1,
45
+ providers: [],
46
+ });
47
+ });
48
+ it("returns empty providers when file has wrong version", () => {
49
+ fs.mkdirSync(testDir, { recursive: true });
50
+ fs.writeFileSync(testFilePath, JSON.stringify({ version: 2, providers: [] }), "utf-8");
51
+ const result = readProvidersFile(testFilePath);
52
+ expect(result).toEqual({
53
+ version: 1,
54
+ providers: [],
55
+ });
56
+ });
57
+ it("returns empty providers when providers is not an array", () => {
58
+ fs.mkdirSync(testDir, { recursive: true });
59
+ fs.writeFileSync(testFilePath, JSON.stringify({ version: 1, providers: "not-array" }), "utf-8");
60
+ const result = readProvidersFile(testFilePath);
61
+ expect(result).toEqual({
62
+ version: 1,
63
+ providers: [],
64
+ });
65
+ });
66
+ it("reads valid providers file", () => {
67
+ const file = {
68
+ version: 1,
69
+ providers: [
70
+ {
71
+ id: "test-http",
72
+ type: "http",
73
+ url: "http://localhost:3000",
74
+ headers: { Authorization: "Bearer token" },
75
+ },
76
+ {
77
+ id: "test-stdio",
78
+ type: "stdio",
79
+ command: "npx",
80
+ args: ["@playwright/mcp"],
81
+ env: { NODE_ENV: "test" },
82
+ },
83
+ ],
84
+ };
85
+ fs.mkdirSync(testDir, { recursive: true });
86
+ fs.writeFileSync(testFilePath, JSON.stringify(file), "utf-8");
87
+ const result = readProvidersFile(testFilePath);
88
+ expect(result).toEqual(file);
89
+ });
90
+ });
91
+ describe("writeProvidersFile", () => {
92
+ it("creates directory if it does not exist", () => {
93
+ const file = {
94
+ version: 1,
95
+ providers: [],
96
+ };
97
+ writeProvidersFile(file, testFilePath);
98
+ expect(fs.existsSync(testDir)).toBe(true);
99
+ expect(fs.existsSync(testFilePath)).toBe(true);
100
+ });
101
+ it("writes pretty-printed JSON with 2-space indent", () => {
102
+ const file = {
103
+ version: 1,
104
+ providers: [
105
+ {
106
+ id: "test",
107
+ type: "http",
108
+ url: "http://localhost:3000",
109
+ },
110
+ ],
111
+ };
112
+ writeProvidersFile(file, testFilePath);
113
+ const content = fs.readFileSync(testFilePath, "utf-8");
114
+ const expected = JSON.stringify(file, null, 2) + "\n";
115
+ expect(content).toBe(expected);
116
+ });
117
+ it("writes and reads roundtrip correctly", () => {
118
+ const file = {
119
+ version: 1,
120
+ providers: [
121
+ {
122
+ id: "http-provider",
123
+ type: "http",
124
+ url: "http://localhost:3000",
125
+ headers: { "X-Custom": "value" },
126
+ },
127
+ {
128
+ id: "stdio-provider",
129
+ type: "stdio",
130
+ command: "node",
131
+ args: ["server.js", "--port", "8080"],
132
+ env: { DEBUG: "1" },
133
+ },
134
+ ],
135
+ };
136
+ writeProvidersFile(file, testFilePath);
137
+ const result = readProvidersFile(testFilePath);
138
+ expect(result).toEqual(file);
139
+ });
140
+ });
141
+ describe("upsertProviders", () => {
142
+ it("adds new providers to empty file", () => {
143
+ const file = {
144
+ version: 1,
145
+ providers: [],
146
+ };
147
+ const newProviders = [
148
+ {
149
+ id: "new-provider",
150
+ type: "http",
151
+ url: "http://localhost:4000",
152
+ },
153
+ ];
154
+ const result = upsertProviders(file, newProviders);
155
+ expect(result.version).toBe(1);
156
+ expect(result.providers).toHaveLength(1);
157
+ expect(result.providers[0]).toEqual(newProviders[0]);
158
+ });
159
+ it("replaces existing provider with same id", () => {
160
+ const file = {
161
+ version: 1,
162
+ providers: [
163
+ {
164
+ id: "test",
165
+ type: "http",
166
+ url: "http://localhost:3000",
167
+ },
168
+ ],
169
+ };
170
+ const updatedProviders = [
171
+ {
172
+ id: "test",
173
+ type: "http",
174
+ url: "http://localhost:5000",
175
+ headers: { "X-New": "header" },
176
+ },
177
+ ];
178
+ const result = upsertProviders(file, updatedProviders);
179
+ expect(result.providers).toHaveLength(1);
180
+ expect(result.providers[0]).toEqual(updatedProviders[0]);
181
+ expect(result.providers[0].url).toBe("http://localhost:5000");
182
+ });
183
+ it("merges new and existing providers", () => {
184
+ const file = {
185
+ version: 1,
186
+ providers: [
187
+ {
188
+ id: "existing",
189
+ type: "http",
190
+ url: "http://localhost:3000",
191
+ },
192
+ ],
193
+ };
194
+ const newProviders = [
195
+ {
196
+ id: "new",
197
+ type: "stdio",
198
+ command: "npx",
199
+ args: ["@playwright/mcp"],
200
+ },
201
+ ];
202
+ const result = upsertProviders(file, newProviders);
203
+ expect(result.providers).toHaveLength(2);
204
+ expect(result.providers.find((p) => p.id === "existing")).toBeDefined();
205
+ expect(result.providers.find((p) => p.id === "new")).toBeDefined();
206
+ });
207
+ it("handles multiple upserts correctly", () => {
208
+ const file = {
209
+ version: 1,
210
+ providers: [
211
+ {
212
+ id: "provider-1",
213
+ type: "http",
214
+ url: "http://localhost:3000",
215
+ },
216
+ ],
217
+ };
218
+ const upsert1 = [
219
+ {
220
+ id: "provider-1",
221
+ type: "http",
222
+ url: "http://localhost:4000",
223
+ },
224
+ {
225
+ id: "provider-2",
226
+ type: "http",
227
+ url: "http://localhost:5000",
228
+ },
229
+ ];
230
+ const result1 = upsertProviders(file, upsert1);
231
+ expect(result1.providers).toHaveLength(2);
232
+ const upsert2 = [
233
+ {
234
+ id: "provider-3",
235
+ type: "stdio",
236
+ command: "node",
237
+ args: ["server.js"],
238
+ },
239
+ ];
240
+ const result2 = upsertProviders(result1, upsert2);
241
+ expect(result2.providers).toHaveLength(3);
242
+ expect(result2.providers.find((p) => p.id === "provider-1")).toBeDefined();
243
+ expect(result2.providers.find((p) => p.id === "provider-2")).toBeDefined();
244
+ expect(result2.providers.find((p) => p.id === "provider-3")).toBeDefined();
245
+ });
246
+ });
247
+ });
248
+ //# sourceMappingURL=io.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.test.js","sourceRoot":"","sources":["../../src/providers/io.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Provider types for Agent Recorder Hub.
3
+ * Providers represent downstream MCP servers that the hub aggregates.
4
+ */
5
+ /**
6
+ * HTTP-based MCP provider (local or remote server via URL).
7
+ */
8
+ export interface HttpProvider {
9
+ id: string;
10
+ type: "http";
11
+ url: string;
12
+ headers?: Record<string, string>;
13
+ }
14
+ /**
15
+ * Stdio-based MCP provider (process spawned via command).
16
+ * Runtime spawning not implemented yet - type system only.
17
+ */
18
+ export interface StdioProvider {
19
+ id: string;
20
+ type: "stdio";
21
+ command: string;
22
+ args?: string[];
23
+ env?: Record<string, string>;
24
+ }
25
+ /**
26
+ * Union type for all supported provider kinds.
27
+ */
28
+ export type Provider = HttpProvider | StdioProvider;
29
+ /**
30
+ * Providers file schema (stable, versioned).
31
+ */
32
+ export interface ProvidersFile {
33
+ version: 1;
34
+ providers: Provider[];
35
+ }
36
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,aAAa,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB"}