@duckcodeailabs/dql-cli 1.5.2 → 1.6.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/args.d.ts +6 -0
- package/dist/args.d.ts.map +1 -1
- package/dist/args.js +9 -0
- package/dist/args.js.map +1 -1
- package/dist/assets/dql-notebook/assets/index-B5jI3I8Q.js +869 -0
- package/dist/assets/dql-notebook/assets/index-cv-O4BEj.css +1 -0
- package/dist/assets/dql-notebook/index.html +2 -2
- package/dist/commands/certify.d.ts.map +1 -1
- package/dist/commands/certify.js +20 -0
- package/dist/commands/certify.js.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/local-runtime.d.ts +46 -0
- package/dist/local-runtime.d.ts.map +1 -1
- package/dist/local-runtime.js +147 -12
- package/dist/local-runtime.js.map +1 -1
- package/dist/local-runtime.test.js +61 -2
- package/dist/local-runtime.test.js.map +1 -1
- package/dist/package.json +44 -0
- package/dist/promote-from-draft.d.ts +40 -0
- package/dist/promote-from-draft.d.ts.map +1 -0
- package/dist/promote-from-draft.js +164 -0
- package/dist/promote-from-draft.js.map +1 -0
- package/dist/promote-from-draft.test.d.ts +2 -0
- package/dist/promote-from-draft.test.d.ts.map +1 -0
- package/dist/promote-from-draft.test.js +149 -0
- package/dist/promote-from-draft.test.js.map +1 -0
- package/package.json +12 -12
- package/dist/assets/dql-notebook/assets/index-BZX1UCr2.js +0 -863
- package/dist/assets/dql-notebook/assets/index-R3UrqjLQ.css +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import { createBlockArtifacts, createSemanticBuilderBlock, formatLocalQueryRuntimeError, normalizeProjectConnection, prepareLocalExecution, resolveProjectRelativeSqlPaths, serializeJSON, validateBlockStudioSource, } from './local-runtime.js';
|
|
2
|
+
import { buildDbtStatus, createBlockArtifacts, createSemanticBuilderBlock, formatLocalQueryRuntimeError, normalizeProjectConnection, prepareLocalExecution, resolveProjectRelativeSqlPaths, serializeJSON, validateBlockStudioSource, } from './local-runtime.js';
|
|
3
3
|
import { afterEach } from 'vitest';
|
|
4
|
-
import { mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
|
|
4
|
+
import { mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
|
|
5
5
|
import { join } from 'node:path';
|
|
6
6
|
import { tmpdir } from 'node:os';
|
|
7
7
|
import { SemanticLayer } from '@duckcodeailabs/dql-core';
|
|
@@ -109,6 +109,65 @@ describe('semantic block save artifacts', () => {
|
|
|
109
109
|
expect(companion).toContain(' - sales_channel');
|
|
110
110
|
expect(companion).toContain(' - order_date');
|
|
111
111
|
});
|
|
112
|
+
it('writes a blank semantic block when created from the Semantic Block path', () => {
|
|
113
|
+
const projectRoot = mkdtempSync(join(tmpdir(), 'dql-blank-semantic-block-'));
|
|
114
|
+
tempDirs.push(projectRoot);
|
|
115
|
+
writeFileSync(join(projectRoot, 'dql.config.json'), '{}\n');
|
|
116
|
+
const created = createBlockArtifacts(projectRoot, {
|
|
117
|
+
name: 'Approval Rate',
|
|
118
|
+
domain: 'cards',
|
|
119
|
+
blockType: 'semantic',
|
|
120
|
+
owner: 'cards-analytics',
|
|
121
|
+
description: 'Semantic metric starter',
|
|
122
|
+
tags: ['cards'],
|
|
123
|
+
});
|
|
124
|
+
expect(created.path).toBe('blocks/cards/approval-rate.dql');
|
|
125
|
+
expect(created.content).toContain('type = "semantic"');
|
|
126
|
+
expect(created.content).toContain('metric = ""');
|
|
127
|
+
expect(created.content).toContain('dimensions = []');
|
|
128
|
+
expect(created.content).not.toContain('query = """');
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
describe('buildDbtStatus', () => {
|
|
132
|
+
it('reports configured dbt artifacts and counts for the Block Studio start page', () => {
|
|
133
|
+
const projectRoot = mkdtempSync(join(tmpdir(), 'dql-dbt-status-'));
|
|
134
|
+
tempDirs.push(projectRoot);
|
|
135
|
+
const dbtRoot = join(projectRoot, 'dbt');
|
|
136
|
+
const targetDir = join(dbtRoot, 'target');
|
|
137
|
+
mkdirSync(targetDir, { recursive: true });
|
|
138
|
+
writeFileSync(join(dbtRoot, 'dbt_project.yml'), 'name: banking\nversion: 1.0\n', 'utf-8');
|
|
139
|
+
writeFileSync(join(targetDir, 'manifest.json'), JSON.stringify({
|
|
140
|
+
metadata: { project_name: 'banking', generated_at: '2026-04-30T12:00:00Z' },
|
|
141
|
+
nodes: {
|
|
142
|
+
'model.banking.fct_cards': { resource_type: 'model' },
|
|
143
|
+
'test.banking.not_null': { resource_type: 'test' },
|
|
144
|
+
},
|
|
145
|
+
sources: {
|
|
146
|
+
'source.banking.raw.cards': {},
|
|
147
|
+
},
|
|
148
|
+
}), 'utf-8');
|
|
149
|
+
writeFileSync(join(targetDir, 'semantic_manifest.json'), JSON.stringify({
|
|
150
|
+
metadata: { generated_at: '2026-04-30T12:01:00Z' },
|
|
151
|
+
metrics: [{ name: 'approval_rate' }],
|
|
152
|
+
semantic_models: [{ name: 'cards' }],
|
|
153
|
+
saved_queries: [{ name: 'daily_cards' }],
|
|
154
|
+
}), 'utf-8');
|
|
155
|
+
const status = buildDbtStatus(projectRoot, {
|
|
156
|
+
semanticLayer: { provider: 'dbt', projectPath: './dbt' },
|
|
157
|
+
dbt: { projectDir: './dbt', manifestPath: 'target/manifest.json' },
|
|
158
|
+
}, '2026-04-30T12:02:00Z');
|
|
159
|
+
expect(status.configured).toBe(true);
|
|
160
|
+
expect(status.projectName).toBe('banking');
|
|
161
|
+
expect(status.artifacts.manifest.exists).toBe(true);
|
|
162
|
+
expect(status.artifacts.semanticManifest.exists).toBe(true);
|
|
163
|
+
expect(status.counts.models).toBe(1);
|
|
164
|
+
expect(status.counts.sources).toBe(1);
|
|
165
|
+
expect(status.counts.metrics).toBe(1);
|
|
166
|
+
expect(status.counts.semanticModels).toBe(1);
|
|
167
|
+
expect(status.counts.savedQueries).toBe(1);
|
|
168
|
+
expect(status.lastSyncTime).toBe('2026-04-30T12:02:00Z');
|
|
169
|
+
expect(status.setupHint).toContain('dbt artifacts are ready');
|
|
170
|
+
});
|
|
112
171
|
});
|
|
113
172
|
describe('validateBlockStudioSource', () => {
|
|
114
173
|
const semanticLayer = new SemanticLayer({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-runtime.test.js","sourceRoot":"","sources":["../src/local-runtime.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"local-runtime.test.js","sourceRoot":"","sources":["../src/local-runtime.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,EAC1B,qBAAqB,EACrB,8BAA8B,EAC9B,aAAa,EACb,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,MAAM,QAAQ,GAAa,EAAE,CAAC;AAE9B,SAAS,CAAC,GAAG,EAAE;IACb,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;QAC3B,IAAI,GAAG;YAAE,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,OAAO,GAAG,4BAA4B,CAC1C,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,EACxC,IAAI,KAAK,CAAC,0DAA0D,CAAC,CACtE,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,4CAA4C,CAAC,CAAC;QACxE,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,4BAA4B,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/E,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAChD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC;QACnD,MAAM,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,GAAG,GAAG,mDAAmD,CAAC;QAChE,MAAM,QAAQ,GAAG,8BAA8B,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;QAE1E,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,GAAG,GAAG,sCAAsC,CAAC;QACnD,MAAM,CAAC,8BAA8B,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,CAAC,0BAA0B,CAC/B,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,oBAAoB,EAAE,EACpD,mBAAmB,CACpB,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,oCAAoC,EAAE,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,QAAQ,GAAG,qBAAqB,CACpC,mDAAmD,EACnD,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,EACxC,mBAAmB,EACnB,EAAE,OAAO,EAAE,QAAQ,EAAE,CACtB,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;QAC9E,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;IACjG,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,EAAE,CAAC,qFAAqF,EAAE,GAAG,EAAE;QAC7F,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC;QACxE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3B,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAC;QAE5D,MAAM,OAAO,GAAG,oBAAoB,CAAC,WAAW,EAAE;YAChD,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,kDAAkD;YAC3D,WAAW,EAAE,uBAAuB;YACpC,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;SAC1B,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAChE,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QACzF,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAEnG,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC,CAAC;QAClF,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC7C,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAChD,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QACjD,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QACnD,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC9C,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;QAC1E,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3B,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAC;QAE5D,MAAM,OAAO,GAAG,0BAA0B,CAAC,WAAW,EAAE;YACtD,IAAI,EAAE,mBAAmB;YACzB,MAAM,EAAE,SAAS;YACjB,WAAW,EAAE,uBAAuB;YACpC,KAAK,EAAE,mBAAmB;YAC1B,IAAI,EAAE,CAAC,SAAS,CAAC;YACjB,OAAO,EAAE,CAAC,eAAe,CAAC;YAC1B,UAAU,EAAE,CAAC,eAAe,CAAC;YAC7B,aAAa,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE;YAC3D,KAAK,EAAE,MAAM;YACb,SAAS,EAAE,UAAU;YACrB,GAAG,EAAE,UAAU;YACf,MAAM,EAAE,CAAC,kBAAkB,CAAC;YAC5B,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QAClE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QACvD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;QAE9D,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC,CAAC;QAClF,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC7C,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACxC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAChD,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAChD,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QACjD,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QACnD,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QACjD,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,2BAA2B,CAAC,CAAC,CAAC;QAC7E,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3B,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAC;QAE5D,MAAM,OAAO,GAAG,oBAAoB,CAAC,WAAW,EAAE;YAChD,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,UAAU;YACrB,KAAK,EAAE,iBAAiB;YACxB,WAAW,EAAE,yBAAyB;YACtC,IAAI,EAAE,CAAC,OAAO,CAAC;SAChB,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC5D,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QACvD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACjD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACrD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACnE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC1C,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE,+BAA+B,EAAE,OAAO,CAAC,CAAC;QAC1F,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;YAC7D,QAAQ,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,sBAAsB,EAAE;YAC3E,KAAK,EAAE;gBACL,yBAAyB,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE;gBACrD,uBAAuB,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE;aACnD;YACD,OAAO,EAAE;gBACP,0BAA0B,EAAE,EAAE;aAC/B;SACF,CAAC,EAAE,OAAO,CAAC,CAAC;QACb,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;YACtE,QAAQ,EAAE,EAAE,YAAY,EAAE,sBAAsB,EAAE;YAClD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;YACpC,eAAe,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YACpC,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;SACzC,CAAC,EAAE,OAAO,CAAC,CAAC;QAEb,MAAM,MAAM,GAAG,cAAc,CAAC,WAAW,EAAE;YACzC,aAAa,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE;YACxD,GAAG,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE;SACnE,EAAE,sBAAsB,CAAC,CAAC;QAE3B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC;QACtC,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,eAAe;gBACtB,WAAW,EAAE,gBAAgB;gBAC7B,MAAM,EAAE,SAAS;gBACjB,GAAG,EAAE,cAAc;gBACnB,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,EAAE;aACT;SACF;QACD,UAAU,EAAE;YACV;gBACE,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,eAAe;gBACtB,WAAW,EAAE,yBAAyB;gBACtC,MAAM,EAAE,SAAS;gBACjB,GAAG,EAAE,eAAe;gBACpB,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,EAAE;aACT;SACF;QACD,WAAW,EAAE,EAAE;KAChB,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,MAAM,GAAG;;;;;;;;EAQjB,CAAC;QAEC,MAAM,UAAU,GAAG,yBAAyB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAEpE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;QAC5E,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;QAC7E,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,MAAM,MAAM,GAAG;;;;;;;EAOjB,CAAC;QAEC,MAAM,UAAU,GAAG,yBAAyB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAEpE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5C,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,MAAM,GAAG;;;;;;;;EAQjB,CAAC;QAEC,MAAM,UAAU,GAAG,yBAAyB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAEpE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvI,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,MAAM,GAAG;;;;;;;;;;;EAWjB,CAAC;QAEC,MAAM,UAAU,GAAG,yBAAyB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAEpE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,MAAM,GAAG;;;;;;;;;;;;;;EAcjB,CAAC;QAEC,MAAM,UAAU,GAAG,yBAAyB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAEpE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;QAC5E,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;QAC7E,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,MAAM,MAAM,GAAG;;;;;;;;;;EAUjB,CAAC;QAEC,MAAM,UAAU,GAAG,yBAAyB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAEpE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpI,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@duckcodeailabs/dql-cli",
|
|
3
|
+
"version": "1.6.0",
|
|
4
|
+
"description": "Public CLI for parsing, formatting, testing, and certifying DQL blocks",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"bin": {
|
|
8
|
+
"dql": "./index.js"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "rm -rf dist tsconfig.tsbuildinfo && tsc -b && node ./scripts/copy-runtime-assets.mjs",
|
|
12
|
+
"dev": "tsx src/index.ts",
|
|
13
|
+
"test": "vitest run --passWithNoTests",
|
|
14
|
+
"bench:manifest": "tsx bench/manifest-bench.ts",
|
|
15
|
+
"clean": "rm -rf dist tsconfig.tsbuildinfo",
|
|
16
|
+
"prepublishOnly": "pnpm run build"
|
|
17
|
+
},
|
|
18
|
+
"publishConfig": {
|
|
19
|
+
"access": "public"
|
|
20
|
+
},
|
|
21
|
+
"repository": {
|
|
22
|
+
"type": "git",
|
|
23
|
+
"url": "https://github.com/duckcode-ai/dql.git",
|
|
24
|
+
"directory": "apps/cli"
|
|
25
|
+
},
|
|
26
|
+
"dependencies": {
|
|
27
|
+
"@duckcodeailabs/dql-agent": "^1.6.0",
|
|
28
|
+
"@duckcodeailabs/dql-slack": "^1.6.0",
|
|
29
|
+
"@duckcodeailabs/dql-compiler": "^1.6.0",
|
|
30
|
+
"@duckcodeailabs/dql-connectors": "^1.6.0",
|
|
31
|
+
"@duckcodeailabs/dql-core": "^1.6.0",
|
|
32
|
+
"@duckcodeailabs/dql-governance": "^1.6.0",
|
|
33
|
+
"@duckcodeailabs/dql-mcp": "^1.6.0",
|
|
34
|
+
"@duckcodeailabs/dql-notebook": "^1.6.0",
|
|
35
|
+
"@duckcodeailabs/dql-project": "^1.6.0",
|
|
36
|
+
"isomorphic-git": "^1.27.0",
|
|
37
|
+
"js-yaml": "^4.1.0",
|
|
38
|
+
"node-cron": "^3.0.3",
|
|
39
|
+
"nodemailer": "^6.9.16"
|
|
40
|
+
},
|
|
41
|
+
"engines": {
|
|
42
|
+
"node": ">=18.0.0"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { CLIFlags } from './args.js';
|
|
2
|
+
export interface PromoteResult {
|
|
3
|
+
ok: boolean;
|
|
4
|
+
message: string;
|
|
5
|
+
/** The path the draft moved to (relative to projectRoot). */
|
|
6
|
+
certifiedPath?: string;
|
|
7
|
+
/** The patch the human still needs to apply to datalex-manifest.json. */
|
|
8
|
+
datalexManifestDiff?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Promote a Tier-2 draft block from `blocks/_drafts/<slug>.dql` to the
|
|
12
|
+
* canonical `blocks/<domain>/<slug>.dql` location, flipping `status` to
|
|
13
|
+
* `certified` and setting the `datalex_contract` reference.
|
|
14
|
+
*
|
|
15
|
+
* Companion to the dql-mcp `query_via_metadata` tool. Together they close
|
|
16
|
+
* the graduated-trust promotion loop:
|
|
17
|
+
*
|
|
18
|
+
* ask -> no Tier-1 hit -> query_via_metadata writes a draft
|
|
19
|
+
* -> human reviews / refines
|
|
20
|
+
* -> dql certify --from-draft <path>
|
|
21
|
+
* -> next ask hits Tier-1 forever
|
|
22
|
+
*
|
|
23
|
+
* Behavior:
|
|
24
|
+
* 1. Validates the draft exists, has status=draft, and has a sane
|
|
25
|
+
* `_proposed { proposed_contract_id = ... }` block.
|
|
26
|
+
* 2. Moves the file to blocks/<domain>/<slug>.dql.
|
|
27
|
+
* 3. Flips `status = "draft"` to `status = "certified"`.
|
|
28
|
+
* 4. Sets `datalex_contract = "<contract>"` (provided via --contract or
|
|
29
|
+
* taken from `_proposed.proposed_contract_id` with `@1` appended).
|
|
30
|
+
* 5. Sets `owner = "<owner>"` from --owner if provided.
|
|
31
|
+
* 6. Drops the `_proposed { ... }` provenance block (its job is done).
|
|
32
|
+
* 7. Computes the patch the human still needs to apply to
|
|
33
|
+
* datalex-manifest.json (or surfaces it for --open-pr).
|
|
34
|
+
*
|
|
35
|
+
* Does NOT auto-modify datalex-manifest.json. That file is hand-curated
|
|
36
|
+
* until the DataLex compiler ships its v1 emitter; this command shows
|
|
37
|
+
* the user the exact diff to apply.
|
|
38
|
+
*/
|
|
39
|
+
export declare function promoteFromDraft(projectRoot: string, flags: CLIFlags): PromoteResult;
|
|
40
|
+
//# sourceMappingURL=promote-from-draft.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promote-from-draft.d.ts","sourceRoot":"","sources":["../src/promote-from-draft.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yEAAyE;IACzE,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,QAAQ,GACd,aAAa,CAyEf"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { dirname, join, resolve } from 'node:path';
|
|
3
|
+
/**
|
|
4
|
+
* Promote a Tier-2 draft block from `blocks/_drafts/<slug>.dql` to the
|
|
5
|
+
* canonical `blocks/<domain>/<slug>.dql` location, flipping `status` to
|
|
6
|
+
* `certified` and setting the `datalex_contract` reference.
|
|
7
|
+
*
|
|
8
|
+
* Companion to the dql-mcp `query_via_metadata` tool. Together they close
|
|
9
|
+
* the graduated-trust promotion loop:
|
|
10
|
+
*
|
|
11
|
+
* ask -> no Tier-1 hit -> query_via_metadata writes a draft
|
|
12
|
+
* -> human reviews / refines
|
|
13
|
+
* -> dql certify --from-draft <path>
|
|
14
|
+
* -> next ask hits Tier-1 forever
|
|
15
|
+
*
|
|
16
|
+
* Behavior:
|
|
17
|
+
* 1. Validates the draft exists, has status=draft, and has a sane
|
|
18
|
+
* `_proposed { proposed_contract_id = ... }` block.
|
|
19
|
+
* 2. Moves the file to blocks/<domain>/<slug>.dql.
|
|
20
|
+
* 3. Flips `status = "draft"` to `status = "certified"`.
|
|
21
|
+
* 4. Sets `datalex_contract = "<contract>"` (provided via --contract or
|
|
22
|
+
* taken from `_proposed.proposed_contract_id` with `@1` appended).
|
|
23
|
+
* 5. Sets `owner = "<owner>"` from --owner if provided.
|
|
24
|
+
* 6. Drops the `_proposed { ... }` provenance block (its job is done).
|
|
25
|
+
* 7. Computes the patch the human still needs to apply to
|
|
26
|
+
* datalex-manifest.json (or surfaces it for --open-pr).
|
|
27
|
+
*
|
|
28
|
+
* Does NOT auto-modify datalex-manifest.json. That file is hand-curated
|
|
29
|
+
* until the DataLex compiler ships its v1 emitter; this command shows
|
|
30
|
+
* the user the exact diff to apply.
|
|
31
|
+
*/
|
|
32
|
+
export function promoteFromDraft(projectRoot, flags) {
|
|
33
|
+
const draftPathInput = flags.fromDraft;
|
|
34
|
+
const draftAbs = resolve(projectRoot, draftPathInput);
|
|
35
|
+
if (!existsSync(draftAbs)) {
|
|
36
|
+
return { ok: false, message: `Draft not found at ${draftPathInput}.` };
|
|
37
|
+
}
|
|
38
|
+
const content = readFileSync(draftAbs, 'utf-8');
|
|
39
|
+
if (!/status\s*=\s*"draft"/.test(content)) {
|
|
40
|
+
return {
|
|
41
|
+
ok: false,
|
|
42
|
+
message: `${draftPathInput} does not have status="draft". Use dql certify <path> (without --from-draft) to evaluate governance rules.`,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
const proposedContractId = pickField(content, 'proposed_contract_id') ?? '';
|
|
46
|
+
const contract = flags.contract || (proposedContractId ? `${proposedContractId}@1` : '');
|
|
47
|
+
if (!contract) {
|
|
48
|
+
return {
|
|
49
|
+
ok: false,
|
|
50
|
+
message: 'No --contract <id@version> provided and no proposed_contract_id in the draft. ' +
|
|
51
|
+
'Either pass --contract commerce.Customer.foo@1 or restore the _proposed block.',
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
const domain = flags.domain || pickField(content, 'proposed_domain') || guessDomain(contract);
|
|
55
|
+
if (!domain) {
|
|
56
|
+
return {
|
|
57
|
+
ok: false,
|
|
58
|
+
message: 'No --domain provided and could not infer one from the contract id.',
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
const slug = inferSlugFromPath(draftAbs);
|
|
62
|
+
const destAbs = join(projectRoot, 'blocks', domain, `${slug}.dql`);
|
|
63
|
+
if (existsSync(destAbs) && !flags.force) {
|
|
64
|
+
return {
|
|
65
|
+
ok: false,
|
|
66
|
+
message: `${shortPath(projectRoot, destAbs)} already exists. ` +
|
|
67
|
+
'Pass --force to overwrite, or rename the draft.',
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
const promoted = renderPromoted(content, {
|
|
71
|
+
contract,
|
|
72
|
+
domain,
|
|
73
|
+
owner: flags.owner || pickField(content, 'owner') || '',
|
|
74
|
+
});
|
|
75
|
+
mkdirSync(dirname(destAbs), { recursive: true });
|
|
76
|
+
writeFileSync(destAbs, promoted);
|
|
77
|
+
// The draft and the certified copy must not coexist. Drop the draft now
|
|
78
|
+
// that the certified file is on disk.
|
|
79
|
+
unlinkSync(draftAbs);
|
|
80
|
+
const datalexManifestDiff = renderDataLexManifestDiff({
|
|
81
|
+
contract,
|
|
82
|
+
domain,
|
|
83
|
+
slug,
|
|
84
|
+
description: pickField(content, 'description') ?? '',
|
|
85
|
+
});
|
|
86
|
+
return {
|
|
87
|
+
ok: true,
|
|
88
|
+
message: `Promoted ${shortPath(projectRoot, draftAbs)} -> ${shortPath(projectRoot, destAbs)}.`,
|
|
89
|
+
certifiedPath: shortPath(projectRoot, destAbs),
|
|
90
|
+
datalexManifestDiff,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
// -- helpers ---------------------------------------------------------------
|
|
94
|
+
function pickField(content, key) {
|
|
95
|
+
const m = content.match(new RegExp(`${key}\\s*=\\s*"([^"]*)"`)) ||
|
|
96
|
+
content.match(new RegExp(`${key}\\s*=\\s*"""([\\s\\S]*?)"""`));
|
|
97
|
+
return m?.[1]?.trim();
|
|
98
|
+
}
|
|
99
|
+
function guessDomain(contractId) {
|
|
100
|
+
const head = contractId.split('.')[0];
|
|
101
|
+
return head && head !== contractId ? head : null;
|
|
102
|
+
}
|
|
103
|
+
function inferSlugFromPath(absPath) {
|
|
104
|
+
return absPath.replace(/.*\//, '').replace(/\.dql$/, '');
|
|
105
|
+
}
|
|
106
|
+
function shortPath(projectRoot, abs) {
|
|
107
|
+
const root = projectRoot.endsWith('/') ? projectRoot : projectRoot + '/';
|
|
108
|
+
return abs.startsWith(root) ? abs.slice(root.length) : abs;
|
|
109
|
+
}
|
|
110
|
+
function renderPromoted(source, fields) {
|
|
111
|
+
let out = source;
|
|
112
|
+
// Flip status.
|
|
113
|
+
out = out.replace(/status\s*=\s*"draft"/, 'status = "certified"');
|
|
114
|
+
// Set domain (overwrite the existing one).
|
|
115
|
+
out = out.replace(/(domain\s*=\s*)"[^"]*"/, `$1"${fields.domain}"`);
|
|
116
|
+
// Set datalex_contract. The draft template ships an empty value
|
|
117
|
+
// (`datalex_contract = ""`); replace with the provided id@version.
|
|
118
|
+
out = out.replace(/datalex_contract\s*=\s*"[^"]*"/, `datalex_contract = "${fields.contract}"`);
|
|
119
|
+
// Set owner if provided + the field exists in the file.
|
|
120
|
+
if (fields.owner) {
|
|
121
|
+
if (/owner\s*=\s*"[^"]*"/.test(out)) {
|
|
122
|
+
out = out.replace(/owner\s*=\s*"[^"]*"/, `owner = "${fields.owner}"`);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
// Insert owner right after the status line.
|
|
126
|
+
out = out.replace(/(status\s*=\s*"certified"\s*\n)/, `$1 owner = "${fields.owner}"\n`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// Drop the _proposed { ... } provenance block. Its job is done; the
|
|
130
|
+
// certified block is the new source of truth and should not carry the
|
|
131
|
+
// capture metadata.
|
|
132
|
+
out = out.replace(/\n\s*_proposed\s*\{[^}]*\}\s*\n/, '\n');
|
|
133
|
+
return out;
|
|
134
|
+
}
|
|
135
|
+
function renderDataLexManifestDiff(fields) {
|
|
136
|
+
const [contractId, versionStr] = fields.contract.split('@');
|
|
137
|
+
const version = Number.parseInt(versionStr ?? '1', 10) || 1;
|
|
138
|
+
const parts = contractId.split('.');
|
|
139
|
+
const datalexDomain = parts[0] ?? fields.domain;
|
|
140
|
+
const entity = parts[1] ?? 'Unknown';
|
|
141
|
+
const contractName = parts[2] ?? fields.slug;
|
|
142
|
+
const safeDesc = fields.description.replace(/"/g, '\\"').replace(/\n/g, ' ');
|
|
143
|
+
return `Add the following entry under domains[name=${datalexDomain}].entities[name=${entity}].contracts in datalex-manifest.json:
|
|
144
|
+
|
|
145
|
+
{
|
|
146
|
+
"id": "${contractId}",
|
|
147
|
+
"name": "${contractName}",
|
|
148
|
+
"version": ${version},
|
|
149
|
+
"description": "${safeDesc}",
|
|
150
|
+
"signature": {
|
|
151
|
+
"inputs": [],
|
|
152
|
+
"outputs": []
|
|
153
|
+
},
|
|
154
|
+
"owner": "<owner>",
|
|
155
|
+
"tags": []
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
Then re-run \`dql compile\` to refresh dql-manifest.json. The DataLex compiler
|
|
159
|
+
will emit this entry automatically once the v1 manifest emitter ships;
|
|
160
|
+
until then, hand-edit \`datalex-manifest.json\` (or its source YAML) so the
|
|
161
|
+
DQL block's datalex_contract reference resolves.
|
|
162
|
+
`;
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=promote-from-draft.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promote-from-draft.js","sourceRoot":"","sources":["../src/promote-from-draft.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promote-from-draft.test.d.ts","sourceRoot":"","sources":["../src/promote-from-draft.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
|
|
2
|
+
import { existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
|
|
3
|
+
import { tmpdir } from 'node:os';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { promoteFromDraft } from './promote-from-draft.js';
|
|
6
|
+
function baseFlags(overrides = {}) {
|
|
7
|
+
return {
|
|
8
|
+
format: 'text',
|
|
9
|
+
verbose: false,
|
|
10
|
+
help: false,
|
|
11
|
+
version: false,
|
|
12
|
+
check: false,
|
|
13
|
+
open: null,
|
|
14
|
+
input: '',
|
|
15
|
+
outDir: '',
|
|
16
|
+
port: null,
|
|
17
|
+
host: null,
|
|
18
|
+
chart: '',
|
|
19
|
+
domain: '',
|
|
20
|
+
owner: '',
|
|
21
|
+
queryOnly: false,
|
|
22
|
+
template: '',
|
|
23
|
+
connection: '',
|
|
24
|
+
skipTests: false,
|
|
25
|
+
force: false,
|
|
26
|
+
http: false,
|
|
27
|
+
...overrides,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function writeDraft(root, slug, body) {
|
|
31
|
+
const draftDir = join(root, 'blocks', '_drafts');
|
|
32
|
+
mkdirSync(draftDir, { recursive: true });
|
|
33
|
+
const domain = body?.domain ?? 'customer';
|
|
34
|
+
const id = body?.proposedContractId ?? 'commerce.Customer.monthly_active_customers';
|
|
35
|
+
const status = body?.status ?? 'draft';
|
|
36
|
+
writeFileSync(join(draftDir, `${slug}.dql`), `block "${slug}" {
|
|
37
|
+
domain = "${domain}"
|
|
38
|
+
type = "custom"
|
|
39
|
+
status = "${status}"
|
|
40
|
+
description = """How many active customers each month?"""
|
|
41
|
+
datalex_contract = ""
|
|
42
|
+
|
|
43
|
+
_proposed {
|
|
44
|
+
asked_times = 3
|
|
45
|
+
first_asked = "2026-04-01T00:00:00Z"
|
|
46
|
+
last_asked = "2026-05-01T12:00:00Z"
|
|
47
|
+
proposed_contract_id = "${id}"
|
|
48
|
+
proposed_domain = "${domain}"
|
|
49
|
+
proposed_entity = "Customer"
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
query = """SELECT 1"""
|
|
53
|
+
}
|
|
54
|
+
`);
|
|
55
|
+
}
|
|
56
|
+
describe('promoteFromDraft (dql certify --from-draft)', () => {
|
|
57
|
+
let tmp;
|
|
58
|
+
beforeEach(() => {
|
|
59
|
+
tmp = mkdtempSync(join(tmpdir(), 'promote-'));
|
|
60
|
+
});
|
|
61
|
+
afterEach(() => {
|
|
62
|
+
rmSync(tmp, { recursive: true, force: true });
|
|
63
|
+
});
|
|
64
|
+
it('returns ok=false when the draft path does not exist', () => {
|
|
65
|
+
const out = promoteFromDraft(tmp, baseFlags({ fromDraft: 'blocks/_drafts/nope.dql' }));
|
|
66
|
+
expect(out.ok).toBe(false);
|
|
67
|
+
expect(out.message).toMatch(/not found/i);
|
|
68
|
+
});
|
|
69
|
+
it('refuses to promote a file whose status is not draft', () => {
|
|
70
|
+
writeDraft(tmp, 'mau', { status: 'certified' });
|
|
71
|
+
const out = promoteFromDraft(tmp, baseFlags({ fromDraft: 'blocks/_drafts/mau.dql' }));
|
|
72
|
+
expect(out.ok).toBe(false);
|
|
73
|
+
expect(out.message).toMatch(/status="draft"/);
|
|
74
|
+
});
|
|
75
|
+
it('promotes a draft to blocks/<domain>/<slug>.dql, flips status, sets contract, drops _proposed', () => {
|
|
76
|
+
writeDraft(tmp, 'mau');
|
|
77
|
+
const out = promoteFromDraft(tmp, baseFlags({
|
|
78
|
+
fromDraft: 'blocks/_drafts/mau.dql',
|
|
79
|
+
domain: 'customer',
|
|
80
|
+
contract: 'commerce.Customer.monthly_active_customers@1',
|
|
81
|
+
owner: 'growth@example.com',
|
|
82
|
+
}));
|
|
83
|
+
expect(out.ok).toBe(true);
|
|
84
|
+
expect(out.certifiedPath).toBe('blocks/customer/mau.dql');
|
|
85
|
+
const certified = readFileSync(join(tmp, 'blocks/customer/mau.dql'), 'utf-8');
|
|
86
|
+
expect(certified).toContain('status = "certified"');
|
|
87
|
+
expect(certified).toContain('datalex_contract = "commerce.Customer.monthly_active_customers@1"');
|
|
88
|
+
expect(certified).toContain('owner = "growth@example.com"');
|
|
89
|
+
expect(certified).not.toContain('_proposed');
|
|
90
|
+
expect(certified).not.toContain('asked_times');
|
|
91
|
+
expect(existsSync(join(tmp, 'blocks/_drafts/mau.dql'))).toBe(false);
|
|
92
|
+
});
|
|
93
|
+
it('falls back to the proposed contract id with @1 when --contract is omitted', () => {
|
|
94
|
+
writeDraft(tmp, 'mau', {
|
|
95
|
+
proposedContractId: 'commerce.Customer.monthly_active_customers',
|
|
96
|
+
});
|
|
97
|
+
const out = promoteFromDraft(tmp, baseFlags({ fromDraft: 'blocks/_drafts/mau.dql', domain: 'customer' }));
|
|
98
|
+
expect(out.ok).toBe(true);
|
|
99
|
+
const certified = readFileSync(join(tmp, 'blocks/customer/mau.dql'), 'utf-8');
|
|
100
|
+
expect(certified).toContain('datalex_contract = "commerce.Customer.monthly_active_customers@1"');
|
|
101
|
+
});
|
|
102
|
+
it('errors when no --contract and no proposed_contract_id available', () => {
|
|
103
|
+
writeDraft(tmp, 'mau', { proposedContractId: '' });
|
|
104
|
+
const out = promoteFromDraft(tmp, baseFlags({ fromDraft: 'blocks/_drafts/mau.dql', domain: 'customer' }));
|
|
105
|
+
expect(out.ok).toBe(false);
|
|
106
|
+
expect(out.message).toMatch(/contract/i);
|
|
107
|
+
});
|
|
108
|
+
it('refuses to overwrite an existing certified file unless --force', () => {
|
|
109
|
+
writeDraft(tmp, 'mau');
|
|
110
|
+
mkdirSync(join(tmp, 'blocks', 'customer'), { recursive: true });
|
|
111
|
+
writeFileSync(join(tmp, 'blocks', 'customer', 'mau.dql'), 'already here');
|
|
112
|
+
const out = promoteFromDraft(tmp, baseFlags({
|
|
113
|
+
fromDraft: 'blocks/_drafts/mau.dql',
|
|
114
|
+
domain: 'customer',
|
|
115
|
+
contract: 'commerce.Customer.monthly_active_customers@1',
|
|
116
|
+
}));
|
|
117
|
+
expect(out.ok).toBe(false);
|
|
118
|
+
expect(out.message).toMatch(/already exists/);
|
|
119
|
+
});
|
|
120
|
+
it('overwrites with --force', () => {
|
|
121
|
+
writeDraft(tmp, 'mau');
|
|
122
|
+
mkdirSync(join(tmp, 'blocks', 'customer'), { recursive: true });
|
|
123
|
+
writeFileSync(join(tmp, 'blocks', 'customer', 'mau.dql'), 'old content');
|
|
124
|
+
const out = promoteFromDraft(tmp, baseFlags({
|
|
125
|
+
fromDraft: 'blocks/_drafts/mau.dql',
|
|
126
|
+
domain: 'customer',
|
|
127
|
+
contract: 'commerce.Customer.monthly_active_customers@1',
|
|
128
|
+
force: true,
|
|
129
|
+
}));
|
|
130
|
+
expect(out.ok).toBe(true);
|
|
131
|
+
const content = readFileSync(join(tmp, 'blocks/customer/mau.dql'), 'utf-8');
|
|
132
|
+
expect(content).not.toBe('old content');
|
|
133
|
+
expect(content).toContain('status = "certified"');
|
|
134
|
+
});
|
|
135
|
+
it('surfaces a datalex-manifest.json patch with the contract entry to add', () => {
|
|
136
|
+
writeDraft(tmp, 'mau');
|
|
137
|
+
const out = promoteFromDraft(tmp, baseFlags({
|
|
138
|
+
fromDraft: 'blocks/_drafts/mau.dql',
|
|
139
|
+
domain: 'customer',
|
|
140
|
+
contract: 'commerce.Customer.monthly_active_customers@1',
|
|
141
|
+
}));
|
|
142
|
+
expect(out.datalexManifestDiff).toBeDefined();
|
|
143
|
+
expect(out.datalexManifestDiff).toContain('commerce.Customer.monthly_active_customers');
|
|
144
|
+
expect(out.datalexManifestDiff).toContain('"version": 1');
|
|
145
|
+
expect(out.datalexManifestDiff).toContain('domains[name=commerce]');
|
|
146
|
+
expect(out.datalexManifestDiff).toContain('entities[name=Customer]');
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
//# sourceMappingURL=promote-from-draft.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promote-from-draft.test.js","sourceRoot":"","sources":["../src/promote-from-draft.test.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.6.0",
|
|
4
4
|
"description": "Public CLI for parsing, formatting, testing, and certifying DQL blocks",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -19,19 +19,19 @@
|
|
|
19
19
|
"directory": "apps/cli"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@duckcodeailabs/dql-agent": "^1.5.2",
|
|
23
|
-
"@duckcodeailabs/dql-slack": "^1.5.2",
|
|
24
|
-
"@duckcodeailabs/dql-compiler": "^1.5.2",
|
|
25
|
-
"@duckcodeailabs/dql-connectors": "^1.5.2",
|
|
26
|
-
"@duckcodeailabs/dql-core": "^1.5.2",
|
|
27
|
-
"@duckcodeailabs/dql-governance": "^1.5.2",
|
|
28
|
-
"@duckcodeailabs/dql-mcp": "^1.5.2",
|
|
29
|
-
"@duckcodeailabs/dql-notebook": "^1.5.2",
|
|
30
|
-
"@duckcodeailabs/dql-project": "^1.5.2",
|
|
31
22
|
"isomorphic-git": "^1.27.0",
|
|
32
23
|
"js-yaml": "^4.1.0",
|
|
33
24
|
"node-cron": "^3.0.3",
|
|
34
|
-
"nodemailer": "^6.9.16"
|
|
25
|
+
"nodemailer": "^6.9.16",
|
|
26
|
+
"@duckcodeailabs/dql-slack": "1.6.0",
|
|
27
|
+
"@duckcodeailabs/dql-agent": "1.6.0",
|
|
28
|
+
"@duckcodeailabs/dql-governance": "1.6.0",
|
|
29
|
+
"@duckcodeailabs/dql-compiler": "1.6.0",
|
|
30
|
+
"@duckcodeailabs/dql-connectors": "1.6.0",
|
|
31
|
+
"@duckcodeailabs/dql-mcp": "1.6.0",
|
|
32
|
+
"@duckcodeailabs/dql-notebook": "1.6.0",
|
|
33
|
+
"@duckcodeailabs/dql-core": "1.6.0",
|
|
34
|
+
"@duckcodeailabs/dql-project": "1.6.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@types/js-yaml": "^4.0.9",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"tsx": "^4.19.0",
|
|
41
41
|
"typescript": "^5.7.0",
|
|
42
42
|
"vitest": "^3.0.0",
|
|
43
|
-
"@duckcodeailabs/dql-notebook-app": "1.
|
|
43
|
+
"@duckcodeailabs/dql-notebook-app": "1.6.0"
|
|
44
44
|
},
|
|
45
45
|
"engines": {
|
|
46
46
|
"node": ">=18.0.0"
|