@paperclipai/adapter-claude-local 0.2.2
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/cli/format-event.d.ts +2 -0
- package/dist/cli/format-event.d.ts.map +1 -0
- package/dist/cli/format-event.js +94 -0
- package/dist/cli/format-event.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/server/execute.d.ts +18 -0
- package/dist/server/execute.d.ts.map +1 -0
- package/dist/server/execute.js +385 -0
- package/dist/server/execute.js.map +1 -0
- package/dist/server/index.d.ts +6 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +55 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/parse.d.ts +22 -0
- package/dist/server/parse.d.ts.map +1 -0
- package/dist/server/parse.js +158 -0
- package/dist/server/parse.js.map +1 -0
- package/dist/server/test.d.ts +3 -0
- package/dist/server/test.d.ts.map +1 -0
- package/dist/server/test.js +201 -0
- package/dist/server/test.js.map +1 -0
- package/dist/ui/build-config.d.ts +3 -0
- package/dist/ui/build-config.d.ts.map +1 -0
- package/dist/ui/build-config.js +87 -0
- package/dist/ui/build-config.js.map +1 -0
- package/dist/ui/index.d.ts +3 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +3 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/parse-stdout.d.ts +3 -0
- package/dist/ui/parse-stdout.d.ts.map +1 -0
- package/dist/ui/parse-stdout.js +144 -0
- package/dist/ui/parse-stdout.js.map +1 -0
- package/package.json +43 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-event.d.ts","sourceRoot":"","sources":["../../src/cli/format-event.ts"],"names":[],"mappings":"AAmBA,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CA+ExE"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import pc from "picocolors";
|
|
2
|
+
function asErrorText(value) {
|
|
3
|
+
if (typeof value === "string")
|
|
4
|
+
return value;
|
|
5
|
+
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
6
|
+
return "";
|
|
7
|
+
const obj = value;
|
|
8
|
+
const message = (typeof obj.message === "string" && obj.message) ||
|
|
9
|
+
(typeof obj.error === "string" && obj.error) ||
|
|
10
|
+
(typeof obj.code === "string" && obj.code) ||
|
|
11
|
+
"";
|
|
12
|
+
if (message)
|
|
13
|
+
return message;
|
|
14
|
+
try {
|
|
15
|
+
return JSON.stringify(obj);
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return "";
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export function printClaudeStreamEvent(raw, debug) {
|
|
22
|
+
const line = raw.trim();
|
|
23
|
+
if (!line)
|
|
24
|
+
return;
|
|
25
|
+
let parsed = null;
|
|
26
|
+
try {
|
|
27
|
+
parsed = JSON.parse(line);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
console.log(line);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const type = typeof parsed.type === "string" ? parsed.type : "";
|
|
34
|
+
if (type === "system" && parsed.subtype === "init") {
|
|
35
|
+
const model = typeof parsed.model === "string" ? parsed.model : "unknown";
|
|
36
|
+
const sessionId = typeof parsed.session_id === "string" ? parsed.session_id : "";
|
|
37
|
+
console.log(pc.blue(`Claude initialized (model: ${model}${sessionId ? `, session: ${sessionId}` : ""})`));
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (type === "assistant") {
|
|
41
|
+
const message = typeof parsed.message === "object" && parsed.message !== null && !Array.isArray(parsed.message)
|
|
42
|
+
? parsed.message
|
|
43
|
+
: {};
|
|
44
|
+
const content = Array.isArray(message.content) ? message.content : [];
|
|
45
|
+
for (const blockRaw of content) {
|
|
46
|
+
if (typeof blockRaw !== "object" || blockRaw === null || Array.isArray(blockRaw))
|
|
47
|
+
continue;
|
|
48
|
+
const block = blockRaw;
|
|
49
|
+
const blockType = typeof block.type === "string" ? block.type : "";
|
|
50
|
+
if (blockType === "text") {
|
|
51
|
+
const text = typeof block.text === "string" ? block.text : "";
|
|
52
|
+
if (text)
|
|
53
|
+
console.log(pc.green(`assistant: ${text}`));
|
|
54
|
+
}
|
|
55
|
+
else if (blockType === "tool_use") {
|
|
56
|
+
const name = typeof block.name === "string" ? block.name : "unknown";
|
|
57
|
+
console.log(pc.yellow(`tool_call: ${name}`));
|
|
58
|
+
if (block.input !== undefined) {
|
|
59
|
+
console.log(pc.gray(JSON.stringify(block.input, null, 2)));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (type === "result") {
|
|
66
|
+
const usage = typeof parsed.usage === "object" && parsed.usage !== null && !Array.isArray(parsed.usage)
|
|
67
|
+
? parsed.usage
|
|
68
|
+
: {};
|
|
69
|
+
const input = Number(usage.input_tokens ?? 0);
|
|
70
|
+
const output = Number(usage.output_tokens ?? 0);
|
|
71
|
+
const cached = Number(usage.cache_read_input_tokens ?? 0);
|
|
72
|
+
const cost = Number(parsed.total_cost_usd ?? 0);
|
|
73
|
+
const subtype = typeof parsed.subtype === "string" ? parsed.subtype : "";
|
|
74
|
+
const isError = parsed.is_error === true;
|
|
75
|
+
const resultText = typeof parsed.result === "string" ? parsed.result : "";
|
|
76
|
+
if (resultText) {
|
|
77
|
+
console.log(pc.green("result:"));
|
|
78
|
+
console.log(resultText);
|
|
79
|
+
}
|
|
80
|
+
const errors = Array.isArray(parsed.errors) ? parsed.errors.map(asErrorText).filter(Boolean) : [];
|
|
81
|
+
if (subtype.startsWith("error") || isError || errors.length > 0) {
|
|
82
|
+
console.log(pc.red(`claude_result: subtype=${subtype || "unknown"} is_error=${isError ? "true" : "false"}`));
|
|
83
|
+
if (errors.length > 0) {
|
|
84
|
+
console.log(pc.red(`claude_errors: ${errors.join(" | ")}`));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
console.log(pc.blue(`tokens: in=${Number.isFinite(input) ? input : 0} out=${Number.isFinite(output) ? output : 0} cached=${Number.isFinite(cached) ? cached : 0} cost=$${Number.isFinite(cost) ? cost.toFixed(6) : "0.000000"}`));
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
if (debug) {
|
|
91
|
+
console.log(pc.gray(line));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=format-event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-event.js","sourceRoot":"","sources":["../../src/cli/format-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnF,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,MAAM,OAAO,GACX,CAAC,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC;QAChD,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC;QAC5C,CAAC,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC;QAC1C,EAAE,CAAC;IACL,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAC5B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAW,EAAE,KAAc;IAChE,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACxB,IAAI,CAAC,IAAI;QAAE,OAAO;IAElB,IAAI,MAAM,GAAmC,IAAI,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAEhE,IAAI,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1E,MAAM,SAAS,GAAG,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,8BAA8B,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC1G,OAAO;IACT,CAAC;IAED,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,MAAM,OAAO,GACX,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;YAC7F,CAAC,CAAE,MAAM,CAAC,OAAmC;YAC7C,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;YAC/B,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAAE,SAAS;YAC3F,MAAM,KAAK,GAAG,QAAmC,CAAC;YAClD,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9D,IAAI,IAAI;oBAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC;YACxD,CAAC;iBAAM,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;gBACpC,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;gBACrE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC7C,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;oBAC9B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,MAAM,KAAK,GACT,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;YACvF,CAAC,CAAE,MAAM,CAAC,KAAiC;YAC3C,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,uBAAuB,IAAI,CAAC,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC;QACzC,MAAM,UAAU,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC1B,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClG,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,0BAA0B,OAAO,IAAI,SAAS,aAAa,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC7G,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CACT,EAAE,CAAC,IAAI,CACL,cAAc,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAC5M,CACF,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const type = "claude_local";
|
|
2
|
+
export declare const label = "Claude Code (local)";
|
|
3
|
+
export declare const models: {
|
|
4
|
+
id: string;
|
|
5
|
+
label: string;
|
|
6
|
+
}[];
|
|
7
|
+
export declare const agentConfigurationDoc = "# claude_local agent configuration\n\nAdapter: claude_local\n\nCore fields:\n- cwd (string, optional): default absolute working directory fallback for the agent process (created if missing when possible)\n- instructionsFilePath (string, optional): absolute path to a markdown instructions file injected at runtime\n- model (string, optional): Claude model id\n- effort (string, optional): reasoning effort passed via --effort (low|medium|high)\n- chrome (boolean, optional): pass --chrome when running Claude\n- promptTemplate (string, optional): run prompt template\n- maxTurnsPerRun (number, optional): max turns for one run\n- dangerouslySkipPermissions (boolean, optional): pass --dangerously-skip-permissions to claude\n- command (string, optional): defaults to \"claude\"\n- extraArgs (string[], optional): additional CLI args\n- env (object, optional): KEY=VALUE environment variables\n\nOperational fields:\n- timeoutSec (number, optional): run timeout in seconds\n- graceSec (number, optional): SIGTERM grace period in seconds\n";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,iBAAiB,CAAC;AACnC,eAAO,MAAM,KAAK,wBAAwB,CAAC;AAE3C,eAAO,MAAM,MAAM;;;GAIlB,CAAC;AAEF,eAAO,MAAM,qBAAqB,khCAoBjC,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export const type = "claude_local";
|
|
2
|
+
export const label = "Claude Code (local)";
|
|
3
|
+
export const models = [
|
|
4
|
+
{ id: "claude-opus-4-6", label: "Claude Opus 4.6" },
|
|
5
|
+
{ id: "claude-sonnet-4-5-20250929", label: "Claude Sonnet 4.5" },
|
|
6
|
+
{ id: "claude-haiku-4-5-20251001", label: "Claude Haiku 4.5" },
|
|
7
|
+
];
|
|
8
|
+
export const agentConfigurationDoc = `# claude_local agent configuration
|
|
9
|
+
|
|
10
|
+
Adapter: claude_local
|
|
11
|
+
|
|
12
|
+
Core fields:
|
|
13
|
+
- cwd (string, optional): default absolute working directory fallback for the agent process (created if missing when possible)
|
|
14
|
+
- instructionsFilePath (string, optional): absolute path to a markdown instructions file injected at runtime
|
|
15
|
+
- model (string, optional): Claude model id
|
|
16
|
+
- effort (string, optional): reasoning effort passed via --effort (low|medium|high)
|
|
17
|
+
- chrome (boolean, optional): pass --chrome when running Claude
|
|
18
|
+
- promptTemplate (string, optional): run prompt template
|
|
19
|
+
- maxTurnsPerRun (number, optional): max turns for one run
|
|
20
|
+
- dangerouslySkipPermissions (boolean, optional): pass --dangerously-skip-permissions to claude
|
|
21
|
+
- command (string, optional): defaults to "claude"
|
|
22
|
+
- extraArgs (string[], optional): additional CLI args
|
|
23
|
+
- env (object, optional): KEY=VALUE environment variables
|
|
24
|
+
|
|
25
|
+
Operational fields:
|
|
26
|
+
- timeoutSec (number, optional): run timeout in seconds
|
|
27
|
+
- graceSec (number, optional): SIGTERM grace period in seconds
|
|
28
|
+
`;
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,IAAI,GAAG,cAAc,CAAC;AACnC,MAAM,CAAC,MAAM,KAAK,GAAG,qBAAqB,CAAC;AAE3C,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;IACnD,EAAE,EAAE,EAAE,4BAA4B,EAAE,KAAK,EAAE,mBAAmB,EAAE;IAChE,EAAE,EAAE,EAAE,2BAA2B,EAAE,KAAK,EAAE,kBAAkB,EAAE;CAC/D,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;CAoBpC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { AdapterExecutionContext, AdapterExecutionResult } from "@paperclipai/adapter-utils";
|
|
2
|
+
export declare function runClaudeLogin(input: {
|
|
3
|
+
runId: string;
|
|
4
|
+
agent: AdapterExecutionContext["agent"];
|
|
5
|
+
config: Record<string, unknown>;
|
|
6
|
+
context?: Record<string, unknown>;
|
|
7
|
+
authToken?: string;
|
|
8
|
+
onLog?: (stream: "stdout" | "stderr", chunk: string) => Promise<void>;
|
|
9
|
+
}): Promise<{
|
|
10
|
+
exitCode: number | null;
|
|
11
|
+
signal: string | null;
|
|
12
|
+
timedOut: boolean;
|
|
13
|
+
stdout: string;
|
|
14
|
+
stderr: string;
|
|
15
|
+
loginUrl: string | null;
|
|
16
|
+
}>;
|
|
17
|
+
export declare function execute(ctx: AdapterExecutionContext): Promise<AdapterExecutionResult>;
|
|
18
|
+
//# sourceMappingURL=execute.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/server/execute.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAuNlG,wBAAsB,cAAc,CAAC,KAAK,EAAE;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvE;;;;;;;GA4BA;AAED,wBAAsB,OAAO,CAAC,GAAG,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAgQ3F"}
|
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import { asString, asNumber, asBoolean, asStringArray, parseObject, parseJson, buildPaperclipEnv, redactEnvForLogs, ensureAbsoluteDirectory, ensureCommandResolvable, ensurePathInEnv, renderTemplate, runChildProcess, } from "@paperclipai/adapter-utils/server-utils";
|
|
6
|
+
import { parseClaudeStreamJson, describeClaudeFailure, detectClaudeLoginRequired, isClaudeMaxTurnsResult, isClaudeUnknownSessionError, } from "./parse.js";
|
|
7
|
+
const PAPERCLIP_SKILLS_DIR = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../../../../../skills");
|
|
8
|
+
/**
|
|
9
|
+
* Create a tmpdir with `.claude/skills/` containing symlinks to skills from
|
|
10
|
+
* the repo's `skills/` directory, so `--add-dir` makes Claude Code discover
|
|
11
|
+
* them as proper registered skills.
|
|
12
|
+
*/
|
|
13
|
+
async function buildSkillsDir() {
|
|
14
|
+
const tmp = await fs.mkdtemp(path.join(os.tmpdir(), "paperclip-skills-"));
|
|
15
|
+
const target = path.join(tmp, ".claude", "skills");
|
|
16
|
+
await fs.mkdir(target, { recursive: true });
|
|
17
|
+
const entries = await fs.readdir(PAPERCLIP_SKILLS_DIR, { withFileTypes: true });
|
|
18
|
+
for (const entry of entries) {
|
|
19
|
+
if (entry.isDirectory()) {
|
|
20
|
+
await fs.symlink(path.join(PAPERCLIP_SKILLS_DIR, entry.name), path.join(target, entry.name));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return tmp;
|
|
24
|
+
}
|
|
25
|
+
function buildLoginResult(input) {
|
|
26
|
+
return {
|
|
27
|
+
exitCode: input.proc.exitCode,
|
|
28
|
+
signal: input.proc.signal,
|
|
29
|
+
timedOut: input.proc.timedOut,
|
|
30
|
+
stdout: input.proc.stdout,
|
|
31
|
+
stderr: input.proc.stderr,
|
|
32
|
+
loginUrl: input.loginUrl,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function hasNonEmptyEnvValue(env, key) {
|
|
36
|
+
const raw = env[key];
|
|
37
|
+
return typeof raw === "string" && raw.trim().length > 0;
|
|
38
|
+
}
|
|
39
|
+
function resolveClaudeBillingType(env) {
|
|
40
|
+
// Claude uses API-key auth when ANTHROPIC_API_KEY is present; otherwise rely on local login/session auth.
|
|
41
|
+
return hasNonEmptyEnvValue(env, "ANTHROPIC_API_KEY") ? "api" : "subscription";
|
|
42
|
+
}
|
|
43
|
+
async function buildClaudeRuntimeConfig(input) {
|
|
44
|
+
const { runId, agent, config, context, authToken } = input;
|
|
45
|
+
const command = asString(config.command, "claude");
|
|
46
|
+
const workspaceContext = parseObject(context.paperclipWorkspace);
|
|
47
|
+
const workspaceCwd = asString(workspaceContext.cwd, "");
|
|
48
|
+
const workspaceSource = asString(workspaceContext.source, "");
|
|
49
|
+
const workspaceId = asString(workspaceContext.workspaceId, "") || null;
|
|
50
|
+
const workspaceRepoUrl = asString(workspaceContext.repoUrl, "") || null;
|
|
51
|
+
const workspaceRepoRef = asString(workspaceContext.repoRef, "") || null;
|
|
52
|
+
const workspaceHints = Array.isArray(context.paperclipWorkspaces)
|
|
53
|
+
? context.paperclipWorkspaces.filter((value) => typeof value === "object" && value !== null)
|
|
54
|
+
: [];
|
|
55
|
+
const configuredCwd = asString(config.cwd, "");
|
|
56
|
+
const useConfiguredInsteadOfAgentHome = workspaceSource === "agent_home" && configuredCwd.length > 0;
|
|
57
|
+
const effectiveWorkspaceCwd = useConfiguredInsteadOfAgentHome ? "" : workspaceCwd;
|
|
58
|
+
const cwd = effectiveWorkspaceCwd || configuredCwd || process.cwd();
|
|
59
|
+
await ensureAbsoluteDirectory(cwd, { createIfMissing: true });
|
|
60
|
+
const envConfig = parseObject(config.env);
|
|
61
|
+
const hasExplicitApiKey = typeof envConfig.PAPERCLIP_API_KEY === "string" && envConfig.PAPERCLIP_API_KEY.trim().length > 0;
|
|
62
|
+
const env = { ...buildPaperclipEnv(agent) };
|
|
63
|
+
env.PAPERCLIP_RUN_ID = runId;
|
|
64
|
+
const wakeTaskId = (typeof context.taskId === "string" && context.taskId.trim().length > 0 && context.taskId.trim()) ||
|
|
65
|
+
(typeof context.issueId === "string" && context.issueId.trim().length > 0 && context.issueId.trim()) ||
|
|
66
|
+
null;
|
|
67
|
+
const wakeReason = typeof context.wakeReason === "string" && context.wakeReason.trim().length > 0
|
|
68
|
+
? context.wakeReason.trim()
|
|
69
|
+
: null;
|
|
70
|
+
const wakeCommentId = (typeof context.wakeCommentId === "string" && context.wakeCommentId.trim().length > 0 && context.wakeCommentId.trim()) ||
|
|
71
|
+
(typeof context.commentId === "string" && context.commentId.trim().length > 0 && context.commentId.trim()) ||
|
|
72
|
+
null;
|
|
73
|
+
const approvalId = typeof context.approvalId === "string" && context.approvalId.trim().length > 0
|
|
74
|
+
? context.approvalId.trim()
|
|
75
|
+
: null;
|
|
76
|
+
const approvalStatus = typeof context.approvalStatus === "string" && context.approvalStatus.trim().length > 0
|
|
77
|
+
? context.approvalStatus.trim()
|
|
78
|
+
: null;
|
|
79
|
+
const linkedIssueIds = Array.isArray(context.issueIds)
|
|
80
|
+
? context.issueIds.filter((value) => typeof value === "string" && value.trim().length > 0)
|
|
81
|
+
: [];
|
|
82
|
+
if (wakeTaskId) {
|
|
83
|
+
env.PAPERCLIP_TASK_ID = wakeTaskId;
|
|
84
|
+
}
|
|
85
|
+
if (wakeReason) {
|
|
86
|
+
env.PAPERCLIP_WAKE_REASON = wakeReason;
|
|
87
|
+
}
|
|
88
|
+
if (wakeCommentId) {
|
|
89
|
+
env.PAPERCLIP_WAKE_COMMENT_ID = wakeCommentId;
|
|
90
|
+
}
|
|
91
|
+
if (approvalId) {
|
|
92
|
+
env.PAPERCLIP_APPROVAL_ID = approvalId;
|
|
93
|
+
}
|
|
94
|
+
if (approvalStatus) {
|
|
95
|
+
env.PAPERCLIP_APPROVAL_STATUS = approvalStatus;
|
|
96
|
+
}
|
|
97
|
+
if (linkedIssueIds.length > 0) {
|
|
98
|
+
env.PAPERCLIP_LINKED_ISSUE_IDS = linkedIssueIds.join(",");
|
|
99
|
+
}
|
|
100
|
+
if (effectiveWorkspaceCwd) {
|
|
101
|
+
env.PAPERCLIP_WORKSPACE_CWD = effectiveWorkspaceCwd;
|
|
102
|
+
}
|
|
103
|
+
if (workspaceSource) {
|
|
104
|
+
env.PAPERCLIP_WORKSPACE_SOURCE = workspaceSource;
|
|
105
|
+
}
|
|
106
|
+
if (workspaceId) {
|
|
107
|
+
env.PAPERCLIP_WORKSPACE_ID = workspaceId;
|
|
108
|
+
}
|
|
109
|
+
if (workspaceRepoUrl) {
|
|
110
|
+
env.PAPERCLIP_WORKSPACE_REPO_URL = workspaceRepoUrl;
|
|
111
|
+
}
|
|
112
|
+
if (workspaceRepoRef) {
|
|
113
|
+
env.PAPERCLIP_WORKSPACE_REPO_REF = workspaceRepoRef;
|
|
114
|
+
}
|
|
115
|
+
if (workspaceHints.length > 0) {
|
|
116
|
+
env.PAPERCLIP_WORKSPACES_JSON = JSON.stringify(workspaceHints);
|
|
117
|
+
}
|
|
118
|
+
for (const [key, value] of Object.entries(envConfig)) {
|
|
119
|
+
if (typeof value === "string")
|
|
120
|
+
env[key] = value;
|
|
121
|
+
}
|
|
122
|
+
if (!hasExplicitApiKey && authToken) {
|
|
123
|
+
env.PAPERCLIP_API_KEY = authToken;
|
|
124
|
+
}
|
|
125
|
+
const runtimeEnv = ensurePathInEnv({ ...process.env, ...env });
|
|
126
|
+
await ensureCommandResolvable(command, cwd, runtimeEnv);
|
|
127
|
+
const timeoutSec = asNumber(config.timeoutSec, 0);
|
|
128
|
+
const graceSec = asNumber(config.graceSec, 20);
|
|
129
|
+
const extraArgs = (() => {
|
|
130
|
+
const fromExtraArgs = asStringArray(config.extraArgs);
|
|
131
|
+
if (fromExtraArgs.length > 0)
|
|
132
|
+
return fromExtraArgs;
|
|
133
|
+
return asStringArray(config.args);
|
|
134
|
+
})();
|
|
135
|
+
return {
|
|
136
|
+
command,
|
|
137
|
+
cwd,
|
|
138
|
+
workspaceId,
|
|
139
|
+
workspaceRepoUrl,
|
|
140
|
+
workspaceRepoRef,
|
|
141
|
+
env,
|
|
142
|
+
timeoutSec,
|
|
143
|
+
graceSec,
|
|
144
|
+
extraArgs,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
export async function runClaudeLogin(input) {
|
|
148
|
+
const onLog = input.onLog ?? (async () => { });
|
|
149
|
+
const runtime = await buildClaudeRuntimeConfig({
|
|
150
|
+
runId: input.runId,
|
|
151
|
+
agent: input.agent,
|
|
152
|
+
config: input.config,
|
|
153
|
+
context: input.context ?? {},
|
|
154
|
+
authToken: input.authToken,
|
|
155
|
+
});
|
|
156
|
+
const proc = await runChildProcess(input.runId, runtime.command, ["login"], {
|
|
157
|
+
cwd: runtime.cwd,
|
|
158
|
+
env: runtime.env,
|
|
159
|
+
timeoutSec: runtime.timeoutSec,
|
|
160
|
+
graceSec: runtime.graceSec,
|
|
161
|
+
onLog,
|
|
162
|
+
});
|
|
163
|
+
const loginMeta = detectClaudeLoginRequired({
|
|
164
|
+
parsed: null,
|
|
165
|
+
stdout: proc.stdout,
|
|
166
|
+
stderr: proc.stderr,
|
|
167
|
+
});
|
|
168
|
+
return buildLoginResult({
|
|
169
|
+
proc,
|
|
170
|
+
loginUrl: loginMeta.loginUrl,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
export async function execute(ctx) {
|
|
174
|
+
const { runId, agent, runtime, config, context, onLog, onMeta, authToken } = ctx;
|
|
175
|
+
const promptTemplate = asString(config.promptTemplate, "You are agent {{agent.id}} ({{agent.name}}). Continue your Paperclip work.");
|
|
176
|
+
const model = asString(config.model, "");
|
|
177
|
+
const effort = asString(config.effort, "");
|
|
178
|
+
const chrome = asBoolean(config.chrome, false);
|
|
179
|
+
const maxTurns = asNumber(config.maxTurnsPerRun, 0);
|
|
180
|
+
const dangerouslySkipPermissions = asBoolean(config.dangerouslySkipPermissions, false);
|
|
181
|
+
const instructionsFilePath = asString(config.instructionsFilePath, "").trim();
|
|
182
|
+
const instructionsFileDir = instructionsFilePath ? `${path.dirname(instructionsFilePath)}/` : "";
|
|
183
|
+
const commandNotes = instructionsFilePath
|
|
184
|
+
? [
|
|
185
|
+
`Injected agent instructions via --append-system-prompt-file ${instructionsFilePath} (with path directive appended)`,
|
|
186
|
+
]
|
|
187
|
+
: [];
|
|
188
|
+
const runtimeConfig = await buildClaudeRuntimeConfig({
|
|
189
|
+
runId,
|
|
190
|
+
agent,
|
|
191
|
+
config,
|
|
192
|
+
context,
|
|
193
|
+
authToken,
|
|
194
|
+
});
|
|
195
|
+
const { command, cwd, workspaceId, workspaceRepoUrl, workspaceRepoRef, env, timeoutSec, graceSec, extraArgs, } = runtimeConfig;
|
|
196
|
+
const billingType = resolveClaudeBillingType(env);
|
|
197
|
+
const skillsDir = await buildSkillsDir();
|
|
198
|
+
// When instructionsFilePath is configured, create a combined temp file that
|
|
199
|
+
// includes both the file content and the path directive, so we only need
|
|
200
|
+
// --append-system-prompt-file (Claude CLI forbids using both flags together).
|
|
201
|
+
let effectiveInstructionsFilePath = instructionsFilePath;
|
|
202
|
+
if (instructionsFilePath) {
|
|
203
|
+
const instructionsContent = await fs.readFile(instructionsFilePath, "utf-8");
|
|
204
|
+
const pathDirective = `\nThe above agent instructions were loaded from ${instructionsFilePath}. Resolve any relative file references from ${instructionsFileDir}.`;
|
|
205
|
+
const combinedPath = path.join(skillsDir, "agent-instructions.md");
|
|
206
|
+
await fs.writeFile(combinedPath, instructionsContent + pathDirective, "utf-8");
|
|
207
|
+
effectiveInstructionsFilePath = combinedPath;
|
|
208
|
+
}
|
|
209
|
+
const runtimeSessionParams = parseObject(runtime.sessionParams);
|
|
210
|
+
const runtimeSessionId = asString(runtimeSessionParams.sessionId, runtime.sessionId ?? "");
|
|
211
|
+
const runtimeSessionCwd = asString(runtimeSessionParams.cwd, "");
|
|
212
|
+
const canResumeSession = runtimeSessionId.length > 0 &&
|
|
213
|
+
(runtimeSessionCwd.length === 0 || path.resolve(runtimeSessionCwd) === path.resolve(cwd));
|
|
214
|
+
const sessionId = canResumeSession ? runtimeSessionId : null;
|
|
215
|
+
if (runtimeSessionId && !canResumeSession) {
|
|
216
|
+
await onLog("stderr", `[paperclip] Claude session "${runtimeSessionId}" was saved for cwd "${runtimeSessionCwd}" and will not be resumed in "${cwd}".\n`);
|
|
217
|
+
}
|
|
218
|
+
const prompt = renderTemplate(promptTemplate, {
|
|
219
|
+
agentId: agent.id,
|
|
220
|
+
companyId: agent.companyId,
|
|
221
|
+
runId,
|
|
222
|
+
company: { id: agent.companyId },
|
|
223
|
+
agent,
|
|
224
|
+
run: { id: runId, source: "on_demand" },
|
|
225
|
+
context,
|
|
226
|
+
});
|
|
227
|
+
const buildClaudeArgs = (resumeSessionId) => {
|
|
228
|
+
const args = ["--print", "-", "--output-format", "stream-json", "--verbose"];
|
|
229
|
+
if (resumeSessionId)
|
|
230
|
+
args.push("--resume", resumeSessionId);
|
|
231
|
+
if (dangerouslySkipPermissions)
|
|
232
|
+
args.push("--dangerously-skip-permissions");
|
|
233
|
+
if (chrome)
|
|
234
|
+
args.push("--chrome");
|
|
235
|
+
if (model)
|
|
236
|
+
args.push("--model", model);
|
|
237
|
+
if (effort)
|
|
238
|
+
args.push("--effort", effort);
|
|
239
|
+
if (maxTurns > 0)
|
|
240
|
+
args.push("--max-turns", String(maxTurns));
|
|
241
|
+
if (effectiveInstructionsFilePath) {
|
|
242
|
+
args.push("--append-system-prompt-file", effectiveInstructionsFilePath);
|
|
243
|
+
}
|
|
244
|
+
args.push("--add-dir", skillsDir);
|
|
245
|
+
if (extraArgs.length > 0)
|
|
246
|
+
args.push(...extraArgs);
|
|
247
|
+
return args;
|
|
248
|
+
};
|
|
249
|
+
const parseFallbackErrorMessage = (proc) => {
|
|
250
|
+
const stderrLine = proc.stderr
|
|
251
|
+
.split(/\r?\n/)
|
|
252
|
+
.map((line) => line.trim())
|
|
253
|
+
.find(Boolean) ?? "";
|
|
254
|
+
if ((proc.exitCode ?? 0) === 0) {
|
|
255
|
+
return "Failed to parse claude JSON output";
|
|
256
|
+
}
|
|
257
|
+
return stderrLine
|
|
258
|
+
? `Claude exited with code ${proc.exitCode ?? -1}: ${stderrLine}`
|
|
259
|
+
: `Claude exited with code ${proc.exitCode ?? -1}`;
|
|
260
|
+
};
|
|
261
|
+
const runAttempt = async (resumeSessionId) => {
|
|
262
|
+
const args = buildClaudeArgs(resumeSessionId);
|
|
263
|
+
if (onMeta) {
|
|
264
|
+
await onMeta({
|
|
265
|
+
adapterType: "claude_local",
|
|
266
|
+
command,
|
|
267
|
+
cwd,
|
|
268
|
+
commandArgs: args,
|
|
269
|
+
commandNotes,
|
|
270
|
+
env: redactEnvForLogs(env),
|
|
271
|
+
prompt,
|
|
272
|
+
context,
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
const proc = await runChildProcess(runId, command, args, {
|
|
276
|
+
cwd,
|
|
277
|
+
env,
|
|
278
|
+
stdin: prompt,
|
|
279
|
+
timeoutSec,
|
|
280
|
+
graceSec,
|
|
281
|
+
onLog,
|
|
282
|
+
});
|
|
283
|
+
const parsedStream = parseClaudeStreamJson(proc.stdout);
|
|
284
|
+
const parsed = parsedStream.resultJson ?? parseJson(proc.stdout);
|
|
285
|
+
return { proc, parsedStream, parsed };
|
|
286
|
+
};
|
|
287
|
+
const toAdapterResult = (attempt, opts) => {
|
|
288
|
+
const { proc, parsedStream, parsed } = attempt;
|
|
289
|
+
const loginMeta = detectClaudeLoginRequired({
|
|
290
|
+
parsed,
|
|
291
|
+
stdout: proc.stdout,
|
|
292
|
+
stderr: proc.stderr,
|
|
293
|
+
});
|
|
294
|
+
const errorMeta = loginMeta.loginUrl != null
|
|
295
|
+
? {
|
|
296
|
+
loginUrl: loginMeta.loginUrl,
|
|
297
|
+
}
|
|
298
|
+
: undefined;
|
|
299
|
+
if (proc.timedOut) {
|
|
300
|
+
return {
|
|
301
|
+
exitCode: proc.exitCode,
|
|
302
|
+
signal: proc.signal,
|
|
303
|
+
timedOut: true,
|
|
304
|
+
errorMessage: `Timed out after ${timeoutSec}s`,
|
|
305
|
+
errorCode: "timeout",
|
|
306
|
+
errorMeta,
|
|
307
|
+
clearSession: Boolean(opts.clearSessionOnMissingSession),
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
if (!parsed) {
|
|
311
|
+
return {
|
|
312
|
+
exitCode: proc.exitCode,
|
|
313
|
+
signal: proc.signal,
|
|
314
|
+
timedOut: false,
|
|
315
|
+
errorMessage: parseFallbackErrorMessage(proc),
|
|
316
|
+
errorCode: loginMeta.requiresLogin ? "claude_auth_required" : null,
|
|
317
|
+
errorMeta,
|
|
318
|
+
resultJson: {
|
|
319
|
+
stdout: proc.stdout,
|
|
320
|
+
stderr: proc.stderr,
|
|
321
|
+
},
|
|
322
|
+
clearSession: Boolean(opts.clearSessionOnMissingSession),
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
const usage = parsedStream.usage ??
|
|
326
|
+
(() => {
|
|
327
|
+
const usageObj = parseObject(parsed.usage);
|
|
328
|
+
return {
|
|
329
|
+
inputTokens: asNumber(usageObj.input_tokens, 0),
|
|
330
|
+
cachedInputTokens: asNumber(usageObj.cache_read_input_tokens, 0),
|
|
331
|
+
outputTokens: asNumber(usageObj.output_tokens, 0),
|
|
332
|
+
};
|
|
333
|
+
})();
|
|
334
|
+
const resolvedSessionId = parsedStream.sessionId ??
|
|
335
|
+
(asString(parsed.session_id, opts.fallbackSessionId ?? "") || opts.fallbackSessionId);
|
|
336
|
+
const resolvedSessionParams = resolvedSessionId
|
|
337
|
+
? {
|
|
338
|
+
sessionId: resolvedSessionId,
|
|
339
|
+
cwd,
|
|
340
|
+
...(workspaceId ? { workspaceId } : {}),
|
|
341
|
+
...(workspaceRepoUrl ? { repoUrl: workspaceRepoUrl } : {}),
|
|
342
|
+
...(workspaceRepoRef ? { repoRef: workspaceRepoRef } : {}),
|
|
343
|
+
}
|
|
344
|
+
: null;
|
|
345
|
+
const clearSessionForMaxTurns = isClaudeMaxTurnsResult(parsed);
|
|
346
|
+
return {
|
|
347
|
+
exitCode: proc.exitCode,
|
|
348
|
+
signal: proc.signal,
|
|
349
|
+
timedOut: false,
|
|
350
|
+
errorMessage: (proc.exitCode ?? 0) === 0
|
|
351
|
+
? null
|
|
352
|
+
: describeClaudeFailure(parsed) ?? `Claude exited with code ${proc.exitCode ?? -1}`,
|
|
353
|
+
errorCode: loginMeta.requiresLogin ? "claude_auth_required" : null,
|
|
354
|
+
errorMeta,
|
|
355
|
+
usage,
|
|
356
|
+
sessionId: resolvedSessionId,
|
|
357
|
+
sessionParams: resolvedSessionParams,
|
|
358
|
+
sessionDisplayId: resolvedSessionId,
|
|
359
|
+
provider: "anthropic",
|
|
360
|
+
model: parsedStream.model || asString(parsed.model, model),
|
|
361
|
+
billingType,
|
|
362
|
+
costUsd: parsedStream.costUsd ?? asNumber(parsed.total_cost_usd, 0),
|
|
363
|
+
resultJson: parsed,
|
|
364
|
+
summary: parsedStream.summary || asString(parsed.result, ""),
|
|
365
|
+
clearSession: clearSessionForMaxTurns || Boolean(opts.clearSessionOnMissingSession && !resolvedSessionId),
|
|
366
|
+
};
|
|
367
|
+
};
|
|
368
|
+
try {
|
|
369
|
+
const initial = await runAttempt(sessionId ?? null);
|
|
370
|
+
if (sessionId &&
|
|
371
|
+
!initial.proc.timedOut &&
|
|
372
|
+
(initial.proc.exitCode ?? 0) !== 0 &&
|
|
373
|
+
initial.parsed &&
|
|
374
|
+
isClaudeUnknownSessionError(initial.parsed)) {
|
|
375
|
+
await onLog("stderr", `[paperclip] Claude resume session "${sessionId}" is unavailable; retrying with a fresh session.\n`);
|
|
376
|
+
const retry = await runAttempt(null);
|
|
377
|
+
return toAdapterResult(retry, { fallbackSessionId: null, clearSessionOnMissingSession: true });
|
|
378
|
+
}
|
|
379
|
+
return toAdapterResult(initial, { fallbackSessionId: runtimeSessionId || runtime.sessionId });
|
|
380
|
+
}
|
|
381
|
+
finally {
|
|
382
|
+
fs.rm(skillsDir, { recursive: true, force: true }).catch(() => { });
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
//# sourceMappingURL=execute.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../src/server/execute.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { execute, runClaudeLogin } from "./execute.js";
|
|
2
|
+
export { testEnvironment } from "./test.js";
|
|
3
|
+
export { parseClaudeStreamJson, describeClaudeFailure, isClaudeMaxTurnsResult, isClaudeUnknownSessionError, } from "./parse.js";
|
|
4
|
+
import type { AdapterSessionCodec } from "@paperclipai/adapter-utils";
|
|
5
|
+
export declare const sessionCodec: AdapterSessionCodec;
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAMtE,eAAO,MAAM,YAAY,EAAE,mBA4C1B,CAAC"}
|