@mnmal-ai/surface-core 0.14.6 → 0.15.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.
- package/dist/app.d.ts.map +1 -1
- package/dist/index.js +38 -13
- package/dist/module.d.ts +5 -2
- package/dist/module.d.ts.map +1 -1
- package/dist/{overlay-DQUbfIKu.js → overlay-DMjCbsaC.js} +26 -1
- package/dist/pure.js +1 -1
- package/dist/terminal.d.ts +10 -0
- package/dist/terminal.d.ts.map +1 -1
- package/dist/transcript.d.ts +3 -1
- package/dist/transcript.d.ts.map +1 -1
- package/package.json +6 -6
package/dist/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAQ,MAAM,yBAAyB,CAAC;AAa3D,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAEf,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAc7D,OAAO,KAAK,EAGV,KAAK,EAIL,SAAS,EAGV,MAAM,aAAa,CAAC;AAerB,OAAO,EAGL,KAAK,sBAAsB,
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as
|
|
1
|
+
import { $ as maskDraft, A as completeDraft, B as EMPTY_HISTORY, C as reprintStart, D as MENU_NAME_WIDTH, E as unavailableReason, F as paletteQuery, G as walk, H as mayWalk, I as paletteRows, J as EMPTY_DRAFT, K as CTRL_C_WINDOW_MS, L as parseCommandLine, M as menuWindow, N as moveSelection, O as clampSelection, P as paletteMatches, Q as insertChunk, R as keySpecOf, S as reflowSequence, T as routeInput, U as remember, V as HISTORY_MAX, W as settle, X as editKey, Y as atEnd, Z as graphemeAt, _ as anchorPadding, a as answerEntry, at as RESERVED_GLOBAL_KEYS, b as prepareSequence, c as dropGaps, ct as normaliseKeySpec, d as markedFlights, et as pasteToLine, f as sendTurn, g as RESET_GROUND, h as REPRINT_LINES, i as addGap, it as CompositionError, j as enterRuns, k as commandUsage, l as emptyTranscript, lt as applySuggestion, m as DEFAULT_GROUND, n as setPanel, nt as wordRight, o as arriveTurn, ot as assertComposes, p as CLEAR_PANE, q as ctrlC, r as defineModule, rt as applyInput, s as commitEntry, st as composeModules, t as panelOf, tt as wordLeft, u as heldAsks, ut as mergeCompletions, v as groundSequence, w as sanitise, x as prepareTerminal, y as liveShrink, z as resolveKey } from "./overlay-DMjCbsaC.js";
|
|
2
2
|
import { spinnerFrame } from "@mnmal-ai/surface-kit";
|
|
3
3
|
import { Box, Static, Text, measureElement, render, useApp, useInput, usePaste, useStdout } from "ink";
|
|
4
4
|
import { Component, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
@@ -37,6 +37,19 @@ function Safe(props) {
|
|
|
37
37
|
children: /* @__PURE__ */ jsx(Run, { render: props.render })
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
|
+
/** A committed entry as `Static` prints it, recording its height for the next re-lay's budget. */
|
|
41
|
+
function Printed(props) {
|
|
42
|
+
const ref = useRef(null);
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
if (ref.current !== null) props.heights.set(props.id, measureElement(ref.current).height);
|
|
45
|
+
});
|
|
46
|
+
return /* @__PURE__ */ jsx(Box, {
|
|
47
|
+
ref,
|
|
48
|
+
paddingX: props.paddingX,
|
|
49
|
+
flexDirection: "column",
|
|
50
|
+
children: props.children
|
|
51
|
+
});
|
|
52
|
+
}
|
|
40
53
|
const ERROR_KIND = "core.error";
|
|
41
54
|
const CANCELLED_KIND = "core.cancelled";
|
|
42
55
|
const TOAST_MS = 3e3;
|
|
@@ -129,16 +142,27 @@ function createApp(opts) {
|
|
|
129
142
|
const anchored = opts.anchored === true;
|
|
130
143
|
function App({ columns, rows }) {
|
|
131
144
|
const { exit } = useApp();
|
|
132
|
-
const
|
|
145
|
+
const stdout = useStdout().stdout;
|
|
133
146
|
const [term, setTerm] = useState(() => ({
|
|
134
147
|
columns: stdout.columns ?? 120,
|
|
135
148
|
rows: stdout.rows ?? 30
|
|
136
149
|
}));
|
|
150
|
+
const [transcript, setTranscript] = useState(() => emptyTranscript());
|
|
151
|
+
const transcriptRef = useRef(transcript);
|
|
152
|
+
const putTranscript = useCallback((fn) => {
|
|
153
|
+
transcriptRef.current = fn(transcriptRef.current);
|
|
154
|
+
setTranscript(transcriptRef.current);
|
|
155
|
+
}, []);
|
|
137
156
|
const [epoch, setEpoch] = useState(0);
|
|
157
|
+
const heights = useRef(/* @__PURE__ */ new Map());
|
|
158
|
+
const [reprintFrom, setReprintFrom] = useState(0);
|
|
138
159
|
const relayout = useCallback(() => {
|
|
139
160
|
if (stdout.isTTY) stdout.write(reflowSequence(stdout.rows));
|
|
161
|
+
putTranscript(dropGaps);
|
|
162
|
+
const kept = transcriptRef.current.committed;
|
|
163
|
+
setReprintFrom(reprintStart(kept.map((e) => heights.current.get(e.key) ?? 1), REPRINT_LINES));
|
|
140
164
|
setEpoch((e) => e + 1);
|
|
141
|
-
}, [stdout]);
|
|
165
|
+
}, [stdout, putTranscript]);
|
|
142
166
|
useEffect(() => {
|
|
143
167
|
const laidOut = {
|
|
144
168
|
columns: stdout.columns ?? 120,
|
|
@@ -183,12 +207,6 @@ function createApp(opts) {
|
|
|
183
207
|
};
|
|
184
208
|
const sizeRef = useRef(panelSize);
|
|
185
209
|
sizeRef.current = panelSize;
|
|
186
|
-
const [transcript, setTranscript] = useState(() => emptyTranscript());
|
|
187
|
-
const transcriptRef = useRef(transcript);
|
|
188
|
-
const putTranscript = useCallback((fn) => {
|
|
189
|
-
transcriptRef.current = fn(transcriptRef.current);
|
|
190
|
-
setTranscript(transcriptRef.current);
|
|
191
|
-
}, []);
|
|
192
210
|
const [live, setLive] = useState(/* @__PURE__ */ new Map());
|
|
193
211
|
const [draft, setDraft] = useState(EMPTY_DRAFT);
|
|
194
212
|
const [, setHistory] = useState(EMPTY_HISTORY);
|
|
@@ -441,7 +459,7 @@ function createApp(opts) {
|
|
|
441
459
|
return;
|
|
442
460
|
}
|
|
443
461
|
if (text === "") return;
|
|
444
|
-
if (sent === void 0) putHistory(remember(historyRef.current, text));
|
|
462
|
+
if (sent === void 0 || sent.remember === true) putHistory(remember(historyRef.current, text));
|
|
445
463
|
const route = routeInput(text, registry, opts.defaultTurn);
|
|
446
464
|
if (route.kind === "command") Promise.resolve().then(() => route.spec.run(route.args, ctxFor(route.module))).catch((err) => print(`/${route.spec.name} failed: ${err instanceof Error ? err.message : String(err)}`, "error"));
|
|
447
465
|
else if (route.kind === "unknown-command") print(`unknown command /${route.name}`, "warn");
|
|
@@ -917,13 +935,20 @@ function createApp(opts) {
|
|
|
917
935
|
}
|
|
918
936
|
return /* @__PURE__ */ jsx(Text, { children: "\n".repeat(Math.max(0, e.lines - 1)) }, e.key);
|
|
919
937
|
};
|
|
938
|
+
const printed = reprintFrom === 0 ? transcript.committed : [{
|
|
939
|
+
key: `trimmed:${epoch}`,
|
|
940
|
+
kind: "note",
|
|
941
|
+
text: `… ${reprintFrom} earlier ${reprintFrom === 1 ? "entry" : "entries"} not reprinted`,
|
|
942
|
+
tone: "dim"
|
|
943
|
+
}, ...transcript.committed.slice(reprintFrom)];
|
|
920
944
|
return /* @__PURE__ */ jsxs(Box, {
|
|
921
945
|
flexDirection: "column",
|
|
922
946
|
children: [/* @__PURE__ */ jsx(Static, {
|
|
923
|
-
items:
|
|
924
|
-
children: (e) => /* @__PURE__ */ jsx(
|
|
947
|
+
items: printed,
|
|
948
|
+
children: (e) => /* @__PURE__ */ jsx(Printed, {
|
|
949
|
+
id: e.key,
|
|
950
|
+
heights: heights.current,
|
|
925
951
|
paddingX: gutter,
|
|
926
|
-
flexDirection: "column",
|
|
927
952
|
children: committed(e)
|
|
928
953
|
}, e.key)
|
|
929
954
|
}, `static:${epoch}`), /* @__PURE__ */ jsxs(Box, {
|
package/dist/module.d.ts
CHANGED
|
@@ -77,6 +77,9 @@ export interface SubmitOptions {
|
|
|
77
77
|
readonly emphasis?: string;
|
|
78
78
|
/** Whatever the app's turn handler needs; the core never reads it. */
|
|
79
79
|
readonly context?: unknown;
|
|
80
|
+
/** Put the line in the input history, as if typed: for a line the operator typed into a panel
|
|
81
|
+
* that the module forwards. */
|
|
82
|
+
readonly remember?: boolean;
|
|
80
83
|
}
|
|
81
84
|
/** A turn as its handler receives it. */
|
|
82
85
|
export interface TurnContext {
|
|
@@ -114,8 +117,8 @@ export interface ModuleCtx<P> {
|
|
|
114
117
|
transcript(): Transcript<Reply>;
|
|
115
118
|
/**
|
|
116
119
|
* A line sent as if typed, and routed as one: a /command runs, anything else is a turn. It stays
|
|
117
|
-
* out of the history, which holds only what the operator typed
|
|
118
|
-
* `TurnContext`.
|
|
120
|
+
* out of the history, which holds only what the operator typed, unless `opts.remember` says it
|
|
121
|
+
* was. `opts` reach the turn as its `TurnContext`.
|
|
119
122
|
*/
|
|
120
123
|
submit(text: string, opts?: SubmitOptions): void;
|
|
121
124
|
/** The panel budget now, as a panel's view is given it: for acts that page, and for commands
|
package/dist/module.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
|
|
@@ -845,6 +845,23 @@ function liveShrink(prev, now) {
|
|
|
845
845
|
if (prev === null || now.committed !== prev.committed || now.epoch !== prev.epoch) return 0;
|
|
846
846
|
return Math.max(0, prev.height - now.height);
|
|
847
847
|
}
|
|
848
|
+
/**
|
|
849
|
+
* The most lines a re-lay reprints. Printing blocks input for every line (about 0.17 ms each in
|
|
850
|
+
* Ink's output step), so a re-lay of a long transcript keeps only its newest entries.
|
|
851
|
+
*/
|
|
852
|
+
const REPRINT_LINES = 1e3;
|
|
853
|
+
/**
|
|
854
|
+
* Where a re-lay starts reprinting, given each committed entry's height: the newest entries that
|
|
855
|
+
* fit `budget` lines, and always the newest one, however tall.
|
|
856
|
+
*/
|
|
857
|
+
function reprintStart(heights, budget) {
|
|
858
|
+
let lines = 0;
|
|
859
|
+
for (let i = heights.length - 1; i >= 0; i--) {
|
|
860
|
+
lines += heights[i] ?? 1;
|
|
861
|
+
if (lines > budget) return Math.min(i + 1, heights.length - 1);
|
|
862
|
+
}
|
|
863
|
+
return 0;
|
|
864
|
+
}
|
|
848
865
|
/** The bytes {@link prepareTerminal} writes, in order. */
|
|
849
866
|
function prepareSequence(rows, opts = {}) {
|
|
850
867
|
return (groundSequence(opts.ground) ?? "") + (opts.clear === false ? "" : CLEAR_PANE) + (opts.anchor === false ? "" : anchorPadding(rows));
|
|
@@ -968,6 +985,14 @@ function addGap(t, lines, epoch) {
|
|
|
968
985
|
epoch
|
|
969
986
|
});
|
|
970
987
|
}
|
|
988
|
+
/** The transcript without its gaps: for a re-lay, which prints everything again from scratch. */
|
|
989
|
+
function dropGaps(t) {
|
|
990
|
+
if (!t.committed.some((e) => e.kind === "gap")) return t;
|
|
991
|
+
return {
|
|
992
|
+
...t,
|
|
993
|
+
committed: t.committed.filter((e) => e.kind !== "gap")
|
|
994
|
+
};
|
|
995
|
+
}
|
|
971
996
|
|
|
972
997
|
//#endregion
|
|
973
998
|
//#region src/module.ts
|
|
@@ -1008,4 +1033,4 @@ function setPanel(o, kind, next) {
|
|
|
1008
1033
|
}
|
|
1009
1034
|
|
|
1010
1035
|
//#endregion
|
|
1011
|
-
export {
|
|
1036
|
+
export { maskDraft as $, completeDraft as A, EMPTY_HISTORY as B, reprintStart as C, MENU_NAME_WIDTH as D, unavailableReason as E, paletteQuery as F, walk as G, mayWalk as H, paletteRows as I, EMPTY_DRAFT as J, CTRL_C_WINDOW_MS as K, parseCommandLine as L, menuWindow as M, moveSelection as N, clampSelection as O, paletteMatches as P, insertChunk as Q, keySpecOf as R, reflowSequence as S, routeInput as T, remember as U, HISTORY_MAX as V, settle as W, editKey as X, atEnd as Y, graphemeAt as Z, anchorPadding as _, answerEntry as a, RESERVED_GLOBAL_KEYS as at, prepareSequence as b, dropGaps as c, normaliseKeySpec as ct, markedFlights as d, pasteToLine as et, sendTurn as f, RESET_GROUND as g, REPRINT_LINES as h, addGap as i, CompositionError as it, enterRuns as j, commandUsage as k, emptyTranscript as l, applySuggestion as lt, DEFAULT_GROUND as m, setPanel as n, wordRight as nt, arriveTurn as o, assertComposes as ot, CLEAR_PANE as p, ctrlC as q, defineModule as r, applyInput as rt, commitEntry as s, composeModules as st, panelOf as t, wordLeft as tt, heldAsks as u, mergeCompletions as ut, groundSequence as v, sanitise as w, prepareTerminal as x, liveShrink as y, resolveKey as z };
|
package/dist/pure.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { $ as
|
|
1
|
+
import { $ as maskDraft, A as completeDraft, B as EMPTY_HISTORY, D as MENU_NAME_WIDTH, F as paletteQuery, G as walk, H as mayWalk, I as paletteRows, J as EMPTY_DRAFT, K as CTRL_C_WINDOW_MS, L as parseCommandLine, M as menuWindow, N as moveSelection, O as clampSelection, P as paletteMatches, Q as insertChunk, R as keySpecOf, S as reflowSequence, T as routeInput, U as remember, V as HISTORY_MAX, W as settle, X as editKey, Y as atEnd, _ as anchorPadding, a as answerEntry, at as RESERVED_GLOBAL_KEYS, b as prepareSequence, ct as normaliseKeySpec, d as markedFlights, et as pasteToLine, f as sendTurn, g as RESET_GROUND, i as addGap, it as CompositionError, j as enterRuns, k as commandUsage, l as emptyTranscript, lt as applySuggestion, m as DEFAULT_GROUND, n as setPanel, nt as wordRight, o as arriveTurn, ot as assertComposes, p as CLEAR_PANE, q as ctrlC, r as defineModule, rt as applyInput, s as commitEntry, st as composeModules, t as panelOf, tt as wordLeft, u as heldAsks, ut as mergeCompletions, v as groundSequence, w as sanitise, x as prepareTerminal, y as liveShrink, z as resolveKey } from "./overlay-DMjCbsaC.js";
|
|
2
2
|
|
|
3
3
|
export { CLEAR_PANE, CTRL_C_WINDOW_MS, CompositionError, DEFAULT_GROUND, EMPTY_DRAFT, EMPTY_HISTORY, HISTORY_MAX, MENU_NAME_WIDTH, RESERVED_GLOBAL_KEYS, RESET_GROUND, addGap, anchorPadding, answerEntry, applyInput, applySuggestion, arriveTurn, assertComposes, atEnd, clampSelection, commandUsage, commitEntry, completeDraft, composeModules, ctrlC, defineModule, editKey, emptyTranscript, enterRuns, groundSequence, heldAsks, insertChunk, keySpecOf, liveShrink, markedFlights, maskDraft, mayWalk, menuWindow, mergeCompletions, moveSelection, normaliseKeySpec, paletteMatches, paletteQuery, paletteRows, panelOf, parseCommandLine, pasteToLine, prepareSequence, prepareTerminal, reflowSequence, remember, resolveKey, routeInput, sanitise, sendTurn, setPanel, settle, walk, wordLeft, wordRight };
|
package/dist/terminal.d.ts
CHANGED
|
@@ -38,6 +38,16 @@ export interface LiveMeasure {
|
|
|
38
38
|
* on its own).
|
|
39
39
|
*/
|
|
40
40
|
export declare function liveShrink(prev: LiveMeasure | null, now: LiveMeasure): number;
|
|
41
|
+
/**
|
|
42
|
+
* The most lines a re-lay reprints. Printing blocks input for every line (about 0.17 ms each in
|
|
43
|
+
* Ink's output step), so a re-lay of a long transcript keeps only its newest entries.
|
|
44
|
+
*/
|
|
45
|
+
export declare const REPRINT_LINES = 1000;
|
|
46
|
+
/**
|
|
47
|
+
* Where a re-lay starts reprinting, given each committed entry's height: the newest entries that
|
|
48
|
+
* fit `budget` lines, and always the newest one, however tall.
|
|
49
|
+
*/
|
|
50
|
+
export declare function reprintStart(heights: readonly number[], budget: number): number;
|
|
41
51
|
export interface PrepareTerminalOptions {
|
|
42
52
|
/** `#rrggbb`, or `none` to leave the background alone. Default {@link DEFAULT_GROUND}. */
|
|
43
53
|
readonly ground?: string | undefined;
|
package/dist/terminal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAKxE;AAED,6DAA6D;AAC7D,eAAO,MAAM,YAAY,qBAAiB,CAAC;AAE3C,wEAAwE;AACxE,eAAO,MAAM,UAAU,+BAAyB,CAAC;AAEjD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAG9D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAE/D;AAED,oGAAoG;AACpG,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM,CAG7E;AAED,MAAM,WAAW,sBAAsB;IACrC,0FAA0F;IAC1F,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,6CAA6C;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC/B;AAED,0DAA0D;AAC1D,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,IAAI,GAAE,sBAA2B,GAChC,MAAM,CAMR;AAED,6EAA6E;AAC7E,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC;IACnD,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC;IAC5E,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,WAAW,EAChB,IAAI,GAAE,sBAA2B,EACjC,IAAI,GAAE,eAAyB,GAC9B,MAAM,IAAI,CAeZ"}
|
|
1
|
+
{"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAKxE;AAED,6DAA6D;AAC7D,eAAO,MAAM,YAAY,qBAAiB,CAAC;AAE3C,wEAAwE;AACxE,eAAO,MAAM,UAAU,+BAAyB,CAAC;AAEjD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAG9D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAE/D;AAED,oGAAoG;AACpG,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM,CAG7E;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,OAAO,CAAC;AAElC;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAO/E;AAED,MAAM,WAAW,sBAAsB;IACrC,0FAA0F;IAC1F,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,6CAA6C;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC/B;AAED,0DAA0D;AAC1D,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,IAAI,GAAE,sBAA2B,GAChC,MAAM,CAMR;AAED,6EAA6E;AAC7E,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC;IACnD,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC;IAC5E,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,WAAW,EAChB,IAAI,GAAE,sBAA2B,EACjC,IAAI,GAAE,eAAyB,GAC9B,MAAM,IAAI,CAeZ"}
|
package/dist/transcript.d.ts
CHANGED
|
@@ -44,7 +44,7 @@ export interface Flight {
|
|
|
44
44
|
readonly emphasis?: string;
|
|
45
45
|
}
|
|
46
46
|
export interface Transcript<R, X extends AppEntry = never> {
|
|
47
|
-
/** Append-only: exactly what Static requires. */
|
|
47
|
+
/** Append-only between re-lays: exactly what Static requires. A re-lay drops the gaps. */
|
|
48
48
|
readonly committed: readonly Entry<R, X>[];
|
|
49
49
|
/** Unanswered turns, in send order. */
|
|
50
50
|
readonly flights: readonly Flight[];
|
|
@@ -60,4 +60,6 @@ export declare function commitEntry<R, X extends AppEntry>(t: Transcript<R, X>,
|
|
|
60
60
|
/** The last answer printed, or the one carrying mark `n`. */
|
|
61
61
|
export declare function answerEntry<R, X extends AppEntry>(t: Transcript<R, X>, mark: number | null): AnswerEntry<R> | null;
|
|
62
62
|
export declare function addGap<R, X extends AppEntry>(t: Transcript<R, X>, lines: number, epoch: number): Transcript<R, X>;
|
|
63
|
+
/** The transcript without its gaps: for a re-lay, which prints everything again from scratch. */
|
|
64
|
+
export declare function dropGaps<R, X extends AppEntry>(t: Transcript<R, X>): Transcript<R, X>;
|
|
63
65
|
//# sourceMappingURL=transcript.d.ts.map
|
package/dist/transcript.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcript.d.ts","sourceRoot":"","sources":["../src/transcript.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAEpD,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,qFAAqF;IACrF,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,gDAAgD;IAChD,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qEAAqE;AACrE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;CACtB;AAED,2FAA2F;AAC3F,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,QAAQ,GAAG;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,QAAQ,GAAG,KAAK,IAC3C,QAAQ,GACR,WAAW,CAAC,CAAC,CAAC,GACd,SAAS,GACT,QAAQ,GACR,CAAC,CAAC;AAEN,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,0FAA0F;IAC1F,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,EAAE,CAAC,SAAS,QAAQ,GAAG,KAAK;IACvD,
|
|
1
|
+
{"version":3,"file":"transcript.d.ts","sourceRoot":"","sources":["../src/transcript.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mnmal-ai/surface-core",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Pluggable terminal UI base on Ink
|
|
3
|
+
"version": "0.15.0",
|
|
4
|
+
"description": "Pluggable terminal UI base on Ink 8 + React 19: module registry, createApp, the turn engine and the shell.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -23,18 +23,18 @@
|
|
|
23
23
|
"dist"
|
|
24
24
|
],
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@mnmal-ai/surface-kit": "0.
|
|
27
|
-
"@mnmal-ai/surface-theme": "0.
|
|
26
|
+
"@mnmal-ai/surface-kit": "0.15.0",
|
|
27
|
+
"@mnmal-ai/surface-theme": "0.15.0"
|
|
28
28
|
},
|
|
29
29
|
"peerDependencies": {
|
|
30
|
-
"ink": "^
|
|
30
|
+
"ink": "^8.0.0",
|
|
31
31
|
"react": "^19.3.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@mnmal-ai/substrate-config": "1.0.0-alpha.0",
|
|
35
35
|
"@types/node": "^26.6.4",
|
|
36
36
|
"@types/react": "^19.2.0",
|
|
37
|
-
"ink": "^
|
|
37
|
+
"ink": "^8.0.0",
|
|
38
38
|
"ink-testing-library": "^4.0.0",
|
|
39
39
|
"react": "^19.3.0",
|
|
40
40
|
"tsdown": "^0.23.0",
|