@servicelabsco/slabs-access-manager 1.0.69 → 1.0.71
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/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/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/report.view.service.d.ts +34 -12
- package/dist/access/services/report.view.service.js +80 -13
- 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/{accessWorkflow/subscribers/performance.record.subscriber.js → access/subscribers/business.material.view.subscriber.js} +10 -13
- 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/accessWorkflow/dtos/index.d.ts +0 -1
- package/dist/accessWorkflow/dtos/index.js +0 -1
- package/dist/accessWorkflow/dtos/index.js.map +1 -1
- package/dist/accessWorkflow/entities/index.d.ts +0 -1
- package/dist/accessWorkflow/entities/index.js +0 -1
- package/dist/accessWorkflow/entities/index.js.map +1 -1
- package/dist/accessWorkflow/es6.classes.d.ts +3 -6
- package/dist/accessWorkflow/es6.classes.js +0 -8
- package/dist/accessWorkflow/es6.classes.js.map +1 -1
- package/dist/accessWorkflow/jobs/index.d.ts +0 -1
- package/dist/accessWorkflow/jobs/index.js +0 -1
- package/dist/accessWorkflow/jobs/index.js.map +1 -1
- package/dist/accessWorkflow/services/es6.jobs.service.d.ts +1 -3
- package/dist/accessWorkflow/services/es6.jobs.service.js +1 -5
- package/dist/accessWorkflow/services/es6.jobs.service.js.map +1 -1
- package/dist/accessWorkflow/subscribers/index.d.ts +0 -1
- package/dist/accessWorkflow/subscribers/index.js +0 -1
- package/dist/accessWorkflow/subscribers/index.js.map +1 -1
- package/dist/config/entity.constants.d.ts +0 -2
- package/dist/config/entity.constants.js +0 -2
- package/dist/config/entity.constants.js.map +1 -1
- package/dist/development/controllers/development.catalog.controller.d.ts +25 -0
- 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 +23 -0
- 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/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/es6.classes.d.ts +4 -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/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 +5 -1
- package/dist/mcp/tools/view.query.tool.js +11 -3
- package/dist/mcp/tools/view.query.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 +1 -1
- package/dist/accessWorkflow/dtos/performance.record.attributes.dto.d.ts +0 -3
- package/dist/accessWorkflow/dtos/performance.record.attributes.dto.js +0 -8
- package/dist/accessWorkflow/dtos/performance.record.attributes.dto.js.map +0 -1
- package/dist/accessWorkflow/entities/performance.record.entity.d.ts +0 -11
- package/dist/accessWorkflow/entities/performance.record.entity.js +0 -50
- package/dist/accessWorkflow/entities/performance.record.entity.js.map +0 -1
- package/dist/accessWorkflow/jobs/performance.record.job.d.ts +0 -7
- package/dist/accessWorkflow/jobs/performance.record.job.js +0 -29
- package/dist/accessWorkflow/jobs/performance.record.job.js.map +0 -1
- package/dist/accessWorkflow/subscribers/performance.record.subscriber.d.ts +0 -10
- package/dist/accessWorkflow/subscribers/performance.record.subscriber.js.map +0 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { McpToolResultInterface } from '../../../interfaces/mcp.tool.result.interface';
|
|
3
|
+
import { McpTool } from '../../../tools/mcp.tool';
|
|
4
|
+
type AdminViewBusinessClearInput = {
|
|
5
|
+
table_name: string;
|
|
6
|
+
business_id: number;
|
|
7
|
+
};
|
|
8
|
+
export declare class AdminViewBusinessClearTool extends McpTool<AdminViewBusinessClearInput> {
|
|
9
|
+
readonly name = "admin_view_business_clear";
|
|
10
|
+
readonly title = "Clear per-business reporting view override (admin)";
|
|
11
|
+
readonly description = "Remove the bz_material_views grant. No row means the view is dark for that business.";
|
|
12
|
+
readonly inputSchema: {
|
|
13
|
+
table_name: z.ZodString;
|
|
14
|
+
business_id: z.ZodNumber;
|
|
15
|
+
};
|
|
16
|
+
execute(args: AdminViewBusinessClearInput): Promise<McpToolResultInterface>;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AdminViewBusinessClearTool = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const mcp_tool_1 = require("../../../tools/mcp.tool");
|
|
6
|
+
const inputSchema = {
|
|
7
|
+
table_name: zod_1.z.string().describe('Registered sys_material_views.table_name.'),
|
|
8
|
+
business_id: zod_1.z.number().int().positive().describe('Business whose override should be removed.'),
|
|
9
|
+
};
|
|
10
|
+
class AdminViewBusinessClearTool extends mcp_tool_1.McpTool {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
this.name = 'admin_view_business_clear';
|
|
14
|
+
this.title = 'Clear per-business reporting view override (admin)';
|
|
15
|
+
this.description = 'Remove the bz_material_views grant. No row means the view is dark for that business.';
|
|
16
|
+
this.inputSchema = inputSchema;
|
|
17
|
+
}
|
|
18
|
+
execute(args) {
|
|
19
|
+
return this.run(() => this.client.request({
|
|
20
|
+
method: 'POST',
|
|
21
|
+
path: `development/catalog/views/${encodeURIComponent(args.table_name)}/businesses/clear`,
|
|
22
|
+
body: { business_id: args.business_id },
|
|
23
|
+
}));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.AdminViewBusinessClearTool = AdminViewBusinessClearTool;
|
|
27
|
+
//# sourceMappingURL=admin.view.business.clear.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin.view.business.clear.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/admin/tools/catalog/admin.view.business.clear.tool.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,sDAAkD;AAElD,MAAM,WAAW,GAAG;IAChB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IAC5E,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;CAClG,CAAC;AAIF,MAAa,0BAA2B,SAAQ,kBAAoC;IAApF;;QACa,SAAI,GAAG,2BAA2B,CAAC;QACnC,UAAK,GAAG,oDAAoD,CAAC;QAC7D,gBAAW,GAAG,sFAAsF,CAAC;QACrG,gBAAW,GAAG,WAAW,CAAC;IAWvC,CAAC;IATG,OAAO,CAAC,IAAiC;QACrC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CACjB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAChB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,6BAA6B,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB;YACzF,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;SAC1C,CAAC,CACL,CAAC;IACN,CAAC;CACJ;AAfD,gEAeC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { McpToolResultInterface } from '../../../interfaces/mcp.tool.result.interface';
|
|
3
|
+
import { McpTool } from '../../../tools/mcp.tool';
|
|
4
|
+
type AdminViewBusinessSetInput = {
|
|
5
|
+
table_name: string;
|
|
6
|
+
business_id: number;
|
|
7
|
+
active: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare class AdminViewBusinessSetTool extends McpTool<AdminViewBusinessSetInput> {
|
|
10
|
+
readonly name = "admin_view_business_set";
|
|
11
|
+
readonly title = "Set per-business reporting view enablement (admin)";
|
|
12
|
+
readonly description = "Upsert a bz_material_views grant for (business, view). active true is the only way the public catalog shows the view; no row or active false is unknown_view.";
|
|
13
|
+
readonly inputSchema: {
|
|
14
|
+
table_name: z.ZodString;
|
|
15
|
+
business_id: z.ZodNumber;
|
|
16
|
+
active: z.ZodBoolean;
|
|
17
|
+
};
|
|
18
|
+
execute(args: AdminViewBusinessSetInput): Promise<McpToolResultInterface>;
|
|
19
|
+
}
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AdminViewBusinessSetTool = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const mcp_tool_1 = require("../../../tools/mcp.tool");
|
|
6
|
+
const inputSchema = {
|
|
7
|
+
table_name: zod_1.z.string().describe('Registered sys_material_views.table_name.'),
|
|
8
|
+
business_id: zod_1.z.number().int().positive().describe('Business to enable or disable this view for.'),
|
|
9
|
+
active: zod_1.z.boolean().describe('true = visible to this business; false = hidden (same as unknown_view).'),
|
|
10
|
+
};
|
|
11
|
+
class AdminViewBusinessSetTool extends mcp_tool_1.McpTool {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
this.name = 'admin_view_business_set';
|
|
15
|
+
this.title = 'Set per-business reporting view enablement (admin)';
|
|
16
|
+
this.description = 'Upsert a bz_material_views grant for (business, view). active true is the only way the public catalog shows the view; no row or active false is unknown_view.';
|
|
17
|
+
this.inputSchema = inputSchema;
|
|
18
|
+
}
|
|
19
|
+
execute(args) {
|
|
20
|
+
return this.run(() => this.client.request({
|
|
21
|
+
method: 'POST',
|
|
22
|
+
path: `development/catalog/views/${encodeURIComponent(args.table_name)}/businesses`,
|
|
23
|
+
body: { business_id: args.business_id, active: args.active },
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.AdminViewBusinessSetTool = AdminViewBusinessSetTool;
|
|
28
|
+
//# sourceMappingURL=admin.view.business.set.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin.view.business.set.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/admin/tools/catalog/admin.view.business.set.tool.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,sDAAkD;AAElD,MAAM,WAAW,GAAG;IAChB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IAC5E,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;IACjG,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,yEAAyE,CAAC;CAC1G,CAAC;AAIF,MAAa,wBAAyB,SAAQ,kBAAkC;IAAhF;;QACa,SAAI,GAAG,yBAAyB,CAAC;QACjC,UAAK,GAAG,oDAAoD,CAAC;QAC7D,gBAAW,GAChB,+JAA+J,CAAC;QAC3J,gBAAW,GAAG,WAAW,CAAC;IAWvC,CAAC;IATG,OAAO,CAAC,IAA+B;QACnC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CACjB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAChB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,6BAA6B,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa;YACnF,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;SAC/D,CAAC,CACL,CAAC;IACN,CAAC;CACJ;AAhBD,4DAgBC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { McpToolResultInterface } from '../../../interfaces/mcp.tool.result.interface';
|
|
3
|
+
import { McpTool } from '../../../tools/mcp.tool';
|
|
4
|
+
type AdminViewBusinessesInput = {
|
|
5
|
+
table_name: string;
|
|
6
|
+
};
|
|
7
|
+
export declare class AdminViewBusinessesTool extends McpTool<AdminViewBusinessesInput> {
|
|
8
|
+
readonly name = "admin_view_businesses";
|
|
9
|
+
readonly title = "List per-business reporting view enablement (admin)";
|
|
10
|
+
readonly description = "List bz_material_views grants for one registered view. Effective visibility is only an active grant \u2014 no row means dark.";
|
|
11
|
+
readonly inputSchema: {
|
|
12
|
+
table_name: z.ZodString;
|
|
13
|
+
};
|
|
14
|
+
protected readonly readOnly = true;
|
|
15
|
+
execute(args: AdminViewBusinessesInput): Promise<McpToolResultInterface>;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AdminViewBusinessesTool = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const mcp_tool_1 = require("../../../tools/mcp.tool");
|
|
6
|
+
const inputSchema = {
|
|
7
|
+
table_name: zod_1.z.string().describe('Registered sys_material_views.table_name.'),
|
|
8
|
+
};
|
|
9
|
+
class AdminViewBusinessesTool extends mcp_tool_1.McpTool {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(...arguments);
|
|
12
|
+
this.name = 'admin_view_businesses';
|
|
13
|
+
this.title = 'List per-business reporting view enablement (admin)';
|
|
14
|
+
this.description = 'List bz_material_views grants for one registered view. Effective visibility is only an active grant — no row means dark.';
|
|
15
|
+
this.inputSchema = inputSchema;
|
|
16
|
+
this.readOnly = true;
|
|
17
|
+
}
|
|
18
|
+
execute(args) {
|
|
19
|
+
return this.run(() => this.client.request({ method: 'GET', path: `development/catalog/views/${encodeURIComponent(args.table_name)}/businesses` }));
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.AdminViewBusinessesTool = AdminViewBusinessesTool;
|
|
23
|
+
//# sourceMappingURL=admin.view.businesses.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin.view.businesses.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/admin/tools/catalog/admin.view.businesses.tool.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,sDAAkD;AAElD,MAAM,WAAW,GAAG;IAChB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;CAC/E,CAAC;AAIF,MAAa,uBAAwB,SAAQ,kBAAiC;IAA9E;;QACa,SAAI,GAAG,uBAAuB,CAAC;QAC/B,UAAK,GAAG,qDAAqD,CAAC;QAC9D,gBAAW,GAChB,0HAA0H,CAAC;QACtH,gBAAW,GAAG,WAAW,CAAC;QAChB,aAAQ,GAAG,IAAI,CAAC;IAOvC,CAAC;IALG,OAAO,CAAC,IAA8B;QAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CACjB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,6BAA6B,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAC9H,CAAC;IACN,CAAC;CACJ;AAbD,0DAaC"}
|
|
@@ -6,16 +6,18 @@ type AdminViewColumnsSyncInput = {
|
|
|
6
6
|
source_type?: string;
|
|
7
7
|
source_id?: number;
|
|
8
8
|
name?: string;
|
|
9
|
+
prune?: boolean;
|
|
9
10
|
};
|
|
10
11
|
export declare class AdminViewColumnsSyncTool extends McpTool<AdminViewColumnsSyncInput> {
|
|
11
12
|
readonly name = "admin_view_columns_sync";
|
|
12
13
|
readonly title = "Sync reporting view columns (admin)";
|
|
13
|
-
readonly description = "Introspect the
|
|
14
|
+
readonly description = "Introspect the relation via pg_catalog (pg_attribute / format_type; MVs are not in information_schema.columns) and create or adopt sys_column_details rows. Key is source_type + source_id + name (source_type defaults to 6cc76494999951a1ac3631ca815c1786). Pass name to update one column; omit name to sync the whole view. Pass prune: true to soft-delete orphans. Returns {created, adopted, orphaned, pruned}.";
|
|
14
15
|
readonly inputSchema: {
|
|
15
16
|
table_name: z.ZodOptional<z.ZodString>;
|
|
16
17
|
source_type: z.ZodOptional<z.ZodString>;
|
|
17
18
|
source_id: z.ZodOptional<z.ZodNumber>;
|
|
18
19
|
name: z.ZodOptional<z.ZodString>;
|
|
20
|
+
prune: z.ZodOptional<z.ZodBoolean>;
|
|
19
21
|
};
|
|
20
22
|
execute(args: AdminViewColumnsSyncInput): Promise<McpToolResultInterface>;
|
|
21
23
|
}
|
|
@@ -14,13 +14,17 @@ const inputSchema = {
|
|
|
14
14
|
.string()
|
|
15
15
|
.optional()
|
|
16
16
|
.describe('Physical column name. When set, upserts only this column keyed by source_type + source_id + name. Omit to sync every live column.'),
|
|
17
|
+
prune: zod_1.z
|
|
18
|
+
.boolean()
|
|
19
|
+
.optional()
|
|
20
|
+
.describe('When true, soft-deletes orphaned sys_column_details rows (catalog columns no longer on the relation) and returns them under pruned. Default is non-destructive — orphans are reported only.'),
|
|
17
21
|
};
|
|
18
22
|
class AdminViewColumnsSyncTool extends mcp_tool_1.McpTool {
|
|
19
23
|
constructor() {
|
|
20
24
|
super(...arguments);
|
|
21
25
|
this.name = 'admin_view_columns_sync';
|
|
22
26
|
this.title = 'Sync reporting view columns (admin)';
|
|
23
|
-
this.description = 'Introspect the
|
|
27
|
+
this.description = 'Introspect the relation via pg_catalog (pg_attribute / format_type; MVs are not in information_schema.columns) and create or adopt sys_column_details rows. Key is source_type + source_id + name (source_type defaults to 6cc76494999951a1ac3631ca815c1786). Pass name to update one column; omit name to sync the whole view. Pass prune: true to soft-delete orphans. Returns {created, adopted, orphaned, pruned}.';
|
|
24
28
|
this.inputSchema = inputSchema;
|
|
25
29
|
}
|
|
26
30
|
execute(args) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.view.columns.sync.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/admin/tools/catalog/admin.view.columns.sync.tool.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,sDAAkD;AAElD,MAAM,WAAW,GAAG;IAChB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6EAA6E,CAAC;IACzH,WAAW,EAAE,OAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,sGAAsG,CAAC;IACrH,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;IACtH,IAAI,EAAE,OAAC;SACF,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACL,mIAAmI,CACtI;CACR,CAAC;
|
|
1
|
+
{"version":3,"file":"admin.view.columns.sync.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/admin/tools/catalog/admin.view.columns.sync.tool.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,sDAAkD;AAElD,MAAM,WAAW,GAAG;IAChB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6EAA6E,CAAC;IACzH,WAAW,EAAE,OAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,sGAAsG,CAAC;IACrH,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;IACtH,IAAI,EAAE,OAAC;SACF,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACL,mIAAmI,CACtI;IACL,KAAK,EAAE,OAAC;SACH,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACL,6LAA6L,CAChM;CACR,CAAC;AAcF,MAAa,wBAAyB,SAAQ,kBAAkC;IAAhF;;QACa,SAAI,GAAG,yBAAyB,CAAC;QACjC,UAAK,GAAG,qCAAqC,CAAC;QAC9C,gBAAW,GAChB,wZAAwZ,CAAC;QACpZ,gBAAW,GAAG,WAAW,CAAC;IAKvC,CAAC;IAHG,OAAO,CAAC,IAA+B;QACnC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,kCAAkC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACzH,CAAC;CACJ;AAVD,4DAUC"}
|
|
@@ -10,7 +10,7 @@ type AdminViewUpdateInput = {
|
|
|
10
10
|
export declare class AdminViewUpdateTool extends McpTool<AdminViewUpdateInput> {
|
|
11
11
|
readonly name = "admin_view_update";
|
|
12
12
|
readonly title = "Update reporting view attributes (admin)";
|
|
13
|
-
readonly description = "Patch a registered view's attributes (title, description, example_queries, viz hints, row_cap, agent_visible). Re-runs the catalog gate; agent_visible requires a passing gate.";
|
|
13
|
+
readonly description = "Patch a registered view's attributes (title, description, example_queries, viz hints, row_cap, agent_visible, relationships). Re-runs the catalog gate; agent_visible requires a passing gate. relationships are catalog-authored many_to_one joins (agent may only name them).";
|
|
14
14
|
readonly inputSchema: {
|
|
15
15
|
table_name: z.ZodString;
|
|
16
16
|
timing: z.ZodOptional<z.ZodString>;
|
|
@@ -10,14 +10,14 @@ const inputSchema = {
|
|
|
10
10
|
attributes: zod_1.z
|
|
11
11
|
.record(zod_1.z.string(), zod_1.z.unknown())
|
|
12
12
|
.optional()
|
|
13
|
-
.describe('Partial attributes patch. Flipping agent_visible on requires a passing catalog gate.'),
|
|
13
|
+
.describe('Partial attributes patch (title, description, example_queries, relationships, agent_visible, …). Flipping agent_visible on requires a passing catalog gate.'),
|
|
14
14
|
};
|
|
15
15
|
class AdminViewUpdateTool extends mcp_tool_1.McpTool {
|
|
16
16
|
constructor() {
|
|
17
17
|
super(...arguments);
|
|
18
18
|
this.name = 'admin_view_update';
|
|
19
19
|
this.title = 'Update reporting view attributes (admin)';
|
|
20
|
-
this.description = "Patch a registered view's attributes (title, description, example_queries, viz hints, row_cap, agent_visible). Re-runs the catalog gate; agent_visible requires a passing gate.";
|
|
20
|
+
this.description = "Patch a registered view's attributes (title, description, example_queries, viz hints, row_cap, agent_visible, relationships). Re-runs the catalog gate; agent_visible requires a passing gate. relationships are catalog-authored many_to_one joins (agent may only name them).";
|
|
21
21
|
this.inputSchema = inputSchema;
|
|
22
22
|
}
|
|
23
23
|
execute(args) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.view.update.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/admin/tools/catalog/admin.view.update.tool.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,sDAAkD;AAElD,MAAM,WAAW,GAAG;IAChB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;IACrF,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IACjE,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4DAA4D,CAAC;IACrG,UAAU,EAAE,OAAC;SACR,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC;SAC/B,QAAQ,EAAE;SACV,QAAQ,
|
|
1
|
+
{"version":3,"file":"admin.view.update.tool.js","sourceRoot":"","sources":["../../../../../src/mcp/admin/tools/catalog/admin.view.update.tool.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,sDAAkD;AAElD,MAAM,WAAW,GAAG;IAChB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;IACrF,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IACjE,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4DAA4D,CAAC;IACrG,UAAU,EAAE,OAAC;SACR,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC;SAC/B,QAAQ,EAAE;SACV,QAAQ,CACL,6JAA6J,CAChK;CACR,CAAC;AAYF,MAAa,mBAAoB,SAAQ,kBAA6B;IAAtE;;QACa,SAAI,GAAG,mBAAmB,CAAC;QAC3B,UAAK,GAAG,0CAA0C,CAAC;QACnD,gBAAW,GAChB,iRAAiR,CAAC;QAC7Q,gBAAW,GAAG,WAAW,CAAC;IAMvC,CAAC;IAJG,OAAO,CAAC,IAA0B;QAC9B,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QACrC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,6BAA6B,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3H,CAAC;CACJ;AAXD,kDAWC"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
export * from './admin.catalog.validate.tool';
|
|
2
2
|
export * from './admin.column.describe.tool';
|
|
3
|
+
export * from './admin.view.business.clear.tool';
|
|
4
|
+
export * from './admin.view.business.set.tool';
|
|
5
|
+
export * from './admin.view.businesses.tool';
|
|
3
6
|
export * from './admin.view.columns.sync.tool';
|
|
4
7
|
export * from './admin.view.register.tool';
|
|
5
8
|
export * from './admin.view.sample.tool';
|
|
@@ -16,6 +16,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./admin.catalog.validate.tool"), exports);
|
|
18
18
|
__exportStar(require("./admin.column.describe.tool"), exports);
|
|
19
|
+
__exportStar(require("./admin.view.business.clear.tool"), exports);
|
|
20
|
+
__exportStar(require("./admin.view.business.set.tool"), exports);
|
|
21
|
+
__exportStar(require("./admin.view.businesses.tool"), exports);
|
|
19
22
|
__exportStar(require("./admin.view.columns.sync.tool"), exports);
|
|
20
23
|
__exportStar(require("./admin.view.register.tool"), exports);
|
|
21
24
|
__exportStar(require("./admin.view.sample.tool"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/mcp/admin/tools/catalog/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C;AAAA,+DAA6C;AAAA,iEAA+C;AAAA,6DAA2C;AAAA,2DAAyC;AAAA,2DAAyC;AAAA,0DAAuC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/mcp/admin/tools/catalog/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C;AAAA,+DAA6C;AAAA,mEAAiD;AAAA,iEAA+C;AAAA,+DAA6C;AAAA,iEAA+C;AAAA,6DAA2C;AAAA,2DAAyC;AAAA,2DAAyC;AAAA,0DAAuC"}
|
|
@@ -113,6 +113,10 @@ declare const es6Classes: {
|
|
|
113
113
|
hashCompiledSql: typeof import("./logging/sanitize.mcp.call.log").hashCompiledSql;
|
|
114
114
|
hottestQueryFamilies: typeof import("./logging/sanitize.mcp.call.log").hottestQueryFamilies;
|
|
115
115
|
extractExplainCost: typeof import("./logging/sanitize.mcp.call.log").extractExplainCost;
|
|
116
|
+
capIntent: typeof import("./logging/sanitize.mcp.call.log").capIntent;
|
|
117
|
+
extractIntent: typeof import("./logging/sanitize.mcp.call.log").extractIntent;
|
|
118
|
+
clusterIntentsBySqlHash: typeof import("./logging/sanitize.mcp.call.log").clusterIntentsBySqlHash;
|
|
119
|
+
catalogGapIntents: typeof import("./logging/sanitize.mcp.call.log").catalogGapIntents;
|
|
116
120
|
} | typeof McpCallLogWriter | typeof McpCallLogInterceptor)[];
|
|
117
121
|
mentities: (typeof McpCallLogMentity)[];
|
|
118
122
|
tools: (typeof McpTool | typeof WhoamiTool | typeof ViewDescribeTool | typeof ViewQueryTool | typeof ViewsListTool | typeof ToolRegistry | {
|
|
@@ -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"}
|
|
@@ -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;
|
|
@@ -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>;
|