@dungle-scrubs/harness-cli-normalizer 0.4.4 → 0.4.6

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 (136) hide show
  1. package/README.md +23 -8
  2. package/dist/cli/args.d.ts.map +1 -1
  3. package/dist/cli/args.js +16 -0
  4. package/dist/cli/args.js.map +1 -1
  5. package/dist/cli/config.d.ts.map +1 -1
  6. package/dist/cli/config.js +4 -0
  7. package/dist/cli/config.js.map +1 -1
  8. package/dist/cli/help.d.ts +1 -1
  9. package/dist/cli/help.d.ts.map +1 -1
  10. package/dist/cli/help.js +10 -0
  11. package/dist/cli/help.js.map +1 -1
  12. package/dist/cli/inspect.d.ts.map +1 -1
  13. package/dist/cli/inspect.js +74 -24
  14. package/dist/cli/inspect.js.map +1 -1
  15. package/dist/cli/provenance.d.ts +3 -0
  16. package/dist/cli/provenance.d.ts.map +1 -0
  17. package/dist/cli/provenance.js +11 -0
  18. package/dist/cli/provenance.js.map +1 -0
  19. package/dist/cli/run.d.ts.map +1 -1
  20. package/dist/cli/run.js +135 -85
  21. package/dist/cli/run.js.map +1 -1
  22. package/dist/cli/session.d.ts.map +1 -1
  23. package/dist/cli/session.js +3 -3
  24. package/dist/cli/session.js.map +1 -1
  25. package/dist/cli/skills-root.d.ts +2 -1
  26. package/dist/cli/skills-root.d.ts.map +1 -1
  27. package/dist/cli/skills-root.js +6 -4
  28. package/dist/cli/skills-root.js.map +1 -1
  29. package/dist/execution/decode.d.ts +3 -3
  30. package/dist/execution/decode.d.ts.map +1 -1
  31. package/dist/execution/decode.js +46 -13
  32. package/dist/execution/decode.js.map +1 -1
  33. package/dist/execution/deps.d.ts +4 -1
  34. package/dist/execution/deps.d.ts.map +1 -1
  35. package/dist/execution/deps.js +1 -1
  36. package/dist/execution/events.d.ts +7 -2
  37. package/dist/execution/events.d.ts.map +1 -1
  38. package/dist/execution/events.js.map +1 -1
  39. package/dist/execution/failure.d.ts +5 -1
  40. package/dist/execution/failure.d.ts.map +1 -1
  41. package/dist/execution/failure.js +12 -0
  42. package/dist/execution/failure.js.map +1 -1
  43. package/dist/execution/index.d.ts +2 -2
  44. package/dist/execution/index.js +2 -2
  45. package/dist/execution/node-deps.d.ts.map +1 -1
  46. package/dist/execution/node-deps.js +1 -0
  47. package/dist/execution/node-deps.js.map +1 -1
  48. package/dist/execution/open-session.d.ts.map +1 -1
  49. package/dist/execution/open-session.js +54 -8
  50. package/dist/execution/open-session.js.map +1 -1
  51. package/dist/execution/stream-turn.d.ts +4 -0
  52. package/dist/execution/stream-turn.d.ts.map +1 -1
  53. package/dist/execution/stream-turn.js +147 -33
  54. package/dist/execution/stream-turn.js.map +1 -1
  55. package/dist/interpretation/argv.d.ts +7 -0
  56. package/dist/interpretation/argv.d.ts.map +1 -1
  57. package/dist/interpretation/argv.js +28 -5
  58. package/dist/interpretation/argv.js.map +1 -1
  59. package/dist/interpretation/capabilities.d.ts.map +1 -1
  60. package/dist/interpretation/capabilities.js +4 -1
  61. package/dist/interpretation/capabilities.js.map +1 -1
  62. package/dist/interpretation/content.d.ts +9 -1
  63. package/dist/interpretation/content.d.ts.map +1 -1
  64. package/dist/interpretation/content.js +16 -4
  65. package/dist/interpretation/content.js.map +1 -1
  66. package/dist/interpretation/hints.d.ts.map +1 -1
  67. package/dist/interpretation/hints.js +5 -0
  68. package/dist/interpretation/hints.js.map +1 -1
  69. package/dist/interpretation/limits.d.ts +1 -0
  70. package/dist/interpretation/limits.d.ts.map +1 -1
  71. package/dist/interpretation/limits.js +22 -0
  72. package/dist/interpretation/limits.js.map +1 -1
  73. package/dist/interpretation/resolve-options.d.ts.map +1 -1
  74. package/dist/interpretation/resolve-options.js +16 -0
  75. package/dist/interpretation/resolve-options.js.map +1 -1
  76. package/dist/interpretation/tool-selection.d.ts.map +1 -1
  77. package/dist/interpretation/tool-selection.js +25 -0
  78. package/dist/interpretation/tool-selection.js.map +1 -1
  79. package/dist/interpretation/turn-options.d.ts.map +1 -1
  80. package/dist/interpretation/turn-options.js +35 -3
  81. package/dist/interpretation/turn-options.js.map +1 -1
  82. package/dist/interpretation/versions.d.ts +1 -1
  83. package/dist/interpretation/versions.d.ts.map +1 -1
  84. package/dist/knowledge/claude-code.d.ts.map +1 -1
  85. package/dist/knowledge/claude-code.js +21 -0
  86. package/dist/knowledge/claude-code.js.map +1 -1
  87. package/dist/knowledge/codex.d.ts.map +1 -1
  88. package/dist/knowledge/codex.js +9 -0
  89. package/dist/knowledge/codex.js.map +1 -1
  90. package/dist/knowledge/descriptor.d.ts +25 -10
  91. package/dist/knowledge/descriptor.d.ts.map +1 -1
  92. package/dist/knowledge/descriptor.js +6 -0
  93. package/dist/knowledge/descriptor.js.map +1 -1
  94. package/dist/knowledge/index.d.ts +1 -1
  95. package/dist/knowledge/index.d.ts.map +1 -1
  96. package/dist/knowledge/index.js +1 -1
  97. package/dist/knowledge/index.js.map +1 -1
  98. package/dist/knowledge/matchers.d.ts +2 -1
  99. package/dist/knowledge/matchers.d.ts.map +1 -1
  100. package/dist/knowledge/matchers.js +23 -1
  101. package/dist/knowledge/matchers.js.map +1 -1
  102. package/dist/knowledge/pi.d.ts.map +1 -1
  103. package/dist/knowledge/pi.js +24 -1
  104. package/dist/knowledge/pi.js.map +1 -1
  105. package/package.json +1 -1
  106. package/src/cli/args.ts +15 -0
  107. package/src/cli/config.ts +4 -0
  108. package/src/cli/help.ts +10 -0
  109. package/src/cli/inspect.ts +70 -22
  110. package/src/cli/provenance.ts +19 -0
  111. package/src/cli/run.ts +172 -91
  112. package/src/cli/session.ts +4 -3
  113. package/src/cli/skills-root.ts +11 -4
  114. package/src/execution/decode.ts +46 -12
  115. package/src/execution/deps.ts +4 -1
  116. package/src/execution/events.ts +5 -2
  117. package/src/execution/failure.ts +17 -1
  118. package/src/execution/index.ts +2 -2
  119. package/src/execution/node-deps.ts +1 -0
  120. package/src/execution/open-session.ts +63 -6
  121. package/src/execution/stream-turn.ts +150 -31
  122. package/src/interpretation/argv.ts +34 -5
  123. package/src/interpretation/capabilities.ts +4 -1
  124. package/src/interpretation/content.ts +22 -5
  125. package/src/interpretation/hints.ts +8 -0
  126. package/src/interpretation/limits.ts +29 -0
  127. package/src/interpretation/resolve-options.ts +17 -0
  128. package/src/interpretation/tool-selection.ts +25 -0
  129. package/src/interpretation/turn-options.ts +31 -3
  130. package/src/interpretation/versions.ts +1 -1
  131. package/src/knowledge/claude-code.ts +21 -0
  132. package/src/knowledge/codex.ts +9 -0
  133. package/src/knowledge/descriptor.ts +33 -10
  134. package/src/knowledge/index.ts +5 -1
  135. package/src/knowledge/matchers.ts +25 -2
  136. package/src/knowledge/pi.ts +24 -1
@@ -47,12 +47,16 @@ export interface AuthMatcher {
47
47
  readonly flags?: string;
48
48
  readonly kind: AuthFailureKind;
49
49
  }
50
+ export interface TransportMatcher {
51
+ readonly pattern: string;
52
+ readonly flags?: string;
53
+ }
50
54
  /** The turn-option vocabulary is closed for the same reason `LimitCode` is:
51
55
  * a descriptor must not invent an option a consumer has no field for. Every
52
56
  * key here maps to a field on `TurnOptions`; adding a key without a consumer
53
57
  * arm would be dead data that can only drift. Render order is the tuple
54
58
  * order, so argv is deterministic regardless of caller field order. */
55
- export declare const TURN_OPTION_KEYS: readonly ["effort", "sandbox", "provider", "discovery", "write", "shell", "maxSteps"];
59
+ export declare const TURN_OPTION_KEYS: readonly ["effort", "sandbox", "provider", "discovery", "write", "shell", "maxSteps", "systemPrompt", "appendSystemPrompt"];
56
60
  export type TurnOptionKey = (typeof TURN_OPTION_KEYS)[number];
57
61
  /** Discovery facets are closed for the same reason as `TurnOptionKey`: each
58
62
  * maps to a field on `DiscoveryOptions` and a concrete flag spelling per
@@ -62,10 +66,13 @@ export type TurnOptionKey = (typeof TURN_OPTION_KEYS)[number];
62
66
  export declare const DISCOVERY_FACETS: readonly ["tools", "instructionFiles", "extensions", "skills"];
63
67
  export type DiscoveryFacet = (typeof DISCOVERY_FACETS)[number];
64
68
  export type OptionRender =
65
- /** `--flag <value>` */
69
+ /** `--flag <value>`; `extraFlags` are fixed companion tokens emitted
70
+ * before the value pair (claude's --system-prompt pairs with
71
+ * --exclude-dynamic-system-prompt-sections - issue #48). */
66
72
  {
67
73
  readonly kind: "flag-value";
68
74
  readonly flag: string;
75
+ readonly extraFlags?: readonly string[];
69
76
  }
70
77
  /** `-c key=value` - codex's config-override grammar. Permitted only for
71
78
  * closed-vocabulary specs, so no value can need escaping. */
@@ -101,6 +108,12 @@ export type TurnOptionSpec =
101
108
  | (SpecBase & {
102
109
  readonly kind: "selector";
103
110
  })
111
+ /** Free-form prompt text (issue #48): systemPrompt / appendSystemPrompt.
112
+ * Values are prose, never a closed vocabulary - no validation beyond
113
+ * non-emptiness, rendering is verbatim. */
114
+ | (SpecBase & {
115
+ readonly kind: "prompt-text";
116
+ })
104
117
  /** `polarity: "disables"` emits the render when the caller asks for FALSE. */
105
118
  | (SpecBase & {
106
119
  readonly kind: "toggle";
@@ -206,14 +219,16 @@ export interface HarnessDescriptor {
206
219
  * harness. */
207
220
  readonly onMissing: "error" | "create";
208
221
  };
209
- /** Persistent headless session support: the exact flag set that opens one
210
- * lucid-owned process serving many turns, or null when the harness has no
211
- * such mode. `idFlag` pins the caller-assigned session identity.
212
- * `turnEnd` is the stdout record that delimits one turn (claude: the
213
- * `result` record; pi rpc: `agent_settled`). `identityProbe`, when
214
- * present, names a command the runner writes at spawn whose response
215
- * carries the session id - pi rpc is identity-silent at startup (spike
216
- * evidence: test/fixtures/pi-rpc-spike), so identity needs a round trip. */
222
+ /** Persistent headless session support: the complete flag list that follows
223
+ * the binary to open one lucid-owned process serving many turns, or null
224
+ * when the harness has no such mode. This is the entire argv prefix after
225
+ * the binary - no launch flags are prepended. `idFlag` pins the
226
+ * caller-assigned session identity. `turnEnd` is the stdout record that
227
+ * delimits one turn (claude: the `result` record; pi rpc:
228
+ * `agent_settled`). `identityProbe`, when present, names a command the
229
+ * runner writes at spawn whose response carries the session id - pi rpc
230
+ * is identity-silent at startup (spike evidence:
231
+ * test/fixtures/pi-rpc-spike), so identity needs a round trip. */
217
232
  readonly sessionMode: {
218
233
  readonly flags: readonly string[];
219
234
  /** Pin an EXISTING session id; null when the harness only accepts
@@ -1 +1 @@
1
- {"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../../src/knowledge/descriptor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../../src/knowledge/descriptor.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,12 @@ export const TURN_OPTION_KEYS = deepFreeze([
36
36
  "write",
37
37
  "shell",
38
38
  "maxSteps",
39
+ // issue #48 (ratified 2026-08-20): the payload-stripping dimensions.
40
+ // systemPrompt replaces the built-in prompt; appendSystemPrompt adds to
41
+ // it. Both are opt-in-only (arg/config, no profile entry) - a default
42
+ // that strips the payload changes every bare run's semantics.
43
+ "systemPrompt",
44
+ "appendSystemPrompt",
39
45
  ]);
40
46
  /** Discovery facets are closed for the same reason as `TurnOptionKey`: each
41
47
  * maps to a field on `DiscoveryOptions` and a concrete flag spelling per
@@ -1 +1 @@
1
- {"version":3,"file":"descriptor.js","sourceRoot":"","sources":["../../src/knowledge/descriptor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAU,CAAC;AAGxE;;mCAEmC;AACnC,uEAAuE;AACvE,MAAM,CAAC,MAAM,UAAU,GAAG,iEAAiE,CAAC;AAE5F,MAAM,CAAC,MAAM,UAAU,GAAG,CAAI,KAAQ,EAAK,EAAE;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAMF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,yBAAyB,EAAE,eAAe,CAAU,CAAC;AAyCzF;;;;uEAIuE;AACvE,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;IACzC,QAAQ;IACR,SAAS;IACT,UAAU;IACV,WAAW;IACX,OAAO;IACP,OAAO;IACP,UAAU;CACF,CAAC,CAAC;AAGZ;;;;aAIa;AACb,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;IACzC,OAAO;IACP,kBAAkB;IAClB,YAAY;IACZ,QAAQ;CACA,CAAC,CAAC;AA0CZ;;;;;;6DAM6D;AAC7D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAc,EAAE,KAA0B,EAAuB,EAAE;IAC/F,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC;IAC3C,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC5C,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC;AAC1C,CAAC,CAAC;AAEF;;8CAE8C;AAC9C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAc,EAAuB,EAAE,CACzE,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAEhC;;;8CAG8C;AAC9C,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,IAAoB,EACpB,KAA0B,EACL,EAAE;IACvB,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC,CAAC"}
1
+ {"version":3,"file":"descriptor.js","sourceRoot":"","sources":["../../src/knowledge/descriptor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAU,CAAC;AAGxE;;mCAEmC;AACnC,uEAAuE;AACvE,MAAM,CAAC,MAAM,UAAU,GAAG,iEAAiE,CAAC;AAE5F,MAAM,CAAC,MAAM,UAAU,GAAG,CAAI,KAAQ,EAAK,EAAE;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAMF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,yBAAyB,EAAE,eAAe,CAAU,CAAC;AA8CzF;;;;uEAIuE;AACvE,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;IACzC,QAAQ;IACR,SAAS;IACT,UAAU;IACV,WAAW;IACX,OAAO;IACP,OAAO;IACP,UAAU;IACV,qEAAqE;IACrE,wEAAwE;IACxE,sEAAsE;IACtE,8DAA8D;IAC9D,cAAc;IACd,oBAAoB;CACZ,CAAC,CAAC;AAGZ;;;;aAIa;AACb,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;IACzC,OAAO;IACP,kBAAkB;IAClB,YAAY;IACZ,QAAQ;CACA,CAAC,CAAC;AAoDZ;;;;;;6DAM6D;AAC7D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAc,EAAE,KAA0B,EAAuB,EAAE;IAC/F,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC;IAC3C,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC5C,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC;AAC1C,CAAC,CAAC;AAEF;;8CAE8C;AAC9C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAc,EAAuB,EAAE,CACzE,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAEhC;;;8CAG8C;AAC9C,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,IAAoB,EACpB,KAA0B,EACL,EAAE;IACvB,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC,CAAC"}
@@ -12,7 +12,7 @@
12
12
  export { claudeCode } from "./claude-code.js";
13
13
  export { codexCli } from "./codex.js";
14
14
  export * from "./descriptor.js";
15
- export { SHARED_AUTH_MATCHERS, SHARED_LIMIT_MATCHERS } from "./matchers.js";
15
+ export { SHARED_AUTH_MATCHERS, SHARED_LIMIT_MATCHERS, SHARED_TRANSPORT_MATCHERS, } from "./matchers.js";
16
16
  export { museCode } from "./muse.js";
17
17
  export { type DescriptorSet, defaultDescriptors, OverrideRefusalError, parseOverrides, } from "./overrides.js";
18
18
  export { piCli } from "./pi.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/knowledge/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EACL,KAAK,aAAa,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/knowledge/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EACL,KAAK,aAAa,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC"}
@@ -12,7 +12,7 @@
12
12
  export { claudeCode } from "./claude-code.js";
13
13
  export { codexCli } from "./codex.js";
14
14
  export * from "./descriptor.js";
15
- export { SHARED_AUTH_MATCHERS, SHARED_LIMIT_MATCHERS } from "./matchers.js";
15
+ export { SHARED_AUTH_MATCHERS, SHARED_LIMIT_MATCHERS, SHARED_TRANSPORT_MATCHERS, } from "./matchers.js";
16
16
  export { museCode } from "./muse.js";
17
17
  export { defaultDescriptors, OverrideRefusalError, parseOverrides, } from "./overrides.js";
18
18
  export { piCli } from "./pi.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/knowledge/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAEL,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/knowledge/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAEL,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC"}
@@ -4,7 +4,8 @@
4
4
  * or a provider 401 must classify no matter which CLI printed it. Each
5
5
  * descriptor spreads these after its harness-specific phrasings.
6
6
  */
7
- import type { AuthMatcher, LimitMatcher } from "./descriptor.js";
7
+ import type { AuthMatcher, LimitMatcher, TransportMatcher } from "./descriptor.js";
8
8
  export declare const SHARED_LIMIT_MATCHERS: ReadonlyArray<LimitMatcher>;
9
9
  export declare const SHARED_AUTH_MATCHERS: ReadonlyArray<AuthMatcher>;
10
+ export declare const SHARED_TRANSPORT_MATCHERS: ReadonlyArray<TransportMatcher>;
10
11
  //# sourceMappingURL=matchers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"matchers.d.ts","sourceRoot":"","sources":["../../src/knowledge/matchers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEjE,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,YAAY,CAkB7D,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,WAAW,CAG3D,CAAC"}
1
+ {"version":3,"file":"matchers.d.ts","sourceRoot":"","sources":["../../src/knowledge/matchers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnF,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,YAAY,CAyB7D,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,WAAW,CAG3D,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,aAAa,CAAC,gBAAgB,CAcrE,CAAC"}
@@ -12,7 +12,14 @@ export const SHARED_LIMIT_MATCHERS = [
12
12
  code: "quota",
13
13
  },
14
14
  // Rate-limit patterns are last so a line with both a usage wall and a 429 keeps usage-limit (first-match-wins, documented cost)
15
- { pattern: "429", flags: "i", code: "rate-limit" },
15
+ // 429 only next to an HTTP status word: a bare digit run inside an id, a
16
+ // byte count, or a timing must never read as a wall. "429 Too Many
17
+ // Requests" is covered by the next matcher.
18
+ {
19
+ pattern: "\\b(?:HTTP|status(?:[_ ]?code)?|code)\\b\\W*[:=]?\\W*429\\b",
20
+ flags: "i",
21
+ code: "rate-limit",
22
+ },
16
23
  { pattern: "Too Many Requests", flags: "i", code: "rate-limit" },
17
24
  { pattern: "rate limit(?:ed|ing)?", flags: "i", code: "rate-limit" },
18
25
  { pattern: "Retry-After", flags: "i", code: "rate-limit" },
@@ -21,4 +28,19 @@ export const SHARED_AUTH_MATCHERS = [
21
28
  { pattern: "401 unauthorized", flags: "i", kind: "expired" },
22
29
  { pattern: "invalid api key", flags: "i", kind: "invalid-key" },
23
30
  ];
31
+ export const SHARED_TRANSPORT_MATCHERS = [
32
+ { pattern: "connection error", flags: "i" },
33
+ { pattern: "ECONNREFUSED", flags: "i" },
34
+ { pattern: "ECONNRESET", flags: "i" },
35
+ { pattern: "ENOTFOUND", flags: "i" },
36
+ { pattern: "EAI_AGAIN", flags: "i" },
37
+ { pattern: "ETIMEDOUT", flags: "i" },
38
+ { pattern: "fetch failed", flags: "i" },
39
+ { pattern: "socket hang up", flags: "i" },
40
+ { pattern: "network error", flags: "i" },
41
+ { pattern: "service unavailable", flags: "i" },
42
+ { pattern: "bad gateway", flags: "i" },
43
+ { pattern: "gateway time-?out", flags: "i" },
44
+ { pattern: "\\b(?:HTTP|status(?:[_ ]?code)?|code)\\b\\W*[:=]?\\W*50[234]\\b", flags: "i" },
45
+ ];
24
46
  //# sourceMappingURL=matchers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"matchers.js","sourceRoot":"","sources":["../../src/knowledge/matchers.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,qBAAqB,GAAgC;IAChE,EAAE,OAAO,EAAE,8BAA8B,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE;IAC5E,EAAE,OAAO,EAAE,kCAAkC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE;IAChF;QACE,OAAO,EAAE,2DAA2D;QACpE,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,SAAS;KAChB;IACD;QACE,OAAO,EAAE,+DAA+D;QACxE,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,OAAO;KACd;IACD,gIAAgI;IAChI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE;IAClD,EAAE,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE;IAChE,EAAE,OAAO,EAAE,uBAAuB,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE;IACpE,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE;CAC3D,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAA+B;IAC9D,EAAE,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;IAC5D,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE;CAChE,CAAC"}
1
+ {"version":3,"file":"matchers.js","sourceRoot":"","sources":["../../src/knowledge/matchers.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,qBAAqB,GAAgC;IAChE,EAAE,OAAO,EAAE,8BAA8B,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE;IAC5E,EAAE,OAAO,EAAE,kCAAkC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE;IAChF;QACE,OAAO,EAAE,2DAA2D;QACpE,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,SAAS;KAChB;IACD;QACE,OAAO,EAAE,+DAA+D;QACxE,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,OAAO;KACd;IACD,gIAAgI;IAChI,yEAAyE;IACzE,mEAAmE;IACnE,4CAA4C;IAC5C;QACE,OAAO,EAAE,6DAA6D;QACtE,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,YAAY;KACnB;IACD,EAAE,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE;IAChE,EAAE,OAAO,EAAE,uBAAuB,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE;IACpE,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE;CAC3D,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAA+B;IAC9D,EAAE,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;IAC5D,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE;CAChE,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAoC;IACxE,EAAE,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE;IAC3C,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE;IACvC,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE;IACrC,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE;IACpC,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE;IACpC,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE;IACpC,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE;IACvC,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,GAAG,EAAE;IACzC,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE;IACxC,EAAE,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE;IAC9C,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE;IACtC,EAAE,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE;IAC5C,EAAE,OAAO,EAAE,iEAAiE,EAAE,KAAK,EAAE,GAAG,EAAE;CAC3F,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"pi.d.ts","sourceRoot":"","sources":["../../src/knowledge/pi.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAc,KAAK,iBAAiB,EAAc,MAAM,iBAAiB,CAAC;AAGjF,eAAO,MAAM,KAAK,EAAE,iBAiJlB,CAAC"}
1
+ {"version":3,"file":"pi.d.ts","sourceRoot":"","sources":["../../src/knowledge/pi.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAc,KAAK,iBAAiB,EAAc,MAAM,iBAAiB,CAAC;AAGjF,eAAO,MAAM,KAAK,EAAE,iBAwKlB,CAAC"}
@@ -29,6 +29,15 @@ export const piCli = deepFreeze({
29
29
  // Caller-assigned: the same --session-id re-enters the session. Resume
30
30
  // carries the same structured-output flags launch does, or a resumed
31
31
  // turn would stream plain text the runner cannot decode.
32
+ // Verified 2026-08-21 on pi 0.84.2: a session id minted by `pi --mode rpc`
33
+ // via the get_state probe (01a022e3-9afb-7ce5-88f5-07ad0e9ac8fa) resumed
34
+ // after close through the one-shot grammar `pi --session-id <id> -p
35
+ // --mode json` (flag --session-id, extraFlags -p --mode json), exit 0,
36
+ // 207 lines, and the reply recalled the codeword "otter" (evidence at
37
+ // test/fixtures/pi-rpc-spike/06-resume-after-close/: rpc-turn.ndjson,
38
+ // resume.argv.json, resume.ndjson, README.md). If the resume had not
39
+ // recalled the codeword, this comment would say so and the descriptor
40
+ // would not be changed here.
32
41
  style: "flag",
33
42
  flag: "--session-id",
34
43
  aliases: [],
@@ -68,7 +77,10 @@ export const piCli = deepFreeze({
68
77
  announce: { match: { type: "session" }, idField: "id" },
69
78
  },
70
79
  limitMatchers: [...SHARED_LIMIT_MATCHERS],
71
- authMatchers: [...SHARED_AUTH_MATCHERS],
80
+ authMatchers: [
81
+ { pattern: "No API key found for", flags: "i", kind: "not-logged-in" },
82
+ ...SHARED_AUTH_MATCHERS,
83
+ ],
72
84
  autonomy: null,
73
85
  vocabulary: {
74
86
  modelFlag: "--model",
@@ -109,6 +121,17 @@ export const piCli = deepFreeze({
109
121
  turnOptions: {
110
122
  effort: { kind: "effort", render: { kind: "flag-value", flag: "--thinking" } },
111
123
  provider: { kind: "selector", render: { kind: "flag-value", flag: "--provider" } },
124
+ // issue #48, live-verified 0.84.2: pi's --system-prompt replaces the
125
+ // default coding-assistant prompt (PI-NAKED probe). No dynamic-section
126
+ // exclusion exists - pi injects no such sections into a replaced prompt.
127
+ systemPrompt: {
128
+ kind: "prompt-text",
129
+ render: { kind: "flag-value", flag: "--system-prompt" },
130
+ },
131
+ appendSystemPrompt: {
132
+ kind: "prompt-text",
133
+ render: { kind: "flag-value", flag: "--append-system-prompt" },
134
+ },
112
135
  discovery: {
113
136
  kind: "discovery",
114
137
  facets: {
@@ -1 +1 @@
1
- {"version":3,"file":"pi.js","sourceRoot":"","sources":["../../src/knowledge/pi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pi.js","sourceRoot":"","sources":["../../src/knowledge/pi.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dungle-scrubs/harness-cli-normalizer",
3
- "version": "0.4.4",
3
+ "version": "0.4.6",
4
4
  "description": "One stable CLI to four coding-agent harnesses: normalized flags, defaults, and events.",
5
5
  "license": "MIT",
6
6
  "author": "Kevin Frilot",
package/src/cli/args.ts CHANGED
@@ -181,6 +181,9 @@ export const parseTurnOptions = (values: Record<string, unknown>): TurnOptions =
181
181
  else if (values["no-shell"] === true) opts.shell = false;
182
182
  if (values["escalate-questions"] === true) opts.escalateQuestions = true;
183
183
  else if (values["no-escalate-questions"] === true) opts.escalateQuestions = false;
184
+ if (values["system-prompt"] !== undefined) opts.systemPrompt = String(values["system-prompt"]);
185
+ if (values["append-system-prompt"] !== undefined)
186
+ opts.appendSystemPrompt = String(values["append-system-prompt"]);
184
187
 
185
188
  if (values["max-steps"] !== undefined) {
186
189
  const n = Number(values["max-steps"]);
@@ -249,6 +252,14 @@ export const parseRunExtra = (
249
252
  extra.timeoutSeconds = n;
250
253
  }
251
254
  if (values.cwd !== undefined) extra.cwd = String(values.cwd);
255
+ if (values.resume !== undefined && values["session-id"] !== undefined) {
256
+ throw new ArgvRefusalError({
257
+ issue: "mutually-exclusive-options",
258
+ harness: "claude",
259
+ supported: ["--resume or --session-id, not both (--session-id is an alias for --resume)"],
260
+ detail: "both --resume and --session-id given",
261
+ });
262
+ }
252
263
  if (values.resume !== undefined) extra.resume = String(values.resume);
253
264
  if (values["session-id"] !== undefined) extra.resume = String(values["session-id"]);
254
265
  if (values.env !== undefined) {
@@ -281,6 +292,8 @@ const KNOWN_FLAGS = new Set([
281
292
  "--no-shell",
282
293
  "--escalate-questions",
283
294
  "--no-escalate-questions",
295
+ "--system-prompt",
296
+ "--append-system-prompt",
284
297
  "--max-steps",
285
298
  "--no-tools",
286
299
  "--no-instruction-files",
@@ -427,6 +440,8 @@ export const parseCommonFlags = (
427
440
  "no-shell": { type: "boolean" as const },
428
441
  "escalate-questions": { type: "boolean" as const },
429
442
  "no-escalate-questions": { type: "boolean" as const },
443
+ "system-prompt": { type: "string" as const },
444
+ "append-system-prompt": { type: "string" as const },
430
445
  "max-steps": { type: "string" as const },
431
446
  "no-tools": { type: "boolean" as const },
432
447
  "no-instruction-files": { type: "boolean" as const },
package/src/cli/config.ts CHANGED
@@ -69,6 +69,10 @@ const KNOWN_KEYS = new Set([
69
69
  // issue #41: question escalation (behavior instruction, not a turn
70
70
  // option - it rides the prompt preamble, never a harness flag).
71
71
  "escalateQuestions",
72
+ // issue #48: payload-stripping dimensions (opt-in-only, no profile
73
+ // entry by ratification).
74
+ "systemPrompt",
75
+ "appendSystemPrompt",
72
76
  ]);
73
77
 
74
78
  const LIST_KEYS = new Set(["tools", "excludeTools"]);
package/src/cli/help.ts CHANGED
@@ -48,12 +48,20 @@ Options:
48
48
  done cause "awaiting-input", exit 0)
49
49
  --no-escalate-questions Worker never asks: it states the assumption it
50
50
  proceeded under and continues
51
+ --system-prompt <text> Replace the built-in system prompt (claude, pi:
52
+ flag; codex: -c instructions=<text-or-path>;
53
+ muse refuses. claude pairs the dynamic-section
54
+ exclusion automatically. Opt-in; no default)
55
+ --append-system-prompt <text>
56
+ Append to the built-in prompt (claude, pi only)
51
57
  --max-steps <n> Max steps (muse, 1-10000)
52
58
  --timeout <seconds> Wall-clock budget for the run (all harnesses,
53
59
  hcn-enforced; 0 disables; no default)
54
60
  --no-tools Disable tools discovery facet
55
61
  --no-instruction-files Disable instructionFiles discovery facet
56
62
  --no-extensions Disable extensions discovery facet
63
+ --skills <a,b> Skill allowlist (names resolved against $HCN_SKILLS_ROOT
64
+ or ~/.agents/skills; pi loads, claude narrows)
57
65
  --no-skills Disable skills discovery facet
58
66
  --cwd <path> Working directory for spawn
59
67
  --env KEY=VAL Environment (repeatable; KEY= deletes)
@@ -62,6 +70,8 @@ Options:
62
70
  answer as the prompt; id continuity per
63
71
  harness (claude stable, pi/muse caller-assigned,
64
72
  codex minted via identity event)
73
+ Note: pi and muse create a new session when the id is unknown - verify it exists
74
+ --session-id <uuid> Alias for --resume (mutually exclusive with --resume)
65
75
  -- Passthrough: native harness args verbatim
66
76
  (failures surface as labeled native errors)
67
77
  --json NDJSON HarnessEvent to stdout
@@ -74,6 +74,8 @@ export const inspect = async (harnessName: string, rawArgs: string[]): Promise<v
74
74
  modelFlag: h.vocabulary.modelFlag,
75
75
  },
76
76
  turnOptions: h.turnOptions,
77
+ limitMatchers: h.limitMatchers,
78
+ authMatchers: h.authMatchers,
77
79
  };
78
80
  process.stdout.write(`${JSON.stringify(out, null, 2)}\n`);
79
81
  return;
@@ -124,6 +126,69 @@ export const inspect = async (harnessName: string, rawArgs: string[]): Promise<v
124
126
  throw err;
125
127
  }
126
128
 
129
+ // Mirror run.ts skills resolution (F-16): resolve names and build claude tokens
130
+ const rawSkills = (turnOpts as unknown as { skills?: string[] }).skills;
131
+ if (rawSkills !== undefined && rawSkills.length > 0) {
132
+ try {
133
+ const { resolveSkillNames, listKnownSkills } = await import("./skills-root.js");
134
+ const resolvedSkills = resolveSkillNames(rawSkills, h.name);
135
+ const claudeTokens: string[] = [];
136
+ if (h.name === "claude") {
137
+ const { claudeSkillOverridesArg } = await import("../interpretation/skills-selection.js");
138
+ claudeTokens.push(...claudeSkillOverridesArg(listKnownSkills(), resolvedSkills));
139
+ }
140
+ (turnOpts as unknown as Record<string, unknown>).skills = resolvedSkills;
141
+ (turnOpts as unknown as Record<string, unknown>).__claudeSkillTokens = claudeTokens;
142
+ } catch (err) {
143
+ if (err instanceof ArgvRefusalError) {
144
+ process.stderr.write(`${err.message}\n`);
145
+ if (err.supported.length) process.stderr.write(`supported: ${err.supported.join(", ")}\n`);
146
+ process.exitCode = 2;
147
+ return;
148
+ }
149
+ throw err;
150
+ }
151
+ }
152
+
153
+ // Resume previews from unresolved options, mirroring run.ts launch-only rule (F-15)
154
+ if (values.resume !== undefined || values["session-id"] !== undefined) {
155
+ if (values.resume !== undefined && values["session-id"] !== undefined) {
156
+ const err = new ArgvRefusalError({
157
+ issue: "mutually-exclusive-options",
158
+ harness: h.name,
159
+ supported: ["--resume or --session-id, not both (--session-id is an alias for --resume)"],
160
+ detail: "both --resume and --session-id given",
161
+ });
162
+ process.stderr.write(`${err.message}\n`);
163
+ if (err.supported.length) process.stderr.write(`supported: ${err.supported.join(", ")}\n`);
164
+ process.exitCode = 2;
165
+ return;
166
+ }
167
+ const { buildResumeArgv } = await import("../interpretation/argv.js");
168
+ const resumeId = String(values.resume ?? values["session-id"]);
169
+ try {
170
+ const resumeOpts = {
171
+ ...(turnOpts as object),
172
+ prompt,
173
+ sessionId: resumeId,
174
+ ...(promptSource !== "positional" ? { __explicitPrompt: true as const } : {}),
175
+ } as Parameters<typeof buildResumeArgv>[1];
176
+ const resumeArgv = buildResumeArgv(h, resumeOpts);
177
+ const redactedResume = redactArgv(resumeArgv, prompt);
178
+ process.stdout.write(`${JSON.stringify(redactedResume)}\n`);
179
+ process.stderr.write(`argv: ${redactedResume.join(" ")}\n`);
180
+ return;
181
+ } catch (err) {
182
+ if (err instanceof ArgvRefusalError) {
183
+ process.stderr.write(`${err.message}\n`);
184
+ if (err.supported.length) process.stderr.write(`supported: ${err.supported.join(", ")}\n`);
185
+ process.exitCode = 2;
186
+ return;
187
+ }
188
+ throw err;
189
+ }
190
+ }
191
+
127
192
  // Inspect resolves exactly as a launch would: profile + user config,
128
193
  // launch-only semantics, so --argv previews the truth of a bare run.
129
194
  const { loadUserConfig, loadProjectConfig, ConfigError } = await import("./config.js");
@@ -155,6 +220,8 @@ export const inspect = async (harnessName: string, rawArgs: string[]): Promise<v
155
220
  }
156
221
  throw resErr;
157
222
  }
223
+ const { writeProvenance } = await import("./provenance.js");
224
+ writeProvenance(h.name, resolved.provenance, resolved.unrenderable);
158
225
  const { prompt: _p, ...effectiveRest } = resolved.options as { prompt: string };
159
226
  const fullOpts = {
160
227
  ...(effectiveRest as object),
@@ -165,6 +232,9 @@ export const inspect = async (harnessName: string, rawArgs: string[]): Promise<v
165
232
  let argv: string[];
166
233
  try {
167
234
  argv = buildLaunchArgv(h, fullOpts);
235
+ const claudeTokens = (effectiveRest as unknown as { __claudeSkillTokens?: string[] })
236
+ .__claudeSkillTokens;
237
+ if (claudeTokens !== undefined && claudeTokens.length > 0) argv.push(...claudeTokens);
168
238
  } catch (err) {
169
239
  if (err instanceof ArgvRefusalError) {
170
240
  process.stderr.write(`${err.message}\n`);
@@ -177,28 +247,6 @@ export const inspect = async (harnessName: string, rawArgs: string[]): Promise<v
177
247
 
178
248
  // Redact prompt for display, but keep structure
179
249
  const redacted = redactArgv(argv, prompt);
180
- // Also handle --resume case: need to use buildResumeArgv if resume present
181
- if (values.resume !== undefined || values["session-id"] !== undefined) {
182
- // For inspect --argv with --resume, show resume argv
183
- const { buildResumeArgv } = await import("../interpretation/argv.js");
184
- const resumeId = String(values.resume ?? values["session-id"]);
185
- try {
186
- const resumeOpts = { ...fullOpts, sessionId: resumeId };
187
- const resumeArgv = buildResumeArgv(h, resumeOpts);
188
- const redactedResume = redactArgv(resumeArgv, prompt);
189
- process.stdout.write(`${JSON.stringify(redactedResume)}\n`);
190
- process.stderr.write(`argv: ${redactedResume.join(" ")}\n`);
191
- return;
192
- } catch (err) {
193
- if (err instanceof ArgvRefusalError) {
194
- process.stderr.write(`${err.message}\n`);
195
- if (err.supported.length) process.stderr.write(`supported: ${err.supported.join(", ")}\n`);
196
- process.exitCode = 2;
197
- return;
198
- }
199
- throw err;
200
- }
201
- }
202
250
 
203
251
  process.stdout.write(`${JSON.stringify(redacted)}\n`);
204
252
  process.stderr.write(`argv: ${redacted.join(" ")}\n`);
@@ -0,0 +1,19 @@
1
+ import type { ProvenanceEntry } from "../interpretation/resolve-options.js";
2
+
3
+ export const writeProvenance = (
4
+ harnessName: string,
5
+ provenance: readonly ProvenanceEntry[],
6
+ unrenderable: readonly string[],
7
+ ): void => {
8
+ if (provenance.length === 0 && unrenderable.length === 0) return;
9
+ for (const entry of provenance) {
10
+ process.stderr.write(
11
+ `provenance: ${entry.key} = ${JSON.stringify(entry.value)} (${entry.tier})\n`,
12
+ );
13
+ }
14
+ for (const key of unrenderable) {
15
+ process.stderr.write(
16
+ `divergence: profile ${JSON.stringify(key)} not expressible on ${harnessName}; harness default applies\n`,
17
+ );
18
+ }
19
+ };