● Zion Boggan
repos/Zion Pm/lib/workers/claude.ts
zionboggan.com ↗
18 lines · typescript
History for this file →
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
}