@duckcodeailabs/dql-mcp 1.6.30 → 1.6.32
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/context.d.ts.map +1 -1
- package/dist/context.js +4 -1
- package/dist/context.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +32 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +184 -90
- package/dist/server.js.map +1 -1
- package/dist/tool-schema.d.ts +5 -0
- package/dist/tool-schema.d.ts.map +1 -0
- package/dist/tool-schema.js +105 -0
- package/dist/tool-schema.js.map +1 -0
- package/dist/tools/certify.d.ts +1 -4
- package/dist/tools/certify.d.ts.map +1 -1
- package/dist/tools/certify.js +2 -4
- package/dist/tools/certify.js.map +1 -1
- package/dist/tools/expand-context.d.ts +62 -0
- package/dist/tools/expand-context.d.ts.map +1 -0
- package/dist/tools/expand-context.js +130 -0
- package/dist/tools/expand-context.js.map +1 -0
- package/dist/tools/get-block.d.ts +1 -5
- package/dist/tools/get-block.d.ts.map +1 -1
- package/dist/tools/get-block.js +2 -8
- package/dist/tools/get-block.js.map +1 -1
- package/dist/tools/governed.d.ts +94 -0
- package/dist/tools/governed.d.ts.map +1 -0
- package/dist/tools/governed.js +139 -0
- package/dist/tools/governed.js.map +1 -0
- package/dist/tools/hints.d.ts +3 -46
- package/dist/tools/hints.d.ts.map +1 -1
- package/dist/tools/hints.js +4 -33
- package/dist/tools/hints.js.map +1 -1
- package/dist/tools/kg.d.ts +5 -22
- package/dist/tools/kg.d.ts.map +1 -1
- package/dist/tools/kg.js +6 -29
- package/dist/tools/kg.js.map +1 -1
- package/dist/tools/lineage-impact.d.ts +4 -9
- package/dist/tools/lineage-impact.d.ts.map +1 -1
- package/dist/tools/lineage-impact.js +91 -36
- package/dist/tools/lineage-impact.js.map +1 -1
- package/dist/tools/list-proposals.d.ts +13 -5
- package/dist/tools/list-proposals.d.ts.map +1 -1
- package/dist/tools/list-proposals.js +152 -16
- package/dist/tools/list-proposals.js.map +1 -1
- package/dist/tools/metadata.d.ts +3 -12
- package/dist/tools/metadata.d.ts.map +1 -1
- package/dist/tools/metadata.js +4 -15
- package/dist/tools/metadata.js.map +1 -1
- package/dist/tools/query-semantic-model.d.ts +374 -0
- package/dist/tools/query-semantic-model.d.ts.map +1 -0
- package/dist/tools/query-semantic-model.js +404 -0
- package/dist/tools/query-semantic-model.js.map +1 -0
- package/dist/tools/query-via-block.d.ts +5 -8
- package/dist/tools/query-via-block.d.ts.map +1 -1
- package/dist/tools/query-via-block.js +9 -14
- package/dist/tools/query-via-block.js.map +1 -1
- package/dist/tools/query-via-metadata.d.ts +198 -130
- package/dist/tools/query-via-metadata.d.ts.map +1 -1
- package/dist/tools/query-via-metadata.js +197 -101
- package/dist/tools/query-via-metadata.js.map +1 -1
- package/dist/tools/search-blocks.d.ts +1 -7
- package/dist/tools/search-blocks.d.ts.map +1 -1
- package/dist/tools/search-blocks.js +2 -10
- package/dist/tools/search-blocks.js.map +1 -1
- package/dist/tools/semantic.d.ts +3 -8
- package/dist/tools/semantic.d.ts.map +1 -1
- package/dist/tools/semantic.js +3 -7
- package/dist/tools/semantic.js.map +1 -1
- package/dist/tools/suggest-block.d.ts +1 -10
- package/dist/tools/suggest-block.d.ts.map +1 -1
- package/dist/tools/suggest-block.js +2 -10
- package/dist/tools/suggest-block.js.map +1 -1
- package/dist/tools/workflows.d.ts +7 -33
- package/dist/tools/workflows.d.ts.map +1 -1
- package/dist/tools/workflows.js +6 -19
- package/dist/tools/workflows.js.map +1 -1
- package/package.json +5 -5
package/dist/tools/hints.js
CHANGED
|
@@ -10,29 +10,9 @@
|
|
|
10
10
|
* Source of truth is Git (`.dql/hints`, `.dql/traces`, `.dql/reviews`); SQLite
|
|
11
11
|
* (`.dql/cache/agent-kg.sqlite`) is reindexed automatically on every write.
|
|
12
12
|
*/
|
|
13
|
-
import { z } from 'zod';
|
|
14
13
|
import { getHintFromGit, listHintsFromGit, recordCorrectionTrace, reviewHint, } from '@duckcodeailabs/dql-agent';
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
dbtModel: z.string().optional().describe('dbt model the hint is about, e.g. "fct_orders".'),
|
|
18
|
-
domain: z.string().optional().describe('Business domain, e.g. "growth".'),
|
|
19
|
-
dialect: z.string().optional().describe('Warehouse SQL dialect, e.g. "duckdb", "snowflake".'),
|
|
20
|
-
term: z.string().optional().describe('Business term the hint refines.'),
|
|
21
|
-
block: z.string().optional().describe('Certified block the hint relates to.'),
|
|
22
|
-
};
|
|
23
|
-
export const recordCorrectionInput = {
|
|
24
|
-
question: z.string().describe('The analyst question the Tier-2 answer was for.'),
|
|
25
|
-
wrongAnswer: z.string().describe('The generated answer/SQL that was wrong.'),
|
|
26
|
-
correction: z.string().describe('The analyst correction: corrected SQL, rule, or guidance.'),
|
|
27
|
-
scope: z.object(scopeSchema).describe('Scope the correction applies within. A hint only applies inside its scope.'),
|
|
28
|
-
rationale: z.string().optional().describe('Why the original answer was wrong.'),
|
|
29
|
-
author: z.string().optional().describe('Who recorded the correction.'),
|
|
30
|
-
correctedSql: z.string().optional().describe('Optional canonical corrected SQL to endorse.'),
|
|
31
|
-
hintTitle: z.string().optional().describe('Override the derived hint title.'),
|
|
32
|
-
hintGuidance: z.string().optional().describe('Override the hint guidance (defaults to the correction).'),
|
|
33
|
-
tags: z.array(z.string()).optional().describe('Searchable keywords.'),
|
|
34
|
-
anchorObjectKey: z.string().optional().describe('contextPackId / blockId the correction anchored to.'),
|
|
35
|
-
};
|
|
14
|
+
import { zodInputShapeForTool } from '../tool-schema.js';
|
|
15
|
+
export const recordCorrectionInput = zodInputShapeForTool('record_correction');
|
|
36
16
|
export function recordCorrection(ctx, args) {
|
|
37
17
|
const { trace, hint } = recordCorrectionTrace(ctx.projectRoot, {
|
|
38
18
|
question: args.question,
|
|
@@ -57,12 +37,7 @@ export function recordCorrection(ctx, args) {
|
|
|
57
37
|
hint: summarizeHint(hint),
|
|
58
38
|
};
|
|
59
39
|
}
|
|
60
|
-
export const approveHintInput =
|
|
61
|
-
hintId: z.string().describe('Id of the candidate hint to review.'),
|
|
62
|
-
decision: z.enum(['approved', 'rejected']).describe('Approve (usable in retrieval) or reject.'),
|
|
63
|
-
reviewer: z.string().describe('Who is reviewing.'),
|
|
64
|
-
note: z.string().optional().describe('Optional review note.'),
|
|
65
|
-
};
|
|
40
|
+
export const approveHintInput = zodInputShapeForTool('approve_hint');
|
|
66
41
|
export function approveHint(ctx, args) {
|
|
67
42
|
const existing = getHintFromGit(ctx.projectRoot, args.hintId);
|
|
68
43
|
if (!existing) {
|
|
@@ -88,11 +63,7 @@ export function approveHint(ctx, args) {
|
|
|
88
63
|
hint: summarizeHint(result.hint),
|
|
89
64
|
};
|
|
90
65
|
}
|
|
91
|
-
export const listHintsInput =
|
|
92
|
-
status: z.enum(['candidate', 'approved', 'rejected']).optional().describe('Filter by lifecycle status.'),
|
|
93
|
-
domain: z.string().optional().describe('Filter to a single domain scope.'),
|
|
94
|
-
metric: z.string().optional().describe('Filter to a single metric scope.'),
|
|
95
|
-
};
|
|
66
|
+
export const listHintsInput = zodInputShapeForTool('list_hints');
|
|
96
67
|
export function listHints(ctx, args) {
|
|
97
68
|
let hints = listHintsFromGit(ctx.projectRoot);
|
|
98
69
|
if (args.status)
|
package/dist/tools/hints.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hints.js","sourceRoot":"","sources":["../../src/tools/hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"hints.js","sourceRoot":"","sources":["../../src/tools/hints.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/kg.d.ts
CHANGED
|
@@ -8,15 +8,9 @@
|
|
|
8
8
|
* close it after the turn so file handles never leak. If the KG hasn't
|
|
9
9
|
* been built yet, `kg_search` returns an empty result with a hint.
|
|
10
10
|
*/
|
|
11
|
-
import { z } from 'zod';
|
|
12
11
|
import type { DQLContext } from '../context.js';
|
|
13
12
|
import { type KGNodeKind } from '@duckcodeailabs/dql-agent';
|
|
14
|
-
export declare const kgSearchInput:
|
|
15
|
-
query: z.ZodString;
|
|
16
|
-
kinds: z.ZodOptional<z.ZodArray<z.ZodEnum<["block", "term", "business_view", "metric", "dimension", "measure", "entity", "semantic_model", "saved_query", "domain", "dbt_model", "dbt_source", "notebook", "dashboard", "app", "skill"]>, "many">>;
|
|
17
|
-
domain: z.ZodOptional<z.ZodString>;
|
|
18
|
-
limit: z.ZodOptional<z.ZodNumber>;
|
|
19
|
-
};
|
|
13
|
+
export declare const kgSearchInput: Record<string, import("zod").ZodTypeAny>;
|
|
20
14
|
export declare function kgSearch(ctx: DQLContext, args: {
|
|
21
15
|
query: string;
|
|
22
16
|
kinds?: string[];
|
|
@@ -36,7 +30,7 @@ export declare function kgSearch(ctx: DQLContext, args: {
|
|
|
36
30
|
description: string | undefined;
|
|
37
31
|
tags: string[] | undefined;
|
|
38
32
|
sourceTier: import("packages/dql-agent/dist/kg/types.js").KGSourceTier | undefined;
|
|
39
|
-
certification: import("
|
|
33
|
+
certification: import("@duckcodeailabs/dql-core").TrustLabelId | undefined;
|
|
40
34
|
provenance: string | undefined;
|
|
41
35
|
businessOutcome: string | undefined;
|
|
42
36
|
businessOwner: string | undefined;
|
|
@@ -69,17 +63,13 @@ export declare function kgSearch(ctx: DQLContext, args: {
|
|
|
69
63
|
}[];
|
|
70
64
|
hint?: undefined;
|
|
71
65
|
}>;
|
|
72
|
-
export declare const inspectMetadataContextInput:
|
|
73
|
-
question: z.ZodString;
|
|
74
|
-
focusObjectKey: z.ZodOptional<z.ZodString>;
|
|
75
|
-
objectTypes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
76
|
-
limit: z.ZodOptional<z.ZodNumber>;
|
|
77
|
-
};
|
|
66
|
+
export declare const inspectMetadataContextInput: Record<string, import("zod").ZodTypeAny>;
|
|
78
67
|
export declare function inspectMetadataContext(ctx: DQLContext, args: {
|
|
79
68
|
question: string;
|
|
80
69
|
focusObjectKey?: string;
|
|
81
70
|
objectTypes?: string[];
|
|
82
71
|
limit?: number;
|
|
72
|
+
strictness?: 'balanced' | 'exploratory';
|
|
83
73
|
}): Promise<{
|
|
84
74
|
catalog: {
|
|
85
75
|
path: string;
|
|
@@ -94,14 +84,7 @@ export declare function inspectMetadataContext(ctx: DQLContext, args: {
|
|
|
94
84
|
};
|
|
95
85
|
contextPack: import("@duckcodeailabs/dql-agent").LocalContextPack;
|
|
96
86
|
}>;
|
|
97
|
-
export declare const feedbackRecordInput:
|
|
98
|
-
user: z.ZodString;
|
|
99
|
-
question: z.ZodString;
|
|
100
|
-
answerKind: z.ZodEnum<["certified", "uncertified"]>;
|
|
101
|
-
blockId: z.ZodOptional<z.ZodString>;
|
|
102
|
-
rating: z.ZodEnum<["up", "down"]>;
|
|
103
|
-
comment: z.ZodOptional<z.ZodString>;
|
|
104
|
-
};
|
|
87
|
+
export declare const feedbackRecordInput: Record<string, import("zod").ZodTypeAny>;
|
|
105
88
|
export declare function feedbackRecord(ctx: DQLContext, args: {
|
|
106
89
|
user: string;
|
|
107
90
|
question: string;
|
package/dist/tools/kg.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kg.d.ts","sourceRoot":"","sources":["../../src/tools/kg.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"kg.d.ts","sourceRoot":"","sources":["../../src/tools/kg.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAML,KAAK,UAAU,EAChB,MAAM,2BAA2B,CAAC;AAGnC,eAAO,MAAM,aAAa,0CAAoC,CAAC;AAE/D,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,UAAU,EACf,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4D3E;AAED,eAAO,MAAM,2BAA2B,0CAAmD,CAAC;AAE5F,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,UAAU,EACf,IAAI,EAAE;IACJ,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,UAAU,GAAG,aAAa,CAAC;CACzC;;;;;;;;;;;;;GAgCF;AAED,eAAO,MAAM,mBAAmB,0CAA0C,CAAC;AAE3E,wBAAgB,cAAc,CAC5B,GAAG,EAAE,UAAU,EACf,IAAI,EAAE;IACJ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,WAAW,GAAG,aAAa,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;;;;;;EAyBF"}
|
package/dist/tools/kg.js
CHANGED
|
@@ -8,22 +8,10 @@
|
|
|
8
8
|
* close it after the turn so file handles never leak. If the KG hasn't
|
|
9
9
|
* been built yet, `kg_search` returns an empty result with a hint.
|
|
10
10
|
*/
|
|
11
|
-
import { z } from 'zod';
|
|
12
11
|
import { existsSync } from 'node:fs';
|
|
13
12
|
import { KGStore, buildLocalContextPack, defaultKgPath, ensureMetadataCatalogFresh, reindexProject, } from '@duckcodeailabs/dql-agent';
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
kinds: z
|
|
17
|
-
.array(z.enum([
|
|
18
|
-
'block', 'term', 'business_view',
|
|
19
|
-
'metric', 'dimension', 'measure', 'entity', 'semantic_model', 'saved_query', 'domain',
|
|
20
|
-
'dbt_model', 'dbt_source', 'notebook', 'dashboard', 'app', 'skill',
|
|
21
|
-
]))
|
|
22
|
-
.optional()
|
|
23
|
-
.describe('Optional filter: only return nodes of these kinds.'),
|
|
24
|
-
domain: z.string().optional().describe('Filter to a single business domain.'),
|
|
25
|
-
limit: z.number().int().min(1).max(50).optional().describe('Max hits (default 10).'),
|
|
26
|
-
};
|
|
13
|
+
import { zodInputShapeForTool } from '../tool-schema.js';
|
|
14
|
+
export const kgSearchInput = zodInputShapeForTool('kg_search');
|
|
27
15
|
export async function kgSearch(ctx, args) {
|
|
28
16
|
const path = defaultKgPath(ctx.projectRoot);
|
|
29
17
|
const refreshError = await reindexProject(ctx.projectRoot, { kgPath: path })
|
|
@@ -85,12 +73,7 @@ export async function kgSearch(ctx, args) {
|
|
|
85
73
|
kg.close();
|
|
86
74
|
}
|
|
87
75
|
}
|
|
88
|
-
export const inspectMetadataContextInput =
|
|
89
|
-
question: z.string().describe('User question to ground in the local SQLite metadata catalog.'),
|
|
90
|
-
focusObjectKey: z.string().optional().describe('Optional object key, such as dql:block:Revenue or semantic:metric:revenue.'),
|
|
91
|
-
objectTypes: z.array(z.string()).optional().describe('Optional metadata object type filter.'),
|
|
92
|
-
limit: z.number().int().min(1).max(160).optional().describe('Maximum selected objects in the context pack.'),
|
|
93
|
-
};
|
|
76
|
+
export const inspectMetadataContextInput = zodInputShapeForTool('inspect_metadata_context');
|
|
94
77
|
export async function inspectMetadataContext(ctx, args) {
|
|
95
78
|
const refresh = await ensureMetadataCatalogFresh(ctx.projectRoot)
|
|
96
79
|
.catch((err) => ({
|
|
@@ -109,7 +92,8 @@ export async function inspectMetadataContext(ctx, args) {
|
|
|
109
92
|
question: args.question,
|
|
110
93
|
focusObjectKey: args.focusObjectKey,
|
|
111
94
|
objectTypes: args.objectTypes,
|
|
112
|
-
limit: args.limit,
|
|
95
|
+
limit: args.limit ?? (args.strictness === 'exploratory' ? 160 : undefined),
|
|
96
|
+
strictness: args.strictness,
|
|
113
97
|
});
|
|
114
98
|
return {
|
|
115
99
|
catalog: {
|
|
@@ -122,14 +106,7 @@ export async function inspectMetadataContext(ctx, args) {
|
|
|
122
106
|
contextPack,
|
|
123
107
|
};
|
|
124
108
|
}
|
|
125
|
-
export const feedbackRecordInput =
|
|
126
|
-
user: z.string().describe('User who submitted the feedback.'),
|
|
127
|
-
question: z.string().describe('Original question.'),
|
|
128
|
-
answerKind: z.enum(['certified', 'uncertified']).describe('How the answer was classified.'),
|
|
129
|
-
blockId: z.string().optional().describe('Block id the answer was anchored to (if any).'),
|
|
130
|
-
rating: z.enum(['up', 'down']).describe('Thumbs up or down.'),
|
|
131
|
-
comment: z.string().optional().describe('Optional free-text rationale.'),
|
|
132
|
-
};
|
|
109
|
+
export const feedbackRecordInput = zodInputShapeForTool('feedback_record');
|
|
133
110
|
export function feedbackRecord(ctx, args) {
|
|
134
111
|
const path = defaultKgPath(ctx.projectRoot);
|
|
135
112
|
if (!existsSync(path)) {
|
package/dist/tools/kg.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kg.js","sourceRoot":"","sources":["../../src/tools/kg.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"kg.js","sourceRoot":"","sources":["../../src/tools/kg.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,12 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
1
|
import type { DQLContext } from '../context.js';
|
|
3
|
-
export declare const lineageImpactInput:
|
|
4
|
-
focus: z.ZodString;
|
|
5
|
-
upstreamDepth: z.ZodOptional<z.ZodNumber>;
|
|
6
|
-
downstreamDepth: z.ZodOptional<z.ZodNumber>;
|
|
7
|
-
paths: z.ZodOptional<z.ZodBoolean>;
|
|
8
|
-
recert: z.ZodOptional<z.ZodBoolean>;
|
|
9
|
-
nonSemantic: z.ZodOptional<z.ZodBoolean>;
|
|
10
|
-
};
|
|
2
|
+
export declare const lineageImpactInput: Record<string, import("zod").ZodTypeAny>;
|
|
11
3
|
export declare function lineageImpact(ctx: DQLContext, args: {
|
|
12
4
|
focus: string;
|
|
13
5
|
upstreamDepth?: number;
|
|
14
6
|
downstreamDepth?: number;
|
|
7
|
+
nodeLimit?: number;
|
|
8
|
+
edgeLimit?: number;
|
|
9
|
+
pathLimit?: number;
|
|
15
10
|
paths?: boolean;
|
|
16
11
|
recert?: boolean;
|
|
17
12
|
nonSemantic?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lineage-impact.d.ts","sourceRoot":"","sources":["../../src/tools/lineage-impact.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lineage-impact.d.ts","sourceRoot":"","sources":["../../src/tools/lineage-impact.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAQhD,eAAO,MAAM,kBAAkB,0CAAyC,CAAC;AAEzE,wBAAgB,aAAa,CAC3B,GAAG,EAAE,UAAU,EACf,IAAI,EAAE;IACJ,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,2BAuGF"}
|
|
@@ -1,25 +1,10 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
1
|
import { queryLineage, queryCompleteLineagePaths, computeImpact, } from '@duckcodeailabs/dql-core';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
.optional()
|
|
10
|
-
.describe('When true, include full source→leaf paths (slower on large graphs).'),
|
|
11
|
-
recert: z
|
|
12
|
-
.boolean()
|
|
13
|
-
.optional()
|
|
14
|
-
.describe('When true, treat `focus` as a changed block and return the re-cert impact: ' +
|
|
15
|
-
'full transitive downstream, invalidated cross-domain edges, domainTrust delta, ' +
|
|
16
|
-
'and the certified artifacts that require re-certification.'),
|
|
17
|
-
nonSemantic: z
|
|
18
|
-
.boolean()
|
|
19
|
-
.optional()
|
|
20
|
-
.describe('When true with `recert`, treats the change as non-semantic (description/comment/tag only) ' +
|
|
21
|
-
'so no re-cert is required. Default false (conservative: assume semantic).'),
|
|
22
|
-
};
|
|
2
|
+
import { zodInputShapeForTool } from '../tool-schema.js';
|
|
3
|
+
const DEFAULT_LINEAGE_NODE_LIMIT = 80;
|
|
4
|
+
const DEFAULT_LINEAGE_EDGE_LIMIT = 120;
|
|
5
|
+
const DEFAULT_LINEAGE_PATH_LIMIT = 20;
|
|
6
|
+
const DEFAULT_IMPACT_ITEM_LIMIT = 50;
|
|
7
|
+
export const lineageImpactInput = zodInputShapeForTool('lineage_impact');
|
|
23
8
|
export function lineageImpact(ctx, args) {
|
|
24
9
|
const graph = ctx.lineageGraph;
|
|
25
10
|
const result = queryLineage(graph, {
|
|
@@ -30,42 +15,89 @@ export function lineageImpact(ctx, args) {
|
|
|
30
15
|
if (!result.focalNode) {
|
|
31
16
|
return { error: `No node matches "${args.focus}".` };
|
|
32
17
|
}
|
|
18
|
+
const nodeLimit = boundedLimit(args.nodeLimit, DEFAULT_LINEAGE_NODE_LIMIT, 1, 500);
|
|
19
|
+
const edgeLimit = boundedLimit(args.edgeLimit, DEFAULT_LINEAGE_EDGE_LIMIT, 1, 1000);
|
|
20
|
+
const pathLimit = boundedLimit(args.pathLimit, DEFAULT_LINEAGE_PATH_LIMIT, 1, 100);
|
|
21
|
+
const nodes = boundArray(result.graph.nodes, nodeLimit);
|
|
22
|
+
const edges = boundArray(result.graph.edges, edgeLimit);
|
|
33
23
|
const response = {
|
|
34
24
|
focalNode: result.focalNode,
|
|
35
25
|
nodeCount: result.graph.nodes.length,
|
|
36
26
|
edgeCount: result.graph.edges.length,
|
|
37
|
-
|
|
38
|
-
|
|
27
|
+
returnedNodeCount: nodes.items.length,
|
|
28
|
+
returnedEdgeCount: edges.items.length,
|
|
29
|
+
nodes: nodes.items,
|
|
30
|
+
edges: edges.items,
|
|
31
|
+
summary: summarizeLineageGraph(result.graph.nodes),
|
|
32
|
+
truncation: {
|
|
33
|
+
nodeLimit,
|
|
34
|
+
edgeLimit,
|
|
35
|
+
nodesTruncated: nodes.truncated,
|
|
36
|
+
edgesTruncated: edges.truncated,
|
|
37
|
+
omittedNodeCount: nodes.omitted,
|
|
38
|
+
omittedEdgeCount: edges.omitted,
|
|
39
|
+
},
|
|
39
40
|
};
|
|
40
41
|
if (args.paths) {
|
|
41
|
-
const paths = queryCompleteLineagePaths(graph, result.focalNode.id);
|
|
42
|
+
const paths = queryCompleteLineagePaths(graph, result.focalNode.id, { maxPaths: pathLimit });
|
|
42
43
|
if (paths) {
|
|
43
|
-
|
|
44
|
-
|
|
44
|
+
const upstreamPaths = boundArray(paths.upstreamPaths, pathLimit);
|
|
45
|
+
const downstreamPaths = boundArray(paths.downstreamPaths, pathLimit);
|
|
46
|
+
response.upstreamPathCount = paths.upstreamPaths.length;
|
|
47
|
+
response.downstreamPathCount = paths.downstreamPaths.length;
|
|
48
|
+
response.upstreamPaths = upstreamPaths.items.map(formatPath);
|
|
49
|
+
response.downstreamPaths = downstreamPaths.items.map(formatPath);
|
|
45
50
|
response.layerSummary = paths.layerSummary;
|
|
51
|
+
response.pathTruncation = {
|
|
52
|
+
pathLimit,
|
|
53
|
+
upstreamPathsTruncated: upstreamPaths.truncated,
|
|
54
|
+
downstreamPathsTruncated: downstreamPaths.truncated,
|
|
55
|
+
omittedUpstreamPathCount: upstreamPaths.omitted,
|
|
56
|
+
omittedDownstreamPathCount: downstreamPaths.omitted,
|
|
57
|
+
};
|
|
46
58
|
}
|
|
47
59
|
}
|
|
48
60
|
// Re-cert impact: treat the focal block as changed and compute the
|
|
49
61
|
// downstream invalidation + required re-cert list. Mirrors the
|
|
50
62
|
// `dql diff --impact` CLI gate, surfaced structurally for agents.
|
|
51
63
|
if (args.recert) {
|
|
52
|
-
const blockName = result.focalNode.type === 'block'
|
|
53
|
-
? result.focalNode.name
|
|
54
|
-
: result.focalNode.id.replace(/^block:/, '');
|
|
55
64
|
const changed = {
|
|
56
|
-
name:
|
|
65
|
+
name: result.focalNode.name,
|
|
66
|
+
nodeId: result.focalNode.id,
|
|
57
67
|
verdict: args.nonSemantic ? 'non-semantic' : 'semantic',
|
|
58
68
|
changedFields: [],
|
|
59
69
|
structural: false,
|
|
60
70
|
};
|
|
61
71
|
const impact = computeImpact(graph, [changed]);
|
|
72
|
+
const changedBlocks = boundArray(impact.changedBlocks, DEFAULT_IMPACT_ITEM_LIMIT);
|
|
73
|
+
const semanticChanges = boundArray(impact.semanticChanges, DEFAULT_IMPACT_ITEM_LIMIT);
|
|
74
|
+
const downstream = boundArray(impact.downstream, DEFAULT_IMPACT_ITEM_LIMIT);
|
|
75
|
+
const crossDomainImpacts = boundArray(impact.crossDomainImpacts, DEFAULT_IMPACT_ITEM_LIMIT);
|
|
76
|
+
const requiresRecert = boundArray(impact.requiresRecert, DEFAULT_IMPACT_ITEM_LIMIT);
|
|
77
|
+
const domainTrustDelta = boundArray(impact.domainTrustDelta, DEFAULT_IMPACT_ITEM_LIMIT);
|
|
78
|
+
response.impactSummary = {
|
|
79
|
+
changedBlockCount: impact.changedBlocks.length,
|
|
80
|
+
semanticChangeCount: impact.semanticChanges.length,
|
|
81
|
+
downstreamCount: impact.downstream.length,
|
|
82
|
+
crossDomainImpactCount: impact.crossDomainImpacts.length,
|
|
83
|
+
requiresRecertCount: impact.requiresRecert.length,
|
|
84
|
+
domainTrustDeltaCount: impact.domainTrustDelta.length,
|
|
85
|
+
hasCertifiedInvalidation: impact.hasCertifiedInvalidation,
|
|
86
|
+
itemLimit: DEFAULT_IMPACT_ITEM_LIMIT,
|
|
87
|
+
truncated: changedBlocks.truncated
|
|
88
|
+
|| semanticChanges.truncated
|
|
89
|
+
|| downstream.truncated
|
|
90
|
+
|| crossDomainImpacts.truncated
|
|
91
|
+
|| requiresRecert.truncated
|
|
92
|
+
|| domainTrustDelta.truncated,
|
|
93
|
+
};
|
|
62
94
|
response.impact = {
|
|
63
|
-
changedBlocks:
|
|
64
|
-
semanticChanges:
|
|
65
|
-
downstream:
|
|
66
|
-
crossDomainImpacts:
|
|
67
|
-
requiresRecert:
|
|
68
|
-
domainTrustDelta:
|
|
95
|
+
changedBlocks: changedBlocks.items,
|
|
96
|
+
semanticChanges: semanticChanges.items,
|
|
97
|
+
downstream: downstream.items,
|
|
98
|
+
crossDomainImpacts: crossDomainImpacts.items,
|
|
99
|
+
requiresRecert: requiresRecert.items,
|
|
100
|
+
domainTrustDelta: domainTrustDelta.items,
|
|
69
101
|
hasCertifiedInvalidation: impact.hasCertifiedInvalidation,
|
|
70
102
|
};
|
|
71
103
|
}
|
|
@@ -77,4 +109,27 @@ function formatPath(path) {
|
|
|
77
109
|
layers: path.layers,
|
|
78
110
|
};
|
|
79
111
|
}
|
|
112
|
+
function boundArray(items, limit) {
|
|
113
|
+
const bounded = items.slice(0, limit);
|
|
114
|
+
return {
|
|
115
|
+
items: bounded,
|
|
116
|
+
truncated: items.length > bounded.length,
|
|
117
|
+
omitted: Math.max(0, items.length - bounded.length),
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
function boundedLimit(value, fallback, min, max) {
|
|
121
|
+
if (typeof value !== 'number' || !Number.isFinite(value))
|
|
122
|
+
return fallback;
|
|
123
|
+
return Math.max(min, Math.min(max, Math.floor(value)));
|
|
124
|
+
}
|
|
125
|
+
function summarizeLineageGraph(nodes) {
|
|
126
|
+
const byType = {};
|
|
127
|
+
const byDomain = {};
|
|
128
|
+
for (const node of nodes) {
|
|
129
|
+
byType[node.type] = (byType[node.type] ?? 0) + 1;
|
|
130
|
+
if (node.domain)
|
|
131
|
+
byDomain[node.domain] = (byDomain[node.domain] ?? 0) + 1;
|
|
132
|
+
}
|
|
133
|
+
return { byType, byDomain };
|
|
134
|
+
}
|
|
80
135
|
//# sourceMappingURL=lineage-impact.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lineage-impact.js","sourceRoot":"","sources":["../../src/tools/lineage-impact.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"lineage-impact.js","sourceRoot":"","sources":["../../src/tools/lineage-impact.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
1
|
import type { DQLContext } from '../context.js';
|
|
3
|
-
export declare const listProposalsInput:
|
|
4
|
-
askedAtLeastTimes: z.ZodOptional<z.ZodNumber>;
|
|
5
|
-
since: z.ZodOptional<z.ZodString>;
|
|
6
|
-
};
|
|
2
|
+
export declare const listProposalsInput: Record<string, import("zod").ZodTypeAny>;
|
|
7
3
|
export interface ProposalSummary {
|
|
4
|
+
kind: 'block_draft' | 'semantic_metric_draft' | 'semantic_recertification';
|
|
5
|
+
artifactType: 'block' | 'metric' | 'dimension';
|
|
8
6
|
draftPath: string;
|
|
9
7
|
slug: string;
|
|
10
8
|
question: string;
|
|
@@ -15,8 +13,18 @@ export interface ProposalSummary {
|
|
|
15
13
|
proposedDomain: string;
|
|
16
14
|
proposedEntity: string;
|
|
17
15
|
upstreamRefs: string[];
|
|
16
|
+
sourceDqlArtifact?: ProposalSourceDqlArtifact;
|
|
17
|
+
status?: string;
|
|
18
18
|
certifyHint: string;
|
|
19
19
|
}
|
|
20
|
+
export interface ProposalSourceDqlArtifact {
|
|
21
|
+
kind?: string;
|
|
22
|
+
name?: string;
|
|
23
|
+
path?: string;
|
|
24
|
+
hash?: string;
|
|
25
|
+
metrics: string[];
|
|
26
|
+
dimensions: string[];
|
|
27
|
+
}
|
|
20
28
|
/**
|
|
21
29
|
* The OSS-side review queue for the Tier-2 promotion loop. Reads
|
|
22
30
|
* local draft queues from the project, parses Tier-2 proposal metadata fields
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-proposals.d.ts","sourceRoot":"","sources":["../../src/tools/list-proposals.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"list-proposals.d.ts","sourceRoot":"","sources":["../../src/tools/list-proposals.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAIhD,eAAO,MAAM,kBAAkB,0CAAyC,CAAC;AAEzE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,aAAa,GAAG,uBAAuB,GAAG,0BAA0B,CAAC;IAC3E,YAAY,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,CAAC,EAAE,yBAAyB,CAAC;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,UAAU,EACf,IAAI,GAAE;IAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GACxD;IAAE,SAAS,EAAE,eAAe,EAAE,CAAA;CAAE,CA8BlC"}
|