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
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Doctor command - comprehensive health check and configuration diagnostics.
3
3
  */
4
- import { loadConfig, readPidFile, isProcessRunning, } from "@agent-recorder/core";
4
+ import { loadConfig, readPidFile, isProcessRunning, readProvidersFile, getDefaultProvidersPath, } from "@agent-recorder/core";
5
5
  import { detectClaudeConfig, readJsonFile, getMcpServerEntry, formatPath, getV2ConfigPath, getLegacyConfigPath, } from "../config/claude-paths.js";
6
6
  /**
7
7
  * Format uptime in human-readable form.
@@ -91,6 +91,43 @@ async function categorizeError(url) {
91
91
  return "unreachable";
92
92
  }
93
93
  }
94
+ /**
95
+ * Check if an HTTP provider is reachable by calling tools/list.
96
+ */
97
+ async function checkHttpProvider(provider) {
98
+ try {
99
+ const response = await fetch(provider.url, {
100
+ method: "POST",
101
+ headers: {
102
+ "Content-Type": "application/json",
103
+ Accept: "application/json",
104
+ ...(provider.headers ?? {}),
105
+ },
106
+ body: JSON.stringify({
107
+ jsonrpc: "2.0",
108
+ method: "tools/list",
109
+ id: 1,
110
+ }),
111
+ signal: AbortSignal.timeout(3000),
112
+ });
113
+ return response.ok;
114
+ }
115
+ catch {
116
+ return false;
117
+ }
118
+ }
119
+ /**
120
+ * Check if Claude config is in hubify mode (only agent-recorder entry).
121
+ */
122
+ function isHubified(configData) {
123
+ if (!configData || typeof configData !== "object")
124
+ return false;
125
+ const config = configData;
126
+ if (!config.mcpServers || typeof config.mcpServers !== "object")
127
+ return false;
128
+ const keys = Object.keys(config.mcpServers);
129
+ return keys.length === 1 && keys[0] === "agent-recorder";
130
+ }
94
131
  export async function doctorCommand() {
95
132
  const config = loadConfig();
96
133
  const restBaseUrl = `http://127.0.0.1:${config.listenPort}`;
@@ -178,30 +215,75 @@ export async function doctorCommand() {
178
215
  }
179
216
  }
180
217
  console.log("");
181
- // === DOWNSTREAM MCP ===
182
- console.log("Downstream MCP");
183
- console.log("==============");
184
- if (!config.downstreamMcpUrl) {
185
- console.log("Configured: not set");
186
- console.log(" (proxy will return 503 for MCP requests)");
187
- suggestions.push("Set AR_DOWNSTREAM_MCP_URL environment variable");
188
- suggestions.push("Or test with: agent-recorder mock-mcp --port 9999");
218
+ // === HUB MODE ===
219
+ console.log("Hub Mode");
220
+ console.log("========");
221
+ const providersPath = getDefaultProvidersPath();
222
+ let providersFile;
223
+ try {
224
+ providersFile = readProvidersFile(providersPath);
225
+ }
226
+ catch {
227
+ providersFile = null;
228
+ }
229
+ const httpProviders = providersFile?.providers.filter((p) => p.type === "http") ?? [];
230
+ const hubEnabled = httpProviders.length > 0;
231
+ console.log(`Status: ${hubEnabled ? "enabled" : "disabled"}`);
232
+ if (hubEnabled) {
233
+ console.log(`Providers: ${formatPath(providersPath)}`);
234
+ console.log(`Total: ${providersFile.providers.length}`);
235
+ console.log(`HTTP: ${httpProviders.length}`);
236
+ // Check reachability of HTTP providers
237
+ const reachabilityResults = await Promise.all(httpProviders.map((p) => checkHttpProvider(p)));
238
+ const reachableCount = reachabilityResults.filter((r) => r).length;
239
+ console.log(`Reachable: ${reachableCount}/${httpProviders.length}`);
240
+ if (reachableCount < httpProviders.length) {
241
+ hasErrors = true;
242
+ suggestions.push("Check unreachable HTTP providers (see providers.json)");
243
+ }
244
+ // Check if Claude config is hubified
245
+ if (claudeConfig.kind !== "none" && claudeConfig.path) {
246
+ const configData = readJsonFile(claudeConfig.path);
247
+ if (configData && !isHubified(configData)) {
248
+ console.log("Claude Config: not hubified");
249
+ suggestions.push("Run: agent-recorder install (or configure claude --hubify)");
250
+ }
251
+ }
189
252
  }
190
253
  else {
191
- console.log(`Configured: ${config.downstreamMcpUrl}`);
192
- const errorType = await categorizeError(config.downstreamMcpUrl);
193
- if (errorType === "ok") {
194
- console.log("Reachable: \u2713");
254
+ console.log(" (no HTTP providers configured)");
255
+ if (claudeConfig.kind !== "none") {
256
+ suggestions.push("Run: agent-recorder install to set up hub mode");
257
+ }
258
+ }
259
+ console.log("");
260
+ // === DOWNSTREAM MCP ===
261
+ // Only show this section if hub mode is disabled (legacy mode)
262
+ if (!hubEnabled) {
263
+ console.log("Downstream MCP (Legacy Mode)");
264
+ console.log("=============================");
265
+ if (!config.downstreamMcpUrl) {
266
+ console.log("Configured: not set");
267
+ console.log(" (proxy will return 503 for MCP requests)");
268
+ suggestions.push("Set AR_DOWNSTREAM_MCP_URL environment variable");
269
+ suggestions.push("Or test with: agent-recorder mock-mcp --port 9999");
195
270
  }
196
271
  else {
197
- console.log(`Reachable: \u2717 (${errorType})`);
198
- hasErrors = true;
199
- if (errorType === "connection refused") {
200
- suggestions.push("Check if downstream MCP server is running");
272
+ console.log(`Configured: ${config.downstreamMcpUrl}`);
273
+ const errorType = await categorizeError(config.downstreamMcpUrl);
274
+ if (errorType === "ok") {
275
+ console.log("Reachable: \u2713");
276
+ }
277
+ else {
278
+ console.log(`Reachable: \u2717 (${errorType})`);
279
+ hasErrors = true;
280
+ if (errorType === "connection refused") {
281
+ suggestions.push("Check if downstream MCP server is running");
282
+ }
201
283
  }
202
284
  }
285
+ console.log("");
203
286
  }
204
- console.log("");
205
287
  // === RECORDING HEALTH ===
206
288
  console.log("Recording");
207
289
  console.log("=========");
@@ -218,7 +300,19 @@ export async function doctorCommand() {
218
300
  // Get latest tool_call
219
301
  const latestEvent = await fetchJson(`${restBaseUrl}/api/sessions/${currentSession.id}/events/latest-tool-call`);
220
302
  if (latestEvent) {
221
- const name = latestEvent.mcpMethod || latestEvent.toolName || "unknown";
303
+ const parts = [];
304
+ // Show provider if available (hub mode)
305
+ if (latestEvent.upstreamKey) {
306
+ parts.push(latestEvent.upstreamKey);
307
+ }
308
+ // Show tool name
309
+ if (latestEvent.toolName) {
310
+ parts.push(latestEvent.toolName);
311
+ }
312
+ else if (latestEvent.mcpMethod) {
313
+ parts.push(latestEvent.mcpMethod);
314
+ }
315
+ const name = parts.length > 0 ? parts.join(".") : "unknown";
222
316
  console.log(`Last tool_call: ${formatTimeAgo(latestEvent.startedAt)} (${name})`);
223
317
  }
224
318
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for doctor command hub mode integration.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=doctor.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.test.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Tests for doctor command hub mode integration.
3
+ */
4
+ import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
5
+ import { doctorCommand } from "./doctor.js";
6
+ import * as fs from "node:fs";
7
+ import * as os from "node:os";
8
+ import * as path from "node:path";
9
+ describe("Doctor Command - Hub Mode", () => {
10
+ let tempDir;
11
+ let originalHome;
12
+ let consoleLogSpy;
13
+ beforeEach(() => {
14
+ // Create temp directory to act as home
15
+ tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "ar-doctor-test-"));
16
+ originalHome = process.env.HOME || "";
17
+ process.env.HOME = tempDir;
18
+ // Spy on console.log to capture output
19
+ consoleLogSpy = vi.spyOn(console, "log").mockImplementation(() => { });
20
+ // Create .agent-recorder directory
21
+ const dataDir = path.join(tempDir, ".agent-recorder");
22
+ fs.mkdirSync(dataDir, { recursive: true });
23
+ });
24
+ afterEach(() => {
25
+ // Restore original HOME
26
+ process.env.HOME = originalHome;
27
+ // Restore console.log
28
+ consoleLogSpy.mockRestore();
29
+ // Cleanup temp directory
30
+ if (fs.existsSync(tempDir)) {
31
+ fs.rmSync(tempDir, { recursive: true, force: true });
32
+ }
33
+ });
34
+ it("shows hub mode disabled when no providers exist", async () => {
35
+ // Run doctor command (will exit with error code, but we capture output)
36
+ try {
37
+ await doctorCommand();
38
+ }
39
+ catch {
40
+ // Expected to fail since daemon isn't running
41
+ }
42
+ // Get all console.log calls
43
+ const output = consoleLogSpy.mock.calls.map((call) => call[0]).join("\n");
44
+ // Verify hub mode section exists
45
+ expect(output).toContain("Hub Mode");
46
+ expect(output).toContain("Status: disabled");
47
+ expect(output).toContain("(no HTTP providers configured)");
48
+ });
49
+ it("shows hub mode enabled when HTTP providers exist", async () => {
50
+ // Create providers.json with HTTP providers
51
+ const dataDir = path.join(tempDir, ".agent-recorder");
52
+ const providersPath = path.join(dataDir, "providers.json");
53
+ const providersData = {
54
+ version: 1,
55
+ providers: [
56
+ {
57
+ id: "github",
58
+ type: "http",
59
+ url: "http://127.0.0.1:9999/",
60
+ },
61
+ {
62
+ id: "playwright",
63
+ type: "stdio",
64
+ command: "npx",
65
+ args: ["-y", "@playwright/mcp"],
66
+ },
67
+ ],
68
+ };
69
+ fs.writeFileSync(providersPath, JSON.stringify(providersData, null, 2));
70
+ // Run doctor command
71
+ try {
72
+ await doctorCommand();
73
+ }
74
+ catch {
75
+ // Expected to fail since daemon isn't running
76
+ }
77
+ // Get all console.log calls
78
+ const output = consoleLogSpy.mock.calls.map((call) => call[0]).join("\n");
79
+ // Verify hub mode section shows enabled
80
+ expect(output).toContain("Hub Mode");
81
+ expect(output).toContain("Status: enabled");
82
+ expect(output).toContain("Total: 2");
83
+ expect(output).toContain("HTTP: 1");
84
+ expect(output).toContain("Reachable: 0/1"); // Provider not actually running
85
+ });
86
+ it("suggests hubify when Claude config exists but is not hubified", async () => {
87
+ // Create providers.json
88
+ const dataDir = path.join(tempDir, ".agent-recorder");
89
+ const providersPath = path.join(dataDir, "providers.json");
90
+ fs.writeFileSync(providersPath, JSON.stringify({
91
+ version: 1,
92
+ providers: [
93
+ { id: "github", type: "http", url: "http://127.0.0.1:9999/" },
94
+ ],
95
+ }));
96
+ // Create non-hubified Claude config
97
+ const claudeDir = path.join(tempDir, ".claude");
98
+ fs.mkdirSync(claudeDir, { recursive: true });
99
+ const claudeConfigPath = path.join(claudeDir, "settings.json");
100
+ fs.writeFileSync(claudeConfigPath, JSON.stringify({
101
+ mcpServers: {
102
+ github: { url: "http://127.0.0.1:3000/" },
103
+ playwright: { command: "npx", args: ["@playwright/mcp"] },
104
+ },
105
+ }));
106
+ // Run doctor command
107
+ try {
108
+ await doctorCommand();
109
+ }
110
+ catch {
111
+ // Expected to fail
112
+ }
113
+ // Get all console.log calls
114
+ const output = consoleLogSpy.mock.calls.map((call) => call[0]).join("\n");
115
+ // Verify it shows not hubified
116
+ expect(output).toContain("Claude Config: not hubified");
117
+ expect(output).toContain("Suggested Actions");
118
+ expect(output).toContain("install (or configure claude --hubify)");
119
+ });
120
+ it("does not suggest hubify when Claude config is hubified", async () => {
121
+ // Create providers.json
122
+ const dataDir = path.join(tempDir, ".agent-recorder");
123
+ const providersPath = path.join(dataDir, "providers.json");
124
+ fs.writeFileSync(providersPath, JSON.stringify({
125
+ version: 1,
126
+ providers: [
127
+ { id: "github", type: "http", url: "http://127.0.0.1:9999/" },
128
+ ],
129
+ }));
130
+ // Create hubified Claude config (only agent-recorder entry)
131
+ const claudeDir = path.join(tempDir, ".claude");
132
+ fs.mkdirSync(claudeDir, { recursive: true });
133
+ const claudeConfigPath = path.join(claudeDir, "settings.json");
134
+ fs.writeFileSync(claudeConfigPath, JSON.stringify({
135
+ mcpServers: {
136
+ "agent-recorder": { url: "http://127.0.0.1:8788/" },
137
+ },
138
+ }));
139
+ // Run doctor command
140
+ try {
141
+ await doctorCommand();
142
+ }
143
+ catch {
144
+ // Expected to fail
145
+ }
146
+ // Get all console.log calls
147
+ const output = consoleLogSpy.mock.calls.map((call) => call[0]).join("\n");
148
+ // Verify it does NOT show "not hubified"
149
+ expect(output).not.toContain("Claude Config: not hubified");
150
+ });
151
+ });
152
+ //# sourceMappingURL=doctor.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.test.js","sourceRoot":"","sources":["../../src/commands/doctor.test.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,19 @@
1
1
  /**
2
2
  * Install command - set up ~/.agent-recorder/ and print configuration.
3
3
  * This command is idempotent - it won't overwrite existing files.
4
+ * Automatically configures Claude Code with hubify mode unless --no-configure is specified.
4
5
  */
6
+ export interface InstallOptions {
7
+ /** Skip automatic Claude Code configuration (default: false) */
8
+ noConfigure?: boolean;
9
+ }
5
10
  /**
6
11
  * Install Agent Recorder - create data directory and env file template.
7
12
  * This command is idempotent:
8
13
  * - Creates ~/.agent-recorder/ if it doesn't exist
9
14
  * - Creates ~/.agent-recorder/.env ONLY if it doesn't exist
10
15
  * - Never overwrites user files
16
+ * - Automatically configures Claude Code with hubify mode unless --no-configure
11
17
  */
12
- export declare function installCommand(): Promise<void>;
18
+ export declare function installCommand(options?: InstallOptions): Promise<void>;
13
19
  //# sourceMappingURL=install.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyBH;;;;;;GAMG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA4CpD"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAsCH,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAsDf"}
@@ -1,11 +1,14 @@
1
1
  /**
2
2
  * Install command - set up ~/.agent-recorder/ and print configuration.
3
3
  * This command is idempotent - it won't overwrite existing files.
4
+ * Automatically configures Claude Code with hubify mode unless --no-configure is specified.
4
5
  */
5
6
  import { existsSync, mkdirSync, writeFileSync } from "node:fs";
6
7
  import { homedir } from "node:os";
7
8
  import { join } from "node:path";
8
- import { loadConfig } from "@agent-recorder/core";
9
+ import { loadConfig, readProvidersFile, writeProvidersFile, getDefaultProvidersPath, } from "@agent-recorder/core";
10
+ import { detectClaudeConfig, readJsonFile, writeJsonFileAtomic, createBackup, formatPath, } from "../config/claude-paths.js";
11
+ import { hubifyClaudeConfig, mergeProviders } from "../config/hubify.js";
9
12
  /** Default .env file template */
10
13
  const ENV_TEMPLATE = `# Agent Recorder Configuration
11
14
  # See docs/bootstrap.md for more options
@@ -29,11 +32,13 @@ AR_MCP_PROXY_PORT=8788
29
32
  * - Creates ~/.agent-recorder/ if it doesn't exist
30
33
  * - Creates ~/.agent-recorder/.env ONLY if it doesn't exist
31
34
  * - Never overwrites user files
35
+ * - Automatically configures Claude Code with hubify mode unless --no-configure
32
36
  */
33
- export async function installCommand() {
37
+ export async function installCommand(options = {}) {
34
38
  const config = loadConfig();
35
39
  const dataDir = join(homedir(), ".agent-recorder");
36
40
  const envFile = join(dataDir, ".env");
41
+ const upstreamsFile = join(dataDir, "upstreams.json");
37
42
  // Create data directory if missing
38
43
  if (!existsSync(dataDir)) {
39
44
  mkdirSync(dataDir, { recursive: true });
@@ -50,6 +55,25 @@ export async function installCommand() {
50
55
  else {
51
56
  console.log(`Already exists: ${envFile}`);
52
57
  }
58
+ // Create upstreams.json ONLY if it doesn't exist
59
+ if (!existsSync(upstreamsFile)) {
60
+ writeFileSync(upstreamsFile, "{}\n");
61
+ console.log(`Created: ${upstreamsFile}`);
62
+ }
63
+ else {
64
+ console.log(`Already exists: ${upstreamsFile}`);
65
+ }
66
+ console.log("");
67
+ // Automatically configure Claude Code with hubify mode unless --no-configure
68
+ if (!options.noConfigure) {
69
+ await runAutoHubify(config);
70
+ }
71
+ else {
72
+ console.log("Skipped Claude Code configuration (--no-configure specified)");
73
+ console.log("");
74
+ console.log("To configure Claude Code manually, run:");
75
+ console.log(" agent-recorder configure claude --hubify");
76
+ }
53
77
  // Print next steps
54
78
  console.log(`
55
79
  Agent Recorder installed!
@@ -57,21 +81,81 @@ Agent Recorder installed!
57
81
  Data directory: ${dataDir}
58
82
  Env file: ${envFile}
59
83
 
60
- Claude Code v2 (recommended):
61
- Add to ~/.claude/settings.json:
62
-
63
- {
64
- "mcpServers": {
65
- "agent-recorder": {
66
- "url": "http://127.0.0.1:${config.mcpProxyPort}/"
67
- }
68
- }
69
- }
70
-
71
84
  Next steps:
72
85
  1. Edit ${envFile} if needed
73
86
  2. Start the daemon: agent-recorder start --env-file ${envFile}
74
- 3. Restart Claude Code to connect
87
+ 3. Restart Claude Code to apply changes
75
88
  `);
76
89
  }
90
+ /**
91
+ * Automatically configure Claude Code with hubify mode.
92
+ * This is the equivalent of running: agent-recorder configure claude --hubify
93
+ */
94
+ async function runAutoHubify(config) {
95
+ const expectedUrl = `http://127.0.0.1:${config.mcpProxyPort}/`;
96
+ // Detect Claude config
97
+ const detected = detectClaudeConfig();
98
+ if (detected.kind === "none" || !detected.path) {
99
+ console.log("No Claude Code config found.");
100
+ console.log("Claude Code will need to be configured manually.");
101
+ console.log("");
102
+ console.log("To configure later, run:");
103
+ console.log(" agent-recorder configure claude --hubify");
104
+ return;
105
+ }
106
+ const configPath = detected.path;
107
+ // Read existing config
108
+ const existingConfig = readJsonFile(configPath);
109
+ if (existingConfig === null) {
110
+ console.log(`Error: Could not read config at ${formatPath(configPath)}`);
111
+ return;
112
+ }
113
+ // Transform config to hubify mode
114
+ const hubifyResult = hubifyClaudeConfig(existingConfig, expectedUrl);
115
+ // Get mcpServers keys before and after
116
+ const beforeKeys = Object.keys(existingConfig.mcpServers ?? {});
117
+ const afterKeys = ["agent-recorder"];
118
+ // Create backup
119
+ const backupPath = createBackup(configPath);
120
+ // Write updated Claude config
121
+ writeJsonFileAtomic(configPath, hubifyResult.newClaudeConfig);
122
+ // Merge providers into providers.json
123
+ const providersPath = getDefaultProvidersPath();
124
+ const existingProviders = readProvidersFile(providersPath);
125
+ const mergedProviders = mergeProviders(existingProviders, hubifyResult.providers);
126
+ writeProvidersFile(mergedProviders, providersPath);
127
+ // Report results
128
+ console.log("Configured Claude Code with hubify mode");
129
+ console.log("");
130
+ console.log(`Config file: ${formatPath(configPath)} (${detected.kind})`);
131
+ console.log(`Backup: ${formatPath(backupPath)}`);
132
+ console.log("");
133
+ console.log(`Imported ${hubifyResult.importedKeys.length} provider(s):`);
134
+ if (hubifyResult.importedKeys.length === 0) {
135
+ console.log(" (none - no existing MCP servers found)");
136
+ }
137
+ else {
138
+ for (const key of hubifyResult.importedKeys) {
139
+ const provider = hubifyResult.providers.find((p) => p.id === key);
140
+ if (provider) {
141
+ console.log(` - ${key} (${provider.type}${provider.type === "http" ? `: ${provider.url}` : ""})`);
142
+ }
143
+ }
144
+ }
145
+ if (hubifyResult.skippedKeys.length > 0) {
146
+ console.log("");
147
+ console.log(`Skipped ${hubifyResult.skippedKeys.length} key(s):`);
148
+ for (const key of hubifyResult.skippedKeys) {
149
+ console.log(` - ${key} (already agent-recorder)`);
150
+ }
151
+ }
152
+ console.log("");
153
+ console.log("mcpServers updated:");
154
+ console.log(` Before: [${beforeKeys.join(", ") || "empty"}]`);
155
+ console.log(` After: [${afterKeys.join(", ")}]`);
156
+ console.log("");
157
+ console.log(`Providers file: ${formatPath(providersPath)}`);
158
+ console.log(`Total providers: ${mergedProviders.providers.length}`);
159
+ console.log("");
160
+ }
77
161
  //# sourceMappingURL=install.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,iCAAiC;AACjC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;CAepB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,iBAAiB,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAEtC,mCAAmC;IACnC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,4CAA4C;IAC5C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,aAAa,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,mBAAmB;IACnB,OAAO,CAAC,GAAG,CAAC;;;kBAGI,OAAO;YACb,OAAO;;;;;;;;iCAQc,MAAM,CAAC,YAAY;;;;;;UAM1C,OAAO;uDACsC,OAAO;;CAE7D,CAAC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for install command with automatic hubify configuration.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=install.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.test.d.ts","sourceRoot":"","sources":["../../src/commands/install.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}