seekstone 0.13.0 → 0.13.1

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/dist/index.js CHANGED
@@ -2752,9 +2752,32 @@ function installProcessGuards(log2) {
2752
2752
  }
2753
2753
 
2754
2754
  // src/tool-list.ts
2755
+ var READ_ONLY_ANNOTATIONS = {
2756
+ readOnlyHint: true,
2757
+ openWorldHint: false
2758
+ };
2759
+ var ADDITIVE_WRITE_ANNOTATIONS = {
2760
+ readOnlyHint: false,
2761
+ destructiveHint: false,
2762
+ idempotentHint: false,
2763
+ openWorldHint: false
2764
+ };
2765
+ var DESTRUCTIVE_WRITE_ANNOTATIONS = {
2766
+ readOnlyHint: false,
2767
+ destructiveHint: true,
2768
+ idempotentHint: false,
2769
+ openWorldHint: false
2770
+ };
2771
+ var IDEMPOTENT_DESTRUCTIVE_WRITE_ANNOTATIONS = {
2772
+ readOnlyHint: false,
2773
+ destructiveHint: true,
2774
+ idempotentHint: true,
2775
+ openWorldHint: false
2776
+ };
2755
2777
  var ALL_TOOLS = [
2756
2778
  {
2757
2779
  name: "search",
2780
+ annotations: READ_ONLY_ANNOTATIONS,
2758
2781
  description: "Full-text search across the vault. Returns ranked excerpts (~200 chars) \u2014 not full notes \u2014 to minimise context usage. Supports fuzzy matching and prefix search.",
2759
2782
  inputSchema: {
2760
2783
  type: "object",
@@ -2769,6 +2792,7 @@ var ALL_TOOLS = [
2769
2792
  },
2770
2793
  {
2771
2794
  name: "query_notes",
2795
+ annotations: READ_ONLY_ANNOTATIONS,
2772
2796
  description: "Structured metadata query \u2014 filter notes by frontmatter key/value predicates, tag, folder, modified time, and size. Returns compact rows (path + title by default; opt into more via select), not note content. Use this instead of search when filtering by properties rather than text.",
2773
2797
  inputSchema: {
2774
2798
  type: "object",
@@ -2826,6 +2850,7 @@ var ALL_TOOLS = [
2826
2850
  },
2827
2851
  {
2828
2852
  name: "context_pack",
2853
+ annotations: READ_ONLY_ANNOTATIONS,
2829
2854
  description: 'Assemble everything needed to ANSWER a natural-language question in one call, under a strict byte budget (default 2048): ranked excerpts, linked neighbor notes (backlinks/outlinks) with one-line summaries, and follow-up source paths. Use search to locate notes and query_notes for metadata filters; use context_pack when you want answer-ready context without multiple round-trips. Empty excerpts with confidence "none" or "low" means the vault lacks coverage \u2014 do not infer content.',
2830
2855
  inputSchema: {
2831
2856
  type: "object",
@@ -2841,6 +2866,7 @@ var ALL_TOOLS = [
2841
2866
  },
2842
2867
  {
2843
2868
  name: "read_note",
2869
+ annotations: READ_ONLY_ANNOTATIONS,
2844
2870
  description: "Read a note or a span of it \u2014 by heading section, block reference, or line range. Returns structured JSON with the content, bytes returned, total note size, and a contentHash to pass as prevHash to edit tools for compare-and-swap. Use search or outline_note first to find the right path and section names.",
2845
2871
  inputSchema: {
2846
2872
  type: "object",
@@ -2879,6 +2905,7 @@ var ALL_TOOLS = [
2879
2905
  },
2880
2906
  {
2881
2907
  name: "list_notes",
2908
+ annotations: READ_ONLY_ANNOTATIONS,
2882
2909
  description: "List notes, optionally filtered by folder prefix or tag.",
2883
2910
  inputSchema: {
2884
2911
  type: "object",
@@ -2892,6 +2919,7 @@ var ALL_TOOLS = [
2892
2919
  },
2893
2920
  {
2894
2921
  name: "list_tags",
2922
+ annotations: READ_ONLY_ANNOTATIONS,
2895
2923
  description: "List all tags in the vault with usage counts. Supports substring filtering, minimum count threshold, and sort order. Nested tags (e.g. area/work) include a parent field.",
2896
2924
  inputSchema: {
2897
2925
  type: "object",
@@ -2915,6 +2943,7 @@ var ALL_TOOLS = [
2915
2943
  },
2916
2944
  {
2917
2945
  name: "create_note",
2946
+ annotations: DESTRUCTIVE_WRITE_ANNOTATIONS,
2918
2947
  description: "Create a new note at a vault-relative path. Optionally sets frontmatter and body content. Parent directories are created automatically. Fails if the note already exists unless overwrite is true (prevHash may guard the overwrite).",
2919
2948
  inputSchema: {
2920
2949
  type: "object",
@@ -2943,6 +2972,7 @@ var ALL_TOOLS = [
2943
2972
  },
2944
2973
  {
2945
2974
  name: "delete_note",
2975
+ annotations: DESTRUCTIVE_WRITE_ANNOTATIONS,
2946
2976
  description: "Delete a note. By default it is moved to the vault .trash/ folder (recoverable by moving it back); pass permanent: true to remove it outright.",
2947
2977
  inputSchema: {
2948
2978
  type: "object",
@@ -2958,6 +2988,7 @@ var ALL_TOOLS = [
2958
2988
  },
2959
2989
  {
2960
2990
  name: "move_note",
2991
+ annotations: DESTRUCTIVE_WRITE_ANNOTATIONS,
2961
2992
  description: "Move or rename a note to a new vault-relative path, rewriting wikilinks and markdown links in other notes that point at it so nothing breaks (links inside fenced code blocks are left alone). Parent directories at the destination are created automatically. Fails if the destination already exists unless overwrite is true.",
2962
2993
  inputSchema: {
2963
2994
  type: "object",
@@ -2978,6 +3009,7 @@ var ALL_TOOLS = [
2978
3009
  },
2979
3010
  {
2980
3011
  name: "rename_heading",
3012
+ annotations: DESTRUCTIVE_WRITE_ANNOTATIONS,
2981
3013
  description: "Rename a heading in a note and rewrite every [[note#heading]] wikilink and embed across the vault so references keep working \u2014 aliases preserved, fenced code blocks left alone. Served from the warm backlink index, no vault scan. Heading matching is case-insensitive; with duplicate headings the first match wins, mirroring Obsidian link resolution.",
2982
3014
  inputSchema: {
2983
3015
  type: "object",
@@ -3004,6 +3036,7 @@ var ALL_TOOLS = [
3004
3036
  },
3005
3037
  {
3006
3038
  name: "append_note",
3039
+ annotations: ADDITIVE_WRITE_ANNOTATIONS,
3007
3040
  description: "Append text to a note body without touching the frontmatter. Safe for meeting notes, daily logs, and append-only workflows.",
3008
3041
  inputSchema: {
3009
3042
  type: "object",
@@ -3020,6 +3053,7 @@ var ALL_TOOLS = [
3020
3053
  },
3021
3054
  {
3022
3055
  name: "patch_frontmatter",
3056
+ annotations: IDEMPOTENT_DESTRUCTIVE_WRITE_ANNOTATIONS,
3023
3057
  description: "Set, update, or delete frontmatter keys without reordering existing keys or changing quote style. Pass null as a value to delete a key.",
3024
3058
  inputSchema: {
3025
3059
  type: "object",
@@ -3040,6 +3074,7 @@ var ALL_TOOLS = [
3040
3074
  },
3041
3075
  {
3042
3076
  name: "outline_note",
3077
+ annotations: READ_ONLY_ANNOTATIONS,
3043
3078
  description: "Return a note's structure \u2014 heading tree with offsets, block-reference anchors, and frontmatter key list \u2014 without returning any prose. Use this before section reads or patches to discover what sections exist at a fraction of the cost of reading the full note.",
3044
3079
  inputSchema: {
3045
3080
  type: "object",
@@ -3059,6 +3094,7 @@ var ALL_TOOLS = [
3059
3094
  },
3060
3095
  {
3061
3096
  name: "patch_note",
3097
+ annotations: DESTRUCTIVE_WRITE_ANNOTATIONS,
3062
3098
  description: "Surgically edit a section of a note \u2014 targeted by heading or block reference \u2014 without rewriting the whole file. Operations: append (add after section), prepend (add after heading line), replace (swap section content). Frontmatter is never touched.",
3063
3099
  inputSchema: {
3064
3100
  type: "object",
@@ -3088,6 +3124,7 @@ var ALL_TOOLS = [
3088
3124
  },
3089
3125
  {
3090
3126
  name: "get_backlinks",
3127
+ annotations: READ_ONLY_ANNOTATIONS,
3091
3128
  description: "Return every note that links to the target note, with the source line and an optional excerpt. Results come from the pre-built reverse-link index so this is a fast, pure index lookup. Sort order: source path ascending.",
3092
3129
  inputSchema: {
3093
3130
  type: "object",
@@ -3107,6 +3144,7 @@ var ALL_TOOLS = [
3107
3144
  },
3108
3145
  {
3109
3146
  name: "get_links",
3147
+ annotations: READ_ONLY_ANNOTATIONS,
3110
3148
  description: "Return all outgoing wikilinks and embeds from a note. Each link is marked resolved (with target path) or unresolved. Duplicate targets are de-duplicated; results sorted by line number.",
3111
3149
  inputSchema: {
3112
3150
  type: "object",
@@ -3118,6 +3156,7 @@ var ALL_TOOLS = [
3118
3156
  },
3119
3157
  {
3120
3158
  name: "replace_in_note",
3159
+ annotations: DESTRUCTIVE_WRITE_ANNOTATIONS,
3121
3160
  description: "Find and replace text within a note body. Supports literal and regex search, case sensitivity, whole-word matching, and a replacement limit. Frontmatter is never touched. Use dryRun to preview matches before writing.",
3122
3161
  inputSchema: {
3123
3162
  type: "object",
@@ -3158,6 +3197,7 @@ var ALL_TOOLS = [
3158
3197
  },
3159
3198
  {
3160
3199
  name: "get_periodic_note",
3200
+ annotations: ADDITIVE_WRITE_ANNOTATIONS,
3161
3201
  description: "Get the path and existence status of a periodic note (daily, weekly, monthly, quarterly, or yearly) for a given date. Reads folder/format config from .obsidian/daily-notes.json (daily) or the periodic-notes plugin data.json. Optionally creates the note from the configured template if it is missing.",
3162
3202
  inputSchema: {
3163
3203
  type: "object",
@@ -3181,6 +3221,7 @@ var ALL_TOOLS = [
3181
3221
  },
3182
3222
  {
3183
3223
  name: "append_periodic_note",
3224
+ annotations: ADDITIVE_WRITE_ANNOTATIONS,
3184
3225
  description: "Append text to a periodic note (daily, weekly, monthly, quarterly, or yearly). Preserves existing frontmatter exactly. Creates the note first (from template if configured) when createIfMissing is true (default).",
3185
3226
  inputSchema: {
3186
3227
  type: "object",
@@ -3283,7 +3324,7 @@ function startWatcher(ctx2, log2, opts) {
3283
3324
  }
3284
3325
 
3285
3326
  // src/index.ts
3286
- var VERSION = true ? "0.13.0" : "0.0.0-dev";
3327
+ var VERSION = true ? "0.13.1" : "0.0.0-dev";
3287
3328
  var intent = parseCliIntent(process.argv.slice(2));
3288
3329
  if (intent === "version") {
3289
3330
  process.stdout.write(`${VERSION}