claude-code-infinite 1.0.33 → 1.0.35
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/README.md +60 -2
- package/dist/cli-main.js +24 -9
- package/dist/cli-main.js.map +1 -1
- package/dist/cli.js +23 -10
- package/dist/cli.js.map +1 -1
- package/dist/hooks.d.ts +20 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +34 -4
- package/dist/hooks.js.map +1 -1
- package/dist/host-session.d.ts +12 -0
- package/dist/host-session.d.ts.map +1 -0
- package/dist/host-session.js +12 -0
- package/dist/host-session.js.map +1 -0
- package/dist/image-refs.d.ts +24 -2
- package/dist/image-refs.d.ts.map +1 -1
- package/dist/image-refs.js +67 -20
- package/dist/image-refs.js.map +1 -1
- package/dist/index-wait-413.d.ts +26 -0
- package/dist/index-wait-413.d.ts.map +1 -0
- package/dist/index-wait-413.js +113 -0
- package/dist/index-wait-413.js.map +1 -0
- package/dist/memtree-finder.d.ts +70 -6
- package/dist/memtree-finder.d.ts.map +1 -1
- package/dist/memtree-finder.js +150 -20
- package/dist/memtree-finder.js.map +1 -1
- package/dist/memtree-handover.d.ts +13 -0
- package/dist/memtree-handover.d.ts.map +1 -0
- package/dist/memtree-handover.js +231 -0
- package/dist/memtree-handover.js.map +1 -0
- package/dist/memtree-mcp-config.d.ts +2 -2
- package/dist/memtree-mcp-config.d.ts.map +1 -1
- package/dist/memtree-mcp-config.js +8 -5
- package/dist/memtree-mcp-config.js.map +1 -1
- package/dist/memtree-mcp.d.ts +182 -2
- package/dist/memtree-mcp.d.ts.map +1 -1
- package/dist/memtree-mcp.js +357 -38
- package/dist/memtree-mcp.js.map +1 -1
- package/dist/memtree-newest.d.ts +31 -5
- package/dist/memtree-newest.d.ts.map +1 -1
- package/dist/memtree-newest.js +65 -13
- package/dist/memtree-newest.js.map +1 -1
- package/dist/memtree-times.d.ts +33 -0
- package/dist/memtree-times.d.ts.map +1 -1
- package/dist/memtree-times.js +77 -0
- package/dist/memtree-times.js.map +1 -1
- package/dist/memtree-tools.d.ts +19 -5
- package/dist/memtree-tools.d.ts.map +1 -1
- package/dist/memtree-tools.js +97 -23
- package/dist/memtree-tools.js.map +1 -1
- package/dist/memtree.d.ts +33 -0
- package/dist/memtree.d.ts.map +1 -1
- package/dist/memtree.js +92 -4
- package/dist/memtree.js.map +1 -1
- package/dist/network-failure.d.ts +28 -0
- package/dist/network-failure.d.ts.map +1 -0
- package/dist/network-failure.js +67 -0
- package/dist/network-failure.js.map +1 -0
- package/dist/prefix-store.d.ts +4 -0
- package/dist/prefix-store.d.ts.map +1 -1
- package/dist/prefix-store.js +8 -4
- package/dist/prefix-store.js.map +1 -1
- package/dist/project-trees.d.ts +15 -7
- package/dist/project-trees.d.ts.map +1 -1
- package/dist/project-trees.js +20 -9
- package/dist/project-trees.js.map +1 -1
- package/dist/proxy.d.ts +85 -1
- package/dist/proxy.d.ts.map +1 -1
- package/dist/proxy.js +552 -44
- package/dist/proxy.js.map +1 -1
- package/dist/refusal-reason.d.ts +69 -0
- package/dist/refusal-reason.d.ts.map +1 -0
- package/dist/refusal-reason.js +131 -0
- package/dist/refusal-reason.js.map +1 -0
- package/dist/reqlog.d.ts +43 -0
- package/dist/reqlog.d.ts.map +1 -1
- package/dist/reqlog.js.map +1 -1
- package/dist/resume-guidance.d.ts +9 -3
- package/dist/resume-guidance.d.ts.map +1 -1
- package/dist/resume-guidance.js +9 -3
- package/dist/resume-guidance.js.map +1 -1
- package/dist/route-fallback.d.ts +79 -11
- package/dist/route-fallback.d.ts.map +1 -1
- package/dist/route-fallback.js +162 -38
- package/dist/route-fallback.js.map +1 -1
- package/dist/route-identity.d.ts +6 -2
- package/dist/route-identity.d.ts.map +1 -1
- package/dist/route-identity.js +209 -16
- package/dist/route-identity.js.map +1 -1
- package/dist/slow-upload.d.ts +40 -0
- package/dist/slow-upload.d.ts.map +1 -0
- package/dist/slow-upload.js +69 -0
- package/dist/slow-upload.js.map +1 -0
- package/dist/status-link.d.ts +18 -0
- package/dist/status-link.d.ts.map +1 -0
- package/dist/status-link.js +103 -0
- package/dist/status-link.js.map +1 -0
- package/dist/statusline.d.ts +51 -0
- package/dist/statusline.d.ts.map +1 -0
- package/dist/statusline.js +379 -0
- package/dist/statusline.js.map +1 -0
- package/dist/subagent-hint.d.ts +28 -0
- package/dist/subagent-hint.d.ts.map +1 -1
- package/dist/subagent-hint.js +37 -0
- package/dist/subagent-hint.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-identity.js","sourceRoot":"","sources":["../src/route-identity.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"route-identity.js","sourceRoot":"","sources":["../src/route-identity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A longer compress budget for a session whose last large upload timed out.
|
|
3
|
+
*
|
|
4
|
+
* A compress with nothing else to send (no compressed prefix to ride, a whole request
|
|
5
|
+
* over the window) gets the long budget, scaled by its upload (memtree.ts
|
|
6
|
+
* COMPRESS_TIMEOUT_MS_PER_KIB). On a weak link a ~50 MB body still ran out of it: on
|
|
7
|
+
* 2026-11-12 (session e32c1f3e, 23:35-23:51Z) six turns in a row each timed out at
|
|
8
|
+
* 138.6 s and were refused, every retry with the same budget. So after such a timeout the
|
|
9
|
+
* session's next compress of a large body gets SLOW_UPLOAD_BUDGET_FACTOR times the budget
|
|
10
|
+
* (capped by the caller), and the refusal says so ("the next try waits up to ...").
|
|
11
|
+
* A success, or SLOW_UPLOAD_MEMORY_MS without a retry, ends it.
|
|
12
|
+
*/
|
|
13
|
+
/** Uploads at least this large are slow on size alone (smaller timeouts are the server's). */
|
|
14
|
+
export declare const SLOW_UPLOAD_MIN_BYTES: number;
|
|
15
|
+
/** How much longer the next try may take. */
|
|
16
|
+
export declare const SLOW_UPLOAD_BUDGET_FACTOR = 2;
|
|
17
|
+
/**
|
|
18
|
+
* The raised budget never goes past this (unless the normal one already does): Claude Code
|
|
19
|
+
* waits ~180 s for response headers by the proxy's notes (2.1.319), though 2026-11-12's
|
|
20
|
+
* refusals reached the user after 176-199 s. 240 s keeps the raise modest.
|
|
21
|
+
*/
|
|
22
|
+
export declare const SLOW_UPLOAD_MAX_BUDGET_MS = 240000;
|
|
23
|
+
/** A timeout this old no longer raises the budget. */
|
|
24
|
+
export declare const SLOW_UPLOAD_MEMORY_MS: number;
|
|
25
|
+
export declare class SlowUploads {
|
|
26
|
+
private readonly now;
|
|
27
|
+
private readonly minBytes;
|
|
28
|
+
private readonly timedOutAt;
|
|
29
|
+
constructor(now?: () => number, minBytes?: number);
|
|
30
|
+
/** The budget for a compress of `bytes` in `sessionId`, given its normal `budgetMs`. */
|
|
31
|
+
budgetMs(sessionId: string | undefined, bytes: number, budgetMs: number): number;
|
|
32
|
+
/** Whether the session's next compress of `bytes` gets the longer budget. */
|
|
33
|
+
extended(sessionId: string | undefined, bytes: number): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Note how a compress of `bytes` ended (a timeout only counts on an uncapped long budget,
|
|
36
|
+
* which the caller checks); true when it was a slow upload.
|
|
37
|
+
*/
|
|
38
|
+
settled(sessionId: string | undefined, bytes: number, outcome: "ok" | "timeout" | "other"): boolean;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=slow-upload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slow-upload.d.ts","sourceRoot":"","sources":["../src/slow-upload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,8FAA8F;AAC9F,eAAO,MAAM,qBAAqB,QAAmB,CAAC;AACtD,6CAA6C;AAC7C,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,SAAU,CAAC;AACjD,sDAAsD;AACtD,eAAO,MAAM,qBAAqB,QAAc,CAAC;AAGjD,qBAAa,WAAW;IAIpB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAJ3B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6B;gBAGrC,GAAG,GAAE,MAAM,MAAiB,EAC5B,QAAQ,SAAwB;IAGnD,wFAAwF;IACxF,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAKhF,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAM/D;;;OAGG;IACH,OAAO,CACL,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,GAChF,OAAO;CAeX"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A longer compress budget for a session whose last large upload timed out.
|
|
3
|
+
*
|
|
4
|
+
* A compress with nothing else to send (no compressed prefix to ride, a whole request
|
|
5
|
+
* over the window) gets the long budget, scaled by its upload (memtree.ts
|
|
6
|
+
* COMPRESS_TIMEOUT_MS_PER_KIB). On a weak link a ~50 MB body still ran out of it: on
|
|
7
|
+
* 2026-11-12 (session e32c1f3e, 23:35-23:51Z) six turns in a row each timed out at
|
|
8
|
+
* 138.6 s and were refused, every retry with the same budget. So after such a timeout the
|
|
9
|
+
* session's next compress of a large body gets SLOW_UPLOAD_BUDGET_FACTOR times the budget
|
|
10
|
+
* (capped by the caller), and the refusal says so ("the next try waits up to ...").
|
|
11
|
+
* A success, or SLOW_UPLOAD_MEMORY_MS without a retry, ends it.
|
|
12
|
+
*/
|
|
13
|
+
/** Uploads at least this large are slow on size alone (smaller timeouts are the server's). */
|
|
14
|
+
export const SLOW_UPLOAD_MIN_BYTES = 20 * 1024 * 1024;
|
|
15
|
+
/** How much longer the next try may take. */
|
|
16
|
+
export const SLOW_UPLOAD_BUDGET_FACTOR = 2;
|
|
17
|
+
/**
|
|
18
|
+
* The raised budget never goes past this (unless the normal one already does): Claude Code
|
|
19
|
+
* waits ~180 s for response headers by the proxy's notes (2.1.319), though 2026-11-12's
|
|
20
|
+
* refusals reached the user after 176-199 s. 240 s keeps the raise modest.
|
|
21
|
+
*/
|
|
22
|
+
export const SLOW_UPLOAD_MAX_BUDGET_MS = 240_000;
|
|
23
|
+
/** A timeout this old no longer raises the budget. */
|
|
24
|
+
export const SLOW_UPLOAD_MEMORY_MS = 30 * 60_000;
|
|
25
|
+
const MAX_SESSIONS = 128;
|
|
26
|
+
export class SlowUploads {
|
|
27
|
+
now;
|
|
28
|
+
minBytes;
|
|
29
|
+
timedOutAt = new Map();
|
|
30
|
+
constructor(now = Date.now, minBytes = SLOW_UPLOAD_MIN_BYTES) {
|
|
31
|
+
this.now = now;
|
|
32
|
+
this.minBytes = minBytes;
|
|
33
|
+
}
|
|
34
|
+
/** The budget for a compress of `bytes` in `sessionId`, given its normal `budgetMs`. */
|
|
35
|
+
budgetMs(sessionId, bytes, budgetMs) {
|
|
36
|
+
if (!this.extended(sessionId, bytes))
|
|
37
|
+
return budgetMs;
|
|
38
|
+
return Math.max(budgetMs, Math.min(budgetMs * SLOW_UPLOAD_BUDGET_FACTOR, SLOW_UPLOAD_MAX_BUDGET_MS));
|
|
39
|
+
}
|
|
40
|
+
/** Whether the session's next compress of `bytes` gets the longer budget. */
|
|
41
|
+
extended(sessionId, bytes) {
|
|
42
|
+
if (sessionId === undefined || bytes < this.minBytes)
|
|
43
|
+
return false;
|
|
44
|
+
const at = this.timedOutAt.get(sessionId);
|
|
45
|
+
return at !== undefined && this.now() - at < SLOW_UPLOAD_MEMORY_MS;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Note how a compress of `bytes` ended (a timeout only counts on an uncapped long budget,
|
|
49
|
+
* which the caller checks); true when it was a slow upload.
|
|
50
|
+
*/
|
|
51
|
+
settled(sessionId, bytes, outcome) {
|
|
52
|
+
if (sessionId === undefined)
|
|
53
|
+
return false;
|
|
54
|
+
// Only a large upload getting through ends it (not a subagent's small one, nor a cache hit).
|
|
55
|
+
if (outcome === "ok" && bytes >= this.minBytes) {
|
|
56
|
+
this.timedOutAt.delete(sessionId);
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
if (outcome !== "timeout" || bytes < this.minBytes)
|
|
60
|
+
return false;
|
|
61
|
+
this.timedOutAt.delete(sessionId);
|
|
62
|
+
this.timedOutAt.set(sessionId, this.now());
|
|
63
|
+
while (this.timedOutAt.size > MAX_SESSIONS) {
|
|
64
|
+
this.timedOutAt.delete(this.timedOutAt.keys().next().value);
|
|
65
|
+
}
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=slow-upload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slow-upload.js","sourceRoot":"","sources":["../src/slow-upload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,8FAA8F;AAC9F,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AACtD,6CAA6C;AAC7C,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAC3C;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,OAAO,CAAC;AACjD,sDAAsD;AACtD,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,MAAM,CAAC;AACjD,MAAM,YAAY,GAAG,GAAG,CAAC;AAEzB,MAAM,OAAO,WAAW;IAIH;IACA;IAJF,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAExD,YACmB,MAAoB,IAAI,CAAC,GAAG,EAC5B,WAAW,qBAAqB;QADhC,QAAG,GAAH,GAAG,CAAyB;QAC5B,aAAQ,GAAR,QAAQ,CAAwB;IAChD,CAAC;IAEJ,wFAAwF;IACxF,QAAQ,CAAC,SAA6B,EAAE,KAAa,EAAE,QAAgB;QACrE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;YAAE,OAAO,QAAQ,CAAC;QACtD,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,yBAAyB,EAAE,yBAAyB,CAAC,CAAC,CAAC;IACvG,CAAC;IAED,6EAA6E;IAC7E,QAAQ,CAAC,SAA6B,EAAE,KAAa;QACnD,IAAI,SAAS,KAAK,SAAS,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QACnE,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1C,OAAO,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,qBAAqB,CAAC;IACrE,CAAC;IAED;;;OAGG;IACH,OAAO,CACL,SAA6B,EAAE,KAAa,EAAE,OAAmC;QAEjF,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAC1C,6FAA6F;QAC7F,IAAI,OAAO,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,OAAO,KAAK,SAAS,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QACjE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,YAAY,EAAE,CAAC;YAC3C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAM,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const STATUS_LINK_DIR = "statusline";
|
|
2
|
+
export declare const STATUS_LINK_SUFFIX = ".url";
|
|
3
|
+
export declare function statusLinkDir(): string;
|
|
4
|
+
/** The cached link for `sessionId`, or undefined. Never throws. */
|
|
5
|
+
export declare function readStatusLink(sessionId: unknown, dir?: string): string | undefined;
|
|
6
|
+
export declare class StatusLinkFiles {
|
|
7
|
+
readonly dir: string;
|
|
8
|
+
private readonly maxFiles;
|
|
9
|
+
private readonly written;
|
|
10
|
+
private writes;
|
|
11
|
+
constructor(dir?: string, maxFiles?: number);
|
|
12
|
+
/** Record `url` as the session's link; writes only when it changed. Never throws. */
|
|
13
|
+
write(sessionId: string | undefined, url: string | undefined): void;
|
|
14
|
+
private remember;
|
|
15
|
+
/** Keep the newest maxFiles links (by modification time). */
|
|
16
|
+
private prune;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=status-link.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-link.d.ts","sourceRoot":"","sources":["../src/status-link.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,eAAO,MAAM,kBAAkB,SAAS,CAAC;AAOzC,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,mEAAmE;AACnE,wBAAgB,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,SAAkB,GAAG,MAAM,GAAG,SAAS,CAS5F;AAED,qBAAa,eAAe;IAId,QAAQ,CAAC,GAAG,EAAE,MAAM;IAAoB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAH7E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,MAAM,CAAK;gBAEE,GAAG,GAAE,MAAwB,EAAmB,QAAQ,SAAY;IAEzF,qFAAqF;IACrF,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAkBnE,OAAO,CAAC,QAAQ;IAMhB,6DAA6D;IAC7D,OAAO,CAAC,KAAK;CAad"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The session's newest MemTree link, cached on disk for Claude Code's status line.
|
|
3
|
+
*
|
|
4
|
+
* The end-of-turn link shows only when a turn ends after a new tree finished, so in long
|
|
5
|
+
* sessions it rarely appears, and the newest-tree lookup behind it (memtree-newest.ts) can
|
|
6
|
+
* take 7-22 s on the server. A status line must never wait on that: Claude Code runs it
|
|
7
|
+
* after every message. So the proxy writes the link to one small file per session whenever
|
|
8
|
+
* it learns a newer one (a compress answer's page, or the newest-tree lookup answering in
|
|
9
|
+
* the background), and the status line only reads that file (statusline.ts, or the shell
|
|
10
|
+
* one-liner in the README).
|
|
11
|
+
*
|
|
12
|
+
* `<config dir>/statusline/<session id>.url`: the URL and a newline. Written then renamed,
|
|
13
|
+
* so a reader never sees half a file; bounded to the newest MAX_FILES sessions. Every
|
|
14
|
+
* failure is swallowed: the link is a convenience.
|
|
15
|
+
*/
|
|
16
|
+
import fs from "node:fs";
|
|
17
|
+
import path from "node:path";
|
|
18
|
+
import { getConfigDir } from "./config.js";
|
|
19
|
+
export const STATUS_LINK_DIR = "statusline";
|
|
20
|
+
export const STATUS_LINK_SUFFIX = ".url";
|
|
21
|
+
/** Session ids Claude Code uses (UUIDs); anything else never names a file. */
|
|
22
|
+
const SESSION_ID = /^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$/;
|
|
23
|
+
const MAX_FILES = 200;
|
|
24
|
+
/** Prune at most this often (a directory listing per write would be wasteful). */
|
|
25
|
+
const PRUNE_EVERY_WRITES = 20;
|
|
26
|
+
export function statusLinkDir() {
|
|
27
|
+
return path.join(getConfigDir(), STATUS_LINK_DIR);
|
|
28
|
+
}
|
|
29
|
+
/** The cached link for `sessionId`, or undefined. Never throws. */
|
|
30
|
+
export function readStatusLink(sessionId, dir = statusLinkDir()) {
|
|
31
|
+
if (typeof sessionId !== "string" || !SESSION_ID.test(sessionId))
|
|
32
|
+
return undefined;
|
|
33
|
+
try {
|
|
34
|
+
const url = fs.readFileSync(path.join(dir, `${sessionId}${STATUS_LINK_SUFFIX}`), "utf-8")
|
|
35
|
+
.trim();
|
|
36
|
+
return /^https?:\/\/\S+$/.test(url) ? url : undefined;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export class StatusLinkFiles {
|
|
43
|
+
dir;
|
|
44
|
+
maxFiles;
|
|
45
|
+
written = new Map();
|
|
46
|
+
writes = 0;
|
|
47
|
+
constructor(dir = statusLinkDir(), maxFiles = MAX_FILES) {
|
|
48
|
+
this.dir = dir;
|
|
49
|
+
this.maxFiles = maxFiles;
|
|
50
|
+
}
|
|
51
|
+
/** Record `url` as the session's link; writes only when it changed. Never throws. */
|
|
52
|
+
write(sessionId, url) {
|
|
53
|
+
if (!sessionId || !SESSION_ID.test(sessionId) || !url || !/^https?:\/\/\S+$/.test(url))
|
|
54
|
+
return;
|
|
55
|
+
// Unchanged and still on disk as written (another ccc process may have pruned it, or
|
|
56
|
+
// written an older link for the same resumed session).
|
|
57
|
+
if (this.written.get(sessionId) === url && readStatusLink(sessionId, this.dir) === url)
|
|
58
|
+
return;
|
|
59
|
+
const file = path.join(this.dir, `${sessionId}${STATUS_LINK_SUFFIX}`);
|
|
60
|
+
try {
|
|
61
|
+
fs.mkdirSync(this.dir, { recursive: true });
|
|
62
|
+
const tmp = `${file}.${process.pid}.tmp`;
|
|
63
|
+
fs.writeFileSync(tmp, `${url}\n`, { mode: 0o600 });
|
|
64
|
+
fs.renameSync(tmp, file);
|
|
65
|
+
this.remember(sessionId, url);
|
|
66
|
+
if (++this.writes % PRUNE_EVERY_WRITES === 1)
|
|
67
|
+
this.prune();
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// A missed status-line link is never an error.
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
remember(sessionId, url) {
|
|
74
|
+
this.written.delete(sessionId);
|
|
75
|
+
this.written.set(sessionId, url);
|
|
76
|
+
while (this.written.size > this.maxFiles)
|
|
77
|
+
this.written.delete(this.written.keys().next().value);
|
|
78
|
+
}
|
|
79
|
+
/** Keep the newest maxFiles links (by modification time). */
|
|
80
|
+
prune() {
|
|
81
|
+
const files = fs.readdirSync(this.dir)
|
|
82
|
+
.filter((name) => name.endsWith(STATUS_LINK_SUFFIX))
|
|
83
|
+
.map((name) => ({ name, at: mtime(path.join(this.dir, name)) }))
|
|
84
|
+
.sort((a, b) => b.at - a.at);
|
|
85
|
+
for (const { name } of files.slice(this.maxFiles)) {
|
|
86
|
+
try {
|
|
87
|
+
fs.unlinkSync(path.join(this.dir, name));
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
// Another process pruned it first.
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
function mtime(file) {
|
|
96
|
+
try {
|
|
97
|
+
return fs.statSync(file).mtimeMs;
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
return 0;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=status-link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-link.js","sourceRoot":"","sources":["../src/status-link.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/** What `install` puts in settings.json. */
|
|
2
|
+
export declare const STATUSLINE_COMMAND = "ccc statusline";
|
|
3
|
+
/** The link's text where the terminal shows OSC 8 hyperlinks. */
|
|
4
|
+
export declare const STATUSLINE_LABEL = "\uD83C\uDF3F tree";
|
|
5
|
+
export declare const STATUSLINE_SEPARATOR = " | ";
|
|
6
|
+
/**
|
|
7
|
+
* Set for the wrapped command: a `ccc statusline` inside it (a wrapped command that itself
|
|
8
|
+
* calls ccc's, under another spelling) prints nothing instead of recursing.
|
|
9
|
+
*/
|
|
10
|
+
export declare const WRAPPED_ENV = "CCC_STATUSLINE_WRAPPED";
|
|
11
|
+
export interface StatuslinePaths {
|
|
12
|
+
/** Claude Code's user settings (CLAUDE_CONFIG_DIR/settings.json or ~/.claude/settings.json). */
|
|
13
|
+
settings: string;
|
|
14
|
+
/** The wrapped original statusLine, saved by install (in ccc's config dir). */
|
|
15
|
+
saved: string;
|
|
16
|
+
/** The cached links (status-link.ts). */
|
|
17
|
+
links?: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function statuslinePaths(env?: NodeJS.ProcessEnv): StatuslinePaths;
|
|
20
|
+
/** `ccc statusline [install|uninstall]`; returns the exit code. */
|
|
21
|
+
export declare function statuslineMain(args: string[], paths?: StatuslinePaths, out?: (text: string) => boolean): Promise<number>;
|
|
22
|
+
/** The status line: the wrapped command's output, then the session's link. */
|
|
23
|
+
export declare function renderStatusline(input: string, paths: StatuslinePaths, env?: NodeJS.ProcessEnv): Promise<string>;
|
|
24
|
+
/** ` 🌿 tree` linked to the session's page, or the URL; "" with no cached link. */
|
|
25
|
+
export declare function linkSegment(sessionId: unknown, env?: NodeJS.ProcessEnv, dir?: string): string;
|
|
26
|
+
/**
|
|
27
|
+
* Point Claude Code's statusLine at `ccc statusline`, saving the current one to wrap.
|
|
28
|
+
* Re-running is harmless; a statusLine that is not a command is left alone.
|
|
29
|
+
*/
|
|
30
|
+
export declare function installStatusline(paths: StatuslinePaths, platform?: NodeJS.Platform): {
|
|
31
|
+
ok: boolean;
|
|
32
|
+
message: string;
|
|
33
|
+
};
|
|
34
|
+
/** Put back the statusLine install replaced (or remove ours when there was none). */
|
|
35
|
+
export declare function uninstallStatusline(paths: StatuslinePaths): {
|
|
36
|
+
ok: boolean;
|
|
37
|
+
message: string;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* The wrapped command's stdout, trailing newlines trimmed ("" if it fails). Run in its own
|
|
41
|
+
* process group, so a timeout kills everything it started (no pile-up across refreshes).
|
|
42
|
+
*/
|
|
43
|
+
export declare function runWrapped(command: string, input: string, timeoutMs?: number): Promise<string>;
|
|
44
|
+
/** `pid` and every descendant (from `ps`; just `pid` where there is none, e.g. Windows). */
|
|
45
|
+
export declare function processTree(pid: number | undefined): number[];
|
|
46
|
+
/**
|
|
47
|
+
* Whether Claude Code's status line reads ccc's link (installed, or the README snippet):
|
|
48
|
+
* only then does the proxy keep the link fresh in the background. Read at startup.
|
|
49
|
+
*/
|
|
50
|
+
export declare function statusLineWantsLink(settingsFile?: string): boolean;
|
|
51
|
+
//# sourceMappingURL=statusline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statusline.d.ts","sourceRoot":"","sources":["../src/statusline.ts"],"names":[],"mappings":"AAwBA,4CAA4C;AAC5C,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AACnD,iEAAiE;AACjE,eAAO,MAAM,gBAAgB,sBAAY,CAAC;AAC1C,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAK1C;;;GAGG;AACH,eAAO,MAAM,WAAW,2BAA2B,CAAC;AAIpD,MAAM,WAAW,eAAe;IAC9B,gGAAgG;IAChG,QAAQ,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,eAAe,CAOrF;AAED,mEAAmE;AACnE,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,kBAAoB,EAAE,GAAG,IAAI,MAAM,MAAM,YAA+B,GAC5F,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED,8EAA8E;AAC9E,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAC1E,OAAO,CAAC,MAAM,CAAC,CAOjB;AAED,mFAAmF;AACnF,wBAAgB,WAAW,CACzB,SAAS,EAAE,OAAO,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,EAAE,GAAG,CAAC,EAAE,MAAM,GACrE,MAAM,CAMR;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,eAAe,EAAE,QAAQ,GAAE,MAAM,CAAC,QAA2B,GACnE;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAiClC;AAED,qFAAqF;AACrF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA4B5F;AAqDD;;;GAGG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,SAAqB,GAC7D,OAAO,CAAC,MAAM,CAAC,CAgCjB;AAED,4FAA4F;AAC5F,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAoB7D;AA6FD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,SAA6B,GAAG,OAAO,CAKtF"}
|