@dungle-scrubs/harness-cli-normalizer 0.1.3 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/README.md +156 -13
  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 +6 -0
  19. package/dist/cli/index.d.ts.map +1 -0
  20. package/dist/cli/index.js +186 -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 +3 -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 +5 -1
  67. package/dist/execution/stream-turn.d.ts.map +1 -1
  68. package/dist/execution/stream-turn.js +188 -24
  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/store.js +1 -1
  87. package/dist/interpretation/turn-options.d.ts +18 -0
  88. package/dist/interpretation/turn-options.d.ts.map +1 -0
  89. package/dist/interpretation/turn-options.js +417 -0
  90. package/dist/interpretation/turn-options.js.map +1 -0
  91. package/dist/interpretation/vocabulary.d.ts +5 -0
  92. package/dist/interpretation/vocabulary.d.ts.map +1 -1
  93. package/dist/interpretation/vocabulary.js +1 -1
  94. package/dist/interpretation/vocabulary.js.map +1 -1
  95. package/dist/knowledge/claude-code.d.ts +13 -1
  96. package/dist/knowledge/claude-code.d.ts.map +1 -1
  97. package/dist/knowledge/claude-code.js +35 -13
  98. package/dist/knowledge/claude-code.js.map +1 -1
  99. package/dist/knowledge/codex.d.ts.map +1 -1
  100. package/dist/knowledge/codex.js +25 -14
  101. package/dist/knowledge/codex.js.map +1 -1
  102. package/dist/knowledge/descriptor.d.ts +118 -14
  103. package/dist/knowledge/descriptor.d.ts.map +1 -1
  104. package/dist/knowledge/descriptor.js +58 -0
  105. package/dist/knowledge/descriptor.js.map +1 -1
  106. package/dist/knowledge/matchers.d.ts +3 -3
  107. package/dist/knowledge/matchers.d.ts.map +1 -1
  108. package/dist/knowledge/matchers.js +19 -6
  109. package/dist/knowledge/matchers.js.map +1 -1
  110. package/dist/knowledge/muse.d.ts +2 -2
  111. package/dist/knowledge/muse.d.ts.map +1 -1
  112. package/dist/knowledge/muse.js +25 -6
  113. package/dist/knowledge/muse.js.map +1 -1
  114. package/dist/knowledge/overrides.d.ts +7 -0
  115. package/dist/knowledge/overrides.d.ts.map +1 -1
  116. package/dist/knowledge/overrides.js +76 -0
  117. package/dist/knowledge/overrides.js.map +1 -1
  118. package/dist/knowledge/pi.d.ts +1 -1
  119. package/dist/knowledge/pi.d.ts.map +1 -1
  120. package/dist/knowledge/pi.js +33 -9
  121. package/dist/knowledge/pi.js.map +1 -1
  122. package/package.json +5 -2
  123. package/src/cli/args.ts +381 -0
  124. package/src/cli/check.ts +136 -0
  125. package/src/cli/exit-codes.ts +13 -0
  126. package/src/cli/help.ts +114 -0
  127. package/src/cli/index.ts +190 -0
  128. package/src/cli/inspect.ts +174 -0
  129. package/src/cli/ls.ts +14 -0
  130. package/src/cli/render.ts +62 -0
  131. package/src/cli/resolve-harness.ts +33 -0
  132. package/src/cli/run.ts +280 -0
  133. package/src/cli/session.ts +137 -0
  134. package/src/cli/version.ts +32 -0
  135. package/src/execution/decode.ts +32 -0
  136. package/src/execution/deps.ts +7 -1
  137. package/src/execution/events.ts +9 -2
  138. package/src/execution/failure.ts +159 -0
  139. package/src/execution/node-deps.ts +17 -0
  140. package/src/execution/stream-turn.ts +192 -21
  141. package/src/interpretation/argv.ts +85 -27
  142. package/src/interpretation/dimensions.ts +0 -6
  143. package/src/interpretation/limits.ts +97 -6
  144. package/src/interpretation/refusal.ts +116 -0
  145. package/src/interpretation/store.ts +1 -1
  146. package/src/interpretation/turn-options.ts +424 -0
  147. package/src/interpretation/vocabulary.ts +1 -1
  148. package/src/knowledge/claude-code.ts +35 -13
  149. package/src/knowledge/codex.ts +25 -14
  150. package/src/knowledge/descriptor.ts +138 -12
  151. package/src/knowledge/matchers.ts +22 -9
  152. package/src/knowledge/muse.ts +25 -6
  153. package/src/knowledge/overrides.ts +97 -0
  154. package/src/knowledge/pi.ts +33 -9
@@ -0,0 +1,170 @@
1
+ import { redactArgv } from "../execution/stream-turn.js";
2
+ import { buildLaunchArgv } from "../interpretation/argv.js";
3
+ import { ArgvRefusalError } from "../interpretation/refusal.js";
4
+ import { parseTurnOptions, resolvePromptAsync } from "./args.js";
5
+ import { resolveHarness } from "./resolve-harness.js";
6
+ export const inspect = async (harnessName, rawArgs) => {
7
+ const h = resolveHarness(harnessName);
8
+ // Check for --help
9
+ if (rawArgs.includes("--help") || rawArgs.includes("-h")) {
10
+ const { INSPECT_HELP } = await import("./help.js");
11
+ process.stdout.write(INSPECT_HELP);
12
+ return;
13
+ }
14
+ // Check for positional prompt injection before parse (only when --argv and no explicit prompt)
15
+ const { parseCommonFlags, detectPositionalPromptInjection } = await import("./args.js");
16
+ if (rawArgs.includes("--argv")) {
17
+ const injection = detectPositionalPromptInjection(rawArgs.filter((a) => a !== "--argv"));
18
+ if (injection) {
19
+ const err = new ArgvRefusalError({
20
+ issue: "prompt-flag-injection",
21
+ harness: h.name,
22
+ supported: ["prompt must not start with '-'"],
23
+ detail: `it would be parsed as a flag by ${h.bin}`,
24
+ });
25
+ process.stderr.write(`${err.message}\n`);
26
+ process.stderr.write(`supported: prompt must not start with '-'\n`);
27
+ process.exitCode = 2;
28
+ return;
29
+ }
30
+ }
31
+ // Parse flags for inspect
32
+ let parsed;
33
+ try {
34
+ parsed = parseCommonFlags(rawArgs);
35
+ }
36
+ catch (err) {
37
+ const message = err instanceof Error ? err.message : String(err);
38
+ process.stderr.write(`unknown flag: ${message}\n`);
39
+ process.stderr.write(`Run 'hcn inspect --help' for usage.\n`);
40
+ process.exitCode = 2;
41
+ return;
42
+ }
43
+ const values = parsed.values;
44
+ const wantArgv = values.argv === true;
45
+ if (!wantArgv) {
46
+ // Pure descriptor dump
47
+ const out = {
48
+ name: h.name,
49
+ bin: h.bin,
50
+ verifiedAgainst: h.verifiedAgainst,
51
+ versionSource: h.versionSource,
52
+ launch: {
53
+ baseFlags: h.launch.baseFlags,
54
+ subcommands: h.launch.subcommands,
55
+ streamFlags: h.launch.streamFlags,
56
+ promptStyle: h.launch.promptStyle,
57
+ toolsFlag: h.launch.toolsFlag,
58
+ idFlag: h.launch.idFlag,
59
+ },
60
+ resume: h.resume,
61
+ sessionMode: h.sessionMode,
62
+ vocabulary: {
63
+ models: h.vocabulary.models,
64
+ aliases: h.vocabulary.aliases,
65
+ efforts: h.vocabulary.efforts,
66
+ effortsByModel: h.vocabulary.effortsByModel,
67
+ extensible: h.vocabulary.extensible,
68
+ modelFlag: h.vocabulary.modelFlag,
69
+ },
70
+ turnOptions: h.turnOptions,
71
+ };
72
+ process.stdout.write(`${JSON.stringify(out, null, 2)}\n`);
73
+ return;
74
+ }
75
+ // --argv preview path: need prompt + turn options
76
+ const positional = parsed.positionals;
77
+ // positional[0] would be harness already consumed, but we passed rawArgs without harness - check: caller passes remaining after harness
78
+ // So positionals are potential prompt positional if not using --prompt
79
+ const positionalPrompt = positional.length > 0 ? positional[0] : undefined;
80
+ if (positional.length > 1) {
81
+ process.stderr.write(`too many positionals for inspect --argv\n`);
82
+ process.exitCode = 2;
83
+ return;
84
+ }
85
+ let prompt;
86
+ let promptSource;
87
+ try {
88
+ const resolved = await resolvePromptAsync({
89
+ positionalPrompt,
90
+ promptFlag: values.prompt,
91
+ promptFile: values["prompt-file"],
92
+ });
93
+ prompt = resolved.prompt;
94
+ promptSource = resolved.source;
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
+ // Build TurnOptions from flags
107
+ let turnOpts;
108
+ try {
109
+ turnOpts = parseTurnOptions(values);
110
+ }
111
+ catch (err) {
112
+ if (err instanceof ArgvRefusalError) {
113
+ process.stderr.write(`${err.message}\n`);
114
+ if (err.supported.length)
115
+ process.stderr.write(`supported: ${err.supported.join(", ")}\n`);
116
+ process.exitCode = 2;
117
+ return;
118
+ }
119
+ throw err;
120
+ }
121
+ const fullOpts = {
122
+ ...turnOpts,
123
+ prompt,
124
+ ...(promptSource !== "positional" ? { __explicitPrompt: true } : {}),
125
+ };
126
+ let argv;
127
+ try {
128
+ argv = buildLaunchArgv(h, fullOpts);
129
+ }
130
+ catch (err) {
131
+ if (err instanceof ArgvRefusalError) {
132
+ process.stderr.write(`${err.message}\n`);
133
+ if (err.supported.length)
134
+ process.stderr.write(`supported: ${err.supported.join(", ")}\n`);
135
+ process.exitCode = 2;
136
+ return;
137
+ }
138
+ throw err;
139
+ }
140
+ // Redact prompt for display, but keep structure
141
+ const redacted = redactArgv(argv, prompt);
142
+ // Also handle --resume case: need to use buildResumeArgv if resume present
143
+ if (values.resume !== undefined || values["session-id"] !== undefined) {
144
+ // For inspect --argv with --resume, show resume argv
145
+ const { buildResumeArgv } = await import("../interpretation/argv.js");
146
+ const resumeId = String(values.resume ?? values["session-id"]);
147
+ try {
148
+ const resumeOpts = { ...fullOpts, sessionId: resumeId };
149
+ const resumeArgv = buildResumeArgv(h, resumeOpts);
150
+ const redactedResume = redactArgv(resumeArgv, prompt);
151
+ process.stdout.write(`${JSON.stringify(redactedResume)}\n`);
152
+ process.stderr.write(`argv: ${redactedResume.join(" ")}\n`);
153
+ return;
154
+ }
155
+ catch (err) {
156
+ if (err instanceof ArgvRefusalError) {
157
+ process.stderr.write(`${err.message}\n`);
158
+ if (err.supported.length)
159
+ process.stderr.write(`supported: ${err.supported.join(", ")}\n`);
160
+ process.exitCode = 2;
161
+ return;
162
+ }
163
+ throw err;
164
+ }
165
+ }
166
+ process.stdout.write(`${JSON.stringify(redacted)}\n`);
167
+ process.stderr.write(`argv: ${redacted.join(" ")}\n`);
168
+ };
169
+ export const inspectCommand = inspect;
170
+ //# sourceMappingURL=inspect.js.map
@@ -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"}