koneck 2.128.55 → 2.128.57
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/diff-layout.d.ts +120 -0
- package/dist/diff-layout.d.ts.map +1 -0
- package/dist/diff-layout.js +173 -0
- package/dist/diff-layout.js.map +1 -0
- package/dist/ink-chat.d.ts +36 -13
- package/dist/ink-chat.d.ts.map +1 -1
- package/dist/ink-chat.js +133 -122
- package/dist/ink-chat.js.map +1 -1
- package/dist/session-changes.d.ts +1 -1
- package/dist/session-changes.d.ts.map +1 -1
- package/dist/session-changes.js +5 -2
- package/dist/session-changes.js.map +1 -1
- package/dist/web/api.d.ts.map +1 -1
- package/dist/web/api.js +10 -0
- package/dist/web/api.js.map +1 -1
- package/dist/web/sessions.d.ts +6 -0
- package/dist/web/sessions.d.ts.map +1 -1
- package/dist/web/sessions.js +8 -0
- package/dist/web/sessions.js.map +1 -1
- package/dist/web/ui-client.d.ts.map +1 -1
- package/dist/web/ui-client.js +79 -6
- package/dist/web/ui-client.js.map +1 -1
- package/dist/web/ui-css.d.ts.map +1 -1
- package/dist/web/ui-css.js +16 -0
- package/dist/web/ui-css.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How the diff panel is laid out, decided once for the terminal and the browser.
|
|
3
|
+
*
|
|
4
|
+
* Asked for with Claude Code's panel as the picture: a list of the changed files at the top, each
|
|
5
|
+
* with its own counts, tests and generated files folded into one line, and below a rule the one
|
|
6
|
+
* file being read — its changed lines on a band the full width of the panel, and a long line
|
|
7
|
+
* wrapped with its + or - carried onto each piece rather than cut off at the edge.
|
|
8
|
+
*
|
|
9
|
+
* The panel it replaced stacked every file's diff in one column. Fifteen files was a scroll through
|
|
10
|
+
* all of them to find the one wanted, and a line longer than the panel lost its end.
|
|
11
|
+
*
|
|
12
|
+
* Nothing here draws. It returns which files are listed, in what order, which is selected, and a
|
|
13
|
+
* diff broken into rows of a given width; each interface paints those in its own way. The browser
|
|
14
|
+
* wraps with CSS, so it uses the list and the fold and not the row wrapping.
|
|
15
|
+
*/
|
|
16
|
+
import type { FileDiff } from './diff-view.js';
|
|
17
|
+
/** A diff longer than this is capped and the rest counted: a 4,000-line rewrite is not read in a panel. */
|
|
18
|
+
export declare const PANEL_DIFF_LINES = 400;
|
|
19
|
+
/** Lines of unchanged code kept around each change — what Claude Code's panel shows. */
|
|
20
|
+
export declare const PANEL_CONTEXT = 3;
|
|
21
|
+
/**
|
|
22
|
+
* Tests, lockfiles, build output and generated code: changes to review, but not first.
|
|
23
|
+
*
|
|
24
|
+
* Folded rather than hidden. A test that changed is part of the change — it is shown on request,
|
|
25
|
+
* and counted in the header either way.
|
|
26
|
+
*/
|
|
27
|
+
export declare function isTestOrGenerated(p: string): boolean;
|
|
28
|
+
export interface ListedFile {
|
|
29
|
+
path: string;
|
|
30
|
+
added: number;
|
|
31
|
+
removed: number;
|
|
32
|
+
/** "new", "deleted", "binary" — shown in place of counts when there are none to show. */
|
|
33
|
+
tag: string;
|
|
34
|
+
generated: boolean;
|
|
35
|
+
/** Index into the diffs this list was made from. */
|
|
36
|
+
index: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The files in the order they are listed: the work first, in the order it was touched, then the
|
|
40
|
+
* tests and generated files after it.
|
|
41
|
+
*/
|
|
42
|
+
export declare function listFiles(files: readonly FileDiff[]): {
|
|
43
|
+
main: ListedFile[];
|
|
44
|
+
generated: ListedFile[];
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* The session's changes as plain data for the browser: listed in the terminal's order, with the
|
|
48
|
+
* fold decided, and each line with its number and sign. The browser chooses and wraps; it does not
|
|
49
|
+
* decide what is a test or which file comes first.
|
|
50
|
+
*/
|
|
51
|
+
export declare function panelData(files: readonly FileDiff[]): {
|
|
52
|
+
files: number;
|
|
53
|
+
added: number;
|
|
54
|
+
removed: number;
|
|
55
|
+
list: Array<ListedFile & {
|
|
56
|
+
binary: boolean;
|
|
57
|
+
hidden: number;
|
|
58
|
+
lines: Array<{
|
|
59
|
+
k: 'add' | 'del' | 'ctx';
|
|
60
|
+
n: number | null;
|
|
61
|
+
t: string;
|
|
62
|
+
}>;
|
|
63
|
+
}>;
|
|
64
|
+
};
|
|
65
|
+
export interface FileListView {
|
|
66
|
+
files: number;
|
|
67
|
+
added: number;
|
|
68
|
+
removed: number;
|
|
69
|
+
/** The rows of the list that fit, with the selected one marked. */
|
|
70
|
+
rows: Array<ListedFile & {
|
|
71
|
+
selected: boolean;
|
|
72
|
+
}>;
|
|
73
|
+
above: number;
|
|
74
|
+
below: number;
|
|
75
|
+
/** How many tests and generated files are folded, and whether they are shown now. */
|
|
76
|
+
folded: {
|
|
77
|
+
count: number;
|
|
78
|
+
open: boolean;
|
|
79
|
+
};
|
|
80
|
+
/** Index into the diffs of the file whose diff is drawn below the list, or -1. */
|
|
81
|
+
selected: number;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* The list as shown: which rows fit in `rows`, scrolled so the selected one is among them.
|
|
85
|
+
*
|
|
86
|
+
* `selected` is a position in the visible order — main files, then the generated ones when the
|
|
87
|
+
* fold is open — and is clamped, so a file disappearing from under it does not select nothing.
|
|
88
|
+
*/
|
|
89
|
+
export declare function fileListView(files: readonly FileDiff[], opts: {
|
|
90
|
+
selected: number;
|
|
91
|
+
rows: number;
|
|
92
|
+
showGenerated: boolean;
|
|
93
|
+
}): FileListView;
|
|
94
|
+
/** How many files the list can move through with the fold as it is. */
|
|
95
|
+
export declare function listLength(files: readonly FileDiff[], showGenerated: boolean): number;
|
|
96
|
+
export type DiffRow = {
|
|
97
|
+
t: 'line';
|
|
98
|
+
kind: 'add' | 'del' | 'ctx';
|
|
99
|
+
number: number | null;
|
|
100
|
+
sign: string;
|
|
101
|
+
text: string;
|
|
102
|
+
first: boolean;
|
|
103
|
+
} | {
|
|
104
|
+
t: 'more';
|
|
105
|
+
count: number;
|
|
106
|
+
} | {
|
|
107
|
+
t: 'binary';
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* One file's diff as rows `width` cells wide, long lines wrapped.
|
|
111
|
+
*
|
|
112
|
+
* The line number goes on the first piece only; every piece carries the sign, so a wrapped added
|
|
113
|
+
* line reads as added all the way down — the thing Claude Code's panel does that a clipped line
|
|
114
|
+
* cannot. Tabs are expanded first, because a tab has no width until it is drawn and the band
|
|
115
|
+
* behind a changed line has to be one.
|
|
116
|
+
*/
|
|
117
|
+
export declare function diffRows(d: FileDiff, width: number): DiffRow[];
|
|
118
|
+
/** A line broken into pieces no wider than `width` cells; an empty line is one empty piece. */
|
|
119
|
+
export declare function wrapCells(text: string, width: number): string[];
|
|
120
|
+
//# sourceMappingURL=diff-layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-layout.d.ts","sourceRoot":"","sources":["../src/diff-layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How the diff panel is laid out, decided once for the terminal and the browser.
|
|
3
|
+
*
|
|
4
|
+
* Asked for with Claude Code's panel as the picture: a list of the changed files at the top, each
|
|
5
|
+
* with its own counts, tests and generated files folded into one line, and below a rule the one
|
|
6
|
+
* file being read — its changed lines on a band the full width of the panel, and a long line
|
|
7
|
+
* wrapped with its + or - carried onto each piece rather than cut off at the edge.
|
|
8
|
+
*
|
|
9
|
+
* The panel it replaced stacked every file's diff in one column. Fifteen files was a scroll through
|
|
10
|
+
* all of them to find the one wanted, and a line longer than the panel lost its end.
|
|
11
|
+
*
|
|
12
|
+
* Nothing here draws. It returns which files are listed, in what order, which is selected, and a
|
|
13
|
+
* diff broken into rows of a given width; each interface paints those in its own way. The browser
|
|
14
|
+
* wraps with CSS, so it uses the list and the fold and not the row wrapping.
|
|
15
|
+
*/
|
|
16
|
+
import { sliceToWidth, displayWidth } from './markdown-ink.js';
|
|
17
|
+
/** A diff longer than this is capped and the rest counted: a 4,000-line rewrite is not read in a panel. */
|
|
18
|
+
export const PANEL_DIFF_LINES = 400;
|
|
19
|
+
/** Lines of unchanged code kept around each change — what Claude Code's panel shows. */
|
|
20
|
+
export const PANEL_CONTEXT = 3;
|
|
21
|
+
/**
|
|
22
|
+
* Tests, lockfiles, build output and generated code: changes to review, but not first.
|
|
23
|
+
*
|
|
24
|
+
* Folded rather than hidden. A test that changed is part of the change — it is shown on request,
|
|
25
|
+
* and counted in the header either way.
|
|
26
|
+
*/
|
|
27
|
+
export function isTestOrGenerated(p) {
|
|
28
|
+
const f = p.replace(/\\/g, '/');
|
|
29
|
+
const name = f.split('/').pop() ?? f;
|
|
30
|
+
if (/(^|\/)(tests?|__tests__|__snapshots__|spec|e2e|fixtures)\//i.test(f))
|
|
31
|
+
return true;
|
|
32
|
+
if (/\.(test|spec)\.[^/]+$/i.test(name) || /_test\.(go|py|rb)$/i.test(name) || /^test_.*\.py$/i.test(name))
|
|
33
|
+
return true;
|
|
34
|
+
if (/(^|\/)(dist|build|out|coverage|generated|gen|vendor|node_modules)\//i.test(f))
|
|
35
|
+
return true;
|
|
36
|
+
if (/\.(min\.(js|css)|map|snap|lock)$/i.test(name) || /\.g\.[a-z]+$/i.test(name) || /\.generated\./i.test(name))
|
|
37
|
+
return true;
|
|
38
|
+
return /^(package-lock\.json|yarn\.lock|pnpm-lock\.yaml|composer\.lock|Cargo\.lock|poetry\.lock|Gemfile\.lock|go\.sum|bun\.lockb?)$/i.test(name);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The files in the order they are listed: the work first, in the order it was touched, then the
|
|
42
|
+
* tests and generated files after it.
|
|
43
|
+
*/
|
|
44
|
+
export function listFiles(files) {
|
|
45
|
+
const main = [];
|
|
46
|
+
const generated = [];
|
|
47
|
+
files.forEach((d, index) => {
|
|
48
|
+
const tag = d.binary ? 'binary' : d.created && d.removed === 0 ? 'new' : d.deleted ? 'deleted' : '';
|
|
49
|
+
const item = { path: d.path, added: d.added, removed: d.removed, tag, generated: isTestOrGenerated(d.path), index };
|
|
50
|
+
(item.generated ? generated : main).push(item);
|
|
51
|
+
});
|
|
52
|
+
return { main, generated };
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The session's changes as plain data for the browser: listed in the terminal's order, with the
|
|
56
|
+
* fold decided, and each line with its number and sign. The browser chooses and wraps; it does not
|
|
57
|
+
* decide what is a test or which file comes first.
|
|
58
|
+
*/
|
|
59
|
+
export function panelData(files) {
|
|
60
|
+
const { main, generated } = listFiles(files);
|
|
61
|
+
const t = files.reduce((a, d) => ({ added: a.added + d.added, removed: a.removed + d.removed }), { added: 0, removed: 0 });
|
|
62
|
+
return {
|
|
63
|
+
files: files.length, ...t,
|
|
64
|
+
list: [...main, ...generated].map(f => {
|
|
65
|
+
const d = files[f.index];
|
|
66
|
+
return {
|
|
67
|
+
...f, binary: d.binary, hidden: d.hiddenLines,
|
|
68
|
+
lines: d.hunks.flatMap(h => h.lines.map(l => ({
|
|
69
|
+
k: l.kind, n: (l.kind === 'del' ? l.before : l.after) ?? null, t: l.text,
|
|
70
|
+
}))),
|
|
71
|
+
};
|
|
72
|
+
}),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* The list as shown: which rows fit in `rows`, scrolled so the selected one is among them.
|
|
77
|
+
*
|
|
78
|
+
* `selected` is a position in the visible order — main files, then the generated ones when the
|
|
79
|
+
* fold is open — and is clamped, so a file disappearing from under it does not select nothing.
|
|
80
|
+
*/
|
|
81
|
+
export function fileListView(files, opts) {
|
|
82
|
+
const { main, generated } = listFiles(files);
|
|
83
|
+
const order = opts.showGenerated || main.length === 0 ? [...main, ...generated] : main;
|
|
84
|
+
const total = files.reduce((a, d) => ({ added: a.added + d.added, removed: a.removed + d.removed }), { added: 0, removed: 0 });
|
|
85
|
+
const sel = order.length ? Math.max(0, Math.min(opts.selected, order.length - 1)) : -1;
|
|
86
|
+
const room = Math.max(1, opts.rows);
|
|
87
|
+
// The window keeps the selection in view, as low as it can so the top of the list stays put.
|
|
88
|
+
const start = order.length <= room ? 0 : Math.max(0, Math.min(sel - room + 1, order.length - room));
|
|
89
|
+
const from = Math.max(0, Math.min(start, sel));
|
|
90
|
+
const shown = order.slice(from, from + room);
|
|
91
|
+
return {
|
|
92
|
+
files: files.length, ...total,
|
|
93
|
+
rows: shown.map((f, i) => ({ ...f, selected: from + i === sel })),
|
|
94
|
+
above: from,
|
|
95
|
+
below: Math.max(0, order.length - from - shown.length),
|
|
96
|
+
folded: { count: main.length === 0 ? 0 : generated.length, open: opts.showGenerated },
|
|
97
|
+
selected: sel >= 0 ? order[sel].index : -1,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/** How many files the list can move through with the fold as it is. */
|
|
101
|
+
export function listLength(files, showGenerated) {
|
|
102
|
+
const { main, generated } = listFiles(files);
|
|
103
|
+
return showGenerated || main.length === 0 ? main.length + generated.length : main.length;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* One file's diff as rows `width` cells wide, long lines wrapped.
|
|
107
|
+
*
|
|
108
|
+
* The line number goes on the first piece only; every piece carries the sign, so a wrapped added
|
|
109
|
+
* line reads as added all the way down — the thing Claude Code's panel does that a clipped line
|
|
110
|
+
* cannot. Tabs are expanded first, because a tab has no width until it is drawn and the band
|
|
111
|
+
* behind a changed line has to be one.
|
|
112
|
+
*/
|
|
113
|
+
export function diffRows(d, width) {
|
|
114
|
+
/*
|
|
115
|
+
* Cached per diff and width: the panel asks on every repaint, and a diff does not change — a new
|
|
116
|
+
* edit arrives as a new object. Measured on a Raspberry Pi 5, two 400-line diffs: 66ms to lay
|
|
117
|
+
* out one uncached, which was most of an 86ms repaint.
|
|
118
|
+
*/
|
|
119
|
+
const byWidth = ROWS_CACHE.get(d);
|
|
120
|
+
const hit = byWidth?.get(width);
|
|
121
|
+
if (hit)
|
|
122
|
+
return hit;
|
|
123
|
+
const rows = layoutRows(d, width);
|
|
124
|
+
if (byWidth)
|
|
125
|
+
byWidth.set(width, rows);
|
|
126
|
+
else
|
|
127
|
+
ROWS_CACHE.set(d, new Map([[width, rows]]));
|
|
128
|
+
return rows;
|
|
129
|
+
}
|
|
130
|
+
const ROWS_CACHE = new WeakMap();
|
|
131
|
+
function layoutRows(d, width) {
|
|
132
|
+
if (d.binary)
|
|
133
|
+
return [{ t: 'binary' }];
|
|
134
|
+
const w = Math.max(8, width);
|
|
135
|
+
const rows = [];
|
|
136
|
+
for (const hunk of d.hunks) {
|
|
137
|
+
for (const l of hunk.lines) {
|
|
138
|
+
const number = (l.kind === 'del' ? l.before : l.after) ?? null;
|
|
139
|
+
const sign = l.kind === 'add' ? '+' : l.kind === 'del' ? '-' : ' ';
|
|
140
|
+
for (const [i, piece] of wrapCells(l.text.replace(/\t/g, ' '), w).entries()) {
|
|
141
|
+
rows.push({ t: 'line', kind: l.kind, number, sign, text: piece, first: i === 0 });
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (d.hiddenLines > 0)
|
|
146
|
+
rows.push({ t: 'more', count: d.hiddenLines });
|
|
147
|
+
return rows;
|
|
148
|
+
}
|
|
149
|
+
/** A line broken into pieces no wider than `width` cells; an empty line is one empty piece. */
|
|
150
|
+
export function wrapCells(text, width) {
|
|
151
|
+
// Printable ASCII is one cell a character — most code, and far cheaper than measuring.
|
|
152
|
+
if (/^[\x20-\x7e]*$/.test(text)) {
|
|
153
|
+
if (text.length <= width)
|
|
154
|
+
return [text];
|
|
155
|
+
const out = [];
|
|
156
|
+
for (let i = 0; i < text.length; i += width)
|
|
157
|
+
out.push(text.slice(i, i + width));
|
|
158
|
+
return out;
|
|
159
|
+
}
|
|
160
|
+
if (displayWidth(text) <= width)
|
|
161
|
+
return [text];
|
|
162
|
+
const out = [];
|
|
163
|
+
let rest = text;
|
|
164
|
+
while (rest.length) {
|
|
165
|
+
const head = sliceToWidth(rest, width);
|
|
166
|
+
// A character wider than the whole width would never fit; take it alone rather than loop.
|
|
167
|
+
const take = head.text.length || [...rest][0].length;
|
|
168
|
+
out.push(rest.slice(0, take));
|
|
169
|
+
rest = rest.slice(take);
|
|
170
|
+
}
|
|
171
|
+
return out;
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=diff-layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-layout.js","sourceRoot":"","sources":["../src/diff-layout.ts"],"names":[],"mappings":"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"}
|
package/dist/ink-chat.d.ts
CHANGED
|
@@ -381,6 +381,25 @@ export type ContextWindowFact = {
|
|
|
381
381
|
source: string;
|
|
382
382
|
};
|
|
383
383
|
/** A context report names the evidence for its denominator instead of pretending every model fits. */
|
|
384
|
+
/**
|
|
385
|
+
* What the turn is waiting on, for the bracket after the elapsed time.
|
|
386
|
+
*
|
|
387
|
+
* Reasoning comes first once any has arrived. A reasoning chunk carries no reply text, so it
|
|
388
|
+
* counted as a frame "before content" and the line said "ollama is holding the line, no output
|
|
389
|
+
* yet" — with the thinking count tacked on after it — for the whole time the model was visibly
|
|
390
|
+
* thinking. Reported as: "koneck write 'ollama is holding the line, no output' yet the model is
|
|
391
|
+
* already thinking". Holding the line is for frames that carry nothing at all: a gateway's
|
|
392
|
+
* keep-alives. The browser already said "thinking" here.
|
|
393
|
+
*/
|
|
394
|
+
export declare function waitDetail(w: {
|
|
395
|
+
liveTokens: number;
|
|
396
|
+
tool: string | null;
|
|
397
|
+
provider: string;
|
|
398
|
+
frames: number;
|
|
399
|
+
elapsedMs: number;
|
|
400
|
+
thinkingChars: number;
|
|
401
|
+
thinkingRecent: boolean;
|
|
402
|
+
}): string;
|
|
384
403
|
export declare function contextStatusText(model: string, sessionPromptTokens: number, configuredLimit?: number, detected?: ContextWindowFact | null): string;
|
|
385
404
|
export declare function commandRunsWhileBusy(cmd: string, arg?: string): boolean;
|
|
386
405
|
export declare function commandNeedsArgument(cmd: string): boolean;
|
|
@@ -469,26 +488,30 @@ export declare function initialAltScreen(cfg: {
|
|
|
469
488
|
/**
|
|
470
489
|
* The live diff panel — the work as it happens, beside the conversation.
|
|
471
490
|
*
|
|
472
|
-
*
|
|
473
|
-
*
|
|
474
|
-
*
|
|
475
|
-
*
|
|
476
|
-
*
|
|
491
|
+
* Laid out the way Claude Code's is, which was the picture it was asked for with: the changed files
|
|
492
|
+
* listed at the top with their own counts, tests and generated files folded into one line, and
|
|
493
|
+
* below a rule the one file being read. Its changed lines sit on a band the whole width of the
|
|
494
|
+
* panel, and a line too long for it wraps, carrying its + or - onto each piece.
|
|
495
|
+
*
|
|
496
|
+
* It used to stack every file's diff in one column, so the fifteenth file was a scroll through
|
|
497
|
+
* fourteen others, and a long line was cut at the panel's edge. What is listed, in what order,
|
|
498
|
+
* what is folded and how a line wraps are decided in diff-layout.ts, which the browser's Changes
|
|
499
|
+
* view uses too.
|
|
500
|
+
*
|
|
501
|
+
* Alt+↑/↓ (or Alt+P/N, for Windows Terminal, which keeps Alt+arrows for its own panes) moves
|
|
502
|
+
* through the list, Alt+PgUp/PgDn and the wheel scroll the file, Alt+T opens the fold.
|
|
477
503
|
*/
|
|
478
|
-
export declare function DiffPanel({ files, width, height, activity, activityRows, scroll }: {
|
|
504
|
+
export declare function DiffPanel({ files, width, height, activity, activityRows, scroll, selected, showGenerated }: {
|
|
479
505
|
files: readonly FileDiff[];
|
|
480
506
|
width: number;
|
|
481
507
|
height: number;
|
|
482
508
|
activity?: React.ReactNode;
|
|
483
509
|
activityRows?: number;
|
|
484
|
-
/**
|
|
485
|
-
* How far back from the newest row the panel is looking.
|
|
486
|
-
*
|
|
487
|
-
* The panel scrolls independently of the conversation, which is the point of it being a
|
|
488
|
-
* panel: reading a diff should not mean losing your place in the transcript, and following
|
|
489
|
-
* the transcript should not drag the diff away from the hunk being read.
|
|
490
|
-
*/
|
|
510
|
+
/** How far into the selected file's diff the panel is looking, in rows. */
|
|
491
511
|
scroll?: number;
|
|
512
|
+
/** A position in the list as shown — see fileListView. */
|
|
513
|
+
selected?: number;
|
|
514
|
+
showGenerated?: boolean;
|
|
492
515
|
}): React.JSX.Element;
|
|
493
516
|
/**
|
|
494
517
|
* Exported for one reason: so a test can mount it.
|
package/dist/ink-chat.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ink-chat.d.ts","sourceRoot":"","sources":["../src/ink-chat.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AA8B3D,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAgCtE,OAAO,KAAK,EAAY,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"ink-chat.d.ts","sourceRoot":"","sources":["../src/ink-chat.tsx"],"names":[],"mappings":"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"}
|