claude-code-infinite 1.0.17 → 1.0.18

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.
@@ -0,0 +1,59 @@
1
+ /** The stored fields of a stable prefix (proxy.ts StablePrefix, minus sizes). */
2
+ export interface PersistedPrefix {
3
+ originalSystemHash: string;
4
+ originalPrefixHashes: string[];
5
+ compressedMessages: any[];
6
+ compressedSystem: unknown;
7
+ hasCompressedSystem: boolean;
8
+ targetTokens: number;
9
+ explicitTarget: boolean;
10
+ modelContextLimit: number;
11
+ }
12
+ /** The MemTree page the prefix's memory came from (memory-source pointer). */
13
+ export interface PersistedSource {
14
+ url: string;
15
+ index: string;
16
+ compressed: boolean;
17
+ }
18
+ export interface PersistedEntry {
19
+ version: typeof ENTRY_VERSION;
20
+ sessionId: string;
21
+ /** MemtreeClient.storageIdentity of the backend and account that wrote it. */
22
+ owner: string;
23
+ savedAt: number;
24
+ prefix: PersistedPrefix;
25
+ source?: PersistedSource;
26
+ }
27
+ export interface StablePrefixStoreLimits {
28
+ /** Total bytes of all entries (and recent temporary files). */
29
+ maxBytes: number;
30
+ maxEntries: number;
31
+ }
32
+ declare const ENTRY_VERSION = 2;
33
+ export declare const STABLE_PREFIX_STORE_LIMITS: StablePrefixStoreLimits;
34
+ export declare class StablePrefixStore {
35
+ readonly dir: string;
36
+ private readonly limits;
37
+ constructor(dir?: string, limits?: StablePrefixStoreLimits);
38
+ /** The session's entry for `owner`; an unreadable or invalid one is deleted. */
39
+ load(sessionId: string, owner: string): PersistedEntry | undefined;
40
+ /** Replace the session's entry, then evict down to the limits. */
41
+ save(sessionId: string, owner: string, prefix: PersistedPrefix, source: PersistedSource | undefined, now?: number): void;
42
+ delete(sessionId: string, owner: string): void;
43
+ /** Where the entry for this session and owner lives. */
44
+ entryPath(sessionId: string, owner: string): string;
45
+ /**
46
+ * The directory exists (created when `create`), is a real directory (not a
47
+ * symlink) owned by this user, and is mode 700 (repaired when it is not).
48
+ */
49
+ private privateDir;
50
+ /** Drop stale temporaries, then the oldest saves until the limits fit. */
51
+ private evict;
52
+ /**
53
+ * Entry files with size and save time. Symlinks and stale temporaries are
54
+ * removed; recent temporaries (writes in progress) count toward the size.
55
+ */
56
+ private scan;
57
+ }
58
+ export {};
59
+ //# sourceMappingURL=prefix-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prefix-store.d.ts","sourceRoot":"","sources":["../src/prefix-store.ts"],"names":[],"mappings":"AA6BA,iFAAiF;AACjF,MAAM,WAAW,eAAe;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,kBAAkB,EAAE,GAAG,EAAE,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,8EAA8E;AAC9E,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,aAAa,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAED,MAAM,WAAW,uBAAuB;IACtC,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,QAAA,MAAM,aAAa,IAAI,CAAC;AACxB,eAAO,MAAM,0BAA0B,EAAE,uBAGxC,CAAC;AAKF,qBAAa,iBAAiB;IAE1B,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADd,GAAG,GAAE,MAAqD,EAClD,MAAM,GAAE,uBAAoD;IAG/E,gFAAgF;IAChF,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAUlE,kEAAkE;IAClE,IAAI,CACF,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,eAAe,GAAG,SAAS,EACnC,GAAG,GAAE,MAAmB,GACvB,IAAI;IAWP,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI9C,wDAAwD;IACxD,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAKnD;;;OAGG;IACH,OAAO,CAAC,UAAU;IAYlB,0EAA0E;IAC1E,OAAO,CAAC,KAAK;IAUb;;;OAGG;IACH,OAAO,CAAC,IAAI;CAoBb"}
@@ -0,0 +1,330 @@
1
+ /**
2
+ * Each Claude Code session's adopted compressed prefix (ProxyState
3
+ * .stablePrefixes), kept on disk so a resumed session's first turn rides it
4
+ * instead of blocking on a fresh compress: a new ccc process starts with no
5
+ * prefix, and a large session's compress can outrun its budget.
6
+ *
7
+ * One file per session and owner under ~/.claude-code-infinite/
8
+ * stable-prefixes/. The owner is MemtreeClient.storageIdentity, a hash over the
9
+ * MemTree origin and a hash of the key (never the key): an entry, and the
10
+ * memory-source page in it, is only ever read back for the same backend and
11
+ * account, so a staging/production or key switch never adopts it.
12
+ *
13
+ * Files are mode 600 in a 700 directory owned by this user, written through an
14
+ * exclusive, unpredictably named temporary file and a rename, and opened
15
+ * without following symlinks. The total size and the number of sessions are
16
+ * bounded, the oldest saves are evicted first, and stale temporary files are
17
+ * removed. An entry holds only what reproduces the prefix byte for byte (the
18
+ * compressed messages and system, the identity of the raw prefix they replace)
19
+ * plus the target and window it was built for and its memory-source page. It
20
+ * is schema-checked on load and, by the proxy, validated against the request
21
+ * exactly like the in-memory prefix before adoption. Every failure is
22
+ * swallowed (a missing prefix only costs a compress); contents are never
23
+ * logged.
24
+ */
25
+ import fs from "node:fs";
26
+ import path from "node:path";
27
+ import { createHash, randomBytes } from "node:crypto";
28
+ import { getConfigDir } from "./config.js";
29
+ const ENTRY_VERSION = 2;
30
+ export const STABLE_PREFIX_STORE_LIMITS = {
31
+ maxBytes: 256 * 1024 * 1024,
32
+ maxEntries: 64,
33
+ };
34
+ /** A temporary file this old belongs to a failed or killed write. */
35
+ const STALE_TEMP_MS = 60_000;
36
+ const NO_FOLLOW = fs.constants.O_NOFOLLOW ?? 0;
37
+ export class StablePrefixStore {
38
+ dir;
39
+ limits;
40
+ constructor(dir = path.join(getConfigDir(), "stable-prefixes"), limits = STABLE_PREFIX_STORE_LIMITS) {
41
+ this.dir = dir;
42
+ this.limits = limits;
43
+ }
44
+ /** The session's entry for `owner`; an unreadable or invalid one is deleted. */
45
+ load(sessionId, owner) {
46
+ if (!this.privateDir(false))
47
+ return undefined;
48
+ const text = readPrivateFile(this.entryPath(sessionId, owner), this.limits.maxBytes);
49
+ if (text === undefined)
50
+ return undefined;
51
+ const entry = parseEntry(text);
52
+ if (entry?.sessionId === sessionId && entry.owner === owner)
53
+ return entry;
54
+ this.delete(sessionId, owner);
55
+ return undefined;
56
+ }
57
+ /** Replace the session's entry, then evict down to the limits. */
58
+ save(sessionId, owner, prefix, source, now = Date.now()) {
59
+ if (!this.privateDir(true))
60
+ return;
61
+ const entry = {
62
+ version: ENTRY_VERSION, sessionId, owner, savedAt: now, prefix,
63
+ ...(source ? { source } : {}),
64
+ };
65
+ if (!isEntry(entry))
66
+ return;
67
+ const file = this.entryPath(sessionId, owner);
68
+ if (writeAtomically(this.dir, file, JSON.stringify(entry)))
69
+ this.evict(now);
70
+ }
71
+ delete(sessionId, owner) {
72
+ unlinkQuietly(this.entryPath(sessionId, owner));
73
+ }
74
+ /** Where the entry for this session and owner lives. */
75
+ entryPath(sessionId, owner) {
76
+ const name = createHash("sha256").update(`${owner}\0${sessionId}`).digest("hex");
77
+ return path.join(this.dir, `${name.slice(0, 40)}.json`);
78
+ }
79
+ /**
80
+ * The directory exists (created when `create`), is a real directory (not a
81
+ * symlink) owned by this user, and is mode 700 (repaired when it is not).
82
+ */
83
+ privateDir(create) {
84
+ try {
85
+ if (create)
86
+ fs.mkdirSync(this.dir, { recursive: true, mode: 0o700 });
87
+ const stat = fs.lstatSync(this.dir);
88
+ if (!stat.isDirectory() || !ownedByMe(stat))
89
+ return false;
90
+ if ((stat.mode & 0o777) !== 0o700)
91
+ fs.chmodSync(this.dir, 0o700);
92
+ return true;
93
+ }
94
+ catch {
95
+ return false;
96
+ }
97
+ }
98
+ /** Drop stale temporaries, then the oldest saves until the limits fit. */
99
+ evict(now) {
100
+ const { entries, pendingBytes } = this.scan(now);
101
+ entries.sort((a, b) => b.savedAt - a.savedAt);
102
+ let bytes = pendingBytes;
103
+ entries.forEach((entry, i) => {
104
+ bytes += entry.bytes;
105
+ if (i >= this.limits.maxEntries || bytes > this.limits.maxBytes)
106
+ unlinkQuietly(entry.file);
107
+ });
108
+ }
109
+ /**
110
+ * Entry files with size and save time. Symlinks and stale temporaries are
111
+ * removed; recent temporaries (writes in progress) count toward the size.
112
+ */
113
+ scan(now) {
114
+ const entries = [];
115
+ let pendingBytes = 0;
116
+ for (const name of safeReaddir(this.dir)) {
117
+ const file = path.join(this.dir, name);
118
+ const stat = safeLstat(file);
119
+ if (!stat)
120
+ continue;
121
+ if (stat.isSymbolicLink()) {
122
+ unlinkQuietly(file);
123
+ }
124
+ else if (!stat.isFile()) {
125
+ continue;
126
+ }
127
+ else if (name.endsWith(".tmp")) {
128
+ if (now - stat.mtimeMs >= STALE_TEMP_MS)
129
+ unlinkQuietly(file);
130
+ else
131
+ pendingBytes += stat.size;
132
+ }
133
+ else if (name.endsWith(".json")) {
134
+ entries.push({ file, bytes: stat.size, savedAt: savedAtOf(file, stat.mtimeMs) });
135
+ }
136
+ }
137
+ return { entries, pendingBytes };
138
+ }
139
+ }
140
+ /** Write through an exclusive, unpredictable temporary file and rename it. */
141
+ function writeAtomically(dir, file, text) {
142
+ const tmp = path.join(dir, `.${randomBytes(12).toString("hex")}.tmp`);
143
+ try {
144
+ const fd = fs.openSync(tmp, fs.constants.O_WRONLY | fs.constants.O_CREAT | fs.constants.O_EXCL | NO_FOLLOW, 0o600);
145
+ try {
146
+ fs.writeFileSync(fd, text);
147
+ }
148
+ finally {
149
+ fs.closeSync(fd);
150
+ }
151
+ fs.renameSync(tmp, file);
152
+ return true;
153
+ }
154
+ catch {
155
+ unlinkQuietly(tmp);
156
+ return false;
157
+ }
158
+ }
159
+ /** A regular file of ours, opened without following a symlink; mode repaired to 600. */
160
+ function readPrivateFile(file, maxBytes) {
161
+ let fd;
162
+ try {
163
+ fd = fs.openSync(file, fs.constants.O_RDONLY | NO_FOLLOW);
164
+ }
165
+ catch {
166
+ return undefined;
167
+ }
168
+ try {
169
+ const stat = fs.fstatSync(fd);
170
+ if (!stat.isFile() || !ownedByMe(stat) || stat.size > maxBytes)
171
+ return undefined;
172
+ if ((stat.mode & 0o777) !== 0o600)
173
+ fs.fchmodSync(fd, 0o600);
174
+ return fs.readFileSync(fd, "utf-8");
175
+ }
176
+ catch {
177
+ return undefined;
178
+ }
179
+ finally {
180
+ fs.closeSync(fd);
181
+ }
182
+ }
183
+ function ownedByMe(stat) {
184
+ return typeof process.getuid !== "function" || stat.uid === process.getuid();
185
+ }
186
+ function unlinkQuietly(file) {
187
+ try {
188
+ fs.unlinkSync(file);
189
+ }
190
+ catch {
191
+ // Already gone.
192
+ }
193
+ }
194
+ function safeReaddir(dir) {
195
+ try {
196
+ return fs.readdirSync(dir);
197
+ }
198
+ catch {
199
+ return [];
200
+ }
201
+ }
202
+ function safeLstat(file) {
203
+ try {
204
+ return fs.lstatSync(file);
205
+ }
206
+ catch {
207
+ return undefined;
208
+ }
209
+ }
210
+ /**
211
+ * An entry's savedAt, read from its head without parsing the whole (possibly
212
+ * multi-MB) file; the file mtime when the head does not say.
213
+ */
214
+ function savedAtOf(file, mtimeMs) {
215
+ try {
216
+ const fd = fs.openSync(file, fs.constants.O_RDONLY | NO_FOLLOW);
217
+ try {
218
+ const head = Buffer.alloc(512);
219
+ const n = fs.readSync(fd, head, 0, head.length, 0);
220
+ const match = /"savedAt":(\d+)/.exec(head.subarray(0, n).toString("utf-8"));
221
+ return match ? Number(match[1]) : mtimeMs;
222
+ }
223
+ finally {
224
+ fs.closeSync(fd);
225
+ }
226
+ }
227
+ catch {
228
+ return mtimeMs;
229
+ }
230
+ }
231
+ function parseEntry(text) {
232
+ try {
233
+ const entry = JSON.parse(text);
234
+ return isEntry(entry) ? entry : undefined;
235
+ }
236
+ catch {
237
+ return undefined;
238
+ }
239
+ }
240
+ function isEntry(v) {
241
+ return isObject(v) && v.version === ENTRY_VERSION &&
242
+ typeof v.sessionId === "string" && nonEmptyString(v.owner) &&
243
+ Number.isFinite(v.savedAt) && isPrefix(v.prefix) &&
244
+ (v.source === undefined || isPageSource(v.source));
245
+ }
246
+ /** The prefix's invariants: the identity of a covered history, and well-formed bytes. */
247
+ function isPrefix(p) {
248
+ return isObject(p) && nonEmptyString(p.originalSystemHash) &&
249
+ Array.isArray(p.originalPrefixHashes) && p.originalPrefixHashes.length > 0 &&
250
+ p.originalPrefixHashes.every(nonEmptyString) &&
251
+ Array.isArray(p.compressedMessages) && p.compressedMessages.length > 0 &&
252
+ p.compressedMessages.every(isMessage) &&
253
+ typeof p.hasCompressedSystem === "boolean" &&
254
+ (p.hasCompressedSystem ? isSystem(p.compressedSystem) : p.compressedSystem == null) &&
255
+ positiveNumber(p.targetTokens) && typeof p.explicitTarget === "boolean" &&
256
+ Number.isInteger(p.modelContextLimit) && p.modelContextLimit > 0;
257
+ }
258
+ /** An Anthropic message: user/assistant role, string or typed-block content. */
259
+ function isMessage(m) {
260
+ const message = m;
261
+ return isObject(message) && (message.role === "user" || message.role === "assistant") &&
262
+ (typeof message.content === "string" || isBlockList(message.content));
263
+ }
264
+ /** A top-level system prompt: a string or typed blocks. */
265
+ function isSystem(system) {
266
+ return typeof system === "string" || isBlockList(system);
267
+ }
268
+ function isBlockList(value) {
269
+ return Array.isArray(value) && value.length > 0 && value.every(isBlock);
270
+ }
271
+ /**
272
+ * A content block of a type a compressed prefix can carry, with that type's
273
+ * required fields. Anything else (an unknown type, a missing field) fails, so
274
+ * the entry is deleted and the session rebuilds instead of sending a body
275
+ * Anthropic rejects.
276
+ */
277
+ function isBlock(value) {
278
+ if (!isObject(value))
279
+ return false;
280
+ const block = value;
281
+ if (block.cache_control !== undefined && !isObject(block.cache_control))
282
+ return false;
283
+ // Maps, not object literals: a type such as "toString" or "__proto__" must
284
+ // not find an inherited property.
285
+ const check = typeof block.type === "string" ? BLOCK_CHECKS.get(block.type) : undefined;
286
+ return check !== undefined && check(block);
287
+ }
288
+ const BLOCK_CHECKS = new Map([
289
+ ["text", (b) => typeof b.text === "string"],
290
+ ["image", (b) => isSource(b.source, IMAGE_SOURCES)],
291
+ ["document", (b) => isSource(b.source, DOCUMENT_SOURCES)],
292
+ ["tool_use", (b) => nonEmptyString(b.id) && nonEmptyString(b.name) && isObject(b.input)],
293
+ ["tool_result", (b) => nonEmptyString(b.tool_use_id) &&
294
+ (b.content === undefined || typeof b.content === "string" || isBlockList(b.content)) &&
295
+ (b.is_error === undefined || typeof b.is_error === "boolean")],
296
+ ["thinking", (b) => typeof b.thinking === "string" && typeof b.signature === "string"],
297
+ ["redacted_thinking", (b) => nonEmptyString(b.data)],
298
+ ]);
299
+ /** Source kinds and their required string fields. */
300
+ const IMAGE_SOURCES = new Map([
301
+ ["base64", ["media_type", "data"]], ["url", ["url"]], ["file", ["file_id"]],
302
+ ]);
303
+ const DOCUMENT_SOURCES = new Map([
304
+ ...IMAGE_SOURCES, ["text", ["media_type", "data"]],
305
+ ]);
306
+ function isSource(value, kinds) {
307
+ if (!isObject(value))
308
+ return false;
309
+ const source = value;
310
+ const fields = typeof source.type === "string" ? kinds.get(source.type) : undefined;
311
+ return fields !== undefined && fields.every((field) => ownString(source, field));
312
+ }
313
+ /** An own (not inherited) non-empty string property. */
314
+ function ownString(record, key) {
315
+ return Object.hasOwn(record, key) && nonEmptyString(record[key]);
316
+ }
317
+ function isPageSource(s) {
318
+ return isObject(s) && typeof s.url === "string" && /^https?:\/\//.test(s.url) &&
319
+ nonEmptyString(s.index) && typeof s.compressed === "boolean";
320
+ }
321
+ function isObject(value) {
322
+ return !!value && typeof value === "object" && !Array.isArray(value);
323
+ }
324
+ function nonEmptyString(value) {
325
+ return typeof value === "string" && value.length > 0;
326
+ }
327
+ function positiveNumber(value) {
328
+ return typeof value === "number" && Number.isFinite(value) && value > 0;
329
+ }
330
+ //# sourceMappingURL=prefix-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prefix-store.js","sourceRoot":"","sources":["../src/prefix-store.ts"],"names":[],"mappings":"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"}
package/dist/proxy.d.ts CHANGED
@@ -43,6 +43,7 @@ import { estimateRequestTokens } from "./request-sizing.js";
43
43
  import { MemtreeClient } from "./memtree.js";
44
44
  import type { MemtreeLinkPlacement } from "./cli-args.js";
45
45
  import { type MemtreeLinkStore } from "./memtree-links.js";
46
+ import type { StablePrefixStore } from "./prefix-store.js";
46
47
  import type { NewestTreeLookup } from "./memtree-newest.js";
47
48
  import type { TranscriptUsageSource } from "./transcript-usage.js";
48
49
  import type { ProjectMeta } from "./project-meta.js";
@@ -145,6 +146,12 @@ export interface ProxyOptions {
145
146
  * the CLI passes the default store under ~/.claude-code-infinite.
146
147
  */
147
148
  memtreeLinkStore?: MemtreeLinkStore;
149
+ /**
150
+ * Where each session's adopted compressed prefix is persisted so a resumed
151
+ * session's first turn can ride it (prefix-store.ts). Omitted means no
152
+ * persistence (tests); the CLI passes the store under ~/.claude-code-infinite.
153
+ */
154
+ stablePrefixStore?: StablePrefixStore;
148
155
  /**
149
156
  * The session's newest completed tree, asked of the server, which the link
150
157
  * shown to the user points at (the compress page is only the tree the memory
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"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"}