@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.
- package/LICENSE +21 -0
- package/README.md +245 -0
- package/dist/api/client.d.ts +21 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +123 -0
- package/dist/api/client.js.map +1 -0
- package/dist/config.d.ts +19 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +141 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +93 -0
- package/dist/index.js.map +1 -0
- package/dist/instructions.d.ts +2 -0
- package/dist/instructions.d.ts.map +1 -0
- package/dist/instructions.js +36 -0
- package/dist/instructions.js.map +1 -0
- package/dist/schemas/tools.d.ts +1846 -0
- package/dist/schemas/tools.d.ts.map +1 -0
- package/dist/schemas/tools.js +581 -0
- package/dist/schemas/tools.js.map +1 -0
- package/dist/tools/definitions.d.ts +12 -0
- package/dist/tools/definitions.d.ts.map +1 -0
- package/dist/tools/definitions.js +1522 -0
- package/dist/tools/definitions.js.map +1 -0
- package/dist/tools/filters.d.ts +13 -0
- package/dist/tools/filters.d.ts.map +1 -0
- package/dist/tools/filters.js +107 -0
- package/dist/tools/filters.js.map +1 -0
- package/dist/tools/handlers.d.ts +71 -0
- package/dist/tools/handlers.d.ts.map +1 -0
- package/dist/tools/handlers.js +3603 -0
- package/dist/tools/handlers.js.map +1 -0
- package/dist/tools/nodeRegistry.d.ts +37 -0
- package/dist/tools/nodeRegistry.d.ts.map +1 -0
- package/dist/tools/nodeRegistry.js +175 -0
- package/dist/tools/nodeRegistry.js.map +1 -0
- package/dist/tools/packageManagement.d.ts +140 -0
- package/dist/tools/packageManagement.d.ts.map +1 -0
- package/dist/tools/packageManagement.js +455 -0
- package/dist/tools/packageManagement.js.map +1 -0
- package/dist/tools/voiceChecklist.d.ts +80 -0
- package/dist/tools/voiceChecklist.d.ts.map +1 -0
- package/dist/tools/voiceChecklist.js +635 -0
- package/dist/tools/voiceChecklist.js.map +1 -0
- package/dist/tools/webchatSettings.d.ts +14 -0
- package/dist/tools/webchatSettings.d.ts.map +1 -0
- package/dist/tools/webchatSettings.js +462 -0
- package/dist/tools/webchatSettings.js.map +1 -0
- package/dist/utils/logger.d.ts +19 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +52 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/rateLimiter.d.ts +33 -0
- package/dist/utils/rateLimiter.d.ts.map +1 -0
- package/dist/utils/rateLimiter.js +68 -0
- package/dist/utils/rateLimiter.js.map +1 -0
- 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
|
+
}
|