@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.
Files changed (77) hide show
  1. package/.turbo/turbo-build.log +2 -2
  2. package/CHANGELOG.md +54 -0
  3. package/README.md +30 -2
  4. package/dist/cli/commands/export.js +35 -65
  5. package/dist/cli/commands/export.js.map +1 -1
  6. package/dist/cli/commands/generate.d.ts.map +1 -1
  7. package/dist/cli/commands/generate.js +114 -115
  8. package/dist/cli/commands/generate.js.map +1 -1
  9. package/dist/cli/commands/validate.js +40 -70
  10. package/dist/cli/commands/validate.js.map +1 -1
  11. package/dist/cli/config.d.ts +1 -0
  12. package/dist/cli/config.d.ts.map +1 -1
  13. package/dist/cli/config.js +8 -7
  14. package/dist/cli/config.js.map +1 -1
  15. package/dist/cli/index.js +11 -10
  16. package/dist/cli/index.js.map +1 -1
  17. package/dist/core/EntityGrouper.d.ts +5 -2
  18. package/dist/core/EntityGrouper.d.ts.map +1 -1
  19. package/dist/core/EntityGrouper.js +94 -39
  20. package/dist/core/EntityGrouper.js.map +1 -1
  21. package/dist/core/MetadataExporter.d.ts +2 -2
  22. package/dist/core/MetadataExporter.js +9 -36
  23. package/dist/core/MetadataExporter.js.map +1 -1
  24. package/dist/core/QueryDatabaseWriter.d.ts +1 -1
  25. package/dist/core/QueryDatabaseWriter.js +8 -12
  26. package/dist/core/QueryDatabaseWriter.js.map +1 -1
  27. package/dist/core/QueryFixer.d.ts +2 -2
  28. package/dist/core/QueryFixer.js +11 -17
  29. package/dist/core/QueryFixer.js.map +1 -1
  30. package/dist/core/QueryRefiner.d.ts +3 -3
  31. package/dist/core/QueryRefiner.js +22 -29
  32. package/dist/core/QueryRefiner.js.map +1 -1
  33. package/dist/core/QueryTester.d.ts +2 -2
  34. package/dist/core/QueryTester.js +11 -44
  35. package/dist/core/QueryTester.js.map +1 -1
  36. package/dist/core/QueryWriter.d.ts +2 -2
  37. package/dist/core/QueryWriter.js +12 -18
  38. package/dist/core/QueryWriter.js.map +1 -1
  39. package/dist/core/QuestionGenerator.d.ts +2 -2
  40. package/dist/core/QuestionGenerator.js +16 -22
  41. package/dist/core/QuestionGenerator.js.map +1 -1
  42. package/dist/data/schema.js +1 -2
  43. package/dist/data/schema.js.map +1 -1
  44. package/dist/index.d.ts +18 -18
  45. package/dist/index.js +18 -59
  46. package/dist/index.js.map +1 -1
  47. package/dist/prompts/PromptNames.js +5 -8
  48. package/dist/prompts/PromptNames.js.map +1 -1
  49. package/dist/utils/category-builder.d.ts +2 -2
  50. package/dist/utils/category-builder.js +2 -7
  51. package/dist/utils/category-builder.js.map +1 -1
  52. package/dist/utils/entity-helpers.d.ts +1 -1
  53. package/dist/utils/entity-helpers.js +7 -17
  54. package/dist/utils/entity-helpers.js.map +1 -1
  55. package/dist/utils/error-handlers.js +3 -9
  56. package/dist/utils/error-handlers.js.map +1 -1
  57. package/dist/utils/graph-helpers.js +3 -9
  58. package/dist/utils/graph-helpers.js.map +1 -1
  59. package/dist/utils/prompt-helpers.d.ts +1 -1
  60. package/dist/utils/prompt-helpers.js +8 -12
  61. package/dist/utils/prompt-helpers.js.map +1 -1
  62. package/dist/utils/user-helpers.js +3 -7
  63. package/dist/utils/user-helpers.js.map +1 -1
  64. package/dist/vectors/EmbeddingService.d.ts +1 -1
  65. package/dist/vectors/EmbeddingService.js +3 -8
  66. package/dist/vectors/EmbeddingService.js.map +1 -1
  67. package/dist/vectors/SimilaritySearch.d.ts +1 -1
  68. package/dist/vectors/SimilaritySearch.js +19 -20
  69. package/dist/vectors/SimilaritySearch.js.map +1 -1
  70. package/package.json +24 -17
  71. package/src/__tests__/golden-queries-loader.test.js +181 -0
  72. package/src/cli/commands/generate.ts +52 -21
  73. package/src/cli/config.ts +10 -2
  74. package/src/cli/index.ts +4 -1
  75. package/src/core/EntityGrouper.ts +75 -11
  76. package/src/core/QueryTester.ts +1 -1
  77. 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
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- var desc = Object.getOwnPropertyDescriptor(m, k);
16
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
- desc = { enumerable: true, get: function() { return m[k]; } };
18
- }
19
- Object.defineProperty(o, k2, desc);
20
- }) : (function(o, m, k, k2) {
21
- if (k2 === undefined) k2 = k;
22
- o[k2] = m[k];
23
- }));
24
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
- Object.defineProperty(o, "default", { enumerable: true, value: v });
26
- }) : function(o, v) {
27
- o["default"] = v;
28
- });
29
- var __importStar = (this && this.__importStar) || function (mod) {
30
- if (mod && mod.__esModule) return mod;
31
- var result = {};
32
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
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 = (0, ora_1.default)('Initializing query generation...').start();
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 = (0, config_1.loadConfig)(options);
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(chalk_1.default.cyan(`Using overrides - ${overrideMsg.join(', ')}`));
51
+ spinner.info(chalk.cyan(`Using overrides - ${overrideMsg.join(', ')}`));
80
52
  }
81
53
  if (config.verbose) {
82
- spinner.info(chalk_1.default.dim('Configuration loaded'));
83
- console.log(chalk_1.default.dim(JSON.stringify(config, null, 2)));
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 = (0, user_helpers_1.getSystemUser)();
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 (!core_1.Metadata.Provider) {
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 core_1.Metadata();
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(chalk_1.default.dim(`Including only ${config.includeEntities.length} specified entities`));
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(chalk_1.default.dim(`Excluded ${config.excludeEntities.length} entities`));
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(chalk_1.default.dim(`Processing ${schemaCount} schemas separately`));
118
+ spinner.info(chalk.dim(`Processing ${schemaCount} schemas separately`));
115
119
  }
116
- const grouper = new EntityGrouper_1.EntityGrouper(config);
120
+ const grouper = new EntityGrouper(config);
117
121
  const entityGroups = await grouper.generateEntityGroups(filteredEntities, contextUser);
118
- spinner.succeed(chalk_1.default.green(`Found ${entityGroups.length} entity groups across ${schemaCount} ${schemaCount === 1 ? 'schema' : 'schemas'}`));
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 EmbeddingService_1.EmbeddingService(config.embeddingModel);
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(chalk_1.default.green(`Embedded ${goldenQueries.length} golden queries`));
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 = (0, category_builder_1.buildQueryCategory)(config, group);
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 = (0, category_builder_1.extractUniqueCategories)(Array.from(categoryMap.values()));
134
- spinner.succeed(chalk_1.default.green(`Created ${uniqueCategories.length} ${uniqueCategories.length === 1 ? 'category' : 'categories'}`));
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 = chalk_1.default.cyan(`[${processedGroups}/${totalGroups}]`);
142
- spinner.start(`${groupPrefix} Processing ${chalk_1.default.bold(group.primaryEntity.Name)}...`);
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 QuestionGenerator_1.QuestionGenerator(contextUser, config);
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: ${chalk_1.default.italic(question.userQuestion)}`;
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 SimilaritySearch_1.SimilaritySearch();
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 QueryWriter_1.QueryWriter(contextUser, config);
166
- const generatedQuery = await queryWriter.generateQuery(question, group.entities.map((e) => (0, entity_helpers_1.formatEntityMetadataForPrompt)(e, group.entities)), fewShotExamples);
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 = core_1.Metadata.Provider;
170
- const entityMetadata = group.entities.map((e) => (0, entity_helpers_1.formatEntityMetadataForPrompt)(e, group.entities));
171
- const queryTester = new QueryTester_1.QueryTester(dataProvider, entityMetadata, question, contextUser, config);
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(chalk_1.default.yellow(`${groupPrefix} Query failed after ${config.maxFixingIterations} attempts: ${question.userQuestion}`));
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 QueryRefiner_1.QueryRefiner(queryTester, contextUser, config);
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} ${chalk_1.default.green('✓')} ${question.userQuestion}`);
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 ? chalk_1.default.bold(e.Name) : e.Name)
204
+ .map(e => e.Name === group.primaryEntity.Name ? chalk.bold(e.Name) : e.Name)
201
205
  .join(', ');
202
- spinner.succeed(`${groupPrefix} ${entityDisplay} complete (${chalk_1.default.green(queriesCreatedForGroup + ' queries')})`);
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 ? chalk_1.default.bold(e.Name) : e.Name)
211
+ .map(e => e.Name === group.primaryEntity.Name ? chalk.bold(e.Name) : e.Name)
208
212
  .join(', ');
209
- spinner.warn(chalk_1.default.yellow(`${groupPrefix} Error processing ${entityDisplay}: ${(0, error_handlers_1.extractErrorMessage)(error, 'Query Generation')}`));
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 MetadataExporter_1.MetadataExporter();
219
+ const exporter = new MetadataExporter();
216
220
  const exportResult = await exporter.exportQueries(allValidatedQueries, uniqueCategories, config);
217
- spinner.succeed(chalk_1.default.green(`Exported to ${exportResult.outputPath}`));
221
+ spinner.succeed(chalk.green(`Exported to ${exportResult.outputPath}`));
218
222
  }
219
223
  if (config.outputMode === 'database' || config.outputMode === 'both') {
220
- const dbWriter = new QueryDatabaseWriter_1.QueryDatabaseWriter();
224
+ const dbWriter = new QueryDatabaseWriter();
221
225
  await dbWriter.writeQueriesToDatabase(allValidatedQueries, contextUser);
222
- spinner.succeed(chalk_1.default.green(`Wrote ${allValidatedQueries.length} queries to database`));
226
+ spinner.succeed(chalk.green(`Wrote ${allValidatedQueries.length} queries to database`));
223
227
  }
224
228
  // 8. Summary
225
- console.log('\n' + chalk_1.default.green.bold('✓ Query generation complete!\n'));
226
- console.log(chalk_1.default.bold('Summary:'));
227
- console.log(` Entity Groups Processed: ${chalk_1.default.cyan(processedGroups.toString())}`);
228
- console.log(` Queries Generated: ${chalk_1.default.green(allValidatedQueries.length.toString())}`);
229
- console.log(` Output Location: ${chalk_1.default.dim(config.outputDirectory)}`);
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(chalk_1.default.red('Query generation failed'));
234
- console.error(chalk_1.default.red((0, error_handlers_1.extractErrorMessage)(error, 'Query Generation')));
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 file
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 stored in the data/golden-queries.json file.
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, or empty array if file not found/invalid
252
+ * @returns Array of golden queries
247
253
  */
248
254
  async function loadGoldenQueries(config) {
249
255
  try {
250
- // Resolve path to golden-queries.json in the data directory
251
- // __dirname points to dist/cli/commands, so we go up to dist, then to data
252
- const goldenQueriesPath = path.join(__dirname, '../../data/golden-queries.json');
253
- // Check if file exists
254
- if (!fs.existsSync(goldenQueriesPath)) {
255
- if (config.verbose) {
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
- (0, core_1.LogStatus)('[Warning] Golden queries file does not contain an array');
265
+ LogStatus('[Warning] Golden queries data is not an array');
267
266
  }
268
267
  return [];
269
268
  }
270
269
  if (config.verbose) {
271
- (0, core_1.LogStatus)(`[Info] Loaded ${goldenQueries.length} golden queries for few-shot learning`);
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
- (0, core_1.LogStatus)(`[Warning] Failed to load golden queries: ${(0, error_handlers_1.extractErrorMessage)(error, 'loadGoldenQueries')}`);
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
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
- if (k2 === undefined) k2 = k;
13
- var desc = Object.getOwnPropertyDescriptor(m, k);
14
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
- desc = { enumerable: true, get: function() { return m[k]; } };
16
- }
17
- Object.defineProperty(o, k2, desc);
18
- }) : (function(o, m, k, k2) {
19
- if (k2 === undefined) k2 = k;
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 = (0, ora_1.default)('Initializing validation...').start();
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 = (0, config_1.loadConfig)(options);
31
+ const config = loadConfig(options);
61
32
  // 1. Get system user from UserCache (populated by provider initialization)
62
- const contextUser = (0, user_helpers_1.getSystemUser)();
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 (!core_1.Metadata.Provider) {
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(chalk_1.default.green(`Found ${queryFiles.length} query files`));
44
+ spinner.succeed(chalk.green(`Found ${queryFiles.length} query files`));
74
45
  // 4. Validate each query
75
- const dataProvider = core_1.Metadata.Provider.DatabaseConnection;
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 = chalk_1.default.cyan(`[${i + 1}/${queryFiles.length}]`);
82
- spinner.start(`${filePrefix} Validating ${chalk_1.default.dim(file)}...`);
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 QueryTester_1.QueryTester(dataProvider, [], dummyQuestion, contextUser, config);
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} ${chalk_1.default.green('✓')} ${queryRecord.fields.Name}`);
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} ${chalk_1.default.red('✗')} ${queryRecord.fields.Name}: ${errorMsg}`);
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 = (0, error_handlers_1.extractErrorMessage)(error, 'Query Validation');
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} ${chalk_1.default.red('✗')} ${queryRecord.fields.Name}: ${errorMsg}`);
90
+ spinner.warn(`${filePrefix} ${chalk.red('✗')} ${queryRecord.fields.Name}: ${errorMsg}`);
120
91
  }
121
92
  }
122
93
  }
123
- spinner.succeed(`${filePrefix} ${chalk_1.default.dim(file)} complete`);
94
+ spinner.succeed(`${filePrefix} ${chalk.dim(file)} complete`);
124
95
  }
125
96
  // 5. Summary
126
97
  if (failCount === 0) {
127
- spinner.succeed(chalk_1.default.green.bold(`✓ All ${passCount} queries validated successfully!`));
128
- console.log('\n' + chalk_1.default.green.bold('✓ Validation complete!\n'));
129
- console.log(chalk_1.default.bold('Summary:'));
130
- console.log(` Total Queries: ${chalk_1.default.cyan(passCount.toString())}`);
131
- console.log(` Passed: ${chalk_1.default.green(passCount.toString())}`);
132
- console.log(` Failed: ${chalk_1.default.green('0')}`);
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(chalk_1.default.yellow(`Validation completed with ${failCount} errors`));
137
- console.log('\n' + chalk_1.default.yellow.bold('⚠ Validation completed with errors\n'));
138
- console.log(chalk_1.default.bold('Summary:'));
139
- console.log(` Total Queries: ${chalk_1.default.cyan((passCount + failCount).toString())}`);
140
- console.log(` Passed: ${chalk_1.default.green(passCount.toString())}`);
141
- console.log(` Failed: ${chalk_1.default.red(failCount.toString())}`);
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' + chalk_1.default.bold('Errors:'));
114
+ console.log('\n' + chalk.bold('Errors:'));
144
115
  for (const { file, error } of errors) {
145
- console.log(chalk_1.default.red(` ${file}: ${error}`));
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(chalk_1.default.red('Validation failed'));
153
- console.error(chalk_1.default.red((0, error_handlers_1.extractErrorMessage)(error, 'Query Validation')));
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
  */