@corenel/term 0.3.0 → 0.4.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/ink/App.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAInD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAuCzC,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,QAAQ,CAAC;IAChB;;;;iDAI6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ;;iBAEa;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;;oDAOgD;IAChD,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B;;;;;oDAKgD;IAChD,KAAK,EAAE,OAAO,CAAC;IACf;uDACmD;IACnD,eAAe,EAAE,MAAM,CAAC;IACxB;;;;;;;;;;2EAUuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,4EAA4E;AAC5E,wBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,CAAC,YAAY,CAsHvD"}
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/ink/App.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAInD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAoEzC,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,QAAQ,CAAC;IAChB;;;;iDAI6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ;;iBAEa;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;;oDAOgD;IAChD,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B;;;;;oDAKgD;IAChD,KAAK,EAAE,OAAO,CAAC;IACf;uDACmD;IACnD,eAAe,EAAE,MAAM,CAAC;IACxB;;;;;;;;;;2EAUuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,4EAA4E;AAC5E,wBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,CAAC,YAAY,CAgIvD"}
@@ -8,8 +8,9 @@ import { type ContextSnapshot } from '../contextText';
8
8
  * so a turn that lands while this is open updates the numbers on the very
9
9
  * next frame with no re-fetch and no re-open -- unlike the `/mcp` manager,
10
10
  * there is nothing here that needs fetching in the first place. */
11
- export declare function ContextOverlay({ snapshot }: {
11
+ export declare function ContextOverlay({ snapshot, rows }: {
12
12
  snapshot: ContextSnapshot;
13
+ rows?: number;
13
14
  }): React.ReactElement;
14
15
  /** Build the overlay's data straight off live `TuiState` and the two
15
16
  * host-supplied static facts -- exported so App.tsx can assemble it without
@@ -1 +1 @@
1
- {"version":3,"file":"ContextOverlay.d.ts","sourceRoot":"","sources":["../../src/ink/ContextOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGrE;;;;;;mEAMmE;AACnE,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,eAAe,CAAA;CAAE,GAAG,KAAK,CAAC,YAAY,CAa9F;AAED;;yEAEyE;AACzE,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe,CAS1H"}
1
+ {"version":3,"file":"ContextOverlay.d.ts","sourceRoot":"","sources":["../../src/ink/ContextOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AASrE;;;;;;mEAMmE;AACnE,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;IAAE,QAAQ,EAAE,eAAe,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,KAAK,CAAC,YAAY,CAsBnH;AAED;;yEAEyE;AACzE,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe,CAS1H"}
@@ -7,6 +7,13 @@ import React from 'react';
7
7
  * Rendered FROM `TERM_COMMANDS` -- the same table `parseCommand` dispatches
8
8
  * against, the palette filters, and `formatHelpText` renders as text --
9
9
  * rather than from a hand-written constant, so this list cannot fall behind
10
- * the commands it documents. */
11
- export declare function HelpOverlay(): React.ReactElement;
10
+ * the commands it documents.
11
+ *
12
+ * `rows` bounds the command list to what the terminal can actually show (see
13
+ * overlayBudget.ts's module doc) -- a full command table is ~18 rows on its
14
+ * own, comfortably taller than a lot of real terminals once the input box and
15
+ * status row are accounted for. */
16
+ export declare function HelpOverlay({ rows }: {
17
+ rows?: number;
18
+ }): React.ReactElement;
12
19
  //# sourceMappingURL=HelpOverlay.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HelpOverlay.d.ts","sourceRoot":"","sources":["../../src/ink/HelpOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B;;;;;;;;gCAQgC;AAChC,wBAAgB,WAAW,IAAI,KAAK,CAAC,YAAY,CAqBhD"}
1
+ {"version":3,"file":"HelpOverlay.d.ts","sourceRoot":"","sources":["../../src/ink/HelpOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B;;;;;;;;;;;;;mCAamC;AACnC,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,KAAK,CAAC,YAAY,CAsB3E"}
@@ -1,12 +1,7 @@
1
1
  import React from 'react';
2
2
  import type { McpManager } from '../state';
3
- /** The `/mcp` manager, as an Ink overlay -- pure presentation over
4
- * `TermSession`'s own `/mcp` dispatch (see mcpText.ts's module comment). It
5
- * holds no server list, connection state, or login state of its own; every
6
- * field it renders comes straight off `modal`, which the session owns and
7
- * refreshes after a mutation, the same way the text `/mcp` commands already
8
- * do. See ink/index.tsx's `useInput` for what a/x/l/esc/arrows actually run. */
9
- export declare function McpOverlay({ modal }: {
3
+ export declare function McpOverlay({ modal, rows }: {
10
4
  modal: McpManager;
5
+ rows?: number;
11
6
  }): React.ReactElement;
12
7
  //# sourceMappingURL=McpOverlay.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"McpOverlay.d.ts","sourceRoot":"","sources":["../../src/ink/McpOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAa3C;;;;;gFAKgF;AAChF,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,GAAG,KAAK,CAAC,YAAY,CA+C/E"}
1
+ {"version":3,"file":"McpOverlay.d.ts","sourceRoot":"","sources":["../../src/ink/McpOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAwB3C,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,KAAK,CAAC,YAAY,CAqFpG"}
@@ -4,8 +4,11 @@ import type { PermissionAsk, UserAsk } from '../state';
4
4
  * pause a turn waiting on the user. `McpManager` and `HelpView` are NOT this
5
5
  * component's job: App.tsx routes those to their own views (McpOverlay.tsx;
6
6
  * a help view, Task 10) before this is ever called, so this stays narrowed
7
- * to the two `Modal` variants it actually knows how to draw. */
8
- export declare function ModalView({ modal }: {
7
+ * to the two `Modal` variants it actually knows how to draw. `rows` bounds
8
+ * both the diff preview and the options list to the terminal's actual
9
+ * height (see overlayBudget.ts's module doc). */
10
+ export declare function ModalView({ modal, rows }: {
9
11
  modal: PermissionAsk | UserAsk;
12
+ rows?: number;
10
13
  }): React.ReactElement;
11
14
  //# sourceMappingURL=Modal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../src/ink/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAuDvD;;;;gEAIgE;AAChE,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAA;CAAE,GAAG,KAAK,CAAC,YAAY,CAiC3F"}
1
+ {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../src/ink/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AA2GvD;;;;;;iDAMiD;AACjD,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,KAAK,CAAC,YAAY,CA2DhH"}
package/dist/ink/index.js CHANGED
@@ -175,47 +175,106 @@ function LiveToolRow({ tool }) {
175
175
 
176
176
  // src/ink/McpOverlay.tsx
177
177
  import { Box as Box2, Text as Text2 } from "ink";
178
+
179
+ // src/ink/overlayBudget.ts
180
+ var RESERVED_CHROME_ROWS = 6;
181
+ function overlayBoxBudget(rows) {
182
+ if (rows === void 0) return Number.MAX_SAFE_INTEGER;
183
+ return Math.max(rows - RESERVED_CHROME_ROWS, 3);
184
+ }
185
+ function capList(items, cap, overflowLabel) {
186
+ const rowCap = Math.max(cap, 0);
187
+ if (items.length <= rowCap) return { shown: items, overflow: null };
188
+ if (rowCap <= 0) return { shown: [], overflow: null };
189
+ const shown = Math.max(rowCap - 1, 0);
190
+ const hidden = items.length - shown;
191
+ return { shown: items.slice(0, shown), overflow: overflowLabel(hidden) };
192
+ }
193
+
194
+ // src/ink/McpOverlay.tsx
178
195
  import { Fragment, jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
179
196
  function statusColor(word) {
180
197
  if (word === "connected") return palette.good;
181
198
  if (word === "unreachable") return palette.bad;
182
199
  return palette.warn;
183
200
  }
184
- function McpOverlay({ modal }) {
185
- return /* @__PURE__ */ jsxs2(Box2, { flexDirection: "column", borderStyle: "round", borderColor: palette.tool, paddingX: 1, children: [
186
- /* @__PURE__ */ jsx2(Text2, { color: palette.tool, bold: true, children: "MCP servers" }),
187
- modal.servers.length === 0 ? /* @__PURE__ */ jsx2(Box2, { marginTop: 1, children: /* @__PURE__ */ jsx2(Text2, { color: palette.dim, children: "none configured -- press a to add one" }) }) : /* @__PURE__ */ jsx2(Box2, { flexDirection: "column", marginTop: 1, children: modal.servers.map((s, i) => {
188
- const word = mcpStatusWord(s);
189
- const isSelected = i === modal.selected;
190
- return /* @__PURE__ */ jsxs2(Box2, { children: [
191
- /* @__PURE__ */ jsx2(Text2, { color: palette.ember, children: isSelected ? `${glyph.active} ` : " " }),
192
- /* @__PURE__ */ jsx2(Text2, { bold: isSelected, children: s.name }),
193
- /* @__PURE__ */ jsx2(Text2, { color: palette.dim, children: " " }),
194
- /* @__PURE__ */ jsx2(Text2, { color: statusColor(word), children: word }),
195
- /* @__PURE__ */ jsxs2(Text2, { color: palette.dim, children: [
196
- " ",
197
- s.toolCount,
198
- " tool",
199
- s.toolCount === 1 ? "" : "s",
200
- ", ",
201
- ageWord(s.fetchedAt, Date.now())
202
- ] })
203
- ] }, s.name);
204
- }) }),
205
- modal.login ? /* @__PURE__ */ jsx2(Box2, { flexDirection: "column", marginTop: 1, children: modal.login.url ? /* @__PURE__ */ jsxs2(Fragment, { children: [
206
- /* @__PURE__ */ jsxs2(Text2, { color: palette.amber, children: [
201
+ var BORDER_ROWS = 2;
202
+ function McpOverlay({ modal, rows }) {
203
+ let content = Math.max(overlayBoxBudget(rows) - BORDER_ROWS, 0);
204
+ const take = (n) => {
205
+ if (content < n) return false;
206
+ content -= n;
207
+ return true;
208
+ };
209
+ if (modal.login) {
210
+ const haveCore = take(1);
211
+ const showEsc = haveCore && modal.login.url !== null && take(1);
212
+ const showMessage = haveCore && modal.login.url !== null && take(1);
213
+ const showHeader2 = take(1);
214
+ const showFooter2 = take(1);
215
+ return /* @__PURE__ */ jsxs2(Box2, { flexDirection: "column", borderStyle: "round", borderColor: palette.tool, paddingX: 1, children: [
216
+ showHeader2 ? /* @__PURE__ */ jsx2(Text2, { color: palette.tool, bold: true, children: "MCP servers" }) : null,
217
+ haveCore && modal.login.url ? /* @__PURE__ */ jsxs2(Fragment, { children: [
218
+ showMessage ? /* @__PURE__ */ jsxs2(Text2, { color: palette.amber, children: [
219
+ "signing in to ",
220
+ modal.login.server,
221
+ " -- open this URL:"
222
+ ] }) : null,
223
+ /* @__PURE__ */ jsx2(Text2, { wrap: "truncate-end", children: modal.login.url }),
224
+ showEsc ? /* @__PURE__ */ jsx2(Text2, { color: palette.dim, children: "esc cancels" }) : null
225
+ ] }) : haveCore ? /* @__PURE__ */ jsxs2(Text2, { color: palette.amber, wrap: "truncate-end", children: [
207
226
  "signing in to ",
208
227
  modal.login.server,
209
- " -- open this URL:"
210
- ] }),
211
- /* @__PURE__ */ jsx2(Text2, { children: modal.login.url }),
212
- /* @__PURE__ */ jsx2(Text2, { color: palette.dim, children: "esc cancels" })
213
- ] }) : /* @__PURE__ */ jsxs2(Text2, { color: palette.amber, children: [
214
- "signing in to ",
215
- modal.login.server,
216
- " -- waiting for a login URL..."
217
- ] }) }) : null,
218
- /* @__PURE__ */ jsx2(Box2, { marginTop: 1, children: /* @__PURE__ */ jsxs2(Text2, { color: palette.dim, children: [
228
+ " -- waiting for a login URL..."
229
+ ] }) : null,
230
+ showFooter2 ? /* @__PURE__ */ jsxs2(Text2, { color: palette.dim, children: [
231
+ glyph.active,
232
+ " select ",
233
+ glyph.sep,
234
+ " a add ",
235
+ glyph.sep,
236
+ " x remove ",
237
+ glyph.sep,
238
+ " l login ",
239
+ glyph.sep,
240
+ " r refresh ",
241
+ glyph.sep,
242
+ " esc close"
243
+ ] }) : null
244
+ ] });
245
+ }
246
+ const showHeader = take(1);
247
+ const emptyRows = modal.servers.length === 0 && take(1);
248
+ const showFooter = take(1);
249
+ const { shown, overflow } = capList(modal.servers, content, (n) => `\u2026 ${n} more server${n === 1 ? "" : "s"}`);
250
+ return /* @__PURE__ */ jsxs2(Box2, { flexDirection: "column", borderStyle: "round", borderColor: palette.tool, paddingX: 1, children: [
251
+ showHeader ? /* @__PURE__ */ jsx2(Text2, { color: palette.tool, bold: true, children: "MCP servers" }) : null,
252
+ emptyRows ? /* @__PURE__ */ jsx2(Text2, { color: palette.dim, children: "none configured -- press a to add one" }) : /* @__PURE__ */ jsxs2(Box2, { flexDirection: "column", children: [
253
+ shown.map((s) => {
254
+ const i = modal.servers.indexOf(s);
255
+ const word = mcpStatusWord(s);
256
+ const isSelected = i === modal.selected;
257
+ return /* @__PURE__ */ jsxs2(Box2, { children: [
258
+ /* @__PURE__ */ jsx2(Text2, { color: palette.ember, children: isSelected ? `${glyph.active} ` : " " }),
259
+ /* @__PURE__ */ jsx2(Text2, { bold: isSelected, wrap: "truncate-end", children: s.name }),
260
+ /* @__PURE__ */ jsx2(Text2, { color: palette.dim, children: " " }),
261
+ /* @__PURE__ */ jsx2(Text2, { color: statusColor(word), children: word }),
262
+ /* @__PURE__ */ jsxs2(Text2, { color: palette.dim, wrap: "truncate-end", children: [
263
+ " ",
264
+ s.toolCount,
265
+ " tool",
266
+ s.toolCount === 1 ? "" : "s",
267
+ ", ",
268
+ ageWord(s.fetchedAt, Date.now())
269
+ ] })
270
+ ] }, s.name);
271
+ }),
272
+ overflow ? /* @__PURE__ */ jsxs2(Text2, { color: palette.dim, children: [
273
+ " ",
274
+ overflow
275
+ ] }) : null
276
+ ] }),
277
+ showFooter ? /* @__PURE__ */ jsxs2(Text2, { color: palette.dim, children: [
219
278
  glyph.active,
220
279
  " select ",
221
280
  glyph.sep,
@@ -228,43 +287,58 @@ function McpOverlay({ modal }) {
228
287
  " r refresh ",
229
288
  glyph.sep,
230
289
  " esc close"
231
- ] }) })
290
+ ] }) : null
232
291
  ] });
233
292
  }
234
293
 
235
294
  // src/ink/HelpOverlay.tsx
236
295
  import { Box as Box3, Text as Text3 } from "ink";
237
296
  import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
238
- function HelpOverlay() {
297
+ var FIXED_CHROME_ROWS = 4;
298
+ function HelpOverlay({ rows }) {
239
299
  const width = Math.max(...TERM_COMMANDS.map((c) => `${c.name} ${c.args ?? ""}`.trim().length));
300
+ const bodyBudget = Math.max(overlayBoxBudget(rows) - FIXED_CHROME_ROWS, 0);
301
+ const { shown, overflow } = capList(TERM_COMMANDS, bodyBudget, (n) => `\u2026 ${n} more command${n === 1 ? "" : "s"}`);
240
302
  return /* @__PURE__ */ jsxs3(Box3, { flexDirection: "column", borderStyle: "round", borderColor: palette.tool, paddingX: 1, children: [
241
303
  /* @__PURE__ */ jsx3(Text3, { color: palette.tool, bold: true, children: "Commands" }),
242
- /* @__PURE__ */ jsx3(Box3, { flexDirection: "column", marginTop: 1, children: TERM_COMMANDS.map((c) => {
243
- const usage = `${c.name} ${c.args ?? ""}`.trim();
244
- return /* @__PURE__ */ jsxs3(Box3, { children: [
245
- /* @__PURE__ */ jsxs3(Text3, { color: palette.ember, children: [
246
- "/",
247
- usage.padEnd(width)
248
- ] }),
249
- /* @__PURE__ */ jsxs3(Text3, { color: palette.dim, children: [
250
- " ",
251
- c.summary
252
- ] })
253
- ] }, c.name);
254
- }) }),
255
- /* @__PURE__ */ jsx3(Box3, { marginTop: 1, children: /* @__PURE__ */ jsx3(Text3, { color: palette.dim, children: "esc close" }) })
304
+ /* @__PURE__ */ jsxs3(Box3, { flexDirection: "column", children: [
305
+ shown.map((c) => {
306
+ const usage = `${c.name} ${c.args ?? ""}`.trim();
307
+ return /* @__PURE__ */ jsxs3(Box3, { children: [
308
+ /* @__PURE__ */ jsxs3(Text3, { color: palette.ember, wrap: "truncate-end", children: [
309
+ "/",
310
+ usage.padEnd(width)
311
+ ] }),
312
+ /* @__PURE__ */ jsxs3(Text3, { color: palette.dim, wrap: "truncate-end", children: [
313
+ " ",
314
+ c.summary
315
+ ] })
316
+ ] }, c.name);
317
+ }),
318
+ overflow ? /* @__PURE__ */ jsxs3(Text3, { color: palette.dim, children: [
319
+ " ",
320
+ overflow
321
+ ] }) : null
322
+ ] }),
323
+ /* @__PURE__ */ jsx3(Text3, { color: palette.dim, children: "esc close" })
256
324
  ] });
257
325
  }
258
326
 
259
327
  // src/ink/ContextOverlay.tsx
260
328
  import { Box as Box4, Text as Text4 } from "ink";
261
329
  import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
262
- function ContextOverlay({ snapshot }) {
263
- const text = formatContext(snapshot);
330
+ var FIXED_CHROME_ROWS2 = 4;
331
+ function ContextOverlay({ snapshot, rows }) {
332
+ const lines = formatContext(snapshot).split("\n");
333
+ const bodyBudget = Math.max(overlayBoxBudget(rows) - FIXED_CHROME_ROWS2, 0);
334
+ const { shown, overflow } = capList(lines, bodyBudget, (n) => `\u2026 ${n} more line${n === 1 ? "" : "s"}`);
264
335
  return /* @__PURE__ */ jsxs4(Box4, { flexDirection: "column", borderStyle: "round", borderColor: palette.tool, paddingX: 1, children: [
265
336
  /* @__PURE__ */ jsx4(Text4, { color: palette.tool, bold: true, children: "Context window" }),
266
- /* @__PURE__ */ jsx4(Box4, { flexDirection: "column", marginTop: 1, children: /* @__PURE__ */ jsx4(Text4, { children: text }) }),
267
- /* @__PURE__ */ jsx4(Box4, { marginTop: 1, children: /* @__PURE__ */ jsx4(Text4, { color: palette.dim, children: "esc close" }) })
337
+ /* @__PURE__ */ jsxs4(Box4, { flexDirection: "column", children: [
338
+ shown.map((line, i) => /* @__PURE__ */ jsx4(Text4, { wrap: "truncate-end", children: line === "" ? " " : line }, i)),
339
+ overflow ? /* @__PURE__ */ jsx4(Text4, { color: palette.dim, children: overflow }) : null
340
+ ] }),
341
+ /* @__PURE__ */ jsx4(Text4, { color: palette.dim, children: "esc close" })
268
342
  ] });
269
343
  }
270
344
  function contextSnapshotFromState(state, contextWindow, toolCount) {
@@ -281,18 +355,35 @@ function contextSnapshotFromState(state, contextWindow, toolCount) {
281
355
  // src/ink/Modal.tsx
282
356
  import { Box as Box5, Text as Text5 } from "ink";
283
357
  import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
284
- function DiffPreview({ diff }) {
285
- const contentUnchanged = diff.added === 0 && diff.removed === 0;
286
- const endingRow = diff.endingChange && /* @__PURE__ */ jsx5(Text5, { color: palette.amber, bold: true, children: formatEndingChange(diff.endingChange, contentUnchanged) });
287
- const unexplainedRow = diff.unexplainedChange && /* @__PURE__ */ jsx5(Text5, { color: palette.amber, bold: true, children: "the file changes in a way not shown above (e.g. trailing whitespace or encoding)" });
358
+ function capDiffRows(rows, max) {
359
+ if (rows.length <= max || max <= 0) return max <= 0 ? [] : rows;
360
+ const kept = rows.slice(0, Math.max(max - 1, 0));
361
+ const dropped = rows.slice(kept.length);
362
+ const hidden = dropped.reduce((n, r) => n + (r.kind === "skip" ? r.count : 1), 0);
363
+ return [...kept, { kind: "skip", count: hidden, reason: "context" }];
364
+ }
365
+ function DiffPreview({ diff, budget }) {
366
+ if (budget !== void 0 && budget <= 0) return null;
288
367
  if (diff.noop) {
289
368
  return /* @__PURE__ */ jsx5(Text5, { color: palette.dim, children: "(no change -- new content is identical to what's on disk)" });
290
369
  }
370
+ const contentUnchanged = diff.added === 0 && diff.removed === 0;
371
+ let remaining = budget !== void 0 ? budget - 1 : void 0;
372
+ const fits = () => {
373
+ if (remaining === void 0) return true;
374
+ if (remaining < 1) return false;
375
+ remaining -= 1;
376
+ return true;
377
+ };
378
+ const endingRow = diff.endingChange && fits() && /* @__PURE__ */ jsx5(Text5, { color: palette.amber, bold: true, children: formatEndingChange(diff.endingChange, contentUnchanged) });
379
+ const unexplainedRow = diff.unexplainedChange && fits() && /* @__PURE__ */ jsx5(Text5, { color: palette.amber, bold: true, children: "the file changes in a way not shown above (e.g. trailing whitespace or encoding)" });
380
+ const newFileRow = diff.isNewFile && fits() && /* @__PURE__ */ jsx5(Text5, { color: palette.dim, children: "(new file)" });
381
+ const rows = remaining !== void 0 ? capDiffRows(diff.rows, remaining) : diff.rows;
291
382
  return /* @__PURE__ */ jsxs5(Box5, { flexDirection: "column", children: [
292
383
  endingRow,
293
384
  unexplainedRow,
294
- diff.isNewFile && /* @__PURE__ */ jsx5(Text5, { color: palette.dim, children: "(new file)" }),
295
- diff.rows.map((r, i) => {
385
+ newFileRow,
386
+ rows.map((r, i) => {
296
387
  if (r.kind === "skip") {
297
388
  const label = r.reason === "changes" ? `\u2026 ${r.count} more changed line${r.count === 1 ? "" : "s"}` : `\u2026 ${r.count} unchanged line${r.count === 1 ? "" : "s"}`;
298
389
  return /* @__PURE__ */ jsx5(Text5, { color: palette.dim, children: label }, i);
@@ -301,6 +392,7 @@ function DiffPreview({ diff }) {
301
392
  Text5,
302
393
  {
303
394
  color: r.kind === "add" ? palette.good : r.kind === "del" ? palette.bad : palette.dim,
395
+ wrap: "truncate-end",
304
396
  children: [
305
397
  r.kind === "add" ? "+ " : r.kind === "del" ? "- " : " ",
306
398
  r.text
@@ -317,43 +409,64 @@ function DiffPreview({ diff }) {
317
409
  ] })
318
410
  ] });
319
411
  }
320
- function ModalView({ modal }) {
412
+ var PERMISSION_BORDER_ROWS = 2;
413
+ var QUESTION_FIXED_ROWS = 5;
414
+ function ModalView({ modal, rows }) {
321
415
  if (modal.kind === "permission") {
416
+ let content = Math.max(overlayBoxBudget(rows) - PERMISSION_BORDER_ROWS, 0);
417
+ const take = (n) => {
418
+ if (content < n) return false;
419
+ content -= n;
420
+ return true;
421
+ };
422
+ const showButtons = take(1);
423
+ const showTool = take(1);
424
+ const showDetail = take(1);
425
+ const diffBudget = modal.diff ? content : void 0;
322
426
  return /* @__PURE__ */ jsxs5(Box5, { flexDirection: "column", borderStyle: "round", borderColor: palette.warn, paddingX: 1, children: [
323
- /* @__PURE__ */ jsxs5(Text5, { color: palette.warn, children: [
427
+ showTool ? /* @__PURE__ */ jsxs5(Text5, { color: palette.warn, children: [
324
428
  modal.tool,
325
429
  " wants to run"
326
- ] }),
327
- /* @__PURE__ */ jsx5(Box5, { marginTop: 1, children: /* @__PURE__ */ jsx5(Text5, { bold: true, children: modal.detail }) }),
328
- modal.diff && /* @__PURE__ */ jsx5(Box5, { marginTop: 1, children: /* @__PURE__ */ jsx5(DiffPreview, { diff: modal.diff }) }),
329
- /* @__PURE__ */ jsxs5(Box5, { marginTop: 1, children: [
430
+ ] }) : null,
431
+ showDetail ? /* @__PURE__ */ jsx5(Text5, { bold: true, wrap: "truncate-end", children: modal.detail }) : null,
432
+ modal.diff && /* @__PURE__ */ jsx5(DiffPreview, { diff: modal.diff, budget: diffBudget }),
433
+ showButtons ? /* @__PURE__ */ jsxs5(Box5, { children: [
330
434
  /* @__PURE__ */ jsx5(Text5, { color: palette.good, children: "[y]" }),
331
435
  /* @__PURE__ */ jsx5(Text5, { color: palette.dim, children: " run it " }),
332
436
  /* @__PURE__ */ jsx5(Text5, { color: palette.bad, children: "[n]" }),
333
437
  /* @__PURE__ */ jsx5(Text5, { color: palette.dim, children: " deny esc denies" })
334
- ] })
438
+ ] }) : null
335
439
  ] });
336
440
  }
337
441
  const q = modal.questions[0];
442
+ const options = q?.options ?? [];
443
+ const optionsBudget = Math.max(overlayBoxBudget(rows) - QUESTION_FIXED_ROWS, 0);
444
+ const { shown, overflow } = capList(options, optionsBudget, (n) => `\u2026 ${n} more option${n === 1 ? "" : "s"}`);
338
445
  return /* @__PURE__ */ jsxs5(Box5, { flexDirection: "column", borderStyle: "round", borderColor: palette.ember, paddingX: 1, children: [
339
446
  /* @__PURE__ */ jsx5(Text5, { color: palette.dim, children: q?.header }),
340
- /* @__PURE__ */ jsx5(Text5, { bold: true, children: q?.question }),
341
- /* @__PURE__ */ jsx5(Box5, { flexDirection: "column", marginTop: 1, children: (q?.options ?? []).map((o, i) => /* @__PURE__ */ jsxs5(Box5, { children: [
342
- /* @__PURE__ */ jsxs5(Text5, { color: palette.amber, children: [
343
- i + 1,
344
- " "
345
- ] }),
346
- /* @__PURE__ */ jsx5(Text5, { children: o.label }),
347
- o.description ? /* @__PURE__ */ jsxs5(Text5, { color: palette.dim, children: [
348
- " ",
349
- o.description
350
- ] }) : null
351
- ] }, o.label)) }),
352
- /* @__PURE__ */ jsx5(Box5, { marginTop: 1, children: /* @__PURE__ */ jsxs5(Text5, { color: palette.dim, children: [
447
+ /* @__PURE__ */ jsx5(Text5, { bold: true, wrap: "truncate-end", children: q?.question }),
448
+ /* @__PURE__ */ jsxs5(Box5, { flexDirection: "column", children: [
449
+ shown.map((o) => {
450
+ const i = options.indexOf(o);
451
+ return /* @__PURE__ */ jsxs5(Box5, { children: [
452
+ /* @__PURE__ */ jsxs5(Text5, { color: palette.amber, children: [
453
+ i + 1,
454
+ " "
455
+ ] }),
456
+ /* @__PURE__ */ jsx5(Text5, { wrap: "truncate-end", children: o.label }),
457
+ o.description ? /* @__PURE__ */ jsxs5(Text5, { color: palette.dim, wrap: "truncate-end", children: [
458
+ " ",
459
+ o.description
460
+ ] }) : null
461
+ ] }, o.label);
462
+ }),
463
+ overflow ? /* @__PURE__ */ jsx5(Text5, { color: palette.dim, children: overflow }) : null
464
+ ] }),
465
+ /* @__PURE__ */ jsxs5(Text5, { color: palette.dim, children: [
353
466
  "1-",
354
- (q?.options ?? []).length,
467
+ options.length,
355
468
  " choose \xB7 \u21B5 confirm \xB7 or type your own answer \xB7 esc dismisses"
356
- ] }) })
469
+ ] })
357
470
  ] });
358
471
  }
359
472
 
@@ -504,6 +617,23 @@ function useColumns() {
504
617
  }, [stdout]);
505
618
  return columns;
506
619
  }
620
+ function usableRows(rows) {
621
+ return rows !== void 0 && Number.isFinite(rows) && rows > 0 ? rows : void 0;
622
+ }
623
+ function useRows() {
624
+ const { stdout } = useStdout();
625
+ const [rows, setRows] = useState(usableRows(stdout?.rows));
626
+ useEffect(() => {
627
+ if (!stdout) return;
628
+ const onResize = () => setRows(usableRows(stdout.rows));
629
+ onResize();
630
+ stdout.on("resize", onResize);
631
+ return () => {
632
+ stdout.off("resize", onResize);
633
+ };
634
+ }, [stdout]);
635
+ return rows;
636
+ }
507
637
  function usd(v) {
508
638
  return v < 0.01 ? `$${v.toFixed(4)}` : `$${v.toFixed(2)}`;
509
639
  }
@@ -513,6 +643,8 @@ function App(props) {
513
643
  const paletteSelected = Math.min(props.paletteSelected, Math.max(paletteItems.length - 1, 0));
514
644
  const busy = state.status !== "idle";
515
645
  const columns = useColumns();
646
+ const rows = useRows();
647
+ const modalOpen = state.modal != null;
516
648
  const statusWord = busy ? "running" : "idle";
517
649
  const roundSeg = state.live ? ` ${glyph.sep} turn ${state.live.turn}` : ` ${glyph.sep} ${props.toolCount} tools`;
518
650
  const turnTokens = tokens(state.turnUsage.promptTokens + state.turnUsage.completionTokens);
@@ -526,12 +658,12 @@ function App(props) {
526
658
  const { right: statusRight } = fitStatus(statusLeft, { model: state.model, cwd: props.cwd, home: homedir() }, columns);
527
659
  return /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", children: [
528
660
  /* @__PURE__ */ jsx8(Static, { items: state.committed, children: (item) => /* @__PURE__ */ jsx8(CommittedRow, { item }, item.id) }, `transcript-${state.transcriptGen}`),
529
- state.live?.tools.map((t) => /* @__PURE__ */ jsx8(LiveToolRow, { tool: t }, t.callId)),
530
- state.live?.streaming ? /* @__PURE__ */ jsx8(Box8, { marginTop: 1, children: /* @__PURE__ */ jsx8(Text8, { color: palette.soft, children: state.live.streaming }) }) : null,
531
- /* @__PURE__ */ jsx8(TodoBlock, { todos: state.todos }),
532
- state.modal ? /* @__PURE__ */ jsx8(Box8, { marginTop: 1, children: state.modal.kind === "mcp" ? /* @__PURE__ */ jsx8(McpOverlay, { modal: state.modal }) : state.modal.kind === "help" ? /* @__PURE__ */ jsx8(HelpOverlay, {}) : state.modal.kind === "context" ? /* @__PURE__ */ jsx8(ContextOverlay, { snapshot: contextSnapshotFromState(state, props.contextWindow ?? null, props.toolCount) }) : state.modal.kind === "permission" || state.modal.kind === "user" ? /* @__PURE__ */ jsx8(ModalView, { modal: state.modal }) : null }) : null,
533
- paletteItems.length && !state.modal ? /* @__PURE__ */ jsx8(Box8, { marginTop: 1, children: /* @__PURE__ */ jsx8(PaletteView, { items: paletteItems, selected: paletteSelected }) }) : null,
534
- state.pendingSkill ? /* @__PURE__ */ jsxs8(Box8, { marginTop: 1, children: [
661
+ !modalOpen && state.live?.tools.map((t) => /* @__PURE__ */ jsx8(LiveToolRow, { tool: t }, t.callId)),
662
+ !modalOpen && state.live?.streaming ? /* @__PURE__ */ jsx8(Box8, { marginTop: 1, children: /* @__PURE__ */ jsx8(Text8, { color: palette.soft, children: state.live.streaming }) }) : null,
663
+ !modalOpen ? /* @__PURE__ */ jsx8(TodoBlock, { todos: state.todos }) : null,
664
+ state.modal ? /* @__PURE__ */ jsx8(Box8, { marginTop: 1, children: state.modal.kind === "mcp" ? /* @__PURE__ */ jsx8(McpOverlay, { modal: state.modal, rows }) : state.modal.kind === "help" ? /* @__PURE__ */ jsx8(HelpOverlay, { rows }) : state.modal.kind === "context" ? /* @__PURE__ */ jsx8(ContextOverlay, { snapshot: contextSnapshotFromState(state, props.contextWindow ?? null, props.toolCount), rows }) : state.modal.kind === "permission" || state.modal.kind === "user" ? /* @__PURE__ */ jsx8(ModalView, { modal: state.modal, rows }) : null }) : null,
665
+ paletteItems.length && !modalOpen ? /* @__PURE__ */ jsx8(Box8, { marginTop: 1, children: /* @__PURE__ */ jsx8(PaletteView, { items: paletteItems, selected: paletteSelected }) }) : null,
666
+ state.pendingSkill && !modalOpen ? /* @__PURE__ */ jsxs8(Box8, { marginTop: 1, children: [
535
667
  /* @__PURE__ */ jsxs8(Text8, { color: palette.ember, children: [
536
668
  glyph.sep,
537
669
  " skill armed: ",
@@ -557,7 +689,7 @@ function App(props) {
557
689
  props.inputKey
558
690
  )
559
691
  ] }),
560
- state.committed.length === 0 ? /* @__PURE__ */ jsx8(Box8, { marginBottom: 1, children: /* @__PURE__ */ jsxs8(Text8, { color: palette.soft, children: [
692
+ state.committed.length === 0 && !modalOpen ? /* @__PURE__ */ jsx8(Box8, { marginBottom: 1, children: /* @__PURE__ */ jsxs8(Text8, { color: palette.soft, children: [
561
693
  "Type a request. ",
562
694
  /* @__PURE__ */ jsxs8(Text8, { color: palette.dim, children: [
563
695
  "/help for commands ",
@@ -0,0 +1,27 @@
1
+ /** Rows the live region spends OUTSIDE the overlay box itself, every time an
2
+ * overlay is open: the modal Box's own `marginTop` (1), the input box's
3
+ * `marginTop` (1) plus its three border/content rows (3), and the one-line
4
+ * status row (1) -- 6 total. Live tool rows, streaming text, TodoBlock, the
5
+ * palette, the pending-skill indicator, and the empty-conversation hint are
6
+ * all suppressed while a modal is open (App.tsx), so none of them are part
7
+ * of this reservation; if a future change stops suppressing one of them,
8
+ * this constant must grow to match or the invariant this exists to keep
9
+ * (packages/term/src/ink/liveRegionHeight.test.tsx) goes red. */
10
+ export declare const RESERVED_CHROME_ROWS = 6;
11
+ /** No usable row count -- see App.tsx's `usableRows`: a stream that cannot
12
+ * report its height (not a TTY, piped output, a render test double) gets
13
+ * this, meaning "don't cap" rather than a guessed height. Callers pass it
14
+ * straight through to `capList`, whose `Number.MAX_SAFE_INTEGER` cap is a
15
+ * no-op (every real list is shorter than that). */
16
+ export declare function overlayBoxBudget(rows: number | undefined): number;
17
+ export interface CappedList<T> {
18
+ shown: T[];
19
+ /** Set only when `items` didn't fit -- the caller renders this as its own
20
+ * line, the same way TodoBlock renders `view.overflow`. */
21
+ overflow: string | null;
22
+ }
23
+ /** Cap `items` to `cap` rows TOTAL, overflow line included -- the exact rule
24
+ * `visibleTodos` (todos.ts) already applies to the todo list, generalized to
25
+ * any list an overlay renders one item per row. */
26
+ export declare function capList<T>(items: T[], cap: number, overflowLabel: (hiddenCount: number) => string): CappedList<T>;
27
+ //# sourceMappingURL=overlayBudget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlayBudget.d.ts","sourceRoot":"","sources":["../../src/ink/overlayBudget.ts"],"names":[],"mappings":"AAgBA;;;;;;;;iEAQiE;AACjE,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC;;;;mDAImD;AACnD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAGjE;AAED,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,EAAE,CAAC;IACX;+DAC2D;IAC3D,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;;mDAEmD;AACnD,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAYjH"}
package/dist/session.d.ts CHANGED
@@ -49,9 +49,12 @@ export interface TermSessionDeps {
49
49
  * guess. */
50
50
  contextWindow?: () => number | null;
51
51
  /** The models this host knows about, for `/model` (list only). The model is
52
- * FIXED once a session begins -- `resolveContextWindow(model)` runs ONCE at
53
- * launch (packages/cli/src/cli.ts's `resolvedWindow`) and sizes rung-2
54
- * compaction from it; switching to a model with a SMALLER window mid-session
52
+ * FIXED once a session begins -- `resolveContextWindow(model)` resolves it
53
+ * at launch (packages/cli/src/cli.ts's `resolvedWindow`), and a later
54
+ * hydration from the backend's own catalog may raise or lower that number
55
+ * in place (see the same file's `compression.contextWindow` mutation), but
56
+ * the MODEL itself never changes mid-session and sizes rung-2 compaction
57
+ * throughout; switching to a model with a SMALLER window mid-session
55
58
  * would leave compaction sized for the larger one and the loop would meet
56
59
  * the context wall as a fatal 400 instead of compacting in time. So `/model
57
60
  * <id>` refuses (see `runModelCommand`) and there is no `setModel` dep --
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACpJ,OAAO,EAAY,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC9F,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAA0B,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAG3H,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAuC,KAAK,YAAY,EAAqB,MAAM,gBAAgB,CAAC;AAG3G,OAAO,EAAoC,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACtF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD;;;;;;;;;wCASwC;AACxC,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAE5D,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB;;;;;;;;8DAQ0D;IAC1D,KAAK,CAAC,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC;IAChC;;;;;;;;;;gBAUY;IACZ,aAAa,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAMpC;;;;;;;;;qDASiD;IACjD,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3C,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC1C;yEACqE;IACrE,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,4DAA4D;IAC5D,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC7C,sEAAsE;IACtE,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3C;;8EAE0E;IAC1E,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAC/F,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC/C;;0DAEsD;IACtD,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IACnF;;;;;;8EAM0E;IAC1E,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,UAAU,CAAC,EAAE,iBAAiB,KAAK,WAAW,CAAC;IACrI,yFAAyF;IACzF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gFAAgF;IAChF,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IACzD;;;;;;;;;;6BAUyB;IACzB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,6EAA6E;IAC7E,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,kEAAkE;IAClE,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAChD;;;wEAGoE;IACpE,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC;;;iFAG6E;IAC7E,UAAU,CAAC,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC;IACxC;;;;;qEAKiE;IACjE,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC;;;;;2EAKuE;IACvE,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;;;;;yDAMqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,YAAY,CAAC;IAQ5B;6EACyE;IACzE,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAChD,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/E,gBAAgB,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD;;wCAEoC;IACpC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD;AAED;gEACgE;AAChE,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC;;;;;;;;;mDASmD;AACnD,eAAO,MAAM,cAAc,OAAQ,CAAC;AAEpC,qBAAa,WAAW;IA4EV,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,eAAe;IA3EpD,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC;IAC1B,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,UAAU,CAA8C;IAMhE,OAAO,CAAC,UAAU,CAAM;IACxB;gFAC4E;IAC5E,OAAO,CAAC,qBAAqB,CAAK;IAClC;;;;qFAIiF;IACjF,OAAO,CAAC,aAAa,CAAS;IAC9B;;;;+EAI2E;IAC3E,OAAO,CAAC,UAAU,CAAS;IAK3B,OAAO,CAAC,cAAc,CAAiD;IAEvE,sEAAsE;IACtE,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,MAAM,CAAgC;IAC9C;wEACoE;IACpE,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,OAAO,CAAkD;IACjE,OAAO,CAAC,QAAQ,CAAS;IAOzB,OAAO,CAAC,UAAU,CAAK;IAOvB,OAAO,CAAC,QAAQ,CAAS;IACzB;;;qEAGiE;IACjE,OAAO,CAAC,UAAU,CAAgC;IAClD;;;2BAGuB;IACvB,OAAO,CAAC,YAAY,CAAoE;IACxF,SAAS,UAAS;IAClB;;;;;kBAKc;IACd,OAAO,CAAC,gBAAgB,CAAuB;gBAEhB,IAAI,EAAE,eAAe;IAIpD,gBAAgB,CAAC,CAAC,EAAE,iBAAiB,GAAG,IAAI;IAE5C,cAAc,IAAI,0BAA0B,EAAE;IAE9C,WAAW,IAAI,QAAQ;IAEvB,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAKrC;0DACsD;IACtD,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI;IAK7C,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAEpC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAI3C;;;;;;;uCAOmC;IACnC,OAAO,CAAC,oBAAoB;IAO5B;;;;6EAIyE;YAC3D,aAAa;IAM3B,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAIrF,6EAA6E;IAC7E,gBAAgB,IAAI,IAAI;IACxB,kBAAkB,IAAI,IAAI;IAE1B,SAAS,CAAC,SAAS,IAAI,IAAI;IAa3B;;;;;;;;;;;;;;2CAcuC;IACvC,OAAO,CAAC,qBAAqB;IAkB7B,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,aAAa;IAOrB;;gCAE4B;IAC5B,SAAS,CAAC,OAAO,IAAI,IAAI;IAazB;;;;;;;;;;;;;+EAa2E;IAC3E,OAAO,CAAC,SAAS;IAIjB;;;;;6BAKyB;IACzB,OAAO,CAAC,MAAM;IAMd,WAAW,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;IAwMhC;;;;;;;wEAOoE;IACpE,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IASjC;;;;;;;;;;;;+EAY2E;IACrE,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BzC;;;iFAG6E;YAC/D,UAAU;YAUV,UAAU;IAoGxB;;;;;;;;;;;;;oEAagE;YAClD,QAAQ;IAStB;;;;;;;;;;mEAU+D;YACjD,cAAc;IAkB5B;;;;;;;;;;sCAUkC;YACpB,eAAe;YAyBf,eAAe;YAmBf,kBAAkB;IAiBhC;;;;;;;;;;;;;;gFAc4E;YAC9D,WAAW;IASzB;;;;;;;;;;;;mEAY+D;YACjD,aAAa;IAoF3B;mEAC+D;IACzD,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrC;;+CAE2C;IAC3C,eAAe,IAAI,IAAI;IAgBvB;gBACY;IACZ,QAAQ,IAAI,IAAI;IAIhB;;uDAEmD;IACnD,SAAS,IAAI,IAAI;IAkBjB;;;;;qCAKiC;IACjC,eAAe,IAAI,eAAe;IAWlC;;4BAEwB;IACxB,WAAW,IAAI,IAAI;IAInB;;6EAEyE;IACzE,YAAY,IAAI,IAAI;IAIpB,4EAA4E;IAC5E,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAOrC;4EACwE;IAClE,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IASzC;;;;wEAIoE;IAC9D,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBxC;;;4DAGwD;IAClD,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAS1C;;;qBAGiB;YACH,iBAAiB;IAW/B,+EAA+E;YACjE,OAAO;IAcrB,uEAAuE;IACjE,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8CxC;;iEAE6D;cAC7C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlD;;;;;;;;;mCAS+B;cACf,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,aAAa,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;YAgBzF,OAAO;IAsFrB;;;;kEAI8D;YAChD,eAAe;YAOf,KAAK;IAenB;0EACsE;IACtE,KAAK,IAAI,IAAI;IAOb;;;;;;;;;;;cAWU;IACV,aAAa,CAAC,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA6BjF,OAAO,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAQ7D,oDAAoD;IACpD,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,UAAU,GAAG,IAAI,GAAG,IAAI;IAI3D;;;;;qFAKiF;IACjF,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,cAAc;CAOvB"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@corenel/term",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "type": "module",
5
5
  "description": "Corenel's terminal face — a headless chat controller plus its Ink views. `./session` is ink-free and shared with the CLI's readline fallback; only `./ink` pulls React. dist/ is bundled (see build.mjs), but @corenel/harness and @corenel/protocol stay EXTERNAL to that bundle — they are real runtime dependencies, declared below, so the CLI and term share exactly one harness module instance (see build.mjs for why two instances is a governance hole, not a cosmetic bug).",
6
6
  "exports": {
@@ -46,8 +46,8 @@
46
46
  "ink-text-input": "^6.0.0",
47
47
  "openai": "^4.77.0",
48
48
  "react": "^18.3.1",
49
- "@corenel/harness": "0.8.0",
50
- "@corenel/protocol": "0.7.3"
49
+ "@corenel/harness": "0.9.0",
50
+ "@corenel/protocol": "0.8.0"
51
51
  },
52
52
  "devDependencies": {
53
53
  "@types/node": "^24.13.1",
@@ -55,7 +55,7 @@
55
55
  "esbuild": "^0.21.5",
56
56
  "ink-testing-library": "^4.0.0",
57
57
  "typescript": "^5.9.3",
58
- "@corenel/tools-node": "0.4.0"
58
+ "@corenel/tools-node": "0.5.0"
59
59
  },
60
60
  "license": "Elastic-2.0",
61
61
  "engines": {