@memberjunction/query-gen 6.2.0-edge.0 → 6.2.0-edge.2
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 +1 -1
- package/CHANGELOG.md +130 -0
- package/dist/cli/commands/export.d.ts +2 -0
- package/dist/cli/commands/export.d.ts.map +1 -1
- package/dist/cli/commands/export.js +10 -6
- package/dist/cli/commands/export.js.map +1 -1
- package/dist/cli/commands/generate.d.ts +2 -0
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +19 -15
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/validate.d.ts +2 -0
- package/dist/cli/commands/validate.d.ts.map +1 -1
- package/dist/cli/commands/validate.js +12 -8
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/config.d.ts +2 -0
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +5 -1
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/index.js +6 -6
- package/dist/core/EntityGrouper.d.ts +2 -0
- package/dist/core/EntityGrouper.d.ts.map +1 -1
- package/dist/core/EntityGrouper.js +13 -9
- package/dist/core/EntityGrouper.js.map +1 -1
- package/dist/core/MetadataExporter.d.ts +2 -0
- package/dist/core/MetadataExporter.d.ts.map +1 -1
- package/dist/core/MetadataExporter.js +5 -1
- package/dist/core/MetadataExporter.js.map +1 -1
- package/dist/core/QueryDatabaseWriter.d.ts +2 -0
- package/dist/core/QueryDatabaseWriter.d.ts.map +1 -1
- package/dist/core/QueryDatabaseWriter.js +7 -3
- package/dist/core/QueryDatabaseWriter.js.map +1 -1
- package/dist/core/QueryFixer.d.ts +2 -0
- package/dist/core/QueryFixer.d.ts.map +1 -1
- package/dist/core/QueryFixer.js +9 -5
- package/dist/core/QueryFixer.js.map +1 -1
- package/dist/core/QueryRefiner.d.ts +2 -0
- package/dist/core/QueryRefiner.d.ts.map +1 -1
- package/dist/core/QueryRefiner.js +12 -8
- package/dist/core/QueryRefiner.js.map +1 -1
- package/dist/core/QueryTester.d.ts +2 -0
- package/dist/core/QueryTester.d.ts.map +1 -1
- package/dist/core/QueryTester.js +9 -5
- package/dist/core/QueryTester.js.map +1 -1
- package/dist/core/QueryWriter.d.ts +2 -0
- package/dist/core/QueryWriter.d.ts.map +1 -1
- package/dist/core/QueryWriter.js +9 -5
- package/dist/core/QueryWriter.js.map +1 -1
- package/dist/core/QuestionGenerator.d.ts +2 -0
- package/dist/core/QuestionGenerator.d.ts.map +1 -1
- package/dist/core/QuestionGenerator.js +11 -7
- package/dist/core/QuestionGenerator.js.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/utils/category-builder.d.ts +4 -0
- package/dist/utils/category-builder.d.ts.map +1 -1
- package/dist/utils/category-builder.js +10 -2
- package/dist/utils/category-builder.js.map +1 -1
- package/dist/utils/entity-helpers.d.ts +14 -0
- package/dist/utils/entity-helpers.d.ts.map +1 -1
- package/dist/utils/entity-helpers.js +36 -8
- package/dist/utils/entity-helpers.js.map +1 -1
- package/dist/utils/error-handlers.d.ts +6 -0
- package/dist/utils/error-handlers.d.ts.map +1 -1
- package/dist/utils/error-handlers.js +15 -3
- package/dist/utils/error-handlers.js.map +1 -1
- package/dist/utils/graph-helpers.d.ts +6 -0
- package/dist/utils/graph-helpers.d.ts.map +1 -1
- package/dist/utils/graph-helpers.js +15 -3
- package/dist/utils/graph-helpers.js.map +1 -1
- package/dist/utils/prompt-helpers.d.ts +6 -0
- package/dist/utils/prompt-helpers.d.ts.map +1 -1
- package/dist/utils/prompt-helpers.js +5 -1
- package/dist/utils/prompt-helpers.js.map +1 -1
- package/dist/utils/user-helpers.d.ts +2 -0
- package/dist/utils/user-helpers.d.ts.map +1 -1
- package/dist/utils/user-helpers.js +5 -1
- package/dist/utils/user-helpers.js.map +1 -1
- package/dist/vectors/EmbeddingService.d.ts +14 -0
- package/dist/vectors/EmbeddingService.d.ts.map +1 -1
- package/dist/vectors/EmbeddingService.js +17 -5
- package/dist/vectors/EmbeddingService.js.map +1 -1
- package/dist/vectors/SimilaritySearch.d.ts +2 -0
- package/dist/vectors/SimilaritySearch.d.ts.map +1 -1
- package/dist/vectors/SimilaritySearch.js +5 -1
- package/dist/vectors/SimilaritySearch.js.map +1 -1
- package/package.json +11 -11
- package/src/__tests__/QueryGen.test.ts +22 -22
- package/src/cli/commands/export.ts +11 -6
- package/src/cli/commands/generate.ts +20 -15
- package/src/cli/commands/validate.ts +13 -8
- package/src/cli/config.ts +6 -1
- package/src/cli/index.ts +6 -6
- package/src/core/EntityGrouper.ts +17 -9
- package/src/core/MetadataExporter.ts +10 -1
- package/src/core/QueryDatabaseWriter.ts +11 -3
- package/src/core/QueryFixer.ts +15 -5
- package/src/core/QueryRefiner.ts +18 -8
- package/src/core/QueryTester.ts +13 -5
- package/src/core/QueryWriter.ts +14 -5
- package/src/core/QuestionGenerator.ts +12 -7
- package/src/index.ts +12 -12
- package/src/utils/category-builder.ts +15 -2
- package/src/utils/entity-helpers.ts +44 -9
- package/src/utils/error-handlers.ts +22 -3
- package/src/utils/graph-helpers.ts +18 -3
- package/src/utils/prompt-helpers.ts +11 -1
- package/src/utils/user-helpers.ts +6 -1
- package/src/vectors/EmbeddingService.ts +30 -5
- package/src/vectors/SimilaritySearch.ts +10 -1
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* Products: → OrderDetails, → Categories
|
|
12
12
|
* ```
|
|
13
13
|
*/
|
|
14
|
-
export function
|
|
14
|
+
export function GenerateRelationshipGraph(entities) {
|
|
15
15
|
const lines = [];
|
|
16
16
|
for (const entity of entities) {
|
|
17
17
|
if (entity.RelatedEntities.length === 0) {
|
|
@@ -25,6 +25,10 @@ export function generateRelationshipGraph(entities) {
|
|
|
25
25
|
}
|
|
26
26
|
return lines.join('\n');
|
|
27
27
|
}
|
|
28
|
+
/** @deprecated Use {@link GenerateRelationshipGraph}. */
|
|
29
|
+
export function generateRelationshipGraph(entities) {
|
|
30
|
+
return GenerateRelationshipGraph(entities);
|
|
31
|
+
}
|
|
28
32
|
/**
|
|
29
33
|
* Generates a Mermaid diagram for richer visualization
|
|
30
34
|
*
|
|
@@ -36,7 +40,7 @@ export function generateRelationshipGraph(entities) {
|
|
|
36
40
|
* Orders[Orders] --> OrderDetails[OrderDetails]
|
|
37
41
|
* ```
|
|
38
42
|
*/
|
|
39
|
-
export function
|
|
43
|
+
export function GenerateMermaidDiagram(entities) {
|
|
40
44
|
const lines = ['graph LR'];
|
|
41
45
|
const processedPairs = new Set();
|
|
42
46
|
for (const entity of entities) {
|
|
@@ -52,6 +56,10 @@ export function generateMermaidDiagram(entities) {
|
|
|
52
56
|
}
|
|
53
57
|
return lines.join('\n');
|
|
54
58
|
}
|
|
59
|
+
/** @deprecated Use {@link GenerateMermaidDiagram}. */
|
|
60
|
+
export function generateMermaidDiagram(entities) {
|
|
61
|
+
return GenerateMermaidDiagram(entities);
|
|
62
|
+
}
|
|
55
63
|
/**
|
|
56
64
|
* Formats entity metadata for LLM prompt (concise version with key info)
|
|
57
65
|
*
|
|
@@ -61,7 +69,7 @@ export function generateMermaidDiagram(entities) {
|
|
|
61
69
|
* - Field count (as a proxy for data richness)
|
|
62
70
|
* - Related entities with relationship types
|
|
63
71
|
*/
|
|
64
|
-
export function
|
|
72
|
+
export function FormatEntitiesForPrompt(entities) {
|
|
65
73
|
return entities.map(entity => ({
|
|
66
74
|
Name: entity.Name,
|
|
67
75
|
Description: entity.Description || 'No description available',
|
|
@@ -73,4 +81,8 @@ export function formatEntitiesForPrompt(entities) {
|
|
|
73
81
|
}))
|
|
74
82
|
}));
|
|
75
83
|
}
|
|
84
|
+
/** @deprecated Use {@link FormatEntitiesForPrompt}. */
|
|
85
|
+
export function formatEntitiesForPrompt(entities) {
|
|
86
|
+
return FormatEntitiesForPrompt(entities);
|
|
87
|
+
}
|
|
76
88
|
//# sourceMappingURL=graph-helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-helpers.js","sourceRoot":"","sources":["../../src/utils/graph-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAAsB;IAC9D,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,sBAAsB,CAAC,CAAC;YACjD,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,eAAe;aACrC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,aAAa,EAAE,CAAC;aACpC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAsB;IAC3D,MAAM,KAAK,GAAG,CAAC,UAAU,CAAC,CAAC;IAC3B,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IAEzC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAEvD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YACzC,MAAM,eAAe,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEnE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjC,KAAK,CAAC,IAAI,CAAC,KAAK,cAAc,IAAI,MAAM,CAAC,IAAI,SAAS,eAAe,IAAI,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC;gBAC/F,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAsB;IAC5D,OAAO,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,0BAA0B;QAC7D,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,KAAK;QACtC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;QAChC,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClD,IAAI,EAAE,GAAG,CAAC,aAAa;YACvB,IAAI,EAAE,GAAG,CAAC,IAAI;SACf,CAAC,CAAC;KACJ,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
1
|
+
{"version":3,"file":"graph-helpers.js","sourceRoot":"","sources":["../../src/utils/graph-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,12 @@ import { QueryGenConfig } from '../cli/config.js';
|
|
|
17
17
|
* @param config - QueryGen configuration (for model/vendor overrides)
|
|
18
18
|
* @returns Promise resolving to the prompt result
|
|
19
19
|
*/
|
|
20
|
+
export declare function ExecutePromptWithOverrides<T>(prompt: MJAIPromptEntityExtended, data: Record<string, unknown>, contextUser: UserInfo, config: QueryGenConfig): Promise<{
|
|
21
|
+
success: boolean;
|
|
22
|
+
result?: T;
|
|
23
|
+
errorMessage?: string;
|
|
24
|
+
}>;
|
|
25
|
+
/** @deprecated Use {@link ExecutePromptWithOverrides}. */
|
|
20
26
|
export declare function executePromptWithOverrides<T>(prompt: MJAIPromptEntityExtended, data: Record<string, unknown>, contextUser: UserInfo, config: QueryGenConfig): Promise<{
|
|
21
27
|
success: boolean;
|
|
22
28
|
result?: T;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/prompt-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAExE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C;;;;;;;;;;;;GAYG;AACH,wBAAsB,0BAA0B,CAAC,CAAC,EAChD,MAAM,EAAE,wBAAwB,EAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,WAAW,EAAE,QAAQ,EACrB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAiBlE"}
|
|
1
|
+
{"version":3,"file":"prompt-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/prompt-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAExE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C;;;;;;;;;;;;GAYG;AACH,wBAAsB,0BAA0B,CAAC,CAAC,EAChD,MAAM,EAAE,wBAAwB,EAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,WAAW,EAAE,QAAQ,EACrB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAiBlE;AAED,0DAA0D;AAC1D,wBAAsB,0BAA0B,CAAC,CAAC,EAChD,MAAM,EAAE,wBAAwB,EAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,WAAW,EAAE,QAAQ,EACrB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAElE"}
|
|
@@ -17,7 +17,7 @@ import { AIEngine } from '@memberjunction/aiengine';
|
|
|
17
17
|
* @param config - QueryGen configuration (for model/vendor overrides)
|
|
18
18
|
* @returns Promise resolving to the prompt result
|
|
19
19
|
*/
|
|
20
|
-
export async function
|
|
20
|
+
export async function ExecutePromptWithOverrides(prompt, data, contextUser, config) {
|
|
21
21
|
const promptParams = new AIPromptParams();
|
|
22
22
|
promptParams.prompt = prompt;
|
|
23
23
|
promptParams.data = data;
|
|
@@ -33,6 +33,10 @@ export async function executePromptWithOverrides(prompt, data, contextUser, conf
|
|
|
33
33
|
const runner = new AIPromptRunner();
|
|
34
34
|
return await runner.ExecutePrompt(promptParams);
|
|
35
35
|
}
|
|
36
|
+
/** @deprecated Use {@link ExecutePromptWithOverrides}. */
|
|
37
|
+
export async function executePromptWithOverrides(prompt, data, contextUser, config) {
|
|
38
|
+
return ExecutePromptWithOverrides(prompt, data, contextUser, config);
|
|
39
|
+
}
|
|
36
40
|
/**
|
|
37
41
|
* Resolve model/vendor names to IDs for AIPromptParams.override
|
|
38
42
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-helpers.js","sourceRoot":"","sources":["../../src/utils/prompt-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAG5D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,MAAgC,EAChC,IAA6B,EAC7B,WAAqB,EACrB,MAAsB;IAEtB,MAAM,YAAY,GAAG,IAAI,cAAc,EAAE,CAAC;IAC1C,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC;IAC7B,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,WAAW,GAAG,WAAW,CAAC;IACvC,YAAY,CAAC,cAAc,GAAG,KAAK,CAAC;IAEpC,sEAAsE;IACtE,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAClD,MAAM,WAAW,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;YAChD,YAAY,CAAC,QAAQ,GAAG,WAAW,CAAC;QACtC,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;IACpC,OAAO,MAAM,MAAM,CAAC,aAAa,CAAI,YAAY,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,2BAA2B,CAClC,MAAsB;IAEtB,MAAM,MAAM,GAA4C,EAAE,CAAC;IAE3D,+DAA+D;IAC/D,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,aAAa,CAAC,CAAC;QAClF,IAAI,KAAK,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;YACtB,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,iEAAiE;IACjE,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,cAAc,CAAC,CAAC;QACrF,IAAI,MAAM,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACxB,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"prompt-helpers.js","sourceRoot":"","sources":["../../src/utils/prompt-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAG5D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,MAAgC,EAChC,IAA6B,EAC7B,WAAqB,EACrB,MAAsB;IAEtB,MAAM,YAAY,GAAG,IAAI,cAAc,EAAE,CAAC;IAC1C,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC;IAC7B,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,WAAW,GAAG,WAAW,CAAC;IACvC,YAAY,CAAC,cAAc,GAAG,KAAK,CAAC;IAEpC,sEAAsE;IACtE,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAClD,MAAM,WAAW,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;YAChD,YAAY,CAAC,QAAQ,GAAG,WAAW,CAAC;QACtC,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;IACpC,OAAO,MAAM,MAAM,CAAC,aAAa,CAAI,YAAY,CAAC,CAAC;AACrD,CAAC;AAED,0DAA0D;AAC1D,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,MAAgC,EAChC,IAA6B,EAC7B,WAAqB,EACrB,MAAsB;IAEtB,OAAO,0BAA0B,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;AACvE,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,2BAA2B,CAClC,MAAsB;IAEtB,MAAM,MAAM,GAA4C,EAAE,CAAC;IAE3D,+DAA+D;IAC/D,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,aAAa,CAAC,CAAC;QAClF,IAAI,KAAK,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;YACtB,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,iEAAiE;IACjE,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,cAAc,CAAC,CAAC;QACrF,IAAI,MAAM,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACxB,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -11,5 +11,7 @@ import { UserInfo } from '@memberjunction/core';
|
|
|
11
11
|
* @returns The System UserInfo object from the cache
|
|
12
12
|
* @throws Error if System user is not found in cache or doesn't have Developer role
|
|
13
13
|
*/
|
|
14
|
+
export declare function GetSystemUser(): UserInfo;
|
|
15
|
+
/** @deprecated Use {@link GetSystemUser}. */
|
|
14
16
|
export declare function getSystemUser(): UserInfo;
|
|
15
17
|
//# sourceMappingURL=user-helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/user-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,IAAI,QAAQ,CAsBxC"}
|
|
1
|
+
{"version":3,"file":"user-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/user-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,IAAI,QAAQ,CAsBxC;AAED,6CAA6C;AAC7C,wBAAgB,aAAa,IAAI,QAAQ,CAExC"}
|
|
@@ -11,7 +11,7 @@ import { UserCache } from '@memberjunction/generic-database-provider';
|
|
|
11
11
|
* @returns The System UserInfo object from the cache
|
|
12
12
|
* @throws Error if System user is not found in cache or doesn't have Developer role
|
|
13
13
|
*/
|
|
14
|
-
export function
|
|
14
|
+
export function GetSystemUser() {
|
|
15
15
|
const sysUser = UserCache.Instance.UserByName("System", false);
|
|
16
16
|
if (!sysUser) {
|
|
17
17
|
throw new Error("System user not found in cache. Ensure the database provider is initialized " +
|
|
@@ -25,4 +25,8 @@ export function getSystemUser() {
|
|
|
25
25
|
}
|
|
26
26
|
return sysUser;
|
|
27
27
|
}
|
|
28
|
+
/** @deprecated Use {@link GetSystemUser}. */
|
|
29
|
+
export function getSystemUser() {
|
|
30
|
+
return GetSystemUser();
|
|
31
|
+
}
|
|
28
32
|
//# sourceMappingURL=user-helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-helpers.js","sourceRoot":"","sources":["../../src/utils/user-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAC;AAEtE;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC/D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,8EAA8E;YAC9E,4FAA4F,CAC7F,CAAC;IACJ,CAAC;IAED,kDAAkD;IAClD,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAClE,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,WAAW,CAC/D,CAAC;IAEF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,kDAAkD;YAClD,8EAA8E,CAC/E,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
1
|
+
{"version":3,"file":"user-helpers.js","sourceRoot":"","sources":["../../src/utils/user-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAC;AAEtE;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC/D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,8EAA8E;YAC9E,4FAA4F,CAC7F,CAAC;IACJ,CAAC;IAED,kDAAkD;IAClD,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAClE,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,WAAW,CAC/D,CAAC;IAEF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,kDAAkD;YAClD,8EAA8E,CAC/E,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,aAAa;IAC3B,OAAO,aAAa,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -27,6 +27,12 @@ export declare class EmbeddingService {
|
|
|
27
27
|
* @param query - Query to embed (partial structure with text fields)
|
|
28
28
|
* @returns Embeddings for all fields
|
|
29
29
|
*/
|
|
30
|
+
EmbedQuery(query: {
|
|
31
|
+
userQuestion: string;
|
|
32
|
+
description: string;
|
|
33
|
+
technicalDescription: string;
|
|
34
|
+
}): Promise<QueryEmbeddings>;
|
|
35
|
+
/** @deprecated Use {@link EmbedQuery}. */
|
|
30
36
|
embedQuery(query: {
|
|
31
37
|
userQuestion: string;
|
|
32
38
|
description: string;
|
|
@@ -42,6 +48,8 @@ export declare class EmbeddingService {
|
|
|
42
48
|
* @param goldenQueries - Array of golden queries to embed
|
|
43
49
|
* @returns Array of golden queries with their embeddings
|
|
44
50
|
*/
|
|
51
|
+
EmbedGoldenQueries(goldenQueries: GoldenQuery[]): Promise<EmbeddedGoldenQuery[]>;
|
|
52
|
+
/** @deprecated Use {@link EmbedGoldenQueries}. */
|
|
45
53
|
embedGoldenQueries(goldenQueries: GoldenQuery[]): Promise<EmbeddedGoldenQuery[]>;
|
|
46
54
|
/**
|
|
47
55
|
* Embed multiple queries in batch
|
|
@@ -49,6 +57,12 @@ export declare class EmbeddingService {
|
|
|
49
57
|
* @param queries - Array of queries to embed
|
|
50
58
|
* @returns Array of embeddings corresponding to input queries
|
|
51
59
|
*/
|
|
60
|
+
EmbedQueries(queries: Array<{
|
|
61
|
+
userQuestion: string;
|
|
62
|
+
description: string;
|
|
63
|
+
technicalDescription: string;
|
|
64
|
+
}>): Promise<QueryEmbeddings[]>;
|
|
65
|
+
/** @deprecated Use {@link EmbedQueries}. */
|
|
52
66
|
embedQueries(queries: Array<{
|
|
53
67
|
userQuestion: string;
|
|
54
68
|
description: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmbeddingService.d.ts","sourceRoot":"","sources":["../../src/vectors/EmbeddingService.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAEnF;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC;;;;OAIG;gBACS,SAAS,GAAE,MAAiC;IAIxD;;;;;;;;;;OAUG;IACG,UAAU,CAAC,KAAK,EAAE;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,oBAAoB,EAAE,MAAM,CAAC;KAC9B,GAAG,OAAO,CAAC,eAAe,CAAC;IAiB5B;;;;;;;;;OASG;IACG,kBAAkB,CAAC,aAAa,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAmBtF;;;;;OAKG;IACG,YAAY,CAChB,OAAO,EAAE,KAAK,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,oBAAoB,EAAE,MAAM,CAAC;KAC9B,CAAC,GACD,OAAO,CAAC,eAAe,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"EmbeddingService.d.ts","sourceRoot":"","sources":["../../src/vectors/EmbeddingService.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAEnF;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC;;;;OAIG;gBACS,SAAS,GAAE,MAAiC;IAIxD;;;;;;;;;;OAUG;IACG,UAAU,CAAC,KAAK,EAAE;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,oBAAoB,EAAE,MAAM,CAAC;KAC9B,GAAG,OAAO,CAAC,eAAe,CAAC;IAiB5B,0CAA0C;IACpC,UAAU,CAAC,KAAK,EAAE;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,oBAAoB,EAAE,MAAM,CAAC;KAC9B,GAAG,OAAO,CAAC,eAAe,CAAC;IAI5B;;;;;;;;;OASG;IACG,kBAAkB,CAAC,aAAa,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAmBtF,kDAAkD;IAC5C,kBAAkB,CAAC,aAAa,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAItF;;;;;OAKG;IACG,YAAY,CAChB,OAAO,EAAE,KAAK,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,oBAAoB,EAAE,MAAM,CAAC;KAC9B,CAAC,GACD,OAAO,CAAC,eAAe,EAAE,CAAC;IAW7B,4CAA4C;IACtC,YAAY,CAChB,OAAO,EAAE,KAAK,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,oBAAoB,EAAE,MAAM,CAAC;KAC9B,CAAC,GACD,OAAO,CAAC,eAAe,EAAE,CAAC;CAG9B"}
|
|
@@ -28,7 +28,7 @@ export class EmbeddingService {
|
|
|
28
28
|
* @param query - Query to embed (partial structure with text fields)
|
|
29
29
|
* @returns Embeddings for all fields
|
|
30
30
|
*/
|
|
31
|
-
async
|
|
31
|
+
async EmbedQuery(query) {
|
|
32
32
|
const aiEngine = AIEngine.Instance;
|
|
33
33
|
// Generate embeddings for each field in parallel
|
|
34
34
|
const [userQuestionResult, descResult, techDescResult] = await Promise.all([
|
|
@@ -42,6 +42,10 @@ export class EmbeddingService {
|
|
|
42
42
|
technicalDescription: techDescResult?.result.vector || [],
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
|
+
/** @deprecated Use {@link EmbedQuery}. */
|
|
46
|
+
async embedQuery(query) {
|
|
47
|
+
return this.EmbedQuery(query);
|
|
48
|
+
}
|
|
45
49
|
/**
|
|
46
50
|
* Embed all golden queries for few-shot learning
|
|
47
51
|
*
|
|
@@ -52,10 +56,10 @@ export class EmbeddingService {
|
|
|
52
56
|
* @param goldenQueries - Array of golden queries to embed
|
|
53
57
|
* @returns Array of golden queries with their embeddings
|
|
54
58
|
*/
|
|
55
|
-
async
|
|
59
|
+
async EmbedGoldenQueries(goldenQueries) {
|
|
56
60
|
const embedded = [];
|
|
57
61
|
for (const query of goldenQueries) {
|
|
58
|
-
const embeddings = await this.
|
|
62
|
+
const embeddings = await this.EmbedQuery({
|
|
59
63
|
userQuestion: query.userQuestion,
|
|
60
64
|
description: query.description,
|
|
61
65
|
technicalDescription: query.technicalDescription,
|
|
@@ -67,19 +71,27 @@ export class EmbeddingService {
|
|
|
67
71
|
}
|
|
68
72
|
return embedded;
|
|
69
73
|
}
|
|
74
|
+
/** @deprecated Use {@link EmbedGoldenQueries}. */
|
|
75
|
+
async embedGoldenQueries(goldenQueries) {
|
|
76
|
+
return this.EmbedGoldenQueries(goldenQueries);
|
|
77
|
+
}
|
|
70
78
|
/**
|
|
71
79
|
* Embed multiple queries in batch
|
|
72
80
|
*
|
|
73
81
|
* @param queries - Array of queries to embed
|
|
74
82
|
* @returns Array of embeddings corresponding to input queries
|
|
75
83
|
*/
|
|
76
|
-
async
|
|
84
|
+
async EmbedQueries(queries) {
|
|
77
85
|
const embeddings = [];
|
|
78
86
|
for (const query of queries) {
|
|
79
|
-
const embedding = await this.
|
|
87
|
+
const embedding = await this.EmbedQuery(query);
|
|
80
88
|
embeddings.push(embedding);
|
|
81
89
|
}
|
|
82
90
|
return embeddings;
|
|
83
91
|
}
|
|
92
|
+
/** @deprecated Use {@link EmbedQueries}. */
|
|
93
|
+
async embedQueries(queries) {
|
|
94
|
+
return this.EmbedQueries(queries);
|
|
95
|
+
}
|
|
84
96
|
}
|
|
85
97
|
//# sourceMappingURL=EmbeddingService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmbeddingService.js","sourceRoot":"","sources":["../../src/vectors/EmbeddingService.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAG3B;;;;OAIG;IACH,YAAY,YAAoB,wBAAwB;QACtD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,UAAU,CAAC,KAIhB;QACC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAEnC,iDAAiD;QACjD,MAAM,CAAC,kBAAkB,EAAE,UAAU,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACzE,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC;YAC3C,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC;YAC1C,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,oBAAoB,CAAC;SACpD,CAAC,CAAC;QAEH,OAAO;YACL,YAAY,EAAE,kBAAkB,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;YACrD,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;YAC5C,oBAAoB,EAAE,cAAc,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;SAC1D,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,kBAAkB,CAAC,aAA4B;QACnD,MAAM,QAAQ,GAA0B,EAAE,CAAC;QAE3C,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC;gBACvC,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;aACjD,CAAC,CAAC;YAEH,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK;gBACL,UAAU;aACX,CAAC,CAAC;QACL,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CAChB,OAIE;QAEF,MAAM,UAAU,GAAsB,EAAE,CAAC;QAEzC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC/C,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"EmbeddingService.js","sourceRoot":"","sources":["../../src/vectors/EmbeddingService.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAG3B;;;;OAIG;IACH,YAAY,YAAoB,wBAAwB;QACtD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,UAAU,CAAC,KAIhB;QACC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAEnC,iDAAiD;QACjD,MAAM,CAAC,kBAAkB,EAAE,UAAU,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACzE,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC;YAC3C,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC;YAC1C,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,oBAAoB,CAAC;SACpD,CAAC,CAAC;QAEH,OAAO;YACL,YAAY,EAAE,kBAAkB,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;YACrD,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;YAC5C,oBAAoB,EAAE,cAAc,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;SAC1D,CAAC;IACJ,CAAC;IAED,0CAA0C;IAC1C,KAAK,CAAC,UAAU,CAAC,KAIhB;QACC,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,kBAAkB,CAAC,aAA4B;QACnD,MAAM,QAAQ,GAA0B,EAAE,CAAC;QAE3C,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC;gBACvC,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;aACjD,CAAC,CAAC;YAEH,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK;gBACL,UAAU;aACX,CAAC,CAAC;QACL,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,kDAAkD;IAClD,KAAK,CAAC,kBAAkB,CAAC,aAA4B;QACnD,OAAO,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAChD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CAChB,OAIE;QAEF,MAAM,UAAU,GAAsB,EAAE,CAAC;QAEzC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC/C,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,4CAA4C;IAC5C,KAAK,CAAC,YAAY,CAChB,OAIE;QAEF,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;CACF"}
|
|
@@ -32,6 +32,8 @@ export declare class SimilaritySearch extends SimpleVectorService {
|
|
|
32
32
|
* @param topK - Number of most similar queries to return (default: 5)
|
|
33
33
|
* @returns Array of top-K most similar golden queries with scores
|
|
34
34
|
*/
|
|
35
|
+
FindSimilarQueries(queryEmbeddings: QueryEmbeddings, goldenEmbeddings: EmbeddedGoldenQuery[], topK?: number): Promise<SimilarQuery[]>;
|
|
36
|
+
/** @deprecated Use {@link FindSimilarQueries}. */
|
|
35
37
|
findSimilarQueries(queryEmbeddings: QueryEmbeddings, goldenEmbeddings: EmbeddedGoldenQuery[], topK?: number): Promise<SimilarQuery[]>;
|
|
36
38
|
/**
|
|
37
39
|
* Calculate cosine similarity for each field separately
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SimilaritySearch.d.ts","sourceRoot":"","sources":["../../src/vectors/SimilaritySearch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAYxE;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,mBAAmB;IACvD;;;;;;;;OAQG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAItB;IAEF;;;;;;;;;;OAUG;IACG,kBAAkB,CACtB,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,mBAAmB,EAAE,EACvC,IAAI,GAAE,MAAU,GACf,OAAO,CAAC,YAAY,EAAE,CAAC;IAiB1B;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAWlC;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAQ9B;;OAEG;IACH,OAAO,CAAC,UAAU;CAKnB"}
|
|
1
|
+
{"version":3,"file":"SimilaritySearch.d.ts","sourceRoot":"","sources":["../../src/vectors/SimilaritySearch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAYxE;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,mBAAmB;IACvD;;;;;;;;OAQG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAItB;IAEF;;;;;;;;;;OAUG;IACG,kBAAkB,CACtB,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,mBAAmB,EAAE,EACvC,IAAI,GAAE,MAAU,GACf,OAAO,CAAC,YAAY,EAAE,CAAC;IAiB1B,kDAAkD;IAC5C,kBAAkB,CACtB,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,mBAAmB,EAAE,EACvC,IAAI,GAAE,MAAU,GACf,OAAO,CAAC,YAAY,EAAE,CAAC;IAI1B;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAWlC;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAQ9B;;OAEG;IACH,OAAO,CAAC,UAAU;CAKnB"}
|
|
@@ -38,7 +38,7 @@ export class SimilaritySearch extends SimpleVectorService {
|
|
|
38
38
|
* @param topK - Number of most similar queries to return (default: 5)
|
|
39
39
|
* @returns Array of top-K most similar golden queries with scores
|
|
40
40
|
*/
|
|
41
|
-
async
|
|
41
|
+
async FindSimilarQueries(queryEmbeddings, goldenEmbeddings, topK = 5) {
|
|
42
42
|
// Calculate weighted similarity for each golden query
|
|
43
43
|
const similarities = goldenEmbeddings.map(golden => {
|
|
44
44
|
const fieldScores = this.calculateFieldSimilarities(queryEmbeddings, golden.embeddings);
|
|
@@ -52,6 +52,10 @@ export class SimilaritySearch extends SimpleVectorService {
|
|
|
52
52
|
// Sort by similarity (highest first) and return top K
|
|
53
53
|
return this.selectTopK(similarities, topK);
|
|
54
54
|
}
|
|
55
|
+
/** @deprecated Use {@link FindSimilarQueries}. */
|
|
56
|
+
async findSimilarQueries(queryEmbeddings, goldenEmbeddings, topK = 5) {
|
|
57
|
+
return this.FindSimilarQueries(queryEmbeddings, goldenEmbeddings, topK);
|
|
58
|
+
}
|
|
55
59
|
/**
|
|
56
60
|
* Calculate cosine similarity for each field separately
|
|
57
61
|
* Note: name field excluded as queries don't have names during generation
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SimilaritySearch.js","sourceRoot":"","sources":["../../src/vectors/SimilaritySearch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAYxE;;;GAGG;AACH,MAAM,OAAO,gBAAiB,SAAQ,mBAAmB;IAAzD;;QACE;;;;;;;;WAQG;QACc,YAAO,GAAiB;YACvC,YAAY,EAAE,IAAI;YAClB,WAAW,EAAE,IAAI;YACjB,oBAAoB,EAAE,IAAI;SAC3B,CAAC;
|
|
1
|
+
{"version":3,"file":"SimilaritySearch.js","sourceRoot":"","sources":["../../src/vectors/SimilaritySearch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAYxE;;;GAGG;AACH,MAAM,OAAO,gBAAiB,SAAQ,mBAAmB;IAAzD;;QACE;;;;;;;;WAQG;QACc,YAAO,GAAiB;YACvC,YAAY,EAAE,IAAI;YAClB,WAAW,EAAE,IAAI;YACjB,oBAAoB,EAAE,IAAI;SAC3B,CAAC;IA8EJ,CAAC;IA5EC;;;;;;;;;;OAUG;IACH,KAAK,CAAC,kBAAkB,CACtB,eAAgC,EAChC,gBAAuC,EACvC,OAAe,CAAC;QAEhB,sDAAsD;QACtD,MAAM,YAAY,GAAG,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACjD,MAAM,WAAW,GAAG,IAAI,CAAC,0BAA0B,CAAC,eAAe,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;YACxF,MAAM,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;YAE/D,OAAO;gBACL,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,UAAU,EAAE,aAAa;gBACzB,WAAW;aACZ,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,sDAAsD;QACtD,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,kDAAkD;IAClD,KAAK,CAAC,kBAAkB,CACtB,eAAgC,EAChC,gBAAuC,EACvC,OAAe,CAAC;QAEhB,OAAO,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED;;;OAGG;IACK,0BAA0B,CAChC,eAAgC,EAChC,gBAAiC;QAEjC,OAAO;YACL,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,YAAY,EAAE,gBAAgB,CAAC,YAAY,CAAC;YACnG,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,WAAW,EAAE,gBAAgB,CAAC,WAAW,CAAC;YACzF,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,oBAAoB,CAAC;SAChH,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,sBAAsB,CAAC,WAAwC;QACrE,OAAO,CACL,WAAW,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY;YACvD,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW;YAC9C,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC5D,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,YAA4B,EAAE,IAAY;QAC3D,OAAO,YAAY;aAChB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;aAC3C,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACpB,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/query-gen",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "6.2.0-edge.
|
|
4
|
+
"version": "6.2.0-edge.2",
|
|
5
5
|
"description": "AI-powered generation of domain-specific SQL query templates with automatic testing, refinement, and metadata export",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -19,16 +19,16 @@
|
|
|
19
19
|
"author": "MemberJunction",
|
|
20
20
|
"license": "BUSL-1.1",
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@memberjunction/ai": "6.2.0-edge.
|
|
23
|
-
"@memberjunction/ai-core-plus": "6.2.0-edge.
|
|
24
|
-
"@memberjunction/aiengine": "6.2.0-edge.
|
|
25
|
-
"@memberjunction/ai-prompts": "6.2.0-edge.
|
|
26
|
-
"@memberjunction/ai-vectors-memory": "6.2.0-edge.
|
|
27
|
-
"@memberjunction/core": "6.2.0-edge.
|
|
28
|
-
"@memberjunction/core-entities": "6.2.0-edge.
|
|
29
|
-
"@memberjunction/global": "6.2.0-edge.
|
|
30
|
-
"@memberjunction/generic-database-provider": "6.2.0-edge.
|
|
31
|
-
"@memberjunction/sqlserver-dataprovider": "6.2.0-edge.
|
|
22
|
+
"@memberjunction/ai": "6.2.0-edge.2",
|
|
23
|
+
"@memberjunction/ai-core-plus": "6.2.0-edge.2",
|
|
24
|
+
"@memberjunction/aiengine": "6.2.0-edge.2",
|
|
25
|
+
"@memberjunction/ai-prompts": "6.2.0-edge.2",
|
|
26
|
+
"@memberjunction/ai-vectors-memory": "6.2.0-edge.2",
|
|
27
|
+
"@memberjunction/core": "6.2.0-edge.2",
|
|
28
|
+
"@memberjunction/core-entities": "6.2.0-edge.2",
|
|
29
|
+
"@memberjunction/global": "6.2.0-edge.2",
|
|
30
|
+
"@memberjunction/generic-database-provider": "6.2.0-edge.2",
|
|
31
|
+
"@memberjunction/sqlserver-dataprovider": "6.2.0-edge.2",
|
|
32
32
|
"chalk": "^5.6.2",
|
|
33
33
|
"commander": "^14.0.3",
|
|
34
34
|
"nunjucks": "^3.2.4",
|
|
@@ -24,9 +24,9 @@ vi.mock('@memberjunction/aiengine', () => ({
|
|
|
24
24
|
// Import after mocks
|
|
25
25
|
// ---------------------------------------------------------------------------
|
|
26
26
|
|
|
27
|
-
import {
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
27
|
+
import { GenerateRelationshipGraph, FormatEntitiesForPrompt, GenerateMermaidDiagram } from '../utils/graph-helpers';
|
|
28
|
+
import { ExtractErrorMessage, RequireValue, GetPropertyOrDefault } from '../utils/error-handlers';
|
|
29
|
+
import { BuildQueryCategory, ExtractUniqueCategories } from '../utils/category-builder';
|
|
30
30
|
import type { EntityInfo, EntityRelationshipInfo } from '@memberjunction/core';
|
|
31
31
|
|
|
32
32
|
// ---------------------------------------------------------------------------
|
|
@@ -81,14 +81,14 @@ describe('generateRelationshipGraph', () => {
|
|
|
81
81
|
createMockEntity('Orders', 'dbo', []),
|
|
82
82
|
];
|
|
83
83
|
|
|
84
|
-
const graph =
|
|
84
|
+
const graph = GenerateRelationshipGraph(entities as EntityInfo[]);
|
|
85
85
|
expect(graph).toContain('Customers: \u2192 Orders');
|
|
86
86
|
expect(graph).toContain('Orders: (no relationships)');
|
|
87
87
|
});
|
|
88
88
|
|
|
89
89
|
it('should handle entities with no relationships', () => {
|
|
90
90
|
const entities = [createMockEntity('Standalone')];
|
|
91
|
-
const graph =
|
|
91
|
+
const graph = GenerateRelationshipGraph(entities as EntityInfo[]);
|
|
92
92
|
expect(graph).toContain('Standalone: (no relationships)');
|
|
93
93
|
});
|
|
94
94
|
});
|
|
@@ -96,7 +96,7 @@ describe('generateRelationshipGraph', () => {
|
|
|
96
96
|
describe('formatEntitiesForPrompt', () => {
|
|
97
97
|
it('should format entity metadata correctly', () => {
|
|
98
98
|
const entities = [createMockEntity('Users', 'auth')];
|
|
99
|
-
const result =
|
|
99
|
+
const result = FormatEntitiesForPrompt(entities as EntityInfo[]);
|
|
100
100
|
expect(result).toHaveLength(1);
|
|
101
101
|
expect(result[0].Name).toBe('Users');
|
|
102
102
|
expect(result[0].SchemaName).toBe('auth');
|
|
@@ -106,7 +106,7 @@ describe('formatEntitiesForPrompt', () => {
|
|
|
106
106
|
it('should default description for entities without one', () => {
|
|
107
107
|
const entity = createMockEntity('NoDesc');
|
|
108
108
|
(entity as Record<string, unknown>).Description = '';
|
|
109
|
-
const result =
|
|
109
|
+
const result = FormatEntitiesForPrompt([entity as EntityInfo]);
|
|
110
110
|
expect(result[0].Description).toBe('No description available');
|
|
111
111
|
});
|
|
112
112
|
});
|
|
@@ -120,7 +120,7 @@ describe('generateMermaidDiagram', () => {
|
|
|
120
120
|
createMockEntity('Orders'),
|
|
121
121
|
];
|
|
122
122
|
|
|
123
|
-
const diagram =
|
|
123
|
+
const diagram = GenerateMermaidDiagram(entities as EntityInfo[]);
|
|
124
124
|
expect(diagram).toContain('graph LR');
|
|
125
125
|
expect(diagram).toContain('Customers[Customers] --> Orders[Orders]');
|
|
126
126
|
});
|
|
@@ -130,7 +130,7 @@ describe('generateMermaidDiagram', () => {
|
|
|
130
130
|
createMockEntity('A', 'dbo', [{ RelatedEntity: 'B', Type: 'One To Many' } as Partial<EntityRelationshipInfo>]),
|
|
131
131
|
createMockEntity('B', 'dbo', [{ RelatedEntity: 'A', Type: 'Many To One' } as Partial<EntityRelationshipInfo>]),
|
|
132
132
|
];
|
|
133
|
-
const diagram =
|
|
133
|
+
const diagram = GenerateMermaidDiagram(entities as EntityInfo[]);
|
|
134
134
|
// Only one edge between A and B
|
|
135
135
|
const edgeCount = (diagram.match(/-->/g) || []).length;
|
|
136
136
|
expect(edgeCount).toBe(1);
|
|
@@ -143,42 +143,42 @@ describe('generateMermaidDiagram', () => {
|
|
|
143
143
|
|
|
144
144
|
describe('extractErrorMessage', () => {
|
|
145
145
|
it('should extract from Error instance', () => {
|
|
146
|
-
const msg =
|
|
146
|
+
const msg = ExtractErrorMessage(new Error('boom'), 'TestContext');
|
|
147
147
|
expect(msg).toBe('TestContext: boom');
|
|
148
148
|
});
|
|
149
149
|
|
|
150
150
|
it('should extract from string', () => {
|
|
151
|
-
const msg =
|
|
151
|
+
const msg = ExtractErrorMessage('string error', 'Ctx');
|
|
152
152
|
expect(msg).toBe('Ctx: string error');
|
|
153
153
|
});
|
|
154
154
|
|
|
155
155
|
it('should handle unknown error type', () => {
|
|
156
|
-
const msg =
|
|
156
|
+
const msg = ExtractErrorMessage(42, 'Ctx');
|
|
157
157
|
expect(msg).toBe('Ctx: Unknown error occurred');
|
|
158
158
|
});
|
|
159
159
|
});
|
|
160
160
|
|
|
161
161
|
describe('requireValue', () => {
|
|
162
162
|
it('should return value when present', () => {
|
|
163
|
-
expect(
|
|
163
|
+
expect(RequireValue('hello', 'field')).toBe('hello');
|
|
164
164
|
});
|
|
165
165
|
|
|
166
166
|
it('should throw for null', () => {
|
|
167
|
-
expect(() =>
|
|
167
|
+
expect(() => RequireValue(null, 'myField')).toThrow("Required value 'myField' is missing");
|
|
168
168
|
});
|
|
169
169
|
|
|
170
170
|
it('should throw for undefined', () => {
|
|
171
|
-
expect(() =>
|
|
171
|
+
expect(() => RequireValue(undefined, 'myField')).toThrow("Required value 'myField' is missing");
|
|
172
172
|
});
|
|
173
173
|
});
|
|
174
174
|
|
|
175
175
|
describe('getPropertyOrDefault', () => {
|
|
176
176
|
it('should return property value when present', () => {
|
|
177
|
-
expect(
|
|
177
|
+
expect(GetPropertyOrDefault({ x: 10 }, 'x', 0)).toBe(10);
|
|
178
178
|
});
|
|
179
179
|
|
|
180
180
|
it('should return default when property missing', () => {
|
|
181
|
-
expect(
|
|
181
|
+
expect(GetPropertyOrDefault({}, 'x', 42)).toBe(42);
|
|
182
182
|
});
|
|
183
183
|
});
|
|
184
184
|
|
|
@@ -206,7 +206,7 @@ describe('buildQueryCategory', () => {
|
|
|
206
206
|
expectedQuestionTypes: [],
|
|
207
207
|
};
|
|
208
208
|
|
|
209
|
-
const cat =
|
|
209
|
+
const cat = BuildQueryCategory(config as Parameters<typeof BuildQueryCategory>[0], entityGroup);
|
|
210
210
|
expect(cat.name).toBe('Users');
|
|
211
211
|
expect(cat.parentName).toBe('Generated');
|
|
212
212
|
expect(cat.path).toBe('Generated/Users');
|
|
@@ -230,7 +230,7 @@ describe('buildQueryCategory', () => {
|
|
|
230
230
|
expectedQuestionTypes: [],
|
|
231
231
|
};
|
|
232
232
|
|
|
233
|
-
const cat =
|
|
233
|
+
const cat = BuildQueryCategory(config as Parameters<typeof BuildQueryCategory>[0], entityGroup);
|
|
234
234
|
expect(cat.name).toBe('Auto-Generated');
|
|
235
235
|
expect(cat.parentName).toBeNull();
|
|
236
236
|
});
|
|
@@ -244,7 +244,7 @@ describe('extractUniqueCategories', () => {
|
|
|
244
244
|
{ name: 'Users', parentName: 'Root', description: 'Users', path: 'Root/Users' },
|
|
245
245
|
];
|
|
246
246
|
|
|
247
|
-
const unique =
|
|
247
|
+
const unique = ExtractUniqueCategories(cats);
|
|
248
248
|
expect(unique).toHaveLength(2);
|
|
249
249
|
});
|
|
250
250
|
|
|
@@ -253,7 +253,7 @@ describe('extractUniqueCategories', () => {
|
|
|
253
253
|
{ name: 'Orders', parentName: 'Generated', description: 'Orders', path: 'Generated/Orders' },
|
|
254
254
|
];
|
|
255
255
|
|
|
256
|
-
const unique =
|
|
256
|
+
const unique = ExtractUniqueCategories(cats);
|
|
257
257
|
// Should have both the parent 'Generated' and child 'Orders'
|
|
258
258
|
expect(unique).toHaveLength(2);
|
|
259
259
|
const parentCat = unique.find(c => c.name === 'Generated');
|
|
@@ -267,7 +267,7 @@ describe('extractUniqueCategories', () => {
|
|
|
267
267
|
{ name: 'Alpha', parentName: null, description: '', path: 'Alpha' },
|
|
268
268
|
];
|
|
269
269
|
|
|
270
|
-
const sorted =
|
|
270
|
+
const sorted = ExtractUniqueCategories(cats);
|
|
271
271
|
expect(sorted[0].name).toBe('Alpha');
|
|
272
272
|
expect(sorted[1].name).toBe('Zeta');
|
|
273
273
|
});
|
|
@@ -12,9 +12,9 @@ import chalk from 'chalk';
|
|
|
12
12
|
import * as fs from 'fs';
|
|
13
13
|
import * as path from 'path';
|
|
14
14
|
import { Metadata, UserInfo } from '@memberjunction/core';
|
|
15
|
-
import {
|
|
15
|
+
import { GetSystemUser } from '../../utils/user-helpers';
|
|
16
16
|
import { MJQueryEntity, QueryEngine } from '@memberjunction/core-entities';
|
|
17
|
-
import {
|
|
17
|
+
import { ExtractErrorMessage } from '../../utils/error-handlers';
|
|
18
18
|
import { QueryMetadataRecord } from '../../data/schema';
|
|
19
19
|
|
|
20
20
|
/**
|
|
@@ -22,7 +22,7 @@ import { QueryMetadataRecord } from '../../data/schema';
|
|
|
22
22
|
*
|
|
23
23
|
* Loads queries from database and exports them to metadata files.
|
|
24
24
|
*/
|
|
25
|
-
export async function
|
|
25
|
+
export async function ExportCommand(options: Record<string, unknown>): Promise<void> {
|
|
26
26
|
const spinner = ora('Initializing export...').start();
|
|
27
27
|
|
|
28
28
|
try {
|
|
@@ -30,7 +30,7 @@ export async function exportCommand(options: Record<string, unknown>): Promise<v
|
|
|
30
30
|
const verbose = Boolean(options.verbose);
|
|
31
31
|
|
|
32
32
|
// 1. Get system user from UserCache (populated by provider initialization)
|
|
33
|
-
const contextUser =
|
|
33
|
+
const contextUser = GetSystemUser();
|
|
34
34
|
|
|
35
35
|
// 2. Verify database connection and load metadata
|
|
36
36
|
spinner.text = 'Loading metadata...';
|
|
@@ -72,7 +72,7 @@ export async function exportCommand(options: Record<string, unknown>): Promise<v
|
|
|
72
72
|
spinner.info(`${queryPrefix} ${chalk.green('✓')} Exported ${query.Name}`);
|
|
73
73
|
}
|
|
74
74
|
} catch (error: unknown) {
|
|
75
|
-
const errorMsg =
|
|
75
|
+
const errorMsg = ExtractErrorMessage(error, 'Query Export');
|
|
76
76
|
errors.push({ query: query.Name, error: errorMsg });
|
|
77
77
|
if (verbose) {
|
|
78
78
|
spinner.warn(`${queryPrefix} ${chalk.red('✗')} ${query.Name}: ${errorMsg}`);
|
|
@@ -109,11 +109,16 @@ export async function exportCommand(options: Record<string, unknown>): Promise<v
|
|
|
109
109
|
|
|
110
110
|
} catch (error: unknown) {
|
|
111
111
|
spinner.fail(chalk.red('Export failed'));
|
|
112
|
-
console.error(chalk.red(
|
|
112
|
+
console.error(chalk.red(ExtractErrorMessage(error, 'Query Export')));
|
|
113
113
|
process.exit(1);
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
+
/** @deprecated Use {@link ExportCommand}. */
|
|
118
|
+
export async function exportCommand(options: Record<string, unknown>): Promise<void> {
|
|
119
|
+
return ExportCommand(options);
|
|
120
|
+
}
|
|
121
|
+
|
|
117
122
|
/**
|
|
118
123
|
* Load all queries from QueryEngine's cache (already sorted by Name via BaseEngine)
|
|
119
124
|
*/
|