@aniketbiswas/obsidian-mcp-server 1.0.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 (99) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +232 -0
  3. package/build/index.d.ts +26 -0
  4. package/build/index.d.ts.map +1 -0
  5. package/build/index.js +148 -0
  6. package/build/index.js.map +1 -0
  7. package/build/prompts/index.d.ts +33 -0
  8. package/build/prompts/index.d.ts.map +1 -0
  9. package/build/prompts/index.js +152 -0
  10. package/build/prompts/index.js.map +1 -0
  11. package/build/prompts/obsidian.d.ts +17 -0
  12. package/build/prompts/obsidian.d.ts.map +1 -0
  13. package/build/prompts/obsidian.js +305 -0
  14. package/build/prompts/obsidian.js.map +1 -0
  15. package/build/resources/index.d.ts +31 -0
  16. package/build/resources/index.d.ts.map +1 -0
  17. package/build/resources/index.js +111 -0
  18. package/build/resources/index.js.map +1 -0
  19. package/build/resources/obsidian.d.ts +19 -0
  20. package/build/resources/obsidian.d.ts.map +1 -0
  21. package/build/resources/obsidian.js +246 -0
  22. package/build/resources/obsidian.js.map +1 -0
  23. package/build/tools/_template.d.ts +23 -0
  24. package/build/tools/_template.d.ts.map +1 -0
  25. package/build/tools/_template.js +124 -0
  26. package/build/tools/_template.js.map +1 -0
  27. package/build/tools/calculator.d.ts +32 -0
  28. package/build/tools/calculator.d.ts.map +1 -0
  29. package/build/tools/calculator.js +130 -0
  30. package/build/tools/calculator.js.map +1 -0
  31. package/build/tools/daily-notes.d.ts +19 -0
  32. package/build/tools/daily-notes.d.ts.map +1 -0
  33. package/build/tools/daily-notes.js +469 -0
  34. package/build/tools/daily-notes.js.map +1 -0
  35. package/build/tools/greeting.d.ts +23 -0
  36. package/build/tools/greeting.d.ts.map +1 -0
  37. package/build/tools/greeting.js +111 -0
  38. package/build/tools/greeting.js.map +1 -0
  39. package/build/tools/index.d.ts +28 -0
  40. package/build/tools/index.d.ts.map +1 -0
  41. package/build/tools/index.js +46 -0
  42. package/build/tools/index.js.map +1 -0
  43. package/build/tools/links.d.ts +19 -0
  44. package/build/tools/links.d.ts.map +1 -0
  45. package/build/tools/links.js +467 -0
  46. package/build/tools/links.js.map +1 -0
  47. package/build/tools/metadata.d.ts +18 -0
  48. package/build/tools/metadata.d.ts.map +1 -0
  49. package/build/tools/metadata.js +447 -0
  50. package/build/tools/metadata.js.map +1 -0
  51. package/build/tools/navigation.d.ts +19 -0
  52. package/build/tools/navigation.d.ts.map +1 -0
  53. package/build/tools/navigation.js +378 -0
  54. package/build/tools/navigation.js.map +1 -0
  55. package/build/tools/notes.d.ts +19 -0
  56. package/build/tools/notes.d.ts.map +1 -0
  57. package/build/tools/notes.js +622 -0
  58. package/build/tools/notes.js.map +1 -0
  59. package/build/tools/search.d.ts +19 -0
  60. package/build/tools/search.d.ts.map +1 -0
  61. package/build/tools/search.js +418 -0
  62. package/build/tools/search.js.map +1 -0
  63. package/build/tools/templates.d.ts +18 -0
  64. package/build/tools/templates.d.ts.map +1 -0
  65. package/build/tools/templates.js +581 -0
  66. package/build/tools/templates.js.map +1 -0
  67. package/build/tools/vault.d.ts +19 -0
  68. package/build/tools/vault.d.ts.map +1 -0
  69. package/build/tools/vault.js +403 -0
  70. package/build/tools/vault.js.map +1 -0
  71. package/build/types/index.d.ts +11 -0
  72. package/build/types/index.d.ts.map +1 -0
  73. package/build/types/index.js +11 -0
  74. package/build/types/index.js.map +1 -0
  75. package/build/types/obsidian.d.ts +329 -0
  76. package/build/types/obsidian.d.ts.map +1 -0
  77. package/build/types/obsidian.js +38 -0
  78. package/build/types/obsidian.js.map +1 -0
  79. package/build/utils/client.d.ts +201 -0
  80. package/build/utils/client.d.ts.map +1 -0
  81. package/build/utils/client.js +656 -0
  82. package/build/utils/client.js.map +1 -0
  83. package/build/utils/config.d.ts +43 -0
  84. package/build/utils/config.d.ts.map +1 -0
  85. package/build/utils/config.js +117 -0
  86. package/build/utils/config.js.map +1 -0
  87. package/build/utils/frontmatter.d.ts +90 -0
  88. package/build/utils/frontmatter.d.ts.map +1 -0
  89. package/build/utils/frontmatter.js +306 -0
  90. package/build/utils/frontmatter.js.map +1 -0
  91. package/build/utils/index.d.ts +13 -0
  92. package/build/utils/index.d.ts.map +1 -0
  93. package/build/utils/index.js +13 -0
  94. package/build/utils/index.js.map +1 -0
  95. package/build/utils/markdown.d.ts +134 -0
  96. package/build/utils/markdown.d.ts.map +1 -0
  97. package/build/utils/markdown.js +330 -0
  98. package/build/utils/markdown.js.map +1 -0
  99. package/package.json +60 -0
@@ -0,0 +1,403 @@
1
+ /**
2
+ * ============================================================================
3
+ * OBSIDIAN MCP - Vault Tools
4
+ * ============================================================================
5
+ *
6
+ * Tools for exploring and managing the Obsidian vault structure.
7
+ * Includes listing files/folders, getting vault statistics, and file operations.
8
+ * ============================================================================
9
+ */
10
+ import { z } from "zod";
11
+ import { ObsidianApiError } from "../types/obsidian.js";
12
+ /**
13
+ * Register vault-related tools with the MCP server.
14
+ *
15
+ * @param server - The MCP server instance
16
+ * @param client - The Obsidian API client
17
+ */
18
+ export function registerVaultTools(server, client) {
19
+ // ---------------------------------------------------------------------------
20
+ // TOOL: vault_status
21
+ // ---------------------------------------------------------------------------
22
+ // Check the connection status and get basic vault information.
23
+ // ---------------------------------------------------------------------------
24
+ server.tool("vault_status", "Check the connection to Obsidian and get server status information. " +
25
+ "Use this to verify the MCP server can communicate with Obsidian.", {}, async () => {
26
+ try {
27
+ const status = await client.getServerStatus();
28
+ return {
29
+ content: [
30
+ {
31
+ type: "text",
32
+ text: JSON.stringify({
33
+ success: true,
34
+ connected: status.authenticated,
35
+ obsidianVersion: status.versions.obsidian,
36
+ apiVersion: status.versions.self,
37
+ service: status.service,
38
+ }, null, 2),
39
+ },
40
+ ],
41
+ };
42
+ }
43
+ catch (error) {
44
+ const message = error instanceof ObsidianApiError
45
+ ? error.message
46
+ : "Failed to connect to Obsidian";
47
+ return {
48
+ content: [
49
+ {
50
+ type: "text",
51
+ text: JSON.stringify({
52
+ success: false,
53
+ error: message,
54
+ hint: "Make sure Obsidian is running and the Local REST API plugin is enabled.",
55
+ }, null, 2),
56
+ },
57
+ ],
58
+ isError: true,
59
+ };
60
+ }
61
+ });
62
+ // ---------------------------------------------------------------------------
63
+ // TOOL: list_files
64
+ // ---------------------------------------------------------------------------
65
+ // List files and folders in the vault or a specific directory.
66
+ // ---------------------------------------------------------------------------
67
+ server.tool("list_files", "List files and folders in the Obsidian vault. " +
68
+ "Can list the root directory or a specific folder. " +
69
+ "Returns names of files and directories (directories end with /).", {
70
+ path: z
71
+ .string()
72
+ .optional()
73
+ .describe("Directory path relative to vault root. Leave empty for root directory."),
74
+ }, async ({ path }) => {
75
+ try {
76
+ const files = await client.listDirectory(path);
77
+ // Separate files and directories
78
+ const directories = files.filter((f) => f.endsWith("/"));
79
+ const regularFiles = files.filter((f) => !f.endsWith("/"));
80
+ return {
81
+ content: [
82
+ {
83
+ type: "text",
84
+ text: JSON.stringify({
85
+ success: true,
86
+ path: path || "/",
87
+ directories: directories.map((d) => d.slice(0, -1)),
88
+ files: regularFiles,
89
+ totalItems: files.length,
90
+ }, null, 2),
91
+ },
92
+ ],
93
+ };
94
+ }
95
+ catch (error) {
96
+ const message = error instanceof ObsidianApiError ? error.message : String(error);
97
+ return {
98
+ content: [
99
+ {
100
+ type: "text",
101
+ text: `Error listing files: ${message}`,
102
+ },
103
+ ],
104
+ isError: true,
105
+ };
106
+ }
107
+ });
108
+ // ---------------------------------------------------------------------------
109
+ // TOOL: list_all_files
110
+ // ---------------------------------------------------------------------------
111
+ // Recursively list all files in the vault.
112
+ // ---------------------------------------------------------------------------
113
+ server.tool("list_all_files", "Recursively list all files in the Obsidian vault. " +
114
+ "Can start from a specific directory and filter by file extension. " +
115
+ "Useful for getting a complete view of vault structure.", {
116
+ path: z
117
+ .string()
118
+ .optional()
119
+ .describe("Starting directory path. Leave empty for entire vault."),
120
+ extensions: z
121
+ .array(z.string())
122
+ .optional()
123
+ .describe("File extensions to filter by (e.g., ['md', 'pdf']). Leave empty for all files."),
124
+ maxDepth: z
125
+ .number()
126
+ .int()
127
+ .min(1)
128
+ .max(20)
129
+ .optional()
130
+ .default(10)
131
+ .describe("Maximum depth to recurse into subdirectories (default: 10)."),
132
+ }, async ({ path, extensions, maxDepth }) => {
133
+ try {
134
+ const items = await client.listAllFiles(path || "", maxDepth || 10);
135
+ // Filter by extension if specified
136
+ let filteredItems = items;
137
+ if (extensions && extensions.length > 0) {
138
+ const extSet = new Set(extensions.map((e) => e.toLowerCase()));
139
+ filteredItems = items.filter((item) => item.type === "directory" ||
140
+ (item.extension && extSet.has(item.extension.toLowerCase())));
141
+ }
142
+ // Organize by type
143
+ const directories = filteredItems
144
+ .filter((i) => i.type === "directory")
145
+ .map((i) => i.path);
146
+ const files = filteredItems
147
+ .filter((i) => i.type === "file")
148
+ .map((i) => ({
149
+ path: i.path,
150
+ extension: i.extension,
151
+ }));
152
+ // Get extension statistics
153
+ const extensionCounts = {};
154
+ for (const file of files) {
155
+ const ext = file.extension || "no-extension";
156
+ extensionCounts[ext] = (extensionCounts[ext] || 0) + 1;
157
+ }
158
+ return {
159
+ content: [
160
+ {
161
+ type: "text",
162
+ text: JSON.stringify({
163
+ success: true,
164
+ basePath: path || "/",
165
+ totalDirectories: directories.length,
166
+ totalFiles: files.length,
167
+ extensionCounts,
168
+ directories: directories.slice(0, 100), // Limit output
169
+ files: files.slice(0, 200), // Limit output
170
+ truncated: directories.length > 100 || files.length > 200
171
+ ? "Results truncated. Use path filter for specific directories."
172
+ : undefined,
173
+ }, null, 2),
174
+ },
175
+ ],
176
+ };
177
+ }
178
+ catch (error) {
179
+ const message = error instanceof ObsidianApiError ? error.message : String(error);
180
+ return {
181
+ content: [
182
+ {
183
+ type: "text",
184
+ text: `Error listing files: ${message}`,
185
+ },
186
+ ],
187
+ isError: true,
188
+ };
189
+ }
190
+ });
191
+ // ---------------------------------------------------------------------------
192
+ // TOOL: get_vault_structure
193
+ // ---------------------------------------------------------------------------
194
+ // Get a tree-like structure of the vault.
195
+ // ---------------------------------------------------------------------------
196
+ server.tool("get_vault_structure", "Get a tree-like structure of folders in the Obsidian vault. " +
197
+ "Useful for understanding the vault organization. " +
198
+ "Only shows directories, not individual files.", {
199
+ path: z
200
+ .string()
201
+ .optional()
202
+ .describe("Starting directory path. Leave empty for entire vault."),
203
+ maxDepth: z
204
+ .number()
205
+ .int()
206
+ .min(1)
207
+ .max(10)
208
+ .optional()
209
+ .default(5)
210
+ .describe("Maximum depth to show (default: 5)."),
211
+ }, async ({ path, maxDepth }) => {
212
+ try {
213
+ const items = await client.listAllFiles(path || "", maxDepth || 5);
214
+ // Build tree structure
215
+ const tree = buildDirectoryTree(items.filter((i) => i.type === "directory"), path || "");
216
+ // Format as tree string
217
+ const treeString = formatTree(tree, "");
218
+ return {
219
+ content: [
220
+ {
221
+ type: "text",
222
+ text: `Vault Structure:\n\n${treeString || "(empty)"}`,
223
+ },
224
+ ],
225
+ };
226
+ }
227
+ catch (error) {
228
+ const message = error instanceof ObsidianApiError ? error.message : String(error);
229
+ return {
230
+ content: [
231
+ {
232
+ type: "text",
233
+ text: `Error getting vault structure: ${message}`,
234
+ },
235
+ ],
236
+ isError: true,
237
+ };
238
+ }
239
+ });
240
+ // ---------------------------------------------------------------------------
241
+ // TOOL: get_file_stats
242
+ // ---------------------------------------------------------------------------
243
+ // Get statistics about files in a directory.
244
+ // ---------------------------------------------------------------------------
245
+ server.tool("get_file_stats", "Get statistics about files in the vault or a specific directory. " +
246
+ "Shows file counts by extension, total files, and directory counts.", {
247
+ path: z
248
+ .string()
249
+ .optional()
250
+ .describe("Directory path to analyze. Leave empty for entire vault."),
251
+ }, async ({ path }) => {
252
+ try {
253
+ const items = await client.listAllFiles(path || "", 15);
254
+ const files = items.filter((i) => i.type === "file");
255
+ const directories = items.filter((i) => i.type === "directory");
256
+ // Count by extension
257
+ const extensionCounts = {};
258
+ for (const file of files) {
259
+ const ext = file.extension || "no-extension";
260
+ extensionCounts[ext] = (extensionCounts[ext] || 0) + 1;
261
+ }
262
+ // Sort extensions by count
263
+ const sortedExtensions = Object.entries(extensionCounts)
264
+ .sort((a, b) => b[1] - a[1])
265
+ .reduce((obj, [k, v]) => {
266
+ obj[k] = v;
267
+ return obj;
268
+ }, {});
269
+ // Count markdown files
270
+ const markdownCount = extensionCounts["md"] || 0;
271
+ return {
272
+ content: [
273
+ {
274
+ type: "text",
275
+ text: JSON.stringify({
276
+ success: true,
277
+ path: path || "/",
278
+ statistics: {
279
+ totalFiles: files.length,
280
+ totalDirectories: directories.length,
281
+ markdownNotes: markdownCount,
282
+ otherFiles: files.length - markdownCount,
283
+ },
284
+ byExtension: sortedExtensions,
285
+ }, null, 2),
286
+ },
287
+ ],
288
+ };
289
+ }
290
+ catch (error) {
291
+ const message = error instanceof ObsidianApiError ? error.message : String(error);
292
+ return {
293
+ content: [
294
+ {
295
+ type: "text",
296
+ text: `Error getting file stats: ${message}`,
297
+ },
298
+ ],
299
+ isError: true,
300
+ };
301
+ }
302
+ });
303
+ // ---------------------------------------------------------------------------
304
+ // TOOL: delete_file
305
+ // ---------------------------------------------------------------------------
306
+ // Delete a file from the vault.
307
+ // ---------------------------------------------------------------------------
308
+ server.tool("delete_file", "Delete a file from the Obsidian vault. " +
309
+ "WARNING: This permanently removes the file. Use with caution.", {
310
+ path: z.string().describe("Path to the file to delete (relative to vault root)."),
311
+ confirm: z
312
+ .boolean()
313
+ .describe("Set to true to confirm deletion. Required safety check."),
314
+ }, async ({ path, confirm }) => {
315
+ if (!confirm) {
316
+ return {
317
+ content: [
318
+ {
319
+ type: "text",
320
+ text: "Deletion not confirmed. Set confirm=true to delete the file.",
321
+ },
322
+ ],
323
+ isError: true,
324
+ };
325
+ }
326
+ try {
327
+ await client.deleteFile(path);
328
+ return {
329
+ content: [
330
+ {
331
+ type: "text",
332
+ text: JSON.stringify({
333
+ success: true,
334
+ message: `File deleted: ${path}`,
335
+ }, null, 2),
336
+ },
337
+ ],
338
+ };
339
+ }
340
+ catch (error) {
341
+ const message = error instanceof ObsidianApiError ? error.message : String(error);
342
+ return {
343
+ content: [
344
+ {
345
+ type: "text",
346
+ text: `Error deleting file: ${message}`,
347
+ },
348
+ ],
349
+ isError: true,
350
+ };
351
+ }
352
+ });
353
+ }
354
+ /**
355
+ * Build a tree structure from a flat list of directories.
356
+ */
357
+ function buildDirectoryTree(directories, basePath) {
358
+ const root = [];
359
+ const nodeMap = new Map();
360
+ // Sort directories by path depth
361
+ const sortedDirs = directories.sort((a, b) => {
362
+ const depthA = a.path.split("/").length;
363
+ const depthB = b.path.split("/").length;
364
+ return depthA - depthB;
365
+ });
366
+ for (const dir of sortedDirs) {
367
+ const node = {
368
+ name: dir.name,
369
+ path: dir.path,
370
+ children: [],
371
+ };
372
+ nodeMap.set(dir.path, node);
373
+ // Find parent
374
+ const pathParts = dir.path.split("/");
375
+ pathParts.pop();
376
+ const parentPath = pathParts.join("/");
377
+ if (parentPath && nodeMap.has(parentPath)) {
378
+ nodeMap.get(parentPath).children.push(node);
379
+ }
380
+ else if (!parentPath || parentPath === basePath.replace(/\/$/, "")) {
381
+ root.push(node);
382
+ }
383
+ }
384
+ return root;
385
+ }
386
+ /**
387
+ * Format a tree structure as a string.
388
+ */
389
+ function formatTree(nodes, prefix) {
390
+ const lines = [];
391
+ for (let i = 0; i < nodes.length; i++) {
392
+ const node = nodes[i];
393
+ const isLast = i === nodes.length - 1;
394
+ const connector = isLast ? "└── " : "├── ";
395
+ const childPrefix = isLast ? " " : "│ ";
396
+ lines.push(`${prefix}${connector}📁 ${node.name}`);
397
+ if (node.children.length > 0) {
398
+ lines.push(formatTree(node.children, prefix + childPrefix));
399
+ }
400
+ }
401
+ return lines.join("\n");
402
+ }
403
+ //# sourceMappingURL=vault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault.js","sourceRoot":"","sources":["../../src/tools/vault.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAa,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,MAAsB;IAC1E,8EAA8E;IAC9E,qBAAqB;IACrB,8EAA8E;IAC9E,+DAA+D;IAC/D,8EAA8E;IAE9E,MAAM,CAAC,IAAI,CACT,cAAc,EACd,sEAAsE;QACpE,kEAAkE,EACpE,EAAE,EACF,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC;YAE9C,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;4BACE,OAAO,EAAE,IAAI;4BACb,SAAS,EAAE,MAAM,CAAC,aAAa;4BAC/B,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ;4BACzC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;4BAChC,OAAO,EAAE,MAAM,CAAC,OAAO;yBACxB,EACD,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GACX,KAAK,YAAY,gBAAgB;gBAC/B,CAAC,CAAC,KAAK,CAAC,OAAO;gBACf,CAAC,CAAC,+BAA+B,CAAC;YAEtC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;4BACE,OAAO,EAAE,KAAK;4BACd,KAAK,EAAE,OAAO;4BACd,IAAI,EAAE,yEAAyE;yBAChF,EACD,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,8EAA8E;IAC9E,mBAAmB;IACnB,8EAA8E;IAC9E,+DAA+D;IAC/D,8EAA8E;IAE9E,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,gDAAgD;QAC9C,oDAAoD;QACpD,kEAAkE,EACpE;QACE,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,wEAAwE,CACzE;KACJ,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAE/C,iCAAiC;YACjC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;YACzD,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;YAE3D,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;4BACE,OAAO,EAAE,IAAI;4BACb,IAAI,EAAE,IAAI,IAAI,GAAG;4BACjB,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;4BACnD,KAAK,EAAE,YAAY;4BACnB,UAAU,EAAE,KAAK,CAAC,MAAM;yBACzB,EACD,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GACX,KAAK,YAAY,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAEpE,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,wBAAwB,OAAO,EAAE;qBACxC;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,8EAA8E;IAC9E,uBAAuB;IACvB,8EAA8E;IAC9E,2CAA2C;IAC3C,8EAA8E;IAE9E,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,oDAAoD;QAClD,oEAAoE;QACpE,wDAAwD,EAC1D;QACE,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,wDAAwD,CAAC;QACrE,UAAU,EAAE,CAAC;aACV,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,EAAE;aACV,QAAQ,CACP,gFAAgF,CACjF;QACH,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,EAAE,CAAC;aACP,QAAQ,EAAE;aACV,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CAAC,6DAA6D,CAAC;KAC3E,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;QACvC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;YAEpE,mCAAmC;YACnC,IAAI,aAAa,GAAG,KAAK,CAAC;YAC1B,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAC/D,aAAa,GAAG,KAAK,CAAC,MAAM,CAC1B,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,IAAI,KAAK,WAAW;oBACzB,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAC/D,CAAC;YACJ,CAAC;YAED,mBAAmB;YACnB,MAAM,WAAW,GAAG,aAAa;iBAC9B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;iBACrC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACtB,MAAM,KAAK,GAAG,aAAa;iBACxB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;iBAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACX,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,SAAS,EAAE,CAAC,CAAC,SAAS;aACvB,CAAC,CAAC,CAAC;YAEN,2BAA2B;YAC3B,MAAM,eAAe,GAA2B,EAAE,CAAC;YACnD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,cAAc,CAAC;gBAC7C,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACzD,CAAC;YAED,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;4BACE,OAAO,EAAE,IAAI;4BACb,QAAQ,EAAE,IAAI,IAAI,GAAG;4BACrB,gBAAgB,EAAE,WAAW,CAAC,MAAM;4BACpC,UAAU,EAAE,KAAK,CAAC,MAAM;4BACxB,eAAe;4BACf,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,eAAe;4BACvD,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,eAAe;4BAC3C,SAAS,EACP,WAAW,CAAC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG;gCAC5C,CAAC,CAAC,8DAA8D;gCAChE,CAAC,CAAC,SAAS;yBAChB,EACD,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GACX,KAAK,YAAY,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAEpE,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,wBAAwB,OAAO,EAAE;qBACxC;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,8EAA8E;IAC9E,4BAA4B;IAC5B,8EAA8E;IAC9E,0CAA0C;IAC1C,8EAA8E;IAE9E,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,8DAA8D;QAC5D,mDAAmD;QACnD,+CAA+C,EACjD;QACE,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,wDAAwD,CAAC;QACrE,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,EAAE,CAAC;aACP,QAAQ,EAAE;aACV,OAAO,CAAC,CAAC,CAAC;aACV,QAAQ,CAAC,qCAAqC,CAAC;KACnD,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC3B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE,EAAE,QAAQ,IAAI,CAAC,CAAC,CAAC;YAEnE,uBAAuB;YACvB,MAAM,IAAI,GAAG,kBAAkB,CAC7B,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,EAC3C,IAAI,IAAI,EAAE,CACX,CAAC;YAEF,wBAAwB;YACxB,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAExC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,uBAAuB,UAAU,IAAI,SAAS,EAAE;qBACvD;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GACX,KAAK,YAAY,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAEpE,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,kCAAkC,OAAO,EAAE;qBAClD;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,8EAA8E;IAC9E,uBAAuB;IACvB,8EAA8E;IAC9E,6CAA6C;IAC7C,8EAA8E;IAE9E,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,mEAAmE;QACjE,oEAAoE,EACtE;QACE,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,0DAA0D,CAAC;KACxE,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAExD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YACrD,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;YAEhE,qBAAqB;YACrB,MAAM,eAAe,GAA2B,EAAE,CAAC;YACnD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,cAAc,CAAC;gBAC7C,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACzD,CAAC;YAED,2BAA2B;YAC3B,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;iBACrD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC3B,MAAM,CACL,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;gBACd,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACX,OAAO,GAAG,CAAC;YACb,CAAC,EACD,EAA4B,CAC7B,CAAC;YAEJ,uBAAuB;YACvB,MAAM,aAAa,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEjD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;4BACE,OAAO,EAAE,IAAI;4BACb,IAAI,EAAE,IAAI,IAAI,GAAG;4BACjB,UAAU,EAAE;gCACV,UAAU,EAAE,KAAK,CAAC,MAAM;gCACxB,gBAAgB,EAAE,WAAW,CAAC,MAAM;gCACpC,aAAa,EAAE,aAAa;gCAC5B,UAAU,EAAE,KAAK,CAAC,MAAM,GAAG,aAAa;6BACzC;4BACD,WAAW,EAAE,gBAAgB;yBAC9B,EACD,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GACX,KAAK,YAAY,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAEpE,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,6BAA6B,OAAO,EAAE;qBAC7C;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,8EAA8E;IAC9E,oBAAoB;IACpB,8EAA8E;IAC9E,gCAAgC;IAChC,8EAA8E;IAE9E,MAAM,CAAC,IAAI,CACT,aAAa,EACb,yCAAyC;QACvC,+DAA+D,EACjE;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;QACjF,OAAO,EAAE,CAAC;aACP,OAAO,EAAE;aACT,QAAQ,CAAC,yDAAyD,CAAC;KACvE,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,8DAA8D;qBACrE;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAE9B,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;4BACE,OAAO,EAAE,IAAI;4BACb,OAAO,EAAE,iBAAiB,IAAI,EAAE;yBACjC,EACD,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GACX,KAAK,YAAY,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAEpE,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,wBAAwB,OAAO,EAAE;qBACxC;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAYD;;GAEG;AACH,SAAS,kBAAkB,CAAC,WAAwB,EAAE,QAAgB;IACpE,MAAM,IAAI,GAAe,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;IAE5C,iCAAiC;IACjC,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC3C,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;QACxC,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;QACxC,OAAO,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAa;YACrB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,QAAQ,EAAE,EAAE;SACb,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAE5B,cAAc;QACd,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,SAAS,CAAC,GAAG,EAAE,CAAC;QAChB,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEvC,IAAI,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC;YACrE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,KAAiB,EAAE,MAAc;IACnD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,MAAM,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3C,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAE7C,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,SAAS,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAEnD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * ============================================================================
3
+ * OBSIDIAN MCP - Types Index
4
+ * ============================================================================
5
+ *
6
+ * Central export point for all type definitions.
7
+ * Import from this file to access any type in the project.
8
+ * ============================================================================
9
+ */
10
+ export * from "./obsidian.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,eAAe,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * ============================================================================
3
+ * OBSIDIAN MCP - Types Index
4
+ * ============================================================================
5
+ *
6
+ * Central export point for all type definitions.
7
+ * Import from this file to access any type in the project.
8
+ * ============================================================================
9
+ */
10
+ export * from "./obsidian.js";
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,eAAe,CAAC"}