anki-mcp-http 0.7.1 → 0.8.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.
Files changed (143) hide show
  1. package/LICENSE +5 -19
  2. package/README.md +152 -35
  3. package/bin/ankimcp.js +0 -0
  4. package/dist/anki-config.service.d.ts +2 -2
  5. package/dist/anki-config.service.js +4 -4
  6. package/dist/app.module.d.ts +1 -1
  7. package/dist/app.module.js +7 -7
  8. package/dist/app.module.js.map +1 -1
  9. package/dist/bootstrap.d.ts +1 -1
  10. package/dist/bootstrap.js +4 -4
  11. package/dist/cli.d.ts +2 -1
  12. package/dist/cli.js +41 -27
  13. package/dist/cli.js.map +1 -1
  14. package/dist/http/guards/origin-validation.guard.d.ts +1 -1
  15. package/dist/http/guards/origin-validation.guard.js +5 -5
  16. package/dist/main-http.js +16 -2
  17. package/dist/main-http.js.map +1 -1
  18. package/dist/main-stdio.js +2 -2
  19. package/dist/mcp/clients/__mocks__/anki-connect.client.js +1 -1
  20. package/dist/mcp/clients/anki-connect.client.d.ts +1 -1
  21. package/dist/mcp/clients/anki-connect.client.js +7 -7
  22. package/dist/mcp/config/anki-config.interface.js +1 -1
  23. package/dist/mcp/primitives/essential/index.d.ts +26 -26
  24. package/dist/mcp/primitives/essential/index.js +1 -4
  25. package/dist/mcp/primitives/essential/index.js.map +1 -1
  26. package/dist/mcp/primitives/essential/prompts/review-session.prompt.js +5 -5
  27. package/dist/mcp/primitives/essential/prompts/review-session.prompt.js.map +1 -1
  28. package/dist/mcp/primitives/essential/prompts/twenty-rules.prompt/index.js +10 -8
  29. package/dist/mcp/primitives/essential/prompts/twenty-rules.prompt/index.js.map +1 -1
  30. package/dist/mcp/primitives/essential/resources/system-info.resource.js +12 -12
  31. package/dist/mcp/primitives/essential/tools/add-note.tool.d.ts +3 -3
  32. package/dist/mcp/primitives/essential/tools/add-note.tool.js +27 -30
  33. package/dist/mcp/primitives/essential/tools/add-note.tool.js.map +1 -1
  34. package/dist/mcp/primitives/essential/tools/create-deck.tool.d.ts +2 -2
  35. package/dist/mcp/primitives/essential/tools/create-deck.tool.js +15 -15
  36. package/dist/mcp/primitives/essential/tools/create-deck.tool.js.map +1 -1
  37. package/dist/mcp/primitives/essential/tools/create-model.tool.d.ts +3 -3
  38. package/dist/mcp/primitives/essential/tools/create-model.tool.js +20 -18
  39. package/dist/mcp/primitives/essential/tools/create-model.tool.js.map +1 -1
  40. package/dist/mcp/primitives/essential/tools/delete-notes.tool.d.ts +2 -2
  41. package/dist/mcp/primitives/essential/tools/delete-notes.tool.js +22 -22
  42. package/dist/mcp/primitives/essential/tools/delete-notes.tool.js.map +1 -1
  43. package/dist/mcp/primitives/essential/tools/find-notes.tool.d.ts +2 -2
  44. package/dist/mcp/primitives/essential/tools/find-notes.tool.js +14 -14
  45. package/dist/mcp/primitives/essential/tools/find-notes.tool.js.map +1 -1
  46. package/dist/mcp/primitives/essential/tools/get-due-cards.tool.d.ts +2 -2
  47. package/dist/mcp/primitives/essential/tools/get-due-cards.tool.js +17 -15
  48. package/dist/mcp/primitives/essential/tools/get-due-cards.tool.js.map +1 -1
  49. package/dist/mcp/primitives/essential/tools/list-decks.tool.d.ts +2 -2
  50. package/dist/mcp/primitives/essential/tools/list-decks.tool.js +10 -10
  51. package/dist/mcp/primitives/essential/tools/list-decks.tool.js.map +1 -1
  52. package/dist/mcp/primitives/essential/tools/mediaActions/actions/deleteMediaFile.action.d.ts +1 -1
  53. package/dist/mcp/primitives/essential/tools/mediaActions/actions/deleteMediaFile.action.js +3 -3
  54. package/dist/mcp/primitives/essential/tools/mediaActions/actions/getMediaFilesNames.action.d.ts +1 -1
  55. package/dist/mcp/primitives/essential/tools/mediaActions/actions/getMediaFilesNames.action.js +1 -1
  56. package/dist/mcp/primitives/essential/tools/mediaActions/actions/getMediaFilesNames.action.js.map +1 -1
  57. package/dist/mcp/primitives/essential/tools/mediaActions/actions/retrieveMediaFile.action.d.ts +1 -1
  58. package/dist/mcp/primitives/essential/tools/mediaActions/actions/retrieveMediaFile.action.js +3 -3
  59. package/dist/mcp/primitives/essential/tools/mediaActions/actions/storeMediaFile.action.d.ts +1 -1
  60. package/dist/mcp/primitives/essential/tools/mediaActions/actions/storeMediaFile.action.js +7 -7
  61. package/dist/mcp/primitives/essential/tools/mediaActions/actions/storeMediaFile.action.js.map +1 -1
  62. package/dist/mcp/primitives/essential/tools/mediaActions/index.d.ts +5 -5
  63. package/dist/mcp/primitives/essential/tools/mediaActions/mediaActions.tool.d.ts +3 -3
  64. package/dist/mcp/primitives/essential/tools/mediaActions/mediaActions.tool.js +23 -17
  65. package/dist/mcp/primitives/essential/tools/mediaActions/mediaActions.tool.js.map +1 -1
  66. package/dist/mcp/primitives/essential/tools/model-field-names.tool.d.ts +2 -2
  67. package/dist/mcp/primitives/essential/tools/model-field-names.tool.js +20 -17
  68. package/dist/mcp/primitives/essential/tools/model-field-names.tool.js.map +1 -1
  69. package/dist/mcp/primitives/essential/tools/model-names.tool.d.ts +3 -3
  70. package/dist/mcp/primitives/essential/tools/model-names.tool.js +13 -11
  71. package/dist/mcp/primitives/essential/tools/model-names.tool.js.map +1 -1
  72. package/dist/mcp/primitives/essential/tools/model-styling.tool.d.ts +2 -2
  73. package/dist/mcp/primitives/essential/tools/model-styling.tool.js +11 -11
  74. package/dist/mcp/primitives/essential/tools/model-styling.tool.js.map +1 -1
  75. package/dist/mcp/primitives/essential/tools/notes-info.tool.d.ts +2 -2
  76. package/dist/mcp/primitives/essential/tools/notes-info.tool.js +19 -19
  77. package/dist/mcp/primitives/essential/tools/notes-info.tool.js.map +1 -1
  78. package/dist/mcp/primitives/essential/tools/present-card.tool.d.ts +2 -2
  79. package/dist/mcp/primitives/essential/tools/present-card.tool.js +11 -11
  80. package/dist/mcp/primitives/essential/tools/present-card.tool.js.map +1 -1
  81. package/dist/mcp/primitives/essential/tools/rate-card.tool.d.ts +2 -2
  82. package/dist/mcp/primitives/essential/tools/rate-card.tool.js +19 -14
  83. package/dist/mcp/primitives/essential/tools/rate-card.tool.js.map +1 -1
  84. package/dist/mcp/primitives/essential/tools/sync.tool.d.ts +3 -3
  85. package/dist/mcp/primitives/essential/tools/sync.tool.js +8 -8
  86. package/dist/mcp/primitives/essential/tools/sync.tool.js.map +1 -1
  87. package/dist/mcp/primitives/essential/tools/update-model-styling.tool.d.ts +2 -2
  88. package/dist/mcp/primitives/essential/tools/update-model-styling.tool.js +19 -19
  89. package/dist/mcp/primitives/essential/tools/update-model-styling.tool.js.map +1 -1
  90. package/dist/mcp/primitives/essential/tools/update-note-fields.tool.d.ts +3 -3
  91. package/dist/mcp/primitives/essential/tools/update-note-fields.tool.js +32 -32
  92. package/dist/mcp/primitives/essential/tools/update-note-fields.tool.js.map +1 -1
  93. package/dist/mcp/primitives/gui/index.d.ts +17 -17
  94. package/dist/mcp/primitives/gui/index.js.map +1 -1
  95. package/dist/mcp/primitives/gui/tools/gui-add-cards.tool.d.ts +2 -2
  96. package/dist/mcp/primitives/gui/tools/gui-add-cards.tool.js +22 -22
  97. package/dist/mcp/primitives/gui/tools/gui-add-cards.tool.js.map +1 -1
  98. package/dist/mcp/primitives/gui/tools/gui-browse.tool.d.ts +3 -3
  99. package/dist/mcp/primitives/gui/tools/gui-browse.tool.js +15 -14
  100. package/dist/mcp/primitives/gui/tools/gui-browse.tool.js.map +1 -1
  101. package/dist/mcp/primitives/gui/tools/gui-current-card.tool.d.ts +3 -3
  102. package/dist/mcp/primitives/gui/tools/gui-current-card.tool.js +13 -13
  103. package/dist/mcp/primitives/gui/tools/gui-current-card.tool.js.map +1 -1
  104. package/dist/mcp/primitives/gui/tools/gui-deck-browser.tool.d.ts +3 -3
  105. package/dist/mcp/primitives/gui/tools/gui-deck-browser.tool.js +12 -12
  106. package/dist/mcp/primitives/gui/tools/gui-deck-browser.tool.js.map +1 -1
  107. package/dist/mcp/primitives/gui/tools/gui-deck-overview.tool.d.ts +2 -2
  108. package/dist/mcp/primitives/gui/tools/gui-deck-overview.tool.js +15 -12
  109. package/dist/mcp/primitives/gui/tools/gui-deck-overview.tool.js.map +1 -1
  110. package/dist/mcp/primitives/gui/tools/gui-edit-note.tool.d.ts +2 -2
  111. package/dist/mcp/primitives/gui/tools/gui-edit-note.tool.js +13 -12
  112. package/dist/mcp/primitives/gui/tools/gui-edit-note.tool.js.map +1 -1
  113. package/dist/mcp/primitives/gui/tools/gui-select-card.tool.d.ts +2 -2
  114. package/dist/mcp/primitives/gui/tools/gui-select-card.tool.js +18 -15
  115. package/dist/mcp/primitives/gui/tools/gui-select-card.tool.js.map +1 -1
  116. package/dist/mcp/primitives/gui/tools/gui-selected-notes.tool.d.ts +3 -3
  117. package/dist/mcp/primitives/gui/tools/gui-selected-notes.tool.js +15 -14
  118. package/dist/mcp/primitives/gui/tools/gui-selected-notes.tool.js.map +1 -1
  119. package/dist/mcp/primitives/gui/tools/gui-show-answer.tool.d.ts +3 -3
  120. package/dist/mcp/primitives/gui/tools/gui-show-answer.tool.js +15 -15
  121. package/dist/mcp/primitives/gui/tools/gui-show-answer.tool.js.map +1 -1
  122. package/dist/mcp/primitives/gui/tools/gui-show-question.tool.d.ts +3 -3
  123. package/dist/mcp/primitives/gui/tools/gui-show-question.tool.js +15 -15
  124. package/dist/mcp/primitives/gui/tools/gui-show-question.tool.js.map +1 -1
  125. package/dist/mcp/primitives/gui/tools/gui-undo.tool.d.ts +3 -3
  126. package/dist/mcp/primitives/gui/tools/gui-undo.tool.js +15 -15
  127. package/dist/mcp/primitives/gui/tools/gui-undo.tool.js.map +1 -1
  128. package/dist/mcp/types/anki.types.d.ts +2 -2
  129. package/dist/mcp/utils/anki.utils.d.ts +3 -3
  130. package/dist/mcp/utils/anki.utils.js +42 -38
  131. package/dist/mcp/utils/anki.utils.js.map +1 -1
  132. package/dist/mcp/utils/markdown.utils.js +16 -12
  133. package/dist/mcp/utils/markdown.utils.js.map +1 -1
  134. package/dist/mcp/utils/mcpb-workarounds.js +2 -2
  135. package/dist/mcp/utils/mcpb-workarounds.js.map +1 -1
  136. package/dist/services/ngrok.service.d.ts +15 -0
  137. package/dist/services/ngrok.service.js +120 -0
  138. package/dist/services/ngrok.service.js.map +1 -0
  139. package/dist/test-fixtures/mock-data.d.ts +2 -2
  140. package/dist/test-fixtures/mock-data.js +46 -46
  141. package/dist/test-fixtures/mock-data.js.map +1 -1
  142. package/dist/tsconfig.build.tsbuildinfo +1 -1
  143. package/package.json +12 -7
@@ -24,26 +24,26 @@ let CreateDeckTool = CreateDeckTool_1 = class CreateDeckTool {
24
24
  }
25
25
  async createDeck({ deck_name }, context) {
26
26
  try {
27
- const parts = deck_name.split('::');
27
+ const parts = deck_name.split("::");
28
28
  if (parts.length > 2) {
29
- return (0, anki_utils_1.createErrorResponse)(new Error('Deck name can have maximum 2 levels (parent::child)'), {
29
+ return (0, anki_utils_1.createErrorResponse)(new Error("Deck name can have maximum 2 levels (parent::child)"), {
30
30
  deckName: deck_name,
31
31
  levels: parts.length,
32
- maxLevels: 2
32
+ maxLevels: 2,
33
33
  });
34
34
  }
35
- if (parts.some(part => part.trim() === '')) {
36
- return (0, anki_utils_1.createErrorResponse)(new Error('Deck name parts cannot be empty'), { deckName: deck_name });
35
+ if (parts.some((part) => part.trim() === "")) {
36
+ return (0, anki_utils_1.createErrorResponse)(new Error("Deck name parts cannot be empty"), { deckName: deck_name });
37
37
  }
38
38
  this.logger.log(`Creating deck: ${deck_name}`);
39
39
  await context.reportProgress({ progress: 25, total: 100 });
40
- const deckId = await this.ankiClient.invoke('createDeck', {
41
- deck: deck_name
40
+ const deckId = await this.ankiClient.invoke("createDeck", {
41
+ deck: deck_name,
42
42
  });
43
43
  await context.reportProgress({ progress: 75, total: 100 });
44
44
  if (!deckId) {
45
45
  this.logger.warn(`Deck may already exist: ${deck_name}`);
46
- const existingDecks = await this.ankiClient.invoke('deckNames');
46
+ const existingDecks = await this.ankiClient.invoke("deckNames");
47
47
  const deckExists = existingDecks.includes(deck_name);
48
48
  await context.reportProgress({ progress: 100, total: 100 });
49
49
  if (deckExists) {
@@ -55,7 +55,7 @@ let CreateDeckTool = CreateDeckTool_1 = class CreateDeckTool {
55
55
  exists: true,
56
56
  });
57
57
  }
58
- return (0, anki_utils_1.createErrorResponse)(new Error('Failed to create deck - unknown error'), { deckName: deck_name });
58
+ return (0, anki_utils_1.createErrorResponse)(new Error("Failed to create deck - unknown error"), { deckName: deck_name });
59
59
  }
60
60
  await context.reportProgress({ progress: 100, total: 100 });
61
61
  this.logger.log(`Successfully created deck: ${deck_name} with ID: ${deckId}`);
@@ -75,7 +75,7 @@ let CreateDeckTool = CreateDeckTool_1 = class CreateDeckTool {
75
75
  }
76
76
  catch (error) {
77
77
  this.logger.error(`Failed to create deck ${deck_name}`, error);
78
- if (error instanceof Error && error.message.includes('already exists')) {
78
+ if (error instanceof Error && error.message.includes("already exists")) {
79
79
  return (0, anki_utils_1.createSuccessResponse)({
80
80
  success: true,
81
81
  message: `Deck "${deck_name}" already exists`,
@@ -86,7 +86,7 @@ let CreateDeckTool = CreateDeckTool_1 = class CreateDeckTool {
86
86
  }
87
87
  return (0, anki_utils_1.createErrorResponse)(error, {
88
88
  deckName: deck_name,
89
- hint: 'Make sure Anki is running and the deck name is valid'
89
+ hint: "Make sure Anki is running and the deck name is valid",
90
90
  });
91
91
  }
92
92
  }
@@ -94,19 +94,19 @@ let CreateDeckTool = CreateDeckTool_1 = class CreateDeckTool {
94
94
  exports.CreateDeckTool = CreateDeckTool;
95
95
  __decorate([
96
96
  (0, mcp_nest_1.Tool)({
97
- name: 'create_deck',
97
+ name: "create_deck",
98
98
  description: 'Create a new empty Anki deck. Supports parent::child structure (e.g., "Japanese::Tokyo" creates parent deck "Japanese" and child deck "Tokyo"). Maximum 2 levels of nesting allowed. Will not overwrite existing decks. ' +
99
- 'IMPORTANT: This tool ONLY creates an empty deck. DO NOT add cards or notes after creating a deck unless the user EXPLICITLY asks to add them. Wait for user instructions before adding any content.',
99
+ "IMPORTANT: This tool ONLY creates an empty deck. DO NOT add cards or notes after creating a deck unless the user EXPLICITLY asks to add them. Wait for user instructions before adding any content.",
100
100
  parameters: zod_1.z.object({
101
101
  deck_name: zod_1.z
102
102
  .string()
103
103
  .min(1)
104
104
  .describe('The name of the deck to create. Use "::" for parent::child structure (max 2 levels)')
105
105
  .refine((name) => {
106
- const parts = name.split('::');
106
+ const parts = name.split("::");
107
107
  return parts.length <= 2;
108
108
  }, {
109
- message: 'Deck name can have maximum 2 levels (parent::child). More than 2 levels not permitted.',
109
+ message: "Deck name can have maximum 2 levels (parent::child). More than 2 levels not permitted.",
110
110
  }),
111
111
  }),
112
112
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"create-deck.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/create-deck.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-deck.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/create-deck.tool.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import type { Context } from '@rekog/mcp-nest';
2
- import { AnkiConnectClient } from '@/mcp/clients/anki-connect.client';
3
- import type { CardTemplate } from '@/mcp/types/anki.types';
1
+ import type { Context } from "@rekog/mcp-nest";
2
+ import { AnkiConnectClient } from "@/mcp/clients/anki-connect.client";
3
+ import type { CardTemplate } from "@/mcp/types/anki.types";
4
4
  export declare class CreateModelTool {
5
5
  private readonly ankiClient;
6
6
  private readonly logger;
@@ -33,13 +33,13 @@ let CreateModelTool = CreateModelTool_1 = class CreateModelTool {
33
33
  const fieldRefs = templateContent.match(/\{\{([^}]+)\}\}/g) || [];
34
34
  for (const ref of fieldRefs) {
35
35
  const fieldName = ref.slice(2, -2).trim();
36
- if (fieldName === 'FrontSide' ||
37
- fieldName === 'Tags' ||
38
- fieldName === 'Type' ||
39
- fieldName === 'Deck' ||
40
- fieldName === 'Subdeck' ||
41
- fieldName === 'Card' ||
42
- fieldName.startsWith('cloze:')) {
36
+ if (fieldName === "FrontSide" ||
37
+ fieldName === "Tags" ||
38
+ fieldName === "Type" ||
39
+ fieldName === "Deck" ||
40
+ fieldName === "Subdeck" ||
41
+ fieldName === "Card" ||
42
+ fieldName.startsWith("cloze:")) {
43
43
  continue;
44
44
  }
45
45
  if (!fieldSet.has(fieldName)) {
@@ -48,7 +48,7 @@ let CreateModelTool = CreateModelTool_1 = class CreateModelTool {
48
48
  }
49
49
  }
50
50
  await context.reportProgress({ progress: 30, total: 100 });
51
- const result = await this.ankiClient.invoke('createModel', {
51
+ const result = await this.ankiClient.invoke("createModel", {
52
52
  modelName,
53
53
  inOrderFields,
54
54
  cardTemplates,
@@ -70,22 +70,24 @@ let CreateModelTool = CreateModelTool_1 = class CreateModelTool {
70
70
  };
71
71
  if (warnings.length > 0) {
72
72
  response.warnings = warnings;
73
- response.message += '. Note: Some warnings were detected (see warnings field).';
73
+ response.message +=
74
+ ". Note: Some warnings were detected (see warnings field).";
74
75
  }
75
76
  return (0, anki_utils_1.createSuccessResponse)(response);
76
77
  }
77
78
  catch (error) {
78
79
  this.logger.error(`Failed to create model ${modelName}`, error);
79
80
  const errorMessage = error instanceof Error ? error.message : String(error);
80
- if (errorMessage.includes('already exists') || errorMessage.includes('duplicate')) {
81
+ if (errorMessage.includes("already exists") ||
82
+ errorMessage.includes("duplicate")) {
81
83
  return (0, anki_utils_1.createErrorResponse)(error, {
82
84
  modelName,
83
- hint: 'A model with this name already exists. Use a different name or use modelNames tool to see existing models.',
85
+ hint: "A model with this name already exists. Use a different name or use modelNames tool to see existing models.",
84
86
  });
85
87
  }
86
88
  return (0, anki_utils_1.createErrorResponse)(error, {
87
89
  modelName,
88
- hint: 'Make sure Anki is running and all parameters are valid.',
90
+ hint: "Make sure Anki is running and all parameters are valid.",
89
91
  });
90
92
  }
91
93
  }
@@ -93,10 +95,10 @@ let CreateModelTool = CreateModelTool_1 = class CreateModelTool {
93
95
  exports.CreateModelTool = CreateModelTool;
94
96
  __decorate([
95
97
  (0, mcp_nest_1.Tool)({
96
- name: 'createModel',
97
- description: 'Create a new note type (model) in Anki with custom fields, card templates, and styling. ' +
98
- 'Useful for creating specialized models like RTL (Right-to-Left) language models for Hebrew, Arabic, etc. ' +
99
- 'Each model defines the structure of notes and how cards are generated from them.',
98
+ name: "createModel",
99
+ description: "Create a new note type (model) in Anki with custom fields, card templates, and styling. " +
100
+ "Useful for creating specialized models like RTL (Right-to-Left) language models for Hebrew, Arabic, etc. " +
101
+ "Each model defines the structure of notes and how cards are generated from them.",
100
102
  parameters: zod_1.z.object({
101
103
  modelName: zod_1.z
102
104
  .string()
@@ -119,7 +121,7 @@ __decorate([
119
121
  .describe('Back template HTML with field placeholders (e.g., "{{FrontSide}}<hr id=answer>{{Back}}")'),
120
122
  }))
121
123
  .min(1)
122
- .describe('Card templates (at least one required). Each template generates one card per note.'),
124
+ .describe("Card templates (at least one required). Each template generates one card per note."),
123
125
  css: zod_1.z
124
126
  .string()
125
127
  .optional()
@@ -128,7 +130,7 @@ __decorate([
128
130
  .boolean()
129
131
  .optional()
130
132
  .default(false)
131
- .describe('Create as cloze deletion model (default: false)'),
133
+ .describe("Create as cloze deletion model (default: false)"),
132
134
  }),
133
135
  }),
134
136
  __metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"file":"create-model.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/create-model.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-model.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/create-model.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,8CAAuC;AAEvC,6BAAwB;AACxB,8EAAsE;AACtE,0DAGgC;AAOzB,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;IAwDxD,AAAN,KAAK,CAAC,WAAW,CACf,EACE,SAAS,EACT,aAAa,EACb,aAAa,EACb,GAAG,EACH,OAAO,GAOR,EACD,OAAgB;QAEhB,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,mBAAmB,SAAS,SAAS,aAAa,CAAC,MAAM,SAAS,CACnE,CAAC;YACF,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAG3D,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;YAExC,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;gBACrC,MAAM,eAAe,GAAG,GAAG,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAE7D,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;gBAElE,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;oBAC5B,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAE1C,IACE,SAAS,KAAK,WAAW;wBACzB,SAAS,KAAK,MAAM;wBACpB,SAAS,KAAK,MAAM;wBACpB,SAAS,KAAK,MAAM;wBACpB,SAAS,KAAK,SAAS;wBACvB,SAAS,KAAK,MAAM;wBACpB,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,EAC9B,CAAC;wBACD,SAAS;oBACX,CAAC;oBAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC7B,QAAQ,CAAC,IAAI,CACX,aAAa,QAAQ,CAAC,IAAI,yBAAyB,SAAS,mCAAmC,CAChG,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAG3D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAM,aAAa,EAAE;gBAC9D,SAAS;gBACT,aAAa;gBACb,aAAa;gBACb,GAAG;gBACH,OAAO,EAAE,OAAO,IAAI,KAAK;aAC1B,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAG3D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC;YAE5D,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAE5D,MAAM,QAAQ,GAAQ;gBACpB,OAAO,EAAE,IAAI;gBACb,SAAS;gBACT,OAAO,EAAE,MAAM,CAAC,EAAE,IAAI,IAAI;gBAC1B,MAAM,EAAE,aAAa;gBACrB,aAAa,EAAE,aAAa,CAAC,MAAM;gBACnC,MAAM,EAAE,CAAC,CAAC,GAAG;gBACb,OAAO,EAAE,OAAO,IAAI,KAAK;gBACzB,OAAO,EAAE,+BAA+B,SAAS,UAAU,aAAa,CAAC,MAAM,eAAe,aAAa,CAAC,MAAM,cAAc;aACjI,CAAC;YAEF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBAC7B,QAAQ,CAAC,OAAO;oBACd,2DAA2D,CAAC;YAChE,CAAC;YAED,OAAO,IAAA,kCAAqB,EAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;YAGhE,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACzD,IACE,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBACvC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,EAClC,CAAC;gBACD,OAAO,IAAA,gCAAmB,EAAC,KAAK,EAAE;oBAChC,SAAS;oBACT,IAAI,EAAE,4GAA4G;iBACnH,CAAC,CAAC;YACL,CAAC;YAED,OAAO,IAAA,gCAAmB,EAAC,KAAK,EAAE;gBAChC,SAAS;gBACT,IAAI,EAAE,yDAAyD;aAChE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF,CAAA;AA3KY,0CAAe;AA2DpB;IAtDL,IAAA,eAAI,EAAC;QACJ,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,0FAA0F;YAC1F,2GAA2G;YAC3G,kFAAkF;QACpF,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC;YACnB,SAAS,EAAE,OAAC;iBACT,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CACP,0EAA0E,CAC3E;YACH,aAAa,EAAE,OAAC;iBACb,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBACxB,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CACP,8EAA8E,CAC/E;YACH,aAAa,EAAE,OAAC;iBACb,KAAK,CACJ,OAAC,CAAC,MAAM,CAAC;gBACP,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;gBAClE,KAAK,EAAE,OAAC;qBACL,MAAM,EAAE;qBACR,GAAG,CAAC,CAAC,CAAC;qBACN,QAAQ,CACP,iEAAiE,CAClE;gBACH,IAAI,EAAE,OAAC;qBACJ,MAAM,EAAE;qBACR,GAAG,CAAC,CAAC,CAAC;qBACN,QAAQ,CACP,0FAA0F,CAC3F;aACJ,CAAC,CACH;iBACA,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CACP,oFAAoF,CACrF;YACH,GAAG,EAAE,OAAC;iBACH,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,8FAA8F,CAC/F;YACH,OAAO,EAAE,OAAC;iBACP,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,iDAAiD,CAAC;SAC/D,CAAC;KACH,CAAC;;;;kDAgHD;0BA1KU,eAAe;IAD3B,IAAA,mBAAU,GAAE;qCAI8B,uCAAiB;GAH/C,eAAe,CA2K3B"}
@@ -1,5 +1,5 @@
1
- import type { Context } from '@rekog/mcp-nest';
2
- import { AnkiConnectClient } from '@/mcp/clients/anki-connect.client';
1
+ import type { Context } from "@rekog/mcp-nest";
2
+ import { AnkiConnectClient } from "@/mcp/clients/anki-connect.client";
3
3
  export declare class DeleteNotesTool {
4
4
  private readonly ankiClient;
5
5
  private readonly logger;
@@ -25,36 +25,36 @@ let DeleteNotesTool = DeleteNotesTool_1 = class DeleteNotesTool {
25
25
  async deleteNotes({ notes, confirmDeletion }, context) {
26
26
  try {
27
27
  if (!confirmDeletion) {
28
- return (0, anki_utils_1.createErrorResponse)(new Error('Deletion not confirmed'), {
28
+ return (0, anki_utils_1.createErrorResponse)(new Error("Deletion not confirmed"), {
29
29
  requestedNotes: notes,
30
30
  noteCount: notes.length,
31
- hint: 'Set confirmDeletion to true to permanently delete these notes and all their cards',
32
- warning: 'This action cannot be undone!',
31
+ hint: "Set confirmDeletion to true to permanently delete these notes and all their cards",
32
+ warning: "This action cannot be undone!",
33
33
  });
34
34
  }
35
35
  this.logger.log(`Deleting ${notes.length} note(s)`);
36
36
  await context.reportProgress({ progress: 25, total: 100 });
37
- const notesInfo = await this.ankiClient.invoke('notesInfo', {
37
+ const notesInfo = await this.ankiClient.invoke("notesInfo", {
38
38
  notes: notes,
39
39
  });
40
- const validNotes = notesInfo.filter(note => note && note.noteId);
41
- const validNoteIds = validNotes.map(note => note.noteId);
40
+ const validNotes = notesInfo.filter((note) => note && note.noteId);
41
+ const validNoteIds = validNotes.map((note) => note.noteId);
42
42
  const notFoundCount = notes.length - validNotes.length;
43
43
  if (validNoteIds.length === 0) {
44
- this.logger.warn('No valid notes found to delete');
44
+ this.logger.warn("No valid notes found to delete");
45
45
  await context.reportProgress({ progress: 100, total: 100 });
46
46
  return (0, anki_utils_1.createSuccessResponse)({
47
47
  success: true,
48
48
  deletedCount: 0,
49
49
  notFoundCount: notes.length,
50
50
  requestedIds: notes,
51
- message: 'No notes were deleted (none of the provided IDs were valid)',
52
- hint: 'The notes may have already been deleted or the IDs are invalid',
51
+ message: "No notes were deleted (none of the provided IDs were valid)",
52
+ hint: "The notes may have already been deleted or the IDs are invalid",
53
53
  });
54
54
  }
55
55
  const totalCards = validNotes.reduce((sum, note) => sum + (note.cards?.length || 0), 0);
56
56
  await context.reportProgress({ progress: 50, total: 100 });
57
- await this.ankiClient.invoke('deleteNotes', {
57
+ await this.ankiClient.invoke("deleteNotes", {
58
58
  notes: validNoteIds,
59
59
  });
60
60
  await context.reportProgress({ progress: 100, total: 100 });
@@ -70,23 +70,23 @@ let DeleteNotesTool = DeleteNotesTool_1 = class DeleteNotesTool {
70
70
  notFoundCount,
71
71
  requestedIds: notes,
72
72
  message: message,
73
- warning: 'These notes and cards have been permanently deleted',
74
- hint: 'Consider syncing with AnkiWeb to propagate deletions to other devices',
73
+ warning: "These notes and cards have been permanently deleted",
74
+ hint: "Consider syncing with AnkiWeb to propagate deletions to other devices",
75
75
  });
76
76
  }
77
77
  catch (error) {
78
- this.logger.error('Failed to delete notes', error);
78
+ this.logger.error("Failed to delete notes", error);
79
79
  if (error instanceof Error) {
80
- if (error.message.includes('permission')) {
80
+ if (error.message.includes("permission")) {
81
81
  return (0, anki_utils_1.createErrorResponse)(error, {
82
82
  requestedNotes: notes,
83
- hint: 'Permission denied. Check if Anki allows deletions via AnkiConnect.',
83
+ hint: "Permission denied. Check if Anki allows deletions via AnkiConnect.",
84
84
  });
85
85
  }
86
86
  }
87
87
  return (0, anki_utils_1.createErrorResponse)(error, {
88
88
  requestedNotes: notes,
89
- hint: 'Make sure Anki is running and the note IDs are valid',
89
+ hint: "Make sure Anki is running and the note IDs are valid",
90
90
  });
91
91
  }
92
92
  }
@@ -94,19 +94,19 @@ let DeleteNotesTool = DeleteNotesTool_1 = class DeleteNotesTool {
94
94
  exports.DeleteNotesTool = DeleteNotesTool;
95
95
  __decorate([
96
96
  (0, mcp_nest_1.Tool)({
97
- name: 'deleteNotes',
98
- description: 'Delete notes by their IDs. This will permanently remove the notes and ALL associated cards. ' +
99
- 'This action cannot be undone unless you have a backup. CRITICAL: This is destructive and permanent - only delete notes the user explicitly confirmed for deletion.',
97
+ name: "deleteNotes",
98
+ description: "Delete notes by their IDs. This will permanently remove the notes and ALL associated cards. " +
99
+ "This action cannot be undone unless you have a backup. CRITICAL: This is destructive and permanent - only delete notes the user explicitly confirmed for deletion.",
100
100
  parameters: zod_1.z.object({
101
101
  notes: zod_1.z
102
102
  .array(zod_1.z.number())
103
103
  .min(1)
104
104
  .max(100)
105
- .describe('Array of note IDs to delete (max 100 at once for safety). ' +
106
- 'Get these IDs from findNotes tool. ALL cards associated with these notes will be deleted.'),
105
+ .describe("Array of note IDs to delete (max 100 at once for safety). " +
106
+ "Get these IDs from findNotes tool. ALL cards associated with these notes will be deleted."),
107
107
  confirmDeletion: zod_1.z
108
108
  .boolean()
109
- .describe('Must be set to true to confirm you want to permanently delete these notes and their cards'),
109
+ .describe("Must be set to true to confirm you want to permanently delete these notes and their cards"),
110
110
  }),
111
111
  }),
112
112
  __metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"file":"delete-notes.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/delete-notes.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"delete-notes.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/delete-notes.tool.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { Context } from '@rekog/mcp-nest';
2
- import { AnkiConnectClient } from '@/mcp/clients/anki-connect.client';
1
+ import type { Context } from "@rekog/mcp-nest";
2
+ import { AnkiConnectClient } from "@/mcp/clients/anki-connect.client";
3
3
  export declare class FindNotesTool {
4
4
  private readonly ankiClient;
5
5
  private readonly logger;
@@ -26,20 +26,20 @@ let FindNotesTool = FindNotesTool_1 = class FindNotesTool {
26
26
  try {
27
27
  this.logger.log(`Searching for notes with query: "${query}"`);
28
28
  await context.reportProgress({ progress: 25, total: 100 });
29
- const noteIds = await this.ankiClient.invoke('findNotes', {
29
+ const noteIds = await this.ankiClient.invoke("findNotes", {
30
30
  query: query,
31
31
  });
32
32
  await context.reportProgress({ progress: 75, total: 100 });
33
33
  if (!noteIds || noteIds.length === 0) {
34
- this.logger.log('No notes found matching the query');
34
+ this.logger.log("No notes found matching the query");
35
35
  await context.reportProgress({ progress: 100, total: 100 });
36
36
  return (0, anki_utils_1.createSuccessResponse)({
37
37
  success: true,
38
38
  noteIds: [],
39
39
  count: 0,
40
40
  query: query,
41
- message: 'No notes found matching the search criteria',
42
- hint: 'Try a broader search query or check your deck/tag names',
41
+ message: "No notes found matching the search criteria",
42
+ hint: "Try a broader search query or check your deck/tag names",
43
43
  });
44
44
  }
45
45
  await context.reportProgress({ progress: 100, total: 100 });
@@ -49,19 +49,19 @@ let FindNotesTool = FindNotesTool_1 = class FindNotesTool {
49
49
  noteIds: noteIds,
50
50
  count: noteIds.length,
51
51
  query: query,
52
- message: `Found ${noteIds.length} note${noteIds.length === 1 ? '' : 's'} matching the query`,
52
+ message: `Found ${noteIds.length} note${noteIds.length === 1 ? "" : "s"} matching the query`,
53
53
  hint: noteIds.length > 100
54
- ? 'Large result set. Consider using notesInfo with smaller batches for detailed information.'
55
- : 'Use notesInfo tool to get detailed information about these notes',
54
+ ? "Large result set. Consider using notesInfo with smaller batches for detailed information."
55
+ : "Use notesInfo tool to get detailed information about these notes",
56
56
  });
57
57
  }
58
58
  catch (error) {
59
- this.logger.error('Failed to search for notes', error);
59
+ this.logger.error("Failed to search for notes", error);
60
60
  if (error instanceof Error) {
61
- if (error.message.includes('query')) {
61
+ if (error.message.includes("query")) {
62
62
  return (0, anki_utils_1.createErrorResponse)(error, {
63
63
  query,
64
- hint: 'Invalid query syntax. Check Anki documentation for valid search syntax.',
64
+ hint: "Invalid query syntax. Check Anki documentation for valid search syntax.",
65
65
  examples: [
66
66
  '"deck:DeckName" - all notes in a deck',
67
67
  '"tag:important" - notes with specific tag',
@@ -74,7 +74,7 @@ let FindNotesTool = FindNotesTool_1 = class FindNotesTool {
74
74
  }
75
75
  return (0, anki_utils_1.createErrorResponse)(error, {
76
76
  query,
77
- hint: 'Make sure Anki is running and the query syntax is valid',
77
+ hint: "Make sure Anki is running and the query syntax is valid",
78
78
  });
79
79
  }
80
80
  }
@@ -82,8 +82,8 @@ let FindNotesTool = FindNotesTool_1 = class FindNotesTool {
82
82
  exports.FindNotesTool = FindNotesTool;
83
83
  __decorate([
84
84
  (0, mcp_nest_1.Tool)({
85
- name: 'findNotes',
86
- description: 'Search for notes using Anki query syntax. Returns an array of note IDs matching the query. ' +
85
+ name: "findNotes",
86
+ description: "Search for notes using Anki query syntax. Returns an array of note IDs matching the query. " +
87
87
  'Examples: "deck:Spanish", "tag:verb", "is:due", "front:hello", "added:1" (cards added today), ' +
88
88
  '"prop:due<=2" (cards due within 2 days), "flag:1" (red flag), "is:suspended"',
89
89
  parameters: zod_1.z.object({
@@ -92,7 +92,7 @@ __decorate([
92
92
  .min(1)
93
93
  .describe('Anki search query. Use Anki query syntax like "deck:DeckName", "tag:tagname", ' +
94
94
  '"is:due", "is:new", "is:review", "front:text", "back:text", or combine with spaces for AND, ' +
95
- 'OR for alternatives. Empty string returns all notes.'),
95
+ "OR for alternatives. Empty string returns all notes."),
96
96
  }),
97
97
  }),
98
98
  __metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"file":"find-notes.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/find-notes.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"find-notes.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/find-notes.tool.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { Context } from '@rekog/mcp-nest';
2
- import { AnkiConnectClient } from '@/mcp/clients/anki-connect.client';
1
+ import type { Context } from "@rekog/mcp-nest";
2
+ import { AnkiConnectClient } from "@/mcp/clients/anki-connect.client";
3
3
  export declare class GetDueCardsTool {
4
4
  private readonly ankiClient;
5
5
  private readonly logger;
@@ -25,35 +25,37 @@ let GetDueCardsTool = GetDueCardsTool_1 = class GetDueCardsTool {
25
25
  async getDueCards({ deck_name, limit }, context) {
26
26
  try {
27
27
  const cardLimit = Math.min(limit || 10, 50);
28
- this.logger.log(`Getting due cards from deck: ${deck_name || 'all'}, limit: ${cardLimit}`);
28
+ this.logger.log(`Getting due cards from deck: ${deck_name || "all"}, limit: ${cardLimit}`);
29
29
  await context.reportProgress({ progress: 10, total: 100 });
30
- let query = 'is:due';
30
+ let query = "is:due";
31
31
  if (deck_name) {
32
32
  const escapedDeckName = deck_name.replace(/"/g, '\\"');
33
33
  query = `"deck:${escapedDeckName}" ${query}`;
34
34
  }
35
- const cardIds = await this.ankiClient.invoke('findCards', { query });
35
+ const cardIds = await this.ankiClient.invoke("findCards", {
36
+ query,
37
+ });
36
38
  if (cardIds.length === 0) {
37
- this.logger.log('No due cards found');
39
+ this.logger.log("No due cards found");
38
40
  await context.reportProgress({ progress: 100, total: 100 });
39
41
  return (0, anki_utils_1.createSuccessResponse)({
40
42
  success: true,
41
- message: 'No cards are due for review',
43
+ message: "No cards are due for review",
42
44
  cards: [],
43
45
  total: 0,
44
46
  });
45
47
  }
46
48
  await context.reportProgress({ progress: 50, total: 100 });
47
49
  const selectedCardIds = cardIds.slice(0, cardLimit);
48
- const cardsInfo = await this.ankiClient.invoke('cardsInfo', {
49
- cards: selectedCardIds
50
+ const cardsInfo = await this.ankiClient.invoke("cardsInfo", {
51
+ cards: selectedCardIds,
50
52
  });
51
- const dueCards = cardsInfo.map(card => {
53
+ const dueCards = cardsInfo.map((card) => {
52
54
  const { front, back } = (0, anki_utils_1.extractCardContent)(card.fields);
53
55
  return {
54
56
  cardId: card.cardId,
55
- front: front || card.question || '',
56
- back: back || card.answer || '',
57
+ front: front || card.question || "",
58
+ back: back || card.answer || "",
57
59
  deckName: card.deckName,
58
60
  modelName: card.modelName,
59
61
  due: card.due || 0,
@@ -72,7 +74,7 @@ let GetDueCardsTool = GetDueCardsTool_1 = class GetDueCardsTool {
72
74
  });
73
75
  }
74
76
  catch (error) {
75
- this.logger.error('Failed to get due cards', error);
77
+ this.logger.error("Failed to get due cards", error);
76
78
  return (0, anki_utils_1.createErrorResponse)(error);
77
79
  }
78
80
  }
@@ -80,19 +82,19 @@ let GetDueCardsTool = GetDueCardsTool_1 = class GetDueCardsTool {
80
82
  exports.GetDueCardsTool = GetDueCardsTool;
81
83
  __decorate([
82
84
  (0, mcp_nest_1.Tool)({
83
- name: 'get_due_cards',
84
- description: 'Retrieve cards that are due for review from Anki. IMPORTANT: Use sync tool FIRST before getting cards to ensure latest data. After getting cards, use present_card to show them one by one to the user',
85
+ name: "get_due_cards",
86
+ description: "Retrieve cards that are due for review from Anki. IMPORTANT: Use sync tool FIRST before getting cards to ensure latest data. After getting cards, use present_card to show them one by one to the user",
85
87
  parameters: zod_1.z.object({
86
88
  deck_name: zod_1.z
87
89
  .string()
88
90
  .optional()
89
- .describe('Specific deck name to get cards from. If not specified, gets cards from all decks'),
91
+ .describe("Specific deck name to get cards from. If not specified, gets cards from all decks"),
90
92
  limit: zod_1.z
91
93
  .number()
92
94
  .min(1)
93
95
  .max(50)
94
96
  .default(10)
95
- .describe('Maximum number of cards to return'),
97
+ .describe("Maximum number of cards to return"),
96
98
  }),
97
99
  }),
98
100
  __metadata("design:type", Function),
@@ -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":"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"}
@@ -1,5 +1,5 @@
1
- import type { Context } from '@rekog/mcp-nest';
2
- import { AnkiConnectClient } from '@/mcp/clients/anki-connect.client';
1
+ import type { Context } from "@rekog/mcp-nest";
2
+ import { AnkiConnectClient } from "@/mcp/clients/anki-connect.client";
3
3
  export declare class ListDecksTool {
4
4
  private readonly ankiClient;
5
5
  private readonly logger;