claude-code-infinite 1.0.33 → 1.0.34

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.
Files changed (87) hide show
  1. package/README.md +9 -2
  2. package/dist/cli-main.js +18 -9
  3. package/dist/cli-main.js.map +1 -1
  4. package/dist/hooks.d.ts +20 -0
  5. package/dist/hooks.d.ts.map +1 -1
  6. package/dist/hooks.js +34 -4
  7. package/dist/hooks.js.map +1 -1
  8. package/dist/host-session.d.ts +12 -0
  9. package/dist/host-session.d.ts.map +1 -0
  10. package/dist/host-session.js +12 -0
  11. package/dist/host-session.js.map +1 -0
  12. package/dist/image-refs.d.ts +24 -2
  13. package/dist/image-refs.d.ts.map +1 -1
  14. package/dist/image-refs.js +67 -20
  15. package/dist/image-refs.js.map +1 -1
  16. package/dist/index-wait-413.d.ts +26 -0
  17. package/dist/index-wait-413.d.ts.map +1 -0
  18. package/dist/index-wait-413.js +113 -0
  19. package/dist/index-wait-413.js.map +1 -0
  20. package/dist/memtree-finder.d.ts +70 -6
  21. package/dist/memtree-finder.d.ts.map +1 -1
  22. package/dist/memtree-finder.js +150 -20
  23. package/dist/memtree-finder.js.map +1 -1
  24. package/dist/memtree-handover.d.ts +13 -0
  25. package/dist/memtree-handover.d.ts.map +1 -0
  26. package/dist/memtree-handover.js +231 -0
  27. package/dist/memtree-handover.js.map +1 -0
  28. package/dist/memtree-mcp-config.d.ts +2 -2
  29. package/dist/memtree-mcp-config.d.ts.map +1 -1
  30. package/dist/memtree-mcp-config.js +8 -5
  31. package/dist/memtree-mcp-config.js.map +1 -1
  32. package/dist/memtree-mcp.d.ts +182 -2
  33. package/dist/memtree-mcp.d.ts.map +1 -1
  34. package/dist/memtree-mcp.js +357 -38
  35. package/dist/memtree-mcp.js.map +1 -1
  36. package/dist/memtree-newest.d.ts +21 -3
  37. package/dist/memtree-newest.d.ts.map +1 -1
  38. package/dist/memtree-newest.js +43 -11
  39. package/dist/memtree-newest.js.map +1 -1
  40. package/dist/memtree-times.d.ts +33 -0
  41. package/dist/memtree-times.d.ts.map +1 -1
  42. package/dist/memtree-times.js +77 -0
  43. package/dist/memtree-times.js.map +1 -1
  44. package/dist/memtree-tools.d.ts +19 -5
  45. package/dist/memtree-tools.d.ts.map +1 -1
  46. package/dist/memtree-tools.js +97 -23
  47. package/dist/memtree-tools.js.map +1 -1
  48. package/dist/memtree.d.ts +23 -0
  49. package/dist/memtree.d.ts.map +1 -1
  50. package/dist/memtree.js +78 -4
  51. package/dist/memtree.js.map +1 -1
  52. package/dist/network-failure.d.ts +28 -0
  53. package/dist/network-failure.d.ts.map +1 -0
  54. package/dist/network-failure.js +67 -0
  55. package/dist/network-failure.js.map +1 -0
  56. package/dist/prefix-store.d.ts +4 -0
  57. package/dist/prefix-store.d.ts.map +1 -1
  58. package/dist/prefix-store.js +8 -4
  59. package/dist/prefix-store.js.map +1 -1
  60. package/dist/project-trees.d.ts +15 -7
  61. package/dist/project-trees.d.ts.map +1 -1
  62. package/dist/project-trees.js +20 -9
  63. package/dist/project-trees.js.map +1 -1
  64. package/dist/proxy.d.ts +69 -1
  65. package/dist/proxy.d.ts.map +1 -1
  66. package/dist/proxy.js +467 -39
  67. package/dist/proxy.js.map +1 -1
  68. package/dist/reqlog.d.ts +24 -0
  69. package/dist/reqlog.d.ts.map +1 -1
  70. package/dist/reqlog.js.map +1 -1
  71. package/dist/resume-guidance.d.ts +9 -3
  72. package/dist/resume-guidance.d.ts.map +1 -1
  73. package/dist/resume-guidance.js +9 -3
  74. package/dist/resume-guidance.js.map +1 -1
  75. package/dist/route-fallback.d.ts +77 -11
  76. package/dist/route-fallback.d.ts.map +1 -1
  77. package/dist/route-fallback.js +157 -33
  78. package/dist/route-fallback.js.map +1 -1
  79. package/dist/route-identity.d.ts +6 -2
  80. package/dist/route-identity.d.ts.map +1 -1
  81. package/dist/route-identity.js +209 -16
  82. package/dist/route-identity.js.map +1 -1
  83. package/dist/subagent-hint.d.ts +28 -0
  84. package/dist/subagent-hint.d.ts.map +1 -1
  85. package/dist/subagent-hint.js +37 -0
  86. package/dist/subagent-hint.js.map +1 -1
  87. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"route-fallback.js","sourceRoot":"","sources":["../src/route-fallback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route-fallback.js","sourceRoot":"","sources":["../src/route-fallback.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,8 @@ export declare function stablePrefixMessageHash(message: Message): string;
9
9
  export declare function prefixIdentity(messages: Message[], kind: PrefixIdentity): {
10
10
  originalPrefixHashes: string[];
11
11
  originalMediaFreeHashes: string[];
12
+ originalPortableHashes: string[];
13
+ originalPortableMediaFreeHashes: string[];
12
14
  };
13
15
  /**
14
16
  * Whether `message` still stands where a prefix's message stood: unchanged, or the same
@@ -17,9 +19,11 @@ export declare function prefixIdentity(messages: Message[], kind: PrefixIdentity
17
19
  * becomes a placeholder, a top-level one is dropped, an emptied message becomes the
18
20
  * placeholder. That counts only when the message has no media left, so an attachment
19
21
  * replaced by another never matches; a removed one is indistinguishable from eviction.
20
- * Prefixes stored before media-free hashes existed match exactly only.
22
+ * A newer Claude Code can also render the same history differently on resume (see
23
+ * portableHash), with media kept or (no media left) evicted the same way.
24
+ * Prefixes stored before media-free or portable hashes existed match exactly only.
21
25
  */
22
- export declare function prefixMessageMatches(message: Message, kind: PrefixIdentity, exact: string, mediaFree: string | undefined): boolean;
26
+ export declare function prefixMessageMatches(message: Message, kind: PrefixIdentity, exact: string, mediaFree: string | undefined, portable?: string, portableMediaFree?: string): boolean;
23
27
  /**
24
28
  * Whether `newer` carries everything `older` does: every message of `older` after the
25
29
  * system prompt (whose billing line changes per call), in place and unchanged apart from
@@ -1 +1 @@
1
- {"version":3,"file":"route-identity.d.ts","sourceRoot":"","sources":["../src/route-identity.ts"],"names":[],"mappings":"AACA,OAAO,EAA2B,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AASnE,gFAAgF;AAChF,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEhD,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAEzD;AAED,mFAAmF;AACnF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAEhE;AAED,qEAAqE;AACrE,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,cAAc,GACxC;IAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAAC,uBAAuB,EAAE,MAAM,EAAE,CAAA;CAAE,CAMvE;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GACnF,OAAO,CAKT;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAK1E;AAED,sFAAsF;AACtF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAE7D"}
1
+ {"version":3,"file":"route-identity.d.ts","sourceRoot":"","sources":["../src/route-identity.ts"],"names":[],"mappings":"AACA,OAAO,EAA2B,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAoBnE,gFAAgF;AAChF,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEhD,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAEzD;AAED,mFAAmF;AACnF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAEhE;AAED,qEAAqE;AACrE,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,cAAc,GACxC;IACD,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAAC,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClE,sBAAsB,EAAE,MAAM,EAAE,CAAC;IAAC,+BAA+B,EAAE,MAAM,EAAE,CAAC;CAC7E,CAQA;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EACpF,QAAQ,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAC5C,OAAO,CAQT;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAK1E;AAED,sFAAsF;AACtF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAE7D"}
@@ -2,17 +2,18 @@ import { createHash } from "node:crypto";
2
2
  import { stripSystemReminderText } from "./turns.js";
3
3
  // Request messages are immutable snapshots. Weak keys retain no completed request.
4
4
  // Route installation stores these digests, not the original megabytes of history.
5
- const routeHashes = new WeakMap();
6
- const stableHashes = new WeakMap();
7
- const routeMediaFreeHashes = new WeakMap();
8
- const stableMediaFreeHashes = new WeakMap();
5
+ const hashCaches = new Map();
6
+ /** Each message's tool input JSON strings (jsonStringFields), computed once. */
7
+ const jsonFieldCache = new WeakMap();
8
+ const EXACT = { media: "keep" };
9
+ const MEDIA_FREE = { media: "drop" };
9
10
  /** Hash each incoming message once, then reuse it across route candidates/checks. */
10
11
  export function routeMessageHash(message) {
11
- return messageHash(message, false, false);
12
+ return messageHash(message, false, EXACT);
12
13
  }
13
14
  /** Stable prefixes span turns in which Claude can omit earlier thinking blocks. */
14
15
  export function stablePrefixMessageHash(message) {
15
- return messageHash(message, stableShape(message), false);
16
+ return messageHash(message, stableShape(message), EXACT);
16
17
  }
17
18
  /** The identities a prefix stores for the messages it stands for. */
18
19
  export function prefixIdentity(messages, kind) {
@@ -20,6 +21,8 @@ export function prefixIdentity(messages, kind) {
20
21
  return {
21
22
  originalPrefixHashes: messages.map(exact),
22
23
  originalMediaFreeHashes: messages.map((m) => mediaFreeHash(m, kind)),
24
+ originalPortableHashes: messages.map((m) => portableIdentity(m, kind, "keep")),
25
+ originalPortableMediaFreeHashes: messages.map((m) => portableIdentity(m, kind, "drop")),
23
26
  };
24
27
  }
25
28
  /**
@@ -29,14 +32,21 @@ export function prefixIdentity(messages, kind) {
29
32
  * becomes a placeholder, a top-level one is dropped, an emptied message becomes the
30
33
  * placeholder. That counts only when the message has no media left, so an attachment
31
34
  * replaced by another never matches; a removed one is indistinguishable from eviction.
32
- * Prefixes stored before media-free hashes existed match exactly only.
35
+ * A newer Claude Code can also render the same history differently on resume (see
36
+ * portableHash), with media kept or (no media left) evicted the same way.
37
+ * Prefixes stored before media-free or portable hashes existed match exactly only.
33
38
  */
34
- export function prefixMessageMatches(message, kind, exact, mediaFree) {
39
+ export function prefixMessageMatches(message, kind, exact, mediaFree, portable, portableMediaFree) {
35
40
  const hash = kind === "stable" ? stablePrefixMessageHash(message) : routeMessageHash(message);
36
41
  if (hash === exact)
37
42
  return true;
38
- return mediaFree !== undefined && !carriesMedia(message.content) &&
39
- mediaFreeHash(message, kind) === mediaFree;
43
+ if (portable !== undefined && portableMatches(message, kind, "keep", portable))
44
+ return true;
45
+ if (carriesMedia(message.content))
46
+ return false;
47
+ return (mediaFree !== undefined && mediaFreeHash(message, kind) === mediaFree) ||
48
+ (portableMediaFree !== undefined &&
49
+ portableMatches(message, kind, "drop", portableMediaFree));
40
50
  }
41
51
  /**
42
52
  * Whether `newer` carries everything `older` does: every message of `older` after the
@@ -55,15 +65,84 @@ export function mediaFreeMessageHash(message) {
55
65
  return mediaFreeHash(message, "route");
56
66
  }
57
67
  function mediaFreeHash(message, kind) {
58
- return messageHash(message, kind === "stable" && stableShape(message), true);
68
+ return messageHash(message, kind === "stable" && stableShape(message), MEDIA_FREE);
69
+ }
70
+ /**
71
+ * An identity that also ignores how Claude Code renders unchanged history, which differs
72
+ * between versions (2.1.302 -> 2.1.319 on 2026-11-09): a reminder inside a tool result's
73
+ * text or in a block of its own, a tool result's text as a string or a text block, a tool
74
+ * input value as the JSON string the model sent or the value a newer Claude Code parsed
75
+ * it to. Followed by the digests of the message's tool input JSON strings, so that one
76
+ * still a string is held to the very string stored (portableMatches).
77
+ */
78
+ function portableIdentity(message, kind, media) {
79
+ const fields = jsonStringFields(message);
80
+ const hash = portableHash(message, kind, media);
81
+ return fields.size ? `${hash}|${JSON.stringify([...fields].sort())}` : hash;
82
+ }
83
+ /**
84
+ * Whether `message` matches a stored portableIdentity: the same content as rendered either
85
+ * way, and each tool input it still sends as a JSON string the same string as stored there
86
+ * (so two strings that parse alike never match); one parsed since matches by its value.
87
+ */
88
+ function portableMatches(message, kind, media, stored) {
89
+ const split = stored.indexOf("|");
90
+ const hash = split === -1 ? stored : stored.slice(0, split);
91
+ if (portableHash(message, kind, media) !== hash)
92
+ return false;
93
+ const fields = jsonStringFields(message);
94
+ if (!fields.size)
95
+ return true;
96
+ let storedFields;
97
+ try {
98
+ storedFields = new Map(split === -1 ? [] : JSON.parse(stored.slice(split + 1)));
99
+ }
100
+ catch {
101
+ return false;
102
+ }
103
+ for (const [field, digest] of fields)
104
+ if (storedFields.get(field) !== digest)
105
+ return false;
106
+ return true;
107
+ }
108
+ function portableHash(message, kind, media) {
109
+ return messageHash(message, kind === "stable" && stableShape(message), { media, portable: true });
110
+ }
111
+ /**
112
+ * The message's tool input values that are JSON strings portableContent parses: tool use
113
+ * id and input key -> a digest of the string as sent.
114
+ */
115
+ function jsonStringFields(message) {
116
+ const cached = jsonFieldCache.get(message);
117
+ if (cached)
118
+ return cached;
119
+ const fields = new Map();
120
+ const content = Array.isArray(message.content) ? message.content : [];
121
+ content.forEach((part, index) => {
122
+ if (part?.type !== "tool_use" || !isPlainObject(part.input))
123
+ return;
124
+ for (const [key, value] of Object.entries(part.input)) {
125
+ if (typeof value !== "string" || parsedJson(value) === value)
126
+ continue;
127
+ const digest = createHash("sha256").update(value, "utf16le").digest("hex");
128
+ fields.set(JSON.stringify([part.id ?? `#${index}`, key]), digest);
129
+ }
130
+ });
131
+ jsonFieldCache.set(message, fields);
132
+ return fields;
59
133
  }
60
134
  function stableShape(message) {
61
135
  return message.role === "assistant" && Array.isArray(message.content);
62
136
  }
63
- function messageHash(message, stable, mediaFree) {
64
- const cache = mediaFree
65
- ? (stable ? stableMediaFreeHashes : routeMediaFreeHashes)
66
- : (stable ? stableHashes : routeHashes);
137
+ function hashCache(stable, mode) {
138
+ const key = `${stable}:${mode.media}:${mode.portable === true}`;
139
+ let cache = hashCaches.get(key);
140
+ if (!cache)
141
+ hashCaches.set(key, cache = new WeakMap());
142
+ return cache;
143
+ }
144
+ function messageHash(message, stable, mode) {
145
+ const cache = hashCache(stable, mode);
67
146
  const cached = cache.get(message);
68
147
  if (cached !== undefined)
69
148
  return cached;
@@ -73,8 +152,10 @@ function messageHash(message, stable, mediaFree) {
73
152
  }
74
153
  const blocks = typeof content === "string" ? [{ type: "text", text: content }] : content;
75
154
  const reminded = normalizeReminders(blocks);
155
+ const kept = mode.media === "drop" ? withoutMedia(reminded) : reminded;
76
156
  const normalized = {
77
- ...message, content: stripBlockCache(mediaFree ? withoutMedia(reminded) : reminded),
157
+ ...message,
158
+ content: stripBlockCache(mode.portable ? withoutToolLoadedNotes(portableContent(kept)) : kept),
78
159
  };
79
160
  const hash = createHash("sha256");
80
161
  updateCanonical(hash, normalized);
@@ -102,6 +183,118 @@ function normalizeReminders(content) {
102
183
  return part;
103
184
  });
104
185
  }
186
+ /**
187
+ * Content with rendering choices canonicalized (portableHash): text blocks left empty by
188
+ * reminder removal dropped, a tool result's string as one text block, and tool input
189
+ * values that are JSON strings of an object or array parsed (losslessly: parsedJson).
190
+ */
191
+ function portableContent(content) {
192
+ if (!Array.isArray(content))
193
+ return content;
194
+ return content.filter((part) => !isEmptyText(part)).map((part) => {
195
+ if (!part || typeof part !== "object")
196
+ return part;
197
+ if (part.type === "tool_result") {
198
+ const inner = typeof part.content === "string"
199
+ ? [{ type: "text", text: part.content }] : part.content;
200
+ return { ...part, content: portableContent(inner) };
201
+ }
202
+ if (part.type === "tool_use" && isPlainObject(part.input)) {
203
+ return { ...part, input: parsedJsonValues(part.input) };
204
+ }
205
+ return part;
206
+ });
207
+ }
208
+ /** Claude Code's note after a ToolSearch result that loaded tools; sent or not by model. */
209
+ const TOOL_LOADED_RE = /^Tool loaded\.(?:\n\[id:[^\]\n]+\])*\n?$/;
210
+ /**
211
+ * Top-level content without each "Tool loaded." note that follows the turn's tool
212
+ * results when one of them holds only tool references. On the same Claude Code
213
+ * (2.1.321), Opus 5.5 gets the note and Fable 5.2 does not, so a model switch changed
214
+ * old messages (2026-11-09). Mirrors polychat's rerender_match.portable_message.
215
+ */
216
+ function withoutToolLoadedNotes(content) {
217
+ if (!Array.isArray(content))
218
+ return content;
219
+ return content.filter((part, index) => !(isToolLoadedNote(part) && followsLoadedTools(content, index)));
220
+ }
221
+ function isToolLoadedNote(part) {
222
+ return part?.type === "text" && typeof part.text === "string" &&
223
+ TOOL_LOADED_RE.test(part.text) &&
224
+ Object.keys(part).every((key) => key === "type" || key === "text" || key === "cache_control");
225
+ }
226
+ /**
227
+ * Whether the run of tool results ending just before `index` loads tools. Earlier notes
228
+ * are skipped: two ToolSearch calls in one turn leave two notes.
229
+ */
230
+ function followsLoadedTools(content, index) {
231
+ for (let i = index - 1; i >= 0; i--) {
232
+ const part = content[i];
233
+ if (isToolLoadedNote(part))
234
+ continue;
235
+ if (part?.type !== "tool_result")
236
+ return false;
237
+ if (Array.isArray(part.content) && part.content.length > 0 &&
238
+ part.content.every((inner) => inner?.type === "tool_reference"))
239
+ return true;
240
+ }
241
+ return false;
242
+ }
243
+ function isEmptyText(part) {
244
+ return typeof part === "string" ? part === "" :
245
+ part?.type === "text" && part.text === "" &&
246
+ Object.keys(part).every((key) => key === "type" || key === "text" || key === "cache_control");
247
+ }
248
+ /** Defined properties only (Object.fromEntries keeps an own `__proto__` key as data). */
249
+ function parsedJsonValues(input) {
250
+ return Object.fromEntries(Object.entries(input).map(([key, value]) => [key, parsedJson(value)]));
251
+ }
252
+ /**
253
+ * A string holding a JSON object or array, parsed, when parsing loses nothing: the string
254
+ * is the parse's own serialization apart from whitespace between tokens. Anything lossy
255
+ * (duplicate keys, numbers past double precision or written another way, escapes
256
+ * JSON.stringify would not write) stays the string it is, so it matches only itself.
257
+ */
258
+ function parsedJson(value) {
259
+ if (typeof value !== "string" || !/^\s*[[{]/.test(value))
260
+ return value;
261
+ let parsed;
262
+ try {
263
+ parsed = JSON.parse(value);
264
+ }
265
+ catch {
266
+ return value;
267
+ }
268
+ if (!parsed || typeof parsed !== "object")
269
+ return value;
270
+ return JSON.stringify(parsed) === withoutJsonWhitespace(value) ? parsed : value;
271
+ }
272
+ /** JSON text without the whitespace between its tokens (strings kept as written). */
273
+ function withoutJsonWhitespace(text) {
274
+ let out = "";
275
+ let inString = false;
276
+ for (let i = 0; i < text.length; i++) {
277
+ const ch = text[i];
278
+ if (inString) {
279
+ out += ch;
280
+ if (ch === "\\")
281
+ out += text[++i] ?? "";
282
+ else if (ch === '"')
283
+ inString = false;
284
+ }
285
+ else if (ch === '"') {
286
+ inString = true;
287
+ out += ch;
288
+ }
289
+ else if (ch !== " " && ch !== "\n" && ch !== "\r" && ch !== "\t") {
290
+ out += ch;
291
+ }
292
+ }
293
+ return out;
294
+ }
295
+ function isPlainObject(value) {
296
+ return !!value && typeof value === "object" && !Array.isArray(value);
297
+ }
105
298
  /**
106
299
  * Claude Code's stand-ins for media it removed from its own history. After the API
107
300
  * rejects media it removes a message left empty altogether; that shifts positions and
@@ -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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"}
@@ -15,6 +15,7 @@
15
15
  * when the server named the parent's newest tree: a parent without one has
16
16
  * little to re-derive.
17
17
  */
18
+ import type { KeyCheck } from "./key-status.js";
18
19
  /**
19
20
  * Whether subagents get the hint: on while the session has the memtree
20
21
  * `search` tool, off once ccc could not register the server after all.
@@ -24,8 +25,35 @@ export declare class SubagentMemoryHint {
24
25
  disable(): void;
25
26
  get enabled(): boolean;
26
27
  }
28
+ /**
29
+ * The subagent hints for this run, or undefined: the session needs the `search` tool
30
+ * they name, and MemTree must not be known off at startup (an invalid key, or [c] at
31
+ * the payment gate). The proxy's own working check can't know that before MemTree
32
+ * answers a request, and the after-a-subagent line is given before then too.
33
+ */
34
+ export declare function subagentHintFor(s: {
35
+ tools: readonly string[];
36
+ keyCheck: KeyCheck;
37
+ memtreeOff: boolean;
38
+ }): SubagentMemoryHint | undefined;
27
39
  /** The hint for a subagent of `sessionId`, or undefined when either id looks wrong. */
28
40
  export declare function subagentMemoryHintText(sessionId: string, treeRef: string): string | undefined;
41
+ /**
42
+ * Said to the parent after each Agent/Task call: a subagent's result (returned now, or
43
+ * as a notification when it was launched in the background, which `-p` runs mostly
44
+ * are) is only its final message; its evidence is in its own MemTree tree, which
45
+ * nothing else points at. xsession benchmark 2026-11-06: parents asked for a detail
46
+ * the subagent read but didn't report searched only their own tree, resumed the
47
+ * subagent or re-ran the work; with this line they searched memory first. Worded to be
48
+ * true at launch and at completion. Constant: no cache churn beyond its own tokens.
49
+ */
50
+ export declare const SUBAGENT_RESULT_HINT: string;
51
+ /** Agent tools whose PostToolUse gets SUBAGENT_RESULT_HINT. */
52
+ export declare const AGENT_TOOL_NAMES: readonly ["Agent", "Task"];
53
+ /** Whether a PostToolUse input is an Agent/Task call (foreground, or a background launch). */
54
+ export declare function isSubagentCall(input: unknown): boolean;
55
+ /** The PostToolUse hook's answer carrying `context` to the model. */
56
+ export declare function postToolUseOutput(context: string): Record<string, unknown>;
29
57
  /** The SubagentStart hook's answer carrying `context` to the subagent. */
30
58
  export declare function subagentStartOutput(context: string): Record<string, unknown>;
31
59
  //# sourceMappingURL=subagent-hint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"subagent-hint.d.ts","sourceRoot":"","sources":["../src/subagent-hint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,IAAI,IAAI;IAIf,IAAI,OAAO,IAAI,OAAO,CAErB;CACF;AAED,uFAAuF;AACvF,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,SAAS,CAQpB;AAED,0EAA0E;AAC1E,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE5E"}
1
+ {"version":3,"file":"subagent-hint.d.ts","sourceRoot":"","sources":["../src/subagent-hint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAMhD;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,IAAI,IAAI;IAIf,IAAI,OAAO,IAAI,OAAO,CAErB;CACF;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE;IACjC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;CACrB,GAAG,kBAAkB,GAAG,SAAS,CAGjC;AAED,uFAAuF;AACvF,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,SAAS,CAQpB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,QAIqC,CAAC;AAEvE,+DAA+D;AAC/D,eAAO,MAAM,gBAAgB,4BAA6B,CAAC;AAE3D,8FAA8F;AAC9F,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAItD;AAED,qEAAqE;AACrE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE1E;AAED,0EAA0E;AAC1E,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE5E"}
@@ -31,6 +31,17 @@ export class SubagentMemoryHint {
31
31
  return !this.disabled;
32
32
  }
33
33
  }
34
+ /**
35
+ * The subagent hints for this run, or undefined: the session needs the `search` tool
36
+ * they name, and MemTree must not be known off at startup (an invalid key, or [c] at
37
+ * the payment gate). The proxy's own working check can't know that before MemTree
38
+ * answers a request, and the after-a-subagent line is given before then too.
39
+ */
40
+ export function subagentHintFor(s) {
41
+ if (!s.tools.includes("search") || s.keyCheck === "invalid" || s.memtreeOff)
42
+ return undefined;
43
+ return new SubagentMemoryHint();
44
+ }
34
45
  /** The hint for a subagent of `sessionId`, or undefined when either id looks wrong. */
35
46
  export function subagentMemoryHintText(sessionId, treeRef) {
36
47
  if (!SESSION_ID.test(sessionId) || !TREE_REF.test(treeRef))
@@ -40,6 +51,32 @@ export function subagentMemoryHintText(sessionId, treeRef) {
40
51
  "findings or commands from the parent's work, search its memory: mcp__memtree__search " +
41
52
  `with tree ${treeRef} (or without tree to search all sessions).`);
42
53
  }
54
+ /**
55
+ * Said to the parent after each Agent/Task call: a subagent's result (returned now, or
56
+ * as a notification when it was launched in the background, which `-p` runs mostly
57
+ * are) is only its final message; its evidence is in its own MemTree tree, which
58
+ * nothing else points at. xsession benchmark 2026-11-06: parents asked for a detail
59
+ * the subagent read but didn't report searched only their own tree, resumed the
60
+ * subagent or re-ran the work; with this line they searched memory first. Worded to be
61
+ * true at launch and at completion. Constant: no cache churn beyond its own tokens.
62
+ */
63
+ export const SUBAGENT_RESULT_HINT = "ccc: A subagent's result is only its final message. Its own work (files it read, " +
64
+ "commands and their output) is in MemTree, in its own tree, indexed when it ends. For a " +
65
+ "detail it didn't report, mcp__memtree__search without tree (an id, name or term from " +
66
+ "its task), then read_lines on the hit, before re-running its work.";
67
+ /** Agent tools whose PostToolUse gets SUBAGENT_RESULT_HINT. */
68
+ export const AGENT_TOOL_NAMES = ["Agent", "Task"];
69
+ /** Whether a PostToolUse input is an Agent/Task call (foreground, or a background launch). */
70
+ export function isSubagentCall(input) {
71
+ const raw = input;
72
+ if (!raw || raw.hook_event_name !== "PostToolUse")
73
+ return false;
74
+ return AGENT_TOOL_NAMES.includes(raw.tool_name);
75
+ }
76
+ /** The PostToolUse hook's answer carrying `context` to the model. */
77
+ export function postToolUseOutput(context) {
78
+ return { hookSpecificOutput: { hookEventName: "PostToolUse", additionalContext: context } };
79
+ }
43
80
  /** The SubagentStart hook's answer carrying `context` to the subagent. */
44
81
  export function subagentStartOutput(context) {
45
82
  return { hookSpecificOutput: { hookEventName: "SubagentStart", additionalContext: context } };
@@ -1 +1 @@
1
- {"version":3,"file":"subagent-hint.js","sourceRoot":"","sources":["../src/subagent-hint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,gDAAgD;AAChD,MAAM,QAAQ,GAAG,iCAAiC,CAAC;AAEnD;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IACrB,QAAQ,GAAG,KAAK,CAAC;IAEzB,OAAO;QACL,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;IACxB,CAAC;CACF;AAED,uFAAuF;AACvF,MAAM,UAAU,sBAAsB,CACpC,SAAiB,EACjB,OAAe;IAEf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7E,OAAO,CACL,sCAAsC,SAAS,iCAAiC;QAChF,GAAG,OAAO,wEAAwE;QAClF,uFAAuF;QACvF,aAAa,OAAO,4CAA4C,CACjE,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,OAAO,EAAE,kBAAkB,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,OAAO,EAAE,EAAE,CAAC;AAChG,CAAC"}
1
+ {"version":3,"file":"subagent-hint.js","sourceRoot":"","sources":["../src/subagent-hint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,gDAAgD;AAChD,MAAM,QAAQ,GAAG,iCAAiC,CAAC;AAEnD;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IACrB,QAAQ,GAAG,KAAK,CAAC;IAEzB,OAAO;QACL,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;IACxB,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,CAI/B;IACC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAC9F,OAAO,IAAI,kBAAkB,EAAE,CAAC;AAClC,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,sBAAsB,CACpC,SAAiB,EACjB,OAAe;IAEf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7E,OAAO,CACL,sCAAsC,SAAS,iCAAiC;QAChF,GAAG,OAAO,wEAAwE;QAClF,uFAAuF;QACvF,aAAa,OAAO,4CAA4C,CACjE,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAC/B,mFAAmF;IACnF,yFAAyF;IACzF,uFAAuF;IACvF,oEAAoE,CAAC;AAEvE,+DAA+D;AAC/D,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,CAAU,CAAC;AAE3D,8FAA8F;AAC9F,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,MAAM,GAAG,GAAG,KAAuC,CAAC;IACpD,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,eAAe,KAAK,aAAa;QAAE,OAAO,KAAK,CAAC;IAChE,OAAQ,gBAAuC,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC1E,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,OAAO,EAAE,kBAAkB,EAAE,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,OAAO,EAAE,EAAE,CAAC;AAC9F,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,OAAO,EAAE,kBAAkB,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,OAAO,EAAE,EAAE,CAAC;AAChG,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-code-infinite",
3
- "version": "1.0.33",
3
+ "version": "1.0.34",
4
4
  "description": "Wrapper for Claude Code CLI",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",