@ankimcp/anki-mcp-server 0.15.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/LICENSE +659 -5
  2. package/README.md +64 -12
  3. package/dist/app.module.js +3 -0
  4. package/dist/app.module.js.map +1 -1
  5. package/dist/mcp/mcp-icons.d.ts +2 -0
  6. package/dist/mcp/mcp-icons.js +11 -0
  7. package/dist/mcp/mcp-icons.js.map +1 -0
  8. package/dist/mcp/primitives/essential/index.d.ts +25 -7
  9. package/dist/mcp/primitives/essential/index.js +49 -13
  10. package/dist/mcp/primitives/essential/index.js.map +1 -1
  11. package/dist/mcp/primitives/essential/prompts/twenty-rules.prompt/content.md +2 -2
  12. package/dist/mcp/primitives/essential/tools/add-note.tool.d.ts +2 -1
  13. package/dist/mcp/primitives/essential/tools/add-note.tool.js +2 -0
  14. package/dist/mcp/primitives/essential/tools/add-note.tool.js.map +1 -1
  15. package/dist/mcp/primitives/essential/tools/add-notes.tool.d.ts +2 -1
  16. package/dist/mcp/primitives/essential/tools/add-notes.tool.js +2 -0
  17. package/dist/mcp/primitives/essential/tools/add-notes.tool.js.map +1 -1
  18. package/dist/mcp/primitives/essential/tools/{tagActions/tagActions.tool.d.ts → add-tags.tool.d.ts} +6 -9
  19. package/dist/mcp/primitives/essential/tools/add-tags.tool.js +85 -0
  20. package/dist/mcp/primitives/essential/tools/add-tags.tool.js.map +1 -0
  21. package/dist/mcp/primitives/essential/tools/change-deck.tool.d.ts +107 -0
  22. package/dist/mcp/primitives/essential/tools/change-deck.tool.js +79 -0
  23. package/dist/mcp/primitives/essential/tools/change-deck.tool.js.map +1 -0
  24. package/dist/mcp/primitives/essential/tools/clear-unused-tags.tool.d.ts +104 -0
  25. package/dist/mcp/primitives/essential/tools/clear-unused-tags.tool.js +68 -0
  26. package/dist/mcp/primitives/essential/tools/clear-unused-tags.tool.js.map +1 -0
  27. package/dist/mcp/primitives/essential/tools/collection-stats/collection-stats.tool.d.ts +2 -1
  28. package/dist/mcp/primitives/essential/tools/collection-stats/collection-stats.tool.js +6 -2
  29. package/dist/mcp/primitives/essential/tools/collection-stats/collection-stats.tool.js.map +1 -1
  30. package/dist/mcp/primitives/essential/tools/collection-stats/collection-stats.types.d.ts +1 -1
  31. package/dist/mcp/primitives/essential/tools/create-deck.tool.d.ts +106 -0
  32. package/dist/mcp/primitives/essential/tools/create-deck.tool.js +78 -0
  33. package/dist/mcp/primitives/essential/tools/create-deck.tool.js.map +1 -0
  34. package/dist/mcp/primitives/essential/tools/create-model.tool.d.ts +3 -2
  35. package/dist/mcp/primitives/essential/tools/create-model.tool.js +2 -0
  36. package/dist/mcp/primitives/essential/tools/create-model.tool.js.map +1 -1
  37. package/dist/mcp/primitives/essential/tools/{deckActions/deckActions.tool.d.ts → deck-stats.tool.d.ts} +5 -12
  38. package/dist/mcp/primitives/essential/tools/deck-stats.tool.js +108 -0
  39. package/dist/mcp/primitives/essential/tools/deck-stats.tool.js.map +1 -0
  40. package/dist/mcp/primitives/essential/tools/deckActions/actions/changeDeck.action.d.ts +1 -1
  41. package/dist/mcp/primitives/essential/tools/deckActions/actions/createDeck.action.d.ts +1 -1
  42. package/dist/mcp/primitives/essential/tools/deckActions/actions/deckStats.action.d.ts +2 -2
  43. package/dist/mcp/primitives/essential/tools/deckActions/actions/listDecks.action.d.ts +2 -2
  44. package/dist/mcp/primitives/essential/tools/delete-media-file.tool.d.ts +106 -0
  45. package/dist/mcp/primitives/essential/tools/delete-media-file.tool.js +73 -0
  46. package/dist/mcp/primitives/essential/tools/delete-media-file.tool.js.map +1 -0
  47. package/dist/mcp/primitives/essential/tools/delete-notes.tool.d.ts +2 -1
  48. package/dist/mcp/primitives/essential/tools/delete-notes.tool.js +2 -1
  49. package/dist/mcp/primitives/essential/tools/delete-notes.tool.js.map +1 -1
  50. package/dist/mcp/primitives/essential/tools/find-notes.tool.d.ts +2 -1
  51. package/dist/mcp/primitives/essential/tools/find-notes.tool.js +2 -0
  52. package/dist/mcp/primitives/essential/tools/find-notes.tool.js.map +1 -1
  53. package/dist/mcp/primitives/essential/tools/get-cards.tool.d.ts +3 -2
  54. package/dist/mcp/primitives/essential/tools/get-cards.tool.js +2 -0
  55. package/dist/mcp/primitives/essential/tools/get-cards.tool.js.map +1 -1
  56. package/dist/mcp/primitives/essential/tools/get-due-cards.tool.d.ts +3 -2
  57. package/dist/mcp/primitives/essential/tools/get-due-cards.tool.js +2 -0
  58. package/dist/mcp/primitives/essential/tools/get-due-cards.tool.js.map +1 -1
  59. package/dist/mcp/primitives/essential/tools/get-media-files-names.tool.d.ts +106 -0
  60. package/dist/mcp/primitives/essential/tools/get-media-files-names.tool.js +76 -0
  61. package/dist/mcp/primitives/essential/tools/get-media-files-names.tool.js.map +1 -0
  62. package/dist/mcp/primitives/essential/tools/get-tags.tool.d.ts +2 -1
  63. package/dist/mcp/primitives/essential/tools/get-tags.tool.js +2 -0
  64. package/dist/mcp/primitives/essential/tools/get-tags.tool.js.map +1 -1
  65. package/dist/mcp/primitives/essential/tools/list-decks.tool.d.ts +106 -0
  66. package/dist/mcp/primitives/essential/tools/list-decks.tool.js +96 -0
  67. package/dist/mcp/primitives/essential/tools/list-decks.tool.js.map +1 -0
  68. package/dist/mcp/primitives/essential/tools/mediaActions/actions/deleteMediaFile.action.d.ts +1 -1
  69. package/dist/mcp/primitives/essential/tools/mediaActions/actions/deleteMediaFile.action.js +3 -2
  70. package/dist/mcp/primitives/essential/tools/mediaActions/actions/deleteMediaFile.action.js.map +1 -1
  71. package/dist/mcp/primitives/essential/tools/mediaActions/actions/getMediaFilesNames.action.d.ts +1 -1
  72. package/dist/mcp/primitives/essential/tools/mediaActions/actions/retrieveMediaFile.action.d.ts +1 -1
  73. package/dist/mcp/primitives/essential/tools/mediaActions/actions/retrieveMediaFile.action.js +3 -2
  74. package/dist/mcp/primitives/essential/tools/mediaActions/actions/retrieveMediaFile.action.js.map +1 -1
  75. package/dist/mcp/primitives/essential/tools/mediaActions/actions/storeMediaFile.action.d.ts +1 -1
  76. package/dist/mcp/primitives/essential/tools/mediaActions/actions/storeMediaFile.action.js +18 -4
  77. package/dist/mcp/primitives/essential/tools/mediaActions/actions/storeMediaFile.action.js.map +1 -1
  78. package/dist/mcp/primitives/essential/tools/model-field-names.tool.d.ts +2 -1
  79. package/dist/mcp/primitives/essential/tools/model-field-names.tool.js +2 -0
  80. package/dist/mcp/primitives/essential/tools/model-field-names.tool.js.map +1 -1
  81. package/dist/mcp/primitives/essential/tools/model-names.tool.d.ts +2 -1
  82. package/dist/mcp/primitives/essential/tools/model-names.tool.js +2 -0
  83. package/dist/mcp/primitives/essential/tools/model-names.tool.js.map +1 -1
  84. package/dist/mcp/primitives/essential/tools/model-styling.tool.d.ts +2 -1
  85. package/dist/mcp/primitives/essential/tools/model-styling.tool.js +2 -0
  86. package/dist/mcp/primitives/essential/tools/model-styling.tool.js.map +1 -1
  87. package/dist/mcp/primitives/essential/tools/notes-info.tool.d.ts +3 -2
  88. package/dist/mcp/primitives/essential/tools/notes-info.tool.js +2 -0
  89. package/dist/mcp/primitives/essential/tools/notes-info.tool.js.map +1 -1
  90. package/dist/mcp/primitives/essential/tools/present-card.tool.d.ts +3 -2
  91. package/dist/mcp/primitives/essential/tools/present-card.tool.js +2 -0
  92. package/dist/mcp/primitives/essential/tools/present-card.tool.js.map +1 -1
  93. package/dist/mcp/primitives/essential/tools/rate-card.tool.d.ts +2 -1
  94. package/dist/mcp/primitives/essential/tools/rate-card.tool.js +2 -0
  95. package/dist/mcp/primitives/essential/tools/rate-card.tool.js.map +1 -1
  96. package/dist/mcp/primitives/essential/tools/remove-tags.tool.d.ts +107 -0
  97. package/dist/mcp/primitives/essential/tools/remove-tags.tool.js +85 -0
  98. package/dist/mcp/primitives/essential/tools/remove-tags.tool.js.map +1 -0
  99. package/dist/mcp/primitives/essential/tools/replace-tags.tool.d.ts +108 -0
  100. package/dist/mcp/primitives/essential/tools/replace-tags.tool.js +92 -0
  101. package/dist/mcp/primitives/essential/tools/replace-tags.tool.js.map +1 -0
  102. package/dist/mcp/primitives/essential/tools/retrieve-media-file.tool.d.ts +106 -0
  103. package/dist/mcp/primitives/essential/tools/retrieve-media-file.tool.js +75 -0
  104. package/dist/mcp/primitives/essential/tools/retrieve-media-file.tool.js.map +1 -0
  105. package/dist/mcp/primitives/essential/tools/review-stats/review-stats.tool.d.ts +2 -1
  106. package/dist/mcp/primitives/essential/tools/review-stats/review-stats.tool.js +2 -0
  107. package/dist/mcp/primitives/essential/tools/review-stats/review-stats.tool.js.map +1 -1
  108. package/dist/mcp/primitives/essential/tools/review-stats/review-stats.types.d.ts +1 -1
  109. package/dist/mcp/primitives/essential/tools/{mediaActions/mediaActions.tool.d.ts → store-media-file.tool.d.ts} +5 -8
  110. package/dist/mcp/primitives/essential/tools/store-media-file.tool.js +92 -0
  111. package/dist/mcp/primitives/essential/tools/store-media-file.tool.js.map +1 -0
  112. package/dist/mcp/primitives/essential/tools/sync.tool.d.ts +2 -1
  113. package/dist/mcp/primitives/essential/tools/sync.tool.js +2 -0
  114. package/dist/mcp/primitives/essential/tools/sync.tool.js.map +1 -1
  115. package/dist/mcp/primitives/essential/tools/tagActions/actions/addTags.action.d.ts +1 -1
  116. package/dist/mcp/primitives/essential/tools/tagActions/actions/clearUnusedTags.action.d.ts +1 -1
  117. package/dist/mcp/primitives/essential/tools/tagActions/actions/removeTags.action.d.ts +1 -1
  118. package/dist/mcp/primitives/essential/tools/tagActions/actions/replaceTags.action.d.ts +1 -1
  119. package/dist/mcp/primitives/essential/tools/update-model-styling.tool.d.ts +2 -1
  120. package/dist/mcp/primitives/essential/tools/update-model-styling.tool.js +2 -0
  121. package/dist/mcp/primitives/essential/tools/update-model-styling.tool.js.map +1 -1
  122. package/dist/mcp/primitives/essential/tools/update-note-fields.tool.d.ts +2 -1
  123. package/dist/mcp/primitives/essential/tools/update-note-fields.tool.js +19 -0
  124. package/dist/mcp/primitives/essential/tools/update-note-fields.tool.js.map +1 -1
  125. package/dist/mcp/primitives/gui/tools/gui-add-cards.tool.d.ts +2 -1
  126. package/dist/mcp/primitives/gui/tools/gui-add-cards.tool.js +3 -1
  127. package/dist/mcp/primitives/gui/tools/gui-add-cards.tool.js.map +1 -1
  128. package/dist/mcp/primitives/gui/tools/gui-browse.tool.d.ts +2 -1
  129. package/dist/mcp/primitives/gui/tools/gui-browse.tool.js +2 -0
  130. package/dist/mcp/primitives/gui/tools/gui-browse.tool.js.map +1 -1
  131. package/dist/mcp/primitives/gui/tools/gui-current-card.tool.d.ts +3 -2
  132. package/dist/mcp/primitives/gui/tools/gui-current-card.tool.js +2 -0
  133. package/dist/mcp/primitives/gui/tools/gui-current-card.tool.js.map +1 -1
  134. package/dist/mcp/primitives/gui/tools/gui-deck-browser.tool.d.ts +2 -1
  135. package/dist/mcp/primitives/gui/tools/gui-deck-browser.tool.js +2 -0
  136. package/dist/mcp/primitives/gui/tools/gui-deck-browser.tool.js.map +1 -1
  137. package/dist/mcp/primitives/gui/tools/gui-deck-overview.tool.d.ts +2 -1
  138. package/dist/mcp/primitives/gui/tools/gui-deck-overview.tool.js +2 -0
  139. package/dist/mcp/primitives/gui/tools/gui-deck-overview.tool.js.map +1 -1
  140. package/dist/mcp/primitives/gui/tools/gui-edit-note.tool.d.ts +2 -1
  141. package/dist/mcp/primitives/gui/tools/gui-edit-note.tool.js +2 -0
  142. package/dist/mcp/primitives/gui/tools/gui-edit-note.tool.js.map +1 -1
  143. package/dist/mcp/primitives/gui/tools/gui-select-card.tool.d.ts +2 -1
  144. package/dist/mcp/primitives/gui/tools/gui-select-card.tool.js +2 -0
  145. package/dist/mcp/primitives/gui/tools/gui-select-card.tool.js.map +1 -1
  146. package/dist/mcp/primitives/gui/tools/gui-selected-notes.tool.d.ts +2 -1
  147. package/dist/mcp/primitives/gui/tools/gui-selected-notes.tool.js +2 -0
  148. package/dist/mcp/primitives/gui/tools/gui-selected-notes.tool.js.map +1 -1
  149. package/dist/mcp/primitives/gui/tools/gui-show-answer.tool.d.ts +2 -1
  150. package/dist/mcp/primitives/gui/tools/gui-show-answer.tool.js +2 -0
  151. package/dist/mcp/primitives/gui/tools/gui-show-answer.tool.js.map +1 -1
  152. package/dist/mcp/primitives/gui/tools/gui-show-question.tool.d.ts +2 -1
  153. package/dist/mcp/primitives/gui/tools/gui-show-question.tool.js +2 -0
  154. package/dist/mcp/primitives/gui/tools/gui-show-question.tool.js.map +1 -1
  155. package/dist/mcp/primitives/gui/tools/gui-undo.tool.d.ts +2 -1
  156. package/dist/mcp/primitives/gui/tools/gui-undo.tool.js +2 -0
  157. package/dist/mcp/primitives/gui/tools/gui-undo.tool.js.map +1 -1
  158. package/dist/mcp/utils/media-validation.utils.d.ts +33 -0
  159. package/dist/mcp/utils/media-validation.utils.js +208 -0
  160. package/dist/mcp/utils/media-validation.utils.js.map +1 -0
  161. package/dist/tsconfig.build.tsbuildinfo +1 -1
  162. package/package.json +24 -19
  163. package/dist/mcp/primitives/essential/tools/deckActions/deckActions.tool.js +0 -208
  164. package/dist/mcp/primitives/essential/tools/deckActions/deckActions.tool.js.map +0 -1
  165. package/dist/mcp/primitives/essential/tools/deckActions/index.d.ts +0 -5
  166. package/dist/mcp/primitives/essential/tools/deckActions/index.js +0 -6
  167. package/dist/mcp/primitives/essential/tools/deckActions/index.js.map +0 -1
  168. package/dist/mcp/primitives/essential/tools/mediaActions/index.d.ts +0 -5
  169. package/dist/mcp/primitives/essential/tools/mediaActions/index.js +0 -6
  170. package/dist/mcp/primitives/essential/tools/mediaActions/index.js.map +0 -1
  171. package/dist/mcp/primitives/essential/tools/mediaActions/mediaActions.tool.js +0 -156
  172. package/dist/mcp/primitives/essential/tools/mediaActions/mediaActions.tool.js.map +0 -1
  173. package/dist/mcp/primitives/essential/tools/tagActions/index.d.ts +0 -5
  174. package/dist/mcp/primitives/essential/tools/tagActions/index.js +0 -6
  175. package/dist/mcp/primitives/essential/tools/tagActions/index.js.map +0 -1
  176. package/dist/mcp/primitives/essential/tools/tagActions/tagActions.tool.js +0 -151
  177. package/dist/mcp/primitives/essential/tools/tagActions/tagActions.tool.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"get-due-cards.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/get-due-cards.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-due-cards.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/get-due-cards.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,8CAAuC;AAEvC,6BAAwB;AACxB,8EAAsE;AAEtE,0DAGgC;AAMzB,IAAM,eAAe,uBAArB,MAAM,eAAe;IAGG;IAFZ,MAAM,GAAG,IAAI,eAAM,CAAC,iBAAe,CAAC,IAAI,CAAC,CAAC;IAE3D,YAA6B,UAA6B;QAA7B,eAAU,GAAV,UAAU,CAAmB;IAAG,CAAC;IAuDxD,AAAN,KAAK,CAAC,WAAW,CACf,EACE,SAAS,EACT,KAAK,EACL,gBAAgB,GAAG,IAAI,EACvB,WAAW,GAAG,KAAK,GAMpB,EACD,OAAgB;QAEhB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAE5C,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,gCAAgC,SAAS,IAAI,KAAK,YAAY,SAAS,EAAE,CAC1E,CAAC;YACF,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAI3D,MAAM,MAAM,GAAa,CAAC,QAAQ,CAAC,CAAC;YACpC,IAAI,gBAAgB,EAAE,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1B,CAAC;YACD,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;YAED,IAAI,KAAK,GAAG,kBAAkB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;YACrD,IAAI,SAAS,EAAE,CAAC;gBAEd,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACvD,KAAK,GAAG,SAAS,eAAe,KAAK,KAAK,EAAE,CAAC;YAC/C,CAAC;YAGD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAW,WAAW,EAAE;gBAClE,KAAK;aACN,CAAC,CAAC;YAEH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;gBACtC,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC5D,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,6BAA6B;oBACtC,KAAK,EAAE,EAAE;oBACT,KAAK,EAAE,CAAC;iBACT,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAG3D,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YAGpD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAa,WAAW,EAAE;gBACtE,KAAK,EAAE,eAAe;aACvB,CAAC,CAAC;YAGH,MAAM,QAAQ,GAAqB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACxD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAA,+BAAkB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAExD,OAAO;oBACL,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE;oBACnC,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE;oBAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;oBAClB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC;oBAC5B,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI;iBAC5B,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,aAAa,QAAQ,CAAC,MAAM,qBAAqB,OAAO,CAAC,MAAM,QAAQ,CACxE,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,QAAQ;gBACf,KAAK,EAAE,OAAO,CAAC,MAAM;gBACrB,QAAQ,EAAE,QAAQ,CAAC,MAAM;gBACzB,OAAO,EAAE,SAAS,OAAO,CAAC,MAAM,yBAAyB,QAAQ,CAAC,MAAM,EAAE;aAC3E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YACpD,OAAO,IAAA,gCAAmB,EAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;CACF,CAAA;AA5JY,0CAAe;AA0DpB;IArDL,IAAA,eAAI,EAAC;QACJ,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,wMAAwM;QAC1M,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC;YACnB,SAAS,EAAE,OAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,mFAAmF,CACpF;YACH,KAAK,EAAE,OAAC;iBACL,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,EAAE,CAAC;iBACP,OAAO,CAAC,EAAE,CAAC;iBACX,QAAQ,CAAC,mCAAmC,CAAC;YAChD,gBAAgB,EAAE,OAAC;iBAChB,OAAO,EAAE;iBACT,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CACP,6EAA6E,CAC9E;YACH,WAAW,EAAE,OAAC;iBACX,OAAO,EAAE;iBACT,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,uDAAuD,CAAC;SACrE,CAAC;QACF,YAAY,EAAE,OAAC,CAAC,MAAM,CAAC;YACrB,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE;YACpB,KAAK,EAAE,OAAC,CAAC,KAAK,CACZ,OAAC,CAAC,MAAM,CAAC;gBACP,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;gBAClB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE;gBACjB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;gBAChB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;gBACpB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;gBACrB,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE;gBACf,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;gBACpB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;aACnB,CAAC,CACH;YACD,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE;YACjB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC/B,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;SACpB,CAAC;QACF,WAAW,EAAE;YACX,KAAK,EAAE,eAAe;YACtB,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;SACrB;KACF,CAAC;;;;kDAkGD;0BA3JU,eAAe;IAD3B,IAAA,mBAAU,GAAE;qCAI8B,uCAAiB;GAH/C,eAAe,CA4J3B"}
@@ -0,0 +1,106 @@
1
+ import type { Context } from "@rekog/mcp-nest";
2
+ import { AnkiConnectClient } from "../../../clients/anki-connect.client";
3
+ export declare class GetMediaFilesNamesTool {
4
+ private readonly ankiClient;
5
+ private readonly logger;
6
+ constructor(ankiClient: AnkiConnectClient);
7
+ execute(params: {
8
+ pattern?: string;
9
+ }, context: Context): Promise<{
10
+ [x: string]: unknown;
11
+ content: ({
12
+ type: "text";
13
+ text: string;
14
+ annotations?: {
15
+ audience?: ("user" | "assistant")[] | undefined;
16
+ priority?: number | undefined;
17
+ lastModified?: string | undefined;
18
+ } | undefined;
19
+ _meta?: {
20
+ [x: string]: unknown;
21
+ } | undefined;
22
+ } | {
23
+ type: "image";
24
+ data: string;
25
+ mimeType: string;
26
+ annotations?: {
27
+ audience?: ("user" | "assistant")[] | undefined;
28
+ priority?: number | undefined;
29
+ lastModified?: string | undefined;
30
+ } | undefined;
31
+ _meta?: {
32
+ [x: string]: unknown;
33
+ } | undefined;
34
+ } | {
35
+ type: "audio";
36
+ data: string;
37
+ mimeType: string;
38
+ annotations?: {
39
+ audience?: ("user" | "assistant")[] | undefined;
40
+ priority?: number | undefined;
41
+ lastModified?: string | undefined;
42
+ } | undefined;
43
+ _meta?: {
44
+ [x: string]: unknown;
45
+ } | undefined;
46
+ } | {
47
+ uri: string;
48
+ name: string;
49
+ type: "resource_link";
50
+ description?: string | undefined;
51
+ mimeType?: string | undefined;
52
+ size?: number | undefined;
53
+ annotations?: {
54
+ audience?: ("user" | "assistant")[] | undefined;
55
+ priority?: number | undefined;
56
+ lastModified?: string | undefined;
57
+ } | undefined;
58
+ _meta?: {
59
+ [x: string]: unknown;
60
+ } | undefined;
61
+ icons?: {
62
+ src: string;
63
+ mimeType?: string | undefined;
64
+ sizes?: string[] | undefined;
65
+ theme?: "light" | "dark" | undefined;
66
+ }[] | undefined;
67
+ title?: string | undefined;
68
+ } | {
69
+ type: "resource";
70
+ resource: {
71
+ uri: string;
72
+ text: string;
73
+ mimeType?: string | undefined;
74
+ _meta?: {
75
+ [x: string]: unknown;
76
+ } | undefined;
77
+ } | {
78
+ uri: string;
79
+ blob: string;
80
+ mimeType?: string | undefined;
81
+ _meta?: {
82
+ [x: string]: unknown;
83
+ } | undefined;
84
+ };
85
+ annotations?: {
86
+ audience?: ("user" | "assistant")[] | undefined;
87
+ priority?: number | undefined;
88
+ lastModified?: string | undefined;
89
+ } | undefined;
90
+ _meta?: {
91
+ [x: string]: unknown;
92
+ } | undefined;
93
+ })[];
94
+ _meta?: {
95
+ [x: string]: unknown;
96
+ progressToken?: string | number | undefined;
97
+ "io.modelcontextprotocol/related-task"?: {
98
+ taskId: string;
99
+ } | undefined;
100
+ } | undefined;
101
+ structuredContent?: {
102
+ [x: string]: unknown;
103
+ } | undefined;
104
+ isError?: boolean | undefined;
105
+ } | import("./mediaActions/actions/getMediaFilesNames.action").GetMediaFilesNamesResult>;
106
+ }
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var GetMediaFilesNamesTool_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.GetMediaFilesNamesTool = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const mcp_nest_1 = require("@rekog/mcp-nest");
16
+ const zod_1 = require("zod");
17
+ const anki_connect_client_1 = require("../../../clients/anki-connect.client");
18
+ const anki_utils_1 = require("../../../utils/anki.utils");
19
+ const getMediaFilesNames_action_1 = require("./mediaActions/actions/getMediaFilesNames.action");
20
+ let GetMediaFilesNamesTool = GetMediaFilesNamesTool_1 = class GetMediaFilesNamesTool {
21
+ ankiClient;
22
+ logger = new common_1.Logger(GetMediaFilesNamesTool_1.name);
23
+ constructor(ankiClient) {
24
+ this.ankiClient = ankiClient;
25
+ }
26
+ async execute(params, context) {
27
+ try {
28
+ this.logger.log(`Executing getMediaFilesNames${params.pattern ? ` (pattern: ${params.pattern})` : ""}`);
29
+ await context.reportProgress({ progress: 50, total: 100 });
30
+ const result = await (0, getMediaFilesNames_action_1.getMediaFilesNames)({ pattern: params.pattern }, this.ankiClient);
31
+ await context.reportProgress({ progress: 100, total: 100 });
32
+ return result;
33
+ }
34
+ catch (error) {
35
+ this.logger.error("Failed to execute getMediaFilesNames", error);
36
+ return (0, anki_utils_1.createErrorResponse)(error, {
37
+ action: "getMediaFilesNames",
38
+ hint: "Make sure Anki is running",
39
+ });
40
+ }
41
+ }
42
+ };
43
+ exports.GetMediaFilesNamesTool = GetMediaFilesNamesTool;
44
+ __decorate([
45
+ (0, mcp_nest_1.Tool)({
46
+ name: "getMediaFilesNames",
47
+ description: "List media files in Anki's collection.media folder, optionally filtered by a glob-style pattern.",
48
+ parameters: zod_1.z.object({
49
+ pattern: zod_1.z
50
+ .string()
51
+ .optional()
52
+ .describe('Optional filter pattern (e.g., "*.mp3")'),
53
+ }),
54
+ outputSchema: zod_1.z.object({
55
+ success: zod_1.z.boolean(),
56
+ files: zod_1.z.array(zod_1.z.string()),
57
+ count: zod_1.z.number(),
58
+ message: zod_1.z.string(),
59
+ pattern: zod_1.z.string().optional(),
60
+ }),
61
+ annotations: {
62
+ title: "List Media Files",
63
+ readOnlyHint: true,
64
+ destructiveHint: false,
65
+ idempotentHint: true,
66
+ },
67
+ }),
68
+ __metadata("design:type", Function),
69
+ __metadata("design:paramtypes", [Object, Object]),
70
+ __metadata("design:returntype", Promise)
71
+ ], GetMediaFilesNamesTool.prototype, "execute", null);
72
+ exports.GetMediaFilesNamesTool = GetMediaFilesNamesTool = GetMediaFilesNamesTool_1 = __decorate([
73
+ (0, common_1.Injectable)(),
74
+ __metadata("design:paramtypes", [anki_connect_client_1.AnkiConnectClient])
75
+ ], GetMediaFilesNamesTool);
76
+ //# sourceMappingURL=get-media-files-names.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-media-files-names.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/get-media-files-names.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,8CAAuC;AAEvC,6BAAwB;AACxB,8EAAsE;AACtE,0DAA6D;AAC7D,gGAAsF;AAG/E,IAAM,sBAAsB,8BAA5B,MAAM,sBAAsB;IAGJ;IAFZ,MAAM,GAAG,IAAI,eAAM,CAAC,wBAAsB,CAAC,IAAI,CAAC,CAAC;IAElE,YAA6B,UAA6B;QAA7B,eAAU,GAAV,UAAU,CAAmB;IAAG,CAAC;IA0BxD,AAAN,KAAK,CAAC,OAAO,CAAC,MAA4B,EAAE,OAAgB;QAC1D,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,+BAA+B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACvF,CAAC;YACF,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAE3D,MAAM,MAAM,GAAG,MAAM,IAAA,8CAAkB,EACrC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAC3B,IAAI,CAAC,UAAU,CAChB,CAAC;YAEF,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAC5D,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;YACjE,OAAO,IAAA,gCAAmB,EAAC,KAAK,EAAE;gBAChC,MAAM,EAAE,oBAAoB;gBAC5B,IAAI,EAAE,2BAA2B;aAClC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF,CAAA;AAnDY,wDAAsB;AA6B3B;IAxBL,IAAA,eAAI,EAAC;QACJ,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EACT,kGAAkG;QACpG,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC;YACnB,OAAO,EAAE,OAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,yCAAyC,CAAC;SACvD,CAAC;QACF,YAAY,EAAE,OAAC,CAAC,MAAM,CAAC;YACrB,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE;YACpB,KAAK,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC;YAC1B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE;YACjB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;YACnB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC/B,CAAC;QACF,WAAW,EAAE;YACX,KAAK,EAAE,kBAAkB;YACzB,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;SACrB;KACF,CAAC;;;;qDAsBD;iCAlDU,sBAAsB;IADlC,IAAA,mBAAU,GAAE;qCAI8B,uCAAiB;GAH/C,sBAAsB,CAmDlC"}
@@ -1,5 +1,5 @@
1
1
  import type { Context } from "@rekog/mcp-nest";
2
- import { AnkiConnectClient } from "@/mcp/clients/anki-connect.client";
2
+ import { AnkiConnectClient } from "../../../clients/anki-connect.client";
3
3
  export declare class GetTagsTool {
4
4
  private readonly ankiClient;
5
5
  private readonly logger;
@@ -49,6 +49,7 @@ export declare class GetTagsTool {
49
49
  type: "resource_link";
50
50
  description?: string | undefined;
51
51
  mimeType?: string | undefined;
52
+ size?: number | undefined;
52
53
  annotations?: {
53
54
  audience?: ("user" | "assistant")[] | undefined;
54
55
  priority?: number | undefined;
@@ -83,8 +83,10 @@ __decorate([
83
83
  totalUnfiltered: zod_1.z.number().optional(),
84
84
  }),
85
85
  annotations: {
86
+ title: "List Tags",
86
87
  readOnlyHint: true,
87
88
  destructiveHint: false,
89
+ idempotentHint: true,
88
90
  },
89
91
  }),
90
92
  __metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"file":"get-tags.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/get-tags.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-tags.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/get-tags.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ import type { Context } from "@rekog/mcp-nest";
2
+ import { AnkiConnectClient } from "../../../clients/anki-connect.client";
3
+ export declare class ListDecksTool {
4
+ private readonly ankiClient;
5
+ private readonly logger;
6
+ constructor(ankiClient: AnkiConnectClient);
7
+ execute(params: {
8
+ includeStats?: boolean;
9
+ }, context: Context): Promise<{
10
+ [x: string]: unknown;
11
+ content: ({
12
+ type: "text";
13
+ text: string;
14
+ annotations?: {
15
+ audience?: ("user" | "assistant")[] | undefined;
16
+ priority?: number | undefined;
17
+ lastModified?: string | undefined;
18
+ } | undefined;
19
+ _meta?: {
20
+ [x: string]: unknown;
21
+ } | undefined;
22
+ } | {
23
+ type: "image";
24
+ data: string;
25
+ mimeType: string;
26
+ annotations?: {
27
+ audience?: ("user" | "assistant")[] | undefined;
28
+ priority?: number | undefined;
29
+ lastModified?: string | undefined;
30
+ } | undefined;
31
+ _meta?: {
32
+ [x: string]: unknown;
33
+ } | undefined;
34
+ } | {
35
+ type: "audio";
36
+ data: string;
37
+ mimeType: string;
38
+ annotations?: {
39
+ audience?: ("user" | "assistant")[] | undefined;
40
+ priority?: number | undefined;
41
+ lastModified?: string | undefined;
42
+ } | undefined;
43
+ _meta?: {
44
+ [x: string]: unknown;
45
+ } | undefined;
46
+ } | {
47
+ uri: string;
48
+ name: string;
49
+ type: "resource_link";
50
+ description?: string | undefined;
51
+ mimeType?: string | undefined;
52
+ size?: number | undefined;
53
+ annotations?: {
54
+ audience?: ("user" | "assistant")[] | undefined;
55
+ priority?: number | undefined;
56
+ lastModified?: string | undefined;
57
+ } | undefined;
58
+ _meta?: {
59
+ [x: string]: unknown;
60
+ } | undefined;
61
+ icons?: {
62
+ src: string;
63
+ mimeType?: string | undefined;
64
+ sizes?: string[] | undefined;
65
+ theme?: "light" | "dark" | undefined;
66
+ }[] | undefined;
67
+ title?: string | undefined;
68
+ } | {
69
+ type: "resource";
70
+ resource: {
71
+ uri: string;
72
+ text: string;
73
+ mimeType?: string | undefined;
74
+ _meta?: {
75
+ [x: string]: unknown;
76
+ } | undefined;
77
+ } | {
78
+ uri: string;
79
+ blob: string;
80
+ mimeType?: string | undefined;
81
+ _meta?: {
82
+ [x: string]: unknown;
83
+ } | undefined;
84
+ };
85
+ annotations?: {
86
+ audience?: ("user" | "assistant")[] | undefined;
87
+ priority?: number | undefined;
88
+ lastModified?: string | undefined;
89
+ } | undefined;
90
+ _meta?: {
91
+ [x: string]: unknown;
92
+ } | undefined;
93
+ })[];
94
+ _meta?: {
95
+ [x: string]: unknown;
96
+ progressToken?: string | number | undefined;
97
+ "io.modelcontextprotocol/related-task"?: {
98
+ taskId: string;
99
+ } | undefined;
100
+ } | undefined;
101
+ structuredContent?: {
102
+ [x: string]: unknown;
103
+ } | undefined;
104
+ isError?: boolean | undefined;
105
+ } | import("./deckActions/actions/listDecks.action").ListDecksResult>;
106
+ }
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var ListDecksTool_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.ListDecksTool = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const mcp_nest_1 = require("@rekog/mcp-nest");
16
+ const zod_1 = require("zod");
17
+ const anki_connect_client_1 = require("../../../clients/anki-connect.client");
18
+ const anki_utils_1 = require("../../../utils/anki.utils");
19
+ const listDecks_action_1 = require("./deckActions/actions/listDecks.action");
20
+ let ListDecksTool = ListDecksTool_1 = class ListDecksTool {
21
+ ankiClient;
22
+ logger = new common_1.Logger(ListDecksTool_1.name);
23
+ constructor(ankiClient) {
24
+ this.ankiClient = ankiClient;
25
+ }
26
+ async execute(params, context) {
27
+ try {
28
+ this.logger.log("Executing listDecks");
29
+ await context.reportProgress({ progress: 10, total: 100 });
30
+ const result = await (0, listDecks_action_1.listDecks)({ includeStats: params.includeStats }, this.ankiClient);
31
+ await context.reportProgress({ progress: 100, total: 100 });
32
+ return result;
33
+ }
34
+ catch (error) {
35
+ this.logger.error("Failed to execute listDecks", error);
36
+ return (0, anki_utils_1.createErrorResponse)(error, {
37
+ action: "listDecks",
38
+ hint: "Make sure Anki is running",
39
+ });
40
+ }
41
+ }
42
+ };
43
+ exports.ListDecksTool = ListDecksTool;
44
+ __decorate([
45
+ (0, mcp_nest_1.Tool)({
46
+ name: "listDecks",
47
+ description: "List all Anki decks, optionally with card count statistics for each deck. Remember to sync first at the start of a session for latest data.",
48
+ parameters: zod_1.z.object({
49
+ includeStats: zod_1.z
50
+ .boolean()
51
+ .optional()
52
+ .describe("Include card count statistics for each deck"),
53
+ }),
54
+ outputSchema: zod_1.z.object({
55
+ success: zod_1.z.boolean(),
56
+ decks: zod_1.z.array(zod_1.z.object({
57
+ name: zod_1.z.string(),
58
+ stats: zod_1.z
59
+ .object({
60
+ deck_id: zod_1.z.number(),
61
+ name: zod_1.z.string(),
62
+ new_count: zod_1.z.number(),
63
+ learn_count: zod_1.z.number(),
64
+ review_count: zod_1.z.number(),
65
+ total_new: zod_1.z.number(),
66
+ total_cards: zod_1.z.number(),
67
+ })
68
+ .optional(),
69
+ })),
70
+ total: zod_1.z.number(),
71
+ summary: zod_1.z
72
+ .object({
73
+ total_cards: zod_1.z.number(),
74
+ new_cards: zod_1.z.number(),
75
+ learning_cards: zod_1.z.number(),
76
+ review_cards: zod_1.z.number(),
77
+ })
78
+ .optional(),
79
+ message: zod_1.z.string().optional(),
80
+ }),
81
+ annotations: {
82
+ title: "List Decks",
83
+ readOnlyHint: true,
84
+ destructiveHint: false,
85
+ idempotentHint: true,
86
+ },
87
+ }),
88
+ __metadata("design:type", Function),
89
+ __metadata("design:paramtypes", [Object, Object]),
90
+ __metadata("design:returntype", Promise)
91
+ ], ListDecksTool.prototype, "execute", null);
92
+ exports.ListDecksTool = ListDecksTool = ListDecksTool_1 = __decorate([
93
+ (0, common_1.Injectable)(),
94
+ __metadata("design:paramtypes", [anki_connect_client_1.AnkiConnectClient])
95
+ ], ListDecksTool);
96
+ //# sourceMappingURL=list-decks.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-decks.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/list-decks.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,8CAAuC;AAEvC,6BAAwB;AACxB,8EAAsE;AACtE,0DAA6D;AAC7D,6EAAmE;AAG5D,IAAM,aAAa,qBAAnB,MAAM,aAAa;IAGK;IAFZ,MAAM,GAAG,IAAI,eAAM,CAAC,eAAa,CAAC,IAAI,CAAC,CAAC;IAEzD,YAA6B,UAA6B;QAA7B,eAAU,GAAV,UAAU,CAAmB;IAAG,CAAC;IAgDxD,AAAN,KAAK,CAAC,OAAO,CAAC,MAAkC,EAAE,OAAgB;QAChE,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACvC,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAE3D,MAAM,MAAM,GAAG,MAAM,IAAA,4BAAS,EAC5B,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,EACrC,IAAI,CAAC,UAAU,CAChB,CAAC;YAEF,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAC5D,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACxD,OAAO,IAAA,gCAAmB,EAAC,KAAK,EAAE;gBAChC,MAAM,EAAE,WAAW;gBACnB,IAAI,EAAE,2BAA2B;aAClC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF,CAAA;AAvEY,sCAAa;AAmDlB;IA9CL,IAAA,eAAI,EAAC;QACJ,IAAI,EAAE,WAAW;QACjB,WAAW,EACT,6IAA6I;QAC/I,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC;YACnB,YAAY,EAAE,OAAC;iBACZ,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,6CAA6C,CAAC;SAC3D,CAAC;QACF,YAAY,EAAE,OAAC,CAAC,MAAM,CAAC;YACrB,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE;YACpB,KAAK,EAAE,OAAC,CAAC,KAAK,CACZ,OAAC,CAAC,MAAM,CAAC;gBACP,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;gBAChB,KAAK,EAAE,OAAC;qBACL,MAAM,CAAC;oBACN,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;oBACnB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;oBAChB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;oBACrB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE;oBACvB,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE;oBACxB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;oBACrB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE;iBACxB,CAAC;qBACD,QAAQ,EAAE;aACd,CAAC,CACH;YACD,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE;YACjB,OAAO,EAAE,OAAC;iBACP,MAAM,CAAC;gBACN,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE;gBACvB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;gBACrB,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE;gBAC1B,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE;aACzB,CAAC;iBACD,QAAQ,EAAE;YACb,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC/B,CAAC;QACF,WAAW,EAAE;YACX,KAAK,EAAE,YAAY;YACnB,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;SACrB;KACF,CAAC;;;;4CAoBD;wBAtEU,aAAa;IADzB,IAAA,mBAAU,GAAE;qCAI8B,uCAAiB;GAH/C,aAAa,CAuEzB"}
@@ -1,4 +1,4 @@
1
- import { AnkiConnectClient } from "@/mcp/clients/anki-connect.client";
1
+ import { AnkiConnectClient } from "../../../../../clients/anki-connect.client";
2
2
  export interface DeleteMediaFileParams {
3
3
  filename: string;
4
4
  }
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.deleteMediaFile = deleteMediaFile;
4
+ const media_validation_utils_1 = require("../../../../../utils/media-validation.utils");
4
5
  async function deleteMediaFile(params, client) {
5
- const { filename } = params;
6
- if (!filename || filename.trim() === "") {
6
+ if (!params.filename || params.filename.trim() === "") {
7
7
  throw new Error("Filename cannot be empty");
8
8
  }
9
+ const filename = (0, media_validation_utils_1.sanitizeMediaFilename)(params.filename);
9
10
  await client.invoke("deleteMediaFile", {
10
11
  filename,
11
12
  });
@@ -1 +1 @@
1
- {"version":3,"file":"deleteMediaFile.action.js","sourceRoot":"","sources":["../../../../../../../src/mcp/primitives/essential/tools/mediaActions/actions/deleteMediaFile.action.ts"],"names":[],"mappings":";;AAsBA,0CAqBC;AArBM,KAAK,UAAU,eAAe,CACnC,MAA6B,EAC7B,MAAyB;IAEzB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAG5B,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAGD,MAAM,MAAM,CAAC,MAAM,CAAO,iBAAiB,EAAE;QAC3C,QAAQ;KACT,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,IAAI;QACb,QAAQ;QACR,OAAO,EAAE,oCAAoC,QAAQ,EAAE;KACxD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"deleteMediaFile.action.js","sourceRoot":"","sources":["../../../../../../../src/mcp/primitives/essential/tools/mediaActions/actions/deleteMediaFile.action.ts"],"names":[],"mappings":";;AAuBA,0CAsBC;AA5CD,wFAA2E;AAsBpE,KAAK,UAAU,eAAe,CACnC,MAA6B,EAC7B,MAAyB;IAGzB,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAGD,MAAM,QAAQ,GAAG,IAAA,8CAAqB,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAGxD,MAAM,MAAM,CAAC,MAAM,CAAO,iBAAiB,EAAE;QAC3C,QAAQ;KACT,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,IAAI;QACb,QAAQ;QACR,OAAO,EAAE,oCAAoC,QAAQ,EAAE;KACxD,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
- import { AnkiConnectClient } from "@/mcp/clients/anki-connect.client";
1
+ import { AnkiConnectClient } from "../../../../../clients/anki-connect.client";
2
2
  export interface GetMediaFilesNamesParams {
3
3
  pattern?: string;
4
4
  }
@@ -1,4 +1,4 @@
1
- import { AnkiConnectClient } from "@/mcp/clients/anki-connect.client";
1
+ import { AnkiConnectClient } from "../../../../../clients/anki-connect.client";
2
2
  export interface RetrieveMediaFileParams {
3
3
  filename: string;
4
4
  }
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.retrieveMediaFile = retrieveMediaFile;
4
+ const media_validation_utils_1 = require("../../../../../utils/media-validation.utils");
4
5
  async function retrieveMediaFile(params, client) {
5
- const { filename } = params;
6
- if (!filename || filename.trim() === "") {
6
+ if (!params.filename || params.filename.trim() === "") {
7
7
  throw new Error("Filename cannot be empty");
8
8
  }
9
+ const filename = (0, media_validation_utils_1.sanitizeMediaFilename)(params.filename);
9
10
  const result = await client.invoke("retrieveMediaFile", {
10
11
  filename,
11
12
  });
@@ -1 +1 @@
1
- {"version":3,"file":"retrieveMediaFile.action.js","sourceRoot":"","sources":["../../../../../../../src/mcp/primitives/essential/tools/mediaActions/actions/retrieveMediaFile.action.ts"],"names":[],"mappings":";;AAyBA,8CAkCC;AAlCM,KAAK,UAAU,iBAAiB,CACrC,MAA+B,EAC/B,MAAyB;IAEzB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAG5B,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAGD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAiB,mBAAmB,EAAE;QACtE,QAAQ;KACT,CAAC,CAAC;IAGH,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,QAAQ;YACR,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,yBAAyB,QAAQ,EAAE;YAC5C,KAAK,EAAE,KAAK;SACb,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,QAAQ;QACR,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,sCAAsC,QAAQ,EAAE;QACzD,KAAK,EAAE,IAAI;KACZ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"retrieveMediaFile.action.js","sourceRoot":"","sources":["../../../../../../../src/mcp/primitives/essential/tools/mediaActions/actions/retrieveMediaFile.action.ts"],"names":[],"mappings":";;AA0BA,8CAmCC;AA5DD,wFAA2E;AAyBpE,KAAK,UAAU,iBAAiB,CACrC,MAA+B,EAC/B,MAAyB;IAGzB,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAGD,MAAM,QAAQ,GAAG,IAAA,8CAAqB,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAGxD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAiB,mBAAmB,EAAE;QACtE,QAAQ;KACT,CAAC,CAAC;IAGH,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,QAAQ;YACR,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,yBAAyB,QAAQ,EAAE;YAC5C,KAAK,EAAE,KAAK;SACb,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,QAAQ;QACR,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,sCAAsC,QAAQ,EAAE;QACzD,KAAK,EAAE,IAAI;KACZ,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
- import { AnkiConnectClient } from "@/mcp/clients/anki-connect.client";
1
+ import { AnkiConnectClient } from "../../../../../clients/anki-connect.client";
2
2
  export interface StoreMediaFileParams {
3
3
  filename: string;
4
4
  data?: string;
@@ -1,8 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.storeMediaFile = storeMediaFile;
4
+ const common_1 = require("@nestjs/common");
5
+ const media_validation_utils_1 = require("../../../../../utils/media-validation.utils");
6
+ const logger = new common_1.Logger("storeMediaFile");
4
7
  async function storeMediaFile(params, client) {
5
- const { filename, data, path, url, deleteExisting = true } = params;
8
+ const { data, path, url, deleteExisting = true } = params;
6
9
  if (!data && !path && !url) {
7
10
  throw new Error("Must provide either data, path, or url parameter");
8
11
  }
@@ -10,9 +13,20 @@ async function storeMediaFile(params, client) {
10
13
  if (sources.length > 1) {
11
14
  throw new Error("Cannot provide multiple sources (data, path, url). Choose one.");
12
15
  }
13
- if (!filename || filename.trim() === "") {
16
+ if (!params.filename || params.filename.trim() === "") {
14
17
  throw new Error("Filename cannot be empty");
15
18
  }
19
+ const filename = (0, media_validation_utils_1.sanitizeMediaFilename)(params.filename);
20
+ let validatedPath;
21
+ if (path) {
22
+ const { resolvedPath, mimeType } = (0, media_validation_utils_1.validateMediaFilePath)(path, (0, media_validation_utils_1.getMediaFilePathConfigFromEnv)());
23
+ validatedPath = resolvedPath;
24
+ logger.warn(`storeMediaFile path validation: resolved="${resolvedPath}", mime="${mimeType}"`);
25
+ }
26
+ if (url) {
27
+ const { hostname, resolvedIp } = await (0, media_validation_utils_1.validateMediaUrl)(url, (0, media_validation_utils_1.getMediaUrlConfigFromEnv)());
28
+ logger.warn(`storeMediaFile URL validation: hostname="${hostname}", resolvedIp="${resolvedIp}"`);
29
+ }
16
30
  const prefixedWithUnderscore = filename.startsWith("_");
17
31
  const ankiParams = {
18
32
  filename,
@@ -21,8 +35,8 @@ async function storeMediaFile(params, client) {
21
35
  if (data) {
22
36
  ankiParams.data = data;
23
37
  }
24
- else if (path) {
25
- ankiParams.path = path;
38
+ else if (validatedPath) {
39
+ ankiParams.path = validatedPath;
26
40
  }
27
41
  else if (url) {
28
42
  ankiParams.url = url;
@@ -1 +1 @@
1
- {"version":3,"file":"storeMediaFile.action.js","sourceRoot":"","sources":["../../../../../../../src/mcp/primitives/essential/tools/mediaActions/actions/storeMediaFile.action.ts"],"names":[],"mappings":";;AAoCA,wCAuDC;AAvDM,KAAK,UAAU,cAAc,CAClC,MAA4B,EAC5B,MAAyB;IAEzB,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;IAGpE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAGD,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAC;IACJ,CAAC;IAGD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAGD,MAAM,sBAAsB,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAGxD,MAAM,UAAU,GAAwB;QACtC,QAAQ;QACR,cAAc;KACf,CAAC;IAEF,IAAI,IAAI,EAAE,CAAC;QACT,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;IACzB,CAAC;SAAM,IAAI,IAAI,EAAE,CAAC;QAChB,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;IACzB,CAAC;SAAM,IAAI,GAAG,EAAE,CAAC;QACf,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC;IACvB,CAAC;IAGD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAS,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAGzE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,mCAAmC,MAAM,EAAE;QACpD,sBAAsB;KACvB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"storeMediaFile.action.js","sourceRoot":"","sources":["../../../../../../../src/mcp/primitives/essential/tools/mediaActions/actions/storeMediaFile.action.ts"],"names":[],"mappings":";;AA8CA,wCAmFC;AAjID,2CAAwC;AAExC,wFAM4C;AAE5C,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,gBAAgB,CAAC,CAAC;AAoCrC,KAAK,UAAU,cAAc,CAClC,MAA4B,EAC5B,MAAyB;IAEzB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;IAG1D,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAGD,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAC;IACJ,CAAC;IAGD,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAGD,MAAM,QAAQ,GAAG,IAAA,8CAAqB,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAIxD,IAAI,aAAiC,CAAC;IACtC,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,IAAA,8CAAqB,EACtD,IAAI,EACJ,IAAA,sDAA6B,GAAE,CAChC,CAAC;QACF,aAAa,GAAG,YAAY,CAAC;QAC7B,MAAM,CAAC,IAAI,CACT,6CAA6C,YAAY,YAAY,QAAQ,GAAG,CACjF,CAAC;IACJ,CAAC;IAGD,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,yCAAgB,EACrD,GAAG,EACH,IAAA,iDAAwB,GAAE,CAC3B,CAAC;QACF,MAAM,CAAC,IAAI,CACT,4CAA4C,QAAQ,kBAAkB,UAAU,GAAG,CACpF,CAAC;IACJ,CAAC;IAGD,MAAM,sBAAsB,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAGxD,MAAM,UAAU,GAAwB;QACtC,QAAQ;QACR,cAAc;KACf,CAAC;IAEF,IAAI,IAAI,EAAE,CAAC;QACT,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;IACzB,CAAC;SAAM,IAAI,aAAa,EAAE,CAAC;QACzB,UAAU,CAAC,IAAI,GAAG,aAAa,CAAC;IAClC,CAAC;SAAM,IAAI,GAAG,EAAE,CAAC;QACf,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC;IACvB,CAAC;IAGD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAS,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAGzE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,mCAAmC,MAAM,EAAE;QACpD,sBAAsB;KACvB,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { Context } from "@rekog/mcp-nest";
2
- import { AnkiConnectClient } from "@/mcp/clients/anki-connect.client";
2
+ import { AnkiConnectClient } from "../../../clients/anki-connect.client";
3
3
  export declare class ModelFieldNamesTool {
4
4
  private readonly ankiClient;
5
5
  private readonly logger;
@@ -49,6 +49,7 @@ export declare class ModelFieldNamesTool {
49
49
  type: "resource_link";
50
50
  description?: string | undefined;
51
51
  mimeType?: string | undefined;
52
+ size?: number | undefined;
52
53
  annotations?: {
53
54
  audience?: ("user" | "assistant")[] | undefined;
54
55
  priority?: number | undefined;
@@ -117,8 +117,10 @@ __decorate([
117
117
  hint: zod_1.z.string().optional(),
118
118
  }),
119
119
  annotations: {
120
+ title: "Get Note Type Fields",
120
121
  readOnlyHint: true,
121
122
  destructiveHint: false,
123
+ idempotentHint: true,
122
124
  },
123
125
  }),
124
126
  __metadata("design:type", Function),