mind-palace-graph 0.3.0
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/INSTALL.md +387 -0
- package/README.md +602 -0
- package/dist/api.d.ts +682 -0
- package/dist/api.js +660 -0
- package/dist/api.js.map +1 -0
- package/dist/cli.d.ts +95 -0
- package/dist/cli.js +856 -0
- package/dist/cli.js.map +1 -0
- package/dist/format.d.ts +16 -0
- package/dist/format.js +199 -0
- package/dist/format.js.map +1 -0
- package/dist/fuzzy.d.ts +45 -0
- package/dist/fuzzy.js +150 -0
- package/dist/fuzzy.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +528 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-server.d.ts +24 -0
- package/dist/mcp-server.js +187 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/mind-palace.d.ts +148 -0
- package/dist/mind-palace.js +780 -0
- package/dist/mind-palace.js.map +1 -0
- package/dist/nodes.d.ts +57 -0
- package/dist/nodes.js +220 -0
- package/dist/nodes.js.map +1 -0
- package/dist/pagination.d.ts +41 -0
- package/dist/pagination.js +63 -0
- package/dist/pagination.js.map +1 -0
- package/dist/palace-format.d.ts +30 -0
- package/dist/palace-format.js +146 -0
- package/dist/palace-format.js.map +1 -0
- package/dist/rg.d.ts +34 -0
- package/dist/rg.js +288 -0
- package/dist/rg.js.map +1 -0
- package/dist/sources.d.ts +87 -0
- package/dist/sources.js +457 -0
- package/dist/sources.js.map +1 -0
- package/dist/tokens.d.ts +35 -0
- package/dist/tokens.js +95 -0
- package/dist/tokens.js.map +1 -0
- package/dist/types.d.ts +236 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/package.json +67 -0
- package/skills/mpg-context/SKILL.md +556 -0
- package/skills/mpg-context/references/anti-patterns.md +133 -0
- package/skills/mpg-context/references/integration.md +123 -0
- package/skills/mpg-context/references/mind-palace.md +217 -0
- package/skills/mpg-context/references/multi-agent.md +147 -0
- package/skills/mpg-context/references/sources.md +120 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mind-palace.js","sourceRoot":"","sources":["../src/mind-palace.ts"],"names":[],"mappings":"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"}
|
package/dist/nodes.d.ts
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node construction.
|
|
3
|
+
*
|
|
4
|
+
* Given a match and the full content of its source, build a "node":
|
|
5
|
+
* the matched line plus a pre/post context window sized in tokens.
|
|
6
|
+
*
|
|
7
|
+
* The pre/post windows are built greedily outward from the match line,
|
|
8
|
+
* so they fit exactly within the budget. This is what makes mpg
|
|
9
|
+
* different from `rg -C N`: we budget in *tokens*, not lines.
|
|
10
|
+
*/
|
|
11
|
+
import { type TokenModel } from "./tokens.js";
|
|
12
|
+
import type { Match, Node, Source } from "./types.js";
|
|
13
|
+
export interface BuildNodeOptions {
|
|
14
|
+
beforeTokens: number;
|
|
15
|
+
afterTokens: number;
|
|
16
|
+
tokens?: TokenModel;
|
|
17
|
+
/**
|
|
18
|
+
* Optional sub-line clip mode. When set, the node's match_text is
|
|
19
|
+
* trimmed to `line.slice(match_start - clipChars, match_end + clipChars)`
|
|
20
|
+
* (with ellipsis markers if anything was dropped). Pre/post context
|
|
21
|
+
* lines are also dropped entirely — clip mode means "just this
|
|
22
|
+
* snippet, nothing else." Use for the cheapest possible recall
|
|
23
|
+
* when you only need to disambiguate the match itself.
|
|
24
|
+
*/
|
|
25
|
+
clipChars?: number;
|
|
26
|
+
}
|
|
27
|
+
/** Load the full content of a source. */
|
|
28
|
+
export declare function loadSourceContent(source: Source, content: string | null): string;
|
|
29
|
+
/**
|
|
30
|
+
* Build a single context node from a match.
|
|
31
|
+
*
|
|
32
|
+
* If the source has fewer lines than the budget would allow, the node
|
|
33
|
+
* is just the available lines. If the match line is near the start
|
|
34
|
+
* or end of the file, the window is one-sided.
|
|
35
|
+
*/
|
|
36
|
+
export declare function buildNode(match: Match, content: string, options: BuildNodeOptions): Node;
|
|
37
|
+
/**
|
|
38
|
+
* Apply a total token budget to a set of nodes.
|
|
39
|
+
*
|
|
40
|
+
* - "fill": prefer more nodes, each with its configured before/after.
|
|
41
|
+
* If total exceeds budget, drop nodes from the end.
|
|
42
|
+
* - "deep": prefer fewer, deeper nodes. For v1 we still trim from the
|
|
43
|
+
* end; full deep mode would re-build nodes with scaled
|
|
44
|
+
* per-node budgets (left as a future enhancement).
|
|
45
|
+
*/
|
|
46
|
+
/**
|
|
47
|
+
* Apply a per-node window-decay curve to a list of nodes in place.
|
|
48
|
+
* Nodes earlier in the list keep more context; later nodes get
|
|
49
|
+
* progressively less. Pairs with sort modes — e.g. `sort=recent` plus
|
|
50
|
+
* `windowCurve=linear` means recent files have rich context and older
|
|
51
|
+
* files get a tighter disambiguating window.
|
|
52
|
+
*/
|
|
53
|
+
export declare function applyWindowCurve(nodes: Node[], mode: "flat" | "linear" | "log", baseBefore: number, baseAfter: number, tokenModel?: TokenModel): void;
|
|
54
|
+
export declare function applyTotalBudget(nodes: Node[], maxTokens: number | undefined, strategy: "fill" | "deep"): {
|
|
55
|
+
nodes: Node[];
|
|
56
|
+
truncated: boolean;
|
|
57
|
+
};
|
package/dist/nodes.js
ADDED
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node construction.
|
|
3
|
+
*
|
|
4
|
+
* Given a match and the full content of its source, build a "node":
|
|
5
|
+
* the matched line plus a pre/post context window sized in tokens.
|
|
6
|
+
*
|
|
7
|
+
* The pre/post windows are built greedily outward from the match line,
|
|
8
|
+
* so they fit exactly within the budget. This is what makes mpg
|
|
9
|
+
* different from `rg -C N`: we budget in *tokens*, not lines.
|
|
10
|
+
*/
|
|
11
|
+
import { readFileSync } from "node:fs";
|
|
12
|
+
import { defaultTokens } from "./tokens.js";
|
|
13
|
+
/** Load the full content of a source. */
|
|
14
|
+
export function loadSourceContent(source, content) {
|
|
15
|
+
if (content !== null)
|
|
16
|
+
return content;
|
|
17
|
+
if (source.type === "file") {
|
|
18
|
+
return readFileSync(source.id, "utf8");
|
|
19
|
+
}
|
|
20
|
+
throw new Error(`Cannot load content for source type: ${source.type}`);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Build a single context node from a match.
|
|
24
|
+
*
|
|
25
|
+
* If the source has fewer lines than the budget would allow, the node
|
|
26
|
+
* is just the available lines. If the match line is near the start
|
|
27
|
+
* or end of the file, the window is one-sided.
|
|
28
|
+
*/
|
|
29
|
+
export function buildNode(match, content, options) {
|
|
30
|
+
const model = options.tokens ?? defaultTokens;
|
|
31
|
+
// Sub-line clip mode: skip line-context entirely; clip the match line
|
|
32
|
+
// itself to a small window around the matched span. Cheapest possible
|
|
33
|
+
// node — used when the agent just needs to disambiguate matches, not
|
|
34
|
+
// read surrounding code.
|
|
35
|
+
if (typeof options.clipChars === "number" && options.clipChars >= 0) {
|
|
36
|
+
const N = options.clipChars;
|
|
37
|
+
const startChar = Math.max(0, match.match_start - N);
|
|
38
|
+
const endChar = Math.min(match.text.length, match.match_end + N);
|
|
39
|
+
const head = startChar > 0 ? "…" : "";
|
|
40
|
+
const tail = endChar < match.text.length ? "…" : "";
|
|
41
|
+
const clipped = head + match.text.slice(startChar, endChar) + tail;
|
|
42
|
+
// Re-anchor the match span to the clipped string.
|
|
43
|
+
const newStart = head.length + (match.match_start - startChar);
|
|
44
|
+
const newEnd = newStart + (match.match_end - match.match_start);
|
|
45
|
+
return {
|
|
46
|
+
id: 0,
|
|
47
|
+
source: match.source,
|
|
48
|
+
match_line: match.line,
|
|
49
|
+
start_line: match.line,
|
|
50
|
+
end_line: match.line,
|
|
51
|
+
context_before: [],
|
|
52
|
+
match_text: clipped,
|
|
53
|
+
context_after: [],
|
|
54
|
+
match_spans: [[newStart, newEnd]],
|
|
55
|
+
tokens: model.estimate(clipped),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
const allLines = content.split("\n");
|
|
59
|
+
// Convert 1-indexed match line to 0-indexed array index.
|
|
60
|
+
const matchIndex = Math.max(0, Math.min(allLines.length - 1, match.line - 1));
|
|
61
|
+
// Pre-context: lines before the match. We pass them in reverse so
|
|
62
|
+
// that the line nearest the match is at index 0 of `lines`.
|
|
63
|
+
const beforeLines = allLines.slice(0, matchIndex);
|
|
64
|
+
const beforeTrim = trimAnchoredAtStart(beforeLines, options.beforeTokens, model);
|
|
65
|
+
// Post-context: lines after the match. The line nearest the match
|
|
66
|
+
// is at index 0.
|
|
67
|
+
const afterLines = allLines.slice(matchIndex + 1);
|
|
68
|
+
const afterTrim = trimAnchoredAtStart(afterLines, options.afterTokens, model);
|
|
69
|
+
// Compute the line range covered by this node (1-indexed).
|
|
70
|
+
const startLine = matchIndex - beforeTrim.kept.length + 1;
|
|
71
|
+
const endLine = matchIndex + afterTrim.kept.length + 1;
|
|
72
|
+
const tokens = beforeTrim.spent + model.estimate(match.text) + afterTrim.spent;
|
|
73
|
+
return {
|
|
74
|
+
id: 0, // assigned by caller
|
|
75
|
+
source: match.source,
|
|
76
|
+
match_line: match.line,
|
|
77
|
+
start_line: Math.max(1, startLine),
|
|
78
|
+
end_line: endLine,
|
|
79
|
+
context_before: beforeTrim.kept,
|
|
80
|
+
match_text: match.text,
|
|
81
|
+
context_after: afterTrim.kept,
|
|
82
|
+
match_spans: [[match.match_start, match.match_end]],
|
|
83
|
+
tokens,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Trim a list of lines to fit a token budget, anchored at index 0
|
|
88
|
+
* (i.e. the line nearest the match) and growing outward.
|
|
89
|
+
*
|
|
90
|
+
* The kept lines are returned in their original order.
|
|
91
|
+
*/
|
|
92
|
+
function trimAnchoredAtStart(lines, budget, model) {
|
|
93
|
+
if (budget <= 0 || lines.length === 0) {
|
|
94
|
+
return { kept: [], spent: 0 };
|
|
95
|
+
}
|
|
96
|
+
const kept = new Array(lines.length).fill(null);
|
|
97
|
+
kept[0] = lines[0];
|
|
98
|
+
let spent = model.estimate(lines[0]);
|
|
99
|
+
let left = 0;
|
|
100
|
+
let right = 1;
|
|
101
|
+
// Track next direction to try. Alternate starting with right (further from anchor).
|
|
102
|
+
let tryRightFirst = true;
|
|
103
|
+
while (left >= 0 || right < lines.length) {
|
|
104
|
+
const canL = left >= 0;
|
|
105
|
+
const canR = right < lines.length;
|
|
106
|
+
if (!canL && !canR)
|
|
107
|
+
break;
|
|
108
|
+
let takeRight;
|
|
109
|
+
if (!canL)
|
|
110
|
+
takeRight = true;
|
|
111
|
+
else if (!canR)
|
|
112
|
+
takeRight = false;
|
|
113
|
+
else
|
|
114
|
+
takeRight = tryRightFirst;
|
|
115
|
+
if (takeRight) {
|
|
116
|
+
const cost = model.estimate(lines[right]);
|
|
117
|
+
if (spent + cost > budget) {
|
|
118
|
+
right = lines.length; // stop expanding
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
kept[right] = lines[right];
|
|
122
|
+
spent += cost;
|
|
123
|
+
right++;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
const cost = model.estimate(lines[left]);
|
|
128
|
+
if (spent + cost > budget) {
|
|
129
|
+
left = -1; // stop expanding
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
kept[left] = lines[left];
|
|
133
|
+
spent += cost;
|
|
134
|
+
left--;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
tryRightFirst = !tryRightFirst;
|
|
138
|
+
}
|
|
139
|
+
const result = [];
|
|
140
|
+
for (let i = 0; i < kept.length; i++) {
|
|
141
|
+
if (kept[i] !== null)
|
|
142
|
+
result.push(kept[i]);
|
|
143
|
+
}
|
|
144
|
+
return { kept: result, spent };
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Apply a total token budget to a set of nodes.
|
|
148
|
+
*
|
|
149
|
+
* - "fill": prefer more nodes, each with its configured before/after.
|
|
150
|
+
* If total exceeds budget, drop nodes from the end.
|
|
151
|
+
* - "deep": prefer fewer, deeper nodes. For v1 we still trim from the
|
|
152
|
+
* end; full deep mode would re-build nodes with scaled
|
|
153
|
+
* per-node budgets (left as a future enhancement).
|
|
154
|
+
*/
|
|
155
|
+
/**
|
|
156
|
+
* Apply a per-node window-decay curve to a list of nodes in place.
|
|
157
|
+
* Nodes earlier in the list keep more context; later nodes get
|
|
158
|
+
* progressively less. Pairs with sort modes — e.g. `sort=recent` plus
|
|
159
|
+
* `windowCurve=linear` means recent files have rich context and older
|
|
160
|
+
* files get a tighter disambiguating window.
|
|
161
|
+
*/
|
|
162
|
+
export function applyWindowCurve(nodes, mode, baseBefore, baseAfter, tokenModel = defaultTokens) {
|
|
163
|
+
if (mode === "flat" || nodes.length === 0)
|
|
164
|
+
return;
|
|
165
|
+
const N = nodes.length;
|
|
166
|
+
for (let i = 0; i < N; i++) {
|
|
167
|
+
const ratio = curveRatio(i, N, mode);
|
|
168
|
+
const targetBefore = Math.max(0, Math.floor(baseBefore * ratio));
|
|
169
|
+
const targetAfter = Math.max(0, Math.floor(baseAfter * ratio));
|
|
170
|
+
trimNodeContext(nodes[i], targetBefore, targetAfter, tokenModel);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
function curveRatio(rank, total, mode) {
|
|
174
|
+
if (mode === "linear") {
|
|
175
|
+
if (total <= 1)
|
|
176
|
+
return 1;
|
|
177
|
+
return Math.max(0.1, 1 - (rank / (total - 1)) * 0.9);
|
|
178
|
+
}
|
|
179
|
+
// log
|
|
180
|
+
return 1 / Math.log2(rank + 2);
|
|
181
|
+
}
|
|
182
|
+
/** Drop lines from the outer edges of a node's context until under target tokens. */
|
|
183
|
+
function trimNodeContext(node, targetBeforeTokens, targetAfterTokens, tokens) {
|
|
184
|
+
// Trim context_before from the start (oldest first) until under budget.
|
|
185
|
+
while (node.context_before.length > 0 && tokens.estimateMany(node.context_before) > targetBeforeTokens) {
|
|
186
|
+
node.context_before.shift();
|
|
187
|
+
node.start_line = Math.min(node.match_line, node.start_line + 1);
|
|
188
|
+
}
|
|
189
|
+
// Trim context_after from the end until under budget.
|
|
190
|
+
while (node.context_after.length > 0 && tokens.estimateMany(node.context_after) > targetAfterTokens) {
|
|
191
|
+
node.context_after.pop();
|
|
192
|
+
node.end_line = Math.max(node.match_line, node.end_line - 1);
|
|
193
|
+
}
|
|
194
|
+
// Recompute total tokens.
|
|
195
|
+
node.tokens =
|
|
196
|
+
tokens.estimateMany(node.context_before) +
|
|
197
|
+
tokens.estimate(node.match_text) +
|
|
198
|
+
tokens.estimateMany(node.context_after);
|
|
199
|
+
}
|
|
200
|
+
export function applyTotalBudget(nodes, maxTokens, strategy) {
|
|
201
|
+
if (!maxTokens || maxTokens <= 0) {
|
|
202
|
+
return { nodes, truncated: false };
|
|
203
|
+
}
|
|
204
|
+
const total = nodes.reduce((s, n) => s + n.tokens, 0);
|
|
205
|
+
if (total <= maxTokens) {
|
|
206
|
+
return { nodes, truncated: false };
|
|
207
|
+
}
|
|
208
|
+
// Greedy: keep adding nodes until budget exhausted.
|
|
209
|
+
void strategy; // both strategies use the same trim in v1
|
|
210
|
+
const kept = [];
|
|
211
|
+
let spent = 0;
|
|
212
|
+
for (const n of nodes) {
|
|
213
|
+
if (spent + n.tokens > maxTokens)
|
|
214
|
+
break;
|
|
215
|
+
kept.push(n);
|
|
216
|
+
spent += n.tokens;
|
|
217
|
+
}
|
|
218
|
+
return { nodes: kept, truncated: kept.length < nodes.length };
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=nodes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../src/nodes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pagination utility.
|
|
3
|
+
*
|
|
4
|
+
* Uniform pagination shape across all paginated operations:
|
|
5
|
+
* - search results (nodes)
|
|
6
|
+
* - --mp-list (stashes)
|
|
7
|
+
* - --mp-get (nodes within a stash)
|
|
8
|
+
*
|
|
9
|
+
* Pagination is opt-in via --page N. The default behavior is
|
|
10
|
+
* "give me everything" (backwards compatible). When --page is set,
|
|
11
|
+
* we slice the full result set and emit metadata.
|
|
12
|
+
*/
|
|
13
|
+
export interface PaginationOptions {
|
|
14
|
+
page?: number;
|
|
15
|
+
pageSize?: number;
|
|
16
|
+
all?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface PaginationMeta {
|
|
19
|
+
page: number;
|
|
20
|
+
page_size: number;
|
|
21
|
+
total_items: number;
|
|
22
|
+
total_pages: number;
|
|
23
|
+
has_next: boolean;
|
|
24
|
+
has_prev: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface PaginatedResult<T> {
|
|
27
|
+
items: T[];
|
|
28
|
+
pagination?: PaginationMeta;
|
|
29
|
+
}
|
|
30
|
+
/** Resolve effective pagination options, applying defaults. */
|
|
31
|
+
export declare function resolvePagination(opts: PaginationOptions): {
|
|
32
|
+
enabled: boolean;
|
|
33
|
+
page: number;
|
|
34
|
+
pageSize: number;
|
|
35
|
+
};
|
|
36
|
+
/** Apply pagination to an array, returning the slice and metadata. */
|
|
37
|
+
export declare function paginate<T>(items: T[], opts: PaginationOptions): PaginatedResult<T>;
|
|
38
|
+
/** Render pagination metadata as a compact annotation for the LLM format. */
|
|
39
|
+
export declare function paginationAnnotation(meta: PaginationMeta | undefined): string;
|
|
40
|
+
/** Render pagination metadata for the text format. */
|
|
41
|
+
export declare function paginationTextNote(meta: PaginationMeta | undefined): string;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pagination utility.
|
|
3
|
+
*
|
|
4
|
+
* Uniform pagination shape across all paginated operations:
|
|
5
|
+
* - search results (nodes)
|
|
6
|
+
* - --mp-list (stashes)
|
|
7
|
+
* - --mp-get (nodes within a stash)
|
|
8
|
+
*
|
|
9
|
+
* Pagination is opt-in via --page N. The default behavior is
|
|
10
|
+
* "give me everything" (backwards compatible). When --page is set,
|
|
11
|
+
* we slice the full result set and emit metadata.
|
|
12
|
+
*/
|
|
13
|
+
/** Resolve effective pagination options, applying defaults. */
|
|
14
|
+
export function resolvePagination(opts) {
|
|
15
|
+
const enabled = opts.all ? false : (opts.page !== undefined && opts.page > 0);
|
|
16
|
+
const page = enabled ? (opts.page ?? 1) : 1;
|
|
17
|
+
const pageSize = opts.pageSize ?? 10;
|
|
18
|
+
return { enabled, page, pageSize };
|
|
19
|
+
}
|
|
20
|
+
/** Apply pagination to an array, returning the slice and metadata. */
|
|
21
|
+
export function paginate(items, opts) {
|
|
22
|
+
const { enabled, page, pageSize } = resolvePagination(opts);
|
|
23
|
+
if (!enabled) {
|
|
24
|
+
return { items };
|
|
25
|
+
}
|
|
26
|
+
const totalItems = items.length;
|
|
27
|
+
const totalPages = Math.max(1, Math.ceil(totalItems / pageSize));
|
|
28
|
+
// Clamp page to valid range.
|
|
29
|
+
const clampedPage = Math.min(Math.max(1, page), totalPages);
|
|
30
|
+
const start = (clampedPage - 1) * pageSize;
|
|
31
|
+
const end = start + pageSize;
|
|
32
|
+
const slice = items.slice(start, end);
|
|
33
|
+
return {
|
|
34
|
+
items: slice,
|
|
35
|
+
pagination: {
|
|
36
|
+
page: clampedPage,
|
|
37
|
+
page_size: pageSize,
|
|
38
|
+
total_items: totalItems,
|
|
39
|
+
total_pages: totalPages,
|
|
40
|
+
has_next: clampedPage < totalPages,
|
|
41
|
+
has_prev: clampedPage > 1,
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/** Render pagination metadata as a compact annotation for the LLM format. */
|
|
46
|
+
export function paginationAnnotation(meta) {
|
|
47
|
+
if (!meta)
|
|
48
|
+
return "";
|
|
49
|
+
return ` page=${meta.page} of ${meta.total_pages} page_size=${meta.page_size} total_items=${meta.total_items}`;
|
|
50
|
+
}
|
|
51
|
+
/** Render pagination metadata for the text format. */
|
|
52
|
+
export function paginationTextNote(meta) {
|
|
53
|
+
if (!meta)
|
|
54
|
+
return "";
|
|
55
|
+
const nav = [
|
|
56
|
+
meta.has_prev ? "<- prev" : null,
|
|
57
|
+
`page ${meta.page} of ${meta.total_pages}`,
|
|
58
|
+
meta.has_next ? "next ->" : null,
|
|
59
|
+
].filter(Boolean).join(" ");
|
|
60
|
+
// The caller can wrap this in color codes if desired.
|
|
61
|
+
return `[${nav} | ${meta.total_items} items | page_size=${meta.page_size}]`;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=pagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAsBH,+DAA+D;AAC/D,MAAM,UAAU,iBAAiB,CAAC,IAAuB;IAKvD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;IACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACrC,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,QAAQ,CAAI,KAAU,EAAE,IAAuB;IAC7D,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;IAChC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC;IACjE,6BAA6B;IAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;IAC3C,MAAM,GAAG,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACtC,OAAO;QACL,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE;YACV,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,QAAQ;YACnB,WAAW,EAAE,UAAU;YACvB,WAAW,EAAE,UAAU;YACvB,QAAQ,EAAE,WAAW,GAAG,UAAU;YAClC,QAAQ,EAAE,WAAW,GAAG,CAAC;SAC1B;KACF,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,oBAAoB,CAAC,IAAgC;IACnE,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,OAAO,SAAS,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,WAAW,cAAc,IAAI,CAAC,SAAS,gBAAgB,IAAI,CAAC,WAAW,EAAE,CAAC;AACjH,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,kBAAkB,CAAC,IAAgC;IACjE,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,GAAG,GAAG;QACV,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;QAChC,QAAQ,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,WAAW,EAAE;QAC1C,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;KACjC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,sDAAsD;IACtD,OAAO,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,sBAAsB,IAAI,CAAC,SAAS,GAAG,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Formatters for mind-palace operations.
|
|
3
|
+
*
|
|
4
|
+
* Three outputs:
|
|
5
|
+
* - formatPalaceList: table of stashes (used by --mp-list)
|
|
6
|
+
* - formatPalaceGet: full contents of a single stash (--mp-get)
|
|
7
|
+
* - formatPalaceStash: confirmation of a stash operation (unused
|
|
8
|
+
* currently; we emit the confirmation on stderr from the
|
|
9
|
+
* orchestrator so it doesn't pollute the search result)
|
|
10
|
+
*
|
|
11
|
+
* All formats are LLM-friendly: a header with palace path, structured
|
|
12
|
+
* data, and clear delimiters.
|
|
13
|
+
*/
|
|
14
|
+
import type { Stash } from "./mind-palace.js";
|
|
15
|
+
import type { PaginationMeta } from "./pagination.js";
|
|
16
|
+
/** Format the output of --mp-list. */
|
|
17
|
+
export declare function formatPalaceList(stashes: Stash[], palacePath: string, useColor: boolean, pagination?: PaginationMeta): string;
|
|
18
|
+
/** Format the output of --mp-get <name>.
|
|
19
|
+
*
|
|
20
|
+
* `withNodes` controls whether the captured nodes block is rendered.
|
|
21
|
+
* Default behavior (the **card view**) is `withNodes: false` — it
|
|
22
|
+
* shows the synthesized intel (note, tags, relations, source paths,
|
|
23
|
+
* counts) and skips the per-node context windows. This is what an
|
|
24
|
+
* agent almost always wants when recalling a stash: 5–6× cheaper in
|
|
25
|
+
* tokens than the legacy full dump. Pass `withNodes: true` (CLI:
|
|
26
|
+
* `--with-nodes` or `--full`) to include the nodes block. Pagination
|
|
27
|
+
* is honored only in the nodes mode. */
|
|
28
|
+
export declare function formatPalaceGet(stash: Stash, palacePath: string, useColor: boolean, pagination?: PaginationMeta, withNodes?: boolean): string;
|
|
29
|
+
/** Confirmation of a stash operation. Emitted to stderr by the orchestrator. */
|
|
30
|
+
export declare function formatPalaceStash(action: "created" | "replaced" | "merged", name: string, nodeCount: number, tokens: number, palacePath: string): string;
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Formatters for mind-palace operations.
|
|
3
|
+
*
|
|
4
|
+
* Three outputs:
|
|
5
|
+
* - formatPalaceList: table of stashes (used by --mp-list)
|
|
6
|
+
* - formatPalaceGet: full contents of a single stash (--mp-get)
|
|
7
|
+
* - formatPalaceStash: confirmation of a stash operation (unused
|
|
8
|
+
* currently; we emit the confirmation on stderr from the
|
|
9
|
+
* orchestrator so it doesn't pollute the search result)
|
|
10
|
+
*
|
|
11
|
+
* All formats are LLM-friendly: a header with palace path, structured
|
|
12
|
+
* data, and clear delimiters.
|
|
13
|
+
*/
|
|
14
|
+
import { paginationAnnotation, paginationTextNote } from "./pagination.js";
|
|
15
|
+
import { formatRelativeTime } from "./mind-palace.js";
|
|
16
|
+
const RESET = "\x1b[0m";
|
|
17
|
+
const BOLD = "\x1b[1m";
|
|
18
|
+
const DIM = "\x1b[2m";
|
|
19
|
+
const FG_CYAN = "\x1b[36m";
|
|
20
|
+
const FG_YELLOW = "\x1b[33m";
|
|
21
|
+
const FG_GREEN = "\x1b[32m";
|
|
22
|
+
function c(useColor, code, text) {
|
|
23
|
+
if (!useColor)
|
|
24
|
+
return text;
|
|
25
|
+
return `${code}${text}${RESET}`;
|
|
26
|
+
}
|
|
27
|
+
/** Format the output of --mp-list. */
|
|
28
|
+
export function formatPalaceList(stashes, palacePath, useColor, pagination) {
|
|
29
|
+
const out = [];
|
|
30
|
+
const ann = paginationAnnotation(pagination);
|
|
31
|
+
out.push(`<mpg mind-palace path="${palacePath}" count="${stashes.length}"${ann}>`);
|
|
32
|
+
if (stashes.length === 0 && !pagination) {
|
|
33
|
+
out.push("");
|
|
34
|
+
out.push(c(useColor, DIM, "(empty — no stashes. Use --mp-stash <name> <note> to create one.)"));
|
|
35
|
+
out.push("");
|
|
36
|
+
out.push("</mpg mind-palace>");
|
|
37
|
+
return out.join("\n");
|
|
38
|
+
}
|
|
39
|
+
// Sort by updated_at descending so recent ones are first.
|
|
40
|
+
const sorted = [...stashes].sort((a, b) => b.updated_at.localeCompare(a.updated_at));
|
|
41
|
+
for (const s of sorted) {
|
|
42
|
+
out.push("");
|
|
43
|
+
out.push(`--- STASH ${c(useColor, BOLD + FG_CYAN, s.name)} ---`);
|
|
44
|
+
out.push(`note: ${s.note || c(useColor, DIM, "(no note)")}`);
|
|
45
|
+
if (s.tags.length > 0) {
|
|
46
|
+
out.push(`tags: ${s.tags.map((t) => c(useColor, FG_GREEN, `#${t}`)).join(" ")}`);
|
|
47
|
+
}
|
|
48
|
+
out.push(`pattern: ${c(useColor, FG_YELLOW, s.search.pattern)}`);
|
|
49
|
+
out.push(`effort: ${s.search.effort}`);
|
|
50
|
+
out.push(`nodes: ${s.nodes.length} | sources: ${s.sources.length}`);
|
|
51
|
+
if (s.relations.length > 0) {
|
|
52
|
+
out.push(`links: ${s.relations.length} relationship${s.relations.length === 1 ? "" : "s"}`);
|
|
53
|
+
}
|
|
54
|
+
const relTime = formatRelativeTime(s.updated_at);
|
|
55
|
+
out.push(`updated: ${relTime} (${s.updated_at})`);
|
|
56
|
+
if (s.expires_at) {
|
|
57
|
+
out.push(`expires: ${formatRelativeTime(s.expires_at)}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (pagination) {
|
|
61
|
+
out.push("");
|
|
62
|
+
out.push(c(useColor, DIM, paginationTextNote(pagination) + (pagination.has_next ? " (more pages available — pass --page N)" : "")));
|
|
63
|
+
}
|
|
64
|
+
out.push("");
|
|
65
|
+
out.push("</mpg mind-palace>");
|
|
66
|
+
return out.join("\n");
|
|
67
|
+
}
|
|
68
|
+
/** Format the output of --mp-get <name>.
|
|
69
|
+
*
|
|
70
|
+
* `withNodes` controls whether the captured nodes block is rendered.
|
|
71
|
+
* Default behavior (the **card view**) is `withNodes: false` — it
|
|
72
|
+
* shows the synthesized intel (note, tags, relations, source paths,
|
|
73
|
+
* counts) and skips the per-node context windows. This is what an
|
|
74
|
+
* agent almost always wants when recalling a stash: 5–6× cheaper in
|
|
75
|
+
* tokens than the legacy full dump. Pass `withNodes: true` (CLI:
|
|
76
|
+
* `--with-nodes` or `--full`) to include the nodes block. Pagination
|
|
77
|
+
* is honored only in the nodes mode. */
|
|
78
|
+
export function formatPalaceGet(stash, palacePath, useColor, pagination, withNodes = false) {
|
|
79
|
+
const out = [];
|
|
80
|
+
const ann = paginationAnnotation(pagination);
|
|
81
|
+
const view = withNodes ? "full" : "card";
|
|
82
|
+
out.push(`<mpg mind-palace-get name="${stash.name}" view="${view}" path="${palacePath}"${ann}>`);
|
|
83
|
+
out.push("");
|
|
84
|
+
out.push(c(useColor, BOLD, `STASH: ${stash.name}`));
|
|
85
|
+
out.push(`note: ${stash.note || c(useColor, DIM, "(no note)")}`);
|
|
86
|
+
if (stash.tags.length > 0) {
|
|
87
|
+
out.push(`tags: ${stash.tags.join(", ")}`);
|
|
88
|
+
}
|
|
89
|
+
out.push(`created: ${stash.created_at}`);
|
|
90
|
+
out.push(`updated: ${formatRelativeTime(stash.updated_at)} (${stash.updated_at})`);
|
|
91
|
+
if (stash.expires_at) {
|
|
92
|
+
out.push(`expires: ${formatRelativeTime(stash.expires_at)} (${stash.expires_at})`);
|
|
93
|
+
}
|
|
94
|
+
out.push(`search: pattern=${c(useColor, FG_YELLOW, stash.search.pattern)} effort=${stash.search.effort}`);
|
|
95
|
+
out.push(`nodes: ${stash.nodes.length} | sources: ${stash.sources.length}`);
|
|
96
|
+
out.push("");
|
|
97
|
+
if (withNodes) {
|
|
98
|
+
out.push("--- NODES ---");
|
|
99
|
+
for (let i = 0; i < stash.nodes.length; i++) {
|
|
100
|
+
const n = stash.nodes[i];
|
|
101
|
+
out.push("");
|
|
102
|
+
out.push(`[${i + 1}/${stash.nodes.length}] ${c(useColor, BOLD + FG_CYAN, n.source)}:${n.match_line} (~${n.tokens}t)`);
|
|
103
|
+
// Show the captured context window.
|
|
104
|
+
const width = String(n.end_line).length;
|
|
105
|
+
for (let j = 0; j < n.context_before.length; j++) {
|
|
106
|
+
const lineNum = n.start_line + j;
|
|
107
|
+
out.push(` ${String(lineNum).padStart(width, " ")} ${n.context_before[j]}`);
|
|
108
|
+
}
|
|
109
|
+
out.push(` ${String(n.match_line).padStart(width, " ")} >> ${n.match_text}`);
|
|
110
|
+
for (let j = 0; j < n.context_after.length; j++) {
|
|
111
|
+
const lineNum = n.match_line + 1 + j;
|
|
112
|
+
out.push(` ${String(lineNum).padStart(width, " ")} ${n.context_after[j]}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (stash.sources.length > 0) {
|
|
117
|
+
out.push("");
|
|
118
|
+
out.push("--- SOURCES (file paths stashed; can be passed to --mp-from) ---");
|
|
119
|
+
for (const s of stash.sources) {
|
|
120
|
+
out.push(` ${s}`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (stash.relations.length > 0) {
|
|
124
|
+
out.push("");
|
|
125
|
+
out.push("--- RELATIONS ---");
|
|
126
|
+
for (const r of stash.relations) {
|
|
127
|
+
out.push(` --> ${r.target} [${r.type}]${r.note ? ` "${r.note}"` : ""} (${formatRelativeTime(r.created_at)})`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (!withNodes) {
|
|
131
|
+
out.push("");
|
|
132
|
+
out.push(c(useColor, DIM, "(card view — pass --with-nodes or --full to dump the captured node context)"));
|
|
133
|
+
}
|
|
134
|
+
if (pagination) {
|
|
135
|
+
out.push("");
|
|
136
|
+
out.push(c(useColor, DIM, paginationTextNote(pagination) + (pagination.has_next ? " (more pages available — pass --page N)" : "")));
|
|
137
|
+
}
|
|
138
|
+
out.push("");
|
|
139
|
+
out.push("</mpg mind-palace-get>");
|
|
140
|
+
return out.join("\n");
|
|
141
|
+
}
|
|
142
|
+
/** Confirmation of a stash operation. Emitted to stderr by the orchestrator. */
|
|
143
|
+
export function formatPalaceStash(action, name, nodeCount, tokens, palacePath) {
|
|
144
|
+
return `<mpg mind-palace-stash action="${action}" name="${name}" nodes="${nodeCount}" tokens="~${tokens}" path="${palacePath}"/>`;
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=palace-format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"palace-format.js","sourceRoot":"","sources":["../src/palace-format.ts"],"names":[],"mappings":"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"}
|