mcp-creatio 0.4.0 → 0.4.1

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 (160) hide show
  1. package/dist/cli.d.ts +5 -0
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +18 -11
  4. package/dist/cli.js.map +1 -1
  5. package/dist/creatio/auth/auth.d.ts +2 -0
  6. package/dist/creatio/auth/auth.d.ts.map +1 -1
  7. package/dist/creatio/auth/auth.js.map +1 -1
  8. package/dist/creatio/auth/providers/base-provider.d.ts +1 -0
  9. package/dist/creatio/auth/providers/base-provider.d.ts.map +1 -1
  10. package/dist/creatio/auth/providers/base-provider.js +3 -0
  11. package/dist/creatio/auth/providers/base-provider.js.map +1 -1
  12. package/dist/creatio/auth/providers/oauth2-code-provider.d.ts +3 -0
  13. package/dist/creatio/auth/providers/oauth2-code-provider.d.ts.map +1 -1
  14. package/dist/creatio/auth/providers/oauth2-code-provider.js +30 -24
  15. package/dist/creatio/auth/providers/oauth2-code-provider.js.map +1 -1
  16. package/dist/creatio/services/http-client.d.ts.map +1 -1
  17. package/dist/creatio/services/http-client.js +0 -1
  18. package/dist/creatio/services/http-client.js.map +1 -1
  19. package/dist/creatio/services/metadata-store.d.ts +5 -0
  20. package/dist/creatio/services/metadata-store.d.ts.map +1 -1
  21. package/dist/creatio/services/metadata-store.js +18 -6
  22. package/dist/creatio/services/metadata-store.js.map +1 -1
  23. package/dist/creatio/services/odata-crud-provider.d.ts +2 -0
  24. package/dist/creatio/services/odata-crud-provider.d.ts.map +1 -1
  25. package/dist/creatio/services/odata-crud-provider.js +10 -1
  26. package/dist/creatio/services/odata-crud-provider.js.map +1 -1
  27. package/dist/server/http/creatio-oauth-handlers.d.ts +0 -1
  28. package/dist/server/http/creatio-oauth-handlers.d.ts.map +1 -1
  29. package/dist/server/http/creatio-oauth-handlers.js +30 -23
  30. package/dist/server/http/creatio-oauth-handlers.js.map +1 -1
  31. package/dist/server/http/httpServer.d.ts +9 -0
  32. package/dist/server/http/httpServer.d.ts.map +1 -1
  33. package/dist/server/http/httpServer.js +34 -11
  34. package/dist/server/http/httpServer.js.map +1 -1
  35. package/dist/server/http/mcp-handlers.d.ts.map +1 -1
  36. package/dist/server/http/mcp-handlers.js +4 -1
  37. package/dist/server/http/mcp-handlers.js.map +1 -1
  38. package/dist/server/http/mcp-oauth-handlers.d.ts.map +1 -1
  39. package/dist/server/http/mcp-oauth-handlers.js +18 -6
  40. package/dist/server/http/mcp-oauth-handlers.js.map +1 -1
  41. package/dist/server/http/middleware.d.ts +7 -0
  42. package/dist/server/http/middleware.d.ts.map +1 -1
  43. package/dist/server/http/middleware.js +23 -0
  44. package/dist/server/http/middleware.js.map +1 -1
  45. package/dist/server/http/rate-limiter.d.ts +24 -0
  46. package/dist/server/http/rate-limiter.d.ts.map +1 -0
  47. package/dist/server/http/rate-limiter.js +42 -0
  48. package/dist/server/http/rate-limiter.js.map +1 -0
  49. package/dist/server/oauth/oauth-server.d.ts +0 -1
  50. package/dist/server/oauth/oauth-server.d.ts.map +1 -1
  51. package/dist/server/oauth/oauth-server.js +11 -21
  52. package/dist/server/oauth/oauth-server.js.map +1 -1
  53. package/dist/server/oauth/storage.d.ts +0 -2
  54. package/dist/server/oauth/storage.d.ts.map +1 -1
  55. package/dist/server/oauth/storage.js +0 -6
  56. package/dist/server/oauth/storage.js.map +1 -1
  57. package/dist/server/oauth/validators.d.ts +6 -0
  58. package/dist/server/oauth/validators.d.ts.map +1 -1
  59. package/dist/server/oauth/validators.js +28 -0
  60. package/dist/server/oauth/validators.js.map +1 -1
  61. package/dist/services/session-context.d.ts +8 -7
  62. package/dist/services/session-context.d.ts.map +1 -1
  63. package/dist/services/session-context.js +7 -27
  64. package/dist/services/session-context.js.map +1 -1
  65. package/package.json +12 -3
  66. package/.dockerignore +0 -12
  67. package/.editorconfig +0 -14
  68. package/.eslintrc.cjs +0 -18
  69. package/.gitattributes +0 -8
  70. package/.github/workflows/docker-publish.yml +0 -50
  71. package/.prettierignore +0 -3
  72. package/.prettierrc +0 -9
  73. package/.vscode/launch.json +0 -23
  74. package/.vscode/mcp.json +0 -13
  75. package/.vscode/settings.json +0 -16
  76. package/Agent.md +0 -190
  77. package/Debug.md +0 -32
  78. package/Dockerfile +0 -23
  79. package/docs/coding-style.md +0 -30
  80. package/eslint.config.cjs +0 -95
  81. package/src/cli.ts +0 -162
  82. package/src/config-builder.ts +0 -76
  83. package/src/consts.ts +0 -3
  84. package/src/creatio/auth/auth-manager.ts +0 -27
  85. package/src/creatio/auth/auth.ts +0 -31
  86. package/src/creatio/auth/index.ts +0 -3
  87. package/src/creatio/auth/providers/base-oauth2-provider.ts +0 -62
  88. package/src/creatio/auth/providers/base-provider.ts +0 -42
  89. package/src/creatio/auth/providers/index.ts +0 -4
  90. package/src/creatio/auth/providers/legacy-provider.ts +0 -70
  91. package/src/creatio/auth/providers/oauth2-code-provider.ts +0 -252
  92. package/src/creatio/auth/providers/oauth2-provider.ts +0 -91
  93. package/src/creatio/auth/providers/type.ts +0 -5
  94. package/src/creatio/client-config.ts +0 -34
  95. package/src/creatio/engines/admin-operation/admin-operation-engine.ts +0 -44
  96. package/src/creatio/engines/configuration/configuration-engine.ts +0 -26
  97. package/src/creatio/engines/crud/crud-engine.ts +0 -47
  98. package/src/creatio/engines/engine-manager.ts +0 -157
  99. package/src/creatio/engines/engine-registry.ts +0 -39
  100. package/src/creatio/engines/engine.ts +0 -3
  101. package/src/creatio/engines/feature/feature-engine.ts +0 -20
  102. package/src/creatio/engines/index.ts +0 -10
  103. package/src/creatio/engines/process/process-engine.ts +0 -20
  104. package/src/creatio/engines/sys-settings/sys-settings-engine.ts +0 -41
  105. package/src/creatio/engines/user/user-engine.ts +0 -20
  106. package/src/creatio/index.ts +0 -6
  107. package/src/creatio/provider-context.ts +0 -21
  108. package/src/creatio/providers/admin-operation-provider.ts +0 -34
  109. package/src/creatio/providers/configuration-provider.ts +0 -22
  110. package/src/creatio/providers/crud-provider.ts +0 -45
  111. package/src/creatio/providers/feature-provider.ts +0 -10
  112. package/src/creatio/providers/index.ts +0 -7
  113. package/src/creatio/providers/process-provider.ts +0 -15
  114. package/src/creatio/providers/sys-settings-provider.ts +0 -63
  115. package/src/creatio/providers/user-provider.ts +0 -12
  116. package/src/creatio/services/admin-operation-service-provider.ts +0 -115
  117. package/src/creatio/services/configuration-service-provider.ts +0 -127
  118. package/src/creatio/services/creatio-service-context.ts +0 -55
  119. package/src/creatio/services/feature-service-provider.ts +0 -60
  120. package/src/creatio/services/http-client.ts +0 -174
  121. package/src/creatio/services/index.ts +0 -10
  122. package/src/creatio/services/metadata-store.ts +0 -181
  123. package/src/creatio/services/odata-crud-provider.ts +0 -210
  124. package/src/creatio/services/process-service-provider.ts +0 -76
  125. package/src/creatio/services/sys-settings-service-provider.ts +0 -192
  126. package/src/creatio/services/user-info-provider.ts +0 -41
  127. package/src/index.ts +0 -44
  128. package/src/log.ts +0 -183
  129. package/src/server/http/creatio-oauth-handlers.ts +0 -146
  130. package/src/server/http/httpServer.ts +0 -150
  131. package/src/server/http/index.ts +0 -5
  132. package/src/server/http/mcp-handlers.ts +0 -92
  133. package/src/server/http/mcp-oauth-handlers.ts +0 -108
  134. package/src/server/http/middleware.ts +0 -91
  135. package/src/server/index.ts +0 -2
  136. package/src/server/mcp/filters.ts +0 -97
  137. package/src/server/mcp/index.ts +0 -1
  138. package/src/server/mcp/prompts-data.ts +0 -1292
  139. package/src/server/mcp/server.ts +0 -442
  140. package/src/server/mcp/tools-data.ts +0 -748
  141. package/src/server/oauth/client-manager.ts +0 -47
  142. package/src/server/oauth/index.ts +0 -6
  143. package/src/server/oauth/oauth-server.ts +0 -185
  144. package/src/server/oauth/storage.ts +0 -106
  145. package/src/server/oauth/token-manager.ts +0 -80
  146. package/src/server/oauth/types.ts +0 -55
  147. package/src/server/oauth/validators.ts +0 -56
  148. package/src/services/index.ts +0 -2
  149. package/src/services/session-context.ts +0 -232
  150. package/src/services/token-refresh-scheduler.ts +0 -68
  151. package/src/types/index.ts +0 -1
  152. package/src/types/network.ts +0 -7
  153. package/src/utils/context.ts +0 -49
  154. package/src/utils/env.ts +0 -12
  155. package/src/utils/index.ts +0 -5
  156. package/src/utils/mcp.ts +0 -8
  157. package/src/utils/network.ts +0 -65
  158. package/src/utils/pkce.ts +0 -39
  159. package/src/version.ts +0 -15
  160. package/tsconfig.json +0 -28
@@ -1,91 +0,0 @@
1
- import { randomUUID } from 'crypto';
2
-
3
- import log from '../../log';
4
- import { getClientIp } from '../../utils';
5
-
6
- import type { OAuthServer } from '../oauth';
7
- import type { NextFunction, Request, Response } from 'express';
8
-
9
- export class HttpMiddleware {
10
- private readonly _oauthServer: OAuthServer;
11
-
12
- constructor(oauthServer: OAuthServer) {
13
- this._oauthServer = oauthServer;
14
- }
15
-
16
- public bearerAuth() {
17
- return (req: Request, res: Response, next: NextFunction) => {
18
- const authHeader = req.headers.authorization;
19
- if (authHeader && authHeader.startsWith('Bearer ')) {
20
- const token = authHeader.slice(7);
21
- const userKey = this._oauthServer.validateAccessToken(token);
22
- if (userKey) {
23
- (req as any).userKey = userKey;
24
- return next();
25
- }
26
- }
27
- res.status(401).json({
28
- error: 'unauthorized',
29
- error_description:
30
- 'Valid Bearer token required. Use OAuth 2.1 flow to obtain access token.',
31
- });
32
- };
33
- }
34
-
35
- public errorHandler() {
36
- return (error: Error, req: Request, res: Response, next: NextFunction) => {
37
- log.error('http.error', {
38
- error: error.message,
39
- stack: error.stack,
40
- path: req.path,
41
- method: req.method,
42
- });
43
- if (res.headersSent) {
44
- return next(error);
45
- }
46
- res.status(500).json({
47
- error: 'server_error',
48
- error_description: 'Internal server error',
49
- });
50
- };
51
- }
52
-
53
- public correlationId() {
54
- return (req: Request, res: Response, next: NextFunction) => {
55
- const correlationId = (req.headers['x-correlation-id'] as string) || randomUUID();
56
- log.setCorrelationId(correlationId);
57
- (req as any).correlationId = correlationId;
58
- res.setHeader('X-Correlation-ID', correlationId);
59
- res.on('finish', () => {
60
- log.clearCorrelationId();
61
- });
62
- next();
63
- };
64
- }
65
-
66
- public requestLogging() {
67
- return (req: Request, res: Response, next: NextFunction) => {
68
- const startTime = Date.now();
69
- const ip = getClientIp(req);
70
- const userAgent = req.headers['user-agent'];
71
- const correlationId = (req as any).correlationId;
72
- log.httpRequest(req.method, req.url, {
73
- ip,
74
- userAgent,
75
- correlationId,
76
- contentLength: req.headers['content-length'],
77
- contentType: req.headers['content-type'],
78
- });
79
- res.on('finish', () => {
80
- const duration = Date.now() - startTime;
81
- log.httpResponse(req.method, req.url, res.statusCode, duration, {
82
- ip,
83
- correlationId,
84
- contentLength: res.getHeader('content-length'),
85
- contentType: res.getHeader('content-type'),
86
- });
87
- });
88
- next();
89
- };
90
- }
91
- }
@@ -1,2 +0,0 @@
1
- export * from './http';
2
- export * from './mcp';
@@ -1,97 +0,0 @@
1
- function isGuid(s: unknown): s is string {
2
- return (
3
- typeof s === 'string' &&
4
- /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(s)
5
- );
6
- }
7
-
8
- function isIdish(field: string): boolean {
9
- return /(^|\/)Id$/.test(field) || /Id$/i.test(field);
10
- }
11
-
12
- function escapeStr(val: string): string {
13
- return val.replace(/'/g, "''");
14
- }
15
-
16
- function literalFor(field: string, value: any): string {
17
- if (value == null) {
18
- return 'null';
19
- }
20
- const t = typeof value;
21
- if (t === 'number') {
22
- return String(value);
23
- }
24
- if (t === 'boolean') {
25
- return value ? 'true' : 'false';
26
- }
27
- if (t === 'string') {
28
- const v = String(value);
29
- const isNavigationProperty = field.includes('/');
30
- if (isGuid(v) && isIdish(field) && !isNavigationProperty) {
31
- return v;
32
- }
33
- return `'${escapeStr(v)}'`;
34
- }
35
- return `'${escapeStr(JSON.stringify(value))}'`;
36
- }
37
-
38
- function buildCondition(c: any): string | undefined {
39
- if (!c || !c.field) {
40
- return undefined;
41
- }
42
- const field = String(c.field);
43
- if (Array.isArray((c as any).in)) {
44
- const values = (c as any).in as any[];
45
- if (!values.length) {
46
- return undefined;
47
- }
48
- const parts = values.map((v) => `${field} eq ${literalFor(field, v)}`);
49
- return parts.length === 1 ? parts[0] : `(${parts.join(' or ')})`;
50
- }
51
- const op = String(c.op || 'eq');
52
- const value = (c as any).value;
53
- if (op === 'contains' || op === 'startswith' || op === 'endswith') {
54
- return `${op}(${field},${literalFor(field, value)})`;
55
- }
56
- if (value == null && (op === 'eq' || op === 'ne')) {
57
- return `${field} ${op} null`;
58
- }
59
- return `${field} ${op} ${literalFor(field, value)}`;
60
- }
61
-
62
- export function buildFilterFromStructured(filters: any | undefined): string | undefined {
63
- if (!filters || typeof filters !== 'object') {
64
- return undefined;
65
- }
66
- const andParts: string[] = [];
67
- const orParts: string[] = [];
68
- if (Array.isArray(filters.all)) {
69
- for (const c of filters.all) {
70
- const s = buildCondition(c);
71
- if (s) {
72
- andParts.push(s);
73
- }
74
- }
75
- }
76
- if (Array.isArray(filters.any)) {
77
- for (const c of filters.any) {
78
- const s = buildCondition(c);
79
- if (s) {
80
- orParts.push(s);
81
- }
82
- }
83
- }
84
- const andStr = andParts.join(' and ');
85
- const orStr = orParts.join(' or ');
86
- const parts: string[] = [];
87
- if (andStr) {
88
- parts.push(andParts.length > 1 ? `(${andStr})` : andStr);
89
- }
90
- if (orStr) {
91
- parts.push(orParts.length > 1 ? `(${orStr})` : orStr);
92
- }
93
- if (!parts.length) {
94
- return undefined;
95
- }
96
- return parts.join(' and ');
97
- }
@@ -1 +0,0 @@
1
- export * from './server';