@dungle-scrubs/harness-cli-normalizer 0.5.2 → 0.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +113 -2
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +8 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/help.d.ts +2 -2
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +16 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/inspect.d.ts.map +1 -1
- package/dist/cli/inspect.js +21 -0
- package/dist/cli/inspect.js.map +1 -1
- package/dist/cli/refuse.d.ts +7 -1
- package/dist/cli/refuse.d.ts.map +1 -1
- package/dist/cli/refuse.js +16 -5
- package/dist/cli/refuse.js.map +1 -1
- package/dist/cli/session-json.d.ts +25 -0
- package/dist/cli/session-json.d.ts.map +1 -0
- package/dist/cli/session-json.js +195 -0
- package/dist/cli/session-json.js.map +1 -0
- package/dist/cli/session.d.ts.map +1 -1
- package/dist/cli/session.js +93 -11
- package/dist/cli/session.js.map +1 -1
- package/dist/execution/failure.d.ts +2 -1
- package/dist/execution/failure.d.ts.map +1 -1
- package/dist/execution/failure.js +12 -1
- package/dist/execution/failure.js.map +1 -1
- package/dist/execution/open-session.d.ts +24 -3
- package/dist/execution/open-session.d.ts.map +1 -1
- package/dist/execution/open-session.js +106 -19
- package/dist/execution/open-session.js.map +1 -1
- package/dist/execution/stream-turn.d.ts.map +1 -1
- package/dist/execution/stream-turn.js +8 -5
- package/dist/execution/stream-turn.js.map +1 -1
- package/dist/interpretation/argv.d.ts +3 -0
- package/dist/interpretation/argv.d.ts.map +1 -1
- package/dist/interpretation/argv.js +5 -0
- package/dist/interpretation/argv.js.map +1 -1
- package/dist/interpretation/limits.d.ts +3 -0
- package/dist/interpretation/limits.d.ts.map +1 -1
- package/dist/interpretation/limits.js +12 -13
- package/dist/interpretation/limits.js.map +1 -1
- package/dist/knowledge/descriptor.d.ts +6 -1
- package/dist/knowledge/descriptor.d.ts.map +1 -1
- package/dist/knowledge/descriptor.js.map +1 -1
- package/dist/knowledge/index.d.ts +1 -1
- package/dist/knowledge/index.d.ts.map +1 -1
- package/dist/knowledge/index.js +1 -1
- package/dist/knowledge/index.js.map +1 -1
- package/dist/knowledge/matchers.d.ts +2 -1
- package/dist/knowledge/matchers.d.ts.map +1 -1
- package/dist/knowledge/matchers.js +10 -0
- package/dist/knowledge/matchers.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/args.ts +8 -0
- package/src/cli/help.ts +16 -0
- package/src/cli/inspect.ts +26 -0
- package/src/cli/refuse.ts +31 -12
- package/src/cli/session-json.ts +230 -0
- package/src/cli/session.ts +103 -12
- package/src/execution/failure.ts +16 -1
- package/src/execution/open-session.ts +132 -23
- package/src/execution/stream-turn.ts +8 -3
- package/src/interpretation/argv.ts +8 -0
- package/src/interpretation/limits.ts +17 -18
- package/src/knowledge/descriptor.ts +6 -1
- package/src/knowledge/index.ts +1 -0
- package/src/knowledge/matchers.ts +17 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limits.js","sourceRoot":"","sources":["../../src/interpretation/limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAUH,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"limits.js","sourceRoot":"","sources":["../../src/interpretation/limits.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,10 +49,15 @@ export interface AuthMatcher {
|
|
|
49
49
|
readonly flags?: string;
|
|
50
50
|
readonly kind: AuthFailureKind;
|
|
51
51
|
}
|
|
52
|
-
|
|
52
|
+
/** A bare phrase matcher for wall classes that carry no code of their own
|
|
53
|
+
* (transport faults, a provider that cannot serve the model): pattern and
|
|
54
|
+
* flags as data, compiled with the same bounds as the limit matchers. */
|
|
55
|
+
export interface PhraseMatcher {
|
|
53
56
|
readonly pattern: string;
|
|
54
57
|
readonly flags?: string;
|
|
55
58
|
}
|
|
59
|
+
export type TransportMatcher = PhraseMatcher;
|
|
60
|
+
export type UnavailableMatcher = PhraseMatcher;
|
|
56
61
|
/** The turn-option vocabulary is closed for the same reason `LimitCode` is:
|
|
57
62
|
* a descriptor must not invent an option a consumer has no field for. Every
|
|
58
63
|
* key here maps to a field on `TurnOptions`; adding a key without a consumer
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../../src/knowledge/descriptor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,eAAO,MAAM,aAAa,YAAI,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAU,CAAC;AACxE,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD;;mCAEmC;AACnC,uEAAuE;AACvE,eAAO,MAAM,UAAU,QAAoE,CAAC;AAE5F,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,CAAC,KAAG,CAMxC,CAAC;AAEF,eAAO,MAAM,eAAe,qHAYjB,CAAC;AACZ,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEhE,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,kBAAkB,GAAG,aAAa,CAAC;AAE/E,eAAO,MAAM,mBAAmB,YAAI,yBAAyB,EAAE,eAAe,CAAU,CAAC;AACzF,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;CACjC;AAED;;uCAEuC;AACvC,MAAM,MAAM,SAAS,GACjB,aAAa,GACb,eAAe,GACf,cAAc,GACd,SAAS,GACT,OAAO,GACP,YAAY,CAAC;AAEjB;;mDAEmD;AACnD,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG,SAAS,GAAG,aAAa,CAAC;AAE1E;;;;;6BAK6B;AAC7B,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;CAChC;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../../src/knowledge/descriptor.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;IACxC,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,WAAW;IACX,YAAY;IACZ,UAAU;IACV,OAAO;CACC,CAAC,CAAC;AAOZ,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,yBAAyB,EAAE,eAAe,CAAU,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;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;IACxC,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,WAAW;IACX,YAAY;IACZ,UAAU;IACV,OAAO;CACC,CAAC,CAAC;AAOZ,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,yBAAyB,EAAE,eAAe,CAAU,CAAC;AAmDzF;;;;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;IACpB,QAAQ;CACA,CAAC,CAAC;AAGZ;;;;aAIa;AACb,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;IACzC,OAAO;IACP,kBAAkB;IAClB,YAAY;IACZ,QAAQ;CACA,CAAC,CAAC;AA+DZ;;;;;;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,IACE,IAAI,CAAC,IAAI,KAAK,WAAW;QACzB,IAAI,CAAC,IAAI,KAAK,aAAa;QAC3B,IAAI,CAAC,IAAI,KAAK,YAAY;QAC1B,IAAI,CAAC,IAAI,KAAK,oBAAoB;QAElC,OAAO,IAAI,CAAC;IACd,OAAO,aAAa,CAAC,IAAgB,EAAE,KAAK,CAAC,CAAC;AAChD,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, SHARED_TRANSPORT_MATCHERS, } from "./matchers.js";
|
|
15
|
+
export { SHARED_AUTH_MATCHERS, SHARED_LIMIT_MATCHERS, SHARED_TRANSPORT_MATCHERS, SHARED_UNAVAILABLE_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,EACL,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,
|
|
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,EACzB,2BAA2B,GAC5B,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"}
|
package/dist/knowledge/index.js
CHANGED
|
@@ -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, SHARED_TRANSPORT_MATCHERS, } from "./matchers.js";
|
|
15
|
+
export { SHARED_AUTH_MATCHERS, SHARED_LIMIT_MATCHERS, SHARED_TRANSPORT_MATCHERS, SHARED_UNAVAILABLE_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,EACL,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,
|
|
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,EACzB,2BAA2B,GAC5B,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,8 +4,9 @@
|
|
|
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, TransportMatcher } from "./descriptor.js";
|
|
7
|
+
import type { AuthMatcher, LimitMatcher, TransportMatcher, UnavailableMatcher } from "./descriptor.js";
|
|
8
8
|
export declare const SHARED_LIMIT_MATCHERS: ReadonlyArray<LimitMatcher>;
|
|
9
9
|
export declare const SHARED_AUTH_MATCHERS: ReadonlyArray<AuthMatcher>;
|
|
10
10
|
export declare const SHARED_TRANSPORT_MATCHERS: ReadonlyArray<TransportMatcher>;
|
|
11
|
+
export declare const SHARED_UNAVAILABLE_MATCHERS: ReadonlyArray<UnavailableMatcher>;
|
|
11
12
|
//# 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,
|
|
1
|
+
{"version":3,"file":"matchers.d.ts","sourceRoot":"","sources":["../../src/knowledge/matchers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AAEzB,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;AAEF,eAAO,MAAM,2BAA2B,EAAE,aAAa,CAAC,kBAAkB,CASzE,CAAC"}
|
|
@@ -43,4 +43,14 @@ export const SHARED_TRANSPORT_MATCHERS = [
|
|
|
43
43
|
{ pattern: "gateway time-?out", flags: "i" },
|
|
44
44
|
{ pattern: "\\b(?:HTTP|status(?:[_ ]?code)?|code)\\b\\W*[:=]?\\W*50[234]\\b", flags: "i" },
|
|
45
45
|
];
|
|
46
|
+
export const SHARED_UNAVAILABLE_MATCHERS = [
|
|
47
|
+
{ pattern: "model_not_found", flags: "i" },
|
|
48
|
+
{ pattern: "invalid model identifier", flags: "i" },
|
|
49
|
+
{ pattern: "model[^.]{0,60}not found", flags: "i" },
|
|
50
|
+
{ pattern: "no such model", flags: "i" },
|
|
51
|
+
{ pattern: "unknown model", flags: "i" },
|
|
52
|
+
{ pattern: "model[^.]{0,60}(?:is not|isn't) loaded", flags: "i" },
|
|
53
|
+
{ pattern: "model[^.]{0,60}does not exist", flags: "i" },
|
|
54
|
+
{ pattern: "not a valid (?:downloaded )?model", flags: "i" },
|
|
55
|
+
];
|
|
46
56
|
//# sourceMappingURL=matchers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matchers.js","sourceRoot":"","sources":["../../src/knowledge/matchers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"matchers.js","sourceRoot":"","sources":["../../src/knowledge/matchers.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/cli/args.ts
CHANGED
|
@@ -308,6 +308,9 @@ const KNOWN_FLAGS = new Set([
|
|
|
308
308
|
"--session-id",
|
|
309
309
|
"--json",
|
|
310
310
|
"--argv",
|
|
311
|
+
"--capabilities",
|
|
312
|
+
"--mode",
|
|
313
|
+
"--stall",
|
|
311
314
|
"--help",
|
|
312
315
|
"-h",
|
|
313
316
|
"--version",
|
|
@@ -330,6 +333,8 @@ const FLAGS_WITH_VALUE = new Set([
|
|
|
330
333
|
"--resume",
|
|
331
334
|
"--session-id",
|
|
332
335
|
"--timeout",
|
|
336
|
+
"--mode",
|
|
337
|
+
"--stall",
|
|
333
338
|
]);
|
|
334
339
|
|
|
335
340
|
export const detectPositionalPromptInjection = (argv: string[]): string | null => {
|
|
@@ -459,6 +464,9 @@ export const parseCommonFlags = (
|
|
|
459
464
|
timeout: { type: "string" as const },
|
|
460
465
|
json: { type: "boolean" as const },
|
|
461
466
|
argv: { type: "boolean" as const },
|
|
467
|
+
capabilities: { type: "boolean" as const },
|
|
468
|
+
mode: { type: "string" as const },
|
|
469
|
+
stall: { type: "string" as const },
|
|
462
470
|
help: { type: "boolean" as const },
|
|
463
471
|
version: { type: "boolean" as const },
|
|
464
472
|
},
|
package/src/cli/help.ts
CHANGED
|
@@ -117,6 +117,17 @@ Arguments:
|
|
|
117
117
|
<harness> claude | pi (others have no sessionMode)
|
|
118
118
|
|
|
119
119
|
Options:
|
|
120
|
+
--json Machine surface: NDJSON events on stdout, NDJSON
|
|
121
|
+
commands on stdin ({"op":"send","id":..,"text":..},
|
|
122
|
+
"answer", "close"). Every send is answered with one
|
|
123
|
+
disposition (started | queued | rejected); a queued
|
|
124
|
+
send's id rides to the turn that consumes it. The
|
|
125
|
+
stream opens with a session event and ends with a
|
|
126
|
+
closed event. Exit 0 clean, 1 otherwise, 2 refusal.
|
|
127
|
+
--stall <seconds> Per-turn inactivity budget; the turn ends and the
|
|
128
|
+
session closes reporting a stall. 0 disables
|
|
129
|
+
(default: no limit)
|
|
130
|
+
--provider <value> Provider (pi only)
|
|
120
131
|
--model <id> Model for the session
|
|
121
132
|
--session-id <uuid> Session id (UUID, else random; re-enters an
|
|
122
133
|
existing session)
|
|
@@ -138,6 +149,11 @@ Arguments:
|
|
|
138
149
|
|
|
139
150
|
Options:
|
|
140
151
|
--argv Preview argv that would be spawned
|
|
152
|
+
--capabilities Print the capability record (vision, images,
|
|
153
|
+
streaming, session, source) as one JSON line
|
|
154
|
+
--mode <mode> Mode for --capabilities:
|
|
155
|
+
headless-turn | headless-session | interactive
|
|
156
|
+
(default headless-turn)
|
|
141
157
|
--prompt <text> Prompt for argv preview
|
|
142
158
|
--prompt-file <path|-> Read prompt from file
|
|
143
159
|
--model <id> Model
|
package/src/cli/inspect.ts
CHANGED
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
import { redactArgv } from "../execution/stream-turn.js";
|
|
2
2
|
import { buildLaunchArgv } from "../interpretation/argv.js";
|
|
3
|
+
import { capabilitiesOf } from "../interpretation/capabilities.js";
|
|
3
4
|
import { ArgvRefusalError } from "../interpretation/refusal.js";
|
|
4
5
|
import { FloorExceededError, resolveEffectiveOptions } from "../interpretation/resolve-options.js";
|
|
5
6
|
import { canonicalTable, mergeToolMaps } from "../interpretation/tool-vocabulary.js";
|
|
7
|
+
import type { HarnessMode } from "../knowledge/descriptor.js";
|
|
6
8
|
import { defaultDescriptors } from "../knowledge/overrides.js";
|
|
7
9
|
import { parseTurnOptions, resolvePromptAsync } from "./args.js";
|
|
8
10
|
import { ConfigError, loadProjectConfig, loadUserConfig } from "./config.js";
|
|
11
|
+
import { EXIT_REFUSAL } from "./exit-codes.js";
|
|
9
12
|
import { refusalOf, refuse } from "./refuse.js";
|
|
10
13
|
import { resolveHarness } from "./resolve-harness.js";
|
|
11
14
|
|
|
15
|
+
const HARNESS_MODES = ["headless-turn", "headless-session", "interactive"] as const;
|
|
16
|
+
|
|
12
17
|
export const inspect = async (harnessName: string, rawArgs: string[]): Promise<void> => {
|
|
13
18
|
const h = resolveHarness(harnessName);
|
|
14
19
|
|
|
@@ -52,6 +57,27 @@ export const inspect = async (harnessName: string, rawArgs: string[]): Promise<v
|
|
|
52
57
|
const values = parsed.values as Record<string, unknown>;
|
|
53
58
|
const wantArgv = values.argv === true;
|
|
54
59
|
|
|
60
|
+
// --capabilities path: pure capability record, no spawn, no config, no prompt
|
|
61
|
+
if (values.capabilities === true) {
|
|
62
|
+
if (wantArgv) {
|
|
63
|
+
process.stderr.write(`--capabilities and --argv are mutually exclusive; pick one\n`);
|
|
64
|
+
process.exitCode = EXIT_REFUSAL;
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const mode = values.mode === undefined ? "headless-turn" : String(values.mode);
|
|
68
|
+
if (!(HARNESS_MODES as readonly string[]).includes(mode)) {
|
|
69
|
+
process.stderr.write(
|
|
70
|
+
`invalid --mode ${JSON.stringify(mode)}; supported: ${HARNESS_MODES.join(", ")}\n`,
|
|
71
|
+
);
|
|
72
|
+
process.exitCode = EXIT_REFUSAL;
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
const model = values.model === undefined ? "" : String(values.model);
|
|
76
|
+
const caps = capabilitiesOf(h, model, mode as HarnessMode);
|
|
77
|
+
process.stdout.write(`${JSON.stringify(caps)}\n`);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
|
|
55
81
|
// Load config once at top and reuse for both paths
|
|
56
82
|
let rawUserMap: Record<string, Record<string, string>> | undefined;
|
|
57
83
|
let rawProjectMap: Record<string, Record<string, string>> | undefined;
|
package/src/cli/refuse.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { FailureSummary } from "../execution/failure.js";
|
|
1
2
|
import { failureFromRejected } from "../execution/failure.js";
|
|
2
3
|
import type { ArgvRefusalError, RefusalIssue } from "../interpretation/refusal.js";
|
|
3
4
|
import { writeEventNdjson } from "./render.js";
|
|
@@ -23,7 +24,24 @@ export const refusalOf = (err: ArgvRefusalError): Refusal => ({
|
|
|
23
24
|
hint: err.hint,
|
|
24
25
|
});
|
|
25
26
|
|
|
26
|
-
|
|
27
|
+
/** Write the terminal pair a --json stream is owed when it ends before the
|
|
28
|
+
* runner produced one: the failure, then the stream's terminal event. A
|
|
29
|
+
* one-shot turn ends with `done`; a session ends with `closed`. Shared so
|
|
30
|
+
* both surfaces stay identical apart from that kind. */
|
|
31
|
+
export const writeFailurePair = (
|
|
32
|
+
summary: FailureSummary,
|
|
33
|
+
terminal: "done" | "closed" = "done",
|
|
34
|
+
): void => {
|
|
35
|
+
writeEventNdjson({ kind: "failure", ...summary });
|
|
36
|
+
writeEventNdjson({
|
|
37
|
+
kind: terminal,
|
|
38
|
+
exitCode: null,
|
|
39
|
+
cause: "failed",
|
|
40
|
+
failure: summary,
|
|
41
|
+
} as never);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export const refuse = (r: Refusal, json: boolean, terminal: "done" | "closed" = "done"): void => {
|
|
27
45
|
process.stderr.write(`${r.message}\n`);
|
|
28
46
|
if (r.hint) process.stderr.write(`hint: ${r.hint}\n`);
|
|
29
47
|
if (r.supportedBy?.length) {
|
|
@@ -34,17 +52,18 @@ export const refuse = (r: Refusal, json: boolean): void => {
|
|
|
34
52
|
if (r.supported?.length) process.stderr.write(`supported: ${r.supported.join(", ")}\n`);
|
|
35
53
|
for (const line of r.trailer ?? []) process.stderr.write(`${line}\n`);
|
|
36
54
|
if (json) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
55
|
+
writeFailurePair(
|
|
56
|
+
failureFromRejected({
|
|
57
|
+
issue: r.issue,
|
|
58
|
+
option: r.option,
|
|
59
|
+
facet: r.facet,
|
|
60
|
+
supported: r.supported,
|
|
61
|
+
supportedBy: r.supportedBy,
|
|
62
|
+
hint: r.hint,
|
|
63
|
+
detail: r.message,
|
|
64
|
+
}),
|
|
65
|
+
terminal,
|
|
66
|
+
);
|
|
48
67
|
}
|
|
49
68
|
process.exitCode = 2;
|
|
50
69
|
};
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The machine session surface: `hcn session <h> --json`. Two pumps over one
|
|
3
|
+
* persistent session - stdin NDJSON commands in, stdout NDJSON events out -
|
|
4
|
+
* with the control events (`session`, `turn`, `disposition`, `closed`) that
|
|
5
|
+
* a program needs to drive a session it does not own the timing of. RFC-01.
|
|
6
|
+
*
|
|
7
|
+
* This owns the wire framing only. The turn lifecycle, the queue, and the id
|
|
8
|
+
* correlation live in `openSession`; this reads the id off the yielded turn
|
|
9
|
+
* rather than shadowing the runner's delivery order.
|
|
10
|
+
*/
|
|
11
|
+
import { createInterface } from "node:readline/promises";
|
|
12
|
+
import type { HarnessEvent } from "../execution/events.js";
|
|
13
|
+
import type { FailureSummary } from "../execution/failure.js";
|
|
14
|
+
import {
|
|
15
|
+
SessionClosedError,
|
|
16
|
+
type SessionHandle,
|
|
17
|
+
type SessionSendResult,
|
|
18
|
+
} from "../execution/open-session.js";
|
|
19
|
+
|
|
20
|
+
/** What the CLI reads back after a close, captured from the runner's
|
|
21
|
+
* `session_close` boundary log. */
|
|
22
|
+
export interface CloseInfo {
|
|
23
|
+
exitCode: number | null;
|
|
24
|
+
cause: string;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface JsonSessionArgs {
|
|
28
|
+
readonly handle: SessionHandle;
|
|
29
|
+
readonly sessionId: string;
|
|
30
|
+
readonly harness: string;
|
|
31
|
+
readonly hcnVersion: string;
|
|
32
|
+
readonly escalateQuestions: boolean;
|
|
33
|
+
/** Read after close - the runner's final exitCode and cause. */
|
|
34
|
+
readonly getCloseInfo: () => CloseInfo;
|
|
35
|
+
/** Read after close - ids the runner accepted as queued and never
|
|
36
|
+
* delivered. Each owes the consumer a rejection (RFC S003). */
|
|
37
|
+
readonly getDroppedIds?: () => readonly string[];
|
|
38
|
+
/** Injected for tests; defaults to process.stdin / process.stdout. */
|
|
39
|
+
readonly input?: NodeJS.ReadableStream;
|
|
40
|
+
readonly write?: (line: string) => boolean;
|
|
41
|
+
readonly onDrain?: (fn: () => void) => void;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
type ParsedCommand =
|
|
45
|
+
| { readonly op: "send" | "answer"; readonly id: string; readonly text: string }
|
|
46
|
+
| { readonly op: "close" }
|
|
47
|
+
| { readonly malformed: string };
|
|
48
|
+
|
|
49
|
+
const parseCommand = (line: string): ParsedCommand => {
|
|
50
|
+
let obj: unknown;
|
|
51
|
+
try {
|
|
52
|
+
obj = JSON.parse(line);
|
|
53
|
+
} catch {
|
|
54
|
+
return { malformed: "not JSON" };
|
|
55
|
+
}
|
|
56
|
+
if (obj === null || typeof obj !== "object" || Array.isArray(obj)) {
|
|
57
|
+
return { malformed: "not an object" };
|
|
58
|
+
}
|
|
59
|
+
const rec = obj as Record<string, unknown>;
|
|
60
|
+
if (rec.op === "close") return { op: "close" };
|
|
61
|
+
if (rec.op === "send" || rec.op === "answer") {
|
|
62
|
+
if (typeof rec.id !== "string" || rec.id === "") return { malformed: "missing or empty id" };
|
|
63
|
+
if (typeof rec.text !== "string") return { malformed: "text must be a string" };
|
|
64
|
+
return { op: rec.op, id: rec.id, text: rec.text };
|
|
65
|
+
}
|
|
66
|
+
return { malformed: `unknown op ${JSON.stringify(rec.op)}` };
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
/** The answer wrapper hcn composes so a consumer never re-derives it
|
|
70
|
+
* (RFC-01: the preamble is normalizer knowledge). */
|
|
71
|
+
const composeAnswer = (question: string, answer: string): string =>
|
|
72
|
+
`The user answered the question: "${question}" with: ${answer}. Continue accordingly.`;
|
|
73
|
+
|
|
74
|
+
export const runJsonSession = async (a: JsonSessionArgs): Promise<number> => {
|
|
75
|
+
const rawWrite = a.write ?? ((line: string) => process.stdout.write(line));
|
|
76
|
+
const onDrain = a.onDrain ?? ((fn: () => void) => process.stdout.once("drain", fn));
|
|
77
|
+
|
|
78
|
+
// The consumer's read end can close mid-session (it died, or it stopped
|
|
79
|
+
// reading). The process-wide EPIPE guard in index.ts exits 0 immediately,
|
|
80
|
+
// which would strand the harness child with nobody to end it. For a
|
|
81
|
+
// machine session the right answer is to close the session - grace, then
|
|
82
|
+
// signal - and exit 1. Replacing the listener is deliberate: the global
|
|
83
|
+
// one runs first otherwise and the process is gone before we act.
|
|
84
|
+
let consumerGone = false;
|
|
85
|
+
if (a.write === undefined) {
|
|
86
|
+
process.stdout.removeAllListeners("error");
|
|
87
|
+
process.stdout.on("error", (err: NodeJS.ErrnoException) => {
|
|
88
|
+
if (err.code !== "EPIPE") return;
|
|
89
|
+
consumerGone = true;
|
|
90
|
+
void a.handle.close();
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// One serialized, drain-aware writer for both pumps: stdout never
|
|
95
|
+
// interleaves two events and never buffers past the OS pipe.
|
|
96
|
+
let chain: Promise<void> = Promise.resolve();
|
|
97
|
+
const emit = (event: unknown): Promise<void> => {
|
|
98
|
+
chain = chain.then(
|
|
99
|
+
() =>
|
|
100
|
+
new Promise<void>((resolve) => {
|
|
101
|
+
// A broken stdout never drains. Writing into it would park this
|
|
102
|
+
// chain forever and the session would hang instead of closing.
|
|
103
|
+
if (consumerGone) {
|
|
104
|
+
resolve();
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
try {
|
|
108
|
+
if (rawWrite(`${JSON.stringify(event)}\n`)) resolve();
|
|
109
|
+
else onDrain(resolve);
|
|
110
|
+
} catch {
|
|
111
|
+
consumerGone = true;
|
|
112
|
+
resolve();
|
|
113
|
+
}
|
|
114
|
+
}),
|
|
115
|
+
);
|
|
116
|
+
return chain;
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
await emit({
|
|
120
|
+
kind: "session",
|
|
121
|
+
sessionId: a.sessionId,
|
|
122
|
+
harness: a.harness,
|
|
123
|
+
hcn: a.hcnVersion,
|
|
124
|
+
escalateQuestions: a.escalateQuestions,
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
// Shared between the pumps: the last question asked, whether the last turn
|
|
128
|
+
// ended awaiting an answer, and the last failure seen (for closed.failure).
|
|
129
|
+
let lastQuestion = "";
|
|
130
|
+
let awaitingAnswer = false;
|
|
131
|
+
let lastFailure: FailureSummary | undefined;
|
|
132
|
+
|
|
133
|
+
const stdoutPump = (async () => {
|
|
134
|
+
for await (const turn of a.handle.turns) {
|
|
135
|
+
awaitingAnswer = false;
|
|
136
|
+
await emit({
|
|
137
|
+
kind: "turn",
|
|
138
|
+
turnId: turn.turnId,
|
|
139
|
+
...(turn.inputId !== undefined ? { id: turn.inputId } : {}),
|
|
140
|
+
});
|
|
141
|
+
for await (const ev of turn as AsyncIterable<HarnessEvent>) {
|
|
142
|
+
// Update the answer state BEFORE the event reaches the consumer. A
|
|
143
|
+
// consumer answers the moment it reads `done`, so setting this after
|
|
144
|
+
// the emit leaves a window where a valid answer is refused.
|
|
145
|
+
if (ev.kind === "question") lastQuestion = ev.question;
|
|
146
|
+
if (ev.kind === "done") {
|
|
147
|
+
awaitingAnswer = ev.cause === "awaiting-input";
|
|
148
|
+
if (ev.failure !== undefined) lastFailure = ev.failure;
|
|
149
|
+
}
|
|
150
|
+
if (ev.kind === "failure") lastFailure = ev;
|
|
151
|
+
await emit(ev);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
})();
|
|
155
|
+
|
|
156
|
+
const rl = createInterface({ input: a.input ?? process.stdin });
|
|
157
|
+
const stdinPump = (async () => {
|
|
158
|
+
for await (const line of rl) {
|
|
159
|
+
if (line.trim() === "") continue;
|
|
160
|
+
const cmd = parseCommand(line);
|
|
161
|
+
if ("malformed" in cmd) {
|
|
162
|
+
await emit({ kind: "error", message: `malformed command: ${cmd.malformed}` });
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
if (cmd.op === "close") return;
|
|
166
|
+
let text = cmd.text;
|
|
167
|
+
if (cmd.op === "answer") {
|
|
168
|
+
if (!awaitingAnswer) {
|
|
169
|
+
await emit({
|
|
170
|
+
kind: "disposition",
|
|
171
|
+
id: cmd.id,
|
|
172
|
+
disposition: "rejected",
|
|
173
|
+
reason: "no-open-question",
|
|
174
|
+
});
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
text = composeAnswer(lastQuestion, cmd.text);
|
|
178
|
+
}
|
|
179
|
+
let sent: SessionSendResult;
|
|
180
|
+
try {
|
|
181
|
+
sent = a.handle.send({ id: cmd.id, text });
|
|
182
|
+
} catch (err) {
|
|
183
|
+
// A session the caller already closed, or one already dead: a
|
|
184
|
+
// different remedy from a broken pipe, so a different reason.
|
|
185
|
+
if (err instanceof SessionClosedError) {
|
|
186
|
+
await emit({
|
|
187
|
+
kind: "disposition",
|
|
188
|
+
id: cmd.id,
|
|
189
|
+
disposition: "rejected",
|
|
190
|
+
reason: "closed",
|
|
191
|
+
});
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
throw err;
|
|
195
|
+
}
|
|
196
|
+
await emit({
|
|
197
|
+
kind: "disposition",
|
|
198
|
+
id: cmd.id,
|
|
199
|
+
disposition: sent.disposition,
|
|
200
|
+
...(sent.reason !== undefined ? { reason: sent.reason } : {}),
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
})();
|
|
204
|
+
|
|
205
|
+
// Whichever ends first drives the close: a close/EOF from stdin, or the
|
|
206
|
+
// session dying (the turns iterable ends). close() is idempotent; closing
|
|
207
|
+
// the readline unblocks the stdin pump if the session died first.
|
|
208
|
+
await Promise.race([stdinPump, stdoutPump]);
|
|
209
|
+
await a.handle.close();
|
|
210
|
+
rl.close();
|
|
211
|
+
await Promise.allSettled([stdinPump, stdoutPump]);
|
|
212
|
+
|
|
213
|
+
// Every input the runner accepted as queued and then lost gets its own
|
|
214
|
+
// rejection, before the terminal line (RFC S003).
|
|
215
|
+
for (const id of a.getDroppedIds?.() ?? []) {
|
|
216
|
+
await emit({ kind: "disposition", id, disposition: "rejected", reason: "closed" });
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
const info = a.getCloseInfo();
|
|
220
|
+
await emit({
|
|
221
|
+
kind: "closed",
|
|
222
|
+
exitCode: info.exitCode,
|
|
223
|
+
cause: info.cause,
|
|
224
|
+
...(info.cause !== "clean" && lastFailure !== undefined ? { failure: lastFailure } : {}),
|
|
225
|
+
});
|
|
226
|
+
// A consumer that stopped reading gets exit 1 even on a clean harness exit:
|
|
227
|
+
// the session did not end the way the consumer asked for.
|
|
228
|
+
if (consumerGone) return 1;
|
|
229
|
+
return info.cause === "clean" ? 0 : 1;
|
|
230
|
+
};
|