obsidian-mcp-server 3.7.2 → 3.9.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 (110) hide show
  1. package/AGENTS.md +20 -15
  2. package/CLAUDE.md +20 -15
  3. package/README.md +31 -19
  4. package/changelog/3.8.x/3.8.0.md +38 -0
  5. package/changelog/3.9.x/3.9.0.md +43 -0
  6. package/changelog/template.md +10 -3
  7. package/dist/config/server-config.d.ts +1 -0
  8. package/dist/config/server-config.d.ts.map +1 -1
  9. package/dist/config/server-config.js +30 -19
  10. package/dist/config/server-config.js.map +1 -1
  11. package/dist/index.d.ts +3 -3
  12. package/dist/index.js +27 -15
  13. package/dist/index.js.map +1 -1
  14. package/dist/instructions.d.ts +4 -3
  15. package/dist/instructions.d.ts.map +1 -1
  16. package/dist/instructions.js +23 -12
  17. package/dist/instructions.js.map +1 -1
  18. package/dist/mcp-server/resources/definitions/index.d.ts +2 -2
  19. package/dist/mcp-server/resources/definitions/obsidian-tags.resource.d.ts +3 -2
  20. package/dist/mcp-server/resources/definitions/obsidian-tags.resource.d.ts.map +1 -1
  21. package/dist/mcp-server/resources/definitions/obsidian-tags.resource.js +6 -5
  22. package/dist/mcp-server/resources/definitions/obsidian-tags.resource.js.map +1 -1
  23. package/dist/mcp-server/resources/definitions/obsidian-vault-note.resource.d.ts +2 -2
  24. package/dist/mcp-server/resources/definitions/obsidian-vault-note.resource.js +2 -2
  25. package/dist/mcp-server/resources/definitions/obsidian-vault-note.resource.js.map +1 -1
  26. package/dist/mcp-server/tools/definitions/_shared/suggest-paths.d.ts +15 -6
  27. package/dist/mcp-server/tools/definitions/_shared/suggest-paths.d.ts.map +1 -1
  28. package/dist/mcp-server/tools/definitions/_shared/suggest-paths.js +24 -12
  29. package/dist/mcp-server/tools/definitions/_shared/suggest-paths.js.map +1 -1
  30. package/dist/mcp-server/tools/definitions/index.d.ts +250 -230
  31. package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
  32. package/dist/mcp-server/tools/definitions/index.js +6 -4
  33. package/dist/mcp-server/tools/definitions/index.js.map +1 -1
  34. package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.d.ts +8 -2
  35. package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.d.ts.map +1 -1
  36. package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.js +10 -3
  37. package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.js.map +1 -1
  38. package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.d.ts +7 -6
  39. package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.d.ts.map +1 -1
  40. package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.js +7 -7
  41. package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.js.map +1 -1
  42. package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.d.ts +2 -2
  43. package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.d.ts.map +1 -1
  44. package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.js +8 -5
  45. package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.js.map +1 -1
  46. package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.d.ts +6 -6
  47. package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.d.ts.map +1 -1
  48. package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.js +8 -8
  49. package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.js.map +1 -1
  50. package/dist/mcp-server/tools/definitions/obsidian-list-tags.tool.d.ts +4 -4
  51. package/dist/mcp-server/tools/definitions/obsidian-list-tags.tool.js +7 -7
  52. package/dist/mcp-server/tools/definitions/obsidian-list-tags.tool.js.map +1 -1
  53. package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.d.ts +2 -2
  54. package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.d.ts.map +1 -1
  55. package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.js +2 -2
  56. package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.js.map +1 -1
  57. package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.d.ts +2 -2
  58. package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.d.ts.map +1 -1
  59. package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.js +2 -2
  60. package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.js.map +1 -1
  61. package/dist/mcp-server/tools/definitions/obsidian-open-in-ui.tool.d.ts +2 -2
  62. package/dist/mcp-server/tools/definitions/obsidian-open-in-ui.tool.js +3 -3
  63. package/dist/mcp-server/tools/definitions/obsidian-open-in-ui.tool.js.map +1 -1
  64. package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.d.ts +8 -2
  65. package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.d.ts.map +1 -1
  66. package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.js +10 -3
  67. package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.js.map +1 -1
  68. package/dist/mcp-server/tools/definitions/obsidian-replace-in-note.tool.d.ts +2 -2
  69. package/dist/mcp-server/tools/definitions/obsidian-replace-in-note.tool.js +2 -2
  70. package/dist/mcp-server/tools/definitions/obsidian-replace-in-note.tool.js.map +1 -1
  71. package/dist/mcp-server/tools/definitions/obsidian-search-notes.tool.d.ts +185 -35
  72. package/dist/mcp-server/tools/definitions/obsidian-search-notes.tool.d.ts.map +1 -1
  73. package/dist/mcp-server/tools/definitions/obsidian-search-notes.tool.js +145 -82
  74. package/dist/mcp-server/tools/definitions/obsidian-search-notes.tool.js.map +1 -1
  75. package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.d.ts +8 -2
  76. package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.d.ts.map +1 -1
  77. package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.js +12 -5
  78. package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.js.map +1 -1
  79. package/dist/services/obsidian/jsonlogic-evaluator.d.ts +33 -8
  80. package/dist/services/obsidian/jsonlogic-evaluator.d.ts.map +1 -1
  81. package/dist/services/obsidian/jsonlogic-evaluator.js +171 -32
  82. package/dist/services/obsidian/jsonlogic-evaluator.js.map +1 -1
  83. package/dist/services/obsidian/jsonlogic-worker.d.ts +6 -5
  84. package/dist/services/obsidian/jsonlogic-worker.d.ts.map +1 -1
  85. package/dist/services/obsidian/jsonlogic-worker.js +7 -5
  86. package/dist/services/obsidian/jsonlogic-worker.js.map +1 -1
  87. package/dist/services/obsidian/obsidian-service.d.ts +90 -36
  88. package/dist/services/obsidian/obsidian-service.d.ts.map +1 -1
  89. package/dist/services/obsidian/obsidian-service.js +748 -248
  90. package/dist/services/obsidian/obsidian-service.js.map +1 -1
  91. package/dist/services/obsidian/patch-instruction.d.ts +4 -1
  92. package/dist/services/obsidian/patch-instruction.d.ts.map +1 -1
  93. package/dist/services/obsidian/patch-instruction.js +5 -2
  94. package/dist/services/obsidian/patch-instruction.js.map +1 -1
  95. package/dist/services/obsidian/path-policy.d.ts +67 -23
  96. package/dist/services/obsidian/path-policy.d.ts.map +1 -1
  97. package/dist/services/obsidian/path-policy.js +183 -80
  98. package/dist/services/obsidian/path-policy.js.map +1 -1
  99. package/dist/services/obsidian/section-extractor.d.ts +62 -1
  100. package/dist/services/obsidian/section-extractor.d.ts.map +1 -1
  101. package/dist/services/obsidian/section-extractor.js +387 -51
  102. package/dist/services/obsidian/section-extractor.js.map +1 -1
  103. package/dist/services/obsidian/simple-search.d.ts +62 -0
  104. package/dist/services/obsidian/simple-search.d.ts.map +1 -0
  105. package/dist/services/obsidian/simple-search.js +264 -0
  106. package/dist/services/obsidian/simple-search.js.map +1 -0
  107. package/manifest.json +12 -4
  108. package/package.json +9 -9
  109. package/server.json +23 -11
  110. package/skills/obsidian-guide/SKILL.md +61 -0
@@ -27,6 +27,11 @@ export type ObsidianFetch = (url: string, init: RequestInit & {
27
27
  rejectUnauthorized: boolean;
28
28
  };
29
29
  }) => Promise<UndiciResponse>;
30
+ /** A text hit with its match locations capped at `maxMatchesPerHit`; a capped hit carries `truncated` and `totalMatches`. */
31
+ type ClippedTextHit = TextSearchHit & {
32
+ totalMatches?: number;
33
+ truncated?: boolean;
34
+ };
30
35
  export declare class ObsidianService {
31
36
  #private;
32
37
  /**
@@ -41,8 +46,9 @@ export declare class ObsidianService {
41
46
  get omnisearchUrl(): string;
42
47
  /**
43
48
  * Close the undici dispatcher, releasing its keep-alive sockets to the Local
44
- * REST API and Omnisearch. Wired through `createApp({ teardown })`; waits for
45
- * in-flight requests to settle rather than aborting them.
49
+ * REST API and Omnisearch, after rejecting the note-body reads still queued.
50
+ * Wired through `createApp({ teardown })`; waits for in-flight requests to
51
+ * settle rather than aborting them.
46
52
  *
47
53
  * Bun resolves `undici` to a built-in shim whose `Agent` is an inert object
48
54
  * with no `close` — Bun's `fetch` pools sockets itself and ignores the
@@ -96,6 +102,11 @@ export declare class ObsidianService {
96
102
  * applied to — identical to `instruction.target` unless a bare heading leaf
97
103
  * was expanded to its full `Parent::Child` path (see `#resolveHeadingTarget`),
98
104
  * which callers echo back so an agent can see where the write landed.
105
+ *
106
+ * A heading write placed by a heading the note has is checked against the
107
+ * note's link definitions first (`#refuseDroppedDefinition`). Every step
108
+ * that needs the note's text shares one read of it: the one
109
+ * `#headingIndex` made, or else one made on first need.
99
110
  */
100
111
  patchNote(ctx: Context, target: NoteTarget, content: string, instruction: PatchInstruction): Promise<string>;
101
112
  deleteNote(ctx: Context, target: NoteTarget): Promise<void>;
@@ -112,8 +123,9 @@ export declare class ObsidianService {
112
123
  * coddingtonbear/obsidian-local-rest-api#237). Always prefer delivered
113
124
  * bytes or HEAD over the metadata field.
114
125
  *
115
- * Bypasses retries (a 404 is the answer, not a transient failure) and
116
- * gates readable on path targets before issuing the HEAD.
126
+ * One attempt, never retried (HEAD is not in `RETRY_SAFE_METHODS`; a 404 is
127
+ * the answer, not a transient failure), and gates readable on path targets
128
+ * before issuing the HEAD.
117
129
  */
118
130
  tryGetSize(ctx: Context, target: NoteTarget): Promise<number | null>;
119
131
  /**
@@ -125,9 +137,10 @@ export declare class ObsidianService {
125
137
  /**
126
138
  * Vault tags with usage counts, hierarchical parents included. Unscoped, the
127
139
  * plugin's `/tags/` with its occurrence counts. That payload carries no
128
- * per-note attribution, so under OBSIDIAN_READ_PATHS the tags are read from
129
- * the readable notes' contexts instead (one upstream search, no bodies), and
130
- * each one counts the readable notes carrying it or a tag nested under it.
140
+ * per-note attribution, so under OBSIDIAN_READ_PATHS or OBSIDIAN_DENY_PATHS
141
+ * the tags are read from the readable notes' contexts instead (one upstream
142
+ * search, no bodies), and each one counts the readable notes carrying it or a
143
+ * tag nested under it.
131
144
  */
132
145
  listTags(ctx: Context): Promise<ObsidianTag[]>;
133
146
  listCommands(ctx: Context): Promise<ObsidianCommand[]>;
@@ -136,53 +149,85 @@ export declare class ObsidianService {
136
149
  * (`contextRelativeSpan`), then a multi-token query's spans are merged into
137
150
  * match locations (`mergeIntoLocations`).
138
151
  *
139
- * The upstream materializes one context window per matching note before it
140
- * responds, so an oversized `contextLength` on a broad query exhausts V8's
141
- * string capacity and comes back as an opaque 500 — caught here and
142
- * re-thrown typed, the way `searchOmnisearch` re-throws its own reachability
143
- * failure.
152
+ * The upstream serializes every match in the vault, its context window and
153
+ * about 150 characters of offsets and framing, into one response, so a
154
+ * broad query exhausts V8's string capacity, even at a small
155
+ * `contextLength`, and comes back as an opaque 500 — caught
156
+ * here and re-thrown typed, the way `searchOmnisearch` re-throws its own
157
+ * reachability failure. Under OBSIDIAN_READ_PATHS or OBSIDIAN_DENY_PATHS
158
+ * that would make the outcome depend on notes outside the scope, so the
159
+ * search runs here instead (`#searchTextScoped`).
144
160
  */
145
161
  searchText(ctx: Context, query: string, contextLength?: number): Promise<TextSearchHit[]>;
146
162
  /**
147
163
  * JSONLogic search. Unscoped, the tree goes to the plugin unchanged. Under
148
- * OBSIDIAN_READ_PATHS the plugin would evaluate it against every note in
149
- * the vault, so the tree stays here instead: the readable notes' contexts
164
+ * OBSIDIAN_READ_PATHS or OBSIDIAN_DENY_PATHS (`restrictsReads`) the plugin
165
+ * would evaluate it against every note in the vault, denied ones included,
166
+ * so the tree stays here instead: the readable notes' contexts
150
167
  * are fetched and the tree is evaluated over those alone
151
168
  * (`createJsonLogicEvaluation`), the way the plugin evaluates it. No hit,
152
- * result, or error then reads a note outside the read scope; which note a
153
- * link resolves to is still Obsidian's vault-wide resolution, so `links`,
154
- * `backlinks`, and `unresolvedLinks` can change when a note outside the
155
- * scope is created or removed.
169
+ * result, or error then reads a note outside the read scope. The contexts
170
+ * carry no `links`, `backlinks`, or `unresolvedLinks`, since which note a
171
+ * link resolves to depends on notes outside the scope; a tree that names
172
+ * one fails before any request (`assertNoLinkFields`).
156
173
  *
157
174
  * The plugin hands a tree note bodies only when its JSON holds the string
158
- * `"content"` (`readsContent`); such a tree gets them here too, fetched
159
- * and evaluated in batches of at most `CONTENT_BATCH_BYTES` so a broad
160
- * scope never holds every readable body at once.
175
+ * `"content"` (`readsContent`); such a tree gets them here too, one read
176
+ * per readable note, evaluated in batches of at most `CONTENT_BATCH_BYTES`
177
+ * so a broad scope never holds every readable body at once. Every request
178
+ * the search makes shares `ctx.signal` and one deadline,
179
+ * `SCOPED_SEARCH_DEADLINE_MS`; past it the search fails with
180
+ * `logic_too_costly`.
161
181
  */
162
182
  searchJsonLogic(ctx: Context, logic: Record<string, unknown>): Promise<StructuredSearchHit[]>;
163
183
  /**
164
- * A JSONLogic search for a caller paging through its hits `pageSize` at a
165
- * time. Unscoped, it is `searchJsonLogic`. Under OBSIDIAN_READ_PATHS a call
166
- * without `walk` evaluates fresh and, when the hits run past one page,
167
- * stores the full ordered hit list under a new walk id, returned as `walk`;
184
+ * A JSONLogic search for a caller paging through its hits, whose page this
185
+ * call serves ends at index `pageEnd`. Unscoped, it is `searchJsonLogic`.
186
+ * Under a read scope a call without `walk` evaluates fresh and, when the
187
+ * hits run past `pageEnd`, so a later page will read them, stores the full
188
+ * ordered hit list under a new walk id, returned as `walk`;
168
189
  * a call naming that id with the same tree is served from the stored list
169
190
  * without evaluating. The store belongs to this service, whose read scope
170
191
  * is fixed at construction, so a list is only read under the scope that
171
- * produced it. Anything else — an expired, evicted, or unknown id, or a
172
- * different tree — evaluates fresh, and a call cancelled before it answers
173
- * stores nothing.
192
+ * produced it. Anything else — an expired, evicted, or unknown id, a text
193
+ * walk's id, or a different tree — evaluates fresh, and a call cancelled
194
+ * before it answers stores nothing.
174
195
  */
175
- pageJsonLogic(ctx: Context, logic: Record<string, unknown>, walk: string | undefined, pageSize: number): Promise<{
196
+ pageJsonLogic(ctx: Context, logic: Record<string, unknown>, walk: string | undefined, pageEnd: number): Promise<{
176
197
  hits: StructuredSearchHit[];
177
198
  walk?: string;
178
199
  }>;
200
+ /**
201
+ * A text search for a caller paging through its hits, whose page this call
202
+ * serves ends at index `pageEnd`: each hit's match locations capped at
203
+ * `maxMatchesPerHit`, and only the hits whose filename starts with
204
+ * `pathPrefix` when one is given. Unscoped, every page runs `searchText`.
205
+ * Under a read scope a call without `walk` searches fresh and, when the
206
+ * prefixed hits run past `pageEnd`, so a later page will read them, stores
207
+ * the capped hits, unprefixed, under a new walk id, returned as
208
+ * `walk`. A call naming that id with the same `query`, `contextLength`, and
209
+ * `maxMatchesPerHit` is served from the stored hits with no request, its own
210
+ * `pathPrefix` applied to them; the scope is fixed for this service, so it
211
+ * is no part of the key. Anything else — an expired, evicted, or unknown
212
+ * id, a JSONLogic walk's id, or a changed input — searches fresh, and a
213
+ * call cancelled before it answers stores nothing.
214
+ */
215
+ pageText(ctx: Context, search: {
216
+ contextLength: number;
217
+ maxMatchesPerHit: number;
218
+ pathPrefix?: string | undefined;
219
+ query: string;
220
+ }, walk: string | undefined, pageEnd: number): Promise<{
221
+ hits: ClippedTextHit[];
222
+ walk?: string;
223
+ }>;
179
224
  /**
180
225
  * One-shot startup probe for the Omnisearch plugin's HTTP endpoint. Returns
181
226
  * `true` only when the response is `HTTP 200`, declares `application/json`,
182
227
  * and the body parses as a JSON array — unrouted paths on the Omnisearch
183
228
  * server also return `200` with an empty body, so status alone is
184
- * insufficient. The entry point passes the return value into the
185
- * `obsidian_search_notes` factory to decide whether to expose the
229
+ * insufficient. `omnisearchAvailability` calls it, and only when reads are
230
+ * unscoped, to decide between the `offered` and `unreachable` states of the
186
231
  * `omnisearch` mode.
187
232
  */
188
233
  probeOmnisearch(signal?: AbortSignal): Promise<boolean>;
@@ -190,9 +235,11 @@ export declare class ObsidianService {
190
235
  * Query the Omnisearch HTTP endpoint. Normalizes the response on the way
191
236
  * out: decodes HTML entities + `<br>` → `\n` in `excerpt`, renames `path`
192
237
  * to `filename`, and drops `vault`. Throws `omnisearch_unreachable`
193
- * (ServiceUnavailable) on network failures or non-2xx responses — the
194
- * plugin can shut down mid-session (Obsidian quits, plugin disabled), and
195
- * the tool needs a distinct signal from the upstream's success cases.
238
+ * (ServiceUnavailable) on network failures, on a query that outlasts
239
+ * `OBSIDIAN_REQUEST_TIMEOUT_MS`, and on non-2xx responses — the plugin can
240
+ * shut down mid-session (Obsidian quits, plugin disabled), and the tool
241
+ * needs a distinct signal from the upstream's success cases. One attempt,
242
+ * the body read under the same timer as the fetch.
196
243
  */
197
244
  searchOmnisearch(ctx: Context, query: string): Promise<OmnisearchHit[]>;
198
245
  executeCommand(ctx: Context, commandId: string): Promise<void>;
@@ -211,14 +258,21 @@ export declare class ObsidianService {
211
258
  createIfMissing?: boolean;
212
259
  }): Promise<void>;
213
260
  }
261
+ /**
262
+ * `path` less its leading and trailing `/` runs, as `/^\/+|\/+$/g` leaves it,
263
+ * found by scanning in from each end: the regex retries at every `/` of a run
264
+ * inside the path, in time quadratic in the run.
265
+ */
266
+ export declare function trimSlashes(path: string): string;
214
267
  /**
215
268
  * Encode a vault-relative path for the URL. Splits on `/` and `\` (so
216
269
  * Windows-style separators are honored), URL-encodes each segment, and
217
270
  * rejoins with `/` since the Local REST API plugin expects forward slashes.
218
271
  *
219
272
  * Rejects `.` and `..` segments here rather than relying on the upstream Local
220
- * REST API plugin to normalize them — `PathPolicy` short-circuits to "allow"
221
- * when `OBSIDIAN_READ_PATHS` is unset, and `..` is unreserved per RFC 3986 so
273
+ * REST API plugin to normalize them — with `OBSIDIAN_READ_PATHS` unset,
274
+ * `PathPolicy` allows every path no deny prefix covers, and `..` is
275
+ * unreserved per RFC 3986 so
222
276
  * `encodeURIComponent` leaves it intact. This is the single chokepoint before
223
277
  * URL construction, so guard vault escape here. Backslash is treated as a
224
278
  * separator so `..\..\etc` traverses identically to `../../etc` and can't
@@ -1 +1 @@
1
- {"version":3,"file":"obsidian-service.d.ts","sourceRoot":"","sources":["../../../src/services/obsidian/obsidian-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAatD,OAAO,EAAS,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC;AACxF,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAmB/E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAS9C,OAAO,KAAK,EAEV,WAAW,EACX,WAAW,EACX,QAAQ,EACR,UAAU,EACV,eAAe,EACf,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,mBAAmB,EACnB,aAAa,EACb,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB,KAAK,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC;AAE9D;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,CAC1B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,GAAG;IAClB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,GAAG,CAAC,EAAE;QAAE,kBAAkB,EAAE,OAAO,CAAA;KAAE,CAAC;CACvC,KACE,OAAO,CAAC,cAAc,CAAC,CAAC;AAqP7B,qBAAa,eAAe;;IA0B1B;;;;OAIG;IACH,YAAY,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,aAAa,EAe1D;IAED,oFAAoF;IACpF,IAAI,MAAM,IAAI,UAAU,CAEvB;IAED,0FAA0F;IAC1F,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED;;;;;;;;OAQG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAG3B;IAID;;;;;;;;;;OAUG;IACG,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAGlD;IAIK,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CA2BtE;IAEK,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAUrE;IAED;;;;;OAKG;IACG,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAGzE;IAED;;;;;;OAMG;IACH,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAGtD;IAED;;;;;;OAMG;IACG,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAM3E;IAEK,SAAS,CACb,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,UAAU,GAAG,MAAmB,GAC5C,OAAO,CAAC,IAAI,CAAC,CAQf;IAEK,YAAY,CAChB,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,UAAU,GAAG,MAAmB,GAC5C,OAAO,CAAC,IAAI,CAAC,CAQf;IAED;;;;;;;;OAQG;IACG,SAAS,CACb,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,gBAAgB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAgCjB;IAEK,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhE;IAED;;;;;;;;;;;;;;;OAeG;IACG,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgBzE;IAED;;;OAGG;IACG,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAU/D;IAIK,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAqBpE;IAED;;;;;;OAMG;IACG,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAOnD;IAEK,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAI3D;IAID;;;;;;;;;;OAUG;IACG,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,SAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAmC3F;IAED;;;;;;;;;;;;;;;OAeG;IACG,eAAe,CACnB,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAgBhC;IAED;;;;;;;;;;;OAWG;IACG,aAAa,CACjB,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAgBzD;IA2ED;;;;;;;;OAQG;IACG,eAAe,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAkB5D;IAED;;;;;;;OAOG;IACG,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAiC5E;IAIK,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnE;IAED;;;;;;;;;OASG;IACG,QAAQ,CACZ,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GACtD,OAAO,CAAC,IAAI,CAAC,CAYf;CAk3BF;AA0BD;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAoBpD;AA0gBD,wBAAgB,mBAAmB,CACjC,MAAM,GAAE,YAAgC,EACxC,SAAS,CAAC,EAAE,aAAa,GACxB,IAAI,CAEN;AAED,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI,CAE7E;AAED,wBAAgB,kBAAkB,IAAI,eAAe,CAKpD"}
1
+ {"version":3,"file":"obsidian-service.d.ts","sourceRoot":"","sources":["../../../src/services/obsidian/obsidian-service.ts"],"names":[],"mappings":"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"}