claude-code-infinite 1.0.32 → 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 (99) hide show
  1. package/README.md +34 -11
  2. package/dist/cli-args.d.ts +7 -0
  3. package/dist/cli-args.d.ts.map +1 -1
  4. package/dist/cli-args.js +19 -0
  5. package/dist/cli-args.js.map +1 -1
  6. package/dist/cli-main.js +28 -10
  7. package/dist/cli-main.js.map +1 -1
  8. package/dist/count-tokens.d.ts +7 -3
  9. package/dist/count-tokens.d.ts.map +1 -1
  10. package/dist/count-tokens.js +6 -2
  11. package/dist/count-tokens.js.map +1 -1
  12. package/dist/hooks.d.ts +21 -1
  13. package/dist/hooks.d.ts.map +1 -1
  14. package/dist/hooks.js +36 -6
  15. package/dist/hooks.js.map +1 -1
  16. package/dist/host-session.d.ts +12 -0
  17. package/dist/host-session.d.ts.map +1 -0
  18. package/dist/host-session.js +12 -0
  19. package/dist/host-session.js.map +1 -0
  20. package/dist/image-refs.d.ts +24 -2
  21. package/dist/image-refs.d.ts.map +1 -1
  22. package/dist/image-refs.js +67 -20
  23. package/dist/image-refs.js.map +1 -1
  24. package/dist/index-wait-413.d.ts +26 -0
  25. package/dist/index-wait-413.d.ts.map +1 -0
  26. package/dist/index-wait-413.js +113 -0
  27. package/dist/index-wait-413.js.map +1 -0
  28. package/dist/memtree-finder.d.ts +70 -6
  29. package/dist/memtree-finder.d.ts.map +1 -1
  30. package/dist/memtree-finder.js +150 -20
  31. package/dist/memtree-finder.js.map +1 -1
  32. package/dist/memtree-handover.d.ts +13 -0
  33. package/dist/memtree-handover.d.ts.map +1 -0
  34. package/dist/memtree-handover.js +231 -0
  35. package/dist/memtree-handover.js.map +1 -0
  36. package/dist/memtree-mcp-config.d.ts +2 -2
  37. package/dist/memtree-mcp-config.d.ts.map +1 -1
  38. package/dist/memtree-mcp-config.js +8 -5
  39. package/dist/memtree-mcp-config.js.map +1 -1
  40. package/dist/memtree-mcp.d.ts +182 -2
  41. package/dist/memtree-mcp.d.ts.map +1 -1
  42. package/dist/memtree-mcp.js +357 -38
  43. package/dist/memtree-mcp.js.map +1 -1
  44. package/dist/memtree-newest.d.ts +21 -3
  45. package/dist/memtree-newest.d.ts.map +1 -1
  46. package/dist/memtree-newest.js +43 -11
  47. package/dist/memtree-newest.js.map +1 -1
  48. package/dist/memtree-times.d.ts +33 -0
  49. package/dist/memtree-times.d.ts.map +1 -1
  50. package/dist/memtree-times.js +77 -0
  51. package/dist/memtree-times.js.map +1 -1
  52. package/dist/memtree-tools.d.ts +19 -5
  53. package/dist/memtree-tools.d.ts.map +1 -1
  54. package/dist/memtree-tools.js +97 -23
  55. package/dist/memtree-tools.js.map +1 -1
  56. package/dist/memtree.d.ts +109 -3
  57. package/dist/memtree.d.ts.map +1 -1
  58. package/dist/memtree.js +382 -21
  59. package/dist/memtree.js.map +1 -1
  60. package/dist/network-failure.d.ts +28 -0
  61. package/dist/network-failure.d.ts.map +1 -0
  62. package/dist/network-failure.js +67 -0
  63. package/dist/network-failure.js.map +1 -0
  64. package/dist/open-url.d.ts +49 -0
  65. package/dist/open-url.d.ts.map +1 -0
  66. package/dist/open-url.js +100 -0
  67. package/dist/open-url.js.map +1 -0
  68. package/dist/prefix-store.d.ts +4 -0
  69. package/dist/prefix-store.d.ts.map +1 -1
  70. package/dist/prefix-store.js +8 -4
  71. package/dist/prefix-store.js.map +1 -1
  72. package/dist/project-trees.d.ts +15 -7
  73. package/dist/project-trees.d.ts.map +1 -1
  74. package/dist/project-trees.js +20 -9
  75. package/dist/project-trees.js.map +1 -1
  76. package/dist/proxy.d.ts +125 -1
  77. package/dist/proxy.d.ts.map +1 -1
  78. package/dist/proxy.js +838 -74
  79. package/dist/proxy.js.map +1 -1
  80. package/dist/reqlog.d.ts +34 -0
  81. package/dist/reqlog.d.ts.map +1 -1
  82. package/dist/reqlog.js.map +1 -1
  83. package/dist/resume-guidance.d.ts +9 -3
  84. package/dist/resume-guidance.d.ts.map +1 -1
  85. package/dist/resume-guidance.js +9 -3
  86. package/dist/resume-guidance.js.map +1 -1
  87. package/dist/route-fallback.d.ts +77 -11
  88. package/dist/route-fallback.d.ts.map +1 -1
  89. package/dist/route-fallback.js +157 -33
  90. package/dist/route-fallback.js.map +1 -1
  91. package/dist/route-identity.d.ts +6 -2
  92. package/dist/route-identity.d.ts.map +1 -1
  93. package/dist/route-identity.js +209 -16
  94. package/dist/route-identity.js.map +1 -1
  95. package/dist/subagent-hint.d.ts +28 -0
  96. package/dist/subagent-hint.d.ts.map +1 -1
  97. package/dist/subagent-hint.js +37 -0
  98. package/dist/subagent-hint.js.map +1 -1
  99. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-wait-413.d.ts","sourceRoot":"","sources":["../src/index-wait-413.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,mFAAmF;AACnF,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C,2FAA2F;AAC3F,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,GAAG,SAAa,EACzF,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,GACjC,MAAM,GAAG,SAAS,CAapB;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,GAAG,SAAa,GACjD,MAAM,GAAG,SAAS,CAMpB"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Whether MemTree's 413 to a compress call means "the index is still catching up on this
3
+ * conversation" (waiting fixes it) rather than "this request cannot fit" (it never will),
4
+ * and how long the server expects indexing to take.
5
+ *
6
+ * Today's server (polychat index_eta.py, 2026-11-02 on) answers an indexing 413 with
7
+ * `{"detail": "Memory for this conversation is being compressed in the background ...
8
+ * Estimated indexing time left: about 4 minutes. ..."}` and `Retry-After: 240` (30 s to
9
+ * 1 h). Its 413s that waiting cannot fix (the newest message alone over the window, too
10
+ * many unindexed tokens) carry no Retry-After. An explicit `index_pending` (or
11
+ * `index_behind`) boolean in the body, top level or in `detail`, decides when present.
12
+ * Older servers sent the background-compression text with a range ("5 to 9.9 hours").
13
+ * Since polychat 53459dbd every over-context 413 also says `X-Polychat-Index-Pending`:
14
+ * `true` when a live index job will cover what did not fit (then this is a wait, whatever
15
+ * else the answer says); `false` or absent decides nothing (a newest message too large
16
+ * says false while the server may still shrink it), and the rules above apply.
17
+ * Retry-After can be far too low (an incident's said 30 s; the job took ~14 min), so a
18
+ * wait goes on while MemTree keeps saying so (route-fallback.ts extends it).
19
+ */
20
+ /** The background-indexing sentence every indexing 413 starts with (polychat constants). */
21
+ const INDEXING_TEXT = "being compressed in the background";
22
+ /** Seconds assumed when an indexing 413 says it is behind but not for how long. */
23
+ export const UNKNOWN_INDEX_WAIT_SECONDS = 60;
24
+ /** Seconds of indexing the server expects before this request fits; undefined: no wait. */
25
+ export function indexWaitFrom413(status, bodyText, retryAfter, now = Date.now(), indexPendingHeader) {
26
+ if (status !== 413)
27
+ return undefined;
28
+ const fields = bodyFields(bodyText);
29
+ const flag = indexPendingHeader?.trim().toLowerCase() === "true" ? true
30
+ : explicitFlag(fields);
31
+ if (flag === false)
32
+ return undefined;
33
+ const headerSeconds = retryAfterSeconds(retryAfter, now);
34
+ const detail = detailText(fields, bodyText);
35
+ if (flag !== true && headerSeconds === undefined && !detail.includes(INDEXING_TEXT)) {
36
+ return undefined;
37
+ }
38
+ return headerSeconds ?? bodySeconds(fields) ?? textSeconds(detail) ??
39
+ UNKNOWN_INDEX_WAIT_SECONDS;
40
+ }
41
+ /** A Retry-After header in seconds (delta-seconds or an HTTP date), if valid. */
42
+ export function retryAfterSeconds(value, now = Date.now()) {
43
+ const text = value?.trim();
44
+ if (!text)
45
+ return undefined;
46
+ if (/^\d+(\.\d+)?$/.test(text))
47
+ return positive(Number(text));
48
+ const at = Date.parse(text);
49
+ return Number.isFinite(at) ? positive(Math.ceil((at - now) / 1000)) : undefined;
50
+ }
51
+ /** The body's top-level object and its `detail` object, when they are objects. */
52
+ function bodyFields(bodyText) {
53
+ let parsed;
54
+ try {
55
+ parsed = JSON.parse(bodyText);
56
+ }
57
+ catch {
58
+ return [];
59
+ }
60
+ if (!isObject(parsed))
61
+ return [];
62
+ return isObject(parsed.detail) ? [parsed, parsed.detail] : [parsed];
63
+ }
64
+ function explicitFlag(fields) {
65
+ for (const field of fields) {
66
+ for (const key of ["index_pending", "index_behind"]) {
67
+ if (typeof field[key] === "boolean")
68
+ return field[key];
69
+ }
70
+ }
71
+ return undefined;
72
+ }
73
+ function bodySeconds(fields) {
74
+ for (const field of fields) {
75
+ for (const key of ["retry_after_seconds", "index_seconds_left", "seconds_left"]) {
76
+ const value = field[key];
77
+ if (typeof value === "number" && Number.isFinite(value) && value > 0)
78
+ return value;
79
+ }
80
+ }
81
+ return undefined;
82
+ }
83
+ function detailText(fields, bodyText) {
84
+ for (const field of fields) {
85
+ for (const key of ["detail", "message"]) {
86
+ if (typeof field[key] === "string")
87
+ return field[key];
88
+ }
89
+ }
90
+ return fields.length ? "" : bodyText;
91
+ }
92
+ const UNIT_SECONDS = { second: 1, minute: 60, hour: 3600 };
93
+ /**
94
+ * The time in an indexing 413's text: "about 4 minutes", "about 1.5 hours", "< 1 minute",
95
+ * or an older server's range ("5 to 9.9 hours": its upper end).
96
+ */
97
+ function textSeconds(text) {
98
+ if (/<\s*1 minute/.test(text))
99
+ return 60;
100
+ const range = /(\d+(?:\.\d+)?)\s*(second|minute|hour)?s?\s+to\s+(\d+(?:\.\d+)?)\s*(second|minute|hour)s?/
101
+ .exec(text);
102
+ if (range)
103
+ return Number(range[3]) * UNIT_SECONDS[range[4]];
104
+ const about = /about\s+(\d+(?:\.\d+)?)\s*(second|minute|hour)s?/.exec(text);
105
+ return about ? Number(about[1]) * UNIT_SECONDS[about[2]] : undefined;
106
+ }
107
+ function positive(value) {
108
+ return Number.isFinite(value) && value > 0 ? value : undefined;
109
+ }
110
+ function isObject(value) {
111
+ return !!value && typeof value === "object" && !Array.isArray(value);
112
+ }
113
+ //# sourceMappingURL=index-wait-413.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-wait-413.js","sourceRoot":"","sources":["../src/index-wait-413.ts"],"names":[],"mappings":"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"}
@@ -31,10 +31,12 @@ export interface FinderSession {
31
31
  completion?: number;
32
32
  conversation?: number | null;
33
33
  };
34
+ /** `times`: when the tree's messages were written, first to last (servers from 2026-11). */
34
35
  latest_tree?: {
35
36
  request_id: string;
36
37
  ref?: string;
37
38
  links?: FinderTreeLinks;
39
+ times?: unknown;
38
40
  } | null;
39
41
  /** How it ended, from the newest stored record (polychat memtree_session_endings.py). */
40
42
  ending?: FinderSessionEnding | null;
@@ -61,7 +63,15 @@ export interface FinderHit {
61
63
  start: number;
62
64
  end: number;
63
65
  } | null;
66
+ /** The lines joined; older servers send only this. */
64
67
  snippet?: string | null;
68
+ /** The 1-3 lines densest in the query's words, by block line (servers from 2026-11-09). */
69
+ snippets?: {
70
+ line: number;
71
+ text: string;
72
+ }[] | null;
73
+ /** The leaf's own summary (servers from 2026-11-09). */
74
+ summary?: string | null;
65
75
  score?: number;
66
76
  embedding_model?: string;
67
77
  /** `<tree>#<node>`: the matched node, for read_node / read_lines `node`. */
@@ -83,29 +93,83 @@ export interface FinderSearchResponse {
83
93
  query?: string;
84
94
  mode?: string;
85
95
  hits?: FinderHit[];
86
- groups?: {
87
- embedding_model: string;
88
- hits: FinderHit[];
89
- has_more?: boolean;
90
- }[];
96
+ groups?: FinderSearchGroup[];
91
97
  next_cursor?: string | null;
92
98
  matches_capped?: boolean;
93
99
  charged?: boolean;
94
100
  /** "any_word": no passage held every word, so these hold some of them. */
95
101
  relaxed?: string;
102
+ /** On an empty first page across sessions (servers from 2026-11): what was searched. */
103
+ coverage?: FinderSearchCoverage;
104
+ }
105
+ /** One embedding model's ranking. */
106
+ export interface FinderSearchGroup {
107
+ embedding_model: string;
108
+ hits: FinderHit[];
109
+ has_more?: boolean;
110
+ /** The ranking ran out of time, so only the newest trees were ranked (servers from 2026-11-09). */
111
+ partial?: {
112
+ trees?: number;
113
+ of_trees?: number;
114
+ since?: string | null;
115
+ note?: string;
116
+ } | null;
117
+ }
118
+ /** Counts and times of the caller's own sessions; never content (polychat memtree_search_coverage.py). */
119
+ export interface FinderSearchCoverage {
120
+ sessions?: number;
121
+ newest_indexed_at?: string | null;
122
+ this_session?: {
123
+ state?: string;
124
+ indexed_at?: string | null;
125
+ percent?: number;
126
+ tokens?: number;
127
+ start_tokens?: number;
128
+ };
96
129
  }
97
130
  /** Query string for `/memtree/sessions` from the tool's arguments. */
98
131
  export declare function sessionsQuery(args: Record<string, unknown>): string;
99
132
  /** Query string for `/memtree/search`; `mode` defaults to text; `tree` scopes it to one tree. */
100
133
  export declare function searchQuery(args: Record<string, unknown>, tree?: string): string;
134
+ /**
135
+ * A search across all sessions that the server refused as too broad (422: it
136
+ * did not finish in time) is retried over the newest days, widest window first.
137
+ * Measured on staging (2026-11-06): ~28% of agent searches came back 422 after
138
+ * 9-16 s. On its busiest account an unscoped search took ~10.5 s even for a word in
139
+ * no session (the cost is finding the account's trees, not matching), 14 and 7 days
140
+ * still timed out, and 2-3 days answered in ~0.5 s. The agents' own retries succeeded
141
+ * once they added a recent `since`. Only when the caller set no tree, time bounds or
142
+ * cursor.
143
+ */
144
+ export declare const RECENT_SEARCH_WINDOWS_DAYS: readonly [3, 1];
145
+ /** The narrowed retry's arguments for `days`, or undefined when no retry applies. */
146
+ export declare function recentSearchArgs(args: Record<string, unknown>, tree: string | undefined, status: number, nowMs: number, days: number): Record<string, unknown> | undefined;
147
+ /** Added to the refusal when no narrowed window answered either. */
148
+ export declare function recentSearchFailedNote(triedDays: readonly number[], last: {
149
+ status: number;
150
+ error?: string;
151
+ }): string;
152
+ /** Said first in a narrowed retry's answer, so the model knows what was left out. */
153
+ export declare function recentSearchNote(since: string, days: number, pages?: boolean): string;
101
154
  export declare function searchMode(value: unknown): (typeof FINDER_SEARCH_MODES)[number];
102
- export declare function formatSessions(body: FinderSessionsResponse, args: Record<string, unknown>): string;
155
+ export declare function formatSessions(body: FinderSessionsResponse, args: Record<string, unknown>,
156
+ /** The calling Claude Code session: its entry is marked "(this session)". */
157
+ currentSessionId?: string): string;
158
+ /** Said after a charged first page's heading (the server's `charged`). */
159
+ export declare const CHARGED_NOTE = "charged: one search";
103
160
  export declare function formatSearchResults(body: FinderSearchResponse, args: Record<string, unknown>): string;
104
161
  /** Ancestors root first, ` › `-joined, each with its address when the tree is known. */
105
162
  export declare function formatPath(path: {
106
163
  id: number;
107
164
  summary: string;
108
165
  }[], ref?: string): string;
166
+ /** What an empty search covered: sessions searched, the newest index, this session's state. */
167
+ export declare function coverageLines(coverage: FinderSearchCoverage | undefined): string[];
168
+ /**
169
+ * Why a session may not be found, said on every empty search across sessions: only
170
+ * ccc sessions are indexed, and a session's newest messages wait for its next index.
171
+ */
172
+ export declare const NOT_SEARCHED_NOTE: string;
109
173
  /** "how it ended" lines of a session: last user message, then the tools and last reply after it. */
110
174
  export declare function endingLines(ending: FinderSessionEnding | null | undefined): string[];
111
175
  //# sourceMappingURL=memtree-finder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memtree-finder.d.ts","sourceRoot":"","sources":["../src/memtree-finder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memtree-finder.d.ts","sourceRoot":"","sources":["../src/memtree-finder.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@
13
13
  * and says which `read_lines` / `read_node`
14
14
  * call opens it: those tools take the tree id as `tree`.
15
15
  */
16
- import { formatTime, formatTimeSpan } from "./memtree-times.js";
16
+ import { bracketedSpan, formatTime, formatTimeSpan, MissingTimeNote } from "./memtree-times.js";
17
17
  import { ToolInputError } from "./memtree-tools.js";
18
18
  export const SESSIONS_DEFAULT_LIMIT = 20;
19
19
  export const SESSIONS_MAX_LIMIT = 100;
@@ -21,6 +21,9 @@ export const FINDER_SEARCH_DEFAULT_LIMIT = 10;
21
21
  export const FINDER_SEARCH_MAX_LIMIT = 50;
22
22
  export const FINDER_SEARCH_MODES = ["vector", "text"];
23
23
  const SNIPPET_CHARS = 400;
24
+ /** One `snippets` line of a cross-session hit (the server cuts them at ~240 characters). */
25
+ const SNIPPET_LINE_CHARS = 300;
26
+ const SUMMARY_CHARS = 300;
24
27
  const TITLE_CHARS = 300;
25
28
  const PATH_SUMMARY_CHARS = 80;
26
29
  /** Query string for `/memtree/sessions` from the tool's arguments. */
@@ -51,6 +54,52 @@ export function searchQuery(args, tree) {
51
54
  addLimit(params, args.limit, FINDER_SEARCH_MAX_LIMIT);
52
55
  return `?${params.toString()}`;
53
56
  }
57
+ /**
58
+ * A search across all sessions that the server refused as too broad (422: it
59
+ * did not finish in time) is retried over the newest days, widest window first.
60
+ * Measured on staging (2026-11-06): ~28% of agent searches came back 422 after
61
+ * 9-16 s. On its busiest account an unscoped search took ~10.5 s even for a word in
62
+ * no session (the cost is finding the account's trees, not matching), 14 and 7 days
63
+ * still timed out, and 2-3 days answered in ~0.5 s. The agents' own retries succeeded
64
+ * once they added a recent `since`. Only when the caller set no tree, time bounds or
65
+ * cursor.
66
+ */
67
+ export const RECENT_SEARCH_WINDOWS_DAYS = [3, 1];
68
+ const DAY_MS = 24 * 60 * 60 * 1000;
69
+ /** The narrowed retry's arguments for `days`, or undefined when no retry applies. */
70
+ export function recentSearchArgs(args, tree, status, nowMs, days) {
71
+ if (status !== 422 || tree)
72
+ return undefined;
73
+ if (isSet(args.since) || isSet(args.until) || isSet(args.cursor))
74
+ return undefined;
75
+ // Vector search is left to the agent: its 422 already says how to narrow it (neither is
76
+ // charged, a search is charged only when its first page is delivered).
77
+ if (searchMode(args.mode) === "vector")
78
+ return undefined;
79
+ const since = new Date(nowMs - days * DAY_MS).toISOString().slice(0, 10);
80
+ return { ...args, since };
81
+ }
82
+ /** Added to the refusal when no narrowed window answered either. */
83
+ export function recentSearchFailedNote(triedDays, last) {
84
+ const windows = triedDays.map((d) => (d === 1 ? "1 day" : `${d} days`)).join(", then ");
85
+ const how = last.status === 422 ? "too broad as well; add a rarer word, project or tree"
86
+ : `that failed: ${last.error ?? `HTTP ${last.status}`}`;
87
+ return ` (ccc also tried the last ${windows}: ${how})`;
88
+ }
89
+ /** Said first in a narrowed retry's answer, so the model knows what was left out. */
90
+ export function recentSearchNote(since, days, pages = false) {
91
+ // The server binds a cursor to the search's filters, `since` included.
92
+ const more = pages
93
+ ? ` To page on, add "since": "${since}" to the same arguments with the cursor below.`
94
+ : "";
95
+ return (`Searching all sessions matched too much to finish in time, so this searched only ` +
96
+ `sessions active since ${since} (the last ${days === 1 ? "day" : `${days} days`}). ` +
97
+ "For older work, search again " +
98
+ "with since/until, project or tree, or a rarer word (a name, id or path)." + more);
99
+ }
100
+ function isSet(value) {
101
+ return value !== undefined && value !== null && value !== "";
102
+ }
54
103
  export function searchMode(value) {
55
104
  if (value === undefined || value === null || value === "")
56
105
  return "text";
@@ -76,7 +125,9 @@ function addLimit(params, value, max) {
76
125
  throw new ToolInputError("limit must be a number");
77
126
  params.set("limit", String(Math.max(1, Math.min(max, Math.floor(n)))));
78
127
  }
79
- export function formatSessions(body, args) {
128
+ export function formatSessions(body, args,
129
+ /** The calling Claude Code session: its entry is marked "(this session)". */
130
+ currentSessionId) {
80
131
  const sessions = body.sessions ?? [];
81
132
  if (!sessions.length) {
82
133
  return args.cursor
@@ -85,7 +136,8 @@ export function formatSessions(body, args) {
85
136
  }
86
137
  const out = [`${sessions.length} session${sessions.length === 1 ? "" : "s"}, most recently active first:`];
87
138
  sessions.forEach((s, i) => {
88
- out.push("", `[${i + 1}] ${oneLine(s.title, TITLE_CHARS) || "(no MemTree yet)"}`);
139
+ const mine = currentSessionId && s.session_id === currentSessionId ? " (this session)" : "";
140
+ out.push("", `[${i + 1}]${mine} ${oneLine(s.title, TITLE_CHARS) || "(no MemTree yet)"}`);
89
141
  const when = [s.first_at, s.last_at].map(shortTime).filter(Boolean);
90
142
  out.push(" " +
91
143
  [
@@ -105,39 +157,50 @@ export function formatSessions(body, args) {
105
157
  const tree = s.latest_tree;
106
158
  if (tree?.request_id) {
107
159
  const ref = tree.ref ?? tree.request_id;
108
- out.push(` latest tree: ${tree.request_id}${tree.links?.url ? ` (${tree.links.url})` : ""}; ` +
160
+ out.push(` latest tree: ${tree.request_id}${bracketedSpan(tree.times)}${tree.links?.url ? ` (${tree.links.url})` : ""}; ` +
109
161
  `browse it with read_node {"tree": "${ref}", "id": 0}, or search it with search {"tree": "${ref}", "query": …}`);
110
162
  }
111
163
  });
112
164
  out.push("", nextPage("list", body.next_cursor));
113
165
  return out.join("\n");
114
166
  }
167
+ /** Said after a charged first page's heading (the server's `charged`). */
168
+ export const CHARGED_NOTE = "charged: one search";
115
169
  export function formatSearchResults(body, args) {
116
170
  const query = typeof body.query === "string" ? body.query : String(args.query ?? "");
117
171
  if (body.groups) {
118
- const groups = body.groups.filter((g) => g.hits?.length);
172
+ // A group ranked over only the newest trees says so even when it found nothing there.
173
+ const groups = body.groups.filter((g) => g.hits?.length || g.partial);
119
174
  if (!groups.length)
120
- return noHits(query, "vector", args);
175
+ return noHits(query, "vector", args, body.coverage, body.charged);
121
176
  const out = [
122
177
  `Semantic matches for ${JSON.stringify(query)}` +
123
- (body.charged ? " (charged: one query embedding per model)" : "") +
178
+ (body.charged ? ` (${CHARGED_NOTE})` : "") +
124
179
  ":",
125
180
  ];
126
181
  if (groups.length > 1) {
127
182
  out.push("Each embedding model is ranked on its own; scores are not comparable across groups.");
128
183
  }
184
+ const missing = new MissingTimeNote();
129
185
  for (const group of groups) {
130
186
  out.push("", `== ${group.embedding_model} ==`);
131
- group.hits.forEach((hit, i) => out.push(...formatHit(hit, i + 1)));
187
+ if (group.partial)
188
+ out.push(partialNote(group.partial));
189
+ (group.hits ?? []).forEach((hit, i) => out.push(...formatHit(hit, i + 1, missing)));
132
190
  }
133
191
  out.push("", nextPage("search", body.next_cursor), OPEN_NOTE);
134
192
  return out.join("\n");
135
193
  }
136
194
  const hits = body.hits ?? [];
137
195
  if (!hits.length)
138
- return noHits(query, "text", args);
139
- const out = [`${hits.length} text match${hits.length === 1 ? "" : "es"} for ${JSON.stringify(query)}:`];
140
- hits.forEach((hit, i) => out.push(...formatHit(hit, i + 1)));
196
+ return noHits(query, "text", args, body.coverage, body.charged);
197
+ const out = [
198
+ `${hits.length} text match${hits.length === 1 ? "" : "es"} for ${JSON.stringify(query)}` +
199
+ (body.charged ? ` (${CHARGED_NOTE})` : "") +
200
+ ":",
201
+ ];
202
+ const missing = new MissingTimeNote();
203
+ hits.forEach((hit, i) => out.push(...formatHit(hit, i + 1, missing)));
141
204
  if (body.relaxed === "any_word") {
142
205
  out.splice(1, 0, "(No passage has every word, so these have some of them, best first. Try other words, or mode \"vector\" for meaning.)");
143
206
  }
@@ -147,9 +210,9 @@ export function formatSearchResults(body, args) {
147
210
  out.push("", nextPage("search", body.next_cursor), OPEN_NOTE);
148
211
  return out.join("\n");
149
212
  }
150
- const OPEN_NOTE = "Snippets are excerpts. read_node {\"node\": <address>} opens a hit's node (its children and path; the path's " +
213
+ const OPEN_NOTE = "Snippets are excerpts (L<n>: the line in the hit's block). read_node {\"node\": <address>} opens a hit's node (its children and path; the path's " +
151
214
  "addresses lead to parents and siblings); read_lines {\"node\": <address>} returns its exact transcript lines.";
152
- function formatHit(hit, n) {
215
+ function formatHit(hit, n, missing) {
153
216
  const tree = hit.tree?.request_id;
154
217
  const ref = hit.tree?.ref ?? tree;
155
218
  const range = hit.range;
@@ -158,7 +221,7 @@ function formatHit(hit, n) {
158
221
  hit.tree?.created_at ? `tree ${tree} of ${shortTime(hit.tree.created_at)}` : `tree ${tree}`,
159
222
  hit.leaf ? `leaf ${hit.leaf}` : undefined,
160
223
  range ? `block ${range.block} lines ${range.start}-${range.end}` : undefined,
161
- formatTimeSpan(hit.times),
224
+ formatTimeSpan(hit.times) ?? missing.next(),
162
225
  typeof hit.score === "number" ? `score ${hit.score.toFixed(3)}` : undefined,
163
226
  ]
164
227
  .filter(Boolean)
@@ -168,8 +231,9 @@ function formatHit(hit, n) {
168
231
  lines.push(` page: ${hit.tree.links.url}`);
169
232
  if (hit.path?.length)
170
233
  lines.push(` path: ${formatPath(hit.path, ref)}`);
171
- if (hit.snippet)
172
- lines.push(` ${oneLine(boldToMarkdown(hit.snippet), SNIPPET_CHARS)}`);
234
+ if (hit.summary)
235
+ lines.push(` summary: ${oneLine(hit.summary, SUMMARY_CHARS)}`);
236
+ lines.push(...hitSnippets(hit));
173
237
  if (hit.address) {
174
238
  lines.push(` address: ${hit.address}`);
175
239
  }
@@ -178,23 +242,89 @@ function formatHit(hit, n) {
178
242
  }
179
243
  return lines;
180
244
  }
245
+ /** `L<n>: text` per server snippet line, else the joined `snippet` (older servers). */
246
+ function hitSnippets(hit) {
247
+ const numbered = (Array.isArray(hit.snippets) ? hit.snippets : []).filter((s) => Number.isInteger(s?.line) && typeof s?.text === "string");
248
+ if (numbered.length) {
249
+ return numbered.map((s) => ` L${s.line}: ${oneLine(boldToMarkdown(s.text), SNIPPET_LINE_CHARS)}`);
250
+ }
251
+ return hit.snippet ? [` ${oneLine(boldToMarkdown(hit.snippet), SNIPPET_CHARS)}`] : [];
252
+ }
253
+ /** Why a vector group ranked only the newest trees. */
254
+ function partialNote(partial) {
255
+ const counted = typeof partial.trees === "number" && typeof partial.of_trees === "number"
256
+ ? ` (${partial.trees} of ${partial.of_trees} trees${partial.since ? `, made since ${shortTime(partial.since)}` : ""})`
257
+ : "";
258
+ return `(Only the newest trees were ranked${counted}: the full ranking ran out of time. ` +
259
+ "There is no next page; narrow with since, until, project or tree to rank the others, or use mode \"text\".)";
260
+ }
181
261
  /** Ancestors root first, ` › `-joined, each with its address when the tree is known. */
182
262
  export function formatPath(path, ref) {
183
263
  return path
184
264
  .map((p) => `${oneLine(p.summary, PATH_SUMMARY_CHARS)}${ref ? ` (${ref}#${p.id})` : ` (node ${p.id})`}`)
185
265
  .join(" › ");
186
266
  }
187
- function noHits(query, mode, args) {
267
+ function noHits(query, mode, args, coverage, charged) {
188
268
  if (args.cursor)
189
269
  return "No more matches.";
270
+ const searched = charged ? `${mode} search, ${CHARGED_NOTE}` : `${mode} search`;
190
271
  const other = mode === "vector"
191
272
  ? 'For an exact word, id or path, try mode "text".'
192
- : 'For meaning rather than exact words, try mode "vector".';
273
+ : 'Text mode needs the exact words; for meaning, try mode "vector".';
193
274
  if (typeof args.tree === "string" && args.tree) {
194
- return `Nothing in tree ${args.tree} matches ${JSON.stringify(query)} (${mode} search). ${other}`;
275
+ return `Nothing in tree ${args.tree} matches ${JSON.stringify(query)} (${searched}). ${other}`;
276
+ }
277
+ const filtered = ["project", "since", "until"].some((k) => typeof args[k] === "string" && args[k]);
278
+ return [
279
+ `No passage in your sessions matches ${JSON.stringify(query)} (${searched}).`,
280
+ ...coverageLines(coverage),
281
+ other + (filtered ? " Or widen since/until, or drop the project filter." : ""),
282
+ NOT_SEARCHED_NOTE,
283
+ ].join(" ");
284
+ }
285
+ /** What an empty search covered: sessions searched, the newest index, this session's state. */
286
+ export function coverageLines(coverage) {
287
+ if (!coverage || typeof coverage.sessions !== "number")
288
+ return [];
289
+ const n = coverage.sessions;
290
+ const newest = shortTime(coverage.newest_indexed_at);
291
+ const lines = [
292
+ n === 0
293
+ ? "None of your sessions has a MemTree yet."
294
+ : `Searched ${n} session${n === 1 ? "" : "s"}${newest ? ` (newest indexed ${newest})` : ""}.`,
295
+ ];
296
+ const own = thisSessionLine(coverage.this_session);
297
+ if (own)
298
+ lines.push(own);
299
+ return lines;
300
+ }
301
+ function thisSessionLine(own) {
302
+ switch (own?.state) {
303
+ case "indexed": {
304
+ const at = shortTime(own.indexed_at);
305
+ return `This session is indexed${at ? ` up to ${at}` : ""}.`;
306
+ }
307
+ case "building":
308
+ return `This session isn't indexed yet: its first index is ${Math.max(0, Math.min(99, Math.floor(own.percent ?? 0)))}% done.`;
309
+ case "too_short":
310
+ return `This session isn't indexed yet: indexing starts at about ${kTokens(own.start_tokens)} tokens and it has about ${kTokens(own.tokens)}.`;
311
+ case "not_indexed":
312
+ return "This session isn't indexed yet.";
313
+ default:
314
+ return undefined;
195
315
  }
196
- return `No passage in your sessions matches ${JSON.stringify(query)} (${mode} search). ${other} Or widen since/until, or drop the project filter.`;
197
316
  }
317
+ function kTokens(n) {
318
+ const value = Math.max(0, Number(n) || 0);
319
+ return value >= 1000 ? `${Math.round(value / 1000)}k` : String(Math.round(value));
320
+ }
321
+ /**
322
+ * Why a session may not be found, said on every empty search across sessions: only
323
+ * ccc sessions are indexed, and a session's newest messages wait for its next index.
324
+ */
325
+ export const NOT_SEARCHED_NOTE = "Only ccc sessions on this MemTree account are searched (any machine); Codex and plain claude sessions are not. " +
326
+ "A session's newest turns reach search and list's ending only with its next index (often 10+ minutes later); " +
327
+ "read_lines {\"tree\": <ref>, \"tail\": true} shows its messages up to its latest user prompt.";
198
328
  function nextPage(tool, cursor) {
199
329
  return cursor
200
330
  ? `More results: call ${tool} again with the same arguments and "cursor": "${cursor}".`
@@ -1 +1 @@
1
- {"version":3,"file":"memtree-finder.js","sourceRoot":"","sources":["../src/memtree-finder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memtree-finder.js","sourceRoot":"","sources":["../src/memtree-finder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /** Days of messages a pack covers by default, and at most (the server's bounds). */
2
+ export declare const HANDOVER_DEFAULT_DAYS = 3;
3
+ export declare const HANDOVER_MAX_DAYS = 60;
4
+ export declare const USER_MESSAGES_MAX_LIMIT = 200;
5
+ /** `user_messages` arguments as the server's query string; throws on bad input. */
6
+ export declare function userMessagesQuery(args: Record<string, unknown>): URLSearchParams;
7
+ /** `handover` arguments as the server's query string; throws on bad input. */
8
+ export declare function handoverQuery(args: Record<string, unknown>): URLSearchParams;
9
+ /** The user_messages answer as text. */
10
+ export declare function formatUserMessages(body: unknown, args: Record<string, unknown>, tree?: string): string;
11
+ /** The handover pack as text: how it ended, the model's lists, then the messages. */
12
+ export declare function formatHandover(body: unknown, tree?: string): string;
13
+ //# sourceMappingURL=memtree-handover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memtree-handover.d.ts","sourceRoot":"","sources":["../src/memtree-handover.ts"],"names":[],"mappings":"AAcA,oFAAoF;AACpF,eAAO,MAAM,qBAAqB,IAAI,CAAC;AACvC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,uBAAuB,MAAM,CAAC;AA2B3C,mFAAmF;AACnF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,CAiBhF;AAED,8EAA8E;AAC9E,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,CAY5E;AAED,wCAAwC;AACxC,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAmBtG;AAED,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CA8BnE"}