@pentoshi/clai 3.11.7 → 3.11.9

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 (115) hide show
  1. package/README.md +15 -0
  2. package/dist/agent/confirm-port.d.ts +4 -0
  3. package/dist/agent/confirm-port.js +9 -1
  4. package/dist/agent/confirm-port.js.map +1 -1
  5. package/dist/agent/finalize-gate.d.ts +57 -0
  6. package/dist/agent/finalize-gate.js +146 -0
  7. package/dist/agent/finalize-gate.js.map +1 -0
  8. package/dist/agent/runner.js +71 -179
  9. package/dist/agent/runner.js.map +1 -1
  10. package/dist/agent/tool-call-parser.js +3 -0
  11. package/dist/agent/tool-call-parser.js.map +1 -1
  12. package/dist/app/adapters/current-interactive-sessions-adapter.d.ts +4 -0
  13. package/dist/app/adapters/current-interactive-sessions-adapter.js +12 -0
  14. package/dist/app/adapters/current-interactive-sessions-adapter.js.map +1 -0
  15. package/dist/app/controllers/cancel-all-result.d.ts +8 -0
  16. package/dist/app/controllers/cancel-all-result.js +32 -0
  17. package/dist/app/controllers/cancel-all-result.js.map +1 -0
  18. package/dist/app/controllers/session-controller.d.ts +3 -0
  19. package/dist/app/controllers/session-controller.js +22 -6
  20. package/dist/app/controllers/session-controller.js.map +1 -1
  21. package/dist/app/ports/interactive-sessions-port.d.ts +22 -0
  22. package/dist/app/ports/interactive-sessions-port.js +9 -0
  23. package/dist/app/ports/interactive-sessions-port.js.map +1 -0
  24. package/dist/index.js +24 -13
  25. package/dist/index.js.map +1 -1
  26. package/dist/interactive-session/artifact-writer.d.ts +54 -0
  27. package/dist/interactive-session/artifact-writer.js +161 -0
  28. package/dist/interactive-session/artifact-writer.js.map +1 -0
  29. package/dist/interactive-session/cleanup.d.ts +37 -0
  30. package/dist/interactive-session/cleanup.js +191 -0
  31. package/dist/interactive-session/cleanup.js.map +1 -0
  32. package/dist/interactive-session/config.d.ts +118 -0
  33. package/dist/interactive-session/config.js +141 -0
  34. package/dist/interactive-session/config.js.map +1 -0
  35. package/dist/interactive-session/input-policy.d.ts +26 -0
  36. package/dist/interactive-session/input-policy.js +70 -0
  37. package/dist/interactive-session/input-policy.js.map +1 -0
  38. package/dist/interactive-session/manager.d.ts +118 -0
  39. package/dist/interactive-session/manager.js +1214 -0
  40. package/dist/interactive-session/manager.js.map +1 -0
  41. package/dist/interactive-session/output-store.d.ts +81 -0
  42. package/dist/interactive-session/output-store.js +239 -0
  43. package/dist/interactive-session/output-store.js.map +1 -0
  44. package/dist/interactive-session/output-view.d.ts +20 -0
  45. package/dist/interactive-session/output-view.js +142 -0
  46. package/dist/interactive-session/output-view.js.map +1 -0
  47. package/dist/interactive-session/recovery-journal.d.ts +53 -0
  48. package/dist/interactive-session/recovery-journal.js +167 -0
  49. package/dist/interactive-session/recovery-journal.js.map +1 -0
  50. package/dist/interactive-session/registry.d.ts +59 -0
  51. package/dist/interactive-session/registry.js +170 -0
  52. package/dist/interactive-session/registry.js.map +1 -0
  53. package/dist/interactive-session/runtime.d.ts +107 -0
  54. package/dist/interactive-session/runtime.js +191 -0
  55. package/dist/interactive-session/runtime.js.map +1 -0
  56. package/dist/interactive-session/session-runtime.d.ts +53 -0
  57. package/dist/interactive-session/session-runtime.js +65 -0
  58. package/dist/interactive-session/session-runtime.js.map +1 -0
  59. package/dist/interactive-session/streaming-redactor.d.ts +53 -0
  60. package/dist/interactive-session/streaming-redactor.js +271 -0
  61. package/dist/interactive-session/streaming-redactor.js.map +1 -0
  62. package/dist/interactive-session/telemetry.d.ts +30 -0
  63. package/dist/interactive-session/telemetry.js +47 -0
  64. package/dist/interactive-session/telemetry.js.map +1 -0
  65. package/dist/interactive-session/transport-factory.d.ts +8 -0
  66. package/dist/interactive-session/transport-factory.js +16 -0
  67. package/dist/interactive-session/transport-factory.js.map +1 -0
  68. package/dist/interactive-session/transport-node-pty.d.ts +38 -0
  69. package/dist/interactive-session/transport-node-pty.js +390 -0
  70. package/dist/interactive-session/transport-node-pty.js.map +1 -0
  71. package/dist/interactive-session/transport-pipe.d.ts +9 -0
  72. package/dist/interactive-session/transport-pipe.js +267 -0
  73. package/dist/interactive-session/transport-pipe.js.map +1 -0
  74. package/dist/interactive-session/transport.d.ts +110 -0
  75. package/dist/interactive-session/transport.js +89 -0
  76. package/dist/interactive-session/transport.js.map +1 -0
  77. package/dist/interactive-session/types.d.ts +258 -0
  78. package/dist/interactive-session/types.js +191 -0
  79. package/dist/interactive-session/types.js.map +1 -0
  80. package/dist/os/process-identity.d.ts +46 -0
  81. package/dist/os/process-identity.js +147 -0
  82. package/dist/os/process-identity.js.map +1 -0
  83. package/dist/os/process-tree.d.ts +1 -0
  84. package/dist/os/process-tree.js +11 -0
  85. package/dist/os/process-tree.js.map +1 -1
  86. package/dist/prompts/embedded.js +1 -1
  87. package/dist/prompts/embedded.js.map +1 -1
  88. package/dist/prompts/index.d.ts +7 -0
  89. package/dist/prompts/index.js +23 -0
  90. package/dist/prompts/index.js.map +1 -1
  91. package/dist/prompts/system.agent.md +3 -0
  92. package/dist/repl.js +16 -1
  93. package/dist/repl.js.map +1 -1
  94. package/dist/safety/classifier.d.ts +9 -0
  95. package/dist/safety/classifier.js +119 -18
  96. package/dist/safety/classifier.js.map +1 -1
  97. package/dist/safety/engagement-policy.d.ts +13 -0
  98. package/dist/safety/engagement-policy.js +129 -34
  99. package/dist/safety/engagement-policy.js.map +1 -1
  100. package/dist/tools/definitions.js +94 -0
  101. package/dist/tools/definitions.js.map +1 -1
  102. package/dist/tools/interactive-session-tools.d.ts +11 -0
  103. package/dist/tools/interactive-session-tools.js +276 -0
  104. package/dist/tools/interactive-session-tools.js.map +1 -0
  105. package/dist/tools/registry.js +3 -0
  106. package/dist/tools/registry.js.map +1 -1
  107. package/dist/tui-v2/bootstrap/composition-root.d.ts +3 -0
  108. package/dist/tui-v2/bootstrap/composition-root.js +3 -0
  109. package/dist/tui-v2/bootstrap/composition-root.js.map +1 -1
  110. package/dist/tui-v2/bootstrap/start-tui-v2.js +8 -0
  111. package/dist/tui-v2/bootstrap/start-tui-v2.js.map +1 -1
  112. package/dist/types.d.ts +1 -0
  113. package/dist/version.generated.d.ts +2 -2
  114. package/dist/version.generated.js +2 -2
  115. package/package.json +7 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/interactive-session/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Cursor-addressed output retention.
3
+ *
4
+ * Cursors address the session's canonical safe byte stream — redacted bytes, not
5
+ * raw child bytes and not a rendered view — so plain and encoded views share one
6
+ * stable source and `nextCursor` stays independent of rendered length.
7
+ *
8
+ * Appends are serialized in callback observation order and never ordered by wall
9
+ * clock. Ingestion deliberately takes no session mutation lock so a chatty child
10
+ * cannot block Close.
11
+ */
12
+ import { type Unsubscribe } from "./runtime.js";
13
+ import { type ArtifactReference, type OutputPage, type OutputStream, type OutputView, type SessionOperation, type StableError } from "./types.js";
14
+ /** Durable sink for canonical redacted bytes. */
15
+ export interface OutputSink {
16
+ /** Returns false when the sink is applying backpressure. */
17
+ append(bytes: Uint8Array): boolean;
18
+ waitForDrain(): Promise<void>;
19
+ reference(): ArtifactReference;
20
+ /** True once the configured capture limit demands session termination. */
21
+ readonly limitReached: boolean;
22
+ readonly failed: boolean;
23
+ }
24
+ export interface OutputStoreOptions {
25
+ readonly memoryWindowBytes: number;
26
+ readonly pageBytes: number;
27
+ readonly redactionOverlapBytes: number;
28
+ readonly sink: OutputSink;
29
+ /** Invoked when the sink asks for, then releases, transport backpressure. */
30
+ readonly onPause?: (() => void) | undefined;
31
+ readonly onResume?: (() => void) | undefined;
32
+ /** Raised when persistence fails or the capture limit demands termination. */
33
+ readonly onPersistenceStop?: ((reason: "output-limit" | "persist-failed") => void) | undefined;
34
+ }
35
+ export interface PageOptions {
36
+ readonly cursor: number;
37
+ readonly view: OutputView;
38
+ readonly maxBytes?: number | undefined;
39
+ readonly operation: SessionOperation;
40
+ readonly sessionId: string;
41
+ }
42
+ export type PageOutcome = {
43
+ readonly ok: true;
44
+ readonly page: OutputPage;
45
+ } | {
46
+ readonly ok: false;
47
+ readonly error: StableError;
48
+ readonly page: OutputPage;
49
+ };
50
+ export declare class OutputStore {
51
+ private readonly options;
52
+ private readonly events;
53
+ private readonly redactors;
54
+ private readonly notifier;
55
+ private retainedBytes;
56
+ private earliest;
57
+ private latest;
58
+ private omittedBytes;
59
+ private paused;
60
+ private closed;
61
+ constructor(options: OutputStoreOptions);
62
+ get earliestCursor(): number;
63
+ get latestCursor(): number;
64
+ /** Monotonic generation used as the quiet-detection baseline. */
65
+ get generation(): number;
66
+ get artifact(): ArtifactReference;
67
+ registerExactSecret(value: string): void;
68
+ subscribe(listener: (generation: number) => void): Unsubscribe;
69
+ private redactorFor;
70
+ /** Ingest raw transport bytes. Redaction happens before cursor assignment. */
71
+ ingest(stream: OutputStream, raw: Uint8Array, observedAt: number): void;
72
+ /** Flush retained redaction overlap; called once during finalization. */
73
+ finish(): void;
74
+ private commit;
75
+ private evict;
76
+ private persist;
77
+ /** Build a contiguous page starting at `cursor`. */
78
+ page(options: PageOptions): PageOutcome;
79
+ private buildPage;
80
+ dispose(): void;
81
+ }
@@ -0,0 +1,239 @@
1
+ /**
2
+ * Cursor-addressed output retention.
3
+ *
4
+ * Cursors address the session's canonical safe byte stream — redacted bytes, not
5
+ * raw child bytes and not a rendered view — so plain and encoded views share one
6
+ * stable source and `nextCursor` stays independent of rendered length.
7
+ *
8
+ * Appends are serialized in callback observation order and never ordered by wall
9
+ * clock. Ingestion deliberately takes no session mutation lock so a chatty child
10
+ * cannot block Close.
11
+ */
12
+ import { presentEvents } from "./output-view.js";
13
+ import { Notifier } from "./runtime.js";
14
+ import { StreamingSecretRedactor, trailingIncompleteUtf8Bytes } from "./streaming-redactor.js";
15
+ import { sessionError, } from "./types.js";
16
+ export class OutputStore {
17
+ options;
18
+ events = [];
19
+ redactors = new Map();
20
+ notifier = new Notifier();
21
+ retainedBytes = 0;
22
+ earliest = 0;
23
+ latest = 0;
24
+ omittedBytes = 0;
25
+ paused = false;
26
+ closed = false;
27
+ constructor(options) {
28
+ this.options = options;
29
+ }
30
+ get earliestCursor() {
31
+ return this.earliest;
32
+ }
33
+ get latestCursor() {
34
+ return this.latest;
35
+ }
36
+ /** Monotonic generation used as the quiet-detection baseline. */
37
+ get generation() {
38
+ return this.notifier.current;
39
+ }
40
+ get artifact() {
41
+ return this.options.sink.reference();
42
+ }
43
+ registerExactSecret(value) {
44
+ for (const stream of ["terminal", "stdout", "stderr"]) {
45
+ this.redactorFor(stream).registerExactSecret(value);
46
+ }
47
+ }
48
+ subscribe(listener) {
49
+ return this.notifier.subscribe(listener);
50
+ }
51
+ redactorFor(stream) {
52
+ let redactor = this.redactors.get(stream);
53
+ if (!redactor) {
54
+ redactor = new StreamingSecretRedactor(this.options.redactionOverlapBytes);
55
+ this.redactors.set(stream, redactor);
56
+ }
57
+ return redactor;
58
+ }
59
+ /** Ingest raw transport bytes. Redaction happens before cursor assignment. */
60
+ ingest(stream, raw, observedAt) {
61
+ if (this.closed)
62
+ return;
63
+ const safe = this.redactorFor(stream).push(raw);
64
+ this.commit(stream, safe, observedAt);
65
+ }
66
+ /** Flush retained redaction overlap; called once during finalization. */
67
+ finish() {
68
+ if (this.closed)
69
+ return;
70
+ const now = Date.now();
71
+ for (const [stream, redactor] of this.redactors) {
72
+ this.commit(stream, redactor.close(), now);
73
+ }
74
+ this.closed = true;
75
+ }
76
+ commit(stream, bytes, observedAt) {
77
+ if (bytes.length === 0)
78
+ return;
79
+ const startCursor = this.latest;
80
+ this.latest += bytes.length;
81
+ this.events.push({
82
+ startCursor,
83
+ endCursor: this.latest,
84
+ stream,
85
+ observedAt,
86
+ bytes,
87
+ });
88
+ this.retainedBytes += bytes.length;
89
+ if (this.events.length === 1 && startCursor === 0)
90
+ this.earliest = 0;
91
+ this.evict();
92
+ this.persist(bytes);
93
+ this.notifier.bump();
94
+ }
95
+ evict() {
96
+ while (this.retainedBytes > this.options.memoryWindowBytes &&
97
+ this.events.length > 0) {
98
+ const oldest = this.events[0];
99
+ const overflow = this.retainedBytes - this.options.memoryWindowBytes;
100
+ const size = oldest.bytes.length;
101
+ if (size <= overflow) {
102
+ this.events.shift();
103
+ this.retainedBytes -= size;
104
+ this.earliest = oldest.endCursor;
105
+ this.omittedBytes += size;
106
+ continue;
107
+ }
108
+ // Partially evict the oldest chunk; later cursors are never renumbered.
109
+ const drop = overflow;
110
+ this.events[0] = {
111
+ ...oldest,
112
+ startCursor: oldest.startCursor + drop,
113
+ bytes: oldest.bytes.subarray(drop),
114
+ };
115
+ this.retainedBytes -= drop;
116
+ this.earliest = oldest.startCursor + drop;
117
+ this.omittedBytes += drop;
118
+ }
119
+ }
120
+ persist(bytes) {
121
+ const sink = this.options.sink;
122
+ const writable = sink.append(bytes);
123
+ if (sink.failed) {
124
+ this.options.onPersistenceStop?.("persist-failed");
125
+ return;
126
+ }
127
+ if (sink.limitReached) {
128
+ this.options.onPersistenceStop?.("output-limit");
129
+ return;
130
+ }
131
+ if (writable || this.paused)
132
+ return;
133
+ // Bound memory while the filesystem catches up rather than queueing output.
134
+ this.paused = true;
135
+ this.options.onPause?.();
136
+ void sink.waitForDrain().then(() => {
137
+ this.paused = false;
138
+ this.options.onResume?.();
139
+ });
140
+ }
141
+ /** Build a contiguous page starting at `cursor`. */
142
+ page(options) {
143
+ const limit = Math.max(1, options.maxBytes ?? this.options.pageBytes);
144
+ const requested = options.cursor;
145
+ if (requested < this.earliest) {
146
+ const omitted = this.earliest - requested;
147
+ const gapPage = this.buildPage([], requested, requested, options.view, false, omitted);
148
+ return {
149
+ ok: false,
150
+ page: gapPage,
151
+ error: sessionError({
152
+ code: "OUTPUT_GAP",
153
+ operation: options.operation,
154
+ sessionId: options.sessionId,
155
+ message: "Requested output has been evicted from the retention window; read from earliestAvailableCursor or the artifact.",
156
+ details: {
157
+ requestedCursor: requested,
158
+ earliestAvailableCursor: this.earliest,
159
+ omittedBytes: omitted,
160
+ artifactPath: this.artifact.path,
161
+ },
162
+ }),
163
+ };
164
+ }
165
+ if (requested > this.latest) {
166
+ return {
167
+ ok: false,
168
+ page: this.buildPage([], requested, requested, options.view, false),
169
+ error: sessionError({
170
+ code: "INVALID_REQUEST",
171
+ operation: options.operation,
172
+ sessionId: options.sessionId,
173
+ message: "Requested cursor is beyond the latest observed output byte.",
174
+ details: { requestedCursor: requested, latestCursor: this.latest },
175
+ }),
176
+ };
177
+ }
178
+ const selected = [];
179
+ let cursor = requested;
180
+ let budget = limit;
181
+ for (const event of this.events) {
182
+ if (event.endCursor <= cursor)
183
+ continue;
184
+ if (budget <= 0)
185
+ break;
186
+ const offset = Math.max(0, cursor - event.startCursor);
187
+ let slice = event.bytes.subarray(offset, offset + budget);
188
+ if (slice.length === 0)
189
+ continue;
190
+ const truncated = offset + slice.length < event.bytes.length;
191
+ if (truncated && options.view === "plain") {
192
+ // Never end a plain page inside a multi-byte code point.
193
+ const incomplete = trailingIncompleteUtf8Bytes(slice);
194
+ if (incomplete > 0 && slice.length > incomplete) {
195
+ slice = slice.subarray(0, slice.length - incomplete);
196
+ }
197
+ }
198
+ if (slice.length === 0)
199
+ break;
200
+ selected.push({
201
+ startCursor: cursor,
202
+ endCursor: cursor + slice.length,
203
+ stream: event.stream,
204
+ observedAt: event.observedAt,
205
+ bytes: slice,
206
+ });
207
+ cursor += slice.length;
208
+ budget -= slice.length;
209
+ }
210
+ const hasMore = cursor < this.latest;
211
+ return { ok: true, page: this.buildPage(selected, requested, cursor, options.view, hasMore) };
212
+ }
213
+ buildPage(events, requestedCursor, nextCursor, view, hasMore, omittedBytes) {
214
+ const presented = presentEvents(events, view);
215
+ return {
216
+ events: presented.events,
217
+ requestedCursor,
218
+ nextCursor,
219
+ hasMore,
220
+ earliestAvailableCursor: this.earliest,
221
+ latestCursor: this.latest,
222
+ view,
223
+ decodingLoss: presented.decodingLoss,
224
+ ...(omittedBytes !== undefined && omittedBytes > 0
225
+ ? { omittedBytes }
226
+ : this.omittedBytes > 0
227
+ ? { omittedBytes: this.omittedBytes }
228
+ : {}),
229
+ artifact: this.artifact,
230
+ };
231
+ }
232
+ dispose() {
233
+ this.finish();
234
+ this.notifier.clear();
235
+ this.events.length = 0;
236
+ this.retainedBytes = 0;
237
+ }
238
+ }
239
+ //# sourceMappingURL=output-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-store.js","sourceRoot":"","sources":["../../src/interactive-session/output-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Presentation views over canonical redacted output bytes.
3
+ *
4
+ * `encoded` is base64: it round-trips the exact canonical bytes and cannot
5
+ * execute a control sequence anywhere. `plain` is a bounded linearizer, not a
6
+ * terminal emulator: it keeps no screen grid, no alternate screen, and no
7
+ * cursor-addressable replay, and it guarantees that no host-terminal control
8
+ * byte survives into model, transcript, log, or UI output.
9
+ */
10
+ import type { OutputEvent, OutputView, PresentedOutputEvent } from "./types.js";
11
+ /**
12
+ * Strip or neutralize escape sequences and unsafe controls. Output is a pure
13
+ * function of the input text, so identical bytes always produce identical text.
14
+ */
15
+ export declare function neutralizeTerminalControls(input: string): string;
16
+ export declare function presentEvent(event: OutputEvent, view: OutputView): PresentedOutputEvent;
17
+ export declare function presentEvents(events: readonly OutputEvent[], view: OutputView): {
18
+ events: PresentedOutputEvent[];
19
+ decodingLoss: boolean;
20
+ };
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Presentation views over canonical redacted output bytes.
3
+ *
4
+ * `encoded` is base64: it round-trips the exact canonical bytes and cannot
5
+ * execute a control sequence anywhere. `plain` is a bounded linearizer, not a
6
+ * terminal emulator: it keeps no screen grid, no alternate screen, and no
7
+ * cursor-addressable replay, and it guarantees that no host-terminal control
8
+ * byte survives into model, transcript, log, or UI output.
9
+ */
10
+ const REPLACEMENT = "\uFFFD";
11
+ /** Inert visible tokens for control effects we deliberately do not execute. */
12
+ const PLAIN_TOKENS = {
13
+ backspace: "⌫",
14
+ osc: "[osc]",
15
+ dcs: "[dcs]",
16
+ nul: "^@",
17
+ };
18
+ function decodeUtf8(bytes) {
19
+ const text = Buffer.from(bytes).toString("utf8");
20
+ return { text, loss: text.includes(REPLACEMENT) };
21
+ }
22
+ function controlToken(code) {
23
+ if (code === 0)
24
+ return PLAIN_TOKENS.nul;
25
+ // C0 controls render as their caret form; C1 as a hex token.
26
+ if (code < 0x20)
27
+ return `^${String.fromCharCode(code + 64)}`;
28
+ return `^[0x${code.toString(16).padStart(2, "0")}]`;
29
+ }
30
+ /**
31
+ * Strip or neutralize escape sequences and unsafe controls. Output is a pure
32
+ * function of the input text, so identical bytes always produce identical text.
33
+ */
34
+ export function neutralizeTerminalControls(input) {
35
+ let out = "";
36
+ let index = 0;
37
+ while (index < input.length) {
38
+ const char = input[index];
39
+ const code = char.codePointAt(0);
40
+ if (code === 0x1b) {
41
+ const next = input[index + 1];
42
+ if (next === "[") {
43
+ // CSI: consume parameters and the final byte. SGR and cursor control are
44
+ // omitted entirely; they have no meaning in a linearized view.
45
+ let cursor = index + 2;
46
+ while (cursor < input.length && /[\d;?<>=: ]/.test(input[cursor]))
47
+ cursor += 1;
48
+ if (cursor < input.length)
49
+ cursor += 1;
50
+ index = cursor;
51
+ continue;
52
+ }
53
+ if (next === "]") {
54
+ index = consumeStringSequence(input, index + 2);
55
+ out += PLAIN_TOKENS.osc;
56
+ continue;
57
+ }
58
+ if (next === "P" || next === "X" || next === "^" || next === "_") {
59
+ index = consumeStringSequence(input, index + 2);
60
+ out += PLAIN_TOKENS.dcs;
61
+ continue;
62
+ }
63
+ // Two-character or single-character escapes (charset, keypad, RIS).
64
+ index += next === undefined ? 1 : 2;
65
+ continue;
66
+ }
67
+ if (char === "\r") {
68
+ // Lone CR is a line rewrite; CRLF collapses to one newline. Neither moves
69
+ // the host cursor.
70
+ if (input[index + 1] === "\n") {
71
+ out += "\n";
72
+ index += 2;
73
+ }
74
+ else {
75
+ out += "\n";
76
+ index += 1;
77
+ }
78
+ continue;
79
+ }
80
+ if (char === "\b") {
81
+ out += PLAIN_TOKENS.backspace;
82
+ index += 1;
83
+ continue;
84
+ }
85
+ if (char === "\n" || char === "\t") {
86
+ out += char;
87
+ index += 1;
88
+ continue;
89
+ }
90
+ if (code < 0x20 || code === 0x7f || (code >= 0x80 && code <= 0x9f)) {
91
+ out += controlToken(code);
92
+ index += 1;
93
+ continue;
94
+ }
95
+ out += char;
96
+ index += char.length;
97
+ }
98
+ return out;
99
+ }
100
+ /** Consume an OSC/DCS body up to BEL or ST, bounded by the input length. */
101
+ function consumeStringSequence(input, start) {
102
+ let index = start;
103
+ while (index < input.length) {
104
+ const char = input[index];
105
+ if (char === "\u0007")
106
+ return index + 1;
107
+ if (char === "\u001b" && input[index + 1] === "\\")
108
+ return index + 2;
109
+ if (char === "\u009c")
110
+ return index + 1;
111
+ index += 1;
112
+ }
113
+ return index;
114
+ }
115
+ export function presentEvent(event, view) {
116
+ if (view === "encoded") {
117
+ return {
118
+ startCursor: event.startCursor,
119
+ endCursor: event.endCursor,
120
+ stream: event.stream,
121
+ observedAt: event.observedAt,
122
+ content: Buffer.from(event.bytes).toString("base64"),
123
+ };
124
+ }
125
+ const decoded = decodeUtf8(event.bytes);
126
+ return {
127
+ startCursor: event.startCursor,
128
+ endCursor: event.endCursor,
129
+ stream: event.stream,
130
+ observedAt: event.observedAt,
131
+ content: neutralizeTerminalControls(decoded.text),
132
+ ...(decoded.loss ? { decodingLoss: true } : {}),
133
+ };
134
+ }
135
+ export function presentEvents(events, view) {
136
+ const presented = events.map((event) => presentEvent(event, view));
137
+ return {
138
+ events: presented,
139
+ decodingLoss: presented.some((event) => event.decodingLoss === true),
140
+ };
141
+ }
142
+ //# sourceMappingURL=output-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-view.js","sourceRoot":"","sources":["../../src/interactive-session/output-view.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Crash-recovery journal for live interactive sessions.
3
+ *
4
+ * Interactive sessions are never reattachable: this file exists only so a crash
5
+ * cannot leave an orphaned process tree behind. It therefore stores cleanup
6
+ * evidence and nothing else — no command, cwd, input, environment, or output.
7
+ */
8
+ import { type ProcessIdentityComparison } from "../os/process-identity.js";
9
+ import { type TreeSignalOutcome } from "../os/process-tree.js";
10
+ export interface JournalRecord {
11
+ readonly id: string;
12
+ readonly ownerHash: string;
13
+ readonly pid: number | undefined;
14
+ readonly processGroupId: number | undefined;
15
+ readonly identity: string | undefined;
16
+ readonly platform: NodeJS.Platform;
17
+ readonly startedAt: number;
18
+ readonly artifactPath: string;
19
+ readonly launchConfirmed: boolean;
20
+ }
21
+ export type ReconciliationOutcome = "terminated" | "gone" | "identity-mismatch" | "unverified" | "launch-failed";
22
+ export interface ReconciliationEntry {
23
+ readonly id: string;
24
+ readonly outcome: ReconciliationOutcome;
25
+ }
26
+ export declare function hashOwner(ownerId: string): string;
27
+ export interface RecoveryJournalProcessDeps {
28
+ readonly compareIdentity: (pid: number | undefined, identity: string | undefined) => ProcessIdentityComparison;
29
+ readonly terminateTree: (pid: number, options: {
30
+ signal: NodeJS.Signals;
31
+ processGroupId?: number | undefined;
32
+ }) => TreeSignalOutcome;
33
+ }
34
+ export declare class RecoveryJournal {
35
+ private readonly directory;
36
+ private readonly path;
37
+ private readonly process;
38
+ private readonly sharedDirectory;
39
+ private readonly manager;
40
+ private records;
41
+ constructor(directory?: string, processDeps?: Partial<RecoveryJournalProcessDeps>);
42
+ upsert(record: JournalRecord): void;
43
+ upsertDurable(record: JournalRecord): boolean;
44
+ remove(id: string): void;
45
+ load(): JournalRecord[];
46
+ reconcile(): ReconciliationEntry[];
47
+ private reconciliationPaths;
48
+ private readPersisted;
49
+ private reconcileOne;
50
+ private persist;
51
+ private writePersisted;
52
+ clear(): void;
53
+ }