@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.
- package/LICENSE +659 -5
- package/README.md +64 -12
- package/dist/app.module.js +3 -0
- package/dist/app.module.js.map +1 -1
- package/dist/mcp/mcp-icons.d.ts +2 -0
- package/dist/mcp/mcp-icons.js +11 -0
- package/dist/mcp/mcp-icons.js.map +1 -0
- package/dist/mcp/primitives/essential/index.d.ts +25 -7
- package/dist/mcp/primitives/essential/index.js +49 -13
- package/dist/mcp/primitives/essential/index.js.map +1 -1
- package/dist/mcp/primitives/essential/prompts/twenty-rules.prompt/content.md +2 -2
- package/dist/mcp/primitives/essential/tools/add-note.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/add-note.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/add-note.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/add-notes.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/add-notes.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/add-notes.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/{tagActions/tagActions.tool.d.ts → add-tags.tool.d.ts} +6 -9
- package/dist/mcp/primitives/essential/tools/add-tags.tool.js +85 -0
- package/dist/mcp/primitives/essential/tools/add-tags.tool.js.map +1 -0
- package/dist/mcp/primitives/essential/tools/change-deck.tool.d.ts +107 -0
- package/dist/mcp/primitives/essential/tools/change-deck.tool.js +79 -0
- package/dist/mcp/primitives/essential/tools/change-deck.tool.js.map +1 -0
- package/dist/mcp/primitives/essential/tools/clear-unused-tags.tool.d.ts +104 -0
- package/dist/mcp/primitives/essential/tools/clear-unused-tags.tool.js +68 -0
- package/dist/mcp/primitives/essential/tools/clear-unused-tags.tool.js.map +1 -0
- package/dist/mcp/primitives/essential/tools/collection-stats/collection-stats.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/collection-stats/collection-stats.tool.js +6 -2
- package/dist/mcp/primitives/essential/tools/collection-stats/collection-stats.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/collection-stats/collection-stats.types.d.ts +1 -1
- package/dist/mcp/primitives/essential/tools/create-deck.tool.d.ts +106 -0
- package/dist/mcp/primitives/essential/tools/create-deck.tool.js +78 -0
- package/dist/mcp/primitives/essential/tools/create-deck.tool.js.map +1 -0
- package/dist/mcp/primitives/essential/tools/create-model.tool.d.ts +3 -2
- package/dist/mcp/primitives/essential/tools/create-model.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/create-model.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/{deckActions/deckActions.tool.d.ts → deck-stats.tool.d.ts} +5 -12
- package/dist/mcp/primitives/essential/tools/deck-stats.tool.js +108 -0
- package/dist/mcp/primitives/essential/tools/deck-stats.tool.js.map +1 -0
- package/dist/mcp/primitives/essential/tools/deckActions/actions/changeDeck.action.d.ts +1 -1
- package/dist/mcp/primitives/essential/tools/deckActions/actions/createDeck.action.d.ts +1 -1
- package/dist/mcp/primitives/essential/tools/deckActions/actions/deckStats.action.d.ts +2 -2
- package/dist/mcp/primitives/essential/tools/deckActions/actions/listDecks.action.d.ts +2 -2
- package/dist/mcp/primitives/essential/tools/delete-media-file.tool.d.ts +106 -0
- package/dist/mcp/primitives/essential/tools/delete-media-file.tool.js +73 -0
- package/dist/mcp/primitives/essential/tools/delete-media-file.tool.js.map +1 -0
- package/dist/mcp/primitives/essential/tools/delete-notes.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/delete-notes.tool.js +2 -1
- package/dist/mcp/primitives/essential/tools/delete-notes.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/find-notes.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/find-notes.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/find-notes.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/get-cards.tool.d.ts +3 -2
- package/dist/mcp/primitives/essential/tools/get-cards.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/get-cards.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/get-due-cards.tool.d.ts +3 -2
- package/dist/mcp/primitives/essential/tools/get-due-cards.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/get-due-cards.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/get-media-files-names.tool.d.ts +106 -0
- package/dist/mcp/primitives/essential/tools/get-media-files-names.tool.js +76 -0
- package/dist/mcp/primitives/essential/tools/get-media-files-names.tool.js.map +1 -0
- package/dist/mcp/primitives/essential/tools/get-tags.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/get-tags.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/get-tags.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/list-decks.tool.d.ts +106 -0
- package/dist/mcp/primitives/essential/tools/list-decks.tool.js +96 -0
- package/dist/mcp/primitives/essential/tools/list-decks.tool.js.map +1 -0
- package/dist/mcp/primitives/essential/tools/mediaActions/actions/deleteMediaFile.action.d.ts +1 -1
- package/dist/mcp/primitives/essential/tools/mediaActions/actions/deleteMediaFile.action.js +3 -2
- package/dist/mcp/primitives/essential/tools/mediaActions/actions/deleteMediaFile.action.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/mediaActions/actions/getMediaFilesNames.action.d.ts +1 -1
- package/dist/mcp/primitives/essential/tools/mediaActions/actions/retrieveMediaFile.action.d.ts +1 -1
- package/dist/mcp/primitives/essential/tools/mediaActions/actions/retrieveMediaFile.action.js +3 -2
- package/dist/mcp/primitives/essential/tools/mediaActions/actions/retrieveMediaFile.action.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/mediaActions/actions/storeMediaFile.action.d.ts +1 -1
- package/dist/mcp/primitives/essential/tools/mediaActions/actions/storeMediaFile.action.js +18 -4
- package/dist/mcp/primitives/essential/tools/mediaActions/actions/storeMediaFile.action.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/model-field-names.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/model-field-names.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/model-field-names.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/model-names.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/model-names.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/model-names.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/model-styling.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/model-styling.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/model-styling.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/notes-info.tool.d.ts +3 -2
- package/dist/mcp/primitives/essential/tools/notes-info.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/notes-info.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/present-card.tool.d.ts +3 -2
- package/dist/mcp/primitives/essential/tools/present-card.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/present-card.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/rate-card.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/rate-card.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/rate-card.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/remove-tags.tool.d.ts +107 -0
- package/dist/mcp/primitives/essential/tools/remove-tags.tool.js +85 -0
- package/dist/mcp/primitives/essential/tools/remove-tags.tool.js.map +1 -0
- package/dist/mcp/primitives/essential/tools/replace-tags.tool.d.ts +108 -0
- package/dist/mcp/primitives/essential/tools/replace-tags.tool.js +92 -0
- package/dist/mcp/primitives/essential/tools/replace-tags.tool.js.map +1 -0
- package/dist/mcp/primitives/essential/tools/retrieve-media-file.tool.d.ts +106 -0
- package/dist/mcp/primitives/essential/tools/retrieve-media-file.tool.js +75 -0
- package/dist/mcp/primitives/essential/tools/retrieve-media-file.tool.js.map +1 -0
- package/dist/mcp/primitives/essential/tools/review-stats/review-stats.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/review-stats/review-stats.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/review-stats/review-stats.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/review-stats/review-stats.types.d.ts +1 -1
- package/dist/mcp/primitives/essential/tools/{mediaActions/mediaActions.tool.d.ts → store-media-file.tool.d.ts} +5 -8
- package/dist/mcp/primitives/essential/tools/store-media-file.tool.js +92 -0
- package/dist/mcp/primitives/essential/tools/store-media-file.tool.js.map +1 -0
- package/dist/mcp/primitives/essential/tools/sync.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/sync.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/sync.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/tagActions/actions/addTags.action.d.ts +1 -1
- package/dist/mcp/primitives/essential/tools/tagActions/actions/clearUnusedTags.action.d.ts +1 -1
- package/dist/mcp/primitives/essential/tools/tagActions/actions/removeTags.action.d.ts +1 -1
- package/dist/mcp/primitives/essential/tools/tagActions/actions/replaceTags.action.d.ts +1 -1
- package/dist/mcp/primitives/essential/tools/update-model-styling.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/update-model-styling.tool.js +2 -0
- package/dist/mcp/primitives/essential/tools/update-model-styling.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/update-note-fields.tool.d.ts +2 -1
- package/dist/mcp/primitives/essential/tools/update-note-fields.tool.js +19 -0
- package/dist/mcp/primitives/essential/tools/update-note-fields.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-add-cards.tool.d.ts +2 -1
- package/dist/mcp/primitives/gui/tools/gui-add-cards.tool.js +3 -1
- package/dist/mcp/primitives/gui/tools/gui-add-cards.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-browse.tool.d.ts +2 -1
- package/dist/mcp/primitives/gui/tools/gui-browse.tool.js +2 -0
- package/dist/mcp/primitives/gui/tools/gui-browse.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-current-card.tool.d.ts +3 -2
- package/dist/mcp/primitives/gui/tools/gui-current-card.tool.js +2 -0
- package/dist/mcp/primitives/gui/tools/gui-current-card.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-deck-browser.tool.d.ts +2 -1
- package/dist/mcp/primitives/gui/tools/gui-deck-browser.tool.js +2 -0
- package/dist/mcp/primitives/gui/tools/gui-deck-browser.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-deck-overview.tool.d.ts +2 -1
- package/dist/mcp/primitives/gui/tools/gui-deck-overview.tool.js +2 -0
- package/dist/mcp/primitives/gui/tools/gui-deck-overview.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-edit-note.tool.d.ts +2 -1
- package/dist/mcp/primitives/gui/tools/gui-edit-note.tool.js +2 -0
- package/dist/mcp/primitives/gui/tools/gui-edit-note.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-select-card.tool.d.ts +2 -1
- package/dist/mcp/primitives/gui/tools/gui-select-card.tool.js +2 -0
- package/dist/mcp/primitives/gui/tools/gui-select-card.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-selected-notes.tool.d.ts +2 -1
- package/dist/mcp/primitives/gui/tools/gui-selected-notes.tool.js +2 -0
- package/dist/mcp/primitives/gui/tools/gui-selected-notes.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-show-answer.tool.d.ts +2 -1
- package/dist/mcp/primitives/gui/tools/gui-show-answer.tool.js +2 -0
- package/dist/mcp/primitives/gui/tools/gui-show-answer.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-show-question.tool.d.ts +2 -1
- package/dist/mcp/primitives/gui/tools/gui-show-question.tool.js +2 -0
- package/dist/mcp/primitives/gui/tools/gui-show-question.tool.js.map +1 -1
- package/dist/mcp/primitives/gui/tools/gui-undo.tool.d.ts +2 -1
- package/dist/mcp/primitives/gui/tools/gui-undo.tool.js +2 -0
- package/dist/mcp/primitives/gui/tools/gui-undo.tool.js.map +1 -1
- package/dist/mcp/utils/media-validation.utils.d.ts +33 -0
- package/dist/mcp/utils/media-validation.utils.js +208 -0
- package/dist/mcp/utils/media-validation.utils.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +24 -19
- package/dist/mcp/primitives/essential/tools/deckActions/deckActions.tool.js +0 -208
- package/dist/mcp/primitives/essential/tools/deckActions/deckActions.tool.js.map +0 -1
- package/dist/mcp/primitives/essential/tools/deckActions/index.d.ts +0 -5
- package/dist/mcp/primitives/essential/tools/deckActions/index.js +0 -6
- package/dist/mcp/primitives/essential/tools/deckActions/index.js.map +0 -1
- package/dist/mcp/primitives/essential/tools/mediaActions/index.d.ts +0 -5
- package/dist/mcp/primitives/essential/tools/mediaActions/index.js +0 -6
- package/dist/mcp/primitives/essential/tools/mediaActions/index.js.map +0 -1
- package/dist/mcp/primitives/essential/tools/mediaActions/mediaActions.tool.js +0 -156
- package/dist/mcp/primitives/essential/tools/mediaActions/mediaActions.tool.js.map +0 -1
- package/dist/mcp/primitives/essential/tools/tagActions/index.d.ts +0 -5
- package/dist/mcp/primitives/essential/tools/tagActions/index.js +0 -6
- package/dist/mcp/primitives/essential/tools/tagActions/index.js.map +0 -1
- package/dist/mcp/primitives/essential/tools/tagActions/tagActions.tool.js +0 -151
- 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":";;;;;;;;;;;;;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;
|
|
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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"}
|
|
@@ -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 "
|
|
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;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-tags.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/get-tags.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,8CAAuC;AAEvC,6BAAwB;AACxB,8EAAsE;AACtE,0DAA6D;AAWtD,IAAM,WAAW,mBAAjB,MAAM,WAAW;IAGO;IAFZ,MAAM,GAAG,IAAI,eAAM,CAAC,aAAW,CAAC,IAAI,CAAC,CAAC;IAEvD,YAA6B,UAA6B;QAA7B,eAAU,GAAV,UAAU,CAAmB;IAAG,CAAC;
|
|
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":"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"}
|
|
@@ -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
|
-
|
|
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
|
});
|
package/dist/mcp/primitives/essential/tools/mediaActions/actions/deleteMediaFile.action.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deleteMediaFile.action.js","sourceRoot":"","sources":["../../../../../../../src/mcp/primitives/essential/tools/mediaActions/actions/deleteMediaFile.action.ts"],"names":[],"mappings":";;
|
|
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"}
|
package/dist/mcp/primitives/essential/tools/mediaActions/actions/retrieveMediaFile.action.js
CHANGED
|
@@ -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
|
-
|
|
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
|
});
|
package/dist/mcp/primitives/essential/tools/mediaActions/actions/retrieveMediaFile.action.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retrieveMediaFile.action.js","sourceRoot":"","sources":["../../../../../../../src/mcp/primitives/essential/tools/mediaActions/actions/retrieveMediaFile.action.ts"],"names":[],"mappings":";;
|
|
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,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 {
|
|
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 (
|
|
25
|
-
ankiParams.path =
|
|
38
|
+
else if (validatedPath) {
|
|
39
|
+
ankiParams.path = validatedPath;
|
|
26
40
|
}
|
|
27
41
|
else if (url) {
|
|
28
42
|
ankiParams.url = url;
|
package/dist/mcp/primitives/essential/tools/mediaActions/actions/storeMediaFile.action.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storeMediaFile.action.js","sourceRoot":"","sources":["../../../../../../../src/mcp/primitives/essential/tools/mediaActions/actions/storeMediaFile.action.ts"],"names":[],"mappings":";;
|
|
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 "
|
|
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),
|