@servicelabsco/slabs-access-manager 1.0.70 → 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.
Files changed (86) hide show
  1. package/dist/access/controllers/report.view.controller.d.ts +30 -12
  2. package/dist/access/dtos/report.view.query.dto.d.ts +1 -0
  3. package/dist/access/dtos/report.view.query.dto.js +20 -0
  4. package/dist/access/dtos/report.view.query.dto.js.map +1 -1
  5. package/dist/access/entities/business.material.view.entity.d.ts +9 -0
  6. package/dist/access/entities/business.material.view.entity.js +44 -0
  7. package/dist/access/entities/business.material.view.entity.js.map +1 -0
  8. package/dist/access/entities/index.d.ts +1 -0
  9. package/dist/access/entities/index.js +1 -0
  10. package/dist/access/entities/index.js.map +1 -1
  11. package/dist/access/es6.classes.d.ts +10 -3
  12. package/dist/access/es6.classes.js +6 -0
  13. package/dist/access/es6.classes.js.map +1 -1
  14. package/dist/access/libraries/index.d.ts +1 -0
  15. package/dist/access/libraries/index.js +1 -0
  16. package/dist/access/libraries/index.js.map +1 -1
  17. package/dist/access/libraries/report.view.enablement.d.ts +11 -0
  18. package/dist/access/libraries/report.view.enablement.js +49 -0
  19. package/dist/access/libraries/report.view.enablement.js.map +1 -0
  20. package/dist/access/libraries/report.view.query.compiler.d.ts +35 -2
  21. package/dist/access/libraries/report.view.query.compiler.js +274 -46
  22. package/dist/access/libraries/report.view.query.compiler.js.map +1 -1
  23. package/dist/access/services/listing.preference.service.js +11 -1
  24. package/dist/access/services/listing.preference.service.js.map +1 -1
  25. package/dist/access/services/listing.service.d.ts +3 -1
  26. package/dist/access/services/listing.service.js +7 -6
  27. package/dist/access/services/listing.service.js.map +1 -1
  28. package/dist/access/services/report.view.service.d.ts +34 -12
  29. package/dist/access/services/report.view.service.js +80 -13
  30. package/dist/access/services/report.view.service.js.map +1 -1
  31. package/dist/access/subscribers/business.material.view.subscriber.d.ts +8 -0
  32. package/dist/access/subscribers/business.material.view.subscriber.js +31 -0
  33. package/dist/access/subscribers/business.material.view.subscriber.js.map +1 -0
  34. package/dist/access/subscribers/index.d.ts +1 -0
  35. package/dist/access/subscribers/index.js +1 -0
  36. package/dist/access/subscribers/index.js.map +1 -1
  37. package/dist/development/controllers/development.catalog.controller.d.ts +25 -0
  38. package/dist/development/controllers/development.catalog.controller.js +32 -0
  39. package/dist/development/controllers/development.catalog.controller.js.map +1 -1
  40. package/dist/development/dtos/material.view.catalog.attributes.dto.d.ts +16 -0
  41. package/dist/development/dtos/material.view.catalog.attributes.dto.js +63 -1
  42. package/dist/development/dtos/material.view.catalog.attributes.dto.js.map +1 -1
  43. package/dist/development/services/admin.report.view.service.d.ts +23 -0
  44. package/dist/development/services/admin.report.view.service.js +195 -13
  45. package/dist/development/services/admin.report.view.service.js.map +1 -1
  46. package/dist/mcp/admin/tools/admin.tool.registry.js +6 -0
  47. package/dist/mcp/admin/tools/admin.tool.registry.js.map +1 -1
  48. package/dist/mcp/admin/tools/catalog/admin.column.describe.tool.js +1 -1
  49. package/dist/mcp/admin/tools/catalog/admin.column.describe.tool.js.map +1 -1
  50. package/dist/mcp/admin/tools/catalog/admin.view.business.clear.tool.d.ts +18 -0
  51. package/dist/mcp/admin/tools/catalog/admin.view.business.clear.tool.js +27 -0
  52. package/dist/mcp/admin/tools/catalog/admin.view.business.clear.tool.js.map +1 -0
  53. package/dist/mcp/admin/tools/catalog/admin.view.business.set.tool.d.ts +20 -0
  54. package/dist/mcp/admin/tools/catalog/admin.view.business.set.tool.js +28 -0
  55. package/dist/mcp/admin/tools/catalog/admin.view.business.set.tool.js.map +1 -0
  56. package/dist/mcp/admin/tools/catalog/admin.view.businesses.tool.d.ts +17 -0
  57. package/dist/mcp/admin/tools/catalog/admin.view.businesses.tool.js +23 -0
  58. package/dist/mcp/admin/tools/catalog/admin.view.businesses.tool.js.map +1 -0
  59. package/dist/mcp/admin/tools/catalog/admin.view.columns.sync.tool.d.ts +3 -1
  60. package/dist/mcp/admin/tools/catalog/admin.view.columns.sync.tool.js +5 -1
  61. package/dist/mcp/admin/tools/catalog/admin.view.columns.sync.tool.js.map +1 -1
  62. package/dist/mcp/admin/tools/catalog/admin.view.update.tool.d.ts +1 -1
  63. package/dist/mcp/admin/tools/catalog/admin.view.update.tool.js +2 -2
  64. package/dist/mcp/admin/tools/catalog/admin.view.update.tool.js.map +1 -1
  65. package/dist/mcp/admin/tools/catalog/index.d.ts +3 -0
  66. package/dist/mcp/admin/tools/catalog/index.js +3 -0
  67. package/dist/mcp/admin/tools/catalog/index.js.map +1 -1
  68. package/dist/mcp/es6.classes.d.ts +4 -0
  69. package/dist/mcp/logging/mcp.call.log.interceptor.js +1 -0
  70. package/dist/mcp/logging/mcp.call.log.interceptor.js.map +1 -1
  71. package/dist/mcp/logging/sanitize.mcp.call.log.d.ts +25 -0
  72. package/dist/mcp/logging/sanitize.mcp.call.log.js +60 -1
  73. package/dist/mcp/logging/sanitize.mcp.call.log.js.map +1 -1
  74. package/dist/mcp/mentities/mcp.call.log.mentity.d.ts +1 -0
  75. package/dist/mcp/mentities/mcp.call.log.mentity.js +4 -0
  76. package/dist/mcp/mentities/mcp.call.log.mentity.js.map +1 -1
  77. package/dist/mcp/tools/view.describe.tool.d.ts +1 -1
  78. package/dist/mcp/tools/view.describe.tool.js +1 -1
  79. package/dist/mcp/tools/view.describe.tool.js.map +1 -1
  80. package/dist/mcp/tools/view.query.tool.d.ts +5 -1
  81. package/dist/mcp/tools/view.query.tool.js +11 -3
  82. package/dist/mcp/tools/view.query.tool.js.map +1 -1
  83. package/dist/migrations/1787174933444-CreateBusinessMaterialViewTable.d.ts +5 -0
  84. package/dist/migrations/1787174933444-CreateBusinessMaterialViewTable.js +21 -0
  85. package/dist/migrations/1787174933444-CreateBusinessMaterialViewTable.js.map +1 -0
  86. package/package.json +1 -1
@@ -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":"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"}
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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"}
@@ -13,5 +13,6 @@ export declare class McpCallLogMentity extends CommonMongoEntity {
13
13
  response: any;
14
14
  timing_ms: any;
15
15
  cost: any;
16
+ intent: string;
16
17
  expire_at: Date;
17
18
  }
@@ -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;CA2CvD,CAAA;AA3CY,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;IAFC,IAAA,gBAAM,GAAE;IACR,IAAA,eAAK,GAAE;8BACG,IAAI;oDAAC;4BA1CP,iBAAiB;IAF7B,IAAA,gBAAM,EAAC,eAAe,CAAC;IACvB,IAAA,eAAK,EAAC,mBAAmB,EAAE,CAAC,WAAW,CAAC,CAAC;GAC7B,iBAAiB,CA2C7B"}
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,gZAAgZ,CAAC;QAC5Y,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"}
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), and aggregates (sum, count, avg, min, max). Call views_list then view_describe (read the grammar block and example_queries) before querying. Use contains (bare string, not LIKE). Relative dates: @today / @today-30d \u2014 do not compute today yourself. Enum filters accept labels. Results include format hints and refreshed_at. Not for fetching individual records \u2014 use listing tools for that.";
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>;
@@ -7,11 +7,15 @@ const filterSchema = zod_1.z.object({
7
7
  column: zod_1.z.string(),
8
8
  op: zod_1.z
9
9
  .string()
10
- .describe('Closed grammar: eq, neq, in, not_in, gt, gte, lt, lte, between, contains, is_null, not_null. Date values may be @today or @today-30d.'),
10
+ .describe('Closed grammar: eq, neq, in, not_in, gt, gte, lt, lte, between, contains, is_null, not_null. Date values may be @today, @today-30d, @today-3m, @month_start, @quarter_start, or @fy_start (Indian FY, 1 April).'),
11
11
  value: zod_1.z.unknown().optional(),
12
12
  });
13
13
  const inputSchema = {
14
14
  name: zod_1.z.string().min(2).max(40).describe('View name from views_list / view_describe.'),
15
+ join: zod_1.z
16
+ .union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())])
17
+ .optional()
18
+ .describe('Catalog-declared relationship name(s) from view_describe.relationships. v1: exactly one (string or one-element array). Compiler emits the LEFT JOIN; do not send ON conditions. Joined columns are <relationship>.<column>. Unmatched rows yield nulls for <rel>.*'),
15
19
  columns: zod_1.z.array(zod_1.z.string()).optional().describe('Columns to return in listing mode. Omit when aggregating.'),
16
20
  filters: zod_1.z.array(filterSchema).optional(),
17
21
  group_by: zod_1.z
@@ -28,18 +32,22 @@ const inputSchema = {
28
32
  sort: zod_1.z.array(zod_1.z.object({ by: zod_1.z.string(), dir: zod_1.z.enum(['asc', 'desc']).optional() })).optional(),
29
33
  limit: zod_1.z.number().int().min(1).max(500).optional(),
30
34
  offset: zod_1.z.number().int().min(0).max(10000).optional(),
35
+ intent: zod_1.z
36
+ .string()
37
+ .optional()
38
+ .describe('The question you are answering for the user, verbatim where possible. Used only for analytics — never affects the query result.'),
31
39
  };
32
40
  class ViewQueryTool extends mcp_tool_1.McpTool {
33
41
  constructor() {
34
42
  super(...arguments);
35
43
  this.name = 'view_query';
36
44
  this.title = 'Query analytical view';
37
- this.description = 'Run a structured analytical query against a view: filters, group-by (including month/quarter date buckets), and aggregates (sum, count, avg, min, max). Call views_list then view_describe (read the grammar block and example_queries) before querying. Use contains (bare string, not LIKE). Relative dates: @today / @today-30d — do not compute today yourself. Enum filters accept labels. Results include format hints and refreshed_at. Not for fetching individual records — use listing tools for that.';
45
+ this.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) — do not compute today or period boundaries yourself. Enum filters accept labels. Pass intent as the user\'s question, verbatim where possible — analytics only, never affects the result. Results include format hints and refreshed_at. Not for fetching individual records — use listing tools for that.';
38
46
  this.inputSchema = inputSchema;
39
47
  this.readOnly = true;
40
48
  }
41
49
  execute(args) {
42
- const { name, ...body } = args;
50
+ const { name, intent: _intent, ...body } = args;
43
51
  return this.run(() => this.client.request({
44
52
  method: 'POST',
45
53
  path: `v1/b/report-views/${encodeURIComponent(name)}/query`,
@@ -1 +1 @@
1
- {"version":3,"file":"view.query.tool.js","sourceRoot":"","sources":["../../../src/mcp/tools/view.query.tool.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,yCAAqC;AAErC,MAAM,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1B,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;IAClB,EAAE,EAAE,OAAC;SACA,MAAM,EAAE;SACR,QAAQ,CACL,uIAAuI,CAC1I;IACL,KAAK,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG;IAChB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,4CAA4C,CAAC;IACtF,OAAO,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;IAC7G,OAAO,EAAE,OAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE;IACzC,QAAQ,EAAE,OAAC;SACN,KAAK,CAAC,OAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;SAC/G,QAAQ,EAAE;SACV,QAAQ,CAAC,oDAAoD,CAAC;IACnE,UAAU,EAAE,OAAC;SACR,KAAK,CACF,OAAC,CAAC,MAAM,CAAC;QACL,EAAE,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACnE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC5B,CAAC,CACL;SACA,QAAQ,EAAE;IACf,IAAI,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/F,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAClD,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;CACxD,CAAC;AAgBF,MAAa,aAAc,SAAQ,kBAAuB;IAA1D;;QACa,SAAI,GAAG,YAAY,CAAC;QACpB,UAAK,GAAG,uBAAuB,CAAC;QAChC,gBAAW,GAChB,kfAAkf,CAAC;QAC9e,gBAAW,GAAG,WAAW,CAAC;QAChB,aAAQ,GAAG,IAAI,CAAC;IAYvC,CAAC;IAVG,OAAO,CAAC,IAAoB;QACxB,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CACjB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAChB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,qBAAqB,kBAAkB,CAAC,IAAI,CAAC,QAAQ;YAC3D,IAAI;SACP,CAAC,CACL,CAAC;IACN,CAAC;CACJ;AAlBD,sCAkBC"}
1
+ {"version":3,"file":"view.query.tool.js","sourceRoot":"","sources":["../../../src/mcp/tools/view.query.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { MigrationUtility } from '@servicelabsco/nestjs-utility-services';
2
+ export declare class CreateBusinessMaterialViewTable1787174933444 extends MigrationUtility {
3
+ constructor();
4
+ process(): void;
5
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateBusinessMaterialViewTable1787174933444 = void 0;
4
+ const nestjs_utility_services_1 = require("@servicelabsco/nestjs-utility-services");
5
+ class CreateBusinessMaterialViewTable1787174933444 extends nestjs_utility_services_1.MigrationUtility {
6
+ constructor() {
7
+ super('bz_material_views');
8
+ this.process();
9
+ }
10
+ process() {
11
+ this.primary();
12
+ this.foreign({ name: 'business_id', foreignTable: 'bz_business_details' });
13
+ this.foreign({ name: 'view_id', foreignTable: 'sys_material_views' });
14
+ this.boolean('active', true);
15
+ this.json('attributes');
16
+ this.whoColumns();
17
+ this.uniqueIndex(['business_id', 'view_id'], 'bz_material_views_business_view_unique');
18
+ }
19
+ }
20
+ exports.CreateBusinessMaterialViewTable1787174933444 = CreateBusinessMaterialViewTable1787174933444;
21
+ //# sourceMappingURL=1787174933444-CreateBusinessMaterialViewTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1787174933444-CreateBusinessMaterialViewTable.js","sourceRoot":"","sources":["../../src/migrations/1787174933444-CreateBusinessMaterialViewTable.ts"],"names":[],"mappings":";;;AAAA,oFAA0E;AAE1E,MAAa,4CAA6C,SAAQ,0CAAgB;IAC9E;QACI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,OAAO;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAC3E,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,oBAAoB,EAAE,CAAC,CAAC;QAEtE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAE7B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxB,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,IAAI,CAAC,WAAW,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,wCAAwC,CAAC,CAAC;IAC3F,CAAC;CACJ;AAnBD,oGAmBC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicelabsco/slabs-access-manager",
3
- "version": "1.0.70",
3
+ "version": "1.0.71",
4
4
  "description": "Support for application level menus and dashboards",
5
5
  "author": "Hemant Kumar Sah <hemantanshu@gmail.com>",
6
6
  "license": "MIT",