@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
|
@@ -0,0 +1,195 @@
|
|
|
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 { SessionClosedError, } from "../execution/open-session.js";
|
|
13
|
+
const parseCommand = (line) => {
|
|
14
|
+
let obj;
|
|
15
|
+
try {
|
|
16
|
+
obj = JSON.parse(line);
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return { malformed: "not JSON" };
|
|
20
|
+
}
|
|
21
|
+
if (obj === null || typeof obj !== "object" || Array.isArray(obj)) {
|
|
22
|
+
return { malformed: "not an object" };
|
|
23
|
+
}
|
|
24
|
+
const rec = obj;
|
|
25
|
+
if (rec.op === "close")
|
|
26
|
+
return { op: "close" };
|
|
27
|
+
if (rec.op === "send" || rec.op === "answer") {
|
|
28
|
+
if (typeof rec.id !== "string" || rec.id === "")
|
|
29
|
+
return { malformed: "missing or empty id" };
|
|
30
|
+
if (typeof rec.text !== "string")
|
|
31
|
+
return { malformed: "text must be a string" };
|
|
32
|
+
return { op: rec.op, id: rec.id, text: rec.text };
|
|
33
|
+
}
|
|
34
|
+
return { malformed: `unknown op ${JSON.stringify(rec.op)}` };
|
|
35
|
+
};
|
|
36
|
+
/** The answer wrapper hcn composes so a consumer never re-derives it
|
|
37
|
+
* (RFC-01: the preamble is normalizer knowledge). */
|
|
38
|
+
const composeAnswer = (question, answer) => `The user answered the question: "${question}" with: ${answer}. Continue accordingly.`;
|
|
39
|
+
export const runJsonSession = async (a) => {
|
|
40
|
+
const rawWrite = a.write ?? ((line) => process.stdout.write(line));
|
|
41
|
+
const onDrain = a.onDrain ?? ((fn) => process.stdout.once("drain", fn));
|
|
42
|
+
// The consumer's read end can close mid-session (it died, or it stopped
|
|
43
|
+
// reading). The process-wide EPIPE guard in index.ts exits 0 immediately,
|
|
44
|
+
// which would strand the harness child with nobody to end it. For a
|
|
45
|
+
// machine session the right answer is to close the session - grace, then
|
|
46
|
+
// signal - and exit 1. Replacing the listener is deliberate: the global
|
|
47
|
+
// one runs first otherwise and the process is gone before we act.
|
|
48
|
+
let consumerGone = false;
|
|
49
|
+
if (a.write === undefined) {
|
|
50
|
+
process.stdout.removeAllListeners("error");
|
|
51
|
+
process.stdout.on("error", (err) => {
|
|
52
|
+
if (err.code !== "EPIPE")
|
|
53
|
+
return;
|
|
54
|
+
consumerGone = true;
|
|
55
|
+
void a.handle.close();
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
// One serialized, drain-aware writer for both pumps: stdout never
|
|
59
|
+
// interleaves two events and never buffers past the OS pipe.
|
|
60
|
+
let chain = Promise.resolve();
|
|
61
|
+
const emit = (event) => {
|
|
62
|
+
chain = chain.then(() => new Promise((resolve) => {
|
|
63
|
+
// A broken stdout never drains. Writing into it would park this
|
|
64
|
+
// chain forever and the session would hang instead of closing.
|
|
65
|
+
if (consumerGone) {
|
|
66
|
+
resolve();
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
try {
|
|
70
|
+
if (rawWrite(`${JSON.stringify(event)}\n`))
|
|
71
|
+
resolve();
|
|
72
|
+
else
|
|
73
|
+
onDrain(resolve);
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
consumerGone = true;
|
|
77
|
+
resolve();
|
|
78
|
+
}
|
|
79
|
+
}));
|
|
80
|
+
return chain;
|
|
81
|
+
};
|
|
82
|
+
await emit({
|
|
83
|
+
kind: "session",
|
|
84
|
+
sessionId: a.sessionId,
|
|
85
|
+
harness: a.harness,
|
|
86
|
+
hcn: a.hcnVersion,
|
|
87
|
+
escalateQuestions: a.escalateQuestions,
|
|
88
|
+
});
|
|
89
|
+
// Shared between the pumps: the last question asked, whether the last turn
|
|
90
|
+
// ended awaiting an answer, and the last failure seen (for closed.failure).
|
|
91
|
+
let lastQuestion = "";
|
|
92
|
+
let awaitingAnswer = false;
|
|
93
|
+
let lastFailure;
|
|
94
|
+
const stdoutPump = (async () => {
|
|
95
|
+
for await (const turn of a.handle.turns) {
|
|
96
|
+
awaitingAnswer = false;
|
|
97
|
+
await emit({
|
|
98
|
+
kind: "turn",
|
|
99
|
+
turnId: turn.turnId,
|
|
100
|
+
...(turn.inputId !== undefined ? { id: turn.inputId } : {}),
|
|
101
|
+
});
|
|
102
|
+
for await (const ev of turn) {
|
|
103
|
+
// Update the answer state BEFORE the event reaches the consumer. A
|
|
104
|
+
// consumer answers the moment it reads `done`, so setting this after
|
|
105
|
+
// the emit leaves a window where a valid answer is refused.
|
|
106
|
+
if (ev.kind === "question")
|
|
107
|
+
lastQuestion = ev.question;
|
|
108
|
+
if (ev.kind === "done") {
|
|
109
|
+
awaitingAnswer = ev.cause === "awaiting-input";
|
|
110
|
+
if (ev.failure !== undefined)
|
|
111
|
+
lastFailure = ev.failure;
|
|
112
|
+
}
|
|
113
|
+
if (ev.kind === "failure")
|
|
114
|
+
lastFailure = ev;
|
|
115
|
+
await emit(ev);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
})();
|
|
119
|
+
const rl = createInterface({ input: a.input ?? process.stdin });
|
|
120
|
+
const stdinPump = (async () => {
|
|
121
|
+
for await (const line of rl) {
|
|
122
|
+
if (line.trim() === "")
|
|
123
|
+
continue;
|
|
124
|
+
const cmd = parseCommand(line);
|
|
125
|
+
if ("malformed" in cmd) {
|
|
126
|
+
await emit({ kind: "error", message: `malformed command: ${cmd.malformed}` });
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
if (cmd.op === "close")
|
|
130
|
+
return;
|
|
131
|
+
let text = cmd.text;
|
|
132
|
+
if (cmd.op === "answer") {
|
|
133
|
+
if (!awaitingAnswer) {
|
|
134
|
+
await emit({
|
|
135
|
+
kind: "disposition",
|
|
136
|
+
id: cmd.id,
|
|
137
|
+
disposition: "rejected",
|
|
138
|
+
reason: "no-open-question",
|
|
139
|
+
});
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
text = composeAnswer(lastQuestion, cmd.text);
|
|
143
|
+
}
|
|
144
|
+
let sent;
|
|
145
|
+
try {
|
|
146
|
+
sent = a.handle.send({ id: cmd.id, text });
|
|
147
|
+
}
|
|
148
|
+
catch (err) {
|
|
149
|
+
// A session the caller already closed, or one already dead: a
|
|
150
|
+
// different remedy from a broken pipe, so a different reason.
|
|
151
|
+
if (err instanceof SessionClosedError) {
|
|
152
|
+
await emit({
|
|
153
|
+
kind: "disposition",
|
|
154
|
+
id: cmd.id,
|
|
155
|
+
disposition: "rejected",
|
|
156
|
+
reason: "closed",
|
|
157
|
+
});
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
throw err;
|
|
161
|
+
}
|
|
162
|
+
await emit({
|
|
163
|
+
kind: "disposition",
|
|
164
|
+
id: cmd.id,
|
|
165
|
+
disposition: sent.disposition,
|
|
166
|
+
...(sent.reason !== undefined ? { reason: sent.reason } : {}),
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
})();
|
|
170
|
+
// Whichever ends first drives the close: a close/EOF from stdin, or the
|
|
171
|
+
// session dying (the turns iterable ends). close() is idempotent; closing
|
|
172
|
+
// the readline unblocks the stdin pump if the session died first.
|
|
173
|
+
await Promise.race([stdinPump, stdoutPump]);
|
|
174
|
+
await a.handle.close();
|
|
175
|
+
rl.close();
|
|
176
|
+
await Promise.allSettled([stdinPump, stdoutPump]);
|
|
177
|
+
// Every input the runner accepted as queued and then lost gets its own
|
|
178
|
+
// rejection, before the terminal line (RFC S003).
|
|
179
|
+
for (const id of a.getDroppedIds?.() ?? []) {
|
|
180
|
+
await emit({ kind: "disposition", id, disposition: "rejected", reason: "closed" });
|
|
181
|
+
}
|
|
182
|
+
const info = a.getCloseInfo();
|
|
183
|
+
await emit({
|
|
184
|
+
kind: "closed",
|
|
185
|
+
exitCode: info.exitCode,
|
|
186
|
+
cause: info.cause,
|
|
187
|
+
...(info.cause !== "clean" && lastFailure !== undefined ? { failure: lastFailure } : {}),
|
|
188
|
+
});
|
|
189
|
+
// A consumer that stopped reading gets exit 1 even on a clean harness exit:
|
|
190
|
+
// the session did not end the way the consumer asked for.
|
|
191
|
+
if (consumerGone)
|
|
192
|
+
return 1;
|
|
193
|
+
return info.cause === "clean" ? 0 : 1;
|
|
194
|
+
};
|
|
195
|
+
//# sourceMappingURL=session-json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-json.js","sourceRoot":"","sources":["../../src/cli/session-json.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/cli/session.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,OAAO,gBAAuB,MAAM,WAAW,MAAM,EAAE,KAAG,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/cli/session.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,OAAO,gBAAuB,MAAM,WAAW,MAAM,EAAE,KAAG,OAAO,CAAC,IAAI,CAgUlF,CAAC"}
|
package/dist/cli/session.js
CHANGED
|
@@ -7,6 +7,9 @@ import { defaultDescriptors } from "../knowledge/overrides.js";
|
|
|
7
7
|
import { createRenderState, renderEvent } from "./render.js";
|
|
8
8
|
import { resolveHarness } from "./resolve-harness.js";
|
|
9
9
|
export const session = async (harnessName, rawArgs) => {
|
|
10
|
+
// Decided before any refusal can fire: a refused --json session still owes
|
|
11
|
+
// the stream a failure and a terminal `closed` (RFC-01 rule 3).
|
|
12
|
+
const jsonMode = rawArgs.includes("--json");
|
|
10
13
|
// issue #44: the gate is the descriptor's sessionMode (claude stream-json,
|
|
11
14
|
// pi --mode rpc), not a hardcoded name list - a harness that grows a
|
|
12
15
|
// session mode is available the moment its descriptor declares one.
|
|
@@ -21,9 +24,8 @@ export const session = async (harnessName, rawArgs) => {
|
|
|
21
24
|
supported,
|
|
22
25
|
detail: `session mode is available on ${supported.join(", ")}; ${harnessName} declares no persistent headless session`,
|
|
23
26
|
});
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
process.exitCode = 2;
|
|
27
|
+
const { refusalOf, refuse } = await import("./refuse.js");
|
|
28
|
+
refuse(refusalOf(err), jsonMode, "closed");
|
|
27
29
|
return;
|
|
28
30
|
}
|
|
29
31
|
if (rawArgs.includes("--help") || rawArgs.includes("-h")) {
|
|
@@ -39,6 +41,11 @@ export const session = async (harnessName, rawArgs) => {
|
|
|
39
41
|
catch (err) {
|
|
40
42
|
const message = err instanceof Error ? err.message : String(err);
|
|
41
43
|
process.stderr.write(`unknown flag: ${message}\n`);
|
|
44
|
+
if (jsonMode) {
|
|
45
|
+
const { writeFailurePair } = await import("./refuse.js");
|
|
46
|
+
const { failureFromRejected } = await import("../execution/failure.js");
|
|
47
|
+
writeFailurePair(failureFromRejected({ issue: "invalid-option-value", detail: `unknown flag: ${message}` }), "closed");
|
|
48
|
+
}
|
|
42
49
|
process.exitCode = 2;
|
|
43
50
|
return;
|
|
44
51
|
}
|
|
@@ -48,6 +55,7 @@ export const session = async (harnessName, rawArgs) => {
|
|
|
48
55
|
randomUUID();
|
|
49
56
|
const model = values.model;
|
|
50
57
|
const cwd = values.cwd;
|
|
58
|
+
const provider = values.provider;
|
|
51
59
|
// issue #44: same precedence as hcn run - arg > project > user >
|
|
52
60
|
// default-true. A behavior instruction, so it rides every send's
|
|
53
61
|
// preamble, never a harness flag.
|
|
@@ -81,29 +89,99 @@ export const session = async (harnessName, rawArgs) => {
|
|
|
81
89
|
}
|
|
82
90
|
catch (configErr) {
|
|
83
91
|
process.stderr.write(`config error: ${configErr.message}\n`);
|
|
92
|
+
if (jsonMode) {
|
|
93
|
+
const { writeFailurePair } = await import("./refuse.js");
|
|
94
|
+
const { failureFromRejected } = await import("../execution/failure.js");
|
|
95
|
+
writeFailurePair(failureFromRejected({
|
|
96
|
+
issue: "invalid-option-value",
|
|
97
|
+
detail: `config error: ${configErr.message}`,
|
|
98
|
+
}), "closed");
|
|
99
|
+
}
|
|
84
100
|
process.exitCode = 2;
|
|
85
101
|
return;
|
|
86
102
|
}
|
|
87
103
|
process.stderr.write(`provenance: escalateQuestions = ${escalateQuestions} (${escalateTier})\n`);
|
|
88
104
|
// Validate sessionId shape? let openSession handle via assertUsableSessionId
|
|
89
105
|
delete process.env.HERDR_ENV;
|
|
90
|
-
const
|
|
106
|
+
const wantJson = values.json === true;
|
|
107
|
+
// Opt-in per-turn inactivity budget. 0 disables; no default. A session turn
|
|
108
|
+
// can hang with the process alive, which no exit code reports.
|
|
109
|
+
const rawStall = values.stall;
|
|
110
|
+
let stallMs;
|
|
111
|
+
if (rawStall !== undefined) {
|
|
112
|
+
const seconds = Number(rawStall);
|
|
113
|
+
if (!Number.isFinite(seconds) || seconds < 0) {
|
|
114
|
+
process.stderr.write(`invalid --stall ${JSON.stringify(rawStall)}; expected seconds >= 0\n`);
|
|
115
|
+
if (jsonMode) {
|
|
116
|
+
const { writeFailurePair } = await import("./refuse.js");
|
|
117
|
+
const { failureFromRejected } = await import("../execution/failure.js");
|
|
118
|
+
writeFailurePair(failureFromRejected({
|
|
119
|
+
issue: "invalid-option-value",
|
|
120
|
+
detail: `invalid --stall ${JSON.stringify(rawStall)}`,
|
|
121
|
+
}), "closed");
|
|
122
|
+
}
|
|
123
|
+
process.exitCode = 2;
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
if (seconds > 0)
|
|
127
|
+
stallMs = seconds * 1000;
|
|
128
|
+
}
|
|
129
|
+
const baseDeps = stallMs === undefined ? nodeRunnerDeps() : nodeRunnerDeps({ stallMs });
|
|
130
|
+
// Capture the runner's final exitCode/cause for the --json `closed` event.
|
|
131
|
+
const closeInfo = { exitCode: null, cause: "clean" };
|
|
132
|
+
const droppedIds = [];
|
|
133
|
+
const deps = wantJson
|
|
134
|
+
? {
|
|
135
|
+
...baseDeps,
|
|
136
|
+
log: (e) => {
|
|
137
|
+
if (e.event === "session_close") {
|
|
138
|
+
closeInfo.exitCode = e.exitCode ?? null;
|
|
139
|
+
closeInfo.cause = e.cause ?? "clean";
|
|
140
|
+
}
|
|
141
|
+
if (e.event === "sends_dropped" && Array.isArray(e.ids)) {
|
|
142
|
+
for (const id of e.ids)
|
|
143
|
+
if (typeof id === "string")
|
|
144
|
+
droppedIds.push(id);
|
|
145
|
+
}
|
|
146
|
+
baseDeps.log?.(e);
|
|
147
|
+
},
|
|
148
|
+
}
|
|
149
|
+
: baseDeps;
|
|
91
150
|
let handle;
|
|
92
151
|
try {
|
|
93
|
-
handle = openSession(h, { sessionId, model, cwd, escalateQuestions }, deps);
|
|
152
|
+
handle = openSession(h, { sessionId, model, cwd, escalateQuestions, provider }, deps);
|
|
94
153
|
}
|
|
95
154
|
catch (err) {
|
|
96
155
|
if (err instanceof ArgvRefusalError) {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
process.stderr.write(`supported: ${err.supported.join(", ")}\n`);
|
|
100
|
-
process.exitCode = 2;
|
|
156
|
+
const { refusalOf, refuse } = await import("./refuse.js");
|
|
157
|
+
refuse(refusalOf(err), jsonMode, "closed");
|
|
101
158
|
return;
|
|
102
159
|
}
|
|
160
|
+
// S002: the harness binary is missing or would not start. A transport
|
|
161
|
+
// failure, not a refusal - exit 1, and the stream is still owed its pair.
|
|
103
162
|
process.stderr.write(`could not open session: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
163
|
+
if (jsonMode) {
|
|
164
|
+
const { writeFailurePair } = await import("./refuse.js");
|
|
165
|
+
const { failureFromTransport } = await import("../execution/failure.js");
|
|
166
|
+
writeFailurePair(failureFromTransport(err instanceof Error ? err.message : String(err)), "closed");
|
|
167
|
+
}
|
|
104
168
|
process.exitCode = 1;
|
|
105
169
|
return;
|
|
106
170
|
}
|
|
171
|
+
if (wantJson) {
|
|
172
|
+
const { runJsonSession } = await import("./session-json.js");
|
|
173
|
+
const { getVersion } = await import("./version.js");
|
|
174
|
+
process.exitCode = await runJsonSession({
|
|
175
|
+
handle,
|
|
176
|
+
sessionId,
|
|
177
|
+
harness: h.name,
|
|
178
|
+
hcnVersion: getVersion(),
|
|
179
|
+
escalateQuestions,
|
|
180
|
+
getCloseInfo: () => closeInfo,
|
|
181
|
+
getDroppedIds: () => droppedIds,
|
|
182
|
+
});
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
107
185
|
process.stdout.write(`interactive ${h.name} session ${sessionId}\n(empty line or "exit" to quit)\n`);
|
|
108
186
|
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
109
187
|
// One line source for BOTH the you-prompt and the answer menu. A
|
|
@@ -121,6 +199,7 @@ export const session = async (harnessName, rawArgs) => {
|
|
|
121
199
|
};
|
|
122
200
|
// Handle SIGINT to close session cleanly
|
|
123
201
|
let closing = false;
|
|
202
|
+
let sendCount = 0;
|
|
124
203
|
const doClose = async () => {
|
|
125
204
|
if (closing)
|
|
126
205
|
return;
|
|
@@ -156,7 +235,7 @@ export const session = async (harnessName, rawArgs) => {
|
|
|
156
235
|
const trimmed = line.trim();
|
|
157
236
|
if (trimmed === "" || trimmed === "exit")
|
|
158
237
|
break;
|
|
159
|
-
const result = handle.send(line);
|
|
238
|
+
const result = handle.send({ id: `you-${++sendCount}`, text: line });
|
|
160
239
|
if (result.disposition === "queued") {
|
|
161
240
|
process.stderr.write(`disposition: queued (turn in progress)\n`);
|
|
162
241
|
}
|
|
@@ -194,7 +273,10 @@ export const session = async (harnessName, rawArgs) => {
|
|
|
194
273
|
answer = a;
|
|
195
274
|
}
|
|
196
275
|
}
|
|
197
|
-
handle.send(
|
|
276
|
+
handle.send({
|
|
277
|
+
id: `you-${++sendCount}`,
|
|
278
|
+
text: `The user answered the question: "${q.question}" with: ${answer}. Continue accordingly.`,
|
|
279
|
+
});
|
|
198
280
|
// Drain the answer turn BEFORE prompting again - the pump's
|
|
199
281
|
// backpressure stalls the harness until the turn iterable is
|
|
200
282
|
// consumed (verified live: menu answered, you-prompt rendered, no
|
package/dist/cli/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/cli/session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/cli/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import type { RefusalIssue } from "../interpretation/refusal.js";
|
|
16
16
|
import type { AuthFailureKind, DiscoveryFacet, HarnessDescriptor, LimitCode } from "../knowledge/descriptor.js";
|
|
17
|
-
export declare const FAILURE_CLASSES: readonly ["rate-limit", "usage-limit", "quota", "auth", "budget", "task", "transport", "rejected", "native", "timeout"];
|
|
17
|
+
export declare const FAILURE_CLASSES: readonly ["rate-limit", "usage-limit", "quota", "auth", "budget", "task", "transport", "unavailable", "rejected", "native", "timeout"];
|
|
18
18
|
export type FailureClass = (typeof FAILURE_CLASSES)[number];
|
|
19
19
|
export interface FailureSummary {
|
|
20
20
|
readonly class: FailureClass;
|
|
@@ -53,6 +53,7 @@ export declare const failureFromTerminalError: (h: HarnessDescriptor, message: s
|
|
|
53
53
|
export declare const failureFromTask: (detail?: string) => FailureSummary;
|
|
54
54
|
export declare const failureFromBudget: (detail?: string) => FailureSummary;
|
|
55
55
|
export declare const failureFromTransport: (detail?: string) => FailureSummary;
|
|
56
|
+
export declare const failureFromUnavailable: (detail?: string) => FailureSummary;
|
|
56
57
|
export declare const failureFromRejected: (opts: {
|
|
57
58
|
issue: RefusalIssue;
|
|
58
59
|
option?: import("../interpretation/refusal.js").RefusalOption;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"failure.d.ts","sourceRoot":"","sources":["../../src/execution/failure.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"failure.d.ts","sourceRoot":"","sources":["../../src/execution/failure.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,SAAS,EACV,MAAM,4BAA4B,CAAC;AAEpC,eAAO,MAAM,eAAe,wIAYjB,CAAC;AACZ,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,8BAA8B,EAAE,aAAa,CAAC;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,kEAAkE;IAClE,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5E,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;8CAE0C;IAC1C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,eAAO,MAAM,WAAW,QAAS,YAAY,KAAG,OACmD,CAAC;AAsCpG,eAAO,MAAM,kBAAkB,QAAO,cAIpC,CAAC;AAEH;8DAC8D;AAC9D,eAAO,MAAM,iBAAiB,mBACZ,MAAM,GAAG,IAAI,cACjB,SAAS,MAAM,EAAE,KAC5B,cAQD,CAAC;AAEH,eAAO,MAAM,gBAAgB,SAAU,SAAS,KAAG,cAalD,CAAC;AAEF,eAAO,MAAM,eAAe,SAAU,eAAe,KAAG,cAKtD,CAAC;AAEH;;wEAEwE;AACxE,eAAO,MAAM,wBAAwB,MAAO,iBAAiB,WAAW,MAAM,KAAG,cAMhF,CAAC;AAEF,eAAO,MAAM,eAAe,YAAa,MAAM,KAAG,cAIhD,CAAC;AAEH,eAAO,MAAM,iBAAiB,YAAa,MAAM,KAAG,cAIlD,CAAC;AAEH,eAAO,MAAM,oBAAoB,YAAa,MAAM,KAAG,cAIrD,CAAC;AAEH,eAAO,MAAM,sBAAsB,YAAa,MAAM,KAAG,cAIvD,CAAC;AAEH,eAAO,MAAM,mBAAmB,SAAU;IACxC,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,8BAA8B,EAAE,aAAa,CAAC;IAC9D,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,WAAW,CAAC,EAAE,aAAa,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,KAAG,cAaF,CAAC;AAmBH,eAAO,MAAM,cAAc,aAAc,SAAS,cAAc,EAAE,KAAG,cAAc,GAAG,SAgBrF,CAAC"}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* non-retryable across the whole model chain because the remedy is different
|
|
13
13
|
* options or a different harness, not a different model.
|
|
14
14
|
*/
|
|
15
|
-
import { detectAuthFailureInLine, detectTransportInLine } from "../interpretation/limits.js";
|
|
15
|
+
import { detectAuthFailureInLine, detectTransportInLine, detectUnavailableInLine, } from "../interpretation/limits.js";
|
|
16
16
|
export const FAILURE_CLASSES = Object.freeze([
|
|
17
17
|
"rate-limit",
|
|
18
18
|
"usage-limit",
|
|
@@ -21,6 +21,7 @@ export const FAILURE_CLASSES = Object.freeze([
|
|
|
21
21
|
"budget",
|
|
22
22
|
"task",
|
|
23
23
|
"transport",
|
|
24
|
+
"unavailable",
|
|
24
25
|
"rejected",
|
|
25
26
|
"native",
|
|
26
27
|
"timeout",
|
|
@@ -42,6 +43,8 @@ const messageFor = (cls, detail) => {
|
|
|
42
43
|
return `Task failed${detail ? ` (${detail})` : ""} - surface to caller, do not auto-route`;
|
|
43
44
|
case "transport":
|
|
44
45
|
return `Transport failure${detail ? ` (${detail})` : ""} - retry or route to another provider`;
|
|
46
|
+
case "unavailable":
|
|
47
|
+
return `Provider cannot serve this route${detail ? ` (${detail})` : ""} - route to another model or provider`;
|
|
45
48
|
case "rejected":
|
|
46
49
|
return `Request rejected${detail ? ` (${detail})` : ""} - change options or harness`;
|
|
47
50
|
case "timeout":
|
|
@@ -101,6 +104,8 @@ export const failureFromTerminalError = (h, message) => {
|
|
|
101
104
|
return failureFromAuth(auth);
|
|
102
105
|
if (detectTransportInLine(message))
|
|
103
106
|
return failureFromTransport(message);
|
|
107
|
+
if (detectUnavailableInLine(message))
|
|
108
|
+
return failureFromUnavailable(message);
|
|
104
109
|
return failureFromTask(message);
|
|
105
110
|
};
|
|
106
111
|
export const failureFromTask = (detail) => ({
|
|
@@ -118,6 +123,11 @@ export const failureFromTransport = (detail) => ({
|
|
|
118
123
|
retryable: true,
|
|
119
124
|
message: messageFor("transport", detail),
|
|
120
125
|
});
|
|
126
|
+
export const failureFromUnavailable = (detail) => ({
|
|
127
|
+
class: "unavailable",
|
|
128
|
+
retryable: true,
|
|
129
|
+
message: messageFor("unavailable", detail),
|
|
130
|
+
});
|
|
121
131
|
export const failureFromRejected = (opts) => ({
|
|
122
132
|
class: "rejected",
|
|
123
133
|
retryable: false,
|
|
@@ -138,6 +148,7 @@ const PRECEDENCE = {
|
|
|
138
148
|
"rate-limit": 2,
|
|
139
149
|
"usage-limit": 2,
|
|
140
150
|
quota: 2,
|
|
151
|
+
unavailable: 2,
|
|
141
152
|
budget: 3,
|
|
142
153
|
task: 3,
|
|
143
154
|
transport: 4,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"failure.js","sourceRoot":"","sources":["../../src/execution/failure.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"failure.js","sourceRoot":"","sources":["../../src/execution/failure.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,14 +5,33 @@ import type { HarnessEvent } from "./events.js";
|
|
|
5
5
|
* own and escalating signals. */
|
|
6
6
|
export declare const CLOSE_GRACE_MS = 5000;
|
|
7
7
|
export interface SessionSendResult {
|
|
8
|
-
readonly disposition: "started" | "queued";
|
|
8
|
+
readonly disposition: "started" | "queued" | "rejected";
|
|
9
|
+
/** Present when rejected. `write-failed` is a broken stdin pipe, which is
|
|
10
|
+
* a different remedy from a session the caller already closed - the two
|
|
11
|
+
* must stay distinguishable. */
|
|
12
|
+
readonly reason?: "write-failed";
|
|
13
|
+
}
|
|
14
|
+
/** One turn's event stream, tagged with the id of the send that opened it.
|
|
15
|
+
* `inputId` is present for every turn a consumer send opened, which today is
|
|
16
|
+
* every turn; a turn opened by anything else (none exists yet) omits it. */
|
|
17
|
+
export interface SessionTurn extends AsyncIterable<HarnessEvent> {
|
|
18
|
+
readonly inputId?: string;
|
|
19
|
+
/** `${sessionId}:turn-${n}`, matching the runner's turn_start log. */
|
|
20
|
+
readonly turnId?: string;
|
|
21
|
+
}
|
|
22
|
+
/** A send's payload: the consumer's correlation id travels with the text
|
|
23
|
+
* from the moment it arrives to the turn it opens and, on death, to the
|
|
24
|
+
* loss report. */
|
|
25
|
+
export interface SessionInput {
|
|
26
|
+
readonly id: string;
|
|
27
|
+
readonly text: string;
|
|
9
28
|
}
|
|
10
29
|
export interface SessionHandle {
|
|
11
30
|
/** One inner iterable per turn, each ending in a turn-scoped `done`.
|
|
12
31
|
* Breaking out of THIS iterable closes the session; breaking out of a
|
|
13
32
|
* single turn's iterable only stops reading that turn. */
|
|
14
|
-
readonly turns: AsyncIterable<
|
|
15
|
-
send(
|
|
33
|
+
readonly turns: AsyncIterable<SessionTurn>;
|
|
34
|
+
send(input: SessionInput): SessionSendResult;
|
|
16
35
|
close(): Promise<void>;
|
|
17
36
|
}
|
|
18
37
|
export interface OpenSessionOptions {
|
|
@@ -25,6 +44,8 @@ export interface OpenSessionOptions {
|
|
|
25
44
|
* every send and arms block detection at turn end; false composes the
|
|
26
45
|
* no-ask instruction and disarms detection. */
|
|
27
46
|
readonly escalateQuestions?: boolean;
|
|
47
|
+
/** Provider selector (pi); refused on a harness without one. */
|
|
48
|
+
readonly provider?: string;
|
|
28
49
|
}
|
|
29
50
|
export declare class SessionClosedError extends Error {
|
|
30
51
|
constructor();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open-session.d.ts","sourceRoot":"","sources":["../../src/execution/open-session.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,iBAAiB,EAAwB,MAAM,4BAA4B,CAAC;AAG1F,OAAO,KAAK,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"open-session.d.ts","sourceRoot":"","sources":["../../src/execution/open-session.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,iBAAiB,EAAwB,MAAM,4BAA4B,CAAC;AAG1F,OAAO,KAAK,EAAE,UAAU,EAA+B,MAAM,WAAW,CAAC;AACzE,OAAO,KAAK,EAAa,YAAY,EAAE,MAAM,aAAa,CAAC;AAa3D;iCACiC;AACjC,eAAO,MAAM,cAAc,OAAQ,CAAC;AAIpC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;IACxD;;oCAEgC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;CAClC;AAED;;4EAE4E;AAC5E,MAAM,WAAW,WAAY,SAAQ,aAAa,CAAC,YAAY,CAAC;IAC9D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,sEAAsE;IACtE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;kBAEkB;AAClB,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B;;8DAE0D;IAC1D,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,iBAAiB,CAAC;IAC7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB;;;mDAG+C;IAC/C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,cAGC;CACF;AAED,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAK1C;CACF;AAED,eAAO,MAAM,WAAW,MACnB,iBAAiB,QACd,kBAAkB,QAClB,UAAU,KACf,aAokBF,CAAC"}
|