@dungle-scrubs/harness-cli-normalizer 0.1.3 → 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.
Files changed (151) hide show
  1. package/README.md +144 -7
  2. package/dist/cli/args.d.ts +74 -0
  3. package/dist/cli/args.d.ts.map +1 -0
  4. package/dist/cli/args.js +339 -0
  5. package/dist/cli/args.js.map +1 -0
  6. package/dist/cli/check.d.ts +2 -0
  7. package/dist/cli/check.d.ts.map +1 -0
  8. package/dist/cli/check.js +110 -0
  9. package/dist/cli/check.js.map +1 -0
  10. package/dist/cli/exit-codes.d.ts +7 -0
  11. package/dist/cli/exit-codes.d.ts.map +1 -0
  12. package/dist/cli/exit-codes.js +11 -0
  13. package/dist/cli/exit-codes.js.map +1 -0
  14. package/dist/cli/help.d.ts +7 -0
  15. package/dist/cli/help.d.ts.map +1 -0
  16. package/dist/cli/help.js +110 -0
  17. package/dist/cli/help.js.map +1 -0
  18. package/dist/cli/index.d.ts +4 -0
  19. package/dist/cli/index.d.ts.map +1 -0
  20. package/dist/cli/index.js +170 -0
  21. package/dist/cli/index.js.map +1 -0
  22. package/dist/cli/inspect.d.ts +3 -0
  23. package/dist/cli/inspect.d.ts.map +1 -0
  24. package/dist/cli/inspect.js +170 -0
  25. package/dist/cli/inspect.js.map +1 -0
  26. package/dist/cli/ls.d.ts +2 -0
  27. package/dist/cli/ls.d.ts.map +1 -0
  28. package/dist/cli/ls.js +10 -0
  29. package/dist/cli/ls.js.map +1 -0
  30. package/dist/cli/render.d.ts +8 -0
  31. package/dist/cli/render.d.ts.map +1 -0
  32. package/dist/cli/render.js +55 -0
  33. package/dist/cli/render.js.map +1 -0
  34. package/dist/cli/resolve-harness.d.ts +4 -0
  35. package/dist/cli/resolve-harness.d.ts.map +1 -0
  36. package/dist/cli/resolve-harness.js +31 -0
  37. package/dist/cli/resolve-harness.js.map +1 -0
  38. package/dist/cli/run.d.ts +2 -0
  39. package/dist/cli/run.d.ts.map +1 -0
  40. package/dist/cli/run.js +280 -0
  41. package/dist/cli/run.js.map +1 -0
  42. package/dist/cli/session.d.ts +2 -0
  43. package/dist/cli/session.d.ts.map +1 -0
  44. package/dist/cli/session.js +128 -0
  45. package/dist/cli/session.js.map +1 -0
  46. package/dist/cli/version.d.ts +2 -0
  47. package/dist/cli/version.d.ts.map +1 -0
  48. package/dist/cli/version.js +34 -0
  49. package/dist/cli/version.js.map +1 -0
  50. package/dist/cli.js +2 -0
  51. package/dist/execution/decode.d.ts.map +1 -1
  52. package/dist/execution/decode.js +32 -0
  53. package/dist/execution/decode.js.map +1 -1
  54. package/dist/execution/deps.d.ts +7 -1
  55. package/dist/execution/deps.d.ts.map +1 -1
  56. package/dist/execution/events.d.ts +6 -2
  57. package/dist/execution/events.d.ts.map +1 -1
  58. package/dist/execution/events.js.map +1 -1
  59. package/dist/execution/failure.d.ts +45 -0
  60. package/dist/execution/failure.d.ts.map +1 -0
  61. package/dist/execution/failure.js +121 -0
  62. package/dist/execution/failure.js.map +1 -0
  63. package/dist/execution/node-deps.d.ts.map +1 -1
  64. package/dist/execution/node-deps.js +19 -0
  65. package/dist/execution/node-deps.js.map +1 -1
  66. package/dist/execution/stream-turn.d.ts +2 -0
  67. package/dist/execution/stream-turn.d.ts.map +1 -1
  68. package/dist/execution/stream-turn.js +181 -16
  69. package/dist/execution/stream-turn.js.map +1 -1
  70. package/dist/interpretation/argv.d.ts +16 -4
  71. package/dist/interpretation/argv.d.ts.map +1 -1
  72. package/dist/interpretation/argv.js +68 -19
  73. package/dist/interpretation/argv.js.map +1 -1
  74. package/dist/interpretation/dimensions.d.ts +0 -2
  75. package/dist/interpretation/dimensions.d.ts.map +1 -1
  76. package/dist/interpretation/dimensions.js +0 -2
  77. package/dist/interpretation/dimensions.js.map +1 -1
  78. package/dist/interpretation/limits.d.ts +10 -1
  79. package/dist/interpretation/limits.d.ts.map +1 -1
  80. package/dist/interpretation/limits.js +84 -5
  81. package/dist/interpretation/limits.js.map +1 -1
  82. package/dist/interpretation/refusal.d.ts +31 -0
  83. package/dist/interpretation/refusal.d.ts.map +1 -0
  84. package/dist/interpretation/refusal.js +87 -0
  85. package/dist/interpretation/refusal.js.map +1 -0
  86. package/dist/interpretation/turn-options.d.ts +18 -0
  87. package/dist/interpretation/turn-options.d.ts.map +1 -0
  88. package/dist/interpretation/turn-options.js +417 -0
  89. package/dist/interpretation/turn-options.js.map +1 -0
  90. package/dist/interpretation/vocabulary.d.ts +5 -0
  91. package/dist/interpretation/vocabulary.d.ts.map +1 -1
  92. package/dist/interpretation/vocabulary.js +1 -1
  93. package/dist/interpretation/vocabulary.js.map +1 -1
  94. package/dist/knowledge/claude-code.d.ts +13 -1
  95. package/dist/knowledge/claude-code.d.ts.map +1 -1
  96. package/dist/knowledge/claude-code.js +35 -13
  97. package/dist/knowledge/claude-code.js.map +1 -1
  98. package/dist/knowledge/codex.d.ts.map +1 -1
  99. package/dist/knowledge/codex.js +25 -14
  100. package/dist/knowledge/codex.js.map +1 -1
  101. package/dist/knowledge/descriptor.d.ts +118 -14
  102. package/dist/knowledge/descriptor.d.ts.map +1 -1
  103. package/dist/knowledge/descriptor.js +58 -0
  104. package/dist/knowledge/descriptor.js.map +1 -1
  105. package/dist/knowledge/matchers.d.ts +3 -3
  106. package/dist/knowledge/matchers.d.ts.map +1 -1
  107. package/dist/knowledge/matchers.js +19 -6
  108. package/dist/knowledge/matchers.js.map +1 -1
  109. package/dist/knowledge/muse.d.ts +2 -2
  110. package/dist/knowledge/muse.d.ts.map +1 -1
  111. package/dist/knowledge/muse.js +22 -6
  112. package/dist/knowledge/muse.js.map +1 -1
  113. package/dist/knowledge/overrides.d.ts +7 -0
  114. package/dist/knowledge/overrides.d.ts.map +1 -1
  115. package/dist/knowledge/overrides.js +76 -0
  116. package/dist/knowledge/overrides.js.map +1 -1
  117. package/dist/knowledge/pi.d.ts.map +1 -1
  118. package/dist/knowledge/pi.js +25 -3
  119. package/dist/knowledge/pi.js.map +1 -1
  120. package/package.json +5 -2
  121. package/src/cli/args.ts +381 -0
  122. package/src/cli/check.ts +136 -0
  123. package/src/cli/exit-codes.ts +13 -0
  124. package/src/cli/help.ts +114 -0
  125. package/src/cli/index.ts +177 -0
  126. package/src/cli/inspect.ts +174 -0
  127. package/src/cli/ls.ts +14 -0
  128. package/src/cli/render.ts +62 -0
  129. package/src/cli/resolve-harness.ts +33 -0
  130. package/src/cli/run.ts +280 -0
  131. package/src/cli/session.ts +137 -0
  132. package/src/cli/version.ts +32 -0
  133. package/src/execution/decode.ts +32 -0
  134. package/src/execution/deps.ts +7 -1
  135. package/src/execution/events.ts +9 -2
  136. package/src/execution/failure.ts +159 -0
  137. package/src/execution/node-deps.ts +17 -0
  138. package/src/execution/stream-turn.ts +189 -17
  139. package/src/interpretation/argv.ts +85 -27
  140. package/src/interpretation/dimensions.ts +0 -6
  141. package/src/interpretation/limits.ts +97 -6
  142. package/src/interpretation/refusal.ts +116 -0
  143. package/src/interpretation/turn-options.ts +424 -0
  144. package/src/interpretation/vocabulary.ts +1 -1
  145. package/src/knowledge/claude-code.ts +35 -13
  146. package/src/knowledge/codex.ts +25 -14
  147. package/src/knowledge/descriptor.ts +138 -12
  148. package/src/knowledge/matchers.ts +22 -9
  149. package/src/knowledge/muse.ts +22 -6
  150. package/src/knowledge/overrides.ts +97 -0
  151. 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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"}
@@ -0,0 +1,2 @@
1
+ export declare const ls: () => void;
2
+ //# sourceMappingURL=ls.d.ts.map
@@ -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,2 @@
1
+ export declare const run: (harnessName: string, rawArgs: string[]) => Promise<void>;
2
+ //# sourceMappingURL=run.d.ts.map
@@ -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"}
@@ -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,2 @@
1
+ export declare const session: (harnessName: string, rawArgs: string[]) => Promise<void>;
2
+ //# sourceMappingURL=session.d.ts.map
@@ -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,2 @@
1
+ export declare const getVersion: () => string;
2
+ //# sourceMappingURL=version.d.ts.map
@@ -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"}