@duckcodeailabs/dql-cli 1.11.10 → 1.12.0
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/assets/dql-notebook/assets/{index-C8miSLDI.js → index-y-PjXsEj.js} +406 -383
- package/dist/assets/dql-notebook/index.html +1 -1
- package/dist/commands/certify.js +1 -1
- package/dist/commands/certify.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +102 -4
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +6 -13
- package/dist/commands/init.js.map +1 -1
- package/dist/git-contract.d.ts +18 -0
- package/dist/git-contract.d.ts.map +1 -0
- package/dist/git-contract.js +64 -0
- package/dist/git-contract.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/llm/providers/dql-agent-provider.d.ts.map +1 -1
- package/dist/llm/providers/dql-agent-provider.js +31 -15
- package/dist/llm/providers/dql-agent-provider.js.map +1 -1
- package/dist/llm/types.d.ts +2 -0
- package/dist/llm/types.d.ts.map +1 -1
- package/dist/local-runtime.d.ts +5 -1
- package/dist/local-runtime.d.ts.map +1 -1
- package/dist/local-runtime.js +755 -258
- package/dist/local-runtime.js.map +1 -1
- package/dist/package.json +10 -10
- package/dist/warehouse-metadata.d.ts +60 -0
- package/dist/warehouse-metadata.d.ts.map +1 -0
- package/dist/warehouse-metadata.js +390 -0
- package/dist/warehouse-metadata.js.map +1 -0
- package/package.json +10 -10
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@duckcodeailabs/dql-cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.12.0",
|
|
4
4
|
"description": "Public CLI for parsing, formatting, testing, and certifying DQL blocks",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -25,15 +25,15 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@anthropic-ai/sdk": "^0.104.2",
|
|
28
|
-
"@duckcodeailabs/dql-agent": "^1.
|
|
29
|
-
"@duckcodeailabs/dql-compiler": "^1.
|
|
30
|
-
"@duckcodeailabs/dql-connectors": "^1.
|
|
31
|
-
"@duckcodeailabs/dql-core": "^1.
|
|
32
|
-
"@duckcodeailabs/dql-governance": "^1.
|
|
33
|
-
"@duckcodeailabs/dql-mcp": "^1.
|
|
34
|
-
"@duckcodeailabs/dql-notebook": "^1.
|
|
35
|
-
"@duckcodeailabs/dql-project": "^1.
|
|
36
|
-
"@duckcodeailabs/dql-slack": "^1.
|
|
28
|
+
"@duckcodeailabs/dql-agent": "^1.12.0",
|
|
29
|
+
"@duckcodeailabs/dql-compiler": "^1.12.0",
|
|
30
|
+
"@duckcodeailabs/dql-connectors": "^1.12.0",
|
|
31
|
+
"@duckcodeailabs/dql-core": "^1.12.0",
|
|
32
|
+
"@duckcodeailabs/dql-governance": "^1.12.0",
|
|
33
|
+
"@duckcodeailabs/dql-mcp": "^1.12.0",
|
|
34
|
+
"@duckcodeailabs/dql-notebook": "^1.12.0",
|
|
35
|
+
"@duckcodeailabs/dql-project": "^1.12.0",
|
|
36
|
+
"@duckcodeailabs/dql-slack": "^1.12.0",
|
|
37
37
|
"isomorphic-git": "^1.27.0",
|
|
38
38
|
"js-yaml": "^4.1.0",
|
|
39
39
|
"node-cron": "^3.0.3",
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { type RuntimeSchemaObservedTarget, type RuntimeSchemaScope, type RuntimeSchemaSnapshot } from '@duckcodeailabs/dql-agent';
|
|
2
|
+
import type { ConnectionConfig, QueryExecutor } from '@duckcodeailabs/dql-connectors';
|
|
3
|
+
export type ConnectionMetadataScopeMode = 'dbt_relations' | 'selected_scopes' | 'dbt_plus_selected';
|
|
4
|
+
export interface ConnectionMetadataScopeV1 {
|
|
5
|
+
version: 1;
|
|
6
|
+
connectionId: string;
|
|
7
|
+
driver: string;
|
|
8
|
+
mode: ConnectionMetadataScopeMode;
|
|
9
|
+
/** Effective union used for status and provenance. */
|
|
10
|
+
scopes: RuntimeSchemaScope[];
|
|
11
|
+
/** User-selected scopes, kept distinct so dbt_plus_selected stays exact for dbt relations. */
|
|
12
|
+
selectedScopes: RuntimeSchemaScope[];
|
|
13
|
+
/** Exact fully-qualified dbt relations used by the recommended default mode. */
|
|
14
|
+
relations: string[];
|
|
15
|
+
dbtFingerprint?: string;
|
|
16
|
+
scopeFingerprint: string;
|
|
17
|
+
}
|
|
18
|
+
export interface ConnectionMetadataScopeInput {
|
|
19
|
+
mode?: ConnectionMetadataScopeMode;
|
|
20
|
+
scopes?: Array<{
|
|
21
|
+
catalogOrDatabase?: string;
|
|
22
|
+
schemas?: string[];
|
|
23
|
+
}>;
|
|
24
|
+
relations?: string[];
|
|
25
|
+
dbtFingerprint?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface WarehouseMetadataSyncResult {
|
|
28
|
+
scope: ConnectionMetadataScopeV1;
|
|
29
|
+
snapshot: RuntimeSchemaSnapshot;
|
|
30
|
+
}
|
|
31
|
+
export interface WarehouseMetadataStatus {
|
|
32
|
+
state: 'missing' | 'ready' | 'stale';
|
|
33
|
+
scopeFingerprint?: string;
|
|
34
|
+
generationId?: string;
|
|
35
|
+
capturedAt?: string;
|
|
36
|
+
relationCount: number;
|
|
37
|
+
columnCount: number;
|
|
38
|
+
queryCount?: number;
|
|
39
|
+
durationMs?: number;
|
|
40
|
+
truncated?: boolean;
|
|
41
|
+
source?: string;
|
|
42
|
+
scopes: RuntimeSchemaScope[];
|
|
43
|
+
observedTarget?: RuntimeSchemaObservedTarget;
|
|
44
|
+
}
|
|
45
|
+
export declare function normalizeConnectionMetadataScope(connectionId: string, connection: ConnectionConfig, input: ConnectionMetadataScopeInput | undefined, defaults?: {
|
|
46
|
+
relations?: string[];
|
|
47
|
+
dbtFingerprint?: string;
|
|
48
|
+
}): ConnectionMetadataScopeV1;
|
|
49
|
+
export declare function syncWarehouseMetadata(input: {
|
|
50
|
+
projectRoot: string;
|
|
51
|
+
executor: QueryExecutor;
|
|
52
|
+
connection: ConnectionConfig;
|
|
53
|
+
scope: ConnectionMetadataScopeV1;
|
|
54
|
+
}): Promise<WarehouseMetadataSyncResult>;
|
|
55
|
+
export declare function warehouseMetadataStatus(projectRoot: string, expectedScopeFingerprint?: string): WarehouseMetadataStatus;
|
|
56
|
+
export declare function buildWarehouseMetadataQueries(connection: ConnectionConfig, scope: ConnectionMetadataScopeV1): Array<{
|
|
57
|
+
catalogOrDatabase: string;
|
|
58
|
+
sql: string;
|
|
59
|
+
}>;
|
|
60
|
+
//# sourceMappingURL=warehouse-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warehouse-metadata.d.ts","sourceRoot":"","sources":["../src/warehouse-metadata.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,2BAA2B,EAChC,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAE3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAGtF,MAAM,MAAM,2BAA2B,GAAG,eAAe,GAAG,iBAAiB,GAAG,mBAAmB,CAAC;AAEpG,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,CAAC,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,2BAA2B,CAAC;IAClC,sDAAsD;IACtD,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,8FAA8F;IAC9F,cAAc,EAAE,kBAAkB,EAAE,CAAC;IACrC,gFAAgF;IAChF,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,CAAC,EAAE,2BAA2B,CAAC;IACnC,MAAM,CAAC,EAAE,KAAK,CAAC;QACb,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC,CAAC;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,yBAAyB,CAAC;IACjC,QAAQ,EAAE,qBAAqB,CAAC;CACjC;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,cAAc,CAAC,EAAE,2BAA2B,CAAC;CAC9C;AAWD,wBAAgB,gCAAgC,CAC9C,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,gBAAgB,EAC5B,KAAK,EAAE,4BAA4B,GAAG,SAAS,EAC/C,QAAQ,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/D,yBAAyB,CA4D3B;AAED,wBAAsB,qBAAqB,CAAC,KAAK,EAAE;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;IACxB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,KAAK,EAAE,yBAAyB,CAAC;CAClC,GAAG,OAAO,CAAC,2BAA2B,CAAC,CA2EvC;AAED,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,wBAAwB,CAAC,EAAE,MAAM,GAChC,uBAAuB,CAuBzB;AAED,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,gBAAgB,EAC5B,KAAK,EAAE,yBAAyB,GAC/B,KAAK,CAAC;IAAE,iBAAiB,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAmCnD"}
|
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { latestRuntimeSchemaSnapshotForProject, recordRuntimeSchemaSnapshot, } from '@duckcodeailabs/dql-agent';
|
|
3
|
+
import { observeWarehouseTargetIdentity } from './semantic-execution/connection-identity.js';
|
|
4
|
+
const MAX_SCOPES = 20;
|
|
5
|
+
const MAX_SCHEMAS = 100;
|
|
6
|
+
const MAX_RELATIONS = 5_000;
|
|
7
|
+
const MAX_TABLES = 10_000;
|
|
8
|
+
const MAX_COLUMNS_PER_TABLE = 160;
|
|
9
|
+
const MAX_METADATA_ROWS_PER_QUERY = 50_000;
|
|
10
|
+
const MAX_METADATA_BYTES_PER_QUERY = 24 * 1024 * 1024;
|
|
11
|
+
const METADATA_QUERY_DEADLINE_MS = 60_000;
|
|
12
|
+
export function normalizeConnectionMetadataScope(connectionId, connection, input, defaults = {}) {
|
|
13
|
+
const defaultDatabase = cleanIdentifier(connection.catalog ?? connection.database) ?? defaultCatalogForDriver(connection.driver);
|
|
14
|
+
const defaultSchema = cleanIdentifier(connection.schema) ?? defaultSchemaForDriver(connection.driver);
|
|
15
|
+
const mode = input?.mode
|
|
16
|
+
?? ((defaults.relations?.length ?? input?.relations?.length ?? 0) > 0
|
|
17
|
+
? 'dbt_relations'
|
|
18
|
+
: 'selected_scopes');
|
|
19
|
+
const currentDbtRelations = (defaults.relations?.length ?? 0) > 0
|
|
20
|
+
? defaults.relations
|
|
21
|
+
: input?.relations ?? [];
|
|
22
|
+
const relations = uniqueStrings(mode === 'selected_scopes' ? [] : currentDbtRelations)
|
|
23
|
+
.map(normalizeRelation)
|
|
24
|
+
.filter((value) => Boolean(value))
|
|
25
|
+
.slice(0, MAX_RELATIONS);
|
|
26
|
+
const explicitScopes = normalizeScopes(input?.scopes ?? []);
|
|
27
|
+
const relationScopes = scopesFromRelations(relations, defaultDatabase, defaultSchema);
|
|
28
|
+
const fallbackScopes = defaultDatabase && defaultSchema
|
|
29
|
+
? [{ catalogOrDatabase: defaultDatabase, schemas: [defaultSchema] }]
|
|
30
|
+
: [];
|
|
31
|
+
const scopes = normalizeScopes(mode === 'dbt_relations'
|
|
32
|
+
? relationScopes.length > 0 ? relationScopes : fallbackScopes
|
|
33
|
+
: mode === 'dbt_plus_selected'
|
|
34
|
+
? relationScopes.length > 0 || explicitScopes.length > 0
|
|
35
|
+
? [...relationScopes, ...explicitScopes]
|
|
36
|
+
: fallbackScopes
|
|
37
|
+
: explicitScopes.length > 0 ? explicitScopes : fallbackScopes);
|
|
38
|
+
if (scopes.length === 0) {
|
|
39
|
+
throw new Error(`Metadata scope for ${connection.driver} requires an explicit database/catalog and schema, `
|
|
40
|
+
+ 'or at least one fully qualified dbt relation.');
|
|
41
|
+
}
|
|
42
|
+
const dbtFingerprint = defaults.dbtFingerprint ?? input?.dbtFingerprint;
|
|
43
|
+
const identity = redactedConnectionIdentity(connection);
|
|
44
|
+
const scopeFingerprint = sha256(stableSerialize({
|
|
45
|
+
version: 1,
|
|
46
|
+
connectionId,
|
|
47
|
+
driver: connection.driver,
|
|
48
|
+
identity,
|
|
49
|
+
mode,
|
|
50
|
+
scopes,
|
|
51
|
+
selectedScopes: explicitScopes,
|
|
52
|
+
relations,
|
|
53
|
+
dbtFingerprint,
|
|
54
|
+
}));
|
|
55
|
+
return {
|
|
56
|
+
version: 1,
|
|
57
|
+
connectionId,
|
|
58
|
+
driver: connection.driver,
|
|
59
|
+
mode,
|
|
60
|
+
scopes,
|
|
61
|
+
selectedScopes: explicitScopes,
|
|
62
|
+
relations,
|
|
63
|
+
dbtFingerprint,
|
|
64
|
+
scopeFingerprint,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export async function syncWarehouseMetadata(input) {
|
|
68
|
+
const startedAt = Date.now();
|
|
69
|
+
const observedIdentity = await observeWarehouseTargetIdentity(input.executor, input.connection);
|
|
70
|
+
assertObservedScopeCompatible(input.connection, observedIdentity.redactedContext);
|
|
71
|
+
const observedTarget = {
|
|
72
|
+
driver: input.connection.driver,
|
|
73
|
+
accountOrWorkspace: observedIdentity.redactedContext.account,
|
|
74
|
+
role: observedIdentity.redactedContext.role,
|
|
75
|
+
warehouse: observedIdentity.redactedContext.warehouse,
|
|
76
|
+
defaultCatalogOrDatabase: observedIdentity.redactedContext.catalog ?? observedIdentity.redactedContext.database,
|
|
77
|
+
defaultSchema: observedIdentity.redactedContext.schema,
|
|
78
|
+
};
|
|
79
|
+
const queries = buildWarehouseMetadataQueries(input.connection, input.scope);
|
|
80
|
+
const tables = new Map();
|
|
81
|
+
let queryCount = 0;
|
|
82
|
+
let truncated = false;
|
|
83
|
+
for (const query of queries) {
|
|
84
|
+
const result = await input.executor.executePositional(query.sql, [], input.connection, {
|
|
85
|
+
maxRows: MAX_METADATA_ROWS_PER_QUERY,
|
|
86
|
+
maxBytes: MAX_METADATA_BYTES_PER_QUERY,
|
|
87
|
+
batchSize: 1_000,
|
|
88
|
+
deadlineMs: METADATA_QUERY_DEADLINE_MS,
|
|
89
|
+
});
|
|
90
|
+
queryCount += 1;
|
|
91
|
+
truncated ||= result.truncated === true || result.rows.length >= MAX_METADATA_ROWS_PER_QUERY;
|
|
92
|
+
for (const row of result.rows) {
|
|
93
|
+
addMetadataRow(tables, row, query.catalogOrDatabase, input.connection.driver);
|
|
94
|
+
if (tables.size >= MAX_TABLES) {
|
|
95
|
+
truncated = true;
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (tables.size >= MAX_TABLES)
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
const capturedAt = new Date().toISOString();
|
|
103
|
+
const normalizedTables = Array.from(tables.values())
|
|
104
|
+
.sort((left, right) => left.relation.localeCompare(right.relation))
|
|
105
|
+
.slice(0, MAX_TABLES);
|
|
106
|
+
if (truncated) {
|
|
107
|
+
throw new Error('Warehouse metadata exceeded the bounded synchronization limits. '
|
|
108
|
+
+ 'Narrow the selected databases/schemas before retrying; the previous active generation was preserved.');
|
|
109
|
+
}
|
|
110
|
+
if (normalizedTables.length === 0) {
|
|
111
|
+
throw new Error('Warehouse metadata synchronization returned no authorized relations. '
|
|
112
|
+
+ 'Verify the selected scope and warehouse permissions; the previous active generation was preserved.');
|
|
113
|
+
}
|
|
114
|
+
const generationId = `warehouse_${sha256(stableSerialize({
|
|
115
|
+
scopeFingerprint: input.scope.scopeFingerprint,
|
|
116
|
+
observedIdentity: observedIdentity.identityFingerprint,
|
|
117
|
+
tables: normalizedTables,
|
|
118
|
+
})).slice(0, 32)}`;
|
|
119
|
+
const snapshot = recordRuntimeSchemaSnapshot(input.projectRoot, {
|
|
120
|
+
version: 1,
|
|
121
|
+
generationId,
|
|
122
|
+
scopeFingerprint: input.scope.scopeFingerprint,
|
|
123
|
+
connectionId: input.scope.connectionId,
|
|
124
|
+
status: 'ready',
|
|
125
|
+
source: 'activated warehouse metadata generation',
|
|
126
|
+
capturedAt,
|
|
127
|
+
observedTarget,
|
|
128
|
+
scopes: input.scope.scopes,
|
|
129
|
+
queryCount,
|
|
130
|
+
durationMs: Date.now() - startedAt,
|
|
131
|
+
tables: normalizedTables,
|
|
132
|
+
});
|
|
133
|
+
return { scope: input.scope, snapshot };
|
|
134
|
+
}
|
|
135
|
+
export function warehouseMetadataStatus(projectRoot, expectedScopeFingerprint) {
|
|
136
|
+
const snapshot = latestRuntimeSchemaSnapshotForProject(projectRoot);
|
|
137
|
+
if (!snapshot) {
|
|
138
|
+
return { state: 'missing', relationCount: 0, columnCount: 0, scopes: [] };
|
|
139
|
+
}
|
|
140
|
+
const stale = Boolean(expectedScopeFingerprint
|
|
141
|
+
&& expectedScopeFingerprint !== snapshot.scopeFingerprint);
|
|
142
|
+
return {
|
|
143
|
+
state: stale || snapshot.status === 'stale' ? 'stale' : 'ready',
|
|
144
|
+
scopeFingerprint: snapshot.scopeFingerprint,
|
|
145
|
+
generationId: snapshot.generationId,
|
|
146
|
+
capturedAt: snapshot.capturedAt,
|
|
147
|
+
relationCount: snapshot.tables.length,
|
|
148
|
+
columnCount: snapshot.tables.reduce((count, table) => count + table.columns.length, 0),
|
|
149
|
+
queryCount: snapshot.queryCount,
|
|
150
|
+
durationMs: snapshot.durationMs,
|
|
151
|
+
truncated: snapshot.truncated,
|
|
152
|
+
source: snapshot.source,
|
|
153
|
+
scopes: snapshot.scopes ?? [],
|
|
154
|
+
observedTarget: snapshot.observedTarget,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
export function buildWarehouseMetadataQueries(connection, scope) {
|
|
158
|
+
const relationsByScope = groupRelations(scope.relations, connection);
|
|
159
|
+
const selectedSchemasByScope = new Map(scope.selectedScopes.map((selected) => [
|
|
160
|
+
normalizeIdentifierKey(selected.catalogOrDatabase),
|
|
161
|
+
selected.schemas,
|
|
162
|
+
]));
|
|
163
|
+
return scope.scopes.flatMap((selected) => {
|
|
164
|
+
const catalogOrDatabase = selected.catalogOrDatabase;
|
|
165
|
+
const exactRelations = relationsByScope.get(normalizeIdentifierKey(catalogOrDatabase)) ?? [];
|
|
166
|
+
const exactPredicate = scope.mode !== 'selected_scopes' && exactRelations.length > 0
|
|
167
|
+
? buildExactRelationPredicate(exactRelations)
|
|
168
|
+
: undefined;
|
|
169
|
+
const schemaPredicate = buildSchemaPredicate(scope.mode === 'dbt_plus_selected'
|
|
170
|
+
? selectedSchemasByScope.get(normalizeIdentifierKey(catalogOrDatabase)) ?? []
|
|
171
|
+
: selected.schemas);
|
|
172
|
+
const predicate = scope.mode === 'dbt_plus_selected' && exactPredicate && schemaPredicate
|
|
173
|
+
? `(${exactPredicate} OR ${schemaPredicate})`
|
|
174
|
+
: exactPredicate ?? schemaPredicate;
|
|
175
|
+
if (!predicate)
|
|
176
|
+
return [];
|
|
177
|
+
return [{
|
|
178
|
+
catalogOrDatabase,
|
|
179
|
+
sql: [
|
|
180
|
+
'SELECT table_catalog, table_schema, table_name, column_name, data_type, ordinal_position',
|
|
181
|
+
`FROM ${informationSchemaColumnsRelation(connection.driver, catalogOrDatabase)}`,
|
|
182
|
+
`WHERE ${predicate}`,
|
|
183
|
+
` AND UPPER(table_schema) NOT IN ('INFORMATION_SCHEMA', 'PG_CATALOG')`,
|
|
184
|
+
'ORDER BY table_schema, table_name, ordinal_position',
|
|
185
|
+
`LIMIT ${MAX_METADATA_ROWS_PER_QUERY}`,
|
|
186
|
+
].join('\n'),
|
|
187
|
+
}];
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
function addMetadataRow(tables, row, selectedCatalogOrDatabase, driver) {
|
|
191
|
+
const catalog = rowString(row, 'table_catalog') ?? selectedCatalogOrDatabase;
|
|
192
|
+
const schema = rowString(row, 'table_schema');
|
|
193
|
+
const tableName = rowString(row, 'table_name');
|
|
194
|
+
const columnName = rowString(row, 'column_name');
|
|
195
|
+
if (!schema || !tableName || !columnName)
|
|
196
|
+
return;
|
|
197
|
+
const includeCatalog = driver === 'snowflake' || driver === 'databricks' || driver === 'bigquery';
|
|
198
|
+
const relation = includeCatalog
|
|
199
|
+
? [catalog, schema, tableName].filter(Boolean).join('.')
|
|
200
|
+
: [schema, tableName].filter(Boolean).join('.');
|
|
201
|
+
const key = normalizeIdentifierKey(relation);
|
|
202
|
+
const current = tables.get(key) ?? {
|
|
203
|
+
relation,
|
|
204
|
+
catalogOrDatabase: catalog,
|
|
205
|
+
schema,
|
|
206
|
+
name: tableName,
|
|
207
|
+
source: 'activated warehouse metadata generation',
|
|
208
|
+
columns: [],
|
|
209
|
+
};
|
|
210
|
+
if (current.columns.length < MAX_COLUMNS_PER_TABLE
|
|
211
|
+
&& !current.columns.some((column) => normalizeIdentifierKey(column.name) === normalizeIdentifierKey(columnName))) {
|
|
212
|
+
current.columns.push({
|
|
213
|
+
name: columnName,
|
|
214
|
+
type: rowString(row, 'data_type'),
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
tables.set(key, current);
|
|
218
|
+
}
|
|
219
|
+
function assertObservedScopeCompatible(connection, observed) {
|
|
220
|
+
const configuredCatalog = cleanIdentifier(connection.catalog ?? connection.database);
|
|
221
|
+
const observedCatalog = cleanIdentifier(observed.catalog ?? observed.database);
|
|
222
|
+
if (configuredCatalog && observedCatalog && normalizeIdentifierKey(configuredCatalog) !== normalizeIdentifierKey(observedCatalog)) {
|
|
223
|
+
throw new Error(`Configured database/catalog "${configuredCatalog}" does not match the active target "${observedCatalog}". `
|
|
224
|
+
+ 'DQL did not synchronize metadata from a different target.');
|
|
225
|
+
}
|
|
226
|
+
const configuredSchema = cleanIdentifier(connection.schema);
|
|
227
|
+
const observedSchema = cleanIdentifier(observed.schema);
|
|
228
|
+
if (configuredSchema && observedSchema && normalizeIdentifierKey(configuredSchema) !== normalizeIdentifierKey(observedSchema)) {
|
|
229
|
+
throw new Error(`Configured schema "${configuredSchema}" does not match the active target "${observedSchema}". `
|
|
230
|
+
+ 'DQL did not synchronize metadata from a different target.');
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
function normalizeScopes(values) {
|
|
234
|
+
const grouped = new Map();
|
|
235
|
+
for (const value of values.slice(0, MAX_SCOPES)) {
|
|
236
|
+
const catalogOrDatabase = cleanIdentifier(value.catalogOrDatabase);
|
|
237
|
+
if (!catalogOrDatabase)
|
|
238
|
+
continue;
|
|
239
|
+
const key = normalizeIdentifierKey(catalogOrDatabase);
|
|
240
|
+
const current = grouped.get(key) ?? { catalogOrDatabase, schemas: new Set() };
|
|
241
|
+
for (const schema of value.schemas ?? []) {
|
|
242
|
+
const clean = cleanIdentifier(schema);
|
|
243
|
+
if (clean && current.schemas.size < MAX_SCHEMAS)
|
|
244
|
+
current.schemas.add(clean);
|
|
245
|
+
}
|
|
246
|
+
grouped.set(key, current);
|
|
247
|
+
}
|
|
248
|
+
return Array.from(grouped.values())
|
|
249
|
+
.map((entry) => ({
|
|
250
|
+
catalogOrDatabase: entry.catalogOrDatabase,
|
|
251
|
+
schemas: Array.from(entry.schemas).sort((left, right) => left.localeCompare(right)),
|
|
252
|
+
}))
|
|
253
|
+
.filter((entry) => entry.schemas.length > 0)
|
|
254
|
+
.sort((left, right) => left.catalogOrDatabase.localeCompare(right.catalogOrDatabase));
|
|
255
|
+
}
|
|
256
|
+
function scopesFromRelations(relations, fallbackDatabase, fallbackSchema) {
|
|
257
|
+
return normalizeScopes(relations.map((relation) => {
|
|
258
|
+
const parts = relationParts(relation);
|
|
259
|
+
return {
|
|
260
|
+
catalogOrDatabase: parts.catalogOrDatabase ?? fallbackDatabase,
|
|
261
|
+
schemas: [parts.schema ?? fallbackSchema].filter((value) => Boolean(value)),
|
|
262
|
+
};
|
|
263
|
+
}));
|
|
264
|
+
}
|
|
265
|
+
function groupRelations(relations, connection) {
|
|
266
|
+
const fallbackDatabase = cleanIdentifier(connection.catalog ?? connection.database);
|
|
267
|
+
const fallbackSchema = cleanIdentifier(connection.schema);
|
|
268
|
+
const grouped = new Map();
|
|
269
|
+
for (const relation of relations) {
|
|
270
|
+
const parts = relationParts(relation);
|
|
271
|
+
const catalog = parts.catalogOrDatabase ?? fallbackDatabase;
|
|
272
|
+
const schema = parts.schema ?? fallbackSchema;
|
|
273
|
+
if (!catalog || !schema || !parts.table)
|
|
274
|
+
continue;
|
|
275
|
+
const key = normalizeIdentifierKey(catalog);
|
|
276
|
+
const rows = grouped.get(key) ?? [];
|
|
277
|
+
if (!rows.some((row) => normalizeIdentifierKey(row.schema) === normalizeIdentifierKey(schema)
|
|
278
|
+
&& normalizeIdentifierKey(row.table) === normalizeIdentifierKey(parts.table))) {
|
|
279
|
+
rows.push({ schema, table: parts.table });
|
|
280
|
+
}
|
|
281
|
+
grouped.set(key, rows);
|
|
282
|
+
}
|
|
283
|
+
return grouped;
|
|
284
|
+
}
|
|
285
|
+
function relationParts(relation) {
|
|
286
|
+
const parts = relation.split('.').map(cleanIdentifier).filter((value) => Boolean(value));
|
|
287
|
+
if (parts.length >= 3) {
|
|
288
|
+
return {
|
|
289
|
+
catalogOrDatabase: parts.at(-3),
|
|
290
|
+
schema: parts.at(-2),
|
|
291
|
+
table: parts.at(-1),
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
if (parts.length === 2)
|
|
295
|
+
return { schema: parts[0], table: parts[1] };
|
|
296
|
+
return { table: parts[0] };
|
|
297
|
+
}
|
|
298
|
+
function buildExactRelationPredicate(relations) {
|
|
299
|
+
const grouped = new Map();
|
|
300
|
+
for (const relation of relations.slice(0, MAX_RELATIONS)) {
|
|
301
|
+
const key = normalizeIdentifierKey(relation.schema);
|
|
302
|
+
const current = grouped.get(key) ?? { schema: relation.schema, tables: new Set() };
|
|
303
|
+
current.tables.add(relation.table);
|
|
304
|
+
grouped.set(key, current);
|
|
305
|
+
}
|
|
306
|
+
const clauses = Array.from(grouped.values()).map((entry) => {
|
|
307
|
+
return `(UPPER(table_schema) = UPPER(${sqlLiteral(entry.schema)}) AND UPPER(table_name) IN (${Array.from(entry.tables).map((table) => `UPPER(${sqlLiteral(table)})`).join(', ')}))`;
|
|
308
|
+
});
|
|
309
|
+
return clauses.length > 0 ? `(${clauses.join(' OR ')})` : undefined;
|
|
310
|
+
}
|
|
311
|
+
function buildSchemaPredicate(schemas) {
|
|
312
|
+
if (schemas.length === 0)
|
|
313
|
+
return undefined;
|
|
314
|
+
return `UPPER(table_schema) IN (${schemas.map((schema) => `UPPER(${sqlLiteral(schema)})`).join(', ')})`;
|
|
315
|
+
}
|
|
316
|
+
function informationSchemaColumnsRelation(driver, catalogOrDatabase) {
|
|
317
|
+
if (driver === 'snowflake')
|
|
318
|
+
return `${quoteIdentifier(catalogOrDatabase, '"')}.INFORMATION_SCHEMA.COLUMNS`;
|
|
319
|
+
if (driver === 'databricks')
|
|
320
|
+
return `${quoteIdentifier(catalogOrDatabase, '`')}.information_schema.columns`;
|
|
321
|
+
if (driver === 'bigquery')
|
|
322
|
+
return `${quoteIdentifier(catalogOrDatabase, '`')}.INFORMATION_SCHEMA.COLUMNS`;
|
|
323
|
+
return 'information_schema.columns';
|
|
324
|
+
}
|
|
325
|
+
function quoteIdentifier(value, quote) {
|
|
326
|
+
return `${quote}${value.replaceAll(quote, `${quote}${quote}`)}${quote}`;
|
|
327
|
+
}
|
|
328
|
+
function sqlLiteral(value) {
|
|
329
|
+
return `'${value.replaceAll("'", "''")}'`;
|
|
330
|
+
}
|
|
331
|
+
function rowString(row, key) {
|
|
332
|
+
const expected = key.toLowerCase();
|
|
333
|
+
for (const [rowKey, value] of Object.entries(row)) {
|
|
334
|
+
if (rowKey.toLowerCase() !== expected)
|
|
335
|
+
continue;
|
|
336
|
+
return cleanIdentifier(typeof value === 'string' ? value : value == null ? undefined : String(value));
|
|
337
|
+
}
|
|
338
|
+
return undefined;
|
|
339
|
+
}
|
|
340
|
+
function defaultCatalogForDriver(driver) {
|
|
341
|
+
return driver === 'duckdb' || driver === 'file' ? 'memory' : undefined;
|
|
342
|
+
}
|
|
343
|
+
function defaultSchemaForDriver(driver) {
|
|
344
|
+
return driver === 'duckdb' || driver === 'file' ? 'main' : undefined;
|
|
345
|
+
}
|
|
346
|
+
function normalizeRelation(value) {
|
|
347
|
+
const parts = value.split('.').map(cleanIdentifier).filter((part) => Boolean(part));
|
|
348
|
+
return parts.length > 0 ? parts.join('.') : undefined;
|
|
349
|
+
}
|
|
350
|
+
function cleanIdentifier(value) {
|
|
351
|
+
const clean = value?.trim().replace(/^["`\[]|["`\]]$/g, '');
|
|
352
|
+
return clean || undefined;
|
|
353
|
+
}
|
|
354
|
+
function normalizeIdentifierKey(value) {
|
|
355
|
+
return value.trim().replace(/^["`\[]|["`\]]$/g, '').toLowerCase();
|
|
356
|
+
}
|
|
357
|
+
function uniqueStrings(values) {
|
|
358
|
+
return Array.from(new Set(values.map((value) => value.trim()).filter(Boolean)));
|
|
359
|
+
}
|
|
360
|
+
function redactedConnectionIdentity(connection) {
|
|
361
|
+
return {
|
|
362
|
+
driver: connection.driver,
|
|
363
|
+
accountOrHost: connection.account ?? connection.host,
|
|
364
|
+
projectId: connection.projectId,
|
|
365
|
+
database: connection.database,
|
|
366
|
+
catalog: connection.catalog,
|
|
367
|
+
schema: connection.schema,
|
|
368
|
+
role: connection.role,
|
|
369
|
+
warehouse: connection.warehouse,
|
|
370
|
+
httpPath: connection.httpPath,
|
|
371
|
+
filepath: connection.filepath,
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
function stableSerialize(value) {
|
|
375
|
+
if (value === null)
|
|
376
|
+
return 'null';
|
|
377
|
+
if (value === undefined)
|
|
378
|
+
return 'undefined';
|
|
379
|
+
if (typeof value !== 'object')
|
|
380
|
+
return JSON.stringify(value);
|
|
381
|
+
if (Array.isArray(value))
|
|
382
|
+
return `[${value.map(stableSerialize).join(',')}]`;
|
|
383
|
+
const record = value;
|
|
384
|
+
return `{${Object.keys(record).sort().filter((key) => record[key] !== undefined)
|
|
385
|
+
.map((key) => `${JSON.stringify(key)}:${stableSerialize(record[key])}`).join(',')}}`;
|
|
386
|
+
}
|
|
387
|
+
function sha256(value) {
|
|
388
|
+
return createHash('sha256').update(value).digest('hex');
|
|
389
|
+
}
|
|
390
|
+
//# sourceMappingURL=warehouse-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warehouse-metadata.js","sourceRoot":"","sources":["../src/warehouse-metadata.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@duckcodeailabs/dql-cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.12.0",
|
|
4
4
|
"description": "Public CLI for parsing, formatting, testing, and certifying DQL blocks",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -20,15 +20,15 @@
|
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@anthropic-ai/sdk": "^0.104.2",
|
|
23
|
-
"@duckcodeailabs/dql-agent": "^1.
|
|
24
|
-
"@duckcodeailabs/dql-compiler": "^1.
|
|
25
|
-
"@duckcodeailabs/dql-connectors": "^1.
|
|
26
|
-
"@duckcodeailabs/dql-core": "^1.
|
|
27
|
-
"@duckcodeailabs/dql-governance": "^1.
|
|
28
|
-
"@duckcodeailabs/dql-mcp": "^1.
|
|
29
|
-
"@duckcodeailabs/dql-notebook": "^1.
|
|
30
|
-
"@duckcodeailabs/dql-project": "^1.
|
|
31
|
-
"@duckcodeailabs/dql-slack": "^1.
|
|
23
|
+
"@duckcodeailabs/dql-agent": "^1.12.0",
|
|
24
|
+
"@duckcodeailabs/dql-compiler": "^1.12.0",
|
|
25
|
+
"@duckcodeailabs/dql-connectors": "^1.12.0",
|
|
26
|
+
"@duckcodeailabs/dql-core": "^1.12.0",
|
|
27
|
+
"@duckcodeailabs/dql-governance": "^1.12.0",
|
|
28
|
+
"@duckcodeailabs/dql-mcp": "^1.12.0",
|
|
29
|
+
"@duckcodeailabs/dql-notebook": "^1.12.0",
|
|
30
|
+
"@duckcodeailabs/dql-project": "^1.12.0",
|
|
31
|
+
"@duckcodeailabs/dql-slack": "^1.12.0",
|
|
32
32
|
"isomorphic-git": "^1.27.0",
|
|
33
33
|
"js-yaml": "^4.1.0",
|
|
34
34
|
"node-cron": "^3.0.3",
|