@servicelabsco/slabs-access-manager 1.0.70 → 1.0.73
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/dist/access/controllers/report.view.controller.d.ts +30 -12
- package/dist/access/controllers/report.view.controller.js +1 -1
- package/dist/access/controllers/report.view.controller.js.map +1 -1
- package/dist/access/dtos/report.view.query.dto.d.ts +1 -0
- package/dist/access/dtos/report.view.query.dto.js +20 -0
- package/dist/access/dtos/report.view.query.dto.js.map +1 -1
- package/dist/access/entities/business.material.view.entity.d.ts +9 -0
- package/dist/access/entities/business.material.view.entity.js +44 -0
- package/dist/access/entities/business.material.view.entity.js.map +1 -0
- package/dist/access/entities/index.d.ts +1 -0
- package/dist/access/entities/index.js +1 -0
- package/dist/access/entities/index.js.map +1 -1
- package/dist/access/es6.classes.d.ts +10 -3
- package/dist/access/es6.classes.js +6 -0
- package/dist/access/es6.classes.js.map +1 -1
- package/dist/access/libraries/index.d.ts +1 -0
- package/dist/access/libraries/index.js +1 -0
- package/dist/access/libraries/index.js.map +1 -1
- package/dist/access/libraries/report.view.enablement.d.ts +11 -0
- package/dist/access/libraries/report.view.enablement.js +49 -0
- package/dist/access/libraries/report.view.enablement.js.map +1 -0
- package/dist/access/libraries/report.view.query.compiler.d.ts +35 -2
- package/dist/access/libraries/report.view.query.compiler.js +274 -46
- package/dist/access/libraries/report.view.query.compiler.js.map +1 -1
- package/dist/access/middlewares/mcp.rate.limit.middleware.d.ts +2 -0
- package/dist/access/middlewares/mcp.rate.limit.middleware.js +27 -6
- package/dist/access/middlewares/mcp.rate.limit.middleware.js.map +1 -1
- package/dist/access/services/listing.preference.service.js +11 -1
- package/dist/access/services/listing.preference.service.js.map +1 -1
- package/dist/access/services/listing.service.d.ts +3 -1
- package/dist/access/services/listing.service.js +7 -6
- package/dist/access/services/listing.service.js.map +1 -1
- package/dist/access/services/oauth.as.service.d.ts +1 -0
- package/dist/access/services/oauth.as.service.js +1 -0
- package/dist/access/services/oauth.as.service.js.map +1 -1
- package/dist/access/services/report.view.service.d.ts +34 -12
- package/dist/access/services/report.view.service.js +81 -14
- package/dist/access/services/report.view.service.js.map +1 -1
- package/dist/access/subscribers/business.material.view.subscriber.d.ts +8 -0
- package/dist/access/subscribers/business.material.view.subscriber.js +31 -0
- package/dist/access/subscribers/business.material.view.subscriber.js.map +1 -0
- package/dist/access/subscribers/index.d.ts +1 -0
- package/dist/access/subscribers/index.js +1 -0
- package/dist/access/subscribers/index.js.map +1 -1
- package/dist/accessUtility/es6.classes.d.ts +2 -3
- package/dist/accessUtility/es6.classes.js +0 -2
- package/dist/accessUtility/es6.classes.js.map +1 -1
- package/dist/accessUtility/libraries/process.report.listing.d.ts +1 -1
- package/dist/accessUtility/services/es6.service.d.ts +1 -3
- package/dist/accessUtility/services/es6.service.js +2 -6
- package/dist/accessUtility/services/es6.service.js.map +1 -1
- package/dist/accessUtility/services/index.d.ts +0 -1
- package/dist/accessUtility/services/index.js +0 -1
- package/dist/accessUtility/services/index.js.map +1 -1
- package/dist/app.controller.d.ts +1 -2
- package/dist/app.controller.js +1 -2
- package/dist/app.controller.js.map +1 -1
- package/dist/config/entity.constants.d.ts +2 -0
- package/dist/config/entity.constants.js +2 -0
- package/dist/config/entity.constants.js.map +1 -1
- package/dist/development/controllers/development.catalog.controller.d.ts +25 -2
- package/dist/development/controllers/development.catalog.controller.js +32 -0
- package/dist/development/controllers/development.catalog.controller.js.map +1 -1
- package/dist/development/dtos/material.view.catalog.attributes.dto.d.ts +16 -0
- package/dist/development/dtos/material.view.catalog.attributes.dto.js +63 -1
- package/dist/development/dtos/material.view.catalog.attributes.dto.js.map +1 -1
- package/dist/development/services/admin.report.view.service.d.ts +25 -1
- package/dist/development/services/admin.report.view.service.js +195 -13
- package/dist/development/services/admin.report.view.service.js.map +1 -1
- package/dist/mcp/admin/tools/admin.tool.registry.js +6 -0
- package/dist/mcp/admin/tools/admin.tool.registry.js.map +1 -1
- package/dist/mcp/admin/tools/catalog/admin.column.describe.tool.js +1 -1
- package/dist/mcp/admin/tools/catalog/admin.column.describe.tool.js.map +1 -1
- package/dist/mcp/admin/tools/catalog/admin.view.business.clear.tool.d.ts +18 -0
- package/dist/mcp/admin/tools/catalog/admin.view.business.clear.tool.js +27 -0
- package/dist/mcp/admin/tools/catalog/admin.view.business.clear.tool.js.map +1 -0
- package/dist/mcp/admin/tools/catalog/admin.view.business.set.tool.d.ts +20 -0
- package/dist/mcp/admin/tools/catalog/admin.view.business.set.tool.js +28 -0
- package/dist/mcp/admin/tools/catalog/admin.view.business.set.tool.js.map +1 -0
- package/dist/mcp/admin/tools/catalog/admin.view.businesses.tool.d.ts +17 -0
- package/dist/mcp/admin/tools/catalog/admin.view.businesses.tool.js +23 -0
- package/dist/mcp/admin/tools/catalog/admin.view.businesses.tool.js.map +1 -0
- package/dist/mcp/admin/tools/catalog/admin.view.columns.sync.tool.d.ts +3 -1
- package/dist/mcp/admin/tools/catalog/admin.view.columns.sync.tool.js +5 -1
- package/dist/mcp/admin/tools/catalog/admin.view.columns.sync.tool.js.map +1 -1
- package/dist/mcp/admin/tools/catalog/admin.view.update.tool.d.ts +1 -1
- package/dist/mcp/admin/tools/catalog/admin.view.update.tool.js +2 -2
- package/dist/mcp/admin/tools/catalog/admin.view.update.tool.js.map +1 -1
- package/dist/mcp/admin/tools/catalog/admin.views.list.tool.js.map +1 -1
- package/dist/mcp/admin/tools/catalog/index.d.ts +3 -0
- package/dist/mcp/admin/tools/catalog/index.js +3 -0
- package/dist/mcp/admin/tools/catalog/index.js.map +1 -1
- package/dist/mcp/auth/index.d.ts +2 -0
- package/dist/mcp/auth/index.js +2 -0
- package/dist/mcp/auth/index.js.map +1 -1
- package/dist/mcp/auth/mcp.execution.context.d.ts +8 -0
- package/dist/mcp/auth/mcp.execution.context.js +44 -0
- package/dist/mcp/auth/mcp.execution.context.js.map +1 -0
- package/dist/mcp/auth/mcp.scope.policy.d.ts +12 -0
- package/dist/mcp/auth/mcp.scope.policy.js +28 -0
- package/dist/mcp/auth/mcp.scope.policy.js.map +1 -0
- package/dist/mcp/es6.classes.d.ts +11 -2
- package/dist/mcp/es6.classes.js +9 -1
- package/dist/mcp/es6.classes.js.map +1 -1
- package/dist/mcp/http/business.mcp.controller.d.ts +1 -3
- package/dist/mcp/http/business.mcp.controller.js +7 -19
- package/dist/mcp/http/business.mcp.controller.js.map +1 -1
- package/dist/mcp/interfaces/mcp.tool.interface.d.ts +1 -0
- package/dist/mcp/logging/mcp.call.log.interceptor.js +1 -0
- package/dist/mcp/logging/mcp.call.log.interceptor.js.map +1 -1
- package/dist/mcp/logging/sanitize.mcp.call.log.d.ts +25 -0
- package/dist/mcp/logging/sanitize.mcp.call.log.js +60 -1
- package/dist/mcp/logging/sanitize.mcp.call.log.js.map +1 -1
- package/dist/mcp/mentities/mcp.call.log.mentity.d.ts +1 -0
- package/dist/mcp/mentities/mcp.call.log.mentity.js +4 -0
- package/dist/mcp/mentities/mcp.call.log.mentity.js.map +1 -1
- package/dist/mcp/slabs.mcp.server.js +5 -1
- package/dist/mcp/slabs.mcp.server.js.map +1 -1
- package/dist/mcp/tools/mcp.tool.d.ts +1 -0
- package/dist/mcp/tools/mcp.tool.js +9 -0
- package/dist/mcp/tools/mcp.tool.js.map +1 -1
- package/dist/mcp/tools/view.describe.tool.d.ts +1 -1
- package/dist/mcp/tools/view.describe.tool.js +1 -1
- package/dist/mcp/tools/view.describe.tool.js.map +1 -1
- package/dist/mcp/tools/view.query.tool.d.ts +9 -5
- package/dist/mcp/tools/view.query.tool.js +11 -3
- package/dist/mcp/tools/view.query.tool.js.map +1 -1
- package/dist/mcp/tools/views.list.tool.d.ts +1 -1
- package/dist/mcp/tools/views.list.tool.js +1 -1
- package/dist/mcp/tools/views.list.tool.js.map +1 -1
- package/dist/migrations/1787174933444-CreateBusinessMaterialViewTable.d.ts +5 -0
- package/dist/migrations/1787174933444-CreateBusinessMaterialViewTable.js +21 -0
- package/dist/migrations/1787174933444-CreateBusinessMaterialViewTable.js.map +1 -0
- package/package.json +4 -1
- package/dist/accessUtility/services/pdf.service.d.ts +0 -14
- package/dist/accessUtility/services/pdf.service.js +0 -89
- package/dist/accessUtility/services/pdf.service.js.map +0 -1
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { AdminToolRegistry } from './admin/tools/admin.tool.registry';
|
|
2
2
|
import { AdminCatalogValidateTool } from './admin/tools/catalog/admin.catalog.validate.tool';
|
|
3
3
|
import { AdminColumnDescribeTool } from './admin/tools/catalog/admin.column.describe.tool';
|
|
4
|
+
import { AdminViewBusinessClearTool } from './admin/tools/catalog/admin.view.business.clear.tool';
|
|
5
|
+
import { AdminViewBusinessSetTool } from './admin/tools/catalog/admin.view.business.set.tool';
|
|
6
|
+
import { AdminViewBusinessesTool } from './admin/tools/catalog/admin.view.businesses.tool';
|
|
4
7
|
import { AdminViewColumnsSyncTool } from './admin/tools/catalog/admin.view.columns.sync.tool';
|
|
5
8
|
import { AdminViewRegisterTool } from './admin/tools/catalog/admin.view.register.tool';
|
|
6
9
|
import { AdminViewSampleTool } from './admin/tools/catalog/admin.view.sample.tool';
|
|
@@ -71,7 +74,9 @@ import { UiActionRoleDeleteTool } from './admin/tools/ui_action_role/ui.action.r
|
|
|
71
74
|
import { UiActionRoleGetTool } from './admin/tools/ui_action_role/ui.action.role.get.tool';
|
|
72
75
|
import { UiActionRoleListTool } from './admin/tools/ui_action_role/ui.action.role.list.tool';
|
|
73
76
|
import { UiActionRoleUpdateTool } from './admin/tools/ui_action_role/ui.action.role.update.tool';
|
|
77
|
+
import { McpExecutionContext } from './auth/mcp.execution.context';
|
|
74
78
|
import { McpIdempotencyStore } from './auth/mcp.idempotency.store';
|
|
79
|
+
import { McpScopePolicy } from './auth/mcp.scope.policy';
|
|
75
80
|
import { McpCatalogGate } from './catalog/mcp.catalog.gate';
|
|
76
81
|
import { ClientCredentialAuth } from './client/client.credential.auth';
|
|
77
82
|
import { DevelopmentKeyAuth } from './client/development.key.auth';
|
|
@@ -99,8 +104,8 @@ import { ViewQueryTool } from './tools/view.query.tool';
|
|
|
99
104
|
import { ViewsListTool } from './tools/views.list.tool';
|
|
100
105
|
import { WhoamiTool } from './tools/whoami.tool';
|
|
101
106
|
declare const es6Classes: {
|
|
102
|
-
admin: (typeof ChildMenuCreateTool | typeof ChildMenuDeleteTool | typeof ChildMenuGetTool | typeof ChildMenuListTool | typeof ChildMenuUpdateTool | typeof ListingColumnCreateTool | typeof ListingColumnDeleteTool | typeof ListingColumnGetTool | typeof ListingColumnListTool | typeof ListingColumnUpdateTool | typeof ListingPageCreateTool | typeof ListingPageDeleteTool | typeof ListingPageGetTool | typeof ListingPageListTool | typeof ListingPageUpdateTool | typeof ListingPreferenceCreateTool | typeof ListingPreferenceDeleteTool | typeof ListingPreferenceGetTool | typeof ListingPreferenceListTool | typeof ListingPreferenceUpdateTool | typeof MenuCreateTool | typeof MenuDeleteTool | typeof MenuGetTool | typeof MenuListTool | typeof MenuUpdateTool | typeof MenuRoleCreateTool | typeof MenuRoleDeleteTool | typeof MenuRoleGetTool | typeof MenuRoleListTool | typeof MenuRoleUpdateTool | typeof MenuUiActionCreateTool | typeof MenuUiActionDeleteTool | typeof MenuUiActionGetTool | typeof MenuUiActionListTool | typeof MenuUiActionUpdateTool | typeof ModuleCreateTool | typeof ModuleDeleteTool | typeof ModuleGetTool | typeof ModuleListTool | typeof ModuleUpdateTool | typeof ModuleMenuCreateTool | typeof ModuleMenuDeleteTool | typeof ModuleMenuGetTool | typeof ModuleMenuListTool | typeof ModuleMenuUpdateTool | typeof ReportCreateTool | typeof ReportDeleteTool | typeof ReportGetTool | typeof ReportListTool | typeof ReportUpdateTool | typeof UiActionCreateTool | typeof UiActionDeleteTool | typeof UiActionGetTool | typeof UiActionListTool | typeof UiActionUpdateTool | typeof UiActionRoleCreateTool | typeof UiActionRoleDeleteTool | typeof UiActionRoleGetTool | typeof UiActionRoleListTool | typeof UiActionRoleUpdateTool | typeof FormScriptCreateTool | typeof FormScriptDeleteTool | typeof FormScriptGetTool | typeof FormScriptListTool | typeof FormScriptUpdateTool | typeof AdminCatalogValidateTool | typeof AdminColumnDescribeTool | typeof AdminViewColumnsSyncTool | typeof AdminViewRegisterTool | typeof AdminViewSampleTool | typeof AdminViewUpdateTool | typeof AdminViewsListTool | typeof AdminToolRegistry)[];
|
|
103
|
-
auth: (typeof McpIdempotencyStore)[];
|
|
107
|
+
admin: (typeof ChildMenuCreateTool | typeof ChildMenuDeleteTool | typeof ChildMenuGetTool | typeof ChildMenuListTool | typeof ChildMenuUpdateTool | typeof ListingColumnCreateTool | typeof ListingColumnDeleteTool | typeof ListingColumnGetTool | typeof ListingColumnListTool | typeof ListingColumnUpdateTool | typeof ListingPageCreateTool | typeof ListingPageDeleteTool | typeof ListingPageGetTool | typeof ListingPageListTool | typeof ListingPageUpdateTool | typeof ListingPreferenceCreateTool | typeof ListingPreferenceDeleteTool | typeof ListingPreferenceGetTool | typeof ListingPreferenceListTool | typeof ListingPreferenceUpdateTool | typeof MenuCreateTool | typeof MenuDeleteTool | typeof MenuGetTool | typeof MenuListTool | typeof MenuUpdateTool | typeof MenuRoleCreateTool | typeof MenuRoleDeleteTool | typeof MenuRoleGetTool | typeof MenuRoleListTool | typeof MenuRoleUpdateTool | typeof MenuUiActionCreateTool | typeof MenuUiActionDeleteTool | typeof MenuUiActionGetTool | typeof MenuUiActionListTool | typeof MenuUiActionUpdateTool | typeof ModuleCreateTool | typeof ModuleDeleteTool | typeof ModuleGetTool | typeof ModuleListTool | typeof ModuleUpdateTool | typeof ModuleMenuCreateTool | typeof ModuleMenuDeleteTool | typeof ModuleMenuGetTool | typeof ModuleMenuListTool | typeof ModuleMenuUpdateTool | typeof ReportCreateTool | typeof ReportDeleteTool | typeof ReportGetTool | typeof ReportListTool | typeof ReportUpdateTool | typeof UiActionCreateTool | typeof UiActionDeleteTool | typeof UiActionGetTool | typeof UiActionListTool | typeof UiActionUpdateTool | typeof UiActionRoleCreateTool | typeof UiActionRoleDeleteTool | typeof UiActionRoleGetTool | typeof UiActionRoleListTool | typeof UiActionRoleUpdateTool | typeof FormScriptCreateTool | typeof FormScriptDeleteTool | typeof FormScriptGetTool | typeof FormScriptListTool | typeof FormScriptUpdateTool | typeof AdminCatalogValidateTool | typeof AdminColumnDescribeTool | typeof AdminViewBusinessClearTool | typeof AdminViewBusinessSetTool | typeof AdminViewBusinessesTool | typeof AdminViewColumnsSyncTool | typeof AdminViewRegisterTool | typeof AdminViewSampleTool | typeof AdminViewUpdateTool | typeof AdminViewsListTool | typeof AdminToolRegistry)[];
|
|
108
|
+
auth: (typeof McpIdempotencyStore | typeof McpExecutionContext | typeof McpScopePolicy)[];
|
|
104
109
|
catalog: ({
|
|
105
110
|
assertValidCatalog: typeof import("./catalog/assert.valid.catalog").assertValidCatalog;
|
|
106
111
|
} | typeof McpCatalogGate)[];
|
|
@@ -113,6 +118,10 @@ declare const es6Classes: {
|
|
|
113
118
|
hashCompiledSql: typeof import("./logging/sanitize.mcp.call.log").hashCompiledSql;
|
|
114
119
|
hottestQueryFamilies: typeof import("./logging/sanitize.mcp.call.log").hottestQueryFamilies;
|
|
115
120
|
extractExplainCost: typeof import("./logging/sanitize.mcp.call.log").extractExplainCost;
|
|
121
|
+
capIntent: typeof import("./logging/sanitize.mcp.call.log").capIntent;
|
|
122
|
+
extractIntent: typeof import("./logging/sanitize.mcp.call.log").extractIntent;
|
|
123
|
+
clusterIntentsBySqlHash: typeof import("./logging/sanitize.mcp.call.log").clusterIntentsBySqlHash;
|
|
124
|
+
catalogGapIntents: typeof import("./logging/sanitize.mcp.call.log").catalogGapIntents;
|
|
116
125
|
} | typeof McpCallLogWriter | typeof McpCallLogInterceptor)[];
|
|
117
126
|
mentities: (typeof McpCallLogMentity)[];
|
|
118
127
|
tools: (typeof McpTool | typeof WhoamiTool | typeof ViewDescribeTool | typeof ViewQueryTool | typeof ViewsListTool | typeof ToolRegistry | {
|
package/dist/mcp/es6.classes.js
CHANGED
|
@@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const admin_tool_registry_1 = require("./admin/tools/admin.tool.registry");
|
|
4
4
|
const admin_catalog_validate_tool_1 = require("./admin/tools/catalog/admin.catalog.validate.tool");
|
|
5
5
|
const admin_column_describe_tool_1 = require("./admin/tools/catalog/admin.column.describe.tool");
|
|
6
|
+
const admin_view_business_clear_tool_1 = require("./admin/tools/catalog/admin.view.business.clear.tool");
|
|
7
|
+
const admin_view_business_set_tool_1 = require("./admin/tools/catalog/admin.view.business.set.tool");
|
|
8
|
+
const admin_view_businesses_tool_1 = require("./admin/tools/catalog/admin.view.businesses.tool");
|
|
6
9
|
const admin_view_columns_sync_tool_1 = require("./admin/tools/catalog/admin.view.columns.sync.tool");
|
|
7
10
|
const admin_view_register_tool_1 = require("./admin/tools/catalog/admin.view.register.tool");
|
|
8
11
|
const admin_view_sample_tool_1 = require("./admin/tools/catalog/admin.view.sample.tool");
|
|
@@ -73,7 +76,9 @@ const ui_action_role_delete_tool_1 = require("./admin/tools/ui_action_role/ui.ac
|
|
|
73
76
|
const ui_action_role_get_tool_1 = require("./admin/tools/ui_action_role/ui.action.role.get.tool");
|
|
74
77
|
const ui_action_role_list_tool_1 = require("./admin/tools/ui_action_role/ui.action.role.list.tool");
|
|
75
78
|
const ui_action_role_update_tool_1 = require("./admin/tools/ui_action_role/ui.action.role.update.tool");
|
|
79
|
+
const mcp_execution_context_1 = require("./auth/mcp.execution.context");
|
|
76
80
|
const mcp_idempotency_store_1 = require("./auth/mcp.idempotency.store");
|
|
81
|
+
const mcp_scope_policy_1 = require("./auth/mcp.scope.policy");
|
|
77
82
|
const assert_valid_catalog_1 = require("./catalog/assert.valid.catalog");
|
|
78
83
|
const mcp_catalog_gate_1 = require("./catalog/mcp.catalog.gate");
|
|
79
84
|
const client_credential_auth_1 = require("./client/client.credential.auth");
|
|
@@ -111,6 +116,9 @@ const es6Classes = {
|
|
|
111
116
|
admin_tool_registry_1.AdminToolRegistry,
|
|
112
117
|
admin_catalog_validate_tool_1.AdminCatalogValidateTool,
|
|
113
118
|
admin_column_describe_tool_1.AdminColumnDescribeTool,
|
|
119
|
+
admin_view_business_clear_tool_1.AdminViewBusinessClearTool,
|
|
120
|
+
admin_view_business_set_tool_1.AdminViewBusinessSetTool,
|
|
121
|
+
admin_view_businesses_tool_1.AdminViewBusinessesTool,
|
|
114
122
|
admin_view_columns_sync_tool_1.AdminViewColumnsSyncTool,
|
|
115
123
|
admin_view_register_tool_1.AdminViewRegisterTool,
|
|
116
124
|
admin_view_sample_tool_1.AdminViewSampleTool,
|
|
@@ -182,7 +190,7 @@ const es6Classes = {
|
|
|
182
190
|
ui_action_role_list_tool_1.UiActionRoleListTool,
|
|
183
191
|
ui_action_role_update_tool_1.UiActionRoleUpdateTool,
|
|
184
192
|
],
|
|
185
|
-
auth: [mcp_idempotency_store_1.McpIdempotencyStore],
|
|
193
|
+
auth: [mcp_execution_context_1.McpExecutionContext, mcp_idempotency_store_1.McpIdempotencyStore, mcp_scope_policy_1.McpScopePolicy],
|
|
186
194
|
catalog: [assert_valid_catalog_1.AssertValidCatalog, mcp_catalog_gate_1.McpCatalogGate],
|
|
187
195
|
client: [client_credential_auth_1.ClientCredentialAuth, development_key_auth_1.DevelopmentKeyAuth, slabs_api_client_1.SlabsApiClient, slabs_api_error_1.SlabsApiError],
|
|
188
196
|
http: [admin_mcp_controller_1.AdminMcpController, business_mcp_controller_1.BusinessMcpController, mcp_http_module_1.McpHttpModule, mcp_request_handler_1.McpRequestHandler, prm_controller_1.PrmController, unauthorized_mcp_response_1.UnauthorizedMcpResponse],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"es6.classes.js","sourceRoot":"","sources":["../../src/mcp/es6.classes.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"es6.classes.js","sourceRoot":"","sources":["../../src/mcp/es6.classes.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,8 +7,6 @@ export declare class BusinessMcpController {
|
|
|
7
7
|
get(req: Request, res: Response): void;
|
|
8
8
|
delete(res: Response): Response<any, Record<string, any>>;
|
|
9
9
|
private dispatch;
|
|
10
|
-
private
|
|
11
|
-
private scopeAllows;
|
|
12
|
-
private callerScopes;
|
|
10
|
+
private allTools;
|
|
13
11
|
private keepAlive;
|
|
14
12
|
}
|
|
@@ -14,8 +14,9 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.BusinessMcpController = void 0;
|
|
16
16
|
const common_1 = require("@nestjs/common");
|
|
17
|
-
const nestjs_utility_services_1 = require("@servicelabsco/nestjs-utility-services");
|
|
18
17
|
const extract_client_credentials_1 = require("../../access/libraries/extract.client.credentials");
|
|
18
|
+
const mcp_execution_context_1 = require("../auth/mcp.execution.context");
|
|
19
|
+
const mcp_scope_policy_1 = require("../auth/mcp.scope.policy");
|
|
19
20
|
const client_credential_auth_1 = require("../client/client.credential.auth");
|
|
20
21
|
const mcp_constants_1 = require("../mcp.constants");
|
|
21
22
|
const tool_registry_1 = require("../tools/tool.registry");
|
|
@@ -45,35 +46,22 @@ let BusinessMcpController = class BusinessMcpController {
|
|
|
45
46
|
return unauthorized_mcp_response_1.UnauthorizedMcpResponse.unauthorized(res, 'Missing Authorization Bearer token or x-client-id / x-client-secret headers.');
|
|
46
47
|
}
|
|
47
48
|
const auth = new client_credential_auth_1.ClientCredentialAuth(creds.clientId, creds.clientSecret);
|
|
48
|
-
const
|
|
49
|
+
const context = mcp_execution_context_1.McpExecutionContext.fromAuth();
|
|
49
50
|
return this.handler.handle(req, res, {
|
|
50
51
|
name: (0, mcp_constants_1.getMcpServerName)(),
|
|
51
52
|
auth,
|
|
52
|
-
tools: (client) => this.
|
|
53
|
+
tools: (client) => mcp_scope_policy_1.McpScopePolicy.filter(this.allTools(client), context),
|
|
53
54
|
});
|
|
54
55
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
return merged.filter((tool) => this.scopeAllows(tool, scopes));
|
|
58
|
-
}
|
|
59
|
-
scopeAllows(tool, scopes) {
|
|
60
|
-
if (scopes.includes('mcp'))
|
|
61
|
-
return true;
|
|
62
|
-
const required = tool.requiredScopes || [];
|
|
63
|
-
if (!required.length)
|
|
64
|
-
return true;
|
|
65
|
-
return required.some((scope) => scopes.includes(scope));
|
|
66
|
-
}
|
|
67
|
-
callerScopes() {
|
|
68
|
-
const user = nestjs_utility_services_1.Auth.user();
|
|
69
|
-
const scope = user?.auth_attributes?.scope;
|
|
70
|
-
return Array.isArray(scope) && scope.length ? scope : ['mcp'];
|
|
56
|
+
allTools(client) {
|
|
57
|
+
return [...new tool_registry_1.ToolRegistry(client).tools(), ...(0, mcp_constants_1.getHostMcpRegistries)().flatMap((factory) => factory(client))];
|
|
71
58
|
}
|
|
72
59
|
keepAlive(req, res) {
|
|
73
60
|
res.status(200);
|
|
74
61
|
res.setHeader('Content-Type', 'text/event-stream');
|
|
75
62
|
res.setHeader('Cache-Control', 'no-cache, no-transform');
|
|
76
63
|
res.setHeader('Connection', 'keep-alive');
|
|
64
|
+
res.setHeader('X-Accel-Buffering', 'no');
|
|
77
65
|
res.flushHeaders?.();
|
|
78
66
|
res.write(': ping\n\n');
|
|
79
67
|
const timer = setInterval(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"business.mcp.controller.js","sourceRoot":"","sources":["../../../src/mcp/http/business.mcp.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAyE;
|
|
1
|
+
{"version":3,"file":"business.mcp.controller.js","sourceRoot":"","sources":["../../../src/mcp/http/business.mcp.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -106,6 +106,7 @@ let McpCallLogInterceptor = McpCallLogInterceptor_1 = class McpCallLogIntercepto
|
|
|
106
106
|
row_count: cost.row_count ?? null,
|
|
107
107
|
}
|
|
108
108
|
: undefined,
|
|
109
|
+
intent: (0, sanitize_mcp_call_log_1.extractIntent)(req.body) || (0, sanitize_mcp_call_log_1.extractIntent)(identity.request),
|
|
109
110
|
created_at: new Date(),
|
|
110
111
|
expire_at: new Date(Date.now() + ttlDays * 86_400_000),
|
|
111
112
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.call.log.interceptor.js","sourceRoot":"","sources":["../../../src/mcp/logging/mcp.call.log.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoG;AACpG,oFAA8D;AAC9D,+BAAuC;AACvC,oDAAoD;AACpD,+DAAyD;AACzD,
|
|
1
|
+
{"version":3,"file":"mcp.call.log.interceptor.js","sourceRoot":"","sources":["../../../src/mcp/logging/mcp.call.log.interceptor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export declare const MCP_LOG_BODY_CAP: number;
|
|
2
2
|
export declare const MCP_LOG_TTL_DAYS: number;
|
|
3
|
+
export declare const MCP_LOG_INTENT_CAP = 500;
|
|
3
4
|
export type McpCaller = {
|
|
4
5
|
id?: number;
|
|
5
6
|
auth_attributes?: {
|
|
@@ -26,6 +27,26 @@ export declare function capResponseBody(body: unknown, cap?: number): {
|
|
|
26
27
|
bytes: number;
|
|
27
28
|
};
|
|
28
29
|
export declare function hashCompiledSql(sql: string): string;
|
|
30
|
+
export declare function capIntent(value: unknown): string | null;
|
|
31
|
+
export declare function extractIntent(payload: unknown): string | null;
|
|
32
|
+
export declare function clusterIntentsBySqlHash(rows: Array<{
|
|
33
|
+
sql_hash?: string | null;
|
|
34
|
+
intent?: string | null;
|
|
35
|
+
}>, limit?: number): Array<{
|
|
36
|
+
sql_hash: string;
|
|
37
|
+
count: number;
|
|
38
|
+
intents: Array<{
|
|
39
|
+
intent: string;
|
|
40
|
+
count: number;
|
|
41
|
+
}>;
|
|
42
|
+
}>;
|
|
43
|
+
export declare function catalogGapIntents(rows: Array<{
|
|
44
|
+
intent?: string | null;
|
|
45
|
+
error?: boolean;
|
|
46
|
+
}>, limit?: number): Array<{
|
|
47
|
+
intent: string;
|
|
48
|
+
count: number;
|
|
49
|
+
}>;
|
|
29
50
|
export declare function hottestQueryFamilies(rows: Array<{
|
|
30
51
|
sql_hash: string;
|
|
31
52
|
db_ms: number;
|
|
@@ -41,4 +62,8 @@ export declare const SanitizeMcpCallLog: {
|
|
|
41
62
|
hashCompiledSql: typeof hashCompiledSql;
|
|
42
63
|
hottestQueryFamilies: typeof hottestQueryFamilies;
|
|
43
64
|
extractExplainCost: typeof extractExplainCost;
|
|
65
|
+
capIntent: typeof capIntent;
|
|
66
|
+
extractIntent: typeof extractIntent;
|
|
67
|
+
clusterIntentsBySqlHash: typeof clusterIntentsBySqlHash;
|
|
68
|
+
catalogGapIntents: typeof catalogGapIntents;
|
|
44
69
|
};
|
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SanitizeMcpCallLog = exports.MCP_LOG_TTL_DAYS = exports.MCP_LOG_BODY_CAP = void 0;
|
|
3
|
+
exports.SanitizeMcpCallLog = exports.MCP_LOG_INTENT_CAP = exports.MCP_LOG_TTL_DAYS = exports.MCP_LOG_BODY_CAP = void 0;
|
|
4
4
|
exports.sanitizeMcpCallLog = sanitizeMcpCallLog;
|
|
5
5
|
exports.capResponseBody = capResponseBody;
|
|
6
6
|
exports.hashCompiledSql = hashCompiledSql;
|
|
7
|
+
exports.capIntent = capIntent;
|
|
8
|
+
exports.extractIntent = extractIntent;
|
|
9
|
+
exports.clusterIntentsBySqlHash = clusterIntentsBySqlHash;
|
|
10
|
+
exports.catalogGapIntents = catalogGapIntents;
|
|
7
11
|
exports.hottestQueryFamilies = hottestQueryFamilies;
|
|
8
12
|
exports.extractExplainCost = extractExplainCost;
|
|
9
13
|
const crypto_1 = require("crypto");
|
|
10
14
|
const extract_client_credentials_1 = require("../../access/libraries/extract.client.credentials");
|
|
11
15
|
exports.MCP_LOG_BODY_CAP = Number(process.env.MCP_LOG_BODY_CAP) > 0 ? Number(process.env.MCP_LOG_BODY_CAP) : 32 * 1024;
|
|
12
16
|
exports.MCP_LOG_TTL_DAYS = Number(process.env.MCP_LOG_TTL_DAYS) > 0 ? Number(process.env.MCP_LOG_TTL_DAYS) : 90;
|
|
17
|
+
exports.MCP_LOG_INTENT_CAP = 500;
|
|
13
18
|
const SECRET_HEADER = /^(authorization|cookie|x-client-secret|x-development-key)$/i;
|
|
14
19
|
const SECRET_KEY = /(secret|password|token|authorization|cookie|api[_-]?key|client_secret|development[_-]?key)/i;
|
|
15
20
|
function sanitizeMcpCallLog(input) {
|
|
@@ -43,6 +48,56 @@ function hashCompiledSql(sql) {
|
|
|
43
48
|
.trim();
|
|
44
49
|
return (0, crypto_1.createHash)('sha256').update(normalized).digest('hex');
|
|
45
50
|
}
|
|
51
|
+
function capIntent(value) {
|
|
52
|
+
if (typeof value !== 'string')
|
|
53
|
+
return null;
|
|
54
|
+
const trimmed = value.trim();
|
|
55
|
+
if (!trimmed)
|
|
56
|
+
return null;
|
|
57
|
+
return trimmed.length > exports.MCP_LOG_INTENT_CAP ? trimmed.slice(0, exports.MCP_LOG_INTENT_CAP) : trimmed;
|
|
58
|
+
}
|
|
59
|
+
function extractIntent(payload) {
|
|
60
|
+
if (!payload || typeof payload !== 'object')
|
|
61
|
+
return null;
|
|
62
|
+
const root = payload;
|
|
63
|
+
return capIntent(root?.params?.arguments?.intent) || capIntent(root?.intent) || capIntent(root?.body?.intent);
|
|
64
|
+
}
|
|
65
|
+
function clusterIntentsBySqlHash(rows, limit = 20) {
|
|
66
|
+
const groups = new Map();
|
|
67
|
+
for (const row of rows) {
|
|
68
|
+
const sqlHash = row.sql_hash;
|
|
69
|
+
const intent = capIntent(row.intent);
|
|
70
|
+
if (!sqlHash || !intent)
|
|
71
|
+
continue;
|
|
72
|
+
const intents = groups.get(sqlHash) || new Map();
|
|
73
|
+
intents.set(intent, (intents.get(intent) || 0) + 1);
|
|
74
|
+
groups.set(sqlHash, intents);
|
|
75
|
+
}
|
|
76
|
+
return [...groups.entries()]
|
|
77
|
+
.map(([sql_hash, intents]) => {
|
|
78
|
+
const ranked = [...intents.entries()]
|
|
79
|
+
.map(([intent, count]) => ({ intent, count }))
|
|
80
|
+
.sort((a, b) => b.count - a.count || a.intent.localeCompare(b.intent));
|
|
81
|
+
return { sql_hash, count: ranked.reduce((sum, item) => sum + item.count, 0), intents: ranked };
|
|
82
|
+
})
|
|
83
|
+
.sort((a, b) => b.count - a.count || a.sql_hash.localeCompare(b.sql_hash))
|
|
84
|
+
.slice(0, limit);
|
|
85
|
+
}
|
|
86
|
+
function catalogGapIntents(rows, limit = 20) {
|
|
87
|
+
const counts = new Map();
|
|
88
|
+
for (const row of rows) {
|
|
89
|
+
if (!row.error)
|
|
90
|
+
continue;
|
|
91
|
+
const intent = capIntent(row.intent);
|
|
92
|
+
if (!intent)
|
|
93
|
+
continue;
|
|
94
|
+
counts.set(intent, (counts.get(intent) || 0) + 1);
|
|
95
|
+
}
|
|
96
|
+
return [...counts.entries()]
|
|
97
|
+
.map(([intent, count]) => ({ intent, count }))
|
|
98
|
+
.sort((a, b) => b.count - a.count || a.intent.localeCompare(b.intent))
|
|
99
|
+
.slice(0, limit);
|
|
100
|
+
}
|
|
46
101
|
function hottestQueryFamilies(rows, limit = 10) {
|
|
47
102
|
const groups = new Map();
|
|
48
103
|
for (const row of rows) {
|
|
@@ -108,5 +163,9 @@ exports.SanitizeMcpCallLog = {
|
|
|
108
163
|
hashCompiledSql,
|
|
109
164
|
hottestQueryFamilies,
|
|
110
165
|
extractExplainCost,
|
|
166
|
+
capIntent,
|
|
167
|
+
extractIntent,
|
|
168
|
+
clusterIntentsBySqlHash,
|
|
169
|
+
catalogGapIntents,
|
|
111
170
|
};
|
|
112
171
|
//# sourceMappingURL=sanitize.mcp.call.log.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitize.mcp.call.log.js","sourceRoot":"","sources":["../../../src/mcp/logging/sanitize.mcp.call.log.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"sanitize.mcp.call.log.js","sourceRoot":"","sources":["../../../src/mcp/logging/sanitize.mcp.call.log.ts"],"names":[],"mappings":"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"}
|
|
@@ -67,6 +67,10 @@ __decorate([
|
|
|
67
67
|
(0, typeorm_1.Column)('json'),
|
|
68
68
|
__metadata("design:type", Object)
|
|
69
69
|
], McpCallLogMentity.prototype, "cost", void 0);
|
|
70
|
+
__decorate([
|
|
71
|
+
(0, typeorm_1.Column)(),
|
|
72
|
+
__metadata("design:type", String)
|
|
73
|
+
], McpCallLogMentity.prototype, "intent", void 0);
|
|
70
74
|
__decorate([
|
|
71
75
|
(0, typeorm_1.Column)(),
|
|
72
76
|
(0, typeorm_1.Index)(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.call.log.mentity.js","sourceRoot":"","sources":["../../../src/mcp/mentities/mcp.call.log.mentity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oFAA2E;AAC3E,qCAAgD;AAQzC,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,2CAAiB;
|
|
1
|
+
{"version":3,"file":"mcp.call.log.mentity.js","sourceRoot":"","sources":["../../../src/mcp/mentities/mcp.call.log.mentity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oFAA2E;AAC3E,qCAAgD;AAQzC,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,2CAAiB;CA+CvD,CAAA;AA/CY,8CAAiB;AAE1B;IADC,IAAA,gBAAM,GAAE;;kDACO;AAGhB;IADC,IAAA,gBAAM,GAAE;;sDACW;AAGpB;IADC,IAAA,gBAAM,GAAE;;iDACM;AAGf;IADC,IAAA,gBAAM,GAAE;;+CACI;AAGb;IADC,IAAA,gBAAM,GAAE;;+CACI;AAGb;IADC,IAAA,gBAAM,GAAE;;kDACO;AAGhB;IADC,IAAA,gBAAM,GAAE;;sDACW;AAGpB;IADC,IAAA,gBAAM,GAAE;;oDACS;AAGlB;IADC,IAAA,gBAAM,GAAE;;+CACI;AAGb;IADC,IAAA,gBAAM,EAAC,MAAM,CAAC;;kDACF;AAGb;IADC,IAAA,gBAAM,EAAC,MAAM,CAAC;;mDACD;AAGd;IADC,IAAA,gBAAM,EAAC,MAAM,CAAC;;oDACA;AAGf;IADC,IAAA,gBAAM,EAAC,MAAM,CAAC;;+CACL;AAIV;IADC,IAAA,gBAAM,GAAE;;iDACM;AAIf;IAFC,IAAA,gBAAM,GAAE;IACR,IAAA,eAAK,GAAE;8BACG,IAAI;oDAAC;4BA9CP,iBAAiB;IAF7B,IAAA,gBAAM,EAAC,eAAe,CAAC;IACvB,IAAA,eAAK,EAAC,mBAAmB,EAAE,CAAC,WAAW,CAAC,CAAC;GAC7B,iBAAiB,CA+C7B"}
|
|
@@ -2,9 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SlabsMcpServer = void 0;
|
|
4
4
|
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
5
|
+
const SERVER_INSTRUCTIONS = [
|
|
6
|
+
'The reporting catalog is dynamic: new views and columns appear at any time without reconnection.',
|
|
7
|
+
"If a question doesn't fit the views you've already seen, call views_list again before concluding it can't be answered.",
|
|
8
|
+
].join(' ');
|
|
5
9
|
class SlabsMcpServer {
|
|
6
10
|
constructor(name, tools) {
|
|
7
|
-
this.server = new mcp_js_1.McpServer({ name, version: '1.0.0' });
|
|
11
|
+
this.server = new mcp_js_1.McpServer({ name, version: '1.0.0' }, { instructions: SERVER_INSTRUCTIONS });
|
|
8
12
|
tools.forEach((tool) => tool.register(this.server));
|
|
9
13
|
}
|
|
10
14
|
instance() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slabs.mcp.server.js","sourceRoot":"","sources":["../../src/mcp/slabs.mcp.server.ts"],"names":[],"mappings":";;;AAAA,oEAAoE;AASpE,MAAa,cAAc;IAGvB,YAAY,IAAY,EAAE,KAAyB;QAC/C,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"slabs.mcp.server.js","sourceRoot":"","sources":["../../src/mcp/slabs.mcp.server.ts"],"names":[],"mappings":";;;AAAA,oEAAoE;AASpE,MAAM,mBAAmB,GAAG;IACxB,kGAAkG;IAClG,wHAAwH;CAC3H,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAQZ,MAAa,cAAc;IAGvB,YAAY,IAAY,EAAE,KAAyB;QAC/C,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC/F,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;CACJ;AAXD,wCAWC"}
|
|
@@ -14,6 +14,7 @@ export declare abstract class McpTool<TArgs = Record<string, unknown>> implement
|
|
|
14
14
|
protected readonly idempotent: boolean;
|
|
15
15
|
readonly requiredScopes: string[];
|
|
16
16
|
constructor(client: SlabsApiClient);
|
|
17
|
+
get isReadOnly(): boolean;
|
|
17
18
|
abstract execute(args: TArgs): Promise<McpToolResultInterface>;
|
|
18
19
|
register(server: McpServer): void;
|
|
19
20
|
private dispatch;
|
|
@@ -3,7 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.McpTool = void 0;
|
|
4
4
|
const nestjs_utility_services_1 = require("@servicelabsco/nestjs-utility-services");
|
|
5
5
|
const zod_1 = require("zod");
|
|
6
|
+
const mcp_execution_context_1 = require("../auth/mcp.execution.context");
|
|
6
7
|
const mcp_idempotency_store_1 = require("../auth/mcp.idempotency.store");
|
|
8
|
+
const mcp_scope_policy_1 = require("../auth/mcp.scope.policy");
|
|
7
9
|
const slabs_api_error_1 = require("../client/slabs.api.error");
|
|
8
10
|
class McpTool {
|
|
9
11
|
constructor(client) {
|
|
@@ -13,6 +15,9 @@ class McpTool {
|
|
|
13
15
|
this.idempotent = false;
|
|
14
16
|
this.requiredScopes = [];
|
|
15
17
|
}
|
|
18
|
+
get isReadOnly() {
|
|
19
|
+
return this.readOnly;
|
|
20
|
+
}
|
|
16
21
|
register(server) {
|
|
17
22
|
const inputSchema = this.destructive
|
|
18
23
|
? {
|
|
@@ -31,6 +36,10 @@ class McpTool {
|
|
|
31
36
|
}, async (args) => this.dispatch(args));
|
|
32
37
|
}
|
|
33
38
|
async dispatch(args) {
|
|
39
|
+
const context = mcp_execution_context_1.McpExecutionContext.fromAuth();
|
|
40
|
+
if (!mcp_scope_policy_1.McpScopePolicy.allows(this, context)) {
|
|
41
|
+
return { content: [{ type: 'text', text: JSON.stringify(mcp_scope_policy_1.McpScopePolicy.denial(this.name, context)) }], isError: true };
|
|
42
|
+
}
|
|
34
43
|
if (this.destructive && args?.confirm !== true) {
|
|
35
44
|
return {
|
|
36
45
|
content: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.tool.js","sourceRoot":"","sources":["../../../src/mcp/tools/mcp.tool.ts"],"names":[],"mappings":";;;AACA,oFAA8D;AAC9D,6BAAqC;AACrC,yEAAoE;
|
|
1
|
+
{"version":3,"file":"mcp.tool.js","sourceRoot":"","sources":["../../../src/mcp/tools/mcp.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ type ViewDescribeInput = {
|
|
|
7
7
|
export declare class ViewDescribeTool extends McpTool<ViewDescribeInput> {
|
|
8
8
|
readonly name = "view_describe";
|
|
9
9
|
readonly title = "Describe analytical view";
|
|
10
|
-
readonly description = "Full semantic schema of one analytical view: every column with its meaning (in Finnoto vocabulary), type, enum value labels, supported ops, the closed DSL grammar block (read it \u2014 do not guess operators), worked example_queries, and suggested visualizations. Call views_list first, then view_describe before writing a view_query. Column descriptions resolve domain traps; refreshed_at is freshness.";
|
|
10
|
+
readonly description = "Full semantic schema of one analytical view: every column with its meaning (in Finnoto vocabulary), type, enum value labels, supported ops, catalog-declared relationships (name, target view, cardinality \u2014 join with join: \"<name>\" and address <rel>.<column>), the closed DSL grammar block (read it \u2014 do not guess operators), worked example_queries, and suggested visualizations. Call views_list first, then view_describe before writing a view_query. Column descriptions resolve domain traps; refreshed_at is freshness.";
|
|
11
11
|
readonly inputSchema: {
|
|
12
12
|
name: z.ZodString;
|
|
13
13
|
};
|
|
@@ -11,7 +11,7 @@ class ViewDescribeTool extends mcp_tool_1.McpTool {
|
|
|
11
11
|
super(...arguments);
|
|
12
12
|
this.name = 'view_describe';
|
|
13
13
|
this.title = 'Describe analytical view';
|
|
14
|
-
this.description = 'Full semantic schema of one analytical view: every column with its meaning (in Finnoto vocabulary), type, enum value labels, supported ops, the closed DSL grammar block (read it — do not guess operators), worked example_queries, and suggested visualizations. Call views_list first, then view_describe before writing a view_query. Column descriptions resolve domain traps; refreshed_at is freshness.';
|
|
14
|
+
this.description = 'Full semantic schema of one analytical view: every column with its meaning (in Finnoto vocabulary), type, enum value labels, supported ops, catalog-declared relationships (name, target view, cardinality — join with join: "<name>" and address <rel>.<column>), the closed DSL grammar block (read it — do not guess operators), worked example_queries, and suggested visualizations. Call views_list first, then view_describe before writing a view_query. Column descriptions resolve domain traps; refreshed_at is freshness.';
|
|
15
15
|
this.inputSchema = inputSchema;
|
|
16
16
|
this.readOnly = true;
|
|
17
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view.describe.tool.js","sourceRoot":"","sources":["../../../src/mcp/tools/view.describe.tool.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,yCAAqC;AAErC,MAAM,WAAW,GAAG;IAChB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,6CAA6C,CAAC;CAC1F,CAAC;AAOF,MAAa,gBAAiB,SAAQ,kBAA0B;IAAhE;;QACa,SAAI,GAAG,eAAe,CAAC;QACvB,UAAK,GAAG,0BAA0B,CAAC;QACnC,gBAAW,GAChB,
|
|
1
|
+
{"version":3,"file":"view.describe.tool.js","sourceRoot":"","sources":["../../../src/mcp/tools/view.describe.tool.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,yCAAqC;AAErC,MAAM,WAAW,GAAG;IAChB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,6CAA6C,CAAC;CAC1F,CAAC;AAOF,MAAa,gBAAiB,SAAQ,kBAA0B;IAAhE;;QACa,SAAI,GAAG,eAAe,CAAC;QACvB,UAAK,GAAG,0BAA0B,CAAC;QACnC,gBAAW,GAChB,ugBAAugB,CAAC;QACngB,gBAAW,GAAG,WAAW,CAAC;QAChB,aAAQ,GAAG,IAAI,CAAC;IAKvC,CAAC;IAHG,OAAO,CAAC,IAAuB;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC9H,CAAC;CACJ;AAXD,4CAWC"}
|
|
@@ -3,6 +3,7 @@ import { McpToolResultInterface } from '../interfaces/mcp.tool.result.interface'
|
|
|
3
3
|
import { McpTool } from './mcp.tool';
|
|
4
4
|
type ViewQueryInput = {
|
|
5
5
|
name: string;
|
|
6
|
+
join?: string | string[];
|
|
6
7
|
columns?: string[];
|
|
7
8
|
filters?: Array<{
|
|
8
9
|
column: string;
|
|
@@ -24,13 +25,15 @@ type ViewQueryInput = {
|
|
|
24
25
|
}>;
|
|
25
26
|
limit?: number;
|
|
26
27
|
offset?: number;
|
|
28
|
+
intent?: string;
|
|
27
29
|
};
|
|
28
30
|
export declare class ViewQueryTool extends McpTool<ViewQueryInput> {
|
|
29
31
|
readonly name = "view_query";
|
|
30
32
|
readonly title = "Query analytical view";
|
|
31
|
-
readonly description = "Run a structured analytical query against a view: filters, group-by (including month/quarter date buckets),
|
|
33
|
+
readonly description = "Run a structured analytical query against a view: filters, group-by (including month/quarter date buckets), aggregates (sum, count, avg, min, max), and at most one catalog-declared join. Call views_list then view_describe (read the grammar block, relationships, and example_queries) before querying. Join with join: \"<relationship name>\" and address joined columns as <rel>.<column>. Use contains (bare string, not LIKE). Relative dates: @today / @today-30d / @today-3m / @month_start / @quarter_start / @fy_start (1 April, Indian FY) \u2014 do not compute today or period boundaries yourself. Enum filters accept labels. Pass intent as the user's question, verbatim where possible \u2014 analytics only, never affects the result. Results include format hints and refreshed_at. Not for fetching individual records \u2014 use listing tools for that.";
|
|
32
34
|
readonly inputSchema: {
|
|
33
35
|
name: z.ZodString;
|
|
36
|
+
join: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
34
37
|
columns: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
35
38
|
filters: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
36
39
|
column: z.ZodString;
|
|
@@ -42,18 +45,18 @@ export declare class ViewQueryTool extends McpTool<ViewQueryInput> {
|
|
|
42
45
|
bucket: z.ZodOptional<z.ZodEnum<{
|
|
43
46
|
year: "year";
|
|
44
47
|
week: "week";
|
|
45
|
-
day: "day";
|
|
46
48
|
month: "month";
|
|
49
|
+
day: "day";
|
|
47
50
|
quarter: "quarter";
|
|
48
51
|
}>>;
|
|
49
52
|
}, z.core.$strip>>>;
|
|
50
53
|
aggregates: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
51
54
|
fn: z.ZodEnum<{
|
|
52
|
-
count: "count";
|
|
53
|
-
max: "max";
|
|
54
55
|
min: "min";
|
|
55
|
-
|
|
56
|
+
max: "max";
|
|
57
|
+
count: "count";
|
|
56
58
|
avg: "avg";
|
|
59
|
+
sum: "sum";
|
|
57
60
|
count_distinct: "count_distinct";
|
|
58
61
|
}>;
|
|
59
62
|
column: z.ZodOptional<z.ZodString>;
|
|
@@ -68,6 +71,7 @@ export declare class ViewQueryTool extends McpTool<ViewQueryInput> {
|
|
|
68
71
|
}, z.core.$strip>>>;
|
|
69
72
|
limit: z.ZodOptional<z.ZodNumber>;
|
|
70
73
|
offset: z.ZodOptional<z.ZodNumber>;
|
|
74
|
+
intent: z.ZodOptional<z.ZodString>;
|
|
71
75
|
};
|
|
72
76
|
protected readonly readOnly = true;
|
|
73
77
|
execute(args: ViewQueryInput): Promise<McpToolResultInterface>;
|