claude-code-infinite 1.0.28 → 1.0.30

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 (121) hide show
  1. package/README.md +96 -19
  2. package/dist/auto-update.d.ts +2 -0
  3. package/dist/auto-update.d.ts.map +1 -1
  4. package/dist/auto-update.js +4 -0
  5. package/dist/auto-update.js.map +1 -1
  6. package/dist/claude-auth.d.ts +27 -2
  7. package/dist/claude-auth.d.ts.map +1 -1
  8. package/dist/claude-auth.js +76 -4
  9. package/dist/claude-auth.js.map +1 -1
  10. package/dist/claude-install.d.ts +73 -0
  11. package/dist/claude-install.d.ts.map +1 -0
  12. package/dist/claude-install.js +142 -0
  13. package/dist/claude-install.js.map +1 -0
  14. package/dist/claude-plan-warning.d.ts +70 -7
  15. package/dist/claude-plan-warning.d.ts.map +1 -1
  16. package/dist/claude-plan-warning.js +152 -8
  17. package/dist/claude-plan-warning.js.map +1 -1
  18. package/dist/cli-lifecycle.d.ts +45 -1
  19. package/dist/cli-lifecycle.d.ts.map +1 -1
  20. package/dist/cli-lifecycle.js +59 -0
  21. package/dist/cli-lifecycle.js.map +1 -1
  22. package/dist/cli-main.js +136 -29
  23. package/dist/cli-main.js.map +1 -1
  24. package/dist/count-tokens.d.ts +15 -0
  25. package/dist/count-tokens.d.ts.map +1 -1
  26. package/dist/count-tokens.js +23 -1
  27. package/dist/count-tokens.js.map +1 -1
  28. package/dist/diagnostics-schema.d.ts +4 -0
  29. package/dist/diagnostics-schema.d.ts.map +1 -1
  30. package/dist/diagnostics-schema.js +25 -0
  31. package/dist/diagnostics-schema.js.map +1 -1
  32. package/dist/diagnostics.d.ts +24 -1
  33. package/dist/diagnostics.d.ts.map +1 -1
  34. package/dist/diagnostics.js +86 -5
  35. package/dist/diagnostics.js.map +1 -1
  36. package/dist/final-index.d.ts +7 -1
  37. package/dist/final-index.d.ts.map +1 -1
  38. package/dist/final-index.js +10 -3
  39. package/dist/final-index.js.map +1 -1
  40. package/dist/image-refs.d.ts +51 -0
  41. package/dist/image-refs.d.ts.map +1 -0
  42. package/dist/image-refs.js +169 -0
  43. package/dist/image-refs.js.map +1 -0
  44. package/dist/image-tokens.d.ts +37 -0
  45. package/dist/image-tokens.d.ts.map +1 -0
  46. package/dist/image-tokens.js +158 -0
  47. package/dist/image-tokens.js.map +1 -0
  48. package/dist/install-ping.d.ts +54 -0
  49. package/dist/install-ping.d.ts.map +1 -0
  50. package/dist/install-ping.js +177 -0
  51. package/dist/install-ping.js.map +1 -0
  52. package/dist/memtree-body.d.ts +52 -0
  53. package/dist/memtree-body.d.ts.map +1 -0
  54. package/dist/memtree-body.js +99 -0
  55. package/dist/memtree-body.js.map +1 -0
  56. package/dist/memtree-finder.d.ts +2 -1
  57. package/dist/memtree-finder.d.ts.map +1 -1
  58. package/dist/memtree-finder.js +4 -5
  59. package/dist/memtree-finder.js.map +1 -1
  60. package/dist/memtree-mcp.d.ts.map +1 -1
  61. package/dist/memtree-mcp.js +17 -7
  62. package/dist/memtree-mcp.js.map +1 -1
  63. package/dist/memtree-times.d.ts +35 -0
  64. package/dist/memtree-times.d.ts.map +1 -0
  65. package/dist/memtree-times.js +166 -0
  66. package/dist/memtree-times.js.map +1 -0
  67. package/dist/memtree-tools.d.ts +12 -0
  68. package/dist/memtree-tools.d.ts.map +1 -1
  69. package/dist/memtree-tools.js +63 -7
  70. package/dist/memtree-tools.js.map +1 -1
  71. package/dist/memtree.d.ts +77 -3
  72. package/dist/memtree.d.ts.map +1 -1
  73. package/dist/memtree.js +267 -53
  74. package/dist/memtree.js.map +1 -1
  75. package/dist/paused-session.d.ts.map +1 -1
  76. package/dist/paused-session.js +11 -8
  77. package/dist/paused-session.js.map +1 -1
  78. package/dist/postinstall.d.ts +2 -0
  79. package/dist/postinstall.d.ts.map +1 -0
  80. package/dist/postinstall.js +4 -0
  81. package/dist/postinstall.js.map +1 -0
  82. package/dist/prefix-store.d.ts +2 -0
  83. package/dist/prefix-store.d.ts.map +1 -1
  84. package/dist/prefix-store.js +4 -0
  85. package/dist/prefix-store.js.map +1 -1
  86. package/dist/prepared-compression.d.ts +78 -0
  87. package/dist/prepared-compression.d.ts.map +1 -0
  88. package/dist/prepared-compression.js +127 -0
  89. package/dist/prepared-compression.js.map +1 -0
  90. package/dist/proxy.d.ts +370 -13
  91. package/dist/proxy.d.ts.map +1 -1
  92. package/dist/proxy.js +790 -92
  93. package/dist/proxy.js.map +1 -1
  94. package/dist/rate-limit.d.ts +64 -0
  95. package/dist/rate-limit.d.ts.map +1 -0
  96. package/dist/rate-limit.js +126 -0
  97. package/dist/rate-limit.js.map +1 -0
  98. package/dist/reqlog.d.ts +66 -2
  99. package/dist/reqlog.d.ts.map +1 -1
  100. package/dist/reqlog.js.map +1 -1
  101. package/dist/request-sizing.d.ts +21 -2
  102. package/dist/request-sizing.d.ts.map +1 -1
  103. package/dist/request-sizing.js +57 -11
  104. package/dist/request-sizing.js.map +1 -1
  105. package/dist/route-identity.d.ts +27 -0
  106. package/dist/route-identity.d.ts.map +1 -1
  107. package/dist/route-identity.js +88 -8
  108. package/dist/route-identity.js.map +1 -1
  109. package/dist/token-estimate.d.ts +3 -20
  110. package/dist/token-estimate.d.ts.map +1 -1
  111. package/dist/token-estimate.js +9 -50
  112. package/dist/token-estimate.js.map +1 -1
  113. package/dist/tool-output-store.d.ts +12 -0
  114. package/dist/tool-output-store.d.ts.map +1 -0
  115. package/dist/tool-output-store.js +146 -0
  116. package/dist/tool-output-store.js.map +1 -0
  117. package/dist/tool-result-truncation.d.ts +32 -0
  118. package/dist/tool-result-truncation.d.ts.map +1 -0
  119. package/dist/tool-result-truncation.js +135 -0
  120. package/dist/tool-result-truncation.js.map +1 -0
  121. package/package.json +2 -1
@@ -0,0 +1,166 @@
1
+ /**
2
+ * When MemTree messages were written, as the MCP tools show it to the model.
3
+ *
4
+ * Trees record each input block's `[earliest, latest]` message time (UTC ISO;
5
+ * the page JSON's `block_times`, polychat memtree_node_times.py). A leaf's time
6
+ * is its block's; a branch's spans its leaves'. Shown compactly in the user's
7
+ * local time zone (the system's, as this process sees it; UTC when it has none):
8
+ * `2026-09-30 14:02–14:40 PT`, one date when both ends share it. Trees from
9
+ * before times were recorded have none, and nothing is shown for them.
10
+ */
11
+ /** An ISO 8601 time with a zone (`Z` or an offset); anything else is not a time here. */
12
+ const ISO_TIME_RE = /^\d{4}-\d\d-\d\dT\d\d:\d\d(:\d\d(\.\d+)?)?(Z|[+-]\d\d:?\d\d)$/;
13
+ /** A well-formed span (two ISO times with a zone), earliest first; else undefined. */
14
+ export function timeSpan(value) {
15
+ if (!Array.isArray(value) || value.length !== 2)
16
+ return undefined;
17
+ const [start, end] = value;
18
+ if (!isIsoTime(start) || !isIsoTime(end))
19
+ return undefined;
20
+ return Date.parse(start) <= Date.parse(end) ? [start, end] : [end, start];
21
+ }
22
+ function isIsoTime(value) {
23
+ return typeof value === "string" && ISO_TIME_RE.test(value) && !Number.isNaN(Date.parse(value));
24
+ }
25
+ /** `block_times` (`{"3": [start, end]}`) as block -> span; malformed entries dropped. */
26
+ export function blockTimes(raw) {
27
+ const out = new Map();
28
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
29
+ return out;
30
+ for (const [key, value] of Object.entries(raw)) {
31
+ const span = timeSpan(value);
32
+ if (/^\d+$/.test(key) && span)
33
+ out.set(Number(key), span);
34
+ }
35
+ return out;
36
+ }
37
+ /** The span covering both. */
38
+ export function mergeSpans(a, b) {
39
+ if (!a)
40
+ return b;
41
+ return [
42
+ Date.parse(b[0]) < Date.parse(a[0]) ? b[0] : a[0],
43
+ Date.parse(b[1]) > Date.parse(a[1]) ? b[1] : a[1],
44
+ ];
45
+ }
46
+ let displayZone;
47
+ /**
48
+ * Show times in ``zone`` instead of this process's (undefined: back to the
49
+ * process's). For tests: Windows ICU ignores a TZ set at runtime.
50
+ */
51
+ export function setDisplayTimeZone(zone) {
52
+ displayZone = zone;
53
+ }
54
+ /** The zone times are shown in: the override, else this process's, else "UTC". */
55
+ export function localTimeZone() {
56
+ if (displayZone)
57
+ return displayZone;
58
+ try {
59
+ return Intl.DateTimeFormat().resolvedOptions().timeZone || "UTC";
60
+ }
61
+ catch {
62
+ return "UTC";
63
+ }
64
+ }
65
+ /**
66
+ * `2026-09-30 14:02–14:40 PT` (same day), `2026-09-30 23:50–2026-10-01 00:10 PT`,
67
+ * `2026-09-30 14:02 PT` (same minute); undefined for an unknown or malformed span.
68
+ */
69
+ export function formatTimeSpan(span, zone = localTimeZone()) {
70
+ const valid = timeSpan(span);
71
+ if (!valid)
72
+ return undefined;
73
+ const [from, to] = valid.map((t) => new Date(t));
74
+ const parts = zoneParts(zone);
75
+ const [start, end] = [parts.format(from), parts.format(to)];
76
+ const [startLabel, endLabel] = [labelAt(parts, from), labelAt(parts, to)];
77
+ // By instant, not by text: when clocks go back, an hour apart can read the same.
78
+ if (Math.floor(from.getTime() / 60_000) === Math.floor(to.getTime() / 60_000)) {
79
+ return `${start} ${startLabel}`;
80
+ }
81
+ if (startLabel !== endLabel) {
82
+ const tail = start.slice(0, 10) === end.slice(0, 10) ? end.slice(11) : end;
83
+ return `${start} ${startLabel}–${tail} ${endLabel}`;
84
+ }
85
+ if (start.slice(0, 10) === end.slice(0, 10))
86
+ return `${start}–${end.slice(11)} ${endLabel}`;
87
+ return `${start}–${end} ${endLabel}`;
88
+ }
89
+ const HOUR_MS = 3_600_000;
90
+ /**
91
+ * The zone's name at ``date``: the generic one (`PT`), except within an hour of a
92
+ * DST change, where the clock repeats or skips and only `PDT` / `PST` say which.
93
+ */
94
+ function labelAt(parts, date) {
95
+ const offset = parts.offsetLabel(date);
96
+ const near = [date.getTime() - HOUR_MS, date.getTime() + HOUR_MS]
97
+ .some((t) => parts.offsetLabel(new Date(t)) !== offset);
98
+ return near ? offset : parts.label(date);
99
+ }
100
+ /** One time (`2026-09-30 14:02 PT`), or undefined when it does not parse. */
101
+ export function formatTime(value, zone) {
102
+ return value ? formatTimeSpan([value, value], zone) : undefined;
103
+ }
104
+ /** `[2026-09-30 14:02–14:40 PT]` with a leading space, or "" when unknown. */
105
+ export function bracketedSpan(span, zone) {
106
+ const text = formatTimeSpan(span, zone);
107
+ return text ? ` [${text}]` : "";
108
+ }
109
+ const UTC_ZONES = new Set(["UTC", "Etc/UTC", "Etc/GMT", "GMT", "Etc/Universal", "Etc/Zulu"]);
110
+ /** Formatters per zone: a read_node with many children formats many spans. */
111
+ const ZONE_FORMATS = new Map();
112
+ function zoneParts(zone) {
113
+ const resolved = UTC_ZONES.has(zone) ? "UTC" : zone;
114
+ let format = ZONE_FORMATS.get(resolved);
115
+ if (!format) {
116
+ format = buildZoneFormat(resolved);
117
+ if (ZONE_FORMATS.size > 16)
118
+ ZONE_FORMATS.clear();
119
+ ZONE_FORMATS.set(resolved, format);
120
+ }
121
+ return format;
122
+ }
123
+ function buildZoneFormat(zone) {
124
+ let fmt;
125
+ try {
126
+ fmt = new Intl.DateTimeFormat("en-US", {
127
+ timeZone: zone, year: "numeric", month: "2-digit", day: "2-digit",
128
+ hour: "2-digit", minute: "2-digit", hourCycle: "h23",
129
+ });
130
+ }
131
+ catch {
132
+ return zoneParts("UTC"); // an unknown zone name: say UTC, labelled
133
+ }
134
+ const names = zone === "UTC" ? undefined : zoneNames(zone);
135
+ return {
136
+ format: (date) => {
137
+ const p = Object.fromEntries(fmt.formatToParts(date).map((x) => [x.type, x.value]));
138
+ return `${p.year}-${p.month}-${p.day} ${p.hour}:${p.minute}`;
139
+ },
140
+ label: (date) => (names ? zoneLabel(names, date) : "UTC"),
141
+ offsetLabel: (date) => (names ? zoneLabel({ short: names.short }, date) : "UTC"),
142
+ };
143
+ }
144
+ /** The zone's name formatters; a style this ICU build lacks is left out. */
145
+ function zoneNames(zone) {
146
+ const names = {};
147
+ for (const style of ["shortGeneric", "short"]) {
148
+ try {
149
+ names[style] = new Intl.DateTimeFormat("en-US", { timeZone: zone, timeZoneName: style });
150
+ }
151
+ catch {
152
+ // older ICU: no shortGeneric
153
+ }
154
+ }
155
+ return names;
156
+ }
157
+ /** `PT`, `ET`, `MST`; else the offset form (`GMT+2`) where no short name exists. */
158
+ function zoneLabel(names, date) {
159
+ const name = (fmt) => fmt?.formatToParts(date).find((p) => p.type === "timeZoneName")?.value ?? "";
160
+ const generic = name(names.shortGeneric);
161
+ if (/^[A-Z]{2,5}$/.test(generic))
162
+ return generic;
163
+ const short = name(names.short);
164
+ return short === "GMT+0" || !short ? "UTC" : short;
165
+ }
166
+ //# sourceMappingURL=memtree-times.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memtree-times.js","sourceRoot":"","sources":["../src/memtree-times.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,11 @@
10
10
  * Search is plain lexical matching: query terms, case-insensitive substring,
11
11
  * ranked by how many distinct terms a node covers, then how many one line
12
12
  * covers, then total hits. No embeddings and no server calls.
13
+ *
14
+ * Nodes, hits and read lines are dated by when their messages were written
15
+ * (the page's `block_times`, memtree-times.ts) when the tree has times.
13
16
  */
17
+ import { type TimeSpan } from "./memtree-times.js";
14
18
  export interface MemtreeNode {
15
19
  id: number;
16
20
  s?: string;
@@ -37,9 +41,15 @@ export declare class MemtreeIndex {
37
41
  readonly nodes: Map<number, MemtreeNode>;
38
42
  readonly parent: Map<number, number>;
39
43
  readonly depth: Map<number, number>;
44
+ /** Block -> when its messages were written; empty for trees without times. */
45
+ readonly blockSpans: Map<number, TimeSpan>;
46
+ /** Node -> its span: a leaf's block's, a branch's merged over its subtree. */
47
+ readonly times: Map<number, TimeSpan>;
40
48
  private readonly lines;
41
49
  private readonly lowerLines;
42
50
  constructor(page: MemtreePageJson);
51
+ /** Leaves take their block's span; then each span merges into its parent's, children first. */
52
+ private spanNodes;
43
53
  get blockCount(): number;
44
54
  blockLines(block: number): string[] | undefined;
45
55
  /** Root first, the node's parent last. */
@@ -74,6 +84,8 @@ export interface SearchHit {
74
84
  id: number;
75
85
  summary: string;
76
86
  }[];
87
+ /** When the node's messages were written, `[earliest, latest]` UTC. */
88
+ times?: TimeSpan;
77
89
  }
78
90
  /** A node address, `<tree>#<node id>` (search hits carry them). */
79
91
  export declare function parseNodeAddress(value: unknown): {
@@ -1 +1 @@
1
- {"version":3,"file":"memtree-tools.d.ts","sourceRoot":"","sources":["../src/memtree-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memtree-tools.d.ts","sourceRoot":"","sources":["../src/memtree-tools.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,11 @@
10
10
  * Search is plain lexical matching: query terms, case-insensitive substring,
11
11
  * ranked by how many distinct terms a node covers, then how many one line
12
12
  * covers, then total hits. No embeddings and no server calls.
13
+ *
14
+ * Nodes, hits and read lines are dated by when their messages were written
15
+ * (the page's `block_times`, memtree-times.ts) when the tree has times.
13
16
  */
17
+ import { blockTimes, bracketedSpan, formatTime, formatTimeSpan, mergeSpans, timeSpan, } from "./memtree-times.js";
14
18
  export const SEARCH_DEFAULT_LIMIT = 10;
15
19
  export const SEARCH_MAX_LIMIT = 50;
16
20
  export const READ_LINES_MAX_LINES = 400;
@@ -24,6 +28,10 @@ export class MemtreeIndex {
24
28
  nodes = new Map();
25
29
  parent = new Map();
26
30
  depth = new Map();
31
+ /** Block -> when its messages were written; empty for trees without times. */
32
+ blockSpans;
33
+ /** Node -> its span: a leaf's block's, a branch's merged over its subtree. */
34
+ times = new Map();
27
35
  lines;
28
36
  lowerLines;
29
37
  constructor(page) {
@@ -34,11 +42,13 @@ export class MemtreeIndex {
34
42
  }
35
43
  // Breadth-first from the root; a node reached twice keeps its first
36
44
  // (shallowest) parent, so a malformed tree cannot loop.
45
+ const order = [];
37
46
  if (this.nodes.has(0)) {
38
47
  this.depth.set(0, 0);
39
48
  const queue = [0];
40
49
  while (queue.length) {
41
50
  const id = queue.shift();
51
+ order.push(id);
42
52
  for (const child of this.nodes.get(id)?.k ?? []) {
43
53
  if (this.depth.has(child) || !this.nodes.has(child))
44
54
  continue;
@@ -50,6 +60,23 @@ export class MemtreeIndex {
50
60
  }
51
61
  this.lines = (page.blocks ?? []).map(splitLines);
52
62
  this.lowerLines = this.lines.map((block) => block.map((line) => line.toLowerCase()));
63
+ this.blockSpans = blockTimes(page.block_times);
64
+ if (this.blockSpans.size)
65
+ this.spanNodes(order);
66
+ }
67
+ /** Leaves take their block's span; then each span merges into its parent's, children first. */
68
+ spanNodes(order) {
69
+ for (const node of this.nodes.values()) {
70
+ const span = this.isLeaf(node) ? this.blockSpans.get(node.l[0]) : undefined;
71
+ if (span)
72
+ this.times.set(node.id, span);
73
+ }
74
+ for (const id of order.reverse()) {
75
+ const span = this.times.get(id);
76
+ const parent = this.parent.get(id);
77
+ if (span && parent !== undefined)
78
+ this.times.set(parent, mergeSpans(this.times.get(parent), span));
79
+ }
53
80
  }
54
81
  get blockCount() {
55
82
  return this.lines.length;
@@ -137,6 +164,7 @@ export class MemtreeIndex {
137
164
  line,
138
165
  text: snippet(this.lines[range.block][line - 1], terms),
139
166
  }));
167
+ const times = this.times.get(node.id);
140
168
  return {
141
169
  id: node.id,
142
170
  depth: this.depth.get(node.id),
@@ -146,6 +174,7 @@ export class MemtreeIndex {
146
174
  lineHits: lineMatches.length,
147
175
  score,
148
176
  ...(range ? { range } : {}),
177
+ ...(times ? { times } : {}),
149
178
  snippets,
150
179
  };
151
180
  }
@@ -248,6 +277,7 @@ export function serverSearchHits(body) {
248
277
  snippets: Array.isArray(raw.snippets) ? raw.snippets : [],
249
278
  ...(typeof raw.address === "string" ? { address: raw.address } : {}),
250
279
  ...(Array.isArray(raw.path) ? { path: raw.path } : {}),
280
+ ...(timeSpan(raw.times) ? { times: timeSpan(raw.times) } : {}),
251
281
  });
252
282
  }
253
283
  return { hits, terms: json.terms.map(String) };
@@ -269,6 +299,7 @@ export function formatSearchHits(hits, query, terms, tree, tailHits = []) {
269
299
  hit.leaf ? "leaf" : "branch",
270
300
  hit.depth !== undefined ? `depth ${hit.depth}` : undefined,
271
301
  hit.range ? `block ${hit.range.block} lines ${hit.range.start}-${hit.range.end}` : undefined,
302
+ formatTimeSpan(hit.times),
272
303
  `matched ${hit.matchedTerms.join(", ")}`,
273
304
  hit.leaf ? `${hit.lineHits} matching line${hit.lineHits === 1 ? "" : "s"}` : undefined,
274
305
  ]
@@ -298,7 +329,8 @@ export function formatNode(index, id, tree) {
298
329
  }
299
330
  const out = [
300
331
  `node ${id} · ${index.isLeaf(node) ? "leaf" : "branch"}` +
301
- (index.depth.has(id) ? ` · depth ${index.depth.get(id)}` : ""),
332
+ (index.depth.has(id) ? ` · depth ${index.depth.get(id)}` : "") +
333
+ bracketedSpan(index.times.get(id)),
302
334
  `summary: ${node.s ?? ""}`,
303
335
  ];
304
336
  if (index.isLeaf(node)) {
@@ -314,15 +346,31 @@ export function formatNode(index, id, tree) {
314
346
  }
315
347
  const children = (node.k ?? []).filter((child) => index.nodes.has(child));
316
348
  if (children.length) {
317
- out.push("", `children (${children.length}):`);
349
+ const dated = childrenDiffer(index, id, children);
350
+ const same = dated ? "" : ", same time as the node";
351
+ out.push("", `children (${children.length}${same}):`);
318
352
  for (const child of children) {
319
353
  const c = index.nodes.get(child);
320
354
  const tag = index.isLeaf(c) ? `leaf, block ${c.l[0]} lines ${c.l[1]}-${c.l[2]}` : "branch";
321
- out.push(` node ${child} (${tag}): ${truncate(c.s ?? "", SUMMARY_CHARS)}`);
355
+ const when = dated ? bracketedSpan(index.times.get(child)) : "";
356
+ out.push(` node ${child} (${tag})${when}: ${truncate(c.s ?? "", SUMMARY_CHARS)}`);
322
357
  }
323
358
  }
324
359
  return out.join("\n");
325
360
  }
361
+ /**
362
+ * Whether the children's times say more than the node's own: when every child
363
+ * spans exactly the node's time (one block), the header already says it.
364
+ */
365
+ function childrenDiffer(index, id, children) {
366
+ const own = index.times.get(id);
367
+ if (!own)
368
+ return true; // nothing in the header: show what the children know
369
+ return children.some((child) => {
370
+ const span = index.times.get(child);
371
+ return !span || span[0] !== own[0] || span[1] !== own[1];
372
+ });
373
+ }
326
374
  export function formatLines(index, block, start, end, tree) {
327
375
  if (![block, start, end].every(Number.isInteger)) {
328
376
  throw new ToolInputError("read_lines: block, start and end must be integers");
@@ -332,8 +380,15 @@ export function formatLines(index, block, start, end, tree) {
332
380
  throw new ToolInputError(`read_lines: this MemTree page carries no transcript blocks${note}`);
333
381
  }
334
382
  const lines = index.blockLines(block);
383
+ // A just-built tree whose transcript is still uploading: say so, not just "no block".
384
+ // Its missing blocks are past the array's end or, inside it, empty placeholders.
385
+ const pending = index.page.blocks_pending === true && typeof index.page.source_note === "string"
386
+ ? ` (${index.page.source_note})` : "";
387
+ if (pending && lines && lines.length === 0) {
388
+ throw new ToolInputError(`read_lines: block ${block} is not readable yet${pending}`);
389
+ }
335
390
  if (!lines) {
336
- throw new ToolInputError(`read_lines: no block ${block} (blocks 0-${index.blockCount - 1})`);
391
+ throw new ToolInputError(`read_lines: no block ${block} (blocks 0-${index.blockCount - 1})${pending}`);
337
392
  }
338
393
  if (start < 1)
339
394
  throw new ToolInputError("read_lines: start is 1-based and must be at least 1");
@@ -372,7 +427,7 @@ export function formatLines(index, block, start, end, tree) {
372
427
  notes.unshift(`capped at ${READ_LINES_MAX_LINES} lines / ${READ_LINES_MAX_CHARS} chars per call: showed ${start}-${shown}; ` +
373
428
  `continue with read_lines {${treeArg(tree)}"block": ${block}, "start": ${shown + 1}, "end": ${wanted}}`);
374
429
  }
375
- const header = `block ${block} lines ${start}-${shown} (line number, tab, exact text):`;
430
+ const header = `block ${block}${bracketedSpan(index.blockSpans.get(block))} lines ${start}-${shown} (line number, tab, exact text):`;
376
431
  return [header, ...out, ...(notes.length ? ["", `[${notes.join("; ")}]`] : [])].join("\n");
377
432
  }
378
433
  /** `tail_hits` of the server's tree search; [] when absent or malformed. */
@@ -401,7 +456,7 @@ export function formatTailHits(hits, tree) {
401
456
  return [];
402
457
  const out = ["", `Also in the newest messages, which no tree covers yet (${hits.length}):`];
403
458
  for (const hit of hits) {
404
- const head = [`message ${hit.i}`, hit.k, hit.at, `matched ${hit.matched_terms.join(", ")}`]
459
+ const head = [`message ${hit.i}`, hit.k, formatTime(hit.at) ?? hit.at, `matched ${hit.matched_terms.join(", ")}`]
405
460
  .filter(Boolean)
406
461
  .join(" · ");
407
462
  out.push("", `[${head}]`);
@@ -434,7 +489,8 @@ export function formatTail(body, tree) {
434
489
  for (const m of messages) {
435
490
  const state = m.state === "in_newer_tree" ? " · in a newer tree" : "";
436
491
  const cut = m.shortened ? " · shortened" : "";
437
- out.push("", `[${m.i}] ${m.k ?? "message"}${m.at ? ` · ${m.at}` : ""}${state}${cut}`, m.x ?? "");
492
+ const at = m.at ? ` · ${formatTime(m.at) ?? m.at}` : "";
493
+ out.push("", `[${m.i}] ${m.k ?? "message"}${at}${state}${cut}`, m.x ?? "");
438
494
  }
439
495
  const notes = [];
440
496
  const shortened = messages.filter((m) => m.shortened);
@@ -1 +1 @@
1
- {"version":3,"file":"memtree-tools.js","sourceRoot":"","sources":["../src/memtree-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memtree-tools.js","sourceRoot":"","sources":["../src/memtree-tools.ts"],"names":[],"mappings":"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"}