koneck 2.128.50 → 2.128.52

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":"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
@@ -18,7 +18,7 @@ import { ImageDraft, pastedImagePath } from './image-draft.js';
18
18
  import { readClipboard, readClipboardImage, startSelectionCopy, cleanPastedSecret, copyViaTerminal } from './clipboard.js';
19
19
  import { paceFrom } from './pace.js';
20
20
  import { policyFrom, FAILOVER_OFF } from './failover.js';
21
- import { listCheckpoints, revertCheckpoint, previewCheckpoint, snapshotTree, filesTouchedBy, createWorkspaceCheckpoint, checkpointScope } from './checkpoint.js';
21
+ import { listCheckpoints, revertCheckpoint, previewCheckpoint, createWorkspaceCheckpoint, checkpointScope } from './checkpoint.js';
22
22
  import { fileDiff, diffSummary } from './diff-view.js';
23
23
  import { tokenizeLine, spanLangFor } from './highlight-spans.js';
24
24
  import { setTerminalTitle } from './terminal-title.js';
@@ -27,7 +27,7 @@ import { attachReferences, linesIn } from './mention-resolve.js';
27
27
  import { rankMentions, describeCandidates, rowDetail } from './web/mention.js';
28
28
  import { gatherSignals } from './web/mention-signals.js';
29
29
  import { isSlashCommand, findMentions, shortenMentions } from './mentions.js';
30
- import { bar, humanTokens, humanDuration, diffStatSince, contextWindowFor, recordStatus, classifyResponse, stateLabel, readModelStatus, computeUiWidth, } from './usage.js';
30
+ import { bar, humanTokens, humanDuration, contextWindowFor, recordStatus, classifyResponse, stateLabel, readModelStatus, computeUiWidth, } from './usage.js';
31
31
  import { Markdown, Panel, panelWidth, safeCommitPoint, displayWidth, sliceToWidth } from './markdown-ink.js';
32
32
  import { G } from './glyphs.js';
33
33
  import { fetchUpdateStatus, updateCommand } from './update-check.js';
@@ -50,6 +50,7 @@ import { MODES as MODE_SPECS, modeSpec, decide, loadRules, saveRules, addRule, c
50
50
  import { AskQueue } from './ask-queue.js';
51
51
  import { contextLimitWithSource } from './context-limit.js';
52
52
  import { planSummary } from './plan.js';
53
+ import { SessionChanges, readForDiff as readForDiffAt, totalsOf } from './session-changes.js';
53
54
  import os from 'node:os';
54
55
  import { modeLine, nextMode, statusFacts, barCells, PLACEHOLDER } from './status-line.js';
55
56
  import { savePlan, plansDir, PLAN_CHOICES, PROCEED_PROMPT } from './plan-file.js';
@@ -790,9 +791,7 @@ export function expandPastes(draft, pastes) {
790
791
  });
791
792
  }
792
793
  /** Past this, a file is not read for diffing — the render would be useless anyway. */
793
- const MAX_DIFF_BYTES = 512 * 1024;
794
794
  /** One tool rarely touches more; the cap stops a bulk move from flooding scrollback. */
795
- const MAX_DIFF_FILES = 4;
796
795
  /*
797
796
  * How many changed lines the side panel draws per file.
798
797
  *
@@ -1854,7 +1853,8 @@ export function App({ config: initialConfig, clearFrame, synchronizedFrames = fa
1854
1853
  * and the diff still runs from the state it was in before the first edit, which is the change the
1855
1854
  * person actually wants to review.
1856
1855
  */
1857
- const diffBaseRef = useRef(new Map());
1856
+ // The record, shared with the web session so the two count changes identically.
1857
+ const changesRef = useRef(new SessionChanges(() => cfgRef.current.cwd));
1858
1858
  const [liveDiffs, setLiveDiffs] = useState([]);
1859
1859
  const charsRef = useRef(0); // streamed chars, for the live token estimate
1860
1860
  const realTokRef = useRef(0); // real output tokens this turn, once the provider reports usage
@@ -1907,15 +1907,7 @@ export function App({ config: initialConfig, clearFrame, synchronizedFrames = fa
1907
1907
  * would race the very write it is trying to photograph.
1908
1908
  */
1909
1909
  function readForDiff(rel) {
1910
- try {
1911
- const abs = path.resolve(cfg.cwd, rel);
1912
- if (statSync(abs).size > MAX_DIFF_BYTES)
1913
- return null;
1914
- return readFileSync(abs, 'utf-8');
1915
- }
1916
- catch {
1917
- return null; // absent: a creation, which fileDiff renders as such
1918
- }
1910
+ return readForDiffAt(cfg.cwd, rel);
1919
1911
  }
1920
1912
  /** What a path is, or null if it is not there. Synchronous: a prompt is submitted in one go. */
1921
1913
  function pathKind(absolute) {
@@ -1931,13 +1923,8 @@ export function App({ config: initialConfig, clearFrame, synchronizedFrames = fa
1931
1923
  commitSay();
1932
1924
  // Photograph every file this tool has announced it will touch, before it touches it.
1933
1925
  turnToolsRef.current += 1;
1934
- pendingDiffRef.current = filesTouchedBy(name, args).slice(0, MAX_DIFF_FILES)
1935
- .map(rel => ({ rel, before: readForDiff(rel) }));
1936
- // The session baseline: first touch only, so repeated edits still diff from the original.
1937
- for (const { rel, before } of pendingDiffRef.current) {
1938
- if (!diffBaseRef.current.has(rel))
1939
- diffBaseRef.current.set(rel, before);
1940
- }
1926
+ // This call's befores, and the session's first-touch baseline, in one step: see session-changes.ts.
1927
+ pendingDiffRef.current = changesRef.current.before(name, args);
1941
1928
  liveToolRef.current = { kind: 'tool', name, detail: toolDetail(name, args), startedAt: Date.now() };
1942
1929
  setRepaint(v => v + 1);
1943
1930
  }
@@ -1969,13 +1956,8 @@ export function App({ config: initialConfig, clearFrame, synchronizedFrames = fa
1969
1956
  * formatter, the model reverting itself — can change a file this one had finished with. Disk is
1970
1957
  * the truth about what the change currently is.
1971
1958
  */
1972
- if (diffBaseRef.current.size) {
1973
- const all = [];
1974
- for (const [rel, before] of diffBaseRef.current) {
1975
- const d = fileDiff(rel, before, readForDiff(rel), { maxLines: PANEL_DIFF_LINES });
1976
- if (!d.unchanged)
1977
- all.push(d);
1978
- }
1959
+ if (changesRef.current.size) {
1960
+ const all = changesRef.current.diffs(PANEL_DIFF_LINES);
1979
1961
  setLiveDiffs(all);
1980
1962
  /*
1981
1963
  * Open itself on the session's first change, once, unless the person has already decided.
@@ -2102,9 +2084,6 @@ export function App({ config: initialConfig, clearFrame, synchronizedFrames = fa
2102
2084
  },
2103
2085
  onToolResult: (name, ok, ms, detail) => {
2104
2086
  finishTool(name, ok, ms, detail);
2105
- // A file just changed, so the footer's +added −removed has too.
2106
- if (ok && FILE_WRITING_TOOLS.has(name))
2107
- refreshDelta();
2108
2087
  },
2109
2088
  onToolOutput: (_name, line) => {
2110
2089
  // Written to the ref rather than to state: a dev server logs a request every second or two,
@@ -2565,10 +2544,21 @@ export function App({ config: initialConfig, clearFrame, synchronizedFrames = fa
2565
2544
  if (!process.stdout.isTTY)
2566
2545
  return;
2567
2546
  if (altScreen) {
2568
- process.stdout.write('\u001b[?1049h\u001b[H'); // enter, and home the cursor
2547
+ /*
2548
+ * Enter, home the cursor, and ask for the wheel as arrow keys.
2549
+ *
2550
+ * ?1007 is "alternate scroll": in the alternate screen, the terminal turns wheel movement
2551
+ * into Up and Down, without handing KONECK the mouse. So the wheel can scroll the
2552
+ * conversation while a drag still selects text the ordinary way — the two things asked for,
2553
+ * "i can't scroll" and "select must happen on mouse like selecting in a document", which
2554
+ * mouse tracking could only offer one at a time. VTE does this unasked; xterm and Windows
2555
+ * Terminal need it requested. With mouse tracking on, the terminal sends mouse reports
2556
+ * instead and this is ignored, so it is safe to leave set.
2557
+ */
2558
+ process.stdout.write('\u001b[?1049h\u001b[H\u001b[?1007h');
2569
2559
  clearFrame?.();
2570
2560
  setRepaint(n => n + 1);
2571
- return () => { process.stdout.write('\u001b[?1049l'); };
2561
+ return () => { process.stdout.write('\u001b[?1007l\u001b[?1049l'); };
2572
2562
  }
2573
2563
  // Leaving it is the same problem in reverse: the ordinary screen still holds whatever was
2574
2564
  // there before, and Ink's idea of what it drew belongs to the buffer just abandoned.
@@ -2589,7 +2579,7 @@ export function App({ config: initialConfig, clearFrame, synchronizedFrames = fa
2589
2579
  useEffect(() => {
2590
2580
  const leave = () => {
2591
2581
  if (process.stdout.isTTY)
2592
- process.stdout.write('\u001b[?1049l');
2582
+ process.stdout.write('\u001b[?1007l\u001b[?1049l');
2593
2583
  };
2594
2584
  const signals = ['SIGINT', 'SIGTERM', 'SIGHUP'];
2595
2585
  const onSignal = (signal) => () => {
@@ -2775,8 +2765,6 @@ export function App({ config: initialConfig, clearFrame, synchronizedFrames = fa
2775
2765
  // thinking, and the gap between the two is where local tool work lives.
2776
2766
  const sessionStartRef = useRef(Date.now());
2777
2767
  const apiMsRef = useRef(0);
2778
- /** Tree hash captured at startup, so "code changes" is a diff rather than a running tally. */
2779
- const baseTreeRef = useRef(null);
2780
2768
  const [usagePane, setUsagePane] = useState(null);
2781
2769
  /** Which setting is highlighted on the Settings tab. */
2782
2770
  const [settingRow, setSettingRow] = useState(0);
@@ -2784,9 +2772,6 @@ export function App({ config: initialConfig, clearFrame, synchronizedFrames = fa
2784
2772
  const [stored, setStored] = useState({});
2785
2773
  /** Non-null while a value is being typed rather than stepped. */
2786
2774
  const [editing, setEditing] = useState(null);
2787
- // undefined while the diff is still being computed, null once git has said there is nothing to
2788
- // compare against. Collapsing the two would flash "not a git repo" at every open.
2789
- const [usageDiff, setUsageDiff] = useState(undefined);
2790
2775
  const [modelCatalog, setModelCatalog] = useState([]);
2791
2776
  /** Why the last listing came back empty, so the pane can say which rather than guess. */
2792
2777
  const catalogNote = useRef(null);
@@ -3256,46 +3241,15 @@ export function App({ config: initialConfig, clearFrame, synchronizedFrames = fa
3256
3241
  process.on('exit', off);
3257
3242
  return () => { off(); process.off('exit', off); };
3258
3243
  }, []);
3259
- // The tree as it stood before the session touched anything. Recorded once, so "code changes"
3260
- // stays a comparison against the starting point however long the session runs.
3261
- useEffect(() => {
3262
- void snapshotTree(cfg.cwd).then(t => {
3263
- baseTreeRef.current = t;
3264
- // Nothing has changed yet at the moment of the snapshot; outside git there is nothing to count.
3265
- setUsageDiff(t ? { added: 0, removed: 0, files: 0 } : null);
3266
- });
3267
- }, [cfg.cwd]);
3268
3244
  /*
3269
- * The footer's +added −removed, refreshed when files may have changed rather than on a timer.
3245
+ * No startup snapshot of the tree any more.
3270
3246
  *
3271
- * diffStatSince snapshots the tree and diffs it, which is not free in a large repository, so a
3272
- * burst of edits costs two refreshes rather than one each: the first runs at once, and anything
3273
- * in the next few seconds is folded into a single one at the end of that window.
3247
+ * It existed to count "code changes" with git, and cost a full snapshot of the workspace at every
3248
+ * start — 20.6 seconds on a workspace git had not been told about, which then marked it too slow
3249
+ * to snapshot, so every later count came back empty and the footer read "+0 -0" for the whole
3250
+ * session while the diff panel beside it read "+99 -64". The count comes from the panel's own
3251
+ * record now (session-changes.ts), which needs no git and cannot disagree with the panel.
3274
3252
  */
3275
- const deltaTimerRef = useRef(null);
3276
- const deltaLastRef = useRef(0);
3277
- function refreshDelta() {
3278
- const run = () => {
3279
- deltaLastRef.current = Date.now();
3280
- // A refresh that comes back empty keeps the last figure: git can refuse a snapshot while
3281
- // another is writing its index, and a transient refusal is not "outside a repository" —
3282
- // that is decided once, by the snapshot taken at startup.
3283
- void diffStatSince(cfgRef.current.cwd, baseTreeRef.current)
3284
- .then(d => { if (d)
3285
- setUsageDiff(d); })
3286
- .catch(() => { });
3287
- };
3288
- const wait = 4_000 - (Date.now() - deltaLastRef.current);
3289
- if (wait <= 0) {
3290
- run();
3291
- return;
3292
- }
3293
- if (deltaTimerRef.current)
3294
- return;
3295
- deltaTimerRef.current = setTimeout(() => { deltaTimerRef.current = null; run(); }, wait);
3296
- }
3297
- useEffect(() => () => { if (deltaTimerRef.current)
3298
- clearTimeout(deltaTimerRef.current); }, []);
3299
3253
  // A new model is a new window, and a figure measured against the old one would mislead.
3300
3254
  useEffect(() => { setCtxFill(null); }, [cfg.model, cfg.provider]);
3301
3255
  const addRow = (row) => setRows(prev => [...prev, row]);
@@ -3656,7 +3610,6 @@ export function App({ config: initialConfig, clearFrame, synchronizedFrames = fa
3656
3610
  setUsagePane(tab);
3657
3611
  setEditing(null);
3658
3612
  void loadKoneckConfig().then(c => setStored(c));
3659
- void diffStatSince(cfg.cwd, baseTreeRef.current).then(setUsageDiff);
3660
3613
  if (modelCatalog.length === 0)
3661
3614
  void loadModelCatalog();
3662
3615
  }
@@ -5879,6 +5832,18 @@ export function App({ config: initialConfig, clearFrame, synchronizedFrames = fa
5879
5832
  setScrollBack(v => Math.max(0, v - section));
5880
5833
  return;
5881
5834
  }
5835
+ /*
5836
+ * And a page at a time with Alt+PgUp/PgDn.
5837
+ *
5838
+ * Windows Terminal binds Alt+arrows to moving between its own panes, so on some setups the
5839
+ * one key the panel scrolled with never reached KONECK — "in the live diff panel, i can't
5840
+ * scroll". Alt with the page keys is bound to nothing there.
5841
+ */
5842
+ if (key.meta && (key.pageUp || key.pageDown)) {
5843
+ const pageLines = Math.max(3, termRows - 8);
5844
+ setPanelScroll(v => Math.max(0, Math.min(2_000, v + (key.pageUp ? -pageLines : pageLines))));
5845
+ return;
5846
+ }
5882
5847
  if (key.pageUp) {
5883
5848
  setScrollBack(v => Math.min(rows.length - 1, v + page));
5884
5849
  return;
@@ -6376,8 +6341,23 @@ export function App({ config: initialConfig, clearFrame, synchronizedFrames = fa
6376
6341
  */
6377
6342
  if (key.upArrow || key.downArrow) {
6378
6343
  const moved = caretRowMove(draft, caret, composerTextWidth, key.upArrow ? -1 : 1);
6379
- if (moved === null)
6380
- return; // one row: nothing above or below to go to
6344
+ if (moved === null) {
6345
+ /*
6346
+ * Nowhere for the caret to go, so on the alternate screen the arrow scrolls instead.
6347
+ *
6348
+ * This is what the wheel arrives as there (see ?1007 where the screen is entered), and it
6349
+ * was being thrown away — an empty or one-line input has no row to move to, so the wheel
6350
+ * did nothing at all. Reported as "in the main conversation i can't scroll". A draft of
6351
+ * several rows still gets its caret moved first, which is what the arrows are for.
6352
+ */
6353
+ if (altScreen && !key.shift) {
6354
+ if (key.upArrow)
6355
+ setScrollBack(v => Math.min(Math.max(0, rows.length - 1), v + 1));
6356
+ else
6357
+ setScrollBack(v => Math.max(0, v - 1));
6358
+ }
6359
+ return;
6360
+ }
6381
6361
  if (key.shift) {
6382
6362
  if (selAnchor === null)
6383
6363
  setSelAnchor(caret);
@@ -6703,7 +6683,6 @@ export function App({ config: initialConfig, clearFrame, synchronizedFrames = fa
6703
6683
  // whichever of those three happened last, which for anyone who closes the terminal
6704
6684
  // normally was an old snapshot — the reported "always resumes the old one".
6705
6685
  void doSave().catch(() => { });
6706
- refreshDelta();
6707
6686
  // A run that stopped short says so, rather than letting the footer imply it finished.
6708
6687
  if (incompleteRef.current) {
6709
6688
  addSystem(incompleteRef.current);
@@ -6745,7 +6724,6 @@ export function App({ config: initialConfig, clearFrame, synchronizedFrames = fa
6745
6724
  liveToolRef.current = null;
6746
6725
  flushAgents();
6747
6726
  void doSave().catch(() => { });
6748
- refreshDelta();
6749
6727
  setRows(prev => [
6750
6728
  ...prev,
6751
6729
  ...(trailing ? [{ role: 'steps', steps: [{ kind: 'say', text: trailing }] }] : []),
@@ -6940,7 +6918,7 @@ export function App({ config: initialConfig, clearFrame, synchronizedFrames = fa
6940
6918
  */
6941
6919
  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
6942
6920
  ? `Wheel and PageUp scroll · shift-drag to select · /altscreen off for the terminal's own scrollback`
6943
- : `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' ? (
6921
+ : `Wheel, ↑↓ or PgUp scroll · Alt+↑↓ or Alt+PgUp scroll the diff panel · /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' ? (
6944
6922
  // Painted as a filled bar so the user's own words are the most findable thing
6945
6923
  // on screen when scrolling back through a long session.
6946
6924
  _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' ? (() => {
@@ -7268,9 +7246,10 @@ export function App({ config: initialConfig, clearFrame, synchronizedFrames = fa
7268
7246
  lines.push(`Duration (API) ${humanDuration(apiMsRef.current)}`);
7269
7247
  lines.push(`Duration (wall) ${humanDuration(wall)}`);
7270
7248
  lines.push(`Turns ${stats.turns}`);
7271
- lines.push(`Code changes ${usageDiff === undefined ? 'reading the working tree…'
7272
- : usageDiff === null ? 'not a git repo — nothing to compare against'
7273
- : `${usageDiff.added} added, ${usageDiff.removed} removed, ${usageDiff.files} file${usageDiff.files === 1 ? '' : 's'}`}`);
7249
+ lines.push(`Code changes ${(() => {
7250
+ const t = totalsOf(liveDiffs);
7251
+ return `${t.added} added, ${t.removed} removed, ${t.files} file${t.files === 1 ? '' : 's'}`;
7252
+ })()}`);
7274
7253
  lines.push(`Tokens ${humanTokens(stats.promptTokens)} in · ${humanTokens(stats.completionTokens)} out`);
7275
7254
  lines.push('');
7276
7255
  if (apiMsRef.current > 0 && wall > apiMsRef.current) {
@@ -7632,7 +7611,7 @@ export function App({ config: initialConfig, clearFrame, synchronizedFrames = fa
7632
7611
  ?? contextLimitWithSource(cfg.model, cfg.contextTokens, servesOwnWeights(cfg.provider)).limit;
7633
7612
  const facts = statusFacts({
7634
7613
  model: cfg.model, limit, promptTokens: ctxFill?.tokens ?? 0,
7635
- cwd: cfg.cwd, home: os.homedir(), delta: usageDiff ?? null,
7614
+ cwd: cfg.cwd, home: os.homedir(), delta: totalsOf(liveDiffs),
7636
7615
  });
7637
7616
  const sep = _jsx(Text, { color: DIM, children: ' · ' });
7638
7617
  const bar = facts.ctx ? barCells(facts.ctx.fraction, 10) : null;