mcp-creatio 0.5.0 → 0.6.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/README.md +14 -1
- package/dist/cli.js +3 -2
- package/dist/cli.js.map +1 -1
- package/dist/config-builder.d.ts.map +1 -1
- package/dist/config-builder.js +13 -1
- package/dist/config-builder.js.map +1 -1
- package/dist/creatio/auth/auth.d.ts +16 -2
- package/dist/creatio/auth/auth.d.ts.map +1 -1
- package/dist/creatio/auth/auth.js +9 -0
- package/dist/creatio/auth/auth.js.map +1 -1
- package/dist/creatio/auth/index.d.ts +2 -1
- package/dist/creatio/auth/index.d.ts.map +1 -1
- package/dist/creatio/auth/index.js +4 -1
- package/dist/creatio/auth/index.js.map +1 -1
- package/dist/creatio/auth/providers/base-provider.d.ts +2 -5
- package/dist/creatio/auth/providers/base-provider.d.ts.map +1 -1
- package/dist/creatio/auth/providers/base-provider.js +0 -15
- package/dist/creatio/auth/providers/base-provider.js.map +1 -1
- package/dist/creatio/auth/providers/oauth2-code-provider.js +3 -3
- package/dist/creatio/client-config.d.ts +8 -0
- package/dist/creatio/client-config.d.ts.map +1 -1
- package/dist/creatio/{providers → contracts}/admin-operation-provider.d.ts.map +1 -1
- package/dist/creatio/contracts/admin-operation-provider.js.map +1 -0
- package/dist/creatio/{providers → contracts}/configuration-provider.d.ts.map +1 -1
- package/dist/creatio/contracts/configuration-provider.js.map +1 -0
- package/dist/creatio/contracts/crud-provider.d.ts +52 -0
- package/dist/creatio/contracts/crud-provider.d.ts.map +1 -0
- package/dist/creatio/contracts/crud-provider.js.map +1 -0
- package/dist/creatio/{providers → contracts}/feature-provider.d.ts.map +1 -1
- package/dist/creatio/contracts/feature-provider.js.map +1 -0
- package/dist/creatio/{providers → contracts}/index.d.ts +1 -0
- package/dist/creatio/contracts/index.d.ts.map +1 -0
- package/dist/creatio/{providers → contracts}/index.js +1 -0
- package/dist/creatio/{providers → contracts}/index.js.map +1 -1
- package/dist/creatio/{providers → contracts}/process-provider.d.ts.map +1 -1
- package/dist/creatio/contracts/process-provider.js.map +1 -0
- package/dist/creatio/contracts/query.d.ts +69 -0
- package/dist/creatio/contracts/query.d.ts.map +1 -0
- package/dist/creatio/contracts/query.js +10 -0
- package/dist/creatio/contracts/query.js.map +1 -0
- package/dist/creatio/{providers → contracts}/sys-settings-provider.d.ts.map +1 -1
- package/dist/creatio/contracts/sys-settings-provider.js.map +1 -0
- package/dist/creatio/{providers → contracts}/user-provider.d.ts.map +1 -1
- package/dist/creatio/contracts/user-provider.js.map +1 -0
- package/dist/creatio/engines/{admin-operation/admin-operation-engine.d.ts → admin-operation-engine.d.ts} +4 -4
- package/dist/creatio/engines/admin-operation-engine.d.ts.map +1 -0
- package/dist/creatio/engines/admin-operation-engine.js +29 -0
- package/dist/creatio/engines/admin-operation-engine.js.map +1 -0
- package/dist/creatio/engines/configuration-engine.d.ts +10 -0
- package/dist/creatio/engines/configuration-engine.d.ts.map +1 -0
- package/dist/creatio/engines/configuration-engine.js +23 -0
- package/dist/creatio/engines/configuration-engine.js.map +1 -0
- package/dist/creatio/engines/crud-engine.d.ts +17 -0
- package/dist/creatio/engines/crud-engine.d.ts.map +1 -0
- package/dist/creatio/engines/crud-engine.js +39 -0
- package/dist/creatio/engines/crud-engine.js.map +1 -0
- package/dist/creatio/engines/engine-manager.d.ts +15 -8
- package/dist/creatio/engines/engine-manager.d.ts.map +1 -1
- package/dist/creatio/engines/engine-manager.js +26 -14
- package/dist/creatio/engines/engine-manager.js.map +1 -1
- package/dist/creatio/engines/engine.d.ts +36 -0
- package/dist/creatio/engines/engine.d.ts.map +1 -1
- package/dist/creatio/engines/engine.js +43 -0
- package/dist/creatio/engines/engine.js.map +1 -1
- package/dist/creatio/engines/feature-engine.d.ts +10 -0
- package/dist/creatio/engines/feature-engine.d.ts.map +1 -0
- package/dist/creatio/engines/{feature/feature-engine.js → feature-engine.js} +5 -3
- package/dist/creatio/engines/feature-engine.js.map +1 -0
- package/dist/creatio/engines/index.d.ts +7 -7
- package/dist/creatio/engines/index.d.ts.map +1 -1
- package/dist/creatio/engines/index.js +7 -7
- package/dist/creatio/engines/index.js.map +1 -1
- package/dist/creatio/engines/process-engine.d.ts +10 -0
- package/dist/creatio/engines/process-engine.d.ts.map +1 -0
- package/dist/creatio/engines/{process/process-engine.js → process-engine.js} +5 -3
- package/dist/creatio/engines/process-engine.js.map +1 -0
- package/dist/creatio/engines/{sys-settings/sys-settings-engine.d.ts → sys-settings-engine.d.ts} +4 -4
- package/dist/creatio/engines/sys-settings-engine.d.ts.map +1 -0
- package/dist/creatio/engines/sys-settings-engine.js +29 -0
- package/dist/creatio/engines/sys-settings-engine.js.map +1 -0
- package/dist/creatio/engines/user-engine.d.ts +10 -0
- package/dist/creatio/engines/user-engine.d.ts.map +1 -0
- package/dist/creatio/engines/{user/user-engine.js → user-engine.js} +4 -2
- package/dist/creatio/engines/user-engine.js.map +1 -0
- package/dist/creatio/index.d.ts +1 -1
- package/dist/creatio/index.js +1 -1
- package/dist/creatio/provider-context.d.ts +1 -1
- package/dist/creatio/services/admin-operation-service-provider.d.ts +1 -1
- package/dist/creatio/services/admin-operation-service-provider.d.ts.map +1 -1
- package/dist/creatio/services/admin-operation-service-provider.js +2 -2
- package/dist/creatio/services/admin-operation-service-provider.js.map +1 -1
- package/dist/creatio/services/configuration-service-provider.d.ts +1 -1
- package/dist/creatio/services/configuration-service-provider.d.ts.map +1 -1
- package/dist/creatio/services/configuration-service-provider.js +5 -2
- package/dist/creatio/services/configuration-service-provider.js.map +1 -1
- package/dist/creatio/services/creatio-service-context.d.ts +1 -1
- package/dist/creatio/services/creatio-service-context.d.ts.map +1 -1
- package/dist/creatio/services/creatio-service-context.js +6 -3
- package/dist/creatio/services/creatio-service-context.js.map +1 -1
- package/dist/creatio/services/crud-provider-factory.d.ts +16 -0
- package/dist/creatio/services/crud-provider-factory.d.ts.map +1 -0
- package/dist/creatio/services/crud-provider-factory.js +22 -0
- package/dist/creatio/services/crud-provider-factory.js.map +1 -0
- package/dist/creatio/services/dataservice/data-service-column-values.d.ts +12 -0
- package/dist/creatio/services/dataservice/data-service-column-values.d.ts.map +1 -0
- package/dist/creatio/services/dataservice/data-service-column-values.js +39 -0
- package/dist/creatio/services/dataservice/data-service-column-values.js.map +1 -0
- package/dist/creatio/services/dataservice/data-service-crud-provider.d.ts +49 -0
- package/dist/creatio/services/dataservice/data-service-crud-provider.d.ts.map +1 -0
- package/dist/creatio/services/dataservice/data-service-crud-provider.js +157 -0
- package/dist/creatio/services/dataservice/data-service-crud-provider.js.map +1 -0
- package/dist/creatio/services/dataservice/data-service-filter-translator.d.ts +32 -0
- package/dist/creatio/services/dataservice/data-service-filter-translator.d.ts.map +1 -0
- package/dist/creatio/services/dataservice/data-service-filter-translator.js +114 -0
- package/dist/creatio/services/dataservice/data-service-filter-translator.js.map +1 -0
- package/dist/creatio/services/dataservice/data-service-query-builder.d.ts +21 -0
- package/dist/creatio/services/dataservice/data-service-query-builder.d.ts.map +1 -0
- package/dist/creatio/services/dataservice/data-service-query-builder.js +97 -0
- package/dist/creatio/services/dataservice/data-service-query-builder.js.map +1 -0
- package/dist/creatio/services/dataservice/data-service-schema.d.ts +31 -0
- package/dist/creatio/services/dataservice/data-service-schema.d.ts.map +1 -0
- package/dist/creatio/services/dataservice/data-service-schema.js +95 -0
- package/dist/creatio/services/dataservice/data-service-schema.js.map +1 -0
- package/dist/creatio/services/dataservice/data-service-transport.d.ts +21 -0
- package/dist/creatio/services/dataservice/data-service-transport.d.ts.map +1 -0
- package/dist/creatio/services/dataservice/data-service-transport.js +49 -0
- package/dist/creatio/services/dataservice/data-service-transport.js.map +1 -0
- package/dist/creatio/services/dataservice/data-service-types.d.ts +180 -0
- package/dist/creatio/services/dataservice/data-service-types.d.ts.map +1 -0
- package/dist/creatio/services/dataservice/data-service-types.js +110 -0
- package/dist/creatio/services/dataservice/data-service-types.js.map +1 -0
- package/dist/creatio/services/dataservice/data-service-value-type.d.ts +27 -0
- package/dist/creatio/services/dataservice/data-service-value-type.d.ts.map +1 -0
- package/dist/creatio/services/dataservice/data-service-value-type.js +99 -0
- package/dist/creatio/services/dataservice/data-service-value-type.js.map +1 -0
- package/dist/creatio/services/entity-name.d.ts +8 -0
- package/dist/creatio/services/entity-name.d.ts.map +1 -0
- package/dist/creatio/services/entity-name.js +17 -0
- package/dist/creatio/services/entity-name.js.map +1 -0
- package/dist/creatio/services/feature-service-provider.d.ts +1 -1
- package/dist/creatio/services/feature-service-provider.d.ts.map +1 -1
- package/dist/creatio/services/feature-service-provider.js +5 -5
- package/dist/creatio/services/feature-service-provider.js.map +1 -1
- package/dist/creatio/services/http-client.d.ts +10 -1
- package/dist/creatio/services/http-client.d.ts.map +1 -1
- package/dist/creatio/services/http-client.js +15 -3
- package/dist/creatio/services/http-client.js.map +1 -1
- package/dist/creatio/services/index.d.ts +14 -2
- package/dist/creatio/services/index.d.ts.map +1 -1
- package/dist/creatio/services/index.js +14 -2
- package/dist/creatio/services/index.js.map +1 -1
- package/dist/creatio/services/lookup-path.d.ts +18 -0
- package/dist/creatio/services/lookup-path.d.ts.map +1 -0
- package/dist/creatio/services/lookup-path.js +33 -0
- package/dist/creatio/services/lookup-path.js.map +1 -0
- package/dist/creatio/services/{metadata-store.d.ts → odata/metadata-store.d.ts} +2 -2
- package/dist/creatio/services/odata/metadata-store.d.ts.map +1 -0
- package/dist/creatio/services/{metadata-store.js → odata/metadata-store.js} +5 -4
- package/dist/creatio/services/odata/metadata-store.js.map +1 -0
- package/dist/creatio/services/{odata-crud-provider.d.ts → odata/odata-crud-provider.d.ts} +7 -7
- package/dist/creatio/services/odata/odata-crud-provider.d.ts.map +1 -0
- package/dist/creatio/services/{odata-crud-provider.js → odata/odata-crud-provider.js} +29 -67
- package/dist/creatio/services/odata/odata-crud-provider.js.map +1 -0
- package/dist/creatio/services/odata/odata-query-translator.d.ts +37 -0
- package/dist/creatio/services/odata/odata-query-translator.d.ts.map +1 -0
- package/dist/creatio/services/odata/odata-query-translator.js +160 -0
- package/dist/creatio/services/odata/odata-query-translator.js.map +1 -0
- package/dist/creatio/services/odata/odata-routes.d.ts +4 -0
- package/dist/creatio/services/odata/odata-routes.d.ts.map +1 -0
- package/dist/creatio/services/odata/odata-routes.js +9 -0
- package/dist/creatio/services/odata/odata-routes.js.map +1 -0
- package/dist/creatio/services/process-service-provider.d.ts +1 -1
- package/dist/creatio/services/process-service-provider.d.ts.map +1 -1
- package/dist/creatio/services/process-service-provider.js +2 -5
- package/dist/creatio/services/process-service-provider.js.map +1 -1
- package/dist/creatio/services/sys-settings-service-provider.d.ts +1 -1
- package/dist/creatio/services/sys-settings-service-provider.d.ts.map +1 -1
- package/dist/creatio/services/sys-settings-service-provider.js +12 -16
- package/dist/creatio/services/sys-settings-service-provider.js.map +1 -1
- package/dist/creatio/services/user-info-provider.d.ts +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/log.d.ts +5 -0
- package/dist/log.d.ts.map +1 -1
- package/dist/log.js +8 -0
- package/dist/log.js.map +1 -1
- package/dist/server/http/creatio-oauth-handlers.d.ts.map +1 -1
- package/dist/server/http/creatio-oauth-handlers.js +21 -5
- package/dist/server/http/creatio-oauth-handlers.js.map +1 -1
- package/dist/server/http/httpServer.d.ts.map +1 -1
- package/dist/server/http/httpServer.js +6 -4
- package/dist/server/http/httpServer.js.map +1 -1
- package/dist/server/http/mcp-handlers.js +2 -2
- package/dist/server/mcp/crtmcp/crt-mcp-client.d.ts +2 -5
- package/dist/server/mcp/crtmcp/crt-mcp-client.d.ts.map +1 -1
- package/dist/server/mcp/crtmcp/crt-mcp-client.js +4 -4
- package/dist/server/mcp/crtmcp/crt-mcp-client.js.map +1 -1
- package/dist/server/mcp/filters.d.ts +7 -1
- package/dist/server/mcp/filters.d.ts.map +1 -1
- package/dist/server/mcp/filters.js +48 -90
- package/dist/server/mcp/filters.js.map +1 -1
- package/dist/server/mcp/server.d.ts +16 -1
- package/dist/server/mcp/server.d.ts.map +1 -1
- package/dist/server/mcp/server.js +179 -167
- package/dist/server/mcp/server.js.map +1 -1
- package/dist/server/mcp/tools-data.d.ts +57 -4
- package/dist/server/mcp/tools-data.d.ts.map +1 -1
- package/dist/server/mcp/tools-data.js +42 -17
- package/dist/server/mcp/tools-data.js.map +1 -1
- package/dist/sessions/index.d.ts.map +1 -0
- package/dist/sessions/index.js.map +1 -0
- package/dist/{services → sessions}/session-context.d.ts +16 -0
- package/dist/sessions/session-context.d.ts.map +1 -0
- package/dist/{services → sessions}/session-context.js +36 -1
- package/dist/sessions/session-context.js.map +1 -0
- package/dist/{services → sessions}/token-refresh-scheduler.d.ts.map +1 -1
- package/dist/{services → sessions}/token-refresh-scheduler.js +2 -2
- package/dist/{services → sessions}/token-refresh-scheduler.js.map +1 -1
- package/dist/utils/context.js +2 -2
- package/package.json +1 -1
- package/dist/creatio/engines/admin-operation/admin-operation-engine.d.ts.map +0 -1
- package/dist/creatio/engines/admin-operation/admin-operation-engine.js +0 -27
- package/dist/creatio/engines/admin-operation/admin-operation-engine.js.map +0 -1
- package/dist/creatio/engines/configuration/configuration-engine.d.ts +0 -10
- package/dist/creatio/engines/configuration/configuration-engine.d.ts.map +0 -1
- package/dist/creatio/engines/configuration/configuration-engine.js +0 -18
- package/dist/creatio/engines/configuration/configuration-engine.js.map +0 -1
- package/dist/creatio/engines/crud/crud-engine.d.ts +0 -15
- package/dist/creatio/engines/crud/crud-engine.d.ts.map +0 -1
- package/dist/creatio/engines/crud/crud-engine.js +0 -33
- package/dist/creatio/engines/crud/crud-engine.js.map +0 -1
- package/dist/creatio/engines/feature/feature-engine.d.ts +0 -10
- package/dist/creatio/engines/feature/feature-engine.d.ts.map +0 -1
- package/dist/creatio/engines/feature/feature-engine.js.map +0 -1
- package/dist/creatio/engines/process/process-engine.d.ts +0 -10
- package/dist/creatio/engines/process/process-engine.d.ts.map +0 -1
- package/dist/creatio/engines/process/process-engine.js.map +0 -1
- package/dist/creatio/engines/sys-settings/sys-settings-engine.d.ts.map +0 -1
- package/dist/creatio/engines/sys-settings/sys-settings-engine.js +0 -27
- package/dist/creatio/engines/sys-settings/sys-settings-engine.js.map +0 -1
- package/dist/creatio/engines/user/user-engine.d.ts +0 -10
- package/dist/creatio/engines/user/user-engine.d.ts.map +0 -1
- package/dist/creatio/engines/user/user-engine.js.map +0 -1
- package/dist/creatio/providers/admin-operation-provider.js.map +0 -1
- package/dist/creatio/providers/configuration-provider.js.map +0 -1
- package/dist/creatio/providers/crud-provider.d.ts +0 -42
- package/dist/creatio/providers/crud-provider.d.ts.map +0 -1
- package/dist/creatio/providers/crud-provider.js.map +0 -1
- package/dist/creatio/providers/feature-provider.js.map +0 -1
- package/dist/creatio/providers/index.d.ts.map +0 -1
- package/dist/creatio/providers/process-provider.js.map +0 -1
- package/dist/creatio/providers/sys-settings-provider.js.map +0 -1
- package/dist/creatio/providers/user-provider.js.map +0 -1
- package/dist/creatio/services/metadata-store.d.ts.map +0 -1
- package/dist/creatio/services/metadata-store.js.map +0 -1
- package/dist/creatio/services/odata-crud-provider.d.ts.map +0 -1
- package/dist/creatio/services/odata-crud-provider.js.map +0 -1
- package/dist/services/index.d.ts.map +0 -1
- package/dist/services/index.js.map +0 -1
- package/dist/services/session-context.d.ts.map +0 -1
- package/dist/services/session-context.js.map +0 -1
- /package/dist/creatio/{providers → contracts}/admin-operation-provider.d.ts +0 -0
- /package/dist/creatio/{providers → contracts}/admin-operation-provider.js +0 -0
- /package/dist/creatio/{providers → contracts}/configuration-provider.d.ts +0 -0
- /package/dist/creatio/{providers → contracts}/configuration-provider.js +0 -0
- /package/dist/creatio/{providers → contracts}/crud-provider.js +0 -0
- /package/dist/creatio/{providers → contracts}/feature-provider.d.ts +0 -0
- /package/dist/creatio/{providers → contracts}/feature-provider.js +0 -0
- /package/dist/creatio/{providers → contracts}/process-provider.d.ts +0 -0
- /package/dist/creatio/{providers → contracts}/process-provider.js +0 -0
- /package/dist/creatio/{providers → contracts}/sys-settings-provider.d.ts +0 -0
- /package/dist/creatio/{providers → contracts}/sys-settings-provider.js +0 -0
- /package/dist/creatio/{providers → contracts}/user-provider.d.ts +0 -0
- /package/dist/creatio/{providers → contracts}/user-provider.js +0 -0
- /package/dist/{services → sessions}/index.d.ts +0 -0
- /package/dist/{services → sessions}/index.js +0 -0
- /package/dist/{services → sessions}/token-refresh-scheduler.d.ts +0 -0
|
@@ -1,110 +1,68 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
/^[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));
|
|
7
|
-
}
|
|
8
|
-
function isIdish(field) {
|
|
9
|
-
return /(^|\/)Id$/.test(field) || /Id$/i.test(field);
|
|
10
|
-
}
|
|
11
|
-
function escapeStr(val) {
|
|
12
|
-
return val.replace(/'/g, "''");
|
|
13
|
-
}
|
|
14
|
-
function literalFor(field, value) {
|
|
15
|
-
if (value == null) {
|
|
16
|
-
return 'null';
|
|
17
|
-
}
|
|
18
|
-
const t = typeof value;
|
|
19
|
-
if (t === 'number') {
|
|
20
|
-
return String(value);
|
|
21
|
-
}
|
|
22
|
-
if (t === 'boolean') {
|
|
23
|
-
return value ? 'true' : 'false';
|
|
24
|
-
}
|
|
25
|
-
if (t === 'string') {
|
|
26
|
-
const v = String(value);
|
|
27
|
-
// Bare (unquoted) GUID for any Id-typed path — the scalar key `Id`, a lookup
|
|
28
|
-
// FK `XxxId`, or a navigation `Xxx/Id`. Other strings (incl. `Xxx/Name`) are quoted.
|
|
29
|
-
if (isGuid(v) && isIdish(field)) {
|
|
30
|
-
return v;
|
|
31
|
-
}
|
|
32
|
-
return `'${escapeStr(v)}'`;
|
|
33
|
-
}
|
|
34
|
-
return `'${escapeStr(JSON.stringify(value))}'`;
|
|
35
|
-
}
|
|
36
|
-
// Creatio OData cannot filter a lookup by its scalar FK column (`ContactId eq <guid>`
|
|
37
|
-
// 500s "Column by path ContactId not found"); it must be filtered through the
|
|
38
|
-
// navigation property (`Contact/Id eq <guid>`), per the official docs and verified
|
|
39
|
-
// live. Rewrite `<Lookup>Id` -> `<Lookup>/Id` for equality against a GUID. The
|
|
40
|
-
// primary key `Id` and already-navigated paths are left untouched.
|
|
41
|
-
function lookupNavField(field, value) {
|
|
42
|
-
if (isGuid(value) && field !== 'Id' && !field.includes('/') && /Id$/.test(field)) {
|
|
43
|
-
return `${field.slice(0, -2)}/Id`;
|
|
44
|
-
}
|
|
45
|
-
return field;
|
|
46
|
-
}
|
|
47
|
-
function buildCondition(c) {
|
|
3
|
+
exports.buildFilterNode = buildFilterNode;
|
|
4
|
+
exports.parseOrderBy = parseOrderBy;
|
|
5
|
+
function toNode(c) {
|
|
48
6
|
if (!c || !c.field) {
|
|
49
7
|
return undefined;
|
|
50
8
|
}
|
|
51
9
|
const field = String(c.field);
|
|
52
10
|
if (Array.isArray(c.in)) {
|
|
53
|
-
|
|
54
|
-
if (!values.length) {
|
|
55
|
-
return undefined;
|
|
56
|
-
}
|
|
57
|
-
const parts = values.map((v) => {
|
|
58
|
-
const f = lookupNavField(field, v);
|
|
59
|
-
return `${f} eq ${literalFor(f, v)}`;
|
|
60
|
-
});
|
|
61
|
-
return parts.length === 1 ? parts[0] : `(${parts.join(' or ')})`;
|
|
11
|
+
return c.in.length ? { kind: 'in', field, values: c.in } : undefined;
|
|
62
12
|
}
|
|
63
|
-
const op = String(c.op
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
13
|
+
const op = (c.op ? String(c.op) : 'eq');
|
|
14
|
+
// A null/absent value against eq/ne is a null-check; route it through the dedicated
|
|
15
|
+
// neutral ops so each backend renders it correctly (OData `field eq null`,
|
|
16
|
+
// DataService `IsNullFilter`).
|
|
17
|
+
if (c.value === null || c.value === undefined) {
|
|
18
|
+
if (op === 'eq') {
|
|
19
|
+
return { kind: 'condition', field, op: 'isNull' };
|
|
20
|
+
}
|
|
21
|
+
if (op === 'ne') {
|
|
22
|
+
return { kind: 'condition', field, op: 'isNotNull' };
|
|
23
|
+
}
|
|
67
24
|
}
|
|
68
|
-
|
|
69
|
-
|
|
25
|
+
return { kind: 'condition', field, op, value: c.value };
|
|
26
|
+
}
|
|
27
|
+
function group(logic, conditions) {
|
|
28
|
+
const items = conditions.map(toNode).filter((n) => Boolean(n));
|
|
29
|
+
if (!items.length) {
|
|
30
|
+
return undefined;
|
|
70
31
|
}
|
|
71
|
-
|
|
72
|
-
return `${f} ${op} ${literalFor(f, value)}`;
|
|
32
|
+
return { kind: 'group', logic, items };
|
|
73
33
|
}
|
|
74
|
-
|
|
34
|
+
/** Build the neutral {@link FilterNode} from the structured `filters` argument (AND of the
|
|
35
|
+
* `all` group with the `any` group), or undefined when there is nothing to filter on. */
|
|
36
|
+
function buildFilterNode(filters) {
|
|
75
37
|
if (!filters || typeof filters !== 'object') {
|
|
76
38
|
return undefined;
|
|
77
39
|
}
|
|
78
|
-
const
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
andParts.push(s);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
if (Array.isArray(filters.any)) {
|
|
89
|
-
for (const c of filters.any) {
|
|
90
|
-
const s = buildCondition(c);
|
|
91
|
-
if (s) {
|
|
92
|
-
orParts.push(s);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
const andStr = andParts.join(' and ');
|
|
97
|
-
const orStr = orParts.join(' or ');
|
|
98
|
-
const parts = [];
|
|
99
|
-
if (andStr) {
|
|
100
|
-
parts.push(andParts.length > 1 ? `(${andStr})` : andStr);
|
|
40
|
+
const f = filters;
|
|
41
|
+
const allNode = Array.isArray(f.all) ? group('and', f.all) : undefined;
|
|
42
|
+
const anyNode = Array.isArray(f.any) ? group('or', f.any) : undefined;
|
|
43
|
+
const parts = [allNode, anyNode].filter((n) => Boolean(n));
|
|
44
|
+
if (!parts.length) {
|
|
45
|
+
return undefined;
|
|
101
46
|
}
|
|
102
|
-
if (
|
|
103
|
-
parts
|
|
47
|
+
if (parts.length === 1) {
|
|
48
|
+
return parts[0];
|
|
104
49
|
}
|
|
105
|
-
|
|
50
|
+
return { kind: 'group', logic: 'and', items: parts };
|
|
51
|
+
}
|
|
52
|
+
/** Parse an OData-style `$orderby` clause ("Name asc, CreatedOn desc") into neutral order
|
|
53
|
+
* terms. Direction defaults to ascending when omitted. */
|
|
54
|
+
function parseOrderBy(orderBy) {
|
|
55
|
+
if (typeof orderBy !== 'string' || !orderBy.trim()) {
|
|
106
56
|
return undefined;
|
|
107
57
|
}
|
|
108
|
-
|
|
58
|
+
const terms = orderBy
|
|
59
|
+
.split(',')
|
|
60
|
+
.map((part) => part.trim())
|
|
61
|
+
.filter(Boolean)
|
|
62
|
+
.map((part) => {
|
|
63
|
+
const [field, dir] = part.split(/\s+/);
|
|
64
|
+
return { field: field, dir: (dir ?? '').toLowerCase() === 'desc' ? 'desc' : 'asc' };
|
|
65
|
+
});
|
|
66
|
+
return terms.length ? terms : undefined;
|
|
109
67
|
}
|
|
110
68
|
//# sourceMappingURL=filters.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../src/server/mcp/filters.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../src/server/mcp/filters.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,6 @@ export declare class Server {
|
|
|
24
24
|
private _normalizeToToolHandler;
|
|
25
25
|
private _registerAsTool;
|
|
26
26
|
private _registerPrompts;
|
|
27
|
-
private _textResult;
|
|
28
27
|
/** Adapter exposing handler registration to {@link ToolPreparer}s. */
|
|
29
28
|
private _toolRegistrar;
|
|
30
29
|
/**
|
|
@@ -36,6 +35,22 @@ export declare class Server {
|
|
|
36
35
|
private _prepareTools;
|
|
37
36
|
/** Whether DataForge was probed as enabled at startup. */
|
|
38
37
|
private _isDataForgeReady;
|
|
38
|
+
/** Compile the `read` tool args into a neutral {@link ReadQuery}: structured `filters`
|
|
39
|
+
* become a {@link FilterNode}; a raw `$filter` string and `expand` are carried as
|
|
40
|
+
* OData-only escape hatches. The normalized {@link ReadResult} is mapped back to the
|
|
41
|
+
* tool's established output shape (a bare array, or `{ total, value }` when counting). */
|
|
42
|
+
private _read;
|
|
43
|
+
/** When DataForge is enabled, prefer its richer column details and fall back to the active
|
|
44
|
+
* CRUD backend's schema on a per-call miss. The `source` discriminator is part of the
|
|
45
|
+
* public tool contract and reflects where the schema actually came from. */
|
|
46
|
+
private _describeEntity;
|
|
47
|
+
/**
|
|
48
|
+
* The client tool surface as data. Handlers return raw domain results; MCP content
|
|
49
|
+
* wrapping is applied once by {@link _normalizeToToolHandler}. Adding a tool is a new
|
|
50
|
+
* row here (plus its descriptor) — no new bespoke wrapping. Mutating tools are listed
|
|
51
|
+
* separately and only registered when not in readonly mode.
|
|
52
|
+
*/
|
|
53
|
+
private _clientToolDefs;
|
|
39
54
|
private _registerClientTools;
|
|
40
55
|
startMcp(): Promise<McpServer>;
|
|
41
56
|
stopMcp(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/server/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EACN,oBAAoB,EACpB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/server/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EACN,oBAAoB,EACpB,oBAAoB,EAGpB,MAAM,eAAe,CAAC;AA0DvB,MAAM,WAAW,YAAY;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB;AAWD,qBAAa,MAAM;IAClB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0B;IACvD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkC;IAC5D,OAAO,CAAC,IAAI,CAAC,CAAY;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,cAAc,CAAW;IAIjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAwB;IAC3D,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA2B;IACjE,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA+B;IACvE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAE5D,IAAW,YAAY,IAAI,oBAAoB,CAE9C;gBAEW,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,YAAY;IAoB/D,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,8BAA8B;IAQtC,OAAO,CAAC,uBAAuB;IAyB/B,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,gBAAgB;IAsBxB,sEAAsE;IACtE,OAAO,CAAC,cAAc;IAOtB;;;;;OAKG;YACW,aAAa;IAc3B,0DAA0D;IAC1D,OAAO,CAAC,iBAAiB;IAIzB;;;+FAG2F;YAC7E,KAAK;IAyBnB;;iFAE6E;YAC/D,eAAe;IAY7B;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IA8IvB,OAAO,CAAC,oBAAoB;IAYf,QAAQ;IAqBR,OAAO;CAWpB"}
|
|
@@ -71,7 +71,13 @@ class Server {
|
|
|
71
71
|
_normalizeToToolHandler(handler) {
|
|
72
72
|
return async (args) => {
|
|
73
73
|
const result = await handler(args);
|
|
74
|
-
|
|
74
|
+
// Pass through only a genuine MCP envelope (`content` is an array of blocks) — e.g.
|
|
75
|
+
// the published-tools proxy returns an upstream tools/call result already shaped.
|
|
76
|
+
// Raw domain data (incl. server payloads that happen to have a scalar/object
|
|
77
|
+
// `content` field) is stringified, never mistaken for a pre-wrapped result.
|
|
78
|
+
if (result &&
|
|
79
|
+
typeof result === 'object' &&
|
|
80
|
+
Array.isArray(result.content)) {
|
|
75
81
|
return result;
|
|
76
82
|
}
|
|
77
83
|
return {
|
|
@@ -122,16 +128,6 @@ class Server {
|
|
|
122
128
|
log_1.default.warn('mcp.prompts.register.failed', { error: String(err) });
|
|
123
129
|
}
|
|
124
130
|
}
|
|
125
|
-
_textResult(payload) {
|
|
126
|
-
return {
|
|
127
|
-
content: [
|
|
128
|
-
{
|
|
129
|
-
type: 'text',
|
|
130
|
-
text: typeof payload === 'string' ? payload : JSON.stringify(payload, null, 2),
|
|
131
|
-
},
|
|
132
|
-
],
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
131
|
/** Adapter exposing handler registration to {@link ToolPreparer}s. */
|
|
136
132
|
_toolRegistrar() {
|
|
137
133
|
return {
|
|
@@ -162,177 +158,193 @@ class Server {
|
|
|
162
158
|
_isDataForgeReady() {
|
|
163
159
|
return this._capabilities.get(this._dataForgePreparer.name) === true;
|
|
164
160
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
161
|
+
/** Compile the `read` tool args into a neutral {@link ReadQuery}: structured `filters`
|
|
162
|
+
* become a {@link FilterNode}; a raw `$filter` string and `expand` are carried as
|
|
163
|
+
* OData-only escape hatches. The normalized {@link ReadResult} is mapped back to the
|
|
164
|
+
* tool's established output shape (a bare array, or `{ total, value }` when counting). */
|
|
165
|
+
async _read(args) {
|
|
166
|
+
const { entity, filter, filters, select, top, expand, orderBy, skip, count } = args;
|
|
167
|
+
const odata = {};
|
|
168
|
+
if (filter) {
|
|
169
|
+
odata.rawFilter = filter;
|
|
170
|
+
}
|
|
171
|
+
if (Array.isArray(expand) && expand.length > 0) {
|
|
172
|
+
odata.expand = expand;
|
|
173
|
+
}
|
|
174
|
+
const node = (0, filters_1.buildFilterNode)(filters);
|
|
175
|
+
const order = (0, filters_1.parseOrderBy)(orderBy);
|
|
176
|
+
const query = {
|
|
177
|
+
entity,
|
|
178
|
+
top: top ?? DEFAULT_READ_TOP,
|
|
179
|
+
...(select ? { columns: select } : {}),
|
|
180
|
+
...(node ? { filter: node } : {}),
|
|
181
|
+
...(order ? { order } : {}),
|
|
182
|
+
...(skip !== undefined ? { skip } : {}),
|
|
183
|
+
...(count !== undefined ? { count } : {}),
|
|
184
|
+
...(Object.keys(odata).length ? { odata } : {}),
|
|
185
|
+
};
|
|
186
|
+
const result = await this._engines.crud.read(query);
|
|
187
|
+
return count ? { total: result.totalCount, value: result.items } : result.items;
|
|
188
|
+
}
|
|
189
|
+
/** When DataForge is enabled, prefer its richer column details and fall back to the active
|
|
190
|
+
* CRUD backend's schema on a per-call miss. The `source` discriminator is part of the
|
|
191
|
+
* public tool contract and reflects where the schema actually came from. */
|
|
192
|
+
async _describeEntity(entitySet) {
|
|
193
|
+
if (this._isDataForgeReady()) {
|
|
194
|
+
const dataForge = await this._dataForge.getColumnsOrNull(entitySet);
|
|
195
|
+
if (dataForge !== null) {
|
|
196
|
+
return { source: 'dataforge', entitySet, dataForge };
|
|
199
197
|
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
198
|
+
}
|
|
199
|
+
const metadata = await this._engines.crud.describeEntity(entitySet);
|
|
200
|
+
const source = this._engines.crud.kind === 'creatio-dataservice' ? 'dataservice' : 'odata';
|
|
201
|
+
return { source, entitySet, metadata };
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* The client tool surface as data. Handlers return raw domain results; MCP content
|
|
205
|
+
* wrapping is applied once by {@link _normalizeToToolHandler}. Adding a tool is a new
|
|
206
|
+
* row here (plus its descriptor) — no new bespoke wrapping. Mutating tools are listed
|
|
207
|
+
* separately and only registered when not in readonly mode.
|
|
208
|
+
*/
|
|
209
|
+
_clientToolDefs() {
|
|
210
|
+
const { crud, user, sysSettings, process, feature, adminOperation, configuration } = this._engines;
|
|
211
|
+
const core = [
|
|
212
|
+
{
|
|
213
|
+
name: 'get-current-user-info',
|
|
214
|
+
descriptor: tools_data_1.getCurrentUserInfoDescriptor,
|
|
215
|
+
input: tools_data_1.getCurrentUserInfoInput,
|
|
216
|
+
run: () => user.getCurrentUserInfo(),
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
name: 'list-entities',
|
|
220
|
+
descriptor: tools_data_1.listEntitiesDescriptor,
|
|
221
|
+
input: tools_data_1.listEntitiesInput,
|
|
222
|
+
run: async () => ({ results: await crud.listEntitySets() }),
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
name: 'describe-entity',
|
|
226
|
+
descriptor: tools_data_1.describeEntityDescriptor,
|
|
227
|
+
input: tools_data_1.describeEntityInput,
|
|
228
|
+
run: ({ entitySet }) => this._describeEntity(entitySet),
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
name: 'read',
|
|
232
|
+
descriptor: (0, tools_data_1.buildReadDescriptor)(crud.capabilities),
|
|
233
|
+
input: (0, tools_data_1.buildReadInput)(crud.capabilities),
|
|
234
|
+
run: (args) => this._read(args),
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
name: 'query-sys-settings',
|
|
238
|
+
descriptor: tools_data_1.querySysSettingsDescriptor,
|
|
239
|
+
input: tools_data_1.querySysSettingsInput,
|
|
240
|
+
run: ({ sysSettingCodes }) => sysSettings.queryValues(sysSettingCodes),
|
|
241
|
+
},
|
|
242
|
+
];
|
|
243
|
+
const mutating = [
|
|
244
|
+
{
|
|
245
|
+
name: 'create',
|
|
246
|
+
descriptor: tools_data_1.createDescriptor,
|
|
247
|
+
input: tools_data_1.createInput,
|
|
248
|
+
run: ({ entity, data }) => crud.create({ entity, data }),
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
name: 'update',
|
|
252
|
+
descriptor: tools_data_1.updateDescriptor,
|
|
253
|
+
input: tools_data_1.updateInput,
|
|
254
|
+
run: ({ entity, id, data }) => crud.update({ entity, id, data }),
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
name: 'delete',
|
|
258
|
+
descriptor: tools_data_1.deleteDescriptor,
|
|
259
|
+
input: tools_data_1.deleteInput,
|
|
260
|
+
run: ({ entity, id }) => crud.delete({ entity, id }),
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
name: 'execute-process',
|
|
264
|
+
descriptor: tools_data_1.executeProcessDescriptor,
|
|
265
|
+
input: tools_data_1.executeProcessInput,
|
|
266
|
+
run: ({ processName, parameters }) => process.execute({ processName, parameters: parameters || {} }),
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
name: 'set-sys-settings-value',
|
|
270
|
+
descriptor: tools_data_1.setSysSettingsValueDescriptor,
|
|
271
|
+
input: tools_data_1.setSysSettingsValueInput,
|
|
272
|
+
run: ({ sysSettingsValues }) => sysSettings.setValues(sysSettingsValues),
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
name: 'create-sys-setting',
|
|
276
|
+
descriptor: tools_data_1.createSysSettingDescriptor,
|
|
277
|
+
input: tools_data_1.createSysSettingInput,
|
|
278
|
+
run: ({ definition, initialValue }) => sysSettings.createSetting({ definition, initialValue }),
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
name: 'update-sys-setting-definition',
|
|
282
|
+
descriptor: tools_data_1.updateSysSettingDefinitionDescriptor,
|
|
283
|
+
input: tools_data_1.updateSysSettingDefinitionInput,
|
|
284
|
+
run: ({ id, definition }) => sysSettings.updateDefinition({
|
|
268
285
|
...definition,
|
|
269
286
|
id,
|
|
270
|
-
})
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
content: [
|
|
284
|
-
{
|
|
285
|
-
type: 'text',
|
|
286
|
-
text: JSON.stringify(result, null, 2),
|
|
287
|
-
},
|
|
288
|
-
],
|
|
289
|
-
};
|
|
290
|
-
}));
|
|
291
|
-
this._registerHandlerWithDescriptor('upsert-admin-operation', tools_data_1.upsertAdminOperationDescriptor, (0, utils_1.withValidation)(tools_data_1.upsertAdminOperationInput, async ({ id, name, code, description }) => {
|
|
292
|
-
const result = await adminOperation.upsertAdminOperation({
|
|
287
|
+
}),
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
name: 'refresh-feature-cache',
|
|
291
|
+
descriptor: tools_data_1.refreshFeatureCacheDescriptor,
|
|
292
|
+
input: tools_data_1.refreshFeatureCacheInput,
|
|
293
|
+
run: ({ featureCode }) => feature.clearFeaturesCache(featureCode),
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
name: 'upsert-admin-operation',
|
|
297
|
+
descriptor: tools_data_1.upsertAdminOperationDescriptor,
|
|
298
|
+
input: tools_data_1.upsertAdminOperationInput,
|
|
299
|
+
run: ({ id, name, code, description }) => adminOperation.upsertAdminOperation({
|
|
293
300
|
...(id !== undefined ? { id } : {}),
|
|
294
301
|
name,
|
|
295
302
|
code,
|
|
296
303
|
...(description !== undefined ? { description } : {}),
|
|
297
|
-
})
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
304
|
+
}),
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
name: 'delete-admin-operation',
|
|
308
|
+
descriptor: tools_data_1.deleteAdminOperationDescriptor,
|
|
309
|
+
input: tools_data_1.deleteAdminOperationInput,
|
|
310
|
+
run: ({ ids }) => adminOperation.deleteAdminOperation(ids),
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
name: 'set-admin-operation-grantee',
|
|
314
|
+
descriptor: tools_data_1.setAdminOperationGranteeDescriptor,
|
|
315
|
+
input: tools_data_1.setAdminOperationGranteeInput,
|
|
316
|
+
run: ({ adminOperationId, adminUnitIds, canExecute }) => adminOperation.setAdminOperationGrantee({
|
|
310
317
|
adminOperationId,
|
|
311
318
|
adminUnitIds,
|
|
312
319
|
canExecute,
|
|
313
|
-
})
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
320
|
+
}),
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
name: 'delete-admin-operation-grantee',
|
|
324
|
+
descriptor: tools_data_1.deleteAdminOperationGranteeDescriptor,
|
|
325
|
+
input: tools_data_1.deleteAdminOperationGranteeInput,
|
|
326
|
+
run: ({ ids }) => adminOperation.deleteAdminOperationGrantee(ids),
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
name: 'call-configuration-service',
|
|
330
|
+
descriptor: tools_data_1.callConfigurationServiceDescriptor,
|
|
331
|
+
input: tools_data_1.callConfigurationServiceInput,
|
|
332
|
+
run: ({ service, method, httpMethod, body, query }) => configuration.call({
|
|
326
333
|
service,
|
|
327
334
|
method,
|
|
328
335
|
httpMethod,
|
|
329
336
|
...(body !== undefined ? { body } : {}),
|
|
330
337
|
...(query !== undefined ? { query } : {}),
|
|
331
|
-
})
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
338
|
+
}),
|
|
339
|
+
},
|
|
340
|
+
];
|
|
341
|
+
return { core, mutating };
|
|
342
|
+
}
|
|
343
|
+
_registerClientTools() {
|
|
344
|
+
const { core, mutating } = this._clientToolDefs();
|
|
345
|
+
const defs = this._readonly ? core : [...core, ...mutating];
|
|
346
|
+
for (const def of defs) {
|
|
347
|
+
this._registerHandlerWithDescriptor(def.name, def.descriptor, (0, utils_1.withValidation)(def.input, def.run));
|
|
336
348
|
}
|
|
337
349
|
}
|
|
338
350
|
async startMcp() {
|