@memberjunction/query-gen 3.4.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.
- package/.turbo/turbo-build.log +6 -4
- package/CHANGELOG.md +33 -0
- package/dist/cli/commands/export.js +35 -65
- package/dist/cli/commands/export.js.map +1 -1
- package/dist/cli/commands/generate.js +70 -100
- 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.map +1 -1
- package/dist/cli/config.js +7 -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 +2 -2
- package/dist/core/EntityGrouper.js +23 -28
- 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 +17 -16
- package/src/cli/config.ts +8 -2
- package/src/cli/index.ts +4 -1
- package/tsconfig.json +5 -35
|
@@ -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
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/cli/commands/validate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/cli/commands/validate.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH;;GAEG;AACH,MAAM,WAAW,cAAc;IAM7B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;IAGzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IAGrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IAGvB,uBAAuB,EAAE,MAAM,CAAC;IAChC,mBAAmB,EAAE,MAAM,CAAC;IAG5B,iBAAiB,EAAE,MAAM,CAAC;IAG1B,iBAAiB,EAAE;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,oBAAoB,EAAE,MAAM,CAAC;KAC9B,CAAC;IAGF,UAAU,EAAE,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;IAC7C,eAAe,EAAE,MAAM,CAAC;IACxB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,qBAAqB,EAAE,OAAO,CAAC;IAG/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,+BAA+B,EAAE,OAAO,CAAC;IAGzC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,OAAO,CAAC;IAGvB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAG1B,OAAO,EAAE,OAAO,CAAC;CAClB;AAkCD;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc,CAuD9E"}
|
package/dist/cli/config.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Configuration loader for QueryGen
|
|
4
3
|
*
|
|
5
4
|
* Loads configuration from mj.config.cjs and merges with CLI options
|
|
6
5
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
import fs from 'fs';
|
|
7
|
+
import path from 'path';
|
|
8
|
+
import { createRequire } from 'node:module';
|
|
9
|
+
// Use createRequire to load CommonJS config files
|
|
10
|
+
const require = createRequire(import.meta.url);
|
|
9
11
|
/**
|
|
10
12
|
* Default configuration values
|
|
11
13
|
*/
|
|
@@ -48,7 +50,7 @@ const DEFAULT_CONFIG = {
|
|
|
48
50
|
* @param cliOptions - Options provided via command line
|
|
49
51
|
* @returns Merged configuration ready for use
|
|
50
52
|
*/
|
|
51
|
-
function loadConfig(cliOptions) {
|
|
53
|
+
export function loadConfig(cliOptions) {
|
|
52
54
|
// Start with defaults
|
|
53
55
|
const config = { ...DEFAULT_CONFIG };
|
|
54
56
|
// Load mj.config.cjs if it exists
|
|
@@ -100,15 +102,13 @@ function loadConfig(cliOptions) {
|
|
|
100
102
|
}
|
|
101
103
|
return config;
|
|
102
104
|
}
|
|
103
|
-
exports.loadConfig = loadConfig;
|
|
104
105
|
/**
|
|
105
106
|
* Load mj.config.cjs from current working directory
|
|
106
107
|
* Returns null if file doesn't exist or can't be loaded
|
|
107
108
|
*/
|
|
108
109
|
function loadMjConfig() {
|
|
109
110
|
try {
|
|
110
|
-
const configPath =
|
|
111
|
-
const fs = require('fs');
|
|
111
|
+
const configPath = path.join(process.cwd(), 'mj.config.cjs');
|
|
112
112
|
if (fs.existsSync(configPath)) {
|
|
113
113
|
return require(configPath);
|
|
114
114
|
}
|
package/dist/cli/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
2
|
/**
|
|
4
3
|
* CLI entry point for QueryGen package
|
|
5
4
|
*
|
|
@@ -10,13 +9,15 @@
|
|
|
10
9
|
* validate - Validate existing query templates
|
|
11
10
|
* export - Export queries from database to metadata files
|
|
12
11
|
*/
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
import { Command } from 'commander';
|
|
13
|
+
import { createRequire } from 'node:module';
|
|
14
|
+
import { generateCommand } from './commands/generate.js';
|
|
15
|
+
import { validateCommand } from './commands/validate.js';
|
|
16
|
+
import { exportCommand } from './commands/export.js';
|
|
17
|
+
// Use createRequire to import JSON (compatible with ESM)
|
|
18
|
+
const require = createRequire(import.meta.url);
|
|
18
19
|
const packageJson = require('../../package.json');
|
|
19
|
-
const program = new
|
|
20
|
+
const program = new Command();
|
|
20
21
|
program
|
|
21
22
|
.name('mj-querygen')
|
|
22
23
|
.description('AI-powered SQL query template generation for MemberJunction')
|
|
@@ -35,19 +36,19 @@ program
|
|
|
35
36
|
.option('-o, --output <path>', 'Output directory')
|
|
36
37
|
.option('--mode <mode>', 'Output mode: metadata|database|both')
|
|
37
38
|
.option('-v, --verbose', 'Verbose output')
|
|
38
|
-
.action(
|
|
39
|
+
.action(generateCommand);
|
|
39
40
|
program
|
|
40
41
|
.command('validate')
|
|
41
42
|
.description('Validate existing query templates')
|
|
42
43
|
.option('-p, --path <path>', 'Path to queries metadata file', './metadata/queries')
|
|
43
44
|
.option('-v, --verbose', 'Verbose output')
|
|
44
|
-
.action(
|
|
45
|
+
.action(validateCommand);
|
|
45
46
|
program
|
|
46
47
|
.command('export')
|
|
47
48
|
.description('Export queries from database to metadata files')
|
|
48
49
|
.option('-o, --output <path>', 'Output directory')
|
|
49
50
|
.option('-v, --verbose', 'Verbose output')
|
|
50
|
-
.action(
|
|
51
|
+
.action(exportCommand);
|
|
51
52
|
// Parse command line arguments
|
|
52
53
|
program.parse();
|
|
53
54
|
// Show help if no command provided
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,yDAAyD;AACzD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;AAEzE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CAAC,6DAA6D,CAAC;KAC1E,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAEhC,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,2BAA2B,EAAE,2CAA2C,CAAC;KAChF,MAAM,CAAC,mCAAmC,EAAE,qBAAqB,CAAC;KAClE,MAAM,CAAC,kCAAkC,EAAE,oBAAoB,CAAC;KAChE,MAAM,CAAC,6BAA6B,EAAE,wBAAwB,EAAE,GAAG,CAAC;KACpE,MAAM,CAAC,gCAAgC,EAAE,2BAA2B,EAAE,GAAG,CAAC;KAC1E,MAAM,CAAC,0BAA0B,EAAE,2BAA2B,EAAE,GAAG,CAAC;KACpE,MAAM,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;KAC9C,MAAM,CAAC,iBAAiB,EAAE,qBAAqB,CAAC;KAChD,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;KACjD,MAAM,CAAC,eAAe,EAAE,qCAAqC,CAAC;KAC9D,MAAM,CAAC,eAAe,EAAE,gBAAgB,CAAC;KACzC,MAAM,CAAC,eAAe,CAAC,CAAC;AAE3B,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,mBAAmB,EAAE,+BAA+B,EAAE,oBAAoB,CAAC;KAClF,MAAM,CAAC,eAAe,EAAE,gBAAgB,CAAC;KACzC,MAAM,CAAC,eAAe,CAAC,CAAC;AAE3B,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;KACjD,MAAM,CAAC,eAAe,EAAE,gBAAgB,CAAC;KACzC,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,+BAA+B;AAC/B,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,mCAAmC;AACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* hub-and-spoke algorithm with intelligent semantic analysis.
|
|
7
7
|
*/
|
|
8
8
|
import { EntityInfo, UserInfo } from '@memberjunction/core';
|
|
9
|
-
import { EntityGroup } from '../data/schema';
|
|
10
|
-
import { QueryGenConfig } from '../cli/config';
|
|
9
|
+
import { EntityGroup } from '../data/schema.js';
|
|
10
|
+
import { QueryGenConfig } from '../cli/config.js';
|
|
11
11
|
/**
|
|
12
12
|
* Generates entity groups using LLM-based semantic analysis
|
|
13
13
|
*
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* LLM-based Entity Grouper
|
|
4
3
|
*
|
|
@@ -6,13 +5,11 @@
|
|
|
6
5
|
* business context and schema understanding, replacing the deterministic
|
|
7
6
|
* hub-and-spoke algorithm with intelligent semantic analysis.
|
|
8
7
|
*/
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const error_handlers_1 = require("../utils/error-handlers");
|
|
15
|
-
const prompt_helpers_1 = require("../utils/prompt-helpers");
|
|
8
|
+
import { LogStatus } from '@memberjunction/core';
|
|
9
|
+
import { AIEngine } from '@memberjunction/aiengine';
|
|
10
|
+
import { generateRelationshipGraph, formatEntitiesForPrompt } from '../utils/graph-helpers.js';
|
|
11
|
+
import { extractErrorMessage } from '../utils/error-handlers.js';
|
|
12
|
+
import { executePromptWithOverrides } from '../utils/prompt-helpers.js';
|
|
16
13
|
/**
|
|
17
14
|
* Generates entity groups using LLM-based semantic analysis
|
|
18
15
|
*
|
|
@@ -20,10 +17,9 @@ const prompt_helpers_1 = require("../utils/prompt-helpers");
|
|
|
20
17
|
* intelligent approach that understands business context and generates
|
|
21
18
|
* meaningful entity combinations for query generation.
|
|
22
19
|
*/
|
|
23
|
-
class EntityGrouper {
|
|
24
|
-
promptName = 'Entity Group Generator';
|
|
25
|
-
config;
|
|
20
|
+
export class EntityGrouper {
|
|
26
21
|
constructor(config) {
|
|
22
|
+
this.promptName = 'Entity Group Generator';
|
|
27
23
|
this.config = config;
|
|
28
24
|
}
|
|
29
25
|
/**
|
|
@@ -48,7 +44,7 @@ class EntityGrouper {
|
|
|
48
44
|
for (const [schemaName, schemaEntities] of entitiesBySchema.entries()) {
|
|
49
45
|
schemaIndex++;
|
|
50
46
|
if (this.config.verbose && totalSchemas > 1) {
|
|
51
|
-
|
|
47
|
+
LogStatus(`[${schemaIndex}/${totalSchemas}] Processing schema: ${schemaName} (${schemaEntities.length} entities)`);
|
|
52
48
|
}
|
|
53
49
|
// 2a. Prepare schema data for LLM
|
|
54
50
|
const schemaData = this.prepareSchemaData(schemaEntities, schemaName);
|
|
@@ -57,7 +53,7 @@ class EntityGrouper {
|
|
|
57
53
|
// 2c. Validate and convert to EntityGroup objects
|
|
58
54
|
const validatedGroups = this.validateAndConvertGroups(llmResponse, schemaEntities);
|
|
59
55
|
if (this.config.verbose && totalSchemas > 1) {
|
|
60
|
-
|
|
56
|
+
LogStatus(`[${schemaIndex}/${totalSchemas}] Generated ${validatedGroups.length} groups for schema: ${schemaName}`);
|
|
61
57
|
}
|
|
62
58
|
allGroups.push(...validatedGroups);
|
|
63
59
|
}
|
|
@@ -66,7 +62,7 @@ class EntityGrouper {
|
|
|
66
62
|
return deduplicatedGroups;
|
|
67
63
|
}
|
|
68
64
|
catch (error) {
|
|
69
|
-
throw new Error(
|
|
65
|
+
throw new Error(extractErrorMessage(error, 'EntityGrouper.generateEntityGroups'));
|
|
70
66
|
}
|
|
71
67
|
}
|
|
72
68
|
/**
|
|
@@ -92,8 +88,8 @@ class EntityGrouper {
|
|
|
92
88
|
* @param schemaName - Name of the schema being processed
|
|
93
89
|
*/
|
|
94
90
|
prepareSchemaData(entities, schemaName) {
|
|
95
|
-
const formattedEntities =
|
|
96
|
-
const relationshipGraph =
|
|
91
|
+
const formattedEntities = formatEntitiesForPrompt(entities);
|
|
92
|
+
const relationshipGraph = generateRelationshipGraph(entities);
|
|
97
93
|
// Calculate target group count using graph theory metrics
|
|
98
94
|
// This approach uses actual schema connectivity instead of arbitrary thresholds
|
|
99
95
|
const avgGroupSize = (this.config.minGroupSize + this.config.maxGroupSize) / 2;
|
|
@@ -120,17 +116,17 @@ class EntityGrouper {
|
|
|
120
116
|
const targetGroupCount = Math.ceil((entities.length * baseCoverage * connectivityMultiplier) / avgGroupSize);
|
|
121
117
|
// Log metrics in verbose mode
|
|
122
118
|
if (this.config.verbose) {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
119
|
+
LogStatus(`\nSchema Graph Metrics (${schemaName}):`);
|
|
120
|
+
LogStatus(` Total entities: ${entities.length}`);
|
|
121
|
+
LogStatus(` Total relationships: ${totalRelationships}`);
|
|
122
|
+
LogStatus(` Average degree: ${avgDegree.toFixed(2)}`);
|
|
123
|
+
LogStatus(` Hub entities (>5 rels): ${hubCount}`);
|
|
128
124
|
if (hubCount > 0) {
|
|
129
|
-
|
|
125
|
+
LogStatus(` Largest hub degree: ${maxHubDegree}`);
|
|
130
126
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
127
|
+
LogStatus(` Base coverage: ${baseCoverage.toFixed(2)}`);
|
|
128
|
+
LogStatus(` Connectivity multiplier: ${connectivityMultiplier.toFixed(2)}`);
|
|
129
|
+
LogStatus(` → Target group count: ${targetGroupCount}\n`);
|
|
134
130
|
}
|
|
135
131
|
return {
|
|
136
132
|
schemaName,
|
|
@@ -149,12 +145,12 @@ class EntityGrouper {
|
|
|
149
145
|
*/
|
|
150
146
|
async callLLMForGrouping(schemaData, contextUser) {
|
|
151
147
|
// Get prompt entity from AIEngine
|
|
152
|
-
const prompt =
|
|
148
|
+
const prompt = AIEngine.Instance.Prompts.find(p => p.Name === this.promptName);
|
|
153
149
|
if (!prompt) {
|
|
154
150
|
throw new Error(`Prompt "${this.promptName}" not found. Ensure metadata has been synced to database.`);
|
|
155
151
|
}
|
|
156
152
|
// Execute with model/vendor overrides if specified in config
|
|
157
|
-
const result = await
|
|
153
|
+
const result = await executePromptWithOverrides(prompt, schemaData, contextUser, this.config);
|
|
158
154
|
if (!result.success) {
|
|
159
155
|
throw new Error(`LLM grouping failed: ${result.errorMessage || 'Unknown error'}`);
|
|
160
156
|
}
|
|
@@ -283,5 +279,4 @@ class EntityGrouper {
|
|
|
283
279
|
return unique;
|
|
284
280
|
}
|
|
285
281
|
}
|
|
286
|
-
exports.EntityGrouper = EntityGrouper;
|
|
287
282
|
//# sourceMappingURL=EntityGrouper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityGrouper.js","sourceRoot":"","sources":["../../src/core/EntityGrouper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EntityGrouper.js","sourceRoot":"","sources":["../../src/core/EntityGrouper.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* Transforms validated queries into MemberJunction metadata JSON files
|
|
5
5
|
* that can be synced to the database using mj-sync.
|
|
6
6
|
*/
|
|
7
|
-
import { ValidatedQuery, ExportResult, QueryCategoryInfo } from '../data/schema';
|
|
8
|
-
import { QueryGenConfig } from '../cli/config';
|
|
7
|
+
import { ValidatedQuery, ExportResult, QueryCategoryInfo } from '../data/schema.js';
|
|
8
|
+
import { QueryGenConfig } from '../cli/config.js';
|
|
9
9
|
/**
|
|
10
10
|
* MetadataExporter class
|
|
11
11
|
* Exports validated queries to MJ metadata JSON format
|