| 1 | import { runSSH, b64 } from './ssh'; |
| 2 | import type { DelegateParams, DelegateResult } from './types'; |
| 3 | |
| 4 | const HOST = process.env.ZPM_CLAUDE_HOST || 'REDACTED-IP'; |
| 5 | const USER = process.env.ZPM_CLAUDE_USER || 'zion'; |
| 6 | |
| 7 | export async function claudeAdapter(p: DelegateParams): Promise<DelegateResult> { |
| 8 | const start = Date.now(); |
| 9 | const cwd = p.cwd || '/shared/projects'; |
| 10 | const prompt = p.context ? `${p.context}\n\n---\n\n${p.task}` : p.task; |
| 11 | const cmd = `export PATH="$HOME/.local/bin:/usr/local/bin:$PATH"; export IS_SANDBOX=1; cd ${JSON.stringify(cwd)} 2>/dev/null; printf %s ${b64(prompt)} | base64 -d | claude -p --dangerously-skip-permissions 2>&1`; |
| 12 | try { |
| 13 | const r = await runSSH(HOST, USER, cmd, p.timeoutMs ?? 120_000); |
| 14 | return { ok: r.code === 0, output: r.stdout.trim() || r.stderr.trim(), artifacts: [], error: r.code === 0 ? undefined : `exit ${r.code}`, durationMs: Date.now() - start }; |
| 15 | } catch (e) { |
| 16 | return { ok: false, output: '', artifacts: [], error: (e as Error).message, durationMs: Date.now() - start }; |
| 17 | } |
| 18 | } |