obsidian-mcp-server 3.7.1 → 3.8.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/AGENTS.md +28 -13
- package/CLAUDE.md +28 -13
- package/Dockerfile +7 -0
- package/README.md +43 -99
- package/changelog/3.7.x/3.7.2.md +34 -0
- package/changelog/3.8.x/3.8.0.md +38 -0
- package/dist/config/server-config.d.ts +1 -0
- package/dist/config/server-config.d.ts.map +1 -1
- package/dist/config/server-config.js +24 -15
- package/dist/config/server-config.js.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/instructions.d.ts.map +1 -1
- package/dist/instructions.js +21 -7
- package/dist/instructions.js.map +1 -1
- package/dist/mcp-server/resources/definitions/index.d.ts +2 -2
- package/dist/mcp-server/resources/definitions/obsidian-tags.resource.d.ts +3 -2
- package/dist/mcp-server/resources/definitions/obsidian-tags.resource.d.ts.map +1 -1
- package/dist/mcp-server/resources/definitions/obsidian-tags.resource.js +6 -5
- package/dist/mcp-server/resources/definitions/obsidian-tags.resource.js.map +1 -1
- package/dist/mcp-server/resources/definitions/obsidian-vault-note.resource.d.ts +2 -2
- package/dist/mcp-server/resources/definitions/obsidian-vault-note.resource.js +2 -2
- package/dist/mcp-server/resources/definitions/obsidian-vault-note.resource.js.map +1 -1
- package/dist/mcp-server/tools/definitions/_shared/markdown.d.ts +14 -0
- package/dist/mcp-server/tools/definitions/_shared/markdown.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/_shared/markdown.js +17 -0
- package/dist/mcp-server/tools/definitions/_shared/markdown.js.map +1 -0
- package/dist/mcp-server/tools/definitions/_shared/suggest-paths.d.ts +8 -1
- package/dist/mcp-server/tools/definitions/_shared/suggest-paths.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/_shared/suggest-paths.js +17 -6
- package/dist/mcp-server/tools/definitions/_shared/suggest-paths.js.map +1 -1
- package/dist/mcp-server/tools/definitions/index.d.ts +18 -18
- package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.d.ts +2 -2
- package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.js +5 -4
- package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.d.ts +7 -6
- package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.js +9 -8
- package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-execute-command.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-execute-command.tool.js +2 -1
- package/dist/mcp-server/tools/definitions/obsidian-execute-command.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.d.ts +2 -2
- package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.js +38 -28
- package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-list-commands.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-list-commands.tool.js +7 -4
- package/dist/mcp-server/tools/definitions/obsidian-list-commands.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.d.ts +6 -6
- package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.js +15 -14
- package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-list-tags.tool.d.ts +4 -4
- package/dist/mcp-server/tools/definitions/obsidian-list-tags.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-list-tags.tool.js +9 -8
- package/dist/mcp-server/tools/definitions/obsidian-list-tags.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.d.ts +2 -2
- package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.js +9 -7
- package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.d.ts +2 -2
- package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.js +7 -5
- package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-open-in-ui.tool.d.ts +2 -2
- package/dist/mcp-server/tools/definitions/obsidian-open-in-ui.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-open-in-ui.tool.js +4 -3
- package/dist/mcp-server/tools/definitions/obsidian-open-in-ui.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.d.ts +2 -2
- package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.js +5 -4
- package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-replace-in-note.tool.d.ts +2 -2
- package/dist/mcp-server/tools/definitions/obsidian-replace-in-note.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-replace-in-note.tool.js +10 -4
- package/dist/mcp-server/tools/definitions/obsidian-replace-in-note.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-search-notes.tool.d.ts +46 -12
- package/dist/mcp-server/tools/definitions/obsidian-search-notes.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-search-notes.tool.js +93 -43
- package/dist/mcp-server/tools/definitions/obsidian-search-notes.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.d.ts +2 -2
- package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.js +5 -4
- package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.js.map +1 -1
- package/dist/services/obsidian/jsonlogic-evaluator.d.ts +33 -8
- package/dist/services/obsidian/jsonlogic-evaluator.d.ts.map +1 -1
- package/dist/services/obsidian/jsonlogic-evaluator.js +171 -32
- package/dist/services/obsidian/jsonlogic-evaluator.js.map +1 -1
- package/dist/services/obsidian/jsonlogic-worker.d.ts +6 -5
- package/dist/services/obsidian/jsonlogic-worker.d.ts.map +1 -1
- package/dist/services/obsidian/jsonlogic-worker.js +7 -5
- package/dist/services/obsidian/jsonlogic-worker.js.map +1 -1
- package/dist/services/obsidian/obsidian-service.d.ts +38 -22
- package/dist/services/obsidian/obsidian-service.d.ts.map +1 -1
- package/dist/services/obsidian/obsidian-service.js +293 -99
- package/dist/services/obsidian/obsidian-service.js.map +1 -1
- package/dist/services/obsidian/patch-instruction.d.ts +4 -1
- package/dist/services/obsidian/patch-instruction.d.ts.map +1 -1
- package/dist/services/obsidian/patch-instruction.js +5 -2
- package/dist/services/obsidian/patch-instruction.js.map +1 -1
- package/dist/services/obsidian/path-policy.d.ts +67 -23
- package/dist/services/obsidian/path-policy.d.ts.map +1 -1
- package/dist/services/obsidian/path-policy.js +183 -80
- package/dist/services/obsidian/path-policy.js.map +1 -1
- package/dist/services/obsidian/section-extractor.d.ts +6 -1
- package/dist/services/obsidian/section-extractor.d.ts.map +1 -1
- package/dist/services/obsidian/section-extractor.js +106 -11
- package/dist/services/obsidian/section-extractor.js.map +1 -1
- package/dist/services/obsidian/simple-search.d.ts +62 -0
- package/dist/services/obsidian/simple-search.d.ts.map +1 -0
- package/dist/services/obsidian/simple-search.js +264 -0
- package/dist/services/obsidian/simple-search.js.map +1 -0
- package/manifest.json +10 -2
- package/package.json +8 -7
- package/server.json +19 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"obsidian-search-notes.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/obsidian-search-notes.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAsB,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"obsidian-search-notes.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/obsidian-search-notes.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAsB,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AA4HjE;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,mBAAmB,EAAE,EAAE;IAAE,mBAAmB,EAAE,OAAO,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBA8IhF,0BAA0B;;mBAE5B,uFAAuF;uBACnF,8DAA8D;;qBAGhE,gBAAgB;;mBAElB,yEAAyE;uBAE7E,mKAAmK;;qBAG7J,0BAA0B;uBACxB,SAAS;;mBAEb,wWAAwW;uBAE5W,yVAAyV;;qBAGnV,gBAAgB;;mBAElB,0CAA0C;uBAE9C,qJAAqJ;;qBAG/I,eAAe;uBACb,SAAS;;mBAEb,8PAA8P;uBAElQ,6MAA6M;;qBAGvM,kBAAkB;uBAChB,SAAS;;mBAEb,sqBAAsqB;uBAE1qB,gQAAgQ;;qBAG1P,wBAAwB;uBACtB,SAAS;;mBAEb,4MAA4M;uBAEhN,+KAA+K;;qBAGzK,yBAAyB;uBACvB,SAAS;;mBAEb,qVAAqV;uBAEzV,6QAA6Q;;qBAGvQ,eAAe;uBACb,SAAS;;mBAEb,wNAAwN;uBAE5N,wPAAwP;;qBAGlP,wBAAwB;uBACtB,SAAS;;mBAEb,iHAAiH;;uBAGrH,mHAAmH;;;;GAiK1H;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAxPlB,0BAA0B;;mBAE5B,uFAAuF;uBACnF,8DAA8D;;qBAGhE,gBAAgB;;mBAElB,yEAAyE;uBAE7E,mKAAmK;;qBAG7J,0BAA0B;uBACxB,SAAS;;mBAEb,wWAAwW;uBAE5W,yVAAyV;;qBAGnV,gBAAgB;;mBAElB,0CAA0C;uBAE9C,qJAAqJ;;qBAG/I,eAAe;uBACb,SAAS;;mBAEb,8PAA8P;uBAElQ,6MAA6M;;qBAGvM,kBAAkB;uBAChB,SAAS;;mBAEb,sqBAAsqB;uBAE1qB,gQAAgQ;;qBAG1P,wBAAwB;uBACtB,SAAS;;mBAEb,4MAA4M;uBAEhN,+KAA+K;;qBAGzK,yBAAyB;uBACvB,SAAS;;mBAEb,qVAAqV;uBAEzV,6QAA6Q;;qBAGvQ,eAAe;uBACb,SAAS;;mBAEb,wNAAwN;uBAE5N,wPAAwP;;qBAGlP,wBAAwB;uBACtB,SAAS;;mBAEb,iHAAiH;;uBAGrH,mHAAmH;;;;EA8KpC,CAAC"}
|
|
@@ -10,17 +10,24 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
12
12
|
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
13
|
-
import { decodeCursor, encodeCursor, paginateArray } from '@cyanheads/mcp-ts-core/utils';
|
|
13
|
+
import { decodeCursor, encodeCursor, escapeMarkdownInline, markdown, paginateArray, } from '@cyanheads/mcp-ts-core/utils';
|
|
14
14
|
import { getObsidianService } from '../../../services/obsidian/obsidian-service.js';
|
|
15
|
+
import { inlineCode } from './_shared/markdown.js';
|
|
15
16
|
const DEFAULT_PAGE_SIZE = 50;
|
|
16
17
|
const MAX_PAGE_SIZE = 200;
|
|
17
18
|
const DEFAULT_MATCHES_PER_HIT = 10;
|
|
18
19
|
/** Omnisearch's hardwired upstream cap — pagination/limit params are ignored. */
|
|
19
20
|
const OMNISEARCH_UPSTREAM_CAP = 50;
|
|
21
|
+
/** Why an omnisearch result may be missing matches its 50-hit cap cut. */
|
|
22
|
+
const OMNISEARCH_TRUNCATIONS = {
|
|
23
|
+
cap_reached: `Omnisearch returned its ${OMNISEARCH_UPSTREAM_CAP}-hit cap, so more matches may exist. Narrow with \`path:\`, \`ext:\`, or more plain terms, which Omnisearch applies before the cap.`,
|
|
24
|
+
filtered_after_cap: `Omnisearch keeps its top ${OMNISEARCH_UPSTREAM_CAP} matches before it applies quoted terms and \`-exclusion\` terms, so matches past the cap were never checked. Narrow with \`path:\`, \`ext:\`, or more plain terms, which apply before the cap, or rerun without the quoted and excluded terms to see whether the cap was reached.`,
|
|
25
|
+
read_scope: `Omnisearch keeps its top ${OMNISEARCH_UPSTREAM_CAP} matches across the whole vault before the read scope filters them, so readable matches may be missing. Add a \`path:\` term naming a readable folder, which Omnisearch applies before the cap.`,
|
|
26
|
+
};
|
|
20
27
|
const CursorSchema = z
|
|
21
28
|
.string()
|
|
22
29
|
.optional()
|
|
23
|
-
.describe('Opaque cursor from a prior response. Omit for the first page. Page size is server-determined; do not assume a fixed value. Under OBSIDIAN_READ_PATHS, later `jsonlogic` pages come from the hit list the first page computed.');
|
|
30
|
+
.describe('Opaque cursor from a prior response. Omit for the first page. Page size is server-determined; do not assume a fixed value. Under OBSIDIAN_READ_PATHS or OBSIDIAN_DENY_PATHS, later `jsonlogic` pages come from the hit list the first page computed.');
|
|
24
31
|
const TextHitSchema = z
|
|
25
32
|
.object({
|
|
26
33
|
filename: z.string().describe('Vault-relative path of the matching note.'),
|
|
@@ -65,7 +72,9 @@ const OmnisearchHitSchema = z
|
|
|
65
72
|
.object({
|
|
66
73
|
filename: z.string().describe('Vault-relative path of the matching note.'),
|
|
67
74
|
basename: z.string().describe('Note basename without extension.'),
|
|
68
|
-
score: z
|
|
75
|
+
score: z
|
|
76
|
+
.number()
|
|
77
|
+
.describe('BM25 relevance score. Higher is more relevant. Omnisearch computes it over the whole vault, so under OBSIDIAN_READ_PATHS or OBSIDIAN_DENY_PATHS notes outside the scope still move it.'),
|
|
69
78
|
foundWords: z
|
|
70
79
|
.array(z.string())
|
|
71
80
|
.describe('Query words found in the note. Populated even when no body match exists (e.g. basename-only match), so empty `matches` paired with non-empty `foundWords` is valid.'),
|
|
@@ -95,18 +104,18 @@ export function buildSearchNotesTool({ omnisearchReachable }) {
|
|
|
95
104
|
const description = omnisearchReachable
|
|
96
105
|
? 'Search the vault by text tokens, JSONLogic predicate, or BM25-ranked Omnisearch query. Pick the mode that matches the query shape — `omnisearch` is best for ranked relevance, typo tolerance, and PDF/OCR coverage (via the Text Extractor plugin). Results paginate via opaque cursors: omit `cursor` for the first page, then pass `nextCursor` from the prior response. Text-mode hits additionally clip per file at `maxMatchesPerHit` match locations.'
|
|
97
106
|
: 'Search the vault by text tokens or JSONLogic predicate. Pick the mode that matches the query shape. Results paginate via opaque cursors: omit `cursor` for the first page, then pass `nextCursor` from the prior response. Text-mode hits additionally clip per file at `maxMatchesPerHit` match locations.';
|
|
98
|
-
const textModeDescription = '`text` splits `query` on
|
|
99
|
-
const jsonlogicModeDescription = '`jsonlogic` evaluates a JSONLogic tree against each note, with `var` paths into `path`, `content`, `frontmatter.<key>`, `tags`, `stat.{ctime,mtime,size}`, and `links`, `backlinks`, and `unresolvedLinks` (on plugin versions that provide them; under OBSIDIAN_READ_PATHS,
|
|
107
|
+
const textModeDescription = '`text` splits `query` on spaces and requires every token, each matched case-insensitively as a substring of the filename or note body; a tab or line break stays part of its token. Quotes are literal characters, not a phrase operator. Each hit returns match locations with surrounding context windows; tokens that sit close together, such as the words of a phrase, share one location.';
|
|
108
|
+
const jsonlogicModeDescription = '`jsonlogic` evaluates a JSONLogic tree against each note, with `var` paths into `path`, `content`, `frontmatter.<key>`, `tags`, `stat.{ctime,mtime,size}`, and `links`, `backlinks`, and `unresolvedLinks` (on plugin versions that provide them; not under OBSIDIAN_READ_PATHS or OBSIDIAN_DENY_PATHS, where a tree that reads them is rejected), plus `glob` and `regexp` operators — both take their arguments as `[PATTERN, VALUE]`, so the pattern comes first and the `{"var": ...}` reference second.';
|
|
100
109
|
const inputSchema = z.object({
|
|
101
110
|
mode: z
|
|
102
111
|
.enum(modeEnum)
|
|
103
112
|
.describe(omnisearchReachable
|
|
104
|
-
? `Which search algorithm to run. ${textModeDescription} ${jsonlogicModeDescription} \`omnisearch\` runs a BM25-ranked query via the Omnisearch plugin — supports quoted phrases, \`-exclusion\`, \`path:\` / \`ext:\` filters, typo tolerance, and PDF/OCR (with Text Extractor)
|
|
113
|
+
? `Which search algorithm to run. ${textModeDescription} ${jsonlogicModeDescription} \`omnisearch\` runs a BM25-ranked query via the Omnisearch plugin — supports quoted phrases, \`-exclusion\`, \`path:\` / \`ext:\` filters, typo tolerance, and PDF/OCR (with Text Extractor). Omnisearch keeps its top ${OMNISEARCH_UPSTREAM_CAP} matches, applying \`path:\` and \`ext:\` before that cap and quoted phrases and \`-exclusion\` after the cap (see \`truncated\`).`
|
|
105
114
|
: `Which search algorithm to run. ${textModeDescription} ${jsonlogicModeDescription}`),
|
|
106
115
|
query: z
|
|
107
116
|
.string()
|
|
108
117
|
.optional()
|
|
109
|
-
.describe('The query string. Required for `text` and `omnisearch` modes; ignored in `jsonlogic` mode (use `logic` instead — this field must be a string, so passing a JSONLogic tree here is rejected). In `text` mode it is split on
|
|
118
|
+
.describe('The query string. Required for `text` and `omnisearch` modes; ignored in `jsonlogic` mode (use `logic` instead — this field must be a string, so passing a JSONLogic tree here is rejected). In `text` mode it is split on spaces and every token must appear; quotes stay part of the tokens, so a quoted phrase matches nothing unless the note contains the quote characters.'),
|
|
110
119
|
logic: z
|
|
111
120
|
.record(z.string(), z.unknown())
|
|
112
121
|
.optional()
|
|
@@ -170,7 +179,11 @@ export function buildSearchNotesTool({ omnisearchReachable }) {
|
|
|
170
179
|
.describe('Opaque cursor for the next page. Omitted on the last page (do not treat absent as null).'),
|
|
171
180
|
truncated: z
|
|
172
181
|
.boolean()
|
|
173
|
-
.describe(
|
|
182
|
+
.describe(`True whenever Omnisearch's ${OMNISEARCH_UPSTREAM_CAP}-hit cap may have cut matches that are not retrievable: when it returned ${OMNISEARCH_UPSTREAM_CAP} or more; when the query holds quoted terms or \`-exclusion\` terms, which Omnisearch applies after its cap; and always under OBSIDIAN_READ_PATHS or OBSIDIAN_DENY_PATHS, where the cap ranks the whole vault before the read scope filters it, so which readable notes make it depends on notes outside the scope. Narrow with \`path:\`, \`ext:\`, or more plain terms, which Omnisearch applies before its cap.`),
|
|
183
|
+
truncatedReason: z
|
|
184
|
+
.enum(['cap_reached', 'filtered_after_cap', 'read_scope'])
|
|
185
|
+
.optional()
|
|
186
|
+
.describe('Why `truncated` is true, present only then: `cap_reached` (Omnisearch returned its cap), `filtered_after_cap` (quoted or `-exclusion` terms filtered after the cap), `read_scope` (the cap ran over the whole vault before the read scope filtered it).'),
|
|
174
187
|
})
|
|
175
188
|
.describe('Omnisearch BM25 results.');
|
|
176
189
|
const branches = omnisearchReachable
|
|
@@ -201,14 +214,14 @@ export function buildSearchNotesTool({ omnisearchReachable }) {
|
|
|
201
214
|
reason: 'query_required',
|
|
202
215
|
code: JsonRpcErrorCode.ValidationError,
|
|
203
216
|
when: '`query` is missing for `text` or `omnisearch` mode (required for both).',
|
|
204
|
-
recovery: 'Pass `query` —
|
|
217
|
+
recovery: 'Pass `query` — space-separated tokens, all required, for text mode, or BM25 query syntax (quoted phrases, `-exclusion`, `path:` / `ext:` filters) for omnisearch.',
|
|
205
218
|
},
|
|
206
219
|
{
|
|
207
220
|
reason: 'context_length_too_large',
|
|
208
221
|
thrownBy: 'service',
|
|
209
222
|
code: JsonRpcErrorCode.ValidationError,
|
|
210
|
-
when:
|
|
211
|
-
recovery: '
|
|
223
|
+
when: "The matches would make a response longer than one can be, so the whole text search failed: the Local REST API runs out of string capacity serializing them, or, under OBSIDIAN_READ_PATHS or OBSIDIAN_DENY_PATHS, the readable notes' matches alone would pass the same ceiling. Each match costs its context window plus about 150 characters of offsets and framing.",
|
|
224
|
+
recovery: 'Narrow the query so fewer notes match, and drop very common tokens: every occurrence of each token in a matching note is a match costing about 150 characters beside its window, so a token like `the` can fail even at `contextLength` 0. Lowering `contextLength` helps only while the windows, about twice `contextLength` each, dominate that cost.',
|
|
212
225
|
},
|
|
213
226
|
{
|
|
214
227
|
reason: 'logic_required',
|
|
@@ -227,15 +240,29 @@ export function buildSearchNotesTool({ omnisearchReachable }) {
|
|
|
227
240
|
reason: 'logic_too_costly',
|
|
228
241
|
thrownBy: 'service',
|
|
229
242
|
code: JsonRpcErrorCode.ValidationError,
|
|
230
|
-
when: "With OBSIDIAN_READ_PATHS set, the server evaluates the JSONLogic tree itself, and the tree passed a bound: nesting deeper than 1,000 levels, more than a work budget,
|
|
243
|
+
when: "With OBSIDIAN_READ_PATHS or OBSIDIAN_DENY_PATHS set, the server evaluates the JSONLogic tree itself, and the tree passed a bound: nesting deeper than 1,000 levels, more than a work budget, more than 10 s of evaluation, or more than 45 s for the whole search, reading the readable notes included. One work budget is per note — the size of values built by `merge`, `cat`, `map`, and array literals while evaluating that note, up to the note's own size plus 10,000,000 units — and one is per search: 10,000,000 units across every note for returned results, where a result whose JSON is at most 1,024 characters is free and a larger one pays for what it holds beyond its own note.",
|
|
231
244
|
recovery: "Simplify the tree: nest fewer levels, avoid building arrays or strings many times a note's size with `merge`, `cat`, `map`, or `reduce`, return values drawn from the note rather than large built values or constants, and prefer a simpler `regexp` pattern.",
|
|
232
245
|
},
|
|
246
|
+
{
|
|
247
|
+
reason: 'text_search_too_costly',
|
|
248
|
+
thrownBy: 'service',
|
|
249
|
+
code: JsonRpcErrorCode.ValidationError,
|
|
250
|
+
when: 'With OBSIDIAN_READ_PATHS or OBSIDIAN_DENY_PATHS set, the server runs text mode itself, reading every readable note whose path or body holds each token, and reading and matching them took more than 45 s.',
|
|
251
|
+
recovery: 'Add rarer tokens, which every candidate note must contain, so fewer readable notes are read, or ask the operator to narrow OBSIDIAN_READ_PATHS or extend OBSIDIAN_DENY_PATHS.',
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
reason: 'link_fields_unavailable',
|
|
255
|
+
thrownBy: 'service',
|
|
256
|
+
code: JsonRpcErrorCode.ValidationError,
|
|
257
|
+
when: 'With OBSIDIAN_READ_PATHS or OBSIDIAN_DENY_PATHS set, the JSONLogic tree names `links`, `backlinks`, or `unresolvedLinks` by a fixed `var`, `missing`, or `missing_some` key. Scoped searches leave these fields out, since Obsidian resolves each link across the whole vault, notes outside the scope included; a computed key reads them as null.',
|
|
258
|
+
recovery: 'Find backlinks by body text: `{"regexp": ["\\\\[\\\\[Target Note(\\\\\\\\?\\\\||#|\\\\]\\\\])", {"var": "content"}]}` matches every readable note that wikilinks or embeds `Target Note`. For a note\'s outgoing links, call `obsidian_get_note` with `includeLinks: true`.',
|
|
259
|
+
},
|
|
233
260
|
{
|
|
234
261
|
reason: 'note_too_deep',
|
|
235
262
|
thrownBy: 'service',
|
|
236
263
|
code: JsonRpcErrorCode.SerializationError,
|
|
237
|
-
when: 'With OBSIDIAN_READ_PATHS set, a readable note holds data, usually a frontmatter value, nested deeper than the server can hand to its evaluator (about 3,500 levels under Node, more under Bun).',
|
|
238
|
-
recovery: 'Flatten the deeply nested value, usually a frontmatter field, in the note the message names, or ask the operator to leave that note out of OBSIDIAN_READ_PATHS; no scoped jsonlogic search runs while it is readable.',
|
|
264
|
+
when: 'With OBSIDIAN_READ_PATHS or OBSIDIAN_DENY_PATHS set, a readable note holds data, usually a frontmatter value, nested deeper than the server can hand to its evaluator (about 3,500 levels under Node, more under Bun).',
|
|
265
|
+
recovery: 'Flatten the deeply nested value, usually a frontmatter field, in the note the message names, or ask the operator to leave that note out of OBSIDIAN_READ_PATHS or add it to OBSIDIAN_DENY_PATHS; no scoped jsonlogic search runs while it is readable.',
|
|
239
266
|
},
|
|
240
267
|
{
|
|
241
268
|
reason: 'omnisearch_unreachable',
|
|
@@ -284,7 +311,7 @@ export function buildSearchNotesTool({ omnisearchReachable }) {
|
|
|
284
311
|
const clipped = allowed.map((h) => clipMatches(h, input.maxMatchesPerHit));
|
|
285
312
|
const page = paginate(clipped, input.cursor, ctx);
|
|
286
313
|
if (page.hits.length === 0) {
|
|
287
|
-
ctx.enrich.notice(`No matches for
|
|
314
|
+
ctx.enrich.notice(`No matches for ${inlineCode(input.query)}${prefix ? ` under prefix ${inlineCode(prefix)}` : ''}. Try broader terms, a different mode, or check that the path/filter is correct.`);
|
|
288
315
|
}
|
|
289
316
|
return { result: { mode: 'text', ...page } };
|
|
290
317
|
}
|
|
@@ -316,22 +343,18 @@ export function buildSearchNotesTool({ omnisearchReachable }) {
|
|
|
316
343
|
}
|
|
317
344
|
ctx.enrich.echo(input.query);
|
|
318
345
|
const raw = await svc.searchOmnisearch(ctx, input.query);
|
|
319
|
-
|
|
320
|
-
* Compute `truncated` against the raw upstream array, before path-policy
|
|
321
|
-
* filtering — a filtered-down set legitimately under 50 should not be
|
|
322
|
-
* reported as truncated.
|
|
323
|
-
*/
|
|
324
|
-
const truncated = raw.length >= OMNISEARCH_UPSTREAM_CAP;
|
|
346
|
+
const truncatedReason = omnisearchTruncation(input.query, raw.length, policy.restrictsReads);
|
|
325
347
|
const allowed = policy.filterReadable(raw);
|
|
326
348
|
const page = paginate(allowed, input.cursor, ctx);
|
|
327
349
|
if (page.hits.length === 0) {
|
|
328
|
-
ctx.enrich.notice(`No Omnisearch matches for
|
|
350
|
+
ctx.enrich.notice(`No Omnisearch matches for ${inlineCode(input.query)}. Try broader terms, fewer exclusions, or switch to text mode.`);
|
|
329
351
|
}
|
|
330
352
|
return {
|
|
331
353
|
result: {
|
|
332
354
|
mode: 'omnisearch',
|
|
333
355
|
...page,
|
|
334
|
-
truncated,
|
|
356
|
+
truncated: truncatedReason !== undefined,
|
|
357
|
+
...(truncatedReason ? { truncatedReason } : {}),
|
|
335
358
|
},
|
|
336
359
|
};
|
|
337
360
|
},
|
|
@@ -340,11 +363,11 @@ export function buildSearchNotesTool({ omnisearchReachable }) {
|
|
|
340
363
|
const pageInfo = `${result.hits.length} on this page · ${result.totalCount} total`;
|
|
341
364
|
const cursorInfo = result.nextCursor ? ' · more available' : '';
|
|
342
365
|
lines.push(`**Search (${result.mode}) — ${pageInfo}${cursorInfo}**`);
|
|
343
|
-
if (result.mode === 'omnisearch' && result.
|
|
344
|
-
lines.push(`
|
|
366
|
+
if (result.mode === 'omnisearch' && result.truncatedReason) {
|
|
367
|
+
lines.push(`_Truncated (${result.truncatedReason}): ${OMNISEARCH_TRUNCATIONS[result.truncatedReason]}_`);
|
|
345
368
|
}
|
|
346
369
|
if (result.nextCursor) {
|
|
347
|
-
lines.push(`_Next page cursor:
|
|
370
|
+
lines.push(`_Next page cursor: ${inlineCode(result.nextCursor)}_`);
|
|
348
371
|
}
|
|
349
372
|
lines.push('');
|
|
350
373
|
if (result.mode === 'text') {
|
|
@@ -352,31 +375,31 @@ export function buildSearchNotesTool({ omnisearchReachable }) {
|
|
|
352
375
|
const trunc = h.truncated
|
|
353
376
|
? ` — truncated, showing first ${h.matches.length} of ${h.totalMatches} locations`
|
|
354
377
|
: '';
|
|
355
|
-
lines.push(`### ${h.filename}${trunc}`);
|
|
378
|
+
lines.push(`### ${escapeMarkdownInline(h.filename)}${trunc}`);
|
|
356
379
|
for (const m of h.matches) {
|
|
357
380
|
lines.push(`match at context[${m.match.contextStart}–${m.match.contextEnd}] · subject[${m.match.start}–${m.match.end}]`);
|
|
358
|
-
lines.push(
|
|
381
|
+
lines.push(fenced(m.context));
|
|
359
382
|
}
|
|
360
383
|
}
|
|
361
384
|
}
|
|
362
385
|
else if (result.mode === 'omnisearch') {
|
|
363
386
|
for (const h of result.hits) {
|
|
364
|
-
lines.push(`### ${h.filename} (score: ${h.score.toFixed(2)})`);
|
|
387
|
+
lines.push(`### ${escapeMarkdownInline(h.filename)} (score: ${h.score.toFixed(2)})`);
|
|
365
388
|
if (h.foundWords.length > 0) {
|
|
366
|
-
lines.push(`**Matched:** ${h.foundWords.map((w) =>
|
|
389
|
+
lines.push(`**Matched:** ${h.foundWords.map((w) => inlineCode(w)).join(', ')}`);
|
|
367
390
|
}
|
|
368
391
|
if (h.matches.length > 0) {
|
|
369
|
-
lines.push(`**Offsets:** ${h.matches.map((mm) =>
|
|
392
|
+
lines.push(`**Offsets:** ${h.matches.map((mm) => `${inlineCode(mm.match)} @ ${mm.offset}`).join(', ')}`);
|
|
370
393
|
}
|
|
371
394
|
if (h.excerpt)
|
|
372
|
-
lines.push(
|
|
395
|
+
lines.push(fenced(h.excerpt));
|
|
373
396
|
}
|
|
374
397
|
}
|
|
375
398
|
else {
|
|
376
399
|
for (const h of result.hits) {
|
|
377
|
-
lines.push(`### ${h.filename}`);
|
|
400
|
+
lines.push(`### ${escapeMarkdownInline(h.filename)}`);
|
|
378
401
|
lines.push(`result:`);
|
|
379
|
-
lines.push(
|
|
402
|
+
lines.push(fenced(safeJsonStringify(h.result), 'json'));
|
|
380
403
|
}
|
|
381
404
|
}
|
|
382
405
|
return [{ type: 'text', text: lines.join('\n') }];
|
|
@@ -419,6 +442,39 @@ function paginate(items, cursor, ctx, walk) {
|
|
|
419
442
|
function requestContext(ctx) {
|
|
420
443
|
return ctx;
|
|
421
444
|
}
|
|
445
|
+
/**
|
|
446
|
+
* Why Omnisearch's 50-hit cap may have cut matches from a result, or
|
|
447
|
+
* `undefined` when the result is complete. Under a read scope the cap ranks
|
|
448
|
+
* the whole vault before the scope filters it, so only out-of-scope notes
|
|
449
|
+
* could tell whether it cut a readable match: the result is never called
|
|
450
|
+
* complete there. Otherwise a full cap, or a query Omnisearch filters after
|
|
451
|
+
* the cap (`filteredAfterCap`), leaves it unknown.
|
|
452
|
+
*/
|
|
453
|
+
function omnisearchTruncation(query, upstreamHits, readScoped) {
|
|
454
|
+
if (readScoped)
|
|
455
|
+
return 'read_scope';
|
|
456
|
+
if (upstreamHits >= OMNISEARCH_UPSTREAM_CAP)
|
|
457
|
+
return 'cap_reached';
|
|
458
|
+
if (filteredAfterCap(query))
|
|
459
|
+
return 'filtered_after_cap';
|
|
460
|
+
return;
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
* True when Omnisearch (1.31.0) may filter `query`'s results after its cap:
|
|
464
|
+
* it applies quoted terms (any `"`, or a term opening with `'`, which its
|
|
465
|
+
* parser reads as a quoted phrase) and `-exclusion` terms once it has kept
|
|
466
|
+
* its top 50, while `path:`, `ext:`, and `-path:` apply before. Read
|
|
467
|
+
* generously: a query that might be filtered after the cap counts as one that
|
|
468
|
+
* is.
|
|
469
|
+
*/
|
|
470
|
+
function filteredAfterCap(query) {
|
|
471
|
+
if (query.includes('"'))
|
|
472
|
+
return true;
|
|
473
|
+
return query
|
|
474
|
+
.split(/\s+/)
|
|
475
|
+
.some((term) => term.startsWith("'") ||
|
|
476
|
+
(term.length > 1 && term.startsWith('-') && !/^-(?:path|ext):/i.test(term)));
|
|
477
|
+
}
|
|
422
478
|
function clipMatches(hit, cap) {
|
|
423
479
|
if (hit.matches.length <= cap)
|
|
424
480
|
return hit;
|
|
@@ -440,17 +496,11 @@ function clipMatches(hit, cap) {
|
|
|
440
496
|
* structure. This is the single escaping boundary for all three: the payload
|
|
441
497
|
* is emitted byte-for-byte (clipping it would put `content[]` back out of
|
|
442
498
|
* parity with `structuredContent` — see #97) and only the delimiter around it
|
|
443
|
-
* adapts, sized past the longest backtick run in the payload
|
|
499
|
+
* adapts, sized past the longest backtick run in the payload by the framework's
|
|
500
|
+
* `MarkdownBuilder.codeBlock`.
|
|
444
501
|
*/
|
|
445
502
|
function fenced(body, lang = 'text') {
|
|
446
|
-
|
|
447
|
-
* Reduced rather than spread into `Math.max` — a note that is mostly
|
|
448
|
-
* backticks yields more runs than the engine's argument limit, and arbitrary
|
|
449
|
-
* vault text is precisely what this function is for.
|
|
450
|
-
*/
|
|
451
|
-
const longestRun = (body.match(/`+/g) ?? []).reduce((max, run) => Math.max(max, run.length), 0);
|
|
452
|
-
const fence = '`'.repeat(Math.max(3, longestRun + 1));
|
|
453
|
-
return [`${fence}${lang}`, body, fence];
|
|
503
|
+
return markdown().codeBlock(body, lang).build();
|
|
454
504
|
}
|
|
455
505
|
function safeJsonStringify(v) {
|
|
456
506
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"obsidian-search-notes.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/obsidian-search-notes.tool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"obsidian-search-notes.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/obsidian-search-notes.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,8 +57,8 @@ export declare const obsidianWriteNote: import("@cyanheads/mcp-ts-core").ToolDef
|
|
|
57
57
|
readonly reason: "path_forbidden";
|
|
58
58
|
readonly thrownBy: "service";
|
|
59
59
|
readonly code: JsonRpcErrorCode.Forbidden;
|
|
60
|
-
readonly when: "The target path is outside OBSIDIAN_WRITE_PATHS, or OBSIDIAN_READ_ONLY=true denies all writes.";
|
|
61
|
-
readonly recovery: "Use a path inside the configured write scope. The error data echoes the active scope.";
|
|
60
|
+
readonly when: "The target path is outside OBSIDIAN_WRITE_PATHS or inside OBSIDIAN_DENY_PATHS, or OBSIDIAN_READ_ONLY=true denies all writes.";
|
|
61
|
+
readonly recovery: "Use a path inside the configured write scope. The error data echoes the active scope; a `denied_path` denial carries none, since the operator withholds that path.";
|
|
62
62
|
}, {
|
|
63
63
|
readonly reason: "note_missing";
|
|
64
64
|
readonly thrownBy: "service";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"obsidian-write-note.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/obsidian-write-note.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"obsidian-write-note.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/obsidian-write-note.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAWjE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA+O5B,CAAC"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
7
7
|
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
8
|
+
import { escapeMarkdownInline } from '@cyanheads/mcp-ts-core/utils';
|
|
8
9
|
import { getObsidianService } from '../../../services/obsidian/obsidian-service.js';
|
|
9
10
|
import { scanHeadings } from '../../../services/obsidian/section-extractor.js';
|
|
10
11
|
import { ContentTypeSchema, SectionSchema, TargetSchema } from './_shared/schemas.js';
|
|
@@ -61,8 +62,8 @@ export const obsidianWriteNote = tool('obsidian_write_note', {
|
|
|
61
62
|
reason: 'path_forbidden',
|
|
62
63
|
thrownBy: 'service',
|
|
63
64
|
code: JsonRpcErrorCode.Forbidden,
|
|
64
|
-
when: 'The target path is outside OBSIDIAN_WRITE_PATHS, or OBSIDIAN_READ_ONLY=true denies all writes.',
|
|
65
|
-
recovery: 'Use a path inside the configured write scope. The error data echoes the active scope.',
|
|
65
|
+
when: 'The target path is outside OBSIDIAN_WRITE_PATHS or inside OBSIDIAN_DENY_PATHS, or OBSIDIAN_READ_ONLY=true denies all writes.',
|
|
66
|
+
recovery: 'Use a path inside the configured write scope. The error data echoes the active scope; a `denied_path` denial carries none, since the operator withholds that path.',
|
|
66
67
|
},
|
|
67
68
|
{
|
|
68
69
|
reason: 'note_missing',
|
|
@@ -206,9 +207,9 @@ export const obsidianWriteNote = tool('obsidian_write_note', {
|
|
|
206
207
|
{
|
|
207
208
|
type: 'text',
|
|
208
209
|
text: [
|
|
209
|
-
`**${result.created ? 'Created' : 'Wrote'} ${result.path}**`,
|
|
210
|
+
`**${result.created ? 'Created' : 'Wrote'} ${escapeMarkdownInline(result.path)}**`,
|
|
210
211
|
`*Size:* ${result.previousSizeInBytes} → ${result.currentSizeInBytes} bytes`,
|
|
211
|
-
`*Section targeted:* ${result.sectionTargeted}${result.sectionTarget ? ` → ${result.sectionTarget}` : ''}`,
|
|
212
|
+
`*Section targeted:* ${result.sectionTargeted}${result.sectionTarget ? ` → ${escapeMarkdownInline(result.sectionTarget)}` : ''}`,
|
|
212
213
|
`*Created:* ${result.created}`,
|
|
213
214
|
].join('\n'),
|
|
214
215
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"obsidian-write-note.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/obsidian-write-note.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AAEpC,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,EAAE;IAC3D,WAAW,EACT,2lCAA2lC;IAC7lC,WAAW,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE;IAC5D,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QACtD,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,QAAQ,CACP,0JAA0J,CAC3J;QACH,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACxC,uGAAuG,CACxG;QACD,WAAW,EAAE,iBAAiB;QAC9B,SAAS,EAAE,CAAC;aACT,OAAO,EAAE;aACT,OAAO,CAAC,KAAK,CAAC;aACd,QAAQ,CACP,iVAAiV,CAClV;KACJ,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4DAA4D,CAAC;QACvF,eAAe,EAAE,CAAC;aACf,OAAO,EAAE;aACT,QAAQ,CAAC,oEAAoE,CAAC;QACjF,aAAa,EAAE,CAAC;aACb,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,sMAAsM,CACvM;QACH,OAAO,EAAE,CAAC;aACP,OAAO,EAAE;aACT,QAAQ,CACP,uGAAuG,CACxG;QACH,mBAAmB,EAAE,CAAC;aACnB,MAAM,EAAE;aACR,QAAQ,CACP,0HAA0H,CAC3H;QACH,kBAAkB,EAAE,CAAC;aAClB,MAAM,EAAE;aACR,QAAQ,CACP,wMAAwM,CACzM;KACJ,CAAC;IACF,IAAI,EAAE,CAAC,gCAAgC,CAAC;IACxC,MAAM,EAAE;QACN;YACE,MAAM,EAAE,aAAa;YACrB,IAAI,EAAE,gBAAgB,CAAC,QAAQ;YAC/B,IAAI,EAAE,gGAAgG;YACtG,QAAQ,EAAE,0EAA0E;SACrF;QACD;YACE,MAAM,EAAE,qBAAqB;YAC7B,IAAI,EAAE,gBAAgB,CAAC,QAAQ;YAC/B,IAAI,EAAE,qXAAqX;YAC3X,QAAQ,EACN,6MAA6M;SAChN;QACD;YACE,MAAM,EAAE,gBAAgB;YACxB,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,gBAAgB,CAAC,SAAS;YAChC,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"obsidian-write-note.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/obsidian-write-note.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview Server-side JSONLogic evaluation for searches scoped by
|
|
3
|
-
* OBSIDIAN_READ_PATHS. The caller's tree runs here, on
|
|
4
|
-
* the readable notes alone, instead of upstream over the
|
|
5
|
-
* result, or error reads a note outside the read scope.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
3
|
+
* OBSIDIAN_READ_PATHS or OBSIDIAN_DENY_PATHS. The caller's tree runs here, on
|
|
4
|
+
* a worker thread, over the readable notes alone, instead of upstream over the
|
|
5
|
+
* whole vault: no hit, result, or error reads a note outside the read scope.
|
|
6
|
+
* The notes carry no link fields: which note a link resolves to is Obsidian's
|
|
7
|
+
* vault-wide resolution, so `links`, `backlinks`, and `unresolvedLinks` would
|
|
8
|
+
* change with notes outside the scope (#165). A tree that names one fails with
|
|
9
|
+
* `link_fields_unavailable` before the search makes a request.
|
|
8
10
|
*
|
|
9
11
|
* Every evaluation is bounded — tree depth, work budgets the worker enforces
|
|
10
12
|
* (per note for what each note's evaluation builds, per search for what kept
|
|
@@ -63,6 +65,27 @@ export declare function readsContent(logic: unknown): boolean;
|
|
|
63
65
|
* anything recursive (serialization, the worker hand-off, evaluation).
|
|
64
66
|
*/
|
|
65
67
|
export declare function assertTreeDepth(logic: unknown): void;
|
|
68
|
+
/**
|
|
69
|
+
* Reject a tree that reads a link field of the note through `var`, `missing`,
|
|
70
|
+
* or `missing_some`. A scoped search's notes carry none, so such a read would
|
|
71
|
+
* see `null` on every note: `{"in": [X, {"var": "backlinks"}]}` would answer
|
|
72
|
+
* "nothing links here", and `{"missing": ["backlinks"]}` would report the
|
|
73
|
+
* field missing everywhere. Only a key fixed by the tree is caught —
|
|
74
|
+
* `"links"`, `"backlinks.0"`, the array form with a default — while a computed
|
|
75
|
+
* key reads `null`, and a `var` or `missing` applied to the elements a `map`,
|
|
76
|
+
* `filter`, `reduce`, `all`, `some`, or `none` walks reads the element, not
|
|
77
|
+
* the note. An object of other than one key is data json-logic-js never
|
|
78
|
+
* evaluates. Iterative; the tree's depth is already held to
|
|
79
|
+
* {@link MAX_TREE_DEPTH}.
|
|
80
|
+
*/
|
|
81
|
+
export declare function assertNoLinkFields(logic: unknown): void;
|
|
82
|
+
/** One search's evaluation; see {@link createJsonLogicEvaluation}. */
|
|
83
|
+
export interface JsonLogicEvaluation {
|
|
84
|
+
/** Terminate the worker, if one started. Idempotent; the search calls it however it ends. */
|
|
85
|
+
close(): Promise<void>;
|
|
86
|
+
/** Evaluate the next batch of readable notes, in vault order. */
|
|
87
|
+
evaluate(notes: NoteContext[]): Promise<StructuredSearchHit[]>;
|
|
88
|
+
}
|
|
66
89
|
/**
|
|
67
90
|
* One search's evaluation of `logic`. `evaluate` takes the readable notes in
|
|
68
91
|
* vault order, all at once or in successive batches; the budget for kept
|
|
@@ -73,11 +96,13 @@ export declare function assertTreeDepth(logic: unknown): void;
|
|
|
73
96
|
* `logic_invalid` when the tree fails on a note, `logic_too_costly` past
|
|
74
97
|
* either budget or the deadline, `note_too_deep` for a note the worker
|
|
75
98
|
* hand-off cannot carry, and the abort reason when `signal` aborts first.
|
|
99
|
+
*
|
|
100
|
+
* One worker evaluates every batch: started with the first batch that holds a
|
|
101
|
+
* note, it is terminated when a batch fails, passes a bound, or is cancelled,
|
|
102
|
+
* and otherwise by `close`.
|
|
76
103
|
*/
|
|
77
104
|
export declare function createJsonLogicEvaluation(logic: unknown, opts?: {
|
|
78
105
|
signal?: AbortSignal | undefined;
|
|
79
106
|
deadlineMs?: number;
|
|
80
|
-
}):
|
|
81
|
-
evaluate: (notes: NoteContext[]) => Promise<StructuredSearchHit[]>;
|
|
82
|
-
};
|
|
107
|
+
}): JsonLogicEvaluation;
|
|
83
108
|
//# sourceMappingURL=jsonlogic-evaluator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonlogic-evaluator.d.ts","sourceRoot":"","sources":["../../../src/services/obsidian/jsonlogic-evaluator.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"jsonlogic-evaluator.d.ts","sourceRoot":"","sources":["../../../src/services/obsidian/jsonlogic-evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,KAAK,EAAyC,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAChG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;;GAKG;AACH,eAAO,MAAM,cAAc,OAAQ,CAAC;AAEpC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,WAAa,CAAC;AAE5C;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,WAAa,CAAC;AAE3C,kGAAkG;AAClG,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAW7C;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEpD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAMpD;AAkBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CA2BvD;AAsED,sEAAsE;AACtE,MAAM,WAAW,mBAAmB;IAClC,6FAA6F;IAC7F,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,iEAAiE;IACjE,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;CAChE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,EACd,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACnE,mBAAmB,CAqFrB"}
|