koneck 2.128.24 → 2.128.26
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/ink-chat.d.ts +32 -1
- package/dist/ink-chat.d.ts.map +1 -1
- package/dist/ink-chat.js +109 -12
- package/dist/ink-chat.js.map +1 -1
- package/package.json +1 -1
package/dist/ink-chat.d.ts
CHANGED
|
@@ -133,6 +133,36 @@ export declare const WORD_HOLD_MS = 60000;
|
|
|
133
133
|
* appears frozen for seven seconds is worse than either.
|
|
134
134
|
*/
|
|
135
135
|
export declare const HEARTBEAT_MS = 1000;
|
|
136
|
+
/**
|
|
137
|
+
* Whether the terminal should report the wheel to KONECK, when nothing has been saved either way.
|
|
138
|
+
*
|
|
139
|
+
* Mouse tracking is a trade: a terminal sends mouse events to one place, so while KONECK has them
|
|
140
|
+
* the drag-select, the right-click menu and the middle-click paste all stop working. In ordinary
|
|
141
|
+
* scrollback that trade is a bad one — the terminal's own buffer already scrolls with the wheel,
|
|
142
|
+
* so turning it on loses selection and gains nothing. Hence opt-in.
|
|
143
|
+
*
|
|
144
|
+
* On the alternate screen there is nothing on the other side of the trade. The terminal has no
|
|
145
|
+
* scrollback there to scroll, and a selection does not survive the next repaint — both of which
|
|
146
|
+
* are already the stated reasons for avoiding the alternate screen where it is not needed. So the
|
|
147
|
+
* wheel does nothing at all unless KONECK asks for it, and "koneck does not scroll" is the whole
|
|
148
|
+
* of the experience: the transcript runs off the top and the obvious gesture is inert.
|
|
149
|
+
*
|
|
150
|
+
* So the default follows the screen. An explicit `mouse` in the config still wins, in both
|
|
151
|
+
* directions, and `/mouse off` is still there for anyone who wants the trade back.
|
|
152
|
+
*/
|
|
153
|
+
export declare function defaultMouseTracking(saved: boolean | undefined, altScreen: boolean): boolean;
|
|
154
|
+
/**
|
|
155
|
+
* Where a tool's file changes are drawn, if anywhere.
|
|
156
|
+
*
|
|
157
|
+
* Three states, because there were only ever two booleans and that is what made `/diff off`
|
|
158
|
+
* behave the way it did. `showDiffs` is whether the user wants to see changes at all;
|
|
159
|
+
* `hasFrame` is whether the alternate screen is on, which is the only place a pinned side panel
|
|
160
|
+
* can live. Closing the panel used to flip the second and leave the first, so the changes simply
|
|
161
|
+
* moved into the conversation — the same content, more of it, and no way to be rid of it.
|
|
162
|
+
*
|
|
163
|
+
* Naming the outcome makes the command honest about which of the three it just chose.
|
|
164
|
+
*/
|
|
165
|
+
export declare function diffPlacement(showDiffs: boolean, hasFrame: boolean): 'panel' | 'inline' | 'hidden';
|
|
136
166
|
/**
|
|
137
167
|
* Which spinner cell and shimmer column a turn is showing after this much work.
|
|
138
168
|
*
|
|
@@ -242,11 +272,12 @@ export declare function thinkingTail(text: string, lines: number, width: number)
|
|
|
242
272
|
* prompt asking for one put the key in the message box — on screen, and one keystroke from being
|
|
243
273
|
* sent to a model.
|
|
244
274
|
*/
|
|
245
|
-
export type PasteTarget = 'key-prompt' | 'composer' | 'drop';
|
|
275
|
+
export type PasteTarget = 'key-prompt' | 'add-provider' | 'composer' | 'drop';
|
|
246
276
|
export declare function pasteTarget(open: {
|
|
247
277
|
keyPrompt?: boolean;
|
|
248
278
|
picker?: boolean;
|
|
249
279
|
ask?: boolean;
|
|
280
|
+
addProvider?: boolean;
|
|
250
281
|
}): PasteTarget;
|
|
251
282
|
/** Bytes as a person reads them, for a session listing. */
|
|
252
283
|
export declare function humanBytes(bytes: number): string;
|
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":"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
|
|
1
|
+
{"version":3,"file":"ink-chat.d.ts","sourceRoot":"","sources":["../src/ink-chat.tsx"],"names":[],"mappings":"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"}
|
package/dist/ink-chat.js
CHANGED
|
@@ -502,6 +502,42 @@ export const WORD_HOLD_MS = 60_000;
|
|
|
502
502
|
* appears frozen for seven seconds is worse than either.
|
|
503
503
|
*/
|
|
504
504
|
export const HEARTBEAT_MS = 1_000;
|
|
505
|
+
/**
|
|
506
|
+
* Whether the terminal should report the wheel to KONECK, when nothing has been saved either way.
|
|
507
|
+
*
|
|
508
|
+
* Mouse tracking is a trade: a terminal sends mouse events to one place, so while KONECK has them
|
|
509
|
+
* the drag-select, the right-click menu and the middle-click paste all stop working. In ordinary
|
|
510
|
+
* scrollback that trade is a bad one — the terminal's own buffer already scrolls with the wheel,
|
|
511
|
+
* so turning it on loses selection and gains nothing. Hence opt-in.
|
|
512
|
+
*
|
|
513
|
+
* On the alternate screen there is nothing on the other side of the trade. The terminal has no
|
|
514
|
+
* scrollback there to scroll, and a selection does not survive the next repaint — both of which
|
|
515
|
+
* are already the stated reasons for avoiding the alternate screen where it is not needed. So the
|
|
516
|
+
* wheel does nothing at all unless KONECK asks for it, and "koneck does not scroll" is the whole
|
|
517
|
+
* of the experience: the transcript runs off the top and the obvious gesture is inert.
|
|
518
|
+
*
|
|
519
|
+
* So the default follows the screen. An explicit `mouse` in the config still wins, in both
|
|
520
|
+
* directions, and `/mouse off` is still there for anyone who wants the trade back.
|
|
521
|
+
*/
|
|
522
|
+
export function defaultMouseTracking(saved, altScreen) {
|
|
523
|
+
return saved ?? altScreen;
|
|
524
|
+
}
|
|
525
|
+
/**
|
|
526
|
+
* Where a tool's file changes are drawn, if anywhere.
|
|
527
|
+
*
|
|
528
|
+
* Three states, because there were only ever two booleans and that is what made `/diff off`
|
|
529
|
+
* behave the way it did. `showDiffs` is whether the user wants to see changes at all;
|
|
530
|
+
* `hasFrame` is whether the alternate screen is on, which is the only place a pinned side panel
|
|
531
|
+
* can live. Closing the panel used to flip the second and leave the first, so the changes simply
|
|
532
|
+
* moved into the conversation — the same content, more of it, and no way to be rid of it.
|
|
533
|
+
*
|
|
534
|
+
* Naming the outcome makes the command honest about which of the three it just chose.
|
|
535
|
+
*/
|
|
536
|
+
export function diffPlacement(showDiffs, hasFrame) {
|
|
537
|
+
if (!showDiffs)
|
|
538
|
+
return 'hidden';
|
|
539
|
+
return hasFrame ? 'panel' : 'inline';
|
|
540
|
+
}
|
|
505
541
|
/**
|
|
506
542
|
* Which spinner cell and shimmer column a turn is showing after this much work.
|
|
507
543
|
*
|
|
@@ -846,6 +882,20 @@ export function thinkingTail(text, lines, width) {
|
|
|
846
882
|
export function pasteTarget(open) {
|
|
847
883
|
if (open.keyPrompt)
|
|
848
884
|
return 'key-prompt';
|
|
885
|
+
/*
|
|
886
|
+
* The endpoint prompt takes a paste for the same reason the key prompt does.
|
|
887
|
+
*
|
|
888
|
+
* It was missing from this list, so a paste made the way a terminal makes one — right-click,
|
|
889
|
+
* Ctrl+Shift+V, middle-click — fell through to the composer and was typed into a draft hidden
|
|
890
|
+
* behind the prompt. Ctrl+V worked, because that is read from the clipboard by hand in the
|
|
891
|
+
* prompt's own key handler, which is exactly why the two disagreed and why it looked as though
|
|
892
|
+
* the field simply refused to accept a paste.
|
|
893
|
+
*
|
|
894
|
+
* A URL is the last thing anyone should be retyping: it is long, it is exact, and it has
|
|
895
|
+
* almost always just been copied out of a browser.
|
|
896
|
+
*/
|
|
897
|
+
if (open.addProvider)
|
|
898
|
+
return 'add-provider';
|
|
849
899
|
// A picker and a permission question both take single keys. A pasted blob is not an answer to
|
|
850
900
|
// either, and answering something nobody chose is worse than ignoring it.
|
|
851
901
|
if (open.picker || open.ask)
|
|
@@ -1972,7 +2022,7 @@ export function App({ config: initialConfig, clearFrame, synchronizedFrames = fa
|
|
|
1972
2022
|
*
|
|
1973
2023
|
* So: the wheel is the thing you opt into, not the thing you lose.
|
|
1974
2024
|
*/
|
|
1975
|
-
const [mouse, setMouse] = useState(cfg.mouse
|
|
2025
|
+
const [mouse, setMouse] = useState(() => defaultMouseTracking(cfg.mouse, altScreen));
|
|
1976
2026
|
/*
|
|
1977
2027
|
* Whether the working animation runs at all.
|
|
1978
2028
|
*
|
|
@@ -2516,6 +2566,15 @@ export function App({ config: initialConfig, clearFrame, synchronizedFrames = fa
|
|
|
2516
2566
|
const syncedFramesRef = useRef(synchronizedFrames);
|
|
2517
2567
|
/** Whether the diff panel is showing, so the transcript does not draw the same diff again. */
|
|
2518
2568
|
const diffPanelOpenRef = useRef(false);
|
|
2569
|
+
/**
|
|
2570
|
+
* Whether file changes are shown at all, panel or no panel.
|
|
2571
|
+
*
|
|
2572
|
+
* Separate from `diffPanelOpenRef`, which only says *where* they are drawn. `/diff off` used to
|
|
2573
|
+
* set the second and not the first, so it closed the side panel and the diffs reappeared inline
|
|
2574
|
+
* in the conversation — the same content, more of it, and no way to get rid of it. Reported as
|
|
2575
|
+
* "why /diff isn't closing ... but it's not closing", which was accurate: nothing had closed.
|
|
2576
|
+
*/
|
|
2577
|
+
const showDiffsRef = useRef(true);
|
|
2519
2578
|
/** When a key was last pressed. The animation stands down while somebody is typing. */
|
|
2520
2579
|
const lastKeyAtRef = useRef(0);
|
|
2521
2580
|
const wordTimer = useRef(0);
|
|
@@ -4159,11 +4218,22 @@ export function App({ config: initialConfig, clearFrame, synchronizedFrames = fa
|
|
|
4159
4218
|
setStored(saved);
|
|
4160
4219
|
setAltScreen(next);
|
|
4161
4220
|
setScrollBack(0);
|
|
4221
|
+
// The wheel follows the screen unless somebody has said otherwise. Switching to a screen
|
|
4222
|
+
// with no scrollback of its own and leaving the wheel inert is how "koneck does not
|
|
4223
|
+
// scroll" happens; see defaultMouseTracking.
|
|
4224
|
+
const wheel = defaultMouseTracking(cfg.mouse, next);
|
|
4225
|
+
if (cfg.mouse === undefined)
|
|
4226
|
+
setMouse(wheel);
|
|
4162
4227
|
addSystem(next
|
|
4163
|
-
? 'Alt-screen on: the prompt sits on the last row and nothing scrolls past it. '
|
|
4164
|
-
'Your terminal\'s own scrollback is not available here —
|
|
4165
|
-
|
|
4166
|
-
|
|
4228
|
+
? 'Alt-screen on: the prompt sits on the last row and nothing scrolls past it. '
|
|
4229
|
+
+ 'Your terminal\'s own scrollback is not available here — '
|
|
4230
|
+
+ (wheel
|
|
4231
|
+
? 'the wheel scrolls the transcript instead, and PageUp/PageDown work too. '
|
|
4232
|
+
+ 'Selecting text needs Shift held while the wheel is ours; `/mouse off` gives it back. '
|
|
4233
|
+
: 'use PageUp/PageDown, or `/mouse on` for the wheel. ')
|
|
4234
|
+
+ 'Typing returns you to the newest. Saved as your default; /altscreen off to leave.'
|
|
4235
|
+
: 'Alt-screen off: back to writing into the terminal\'s own scrollback, which the wheel '
|
|
4236
|
+
+ 'and mouse selection both work in as usual. Saved as your default.');
|
|
4167
4237
|
return;
|
|
4168
4238
|
}
|
|
4169
4239
|
case '/thinking': {
|
|
@@ -4235,7 +4305,16 @@ export function App({ config: initialConfig, clearFrame, synchronizedFrames = fa
|
|
|
4235
4305
|
const want = panel !== 'off';
|
|
4236
4306
|
setShowDiffPanel(want);
|
|
4237
4307
|
diffPanelTouchedRef.current = true;
|
|
4238
|
-
|
|
4308
|
+
/*
|
|
4309
|
+
* The side panel needs a fixed frame, and `altScreen: false` is a decision.
|
|
4310
|
+
*
|
|
4311
|
+
* This used to switch the alternate screen on regardless, which is the same override that
|
|
4312
|
+
* was removed from startup for the same reason: it is the expensive path, and somebody who
|
|
4313
|
+
* turned it off had already said so. Where it is off, the changes are drawn inline in the
|
|
4314
|
+
* conversation instead — which is where they were before the panel existed.
|
|
4315
|
+
*/
|
|
4316
|
+
const canPin = cfg.altScreen !== false;
|
|
4317
|
+
if (want && canPin && !altScreen)
|
|
4239
4318
|
setAltScreen(true);
|
|
4240
4319
|
if (!want && !(cfg.altScreen ?? false)
|
|
4241
4320
|
&& !defaultAltScreen(process.stdout, process.env, syncedFramesRef.current)) {
|
|
@@ -4244,9 +4323,15 @@ export function App({ config: initialConfig, clearFrame, synchronizedFrames = fa
|
|
|
4244
4323
|
const saved = { ...(await loadKoneckConfig()), diffPanel: want };
|
|
4245
4324
|
await saveKoneckConfig(saved);
|
|
4246
4325
|
setStored(saved);
|
|
4247
|
-
|
|
4248
|
-
|
|
4249
|
-
|
|
4326
|
+
// Says what actually happened. Announcing a pinned panel while `altScreen: false` quietly
|
|
4327
|
+
// prevented one from existing is how "/diff isn't closing" became impossible to act on.
|
|
4328
|
+
addSystem(!want
|
|
4329
|
+
? 'File changes hidden. Edits are still listed with what they touched, just not shown.'
|
|
4330
|
+
: canPin
|
|
4331
|
+
? 'Live diff panel open and pinned beside the conversation, until `/diff off`.'
|
|
4332
|
+
: 'File changes shown inline in the conversation, until `/diff off`.\n\n'
|
|
4333
|
+
+ 'The side panel needs the alternate screen, which is off for this workspace. '
|
|
4334
|
+
+ '`/altscreen on` moves them into a pinned panel instead.');
|
|
4250
4335
|
return;
|
|
4251
4336
|
}
|
|
4252
4337
|
case '/changes': {
|
|
@@ -4964,9 +5049,18 @@ export function App({ config: initialConfig, clearFrame, synchronizedFrames = fa
|
|
|
4964
5049
|
const clean = text.replace(/\r\n?/g, '\n');
|
|
4965
5050
|
const lines = clean.split('\n').length;
|
|
4966
5051
|
// Whatever owns the keyboard gets the paste.
|
|
4967
|
-
const target = pasteTarget({ keyPrompt: Boolean(keyPrompt), picker: Boolean(picker),
|
|
5052
|
+
const target = pasteTarget({ keyPrompt: Boolean(keyPrompt), picker: Boolean(picker),
|
|
5053
|
+
ask: Boolean(ask), addProvider: Boolean(addProv) });
|
|
4968
5054
|
if (target === 'drop')
|
|
4969
5055
|
return;
|
|
5056
|
+
if (target === 'add-provider') {
|
|
5057
|
+
// One line, trimmed: an endpoint copied from an address bar arrives with a newline on it,
|
|
5058
|
+
// and that newline is not part of the URL.
|
|
5059
|
+
const one = cleanPastedSecret(clean.split('\n')[0] ?? '');
|
|
5060
|
+
if (one !== '')
|
|
5061
|
+
setAddProv(p => (p ? { ...p, value: p.value + one, error: undefined } : p));
|
|
5062
|
+
return;
|
|
5063
|
+
}
|
|
4970
5064
|
if (target === 'key-prompt') {
|
|
4971
5065
|
// A key pasted from a manager often carries a trailing newline; it is not part of the key.
|
|
4972
5066
|
setKeyPrompt(p => (p ? { ...p, value: p.value + clean.replace(/\s+$/, '') } : p));
|
|
@@ -5860,6 +5954,7 @@ export function App({ config: initialConfig, clearFrame, synchronizedFrames = fa
|
|
|
5860
5954
|
// Read by renderStep, which is defined above this line, so it goes through a ref rather than
|
|
5861
5955
|
// depending on declaration order.
|
|
5862
5956
|
diffPanelOpenRef.current = diffPanelOpen;
|
|
5957
|
+
showDiffsRef.current = showDiffPanel;
|
|
5863
5958
|
const diffPanelWidth = sidePanelOpen
|
|
5864
5959
|
? Math.max(34, Math.min(Math.floor(uiWidth * 0.46), 96))
|
|
5865
5960
|
: 0;
|
|
@@ -5955,7 +6050,7 @@ export function App({ config: initialConfig, clearFrame, synchronizedFrames = fa
|
|
|
5955
6050
|
const ms = (step.endedAt ?? Date.now()) - step.startedAt;
|
|
5956
6051
|
const glyph = running ? SPINNER[spinFrame] : step.ok === false ? G.fail : G.ok;
|
|
5957
6052
|
const color = running ? AMBER : step.ok === false ? CRIMSON : GREEN;
|
|
5958
|
-
return (_jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Box, { gap: 1, children: [_jsx(Text, { color: color, children: glyph }), _jsx(Text, { color: AMBER, bold: true, children: step.name }), _jsx(Text, { color: DIM, children: "\u00B7" }), _jsx(Text, { color: MUTED, children: fmtElapsed(ms) })] }), step.detail !== '' && (step.diffs ?? []).length === 0 && (_jsxs(Box, { paddingLeft: 2, gap: 1, children: [_jsx(Text, { color: DIM, children: "\u2514" }), _jsx(Text, { color: MUTED, children: step.detail })] })), step.ok === false && step.error && (_jsxs(Box, { paddingLeft: 2, gap: 1, children: [_jsx(Text, { color: DIM, children: "\u2514" }), _jsx(Text, { color: CRIMSON, children: fitCells(step.error, Math.max(20, barWidth - 6)) })] })), running && step.output && (_jsx(Box, { paddingLeft: 4, children: _jsx(Text, { color: DIM, children: fitCells(step.output, Math.max(20, barWidth - 6)) }) })),
|
|
6053
|
+
return (_jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Box, { gap: 1, children: [_jsx(Text, { color: color, children: glyph }), _jsx(Text, { color: AMBER, bold: true, children: step.name }), _jsx(Text, { color: DIM, children: "\u00B7" }), _jsx(Text, { color: MUTED, children: fmtElapsed(ms) })] }), step.detail !== '' && (step.diffs ?? []).length === 0 && (_jsxs(Box, { paddingLeft: 2, gap: 1, children: [_jsx(Text, { color: DIM, children: "\u2514" }), _jsx(Text, { color: MUTED, children: step.detail })] })), step.ok === false && step.error && (_jsxs(Box, { paddingLeft: 2, gap: 1, children: [_jsx(Text, { color: DIM, children: "\u2514" }), _jsx(Text, { color: CRIMSON, children: fitCells(step.error, Math.max(20, barWidth - 6)) })] })), running && step.output && (_jsx(Box, { paddingLeft: 4, children: _jsx(Text, { color: DIM, children: fitCells(step.output, Math.max(20, barWidth - 6)) }) })), diffPlacement(showDiffsRef.current, diffPanelOpenRef.current) === 'inline' && (running
|
|
5959
6054
|
/*
|
|
5960
6055
|
* While the tool is still working this is a preview, and it has to stay small.
|
|
5961
6056
|
*
|
|
@@ -5977,7 +6072,9 @@ export function App({ config: initialConfig, clearFrame, synchronizedFrames = fa
|
|
|
5977
6072
|
* by <Static> in inline mode, and re-rendered every frame inside a clipped viewport in
|
|
5978
6073
|
* alt-screen mode. Two copies of this markup would drift apart within a release.
|
|
5979
6074
|
*/
|
|
5980
|
-
const renderRow = (row, index) => (row.role === 'header' ? (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "column", alignItems: "center", marginTop: 1, marginBottom: 1, children: [logoFor(uiWidth, G.ascii).map((line, i) => (_jsx(Text, { color: CYAN, bold: true, children: line }, i))), _jsx(Text, { color: CYAN, bold: true, children: "KONECK / SOFTWARE DELIVERY SYSTEM" }), _jsx(Text, { color: MUTED, children: "Deliberate engineering, with control at every change." }), altScreen && (_jsx(Text, { color: DIM, children:
|
|
6075
|
+
const renderRow = (row, index) => (row.role === 'header' ? (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "column", alignItems: "center", marginTop: 1, marginBottom: 1, children: [logoFor(uiWidth, G.ascii).map((line, i) => (_jsx(Text, { color: CYAN, bold: true, children: line }, i))), _jsx(Text, { color: CYAN, bold: true, children: "KONECK / SOFTWARE DELIVERY SYSTEM" }), _jsx(Text, { color: MUTED, children: "Deliberate engineering, with control at every change." }), altScreen && (_jsx(Text, { color: DIM, children: mouse
|
|
6076
|
+
? `Wheel and PageUp scroll · shift-drag to select · /altscreen off for the terminal's own scrollback`
|
|
6077
|
+
: `PageUp scrolls · /mouse on for the wheel · /altscreen off for the terminal's own scrollback` }))] }), _jsx(Panel, { width: barWidth, color: CYAN, title: "KONECK", children: [`MODEL: \`${modelShort}\` PROVIDER: \`${cfg.provider}\` WORKSPACE: \`${workspace}\``] })] }, index)) : row.role === 'user' ? (
|
|
5981
6078
|
// Painted as a filled bar so the user's own words are the most findable thing
|
|
5982
6079
|
// on screen when scrolling back through a long session.
|
|
5983
6080
|
_jsx(Box, { marginTop: 1, flexDirection: "column", children: wrapPreserving(row.text ?? '', barWidth - 2).map((line, li) => (_jsx(Text, { backgroundColor: USER_BG, color: USER_FG, bold: li === 0, children: (li === 0 ? `${G.caret} ` : ' ') + fitCells(line, barWidth - 2) }, li))) }, index)) : row.role === 'plan' ? (() => {
|