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.
Files changed (51) hide show
  1. package/INSTALL.md +387 -0
  2. package/README.md +602 -0
  3. package/dist/api.d.ts +682 -0
  4. package/dist/api.js +660 -0
  5. package/dist/api.js.map +1 -0
  6. package/dist/cli.d.ts +95 -0
  7. package/dist/cli.js +856 -0
  8. package/dist/cli.js.map +1 -0
  9. package/dist/format.d.ts +16 -0
  10. package/dist/format.js +199 -0
  11. package/dist/format.js.map +1 -0
  12. package/dist/fuzzy.d.ts +45 -0
  13. package/dist/fuzzy.js +150 -0
  14. package/dist/fuzzy.js.map +1 -0
  15. package/dist/index.d.ts +9 -0
  16. package/dist/index.js +528 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/mcp-server.d.ts +24 -0
  19. package/dist/mcp-server.js +187 -0
  20. package/dist/mcp-server.js.map +1 -0
  21. package/dist/mind-palace.d.ts +148 -0
  22. package/dist/mind-palace.js +780 -0
  23. package/dist/mind-palace.js.map +1 -0
  24. package/dist/nodes.d.ts +57 -0
  25. package/dist/nodes.js +220 -0
  26. package/dist/nodes.js.map +1 -0
  27. package/dist/pagination.d.ts +41 -0
  28. package/dist/pagination.js +63 -0
  29. package/dist/pagination.js.map +1 -0
  30. package/dist/palace-format.d.ts +30 -0
  31. package/dist/palace-format.js +146 -0
  32. package/dist/palace-format.js.map +1 -0
  33. package/dist/rg.d.ts +34 -0
  34. package/dist/rg.js +288 -0
  35. package/dist/rg.js.map +1 -0
  36. package/dist/sources.d.ts +87 -0
  37. package/dist/sources.js +457 -0
  38. package/dist/sources.js.map +1 -0
  39. package/dist/tokens.d.ts +35 -0
  40. package/dist/tokens.js +95 -0
  41. package/dist/tokens.js.map +1 -0
  42. package/dist/types.d.ts +236 -0
  43. package/dist/types.js +8 -0
  44. package/dist/types.js.map +1 -0
  45. package/package.json +67 -0
  46. package/skills/mpg-context/SKILL.md +556 -0
  47. package/skills/mpg-context/references/anti-patterns.md +133 -0
  48. package/skills/mpg-context/references/integration.md +123 -0
  49. package/skills/mpg-context/references/mind-palace.md +217 -0
  50. package/skills/mpg-context/references/multi-agent.md +147 -0
  51. 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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"}
@@ -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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"}