koneck 2.54.0 → 2.55.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/browser.d.ts CHANGED
@@ -100,6 +100,24 @@ export declare class Browser {
100
100
  * navigate.
101
101
  */
102
102
  private settleQuick;
103
+ /**
104
+ * After a click or a keypress: pay for a page load only if there was one.
105
+ *
106
+ * Most clicks in a form flow navigate nothing — a toggle, a disclosure, a validation message —
107
+ * and those were charged the full settle, which has a floor of nearly a second. Five such clicks
108
+ * is five seconds of waiting for a page that never moved.
109
+ *
110
+ * So it watches instead of assuming. A short poll asks whether anything actually changed: the
111
+ * url, the amount of rendered text, or readyState leaving complete. If nothing did, the action is
112
+ * over and it returns in about a tenth of a second. If something did, the page is doing work and
113
+ * gets the full settle it deserves.
114
+ *
115
+ * This replaces settle(6), which meant six attempts while settle counted attempts and six
116
+ * milliseconds once it was changed to take a deadline — so a click stopped waiting for navigation
117
+ * at all. That mistake was mine, and the fix is not to restore the old number: a fixed wait is
118
+ * either too slow for a click that does nothing or too short for one that loads a page.
119
+ */
120
+ private settleAfterAction;
103
121
  private settle;
104
122
  /**
105
123
  * A cheap fingerprint of the page, for telling whether anything actually happened.
@@ -207,4 +225,7 @@ export declare class Browser {
207
225
  screenshot(): Promise<string | null>;
208
226
  stop(): Promise<void>;
209
227
  }
228
+ export declare function noteBrowser(browserPid: number | undefined, profile: string): void;
229
+ export declare function forgetBrowser(profile: string): void;
230
+ export declare function reapAbandonedBrowsers(): Promise<number>;
210
231
  //# sourceMappingURL=browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
package/dist/browser.js CHANGED
@@ -20,7 +20,7 @@
20
20
  */
21
21
  import { spawn } from 'child_process';
22
22
  import { mkdtemp, rm } from 'fs/promises';
23
- import { existsSync } from 'fs';
23
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
24
24
  import os from 'os';
25
25
  import path from 'path';
26
26
  /** Names a Chromium-family browser goes by, in the order they are tried. */
@@ -69,6 +69,8 @@ const MAX_CONTROLS = 60;
69
69
  const MIN_SETTLE_MS = 900;
70
70
  /** However slow the machine, a page that will not settle still has to be returned. */
71
71
  const MAX_SETTLE_MS = 6_000;
72
+ /** How long to watch for a change before deciding an action did not navigate. */
73
+ const ACTION_WATCH_MS = 200;
72
74
  /**
73
75
  * One browser, one page.
74
76
  *
@@ -102,6 +104,8 @@ export class Browser {
102
104
  async start(headless = true) {
103
105
  if (this.running)
104
106
  return { ok: true };
107
+ // Anything left behind by a KONECK that is no longer running.
108
+ await reapAbandonedBrowsers();
105
109
  const binary = findBrowser();
106
110
  if (!binary) {
107
111
  return { ok: false, error: 'No Chromium-family browser found. Install chromium (or set KONECK_BROWSER to a binary) '
@@ -119,6 +123,8 @@ export class Browser {
119
123
  ];
120
124
  const child = spawn(binary, args, { stdio: ['ignore', 'pipe', 'pipe'] });
121
125
  this.child = child;
126
+ // Written down so a later run can tell a leak from a browser somebody is using.
127
+ noteBrowser(child.pid, this.profile);
122
128
  // The port is chosen by the browser and announced on stderr; there is no other way to learn it.
123
129
  const endpoint = await new Promise(resolve => {
124
130
  let buffer = '';
@@ -259,6 +265,20 @@ export class Browser {
259
265
  return out.result?.value ?? null;
260
266
  }
261
267
  async open(url) {
268
+ /*
269
+ * Starts the browser if nobody did.
270
+ *
271
+ * It used to require `start()` first and say nothing when that had been forgotten: the
272
+ * navigation went to a socket that was not there, `errorText` was undefined because there was
273
+ * no reply at all, and it returned ok. Every read afterwards came back empty — a page with no
274
+ * title, no text and no controls — with nothing anywhere saying why. A silent success is worse
275
+ * than a failure, because the caller goes looking at the page instead of at the browser.
276
+ */
277
+ if (!this.running) {
278
+ const started = await this.start();
279
+ if (!started.ok)
280
+ return started;
281
+ }
262
282
  const target = /^[a-z]+:\/\//i.test(url) ? url : 'http://' + url;
263
283
  const nav = await this.call('Page.navigate', { url: target });
264
284
  if (nav?.errorText)
@@ -286,6 +306,41 @@ export class Browser {
286
306
  await new Promise(r => setTimeout(r, 60));
287
307
  await this.evaluate('document.readyState');
288
308
  }
309
+ /**
310
+ * After a click or a keypress: pay for a page load only if there was one.
311
+ *
312
+ * Most clicks in a form flow navigate nothing — a toggle, a disclosure, a validation message —
313
+ * and those were charged the full settle, which has a floor of nearly a second. Five such clicks
314
+ * is five seconds of waiting for a page that never moved.
315
+ *
316
+ * So it watches instead of assuming. A short poll asks whether anything actually changed: the
317
+ * url, the amount of rendered text, or readyState leaving complete. If nothing did, the action is
318
+ * over and it returns in about a tenth of a second. If something did, the page is doing work and
319
+ * gets the full settle it deserves.
320
+ *
321
+ * This replaces settle(6), which meant six attempts while settle counted attempts and six
322
+ * milliseconds once it was changed to take a deadline — so a click stopped waiting for navigation
323
+ * at all. That mistake was mine, and the fix is not to restore the old number: a fixed wait is
324
+ * either too slow for a click that does nothing or too short for one that loads a page.
325
+ */
326
+ async settleAfterAction() {
327
+ const before = await this.signature();
328
+ const startedAt = Date.now();
329
+ while (Date.now() - startedAt < ACTION_WATCH_MS) {
330
+ await new Promise(r => setTimeout(r, 50));
331
+ const now = await this.evaluate('location.href + "|" + (document.body ? document.body.innerText.length : 0) + "|" '
332
+ + '+ document.readyState');
333
+ if (now === null)
334
+ break;
335
+ // A navigation in flight reports something other than complete, which is the clearest
336
+ // possible signal that waiting is the right thing to do.
337
+ if (!now.endsWith('complete'))
338
+ return this.settle();
339
+ const parts = now.split('|');
340
+ if (`${parts[0]}|${parts[1]}` !== before)
341
+ return this.settle();
342
+ }
343
+ }
289
344
  async settle(maxWaitMs = MAX_SETTLE_MS) {
290
345
  let previous = '';
291
346
  let stable = 0;
@@ -470,13 +525,13 @@ export class Browser {
470
525
  + `${await this.describeControls()}` };
471
526
  }
472
527
  await this.pointAndPress(at.x, at.y);
473
- await this.settle(6);
528
+ await this.settleAfterAction();
474
529
  return { ok: true };
475
530
  }
476
531
  /** A click at a point, which is what a user clicking the preview means. */
477
532
  async clickAt(x, y) {
478
533
  await this.pointAndPress(x, y);
479
- await this.settle(6);
534
+ await this.settleAfterAction();
480
535
  return { ok: true };
481
536
  }
482
537
  async pointAndPress(x, y) {
@@ -602,7 +657,7 @@ export class Browser {
602
657
  : spec;
603
658
  await this.call('Input.dispatchKeyEvent', { type: 'keyDown', ...down });
604
659
  await this.call('Input.dispatchKeyEvent', { type: 'keyUp', ...spec });
605
- await this.settle(6);
660
+ await this.settleAfterAction();
606
661
  return { ok: true };
607
662
  }
608
663
  /**
@@ -672,9 +727,79 @@ export class Browser {
672
727
  catch { /* already gone */ }
673
728
  }
674
729
  if (this.profile) {
730
+ forgetBrowser(this.profile);
675
731
  await rm(this.profile, { recursive: true, force: true }).catch(() => { });
676
732
  this.profile = '';
677
733
  }
678
734
  }
679
735
  }
736
+ function browserRecordPath() {
737
+ return path.join(os.homedir(), '.koneck', 'browsers.json');
738
+ }
739
+ function readBrowserRecords() {
740
+ try {
741
+ const parsed = JSON.parse(readFileSync(browserRecordPath(), 'utf-8'));
742
+ return Array.isArray(parsed) ? parsed : [];
743
+ }
744
+ catch {
745
+ return [];
746
+ }
747
+ }
748
+ function writeBrowserRecords(records) {
749
+ try {
750
+ mkdirSync(path.dirname(browserRecordPath()), { recursive: true, mode: 0o700 });
751
+ writeFileSync(browserRecordPath(), JSON.stringify(records, null, 2) + '\n', { encoding: 'utf-8', mode: 0o600 });
752
+ }
753
+ catch { /* a record that cannot be written is not worth failing a launch over */ }
754
+ }
755
+ export function noteBrowser(browserPid, profile) {
756
+ if (!browserPid)
757
+ return;
758
+ const kept = readBrowserRecords().filter(r => r.profile !== profile);
759
+ kept.push({ browser: browserPid, owner: process.pid, profile });
760
+ writeBrowserRecords(kept);
761
+ }
762
+ export function forgetBrowser(profile) {
763
+ const kept = readBrowserRecords().filter(r => r.profile !== profile);
764
+ writeBrowserRecords(kept);
765
+ }
766
+ /** Whether a pid is a process this user can signal. */
767
+ function alive(pid) {
768
+ try {
769
+ process.kill(pid, 0);
770
+ return true;
771
+ }
772
+ catch {
773
+ return false;
774
+ }
775
+ }
776
+ export async function reapAbandonedBrowsers() {
777
+ const records = readBrowserRecords();
778
+ if (records.length === 0)
779
+ return 0;
780
+ const kept = [];
781
+ let reaped = 0;
782
+ for (const record of records) {
783
+ // Its owner is still here, so the browser is somebody's. Leave it alone.
784
+ if (record.owner !== process.pid && alive(record.owner)) {
785
+ kept.push(record);
786
+ continue;
787
+ }
788
+ if (record.owner === process.pid && alive(record.browser)) {
789
+ kept.push(record);
790
+ continue;
791
+ }
792
+ if (alive(record.browser)) {
793
+ try {
794
+ process.kill(record.browser, 'SIGTERM');
795
+ reaped++;
796
+ }
797
+ catch { /* already gone */ }
798
+ }
799
+ if (record.profile)
800
+ await rm(record.profile, { recursive: true, force: true }).catch(() => { });
801
+ }
802
+ writeBrowserRecords(kept);
803
+ return reaped;
804
+ }
680
805
  //# sourceMappingURL=browser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * What the other sessions on this checkout are doing right now.
3
+ *
4
+ * Two KONECK sessions in the same repository cannot see each other's work. One edits a file the
5
+ * other has just rewritten and the second write silently wins; both run the same test suite, which
6
+ * on a four-core machine is a hundred and seventy seconds each; one restarts a dev server the other
7
+ * is using. That is not hypothetical — a dev server on port 3000 was killed here by exactly this
8
+ * blindness, while another session depended on it.
9
+ *
10
+ * The registry in `session-bus` already knows which sessions are alive, with their pids and repos.
11
+ * What it does not know is what each of them is *touching*. So this is a claim: a session says
12
+ * "I am writing this file" or "I am running this command" before it does, and any other session
13
+ * asking about the same target is told who else is on it and how long ago.
14
+ *
15
+ * Three decisions worth stating, because each could sensibly have gone the other way:
16
+ *
17
+ * It reports rather than blocks. A lock between two agents that each wait for the other is a
18
+ * deadlock with no user present to break it, and a lock held by a session that dies mid-turn is
19
+ * worse than no lock. Telling the model "another session wrote this forty seconds ago" lets it
20
+ * decide — re-read first, work elsewhere, or say so and stop — which is what a person in the same
21
+ * position would do.
22
+ *
23
+ * A claim is evidence, not permission. It carries a pid, so a claim from a session that no longer
24
+ * exists is discarded on sight rather than trusted because it was recent.
25
+ *
26
+ * It is keyed by repository, not by directory. Two sessions in different subdirectories of one
27
+ * checkout are working on the same code and must see each other; two sessions in unrelated repos
28
+ * that happen to share a filename must not.
29
+ */
30
+ /** What a session can be in the middle of. */
31
+ export type ClaimKind = 'file' | 'command';
32
+ export interface Claim {
33
+ kind: ClaimKind;
34
+ /** A repo-relative path, or the command line. */
35
+ target: string;
36
+ session: string;
37
+ /** A name a person would recognise, when the surface has one. Falls back to a short id. */
38
+ label?: string;
39
+ pid: number;
40
+ /** ISO. Age is the whole point: a claim from an hour ago says something different from one now. */
41
+ at: string;
42
+ /** Set when the work finished, so "is editing" and "edited" are not the same report. */
43
+ done?: string;
44
+ }
45
+ /**
46
+ * How long a finished claim is still worth mentioning.
47
+ *
48
+ * A file another session wrote a minute ago is a reason to re-read before editing. The same file an
49
+ * hour ago is just history, and reporting it would train the reader to ignore these.
50
+ */
51
+ export declare const CLAIM_INTEREST_MS: number;
52
+ /** One file per repository, so unrelated checkouts never see each other's claims. */
53
+ export declare function claimsPath(repo: string, home?: string): string;
54
+ /** Records that this session is starting on something. Returns what else is already on it. */
55
+ export declare function claim(repo: string, kind: ClaimKind, target: string, session: string, home?: string, now?: Date, label?: string): Claim[];
56
+ /** Marks this session's claim finished, so it becomes "edited" rather than "is editing". */
57
+ export declare function release(repo: string, kind: ClaimKind, target: string, session: string, home?: string, now?: Date): void;
58
+ /** Everything this session had open, finished at once. For the end of a session. */
59
+ export declare function releaseAll(repo: string, session: string, home?: string, now?: Date): void;
60
+ /** Who else is on a target, newest first, without claiming it. */
61
+ export declare function whoElse(repo: string, kind: ClaimKind, target: string, session: string, home?: string, now?: Date): Claim[];
62
+ /** Everything live across the repo, for a status view. */
63
+ export declare function allClaims(repo: string, home?: string, now?: Date): Claim[];
64
+ /**
65
+ * What to tell the model, or nothing when there is nothing worth saying.
66
+ *
67
+ * Written as an observation rather than an instruction. The reader is better placed to decide what
68
+ * to do about it than this function is: re-read before editing, work elsewhere, or wait for a build
69
+ * that is already running. Being told what to do on evidence this thin is how a warning gets
70
+ * ignored.
71
+ */
72
+ export declare function describeClaims(claims: readonly Claim[], now?: number): string | null;
73
+ /** Clears a repository's claims entirely. For tests, and for a user who wants a clean slate. */
74
+ export declare function forgetClaims(repo: string, home?: string): void;
75
+ /** The directory claims live in, so it can be reported. */
76
+ export declare function claimsRoot(): string;
77
+ //# sourceMappingURL=claims.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claims.d.ts","sourceRoot":"","sources":["../src/claims.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAMH,8CAA8C;AAC9C,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAE3C,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,mGAAmG;IACnG,EAAE,EAAE,MAAM,CAAC;IACX,wFAAwF;IACxF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAID;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,QAAiB,CAAC;AAEhD,qFAAqF;AACrF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAe,GAAG,MAAM,CAGpE;AA0CD,8FAA8F;AAC9F,wBAAgB,KAAK,CACnB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAC9D,IAAI,SAAe,EAAE,GAAG,OAAa,EAAE,KAAK,CAAC,EAAE,MAAM,GACpD,KAAK,EAAE,CAUT;AAED,4FAA4F;AAC5F,wBAAgB,OAAO,CACrB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAC9D,IAAI,SAAe,EAAE,GAAG,OAAa,GACpC,IAAI,CAON;AAED,oFAAoF;AACpF,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,SAAe,EAAE,GAAG,OAAa,GACnE,IAAI,CAKN;AAED,kEAAkE;AAClE,wBAAgB,OAAO,CACrB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAC9D,IAAI,SAAe,EAAE,GAAG,OAAa,GACpC,KAAK,EAAE,CAIT;AAED,0DAA0D;AAC1D,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAe,EAAE,GAAG,OAAa,GAAG,KAAK,EAAE,CAGtF;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,GAAG,SAAa,GAAG,MAAM,GAAG,IAAI,CAexF;AAuBD,gGAAgG;AAChG,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAe,GAAG,IAAI,CAEpE;AAED,2DAA2D;AAC3D,wBAAgB,UAAU,IAAI,MAAM,CAAiB"}
package/dist/claims.js ADDED
@@ -0,0 +1,186 @@
1
+ /**
2
+ * What the other sessions on this checkout are doing right now.
3
+ *
4
+ * Two KONECK sessions in the same repository cannot see each other's work. One edits a file the
5
+ * other has just rewritten and the second write silently wins; both run the same test suite, which
6
+ * on a four-core machine is a hundred and seventy seconds each; one restarts a dev server the other
7
+ * is using. That is not hypothetical — a dev server on port 3000 was killed here by exactly this
8
+ * blindness, while another session depended on it.
9
+ *
10
+ * The registry in `session-bus` already knows which sessions are alive, with their pids and repos.
11
+ * What it does not know is what each of them is *touching*. So this is a claim: a session says
12
+ * "I am writing this file" or "I am running this command" before it does, and any other session
13
+ * asking about the same target is told who else is on it and how long ago.
14
+ *
15
+ * Three decisions worth stating, because each could sensibly have gone the other way:
16
+ *
17
+ * It reports rather than blocks. A lock between two agents that each wait for the other is a
18
+ * deadlock with no user present to break it, and a lock held by a session that dies mid-turn is
19
+ * worse than no lock. Telling the model "another session wrote this forty seconds ago" lets it
20
+ * decide — re-read first, work elsewhere, or say so and stop — which is what a person in the same
21
+ * position would do.
22
+ *
23
+ * A claim is evidence, not permission. It carries a pid, so a claim from a session that no longer
24
+ * exists is discarded on sight rather than trusted because it was recent.
25
+ *
26
+ * It is keyed by repository, not by directory. Two sessions in different subdirectories of one
27
+ * checkout are working on the same code and must see each other; two sessions in unrelated repos
28
+ * that happen to share a filename must not.
29
+ */
30
+ import fs from 'fs';
31
+ import os from 'os';
32
+ import path from 'path';
33
+ const ROOT = path.join(os.homedir(), '.koneck', 'claims');
34
+ /**
35
+ * How long a finished claim is still worth mentioning.
36
+ *
37
+ * A file another session wrote a minute ago is a reason to re-read before editing. The same file an
38
+ * hour ago is just history, and reporting it would train the reader to ignore these.
39
+ */
40
+ export const CLAIM_INTEREST_MS = 10 * 60 * 1000;
41
+ /** One file per repository, so unrelated checkouts never see each other's claims. */
42
+ export function claimsPath(repo, home = os.homedir()) {
43
+ const safe = repo.replace(/[^A-Za-z0-9._-]+/g, '-').replace(/^-+|-+$/g, '') || 'workspace';
44
+ return path.join(home, '.koneck', 'claims', `${safe}.json`);
45
+ }
46
+ function read(file) {
47
+ try {
48
+ const parsed = JSON.parse(fs.readFileSync(file, 'utf-8'));
49
+ return Array.isArray(parsed) ? parsed : [];
50
+ }
51
+ catch {
52
+ // Absent or damaged: a session must start whatever the state of this file.
53
+ return [];
54
+ }
55
+ }
56
+ function write(file, claims) {
57
+ try {
58
+ fs.mkdirSync(path.dirname(file), { recursive: true, mode: 0o700 });
59
+ const tmp = `${file}.${process.pid}.tmp`;
60
+ fs.writeFileSync(tmp, JSON.stringify(claims, null, 2) + '\n', { mode: 0o600 });
61
+ fs.renameSync(tmp, file);
62
+ }
63
+ catch { /* a claim that cannot be written must not fail the work it describes */ }
64
+ }
65
+ /** Whether the session that made a claim is still running. */
66
+ function claimantAlive(claim) {
67
+ if (claim.pid === process.pid)
68
+ return true;
69
+ try {
70
+ process.kill(claim.pid, 0);
71
+ return true;
72
+ }
73
+ catch {
74
+ return false;
75
+ }
76
+ }
77
+ /**
78
+ * Which claims are still worth reporting.
79
+ *
80
+ * Dropped: anything from a session that no longer exists, and anything finished long enough ago to
81
+ * be history rather than news. An unfinished claim from a live session is kept however old — a
82
+ * session that has been building for five minutes is exactly what another session needs to know.
83
+ */
84
+ function current(claims, now = Date.now()) {
85
+ return claims.filter(claim => {
86
+ if (!claimantAlive(claim))
87
+ return false;
88
+ if (!claim.done)
89
+ return true;
90
+ return now - Date.parse(claim.done) < CLAIM_INTEREST_MS;
91
+ });
92
+ }
93
+ /** Records that this session is starting on something. Returns what else is already on it. */
94
+ export function claim(repo, kind, target, session, home = os.homedir(), now = new Date(), label) {
95
+ const file = claimsPath(repo, home);
96
+ const kept = current(read(file), now.getTime())
97
+ // This session's own earlier claim on the same target is replaced, not stacked.
98
+ .filter(c => !(c.session === session && c.kind === kind && c.target === target));
99
+ const others = kept.filter(c => c.session !== session && c.kind === kind && c.target === target);
100
+ kept.push({ kind, target, session, pid: process.pid, at: now.toISOString(),
101
+ ...(label ? { label } : {}) });
102
+ write(file, kept);
103
+ return others;
104
+ }
105
+ /** Marks this session's claim finished, so it becomes "edited" rather than "is editing". */
106
+ export function release(repo, kind, target, session, home = os.homedir(), now = new Date()) {
107
+ const file = claimsPath(repo, home);
108
+ const claims = current(read(file), now.getTime()).map(c => c.session === session && c.kind === kind && c.target === target && !c.done
109
+ ? { ...c, done: now.toISOString() }
110
+ : c);
111
+ write(file, claims);
112
+ }
113
+ /** Everything this session had open, finished at once. For the end of a session. */
114
+ export function releaseAll(repo, session, home = os.homedir(), now = new Date()) {
115
+ const file = claimsPath(repo, home);
116
+ const claims = current(read(file), now.getTime()).map(c => c.session === session && !c.done ? { ...c, done: now.toISOString() } : c);
117
+ write(file, claims);
118
+ }
119
+ /** Who else is on a target, newest first, without claiming it. */
120
+ export function whoElse(repo, kind, target, session, home = os.homedir(), now = new Date()) {
121
+ return current(read(claimsPath(repo, home)), now.getTime())
122
+ .filter(c => c.session !== session && c.kind === kind && c.target === target)
123
+ .sort((a, b) => Date.parse(b.at) - Date.parse(a.at));
124
+ }
125
+ /** Everything live across the repo, for a status view. */
126
+ export function allClaims(repo, home = os.homedir(), now = new Date()) {
127
+ return current(read(claimsPath(repo, home)), now.getTime())
128
+ .sort((a, b) => Date.parse(b.at) - Date.parse(a.at));
129
+ }
130
+ /**
131
+ * What to tell the model, or nothing when there is nothing worth saying.
132
+ *
133
+ * Written as an observation rather than an instruction. The reader is better placed to decide what
134
+ * to do about it than this function is: re-read before editing, work elsewhere, or wait for a build
135
+ * that is already running. Being told what to do on evidence this thin is how a warning gets
136
+ * ignored.
137
+ */
138
+ export function describeClaims(claims, now = Date.now()) {
139
+ if (claims.length === 0)
140
+ return null;
141
+ const lines = claims.slice(0, 4).map(c => {
142
+ const since = ago(now - Date.parse(c.done ?? c.at));
143
+ const who = nameOf(c);
144
+ return c.done
145
+ ? ` ${who} finished with it ${since} ago`
146
+ : ` ${who} has been on it for ${since}`;
147
+ });
148
+ const what = claims[0].kind === 'file' ? 'file' : 'command';
149
+ return `Another KONECK session is working on this ${what} in this repository:\n`
150
+ + lines.join('\n')
151
+ + (claims[0].kind === 'file'
152
+ ? '\nRead it again before writing, or its changes will be lost.'
153
+ : '\nIts result will be available; running the same thing twice costs the same time twice.');
154
+ }
155
+ /*
156
+ * Who, in a form a reader can scan.
157
+ *
158
+ * A session id here is a timestamp — 20260826-114437-0d770000 — and three of those in a list is a
159
+ * wall of digits nobody reads. The name is used when a surface has one; otherwise the tail of the
160
+ * id, which is short enough to compare at a glance and still distinguishes one session from
161
+ * another.
162
+ */
163
+ function nameOf(claim) {
164
+ if (claim.label)
165
+ return claim.label;
166
+ return `session ${claim.session.slice(-8)}`;
167
+ }
168
+ function ago(ms) {
169
+ const seconds = Math.max(1, Math.round(ms / 1000));
170
+ if (seconds < 90)
171
+ return `${seconds}s`;
172
+ const minutes = Math.round(seconds / 60);
173
+ if (minutes < 90)
174
+ return `${minutes}m`;
175
+ return `${Math.round(minutes / 60)}h`;
176
+ }
177
+ /** Clears a repository's claims entirely. For tests, and for a user who wants a clean slate. */
178
+ export function forgetClaims(repo, home = os.homedir()) {
179
+ try {
180
+ fs.rmSync(claimsPath(repo, home), { force: true });
181
+ }
182
+ catch { /* nothing to clear */ }
183
+ }
184
+ /** The directory claims live in, so it can be reported. */
185
+ export function claimsRoot() { return ROOT; }
186
+ //# sourceMappingURL=claims.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claims.js","sourceRoot":"","sources":["../src/claims.ts"],"names":[],"mappings":"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"}