@cognigy/plugin-engine 1.0.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 (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +245 -0
  3. package/dist/api/client.d.ts +21 -0
  4. package/dist/api/client.d.ts.map +1 -0
  5. package/dist/api/client.js +123 -0
  6. package/dist/api/client.js.map +1 -0
  7. package/dist/config.d.ts +19 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +141 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/index.d.ts +3 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +93 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/instructions.d.ts +2 -0
  16. package/dist/instructions.d.ts.map +1 -0
  17. package/dist/instructions.js +36 -0
  18. package/dist/instructions.js.map +1 -0
  19. package/dist/schemas/tools.d.ts +1846 -0
  20. package/dist/schemas/tools.d.ts.map +1 -0
  21. package/dist/schemas/tools.js +581 -0
  22. package/dist/schemas/tools.js.map +1 -0
  23. package/dist/tools/definitions.d.ts +12 -0
  24. package/dist/tools/definitions.d.ts.map +1 -0
  25. package/dist/tools/definitions.js +1522 -0
  26. package/dist/tools/definitions.js.map +1 -0
  27. package/dist/tools/filters.d.ts +13 -0
  28. package/dist/tools/filters.d.ts.map +1 -0
  29. package/dist/tools/filters.js +107 -0
  30. package/dist/tools/filters.js.map +1 -0
  31. package/dist/tools/handlers.d.ts +71 -0
  32. package/dist/tools/handlers.d.ts.map +1 -0
  33. package/dist/tools/handlers.js +3603 -0
  34. package/dist/tools/handlers.js.map +1 -0
  35. package/dist/tools/nodeRegistry.d.ts +37 -0
  36. package/dist/tools/nodeRegistry.d.ts.map +1 -0
  37. package/dist/tools/nodeRegistry.js +175 -0
  38. package/dist/tools/nodeRegistry.js.map +1 -0
  39. package/dist/tools/packageManagement.d.ts +140 -0
  40. package/dist/tools/packageManagement.d.ts.map +1 -0
  41. package/dist/tools/packageManagement.js +455 -0
  42. package/dist/tools/packageManagement.js.map +1 -0
  43. package/dist/tools/voiceChecklist.d.ts +80 -0
  44. package/dist/tools/voiceChecklist.d.ts.map +1 -0
  45. package/dist/tools/voiceChecklist.js +635 -0
  46. package/dist/tools/voiceChecklist.js.map +1 -0
  47. package/dist/tools/webchatSettings.d.ts +14 -0
  48. package/dist/tools/webchatSettings.d.ts.map +1 -0
  49. package/dist/tools/webchatSettings.js +462 -0
  50. package/dist/tools/webchatSettings.js.map +1 -0
  51. package/dist/utils/logger.d.ts +19 -0
  52. package/dist/utils/logger.d.ts.map +1 -0
  53. package/dist/utils/logger.js +52 -0
  54. package/dist/utils/logger.js.map +1 -0
  55. package/dist/utils/rateLimiter.d.ts +33 -0
  56. package/dist/utils/rateLimiter.d.ts.map +1 -0
  57. package/dist/utils/rateLimiter.js +68 -0
  58. package/dist/utils/rateLimiter.js.map +1 -0
  59. package/package.json +64 -0
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Rate limiter to prevent API abuse
3
+ */
4
+ export class RateLimiter {
5
+ requests = new Map();
6
+ config;
7
+ cleanupInterval;
8
+ constructor(config) {
9
+ this.config = config;
10
+ // Clean up expired entries every minute
11
+ this.cleanupInterval = setInterval(() => this.cleanup(), 60000);
12
+ }
13
+ /**
14
+ * Stop the cleanup interval (important for tests and graceful shutdown)
15
+ */
16
+ destroy() {
17
+ if (this.cleanupInterval) {
18
+ clearInterval(this.cleanupInterval);
19
+ this.cleanupInterval = undefined;
20
+ }
21
+ }
22
+ /**
23
+ * Check if a request should be allowed
24
+ * @param key - Identifier for the rate limit bucket (e.g., API key, IP address)
25
+ * @returns true if request is allowed, false if rate limit exceeded
26
+ */
27
+ check(key) {
28
+ const now = Date.now();
29
+ const record = this.requests.get(key);
30
+ if (!record || now > record.resetTime) {
31
+ // New window, allow request
32
+ this.requests.set(key, {
33
+ count: 1,
34
+ resetTime: now + this.config.windowMs,
35
+ });
36
+ return true;
37
+ }
38
+ if (record.count < this.config.maxRequests) {
39
+ // Within limit, allow request
40
+ record.count++;
41
+ return true;
42
+ }
43
+ // Rate limit exceeded
44
+ return false;
45
+ }
46
+ /**
47
+ * Get remaining requests for a key
48
+ */
49
+ getRemaining(key) {
50
+ const record = this.requests.get(key);
51
+ if (!record || Date.now() > record.resetTime) {
52
+ return this.config.maxRequests;
53
+ }
54
+ return Math.max(0, this.config.maxRequests - record.count);
55
+ }
56
+ /**
57
+ * Clean up expired entries
58
+ */
59
+ cleanup() {
60
+ const now = Date.now();
61
+ for (const [key, record] of this.requests.entries()) {
62
+ if (now > record.resetTime) {
63
+ this.requests.delete(key);
64
+ }
65
+ }
66
+ }
67
+ }
68
+ //# sourceMappingURL=rateLimiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rateLimiter.js","sourceRoot":"","sources":["../../src/utils/rateLimiter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,MAAM,OAAO,WAAW;IACd,QAAQ,GAA+B,IAAI,GAAG,EAAE,CAAC;IACjD,MAAM,CAAkB;IACxB,eAAe,CAAkB;IAEzC,YAAY,MAAuB;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,wCAAwC;QACxC,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACpC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACnC,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,GAAW;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEtC,IAAI,CAAC,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YACtC,4BAA4B;YAC5B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE;gBACrB,KAAK,EAAE,CAAC;gBACR,SAAS,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;aACtC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC3C,8BAA8B;YAC9B,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QAED,sBAAsB;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,GAAW;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACK,OAAO;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YACpD,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC3B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
package/package.json ADDED
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "@cognigy/plugin-engine",
3
+ "version": "1.0.0",
4
+ "description": "MCP server engine for the Cognigy Platform plugin (Claude Code, Codex, and more)",
5
+ "main": "dist/index.js",
6
+ "type": "module",
7
+ "files": [
8
+ "dist",
9
+ "README.md"
10
+ ],
11
+ "scripts": {
12
+ "build": "node -e \"require('fs').rmSync('dist', { recursive: true, force: true })\" && npx tsc",
13
+ "dev": "tsx watch src/index.ts",
14
+ "start": "node dist/index.js",
15
+ "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
16
+ "prettier:check": "prettier --check",
17
+ "prettier:write": "prettier --write",
18
+ "lint": "eslint src --ext .ts",
19
+ "prepublishOnly": "npm run build",
20
+ "prepare": "husky"
21
+ },
22
+ "keywords": [
23
+ "mcp",
24
+ "cognigy",
25
+ "ai",
26
+ "model-context-protocol",
27
+ "mcp-server",
28
+ "conversational-ai",
29
+ "claude-code-plugin"
30
+ ],
31
+ "author": "Cognigy",
32
+ "license": "MIT",
33
+ "publishConfig": {
34
+ "access": "public"
35
+ },
36
+ "dependencies": {
37
+ "@modelcontextprotocol/sdk": "1.27.1",
38
+ "axios": "1.13.6",
39
+ "form-data": "4.0.5",
40
+ "zod": "3.25.76"
41
+ },
42
+ "devDependencies": {
43
+ "@commitlint/cli": "^20.5.0",
44
+ "@commitlint/config-conventional": "^20.5.0",
45
+ "@semantic-release/changelog": "^6.0.3",
46
+ "@semantic-release/commit-analyzer": "^13.0.1",
47
+ "@semantic-release/exec": "^7.1.0",
48
+ "@semantic-release/git": "^10.0.1",
49
+ "@semantic-release/github": "^12.0.8",
50
+ "@semantic-release/release-notes-generator": "^14.1.1",
51
+ "@types/jest": "29.5.14",
52
+ "@types/node": "20.19.35",
53
+ "@typescript-eslint/eslint-plugin": "6.21.0",
54
+ "@typescript-eslint/parser": "6.21.0",
55
+ "eslint": "8.57.1",
56
+ "husky": "^9.1.7",
57
+ "jest": "29.7.0",
58
+ "prettier": "3.6.2",
59
+ "semantic-release": "^25.0.3",
60
+ "ts-jest": "29.4.6",
61
+ "tsx": "4.21.0",
62
+ "typescript": "5.9.3"
63
+ }
64
+ }