@duckcodeailabs/dql-mcp 1.6.3 → 1.6.4
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/server.d.ts +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +21 -20
- package/dist/server.js.map +1 -1
- package/dist/tools/query-via-metadata.d.ts +170 -2
- package/dist/tools/query-via-metadata.d.ts.map +1 -1
- package/dist/tools/query-via-metadata.js +240 -5
- package/dist/tools/query-via-metadata.js.map +1 -1
- package/package.json +5 -5
package/dist/server.d.ts
CHANGED
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAapE,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAapE,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,oBAAoB,QAkBsD,CAAC;AAExF,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,SAAS,CAuF/E"}
|
package/dist/server.js
CHANGED
|
@@ -10,35 +10,36 @@ import { suggestBlock, suggestBlockInput } from './tools/suggest-block.js';
|
|
|
10
10
|
import { queryViaMetadata, queryViaMetadataInput } from './tools/query-via-metadata.js';
|
|
11
11
|
import { listProposals, listProposalsInput } from './tools/list-proposals.js';
|
|
12
12
|
import { kgSearch, kgSearchInput, feedbackRecord, feedbackRecordInput } from './tools/kg.js';
|
|
13
|
+
export const DQL_MCP_INSTRUCTIONS = 'DQL exposes governed analytics under graduated trust:\n' +
|
|
14
|
+
' Tier 1 — Use certified artifacts when the user asks for an exact saved block, ' +
|
|
15
|
+
'direct KPI, or definition. Discover candidates with `kg_search`, `search_blocks`, ' +
|
|
16
|
+
'and `get_block`; execute data blocks with `query_via_block` only when the block ' +
|
|
17
|
+
'grain exactly answers the question. Certified blocks may optionally enforce ' +
|
|
18
|
+
'DataLex contract resolution when a DataLex manifest is loaded.\n' +
|
|
19
|
+
' Tier 2 — For named customer/user/account questions, custom filters, rankings, ' +
|
|
20
|
+
'breakdowns, comparisons, drill-throughs, or any different grain, use certified ' +
|
|
21
|
+
'blocks/terms only as context and call `query_via_metadata` with read-only SQL ' +
|
|
22
|
+
'inferred from the manifest, semantic layer, dbt/source metadata, and runtime ' +
|
|
23
|
+
'schema. Surface `uncertified: true` and the draft review path verbatim.\n' +
|
|
24
|
+
' Tier 3 — If the available metadata does not identify a safe table, metric, ' +
|
|
25
|
+
'dimension, or grain, refuse and ask for the missing business object or metric.\n' +
|
|
26
|
+
'Other tools support the loop: `list_proposals` shows repeated Tier-2 drafts, ' +
|
|
27
|
+
'`suggest_block` proposes shared building blocks, `certify` evaluates governance, ' +
|
|
28
|
+
'`lineage_impact` traces dependencies, `list_metrics` / `list_dimensions` expose ' +
|
|
29
|
+
'the semantic layer, `kg_search` searches the DQL agent knowledge graph, and ' +
|
|
30
|
+
'`feedback_record` records answer quality. Never present Tier-2 output as certified.';
|
|
13
31
|
export function createDQLMCPServer(options = {}) {
|
|
14
32
|
const projectRoot = options.projectRoot ?? findProjectRoot(process.cwd());
|
|
15
33
|
const ctx = new DQLContext({ projectRoot, dqlVersion: options.version });
|
|
16
|
-
const server = new McpServer({ name: 'dql-mcp', version: options.version ?? '0.1.0' }, {
|
|
17
|
-
instructions: 'DQL exposes certified, git-versioned analytics blocks under graduated trust:\n' +
|
|
18
|
-
' Tier 1 — Always try `query_via_block` first. It only serves blocks that are ' +
|
|
19
|
-
'`status = "certified"` AND have a resolved `datalex_contract`. The answer is ' +
|
|
20
|
-
'safe to ship to dashboards.\n' +
|
|
21
|
-
' Tier 2 — When no certified block matches, call `query_via_metadata` with the ' +
|
|
22
|
-
'SQL you inferred from the manifest + dbt schema. The result is returned with ' +
|
|
23
|
-
'`uncertified: true` — surface that flag to the user verbatim. The proposal is ' +
|
|
24
|
-
'auto-saved as a draft block under blocks/_drafts/ for human certification.\n' +
|
|
25
|
-
' Tier 3 — If the question is unanswerable from the available data, refuse and ' +
|
|
26
|
-
'tell the user why.\n' +
|
|
27
|
-
'Other tools support the loop: `search_blocks` / `get_block` to discover Tier-1 ' +
|
|
28
|
-
'matches, `list_proposals` to see the review queue, `suggest_block` to propose ' +
|
|
29
|
-
'a new block source-of-truth, `certify` to evaluate governance rules, ' +
|
|
30
|
-
'`lineage_impact` to trace upstream/downstream, `list_metrics` / ' +
|
|
31
|
-
'`list_dimensions` for the semantic layer. Never fabricate SQL outside ' +
|
|
32
|
-
'`query_via_metadata` — it captures provenance the human needs to certify.',
|
|
33
|
-
});
|
|
34
|
+
const server = new McpServer({ name: 'dql-mcp', version: options.version ?? '0.1.0' }, { instructions: DQL_MCP_INSTRUCTIONS });
|
|
34
35
|
server.registerTool('search_blocks', { description: 'Find certified DQL blocks by keyword, domain, or status.', inputSchema: searchBlocksInput }, async (args) => wrap(await searchBlocks(ctx, args)));
|
|
35
36
|
server.registerTool('get_block', { description: 'Return full metadata, dependencies, and SQL for a block.', inputSchema: getBlockInput }, async (args) => wrap(await getBlock(ctx, args)));
|
|
36
37
|
server.registerTool('query_via_block', {
|
|
37
|
-
description: 'Tier-1 of graduated trust. Execute a certified block against the local DQL runtime. Refuses non-certified blocks
|
|
38
|
+
description: 'Tier-1 of graduated trust. Execute a certified block against the local DQL runtime when the block grain exactly answers the user question. Refuses non-certified blocks and refuses unresolved datalex_contract references when a DataLex manifest is loaded. For named-entity filters, custom rankings, breakdowns, comparisons, or drill-throughs, use the block as context and call query_via_metadata instead.',
|
|
38
39
|
inputSchema: queryViaBlockInput,
|
|
39
40
|
}, async (args) => wrap(await queryViaBlock(ctx, args)));
|
|
40
41
|
server.registerTool('query_via_metadata', {
|
|
41
|
-
description: 'Tier-2 of graduated trust. Use
|
|
42
|
+
description: 'Tier-2 of graduated trust. Use when no certified block exactly answers the requested grain, including why-changed diagnostics, named customer/user/account filters, rankings, breakdowns, comparisons, anomalies, and drill-throughs. Provide one read-only SELECT/WITH query inferred from DQL metadata, semantic/dbt/source context, and runtime schema. The runtime executes a bounded preview, returns `uncertified: true` plus trustStatus/evidence, and saves a draft block under blocks/_drafts/. Surface the `uncertified` flag and review path verbatim.',
|
|
42
43
|
inputSchema: queryViaMetadataInput,
|
|
43
44
|
}, async (args) => wrap(await queryViaMetadata(ctx, args)));
|
|
44
45
|
server.registerTool('list_proposals', {
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACzG,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAO7F,MAAM,UAAU,kBAAkB,CAAC,UAA+B,EAAE;IAClE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1E,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAEzE,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,EAAE,EACxD
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACzG,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAO7F,MAAM,CAAC,MAAM,oBAAoB,GAC/B,yDAAyD;IACzD,iFAAiF;IACjF,oFAAoF;IACpF,kFAAkF;IAClF,8EAA8E;IAC9E,kEAAkE;IAClE,iFAAiF;IACjF,iFAAiF;IACjF,gFAAgF;IAChF,+EAA+E;IAC/E,2EAA2E;IAC3E,8EAA8E;IAC9E,kFAAkF;IAClF,+EAA+E;IAC/E,mFAAmF;IACnF,kFAAkF;IAClF,8EAA8E;IAC9E,qFAAqF,CAAC;AAExF,MAAM,UAAU,kBAAkB,CAAC,UAA+B,EAAE;IAClE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1E,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAEzE,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,EAAE,EACxD,EAAE,YAAY,EAAE,oBAAoB,EAAE,CACvC,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,eAAe,EACf,EAAE,WAAW,EAAE,0DAA0D,EAAE,WAAW,EAAE,iBAAiB,EAAE,EAC3G,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CACpD,CAAC;IACF,MAAM,CAAC,YAAY,CACjB,WAAW,EACX,EAAE,WAAW,EAAE,0DAA0D,EAAE,WAAW,EAAE,aAAa,EAAE,EACvG,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAChD,CAAC;IACF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,WAAW,EACT,oZAAoZ;QACtZ,WAAW,EAAE,kBAAkB;KAChC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CACrD,CAAC;IACF,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,WAAW,EACT,miBAAmiB;QACriB,WAAW,EAAE,qBAAqB;KACnC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CACxD,CAAC;IACF,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,WAAW,EACT,mQAAmQ;QACrQ,WAAW,EAAE,kBAAkB;KAChC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAC/C,CAAC;IACF,MAAM,CAAC,YAAY,CACjB,cAAc,EACd,EAAE,WAAW,EAAE,6DAA6D,EAAE,WAAW,EAAE,gBAAgB,EAAE,EAC7G,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CACnD,CAAC;IACF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB,EAAE,WAAW,EAAE,gEAAgE,EAAE,WAAW,EAAE,mBAAmB,EAAE,EACnH,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CACtD,CAAC;IACF,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB,EAAE,WAAW,EAAE,mEAAmE,EAAE,WAAW,EAAE,kBAAkB,EAAE,EACrH,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CACrD,CAAC;IACF,MAAM,CAAC,YAAY,CACjB,SAAS,EACT,EAAE,WAAW,EAAE,4DAA4D,EAAE,WAAW,EAAE,YAAY,EAAE,EACxG,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAC/C,CAAC;IACF,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,WAAW,EACT,0SAA0S;QAC5S,WAAW,EAAE,iBAAiB;KAC/B,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CACpD,CAAC;IACF,MAAM,CAAC,YAAY,CACjB,WAAW,EACX,EAAE,WAAW,EAAE,wJAAwJ,EAAE,WAAW,EAAE,aAAa,EAAE,EACrM,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAC1C,CAAC;IACF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB,EAAE,WAAW,EAAE,2FAA2F,EAAE,WAAW,EAAE,mBAAmB,EAAE,EAC9I,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAChD,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,IAAI,CAAC,MAAe;IAC3B,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;KAC5E,CAAC;AACJ,CAAC"}
|
|
@@ -3,6 +3,7 @@ import type { DQLContext } from '../context.js';
|
|
|
3
3
|
export declare const queryViaMetadataInput: {
|
|
4
4
|
question: z.ZodString;
|
|
5
5
|
proposedSql: z.ZodString;
|
|
6
|
+
intent: z.ZodOptional<z.ZodEnum<["diagnose_change", "driver_breakdown", "segment_compare", "entity_drilldown", "anomaly_investigation", "trust_gap_review"]>>;
|
|
6
7
|
upstreamRefs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
7
8
|
proposedDomain: z.ZodOptional<z.ZodString>;
|
|
8
9
|
proposedEntity: z.ZodOptional<z.ZodString>;
|
|
@@ -29,6 +30,7 @@ export declare const queryViaMetadataInput: {
|
|
|
29
30
|
export declare function queryViaMetadata(ctx: DQLContext, args: {
|
|
30
31
|
question: string;
|
|
31
32
|
proposedSql: string;
|
|
33
|
+
intent?: MetadataResearchIntent;
|
|
32
34
|
upstreamRefs?: string[];
|
|
33
35
|
proposedDomain?: string;
|
|
34
36
|
proposedEntity?: string;
|
|
@@ -38,6 +40,94 @@ export declare function queryViaMetadata(ctx: DQLContext, args: {
|
|
|
38
40
|
serverUrl?: string;
|
|
39
41
|
}): Promise<{
|
|
40
42
|
uncertified: boolean;
|
|
43
|
+
intent: MetadataResearchIntent;
|
|
44
|
+
reviewStatus: string;
|
|
45
|
+
trustStatus: {
|
|
46
|
+
label: string;
|
|
47
|
+
uncertified: boolean;
|
|
48
|
+
intent: MetadataResearchIntent;
|
|
49
|
+
reviewStatus: "rejected" | "draft_ready";
|
|
50
|
+
certification: string;
|
|
51
|
+
draftPath: string | undefined;
|
|
52
|
+
promotionPath: string | undefined;
|
|
53
|
+
caveats: string[];
|
|
54
|
+
};
|
|
55
|
+
evidence: {
|
|
56
|
+
planner: {
|
|
57
|
+
mode: string;
|
|
58
|
+
intent: MetadataResearchIntent;
|
|
59
|
+
steps: string[];
|
|
60
|
+
reviewRequired: boolean;
|
|
61
|
+
boundedPreviewLimit: number;
|
|
62
|
+
};
|
|
63
|
+
certifiedContext: {
|
|
64
|
+
upstreamRefs: string[];
|
|
65
|
+
proposedDomain: string | undefined;
|
|
66
|
+
proposedEntity: string | undefined;
|
|
67
|
+
draftBlock: {
|
|
68
|
+
path: string;
|
|
69
|
+
askedTimes: number;
|
|
70
|
+
proposedContractId: string;
|
|
71
|
+
} | undefined;
|
|
72
|
+
};
|
|
73
|
+
execution: {
|
|
74
|
+
status: string;
|
|
75
|
+
rowCount: number | undefined;
|
|
76
|
+
durationMs: number | null | undefined;
|
|
77
|
+
error: string | undefined;
|
|
78
|
+
};
|
|
79
|
+
assumptions: string[];
|
|
80
|
+
};
|
|
81
|
+
error: string;
|
|
82
|
+
proposedSql: string;
|
|
83
|
+
draftBlock: undefined;
|
|
84
|
+
reason?: undefined;
|
|
85
|
+
promote?: undefined;
|
|
86
|
+
question?: undefined;
|
|
87
|
+
rowCount?: undefined;
|
|
88
|
+
durationMs?: undefined;
|
|
89
|
+
columns?: undefined;
|
|
90
|
+
rows?: undefined;
|
|
91
|
+
} | {
|
|
92
|
+
uncertified: boolean;
|
|
93
|
+
intent: MetadataResearchIntent;
|
|
94
|
+
reviewStatus: string;
|
|
95
|
+
trustStatus: {
|
|
96
|
+
label: string;
|
|
97
|
+
uncertified: boolean;
|
|
98
|
+
intent: MetadataResearchIntent;
|
|
99
|
+
reviewStatus: "rejected" | "draft_ready";
|
|
100
|
+
certification: string;
|
|
101
|
+
draftPath: string | undefined;
|
|
102
|
+
promotionPath: string | undefined;
|
|
103
|
+
caveats: string[];
|
|
104
|
+
};
|
|
105
|
+
evidence: {
|
|
106
|
+
planner: {
|
|
107
|
+
mode: string;
|
|
108
|
+
intent: MetadataResearchIntent;
|
|
109
|
+
steps: string[];
|
|
110
|
+
reviewRequired: boolean;
|
|
111
|
+
boundedPreviewLimit: number;
|
|
112
|
+
};
|
|
113
|
+
certifiedContext: {
|
|
114
|
+
upstreamRefs: string[];
|
|
115
|
+
proposedDomain: string | undefined;
|
|
116
|
+
proposedEntity: string | undefined;
|
|
117
|
+
draftBlock: {
|
|
118
|
+
path: string;
|
|
119
|
+
askedTimes: number;
|
|
120
|
+
proposedContractId: string;
|
|
121
|
+
} | undefined;
|
|
122
|
+
};
|
|
123
|
+
execution: {
|
|
124
|
+
status: string;
|
|
125
|
+
rowCount: number | undefined;
|
|
126
|
+
durationMs: number | null | undefined;
|
|
127
|
+
error: string | undefined;
|
|
128
|
+
};
|
|
129
|
+
assumptions: string[];
|
|
130
|
+
};
|
|
41
131
|
reason: string;
|
|
42
132
|
proposedSql: string;
|
|
43
133
|
draftBlock: {
|
|
@@ -54,14 +144,52 @@ export declare function queryViaMetadata(ctx: DQLContext, args: {
|
|
|
54
144
|
rows?: undefined;
|
|
55
145
|
} | {
|
|
56
146
|
uncertified: boolean;
|
|
147
|
+
intent: MetadataResearchIntent;
|
|
148
|
+
trustStatus: {
|
|
149
|
+
label: string;
|
|
150
|
+
uncertified: boolean;
|
|
151
|
+
intent: MetadataResearchIntent;
|
|
152
|
+
reviewStatus: "rejected" | "draft_ready";
|
|
153
|
+
certification: string;
|
|
154
|
+
draftPath: string | undefined;
|
|
155
|
+
promotionPath: string | undefined;
|
|
156
|
+
caveats: string[];
|
|
157
|
+
};
|
|
158
|
+
evidence: {
|
|
159
|
+
planner: {
|
|
160
|
+
mode: string;
|
|
161
|
+
intent: MetadataResearchIntent;
|
|
162
|
+
steps: string[];
|
|
163
|
+
reviewRequired: boolean;
|
|
164
|
+
boundedPreviewLimit: number;
|
|
165
|
+
};
|
|
166
|
+
certifiedContext: {
|
|
167
|
+
upstreamRefs: string[];
|
|
168
|
+
proposedDomain: string | undefined;
|
|
169
|
+
proposedEntity: string | undefined;
|
|
170
|
+
draftBlock: {
|
|
171
|
+
path: string;
|
|
172
|
+
askedTimes: number;
|
|
173
|
+
proposedContractId: string;
|
|
174
|
+
} | undefined;
|
|
175
|
+
};
|
|
176
|
+
execution: {
|
|
177
|
+
status: string;
|
|
178
|
+
rowCount: number | undefined;
|
|
179
|
+
durationMs: number | null | undefined;
|
|
180
|
+
error: string | undefined;
|
|
181
|
+
};
|
|
182
|
+
assumptions: string[];
|
|
183
|
+
};
|
|
57
184
|
error: string;
|
|
58
185
|
draftBlock: {
|
|
59
186
|
path: string;
|
|
60
187
|
askedTimes: number;
|
|
61
188
|
proposedContractId: string;
|
|
62
189
|
} | undefined;
|
|
63
|
-
|
|
190
|
+
reviewStatus?: undefined;
|
|
64
191
|
proposedSql?: undefined;
|
|
192
|
+
reason?: undefined;
|
|
65
193
|
promote?: undefined;
|
|
66
194
|
question?: undefined;
|
|
67
195
|
rowCount?: undefined;
|
|
@@ -70,6 +198,44 @@ export declare function queryViaMetadata(ctx: DQLContext, args: {
|
|
|
70
198
|
rows?: undefined;
|
|
71
199
|
} | {
|
|
72
200
|
uncertified: boolean;
|
|
201
|
+
intent: MetadataResearchIntent;
|
|
202
|
+
reviewStatus: string;
|
|
203
|
+
trustStatus: {
|
|
204
|
+
label: string;
|
|
205
|
+
uncertified: boolean;
|
|
206
|
+
intent: MetadataResearchIntent;
|
|
207
|
+
reviewStatus: "rejected" | "draft_ready";
|
|
208
|
+
certification: string;
|
|
209
|
+
draftPath: string | undefined;
|
|
210
|
+
promotionPath: string | undefined;
|
|
211
|
+
caveats: string[];
|
|
212
|
+
};
|
|
213
|
+
evidence: {
|
|
214
|
+
planner: {
|
|
215
|
+
mode: string;
|
|
216
|
+
intent: MetadataResearchIntent;
|
|
217
|
+
steps: string[];
|
|
218
|
+
reviewRequired: boolean;
|
|
219
|
+
boundedPreviewLimit: number;
|
|
220
|
+
};
|
|
221
|
+
certifiedContext: {
|
|
222
|
+
upstreamRefs: string[];
|
|
223
|
+
proposedDomain: string | undefined;
|
|
224
|
+
proposedEntity: string | undefined;
|
|
225
|
+
draftBlock: {
|
|
226
|
+
path: string;
|
|
227
|
+
askedTimes: number;
|
|
228
|
+
proposedContractId: string;
|
|
229
|
+
} | undefined;
|
|
230
|
+
};
|
|
231
|
+
execution: {
|
|
232
|
+
status: string;
|
|
233
|
+
rowCount: number | undefined;
|
|
234
|
+
durationMs: number | null | undefined;
|
|
235
|
+
error: string | undefined;
|
|
236
|
+
};
|
|
237
|
+
assumptions: string[];
|
|
238
|
+
};
|
|
73
239
|
reason: string;
|
|
74
240
|
question: string;
|
|
75
241
|
rowCount: number;
|
|
@@ -79,15 +245,16 @@ export declare function queryViaMetadata(ctx: DQLContext, args: {
|
|
|
79
245
|
type?: string;
|
|
80
246
|
}[];
|
|
81
247
|
rows: unknown[];
|
|
248
|
+
proposedSql: string;
|
|
82
249
|
draftBlock: {
|
|
83
250
|
path: string;
|
|
84
251
|
askedTimes: number;
|
|
85
252
|
proposedContractId: string;
|
|
86
253
|
} | undefined;
|
|
87
254
|
promote: string | undefined;
|
|
88
|
-
proposedSql?: undefined;
|
|
89
255
|
error?: undefined;
|
|
90
256
|
}>;
|
|
257
|
+
type MetadataResearchIntent = 'diagnose_change' | 'driver_breakdown' | 'segment_compare' | 'entity_drilldown' | 'anomaly_investigation' | 'trust_gap_review';
|
|
91
258
|
/**
|
|
92
259
|
* Derive a deterministic snake_case slug from a free-form question. Same
|
|
93
260
|
* question -> same slug, so re-asking the question increments `asked_times`
|
|
@@ -98,4 +265,5 @@ export declare function queryViaMetadata(ctx: DQLContext, args: {
|
|
|
98
265
|
* paths sensible. Not perfect across paraphrases — that's a v2 problem.
|
|
99
266
|
*/
|
|
100
267
|
export declare function deriveSlug(question: string): string;
|
|
268
|
+
export {};
|
|
101
269
|
//# sourceMappingURL=query-via-metadata.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-via-metadata.d.ts","sourceRoot":"","sources":["../../src/tools/query-via-metadata.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,eAAO,MAAM,qBAAqB
|
|
1
|
+
{"version":3,"file":"query-via-metadata.d.ts","sourceRoot":"","sources":["../../src/tools/query-via-metadata.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,eAAO,MAAM,qBAAqB;;;;;;;;;;;CAiEjC,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,UAAU,EACf,IAAI,EAAE;IACJ,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAqMsB,MAAM;4BAAc,MAAM;oCAAsB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAAtD,MAAM;4BAAc,MAAM;oCAAsB,MAAM;;;;;;;;;;;;;;cAlLrD,MAAM;oBAAc,MAAM;4BAAsB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAkLvD,MAAM;4BAAc,MAAM;oCAAsB,MAAM;;;;;;;;;;;;;cAlLrD,MAAM;oBAAc,MAAM;4BAAsB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAkLvD,MAAM;4BAAc,MAAM;oCAAsB,MAAM;;;;;;;;;;;;;;;;cA1GjD,MAAM;eAAS,MAAM;;;;;cAxEzB,MAAM;oBAAc,MAAM;4BAAsB,MAAM;;;;GAiH/E;AAID,KAAK,sBAAsB,GACvB,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,GACjB,kBAAkB,GAClB,uBAAuB,GACvB,kBAAkB,CAAC;AA8GvB;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQnD"}
|
|
@@ -10,6 +10,17 @@ export const queryViaMetadataInput = {
|
|
|
10
10
|
.string()
|
|
11
11
|
.min(1)
|
|
12
12
|
.describe('SQL the agent inferred from the available manifest + dbt schema. Will be executed through the local DQL runtime against the certified data plane.'),
|
|
13
|
+
intent: z
|
|
14
|
+
.enum([
|
|
15
|
+
'diagnose_change',
|
|
16
|
+
'driver_breakdown',
|
|
17
|
+
'segment_compare',
|
|
18
|
+
'entity_drilldown',
|
|
19
|
+
'anomaly_investigation',
|
|
20
|
+
'trust_gap_review',
|
|
21
|
+
])
|
|
22
|
+
.optional()
|
|
23
|
+
.describe('Optional deep-research intent for dashboard drilldowns and investigation-style answers.'),
|
|
13
24
|
upstreamRefs: z
|
|
14
25
|
.array(z.string())
|
|
15
26
|
.optional()
|
|
@@ -60,6 +71,20 @@ export const queryViaMetadataInput = {
|
|
|
60
71
|
export async function queryViaMetadata(ctx, args) {
|
|
61
72
|
const slug = deriveSlug(args.question);
|
|
62
73
|
const proposedContractId = suggestContractId(slug, args.proposedDomain, args.proposedEntity);
|
|
74
|
+
const intent = normalizeMetadataResearchIntent(args.intent, args.question);
|
|
75
|
+
const safety = buildMetadataPreviewSql(args.proposedSql, args.limit ?? 200);
|
|
76
|
+
if (!safety.ok) {
|
|
77
|
+
return {
|
|
78
|
+
uncertified: true,
|
|
79
|
+
intent,
|
|
80
|
+
reviewStatus: 'rejected',
|
|
81
|
+
trustStatus: metadataTrustStatus('rejected', intent, undefined, safety.error),
|
|
82
|
+
evidence: metadataEvidence(intent, args, { status: 'rejected', error: safety.error }),
|
|
83
|
+
error: safety.error,
|
|
84
|
+
proposedSql: args.proposedSql,
|
|
85
|
+
draftBlock: undefined,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
63
88
|
let draftBlock;
|
|
64
89
|
if (args.saveDraft !== false) {
|
|
65
90
|
draftBlock = upsertDraft(ctx.projectRoot, {
|
|
@@ -75,6 +100,10 @@ export async function queryViaMetadata(ctx, args) {
|
|
|
75
100
|
if (args.dryRun) {
|
|
76
101
|
return {
|
|
77
102
|
uncertified: true,
|
|
103
|
+
intent,
|
|
104
|
+
reviewStatus: 'draft_ready',
|
|
105
|
+
trustStatus: metadataTrustStatus('draft_ready', intent, draftBlock),
|
|
106
|
+
evidence: metadataEvidence(intent, args, { status: 'dry_run', draftBlock }),
|
|
78
107
|
reason: 'dryRun=true; SQL not executed. Returned proposal only.',
|
|
79
108
|
proposedSql: args.proposedSql,
|
|
80
109
|
draftBlock,
|
|
@@ -94,46 +123,154 @@ export async function queryViaMetadata(ctx, args) {
|
|
|
94
123
|
cell: {
|
|
95
124
|
id: `mcp-tier2-${slug}`,
|
|
96
125
|
type: 'dql',
|
|
97
|
-
source: wrapSqlAsDqlCell(
|
|
126
|
+
source: wrapSqlAsDqlCell(safety.sql),
|
|
98
127
|
title: args.question,
|
|
99
128
|
},
|
|
100
129
|
}),
|
|
101
130
|
});
|
|
102
131
|
}
|
|
103
132
|
catch (err) {
|
|
133
|
+
const error = `Could not reach DQL runtime at ${base}. Start it with \`dql serve\` in ${ctx.projectRoot}. (${err instanceof Error ? err.message : String(err)})`;
|
|
104
134
|
return {
|
|
105
135
|
uncertified: true,
|
|
106
|
-
|
|
136
|
+
intent,
|
|
137
|
+
trustStatus: metadataTrustStatus('draft_ready', intent, draftBlock, error),
|
|
138
|
+
evidence: metadataEvidence(intent, args, { status: 'runtime_unavailable', draftBlock, error }),
|
|
139
|
+
error,
|
|
107
140
|
draftBlock,
|
|
108
141
|
};
|
|
109
142
|
}
|
|
110
143
|
if (!response.ok) {
|
|
144
|
+
const error = `Runtime returned ${response.status}: ${await response.text()}`;
|
|
111
145
|
return {
|
|
112
146
|
uncertified: true,
|
|
113
|
-
|
|
147
|
+
intent,
|
|
148
|
+
trustStatus: metadataTrustStatus('draft_ready', intent, draftBlock, error),
|
|
149
|
+
evidence: metadataEvidence(intent, args, { status: 'runtime_error', draftBlock, error }),
|
|
150
|
+
error,
|
|
114
151
|
draftBlock,
|
|
115
152
|
};
|
|
116
153
|
}
|
|
117
154
|
const payload = (await response.json());
|
|
118
155
|
if (payload.error) {
|
|
119
|
-
return {
|
|
156
|
+
return {
|
|
157
|
+
uncertified: true,
|
|
158
|
+
intent,
|
|
159
|
+
trustStatus: metadataTrustStatus('draft_ready', intent, draftBlock, payload.error),
|
|
160
|
+
evidence: metadataEvidence(intent, args, { status: 'execution_failed', draftBlock, error: payload.error }),
|
|
161
|
+
error: payload.error,
|
|
162
|
+
draftBlock,
|
|
163
|
+
};
|
|
120
164
|
}
|
|
121
165
|
const rows = payload.result?.rows ?? [];
|
|
122
166
|
return {
|
|
123
167
|
uncertified: true,
|
|
168
|
+
intent,
|
|
169
|
+
reviewStatus: 'draft_ready',
|
|
170
|
+
trustStatus: metadataTrustStatus('draft_ready', intent, draftBlock),
|
|
171
|
+
evidence: metadataEvidence(intent, args, {
|
|
172
|
+
status: 'executed',
|
|
173
|
+
draftBlock,
|
|
174
|
+
rowCount: rows.length,
|
|
175
|
+
durationMs: payload.result?.executionTime ?? null,
|
|
176
|
+
}),
|
|
124
177
|
reason: 'no certified block matched the question; result derived from manifest + dbt schema',
|
|
125
178
|
question: args.question,
|
|
126
179
|
rowCount: rows.length,
|
|
127
180
|
durationMs: payload.result?.executionTime ?? null,
|
|
128
181
|
columns: payload.result?.columns ?? [],
|
|
129
182
|
rows: args.limit ? rows.slice(0, args.limit) : rows,
|
|
183
|
+
proposedSql: args.proposedSql,
|
|
130
184
|
draftBlock,
|
|
131
185
|
promote: draftBlock
|
|
132
186
|
? `if you want this question certified, run: dql certify --from-draft ${draftBlock.path}`
|
|
133
187
|
: undefined,
|
|
134
188
|
};
|
|
135
189
|
}
|
|
136
|
-
|
|
190
|
+
function normalizeMetadataResearchIntent(value, question) {
|
|
191
|
+
if (value === 'diagnose_change'
|
|
192
|
+
|| value === 'driver_breakdown'
|
|
193
|
+
|| value === 'segment_compare'
|
|
194
|
+
|| value === 'entity_drilldown'
|
|
195
|
+
|| value === 'anomaly_investigation'
|
|
196
|
+
|| value === 'trust_gap_review')
|
|
197
|
+
return value;
|
|
198
|
+
const text = question.toLowerCase();
|
|
199
|
+
if (/\b(trust|rely|certif|lineage|owner|caveat|gap)\b/.test(text))
|
|
200
|
+
return 'trust_gap_review';
|
|
201
|
+
if (/\b(anomal|exception|outlier|spike|dip)\b/.test(text))
|
|
202
|
+
return 'anomaly_investigation';
|
|
203
|
+
if (/\b(compare|versus| vs |segment|cohort)\b/.test(text))
|
|
204
|
+
return 'segment_compare';
|
|
205
|
+
if (/\b(customer|account|user|client|merchant|product|sku|entity)\b/.test(text))
|
|
206
|
+
return 'entity_drilldown';
|
|
207
|
+
if (/\b(why|changed|change|drop|decline|increase|decrease|month|week|quarter)\b/.test(text))
|
|
208
|
+
return 'diagnose_change';
|
|
209
|
+
if (/\b(driver|drove|break down|breakdown|contribute|top mover|movers)\b/.test(text))
|
|
210
|
+
return 'driver_breakdown';
|
|
211
|
+
return 'driver_breakdown';
|
|
212
|
+
}
|
|
213
|
+
function metadataTrustStatus(reviewStatus, intent, draftBlock, error) {
|
|
214
|
+
return {
|
|
215
|
+
label: 'AI-generated metadata research',
|
|
216
|
+
uncertified: true,
|
|
217
|
+
intent,
|
|
218
|
+
reviewStatus,
|
|
219
|
+
certification: 'uncertified',
|
|
220
|
+
draftPath: draftBlock?.path,
|
|
221
|
+
promotionPath: draftBlock ? 'dql certify --from-draft' : undefined,
|
|
222
|
+
caveats: [
|
|
223
|
+
'No certified block exactly answered this grain.',
|
|
224
|
+
'SQL was generated from metadata and must be reviewed before certification.',
|
|
225
|
+
...(error ? [`Execution caveat: ${error}`] : []),
|
|
226
|
+
],
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
function metadataEvidence(intent, args, execution) {
|
|
230
|
+
return {
|
|
231
|
+
planner: {
|
|
232
|
+
mode: 'metadata_text_to_sql',
|
|
233
|
+
intent,
|
|
234
|
+
steps: metadataInvestigationSteps(intent),
|
|
235
|
+
reviewRequired: true,
|
|
236
|
+
boundedPreviewLimit: args.limit ?? 200,
|
|
237
|
+
},
|
|
238
|
+
certifiedContext: {
|
|
239
|
+
upstreamRefs: args.upstreamRefs ?? [],
|
|
240
|
+
proposedDomain: args.proposedDomain,
|
|
241
|
+
proposedEntity: args.proposedEntity,
|
|
242
|
+
draftBlock: execution.draftBlock,
|
|
243
|
+
},
|
|
244
|
+
execution: {
|
|
245
|
+
status: execution.status,
|
|
246
|
+
rowCount: execution.rowCount,
|
|
247
|
+
durationMs: execution.durationMs,
|
|
248
|
+
error: execution.error,
|
|
249
|
+
},
|
|
250
|
+
assumptions: [
|
|
251
|
+
`Intent classified as ${intent}.`,
|
|
252
|
+
'Certified blocks and metadata are context; this generated SQL is not certified.',
|
|
253
|
+
'Preview SQL is read-only and bounded before execution.',
|
|
254
|
+
execution.draftBlock
|
|
255
|
+
? `Draft review path captured at ${execution.draftBlock.path}.`
|
|
256
|
+
: 'No draft block was captured for this run.',
|
|
257
|
+
],
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
function metadataInvestigationSteps(intent) {
|
|
261
|
+
const common = ['trust check', 'draft review path'];
|
|
262
|
+
if (intent === 'trust_gap_review')
|
|
263
|
+
return ['certification review', 'lineage review', 'owner and caveat check', ...common];
|
|
264
|
+
if (intent === 'entity_drilldown')
|
|
265
|
+
return ['entity value match', 'metric trend', 'exception rows', ...common];
|
|
266
|
+
if (intent === 'segment_compare')
|
|
267
|
+
return ['segment grouping', 'baseline comparison', 'top movers', ...common];
|
|
268
|
+
if (intent === 'anomaly_investigation')
|
|
269
|
+
return ['baseline comparison', 'trend check', 'exception rows', 'top movers', ...common];
|
|
270
|
+
if (intent === 'diagnose_change')
|
|
271
|
+
return ['baseline comparison', 'trend check', 'top movers', 'segment contribution', ...common];
|
|
272
|
+
return ['top movers', 'segment contribution', 'exception rows', ...common];
|
|
273
|
+
}
|
|
137
274
|
const STOPWORDS = new Set([
|
|
138
275
|
'a', 'an', 'and', 'are', 'as', 'at', 'be', 'by', 'do', 'for', 'from',
|
|
139
276
|
'has', 'have', 'how', 'i', 'in', 'is', 'it', 'me', 'much', 'my', 'of',
|
|
@@ -169,6 +306,104 @@ function wrapSqlAsDqlCell(sql) {
|
|
|
169
306
|
// block wrapper is required for execution.
|
|
170
307
|
return sql;
|
|
171
308
|
}
|
|
309
|
+
const METADATA_PREVIEW_FORBIDDEN_SQL = [
|
|
310
|
+
'alter',
|
|
311
|
+
'analyze',
|
|
312
|
+
'attach',
|
|
313
|
+
'call',
|
|
314
|
+
'copy',
|
|
315
|
+
'create',
|
|
316
|
+
'delete',
|
|
317
|
+
'detach',
|
|
318
|
+
'drop',
|
|
319
|
+
'export',
|
|
320
|
+
'grant',
|
|
321
|
+
'import',
|
|
322
|
+
'insert',
|
|
323
|
+
'install',
|
|
324
|
+
'load',
|
|
325
|
+
'merge',
|
|
326
|
+
'pragma',
|
|
327
|
+
'reset',
|
|
328
|
+
'revoke',
|
|
329
|
+
'set',
|
|
330
|
+
'truncate',
|
|
331
|
+
'update',
|
|
332
|
+
'vacuum',
|
|
333
|
+
];
|
|
334
|
+
function buildMetadataPreviewSql(sql, limit) {
|
|
335
|
+
const trimmed = sql.trim();
|
|
336
|
+
if (!trimmed)
|
|
337
|
+
return { ok: false, error: 'Tier-2 metadata SQL is empty.' };
|
|
338
|
+
const withoutTrailingSemicolon = trimmed.replace(/;\s*$/, '').trim();
|
|
339
|
+
const scanSql = stripSqlStringsAndComments(withoutTrailingSemicolon).trim();
|
|
340
|
+
if (!/^(select|with)\b/i.test(scanSql)) {
|
|
341
|
+
return { ok: false, error: 'Tier-2 metadata SQL only supports read-only SELECT or WITH queries.' };
|
|
342
|
+
}
|
|
343
|
+
if (scanSql.includes(';')) {
|
|
344
|
+
return { ok: false, error: 'Tier-2 metadata SQL only supports one statement.' };
|
|
345
|
+
}
|
|
346
|
+
const forbiddenPattern = new RegExp(`\\b(${METADATA_PREVIEW_FORBIDDEN_SQL.join('|')})\\b`, 'i');
|
|
347
|
+
const forbidden = scanSql.match(forbiddenPattern)?.[1];
|
|
348
|
+
if (forbidden) {
|
|
349
|
+
return { ok: false, error: `Tier-2 metadata SQL rejected unsupported statement keyword: ${forbidden.toUpperCase()}.` };
|
|
350
|
+
}
|
|
351
|
+
const boundedLimit = Math.min(Math.max(Math.trunc(limit), 1), 10000);
|
|
352
|
+
return {
|
|
353
|
+
ok: true,
|
|
354
|
+
sql: `SELECT * FROM (\n${withoutTrailingSemicolon}\n) AS dql_mcp_metadata_preview LIMIT ${boundedLimit}`,
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
function stripSqlStringsAndComments(sql) {
|
|
358
|
+
let output = '';
|
|
359
|
+
for (let index = 0; index < sql.length; index += 1) {
|
|
360
|
+
const current = sql[index];
|
|
361
|
+
const next = sql[index + 1];
|
|
362
|
+
if (current === '-' && next === '-') {
|
|
363
|
+
output += ' ';
|
|
364
|
+
index += 2;
|
|
365
|
+
while (index < sql.length && sql[index] !== '\n') {
|
|
366
|
+
output += ' ';
|
|
367
|
+
index += 1;
|
|
368
|
+
}
|
|
369
|
+
if (index < sql.length)
|
|
370
|
+
output += '\n';
|
|
371
|
+
continue;
|
|
372
|
+
}
|
|
373
|
+
if (current === '/' && next === '*') {
|
|
374
|
+
output += ' ';
|
|
375
|
+
index += 2;
|
|
376
|
+
while (index < sql.length && !(sql[index] === '*' && sql[index + 1] === '/')) {
|
|
377
|
+
output += sql[index] === '\n' ? '\n' : ' ';
|
|
378
|
+
index += 1;
|
|
379
|
+
}
|
|
380
|
+
if (index < sql.length) {
|
|
381
|
+
output += ' ';
|
|
382
|
+
index += 1;
|
|
383
|
+
}
|
|
384
|
+
continue;
|
|
385
|
+
}
|
|
386
|
+
if (current === "'" || current === '"') {
|
|
387
|
+
const quote = current;
|
|
388
|
+
output += ' ';
|
|
389
|
+
while (index + 1 < sql.length) {
|
|
390
|
+
index += 1;
|
|
391
|
+
output += sql[index] === '\n' ? '\n' : ' ';
|
|
392
|
+
if (sql[index] === quote) {
|
|
393
|
+
if (sql[index + 1] === quote) {
|
|
394
|
+
index += 1;
|
|
395
|
+
output += ' ';
|
|
396
|
+
continue;
|
|
397
|
+
}
|
|
398
|
+
break;
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
continue;
|
|
402
|
+
}
|
|
403
|
+
output += current;
|
|
404
|
+
}
|
|
405
|
+
return output;
|
|
406
|
+
}
|
|
172
407
|
function upsertDraft(projectRoot, rec) {
|
|
173
408
|
const draftDir = join(projectRoot, 'blocks', '_drafts');
|
|
174
409
|
const filePath = join(draftDir, `${rec.slug}.dql`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-via-metadata.js","sourceRoot":"","sources":["../../src/tools/query-via-metadata.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"query-via-metadata.js","sourceRoot":"","sources":["../../src/tools/query-via-metadata.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@duckcodeailabs/dql-mcp",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.4",
|
|
4
4
|
"description": "DQL MCP server: expose certified blocks, semantic layer, lineage, and governance to LLM agents via the Model Context Protocol",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -24,10 +24,10 @@
|
|
|
24
24
|
"access": "public"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@duckcodeailabs/dql-agent": "^1.6.
|
|
28
|
-
"@duckcodeailabs/dql-core": "^1.6.
|
|
29
|
-
"@duckcodeailabs/dql-governance": "^1.6.
|
|
30
|
-
"@duckcodeailabs/dql-project": "^1.6.
|
|
27
|
+
"@duckcodeailabs/dql-agent": "^1.6.4",
|
|
28
|
+
"@duckcodeailabs/dql-core": "^1.6.4",
|
|
29
|
+
"@duckcodeailabs/dql-governance": "^1.6.4",
|
|
30
|
+
"@duckcodeailabs/dql-project": "^1.6.4",
|
|
31
31
|
"@modelcontextprotocol/sdk": "^1.0.4",
|
|
32
32
|
"zod": "^3.25.0"
|
|
33
33
|
},
|