@maxisoft/instantcms-mcp 1.2.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/LICENSE +21 -0
- package/README.md +308 -0
- package/dist/__tests__/artifact-tool.test.js +196 -0
- package/dist/__tests__/db-tool.test.js +152 -0
- package/dist/__tests__/define-tool.test.js +106 -0
- package/dist/__tests__/find-tool.test.js +185 -0
- package/dist/__tests__/get-component-api.test.js +144 -0
- package/dist/__tests__/hardening.test.js +73 -0
- package/dist/__tests__/hooks-tool.test.js +173 -0
- package/dist/__tests__/mcp-integration-extra.test.js +166 -0
- package/dist/__tests__/mcp-integration.test.js +53 -0
- package/dist/__tests__/pagination.test.js +114 -0
- package/dist/__tests__/performance-baseline.test.js +56 -0
- package/dist/__tests__/project-patch.test.js +144 -0
- package/dist/__tests__/project-source.test.js +44 -0
- package/dist/__tests__/project-workflows-extra.test.js +165 -0
- package/dist/__tests__/project-workflows.test.js +51 -0
- package/dist/__tests__/scaffold-addon-roundtrip.test.js +287 -0
- package/dist/__tests__/serialization.test.js +170 -0
- package/dist/__tests__/source-knowledge-parsers.test.js +42 -0
- package/dist/__tests__/template-development.test.js +78 -0
- package/dist/__tests__/template-productivity.test.js +87 -0
- package/dist/__tests__/tools.test.js +2143 -0
- package/dist/data/components.js +2818 -0
- package/dist/data/controllers-map.js +7571 -0
- package/dist/data/core-api.js +9356 -0
- package/dist/data/database-schema.js +4555 -0
- package/dist/data/events-map.js +1339 -0
- package/dist/data/fields-map.js +3692 -0
- package/dist/data/hooks.js +2257 -0
- package/dist/data/js-api.js +123 -0
- package/dist/data/libs-api.js +264 -0
- package/dist/data/routes-map.js +203 -0
- package/dist/data/schemas-validation.js +255 -0
- package/dist/data/schemas.js +1404 -0
- package/dist/data/traits-map.js +1004 -0
- package/dist/data/version-profiles.js +41 -0
- package/dist/data/widgets-map.js +131 -0
- package/dist/data/wysiwyg-map.js +486 -0
- package/dist/generated/components-source.js +14748 -0
- package/dist/generated/hooks-source.js +3399 -0
- package/dist/generated/knowledge-meta.js +101 -0
- package/dist/index.js +13 -0
- package/dist/registry/database-tools.js +112 -0
- package/dist/registry/extension-tools.js +473 -0
- package/dist/registry/generator-tools.js +506 -0
- package/dist/registry/knowledge-tools.js +441 -0
- package/dist/registry/language-tools.js +99 -0
- package/dist/registry/meta-tools.js +152 -0
- package/dist/registry/project-tools.js +48 -0
- package/dist/registry/resources.js +98 -0
- package/dist/registry/source-tools.js +211 -0
- package/dist/registry/template-development-tools.js +79 -0
- package/dist/server.js +32 -0
- package/dist/tools/addon-tool.js +1437 -0
- package/dist/tools/admin-partial-tool.js +498 -0
- package/dist/tools/api-tool.js +294 -0
- package/dist/tools/artifact-tool.js +95 -0
- package/dist/tools/cache-tool.js +360 -0
- package/dist/tools/component-tool.js +415 -0
- package/dist/tools/controllers-tool.js +125 -0
- package/dist/tools/cron-tool.js +197 -0
- package/dist/tools/crud-tool.js +659 -0
- package/dist/tools/db-tool.js +198 -0
- package/dist/tools/email-tool.js +222 -0
- package/dist/tools/external-api-tool.js +596 -0
- package/dist/tools/filter-tool.js +341 -0
- package/dist/tools/form-tool.js +275 -0
- package/dist/tools/grid-tool.js +189 -0
- package/dist/tools/hooks-tool.js +104 -0
- package/dist/tools/import-export-tool.js +548 -0
- package/dist/tools/lang-tool.js +251 -0
- package/dist/tools/layout-override-tool.js +125 -0
- package/dist/tools/layout-tool.js +548 -0
- package/dist/tools/maria-tool.js +127 -0
- package/dist/tools/mariadb.js +201 -0
- package/dist/tools/migration-tool.js +329 -0
- package/dist/tools/oauth-tool.js +520 -0
- package/dist/tools/parser/components-parser.js +76 -0
- package/dist/tools/parser/controllers-parser.js +313 -0
- package/dist/tools/parser/core-parser.js +294 -0
- package/dist/tools/parser/coverage-generator.js +424 -0
- package/dist/tools/parser/events-parser.js +127 -0
- package/dist/tools/parser/fields-parser.js +382 -0
- package/dist/tools/parser/hooks-parser.js +106 -0
- package/dist/tools/parser/sql-parser.js +197 -0
- package/dist/tools/parser/traits-parser.js +161 -0
- package/dist/tools/parser/widgets-parser.js +150 -0
- package/dist/tools/permission-tool.js +348 -0
- package/dist/tools/project-patch-tool.js +73 -0
- package/dist/tools/project-source-tool.js +188 -0
- package/dist/tools/project-workflow-tool.js +186 -0
- package/dist/tools/requirement-tool.js +212 -0
- package/dist/tools/scaffold-tool.js +815 -0
- package/dist/tools/seo-tool.js +412 -0
- package/dist/tools/source-tool.js +155 -0
- package/dist/tools/template-development-tool.js +271 -0
- package/dist/tools/template-overrides-tool.js +294 -0
- package/dist/tools/template-productivity-tool.js +319 -0
- package/dist/tools/template-tool.js +665 -0
- package/dist/tools/test-tool.js +183 -0
- package/dist/tools/webhook-tool.js +427 -0
- package/dist/tools/widget-tool.js +331 -0
- package/dist/tools/wysiwyg-tool.js +137 -0
- package/dist/types/scaffold.js +68 -0
- package/dist/utils/define-tool.js +37 -0
- package/dist/utils/find-tool.js +97 -0
- package/dist/utils/mcp-result.js +18 -0
- package/dist/utils/pagination.js +27 -0
- package/dist/utils/serialization.js +27 -0
- package/package.json +94 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.paginate = paginate;
|
|
4
|
+
function paginate(items, options = {}) {
|
|
5
|
+
const limit = Math.min(Math.max(options.limit ?? 50, 1), 200);
|
|
6
|
+
const offset = decodeCursor(options.cursor);
|
|
7
|
+
const page = items.slice(offset, offset + limit);
|
|
8
|
+
const nextOffset = offset + page.length;
|
|
9
|
+
return {
|
|
10
|
+
items: page,
|
|
11
|
+
page: {
|
|
12
|
+
limit,
|
|
13
|
+
returned: page.length,
|
|
14
|
+
total: items.length,
|
|
15
|
+
next_cursor: nextOffset < items.length ? encodeCursor(nextOffset) : null,
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function encodeCursor(offset) {
|
|
20
|
+
return Buffer.from(String(offset), 'utf8').toString('base64url');
|
|
21
|
+
}
|
|
22
|
+
function decodeCursor(cursor) {
|
|
23
|
+
if (!cursor)
|
|
24
|
+
return 0;
|
|
25
|
+
const value = Number(Buffer.from(cursor, 'base64url').toString('utf8'));
|
|
26
|
+
return Number.isSafeInteger(value) && value >= 0 ? value : 0;
|
|
27
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.escapeXml = escapeXml;
|
|
4
|
+
exports.quoteIni = quoteIni;
|
|
5
|
+
exports.quotePhp = quotePhp;
|
|
6
|
+
exports.quoteYaml = quoteYaml;
|
|
7
|
+
function escapeXml(value) {
|
|
8
|
+
return value
|
|
9
|
+
.replace(/&/g, '&')
|
|
10
|
+
.replace(/</g, '<')
|
|
11
|
+
.replace(/>/g, '>')
|
|
12
|
+
.replace(/\"/g, '"')
|
|
13
|
+
.replace(/'/g, ''');
|
|
14
|
+
}
|
|
15
|
+
function quoteIni(value) {
|
|
16
|
+
return `"${value
|
|
17
|
+
.replace(/\\/g, '\\\\')
|
|
18
|
+
.replace(/\"/g, '\\"')
|
|
19
|
+
.replace(/[\r\n]+/g, ' ')}"`;
|
|
20
|
+
}
|
|
21
|
+
function quotePhp(value) {
|
|
22
|
+
return `'${value.replace(/\\/g, '\\\\').replace(/'/g, "\\'")}'`;
|
|
23
|
+
}
|
|
24
|
+
/** A JSON string is also a valid YAML double-quoted scalar. */
|
|
25
|
+
function quoteYaml(value) {
|
|
26
|
+
return JSON.stringify(String(value));
|
|
27
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@maxisoft/instantcms-mcp",
|
|
3
|
+
"version": "1.2.3",
|
|
4
|
+
"description": "MCP server and reusable AI workflows for InstantCMS 2 development",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"instantcms-mcp": "dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "tsc",
|
|
11
|
+
"typecheck": "tsc --noEmit",
|
|
12
|
+
"check:ai": "node scripts/check-ai-configs.mjs",
|
|
13
|
+
"knowledge:build": "tsx scripts/build-knowledge.ts",
|
|
14
|
+
"knowledge:check": "npm run knowledge:build && git diff --exit-code -- src/generated/knowledge-meta.ts",
|
|
15
|
+
"check": "npm run knowledge:check && npm run typecheck && npm test -- --runInBand && npm run check:ai",
|
|
16
|
+
"dev": "tsx watch src/index.ts",
|
|
17
|
+
"start": "node dist/index.js",
|
|
18
|
+
"inspector": "npx @modelcontextprotocol/inspector tsx src/index.ts",
|
|
19
|
+
"test": "jest",
|
|
20
|
+
"test:integration": "jest src/__tests__/mcp-integration.test.ts --runInBand",
|
|
21
|
+
"test:coverage": "jest --coverage",
|
|
22
|
+
"lint": "eslint src/ --ext .ts --max-warnings=0",
|
|
23
|
+
"lint:fix": "eslint src/ --ext .ts --fix",
|
|
24
|
+
"format": "prettier --write \"src/**/*.ts\"",
|
|
25
|
+
"parse:database": "tsx src/tools/parser/sql-parser.ts",
|
|
26
|
+
"parse:events": "tsx src/tools/parser/events-parser.ts",
|
|
27
|
+
"parse:controllers": "tsx src/tools/parser/controllers-parser.ts",
|
|
28
|
+
"parse:widgets": "tsx src/tools/parser/widgets-parser.ts",
|
|
29
|
+
"parse:traits": "tsx src/tools/parser/traits-parser.ts",
|
|
30
|
+
"parse:fields": "tsx src/tools/parser/fields-parser.ts",
|
|
31
|
+
"parse:core": "tsx src/tools/parser/core-parser.ts",
|
|
32
|
+
"parse:hooks": "tsx src/tools/parser/hooks-parser.ts",
|
|
33
|
+
"parse:components": "tsx src/tools/parser/components-parser.ts",
|
|
34
|
+
"parse:all": "npm run parse:database && npm run parse:events && npm run parse:controllers && npm run parse:widgets && npm run parse:traits && npm run parse:fields && npm run parse:core && npm run parse:hooks && npm run parse:components && tsx src/tools/parser/coverage-generator.ts",
|
|
35
|
+
"knowledge:source:update": "tsx scripts/sync-knowledge.ts",
|
|
36
|
+
"knowledge:source:status": "tsx scripts/sync-knowledge.ts --status",
|
|
37
|
+
"knowledge:update": "tsx scripts/sync-knowledge.ts",
|
|
38
|
+
"coverage": "tsx src/tools/parser/coverage-generator.ts",
|
|
39
|
+
"prepare": "husky install",
|
|
40
|
+
"release:patch": "npm version patch",
|
|
41
|
+
"release:minor": "npm version minor",
|
|
42
|
+
"release:major": "npm version major"
|
|
43
|
+
},
|
|
44
|
+
"keywords": [
|
|
45
|
+
"mcp",
|
|
46
|
+
"instantcms",
|
|
47
|
+
"cms"
|
|
48
|
+
],
|
|
49
|
+
"author": "",
|
|
50
|
+
"license": "MIT",
|
|
51
|
+
"engines": {
|
|
52
|
+
"node": ">=18"
|
|
53
|
+
},
|
|
54
|
+
"files": [
|
|
55
|
+
"dist",
|
|
56
|
+
"README.md",
|
|
57
|
+
"LICENSE"
|
|
58
|
+
],
|
|
59
|
+
"type": "commonjs",
|
|
60
|
+
"lint-staged": {
|
|
61
|
+
"*.ts": [
|
|
62
|
+
"eslint --fix",
|
|
63
|
+
"prettier --write"
|
|
64
|
+
]
|
|
65
|
+
},
|
|
66
|
+
"publishConfig": {
|
|
67
|
+
"access": "public"
|
|
68
|
+
},
|
|
69
|
+
"dependencies": {
|
|
70
|
+
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
71
|
+
"fast-xml-parser": "^5.11.0",
|
|
72
|
+
"fflate": "^0.8.3",
|
|
73
|
+
"ini": "^6.0.0",
|
|
74
|
+
"mysql2": "^3.24.2",
|
|
75
|
+
"yaml": "^2.9.0",
|
|
76
|
+
"zod": "^4.4.3"
|
|
77
|
+
},
|
|
78
|
+
"devDependencies": {
|
|
79
|
+
"@eslint/js": "^9.39.5",
|
|
80
|
+
"@types/ini": "^4.1.1",
|
|
81
|
+
"@types/jest": "^30.0.0",
|
|
82
|
+
"@types/node": "^25.3.3",
|
|
83
|
+
"eslint": "^9.39.5",
|
|
84
|
+
"fast-check": "^3.23.2",
|
|
85
|
+
"husky": "^9.1.7",
|
|
86
|
+
"jest": "^30.3.0",
|
|
87
|
+
"lint-staged": "^16.4.0",
|
|
88
|
+
"prettier": "^3.8.1",
|
|
89
|
+
"ts-jest": "^29.4.6",
|
|
90
|
+
"tsx": "^4.23.12",
|
|
91
|
+
"typescript": "^5.9.3",
|
|
92
|
+
"typescript-eslint": "^8.68.0"
|
|
93
|
+
}
|
|
94
|
+
}
|