@memberjunction/query-gen 3.3.0 → 4.0.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 (70) hide show
  1. package/.turbo/turbo-build.log +6 -4
  2. package/CHANGELOG.md +52 -0
  3. package/dist/cli/commands/export.js +35 -65
  4. package/dist/cli/commands/export.js.map +1 -1
  5. package/dist/cli/commands/generate.js +70 -100
  6. package/dist/cli/commands/generate.js.map +1 -1
  7. package/dist/cli/commands/validate.js +40 -70
  8. package/dist/cli/commands/validate.js.map +1 -1
  9. package/dist/cli/config.d.ts.map +1 -1
  10. package/dist/cli/config.js +7 -7
  11. package/dist/cli/config.js.map +1 -1
  12. package/dist/cli/index.js +11 -10
  13. package/dist/cli/index.js.map +1 -1
  14. package/dist/core/EntityGrouper.d.ts +2 -2
  15. package/dist/core/EntityGrouper.js +23 -28
  16. package/dist/core/EntityGrouper.js.map +1 -1
  17. package/dist/core/MetadataExporter.d.ts +2 -2
  18. package/dist/core/MetadataExporter.js +9 -36
  19. package/dist/core/MetadataExporter.js.map +1 -1
  20. package/dist/core/QueryDatabaseWriter.d.ts +1 -1
  21. package/dist/core/QueryDatabaseWriter.js +8 -12
  22. package/dist/core/QueryDatabaseWriter.js.map +1 -1
  23. package/dist/core/QueryFixer.d.ts +2 -2
  24. package/dist/core/QueryFixer.js +11 -17
  25. package/dist/core/QueryFixer.js.map +1 -1
  26. package/dist/core/QueryRefiner.d.ts +3 -3
  27. package/dist/core/QueryRefiner.js +22 -29
  28. package/dist/core/QueryRefiner.js.map +1 -1
  29. package/dist/core/QueryTester.d.ts +2 -2
  30. package/dist/core/QueryTester.js +11 -44
  31. package/dist/core/QueryTester.js.map +1 -1
  32. package/dist/core/QueryWriter.d.ts +2 -2
  33. package/dist/core/QueryWriter.js +12 -18
  34. package/dist/core/QueryWriter.js.map +1 -1
  35. package/dist/core/QuestionGenerator.d.ts +2 -2
  36. package/dist/core/QuestionGenerator.js +16 -22
  37. package/dist/core/QuestionGenerator.js.map +1 -1
  38. package/dist/data/schema.js +1 -2
  39. package/dist/data/schema.js.map +1 -1
  40. package/dist/index.d.ts +18 -18
  41. package/dist/index.js +18 -59
  42. package/dist/index.js.map +1 -1
  43. package/dist/prompts/PromptNames.js +5 -8
  44. package/dist/prompts/PromptNames.js.map +1 -1
  45. package/dist/utils/category-builder.d.ts +2 -2
  46. package/dist/utils/category-builder.js +2 -7
  47. package/dist/utils/category-builder.js.map +1 -1
  48. package/dist/utils/entity-helpers.d.ts +1 -1
  49. package/dist/utils/entity-helpers.js +7 -17
  50. package/dist/utils/entity-helpers.js.map +1 -1
  51. package/dist/utils/error-handlers.js +3 -9
  52. package/dist/utils/error-handlers.js.map +1 -1
  53. package/dist/utils/graph-helpers.js +3 -9
  54. package/dist/utils/graph-helpers.js.map +1 -1
  55. package/dist/utils/prompt-helpers.d.ts +1 -1
  56. package/dist/utils/prompt-helpers.js +8 -12
  57. package/dist/utils/prompt-helpers.js.map +1 -1
  58. package/dist/utils/user-helpers.js +3 -7
  59. package/dist/utils/user-helpers.js.map +1 -1
  60. package/dist/vectors/EmbeddingService.d.ts +1 -1
  61. package/dist/vectors/EmbeddingService.js +3 -8
  62. package/dist/vectors/EmbeddingService.js.map +1 -1
  63. package/dist/vectors/SimilaritySearch.d.ts +1 -1
  64. package/dist/vectors/SimilaritySearch.js +19 -20
  65. package/dist/vectors/SimilaritySearch.js.map +1 -1
  66. package/package.json +18 -17
  67. package/src/cli/config.ts +8 -2
  68. package/src/cli/index.ts +4 -1
  69. package/tsconfig.json +5 -35
  70. package/typedoc.json +9 -0
@@ -1,4 +1,6 @@
1
-
2
- > @memberjunction/query-gen@3.3.0 build
3
- > tsc
4
-
1
+
2
+ ⠙
3
+ > @memberjunction/query-gen@4.0.0 build
4
+ > tsc && tsc-alias -f
5
+
6
+ ⠙⠙
package/CHANGELOG.md CHANGED
@@ -1,5 +1,57 @@
1
1
  # @memberjunction/query-gen
2
2
 
3
+ ## 4.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - 8366d44: we goin' to 4.0!
8
+ - fe73344: Angular 21/Node 24/ESM everywhere, and more
9
+ - 5f6306c: 4.0
10
+
11
+ ### Minor Changes
12
+
13
+ - e06f81c: changed SO much!
14
+
15
+ ### Patch Changes
16
+
17
+ - Updated dependencies [2f86270]
18
+ - Updated dependencies [65b4274]
19
+ - Updated dependencies [8366d44]
20
+ - Updated dependencies [f159146]
21
+ - Updated dependencies [718b0ee]
22
+ - Updated dependencies [5c7f6ab]
23
+ - Updated dependencies [fe73344]
24
+ - Updated dependencies [5f6306c]
25
+ - Updated dependencies [e06f81c]
26
+ - @memberjunction/aiengine@4.0.0
27
+ - @memberjunction/sqlserver-dataprovider@4.0.0
28
+ - @memberjunction/ai@4.0.0
29
+ - @memberjunction/ai-core-plus@4.0.0
30
+ - @memberjunction/ai-prompts@4.0.0
31
+ - @memberjunction/ai-vectors-memory@4.0.0
32
+ - @memberjunction/core@4.0.0
33
+ - @memberjunction/core-entities@4.0.0
34
+ - @memberjunction/global@4.0.0
35
+
36
+ ## 3.4.0
37
+
38
+ ### Patch Changes
39
+
40
+ - 3a71e4e: Fix large text field corruptions, cross-platform improvements, more robust environment variable parsing for boolean values
41
+ - Updated dependencies [d596467]
42
+ - Updated dependencies [3a71e4e]
43
+ - Updated dependencies [18b4e65]
44
+ - Updated dependencies [a3961d5]
45
+ - @memberjunction/ai-prompts@3.4.0
46
+ - @memberjunction/sqlserver-dataprovider@3.4.0
47
+ - @memberjunction/core-entities@3.4.0
48
+ - @memberjunction/core@3.4.0
49
+ - @memberjunction/aiengine@3.4.0
50
+ - @memberjunction/ai-core-plus@3.4.0
51
+ - @memberjunction/ai-vectors-memory@3.4.0
52
+ - @memberjunction/ai@3.4.0
53
+ - @memberjunction/global@3.4.0
54
+
3
55
  ## 3.3.0
4
56
 
5
57
  ### Patch Changes
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * Export command - Export queries from database to metadata files
4
3
  *
@@ -7,64 +6,36 @@
7
6
  * - Includes related Query Fields and Query Params
8
7
  * - Exports to JSON files in MJ metadata format
9
8
  */
10
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k;
12
- var desc = Object.getOwnPropertyDescriptor(m, k);
13
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
14
- desc = { enumerable: true, get: function() { return m[k]; } };
15
- }
16
- Object.defineProperty(o, k2, desc);
17
- }) : (function(o, m, k, k2) {
18
- if (k2 === undefined) k2 = k;
19
- o[k2] = m[k];
20
- }));
21
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
22
- Object.defineProperty(o, "default", { enumerable: true, value: v });
23
- }) : function(o, v) {
24
- o["default"] = v;
25
- });
26
- var __importStar = (this && this.__importStar) || function (mod) {
27
- if (mod && mod.__esModule) return mod;
28
- var result = {};
29
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
30
- __setModuleDefault(result, mod);
31
- return result;
32
- };
33
- var __importDefault = (this && this.__importDefault) || function (mod) {
34
- return (mod && mod.__esModule) ? mod : { "default": mod };
35
- };
36
- Object.defineProperty(exports, "__esModule", { value: true });
37
- exports.exportCommand = void 0;
38
- const ora_1 = __importDefault(require("ora"));
39
- const chalk_1 = __importDefault(require("chalk"));
40
- const fs = __importStar(require("fs"));
41
- const path = __importStar(require("path"));
42
- const core_1 = require("@memberjunction/core");
43
- const user_helpers_1 = require("../../utils/user-helpers");
44
- const error_handlers_1 = require("../../utils/error-handlers");
9
+ import ora from 'ora';
10
+ import chalk from 'chalk';
11
+ import * as fs from 'fs';
12
+ import * as path from 'path';
13
+ import { Metadata, RunView } from '@memberjunction/core';
14
+ import { getSystemUser } from '../../utils/user-helpers.js';
15
+ import { extractErrorMessage } from '../../utils/error-handlers.js';
45
16
  /**
46
17
  * Execute the export command
47
18
  *
48
19
  * Loads queries from database and exports them to metadata files.
49
20
  */
50
- async function exportCommand(options) {
51
- const spinner = (0, ora_1.default)('Initializing export...').start();
21
+ export async function exportCommand(options) {
22
+ const spinner = ora('Initializing export...').start();
52
23
  try {
53
24
  const outputPath = String(options.output || './metadata/queries');
54
25
  const verbose = Boolean(options.verbose);
55
26
  // 1. Get system user from UserCache (populated by provider initialization)
56
- const contextUser = (0, user_helpers_1.getSystemUser)();
27
+ const contextUser = getSystemUser();
57
28
  // 2. Verify database connection and load metadata
58
29
  spinner.text = 'Loading metadata...';
59
30
  // Assume provider is already configured by the calling application
60
- if (!core_1.Metadata.Provider) {
31
+ if (!Metadata.Provider) {
61
32
  throw new Error('Metadata provider not configured. Please ensure database connection is set up before running CLI.');
62
33
  }
63
34
  spinner.succeed('Metadata loaded');
64
35
  // 3. Load queries from database
65
36
  spinner.start('Loading queries from database...');
66
37
  const queries = await loadQueriesFromDatabase(contextUser);
67
- spinner.succeed(chalk_1.default.green(`Found ${queries.length} queries`));
38
+ spinner.succeed(chalk.green(`Found ${queries.length} queries`));
68
39
  // 4. Create output directory if it doesn't exist
69
40
  if (!fs.existsSync(outputPath)) {
70
41
  fs.mkdirSync(outputPath, { recursive: true });
@@ -74,8 +45,8 @@ async function exportCommand(options) {
74
45
  const errors = [];
75
46
  for (let i = 0; i < queries.length; i++) {
76
47
  const query = queries[i];
77
- const queryPrefix = chalk_1.default.cyan(`[${i + 1}/${queries.length}]`);
78
- spinner.start(`${queryPrefix} Exporting ${chalk_1.default.bold(query.Name)}...`);
48
+ const queryPrefix = chalk.cyan(`[${i + 1}/${queries.length}]`);
49
+ spinner.start(`${queryPrefix} Exporting ${chalk.bold(query.Name)}...`);
79
50
  try {
80
51
  const metadataRecord = await convertQueryToMetadata(query, contextUser);
81
52
  const filename = sanitizeFilename(query.Name) + '.json';
@@ -83,56 +54,55 @@ async function exportCommand(options) {
83
54
  fs.writeFileSync(fullPath, JSON.stringify(metadataRecord, null, 2), 'utf-8');
84
55
  exportCount++;
85
56
  if (verbose) {
86
- spinner.info(`${queryPrefix} ${chalk_1.default.green('✓')} Exported ${query.Name}`);
57
+ spinner.info(`${queryPrefix} ${chalk.green('✓')} Exported ${query.Name}`);
87
58
  }
88
59
  }
89
60
  catch (error) {
90
- const errorMsg = (0, error_handlers_1.extractErrorMessage)(error, 'Query Export');
61
+ const errorMsg = extractErrorMessage(error, 'Query Export');
91
62
  errors.push({ query: query.Name, error: errorMsg });
92
63
  if (verbose) {
93
- spinner.warn(`${queryPrefix} ${chalk_1.default.red('✗')} ${query.Name}: ${errorMsg}`);
64
+ spinner.warn(`${queryPrefix} ${chalk.red('✗')} ${query.Name}: ${errorMsg}`);
94
65
  }
95
66
  }
96
67
  }
97
68
  // 6. Summary
98
69
  if (errors.length === 0) {
99
- spinner.succeed(chalk_1.default.green.bold(`✓ All ${exportCount} queries exported successfully!`));
100
- console.log('\n' + chalk_1.default.green.bold('✓ Export complete!\n'));
101
- console.log(chalk_1.default.bold('Summary:'));
102
- console.log(` Total Queries: ${chalk_1.default.cyan(exportCount.toString())}`);
103
- console.log(` Exported: ${chalk_1.default.green(exportCount.toString())}`);
104
- console.log(` Output Location: ${chalk_1.default.dim(outputPath)}`);
70
+ spinner.succeed(chalk.green.bold(`✓ All ${exportCount} queries exported successfully!`));
71
+ console.log('\n' + chalk.green.bold('✓ Export complete!\n'));
72
+ console.log(chalk.bold('Summary:'));
73
+ console.log(` Total Queries: ${chalk.cyan(exportCount.toString())}`);
74
+ console.log(` Exported: ${chalk.green(exportCount.toString())}`);
75
+ console.log(` Output Location: ${chalk.dim(outputPath)}`);
105
76
  process.exit(0);
106
77
  }
107
78
  else {
108
- spinner.fail(chalk_1.default.yellow(`Export completed with ${errors.length} errors`));
109
- console.log('\n' + chalk_1.default.yellow.bold('⚠ Export completed with errors\n'));
110
- console.log(chalk_1.default.bold('Summary:'));
111
- console.log(` Total Queries: ${chalk_1.default.cyan(queries.length.toString())}`);
112
- console.log(` Exported: ${chalk_1.default.green(exportCount.toString())}`);
113
- console.log(` Failed: ${chalk_1.default.red(errors.length.toString())}`);
114
- console.log(` Output Location: ${chalk_1.default.dim(outputPath)}`);
79
+ spinner.fail(chalk.yellow(`Export completed with ${errors.length} errors`));
80
+ console.log('\n' + chalk.yellow.bold('⚠ Export completed with errors\n'));
81
+ console.log(chalk.bold('Summary:'));
82
+ console.log(` Total Queries: ${chalk.cyan(queries.length.toString())}`);
83
+ console.log(` Exported: ${chalk.green(exportCount.toString())}`);
84
+ console.log(` Failed: ${chalk.red(errors.length.toString())}`);
85
+ console.log(` Output Location: ${chalk.dim(outputPath)}`);
115
86
  if (errors.length > 0) {
116
- console.log('\n' + chalk_1.default.bold('Errors:'));
87
+ console.log('\n' + chalk.bold('Errors:'));
117
88
  for (const { query, error } of errors) {
118
- console.log(chalk_1.default.red(` ${query}: ${error}`));
89
+ console.log(chalk.red(` ${query}: ${error}`));
119
90
  }
120
91
  }
121
92
  process.exit(1);
122
93
  }
123
94
  }
124
95
  catch (error) {
125
- spinner.fail(chalk_1.default.red('Export failed'));
126
- console.error(chalk_1.default.red((0, error_handlers_1.extractErrorMessage)(error, 'Query Export')));
96
+ spinner.fail(chalk.red('Export failed'));
97
+ console.error(chalk.red(extractErrorMessage(error, 'Query Export')));
127
98
  process.exit(1);
128
99
  }
129
100
  }
130
- exports.exportCommand = exportCommand;
131
101
  /**
132
102
  * Load all queries from the database
133
103
  */
134
104
  async function loadQueriesFromDatabase(contextUser) {
135
- const rv = new core_1.RunView();
105
+ const rv = new RunView();
136
106
  const result = await rv.RunView({
137
107
  EntityName: 'Queries',
138
108
  ExtraFilter: '',
@@ -1 +1 @@
1
- {"version":3,"file":"export.js","sourceRoot":"","sources":["../../../src/cli/commands/export.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../../src/cli/commands/export.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * Generate command - Main query generation workflow
4
3
  *
@@ -10,65 +9,37 @@
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 * as fs from 'fs';
15
+ import * as path from 'path';
16
+ import { Metadata, LogStatus } from '@memberjunction/core';
17
+ import { loadConfig } from '../config.js';
18
+ import { getSystemUser } from '../../utils/user-helpers.js';
19
+ import { EntityGrouper } from '../../core/EntityGrouper.js';
20
+ import { QuestionGenerator } from '../../core/QuestionGenerator.js';
21
+ import { QueryWriter } from '../../core/QueryWriter.js';
22
+ import { QueryTester } from '../../core/QueryTester.js';
23
+ import { QueryRefiner } from '../../core/QueryRefiner.js';
24
+ import { MetadataExporter } from '../../core/MetadataExporter.js';
25
+ import { QueryDatabaseWriter } from '../../core/QueryDatabaseWriter.js';
26
+ import { EmbeddingService } from '../../vectors/EmbeddingService.js';
27
+ import { SimilaritySearch } from '../../vectors/SimilaritySearch.js';
28
+ import { formatEntityMetadataForPrompt } from '../../utils/entity-helpers.js';
29
+ import { extractErrorMessage } from '../../utils/error-handlers.js';
30
+ import { buildQueryCategory, extractUniqueCategories } from '../../utils/category-builder.js';
60
31
  /**
61
32
  * Execute the generate command
62
33
  *
63
34
  * Full orchestration of query generation workflow with progress reporting.
64
35
  * Uses ora for spinners and chalk for colored output.
65
36
  */
66
- async function generateCommand(options) {
67
- const spinner = (0, ora_1.default)('Initializing query generation...').start();
37
+ export async function generateCommand(options) {
38
+ const spinner = ora('Initializing query generation...').start();
68
39
  try {
69
40
  // 1. Load configuration
70
41
  spinner.text = 'Loading configuration...';
71
- const config = (0, config_1.loadConfig)(options);
42
+ const config = loadConfig(options);
72
43
  // Show model/vendor overrides if configured
73
44
  if (config.modelOverride || config.vendorOverride) {
74
45
  const overrideMsg = [];
@@ -76,81 +47,81 @@ async function generateCommand(options) {
76
47
  overrideMsg.push(`Model: ${config.modelOverride}`);
77
48
  if (config.vendorOverride)
78
49
  overrideMsg.push(`Vendor: ${config.vendorOverride}`);
79
- spinner.info(chalk_1.default.cyan(`Using overrides - ${overrideMsg.join(', ')}`));
50
+ spinner.info(chalk.cyan(`Using overrides - ${overrideMsg.join(', ')}`));
80
51
  }
81
52
  if (config.verbose) {
82
- spinner.info(chalk_1.default.dim('Configuration loaded'));
83
- console.log(chalk_1.default.dim(JSON.stringify(config, null, 2)));
53
+ spinner.info(chalk.dim('Configuration loaded'));
54
+ console.log(chalk.dim(JSON.stringify(config, null, 2)));
84
55
  }
85
56
  // 2. Get system user from UserCache (populated by provider initialization)
86
- const contextUser = (0, user_helpers_1.getSystemUser)();
57
+ const contextUser = getSystemUser();
87
58
  // 3. Verify database connection and metadata
88
59
  spinner.text = 'Loading metadata...';
89
60
  // Assume provider and AIEngine are already configured by the calling application (MJCLI)
90
- if (!core_1.Metadata.Provider) {
61
+ if (!Metadata.Provider) {
91
62
  throw new Error('Metadata provider not configured. Please ensure database connection is set up before running CLI.');
92
63
  }
93
64
  spinner.succeed('Metadata loaded');
94
65
  // 4. Filter and build entity groups
95
66
  spinner.start('Filtering entities...');
96
- const md = new core_1.Metadata();
67
+ const md = new Metadata();
97
68
  // Apply entity filtering (includeEntities takes precedence over excludeEntities)
98
69
  let filteredEntities = md.Entities.filter(e => !config.excludeSchemas.includes(e.SchemaName || ''));
99
70
  if (config.includeEntities.length > 0) {
100
71
  // Allowlist: only include specified entities
101
72
  filteredEntities = filteredEntities.filter(e => config.includeEntities.includes(e.Name));
102
- spinner.info(chalk_1.default.dim(`Including only ${config.includeEntities.length} specified entities`));
73
+ spinner.info(chalk.dim(`Including only ${config.includeEntities.length} specified entities`));
103
74
  }
104
75
  else if (config.excludeEntities.length > 0) {
105
76
  // Denylist: exclude specified entities
106
77
  filteredEntities = filteredEntities.filter(e => !config.excludeEntities.includes(e.Name));
107
- spinner.info(chalk_1.default.dim(`Excluded ${config.excludeEntities.length} entities`));
78
+ spinner.info(chalk.dim(`Excluded ${config.excludeEntities.length} entities`));
108
79
  }
109
80
  // 4. Group entities by schema and generate entity groups
110
81
  spinner.text = 'Analyzing entity relationships...';
111
82
  // Count entities per schema for informational logging
112
83
  const schemaCount = new Set(filteredEntities.map(e => e.SchemaName)).size;
113
84
  if (config.verbose && schemaCount > 1) {
114
- spinner.info(chalk_1.default.dim(`Processing ${schemaCount} schemas separately`));
85
+ spinner.info(chalk.dim(`Processing ${schemaCount} schemas separately`));
115
86
  }
116
- const grouper = new EntityGrouper_1.EntityGrouper(config);
87
+ const grouper = new EntityGrouper(config);
117
88
  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'}`));
89
+ spinner.succeed(chalk.green(`Found ${entityGroups.length} entity groups across ${schemaCount} ${schemaCount === 1 ? 'schema' : 'schemas'}`));
119
90
  // 5. Initialize vector similarity search
120
91
  spinner.start('Embedding golden queries...');
121
- const embeddingService = new EmbeddingService_1.EmbeddingService(config.embeddingModel);
92
+ const embeddingService = new EmbeddingService(config.embeddingModel);
122
93
  const goldenQueries = await loadGoldenQueries(config);
123
94
  const embeddedGolden = await embeddingService.embedGoldenQueries(goldenQueries);
124
- spinner.succeed(chalk_1.default.green(`Embedded ${goldenQueries.length} golden queries`));
95
+ spinner.succeed(chalk.green(`Embedded ${goldenQueries.length} golden queries`));
125
96
  // 5b. Build category structure for all entity groups upfront
126
97
  spinner.start('Building category structure...');
127
98
  const categoryMap = new Map();
128
99
  for (const group of entityGroups) {
129
- const category = (0, category_builder_1.buildQueryCategory)(config, group);
100
+ const category = buildQueryCategory(config, group);
130
101
  // Use primary entity name as key for lookup during query generation
131
102
  categoryMap.set(group.primaryEntity.Name, category);
132
103
  }
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'}`));
104
+ const uniqueCategories = extractUniqueCategories(Array.from(categoryMap.values()));
105
+ spinner.succeed(chalk.green(`Created ${uniqueCategories.length} ${uniqueCategories.length === 1 ? 'category' : 'categories'}`));
135
106
  // 6. Generate queries for each entity group
136
107
  const totalGroups = entityGroups.length;
137
108
  let processedGroups = 0;
138
109
  const allValidatedQueries = [];
139
110
  for (const group of entityGroups) {
140
111
  processedGroups++;
141
- const groupPrefix = chalk_1.default.cyan(`[${processedGroups}/${totalGroups}]`);
142
- spinner.start(`${groupPrefix} Processing ${chalk_1.default.bold(group.primaryEntity.Name)}...`);
112
+ const groupPrefix = chalk.cyan(`[${processedGroups}/${totalGroups}]`);
113
+ spinner.start(`${groupPrefix} Processing ${chalk.bold(group.primaryEntity.Name)}...`);
143
114
  let queriesCreatedForGroup = 0;
144
115
  try {
145
116
  // 6a. Generate business questions for this entity group
146
- const questionGenerator = new QuestionGenerator_1.QuestionGenerator(contextUser, config);
117
+ const questionGenerator = new QuestionGenerator(contextUser, config);
147
118
  const questions = await questionGenerator.generateQuestions(group);
148
119
  if (config.verbose) {
149
120
  spinner.info(`${groupPrefix} Generated ${questions.length} questions`);
150
121
  }
151
122
  // 6b. For each question, generate and validate query
152
123
  for (const question of questions) {
153
- spinner.text = `${groupPrefix} Generating query: ${chalk_1.default.italic(question.userQuestion)}`;
124
+ spinner.text = `${groupPrefix} Generating query: ${chalk.italic(question.userQuestion)}`;
154
125
  // Embed question for similarity search
155
126
  const questionEmbedding = await embeddingService.embedQuery({
156
127
  userQuestion: question.userQuestion,
@@ -158,24 +129,24 @@ async function generateCommand(options) {
158
129
  technicalDescription: question.technicalDescription,
159
130
  });
160
131
  // Find similar golden queries
161
- const similaritySearch = new SimilaritySearch_1.SimilaritySearch();
132
+ const similaritySearch = new SimilaritySearch();
162
133
  const fewShotResults = await similaritySearch.findSimilarQueries(questionEmbedding, embeddedGolden, config.topSimilarQueries);
163
134
  const fewShotExamples = fewShotResults.map(s => s.query);
164
135
  // 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);
136
+ const queryWriter = new QueryWriter(contextUser, config);
137
+ const generatedQuery = await queryWriter.generateQuery(question, group.entities.map((e) => formatEntityMetadataForPrompt(e, group.entities)), fewShotExamples);
167
138
  // Test and fix query
168
139
  // 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);
140
+ const dataProvider = Metadata.Provider;
141
+ const entityMetadata = group.entities.map((e) => formatEntityMetadataForPrompt(e, group.entities));
142
+ const queryTester = new QueryTester(dataProvider, entityMetadata, question, contextUser, config);
172
143
  const testResult = await queryTester.testQuery(generatedQuery, config.maxFixingIterations);
173
144
  if (!testResult.success) {
174
- spinner.warn(chalk_1.default.yellow(`${groupPrefix} Query failed after ${config.maxFixingIterations} attempts: ${question.userQuestion}`));
145
+ spinner.warn(chalk.yellow(`${groupPrefix} Query failed after ${config.maxFixingIterations} attempts: ${question.userQuestion}`));
175
146
  continue;
176
147
  }
177
148
  // Refine query
178
- const queryRefiner = new QueryRefiner_1.QueryRefiner(queryTester, contextUser, config);
149
+ const queryRefiner = new QueryRefiner(queryTester, contextUser, config);
179
150
  const refinedResult = await queryRefiner.refineQuery(generatedQuery, question, entityMetadata, config.maxRefinementIterations);
180
151
  // Get pre-built category from map
181
152
  const category = categoryMap.get(group.primaryEntity.Name);
@@ -192,50 +163,49 @@ async function generateCommand(options) {
192
163
  });
193
164
  queriesCreatedForGroup++;
194
165
  if (config.verbose) {
195
- spinner.info(`${groupPrefix} ${chalk_1.default.green('✓')} ${question.userQuestion}`);
166
+ spinner.info(`${groupPrefix} ${chalk.green('✓')} ${question.userQuestion}`);
196
167
  }
197
168
  }
198
169
  // Format entity list with primary entity in bold
199
170
  const entityDisplay = group.entities
200
- .map(e => e.Name === group.primaryEntity.Name ? chalk_1.default.bold(e.Name) : e.Name)
171
+ .map(e => e.Name === group.primaryEntity.Name ? chalk.bold(e.Name) : e.Name)
201
172
  .join(', ');
202
- spinner.succeed(`${groupPrefix} ${entityDisplay} complete (${chalk_1.default.green(queriesCreatedForGroup + ' queries')})`);
173
+ spinner.succeed(`${groupPrefix} ${entityDisplay} complete (${chalk.green(queriesCreatedForGroup + ' queries')})`);
203
174
  }
204
175
  catch (error) {
205
176
  // Format entity list with primary entity in bold
206
177
  const entityDisplay = group.entities
207
- .map(e => e.Name === group.primaryEntity.Name ? chalk_1.default.bold(e.Name) : e.Name)
178
+ .map(e => e.Name === group.primaryEntity.Name ? chalk.bold(e.Name) : e.Name)
208
179
  .join(', ');
209
- spinner.warn(chalk_1.default.yellow(`${groupPrefix} Error processing ${entityDisplay}: ${(0, error_handlers_1.extractErrorMessage)(error, 'Query Generation')}`));
180
+ spinner.warn(chalk.yellow(`${groupPrefix} Error processing ${entityDisplay}: ${extractErrorMessage(error, 'Query Generation')}`));
210
181
  }
211
182
  }
212
183
  // 7. Export results
213
184
  spinner.start(`Exporting ${allValidatedQueries.length} queries...`);
214
185
  if (config.outputMode === 'metadata' || config.outputMode === 'both') {
215
- const exporter = new MetadataExporter_1.MetadataExporter();
186
+ const exporter = new MetadataExporter();
216
187
  const exportResult = await exporter.exportQueries(allValidatedQueries, uniqueCategories, config);
217
- spinner.succeed(chalk_1.default.green(`Exported to ${exportResult.outputPath}`));
188
+ spinner.succeed(chalk.green(`Exported to ${exportResult.outputPath}`));
218
189
  }
219
190
  if (config.outputMode === 'database' || config.outputMode === 'both') {
220
- const dbWriter = new QueryDatabaseWriter_1.QueryDatabaseWriter();
191
+ const dbWriter = new QueryDatabaseWriter();
221
192
  await dbWriter.writeQueriesToDatabase(allValidatedQueries, contextUser);
222
- spinner.succeed(chalk_1.default.green(`Wrote ${allValidatedQueries.length} queries to database`));
193
+ spinner.succeed(chalk.green(`Wrote ${allValidatedQueries.length} queries to database`));
223
194
  }
224
195
  // 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)}`);
196
+ console.log('\n' + chalk.green.bold('✓ Query generation complete!\n'));
197
+ console.log(chalk.bold('Summary:'));
198
+ console.log(` Entity Groups Processed: ${chalk.cyan(processedGroups.toString())}`);
199
+ console.log(` Queries Generated: ${chalk.green(allValidatedQueries.length.toString())}`);
200
+ console.log(` Output Location: ${chalk.dim(config.outputDirectory)}`);
230
201
  process.exit(0);
231
202
  }
232
203
  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')));
204
+ spinner.fail(chalk.red('Query generation failed'));
205
+ console.error(chalk.red(extractErrorMessage(error, 'Query Generation')));
235
206
  process.exit(1);
236
207
  }
237
208
  }
238
- exports.generateCommand = generateCommand;
239
209
  /**
240
210
  * Load golden queries from JSON file
241
211
  *
@@ -253,7 +223,7 @@ async function loadGoldenQueries(config) {
253
223
  // Check if file exists
254
224
  if (!fs.existsSync(goldenQueriesPath)) {
255
225
  if (config.verbose) {
256
- (0, core_1.LogStatus)(`[Warning] Golden queries file not found at: ${goldenQueriesPath}`);
226
+ LogStatus(`[Warning] Golden queries file not found at: ${goldenQueriesPath}`);
257
227
  }
258
228
  return [];
259
229
  }
@@ -263,18 +233,18 @@ async function loadGoldenQueries(config) {
263
233
  // Validate that it's an array
264
234
  if (!Array.isArray(goldenQueries)) {
265
235
  if (config.verbose) {
266
- (0, core_1.LogStatus)('[Warning] Golden queries file does not contain an array');
236
+ LogStatus('[Warning] Golden queries file does not contain an array');
267
237
  }
268
238
  return [];
269
239
  }
270
240
  if (config.verbose) {
271
- (0, core_1.LogStatus)(`[Info] Loaded ${goldenQueries.length} golden queries for few-shot learning`);
241
+ LogStatus(`[Info] Loaded ${goldenQueries.length} golden queries for few-shot learning`);
272
242
  }
273
243
  return goldenQueries;
274
244
  }
275
245
  catch (error) {
276
246
  if (config.verbose) {
277
- (0, core_1.LogStatus)(`[Warning] Failed to load golden queries: ${(0, error_handlers_1.extractErrorMessage)(error, 'loadGoldenQueries')}`);
247
+ LogStatus(`[Warning] Failed to load golden queries: ${extractErrorMessage(error, 'loadGoldenQueries')}`);
278
248
  }
279
249
  return [];
280
250
  }