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.
- package/README.md +34 -11
- package/dist/cli-args.d.ts +7 -0
- package/dist/cli-args.d.ts.map +1 -1
- package/dist/cli-args.js +19 -0
- package/dist/cli-args.js.map +1 -1
- package/dist/cli-main.js +28 -10
- package/dist/cli-main.js.map +1 -1
- package/dist/count-tokens.d.ts +7 -3
- package/dist/count-tokens.d.ts.map +1 -1
- package/dist/count-tokens.js +6 -2
- package/dist/count-tokens.js.map +1 -1
- package/dist/hooks.d.ts +21 -1
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +36 -6
- 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 +21 -3
- package/dist/memtree-newest.d.ts.map +1 -1
- package/dist/memtree-newest.js +43 -11
- 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 +109 -3
- package/dist/memtree.d.ts.map +1 -1
- package/dist/memtree.js +382 -21
- 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/open-url.d.ts +49 -0
- package/dist/open-url.d.ts.map +1 -0
- package/dist/open-url.js +100 -0
- package/dist/open-url.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 +125 -1
- package/dist/proxy.d.ts.map +1 -1
- package/dist/proxy.js +838 -74
- package/dist/proxy.js.map +1 -1
- package/dist/reqlog.d.ts +34 -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 +77 -11
- package/dist/route-fallback.d.ts.map +1 -1
- package/dist/route-fallback.js +157 -33
- 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/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
|
@@ -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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"}
|
package/dist/memtree-finder.d.ts
CHANGED
|
@@ -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
|
|
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":"AAkBA,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,mBAAmB,6BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"memtree-finder.d.ts","sourceRoot":"","sources":["../src/memtree-finder.ts"],"names":[],"mappings":"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"}
|
package/dist/memtree-finder.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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 ?
|
|
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.
|
|
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 = [
|
|
140
|
-
|
|
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.
|
|
172
|
-
lines.push(` ${oneLine(
|
|
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
|
-
: '
|
|
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)} (${
|
|
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":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AACzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AACtC,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAC9C,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAC1C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAU,CAAC;AAC/D,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,kBAAkB,GAAG,EAAE,CAAC;AA4E9B,sEAAsE;AACtE,MAAM,UAAU,aAAa,CAAC,IAA6B;IACzD,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACzC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChC,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAClC,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,WAAW,CAAC,IAA6B,EAAE,IAAa;IACtE,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QACzD,MAAM,IAAI,cAAc,CAAC,0CAA0C,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,IAAI,IAAI;QAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACzC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;IACtD,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC;IACzE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAChD,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACtD,MAAM,IAAI,cAAc,CAAC,gDAAgD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACpG,CAAC;AAED,SAAS,OAAO,CAAC,MAAuB,EAAE,IAAY,EAAE,KAAc;IACpE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,cAAc,CAAC,GAAG,IAAI,mBAAmB,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,EAAE;QAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,QAAQ,CAAC,MAAuB,EAAE,KAAc,EAAE,GAAW;IACpE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO;IAClE,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,cAAc,CAAC,wBAAwB,CAAC,CAAC;IAC5E,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAA4B,EAAE,IAA6B;IACxF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;IACrC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,MAAM;YAChB,CAAC,CAAC,mBAAmB;YACrB,CAAC,CAAC,6GAA6G,CAAC;IACpH,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,WAAW,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,+BAA+B,CAAC,CAAC;IAC3G,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACxB,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;QAClF,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpE,GAAG,CAAC,IAAI,CACN,MAAM;YACJ;gBACE,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC;gBACxC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC1C,CAAC,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,WAAW,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS;gBAC3G,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;aAC/D;iBACE,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,KAAK,CAAC,CACjB,CAAC;QACF,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,OAAO;YAAE,GAAG,CAAC,IAAI,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,CAAC,OAAO;YAAE,GAAG,CAAC,IAAI,CAAC,sBAAsB,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;QACnF,GAAG,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC;QAC3B,IAAI,IAAI,EAAE,UAAU,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC;YACxC,GAAG,CAAC,IAAI,CACN,oBAAoB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI;gBACrF,sCAAsC,GAAG,mDAAmD,GAAG,gBAAgB,CAClH,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACjD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAA0B,EAAE,IAA6B;IAC3F,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACrF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,OAAO,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QACzD,MAAM,GAAG,GAAG;YACV,wBAAwB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBAC7C,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjE,GAAG;SACN,CAAC;QACF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,GAAG,CAAC,IAAI,CAAC,qFAAqF,CAAC,CAAC;QAClG,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,KAAK,CAAC,eAAe,KAAK,CAAC,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,CAAC;QAC9D,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,cAAc,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxG,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,IAAI,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QAChC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,uHAAuH,CAAC,CAAC;IAC5I,CAAC;IACD,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,qGAAqG,CAAC,CAAC;IACtH,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,CAAC;IAC9D,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,SAAS,GACb,+GAA+G;IAC/G,+GAA+G,CAAC;AAElH,SAAS,SAAS,CAAC,GAAc,EAAE,CAAS;IAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC;IAClC,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC;IAClC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACxB,MAAM,IAAI,GAAG;QACX,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC;QAC9C,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,IAAI,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE;QAC3F,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;QACzC,KAAK,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,KAAK,UAAU,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS;QAC5E,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;QACzB,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;KAC5E;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,KAAK,CAAC,CAAC;IACf,MAAM,KAAK,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACrC,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;IACxE,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3E,IAAI,GAAG,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;IAC1F,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5C,CAAC;SAAM,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CACR,kCAAkC,GAAG,eAAe,KAAK,CAAC,KAAK,cAAc,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,GAAG,GAAG,CACjH,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,UAAU,CAAC,IAAuC,EAAE,GAAY;IAC9E,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,kBAAkB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;SACvG,IAAI,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED,SAAS,MAAM,CAAC,KAAa,EAAE,IAAY,EAAE,IAA6B;IACxE,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,kBAAkB,CAAC;IAC3C,MAAM,KAAK,GACT,IAAI,KAAK,QAAQ;QACf,CAAC,CAAC,iDAAiD;QACnD,CAAC,CAAC,yDAAyD,CAAC;IAChE,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/C,OAAO,mBAAmB,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,aAAa,KAAK,EAAE,CAAC;IACpG,CAAC;IACD,OAAO,uCAAuC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,aAAa,KAAK,oDAAoD,CAAC;AACrJ,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,MAAiC;IAC/D,OAAO,MAAM;QACX,CAAC,CAAC,sBAAsB,IAAI,iDAAiD,MAAM,IAAI;QACvF,CAAC,CAAC,kBAAkB,CAAC;AACzB,CAAC;AAED,SAAS,YAAY,CAAC,IAAwB,EAAE,EAAU,EAAE,SAAyB;IACnF,IAAI,IAAI,KAAK,qBAAqB;QAAE,OAAO,WAAW,SAAS,IAAI,EAAE,EAAE,CAAC;IACxE,IAAI,IAAI,KAAK,cAAc;QAAE,OAAO,gBAAgB,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;IACpG,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC;IACxE,OAAO,WAAW,EAAE,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,YAAY,CAAC,OAAyC;IAC7D,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;SAC3H,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1G,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC;AAC7E,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,WAAW,CAAC,MAA8C;IACxE,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IACnD,IAAI,MAAM,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,gBAAgB,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;IACpG,MAAM,KAAK,GAAG;QACZ,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;QACzE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;KACnG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClB,IAAI,KAAK,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1F,OAAO,KAAK,CAAC;AACf,CAAC;AAED,6FAA6F;AAC7F,SAAS,SAAS,CAAC,KAAgC;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;AACpC,CAAC;AAED,SAAS,OAAO,CAAC,IAA+B,EAAE,GAAW;IAC3D,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACtD,OAAO,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;AAClE,CAAC;AAED,0DAA0D;AAC1D,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC5D,CAAC"}
|
|
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"}
|