@abhishekmcp/notes 0.1.1 → 0.2.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/dist/config.d.ts +17 -0
- package/dist/config.js +32 -0
- package/dist/config.js.map +1 -0
- package/dist/fsutil.d.ts +23 -0
- package/dist/fsutil.js +113 -0
- package/dist/fsutil.js.map +1 -0
- package/dist/graph.d.ts +38 -0
- package/dist/graph.js +160 -0
- package/dist/graph.js.map +1 -0
- package/dist/index.js +217 -100
- package/dist/index.js.map +1 -1
- package/dist/parse.d.ts +55 -0
- package/dist/parse.js +202 -0
- package/dist/parse.js.map +1 -0
- package/dist/store.d.ts +102 -0
- package/dist/store.js +410 -0
- package/dist/store.js.map +1 -0
- package/package.json +3 -2
- package/dist/notes.d.ts +0 -36
- package/dist/notes.js +0 -138
- package/dist/notes.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,144 +1,261 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* @abhishekmcp/notes — MCP server for local markdown notes.
|
|
4
|
+
* v0.2: ranked full-text search (MiniSearch), tags + todos, a wiki-link
|
|
5
|
+
* knowledge graph, a persisted index with incremental sync, and FS hardening.
|
|
6
|
+
* Tool registration only — all logic lives in store.ts / graph.ts.
|
|
7
|
+
*/
|
|
2
8
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
9
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
10
|
import { z } from "zod";
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
content: [{ type: "text", text: value }],
|
|
13
|
-
});
|
|
14
|
-
// --- Tools ---------------------------------------------------------------
|
|
11
|
+
import { isReadOnly } from "./config.js";
|
|
12
|
+
import { appendNote, buildIndex, createNote, deleteNote, getOutline, listNotes, listTags, listTodos, moveNote, notesDir, readNote, searchNotes, } from "./store.js";
|
|
13
|
+
import { brokenLinks, findPath, getBacklinks, getNeighbors, graphOverview, relatedNotes, } from "./graph.js";
|
|
14
|
+
const server = new McpServer({ name: "mcp-notes-server", version: "0.2.0" });
|
|
15
|
+
const text = (value) => ({ content: [{ type: "text", text: value }] });
|
|
16
|
+
const fail = (err) => text(`Error: ${err.message}`);
|
|
17
|
+
// --- Read & discovery tools (always registered) --------------------------
|
|
15
18
|
server.registerTool("list_notes", {
|
|
16
19
|
title: "List notes",
|
|
17
|
-
description: "List
|
|
18
|
-
"Returns
|
|
19
|
-
inputSchema: {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
description: "List notes (newest first) with pagination and an optional tag filter. " +
|
|
21
|
+
"Returns name, title, size, tags, and whether more results remain.",
|
|
22
|
+
inputSchema: {
|
|
23
|
+
offset: z.number().int().min(0).optional().describe("Start index (default 0)"),
|
|
24
|
+
limit: z.number().int().positive().max(500).optional().describe("Max results (default 50)"),
|
|
25
|
+
tag: z.string().optional().describe("Only notes carrying this tag"),
|
|
26
|
+
},
|
|
27
|
+
}, async ({ offset, limit, tag }) => {
|
|
28
|
+
const r = listNotes(offset ?? 0, limit ?? 50, tag);
|
|
29
|
+
if (r.items.length === 0)
|
|
30
|
+
return text(tag ? `No notes tagged "${tag}".` : "No notes found.");
|
|
31
|
+
const lines = r.items.map((n) => `- ${n.name} — ${n.title}${n.tags.length ? ` [${n.tags.join(", ")}]` : ""}`);
|
|
32
|
+
return text(`${r.total} note(s)${r.hasMore ? " (more available)" : ""}:\n${lines.join("\n")}`);
|
|
26
33
|
});
|
|
27
34
|
server.registerTool("read_note", {
|
|
28
35
|
title: "Read a note",
|
|
29
|
-
description: "Read
|
|
36
|
+
description: "Read a note by name. Optionally read just one heading's `section`, or a " +
|
|
37
|
+
"character window via `offset`/`limit` (sets a truncated flag when cut).",
|
|
30
38
|
inputSchema: {
|
|
31
39
|
name: z.string().describe("Note name, e.g. 'ideas' or 'projects/mcp'"),
|
|
40
|
+
section: z.string().optional().describe("Read only the content under this heading"),
|
|
41
|
+
offset: z.number().int().min(0).optional().describe("Character offset to start from"),
|
|
42
|
+
limit: z.number().int().positive().optional().describe("Max characters to return"),
|
|
32
43
|
},
|
|
33
|
-
}, async ({ name }) => {
|
|
44
|
+
}, async ({ name, section, offset, limit }) => {
|
|
34
45
|
try {
|
|
35
|
-
|
|
46
|
+
const r = await readNote(name, { section, offset, limit });
|
|
47
|
+
return text(r.truncated ? `${r.text}\n\n[truncated]` : r.text);
|
|
36
48
|
}
|
|
37
|
-
catch {
|
|
38
|
-
return
|
|
49
|
+
catch (err) {
|
|
50
|
+
return fail(err);
|
|
39
51
|
}
|
|
40
52
|
});
|
|
41
|
-
server.registerTool("
|
|
42
|
-
title: "
|
|
43
|
-
description: "
|
|
44
|
-
inputSchema: {
|
|
45
|
-
|
|
46
|
-
content: z.string().describe("Markdown content of the note"),
|
|
47
|
-
overwrite: z
|
|
48
|
-
.boolean()
|
|
49
|
-
.optional()
|
|
50
|
-
.describe("Overwrite an existing note (default false)"),
|
|
51
|
-
},
|
|
52
|
-
}, async ({ name, content, overwrite }) => {
|
|
53
|
+
server.registerTool("get_outline", {
|
|
54
|
+
title: "Get note outline",
|
|
55
|
+
description: "Return just the heading tree of a note — grasp a big note in a few tokens.",
|
|
56
|
+
inputSchema: { name: z.string().describe("Note name") },
|
|
57
|
+
}, async ({ name }) => {
|
|
53
58
|
try {
|
|
54
|
-
|
|
55
|
-
return text(`Created note at ${file}`);
|
|
59
|
+
return text(await getOutline(name));
|
|
56
60
|
}
|
|
57
61
|
catch (err) {
|
|
58
|
-
return
|
|
62
|
+
return fail(err);
|
|
59
63
|
}
|
|
60
64
|
});
|
|
61
|
-
server.registerTool("
|
|
62
|
-
title: "
|
|
63
|
-
description: "
|
|
64
|
-
"
|
|
65
|
+
server.registerTool("search_notes", {
|
|
66
|
+
title: "Search notes",
|
|
67
|
+
description: "Ranked full-text search. Supports `fuzzy`, `prefix`, and a `field` filter " +
|
|
68
|
+
"(title/tag/body, or 'path' to match the note name). Returns ranked snippets.",
|
|
65
69
|
inputSchema: {
|
|
66
|
-
|
|
67
|
-
|
|
70
|
+
query: z.string().describe("Search query"),
|
|
71
|
+
fuzzy: z.boolean().optional().describe("Enable fuzzy matching (typo-tolerant)"),
|
|
72
|
+
prefix: z.boolean().optional().describe("Match term prefixes (default true)"),
|
|
73
|
+
field: z.enum(["title", "tag", "body", "path"]).optional().describe("Restrict search to one field"),
|
|
74
|
+
offset: z.number().int().min(0).optional().describe("Start index (default 0)"),
|
|
75
|
+
limit: z.number().int().positive().max(100).optional().describe("Max results (default 10)"),
|
|
68
76
|
},
|
|
69
|
-
}, async ({
|
|
70
|
-
const
|
|
71
|
-
|
|
77
|
+
}, async ({ query, fuzzy, prefix, field, offset, limit }) => {
|
|
78
|
+
const r = await searchNotes(query, { fuzzy, prefix, field, offset, limit });
|
|
79
|
+
if (r.hits.length === 0)
|
|
80
|
+
return text(`No matches for "${query}".`);
|
|
81
|
+
const lines = r.hits.map((h) => `- ${h.name} (score ${h.score.toFixed(2)})${h.snippet ? `\n ${h.snippet}` : ""}`);
|
|
82
|
+
return text(`${r.total} match(es)${r.hasMore ? " (more available)" : ""}:\n${lines.join("\n")}`);
|
|
83
|
+
});
|
|
84
|
+
server.registerTool("list_tags", {
|
|
85
|
+
title: "List tags",
|
|
86
|
+
description: "List every tag across the vault with note counts.",
|
|
87
|
+
inputSchema: {},
|
|
88
|
+
}, async () => {
|
|
89
|
+
const tags = listTags();
|
|
90
|
+
if (tags.length === 0)
|
|
91
|
+
return text("No tags found.");
|
|
92
|
+
return text(tags.map((t) => `- ${t.tag} (${t.count})`).join("\n"));
|
|
72
93
|
});
|
|
73
|
-
server.registerTool("
|
|
74
|
-
title: "
|
|
75
|
-
description: "
|
|
94
|
+
server.registerTool("list_todos", {
|
|
95
|
+
title: "List todos",
|
|
96
|
+
description: "Aggregate `- [ ]` checkbox todos across all notes. Open items only unless includeDone.",
|
|
76
97
|
inputSchema: {
|
|
77
|
-
|
|
98
|
+
includeDone: z.boolean().optional().describe("Include completed `- [x]` items (default false)"),
|
|
78
99
|
},
|
|
79
|
-
|
|
100
|
+
}, async ({ includeDone }) => {
|
|
101
|
+
const todos = await listTodos(includeDone ?? false);
|
|
102
|
+
if (todos.length === 0)
|
|
103
|
+
return text("No todos found.");
|
|
104
|
+
const lines = todos.map((t) => `- [${t.done ? "x" : " "}] ${t.text} (${t.note}:${t.line})`);
|
|
105
|
+
return text(`${todos.length} todo(s):\n${lines.join("\n")}`);
|
|
106
|
+
});
|
|
107
|
+
server.registerTool("get_backlinks", {
|
|
108
|
+
title: "Get backlinks",
|
|
109
|
+
description: "Find all notes that link to the given note via [[wiki-link]] syntax.",
|
|
110
|
+
inputSchema: { name: z.string().describe("The note to find backlinks for") },
|
|
80
111
|
}, async ({ name }) => {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
return text(`
|
|
84
|
-
}
|
|
85
|
-
catch {
|
|
86
|
-
return text(`Could not delete note "${name}". Does it exist?`);
|
|
87
|
-
}
|
|
112
|
+
const links = getBacklinks(name);
|
|
113
|
+
if (links.length === 0)
|
|
114
|
+
return text(`No notes link to "${name}".`);
|
|
115
|
+
return text(`${links.length} backlink(s):\n${links.map((l) => `- ${l.name} — ${l.title}`).join("\n")}`);
|
|
88
116
|
});
|
|
89
|
-
server.registerTool("
|
|
90
|
-
title: "
|
|
91
|
-
description: "
|
|
92
|
-
"Returns matching lines with their note name and line number.",
|
|
117
|
+
server.registerTool("get_neighbors", {
|
|
118
|
+
title: "Get neighbors",
|
|
119
|
+
description: "Notes within N hops of a note over the (undirected) wiki-link graph, depth/limit capped.",
|
|
93
120
|
inputSchema: {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
.int()
|
|
98
|
-
.positive()
|
|
99
|
-
.optional()
|
|
100
|
-
.describe("Max number of matches (default 50)"),
|
|
121
|
+
name: z.string().describe("Center note"),
|
|
122
|
+
depth: z.number().int().positive().max(5).optional().describe("Hops to traverse (default 1)"),
|
|
123
|
+
limit: z.number().int().positive().max(200).optional().describe("Max neighbors (default 50)"),
|
|
101
124
|
},
|
|
102
|
-
}, async ({
|
|
103
|
-
const
|
|
104
|
-
if (
|
|
105
|
-
return text(`
|
|
106
|
-
|
|
107
|
-
return text(`${hits.length} match(es):\n${lines.join("\n")}`);
|
|
125
|
+
}, async ({ name, depth, limit }) => {
|
|
126
|
+
const nb = getNeighbors(name, depth ?? 1, limit ?? 50);
|
|
127
|
+
if (nb.length === 0)
|
|
128
|
+
return text(`"${name}" has no neighbors (or doesn't exist).`);
|
|
129
|
+
return text(nb.map((n) => `- [${n.distance}] ${n.name} — ${n.title}`).join("\n"));
|
|
108
130
|
});
|
|
109
|
-
server.registerTool("
|
|
110
|
-
title: "
|
|
111
|
-
description: "
|
|
131
|
+
server.registerTool("find_path", {
|
|
132
|
+
title: "Find path",
|
|
133
|
+
description: "Shortest wiki-link chain between two notes (BFS). Reports if none exists.",
|
|
112
134
|
inputSchema: {
|
|
113
|
-
|
|
135
|
+
from: z.string().describe("Start note"),
|
|
136
|
+
to: z.string().describe("End note"),
|
|
114
137
|
},
|
|
115
|
-
}, async ({
|
|
116
|
-
const
|
|
117
|
-
if (
|
|
118
|
-
return text(`No
|
|
119
|
-
|
|
120
|
-
return text(`${hits.length} backlink(s) to "${name}":\n${lines.join("\n")}`);
|
|
138
|
+
}, async ({ from, to }) => {
|
|
139
|
+
const path = findPath(from, to);
|
|
140
|
+
if (!path)
|
|
141
|
+
return text(`No path between "${from}" and "${to}".`);
|
|
142
|
+
return text(path.map((n) => n.name).join(" → "));
|
|
121
143
|
});
|
|
144
|
+
server.registerTool("related_notes", {
|
|
145
|
+
title: "Related notes",
|
|
146
|
+
description: "Rank other notes by shared wiki-links and shared tags with the given note.",
|
|
147
|
+
inputSchema: {
|
|
148
|
+
name: z.string().describe("Note to find relations for"),
|
|
149
|
+
limit: z.number().int().positive().max(50).optional().describe("Max results (default 10)"),
|
|
150
|
+
},
|
|
151
|
+
}, async ({ name, limit }) => {
|
|
152
|
+
const rel = relatedNotes(name, limit ?? 10);
|
|
153
|
+
if (rel.length === 0)
|
|
154
|
+
return text(`No related notes for "${name}".`);
|
|
155
|
+
return text(rel
|
|
156
|
+
.map((r) => `- ${r.name} — ${r.title} (score ${r.score}: ${r.sharedLinks} links, ${r.sharedTags} tags)`)
|
|
157
|
+
.join("\n"));
|
|
158
|
+
});
|
|
159
|
+
server.registerTool("graph_overview", {
|
|
160
|
+
title: "Graph overview",
|
|
161
|
+
description: "Aggregate graph health: note/link/tag counts, top hubs, orphans, broken-link count.",
|
|
162
|
+
inputSchema: {},
|
|
163
|
+
}, async () => {
|
|
164
|
+
const g = graphOverview();
|
|
165
|
+
const hubs = g.hubs.map((h) => `${h.name} (${h.degree})`).join(", ") || "none";
|
|
166
|
+
const orphans = g.orphans.map((o) => o.name).join(", ") || "none";
|
|
167
|
+
return text(`Notes: ${g.notes}\nLinks: ${g.links}\nTags: ${g.tags}\nBroken links: ${g.brokenLinks}\n` +
|
|
168
|
+
`Hubs: ${hubs}\nOrphans: ${orphans}`);
|
|
169
|
+
});
|
|
170
|
+
server.registerTool("broken_links", {
|
|
171
|
+
title: "Broken links",
|
|
172
|
+
description: "List wiki-links that point at notes which don't exist.",
|
|
173
|
+
inputSchema: {},
|
|
174
|
+
}, async () => {
|
|
175
|
+
const broken = brokenLinks();
|
|
176
|
+
if (broken.length === 0)
|
|
177
|
+
return text("No broken links. 🎉");
|
|
178
|
+
return text(`${broken.length} broken link(s):\n${broken.map((b) => `- ${b.from} → [[${b.target}]]`).join("\n")}`);
|
|
179
|
+
});
|
|
180
|
+
// --- Mutating tools (omitted entirely when NOTES_READONLY=1) --------------
|
|
181
|
+
if (!isReadOnly()) {
|
|
182
|
+
server.registerTool("create_note", {
|
|
183
|
+
title: "Create a note",
|
|
184
|
+
description: "Create a new markdown note. Fails if it exists unless overwrite is true.",
|
|
185
|
+
inputSchema: {
|
|
186
|
+
name: z.string().describe("Note name, e.g. 'ideas' or 'projects/mcp'"),
|
|
187
|
+
content: z.string().describe("Markdown content"),
|
|
188
|
+
overwrite: z.boolean().optional().describe("Overwrite if it already exists (default false)"),
|
|
189
|
+
},
|
|
190
|
+
}, async ({ name, content, overwrite }) => {
|
|
191
|
+
try {
|
|
192
|
+
const n = await createNote(name, content, overwrite ?? false);
|
|
193
|
+
return text(`Created note "${n}".`);
|
|
194
|
+
}
|
|
195
|
+
catch (err) {
|
|
196
|
+
return fail(err);
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
server.registerTool("append_note", {
|
|
200
|
+
title: "Append to a note",
|
|
201
|
+
description: "Append content to a note (creating it if missing). Good for journals and logs.",
|
|
202
|
+
inputSchema: {
|
|
203
|
+
name: z.string().describe("Note name"),
|
|
204
|
+
content: z.string().describe("Markdown content to append"),
|
|
205
|
+
},
|
|
206
|
+
}, async ({ name, content }) => {
|
|
207
|
+
try {
|
|
208
|
+
const n = await appendNote(name, content);
|
|
209
|
+
return text(`Appended to "${n}".`);
|
|
210
|
+
}
|
|
211
|
+
catch (err) {
|
|
212
|
+
return fail(err);
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
server.registerTool("delete_note", {
|
|
216
|
+
title: "Delete a note",
|
|
217
|
+
description: "Permanently delete a note by name.",
|
|
218
|
+
inputSchema: { name: z.string().describe("Note name to delete") },
|
|
219
|
+
annotations: { destructiveHint: true },
|
|
220
|
+
}, async ({ name }) => {
|
|
221
|
+
try {
|
|
222
|
+
await deleteNote(name);
|
|
223
|
+
return text(`Deleted note "${name}".`);
|
|
224
|
+
}
|
|
225
|
+
catch (err) {
|
|
226
|
+
return fail(err);
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
server.registerTool("move_note", {
|
|
230
|
+
title: "Move/rename a note",
|
|
231
|
+
description: "Rename or move a note and rewrite every [[wiki-link]] pointing at it across the vault.",
|
|
232
|
+
inputSchema: {
|
|
233
|
+
from: z.string().describe("Current note name"),
|
|
234
|
+
to: z.string().describe("New note name/path"),
|
|
235
|
+
},
|
|
236
|
+
}, async ({ from, to }) => {
|
|
237
|
+
try {
|
|
238
|
+
const r = await moveNote(from, to);
|
|
239
|
+
const rw = r.rewritten.length ? ` Rewrote backlinks in: ${r.rewritten.join(", ")}.` : "";
|
|
240
|
+
return text(`Moved "${r.from}" → "${r.to}".${rw}`);
|
|
241
|
+
}
|
|
242
|
+
catch (err) {
|
|
243
|
+
return fail(err);
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
}
|
|
122
247
|
// --- Resources -----------------------------------------------------------
|
|
123
|
-
|
|
124
|
-
server.registerResource("note", "notes://{name}", {
|
|
125
|
-
title: "Note",
|
|
126
|
-
description: "A markdown note, addressable by name.",
|
|
127
|
-
mimeType: "text/markdown",
|
|
128
|
-
}, async (uri) => {
|
|
248
|
+
server.registerResource("note", "notes://{name}", { title: "Note", description: "A markdown note, addressable by name.", mimeType: "text/markdown" }, async (uri) => {
|
|
129
249
|
const name = decodeURIComponent(uri.pathname.replace(/^\/+/, "") || uri.href.replace("notes://", ""));
|
|
130
|
-
const content = await readNote(name);
|
|
131
|
-
return {
|
|
132
|
-
contents: [{ uri: uri.href, mimeType: "text/markdown", text: content }],
|
|
133
|
-
};
|
|
250
|
+
const { text: content } = await readNote(name);
|
|
251
|
+
return { contents: [{ uri: uri.href, mimeType: "text/markdown", text: content }] };
|
|
134
252
|
});
|
|
135
253
|
// --- Startup -------------------------------------------------------------
|
|
136
254
|
async function main() {
|
|
137
|
-
await
|
|
255
|
+
await buildIndex(); // load/sync the index before serving any request
|
|
138
256
|
const transport = new StdioServerTransport();
|
|
139
257
|
await server.connect(transport);
|
|
140
|
-
|
|
141
|
-
console.error(`mcp-notes-server running. Notes dir: ${getNotesDir()}`);
|
|
258
|
+
console.error(`mcp-notes-server v0.2.0 running${isReadOnly() ? " (read-only)" : ""}. Notes dir: ${notesDir()}`);
|
|
142
259
|
}
|
|
143
260
|
main().catch((err) => {
|
|
144
261
|
console.error("Fatal error starting mcp-notes-server:", err);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/parse.d.ts
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure, dependency-free markdown parsing: a tiny YAML-frontmatter reader plus
|
|
3
|
+
* extractors for headings, sections, wiki-links, tags and todos. We deliberately
|
|
4
|
+
* avoid gray-matter / js-yaml (npm-audit noise + native-free goal); the subset of
|
|
5
|
+
* YAML notes actually use in frontmatter is small enough to hand-roll safely.
|
|
6
|
+
*/
|
|
7
|
+
export interface Frontmatter {
|
|
8
|
+
title?: string;
|
|
9
|
+
tags?: string[];
|
|
10
|
+
[key: string]: unknown;
|
|
11
|
+
}
|
|
12
|
+
export interface Heading {
|
|
13
|
+
level: number;
|
|
14
|
+
text: string;
|
|
15
|
+
line: number;
|
|
16
|
+
}
|
|
17
|
+
export interface Todo {
|
|
18
|
+
text: string;
|
|
19
|
+
done: boolean;
|
|
20
|
+
line: number;
|
|
21
|
+
}
|
|
22
|
+
export interface ParsedNote {
|
|
23
|
+
frontmatter: Frontmatter;
|
|
24
|
+
body: string;
|
|
25
|
+
title?: string;
|
|
26
|
+
tags: string[];
|
|
27
|
+
links: string[];
|
|
28
|
+
headings: Heading[];
|
|
29
|
+
}
|
|
30
|
+
/** Strip a trailing ".md" and normalize separators so links/names compare equal. */
|
|
31
|
+
export declare function normalizeLinkTarget(raw: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* Split raw note text into a frontmatter object and the remaining body.
|
|
34
|
+
* Recognizes a leading `---` ... `---` fence. Unparseable frontmatter is
|
|
35
|
+
* treated as body (never throws).
|
|
36
|
+
*/
|
|
37
|
+
export declare function splitFrontmatter(raw: string): {
|
|
38
|
+
frontmatter: Frontmatter;
|
|
39
|
+
body: string;
|
|
40
|
+
};
|
|
41
|
+
/** Extract ATX headings (`#`..`######`) from body text, ignoring fenced code blocks. */
|
|
42
|
+
export declare function extractHeadings(body: string): Heading[];
|
|
43
|
+
/**
|
|
44
|
+
* Return the text under a heading (case-insensitive match on heading text),
|
|
45
|
+
* up to the next heading of the same or higher level. Returns null if not found.
|
|
46
|
+
*/
|
|
47
|
+
export declare function extractSection(body: string, heading: string): string | null;
|
|
48
|
+
/** Extract wiki-link targets (`[[name]]` / `[[name|alias]]`), normalized + deduped. */
|
|
49
|
+
export declare function extractWikiLinks(body: string): string[];
|
|
50
|
+
/** Collect tags from frontmatter plus inline #hashtags in the body, deduped. */
|
|
51
|
+
export declare function extractTags(frontmatter: Frontmatter, body: string): string[];
|
|
52
|
+
/** Extract checkbox todos (`- [ ]` / `- [x]`) from body text. */
|
|
53
|
+
export declare function extractTodos(body: string): Todo[];
|
|
54
|
+
/** Full parse of a raw note into structured pieces used by the index and graph. */
|
|
55
|
+
export declare function parseNote(raw: string): ParsedNote;
|