fix: add debug logging, fix non-ascii dash in system prompt

This commit is contained in:
neken
2026-04-10 18:27:39 +05:00
parent 164cafec73
commit 8165126101
+25 -4
View File
@@ -13,6 +13,9 @@ interface CliJsonResult {
function runClaude(args: string[], cwd: string): Promise<string> { function runClaude(args: string[], cwd: string): Promise<string> {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
console.log(`[claude] Running: npx claude-code ${args.join(" ")}`);
console.log(`[claude] CWD: ${cwd}`);
const proc = spawn("npx", ["--yes", "@anthropic-ai/claude-code", ...args], { const proc = spawn("npx", ["--yes", "@anthropic-ai/claude-code", ...args], {
cwd, cwd,
shell: true, shell: true,
@@ -31,6 +34,10 @@ function runClaude(args: string[], cwd: string): Promise<string> {
}); });
proc.on("close", (code: number | null) => { proc.on("close", (code: number | null) => {
console.log(`[claude] Exit code: ${code}`);
console.log(`[claude] Stdout length: ${stdout.length}`);
if (stderr) console.log(`[claude] Stderr: ${stderr.slice(0, 500)}`);
if (code !== 0 && !stdout) { if (code !== 0 && !stdout) {
reject(new Error(stderr || `claude exited with code ${code}`)); reject(new Error(stderr || `claude exited with code ${code}`));
} else { } else {
@@ -38,11 +45,14 @@ function runClaude(args: string[], cwd: string): Promise<string> {
} }
}); });
proc.on("error", reject); proc.on("error", (err) => {
console.error(`[claude] Spawn error:`, err);
reject(err);
});
}); });
} }
const APPEND_PROMPT = "Always respond in Russian. You are a helpful coding assistant connected via Telegram. Engage fully with user requests — analyze, suggest, implement. Never ask the user to repeat or clarify when the request is clear enough to act on."; const APPEND_PROMPT = "Always respond in Russian. You are a helpful coding assistant connected via Telegram. Engage fully with user requests - analyze, suggest, implement. Never ask the user to repeat or clarify when the request is clear enough to act on.";
export class ClaudeService { export class ClaudeService {
async createSession(prompt: string, cwd: string): Promise<ClaudeResult> { async createSession(prompt: string, cwd: string): Promise<ClaudeResult> {
@@ -51,7 +61,11 @@ export class ClaudeService {
cwd, cwd,
); );
const parsed = JSON.parse(raw.trim().split("\n").pop()!) as CliJsonResult; const lastLine = raw.trim().split("\n").pop()!;
console.log(`[claude] createSession raw last line (first 300 chars): ${lastLine.slice(0, 300)}`);
const parsed = JSON.parse(lastLine) as CliJsonResult;
console.log(`[claude] createSession result: "${parsed.result?.slice(0, 200)}"`);
console.log(`[claude] createSession session_id: ${parsed.session_id}`);
return { return {
sessionId: parsed.session_id ?? "", sessionId: parsed.session_id ?? "",
@@ -60,12 +74,19 @@ export class ClaudeService {
} }
async sendMessage(prompt: string, sessionId: string, cwd: string): Promise<string> { async sendMessage(prompt: string, sessionId: string, cwd: string): Promise<string> {
console.log(`[claude] sendMessage prompt: "${prompt.slice(0, 100)}"`);
console.log(`[claude] sendMessage sessionId: ${sessionId}`);
const raw = await runClaude( const raw = await runClaude(
["-p", prompt, "--output-format", "json", "--resume", sessionId, "--dangerously-skip-permissions", "--append-system-prompt", APPEND_PROMPT], ["-p", prompt, "--output-format", "json", "--resume", sessionId, "--dangerously-skip-permissions", "--append-system-prompt", APPEND_PROMPT],
cwd, cwd,
); );
const parsed = JSON.parse(raw.trim().split("\n").pop()!) as CliJsonResult; const lastLine = raw.trim().split("\n").pop()!;
console.log(`[claude] sendMessage raw last line (first 300 chars): ${lastLine.slice(0, 300)}`);
const parsed = JSON.parse(lastLine) as CliJsonResult;
console.log(`[claude] sendMessage result: "${parsed.result?.slice(0, 200)}"`);
return parsed.result ?? ""; return parsed.result ?? "";
} }
} }