untrap-mcp 0.2.7 → 0.2.8
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-query.d.ts","sourceRoot":"","sources":["../../../src/tools/query/data-query.ts"],"names":[],"mappings":"AAIA,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AA6HD,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"data-query.d.ts","sourceRoot":"","sources":["../../../src/tools/query/data-query.ts"],"names":[],"mappings":"AAIA,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AA6HD,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe;;;;;;;;;;;;;;;;;;GAoIrE"}
|
|
@@ -154,10 +154,57 @@ export async function queryData(mspId, params) {
|
|
|
154
154
|
data: [],
|
|
155
155
|
};
|
|
156
156
|
}
|
|
157
|
+
// Hard-enforce user-configured filters by injecting them into the SQL.
|
|
158
|
+
// This is a post-processing guard — the LLM prompt asks for these filters,
|
|
159
|
+
// but we cannot trust prompt-only enforcement for security.
|
|
160
|
+
let finalSql = sql;
|
|
161
|
+
const sqlLower = sql.toLowerCase();
|
|
162
|
+
// Inject board filter if query references ticket_lifecycle and boards are configured
|
|
163
|
+
if (filters.boardNames.length > 0 && /\bticket_lifecycle\b/i.test(finalSql)) {
|
|
164
|
+
const boardList = filters.boardNames.map((b) => `'${b.replace(/'/g, "''")}'`).join(", ");
|
|
165
|
+
// Find the alias used for ticket_lifecycle
|
|
166
|
+
const aliasMatch = finalSql.match(/\bticket_lifecycle\s+(?:AS\s+)?(\w+)/i);
|
|
167
|
+
const alias = aliasMatch ? aliasMatch[1] : "ticket_lifecycle";
|
|
168
|
+
// Only inject if not already present
|
|
169
|
+
if (!sqlLower.includes("board_name in")) {
|
|
170
|
+
finalSql = finalSql.replace(/(\bWHERE\b)/i, `WHERE ${alias}.board_name IN (${boardList}) AND`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// Inject technician filter if query references ticket_lifecycle or time_entries
|
|
174
|
+
if (filters.enabledTechnicians.length > 0) {
|
|
175
|
+
const techList = filters.enabledTechnicians.map((t) => `'${t.replace(/'/g, "''")}'`).join(", ");
|
|
176
|
+
if (/\bticket_lifecycle\b/i.test(finalSql) && !sqlLower.includes("owner_name in")) {
|
|
177
|
+
const aliasMatch = finalSql.match(/\bticket_lifecycle\s+(?:AS\s+)?(\w+)/i);
|
|
178
|
+
const alias = aliasMatch ? aliasMatch[1] : "ticket_lifecycle";
|
|
179
|
+
finalSql = finalSql.replace(/(\bWHERE\b)/i, `WHERE ${alias}.owner_name IN (${techList}) AND`);
|
|
180
|
+
}
|
|
181
|
+
if (/\btime_entries\b/i.test(finalSql) && !sqlLower.includes("member_name in")) {
|
|
182
|
+
const aliasMatch = finalSql.match(/\btime_entries\s+(?:AS\s+)?(\w+)/i);
|
|
183
|
+
const alias = aliasMatch ? aliasMatch[1] : "time_entries";
|
|
184
|
+
finalSql = finalSql.replace(/(\bWHERE\b)/i, `WHERE ${alias}.member_name IN (${techList}) AND`);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
// Inject company exclusions
|
|
188
|
+
if (/\bticket_lifecycle\b/i.test(finalSql) && !sqlLower.includes("not like '%test%'")) {
|
|
189
|
+
const aliasMatch = finalSql.match(/\bticket_lifecycle\s+(?:AS\s+)?(\w+)/i);
|
|
190
|
+
const alias = aliasMatch ? aliasMatch[1] : "ticket_lifecycle";
|
|
191
|
+
let companyFilter = ` AND LOWER(${alias}.company_name) NOT LIKE '%test%' AND LOWER(${alias}.company_name) NOT LIKE '%catchall%'`;
|
|
192
|
+
if (filters.mspCompanyName) {
|
|
193
|
+
companyFilter += ` AND LOWER(${alias}.company_name) NOT LIKE LOWER('%${filters.mspCompanyName.replace(/'/g, "''")}%')`;
|
|
194
|
+
}
|
|
195
|
+
// Append before ORDER BY or LIMIT or end
|
|
196
|
+
const orderMatch = finalSql.match(/\b(ORDER\s+BY|LIMIT|GROUP\s+BY)\b/i);
|
|
197
|
+
if (orderMatch && orderMatch.index) {
|
|
198
|
+
finalSql = finalSql.substring(0, orderMatch.index) + companyFilter + " " + finalSql.substring(orderMatch.index);
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
finalSql += companyFilter;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
157
204
|
// Execute the query — $1 is always the msp_id for tenant isolation
|
|
158
205
|
try {
|
|
159
206
|
const start = Date.now();
|
|
160
|
-
const rows = await queryRLS(
|
|
207
|
+
const rows = await queryRLS(finalSql, [mspId], mspId);
|
|
161
208
|
const executionTime = Date.now() - start;
|
|
162
209
|
const columns = rows.length > 0 ? Object.keys(rows[0]) : [];
|
|
163
210
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-query.js","sourceRoot":"","sources":["../../../src/tools/query/data-query.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"data-query.js","sourceRoot":"","sources":["../../../src/tools/query/data-query.ts"],"names":[],"mappings":"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"}
|