obsidian-mcp-server 3.1.11 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +2 -2
- package/README.md +14 -13
- package/changelog/3.2.x/3.2.0.md +49 -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 +6 -0
- package/dist/config/server-config.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -9
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/tools/definitions/_shared/regex-safety.d.ts +18 -0
- package/dist/mcp-server/tools/definitions/_shared/regex-safety.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/_shared/regex-safety.js +34 -0
- package/dist/mcp-server/tools/definitions/_shared/regex-safety.js.map +1 -0
- package/dist/mcp-server/tools/definitions/_shared/schemas.js +1 -1
- package/dist/mcp-server/tools/definitions/_shared/schemas.js.map +1 -1
- package/dist/mcp-server/tools/definitions/index.d.ts +30 -844
- package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/index.js +10 -6
- package/dist/mcp-server/tools/definitions/index.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-list-commands.tool.d.ts +21 -2
- 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 +59 -6
- package/dist/mcp-server/tools/definitions/obsidian-list-commands.tool.js.map +1 -1
- 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 +2 -22
- package/dist/mcp-server/tools/definitions/obsidian-list-tags.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/obsidian-search-notes.tool.d.ts +175 -19
- 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 +249 -134
- package/dist/mcp-server/tools/definitions/obsidian-search-notes.tool.js.map +1 -1
- package/dist/services/obsidian/obsidian-service.d.ts +22 -2
- package/dist/services/obsidian/obsidian-service.d.ts.map +1 -1
- package/dist/services/obsidian/obsidian-service.js +143 -12
- package/dist/services/obsidian/obsidian-service.js.map +1 -1
- package/dist/services/obsidian/types.d.ts +25 -1
- package/dist/services/obsidian/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/server.json +3 -3
|
@@ -4,10 +4,18 @@
|
|
|
4
4
|
* when `OBSIDIAN_READ_ONLY=true`. The command-palette pair is exported
|
|
5
5
|
* separately so the entry point wraps it with `disabledTool()` when either
|
|
6
6
|
* `OBSIDIAN_ENABLE_COMMANDS=false` or `OBSIDIAN_READ_ONLY=true` — keeping this
|
|
7
|
-
* module free of eager config reads.
|
|
7
|
+
* module free of eager config reads. `obsidian_search_notes` is exposed as a
|
|
8
|
+
* factory (`buildSearchNotesTool`) because its mode enum is conditional on
|
|
9
|
+
* Omnisearch reachability, which is only known after the startup probe runs.
|
|
8
10
|
* @module mcp-server/tools/definitions/index
|
|
9
11
|
*/
|
|
10
|
-
|
|
12
|
+
export { buildSearchNotesTool } from './obsidian-search-notes.tool.js';
|
|
13
|
+
/**
|
|
14
|
+
* Read-only tools that don't depend on runtime probes — always registered,
|
|
15
|
+
* even with `OBSIDIAN_READ_ONLY=true`. `obsidian_search_notes` is constructed
|
|
16
|
+
* separately in the entry point via `buildSearchNotesTool` so its mode enum
|
|
17
|
+
* can reflect Omnisearch reachability.
|
|
18
|
+
*/
|
|
11
19
|
export declare const readToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
12
20
|
format: import("zod").ZodEnum<{
|
|
13
21
|
content: "content";
|
|
@@ -206,73 +214,6 @@ export declare const readToolDefinitions: (import("@cyanheads/mcp-ts-core").Tool
|
|
|
206
214
|
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.Conflict;
|
|
207
215
|
readonly when: "The parent directory contains multiple files whose names differ only in case (case-sensitive filesystems only).";
|
|
208
216
|
readonly recovery: "Retry with one of the exact paths listed in `matches` on the error data.";
|
|
209
|
-
}]> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
210
|
-
mode: import("zod").ZodEnum<{
|
|
211
|
-
text: "text";
|
|
212
|
-
dataview: "dataview";
|
|
213
|
-
jsonlogic: "jsonlogic";
|
|
214
|
-
}>;
|
|
215
|
-
query: import("zod").ZodOptional<import("zod").ZodString>;
|
|
216
|
-
logic: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
217
|
-
contextLength: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
218
|
-
pathPrefix: import("zod").ZodOptional<import("zod").ZodString>;
|
|
219
|
-
maxMatchesPerHit: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
220
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
221
|
-
result: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
222
|
-
mode: import("zod").ZodLiteral<"text">;
|
|
223
|
-
hits: import("zod").ZodArray<import("zod").ZodObject<{
|
|
224
|
-
filename: import("zod").ZodString;
|
|
225
|
-
score: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
226
|
-
matches: import("zod").ZodArray<import("zod").ZodObject<{
|
|
227
|
-
context: import("zod").ZodString;
|
|
228
|
-
match: import("zod").ZodObject<{
|
|
229
|
-
start: import("zod").ZodNumber;
|
|
230
|
-
end: import("zod").ZodNumber;
|
|
231
|
-
}, import("zod/v4/core").$strip>;
|
|
232
|
-
}, import("zod/v4/core").$strip>>;
|
|
233
|
-
totalMatches: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
234
|
-
truncated: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
235
|
-
}, import("zod/v4/core").$strip>>;
|
|
236
|
-
excluded: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
237
|
-
count: import("zod").ZodNumber;
|
|
238
|
-
hint: import("zod").ZodString;
|
|
239
|
-
}, import("zod/v4/core").$strip>>;
|
|
240
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
241
|
-
mode: import("zod").ZodLiteral<"dataview">;
|
|
242
|
-
hits: import("zod").ZodArray<import("zod").ZodObject<{
|
|
243
|
-
filename: import("zod").ZodString;
|
|
244
|
-
result: import("zod").ZodUnknown;
|
|
245
|
-
}, import("zod/v4/core").$strip>>;
|
|
246
|
-
excluded: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
247
|
-
count: import("zod").ZodNumber;
|
|
248
|
-
hint: import("zod").ZodString;
|
|
249
|
-
}, import("zod/v4/core").$strip>>;
|
|
250
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
251
|
-
mode: import("zod").ZodLiteral<"jsonlogic">;
|
|
252
|
-
hits: import("zod").ZodArray<import("zod").ZodObject<{
|
|
253
|
-
filename: import("zod").ZodString;
|
|
254
|
-
result: import("zod").ZodUnknown;
|
|
255
|
-
}, import("zod/v4/core").$strip>>;
|
|
256
|
-
excluded: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
257
|
-
count: import("zod").ZodNumber;
|
|
258
|
-
hint: import("zod").ZodString;
|
|
259
|
-
}, import("zod/v4/core").$strip>>;
|
|
260
|
-
}, import("zod/v4/core").$strip>], "mode">;
|
|
261
|
-
}, import("zod/v4/core").$strip>, readonly [{
|
|
262
|
-
readonly reason: "path_prefix_invalid_mode";
|
|
263
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
264
|
-
readonly when: "`pathPrefix` was provided in a non-text mode (only `text` supports prefix filtering).";
|
|
265
|
-
readonly recovery: "Drop pathPrefix or switch mode to text for prefix filtering.";
|
|
266
|
-
}, {
|
|
267
|
-
readonly reason: "query_required";
|
|
268
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
269
|
-
readonly when: "`query` is missing for `text` or `dataview` mode (required for both).";
|
|
270
|
-
readonly recovery: "Pass `query` — search terms for text mode (e.g. \"TODO\"), or DQL like \"TABLE WHERE file.mtime > date(today)\" for dataview mode.";
|
|
271
|
-
}, {
|
|
272
|
-
readonly reason: "logic_required";
|
|
273
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
274
|
-
readonly when: "`logic` is missing for `jsonlogic` mode.";
|
|
275
|
-
readonly recovery: "Pass a JSONLogic tree as `logic`, e.g. `{\"glob\": [{\"var\": \"path\"}, \"Projects/*.md\"]}`.";
|
|
276
217
|
}]>)[];
|
|
277
218
|
/** Write tools — wrapped with `disabledTool()` when `OBSIDIAN_READ_ONLY=true`. */
|
|
278
219
|
export declare const writeToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
@@ -779,791 +720,36 @@ export declare const writeToolDefinitions: (import("@cyanheads/mcp-ts-core").Too
|
|
|
779
720
|
readonly when: "`section` was provided but the named heading/block/frontmatter field does not exist in the note.";
|
|
780
721
|
readonly recovery: "Call obsidian_get_note with format document-map to discover available targets.";
|
|
781
722
|
}]>)[];
|
|
782
|
-
/**
|
|
783
|
-
export declare const
|
|
784
|
-
|
|
785
|
-
type: import("zod").ZodLiteral<"path">;
|
|
786
|
-
path: import("zod").ZodString;
|
|
787
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
788
|
-
type: import("zod").ZodLiteral<"active">;
|
|
789
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
790
|
-
type: import("zod").ZodLiteral<"periodic">;
|
|
791
|
-
period: import("zod").ZodEnum<{
|
|
792
|
-
daily: "daily";
|
|
793
|
-
weekly: "weekly";
|
|
794
|
-
monthly: "monthly";
|
|
795
|
-
quarterly: "quarterly";
|
|
796
|
-
yearly: "yearly";
|
|
797
|
-
}>;
|
|
798
|
-
date: import("zod").ZodOptional<import("zod").ZodString>;
|
|
799
|
-
}, import("zod/v4/core").$strip>], "type">;
|
|
800
|
-
content: import("zod").ZodString;
|
|
801
|
-
section: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
802
|
-
type: import("zod").ZodEnum<{
|
|
803
|
-
heading: "heading";
|
|
804
|
-
block: "block";
|
|
805
|
-
frontmatter: "frontmatter";
|
|
806
|
-
}>;
|
|
807
|
-
target: import("zod").ZodString;
|
|
808
|
-
}, import("zod/v4/core").$strip>>;
|
|
809
|
-
contentType: import("zod").ZodDefault<import("zod").ZodEnum<{
|
|
810
|
-
markdown: "markdown";
|
|
811
|
-
json: "json";
|
|
812
|
-
}>>;
|
|
813
|
-
createTargetIfMissing: import("zod").ZodDefault<import("zod").ZodBoolean>;
|
|
723
|
+
/** Command-palette tools — opt-in via `OBSIDIAN_ENABLE_COMMANDS=true`; suppressed by `OBSIDIAN_READ_ONLY=true`. */
|
|
724
|
+
export declare const commandToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
725
|
+
commandId: import("zod").ZodString;
|
|
814
726
|
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
created: import("zod").ZodBoolean;
|
|
818
|
-
previousSizeInBytes: import("zod").ZodNumber;
|
|
819
|
-
currentSizeInBytes: import("zod").ZodNumber;
|
|
727
|
+
commandId: import("zod").ZodString;
|
|
728
|
+
executed: import("zod").ZodBoolean;
|
|
820
729
|
}, import("zod/v4/core").$strip>, readonly [{
|
|
821
|
-
readonly reason: "
|
|
822
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.Forbidden;
|
|
823
|
-
readonly when: "The target path is outside OBSIDIAN_WRITE_PATHS, or OBSIDIAN_READ_ONLY=true denies all writes.";
|
|
824
|
-
readonly recovery: "Use a path inside the configured write scope. The error data echoes the active scope.";
|
|
825
|
-
}, {
|
|
826
|
-
readonly reason: "note_missing";
|
|
827
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
828
|
-
readonly when: "Section append targets a path that does not resolve to an existing note (PATCH requires the file to exist).";
|
|
829
|
-
readonly recovery: "Verify the path with obsidian_list_notes, or omit `section` to fall back to whole-file append (which creates the note if missing).";
|
|
830
|
-
}, {
|
|
831
|
-
readonly reason: "no_active_file";
|
|
832
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
833
|
-
readonly when: "Target was `active` but no file is currently open in Obsidian.";
|
|
834
|
-
readonly recovery: "Call obsidian_open_in_ui to focus a file, or pass an explicit path target instead.";
|
|
835
|
-
}, {
|
|
836
|
-
readonly reason: "periodic_not_found";
|
|
730
|
+
readonly reason: "command_unknown";
|
|
837
731
|
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
838
|
-
readonly when: "
|
|
839
|
-
readonly recovery: "
|
|
840
|
-
}, {
|
|
841
|
-
readonly reason: "periodic_disabled";
|
|
842
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
843
|
-
readonly when: "Target was `periodic` but the requested period is not enabled in Obsidian's Periodic Notes plugin settings.";
|
|
844
|
-
readonly recovery: "Pass an explicit path target — the requested period is disabled in the operator's Periodic Notes plugin.";
|
|
845
|
-
}, {
|
|
846
|
-
readonly reason: "section_target_missing";
|
|
847
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
848
|
-
readonly when: "`section` was provided but the named heading/block/frontmatter field does not exist in the note.";
|
|
849
|
-
readonly recovery: "Call obsidian_get_note with format document-map to discover available targets, or pass createTargetIfMissing: true to bring it into existence.";
|
|
732
|
+
readonly when: "The supplied `commandId` is not registered in Obsidian. Use `obsidian_list_commands` to discover valid IDs.";
|
|
733
|
+
readonly recovery: "Call obsidian_list_commands to discover the registered command IDs.";
|
|
850
734
|
}]> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
851
|
-
|
|
852
|
-
type: import("zod").ZodLiteral<"path">;
|
|
853
|
-
path: import("zod").ZodString;
|
|
854
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
855
|
-
type: import("zod").ZodLiteral<"active">;
|
|
856
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
857
|
-
type: import("zod").ZodLiteral<"periodic">;
|
|
858
|
-
period: import("zod").ZodEnum<{
|
|
859
|
-
daily: "daily";
|
|
860
|
-
weekly: "weekly";
|
|
861
|
-
monthly: "monthly";
|
|
862
|
-
quarterly: "quarterly";
|
|
863
|
-
yearly: "yearly";
|
|
864
|
-
}>;
|
|
865
|
-
date: import("zod").ZodOptional<import("zod").ZodString>;
|
|
866
|
-
}, import("zod/v4/core").$strip>], "type">;
|
|
735
|
+
nameRegex: import("zod").ZodOptional<import("zod").ZodString>;
|
|
867
736
|
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.Forbidden;
|
|
875
|
-
readonly when: "The target path is outside OBSIDIAN_WRITE_PATHS, or OBSIDIAN_READ_ONLY=true denies all writes.";
|
|
876
|
-
readonly recovery: "Use a path inside the configured write scope. The error data echoes the active scope.";
|
|
877
|
-
}, {
|
|
878
|
-
readonly reason: "cancelled";
|
|
879
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.InvalidRequest;
|
|
880
|
-
readonly when: "User declined the deletion via interactive elicitation.";
|
|
881
|
-
readonly recovery: "Re-run the tool when the user is ready to confirm deletion.";
|
|
882
|
-
}, {
|
|
883
|
-
readonly reason: "note_missing";
|
|
884
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
885
|
-
readonly when: "The vault path does not resolve to an existing note.";
|
|
886
|
-
readonly recovery: "Verify the path with obsidian_list_notes or use obsidian_search_notes to locate the note.";
|
|
887
|
-
}, {
|
|
888
|
-
readonly reason: "no_active_file";
|
|
889
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
890
|
-
readonly when: "Target was `active` but no file is currently open in Obsidian.";
|
|
891
|
-
readonly recovery: "Call obsidian_open_in_ui to focus a file, or pass an explicit path target instead.";
|
|
892
|
-
}, {
|
|
893
|
-
readonly reason: "periodic_not_found";
|
|
894
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
895
|
-
readonly when: "Target was `periodic` but no matching periodic note exists.";
|
|
896
|
-
readonly recovery: "Pass an explicit path target — periodic notes must already exist.";
|
|
897
|
-
}, {
|
|
898
|
-
readonly reason: "periodic_disabled";
|
|
899
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
900
|
-
readonly when: "Target was `periodic` but the requested period is not enabled in Obsidian's Periodic Notes plugin settings.";
|
|
901
|
-
readonly recovery: "Pass an explicit path target — the requested period is disabled in the operator's Periodic Notes plugin.";
|
|
902
|
-
}]> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
903
|
-
format: import("zod").ZodEnum<{
|
|
904
|
-
content: "content";
|
|
905
|
-
section: "section";
|
|
906
|
-
full: "full";
|
|
907
|
-
"document-map": "document-map";
|
|
908
|
-
}>;
|
|
909
|
-
target: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
910
|
-
type: import("zod").ZodLiteral<"path">;
|
|
911
|
-
path: import("zod").ZodString;
|
|
912
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
913
|
-
type: import("zod").ZodLiteral<"active">;
|
|
914
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
915
|
-
type: import("zod").ZodLiteral<"periodic">;
|
|
916
|
-
period: import("zod").ZodEnum<{
|
|
917
|
-
daily: "daily";
|
|
918
|
-
weekly: "weekly";
|
|
919
|
-
monthly: "monthly";
|
|
920
|
-
quarterly: "quarterly";
|
|
921
|
-
yearly: "yearly";
|
|
922
|
-
}>;
|
|
923
|
-
date: import("zod").ZodOptional<import("zod").ZodString>;
|
|
924
|
-
}, import("zod/v4/core").$strip>], "type">;
|
|
925
|
-
section: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
926
|
-
type: import("zod").ZodEnum<{
|
|
927
|
-
heading: "heading";
|
|
928
|
-
block: "block";
|
|
929
|
-
frontmatter: "frontmatter";
|
|
930
|
-
}>;
|
|
931
|
-
target: import("zod").ZodString;
|
|
737
|
+
commands: import("zod").ZodArray<import("zod").ZodObject<{
|
|
738
|
+
id: import("zod").ZodString;
|
|
739
|
+
name: import("zod").ZodString;
|
|
740
|
+
}, import("zod/v4/core").$strip>>;
|
|
741
|
+
appliedFilters: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
742
|
+
nameRegex: import("zod").ZodOptional<import("zod").ZodString>;
|
|
932
743
|
}, import("zod/v4/core").$strip>>;
|
|
933
|
-
includeLinks: import("zod").ZodDefault<import("zod").ZodBoolean>;
|
|
934
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
935
|
-
result: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
936
|
-
format: import("zod").ZodLiteral<"content">;
|
|
937
|
-
path: import("zod").ZodString;
|
|
938
|
-
content: import("zod").ZodString;
|
|
939
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
940
|
-
format: import("zod").ZodLiteral<"full">;
|
|
941
|
-
path: import("zod").ZodString;
|
|
942
|
-
content: import("zod").ZodString;
|
|
943
|
-
frontmatter: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
|
|
944
|
-
tags: import("zod").ZodArray<import("zod").ZodString>;
|
|
945
|
-
stat: import("zod").ZodObject<{
|
|
946
|
-
ctime: import("zod").ZodNumber;
|
|
947
|
-
mtime: import("zod").ZodNumber;
|
|
948
|
-
size: import("zod").ZodNumber;
|
|
949
|
-
}, import("zod/v4/core").$strip>;
|
|
950
|
-
outgoingLinks: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
|
|
951
|
-
target: import("zod").ZodString;
|
|
952
|
-
type: import("zod").ZodEnum<{
|
|
953
|
-
markdown: "markdown";
|
|
954
|
-
wikilink: "wikilink";
|
|
955
|
-
}>;
|
|
956
|
-
}, import("zod/v4/core").$strip>>>;
|
|
957
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
958
|
-
format: import("zod").ZodLiteral<"document-map">;
|
|
959
|
-
path: import("zod").ZodString;
|
|
960
|
-
headings: import("zod").ZodArray<import("zod").ZodString>;
|
|
961
|
-
blocks: import("zod").ZodArray<import("zod").ZodString>;
|
|
962
|
-
frontmatterFields: import("zod").ZodArray<import("zod").ZodString>;
|
|
963
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
964
|
-
format: import("zod").ZodLiteral<"section">;
|
|
965
|
-
path: import("zod").ZodString;
|
|
966
|
-
section: import("zod").ZodObject<{
|
|
967
|
-
type: import("zod").ZodEnum<{
|
|
968
|
-
heading: "heading";
|
|
969
|
-
block: "block";
|
|
970
|
-
frontmatter: "frontmatter";
|
|
971
|
-
}>;
|
|
972
|
-
target: import("zod").ZodString;
|
|
973
|
-
}, import("zod/v4/core").$strip>;
|
|
974
|
-
valueText: import("zod").ZodOptional<import("zod").ZodString>;
|
|
975
|
-
valueJson: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
976
|
-
}, import("zod/v4/core").$strip>], "format">;
|
|
977
744
|
}, import("zod/v4/core").$strip>, readonly [{
|
|
978
|
-
readonly reason: "
|
|
745
|
+
readonly reason: "regex_invalid";
|
|
979
746
|
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
980
|
-
readonly when: "`
|
|
981
|
-
readonly recovery: "
|
|
982
|
-
}, {
|
|
983
|
-
readonly reason: "path_forbidden";
|
|
984
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.Forbidden;
|
|
985
|
-
readonly when: "The target path is outside OBSIDIAN_READ_PATHS (and OBSIDIAN_WRITE_PATHS, since write paths imply read access).";
|
|
986
|
-
readonly recovery: "Use a path inside the configured read scope. The error data echoes the active scope.";
|
|
987
|
-
}, {
|
|
988
|
-
readonly reason: "note_missing";
|
|
989
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
990
|
-
readonly when: "The vault path does not resolve to an existing note.";
|
|
991
|
-
readonly recovery: "Verify the path with obsidian_list_notes or use obsidian_search_notes to locate the note.";
|
|
992
|
-
}, {
|
|
993
|
-
readonly reason: "ambiguous_path";
|
|
994
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.Conflict;
|
|
995
|
-
readonly when: "The parent directory contains multiple files whose names differ only in case (case-sensitive filesystems only).";
|
|
996
|
-
readonly recovery: "Retry with one of the exact paths listed in `matches` on the error data.";
|
|
997
|
-
}, {
|
|
998
|
-
readonly reason: "no_active_file";
|
|
999
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
1000
|
-
readonly when: "Target was `active` but no file is currently open in Obsidian.";
|
|
1001
|
-
readonly recovery: "Call obsidian_open_in_ui to focus a file, or pass an explicit path target instead.";
|
|
1002
|
-
}, {
|
|
1003
|
-
readonly reason: "periodic_not_found";
|
|
1004
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
1005
|
-
readonly when: "Target was `periodic` but no matching periodic note exists.";
|
|
1006
|
-
readonly recovery: "Create the periodic note first or pass an explicit path target.";
|
|
747
|
+
readonly when: "The supplied `nameRegex` is not a valid ECMAScript regex.";
|
|
748
|
+
readonly recovery: "Use a valid ECMAScript regex (e.g. `^Templater`), or omit nameRegex to disable filtering.";
|
|
1007
749
|
}, {
|
|
1008
|
-
readonly reason: "
|
|
1009
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
1010
|
-
readonly when: "Target was `periodic` but the requested period is not enabled in Obsidian's Periodic Notes plugin settings.";
|
|
1011
|
-
readonly recovery: "Pass an explicit path target — the requested period is disabled in the operator's Periodic Notes plugin.";
|
|
1012
|
-
}]> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
1013
|
-
path: import("zod").ZodOptional<import("zod").ZodString>;
|
|
1014
|
-
extension: import("zod").ZodOptional<import("zod").ZodString>;
|
|
1015
|
-
nameRegex: import("zod").ZodOptional<import("zod").ZodString>;
|
|
1016
|
-
depth: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
1017
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
1018
|
-
path: import("zod").ZodString;
|
|
1019
|
-
entries: import("zod").ZodArray<import("zod").ZodObject<{
|
|
1020
|
-
path: import("zod").ZodString;
|
|
1021
|
-
type: import("zod").ZodEnum<{
|
|
1022
|
-
file: "file";
|
|
1023
|
-
directory: "directory";
|
|
1024
|
-
}>;
|
|
1025
|
-
truncated: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
1026
|
-
}, import("zod/v4/core").$strip>>;
|
|
1027
|
-
totals: import("zod").ZodObject<{
|
|
1028
|
-
entries: import("zod").ZodNumber;
|
|
1029
|
-
files: import("zod").ZodNumber;
|
|
1030
|
-
directories: import("zod").ZodNumber;
|
|
1031
|
-
}, import("zod/v4/core").$strip>;
|
|
1032
|
-
appliedFilters: import("zod").ZodObject<{
|
|
1033
|
-
extension: import("zod").ZodOptional<import("zod").ZodString>;
|
|
1034
|
-
nameRegex: import("zod").ZodOptional<import("zod").ZodString>;
|
|
1035
|
-
depth: import("zod").ZodNumber;
|
|
1036
|
-
}, import("zod/v4/core").$strip>;
|
|
1037
|
-
excluded: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
1038
|
-
reason: import("zod").ZodLiteral<"entry_cap">;
|
|
1039
|
-
cap: import("zod").ZodNumber;
|
|
1040
|
-
hint: import("zod").ZodString;
|
|
1041
|
-
}, import("zod/v4/core").$strip>>;
|
|
1042
|
-
}, import("zod/v4/core").$strip>, readonly [{
|
|
1043
|
-
readonly reason: "regex_invalid";
|
|
1044
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
1045
|
-
readonly when: "The supplied `nameRegex` is not a valid ECMAScript regex.";
|
|
1046
|
-
readonly recovery: "Use a valid ECMAScript regex (e.g. `^Project.*\\.md$`), or omit nameRegex to disable filtering.";
|
|
1047
|
-
}, {
|
|
1048
|
-
readonly reason: "path_forbidden";
|
|
1049
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.Forbidden;
|
|
1050
|
-
readonly when: "The supplied `path` is outside OBSIDIAN_READ_PATHS (root listings always pass; specific subdirectories must be readable).";
|
|
1051
|
-
readonly recovery: "List a directory inside the configured read scope, or omit `path` to list from the vault root. The error data echoes the active scope.";
|
|
1052
|
-
}, {
|
|
1053
|
-
readonly reason: "note_missing";
|
|
1054
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
1055
|
-
readonly when: "The supplied `path` does not exist in the vault. Sub-directories that disappear mid-walk are silently skipped — only the root path surfaces this error.";
|
|
1056
|
-
readonly recovery: "List a parent directory to find the correct casing or check the spelling.";
|
|
1057
|
-
}]> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
1058
|
-
nameRegex: import("zod").ZodOptional<import("zod").ZodString>;
|
|
1059
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
1060
|
-
tags: import("zod").ZodArray<import("zod").ZodObject<{
|
|
1061
|
-
name: import("zod").ZodString;
|
|
1062
|
-
count: import("zod").ZodNumber;
|
|
1063
|
-
}, import("zod/v4/core").$strip>>;
|
|
1064
|
-
appliedFilters: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
1065
|
-
nameRegex: import("zod").ZodOptional<import("zod").ZodString>;
|
|
1066
|
-
}, import("zod/v4/core").$strip>>;
|
|
1067
|
-
}, import("zod/v4/core").$strip>, readonly [{
|
|
1068
|
-
readonly reason: "regex_invalid";
|
|
1069
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
1070
|
-
readonly when: "The supplied `nameRegex` is not a valid ECMAScript regex.";
|
|
1071
|
-
readonly recovery: "Use a valid ECMAScript regex (e.g. `^mcp/.*`), or omit nameRegex to disable filtering.";
|
|
1072
|
-
}, {
|
|
1073
|
-
readonly reason: "regex_unsafe";
|
|
750
|
+
readonly reason: "regex_unsafe";
|
|
1074
751
|
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
1075
752
|
readonly when: "The supplied `nameRegex` is well-formed but exceeds the 256-character limit or contains nested quantifiers known to cause catastrophic backtracking.";
|
|
1076
|
-
readonly recovery: "Avoid nested quantifiers like `(a+)+` or `(.*)*`. Use a simpler pattern (e.g. `^
|
|
1077
|
-
}]> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
1078
|
-
operation: import("zod").ZodEnum<{
|
|
1079
|
-
set: "set";
|
|
1080
|
-
delete: "delete";
|
|
1081
|
-
get: "get";
|
|
1082
|
-
}>;
|
|
1083
|
-
target: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
1084
|
-
type: import("zod").ZodLiteral<"path">;
|
|
1085
|
-
path: import("zod").ZodString;
|
|
1086
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
1087
|
-
type: import("zod").ZodLiteral<"active">;
|
|
1088
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
1089
|
-
type: import("zod").ZodLiteral<"periodic">;
|
|
1090
|
-
period: import("zod").ZodEnum<{
|
|
1091
|
-
daily: "daily";
|
|
1092
|
-
weekly: "weekly";
|
|
1093
|
-
monthly: "monthly";
|
|
1094
|
-
quarterly: "quarterly";
|
|
1095
|
-
yearly: "yearly";
|
|
1096
|
-
}>;
|
|
1097
|
-
date: import("zod").ZodOptional<import("zod").ZodString>;
|
|
1098
|
-
}, import("zod/v4/core").$strip>], "type">;
|
|
1099
|
-
key: import("zod").ZodString;
|
|
1100
|
-
value: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
1101
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
1102
|
-
result: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
1103
|
-
operation: import("zod").ZodLiteral<"get">;
|
|
1104
|
-
path: import("zod").ZodString;
|
|
1105
|
-
key: import("zod").ZodString;
|
|
1106
|
-
exists: import("zod").ZodBoolean;
|
|
1107
|
-
value: import("zod").ZodUnknown;
|
|
1108
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
1109
|
-
operation: import("zod").ZodLiteral<"set">;
|
|
1110
|
-
path: import("zod").ZodString;
|
|
1111
|
-
key: import("zod").ZodString;
|
|
1112
|
-
frontmatter: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
|
|
1113
|
-
previousSizeInBytes: import("zod").ZodNumber;
|
|
1114
|
-
currentSizeInBytes: import("zod").ZodNumber;
|
|
1115
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
1116
|
-
operation: import("zod").ZodLiteral<"delete">;
|
|
1117
|
-
path: import("zod").ZodString;
|
|
1118
|
-
key: import("zod").ZodString;
|
|
1119
|
-
frontmatter: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>;
|
|
1120
|
-
previousSizeInBytes: import("zod").ZodNumber;
|
|
1121
|
-
currentSizeInBytes: import("zod").ZodNumber;
|
|
1122
|
-
}, import("zod/v4/core").$strip>], "operation">;
|
|
1123
|
-
}, import("zod/v4/core").$strip>, readonly [{
|
|
1124
|
-
readonly reason: "path_forbidden";
|
|
1125
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.Forbidden;
|
|
1126
|
-
readonly when: "`get` requires the path to be readable; `set`/`delete` require it to be inside OBSIDIAN_WRITE_PATHS, with OBSIDIAN_READ_ONLY=false.";
|
|
1127
|
-
readonly recovery: "Use a path inside the configured scope. The error data echoes the active scope.";
|
|
1128
|
-
}, {
|
|
1129
|
-
readonly reason: "value_required";
|
|
1130
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
1131
|
-
readonly when: "`operation` is \"set\" but no `value` was supplied.";
|
|
1132
|
-
readonly recovery: "Pass `value` as any JSON-typed value: string, number, boolean, array, or object (e.g. `\"draft\"`, `42`, `true`, `[\"a\",\"b\"]`).";
|
|
1133
|
-
}, {
|
|
1134
|
-
readonly reason: "note_missing";
|
|
1135
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
1136
|
-
readonly when: "The vault path does not resolve to an existing note.";
|
|
1137
|
-
readonly recovery: "Verify the path with obsidian_list_notes or use obsidian_search_notes to locate the note.";
|
|
1138
|
-
}, {
|
|
1139
|
-
readonly reason: "no_active_file";
|
|
1140
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
1141
|
-
readonly when: "Target was `active` but no file is currently open in Obsidian.";
|
|
1142
|
-
readonly recovery: "Call obsidian_open_in_ui to focus a file, or pass an explicit path target instead.";
|
|
1143
|
-
}, {
|
|
1144
|
-
readonly reason: "periodic_not_found";
|
|
1145
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
1146
|
-
readonly when: "Target was `periodic` but no matching periodic note exists.";
|
|
1147
|
-
readonly recovery: "Create the periodic note first or pass an explicit path target.";
|
|
1148
|
-
}, {
|
|
1149
|
-
readonly reason: "periodic_disabled";
|
|
1150
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
1151
|
-
readonly when: "Target was `periodic` but the requested period is not enabled in Obsidian's Periodic Notes plugin settings.";
|
|
1152
|
-
readonly recovery: "Pass an explicit path target — the requested period is disabled in the operator's Periodic Notes plugin.";
|
|
1153
|
-
}]> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
1154
|
-
target: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
1155
|
-
type: import("zod").ZodLiteral<"path">;
|
|
1156
|
-
path: import("zod").ZodString;
|
|
1157
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
1158
|
-
type: import("zod").ZodLiteral<"active">;
|
|
1159
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
1160
|
-
type: import("zod").ZodLiteral<"periodic">;
|
|
1161
|
-
period: import("zod").ZodEnum<{
|
|
1162
|
-
daily: "daily";
|
|
1163
|
-
weekly: "weekly";
|
|
1164
|
-
monthly: "monthly";
|
|
1165
|
-
quarterly: "quarterly";
|
|
1166
|
-
yearly: "yearly";
|
|
1167
|
-
}>;
|
|
1168
|
-
date: import("zod").ZodOptional<import("zod").ZodString>;
|
|
1169
|
-
}, import("zod/v4/core").$strip>], "type">;
|
|
1170
|
-
operation: import("zod").ZodEnum<{
|
|
1171
|
-
list: "list";
|
|
1172
|
-
add: "add";
|
|
1173
|
-
remove: "remove";
|
|
1174
|
-
}>;
|
|
1175
|
-
tags: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
1176
|
-
location: import("zod").ZodDefault<import("zod").ZodEnum<{
|
|
1177
|
-
frontmatter: "frontmatter";
|
|
1178
|
-
inline: "inline";
|
|
1179
|
-
both: "both";
|
|
1180
|
-
}>>;
|
|
1181
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
1182
|
-
result: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
1183
|
-
operation: import("zod").ZodLiteral<"list">;
|
|
1184
|
-
path: import("zod").ZodString;
|
|
1185
|
-
tags: import("zod").ZodObject<{
|
|
1186
|
-
frontmatter: import("zod").ZodArray<import("zod").ZodString>;
|
|
1187
|
-
inline: import("zod").ZodArray<import("zod").ZodString>;
|
|
1188
|
-
all: import("zod").ZodArray<import("zod").ZodString>;
|
|
1189
|
-
}, import("zod/v4/core").$strip>;
|
|
1190
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
1191
|
-
operation: import("zod").ZodLiteral<"add">;
|
|
1192
|
-
path: import("zod").ZodString;
|
|
1193
|
-
applied: import("zod").ZodArray<import("zod").ZodString>;
|
|
1194
|
-
skipped: import("zod").ZodArray<import("zod").ZodString>;
|
|
1195
|
-
tags: import("zod").ZodArray<import("zod").ZodString>;
|
|
1196
|
-
previousSizeInBytes: import("zod").ZodNumber;
|
|
1197
|
-
currentSizeInBytes: import("zod").ZodNumber;
|
|
1198
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
1199
|
-
operation: import("zod").ZodLiteral<"remove">;
|
|
1200
|
-
path: import("zod").ZodString;
|
|
1201
|
-
applied: import("zod").ZodArray<import("zod").ZodString>;
|
|
1202
|
-
skipped: import("zod").ZodArray<import("zod").ZodString>;
|
|
1203
|
-
tags: import("zod").ZodArray<import("zod").ZodString>;
|
|
1204
|
-
previousSizeInBytes: import("zod").ZodNumber;
|
|
1205
|
-
currentSizeInBytes: import("zod").ZodNumber;
|
|
1206
|
-
}, import("zod/v4/core").$strip>], "operation">;
|
|
1207
|
-
}, import("zod/v4/core").$strip>, readonly [{
|
|
1208
|
-
readonly reason: "path_forbidden";
|
|
1209
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.Forbidden;
|
|
1210
|
-
readonly when: "`list` requires the path to be readable; `add`/`remove` require it to be inside OBSIDIAN_WRITE_PATHS, with OBSIDIAN_READ_ONLY=false.";
|
|
1211
|
-
readonly recovery: "Use a path inside the configured scope. The error data echoes the active scope.";
|
|
1212
|
-
}, {
|
|
1213
|
-
readonly reason: "tags_required";
|
|
1214
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
1215
|
-
readonly when: "`operation` is \"add\" or \"remove\" but `tags` was empty or omitted.";
|
|
1216
|
-
readonly recovery: "Pass a non-empty `tags` array (without `#`), e.g. `[\"draft\", \"wip\"]`.";
|
|
1217
|
-
}, {
|
|
1218
|
-
readonly reason: "note_missing";
|
|
1219
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
1220
|
-
readonly when: "The vault path does not resolve to an existing note.";
|
|
1221
|
-
readonly recovery: "Verify the path with obsidian_list_notes or use obsidian_search_notes to locate the note.";
|
|
1222
|
-
}, {
|
|
1223
|
-
readonly reason: "no_active_file";
|
|
1224
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
1225
|
-
readonly when: "Target was `active` but no file is currently open in Obsidian.";
|
|
1226
|
-
readonly recovery: "Call obsidian_open_in_ui to focus a file, or pass an explicit path target instead.";
|
|
1227
|
-
}, {
|
|
1228
|
-
readonly reason: "periodic_not_found";
|
|
1229
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
1230
|
-
readonly when: "Target was `periodic` but no matching periodic note exists.";
|
|
1231
|
-
readonly recovery: "Create the periodic note first or pass an explicit path target.";
|
|
1232
|
-
}, {
|
|
1233
|
-
readonly reason: "periodic_disabled";
|
|
1234
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
1235
|
-
readonly when: "Target was `periodic` but the requested period is not enabled in Obsidian's Periodic Notes plugin settings.";
|
|
1236
|
-
readonly recovery: "Pass an explicit path target — the requested period is disabled in the operator's Periodic Notes plugin.";
|
|
1237
|
-
}]> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
1238
|
-
path: import("zod").ZodString;
|
|
1239
|
-
failIfMissing: import("zod").ZodDefault<import("zod").ZodBoolean>;
|
|
1240
|
-
newLeaf: import("zod").ZodDefault<import("zod").ZodBoolean>;
|
|
1241
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
1242
|
-
path: import("zod").ZodString;
|
|
1243
|
-
opened: import("zod").ZodBoolean;
|
|
1244
|
-
createdIfMissing: import("zod").ZodBoolean;
|
|
1245
|
-
}, import("zod/v4/core").$strip>, readonly [{
|
|
1246
|
-
readonly reason: "path_forbidden";
|
|
1247
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.Forbidden;
|
|
1248
|
-
readonly when: "The target path is outside OBSIDIAN_READ_PATHS (and OBSIDIAN_WRITE_PATHS, since write paths imply read access).";
|
|
1249
|
-
readonly recovery: "Use a path inside the configured read scope. The error data echoes the active scope.";
|
|
1250
|
-
}, {
|
|
1251
|
-
readonly reason: "note_missing";
|
|
1252
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
1253
|
-
readonly when: "`failIfMissing: true` (default) and the path does not exist in the vault. Pass `failIfMissing: false` to allow Obsidian to create the file on open.";
|
|
1254
|
-
readonly recovery: "Verify the path with obsidian_list_notes or pass failIfMissing false to create on open.";
|
|
1255
|
-
}, {
|
|
1256
|
-
readonly reason: "ambiguous_path";
|
|
1257
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.Conflict;
|
|
1258
|
-
readonly when: "The parent directory contains multiple files whose names differ only in case (case-sensitive filesystems only).";
|
|
1259
|
-
readonly recovery: "Retry with one of the exact paths listed in `matches` on the error data.";
|
|
1260
|
-
}]> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
1261
|
-
target: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
1262
|
-
type: import("zod").ZodLiteral<"path">;
|
|
1263
|
-
path: import("zod").ZodString;
|
|
1264
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
1265
|
-
type: import("zod").ZodLiteral<"active">;
|
|
1266
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
1267
|
-
type: import("zod").ZodLiteral<"periodic">;
|
|
1268
|
-
period: import("zod").ZodEnum<{
|
|
1269
|
-
daily: "daily";
|
|
1270
|
-
weekly: "weekly";
|
|
1271
|
-
monthly: "monthly";
|
|
1272
|
-
quarterly: "quarterly";
|
|
1273
|
-
yearly: "yearly";
|
|
1274
|
-
}>;
|
|
1275
|
-
date: import("zod").ZodOptional<import("zod").ZodString>;
|
|
1276
|
-
}, import("zod/v4/core").$strip>], "type">;
|
|
1277
|
-
section: import("zod").ZodObject<{
|
|
1278
|
-
type: import("zod").ZodEnum<{
|
|
1279
|
-
heading: "heading";
|
|
1280
|
-
block: "block";
|
|
1281
|
-
frontmatter: "frontmatter";
|
|
1282
|
-
}>;
|
|
1283
|
-
target: import("zod").ZodString;
|
|
1284
|
-
}, import("zod/v4/core").$strip>;
|
|
1285
|
-
operation: import("zod").ZodEnum<{
|
|
1286
|
-
replace: "replace";
|
|
1287
|
-
append: "append";
|
|
1288
|
-
prepend: "prepend";
|
|
1289
|
-
}>;
|
|
1290
|
-
content: import("zod").ZodString;
|
|
1291
|
-
contentType: import("zod").ZodDefault<import("zod").ZodEnum<{
|
|
1292
|
-
markdown: "markdown";
|
|
1293
|
-
json: "json";
|
|
1294
|
-
}>>;
|
|
1295
|
-
patchOptions: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
1296
|
-
createTargetIfMissing: import("zod").ZodDefault<import("zod").ZodBoolean>;
|
|
1297
|
-
applyIfContentPreexists: import("zod").ZodDefault<import("zod").ZodBoolean>;
|
|
1298
|
-
trimTargetWhitespace: import("zod").ZodDefault<import("zod").ZodBoolean>;
|
|
1299
|
-
}, import("zod/v4/core").$strip>>;
|
|
1300
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
1301
|
-
path: import("zod").ZodString;
|
|
1302
|
-
section: import("zod").ZodObject<{
|
|
1303
|
-
type: import("zod").ZodEnum<{
|
|
1304
|
-
heading: "heading";
|
|
1305
|
-
block: "block";
|
|
1306
|
-
frontmatter: "frontmatter";
|
|
1307
|
-
}>;
|
|
1308
|
-
target: import("zod").ZodString;
|
|
1309
|
-
}, import("zod/v4/core").$strip>;
|
|
1310
|
-
operation: import("zod").ZodEnum<{
|
|
1311
|
-
replace: "replace";
|
|
1312
|
-
append: "append";
|
|
1313
|
-
prepend: "prepend";
|
|
1314
|
-
}>;
|
|
1315
|
-
previousSizeInBytes: import("zod").ZodNumber;
|
|
1316
|
-
currentSizeInBytes: import("zod").ZodNumber;
|
|
1317
|
-
}, import("zod/v4/core").$strip>, readonly [{
|
|
1318
|
-
readonly reason: "path_forbidden";
|
|
1319
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.Forbidden;
|
|
1320
|
-
readonly when: "The target path is outside OBSIDIAN_WRITE_PATHS, or OBSIDIAN_READ_ONLY=true denies all writes.";
|
|
1321
|
-
readonly recovery: "Use a path inside the configured write scope. The error data echoes the active scope.";
|
|
1322
|
-
}, {
|
|
1323
|
-
readonly reason: "note_missing";
|
|
1324
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
1325
|
-
readonly when: "The vault path does not resolve to an existing note.";
|
|
1326
|
-
readonly recovery: "Verify the path with obsidian_list_notes or use obsidian_search_notes to locate the note.";
|
|
1327
|
-
}, {
|
|
1328
|
-
readonly reason: "no_active_file";
|
|
1329
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
1330
|
-
readonly when: "Target was `active` but no file is currently open in Obsidian.";
|
|
1331
|
-
readonly recovery: "Call obsidian_open_in_ui to focus a file, or pass an explicit path target instead.";
|
|
1332
|
-
}, {
|
|
1333
|
-
readonly reason: "periodic_not_found";
|
|
1334
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
1335
|
-
readonly when: "Target was `periodic` but no matching periodic note exists.";
|
|
1336
|
-
readonly recovery: "Create the periodic note first or pass an explicit path target.";
|
|
1337
|
-
}, {
|
|
1338
|
-
readonly reason: "periodic_disabled";
|
|
1339
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
1340
|
-
readonly when: "Target was `periodic` but the requested period is not enabled in Obsidian's Periodic Notes plugin settings.";
|
|
1341
|
-
readonly recovery: "Pass an explicit path target — the requested period is disabled in the operator's Periodic Notes plugin.";
|
|
1342
|
-
}, {
|
|
1343
|
-
readonly reason: "section_target_missing";
|
|
1344
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
1345
|
-
readonly when: "The named heading/block/frontmatter field does not exist in the note. Use `obsidian_get_note` with `format: \"document-map\"` to discover available targets.";
|
|
1346
|
-
readonly recovery: "Call obsidian_get_note with format document-map to discover the available targets.";
|
|
1347
|
-
}]> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
1348
|
-
target: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
1349
|
-
type: import("zod").ZodLiteral<"path">;
|
|
1350
|
-
path: import("zod").ZodString;
|
|
1351
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
1352
|
-
type: import("zod").ZodLiteral<"active">;
|
|
1353
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
1354
|
-
type: import("zod").ZodLiteral<"periodic">;
|
|
1355
|
-
period: import("zod").ZodEnum<{
|
|
1356
|
-
daily: "daily";
|
|
1357
|
-
weekly: "weekly";
|
|
1358
|
-
monthly: "monthly";
|
|
1359
|
-
quarterly: "quarterly";
|
|
1360
|
-
yearly: "yearly";
|
|
1361
|
-
}>;
|
|
1362
|
-
date: import("zod").ZodOptional<import("zod").ZodString>;
|
|
1363
|
-
}, import("zod/v4/core").$strip>], "type">;
|
|
1364
|
-
replacements: import("zod").ZodArray<import("zod").ZodObject<{
|
|
1365
|
-
search: import("zod").ZodString;
|
|
1366
|
-
replace: import("zod").ZodString;
|
|
1367
|
-
useRegex: import("zod").ZodDefault<import("zod").ZodBoolean>;
|
|
1368
|
-
caseSensitive: import("zod").ZodDefault<import("zod").ZodBoolean>;
|
|
1369
|
-
wholeWord: import("zod").ZodDefault<import("zod").ZodBoolean>;
|
|
1370
|
-
flexibleWhitespace: import("zod").ZodDefault<import("zod").ZodBoolean>;
|
|
1371
|
-
replaceAll: import("zod").ZodDefault<import("zod").ZodBoolean>;
|
|
1372
|
-
}, import("zod/v4/core").$strip>>;
|
|
1373
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
1374
|
-
path: import("zod").ZodString;
|
|
1375
|
-
totalReplacements: import("zod").ZodNumber;
|
|
1376
|
-
perReplacement: import("zod").ZodArray<import("zod").ZodObject<{
|
|
1377
|
-
search: import("zod").ZodString;
|
|
1378
|
-
count: import("zod").ZodNumber;
|
|
1379
|
-
}, import("zod/v4/core").$strip>>;
|
|
1380
|
-
previousSizeInBytes: import("zod").ZodNumber;
|
|
1381
|
-
currentSizeInBytes: import("zod").ZodNumber;
|
|
1382
|
-
}, import("zod/v4/core").$strip>, readonly [{
|
|
1383
|
-
readonly reason: "path_forbidden";
|
|
1384
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.Forbidden;
|
|
1385
|
-
readonly when: "The target path is outside OBSIDIAN_WRITE_PATHS, or OBSIDIAN_READ_ONLY=true denies all writes. (The pre-read also requires the path to be readable.)";
|
|
1386
|
-
readonly recovery: "Use a path inside the configured write scope. The error data echoes the active scope.";
|
|
1387
|
-
}, {
|
|
1388
|
-
readonly reason: "regex_invalid";
|
|
1389
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
1390
|
-
readonly when: "A `useRegex: true` replacement supplied a `search` pattern that is not a valid ECMAScript regex.";
|
|
1391
|
-
readonly recovery: "Use a valid ECMAScript regex, or set useRegex to false to match `search` as a literal string.";
|
|
1392
|
-
}, {
|
|
1393
|
-
readonly reason: "note_missing";
|
|
1394
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
1395
|
-
readonly when: "The vault path does not resolve to an existing note.";
|
|
1396
|
-
readonly recovery: "Verify the path with obsidian_list_notes or use obsidian_search_notes to locate the note.";
|
|
1397
|
-
}, {
|
|
1398
|
-
readonly reason: "no_active_file";
|
|
1399
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
1400
|
-
readonly when: "Target was `active` but no file is currently open in Obsidian.";
|
|
1401
|
-
readonly recovery: "Call obsidian_open_in_ui to focus a file, or pass an explicit path target instead.";
|
|
1402
|
-
}, {
|
|
1403
|
-
readonly reason: "periodic_not_found";
|
|
1404
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
1405
|
-
readonly when: "Target was `periodic` but no matching periodic note exists.";
|
|
1406
|
-
readonly recovery: "Create the periodic note first or pass an explicit path target.";
|
|
1407
|
-
}, {
|
|
1408
|
-
readonly reason: "periodic_disabled";
|
|
1409
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
1410
|
-
readonly when: "Target was `periodic` but the requested period is not enabled in Obsidian's Periodic Notes plugin settings.";
|
|
1411
|
-
readonly recovery: "Pass an explicit path target — the requested period is disabled in the operator's Periodic Notes plugin.";
|
|
1412
|
-
}]> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
1413
|
-
mode: import("zod").ZodEnum<{
|
|
1414
|
-
text: "text";
|
|
1415
|
-
dataview: "dataview";
|
|
1416
|
-
jsonlogic: "jsonlogic";
|
|
1417
|
-
}>;
|
|
1418
|
-
query: import("zod").ZodOptional<import("zod").ZodString>;
|
|
1419
|
-
logic: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
|
|
1420
|
-
contextLength: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
1421
|
-
pathPrefix: import("zod").ZodOptional<import("zod").ZodString>;
|
|
1422
|
-
maxMatchesPerHit: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
1423
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
1424
|
-
result: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
1425
|
-
mode: import("zod").ZodLiteral<"text">;
|
|
1426
|
-
hits: import("zod").ZodArray<import("zod").ZodObject<{
|
|
1427
|
-
filename: import("zod").ZodString;
|
|
1428
|
-
score: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
1429
|
-
matches: import("zod").ZodArray<import("zod").ZodObject<{
|
|
1430
|
-
context: import("zod").ZodString;
|
|
1431
|
-
match: import("zod").ZodObject<{
|
|
1432
|
-
start: import("zod").ZodNumber;
|
|
1433
|
-
end: import("zod").ZodNumber;
|
|
1434
|
-
}, import("zod/v4/core").$strip>;
|
|
1435
|
-
}, import("zod/v4/core").$strip>>;
|
|
1436
|
-
totalMatches: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
1437
|
-
truncated: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
1438
|
-
}, import("zod/v4/core").$strip>>;
|
|
1439
|
-
excluded: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
1440
|
-
count: import("zod").ZodNumber;
|
|
1441
|
-
hint: import("zod").ZodString;
|
|
1442
|
-
}, import("zod/v4/core").$strip>>;
|
|
1443
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
1444
|
-
mode: import("zod").ZodLiteral<"dataview">;
|
|
1445
|
-
hits: import("zod").ZodArray<import("zod").ZodObject<{
|
|
1446
|
-
filename: import("zod").ZodString;
|
|
1447
|
-
result: import("zod").ZodUnknown;
|
|
1448
|
-
}, import("zod/v4/core").$strip>>;
|
|
1449
|
-
excluded: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
1450
|
-
count: import("zod").ZodNumber;
|
|
1451
|
-
hint: import("zod").ZodString;
|
|
1452
|
-
}, import("zod/v4/core").$strip>>;
|
|
1453
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
1454
|
-
mode: import("zod").ZodLiteral<"jsonlogic">;
|
|
1455
|
-
hits: import("zod").ZodArray<import("zod").ZodObject<{
|
|
1456
|
-
filename: import("zod").ZodString;
|
|
1457
|
-
result: import("zod").ZodUnknown;
|
|
1458
|
-
}, import("zod/v4/core").$strip>>;
|
|
1459
|
-
excluded: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
1460
|
-
count: import("zod").ZodNumber;
|
|
1461
|
-
hint: import("zod").ZodString;
|
|
1462
|
-
}, import("zod/v4/core").$strip>>;
|
|
1463
|
-
}, import("zod/v4/core").$strip>], "mode">;
|
|
1464
|
-
}, import("zod/v4/core").$strip>, readonly [{
|
|
1465
|
-
readonly reason: "path_prefix_invalid_mode";
|
|
1466
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
1467
|
-
readonly when: "`pathPrefix` was provided in a non-text mode (only `text` supports prefix filtering).";
|
|
1468
|
-
readonly recovery: "Drop pathPrefix or switch mode to text for prefix filtering.";
|
|
1469
|
-
}, {
|
|
1470
|
-
readonly reason: "query_required";
|
|
1471
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
1472
|
-
readonly when: "`query` is missing for `text` or `dataview` mode (required for both).";
|
|
1473
|
-
readonly recovery: "Pass `query` — search terms for text mode (e.g. \"TODO\"), or DQL like \"TABLE WHERE file.mtime > date(today)\" for dataview mode.";
|
|
1474
|
-
}, {
|
|
1475
|
-
readonly reason: "logic_required";
|
|
1476
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
1477
|
-
readonly when: "`logic` is missing for `jsonlogic` mode.";
|
|
1478
|
-
readonly recovery: "Pass a JSONLogic tree as `logic`, e.g. `{\"glob\": [{\"var\": \"path\"}, \"Projects/*.md\"]}`.";
|
|
1479
|
-
}]> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
1480
|
-
target: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
1481
|
-
type: import("zod").ZodLiteral<"path">;
|
|
1482
|
-
path: import("zod").ZodString;
|
|
1483
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
1484
|
-
type: import("zod").ZodLiteral<"active">;
|
|
1485
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
1486
|
-
type: import("zod").ZodLiteral<"periodic">;
|
|
1487
|
-
period: import("zod").ZodEnum<{
|
|
1488
|
-
daily: "daily";
|
|
1489
|
-
weekly: "weekly";
|
|
1490
|
-
monthly: "monthly";
|
|
1491
|
-
quarterly: "quarterly";
|
|
1492
|
-
yearly: "yearly";
|
|
1493
|
-
}>;
|
|
1494
|
-
date: import("zod").ZodOptional<import("zod").ZodString>;
|
|
1495
|
-
}, import("zod/v4/core").$strip>], "type">;
|
|
1496
|
-
content: import("zod").ZodString;
|
|
1497
|
-
section: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
1498
|
-
type: import("zod").ZodEnum<{
|
|
1499
|
-
heading: "heading";
|
|
1500
|
-
block: "block";
|
|
1501
|
-
frontmatter: "frontmatter";
|
|
1502
|
-
}>;
|
|
1503
|
-
target: import("zod").ZodString;
|
|
1504
|
-
}, import("zod/v4/core").$strip>>;
|
|
1505
|
-
contentType: import("zod").ZodDefault<import("zod").ZodEnum<{
|
|
1506
|
-
markdown: "markdown";
|
|
1507
|
-
json: "json";
|
|
1508
|
-
}>>;
|
|
1509
|
-
overwrite: import("zod").ZodDefault<import("zod").ZodBoolean>;
|
|
1510
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
1511
|
-
path: import("zod").ZodString;
|
|
1512
|
-
sectionTargeted: import("zod").ZodBoolean;
|
|
1513
|
-
created: import("zod").ZodBoolean;
|
|
1514
|
-
previousSizeInBytes: import("zod").ZodNumber;
|
|
1515
|
-
currentSizeInBytes: import("zod").ZodNumber;
|
|
1516
|
-
}, import("zod/v4/core").$strip>, readonly [{
|
|
1517
|
-
readonly reason: "file_exists";
|
|
1518
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.Conflict;
|
|
1519
|
-
readonly when: "Whole-file write was attempted against an existing note and `overwrite` was not set to `true`.";
|
|
1520
|
-
readonly recovery: "Retry with overwrite true or use obsidian_patch_note for in-place edits.";
|
|
1521
|
-
}, {
|
|
1522
|
-
readonly reason: "path_forbidden";
|
|
1523
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.Forbidden;
|
|
1524
|
-
readonly when: "The target path is outside OBSIDIAN_WRITE_PATHS, or OBSIDIAN_READ_ONLY=true denies all writes.";
|
|
1525
|
-
readonly recovery: "Use a path inside the configured write scope. The error data echoes the active scope.";
|
|
1526
|
-
}, {
|
|
1527
|
-
readonly reason: "note_missing";
|
|
1528
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
1529
|
-
readonly when: "Section replace targets a path that does not resolve to an existing note (PATCH requires the file to exist).";
|
|
1530
|
-
readonly recovery: "Verify the path with obsidian_list_notes, or omit `section` to fall back to whole-file write (which creates the note when it is absent).";
|
|
1531
|
-
}, {
|
|
1532
|
-
readonly reason: "no_active_file";
|
|
1533
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
1534
|
-
readonly when: "Target was `active` but no file is currently open in Obsidian.";
|
|
1535
|
-
readonly recovery: "Call obsidian_open_in_ui to focus a file, or pass an explicit path target instead.";
|
|
1536
|
-
}, {
|
|
1537
|
-
readonly reason: "periodic_not_found";
|
|
1538
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
1539
|
-
readonly when: "Target was `periodic` but no matching periodic note exists.";
|
|
1540
|
-
readonly recovery: "Create the periodic note first or pass an explicit path target.";
|
|
1541
|
-
}, {
|
|
1542
|
-
readonly reason: "periodic_disabled";
|
|
1543
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
1544
|
-
readonly when: "Target was `periodic` but the requested period is not enabled in Obsidian's Periodic Notes plugin settings.";
|
|
1545
|
-
readonly recovery: "Pass an explicit path target — the requested period is disabled in the operator's Periodic Notes plugin.";
|
|
1546
|
-
}, {
|
|
1547
|
-
readonly reason: "section_target_missing";
|
|
1548
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
1549
|
-
readonly when: "`section` was provided but the named heading/block/frontmatter field does not exist in the note.";
|
|
1550
|
-
readonly recovery: "Call obsidian_get_note with format document-map to discover available targets.";
|
|
753
|
+
readonly recovery: "Avoid nested quantifiers like `(a+)+` or `(.*)*`. Use a simpler pattern (e.g. `^Templater`), or omit nameRegex to disable filtering.";
|
|
1551
754
|
}]>)[];
|
|
1552
|
-
/** Command-palette tools — opt-in via `OBSIDIAN_ENABLE_COMMANDS=true`; suppressed by `OBSIDIAN_READ_ONLY=true`. */
|
|
1553
|
-
export declare const commandToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
1554
|
-
commandId: import("zod").ZodString;
|
|
1555
|
-
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
1556
|
-
commandId: import("zod").ZodString;
|
|
1557
|
-
executed: import("zod").ZodBoolean;
|
|
1558
|
-
}, import("zod/v4/core").$strip>, readonly [{
|
|
1559
|
-
readonly reason: "command_unknown";
|
|
1560
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
1561
|
-
readonly when: "The supplied `commandId` is not registered in Obsidian. Use `obsidian_list_commands` to discover valid IDs.";
|
|
1562
|
-
readonly recovery: "Call obsidian_list_commands to discover the registered command IDs.";
|
|
1563
|
-
}]> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
1564
|
-
commands: import("zod").ZodArray<import("zod").ZodObject<{
|
|
1565
|
-
id: import("zod").ZodString;
|
|
1566
|
-
name: import("zod").ZodString;
|
|
1567
|
-
}, import("zod/v4/core").$strip>>;
|
|
1568
|
-
}, import("zod/v4/core").$strip>, undefined>)[];
|
|
1569
755
|
//# sourceMappingURL=index.d.ts.map
|