@memberjunction/query-gen 0.0.1 → 2.126.1

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 (138) hide show
  1. package/.turbo/turbo-build.log +4 -0
  2. package/CHANGELOG.md +34 -0
  3. package/COORDINATOR.md +768 -0
  4. package/IMPLEMENTATION_PLAN.md +1753 -0
  5. package/LLM_ENTITY_GROUPING_PLAN.md +977 -0
  6. package/README.md +675 -29
  7. package/dist/cli/commands/export.d.ts +15 -0
  8. package/dist/cli/commands/export.d.ts.map +1 -0
  9. package/dist/cli/commands/export.js +178 -0
  10. package/dist/cli/commands/export.js.map +1 -0
  11. package/dist/cli/commands/generate.d.ts +19 -0
  12. package/dist/cli/commands/generate.d.ts.map +1 -0
  13. package/dist/cli/commands/generate.js +282 -0
  14. package/dist/cli/commands/generate.js.map +1 -0
  15. package/dist/cli/commands/validate.d.ts +17 -0
  16. package/dist/cli/commands/validate.d.ts.map +1 -0
  17. package/dist/cli/commands/validate.js +193 -0
  18. package/dist/cli/commands/validate.js.map +1 -0
  19. package/dist/cli/config.d.ts +51 -0
  20. package/dist/cli/config.d.ts.map +1 -0
  21. package/dist/cli/config.js +142 -0
  22. package/dist/cli/config.js.map +1 -0
  23. package/dist/cli/index.d.ts +13 -0
  24. package/dist/cli/index.d.ts.map +1 -0
  25. package/dist/cli/index.js +57 -0
  26. package/dist/cli/index.js.map +1 -0
  27. package/dist/core/EntityGrouper.d.ts +74 -0
  28. package/dist/core/EntityGrouper.d.ts.map +1 -0
  29. package/dist/core/EntityGrouper.js +246 -0
  30. package/dist/core/EntityGrouper.js.map +1 -0
  31. package/dist/core/MetadataExporter.d.ts +59 -0
  32. package/dist/core/MetadataExporter.d.ts.map +1 -0
  33. package/dist/core/MetadataExporter.js +151 -0
  34. package/dist/core/MetadataExporter.js.map +1 -0
  35. package/dist/core/QueryDatabaseWriter.d.ts +50 -0
  36. package/dist/core/QueryDatabaseWriter.d.ts.map +1 -0
  37. package/dist/core/QueryDatabaseWriter.js +152 -0
  38. package/dist/core/QueryDatabaseWriter.js.map +1 -0
  39. package/dist/core/QueryFixer.d.ts +48 -0
  40. package/dist/core/QueryFixer.d.ts.map +1 -0
  41. package/dist/core/QueryFixer.js +115 -0
  42. package/dist/core/QueryFixer.js.map +1 -0
  43. package/dist/core/QueryRefiner.d.ts +94 -0
  44. package/dist/core/QueryRefiner.d.ts.map +1 -0
  45. package/dist/core/QueryRefiner.js +267 -0
  46. package/dist/core/QueryRefiner.js.map +1 -0
  47. package/dist/core/QueryTester.d.ts +70 -0
  48. package/dist/core/QueryTester.d.ts.map +1 -0
  49. package/dist/core/QueryTester.js +243 -0
  50. package/dist/core/QueryTester.js.map +1 -0
  51. package/dist/core/QueryWriter.d.ts +57 -0
  52. package/dist/core/QueryWriter.d.ts.map +1 -0
  53. package/dist/core/QueryWriter.js +184 -0
  54. package/dist/core/QueryWriter.js.map +1 -0
  55. package/dist/core/QuestionGenerator.d.ts +58 -0
  56. package/dist/core/QuestionGenerator.d.ts.map +1 -0
  57. package/dist/core/QuestionGenerator.js +145 -0
  58. package/dist/core/QuestionGenerator.js.map +1 -0
  59. package/dist/data/schema.d.ts +230 -0
  60. package/dist/data/schema.d.ts.map +1 -0
  61. package/dist/data/schema.js +6 -0
  62. package/dist/data/schema.js.map +1 -0
  63. package/dist/index.d.ts +28 -0
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.js +77 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/prompts/PromptNames.d.ts +32 -0
  68. package/dist/prompts/PromptNames.d.ts.map +1 -0
  69. package/dist/prompts/PromptNames.js +35 -0
  70. package/dist/prompts/PromptNames.js.map +1 -0
  71. package/dist/utils/category-builder.d.ts +28 -0
  72. package/dist/utils/category-builder.d.ts.map +1 -0
  73. package/dist/utils/category-builder.js +90 -0
  74. package/dist/utils/category-builder.js.map +1 -0
  75. package/dist/utils/entity-helpers.d.ts +49 -0
  76. package/dist/utils/entity-helpers.d.ts.map +1 -0
  77. package/dist/utils/entity-helpers.js +189 -0
  78. package/dist/utils/entity-helpers.js.map +1 -0
  79. package/dist/utils/error-handlers.d.ts +19 -0
  80. package/dist/utils/error-handlers.d.ts.map +1 -0
  81. package/dist/utils/error-handlers.js +41 -0
  82. package/dist/utils/error-handlers.js.map +1 -0
  83. package/dist/utils/graph-helpers.d.ts +51 -0
  84. package/dist/utils/graph-helpers.d.ts.map +1 -0
  85. package/dist/utils/graph-helpers.js +82 -0
  86. package/dist/utils/graph-helpers.js.map +1 -0
  87. package/dist/utils/prompt-helpers.d.ts +25 -0
  88. package/dist/utils/prompt-helpers.d.ts.map +1 -0
  89. package/dist/utils/prompt-helpers.js +66 -0
  90. package/dist/utils/prompt-helpers.js.map +1 -0
  91. package/dist/utils/query-helpers.d.ts +23 -0
  92. package/dist/utils/query-helpers.d.ts.map +1 -0
  93. package/dist/utils/query-helpers.js +34 -0
  94. package/dist/utils/query-helpers.js.map +1 -0
  95. package/dist/utils/user-helpers.d.ts +15 -0
  96. package/dist/utils/user-helpers.d.ts.map +1 -0
  97. package/dist/utils/user-helpers.js +32 -0
  98. package/dist/utils/user-helpers.js.map +1 -0
  99. package/dist/vectors/EmbeddingService.d.ts +58 -0
  100. package/dist/vectors/EmbeddingService.d.ts.map +1 -0
  101. package/dist/vectors/EmbeddingService.js +90 -0
  102. package/dist/vectors/EmbeddingService.js.map +1 -0
  103. package/dist/vectors/SimilaritySearch.d.ts +51 -0
  104. package/dist/vectors/SimilaritySearch.d.ts.map +1 -0
  105. package/dist/vectors/SimilaritySearch.js +85 -0
  106. package/dist/vectors/SimilaritySearch.js.map +1 -0
  107. package/docs/API.md +1040 -0
  108. package/docs/ARCHITECTURE.md +1120 -0
  109. package/examples/advanced-usage.ts +401 -0
  110. package/examples/basic-usage.ts +285 -0
  111. package/package.json +48 -6
  112. package/src/cli/commands/export.ts +173 -0
  113. package/src/cli/commands/generate.ts +330 -0
  114. package/src/cli/commands/validate.ts +185 -0
  115. package/src/cli/config.ts +203 -0
  116. package/src/cli/index.ts +63 -0
  117. package/src/core/EntityGrouper.ts +318 -0
  118. package/src/core/MetadataExporter.ts +148 -0
  119. package/src/core/QueryDatabaseWriter.ts +187 -0
  120. package/src/core/QueryFixer.ts +153 -0
  121. package/src/core/QueryRefiner.ts +382 -0
  122. package/src/core/QueryTester.ts +264 -0
  123. package/src/core/QueryWriter.ts +239 -0
  124. package/src/core/QuestionGenerator.ts +199 -0
  125. package/src/data/golden-queries.json +1371 -0
  126. package/src/data/schema.ts +252 -0
  127. package/src/index.ts +49 -0
  128. package/src/prompts/PromptNames.ts +36 -0
  129. package/src/utils/category-builder.ts +97 -0
  130. package/src/utils/entity-helpers.ts +203 -0
  131. package/src/utils/error-handlers.ts +41 -0
  132. package/src/utils/graph-helpers.ts +99 -0
  133. package/src/utils/prompt-helpers.ts +79 -0
  134. package/src/utils/query-helpers.ts +32 -0
  135. package/src/utils/user-helpers.ts +39 -0
  136. package/src/vectors/EmbeddingService.ts +109 -0
  137. package/src/vectors/SimilaritySearch.ts +108 -0
  138. package/tsconfig.json +39 -0
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Graph visualization and entity metadata formatting utilities
3
+ */
4
+ import { EntityInfo } from '@memberjunction/core';
5
+ /**
6
+ * Entity metadata formatted for LLM prompts (concise version)
7
+ */
8
+ export interface EntityMetadataForPrompt {
9
+ Name: string;
10
+ Description: string;
11
+ SchemaName: string;
12
+ FieldCount: number;
13
+ RelatedEntities: Array<{
14
+ name: string;
15
+ type: string;
16
+ }>;
17
+ }
18
+ /**
19
+ * Generates a simple text-based relationship graph for LLM prompts
20
+ *
21
+ * Output format:
22
+ * ```
23
+ * Customers: → Orders, → Addresses
24
+ * Orders: → OrderDetails, → Customers
25
+ * Products: → OrderDetails, → Categories
26
+ * ```
27
+ */
28
+ export declare function generateRelationshipGraph(entities: EntityInfo[]): string;
29
+ /**
30
+ * Generates a Mermaid diagram for richer visualization
31
+ *
32
+ * This can be used in prompts that support Mermaid syntax.
33
+ * Output format:
34
+ * ```mermaid
35
+ * graph LR
36
+ * Customers[Customers] --> Orders[Orders]
37
+ * Orders[Orders] --> OrderDetails[OrderDetails]
38
+ * ```
39
+ */
40
+ export declare function generateMermaidDiagram(entities: EntityInfo[]): string;
41
+ /**
42
+ * Formats entity metadata for LLM prompt (concise version with key info)
43
+ *
44
+ * Extracts only the essential information needed for entity grouping:
45
+ * - Entity name and description
46
+ * - Schema name
47
+ * - Field count (as a proxy for data richness)
48
+ * - Related entities with relationship types
49
+ */
50
+ export declare function formatEntitiesForPrompt(entities: EntityInfo[]): EntityMetadataForPrompt[];
51
+ //# sourceMappingURL=graph-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/graph-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxD;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,CAiBxE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,CAmBrE;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,uBAAuB,EAAE,CAWzF"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ /**
3
+ * Graph visualization and entity metadata formatting utilities
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.formatEntitiesForPrompt = exports.generateMermaidDiagram = exports.generateRelationshipGraph = void 0;
7
+ /**
8
+ * Generates a simple text-based relationship graph for LLM prompts
9
+ *
10
+ * Output format:
11
+ * ```
12
+ * Customers: → Orders, → Addresses
13
+ * Orders: → OrderDetails, → Customers
14
+ * Products: → OrderDetails, → Categories
15
+ * ```
16
+ */
17
+ function generateRelationshipGraph(entities) {
18
+ const lines = [];
19
+ for (const entity of entities) {
20
+ if (entity.RelatedEntities.length === 0) {
21
+ lines.push(`${entity.Name}: (no relationships)`);
22
+ continue;
23
+ }
24
+ const relations = entity.RelatedEntities
25
+ .map(rel => `→ ${rel.RelatedEntity}`)
26
+ .join(', ');
27
+ lines.push(`${entity.Name}: ${relations}`);
28
+ }
29
+ return lines.join('\n');
30
+ }
31
+ exports.generateRelationshipGraph = generateRelationshipGraph;
32
+ /**
33
+ * Generates a Mermaid diagram for richer visualization
34
+ *
35
+ * This can be used in prompts that support Mermaid syntax.
36
+ * Output format:
37
+ * ```mermaid
38
+ * graph LR
39
+ * Customers[Customers] --> Orders[Orders]
40
+ * Orders[Orders] --> OrderDetails[OrderDetails]
41
+ * ```
42
+ */
43
+ function generateMermaidDiagram(entities) {
44
+ const lines = ['graph LR'];
45
+ const processedPairs = new Set();
46
+ for (const entity of entities) {
47
+ const safeEntityName = entity.Name.replace(/\s/g, '_');
48
+ for (const rel of entity.RelatedEntities) {
49
+ const safeRelatedName = rel.RelatedEntity.replace(/\s/g, '_');
50
+ const pairKey = [safeEntityName, safeRelatedName].sort().join('|');
51
+ if (!processedPairs.has(pairKey)) {
52
+ lines.push(` ${safeEntityName}[${entity.Name}] --> ${safeRelatedName}[${rel.RelatedEntity}]`);
53
+ processedPairs.add(pairKey);
54
+ }
55
+ }
56
+ }
57
+ return lines.join('\n');
58
+ }
59
+ exports.generateMermaidDiagram = generateMermaidDiagram;
60
+ /**
61
+ * Formats entity metadata for LLM prompt (concise version with key info)
62
+ *
63
+ * Extracts only the essential information needed for entity grouping:
64
+ * - Entity name and description
65
+ * - Schema name
66
+ * - Field count (as a proxy for data richness)
67
+ * - Related entities with relationship types
68
+ */
69
+ function formatEntitiesForPrompt(entities) {
70
+ return entities.map(entity => ({
71
+ Name: entity.Name,
72
+ Description: entity.Description || 'No description available',
73
+ SchemaName: entity.SchemaName || 'dbo',
74
+ FieldCount: entity.Fields.length,
75
+ RelatedEntities: entity.RelatedEntities.map(rel => ({
76
+ name: rel.RelatedEntity,
77
+ type: rel.Type
78
+ }))
79
+ }));
80
+ }
81
+ exports.formatEntitiesForPrompt = formatEntitiesForPrompt;
82
+ //# sourceMappingURL=graph-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-helpers.js","sourceRoot":"","sources":["../../src/utils/graph-helpers.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAeH;;;;;;;;;GASG;AACH,SAAgB,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;AAjBD,8DAiBC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,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;AAnBD,wDAmBC;AAED;;;;;;;;GAQG;AACH,SAAgB,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;AAXD,0DAWC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Prompt execution helpers with model/vendor override support
3
+ */
4
+ import { UserInfo } from '@memberjunction/core';
5
+ import { AIPromptEntityExtended } from '@memberjunction/core-entities';
6
+ import { QueryGenConfig } from '../cli/config';
7
+ /**
8
+ * Execute a prompt with optional model/vendor overrides from QueryGenConfig
9
+ *
10
+ * Uses AIPromptParams.override parameter to apply runtime model/vendor overrides.
11
+ * If config specifies modelOverride or vendorOverride, looks up their IDs from
12
+ * the AIEngine cache and passes them to the prompt execution.
13
+ *
14
+ * @param prompt - The AI prompt to execute (from AIEngine.Instance.Prompts)
15
+ * @param data - Data to pass to the prompt template
16
+ * @param contextUser - User context for server-side operations
17
+ * @param config - QueryGen configuration (for model/vendor overrides)
18
+ * @returns Promise resolving to the prompt result
19
+ */
20
+ export declare function executePromptWithOverrides<T>(prompt: AIPromptEntityExtended, data: Record<string, unknown>, contextUser: UserInfo, config: QueryGenConfig): Promise<{
21
+ success: boolean;
22
+ result?: T;
23
+ errorMessage?: string;
24
+ }>;
25
+ //# sourceMappingURL=prompt-helpers.d.ts.map
@@ -0,0 +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,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C;;;;;;;;;;;;GAYG;AACH,wBAAsB,0BAA0B,CAAC,CAAC,EAChD,MAAM,EAAE,sBAAsB,EAC9B,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"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ /**
3
+ * Prompt execution helpers with model/vendor override support
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.executePromptWithOverrides = void 0;
7
+ const ai_core_plus_1 = require("@memberjunction/ai-core-plus");
8
+ const ai_prompts_1 = require("@memberjunction/ai-prompts");
9
+ const aiengine_1 = require("@memberjunction/aiengine");
10
+ /**
11
+ * Execute a prompt with optional model/vendor overrides from QueryGenConfig
12
+ *
13
+ * Uses AIPromptParams.override parameter to apply runtime model/vendor overrides.
14
+ * If config specifies modelOverride or vendorOverride, looks up their IDs from
15
+ * the AIEngine cache and passes them to the prompt execution.
16
+ *
17
+ * @param prompt - The AI prompt to execute (from AIEngine.Instance.Prompts)
18
+ * @param data - Data to pass to the prompt template
19
+ * @param contextUser - User context for server-side operations
20
+ * @param config - QueryGen configuration (for model/vendor overrides)
21
+ * @returns Promise resolving to the prompt result
22
+ */
23
+ async function executePromptWithOverrides(prompt, data, contextUser, config) {
24
+ const promptParams = new ai_core_plus_1.AIPromptParams();
25
+ promptParams.prompt = prompt;
26
+ promptParams.data = data;
27
+ promptParams.contextUser = contextUser;
28
+ promptParams.skipValidation = false;
29
+ // Apply model/vendor overrides using built-in AIPromptParams.override
30
+ if (config.modelOverride || config.vendorOverride) {
31
+ const overrideIds = resolveModelVendorOverrides(config);
32
+ if (overrideIds.modelId || overrideIds.vendorId) {
33
+ promptParams.override = overrideIds;
34
+ }
35
+ }
36
+ const runner = new ai_prompts_1.AIPromptRunner();
37
+ return await runner.ExecutePrompt(promptParams);
38
+ }
39
+ exports.executePromptWithOverrides = executePromptWithOverrides;
40
+ /**
41
+ * Resolve model/vendor names to IDs for AIPromptParams.override
42
+ *
43
+ * Looks up model and vendor by name in the AIEngine cache (already loaded).
44
+ *
45
+ * @param config - QueryGen configuration with modelOverride/vendorOverride names
46
+ * @returns Object with modelId and/or vendorId, or empty object if none found
47
+ */
48
+ function resolveModelVendorOverrides(config) {
49
+ const result = {};
50
+ // Look up model ID from AIEngine cache if modelOverride is set
51
+ if (config.modelOverride) {
52
+ const model = aiengine_1.AIEngine.Instance.Models.find(m => m.Name === config.modelOverride);
53
+ if (model && model.ID) {
54
+ result.modelId = model.ID;
55
+ }
56
+ }
57
+ // Look up vendor ID from AIEngine cache if vendorOverride is set
58
+ if (config.vendorOverride) {
59
+ const vendor = aiengine_1.AIEngine.Instance.Vendors.find(v => v.Name === config.vendorOverride);
60
+ if (vendor && vendor.ID) {
61
+ result.vendorId = vendor.ID;
62
+ }
63
+ }
64
+ return result;
65
+ }
66
+ //# sourceMappingURL=prompt-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-helpers.js","sourceRoot":"","sources":["../../src/utils/prompt-helpers.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,+DAA8D;AAC9D,2DAA4D;AAG5D,uDAAoD;AAGpD;;;;;;;;;;;;GAYG;AACI,KAAK,UAAU,0BAA0B,CAC9C,MAA8B,EAC9B,IAA6B,EAC7B,WAAqB,EACrB,MAAsB;IAEtB,MAAM,YAAY,GAAG,IAAI,6BAAc,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,2BAAc,EAAE,CAAC;IACpC,OAAO,MAAM,MAAM,CAAC,aAAa,CAAI,YAAY,CAAC,CAAC;AACrD,CAAC;AAtBD,gEAsBC;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,mBAAQ,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,mBAAQ,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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Query generation utility functions
3
+ */
4
+ import { BusinessQuestion } from '../data/schema';
5
+ /**
6
+ * Generate a query name from a business question
7
+ *
8
+ * Removes question marks, filters short words, capitalizes each word,
9
+ * and limits to 5 words for a concise query name.
10
+ *
11
+ * @param question - The business question to convert
12
+ * @returns A formatted query name
13
+ *
14
+ * @example
15
+ * generateQueryName({ userQuestion: "What are the top customers by revenue?" })
16
+ * // Returns: "What Are Top Customers Revenue"
17
+ *
18
+ * @example
19
+ * generateQueryName({ userQuestion: "Show me all active users" })
20
+ * // Returns: "Show All Active Users"
21
+ */
22
+ export declare function generateQueryName(question: BusinessQuestion): string;
23
+ //# sourceMappingURL=query-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/query-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAQpE"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ /**
3
+ * Query generation utility functions
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.generateQueryName = void 0;
7
+ /**
8
+ * Generate a query name from a business question
9
+ *
10
+ * Removes question marks, filters short words, capitalizes each word,
11
+ * and limits to 5 words for a concise query name.
12
+ *
13
+ * @param question - The business question to convert
14
+ * @returns A formatted query name
15
+ *
16
+ * @example
17
+ * generateQueryName({ userQuestion: "What are the top customers by revenue?" })
18
+ * // Returns: "What Are Top Customers Revenue"
19
+ *
20
+ * @example
21
+ * generateQueryName({ userQuestion: "Show me all active users" })
22
+ * // Returns: "Show All Active Users"
23
+ */
24
+ function generateQueryName(question) {
25
+ return question.userQuestion
26
+ .replace(/\?/g, '')
27
+ .split(' ')
28
+ .filter(word => word.length > 2)
29
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
30
+ .slice(0, 5)
31
+ .join(' ');
32
+ }
33
+ exports.generateQueryName = generateQueryName;
34
+ //# sourceMappingURL=query-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-helpers.js","sourceRoot":"","sources":["../../src/utils/query-helpers.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAIH;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,iBAAiB,CAAC,QAA0B;IAC1D,OAAO,QAAQ,CAAC,YAAY;SACzB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;SAClB,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SAC/B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SACvE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACX,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AARD,8CAQC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * User helper utilities for QueryGen CLI operations
3
+ */
4
+ import { UserInfo } from '@memberjunction/core';
5
+ /**
6
+ * Get the system user from UserCache
7
+ *
8
+ * The System user is populated in the UserCache when the database provider is initialized.
9
+ * This user is used for CLI operations where no specific user context exists.
10
+ *
11
+ * @returns The System UserInfo object from the cache
12
+ * @throws Error if System user is not found in cache or doesn't have Developer role
13
+ */
14
+ export declare function getSystemUser(): UserInfo;
15
+ //# sourceMappingURL=user-helpers.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ /**
3
+ * User helper utilities for QueryGen CLI operations
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getSystemUser = void 0;
7
+ const sqlserver_dataprovider_1 = require("@memberjunction/sqlserver-dataprovider");
8
+ /**
9
+ * Get the system user from UserCache
10
+ *
11
+ * The System user is populated in the UserCache when the database provider is initialized.
12
+ * This user is used for CLI operations where no specific user context exists.
13
+ *
14
+ * @returns The System UserInfo object from the cache
15
+ * @throws Error if System user is not found in cache or doesn't have Developer role
16
+ */
17
+ function getSystemUser() {
18
+ const sysUser = sqlserver_dataprovider_1.UserCache.Instance.UserByName("System", false);
19
+ if (!sysUser) {
20
+ throw new Error("System user not found in cache. Ensure the database provider is initialized " +
21
+ "before running QueryGen commands (e.g., via 'mj querygen' which initializes the provider).");
22
+ }
23
+ // Check if the System user has the Developer role
24
+ const hasDeveloperRole = sysUser.UserRoles && sysUser.UserRoles.some(userRole => userRole.Role.trim().toLowerCase() === 'developer');
25
+ if (!hasDeveloperRole) {
26
+ throw new Error("System user does not have the 'Developer' role. " +
27
+ "The System user must have the Developer role to perform QueryGen operations.");
28
+ }
29
+ return sysUser;
30
+ }
31
+ exports.getSystemUser = getSystemUser;
32
+ //# sourceMappingURL=user-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-helpers.js","sourceRoot":"","sources":["../../src/utils/user-helpers.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,mFAAmE;AAEnE;;;;;;;;GAQG;AACH,SAAgB,aAAa;IAC3B,MAAM,OAAO,GAAG,kCAAS,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;AAtBD,sCAsBC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * EmbeddingService - Generates embeddings for queries and golden queries
3
+ *
4
+ * Wraps AIEngine embedding functionality for QueryGen use cases.
5
+ * Generates embeddings for multiple fields (name, userQuestion, description, technicalDescription).
6
+ */
7
+ import { QueryEmbeddings, GoldenQuery, EmbeddedGoldenQuery } from '../data/schema';
8
+ /**
9
+ * Service for generating embeddings using AI Engine
10
+ */
11
+ export declare class EmbeddingService {
12
+ private readonly modelName;
13
+ /**
14
+ * Create an EmbeddingService with the specified embedding model
15
+ *
16
+ * @param modelName - Name of the embedding model to use (default: 'text-embedding-3-small')
17
+ */
18
+ constructor(modelName?: string);
19
+ /**
20
+ * Embed a single query by generating embeddings for all its fields
21
+ *
22
+ * Generates separate embeddings for:
23
+ * - userQuestion: Natural language question
24
+ * - description: High-level description
25
+ * - technicalDescription: Technical implementation details
26
+ *
27
+ * @param query - Query to embed (partial structure with text fields)
28
+ * @returns Embeddings for all fields
29
+ */
30
+ embedQuery(query: {
31
+ userQuestion: string;
32
+ description: string;
33
+ technicalDescription: string;
34
+ }): Promise<QueryEmbeddings>;
35
+ /**
36
+ * Embed all golden queries for few-shot learning
37
+ *
38
+ * Golden queries are example queries that serve as few-shot learning examples.
39
+ * This method embeds all fields of all golden queries for similarity search.
40
+ * Note: name field is excluded from embeddings as it's not available during query generation.
41
+ *
42
+ * @param goldenQueries - Array of golden queries to embed
43
+ * @returns Array of golden queries with their embeddings
44
+ */
45
+ embedGoldenQueries(goldenQueries: GoldenQuery[]): Promise<EmbeddedGoldenQuery[]>;
46
+ /**
47
+ * Embed multiple queries in batch
48
+ *
49
+ * @param queries - Array of queries to embed
50
+ * @returns Array of embeddings corresponding to input queries
51
+ */
52
+ embedQueries(queries: Array<{
53
+ userQuestion: string;
54
+ description: string;
55
+ technicalDescription: string;
56
+ }>): Promise<QueryEmbeddings[]>;
57
+ }
58
+ //# sourceMappingURL=EmbeddingService.d.ts.map
@@ -0,0 +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;CAU9B"}
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ /**
3
+ * EmbeddingService - Generates embeddings for queries and golden queries
4
+ *
5
+ * Wraps AIEngine embedding functionality for QueryGen use cases.
6
+ * Generates embeddings for multiple fields (name, userQuestion, description, technicalDescription).
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.EmbeddingService = void 0;
10
+ const aiengine_1 = require("@memberjunction/aiengine");
11
+ /**
12
+ * Service for generating embeddings using AI Engine
13
+ */
14
+ class EmbeddingService {
15
+ modelName;
16
+ /**
17
+ * Create an EmbeddingService with the specified embedding model
18
+ *
19
+ * @param modelName - Name of the embedding model to use (default: 'text-embedding-3-small')
20
+ */
21
+ constructor(modelName = 'text-embedding-3-small') {
22
+ this.modelName = modelName;
23
+ }
24
+ /**
25
+ * Embed a single query by generating embeddings for all its fields
26
+ *
27
+ * Generates separate embeddings for:
28
+ * - userQuestion: Natural language question
29
+ * - description: High-level description
30
+ * - technicalDescription: Technical implementation details
31
+ *
32
+ * @param query - Query to embed (partial structure with text fields)
33
+ * @returns Embeddings for all fields
34
+ */
35
+ async embedQuery(query) {
36
+ const aiEngine = aiengine_1.AIEngine.Instance;
37
+ // Generate embeddings for each field in parallel
38
+ const [userQuestionResult, descResult, techDescResult] = await Promise.all([
39
+ aiEngine.EmbedTextLocal(query.userQuestion),
40
+ aiEngine.EmbedTextLocal(query.description),
41
+ aiEngine.EmbedTextLocal(query.technicalDescription),
42
+ ]);
43
+ return {
44
+ userQuestion: userQuestionResult.result.vector,
45
+ description: descResult.result.vector,
46
+ technicalDescription: techDescResult.result.vector,
47
+ };
48
+ }
49
+ /**
50
+ * Embed all golden queries for few-shot learning
51
+ *
52
+ * Golden queries are example queries that serve as few-shot learning examples.
53
+ * This method embeds all fields of all golden queries for similarity search.
54
+ * Note: name field is excluded from embeddings as it's not available during query generation.
55
+ *
56
+ * @param goldenQueries - Array of golden queries to embed
57
+ * @returns Array of golden queries with their embeddings
58
+ */
59
+ async embedGoldenQueries(goldenQueries) {
60
+ const embedded = [];
61
+ for (const query of goldenQueries) {
62
+ const embeddings = await this.embedQuery({
63
+ userQuestion: query.userQuestion,
64
+ description: query.description,
65
+ technicalDescription: query.technicalDescription,
66
+ });
67
+ embedded.push({
68
+ query,
69
+ embeddings,
70
+ });
71
+ }
72
+ return embedded;
73
+ }
74
+ /**
75
+ * Embed multiple queries in batch
76
+ *
77
+ * @param queries - Array of queries to embed
78
+ * @returns Array of embeddings corresponding to input queries
79
+ */
80
+ async embedQueries(queries) {
81
+ const embeddings = [];
82
+ for (const query of queries) {
83
+ const embedding = await this.embedQuery(query);
84
+ embeddings.push(embedding);
85
+ }
86
+ return embeddings;
87
+ }
88
+ }
89
+ exports.EmbeddingService = EmbeddingService;
90
+ //# sourceMappingURL=EmbeddingService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmbeddingService.js","sourceRoot":"","sources":["../../src/vectors/EmbeddingService.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,uDAAoD;AAGpD;;GAEG;AACH,MAAa,gBAAgB;IACV,SAAS,CAAS;IAEnC;;;;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,mBAAQ,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,CAAC,MAAM,CAAC,MAAM;YAC9C,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM;YACrC,oBAAoB,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM;SACnD,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;AA/FD,4CA+FC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * SimilaritySearch - Finds similar golden queries using weighted cosine similarity
3
+ *
4
+ * Implements weighted similarity search across multiple fields (name, userQuestion,
5
+ * description, technicalDescription) to find the most relevant few-shot examples.
6
+ */
7
+ import { QueryEmbeddings, EmbeddedGoldenQuery, SimilarQuery } from '../data/schema';
8
+ import { SimpleVectorService } from '@memberjunction/ai-vectors-memory';
9
+ /**
10
+ * SimilaritySearch class
11
+ * Finds most similar golden queries using weighted cosine similarity across multiple fields
12
+ */
13
+ export declare class SimilaritySearch extends SimpleVectorService {
14
+ /**
15
+ * Weights for each field in similarity calculation
16
+ * Total weights sum to 1.0
17
+ *
18
+ * Weight distribution prioritizes technical specifications:
19
+ * - userQuestion: 0.20 (less important - natural language is variable)
20
+ * - description: 0.40 (high-level business logic matching)
21
+ * - technicalDescription: 0.40 (technical implementation details)
22
+ */
23
+ private readonly weights;
24
+ /**
25
+ * Find similar golden queries using weighted cosine similarity
26
+ *
27
+ * Calculates similarity for each field separately, then combines with weights.
28
+ * ALWAYS returns topK results, even if below threshold (threshold is informational).
29
+ *
30
+ * @param queryEmbeddings - Embeddings for the user's query (one per field)
31
+ * @param goldenEmbeddings - Array of golden queries with their embeddings
32
+ * @param topK - Number of most similar queries to return (default: 5)
33
+ * @returns Array of top-K most similar golden queries with scores
34
+ */
35
+ findSimilarQueries(queryEmbeddings: QueryEmbeddings, goldenEmbeddings: EmbeddedGoldenQuery[], topK?: number): Promise<SimilarQuery[]>;
36
+ /**
37
+ * Calculate cosine similarity for each field separately
38
+ * Note: name field excluded as queries don't have names during generation
39
+ */
40
+ private calculateFieldSimilarities;
41
+ /**
42
+ * Calculate weighted sum of field similarities
43
+ * Note: name field excluded, weights adjusted accordingly
44
+ */
45
+ private calculateWeightedScore;
46
+ /**
47
+ * Select top K results sorted by similarity
48
+ */
49
+ private selectTopK;
50
+ }
51
+ //# sourceMappingURL=SimilaritySearch.d.ts.map
@@ -0,0 +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"}