@conduit-harness/conduit-runner-claude-cli 0.0.1
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.
- package/dist/index.d.ts +8 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/package.json +23 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AgentResult, AgentRunner, RunAttempt, ServiceConfig } from "@conduit-harness/conduit";
|
|
2
|
+
export default class ClaudeCliRunner implements AgentRunner {
|
|
3
|
+
private readonly command;
|
|
4
|
+
private readonly turnTimeoutMs;
|
|
5
|
+
private readonly stallTimeoutMs;
|
|
6
|
+
constructor(config: ServiceConfig);
|
|
7
|
+
run(attempt: RunAttempt, prompt: string): Promise<AgentResult>;
|
|
8
|
+
}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
function str(v, fallback) { return typeof v === "string" && v.length > 0 ? v : fallback; }
|
|
3
|
+
function num(v, fallback) { const n = typeof v === "string" ? Number.parseInt(v, 10) : typeof v === "number" ? v : NaN; return Number.isFinite(n) ? n : fallback; }
|
|
4
|
+
export default class ClaudeCliRunner {
|
|
5
|
+
command;
|
|
6
|
+
turnTimeoutMs;
|
|
7
|
+
stallTimeoutMs;
|
|
8
|
+
constructor(config) {
|
|
9
|
+
const raw = config.agent.raw;
|
|
10
|
+
this.command = str(raw.command, "claude --dangerously-skip-permissions -p -");
|
|
11
|
+
this.turnTimeoutMs = num(raw.turn_timeout_ms, 3600000);
|
|
12
|
+
this.stallTimeoutMs = num(raw.stall_timeout_ms, 300000);
|
|
13
|
+
}
|
|
14
|
+
async run(attempt, prompt) {
|
|
15
|
+
return new Promise((resolve) => {
|
|
16
|
+
const child = spawn("bash", ["-lc", this.command], { cwd: attempt.workspacePath, env: process.env, stdio: ["pipe", "pipe", "pipe"] });
|
|
17
|
+
let output = "";
|
|
18
|
+
let settled = false;
|
|
19
|
+
let stallTimer;
|
|
20
|
+
const finish = (result) => { if (settled)
|
|
21
|
+
return; settled = true; clearTimeout(turnTimer); if (stallTimer)
|
|
22
|
+
clearTimeout(stallTimer); resolve(result); };
|
|
23
|
+
const bumpStall = () => { if (this.stallTimeoutMs <= 0)
|
|
24
|
+
return; if (stallTimer)
|
|
25
|
+
clearTimeout(stallTimer); stallTimer = setTimeout(() => { child.kill("SIGTERM"); finish({ status: "timed_out", output, error: "claude_stall_timeout" }); }, this.stallTimeoutMs); };
|
|
26
|
+
const turnTimer = setTimeout(() => { child.kill("SIGTERM"); finish({ status: "timed_out", output, error: "claude_turn_timeout" }); }, this.turnTimeoutMs);
|
|
27
|
+
child.stdout.on("data", d => { output += d.toString(); bumpStall(); });
|
|
28
|
+
child.stderr.on("data", d => { output += d.toString(); bumpStall(); });
|
|
29
|
+
child.on("error", err => finish({ status: "failed", output, error: err.message }));
|
|
30
|
+
child.on("close", code => {
|
|
31
|
+
const result = { status: code === 0 ? "succeeded" : "failed", output };
|
|
32
|
+
if (code !== null)
|
|
33
|
+
result.exitCode = code;
|
|
34
|
+
if (code !== 0)
|
|
35
|
+
result.error = `claude_exit_${code}`;
|
|
36
|
+
finish(result);
|
|
37
|
+
});
|
|
38
|
+
child.stdin.end(prompt);
|
|
39
|
+
bumpStall();
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@conduit-harness/conduit-runner-claude-cli",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Conduit agent runner plugin for Claude Code CLI",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": { "import": "./dist/index.js", "types": "./dist/index.d.ts" }
|
|
8
|
+
},
|
|
9
|
+
"files": ["dist"],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc -p tsconfig.json",
|
|
12
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
13
|
+
},
|
|
14
|
+
"publishConfig": { "access": "public" },
|
|
15
|
+
"repository": { "type": "git", "url": "git+https://github.com/conduit-harness/conduit.git" },
|
|
16
|
+
"engines": { "node": ">=24.0.0" },
|
|
17
|
+
"peerDependencies": { "@conduit-harness/conduit": ">=0.0.1" },
|
|
18
|
+
"devDependencies": {
|
|
19
|
+
"@conduit-harness/conduit": "workspace:*",
|
|
20
|
+
"@types/node": "latest",
|
|
21
|
+
"typescript": "latest"
|
|
22
|
+
}
|
|
23
|
+
}
|