@memberjunction/query-gen 3.4.0 → 4.1.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/.turbo/turbo-build.log +2 -2
- package/CHANGELOG.md +54 -0
- package/README.md +30 -2
- package/dist/cli/commands/export.js +35 -65
- package/dist/cli/commands/export.js.map +1 -1
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +114 -115
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/validate.js +40 -70
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/config.d.ts +1 -0
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +8 -7
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/index.js +11 -10
- package/dist/cli/index.js.map +1 -1
- package/dist/core/EntityGrouper.d.ts +5 -2
- package/dist/core/EntityGrouper.d.ts.map +1 -1
- package/dist/core/EntityGrouper.js +94 -39
- package/dist/core/EntityGrouper.js.map +1 -1
- package/dist/core/MetadataExporter.d.ts +2 -2
- package/dist/core/MetadataExporter.js +9 -36
- package/dist/core/MetadataExporter.js.map +1 -1
- package/dist/core/QueryDatabaseWriter.d.ts +1 -1
- package/dist/core/QueryDatabaseWriter.js +8 -12
- package/dist/core/QueryDatabaseWriter.js.map +1 -1
- package/dist/core/QueryFixer.d.ts +2 -2
- package/dist/core/QueryFixer.js +11 -17
- package/dist/core/QueryFixer.js.map +1 -1
- package/dist/core/QueryRefiner.d.ts +3 -3
- package/dist/core/QueryRefiner.js +22 -29
- package/dist/core/QueryRefiner.js.map +1 -1
- package/dist/core/QueryTester.d.ts +2 -2
- package/dist/core/QueryTester.js +11 -44
- package/dist/core/QueryTester.js.map +1 -1
- package/dist/core/QueryWriter.d.ts +2 -2
- package/dist/core/QueryWriter.js +12 -18
- package/dist/core/QueryWriter.js.map +1 -1
- package/dist/core/QuestionGenerator.d.ts +2 -2
- package/dist/core/QuestionGenerator.js +16 -22
- package/dist/core/QuestionGenerator.js.map +1 -1
- package/dist/data/schema.js +1 -2
- package/dist/data/schema.js.map +1 -1
- package/dist/index.d.ts +18 -18
- package/dist/index.js +18 -59
- package/dist/index.js.map +1 -1
- package/dist/prompts/PromptNames.js +5 -8
- package/dist/prompts/PromptNames.js.map +1 -1
- package/dist/utils/category-builder.d.ts +2 -2
- package/dist/utils/category-builder.js +2 -7
- package/dist/utils/category-builder.js.map +1 -1
- package/dist/utils/entity-helpers.d.ts +1 -1
- package/dist/utils/entity-helpers.js +7 -17
- package/dist/utils/entity-helpers.js.map +1 -1
- package/dist/utils/error-handlers.js +3 -9
- package/dist/utils/error-handlers.js.map +1 -1
- package/dist/utils/graph-helpers.js +3 -9
- package/dist/utils/graph-helpers.js.map +1 -1
- package/dist/utils/prompt-helpers.d.ts +1 -1
- package/dist/utils/prompt-helpers.js +8 -12
- package/dist/utils/prompt-helpers.js.map +1 -1
- package/dist/utils/user-helpers.js +3 -7
- package/dist/utils/user-helpers.js.map +1 -1
- package/dist/vectors/EmbeddingService.d.ts +1 -1
- package/dist/vectors/EmbeddingService.js +3 -8
- package/dist/vectors/EmbeddingService.js.map +1 -1
- package/dist/vectors/SimilaritySearch.d.ts +1 -1
- package/dist/vectors/SimilaritySearch.js +19 -20
- package/dist/vectors/SimilaritySearch.js.map +1 -1
- package/package.json +24 -17
- package/src/__tests__/golden-queries-loader.test.js +181 -0
- package/src/cli/commands/generate.ts +52 -21
- package/src/cli/config.ts +10 -2
- package/src/cli/index.ts +4 -1
- package/src/core/EntityGrouper.ts +75 -11
- package/src/core/QueryTester.ts +1 -1
- package/tsconfig.json +5 -35
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Generate command - Main query generation workflow
|
|
4
3
|
*
|
|
@@ -10,65 +9,38 @@
|
|
|
10
9
|
* 5. Refine queries
|
|
11
10
|
* 6. Export results
|
|
12
11
|
*/
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
__setModuleDefault(result, mod);
|
|
34
|
-
return result;
|
|
35
|
-
};
|
|
36
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
-
};
|
|
39
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
-
exports.generateCommand = void 0;
|
|
41
|
-
const ora_1 = __importDefault(require("ora"));
|
|
42
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
43
|
-
const fs = __importStar(require("fs"));
|
|
44
|
-
const path = __importStar(require("path"));
|
|
45
|
-
const core_1 = require("@memberjunction/core");
|
|
46
|
-
const config_1 = require("../config");
|
|
47
|
-
const user_helpers_1 = require("../../utils/user-helpers");
|
|
48
|
-
const EntityGrouper_1 = require("../../core/EntityGrouper");
|
|
49
|
-
const QuestionGenerator_1 = require("../../core/QuestionGenerator");
|
|
50
|
-
const QueryWriter_1 = require("../../core/QueryWriter");
|
|
51
|
-
const QueryTester_1 = require("../../core/QueryTester");
|
|
52
|
-
const QueryRefiner_1 = require("../../core/QueryRefiner");
|
|
53
|
-
const MetadataExporter_1 = require("../../core/MetadataExporter");
|
|
54
|
-
const QueryDatabaseWriter_1 = require("../../core/QueryDatabaseWriter");
|
|
55
|
-
const EmbeddingService_1 = require("../../vectors/EmbeddingService");
|
|
56
|
-
const SimilaritySearch_1 = require("../../vectors/SimilaritySearch");
|
|
57
|
-
const entity_helpers_1 = require("../../utils/entity-helpers");
|
|
58
|
-
const error_handlers_1 = require("../../utils/error-handlers");
|
|
59
|
-
const category_builder_1 = require("../../utils/category-builder");
|
|
12
|
+
import ora from 'ora';
|
|
13
|
+
import chalk from 'chalk';
|
|
14
|
+
import { Metadata, LogStatus } from '@memberjunction/core';
|
|
15
|
+
import { loadConfig } from '../config.js';
|
|
16
|
+
import { getSystemUser } from '../../utils/user-helpers.js';
|
|
17
|
+
import { EntityGrouper } from '../../core/EntityGrouper.js';
|
|
18
|
+
import { QuestionGenerator } from '../../core/QuestionGenerator.js';
|
|
19
|
+
import { QueryWriter } from '../../core/QueryWriter.js';
|
|
20
|
+
import { QueryTester } from '../../core/QueryTester.js';
|
|
21
|
+
import { QueryRefiner } from '../../core/QueryRefiner.js';
|
|
22
|
+
import { MetadataExporter } from '../../core/MetadataExporter.js';
|
|
23
|
+
import { QueryDatabaseWriter } from '../../core/QueryDatabaseWriter.js';
|
|
24
|
+
import { EmbeddingService } from '../../vectors/EmbeddingService.js';
|
|
25
|
+
import { SimilaritySearch } from '../../vectors/SimilaritySearch.js';
|
|
26
|
+
import { formatEntityMetadataForPrompt } from '../../utils/entity-helpers.js';
|
|
27
|
+
import { extractErrorMessage } from '../../utils/error-handlers.js';
|
|
28
|
+
import { buildQueryCategory, extractUniqueCategories } from '../../utils/category-builder.js';
|
|
29
|
+
import { readFileSync } from 'fs';
|
|
30
|
+
import { dirname, join } from 'path';
|
|
31
|
+
import { fileURLToPath } from 'url';
|
|
60
32
|
/**
|
|
61
33
|
* Execute the generate command
|
|
62
34
|
*
|
|
63
35
|
* Full orchestration of query generation workflow with progress reporting.
|
|
64
36
|
* Uses ora for spinners and chalk for colored output.
|
|
65
37
|
*/
|
|
66
|
-
async function generateCommand(options) {
|
|
67
|
-
const spinner = (
|
|
38
|
+
export async function generateCommand(options) {
|
|
39
|
+
const spinner = ora('Initializing query generation...').start();
|
|
68
40
|
try {
|
|
69
41
|
// 1. Load configuration
|
|
70
42
|
spinner.text = 'Loading configuration...';
|
|
71
|
-
const config =
|
|
43
|
+
const config = loadConfig(options);
|
|
72
44
|
// Show model/vendor overrides if configured
|
|
73
45
|
if (config.modelOverride || config.vendorOverride) {
|
|
74
46
|
const overrideMsg = [];
|
|
@@ -76,81 +48,113 @@ async function generateCommand(options) {
|
|
|
76
48
|
overrideMsg.push(`Model: ${config.modelOverride}`);
|
|
77
49
|
if (config.vendorOverride)
|
|
78
50
|
overrideMsg.push(`Vendor: ${config.vendorOverride}`);
|
|
79
|
-
spinner.info(
|
|
51
|
+
spinner.info(chalk.cyan(`Using overrides - ${overrideMsg.join(', ')}`));
|
|
80
52
|
}
|
|
81
53
|
if (config.verbose) {
|
|
82
|
-
spinner.info(
|
|
83
|
-
console.log(
|
|
54
|
+
spinner.info(chalk.dim('Configuration loaded'));
|
|
55
|
+
console.log(chalk.dim(JSON.stringify(config, null, 2)));
|
|
84
56
|
}
|
|
85
57
|
// 2. Get system user from UserCache (populated by provider initialization)
|
|
86
|
-
const contextUser =
|
|
58
|
+
const contextUser = getSystemUser();
|
|
87
59
|
// 3. Verify database connection and metadata
|
|
88
60
|
spinner.text = 'Loading metadata...';
|
|
89
61
|
// Assume provider and AIEngine are already configured by the calling application (MJCLI)
|
|
90
|
-
if (!
|
|
62
|
+
if (!Metadata.Provider) {
|
|
91
63
|
throw new Error('Metadata provider not configured. Please ensure database connection is set up before running CLI.');
|
|
92
64
|
}
|
|
93
65
|
spinner.succeed('Metadata loaded');
|
|
94
66
|
// 4. Filter and build entity groups
|
|
95
67
|
spinner.start('Filtering entities...');
|
|
96
|
-
const md = new
|
|
68
|
+
const md = new Metadata();
|
|
69
|
+
// DIAGNOSTIC: Log entity filtering context
|
|
70
|
+
if (config.verbose) {
|
|
71
|
+
LogStatus(`\n=== Entity Filtering Diagnostics ===`);
|
|
72
|
+
LogStatus(`Total entities in metadata: ${md.Entities.length}`);
|
|
73
|
+
LogStatus(`Excluded schemas: ${config.excludeSchemas.join(', ')}`);
|
|
74
|
+
// Show schema distribution BEFORE filtering
|
|
75
|
+
const schemasBefore = new Map();
|
|
76
|
+
md.Entities.forEach(e => {
|
|
77
|
+
const schema = e.SchemaName || 'null';
|
|
78
|
+
schemasBefore.set(schema, (schemasBefore.get(schema) || 0) + 1);
|
|
79
|
+
});
|
|
80
|
+
LogStatus(`Schema distribution (before filtering):`);
|
|
81
|
+
Array.from(schemasBefore.entries())
|
|
82
|
+
.sort((a, b) => b[1] - a[1])
|
|
83
|
+
.slice(0, 10)
|
|
84
|
+
.forEach(([schema, count]) => {
|
|
85
|
+
const excluded = config.excludeSchemas.includes(schema) ? ' [EXCLUDED]' : '';
|
|
86
|
+
LogStatus(` ${schema}: ${count} entities${excluded}`);
|
|
87
|
+
});
|
|
88
|
+
}
|
|
97
89
|
// Apply entity filtering (includeEntities takes precedence over excludeEntities)
|
|
98
90
|
let filteredEntities = md.Entities.filter(e => !config.excludeSchemas.includes(e.SchemaName || ''));
|
|
91
|
+
if (config.verbose) {
|
|
92
|
+
LogStatus(`\nAfter schema filtering: ${filteredEntities.length} entities remaining`);
|
|
93
|
+
if (filteredEntities.length > 0) {
|
|
94
|
+
LogStatus(`Sample entity names: ${filteredEntities.slice(0, 5).map(e => e.Name).join(', ')}`);
|
|
95
|
+
const schemasAfter = new Set(filteredEntities.map(e => e.SchemaName || 'null'));
|
|
96
|
+
LogStatus(`Remaining schemas: ${Array.from(schemasAfter).join(', ')}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
99
|
if (config.includeEntities.length > 0) {
|
|
100
100
|
// Allowlist: only include specified entities
|
|
101
101
|
filteredEntities = filteredEntities.filter(e => config.includeEntities.includes(e.Name));
|
|
102
|
-
spinner.info(
|
|
102
|
+
spinner.info(chalk.dim(`Including only ${config.includeEntities.length} specified entities`));
|
|
103
103
|
}
|
|
104
104
|
else if (config.excludeEntities.length > 0) {
|
|
105
105
|
// Denylist: exclude specified entities
|
|
106
106
|
filteredEntities = filteredEntities.filter(e => !config.excludeEntities.includes(e.Name));
|
|
107
|
-
spinner.info(
|
|
107
|
+
spinner.info(chalk.dim(`Excluded ${config.excludeEntities.length} entities`));
|
|
108
|
+
}
|
|
109
|
+
if (config.verbose) {
|
|
110
|
+
LogStatus(`Final filtered entities: ${filteredEntities.length}`);
|
|
111
|
+
LogStatus('====================================\n');
|
|
108
112
|
}
|
|
109
113
|
// 4. Group entities by schema and generate entity groups
|
|
110
114
|
spinner.text = 'Analyzing entity relationships...';
|
|
111
115
|
// Count entities per schema for informational logging
|
|
112
116
|
const schemaCount = new Set(filteredEntities.map(e => e.SchemaName)).size;
|
|
113
117
|
if (config.verbose && schemaCount > 1) {
|
|
114
|
-
spinner.info(
|
|
118
|
+
spinner.info(chalk.dim(`Processing ${schemaCount} schemas separately`));
|
|
115
119
|
}
|
|
116
|
-
const grouper = new
|
|
120
|
+
const grouper = new EntityGrouper(config);
|
|
117
121
|
const entityGroups = await grouper.generateEntityGroups(filteredEntities, contextUser);
|
|
118
|
-
spinner.succeed(
|
|
122
|
+
spinner.succeed(chalk.green(`Found ${entityGroups.length} entity groups across ${schemaCount} ${schemaCount === 1 ? 'schema' : 'schemas'}`));
|
|
119
123
|
// 5. Initialize vector similarity search
|
|
120
124
|
spinner.start('Embedding golden queries...');
|
|
121
|
-
const embeddingService = new
|
|
125
|
+
const embeddingService = new EmbeddingService(config.embeddingModel);
|
|
122
126
|
const goldenQueries = await loadGoldenQueries(config);
|
|
123
127
|
const embeddedGolden = await embeddingService.embedGoldenQueries(goldenQueries);
|
|
124
|
-
spinner.succeed(
|
|
128
|
+
spinner.succeed(chalk.green(`Embedded ${goldenQueries.length} golden queries`));
|
|
125
129
|
// 5b. Build category structure for all entity groups upfront
|
|
126
130
|
spinner.start('Building category structure...');
|
|
127
131
|
const categoryMap = new Map();
|
|
128
132
|
for (const group of entityGroups) {
|
|
129
|
-
const category =
|
|
133
|
+
const category = buildQueryCategory(config, group);
|
|
130
134
|
// Use primary entity name as key for lookup during query generation
|
|
131
135
|
categoryMap.set(group.primaryEntity.Name, category);
|
|
132
136
|
}
|
|
133
|
-
const uniqueCategories =
|
|
134
|
-
spinner.succeed(
|
|
137
|
+
const uniqueCategories = extractUniqueCategories(Array.from(categoryMap.values()));
|
|
138
|
+
spinner.succeed(chalk.green(`Created ${uniqueCategories.length} ${uniqueCategories.length === 1 ? 'category' : 'categories'}`));
|
|
135
139
|
// 6. Generate queries for each entity group
|
|
136
140
|
const totalGroups = entityGroups.length;
|
|
137
141
|
let processedGroups = 0;
|
|
138
142
|
const allValidatedQueries = [];
|
|
139
143
|
for (const group of entityGroups) {
|
|
140
144
|
processedGroups++;
|
|
141
|
-
const groupPrefix =
|
|
142
|
-
spinner.start(`${groupPrefix} Processing ${
|
|
145
|
+
const groupPrefix = chalk.cyan(`[${processedGroups}/${totalGroups}]`);
|
|
146
|
+
spinner.start(`${groupPrefix} Processing ${chalk.bold(group.primaryEntity.Name)}...`);
|
|
143
147
|
let queriesCreatedForGroup = 0;
|
|
144
148
|
try {
|
|
145
149
|
// 6a. Generate business questions for this entity group
|
|
146
|
-
const questionGenerator = new
|
|
150
|
+
const questionGenerator = new QuestionGenerator(contextUser, config);
|
|
147
151
|
const questions = await questionGenerator.generateQuestions(group);
|
|
148
152
|
if (config.verbose) {
|
|
149
153
|
spinner.info(`${groupPrefix} Generated ${questions.length} questions`);
|
|
150
154
|
}
|
|
151
155
|
// 6b. For each question, generate and validate query
|
|
152
156
|
for (const question of questions) {
|
|
153
|
-
spinner.text = `${groupPrefix} Generating query: ${
|
|
157
|
+
spinner.text = `${groupPrefix} Generating query: ${chalk.italic(question.userQuestion)}`;
|
|
154
158
|
// Embed question for similarity search
|
|
155
159
|
const questionEmbedding = await embeddingService.embedQuery({
|
|
156
160
|
userQuestion: question.userQuestion,
|
|
@@ -158,24 +162,24 @@ async function generateCommand(options) {
|
|
|
158
162
|
technicalDescription: question.technicalDescription,
|
|
159
163
|
});
|
|
160
164
|
// Find similar golden queries
|
|
161
|
-
const similaritySearch = new
|
|
165
|
+
const similaritySearch = new SimilaritySearch();
|
|
162
166
|
const fewShotResults = await similaritySearch.findSimilarQueries(questionEmbedding, embeddedGolden, config.topSimilarQueries);
|
|
163
167
|
const fewShotExamples = fewShotResults.map(s => s.query);
|
|
164
168
|
// Generate SQL query
|
|
165
|
-
const queryWriter = new
|
|
166
|
-
const generatedQuery = await queryWriter.generateQuery(question, group.entities.map((e) =>
|
|
169
|
+
const queryWriter = new QueryWriter(contextUser, config);
|
|
170
|
+
const generatedQuery = await queryWriter.generateQuery(question, group.entities.map((e) => formatEntityMetadataForPrompt(e, group.entities)), fewShotExamples);
|
|
167
171
|
// Test and fix query
|
|
168
172
|
// Access the database provider through Metadata.Provider
|
|
169
|
-
const dataProvider =
|
|
170
|
-
const entityMetadata = group.entities.map((e) =>
|
|
171
|
-
const queryTester = new
|
|
173
|
+
const dataProvider = Metadata.Provider;
|
|
174
|
+
const entityMetadata = group.entities.map((e) => formatEntityMetadataForPrompt(e, group.entities));
|
|
175
|
+
const queryTester = new QueryTester(dataProvider, entityMetadata, question, contextUser, config);
|
|
172
176
|
const testResult = await queryTester.testQuery(generatedQuery, config.maxFixingIterations);
|
|
173
177
|
if (!testResult.success) {
|
|
174
|
-
spinner.warn(
|
|
178
|
+
spinner.warn(chalk.yellow(`${groupPrefix} Query failed after ${config.maxFixingIterations} attempts: ${question.userQuestion}`));
|
|
175
179
|
continue;
|
|
176
180
|
}
|
|
177
181
|
// Refine query
|
|
178
|
-
const queryRefiner = new
|
|
182
|
+
const queryRefiner = new QueryRefiner(queryTester, contextUser, config);
|
|
179
183
|
const refinedResult = await queryRefiner.refineQuery(generatedQuery, question, entityMetadata, config.maxRefinementIterations);
|
|
180
184
|
// Get pre-built category from map
|
|
181
185
|
const category = categoryMap.get(group.primaryEntity.Name);
|
|
@@ -192,89 +196,84 @@ async function generateCommand(options) {
|
|
|
192
196
|
});
|
|
193
197
|
queriesCreatedForGroup++;
|
|
194
198
|
if (config.verbose) {
|
|
195
|
-
spinner.info(`${groupPrefix} ${
|
|
199
|
+
spinner.info(`${groupPrefix} ${chalk.green('✓')} ${question.userQuestion}`);
|
|
196
200
|
}
|
|
197
201
|
}
|
|
198
202
|
// Format entity list with primary entity in bold
|
|
199
203
|
const entityDisplay = group.entities
|
|
200
|
-
.map(e => e.Name === group.primaryEntity.Name ?
|
|
204
|
+
.map(e => e.Name === group.primaryEntity.Name ? chalk.bold(e.Name) : e.Name)
|
|
201
205
|
.join(', ');
|
|
202
|
-
spinner.succeed(`${groupPrefix} ${entityDisplay} complete (${
|
|
206
|
+
spinner.succeed(`${groupPrefix} ${entityDisplay} complete (${chalk.green(queriesCreatedForGroup + ' queries')})`);
|
|
203
207
|
}
|
|
204
208
|
catch (error) {
|
|
205
209
|
// Format entity list with primary entity in bold
|
|
206
210
|
const entityDisplay = group.entities
|
|
207
|
-
.map(e => e.Name === group.primaryEntity.Name ?
|
|
211
|
+
.map(e => e.Name === group.primaryEntity.Name ? chalk.bold(e.Name) : e.Name)
|
|
208
212
|
.join(', ');
|
|
209
|
-
spinner.warn(
|
|
213
|
+
spinner.warn(chalk.yellow(`${groupPrefix} Error processing ${entityDisplay}: ${extractErrorMessage(error, 'Query Generation')}`));
|
|
210
214
|
}
|
|
211
215
|
}
|
|
212
216
|
// 7. Export results
|
|
213
217
|
spinner.start(`Exporting ${allValidatedQueries.length} queries...`);
|
|
214
218
|
if (config.outputMode === 'metadata' || config.outputMode === 'both') {
|
|
215
|
-
const exporter = new
|
|
219
|
+
const exporter = new MetadataExporter();
|
|
216
220
|
const exportResult = await exporter.exportQueries(allValidatedQueries, uniqueCategories, config);
|
|
217
|
-
spinner.succeed(
|
|
221
|
+
spinner.succeed(chalk.green(`Exported to ${exportResult.outputPath}`));
|
|
218
222
|
}
|
|
219
223
|
if (config.outputMode === 'database' || config.outputMode === 'both') {
|
|
220
|
-
const dbWriter = new
|
|
224
|
+
const dbWriter = new QueryDatabaseWriter();
|
|
221
225
|
await dbWriter.writeQueriesToDatabase(allValidatedQueries, contextUser);
|
|
222
|
-
spinner.succeed(
|
|
226
|
+
spinner.succeed(chalk.green(`Wrote ${allValidatedQueries.length} queries to database`));
|
|
223
227
|
}
|
|
224
228
|
// 8. Summary
|
|
225
|
-
console.log('\n' +
|
|
226
|
-
console.log(
|
|
227
|
-
console.log(` Entity Groups Processed: ${
|
|
228
|
-
console.log(` Queries Generated: ${
|
|
229
|
-
console.log(` Output Location: ${
|
|
229
|
+
console.log('\n' + chalk.green.bold('✓ Query generation complete!\n'));
|
|
230
|
+
console.log(chalk.bold('Summary:'));
|
|
231
|
+
console.log(` Entity Groups Processed: ${chalk.cyan(processedGroups.toString())}`);
|
|
232
|
+
console.log(` Queries Generated: ${chalk.green(allValidatedQueries.length.toString())}`);
|
|
233
|
+
console.log(` Output Location: ${chalk.dim(config.outputDirectory)}`);
|
|
230
234
|
process.exit(0);
|
|
231
235
|
}
|
|
232
236
|
catch (error) {
|
|
233
|
-
spinner.fail(
|
|
234
|
-
console.error(
|
|
237
|
+
spinner.fail(chalk.red('Query generation failed'));
|
|
238
|
+
console.error(chalk.red(extractErrorMessage(error, 'Query Generation')));
|
|
235
239
|
process.exit(1);
|
|
236
240
|
}
|
|
237
241
|
}
|
|
238
|
-
exports.generateCommand = generateCommand;
|
|
239
242
|
/**
|
|
240
|
-
* Load golden queries from JSON
|
|
243
|
+
* Load golden queries from compile-time imported JSON data
|
|
241
244
|
*
|
|
242
245
|
* Golden queries are example queries used for few-shot learning.
|
|
243
|
-
* They are
|
|
246
|
+
* They are imported at compile time from data/golden-queries.json.
|
|
247
|
+
*
|
|
248
|
+
* This approach is more efficient than runtime file I/O and provides
|
|
249
|
+
* type safety through TypeScript's resolveJsonModule feature.
|
|
244
250
|
*
|
|
245
251
|
* @param config - QueryGen configuration with verbose flag
|
|
246
|
-
* @returns Array of golden queries
|
|
252
|
+
* @returns Array of golden queries
|
|
247
253
|
*/
|
|
248
254
|
async function loadGoldenQueries(config) {
|
|
249
255
|
try {
|
|
250
|
-
//
|
|
251
|
-
|
|
252
|
-
const
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
(0, core_1.LogStatus)(`[Warning] Golden queries file not found at: ${goldenQueriesPath}`);
|
|
257
|
-
}
|
|
258
|
-
return [];
|
|
259
|
-
}
|
|
260
|
-
// Read and parse JSON file
|
|
261
|
-
const fileContent = fs.readFileSync(goldenQueriesPath, 'utf-8');
|
|
262
|
-
const goldenQueries = JSON.parse(fileContent);
|
|
256
|
+
// Load golden queries from JSON file using ES module compatible path resolution
|
|
257
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
258
|
+
const __dirname = dirname(__filename);
|
|
259
|
+
const goldenQueriesPath = join(__dirname, '../../data/golden-queries.json');
|
|
260
|
+
const goldenQueriesData = JSON.parse(readFileSync(goldenQueriesPath, 'utf-8'));
|
|
261
|
+
const goldenQueries = goldenQueriesData;
|
|
263
262
|
// Validate that it's an array
|
|
264
263
|
if (!Array.isArray(goldenQueries)) {
|
|
265
264
|
if (config.verbose) {
|
|
266
|
-
|
|
265
|
+
LogStatus('[Warning] Golden queries data is not an array');
|
|
267
266
|
}
|
|
268
267
|
return [];
|
|
269
268
|
}
|
|
270
269
|
if (config.verbose) {
|
|
271
|
-
|
|
270
|
+
LogStatus(`[Info] Loaded ${goldenQueries.length} golden queries for few-shot learning`);
|
|
272
271
|
}
|
|
273
272
|
return goldenQueries;
|
|
274
273
|
}
|
|
275
274
|
catch (error) {
|
|
276
275
|
if (config.verbose) {
|
|
277
|
-
|
|
276
|
+
LogStatus(`[Warning] Failed to load golden queries: ${extractErrorMessage(error, 'loadGoldenQueries')}`);
|
|
278
277
|
}
|
|
279
278
|
return [];
|
|
280
279
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Validate command - Validate existing query templates
|
|
4
3
|
*
|
|
@@ -8,78 +7,50 @@
|
|
|
8
7
|
* - Output field validation
|
|
9
8
|
* - Execution testing (optional)
|
|
10
9
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
o[k2] = m[k];
|
|
21
|
-
}));
|
|
22
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
23
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
24
|
-
}) : function(o, v) {
|
|
25
|
-
o["default"] = v;
|
|
26
|
-
});
|
|
27
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
-
};
|
|
37
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
-
exports.validateCommand = void 0;
|
|
39
|
-
const ora_1 = __importDefault(require("ora"));
|
|
40
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
41
|
-
const fs = __importStar(require("fs"));
|
|
42
|
-
const path = __importStar(require("path"));
|
|
43
|
-
const core_1 = require("@memberjunction/core");
|
|
44
|
-
const user_helpers_1 = require("../../utils/user-helpers");
|
|
45
|
-
const QueryTester_1 = require("../../core/QueryTester");
|
|
46
|
-
const error_handlers_1 = require("../../utils/error-handlers");
|
|
47
|
-
const config_1 = require("../config");
|
|
10
|
+
import ora from 'ora';
|
|
11
|
+
import chalk from 'chalk';
|
|
12
|
+
import * as fs from 'fs';
|
|
13
|
+
import * as path from 'path';
|
|
14
|
+
import { Metadata } from '@memberjunction/core';
|
|
15
|
+
import { getSystemUser } from '../../utils/user-helpers.js';
|
|
16
|
+
import { QueryTester } from '../../core/QueryTester.js';
|
|
17
|
+
import { extractErrorMessage } from '../../utils/error-handlers.js';
|
|
18
|
+
import { loadConfig } from '../config.js';
|
|
48
19
|
/**
|
|
49
20
|
* Execute the validate command
|
|
50
21
|
*
|
|
51
22
|
* Loads query metadata files and validates each query template.
|
|
52
23
|
* Reports success/failure statistics.
|
|
53
24
|
*/
|
|
54
|
-
async function validateCommand(options) {
|
|
55
|
-
const spinner = (
|
|
25
|
+
export async function validateCommand(options) {
|
|
26
|
+
const spinner = ora('Initializing validation...').start();
|
|
56
27
|
try {
|
|
57
28
|
const queryPath = String(options.path || './metadata/queries');
|
|
58
29
|
const verbose = Boolean(options.verbose);
|
|
59
30
|
// Load configuration
|
|
60
|
-
const config =
|
|
31
|
+
const config = loadConfig(options);
|
|
61
32
|
// 1. Get system user from UserCache (populated by provider initialization)
|
|
62
|
-
const contextUser =
|
|
33
|
+
const contextUser = getSystemUser();
|
|
63
34
|
// 2. Verify database connection and load metadata
|
|
64
35
|
spinner.text = 'Loading metadata...';
|
|
65
36
|
// Assume provider is already configured by the calling application
|
|
66
|
-
if (!
|
|
37
|
+
if (!Metadata.Provider) {
|
|
67
38
|
throw new Error('Metadata provider not configured. Please ensure database connection is set up before running CLI.');
|
|
68
39
|
}
|
|
69
40
|
spinner.succeed('Metadata loaded');
|
|
70
41
|
// 3. Load query metadata files
|
|
71
42
|
spinner.start(`Loading query files from ${queryPath}...`);
|
|
72
43
|
const queryFiles = await loadQueryFiles(queryPath);
|
|
73
|
-
spinner.succeed(
|
|
44
|
+
spinner.succeed(chalk.green(`Found ${queryFiles.length} query files`));
|
|
74
45
|
// 4. Validate each query
|
|
75
|
-
const dataProvider =
|
|
46
|
+
const dataProvider = Metadata.Provider.DatabaseConnection;
|
|
76
47
|
let passCount = 0;
|
|
77
48
|
let failCount = 0;
|
|
78
49
|
const errors = [];
|
|
79
50
|
for (let i = 0; i < queryFiles.length; i++) {
|
|
80
51
|
const { file, queries } = queryFiles[i];
|
|
81
|
-
const filePrefix =
|
|
82
|
-
spinner.start(`${filePrefix} Validating ${
|
|
52
|
+
const filePrefix = chalk.cyan(`[${i + 1}/${queryFiles.length}]`);
|
|
53
|
+
spinner.start(`${filePrefix} Validating ${chalk.dim(file)}...`);
|
|
83
54
|
for (const queryRecord of queries) {
|
|
84
55
|
try {
|
|
85
56
|
const query = convertMetadataToGeneratedQuery(queryRecord);
|
|
@@ -93,13 +64,13 @@ async function validateCommand(options) {
|
|
|
93
64
|
requiresJoins: false,
|
|
94
65
|
entities: []
|
|
95
66
|
};
|
|
96
|
-
const tester = new
|
|
67
|
+
const tester = new QueryTester(dataProvider, [], dummyQuestion, contextUser, config);
|
|
97
68
|
// Test query execution
|
|
98
69
|
const testResult = await tester.testQuery(query, 1);
|
|
99
70
|
if (testResult.success) {
|
|
100
71
|
passCount++;
|
|
101
72
|
if (verbose) {
|
|
102
|
-
spinner.info(`${filePrefix} ${
|
|
73
|
+
spinner.info(`${filePrefix} ${chalk.green('✓')} ${queryRecord.fields.Name}`);
|
|
103
74
|
}
|
|
104
75
|
}
|
|
105
76
|
else {
|
|
@@ -107,54 +78,53 @@ async function validateCommand(options) {
|
|
|
107
78
|
const errorMsg = testResult.error || 'Unknown error';
|
|
108
79
|
errors.push({ file, error: `${queryRecord.fields.Name}: ${errorMsg}` });
|
|
109
80
|
if (verbose) {
|
|
110
|
-
spinner.warn(`${filePrefix} ${
|
|
81
|
+
spinner.warn(`${filePrefix} ${chalk.red('✗')} ${queryRecord.fields.Name}: ${errorMsg}`);
|
|
111
82
|
}
|
|
112
83
|
}
|
|
113
84
|
}
|
|
114
85
|
catch (error) {
|
|
115
86
|
failCount++;
|
|
116
|
-
const errorMsg =
|
|
87
|
+
const errorMsg = extractErrorMessage(error, 'Query Validation');
|
|
117
88
|
errors.push({ file, error: `${queryRecord.fields.Name}: ${errorMsg}` });
|
|
118
89
|
if (verbose) {
|
|
119
|
-
spinner.warn(`${filePrefix} ${
|
|
90
|
+
spinner.warn(`${filePrefix} ${chalk.red('✗')} ${queryRecord.fields.Name}: ${errorMsg}`);
|
|
120
91
|
}
|
|
121
92
|
}
|
|
122
93
|
}
|
|
123
|
-
spinner.succeed(`${filePrefix} ${
|
|
94
|
+
spinner.succeed(`${filePrefix} ${chalk.dim(file)} complete`);
|
|
124
95
|
}
|
|
125
96
|
// 5. Summary
|
|
126
97
|
if (failCount === 0) {
|
|
127
|
-
spinner.succeed(
|
|
128
|
-
console.log('\n' +
|
|
129
|
-
console.log(
|
|
130
|
-
console.log(` Total Queries: ${
|
|
131
|
-
console.log(` Passed: ${
|
|
132
|
-
console.log(` Failed: ${
|
|
98
|
+
spinner.succeed(chalk.green.bold(`✓ All ${passCount} queries validated successfully!`));
|
|
99
|
+
console.log('\n' + chalk.green.bold('✓ Validation complete!\n'));
|
|
100
|
+
console.log(chalk.bold('Summary:'));
|
|
101
|
+
console.log(` Total Queries: ${chalk.cyan(passCount.toString())}`);
|
|
102
|
+
console.log(` Passed: ${chalk.green(passCount.toString())}`);
|
|
103
|
+
console.log(` Failed: ${chalk.green('0')}`);
|
|
133
104
|
process.exit(0);
|
|
134
105
|
}
|
|
135
106
|
else {
|
|
136
|
-
spinner.fail(
|
|
137
|
-
console.log('\n' +
|
|
138
|
-
console.log(
|
|
139
|
-
console.log(` Total Queries: ${
|
|
140
|
-
console.log(` Passed: ${
|
|
141
|
-
console.log(` Failed: ${
|
|
107
|
+
spinner.fail(chalk.yellow(`Validation completed with ${failCount} errors`));
|
|
108
|
+
console.log('\n' + chalk.yellow.bold('⚠ Validation completed with errors\n'));
|
|
109
|
+
console.log(chalk.bold('Summary:'));
|
|
110
|
+
console.log(` Total Queries: ${chalk.cyan((passCount + failCount).toString())}`);
|
|
111
|
+
console.log(` Passed: ${chalk.green(passCount.toString())}`);
|
|
112
|
+
console.log(` Failed: ${chalk.red(failCount.toString())}`);
|
|
142
113
|
if (errors.length > 0) {
|
|
143
|
-
console.log('\n' +
|
|
114
|
+
console.log('\n' + chalk.bold('Errors:'));
|
|
144
115
|
for (const { file, error } of errors) {
|
|
145
|
-
console.log(
|
|
116
|
+
console.log(chalk.red(` ${file}: ${error}`));
|
|
146
117
|
}
|
|
147
118
|
}
|
|
148
119
|
process.exit(1);
|
|
149
120
|
}
|
|
150
121
|
}
|
|
151
122
|
catch (error) {
|
|
152
|
-
spinner.fail(
|
|
153
|
-
console.error(
|
|
123
|
+
spinner.fail(chalk.red('Validation failed'));
|
|
124
|
+
console.error(chalk.red(extractErrorMessage(error, 'Query Validation')));
|
|
154
125
|
process.exit(1);
|
|
155
126
|
}
|
|
156
127
|
}
|
|
157
|
-
exports.validateCommand = validateCommand;
|
|
158
128
|
/**
|
|
159
129
|
* Load all query metadata files from the specified directory
|
|
160
130
|
*/
|