@laomeifun/my-anki-mcp 0.11.1 → 0.11.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mcp/primitives/essential/tools/add-note.tool.d.ts +1 -1
- package/dist/mcp/primitives/essential/tools/add-note.tool.js +46 -9
- package/dist/mcp/primitives/essential/tools/add-note.tool.js.map +1 -1
- package/dist/mcp/primitives/essential/tools/add-notes.tool.d.ts +1 -1
- package/dist/mcp/primitives/essential/tools/add-notes.tool.js +64 -21
- package/dist/mcp/primitives/essential/tools/add-notes.tool.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -7,7 +7,7 @@ export declare class AddNoteTool {
|
|
|
7
7
|
addNote({ deckName, modelName, fields, tags, allowDuplicate, duplicateScope, duplicateScopeOptions, }: {
|
|
8
8
|
deckName: string;
|
|
9
9
|
modelName: string;
|
|
10
|
-
fields: Record<string, string
|
|
10
|
+
fields: Record<string, string> | string;
|
|
11
11
|
tags?: string[];
|
|
12
12
|
allowDuplicate?: boolean;
|
|
13
13
|
duplicateScope?: "deck" | "collection";
|
|
@@ -16,6 +16,17 @@ const mcp_nest_1 = require("@rekog/mcp-nest");
|
|
|
16
16
|
const zod_1 = require("zod");
|
|
17
17
|
const anki_connect_client_1 = require("../../../clients/anki-connect.client");
|
|
18
18
|
const anki_utils_1 = require("../../../utils/anki.utils");
|
|
19
|
+
function preprocessFieldsInput(val) {
|
|
20
|
+
if (typeof val === "string") {
|
|
21
|
+
try {
|
|
22
|
+
return JSON.parse(val);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return val;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return val;
|
|
29
|
+
}
|
|
19
30
|
let AddNoteTool = AddNoteTool_1 = class AddNoteTool {
|
|
20
31
|
ankiClient;
|
|
21
32
|
logger = new common_1.Logger(AddNoteTool_1.name);
|
|
@@ -23,13 +34,39 @@ let AddNoteTool = AddNoteTool_1 = class AddNoteTool {
|
|
|
23
34
|
this.ankiClient = ankiClient;
|
|
24
35
|
}
|
|
25
36
|
async addNote({ deckName, modelName, fields, tags, allowDuplicate, duplicateScope, duplicateScopeOptions, }, context) {
|
|
37
|
+
let parsedFields;
|
|
38
|
+
if (typeof fields === "string") {
|
|
39
|
+
try {
|
|
40
|
+
parsedFields = JSON.parse(fields);
|
|
41
|
+
this.logger.warn("fields parameter passed as JSON string instead of object - auto-parsing");
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return (0, anki_utils_1.createErrorResponse)(new Error("Invalid fields parameter: expected object or valid JSON string"), { hint: "Pass fields as an object, not a string" });
|
|
45
|
+
}
|
|
46
|
+
if (typeof parsedFields !== "object" || Array.isArray(parsedFields)) {
|
|
47
|
+
return (0, anki_utils_1.createErrorResponse)(new Error("Invalid fields parameter: parsed value is not an object"), { hint: "fields must be an object with field name keys" });
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
parsedFields = fields;
|
|
52
|
+
}
|
|
26
53
|
try {
|
|
27
|
-
const
|
|
28
|
-
if (
|
|
29
|
-
return (0, anki_utils_1.createErrorResponse)(new Error(`
|
|
54
|
+
const modelFields = await this.ankiClient.invoke("modelFieldNames", { modelName });
|
|
55
|
+
if (!modelFields || modelFields.length === 0) {
|
|
56
|
+
return (0, anki_utils_1.createErrorResponse)(new Error(`Model "${modelName}" not found or has no fields`), {
|
|
57
|
+
deckName,
|
|
58
|
+
modelName,
|
|
59
|
+
hint: "Use modelNames tool to see available models.",
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
const primaryField = modelFields[0];
|
|
63
|
+
const primaryValue = parsedFields[primaryField];
|
|
64
|
+
if (!primaryValue || primaryValue.trim() === "") {
|
|
65
|
+
return (0, anki_utils_1.createErrorResponse)(new Error(`Primary field "${primaryField}" cannot be empty. AnkiConnect requires the first field to have content.`), {
|
|
30
66
|
deckName,
|
|
31
67
|
modelName,
|
|
32
|
-
|
|
68
|
+
primaryField,
|
|
69
|
+
hint: `The first field of the "${modelName}" model must have content. Other fields can be empty.`,
|
|
33
70
|
});
|
|
34
71
|
}
|
|
35
72
|
this.logger.log(`Adding note to deck "${deckName}" with model "${modelName}"`);
|
|
@@ -37,7 +74,7 @@ let AddNoteTool = AddNoteTool_1 = class AddNoteTool {
|
|
|
37
74
|
const noteParams = {
|
|
38
75
|
deckName: deckName,
|
|
39
76
|
modelName: modelName,
|
|
40
|
-
fields:
|
|
77
|
+
fields: parsedFields,
|
|
41
78
|
};
|
|
42
79
|
if (tags && tags.length > 0) {
|
|
43
80
|
noteParams.tags = tags;
|
|
@@ -77,7 +114,7 @@ let AddNoteTool = AddNoteTool_1 = class AddNoteTool {
|
|
|
77
114
|
}
|
|
78
115
|
await context.reportProgress({ progress: 100, total: 100 });
|
|
79
116
|
this.logger.log(`Successfully created note with ID: ${noteId}`);
|
|
80
|
-
const fieldCount = Object.keys(
|
|
117
|
+
const fieldCount = Object.keys(parsedFields).length;
|
|
81
118
|
const tagCount = tags ? tags.length : 0;
|
|
82
119
|
return (0, anki_utils_1.createSuccessResponse)({
|
|
83
120
|
success: true,
|
|
@@ -113,7 +150,7 @@ let AddNoteTool = AddNoteTool_1 = class AddNoteTool {
|
|
|
113
150
|
return (0, anki_utils_1.createErrorResponse)(error, {
|
|
114
151
|
deckName,
|
|
115
152
|
modelName,
|
|
116
|
-
providedFields: Object.keys(
|
|
153
|
+
providedFields: Object.keys(parsedFields),
|
|
117
154
|
hint: "Field mismatch. Use modelFieldNames tool to see required fields for this model.",
|
|
118
155
|
});
|
|
119
156
|
}
|
|
@@ -137,9 +174,9 @@ __decorate([
|
|
|
137
174
|
.string()
|
|
138
175
|
.min(1)
|
|
139
176
|
.describe('The note type/model to use (e.g., "Basic", "Cloze")'),
|
|
140
|
-
fields: zod_1.z
|
|
177
|
+
fields: zod_1.z.preprocess(preprocessFieldsInput, zod_1.z
|
|
141
178
|
.record(zod_1.z.string(), zod_1.z.string())
|
|
142
|
-
.describe('Field values as key-value pairs (e.g., {"Front": "question", "Back": "answer"})'),
|
|
179
|
+
.describe('Field values as key-value pairs (e.g., {"Front": "question", "Back": "answer"})')),
|
|
143
180
|
tags: zod_1.z
|
|
144
181
|
.array(zod_1.z.string())
|
|
145
182
|
.optional()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-note.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/add-note.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,8CAAuC;AAEvC,6BAAwB;AACxB,8EAAsE;AAEtE,0DAGgC;
|
|
1
|
+
{"version":3,"file":"add-note.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/add-note.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,8CAAuC;AAEvC,6BAAwB;AACxB,8EAAsE;AAEtE,0DAGgC;AAKhC,SAAS,qBAAqB,CAAC,GAAY;IACzC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAMM,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;IAsDxD,AAAN,KAAK,CAAC,OAAO,CACX,EACE,QAAQ,EACR,SAAS,EACT,MAAM,EACN,IAAI,EACJ,cAAc,EACd,cAAc,EACd,qBAAqB,GAatB,EACD,OAAgB;QAGhB,IAAI,YAAoC,CAAC;QACzC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,yEAAyE,CAC1E,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAA,gCAAmB,EACxB,IAAI,KAAK,CACP,gEAAgE,CACjE,EACD,EAAE,IAAI,EAAE,wCAAwC,EAAE,CACnD,CAAC;YACJ,CAAC;YACD,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;gBACpE,OAAO,IAAA,gCAAmB,EACxB,IAAI,KAAK,CAAC,yDAAyD,CAAC,EACpE,EAAE,IAAI,EAAE,+CAA+C,EAAE,CAC1D,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,YAAY,GAAG,MAAM,CAAC;QACxB,CAAC;QAED,IAAI,CAAC;YAEH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAC9C,iBAAiB,EACjB,EAAE,SAAS,EAAE,CACd,CAAC;YAEF,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7C,OAAO,IAAA,gCAAmB,EACxB,IAAI,KAAK,CAAC,UAAU,SAAS,8BAA8B,CAAC,EAC5D;oBACE,QAAQ;oBACR,SAAS;oBACT,IAAI,EAAE,8CAA8C;iBACrD,CACF,CAAC;YACJ,CAAC;YAID,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;YAEhD,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBAChD,OAAO,IAAA,gCAAmB,EACxB,IAAI,KAAK,CACP,kBAAkB,YAAY,0EAA0E,CACzG,EACD;oBACE,QAAQ;oBACR,SAAS;oBACT,YAAY;oBACZ,IAAI,EAAE,2BAA2B,SAAS,uDAAuD;iBAClG,CACF,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,wBAAwB,QAAQ,iBAAiB,SAAS,GAAG,CAC9D,CAAC;YACF,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAG3D,MAAM,UAAU,GAAQ;gBACtB,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,SAAS;gBACpB,MAAM,EAAE,YAAY;aACrB,CAAC;YAGF,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;YACzB,CAAC;YAGD,MAAM,OAAO,GAAgB,EAAE,CAAC;YAChC,IAAI,UAAU,GAAG,KAAK,CAAC;YAEvB,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAO,CAAC,cAAc,GAAG,cAAc,CAAC;gBACxC,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;YAED,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAO,CAAC,cAAc,GAAG,cAAc,CAAC;gBACxC,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;YAED,IAAI,qBAAqB,KAAK,SAAS,EAAE,CAAC;gBACxC,OAAO,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;gBACtD,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;YAED,IAAI,UAAU,EAAE,CAAC;gBACf,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;YAC/B,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,CAAgB,SAAS,EAAE;gBACpE,IAAI,EAAE,UAAU;aACjB,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAE3D,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;gBAChE,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;gBAE5D,OAAO,IAAA,gCAAmB,EACxB,IAAI,KAAK,CAAC,+CAA+C,CAAC,EAC1D;oBACE,QAAQ;oBACR,SAAS;oBACT,IAAI,EAAE,cAAc;wBAClB,CAAC,CAAC,+EAA+E;wBACjF,CAAC,CAAC,8FAA8F;iBACnG,CACF,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sCAAsC,MAAM,EAAE,CAAC,CAAC;YAEhE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;YACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAExC,OAAO,IAAA,kCAAqB,EAAC;gBAC3B,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,SAAS;gBACpB,OAAO,EAAE,sCAAsC,QAAQ,GAAG;gBAC1D,OAAO,EAAE;oBACP,WAAW,EAAE,UAAU;oBACvB,SAAS,EAAE,QAAQ;oBACnB,mBAAmB,EAAE,cAAc,IAAI,SAAS;iBACjD;aACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;YAG/C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBACpC,OAAO,IAAA,gCAAmB,EAAC,KAAK,EAAE;wBAChC,QAAQ;wBACR,SAAS;wBACT,IAAI,EAAE,+DAA+D;qBACtE,CAAC,CAAC;gBACL,CAAC;gBACD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBACnC,OAAO,IAAA,gCAAmB,EAAC,KAAK,EAAE;wBAChC,QAAQ;wBACR,SAAS;wBACT,IAAI,EAAE,+FAA+F;qBACtG,CAAC,CAAC;gBACL,CAAC;gBACD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBACpC,OAAO,IAAA,gCAAmB,EAAC,KAAK,EAAE;wBAChC,QAAQ;wBACR,SAAS;wBACT,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;wBACzC,IAAI,EAAE,iFAAiF;qBACxF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,OAAO,IAAA,gCAAmB,EAAC,KAAK,EAAE;gBAChC,QAAQ;gBACR,SAAS;gBACT,IAAI,EAAE,gEAAgE;aACvE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF,CAAA;AAvQY,kCAAW;AAyDhB;IApDL,IAAA,eAAI,EAAC;QACJ,IAAI,EAAE,SAAS;QACf,WAAW,EACT,yNAAyN;QAC3N,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC;YACnB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YACnE,SAAS,EAAE,OAAC;iBACT,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,qDAAqD,CAAC;YAClE,MAAM,EAAE,OAAC,CAAC,UAAU,CAClB,qBAAqB,EACrB,OAAC;iBACE,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC;iBAC9B,QAAQ,CACP,iFAAiF,CAClF,CACJ;YACD,IAAI,EAAE,OAAC;iBACJ,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CAAC,kCAAkC,CAAC;YAC/C,cAAc,EAAE,OAAC;iBACd,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,yCAAyC,CAAC;YACtD,cAAc,EAAE,OAAC;iBACd,IAAI,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;iBAC5B,QAAQ,EAAE;iBACV,QAAQ,CAAC,8BAA8B,CAAC;YAC3C,qBAAqB,EAAE,OAAC;iBACrB,MAAM,CAAC;gBACN,QAAQ,EAAE,OAAC;qBACR,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CAAC,uCAAuC,CAAC;gBACpD,aAAa,EAAE,OAAC;qBACb,OAAO,EAAE;qBACT,QAAQ,EAAE;qBACV,OAAO,CAAC,KAAK,CAAC;qBACd,QAAQ,CAAC,kCAAkC,CAAC;gBAC/C,cAAc,EAAE,OAAC;qBACd,OAAO,EAAE;qBACT,QAAQ,EAAE;qBACV,OAAO,CAAC,KAAK,CAAC;qBACd,QAAQ,CAAC,6BAA6B,CAAC;aAC3C,CAAC;iBACD,QAAQ,EAAE;iBACV,QAAQ,CAAC,qCAAqC,CAAC;SACnD,CAAC;KACH,CAAC;;;;0CA8MD;sBAtQU,WAAW;IADvB,IAAA,mBAAU,GAAE;qCAI8B,uCAAiB;GAH/C,WAAW,CAuQvB"}
|
|
@@ -23,7 +23,7 @@ export declare class AddNotesTool {
|
|
|
23
23
|
private readonly logger;
|
|
24
24
|
constructor(ankiClient: AnkiConnectClient);
|
|
25
25
|
addNotes({ notes }: {
|
|
26
|
-
notes: NoteInput[];
|
|
26
|
+
notes: NoteInput[] | string;
|
|
27
27
|
}, context: Context): Promise<{
|
|
28
28
|
[x: string]: unknown;
|
|
29
29
|
content: ({
|
|
@@ -16,6 +16,17 @@ const mcp_nest_1 = require("@rekog/mcp-nest");
|
|
|
16
16
|
const zod_1 = require("zod");
|
|
17
17
|
const anki_connect_client_1 = require("../../../clients/anki-connect.client");
|
|
18
18
|
const anki_utils_1 = require("../../../utils/anki.utils");
|
|
19
|
+
function preprocessNotesInput(val) {
|
|
20
|
+
if (typeof val === "string") {
|
|
21
|
+
try {
|
|
22
|
+
return JSON.parse(val);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return val;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return val;
|
|
29
|
+
}
|
|
19
30
|
const NoteInputSchema = zod_1.z.object({
|
|
20
31
|
deckName: zod_1.z.string().min(1).describe("The deck to add the note to"),
|
|
21
32
|
modelName: zod_1.z
|
|
@@ -65,24 +76,54 @@ let AddNotesTool = AddNotesTool_1 = class AddNotesTool {
|
|
|
65
76
|
this.ankiClient = ankiClient;
|
|
66
77
|
}
|
|
67
78
|
async addNotes({ notes }, context) {
|
|
79
|
+
let parsedNotes;
|
|
80
|
+
if (typeof notes === "string") {
|
|
81
|
+
try {
|
|
82
|
+
parsedNotes = JSON.parse(notes);
|
|
83
|
+
this.logger.warn("notes parameter passed as JSON string instead of array - auto-parsing");
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return (0, anki_utils_1.createErrorResponse)(new Error("Invalid notes parameter: expected array or valid JSON string"), { hint: "Pass notes as an array, not a string" });
|
|
87
|
+
}
|
|
88
|
+
if (!Array.isArray(parsedNotes)) {
|
|
89
|
+
return (0, anki_utils_1.createErrorResponse)(new Error("Invalid notes parameter: parsed value is not an array"), { hint: "notes must be an array of note objects" });
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
parsedNotes = notes;
|
|
94
|
+
}
|
|
68
95
|
try {
|
|
69
|
-
this.logger.log(`Adding ${
|
|
96
|
+
this.logger.log(`Adding ${parsedNotes.length} note(s) in batch`);
|
|
70
97
|
await context.reportProgress({ progress: 10, total: 100 });
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
98
|
+
const uniqueModels = [...new Set(parsedNotes.map((n) => n.modelName))];
|
|
99
|
+
const modelFieldsMap = new Map();
|
|
100
|
+
for (const modelName of uniqueModels) {
|
|
101
|
+
const fields = await this.ankiClient.invoke("modelFieldNames", { modelName });
|
|
102
|
+
if (!fields || fields.length === 0) {
|
|
103
|
+
return (0, anki_utils_1.createErrorResponse)(new Error(`Model "${modelName}" not found or has no fields`), {
|
|
104
|
+
modelName,
|
|
105
|
+
hint: "Use modelNames tool to see available models.",
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
modelFieldsMap.set(modelName, fields);
|
|
109
|
+
}
|
|
110
|
+
for (let i = 0; i < parsedNotes.length; i++) {
|
|
111
|
+
const note = parsedNotes[i];
|
|
112
|
+
const modelFields = modelFieldsMap.get(note.modelName);
|
|
113
|
+
const primaryField = modelFields[0];
|
|
114
|
+
const primaryValue = note.fields[primaryField];
|
|
115
|
+
if (!primaryValue || primaryValue.trim() === "") {
|
|
116
|
+
return (0, anki_utils_1.createErrorResponse)(new Error(`Note at index ${i}: Primary field "${primaryField}" cannot be empty.`), {
|
|
76
117
|
noteIndex: i,
|
|
77
118
|
deckName: note.deckName,
|
|
78
119
|
modelName: note.modelName,
|
|
79
|
-
|
|
80
|
-
hint:
|
|
120
|
+
primaryField,
|
|
121
|
+
hint: `The first field of the "${note.modelName}" model must have content. Other fields can be empty.`,
|
|
81
122
|
});
|
|
82
123
|
}
|
|
83
124
|
}
|
|
84
125
|
await context.reportProgress({ progress: 25, total: 100 });
|
|
85
|
-
const ankiNotes =
|
|
126
|
+
const ankiNotes = parsedNotes.map((note) => {
|
|
86
127
|
const noteParams = {
|
|
87
128
|
deckName: note.deckName,
|
|
88
129
|
modelName: note.modelName,
|
|
@@ -114,7 +155,7 @@ let AddNotesTool = AddNotesTool_1 = class AddNotesTool {
|
|
|
114
155
|
const noteIds = await this.ankiClient.invoke("addNotes", { notes: ankiNotes });
|
|
115
156
|
await context.reportProgress({ progress: 75, total: 100 });
|
|
116
157
|
const results = noteIds.map((noteId, index) => {
|
|
117
|
-
const note =
|
|
158
|
+
const note = parsedNotes[index];
|
|
118
159
|
if (noteId !== null) {
|
|
119
160
|
return {
|
|
120
161
|
index,
|
|
@@ -142,9 +183,9 @@ let AddNotesTool = AddNotesTool_1 = class AddNotesTool {
|
|
|
142
183
|
const failedCount = failedNotes.length;
|
|
143
184
|
await context.reportProgress({ progress: 100, total: 100 });
|
|
144
185
|
if (successCount === 0) {
|
|
145
|
-
this.logger.warn(`All ${
|
|
186
|
+
this.logger.warn(`All ${parsedNotes.length} notes failed to create`);
|
|
146
187
|
return (0, anki_utils_1.createErrorResponse)(new Error("All notes failed to create"), {
|
|
147
|
-
totalRequested:
|
|
188
|
+
totalRequested: parsedNotes.length,
|
|
148
189
|
successCount: 0,
|
|
149
190
|
failedCount,
|
|
150
191
|
results,
|
|
@@ -153,12 +194,12 @@ let AddNotesTool = AddNotesTool_1 = class AddNotesTool {
|
|
|
153
194
|
}
|
|
154
195
|
const createdNoteIds = successfulNotes.map((r) => r.noteId);
|
|
155
196
|
const message = failedCount > 0
|
|
156
|
-
? `Created ${successCount} of ${
|
|
197
|
+
? `Created ${successCount} of ${parsedNotes.length} notes. ${failedCount} note(s) failed.`
|
|
157
198
|
: `Successfully created all ${successCount} notes`;
|
|
158
199
|
this.logger.log(message);
|
|
159
200
|
return (0, anki_utils_1.createSuccessResponse)({
|
|
160
201
|
success: true,
|
|
161
|
-
totalRequested:
|
|
202
|
+
totalRequested: parsedNotes.length,
|
|
162
203
|
successCount,
|
|
163
204
|
failedCount,
|
|
164
205
|
noteIds: createdNoteIds,
|
|
@@ -174,27 +215,29 @@ let AddNotesTool = AddNotesTool_1 = class AddNotesTool {
|
|
|
174
215
|
if (error instanceof Error) {
|
|
175
216
|
if (error.message.includes("model")) {
|
|
176
217
|
return (0, anki_utils_1.createErrorResponse)(error, {
|
|
177
|
-
totalRequested:
|
|
218
|
+
totalRequested: parsedNotes.length,
|
|
178
219
|
hint: "One or more models not found. Use modelNames tool to see available models.",
|
|
179
220
|
});
|
|
180
221
|
}
|
|
181
222
|
if (error.message.includes("deck")) {
|
|
182
223
|
return (0, anki_utils_1.createErrorResponse)(error, {
|
|
183
|
-
totalRequested:
|
|
224
|
+
totalRequested: parsedNotes.length,
|
|
184
225
|
hint: "One or more decks not found. Use list_decks tool to see available decks or createDeck to create new ones.",
|
|
185
226
|
});
|
|
186
227
|
}
|
|
187
228
|
if (error.message.includes("field")) {
|
|
188
|
-
const uniqueModels = [
|
|
229
|
+
const uniqueModels = [
|
|
230
|
+
...new Set(parsedNotes.map((n) => n.modelName)),
|
|
231
|
+
];
|
|
189
232
|
return (0, anki_utils_1.createErrorResponse)(error, {
|
|
190
|
-
totalRequested:
|
|
233
|
+
totalRequested: parsedNotes.length,
|
|
191
234
|
modelsUsed: uniqueModels,
|
|
192
235
|
hint: "Field name mismatch. Use modelFieldNames tool to see required fields for each model. Common models: Basic (Front, Back), Cloze (Text, Back Extra), Basic (and reversed card) (Front, Back).",
|
|
193
236
|
});
|
|
194
237
|
}
|
|
195
238
|
}
|
|
196
239
|
return (0, anki_utils_1.createErrorResponse)(error, {
|
|
197
|
-
totalRequested:
|
|
240
|
+
totalRequested: parsedNotes.length,
|
|
198
241
|
hint: "Make sure Anki is running and all deck/model names are correct",
|
|
199
242
|
});
|
|
200
243
|
}
|
|
@@ -209,11 +252,11 @@ __decorate([
|
|
|
209
252
|
"Use modelNames to see available note types and modelFieldNames to see required fields. " +
|
|
210
253
|
"IMPORTANT: Only create notes that were explicitly requested by the user.",
|
|
211
254
|
parameters: zod_1.z.object({
|
|
212
|
-
notes: zod_1.z
|
|
255
|
+
notes: zod_1.z.preprocess(preprocessNotesInput, zod_1.z
|
|
213
256
|
.array(NoteInputSchema)
|
|
214
257
|
.min(1)
|
|
215
258
|
.max(25)
|
|
216
|
-
.describe("Array of notes to add (1-25 notes). Each note requires deckName, modelName, and fields."),
|
|
259
|
+
.describe("Array of notes to add (1-25 notes). Each note requires deckName, modelName, and fields.")),
|
|
217
260
|
}),
|
|
218
261
|
}),
|
|
219
262
|
__metadata("design:type", Function),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-notes.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/add-notes.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,8CAAuC;AAEvC,6BAAwB;AACxB,8EAAsE;AAEtE,0DAGgC;
|
|
1
|
+
{"version":3,"file":"add-notes.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/primitives/essential/tools/add-notes.tool.ts"],"names":[],"mappings":"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"}
|