@howells/envelope 0.1.1 → 0.1.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/claude-code.d.ts +9 -0
- package/dist/claude-code.d.ts.map +1 -1
- package/dist/claude-code.js +69 -5
- package/dist/claude-code.js.map +1 -1
- package/package.json +1 -1
package/dist/claude-code.d.ts
CHANGED
|
@@ -6,6 +6,15 @@ export interface ClaudeCodeOptions {
|
|
|
6
6
|
model?: ClaudeCodeModel;
|
|
7
7
|
maxBudgetUsd?: number;
|
|
8
8
|
timeoutMs?: number;
|
|
9
|
+
/**
|
|
10
|
+
* Number of retries after a timeout (SIGTERM kill) or transient failure.
|
|
11
|
+
* Total attempts = 1 + retries.
|
|
12
|
+
*/
|
|
13
|
+
retries?: number;
|
|
14
|
+
/**
|
|
15
|
+
* Base delay between retries (ms). Uses simple linear backoff by attempt.
|
|
16
|
+
*/
|
|
17
|
+
retryDelayMs?: number;
|
|
9
18
|
permissionMode?: "dontAsk" | "default" | "bypassPermissions";
|
|
10
19
|
tools?: string;
|
|
11
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../src/claude-code.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC;AAErC,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,mBAAmB,CAAC;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB,CAAC,WAAW;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,WAAW,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC;CAChC;
|
|
1
|
+
{"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../src/claude-code.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC;AAErC,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,mBAAmB,CAAC;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB,CAAC,WAAW;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,WAAW,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC;CAChC;AAqDD,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,IAAI,EAAE;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B,4CAqEA;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;;GA8DA"}
|
package/dist/claude-code.js
CHANGED
|
@@ -12,7 +12,10 @@ function execFileAsync(file, args, opts) {
|
|
|
12
12
|
encoding: "utf8",
|
|
13
13
|
}, (err, stdout, stderr) => {
|
|
14
14
|
if (err) {
|
|
15
|
-
const
|
|
15
|
+
const code = err.code ?? "?";
|
|
16
|
+
const signal = err.signal ?? "?";
|
|
17
|
+
const killed = err.killed ?? false;
|
|
18
|
+
const e = new Error(`claude CLI failed (code=${code}, signal=${signal}, killed=${killed}): ${stderr || stdout}`);
|
|
16
19
|
e.cause = err;
|
|
17
20
|
reject(e);
|
|
18
21
|
return;
|
|
@@ -24,6 +27,13 @@ function execFileAsync(file, args, opts) {
|
|
|
24
27
|
function buildBaseArgs(opts) {
|
|
25
28
|
return ["--model", opts.model, "-p", "--permission-mode", opts.permissionMode, "--tools", opts.tools];
|
|
26
29
|
}
|
|
30
|
+
function sleep(ms) {
|
|
31
|
+
return new Promise((r) => setTimeout(r, ms));
|
|
32
|
+
}
|
|
33
|
+
function isTimeoutKill(err) {
|
|
34
|
+
const e = err;
|
|
35
|
+
return Boolean(e && e.killed === true && e.signal === "SIGTERM");
|
|
36
|
+
}
|
|
27
37
|
export async function claudeCodeStructured(args) {
|
|
28
38
|
const options = {
|
|
29
39
|
claudePath: args.options?.claudePath ?? "claude",
|
|
@@ -32,10 +42,12 @@ export async function claudeCodeStructured(args) {
|
|
|
32
42
|
model: args.options?.model ?? "opus",
|
|
33
43
|
maxBudgetUsd: args.options?.maxBudgetUsd ?? 5,
|
|
34
44
|
timeoutMs: args.options?.timeoutMs ?? 120_000,
|
|
45
|
+
retries: args.options?.retries ?? 1,
|
|
46
|
+
retryDelayMs: args.options?.retryDelayMs ?? 800,
|
|
35
47
|
permissionMode: args.options?.permissionMode ?? "dontAsk",
|
|
36
48
|
tools: args.options?.tools ?? "",
|
|
37
49
|
};
|
|
38
|
-
const
|
|
50
|
+
const cliArgs = [
|
|
39
51
|
...buildBaseArgs(options),
|
|
40
52
|
"--max-budget-usd",
|
|
41
53
|
String(options.maxBudgetUsd),
|
|
@@ -44,7 +56,33 @@ export async function claudeCodeStructured(args) {
|
|
|
44
56
|
"--json-schema",
|
|
45
57
|
args.jsonSchema,
|
|
46
58
|
args.prompt,
|
|
47
|
-
]
|
|
59
|
+
];
|
|
60
|
+
let stdout = null;
|
|
61
|
+
let lastErr = null;
|
|
62
|
+
for (let attempt = 0; attempt <= options.retries; attempt++) {
|
|
63
|
+
try {
|
|
64
|
+
({ stdout } = await execFileAsync(options.claudePath, cliArgs, {
|
|
65
|
+
cwd: options.cwd,
|
|
66
|
+
env: options.env,
|
|
67
|
+
timeoutMs: options.timeoutMs,
|
|
68
|
+
}));
|
|
69
|
+
lastErr = null;
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
catch (e) {
|
|
73
|
+
lastErr = e;
|
|
74
|
+
// Retry only if it's likely transient (timeout kill). Other errors should
|
|
75
|
+
// generally be surfaced immediately to avoid masking real failures.
|
|
76
|
+
if (!isTimeoutKill(e?.cause ?? e) || attempt >= options.retries) {
|
|
77
|
+
throw e;
|
|
78
|
+
}
|
|
79
|
+
const delay = options.retryDelayMs * (attempt + 1);
|
|
80
|
+
await sleep(delay);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (stdout == null) {
|
|
84
|
+
throw lastErr instanceof Error ? lastErr : new Error("claude CLI failed");
|
|
85
|
+
}
|
|
48
86
|
let envelopeUnknown;
|
|
49
87
|
try {
|
|
50
88
|
envelopeUnknown = JSON.parse(stdout);
|
|
@@ -69,17 +107,43 @@ export async function claudeCodeText(args) {
|
|
|
69
107
|
model: args.options?.model ?? "opus",
|
|
70
108
|
maxBudgetUsd: args.options?.maxBudgetUsd ?? 5,
|
|
71
109
|
timeoutMs: args.options?.timeoutMs ?? 120_000,
|
|
110
|
+
retries: args.options?.retries ?? 1,
|
|
111
|
+
retryDelayMs: args.options?.retryDelayMs ?? 800,
|
|
72
112
|
permissionMode: args.options?.permissionMode ?? "dontAsk",
|
|
73
113
|
tools: args.options?.tools ?? "",
|
|
74
114
|
};
|
|
75
|
-
const
|
|
115
|
+
const cliArgs = [
|
|
76
116
|
...buildBaseArgs(options),
|
|
77
117
|
"--max-budget-usd",
|
|
78
118
|
String(options.maxBudgetUsd),
|
|
79
119
|
"--output-format",
|
|
80
120
|
"json",
|
|
81
121
|
args.prompt,
|
|
82
|
-
]
|
|
122
|
+
];
|
|
123
|
+
let stdout = null;
|
|
124
|
+
let lastErr = null;
|
|
125
|
+
for (let attempt = 0; attempt <= options.retries; attempt++) {
|
|
126
|
+
try {
|
|
127
|
+
({ stdout } = await execFileAsync(options.claudePath, cliArgs, {
|
|
128
|
+
cwd: options.cwd,
|
|
129
|
+
env: options.env,
|
|
130
|
+
timeoutMs: options.timeoutMs,
|
|
131
|
+
}));
|
|
132
|
+
lastErr = null;
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
catch (e) {
|
|
136
|
+
lastErr = e;
|
|
137
|
+
if (!isTimeoutKill(e?.cause ?? e) || attempt >= options.retries) {
|
|
138
|
+
throw e;
|
|
139
|
+
}
|
|
140
|
+
const delay = options.retryDelayMs * (attempt + 1);
|
|
141
|
+
await sleep(delay);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
if (stdout == null) {
|
|
145
|
+
throw lastErr instanceof Error ? lastErr : new Error("claude CLI failed");
|
|
146
|
+
}
|
|
83
147
|
let envelopeUnknown;
|
|
84
148
|
try {
|
|
85
149
|
envelopeUnknown = JSON.parse(stdout);
|
package/dist/claude-code.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../src/claude-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../src/claude-code.ts"],"names":[],"mappings":"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"}
|