@dungle-scrubs/harness-cli-normalizer 0.5.3 → 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.
Files changed (39) hide show
  1. package/README.md +111 -0
  2. package/dist/cli/args.d.ts.map +1 -1
  3. package/dist/cli/args.js +8 -0
  4. package/dist/cli/args.js.map +1 -1
  5. package/dist/cli/help.d.ts +2 -2
  6. package/dist/cli/help.d.ts.map +1 -1
  7. package/dist/cli/help.js +16 -0
  8. package/dist/cli/help.js.map +1 -1
  9. package/dist/cli/inspect.d.ts.map +1 -1
  10. package/dist/cli/inspect.js +21 -0
  11. package/dist/cli/inspect.js.map +1 -1
  12. package/dist/cli/refuse.d.ts +7 -1
  13. package/dist/cli/refuse.d.ts.map +1 -1
  14. package/dist/cli/refuse.js +16 -5
  15. package/dist/cli/refuse.js.map +1 -1
  16. package/dist/cli/session-json.d.ts +25 -0
  17. package/dist/cli/session-json.d.ts.map +1 -0
  18. package/dist/cli/session-json.js +195 -0
  19. package/dist/cli/session-json.js.map +1 -0
  20. package/dist/cli/session.d.ts.map +1 -1
  21. package/dist/cli/session.js +93 -11
  22. package/dist/cli/session.js.map +1 -1
  23. package/dist/execution/open-session.d.ts +24 -3
  24. package/dist/execution/open-session.d.ts.map +1 -1
  25. package/dist/execution/open-session.js +106 -19
  26. package/dist/execution/open-session.js.map +1 -1
  27. package/dist/interpretation/argv.d.ts +3 -0
  28. package/dist/interpretation/argv.d.ts.map +1 -1
  29. package/dist/interpretation/argv.js +5 -0
  30. package/dist/interpretation/argv.js.map +1 -1
  31. package/package.json +1 -1
  32. package/src/cli/args.ts +8 -0
  33. package/src/cli/help.ts +16 -0
  34. package/src/cli/inspect.ts +26 -0
  35. package/src/cli/refuse.ts +31 -12
  36. package/src/cli/session-json.ts +230 -0
  37. package/src/cli/session.ts +103 -12
  38. package/src/execution/open-session.ts +132 -23
  39. package/src/interpretation/argv.ts +8 -0
@@ -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,CAqOlF,CAAC"}
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"}
@@ -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
- process.stderr.write(`${err.message}\n`);
25
- process.stderr.write(`supported: ${supported.join(", ")}\n`);
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 deps = nodeRunnerDeps();
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
- process.stderr.write(`${err.message}\n`);
98
- if (err.supported.length)
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(`The user answered the question: "${q.question}" with: ${answer}. Continue accordingly.`);
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
@@ -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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"}
@@ -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<AsyncIterable<HarnessEvent>>;
15
- send(text: string): SessionSendResult;
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,EAAkB,MAAM,WAAW,CAAC;AAC5D,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,CAAC;CAC5C;AAED,MAAM,WAAW,aAAa;IAC5B;;8DAE0D;IAC1D,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;IAC3D,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAAC;IACtC,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;CACtC;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,aA8eF,CAAC"}
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"}