@dungle-scrubs/harness-cli-normalizer 0.1.2 → 0.3.0
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/README.md +144 -7
- package/dist/cli/args.d.ts +74 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +339 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/check.d.ts +2 -0
- package/dist/cli/check.d.ts.map +1 -0
- package/dist/cli/check.js +110 -0
- package/dist/cli/check.js.map +1 -0
- package/dist/cli/exit-codes.d.ts +7 -0
- package/dist/cli/exit-codes.d.ts.map +1 -0
- package/dist/cli/exit-codes.js +11 -0
- package/dist/cli/exit-codes.js.map +1 -0
- package/dist/cli/help.d.ts +7 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +110 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/index.d.ts +4 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +170 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/inspect.d.ts +3 -0
- package/dist/cli/inspect.d.ts.map +1 -0
- package/dist/cli/inspect.js +170 -0
- package/dist/cli/inspect.js.map +1 -0
- package/dist/cli/ls.d.ts +2 -0
- package/dist/cli/ls.d.ts.map +1 -0
- package/dist/cli/ls.js +10 -0
- package/dist/cli/ls.js.map +1 -0
- package/dist/cli/render.d.ts +8 -0
- package/dist/cli/render.d.ts.map +1 -0
- package/dist/cli/render.js +55 -0
- package/dist/cli/render.js.map +1 -0
- package/dist/cli/resolve-harness.d.ts +4 -0
- package/dist/cli/resolve-harness.d.ts.map +1 -0
- package/dist/cli/resolve-harness.js +31 -0
- package/dist/cli/resolve-harness.js.map +1 -0
- package/dist/cli/run.d.ts +2 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +280 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/session.d.ts +2 -0
- package/dist/cli/session.d.ts.map +1 -0
- package/dist/cli/session.js +128 -0
- package/dist/cli/session.js.map +1 -0
- package/dist/cli/version.d.ts +2 -0
- package/dist/cli/version.d.ts.map +1 -0
- package/dist/cli/version.js +34 -0
- package/dist/cli/version.js.map +1 -0
- package/dist/cli.js +2 -0
- package/dist/execution/decode.d.ts.map +1 -1
- package/dist/execution/decode.js +32 -0
- package/dist/execution/decode.js.map +1 -1
- package/dist/execution/deps.d.ts +7 -1
- package/dist/execution/deps.d.ts.map +1 -1
- package/dist/execution/events.d.ts +6 -2
- package/dist/execution/events.d.ts.map +1 -1
- package/dist/execution/events.js.map +1 -1
- package/dist/execution/failure.d.ts +45 -0
- package/dist/execution/failure.d.ts.map +1 -0
- package/dist/execution/failure.js +121 -0
- package/dist/execution/failure.js.map +1 -0
- package/dist/execution/node-deps.d.ts.map +1 -1
- package/dist/execution/node-deps.js +19 -0
- package/dist/execution/node-deps.js.map +1 -1
- package/dist/execution/stream-turn.d.ts +2 -0
- package/dist/execution/stream-turn.d.ts.map +1 -1
- package/dist/execution/stream-turn.js +181 -16
- package/dist/execution/stream-turn.js.map +1 -1
- package/dist/interpretation/argv.d.ts +16 -4
- package/dist/interpretation/argv.d.ts.map +1 -1
- package/dist/interpretation/argv.js +68 -19
- package/dist/interpretation/argv.js.map +1 -1
- package/dist/interpretation/dimensions.d.ts +0 -2
- package/dist/interpretation/dimensions.d.ts.map +1 -1
- package/dist/interpretation/dimensions.js +0 -2
- package/dist/interpretation/dimensions.js.map +1 -1
- package/dist/interpretation/limits.d.ts +10 -1
- package/dist/interpretation/limits.d.ts.map +1 -1
- package/dist/interpretation/limits.js +84 -5
- package/dist/interpretation/limits.js.map +1 -1
- package/dist/interpretation/refusal.d.ts +31 -0
- package/dist/interpretation/refusal.d.ts.map +1 -0
- package/dist/interpretation/refusal.js +87 -0
- package/dist/interpretation/refusal.js.map +1 -0
- package/dist/interpretation/turn-options.d.ts +18 -0
- package/dist/interpretation/turn-options.d.ts.map +1 -0
- package/dist/interpretation/turn-options.js +417 -0
- package/dist/interpretation/turn-options.js.map +1 -0
- package/dist/interpretation/vocabulary.d.ts +5 -0
- package/dist/interpretation/vocabulary.d.ts.map +1 -1
- package/dist/interpretation/vocabulary.js +1 -1
- package/dist/interpretation/vocabulary.js.map +1 -1
- package/dist/knowledge/claude-code.d.ts +13 -1
- package/dist/knowledge/claude-code.d.ts.map +1 -1
- package/dist/knowledge/claude-code.js +35 -13
- package/dist/knowledge/claude-code.js.map +1 -1
- package/dist/knowledge/codex.d.ts.map +1 -1
- package/dist/knowledge/codex.js +25 -14
- package/dist/knowledge/codex.js.map +1 -1
- package/dist/knowledge/descriptor.d.ts +118 -14
- package/dist/knowledge/descriptor.d.ts.map +1 -1
- package/dist/knowledge/descriptor.js +58 -0
- package/dist/knowledge/descriptor.js.map +1 -1
- package/dist/knowledge/matchers.d.ts +3 -3
- package/dist/knowledge/matchers.d.ts.map +1 -1
- package/dist/knowledge/matchers.js +19 -6
- package/dist/knowledge/matchers.js.map +1 -1
- package/dist/knowledge/muse.d.ts +2 -2
- package/dist/knowledge/muse.d.ts.map +1 -1
- package/dist/knowledge/muse.js +22 -6
- package/dist/knowledge/muse.js.map +1 -1
- package/dist/knowledge/overrides.d.ts +7 -0
- package/dist/knowledge/overrides.d.ts.map +1 -1
- package/dist/knowledge/overrides.js +76 -0
- package/dist/knowledge/overrides.js.map +1 -1
- package/dist/knowledge/pi.d.ts.map +1 -1
- package/dist/knowledge/pi.js +25 -3
- package/dist/knowledge/pi.js.map +1 -1
- package/package.json +5 -2
- package/src/cli/args.ts +381 -0
- package/src/cli/check.ts +136 -0
- package/src/cli/exit-codes.ts +13 -0
- package/src/cli/help.ts +114 -0
- package/src/cli/index.ts +177 -0
- package/src/cli/inspect.ts +174 -0
- package/src/cli/ls.ts +14 -0
- package/src/cli/render.ts +62 -0
- package/src/cli/resolve-harness.ts +33 -0
- package/src/cli/run.ts +280 -0
- package/src/cli/session.ts +137 -0
- package/src/cli/version.ts +32 -0
- package/src/execution/decode.ts +32 -0
- package/src/execution/deps.ts +7 -1
- package/src/execution/events.ts +9 -2
- package/src/execution/failure.ts +159 -0
- package/src/execution/node-deps.ts +17 -0
- package/src/execution/stream-turn.ts +189 -17
- package/src/interpretation/argv.ts +85 -27
- package/src/interpretation/dimensions.ts +0 -6
- package/src/interpretation/limits.ts +97 -6
- package/src/interpretation/refusal.ts +116 -0
- package/src/interpretation/turn-options.ts +424 -0
- package/src/interpretation/vocabulary.ts +1 -1
- package/src/knowledge/claude-code.ts +35 -13
- package/src/knowledge/codex.ts +25 -14
- package/src/knowledge/descriptor.ts +138 -12
- package/src/knowledge/matchers.ts +22 -9
- package/src/knowledge/muse.ts +22 -6
- package/src/knowledge/overrides.ts +97 -0
- package/src/knowledge/pi.ts +25 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/cli/inspect.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/ls.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ls.d.ts","sourceRoot":"","sources":["../../src/cli/ls.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,EAAE,QAAO,IAUrB,CAAC"}
|
package/dist/cli/ls.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { defaultDescriptors } from "../knowledge/overrides.js";
|
|
2
|
+
export const ls = () => {
|
|
3
|
+
const descriptors = Object.values(defaultDescriptors()).filter((d) => d !== undefined);
|
|
4
|
+
for (const h of descriptors) {
|
|
5
|
+
const source = h.versionSource.kind === "npm" ? `npm:${h.versionSource.package}` : `installed:${h.bin}`;
|
|
6
|
+
// Format: "claude@2.1.229 (npm:@anthropic-ai/claude-code)"
|
|
7
|
+
process.stdout.write(`${h.name}@${h.verifiedAgainst} (${source})\n`);
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=ls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ls.js","sourceRoot":"","sources":["../../src/cli/ls.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,MAAM,CAAC,MAAM,EAAE,GAAG,GAAS,EAAE;IAC3B,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAC5D,CAAC,CAAC,EAA0B,EAAE,CAAC,CAAC,KAAK,SAAS,CAC/C,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,MAAM,MAAM,GACV,CAAC,CAAC,aAAa,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,CAAC;QAC3F,2DAA2D;QAC3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,eAAe,KAAK,MAAM,KAAK,CAAC,CAAC;IACvE,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { HarnessEvent } from "../execution/events.js";
|
|
2
|
+
export interface RenderState {
|
|
3
|
+
streamed: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare const createRenderState: () => RenderState;
|
|
6
|
+
export declare const renderEvent: (event: HarnessEvent, state: RenderState) => void;
|
|
7
|
+
export declare const writeEventNdjson: (event: HarnessEvent) => void;
|
|
8
|
+
//# sourceMappingURL=render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/cli/render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAQ3D,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,iBAAiB,QAAO,WAAoC,CAAC;AAE1E,eAAO,MAAM,WAAW,UAAW,YAAY,SAAS,WAAW,KAAG,IA2CrE,CAAC;AAEF,eAAO,MAAM,gBAAgB,UAAW,YAAY,KAAG,IAEtD,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
const dim = (s) => `\x1b[2m${s}\x1b[0m`;
|
|
2
|
+
const cyan = (s) => `\x1b[36m${s}\x1b[0m`;
|
|
3
|
+
const green = (s) => `\x1b[32m${s}\x1b[0m`;
|
|
4
|
+
const red = (s) => `\x1b[31m${s}\x1b[0m`;
|
|
5
|
+
const yellow = (s) => `\x1b[33m${s}\x1b[0m`;
|
|
6
|
+
export const createRenderState = () => ({ streamed: false });
|
|
7
|
+
export const renderEvent = (event, state) => {
|
|
8
|
+
switch (event.kind) {
|
|
9
|
+
case "identity":
|
|
10
|
+
process.stdout.write(dim(` ● session ${event.sessionId} (${event.authority})\n`));
|
|
11
|
+
break;
|
|
12
|
+
case "token":
|
|
13
|
+
process.stdout.write(event.text);
|
|
14
|
+
state.streamed = true;
|
|
15
|
+
break;
|
|
16
|
+
case "message":
|
|
17
|
+
if (!state.streamed)
|
|
18
|
+
process.stdout.write(event.text);
|
|
19
|
+
break;
|
|
20
|
+
case "tool":
|
|
21
|
+
process.stdout.write(cyan(`\n ⚙ ${event.name}`));
|
|
22
|
+
break;
|
|
23
|
+
case "progress":
|
|
24
|
+
// droppable
|
|
25
|
+
break;
|
|
26
|
+
case "context":
|
|
27
|
+
process.stdout.write(dim(`\n ▪ context ${event.usedPct}%`));
|
|
28
|
+
break;
|
|
29
|
+
case "limit":
|
|
30
|
+
process.stdout.write(yellow(`\n ⚠ limit: ${event.code} ${event.message}`));
|
|
31
|
+
break;
|
|
32
|
+
case "error":
|
|
33
|
+
process.stdout.write(red(`\n ✗ ${event.message}`));
|
|
34
|
+
break;
|
|
35
|
+
case "failure": {
|
|
36
|
+
const detail = event.message ?? `${event.class}`;
|
|
37
|
+
process.stdout.write(red(`\n ✗ failure ${event.class}: ${detail}`));
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
case "done": {
|
|
41
|
+
const mark = event.cause === "clean" ? green("○ clean") : red(`○ ${event.cause}`);
|
|
42
|
+
const tail = event.failure ? ` ${event.failure.class}: ${event.failure.message}` : "";
|
|
43
|
+
process.stdout.write(`\n ${mark} (exit ${event.exitCode ?? "none"})${tail}\n`);
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
default: {
|
|
47
|
+
const exhaustive = event;
|
|
48
|
+
process.stdout.write(dim(`\n ? ${exhaustive.kind}`));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
export const writeEventNdjson = (event) => {
|
|
53
|
+
process.stdout.write(`${JSON.stringify(event)}\n`);
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/cli/render.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { HarnessDescriptor } from "../knowledge/descriptor.js";
|
|
2
|
+
export declare const resolveHarness: (name: string) => HarnessDescriptor;
|
|
3
|
+
export declare const SUPPORTED_HARNESSES: readonly ["claude", "codex", "pi", "muse"];
|
|
4
|
+
//# sourceMappingURL=resolve-harness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-harness.d.ts","sourceRoot":"","sources":["../../src/cli/resolve-harness.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAIpE,eAAO,MAAM,cAAc,SAAU,MAAM,KAAG,iBAyB7C,CAAC;AAEF,eAAO,MAAM,mBAAmB,4CAA8B,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ArgvRefusalError } from "../interpretation/refusal.js";
|
|
2
|
+
import { HARNESS_NAMES } from "../knowledge/descriptor.js";
|
|
3
|
+
import { defaultDescriptors } from "../knowledge/overrides.js";
|
|
4
|
+
export const resolveHarness = (name) => {
|
|
5
|
+
if (!HARNESS_NAMES.includes(name)) {
|
|
6
|
+
// Use ArgvRefusalError shape for consistency but throw generic with supported list
|
|
7
|
+
// Caller will map to exit 2 with supported list
|
|
8
|
+
const err = new ArgvRefusalError({
|
|
9
|
+
issue: "unsupported-option",
|
|
10
|
+
harness: "claude",
|
|
11
|
+
supported: [...HARNESS_NAMES],
|
|
12
|
+
detail: `unknown harness ${JSON.stringify(name)}`,
|
|
13
|
+
});
|
|
14
|
+
// Overwrite message to be harness-specific
|
|
15
|
+
err.message = `unknown harness ${JSON.stringify(name)}; supported: ${[...HARNESS_NAMES].join(", ")}`;
|
|
16
|
+
throw err;
|
|
17
|
+
}
|
|
18
|
+
const map = defaultDescriptors();
|
|
19
|
+
const h = map[name];
|
|
20
|
+
if (!h) {
|
|
21
|
+
throw new ArgvRefusalError({
|
|
22
|
+
issue: "unsupported-option",
|
|
23
|
+
harness: name,
|
|
24
|
+
supported: [...HARNESS_NAMES],
|
|
25
|
+
detail: `harness ${name} not found`,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return h;
|
|
29
|
+
};
|
|
30
|
+
export const SUPPORTED_HARNESSES = [...HARNESS_NAMES];
|
|
31
|
+
//# sourceMappingURL=resolve-harness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-harness.js","sourceRoot":"","sources":["../../src/cli/resolve-harness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAqB,EAAE;IAChE,IAAI,CAAE,aAAmC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACzD,mFAAmF;QACnF,gDAAgD;QAChD,MAAM,GAAG,GAAG,IAAI,gBAAgB,CAAC;YAC/B,KAAK,EAAE,oBAAoB;YAC3B,OAAO,EAAE,QAAQ;YACjB,SAAS,EAAE,CAAC,GAAG,aAAa,CAAC;YAC7B,MAAM,EAAE,mBAAmB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;SAClD,CAAC,CAAC;QACH,2CAA2C;QAC3C,GAAG,CAAC,OAAO,GAAG,mBAAmB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACrG,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC;IACjC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAwB,CAAC,CAAC;IACxC,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,IAAI,gBAAgB,CAAC;YACzB,KAAK,EAAE,oBAAoB;YAC3B,OAAO,EAAE,IAAgB;YACzB,SAAS,EAAE,CAAC,GAAG,aAAa,CAAC;YAC7B,MAAM,EAAE,WAAW,IAAI,YAAY;SACpC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAG,aAAa,CAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,GAAG,gBAAuB,MAAM,WAAW,MAAM,EAAE,KAAG,OAAO,CAAC,IAAI,CA8Q9E,CAAC"}
|
package/dist/cli/run.js
ADDED
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
import { nodeRunnerDeps } from "../execution/node-deps.js";
|
|
2
|
+
import { KILL_GRACE_MS, redactArgv, streamTurn } from "../execution/stream-turn.js";
|
|
3
|
+
import { buildLaunchArgv, buildResumeArgv } from "../interpretation/argv.js";
|
|
4
|
+
import { ArgvRefusalError } from "../interpretation/refusal.js";
|
|
5
|
+
import { parseRunExtra, parseTurnOptions, resolvePromptAsync } from "./args.js";
|
|
6
|
+
import { createRenderState, renderEvent, writeEventNdjson } from "./render.js";
|
|
7
|
+
import { resolveHarness } from "./resolve-harness.js";
|
|
8
|
+
export const run = async (harnessName, rawArgs) => {
|
|
9
|
+
const h = resolveHarness(harnessName);
|
|
10
|
+
if (rawArgs.includes("--help") || rawArgs.includes("-h")) {
|
|
11
|
+
const { RUN_HELP } = await import("./help.js");
|
|
12
|
+
process.stdout.write(RUN_HELP);
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const { parseCommonFlags, detectPositionalPromptInjection } = await import("./args.js");
|
|
16
|
+
const injection = detectPositionalPromptInjection(rawArgs);
|
|
17
|
+
if (injection) {
|
|
18
|
+
const err = new ArgvRefusalError({
|
|
19
|
+
issue: "prompt-flag-injection",
|
|
20
|
+
harness: h.name,
|
|
21
|
+
supported: ["prompt must not start with '-'"],
|
|
22
|
+
detail: `it would be parsed as a flag by ${h.bin}`,
|
|
23
|
+
});
|
|
24
|
+
process.stderr.write(`${err.message}\n`);
|
|
25
|
+
process.stderr.write(`supported: prompt must not start with '-'\n`);
|
|
26
|
+
process.exitCode = 2;
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
let parsed;
|
|
30
|
+
try {
|
|
31
|
+
parsed = parseCommonFlags(rawArgs);
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
35
|
+
process.stderr.write(`unknown flag: ${message}\n`);
|
|
36
|
+
process.stderr.write(`Run 'hcn run --help' for usage.\n`);
|
|
37
|
+
process.exitCode = 2;
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const values = parsed.values;
|
|
41
|
+
const positionals = parsed.positionals;
|
|
42
|
+
// positionals may contain prompt if not using flag; harness already consumed so first positional is prompt
|
|
43
|
+
const positionalPrompt = positionals.length > 0 ? positionals[0] : undefined;
|
|
44
|
+
if (positionals.length > 1) {
|
|
45
|
+
process.stderr.write(`too many positionals for run; expected one prompt\n`);
|
|
46
|
+
process.exitCode = 2;
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const wantJson = values.json === true;
|
|
50
|
+
// Resolve prompt (async for --prompt-file -)
|
|
51
|
+
let prompt;
|
|
52
|
+
let promptSource;
|
|
53
|
+
try {
|
|
54
|
+
const resolved = await resolvePromptAsync({
|
|
55
|
+
positionalPrompt,
|
|
56
|
+
promptFlag: values.prompt,
|
|
57
|
+
promptFile: values["prompt-file"],
|
|
58
|
+
});
|
|
59
|
+
prompt = resolved.prompt;
|
|
60
|
+
promptSource = resolved.source;
|
|
61
|
+
}
|
|
62
|
+
catch (err) {
|
|
63
|
+
if (err instanceof ArgvRefusalError) {
|
|
64
|
+
process.stderr.write(`${err.message}\n`);
|
|
65
|
+
if (err.supported.length)
|
|
66
|
+
process.stderr.write(`supported: ${err.supported.join(", ")}\n`);
|
|
67
|
+
process.exitCode = 2;
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
if (err instanceof Error && err.code === "ENOENT") {
|
|
71
|
+
process.stderr.write(`prompt file not found: ${err.message}\n`);
|
|
72
|
+
process.exitCode = 2;
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
throw err;
|
|
76
|
+
}
|
|
77
|
+
// Build turn options
|
|
78
|
+
let turnOpts;
|
|
79
|
+
try {
|
|
80
|
+
turnOpts = parseTurnOptions(values);
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
if (err instanceof ArgvRefusalError) {
|
|
84
|
+
process.stderr.write(`${err.message}\n`);
|
|
85
|
+
if (err.supported.length)
|
|
86
|
+
process.stderr.write(`supported: ${err.supported.join(", ")}\n`);
|
|
87
|
+
process.exitCode = 2;
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
throw err;
|
|
91
|
+
}
|
|
92
|
+
let extra;
|
|
93
|
+
try {
|
|
94
|
+
extra = parseRunExtra(values);
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
if (err instanceof ArgvRefusalError) {
|
|
98
|
+
process.stderr.write(`${err.message}\n`);
|
|
99
|
+
if (err.supported.length)
|
|
100
|
+
process.stderr.write(`supported: ${err.supported.join(", ")}\n`);
|
|
101
|
+
process.exitCode = 2;
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
throw err;
|
|
105
|
+
}
|
|
106
|
+
const isExplicit = promptSource !== "positional";
|
|
107
|
+
const fullOpts = {
|
|
108
|
+
...turnOpts,
|
|
109
|
+
prompt,
|
|
110
|
+
cwd: extra.cwd,
|
|
111
|
+
env: extra.env,
|
|
112
|
+
resume: extra.resume,
|
|
113
|
+
...(isExplicit ? { __explicitPrompt: true } : {}),
|
|
114
|
+
};
|
|
115
|
+
// Pre-validate via building argv to catch refusals before spawn (so we don't spawn on bad args)
|
|
116
|
+
let _validated = false;
|
|
117
|
+
let preArgv = null;
|
|
118
|
+
try {
|
|
119
|
+
if (fullOpts.resume) {
|
|
120
|
+
preArgv = buildResumeArgv(h, {
|
|
121
|
+
...turnOpts,
|
|
122
|
+
prompt,
|
|
123
|
+
sessionId: fullOpts.resume,
|
|
124
|
+
__explicitPrompt: isExplicit,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
preArgv = buildLaunchArgv(h, {
|
|
129
|
+
...turnOpts,
|
|
130
|
+
prompt,
|
|
131
|
+
__explicitPrompt: isExplicit,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
_validated = true;
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
if (err instanceof ArgvRefusalError) {
|
|
138
|
+
process.stderr.write(`${err.message}\n`);
|
|
139
|
+
if (err.supported.length)
|
|
140
|
+
process.stderr.write(`supported: ${err.supported.join(", ")}\n`);
|
|
141
|
+
process.exitCode = 2;
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
throw err;
|
|
145
|
+
}
|
|
146
|
+
// preArgv is already set via validated build; no extra handling needed for explicit prompt bypass
|
|
147
|
+
// since buildLaunchArgv now respects __explicitPrompt.
|
|
148
|
+
if (preArgv) {
|
|
149
|
+
const redacted = redactArgv(preArgv, prompt);
|
|
150
|
+
if (!wantJson) {
|
|
151
|
+
process.stderr.write(`spawn: ${redacted.join(" ")}\n`);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
// In JSON mode, diagnostics to stderr only
|
|
155
|
+
process.stderr.write(`spawn: ${redacted.join(" ")}\n`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// Delete HERDR_ENV before spawn
|
|
159
|
+
delete process.env.HERDR_ENV;
|
|
160
|
+
const deps = nodeRunnerDeps();
|
|
161
|
+
// Signal handling
|
|
162
|
+
const _currentProc = null;
|
|
163
|
+
// We'll need to track the spawned process via deps.signal; but streamTurn owns process handle.
|
|
164
|
+
// Instead we intercept deps.signal via a wrapper that captures proc.
|
|
165
|
+
// Simpler: use deps directly and handle SIGINT by calling process.kill? But spec says via injected signal.
|
|
166
|
+
// We'll create a wrapper deps where signal captures last proc.
|
|
167
|
+
let lastProc = null;
|
|
168
|
+
const originalSignal = deps.signal;
|
|
169
|
+
const wrappedDeps = {
|
|
170
|
+
...deps,
|
|
171
|
+
signal: (proc, sig) => {
|
|
172
|
+
lastProc = proc;
|
|
173
|
+
originalSignal(proc, sig);
|
|
174
|
+
},
|
|
175
|
+
spawn: (argv, opts) => {
|
|
176
|
+
const proc = deps.spawn(argv, opts);
|
|
177
|
+
lastProc = proc;
|
|
178
|
+
return proc;
|
|
179
|
+
},
|
|
180
|
+
};
|
|
181
|
+
let interrupted = false;
|
|
182
|
+
const onSig = async () => {
|
|
183
|
+
if (interrupted)
|
|
184
|
+
return;
|
|
185
|
+
interrupted = true;
|
|
186
|
+
if (lastProc) {
|
|
187
|
+
try {
|
|
188
|
+
wrappedDeps.signal(lastProc, "SIGTERM");
|
|
189
|
+
await new Promise((resolve) => {
|
|
190
|
+
setTimeout(() => {
|
|
191
|
+
if (lastProc) {
|
|
192
|
+
try {
|
|
193
|
+
wrappedDeps.signal(lastProc, "SIGKILL");
|
|
194
|
+
}
|
|
195
|
+
catch { }
|
|
196
|
+
}
|
|
197
|
+
resolve();
|
|
198
|
+
}, KILL_GRACE_MS);
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
catch { }
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
process.on("SIGINT", onSig);
|
|
205
|
+
process.on("SIGTERM", onSig);
|
|
206
|
+
const state = createRenderState();
|
|
207
|
+
let lastEvent = null;
|
|
208
|
+
let exitCode = 0;
|
|
209
|
+
try {
|
|
210
|
+
// streamTurn handles both launch and resume via TurnRunOptions
|
|
211
|
+
const events = streamTurn(h, fullOpts, wrappedDeps);
|
|
212
|
+
for await (const event of events) {
|
|
213
|
+
lastEvent = event;
|
|
214
|
+
if (wantJson) {
|
|
215
|
+
writeEventNdjson(event);
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
renderEvent(event, state);
|
|
219
|
+
}
|
|
220
|
+
if (event.kind === "done") {
|
|
221
|
+
if (event.cause === "clean")
|
|
222
|
+
exitCode = 0;
|
|
223
|
+
else
|
|
224
|
+
exitCode = 1;
|
|
225
|
+
// If failure class is rejected? But done.cause for rejected would be failed? Still 1 per mapping, but refusal before spawn is 2.
|
|
226
|
+
// The RFC says limit/auth ->1, transport ->1, refusal ->2 (already handled). So done non-clean =>1.
|
|
227
|
+
}
|
|
228
|
+
if (event.kind === "limit") {
|
|
229
|
+
// Also ensure exitCode will be 1 (handled via done)
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
catch (err) {
|
|
234
|
+
if (err instanceof ArgvRefusalError) {
|
|
235
|
+
process.stderr.write(`${err.message}\n`);
|
|
236
|
+
if (err.supported.length)
|
|
237
|
+
process.stderr.write(`supported: ${err.supported.join(", ")}\n`);
|
|
238
|
+
process.exitCode = 2;
|
|
239
|
+
process.off("SIGINT", onSig);
|
|
240
|
+
process.off("SIGTERM", onSig);
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
// Transport / spawn failure
|
|
244
|
+
process.stderr.write(`run failed: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
245
|
+
if (wantJson && lastEvent?.kind !== "done") {
|
|
246
|
+
// Emit failure+done if stream didn't? streamTurn should already emit done, but if we crashed before spawn, synthesize?
|
|
247
|
+
const failure = {
|
|
248
|
+
kind: "failure",
|
|
249
|
+
class: "transport",
|
|
250
|
+
retryable: true,
|
|
251
|
+
message: String(err),
|
|
252
|
+
};
|
|
253
|
+
process.stdout.write(`${JSON.stringify(failure)}\n`);
|
|
254
|
+
process.stdout.write(`${JSON.stringify({ kind: "done", exitCode: null, cause: "failed", failure })}\n`);
|
|
255
|
+
}
|
|
256
|
+
process.exitCode = 1;
|
|
257
|
+
process.off("SIGINT", onSig);
|
|
258
|
+
process.off("SIGTERM", onSig);
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
finally {
|
|
262
|
+
process.off("SIGINT", onSig);
|
|
263
|
+
process.off("SIGTERM", onSig);
|
|
264
|
+
}
|
|
265
|
+
// If no done event was seen (should not happen), exit 1
|
|
266
|
+
if (lastEvent === null) {
|
|
267
|
+
process.exitCode = 1;
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
if (lastEvent.kind === "done") {
|
|
271
|
+
process.exitCode = exitCode;
|
|
272
|
+
}
|
|
273
|
+
else {
|
|
274
|
+
// Stream ended without done (e.g., consumer break via head)
|
|
275
|
+
process.exitCode = interrupted ? 1 : 0;
|
|
276
|
+
}
|
|
277
|
+
if (interrupted && process.exitCode === 0)
|
|
278
|
+
process.exitCode = 1;
|
|
279
|
+
};
|
|
280
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/cli/session.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,OAAO,gBAAuB,MAAM,WAAW,MAAM,EAAE,KAAG,OAAO,CAAC,IAAI,CAgIlF,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { createInterface } from "node:readline/promises";
|
|
3
|
+
import { nodeRunnerDeps } from "../execution/node-deps.js";
|
|
4
|
+
import { CLOSE_GRACE_MS, openSession } from "../execution/open-session.js";
|
|
5
|
+
import { ArgvRefusalError } from "../interpretation/refusal.js";
|
|
6
|
+
import { createRenderState, renderEvent } from "./render.js";
|
|
7
|
+
import { resolveHarness } from "./resolve-harness.js";
|
|
8
|
+
export const session = async (harnessName, rawArgs) => {
|
|
9
|
+
// Only claude supported
|
|
10
|
+
if (harnessName !== "claude") {
|
|
11
|
+
const err = new ArgvRefusalError({
|
|
12
|
+
issue: "no-session-mode",
|
|
13
|
+
harness: harnessName,
|
|
14
|
+
supported: ["claude"],
|
|
15
|
+
detail: `session is claude-only; ${harnessName} declares no persistent headless session mode`,
|
|
16
|
+
});
|
|
17
|
+
process.stderr.write(`${err.message}\n`);
|
|
18
|
+
process.stderr.write(`supported: claude\n`);
|
|
19
|
+
process.exitCode = 2;
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const h = resolveHarness(harnessName);
|
|
23
|
+
if (rawArgs.includes("--help") || rawArgs.includes("-h")) {
|
|
24
|
+
const { SESSION_HELP } = await import("./help.js");
|
|
25
|
+
process.stdout.write(SESSION_HELP);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const { parseCommonFlags } = await import("./args.js");
|
|
29
|
+
let parsed;
|
|
30
|
+
try {
|
|
31
|
+
parsed = parseCommonFlags(rawArgs);
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
35
|
+
process.stderr.write(`unknown flag: ${message}\n`);
|
|
36
|
+
process.exitCode = 2;
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const values = parsed.values;
|
|
40
|
+
const sessionId = values["session-id"] ??
|
|
41
|
+
values.resume ??
|
|
42
|
+
randomUUID();
|
|
43
|
+
const model = values.model;
|
|
44
|
+
const cwd = values.cwd;
|
|
45
|
+
// Validate sessionId shape? let openSession handle via assertUsableSessionId
|
|
46
|
+
delete process.env.HERDR_ENV;
|
|
47
|
+
const deps = nodeRunnerDeps();
|
|
48
|
+
let handle;
|
|
49
|
+
try {
|
|
50
|
+
handle = openSession(h, { sessionId, model, cwd }, deps);
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
if (err instanceof ArgvRefusalError) {
|
|
54
|
+
process.stderr.write(`${err.message}\n`);
|
|
55
|
+
if (err.supported.length)
|
|
56
|
+
process.stderr.write(`supported: ${err.supported.join(", ")}\n`);
|
|
57
|
+
process.exitCode = 2;
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
process.stderr.write(`could not open session: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
61
|
+
process.exitCode = 1;
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
process.stdout.write(`interactive ${h.name} session ${sessionId}\n(empty line or "exit" to quit)\n`);
|
|
65
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
66
|
+
// Handle SIGINT to close session cleanly
|
|
67
|
+
let closing = false;
|
|
68
|
+
const doClose = async () => {
|
|
69
|
+
if (closing)
|
|
70
|
+
return;
|
|
71
|
+
closing = true;
|
|
72
|
+
try {
|
|
73
|
+
// race with CLOSE_GRACE_MS ? openSession's close does escalation internally, but we add outer guard
|
|
74
|
+
const timeout = setTimeout(() => {
|
|
75
|
+
process.stderr.write(`close timed out after ${CLOSE_GRACE_MS}ms\n`);
|
|
76
|
+
}, CLOSE_GRACE_MS + 1000);
|
|
77
|
+
await handle.close();
|
|
78
|
+
clearTimeout(timeout);
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
process.stderr.write(`close failed: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
82
|
+
}
|
|
83
|
+
rl.close();
|
|
84
|
+
};
|
|
85
|
+
process.on("SIGINT", doClose);
|
|
86
|
+
process.on("SIGTERM", doClose);
|
|
87
|
+
const turns = handle.turns[Symbol.asyncIterator]();
|
|
88
|
+
try {
|
|
89
|
+
while (true) {
|
|
90
|
+
let line;
|
|
91
|
+
try {
|
|
92
|
+
line = await rl.question("you › ");
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// readline closed (Ctrl-D)
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
const trimmed = line.trim();
|
|
99
|
+
if (trimmed === "" || trimmed === "exit")
|
|
100
|
+
break;
|
|
101
|
+
const result = handle.send(line);
|
|
102
|
+
if (result.disposition === "queued") {
|
|
103
|
+
process.stderr.write(`disposition: queued (turn in progress)\n`);
|
|
104
|
+
}
|
|
105
|
+
const turn = (await turns.next()).value;
|
|
106
|
+
if (turn === undefined)
|
|
107
|
+
break;
|
|
108
|
+
const state = createRenderState();
|
|
109
|
+
for await (const event of turn) {
|
|
110
|
+
renderEvent(event, state);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch (err) {
|
|
115
|
+
process.stderr.write(`session error: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
116
|
+
process.exitCode = 1;
|
|
117
|
+
}
|
|
118
|
+
finally {
|
|
119
|
+
process.off("SIGINT", doClose);
|
|
120
|
+
process.off("SIGTERM", doClose);
|
|
121
|
+
try {
|
|
122
|
+
await doClose();
|
|
123
|
+
}
|
|
124
|
+
catch { }
|
|
125
|
+
rl.close();
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/cli/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/cli/version.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,UAAU,QAAO,MAyB7B,CAAC"}
|