From bcdf6ab5fb52065250ca2fa5c086c7809ba4e4f4 Mon Sep 17 00:00:00 2001 From: David Blass Date: Mon, 13 Oct 2025 13:02:04 -0400 Subject: [PATCH] add debug flag for mcp server --- agents/claude.ts | 33 ++++++++++++++++++++++++++------- entry.cjs | 28 ++++++++++++++++++++++------ mcp/server.ts | 7 +++++-- package.json | 2 +- 4 files changed, 54 insertions(+), 16 deletions(-) diff --git a/agents/claude.ts b/agents/claude.ts index 485258d..55de609 100644 --- a/agents/claude.ts +++ b/agents/claude.ts @@ -49,7 +49,10 @@ export class ClaudeAgent implements Agent { try { const result = await spawn({ cmd: "bash", - args: ["-c", "curl -fsSL https://claude.ai/install.sh | bash -s 1.0.93"], + args: [ + "-c", + "curl -fsSL https://claude.ai/install.sh | bash -s 1.0.93", + ], env: { ANTHROPIC_API_KEY: this.apiKey }, timeout: 120000, // 2 minute timeout onStdout: () => {}, @@ -57,7 +60,9 @@ export class ClaudeAgent implements Agent { }); if (result.exitCode !== 0) { - throw new Error(`Installation failed with exit code ${result.exitCode}: ${result.stderr}`); + throw new Error( + `Installation failed with exit code ${result.exitCode}: ${result.stderr}` + ); } core.info("Claude Code installed successfully"); @@ -80,12 +85,15 @@ export class ClaudeAgent implements Agent { "--output-format", "stream-json", "--verbose", + "--debug", "--permission-mode", "bypassPermissions", ]; if (!process.env.GITHUB_INSTALLATION_TOKEN) { - throw new Error("GITHUB_INSTALLATION_TOKEN is required for GitHub integration"); + throw new Error( + "GITHUB_INSTALLATION_TOKEN is required for GitHub integration" + ); } const mcpConfig = createMcpConfig(process.env.GITHUB_INSTALLATION_TOKEN); @@ -151,7 +159,8 @@ export class ClaudeAgent implements Agent { try { core.endGroup(); } catch {} - const errorMessage = error instanceof Error ? error.message : "Unknown error"; + const errorMessage = + error instanceof Error ? error.message : "Unknown error"; return { success: false, error: `Failed to execute Claude Code: ${errorMessage}`, @@ -177,7 +186,12 @@ function processJSONChunk(chunk: string, agent?: ClaudeAgent): void { ["model", parsedChunk.model], ["cwd", parsedChunk.cwd], ["permission_mode", parsedChunk.permissionMode], - ["tools", parsedChunk.tools?.length ? `${parsedChunk.tools.length} tools` : "none"], + [ + "tools", + parsedChunk.tools?.length + ? `${parsedChunk.tools.length} tools` + : "none", + ], [ "mcp_servers", parsedChunk.mcp_servers?.length @@ -204,7 +218,9 @@ function processJSONChunk(chunk: string, agent?: ClaudeAgent): void { for (const content of parsedChunk.message.content) { if (content.type === "text") { if (content.text.trim()) { - core.info(boxString(content.text.trim(), { title: "Claude Code" })); + core.info( + boxString(content.text.trim(), { title: "Claude Code" }) + ); } } else if (content.type === "tool_use") { if (agent) { @@ -289,7 +305,10 @@ function processJSONChunk(chunk: string, agent?: ClaudeAgent): void { if (parsedChunk.subtype === "success") { core.info( tableString([ - ["Cost", `$${parsedChunk.total_cost_usd?.toFixed(4) || "0.0000"}`], + [ + "Cost", + `$${parsedChunk.total_cost_usd?.toFixed(4) || "0.0000"}`, + ], ["Input Tokens", parsedChunk.usage?.input_tokens || 0], ["Output Tokens", parsedChunk.usage?.output_tokens || 0], ["Duration", `${parsedChunk.duration_ms}ms`], diff --git a/entry.cjs b/entry.cjs index 0e062ad..1be2308 100755 --- a/entry.cjs +++ b/entry.cjs @@ -25734,7 +25734,10 @@ var ClaudeAgent = class { try { const result = await spawn({ cmd: "bash", - args: ["-c", "curl -fsSL https://claude.ai/install.sh | bash -s 1.0.93"], + args: [ + "-c", + "curl -fsSL https://claude.ai/install.sh | bash -s 1.0.93" + ], env: { ANTHROPIC_API_KEY: this.apiKey }, timeout: 12e4, // 2 minute timeout @@ -25743,7 +25746,9 @@ var ClaudeAgent = class { onStderr: (chunk) => process.stderr.write(chunk) }); if (result.exitCode !== 0) { - throw new Error(`Installation failed with exit code ${result.exitCode}: ${result.stderr}`); + throw new Error( + `Installation failed with exit code ${result.exitCode}: ${result.stderr}` + ); } core.info("Claude Code installed successfully"); } catch (error2) { @@ -25763,11 +25768,14 @@ var ClaudeAgent = class { "--output-format", "stream-json", "--verbose", + "--debug", "--permission-mode", "bypassPermissions" ]; if (!process.env.GITHUB_INSTALLATION_TOKEN) { - throw new Error("GITHUB_INSTALLATION_TOKEN is required for GitHub integration"); + throw new Error( + "GITHUB_INSTALLATION_TOKEN is required for GitHub integration" + ); } const mcpConfig = createMcpConfig(process.env.GITHUB_INSTALLATION_TOKEN); console.log("\u{1F4CB} MCP Config:", mcpConfig); @@ -25850,7 +25858,10 @@ function processJSONChunk(chunk, agent) { ["model", parsedChunk.model], ["cwd", parsedChunk.cwd], ["permission_mode", parsedChunk.permissionMode], - ["tools", parsedChunk.tools?.length ? `${parsedChunk.tools.length} tools` : "none"], + [ + "tools", + parsedChunk.tools?.length ? `${parsedChunk.tools.length} tools` : "none" + ], [ "mcp_servers", parsedChunk.mcp_servers?.length ? `${parsedChunk.mcp_servers.length} servers` : "none" @@ -25871,7 +25882,9 @@ function processJSONChunk(chunk, agent) { for (const content of parsedChunk.message.content) { if (content.type === "text") { if (content.text.trim()) { - core.info(boxString(content.text.trim(), { title: "Claude Code" })); + core.info( + boxString(content.text.trim(), { title: "Claude Code" }) + ); } } else if (content.type === "tool_use") { if (agent) { @@ -25938,7 +25951,10 @@ function processJSONChunk(chunk, agent) { if (parsedChunk.subtype === "success") { core.info( tableString([ - ["Cost", `$${parsedChunk.total_cost_usd?.toFixed(4) || "0.0000"}`], + [ + "Cost", + `$${parsedChunk.total_cost_usd?.toFixed(4) || "0.0000"}` + ], ["Input Tokens", parsedChunk.usage?.input_tokens || 0], ["Output Tokens", parsedChunk.usage?.output_tokens || 0], ["Duration", `${parsedChunk.duration_ms}ms`], diff --git a/mcp/server.ts b/mcp/server.ts index bb96ffd..692aaf3 100644 --- a/mcp/server.ts +++ b/mcp/server.ts @@ -31,7 +31,9 @@ server.tool( const githubInstallationToken = process.env.GITHUB_INSTALLATION_TOKEN; if (!githubInstallationToken) { - throw new Error("GITHUB_INSTALLATION_TOKEN environment variable is required"); + throw new Error( + "GITHUB_INSTALLATION_TOKEN environment variable is required" + ); } // Resolve repository context from environment @@ -66,7 +68,8 @@ server.tool( ], }; } catch (error) { - const errorMessage = error instanceof Error ? error.message : String(error); + const errorMessage = + error instanceof Error ? error.message : String(error); return { content: [ { diff --git a/package.json b/package.json index 0ffd0be..33c5ae3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@pullfrog/action", - "version": "0.0.21", + "version": "0.0.22", "type": "module", "files": [ "index.js",