@mhalder/qdrant-mcp-server 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +68 -0
  3. package/build/index.js +581 -517
  4. package/build/index.js.map +1 -1
  5. package/build/prompts/index.d.ts +7 -0
  6. package/build/prompts/index.d.ts.map +1 -0
  7. package/build/prompts/index.js +7 -0
  8. package/build/prompts/index.js.map +1 -0
  9. package/build/prompts/index.test.d.ts +2 -0
  10. package/build/prompts/index.test.d.ts.map +1 -0
  11. package/build/prompts/index.test.js +25 -0
  12. package/build/prompts/index.test.js.map +1 -0
  13. package/build/prompts/loader.d.ts +25 -0
  14. package/build/prompts/loader.d.ts.map +1 -0
  15. package/build/prompts/loader.js +81 -0
  16. package/build/prompts/loader.js.map +1 -0
  17. package/build/prompts/loader.test.d.ts +2 -0
  18. package/build/prompts/loader.test.d.ts.map +1 -0
  19. package/build/prompts/loader.test.js +417 -0
  20. package/build/prompts/loader.test.js.map +1 -0
  21. package/build/prompts/template.d.ts +20 -0
  22. package/build/prompts/template.d.ts.map +1 -0
  23. package/build/prompts/template.js +52 -0
  24. package/build/prompts/template.js.map +1 -0
  25. package/build/prompts/template.test.d.ts +2 -0
  26. package/build/prompts/template.test.d.ts.map +1 -0
  27. package/build/prompts/template.test.js +163 -0
  28. package/build/prompts/template.test.js.map +1 -0
  29. package/build/prompts/types.d.ts +34 -0
  30. package/build/prompts/types.d.ts.map +1 -0
  31. package/build/prompts/types.js +5 -0
  32. package/build/prompts/types.js.map +1 -0
  33. package/package.json +1 -1
  34. package/prompts.example.json +96 -0
  35. package/src/index.ts +639 -547
  36. package/src/prompts/index.test.ts +29 -0
  37. package/src/prompts/index.ts +7 -0
  38. package/src/prompts/loader.test.ts +494 -0
  39. package/src/prompts/loader.ts +90 -0
  40. package/src/prompts/template.test.ts +212 -0
  41. package/src/prompts/template.ts +69 -0
  42. package/src/prompts/types.ts +37 -0
@@ -0,0 +1,417 @@
1
+ import { mkdirSync, rmSync, writeFileSync } from "node:fs";
2
+ import { tmpdir } from "node:os";
3
+ import { join } from "node:path";
4
+ import { afterEach, beforeEach, describe, expect, it } from "vitest";
5
+ import { getPrompt, listPrompts, loadPromptsConfig } from "./loader.js";
6
+ describe("loadPromptsConfig", () => {
7
+ let testDir;
8
+ beforeEach(() => {
9
+ // Create a temporary directory for test files
10
+ testDir = join(tmpdir(), `prompts-test-${Date.now()}`);
11
+ mkdirSync(testDir, { recursive: true });
12
+ });
13
+ afterEach(() => {
14
+ // Clean up test directory
15
+ rmSync(testDir, { recursive: true, force: true });
16
+ });
17
+ it("should load valid prompts configuration", () => {
18
+ const config = {
19
+ prompts: [
20
+ {
21
+ name: "test_prompt",
22
+ description: "A test prompt",
23
+ arguments: [
24
+ {
25
+ name: "arg1",
26
+ description: "First argument",
27
+ required: true,
28
+ },
29
+ ],
30
+ template: "Test {{arg1}}",
31
+ },
32
+ ],
33
+ };
34
+ const filePath = join(testDir, "prompts.json");
35
+ writeFileSync(filePath, JSON.stringify(config, null, 2));
36
+ const result = loadPromptsConfig(filePath);
37
+ expect(result).toEqual(config);
38
+ expect(result.prompts).toHaveLength(1);
39
+ expect(result.prompts[0].name).toBe("test_prompt");
40
+ });
41
+ it("should load configuration with multiple prompts", () => {
42
+ const config = {
43
+ prompts: [
44
+ {
45
+ name: "prompt1",
46
+ description: "First prompt",
47
+ arguments: [],
48
+ template: "Template 1",
49
+ },
50
+ {
51
+ name: "prompt2",
52
+ description: "Second prompt",
53
+ arguments: [],
54
+ template: "Template 2",
55
+ },
56
+ ],
57
+ };
58
+ const filePath = join(testDir, "prompts.json");
59
+ writeFileSync(filePath, JSON.stringify(config, null, 2));
60
+ const result = loadPromptsConfig(filePath);
61
+ expect(result.prompts).toHaveLength(2);
62
+ expect(result.prompts[0].name).toBe("prompt1");
63
+ expect(result.prompts[1].name).toBe("prompt2");
64
+ });
65
+ it("should load configuration with optional arguments", () => {
66
+ const config = {
67
+ prompts: [
68
+ {
69
+ name: "test_prompt",
70
+ description: "A test prompt",
71
+ arguments: [
72
+ {
73
+ name: "required_arg",
74
+ description: "Required argument",
75
+ required: true,
76
+ },
77
+ {
78
+ name: "optional_arg",
79
+ description: "Optional argument",
80
+ required: false,
81
+ default: "default_value",
82
+ },
83
+ ],
84
+ template: "Test {{required_arg}} {{optional_arg}}",
85
+ },
86
+ ],
87
+ };
88
+ const filePath = join(testDir, "prompts.json");
89
+ writeFileSync(filePath, JSON.stringify(config, null, 2));
90
+ const result = loadPromptsConfig(filePath);
91
+ expect(result.prompts[0].arguments).toHaveLength(2);
92
+ expect(result.prompts[0].arguments[0].required).toBe(true);
93
+ expect(result.prompts[0].arguments[1].required).toBe(false);
94
+ expect(result.prompts[0].arguments[1].default).toBe("default_value");
95
+ });
96
+ it("should throw error for non-existent file", () => {
97
+ const filePath = join(testDir, "nonexistent.json");
98
+ expect(() => loadPromptsConfig(filePath)).toThrow();
99
+ });
100
+ it("should throw error for invalid JSON", () => {
101
+ const filePath = join(testDir, "invalid.json");
102
+ writeFileSync(filePath, "{ invalid json }");
103
+ expect(() => loadPromptsConfig(filePath)).toThrow();
104
+ });
105
+ it("should throw error for missing prompts array", () => {
106
+ const config = {};
107
+ const filePath = join(testDir, "missing-prompts.json");
108
+ writeFileSync(filePath, JSON.stringify(config, null, 2));
109
+ expect(() => loadPromptsConfig(filePath)).toThrow("Invalid prompts configuration");
110
+ });
111
+ it("should throw error for empty prompt name", () => {
112
+ const config = {
113
+ prompts: [
114
+ {
115
+ name: "",
116
+ description: "Test",
117
+ arguments: [],
118
+ template: "Test",
119
+ },
120
+ ],
121
+ };
122
+ const filePath = join(testDir, "empty-name.json");
123
+ writeFileSync(filePath, JSON.stringify(config, null, 2));
124
+ expect(() => loadPromptsConfig(filePath)).toThrow("Invalid prompts configuration");
125
+ });
126
+ it("should throw error for invalid prompt name format", () => {
127
+ const config = {
128
+ prompts: [
129
+ {
130
+ name: "Invalid-Name",
131
+ description: "Test",
132
+ arguments: [],
133
+ template: "Test",
134
+ },
135
+ ],
136
+ };
137
+ const filePath = join(testDir, "invalid-name.json");
138
+ writeFileSync(filePath, JSON.stringify(config, null, 2));
139
+ expect(() => loadPromptsConfig(filePath)).toThrow("Invalid prompts configuration");
140
+ expect(() => loadPromptsConfig(filePath)).toThrow("lowercase letters, numbers, and underscores");
141
+ });
142
+ it("should accept valid prompt name formats", () => {
143
+ const config = {
144
+ prompts: [
145
+ {
146
+ name: "valid_name_123",
147
+ description: "Test",
148
+ arguments: [],
149
+ template: "Test",
150
+ },
151
+ {
152
+ name: "another_valid",
153
+ description: "Test",
154
+ arguments: [],
155
+ template: "Test",
156
+ },
157
+ ],
158
+ };
159
+ const filePath = join(testDir, "valid-names.json");
160
+ writeFileSync(filePath, JSON.stringify(config, null, 2));
161
+ expect(() => loadPromptsConfig(filePath)).not.toThrow();
162
+ });
163
+ it("should throw error for duplicate prompt names", () => {
164
+ const config = {
165
+ prompts: [
166
+ {
167
+ name: "test_prompt",
168
+ description: "First",
169
+ arguments: [],
170
+ template: "Test 1",
171
+ },
172
+ {
173
+ name: "test_prompt",
174
+ description: "Second",
175
+ arguments: [],
176
+ template: "Test 2",
177
+ },
178
+ ],
179
+ };
180
+ const filePath = join(testDir, "duplicate-names.json");
181
+ writeFileSync(filePath, JSON.stringify(config, null, 2));
182
+ expect(() => loadPromptsConfig(filePath)).toThrow("Duplicate prompt name: test_prompt");
183
+ });
184
+ it("should throw error for duplicate argument names within a prompt", () => {
185
+ const config = {
186
+ prompts: [
187
+ {
188
+ name: "test_prompt",
189
+ description: "Test",
190
+ arguments: [
191
+ {
192
+ name: "arg1",
193
+ description: "First",
194
+ required: true,
195
+ },
196
+ {
197
+ name: "arg1",
198
+ description: "Second",
199
+ required: true,
200
+ },
201
+ ],
202
+ template: "Test",
203
+ },
204
+ ],
205
+ };
206
+ const filePath = join(testDir, "duplicate-args.json");
207
+ writeFileSync(filePath, JSON.stringify(config, null, 2));
208
+ expect(() => loadPromptsConfig(filePath)).toThrow('Duplicate argument name in prompt "test_prompt": arg1');
209
+ });
210
+ it("should allow same argument name in different prompts", () => {
211
+ const config = {
212
+ prompts: [
213
+ {
214
+ name: "prompt1",
215
+ description: "First",
216
+ arguments: [
217
+ {
218
+ name: "collection",
219
+ description: "Collection name",
220
+ required: true,
221
+ },
222
+ ],
223
+ template: "Test 1",
224
+ },
225
+ {
226
+ name: "prompt2",
227
+ description: "Second",
228
+ arguments: [
229
+ {
230
+ name: "collection",
231
+ description: "Collection name",
232
+ required: true,
233
+ },
234
+ ],
235
+ template: "Test 2",
236
+ },
237
+ ],
238
+ };
239
+ const filePath = join(testDir, "same-args.json");
240
+ writeFileSync(filePath, JSON.stringify(config, null, 2));
241
+ expect(() => loadPromptsConfig(filePath)).not.toThrow();
242
+ });
243
+ it("should throw error for missing argument name", () => {
244
+ const config = {
245
+ prompts: [
246
+ {
247
+ name: "test_prompt",
248
+ description: "Test",
249
+ arguments: [
250
+ {
251
+ name: "",
252
+ description: "Test",
253
+ required: true,
254
+ },
255
+ ],
256
+ template: "Test",
257
+ },
258
+ ],
259
+ };
260
+ const filePath = join(testDir, "empty-arg-name.json");
261
+ writeFileSync(filePath, JSON.stringify(config, null, 2));
262
+ expect(() => loadPromptsConfig(filePath)).toThrow("Invalid prompts configuration");
263
+ });
264
+ it("should throw error for missing argument description", () => {
265
+ const config = {
266
+ prompts: [
267
+ {
268
+ name: "test_prompt",
269
+ description: "Test",
270
+ arguments: [
271
+ {
272
+ name: "arg1",
273
+ description: "",
274
+ required: true,
275
+ },
276
+ ],
277
+ template: "Test",
278
+ },
279
+ ],
280
+ };
281
+ const filePath = join(testDir, "empty-arg-description.json");
282
+ writeFileSync(filePath, JSON.stringify(config, null, 2));
283
+ expect(() => loadPromptsConfig(filePath)).toThrow("Invalid prompts configuration");
284
+ });
285
+ it("should throw error for missing template", () => {
286
+ const config = {
287
+ prompts: [
288
+ {
289
+ name: "test_prompt",
290
+ description: "Test",
291
+ arguments: [],
292
+ template: "",
293
+ },
294
+ ],
295
+ };
296
+ const filePath = join(testDir, "empty-template.json");
297
+ writeFileSync(filePath, JSON.stringify(config, null, 2));
298
+ expect(() => loadPromptsConfig(filePath)).toThrow("Invalid prompts configuration");
299
+ });
300
+ it("should load empty prompts array", () => {
301
+ const config = {
302
+ prompts: [],
303
+ };
304
+ const filePath = join(testDir, "empty-prompts.json");
305
+ writeFileSync(filePath, JSON.stringify(config, null, 2));
306
+ const result = loadPromptsConfig(filePath);
307
+ expect(result.prompts).toHaveLength(0);
308
+ });
309
+ });
310
+ describe("getPrompt", () => {
311
+ it("should return prompt by name", () => {
312
+ const config = {
313
+ prompts: [
314
+ {
315
+ name: "test_prompt",
316
+ description: "A test prompt",
317
+ arguments: [],
318
+ template: "Test template",
319
+ },
320
+ {
321
+ name: "another_prompt",
322
+ description: "Another prompt",
323
+ arguments: [],
324
+ template: "Another template",
325
+ },
326
+ ],
327
+ };
328
+ const result = getPrompt(config, "test_prompt");
329
+ expect(result).toBeDefined();
330
+ expect(result?.name).toBe("test_prompt");
331
+ expect(result?.template).toBe("Test template");
332
+ });
333
+ it("should return undefined for non-existent prompt", () => {
334
+ const config = {
335
+ prompts: [
336
+ {
337
+ name: "test_prompt",
338
+ description: "A test prompt",
339
+ arguments: [],
340
+ template: "Test template",
341
+ },
342
+ ],
343
+ };
344
+ const result = getPrompt(config, "nonexistent");
345
+ expect(result).toBeUndefined();
346
+ });
347
+ it("should return undefined for empty config", () => {
348
+ const config = {
349
+ prompts: [],
350
+ };
351
+ const result = getPrompt(config, "test_prompt");
352
+ expect(result).toBeUndefined();
353
+ });
354
+ it("should find prompt case-sensitively", () => {
355
+ const config = {
356
+ prompts: [
357
+ {
358
+ name: "test_prompt",
359
+ description: "A test prompt",
360
+ arguments: [],
361
+ template: "Test template",
362
+ },
363
+ ],
364
+ };
365
+ const result1 = getPrompt(config, "test_prompt");
366
+ const result2 = getPrompt(config, "TEST_PROMPT");
367
+ expect(result1).toBeDefined();
368
+ expect(result2).toBeUndefined();
369
+ });
370
+ });
371
+ describe("listPrompts", () => {
372
+ it("should return all prompts", () => {
373
+ const config = {
374
+ prompts: [
375
+ {
376
+ name: "prompt1",
377
+ description: "First prompt",
378
+ arguments: [],
379
+ template: "Template 1",
380
+ },
381
+ {
382
+ name: "prompt2",
383
+ description: "Second prompt",
384
+ arguments: [],
385
+ template: "Template 2",
386
+ },
387
+ ],
388
+ };
389
+ const result = listPrompts(config);
390
+ expect(result).toHaveLength(2);
391
+ expect(result[0].name).toBe("prompt1");
392
+ expect(result[1].name).toBe("prompt2");
393
+ });
394
+ it("should return empty array for empty config", () => {
395
+ const config = {
396
+ prompts: [],
397
+ };
398
+ const result = listPrompts(config);
399
+ expect(result).toHaveLength(0);
400
+ });
401
+ it("should return copy of prompts array", () => {
402
+ const config = {
403
+ prompts: [
404
+ {
405
+ name: "test_prompt",
406
+ description: "A test prompt",
407
+ arguments: [],
408
+ template: "Test template",
409
+ },
410
+ ],
411
+ };
412
+ const result = listPrompts(config);
413
+ // Should return the same array reference (direct access)
414
+ expect(result).toBe(config.prompts);
415
+ });
416
+ });
417
+ //# sourceMappingURL=loader.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.test.js","sourceRoot":"","sources":["../../src/prompts/loader.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Simple template rendering engine for prompts
3
+ */
4
+ import type { PromptArgument, RenderedPrompt } from "./types.js";
5
+ /**
6
+ * Render a template string by replacing {{variable}} placeholders with actual values
7
+ * @param template Template string with {{variable}} placeholders
8
+ * @param args Record of argument values
9
+ * @param definitions Argument definitions with defaults
10
+ * @returns Rendered template
11
+ */
12
+ export declare function renderTemplate(template: string, args?: Record<string, string>, definitions?: PromptArgument[]): RenderedPrompt;
13
+ /**
14
+ * Validate that all required arguments are provided
15
+ * @param args Provided arguments
16
+ * @param definitions Argument definitions
17
+ * @throws Error if required arguments are missing
18
+ */
19
+ export declare function validateArguments(args: Record<string, string>, definitions: PromptArgument[]): void;
20
+ //# sourceMappingURL=template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/prompts/template.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjE;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACjC,WAAW,GAAE,cAAc,EAAO,GACjC,cAAc,CA4BhB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,WAAW,EAAE,cAAc,EAAE,GAC5B,IAAI,CAYN"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Simple template rendering engine for prompts
3
+ */
4
+ /**
5
+ * Render a template string by replacing {{variable}} placeholders with actual values
6
+ * @param template Template string with {{variable}} placeholders
7
+ * @param args Record of argument values
8
+ * @param definitions Argument definitions with defaults
9
+ * @returns Rendered template
10
+ */
11
+ export function renderTemplate(template, args = {}, definitions = []) {
12
+ let rendered = template;
13
+ // Create a map of defaults
14
+ const defaults = new Map();
15
+ for (const def of definitions) {
16
+ if (def.default !== undefined) {
17
+ defaults.set(def.name, def.default);
18
+ }
19
+ }
20
+ // Replace all {{variable}} placeholders
21
+ rendered = rendered.replace(/\{\{(\w+)\}\}/g, (match, varName) => {
22
+ // Check if value is provided in args
23
+ if (args[varName] !== undefined) {
24
+ return args[varName];
25
+ }
26
+ // Check if there's a default value
27
+ if (defaults.has(varName)) {
28
+ return defaults.get(varName);
29
+ }
30
+ // If no value and no default, keep the placeholder
31
+ return match;
32
+ });
33
+ return { text: rendered };
34
+ }
35
+ /**
36
+ * Validate that all required arguments are provided
37
+ * @param args Provided arguments
38
+ * @param definitions Argument definitions
39
+ * @throws Error if required arguments are missing
40
+ */
41
+ export function validateArguments(args, definitions) {
42
+ const missing = [];
43
+ for (const def of definitions) {
44
+ if (def.required && (args[def.name] === undefined || args[def.name] === "")) {
45
+ missing.push(def.name);
46
+ }
47
+ }
48
+ if (missing.length > 0) {
49
+ throw new Error(`Missing required arguments: ${missing.join(", ")}`);
50
+ }
51
+ }
52
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/prompts/template.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAgB,EAChB,OAA+B,EAAE,EACjC,cAAgC,EAAE;IAElC,IAAI,QAAQ,GAAG,QAAQ,CAAC;IAExB,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC9B,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAC/D,qCAAqC;QACrC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;QAED,mCAAmC;QACnC,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;QAChC,CAAC;QAED,mDAAmD;QACnD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAA4B,EAC5B,WAA6B;IAE7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,IAAI,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;YAC5E,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=template.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.test.d.ts","sourceRoot":"","sources":["../../src/prompts/template.test.ts"],"names":[],"mappings":""}