obsidian-mcp-server 3.5.1 → 3.5.2

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 (65) hide show
  1. package/AGENTS.md +7 -6
  2. package/CLAUDE.md +7 -6
  3. package/README.md +7 -5
  4. package/changelog/3.5.x/3.5.2.md +27 -0
  5. package/dist/mcp-server/resources/definitions/index.d.ts +5 -0
  6. package/dist/mcp-server/resources/definitions/index.d.ts.map +1 -1
  7. package/dist/mcp-server/resources/definitions/obsidian-status.resource.d.ts +11 -4
  8. package/dist/mcp-server/resources/definitions/obsidian-status.resource.d.ts.map +1 -1
  9. package/dist/mcp-server/resources/definitions/obsidian-status.resource.js +21 -12
  10. package/dist/mcp-server/resources/definitions/obsidian-status.resource.js.map +1 -1
  11. package/dist/mcp-server/tools/definitions/index.d.ts +88 -39
  12. package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
  13. package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.d.ts +6 -1
  14. package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.d.ts.map +1 -1
  15. package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.js +7 -1
  16. package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.js.map +1 -1
  17. package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.d.ts +6 -1
  18. package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.d.ts.map +1 -1
  19. package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.js +7 -1
  20. package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.js.map +1 -1
  21. package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.d.ts +11 -2
  22. package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.d.ts.map +1 -1
  23. package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.js +41 -15
  24. package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.js.map +1 -1
  25. package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.d.ts +8 -3
  26. package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.d.ts.map +1 -1
  27. package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.js +12 -5
  28. package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.js.map +1 -1
  29. package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.d.ts +6 -1
  30. package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.d.ts.map +1 -1
  31. package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.js +7 -1
  32. package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.js.map +1 -1
  33. package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.d.ts +8 -3
  34. package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.d.ts.map +1 -1
  35. package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.js +10 -4
  36. package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.js.map +1 -1
  37. package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.d.ts +6 -1
  38. package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.d.ts.map +1 -1
  39. package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.js +7 -1
  40. package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.js.map +1 -1
  41. package/dist/mcp-server/tools/definitions/obsidian-replace-in-note.tool.d.ts +6 -1
  42. package/dist/mcp-server/tools/definitions/obsidian-replace-in-note.tool.d.ts.map +1 -1
  43. package/dist/mcp-server/tools/definitions/obsidian-replace-in-note.tool.js +7 -1
  44. package/dist/mcp-server/tools/definitions/obsidian-replace-in-note.tool.js.map +1 -1
  45. package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.d.ts +6 -1
  46. package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.d.ts.map +1 -1
  47. package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.js +7 -1
  48. package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.js.map +1 -1
  49. package/dist/services/obsidian/frontmatter-ops.d.ts +9 -5
  50. package/dist/services/obsidian/frontmatter-ops.d.ts.map +1 -1
  51. package/dist/services/obsidian/frontmatter-ops.js +70 -16
  52. package/dist/services/obsidian/frontmatter-ops.js.map +1 -1
  53. package/dist/services/obsidian/obsidian-service.d.ts +10 -7
  54. package/dist/services/obsidian/obsidian-service.d.ts.map +1 -1
  55. package/dist/services/obsidian/obsidian-service.js +179 -31
  56. package/dist/services/obsidian/obsidian-service.js.map +1 -1
  57. package/dist/services/obsidian/section-extractor.d.ts +17 -1
  58. package/dist/services/obsidian/section-extractor.d.ts.map +1 -1
  59. package/dist/services/obsidian/section-extractor.js +109 -40
  60. package/dist/services/obsidian/section-extractor.js.map +1 -1
  61. package/dist/services/obsidian/types.d.ts +17 -0
  62. package/dist/services/obsidian/types.d.ts.map +1 -1
  63. package/manifest.json +1 -1
  64. package/package.json +7 -7
  65. package/server.json +3 -3
@@ -5,6 +5,9 @@
5
5
  * @module services/obsidian/section-extractor
6
6
  */
7
7
  import { notFound } from '@cyanheads/mcp-ts-core/errors';
8
+ import { splice } from './frontmatter-ops.js';
9
+ /** Delimiter joining a heading path, matching upstream's PATCH `Target-Delimiter`. */
10
+ const HEADING_DELIMITER = '::';
8
11
  /**
9
12
  * Extract a section's raw markdown (heading/block) or JSON value (frontmatter).
10
13
  * Throws `NotFound` if the target does not exist in the note.
@@ -12,11 +15,11 @@ import { notFound } from '@cyanheads/mcp-ts-core/errors';
12
15
  export function extractSection(note, section) {
13
16
  switch (section.type) {
14
17
  case 'frontmatter':
15
- return extractFrontmatterField(note, section.target);
18
+ return { value: extractFrontmatterField(note, section.target) };
16
19
  case 'heading':
17
20
  return extractHeading(note.content, section.target);
18
21
  case 'block':
19
- return extractBlock(note.content, section.target);
22
+ return { value: extractBlock(note.content, section.target) };
20
23
  }
21
24
  }
22
25
  function extractFrontmatterField(note, key) {
@@ -28,63 +31,120 @@ function extractFrontmatterField(note, key) {
28
31
  }
29
32
  return note.frontmatter[key];
30
33
  }
34
+ /**
35
+ * Collect every ATX heading in the note body, in document order. Setext
36
+ * headings are not markdown this extractor recognizes, and lines inside a
37
+ * fenced code block or a frontmatter block are excluded.
38
+ */
39
+ function scanHeadings(lines, bodyStart, inFence) {
40
+ const headings = [];
41
+ for (let i = bodyStart; i < lines.length; i++) {
42
+ if (inFence[i])
43
+ continue;
44
+ const m = /^(#{1,6})\s+(.*?)\s*$/.exec(lines[i] ?? '');
45
+ if (!m)
46
+ continue;
47
+ headings.push({ index: i, level: (m[1] ?? '').length, text: (m[2] ?? '').trim() });
48
+ }
49
+ return headings;
50
+ }
51
+ /**
52
+ * Build the full `Parent::Child` path of one heading by walking backward
53
+ * through the enclosing headings — each ancestor is the nearest preceding
54
+ * heading strictly shallower than the level reached so far. This is the same
55
+ * serialization upstream's document map emits (trimmed heading text, joined by
56
+ * the PATCH target delimiter), so a path built here is a locator the write path
57
+ * resolves as an exact map entry.
58
+ */
59
+ function headingPath(headings, idx) {
60
+ const matched = headings[idx];
61
+ if (!matched)
62
+ return '';
63
+ const segments = [matched.text];
64
+ let level = matched.level;
65
+ for (let i = idx - 1; i >= 0 && level > 1; i--) {
66
+ const ancestor = headings[i];
67
+ if (ancestor && ancestor.level < level) {
68
+ segments.unshift(ancestor.text);
69
+ level = ancestor.level;
70
+ }
71
+ }
72
+ return segments.join(HEADING_DELIMITER);
73
+ }
31
74
  /**
32
75
  * Match a heading by "::"-delimited hierarchy. "Top::Sub" walks to a level-N
33
- * heading "Top" and then a deeper heading "Sub" beneath it.
76
+ * heading "Top" and then a deeper heading "Sub" beneath it. A single-segment
77
+ * target matches a leaf at any depth and resolves to the first such heading —
78
+ * the resolution is reported back in `sectionTarget`, and competing headings in
79
+ * `candidates`, rather than changing which one wins.
80
+ *
81
+ * A target that already carries the delimiter is left out of collision
82
+ * detection, mirroring the write-side resolver's own short-circuit: the walk is
83
+ * scoped to the first matching ancestor and never inspects a repeat of it.
34
84
  */
35
85
  function extractHeading(content, target) {
36
86
  const parts = target
37
- .split('::')
87
+ .split(HEADING_DELIMITER)
38
88
  .map((p) => p.trim())
39
89
  .filter(Boolean);
40
90
  if (parts.length === 0) {
41
91
  throw notFound('Empty heading target.', { target });
42
92
  }
43
93
  const lines = content.split('\n');
44
- const bodyStart = frontmatterEndLine(lines);
94
+ const bodyStart = frontmatterEndLine(content);
45
95
  const inFence = computeFenceMask(lines, bodyStart);
46
- let cursor = bodyStart;
96
+ const headings = scanHeadings(lines, bodyStart, inFence);
97
+ let cursor = 0;
47
98
  let parentLevel = 0;
99
+ let matched = -1;
48
100
  for (const part of parts) {
49
101
  let found = -1;
50
- let foundLevel = 0;
51
- for (let i = cursor; i < lines.length; i++) {
52
- if (inFence[i])
102
+ for (let i = cursor; i < headings.length; i++) {
103
+ const heading = headings[i];
104
+ if (!heading)
53
105
  continue;
54
- const m = /^(#{1,6})\s+(.*?)\s*$/.exec(lines[i] ?? '');
55
- if (!m)
56
- continue;
57
- const level = (m[1] ?? '').length;
58
- const text = (m[2] ?? '').trim();
59
- if (parentLevel > 0 && level <= parentLevel) {
106
+ if (parentLevel > 0 && heading.level <= parentLevel) {
60
107
  // exited the parent; stop searching deeper for this part
61
108
  break;
62
109
  }
63
- if (text === part && (parentLevel === 0 || level > parentLevel)) {
110
+ if (heading.text === part) {
64
111
  found = i;
65
- foundLevel = level;
66
112
  break;
67
113
  }
68
114
  }
69
- if (found === -1) {
115
+ const hit = headings[found];
116
+ if (!hit) {
70
117
  throw notFound(`Heading '${target}' not found.`, { target });
71
118
  }
119
+ matched = found;
72
120
  cursor = found + 1;
73
- parentLevel = foundLevel;
121
+ parentLevel = hit.level;
74
122
  }
75
123
  // Slice from the matched heading line to the next heading at the same or shallower level.
76
- const startLine = cursor - 1;
124
+ const startLine = headings[matched]?.index ?? 0;
77
125
  let endLine = lines.length;
78
- for (let i = cursor; i < lines.length; i++) {
79
- if (inFence[i])
80
- continue;
81
- const m = /^(#{1,6})\s+/.exec(lines[i] ?? '');
82
- if (m && (m[1] ?? '').length <= parentLevel) {
83
- endLine = i;
126
+ for (let i = matched + 1; i < headings.length; i++) {
127
+ const heading = headings[i];
128
+ if (heading && heading.level <= parentLevel) {
129
+ endLine = heading.index;
84
130
  break;
85
131
  }
86
132
  }
87
- return lines.slice(startLine, endLine).join('\n').replace(/\n+$/, '');
133
+ const leaf = parts.length === 1 ? parts[0] : undefined;
134
+ const collisions = [];
135
+ if (leaf !== undefined) {
136
+ headings.forEach((h, i) => {
137
+ if (h.text === leaf)
138
+ collisions.push(i);
139
+ });
140
+ }
141
+ return {
142
+ value: lines.slice(startLine, endLine).join('\n').replace(/\n+$/, ''),
143
+ sectionTarget: headingPath(headings, matched),
144
+ ...(collisions.length > 1
145
+ ? { candidates: collisions.map((i) => headingPath(headings, i)) }
146
+ : {}),
147
+ };
88
148
  }
89
149
  /**
90
150
  * Match a block by its `^blockId` reference. Returns the line containing the
@@ -93,7 +153,7 @@ function extractHeading(content, target) {
93
153
  */
94
154
  function extractBlock(content, blockId) {
95
155
  const lines = content.split('\n');
96
- const bodyStart = frontmatterEndLine(lines);
156
+ const bodyStart = frontmatterEndLine(content);
97
157
  const inFence = computeFenceMask(lines, bodyStart);
98
158
  const escaped = blockId.replace(/[\\^$.*+?()[\]{}|]/g, '\\$&');
99
159
  const ref = new RegExp(`(^|\\s)\\^${escaped}\\s*$`);
@@ -114,20 +174,29 @@ function extractBlock(content, blockId) {
114
174
  throw notFound(`Block reference '^${blockId}' not found.`, { blockId });
115
175
  }
116
176
  /**
117
- * Return the line index where the document body starts, skipping a leading
118
- * `---`/`---` YAML frontmatter block. Returns 0 when no frontmatter is present.
119
- * Without this guard, heading and block extraction would scan inside the
120
- * frontmatter and falsely match YAML comment lines or include the fence in a
121
- * paragraph walk-back.
177
+ * Return the line index where the document body starts, skipping a leading YAML
178
+ * frontmatter block. Returns 0 when no frontmatter is present. Without this
179
+ * guard, heading and block extraction would scan inside the frontmatter and
180
+ * falsely match YAML comment lines or include the fence in a paragraph
181
+ * walk-back.
182
+ *
183
+ * The boundary comes from `splice` rather than a second line scan, so the read
184
+ * path and every body-scoped write path agree on where the body starts —
185
+ * notably on an opening fence carrying trailing whitespace, which Obsidian
186
+ * reads as body and a lenient `/^---\s*$/` scan hid behind a fence that isn't
187
+ * one.
122
188
  */
123
- function frontmatterEndLine(lines) {
124
- if (!/^---\s*$/.test(lines[0] ?? ''))
189
+ function frontmatterEndLine(content) {
190
+ const { hasFrontmatter, raw } = splice(content);
191
+ if (!hasFrontmatter)
125
192
  return 0;
126
- for (let i = 1; i < lines.length; i++) {
127
- if (/^---\s*$/.test(lines[i] ?? ''))
128
- return i + 1;
129
- }
130
- return 0;
193
+ /**
194
+ * `content === raw + body`, so the newlines inside `raw` count the lines it
195
+ * owns. A `raw` that ends mid-line shares that line with the body's first
196
+ * bytes; skip it rather than scan a line the fence starts.
197
+ */
198
+ const consumed = raw.split('\n').length - 1;
199
+ return raw.endsWith('\n') ? consumed : consumed + 1;
131
200
  }
132
201
  /**
133
202
  * Mark line indices that fall inside fenced code blocks (` ``` ` or `~~~`) so
@@ -1 +1 @@
1
- {"version":3,"file":"section-extractor.js","sourceRoot":"","sources":["../../../src/services/obsidian/section-extractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"section-extractor.js","sourceRoot":"","sources":["../../../src/services/obsidian/section-extractor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C,sFAAsF;AACtF,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAmB/B;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAc,EAAE,OAAsB;IACnE,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,aAAa;YAChB,OAAO,EAAE,KAAK,EAAE,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClE,KAAK,SAAS;YACZ,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACtD,KAAK,OAAO;YACV,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;IACjE,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAc,EAAE,GAAW;IAC1D,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,MAAM,QAAQ,CAAC,oBAAoB,GAAG,kBAAkB,IAAI,CAAC,IAAI,GAAG,EAAE;YACpE,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC;AAYD;;;;GAIG;AACH,SAAS,YAAY,CAAC,KAAe,EAAE,SAAiB,EAAE,OAAkB;IAC1E,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,IAAI,OAAO,CAAC,CAAC,CAAC;YAAE,SAAS;QACzB,MAAM,CAAC,GAAG,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,WAAW,CAAC,QAAuB,EAAE,GAAW;IACvD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC1B,KAAK,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC;YACvC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAChC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,cAAc,CAAC,OAAe,EAAE,MAAc;IACrD,MAAM,KAAK,GAAG,MAAM;SACjB,KAAK,CAAC,iBAAiB,CAAC;SACxB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,QAAQ,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAEzD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;IAEjB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;QACf,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,IAAI,WAAW,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,IAAI,WAAW,EAAE,CAAC;gBACpD,yDAAyD;gBACzD,MAAM;YACR,CAAC;YACD,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBAC1B,KAAK,GAAG,CAAC,CAAC;gBACV,MAAM;YACR,CAAC;QACH,CAAC;QACD,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,QAAQ,CAAC,YAAY,MAAM,cAAc,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,GAAG,KAAK,CAAC;QAChB,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC;QACnB,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,0FAA0F;IAC1F,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;IAChD,IAAI,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnD,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,IAAI,WAAW,EAAE,CAAC;YAC5C,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;YACxB,MAAM;QACR,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvD,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACxB,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI;gBAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACrE,aAAa,EAAE,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC;QAC7C,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YACvB,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE;YACjE,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,OAAe,EAAE,OAAe;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,aAAa,OAAO,OAAO,CAAC,CAAC;IACpD,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,IAAI,OAAO,CAAC,CAAC,CAAC;YAAE,SAAS;QACzB,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,OAAO,KAAK,GAAG,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBACpC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,MAAM;gBACzD,KAAK,EAAE,CAAC;YACV,CAAC;YACD,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,CAAC,qBAAqB,OAAO,cAAc,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,kBAAkB,CAAC,OAAe;IACzC,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,CAAC,cAAc;QAAE,OAAO,CAAC,CAAC;IAC9B;;;;OAIG;IACH,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5C,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAe,EAAE,IAAI,GAAG,CAAC;IACxD,MAAM,IAAI,GAAc,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,IAAI,QAAQ,GAAqB,IAAI,CAAC;IACtC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,EAAE,CAAC;gBACN,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACzB,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAc,CAAC;gBACjC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;gBACvB,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACjB,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACzB,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC;gBACrD,QAAQ,GAAG,IAAI,CAAC;gBAChB,OAAO,GAAG,CAAC,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -40,7 +40,24 @@ export interface DocumentMap {
40
40
  export interface FileListing {
41
41
  files: string[];
42
42
  }
43
+ /**
44
+ * A Local REST API extension registered against the plugin. Reported only on
45
+ * an authenticated `GET /`, and trimmed here to the identity trio — upstream
46
+ * sends the extension's whole plugin manifest plus its `routes` and
47
+ * `mcpTools`, none of which a capability check or a calling agent reads.
48
+ */
49
+ export interface ApiExtension {
50
+ id: string;
51
+ name?: string | undefined;
52
+ version?: string | undefined;
53
+ }
43
54
  export interface VaultStatus {
55
+ /**
56
+ * Registered API extensions. Absent when the plugin did not report them —
57
+ * an unauthenticated read, or a build predating the extension mechanism —
58
+ * which is distinct from an empty array meaning "none registered".
59
+ */
60
+ apiExtensions?: ApiExtension[] | undefined;
44
61
  authenticated: boolean;
45
62
  manifest?: {
46
63
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/obsidian/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/obsidian/types.ts"],"names":[],"mappings":"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"}
package/manifest.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "manifest_version": "0.3",
3
3
  "name": "obsidian-mcp-server",
4
- "version": "3.5.1",
4
+ "version": "3.5.2",
5
5
  "description": "Read, write, search, and surgically edit Obsidian vault notes, tags, and frontmatter via MCP. STDIO or Streamable HTTP.",
6
6
  "author": {
7
7
  "name": "cyanheads",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "obsidian-mcp-server",
3
- "version": "3.5.1",
3
+ "version": "3.5.2",
4
4
  "mcpName": "io.github.cyanheads/obsidian-mcp-server",
5
5
  "description": "Read, write, search, and surgically edit Obsidian vault notes, tags, and frontmatter via MCP. STDIO or Streamable HTTP.",
6
6
  "type": "module",
@@ -85,21 +85,21 @@
85
85
  "access": "public"
86
86
  },
87
87
  "dependencies": {
88
- "@cyanheads/mcp-ts-core": "^0.12.5",
88
+ "@cyanheads/mcp-ts-core": "^0.12.8",
89
89
  "js-yaml": "^5.4.1",
90
90
  "pino-pretty": "^13.1.3",
91
- "undici": "^8.10.1",
91
+ "undici": "^8.10.2",
92
92
  "yaml": "^2.9.0",
93
93
  "zod": "^4.5.4"
94
94
  },
95
95
  "devDependencies": {
96
- "@biomejs/biome": "^2.5.11",
96
+ "@biomejs/biome": "^2.5.12",
97
97
  "@socketsecurity/bun-security-scanner": "^1.1.2",
98
- "@types/node": "^26.4.0",
98
+ "@types/node": "^26.4.1",
99
99
  "depcheck": "^1.4.7",
100
100
  "ignore": "^7.0.8",
101
- "tsc-alias": "^1.9.3",
101
+ "tsc-alias": "^1.9.4",
102
102
  "typescript": "^7.0.2",
103
- "vitest": "^4.1.11"
103
+ "vitest": "^5.0.0"
104
104
  }
105
105
  }
package/server.json CHANGED
@@ -6,14 +6,14 @@
6
6
  "url": "https://github.com/cyanheads/obsidian-mcp-server",
7
7
  "source": "github"
8
8
  },
9
- "version": "3.5.1",
9
+ "version": "3.5.2",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "registryBaseUrl": "https://registry.npmjs.org",
14
14
  "identifier": "obsidian-mcp-server",
15
15
  "runtimeHint": "node",
16
- "version": "3.5.1",
16
+ "version": "3.5.2",
17
17
  "packageArguments": [
18
18
  {
19
19
  "type": "positional",
@@ -101,7 +101,7 @@
101
101
  "registryBaseUrl": "https://registry.npmjs.org",
102
102
  "identifier": "obsidian-mcp-server",
103
103
  "runtimeHint": "node",
104
- "version": "3.5.1",
104
+ "version": "3.5.2",
105
105
  "packageArguments": [
106
106
  {
107
107
  "type": "positional",