@vjeko.com/al-object-id-ninja-mcp 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 (65) hide show
  1. package/README.md +115 -0
  2. package/dist/src/al-app/ALApp.d.ts +52 -0
  3. package/dist/src/al-app/ALApp.js +130 -0
  4. package/dist/src/al-app/ALApp.js.map +1 -0
  5. package/dist/src/al-app/ALAppManifest.d.ts +39 -0
  6. package/dist/src/al-app/ALAppManifest.js +114 -0
  7. package/dist/src/al-app/ALAppManifest.js.map +1 -0
  8. package/dist/src/al-app/AppResolver.d.ts +24 -0
  9. package/dist/src/al-app/AppResolver.js +100 -0
  10. package/dist/src/al-app/AppResolver.js.map +1 -0
  11. package/dist/src/al-app/ObjIdConfig.d.ts +23 -0
  12. package/dist/src/al-app/ObjIdConfig.js +84 -0
  13. package/dist/src/al-app/ObjIdConfig.js.map +1 -0
  14. package/dist/src/al-app/index.d.ts +4 -0
  15. package/dist/src/al-app/index.js +12 -0
  16. package/dist/src/al-app/index.js.map +1 -0
  17. package/dist/src/backend/BackendClient.d.ts +35 -0
  18. package/dist/src/backend/BackendClient.js +129 -0
  19. package/dist/src/backend/BackendClient.js.map +1 -0
  20. package/dist/src/backend/index.d.ts +1 -0
  21. package/dist/src/backend/index.js +6 -0
  22. package/dist/src/backend/index.js.map +1 -0
  23. package/dist/src/index.d.ts +2 -0
  24. package/dist/src/index.js +9 -0
  25. package/dist/src/index.js.map +1 -0
  26. package/dist/src/server.d.ts +3 -0
  27. package/dist/src/server.js +108 -0
  28. package/dist/src/server.js.map +1 -0
  29. package/dist/src/tools/AssignObjectIdTool.d.ts +16 -0
  30. package/dist/src/tools/AssignObjectIdTool.js +83 -0
  31. package/dist/src/tools/AssignObjectIdTool.js.map +1 -0
  32. package/dist/src/tools/UnassignObjectIdTool.d.ts +16 -0
  33. package/dist/src/tools/UnassignObjectIdTool.js +50 -0
  34. package/dist/src/tools/UnassignObjectIdTool.js.map +1 -0
  35. package/dist/src/tools/index.d.ts +3 -0
  36. package/dist/src/tools/index.js +8 -0
  37. package/dist/src/tools/index.js.map +1 -0
  38. package/dist/src/types/ALObjectType.d.ts +15 -0
  39. package/dist/src/types/ALObjectType.js +20 -0
  40. package/dist/src/types/ALObjectType.js.map +1 -0
  41. package/dist/src/types/ALRange.d.ts +7 -0
  42. package/dist/src/types/ALRange.js +3 -0
  43. package/dist/src/types/ALRange.js.map +1 -0
  44. package/dist/src/types/NextObjectIdInfo.d.ts +9 -0
  45. package/dist/src/types/NextObjectIdInfo.js +3 -0
  46. package/dist/src/types/NextObjectIdInfo.js.map +1 -0
  47. package/dist/src/types/NinjaALRange.d.ts +4 -0
  48. package/dist/src/types/NinjaALRange.js +3 -0
  49. package/dist/src/types/NinjaALRange.js.map +1 -0
  50. package/dist/src/types/PropertyBag.d.ts +3 -0
  51. package/dist/src/types/PropertyBag.js +3 -0
  52. package/dist/src/types/PropertyBag.js.map +1 -0
  53. package/dist/src/types/index.d.ts +5 -0
  54. package/dist/src/types/index.js +6 -0
  55. package/dist/src/types/index.js.map +1 -0
  56. package/dist/src/utils/getSha256.d.ts +1 -0
  57. package/dist/src/utils/getSha256.js +43 -0
  58. package/dist/src/utils/getSha256.js.map +1 -0
  59. package/dist/src/utils/index.d.ts +2 -0
  60. package/dist/src/utils/index.js +9 -0
  61. package/dist/src/utils/index.js.map +1 -0
  62. package/dist/src/utils/validation.d.ts +2 -0
  63. package/dist/src/utils/validation.js +20 -0
  64. package/dist/src/utils/validation.js.map +1 -0
  65. package/package.json +59 -0
@@ -0,0 +1,15 @@
1
+ export declare enum ALObjectType {
2
+ codeunit = "codeunit",
3
+ enum = "enum",
4
+ enumextension = "enumextension",
5
+ page = "page",
6
+ pageextension = "pageextension",
7
+ permissionset = "permissionset",
8
+ permissionsetextension = "permissionsetextension",
9
+ query = "query",
10
+ report = "report",
11
+ reportextension = "reportextension",
12
+ table = "table",
13
+ tableextension = "tableextension",
14
+ xmlport = "xmlport"
15
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ALObjectType = void 0;
4
+ var ALObjectType;
5
+ (function (ALObjectType) {
6
+ ALObjectType["codeunit"] = "codeunit";
7
+ ALObjectType["enum"] = "enum";
8
+ ALObjectType["enumextension"] = "enumextension";
9
+ ALObjectType["page"] = "page";
10
+ ALObjectType["pageextension"] = "pageextension";
11
+ ALObjectType["permissionset"] = "permissionset";
12
+ ALObjectType["permissionsetextension"] = "permissionsetextension";
13
+ ALObjectType["query"] = "query";
14
+ ALObjectType["report"] = "report";
15
+ ALObjectType["reportextension"] = "reportextension";
16
+ ALObjectType["table"] = "table";
17
+ ALObjectType["tableextension"] = "tableextension";
18
+ ALObjectType["xmlport"] = "xmlport";
19
+ })(ALObjectType || (exports.ALObjectType = ALObjectType = {}));
20
+ //# sourceMappingURL=ALObjectType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ALObjectType.js","sourceRoot":"","sources":["../../../src/types/ALObjectType.ts"],"names":[],"mappings":";;;AAAA,IAAY,YAcX;AAdD,WAAY,YAAY;IACpB,qCAAqB,CAAA;IACrB,6BAAa,CAAA;IACb,+CAA+B,CAAA;IAC/B,6BAAa,CAAA;IACb,+CAA+B,CAAA;IAC/B,+CAA+B,CAAA;IAC/B,iEAAiD,CAAA;IACjD,+BAAe,CAAA;IACf,iCAAiB,CAAA;IACjB,mDAAmC,CAAA;IACnC,+BAAe,CAAA;IACf,iDAAiC,CAAA;IACjC,mCAAmB,CAAA;AACvB,CAAC,EAdW,YAAY,4BAAZ,YAAY,QAcvB"}
@@ -0,0 +1,7 @@
1
+ export interface ALRange {
2
+ from: number;
3
+ to: number;
4
+ }
5
+ export interface ALRanges extends Array<ALRange> {
6
+ mandatory?: boolean;
7
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ALRange.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ALRange.js","sourceRoot":"","sources":["../../../src/types/ALRange.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ export interface NextObjectIdInfo {
2
+ id: number | number[];
3
+ updated: boolean;
4
+ available: boolean;
5
+ updateAttempts: number;
6
+ hasConsumption: boolean;
7
+ perRange?: boolean;
8
+ require?: number;
9
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=NextObjectIdInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NextObjectIdInfo.js","sourceRoot":"","sources":["../../../src/types/NextObjectIdInfo.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import { ALRange } from "./ALRange";
2
+ export interface NinjaALRange extends ALRange {
3
+ description: string;
4
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=NinjaALRange.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NinjaALRange.js","sourceRoot":"","sources":["../../../src/types/NinjaALRange.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export interface PropertyBag<T> {
2
+ [key: string]: T;
3
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=PropertyBag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropertyBag.js","sourceRoot":"","sources":["../../../src/types/PropertyBag.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export { ALRange, ALRanges } from "./ALRange";
2
+ export { NinjaALRange } from "./NinjaALRange";
3
+ export { ALObjectType } from "./ALObjectType";
4
+ export { NextObjectIdInfo } from "./NextObjectIdInfo";
5
+ export { PropertyBag } from "./PropertyBag";
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ALObjectType = void 0;
4
+ var ALObjectType_1 = require("./ALObjectType");
5
+ Object.defineProperty(exports, "ALObjectType", { enumerable: true, get: function () { return ALObjectType_1.ALObjectType; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";;;AAEA,+CAA8C;AAArC,4GAAA,YAAY,OAAA"}
@@ -0,0 +1 @@
1
+ export declare function getSha256(input: string): string;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.getSha256 = getSha256;
37
+ const crypto = __importStar(require("crypto"));
38
+ function getSha256(input) {
39
+ const sha256 = crypto.createHash("sha256");
40
+ sha256.update(input);
41
+ return sha256.digest("hex");
42
+ }
43
+ //# sourceMappingURL=getSha256.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSha256.js","sourceRoot":"","sources":["../../../src/utils/getSha256.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,8BAIC;AAND,+CAAiC;AAEjC,SAAgB,SAAS,CAAC,KAAa;IACnC,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { getSha256 } from "./getSha256";
2
+ export { isValidObjectType, getValidTypesMessage } from "./validation";
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getValidTypesMessage = exports.isValidObjectType = exports.getSha256 = void 0;
4
+ var getSha256_1 = require("./getSha256");
5
+ Object.defineProperty(exports, "getSha256", { enumerable: true, get: function () { return getSha256_1.getSha256; } });
6
+ var validation_1 = require("./validation");
7
+ Object.defineProperty(exports, "isValidObjectType", { enumerable: true, get: function () { return validation_1.isValidObjectType; } });
8
+ Object.defineProperty(exports, "getValidTypesMessage", { enumerable: true, get: function () { return validation_1.getValidTypesMessage; } });
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,2CAAuE;AAA9D,+GAAA,iBAAiB,OAAA;AAAE,kHAAA,oBAAoB,OAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function isValidObjectType(type: string): boolean;
2
+ export declare function getValidTypesMessage(): string;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isValidObjectType = isValidObjectType;
4
+ exports.getValidTypesMessage = getValidTypesMessage;
5
+ const ALObjectType_1 = require("../types/ALObjectType");
6
+ const VALID_OBJECT_TYPES = new Set(Object.values(ALObjectType_1.ALObjectType));
7
+ function isValidObjectType(type) {
8
+ const lower = type.toLowerCase();
9
+ if (VALID_OBJECT_TYPES.has(lower)) {
10
+ return true;
11
+ }
12
+ if (/^table_\d+$/.test(lower) || /^enum_\d+$/.test(lower)) {
13
+ return true;
14
+ }
15
+ return false;
16
+ }
17
+ function getValidTypesMessage() {
18
+ return `Valid types: ${Array.from(VALID_OBJECT_TYPES).join(", ")}, table_{tableId} for fields, enum_{enumId} for enum values.`;
19
+ }
20
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/utils/validation.ts"],"names":[],"mappings":";;AAIA,8CASC;AAED,oDAEC;AAjBD,wDAAqD;AAErD,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,2BAAY,CAAC,CAAC,CAAC;AAEhE,SAAgB,iBAAiB,CAAC,IAAY;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,IAAI,kBAAkB,CAAC,GAAG,CAAC,KAAqB,CAAC,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAgB,oBAAoB;IAChC,OAAO,gBAAgB,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,8DAA8D,CAAC;AACnI,CAAC"}
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "@vjeko.com/al-object-id-ninja-mcp",
3
+ "version": "1.0.0",
4
+ "description": "MCP Server for AL Object ID Ninja - Assign and manage AL object IDs for Business Central development",
5
+ "main": "dist/src/index.js",
6
+ "bin": {
7
+ "al-object-id-ninja-mcp": "dist/src/index.js"
8
+ },
9
+ "type": "commonjs",
10
+ "files": [
11
+ "dist"
12
+ ],
13
+ "scripts": {
14
+ "build": "rimraf dist && tsc",
15
+ "prepublishOnly": "npm run build",
16
+ "test": "jest",
17
+ "start": "node dist/src/index.js"
18
+ },
19
+ "keywords": [
20
+ "mcp",
21
+ "mcp-server",
22
+ "model-context-protocol",
23
+ "al",
24
+ "business-central",
25
+ "dynamics-365",
26
+ "object-id",
27
+ "al-object-id-ninja",
28
+ "copilot"
29
+ ],
30
+ "author": {
31
+ "name": "Vjekoslav Babić",
32
+ "email": "vjeko@vjeko.hr",
33
+ "url": "https://vjeko.com"
34
+ },
35
+ "license": "MIT",
36
+ "repository": {
37
+ "type": "git",
38
+ "url": "git+https://github.com/vjekob/al-objid.git"
39
+ },
40
+ "homepage": "https://alid.ninja",
41
+ "bugs": {
42
+ "url": "https://github.com/vjekob/al-objid/issues"
43
+ },
44
+ "dependencies": {
45
+ "@modelcontextprotocol/sdk": "^1.0.0",
46
+ "comment-json": "^4.2.3"
47
+ },
48
+ "devDependencies": {
49
+ "@types/jest": "^29.5.14",
50
+ "@types/node": "^22.10.9",
51
+ "jest": "^30.0.0-alpha.7",
52
+ "rimraf": "^5.0.10",
53
+ "ts-jest": "^29.2.5",
54
+ "typescript": "^5.7.3"
55
+ },
56
+ "engines": {
57
+ "node": ">=18"
58
+ }
59
+ }