@garrix82/reactgenie-dsl 1.0.1 → 1.0.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.
Files changed (104) hide show
  1. package/.env +10 -0
  2. package/.env.example +17 -0
  3. package/.github/workflows/publish.yml +20 -0
  4. package/package.json +1 -5
  5. package/dist/__test__/dsl-descriptor.test.d.ts +0 -1
  6. package/dist/__test__/dsl-descriptor.test.js +0 -27
  7. package/dist/__test__/dsl-descriptor.test.js.map +0 -1
  8. package/dist/__test__/example_descriptor.d.ts +0 -125
  9. package/dist/__test__/example_descriptor.js +0 -607
  10. package/dist/__test__/example_descriptor.js.map +0 -1
  11. package/dist/__test__/food_descriptor.state.json +0 -1
  12. package/dist/__test__/food_descriptor.test.d.ts +0 -74
  13. package/dist/__test__/food_descriptor.test.js +0 -205
  14. package/dist/__test__/food_descriptor.test.js.map +0 -1
  15. package/dist/__test__/nl-interpreter-provider-selection.test.d.ts +0 -1
  16. package/dist/__test__/nl-interpreter-provider-selection.test.js +0 -73
  17. package/dist/__test__/nl-interpreter-provider-selection.test.js.map +0 -1
  18. package/dist/__test__/nl-interpreter.test.d.ts +0 -1
  19. package/dist/__test__/nl-interpreter.test.js +0 -86
  20. package/dist/__test__/nl-interpreter.test.js.map +0 -1
  21. package/dist/decorators/__test__/decorators.test.d.ts +0 -1
  22. package/dist/decorators/__test__/decorators.test.js +0 -182
  23. package/dist/decorators/__test__/decorators.test.js.map +0 -1
  24. package/dist/decorators/__test__/inheritance-descriptor.test.d.ts +0 -1
  25. package/dist/decorators/__test__/inheritance-descriptor.test.js +0 -107
  26. package/dist/decorators/__test__/inheritance-descriptor.test.js.map +0 -1
  27. package/dist/dsl/__test__/dsl-interpreter.test.d.ts +0 -1
  28. package/dist/dsl/__test__/dsl-interpreter.test.js +0 -334
  29. package/dist/dsl/__test__/dsl-interpreter.test.js.map +0 -1
  30. package/dist/dsl/__test__/parser.gen.test.d.ts +0 -1
  31. package/dist/dsl/__test__/parser.gen.test.js +0 -283
  32. package/dist/dsl/__test__/parser.gen.test.js.map +0 -1
  33. package/dist/nl/__test__/context-aware-prompt.test.d.ts +0 -1
  34. package/dist/nl/__test__/context-aware-prompt.test.js +0 -247
  35. package/dist/nl/__test__/context-aware-prompt.test.js.map +0 -1
  36. package/dist/nl/__test__/context-selector.test.d.ts +0 -1
  37. package/dist/nl/__test__/context-selector.test.js +0 -20
  38. package/dist/nl/__test__/context-selector.test.js.map +0 -1
  39. package/dist/nl/__test__/nl-parser-groq-transport.test.d.ts +0 -1
  40. package/dist/nl/__test__/nl-parser-groq-transport.test.js +0 -87
  41. package/dist/nl/__test__/nl-parser-groq-transport.test.js.map +0 -1
  42. package/dist/nl/__test__/nl-parser-openai-parity.test.d.ts +0 -1
  43. package/dist/nl/__test__/nl-parser-openai-parity.test.js +0 -206
  44. package/dist/nl/__test__/nl-parser-openai-parity.test.js.map +0 -1
  45. package/dist/nl/__test__/nl-parser-openai-sampling.test.d.ts +0 -1
  46. package/dist/nl/__test__/nl-parser-openai-sampling.test.js +0 -44
  47. package/dist/nl/__test__/nl-parser-openai-sampling.test.js.map +0 -1
  48. package/dist/nl/__test__/nl-parser-openai-transport.test.d.ts +0 -1
  49. package/dist/nl/__test__/nl-parser-openai-transport.test.js +0 -55
  50. package/dist/nl/__test__/nl-parser-openai-transport.test.js.map +0 -1
  51. package/dist/nl/__test__/nl-parser-utils.test.d.ts +0 -1
  52. package/dist/nl/__test__/nl-parser-utils.test.js +0 -70
  53. package/dist/nl/__test__/nl-parser-utils.test.js.map +0 -1
  54. package/dist/nl/__test__/nl-parser.test.d.ts +0 -1
  55. package/dist/nl/__test__/nl-parser.test.js +0 -64
  56. package/dist/nl/__test__/nl-parser.test.js.map +0 -1
  57. package/dist/nl/__test__/parameter-tuning.test.d.ts +0 -1
  58. package/dist/nl/__test__/parameter-tuning.test.js +0 -95
  59. package/dist/nl/__test__/parameter-tuning.test.js.map +0 -1
  60. package/dist/nl/__test__/semantic-parsing-experiment.test.d.ts +0 -1
  61. package/dist/nl/__test__/semantic-parsing-experiment.test.js +0 -178
  62. package/dist/nl/__test__/semantic-parsing-experiment.test.js.map +0 -1
  63. package/dist/nl/llm-monitoring.test.d.ts +0 -5
  64. package/dist/nl/llm-monitoring.test.js +0 -101
  65. package/dist/nl/llm-monitoring.test.js.map +0 -1
  66. package/lib/__test__/dsl-descriptor.test.ts +0 -27
  67. package/lib/__test__/example_descriptor.ts +0 -762
  68. package/lib/__test__/food_descriptor.state.json +0 -1
  69. package/lib/__test__/food_descriptor.test.ts +0 -331
  70. package/lib/__test__/nl-interpreter-provider-selection.test.ts +0 -126
  71. package/lib/__test__/nl-interpreter.test.ts +0 -129
  72. package/lib/decorators/__test__/decorators.test.ts +0 -177
  73. package/lib/decorators/__test__/inheritance-descriptor.test.ts +0 -92
  74. package/lib/decorators/decorators.ts +0 -754
  75. package/lib/decorators/index.ts +0 -2
  76. package/lib/decorators/store.ts +0 -47
  77. package/lib/dsl/__test__/dsl-interpreter.test.ts +0 -453
  78. package/lib/dsl/__test__/parser.gen.test.ts +0 -296
  79. package/lib/dsl/dsl-interpreter.ts +0 -974
  80. package/lib/dsl/index.ts +0 -1
  81. package/lib/dsl/parser.gen.js +0 -1479
  82. package/lib/dsl/parser.pegjs +0 -130
  83. package/lib/dsl-descriptor.ts +0 -241
  84. package/lib/index.ts +0 -5
  85. package/lib/nl/__test__/context-aware-prompt.test.ts +0 -372
  86. package/lib/nl/__test__/context-selector.test.ts +0 -27
  87. package/lib/nl/__test__/nl-parser-groq-transport.test.ts +0 -139
  88. package/lib/nl/__test__/nl-parser-openai-parity.test.ts +0 -381
  89. package/lib/nl/__test__/nl-parser-openai-sampling.test.ts +0 -73
  90. package/lib/nl/__test__/nl-parser-openai-transport.test.ts +0 -79
  91. package/lib/nl/__test__/nl-parser-utils.test.ts +0 -98
  92. package/lib/nl/__test__/nl-parser.test.ts +0 -119
  93. package/lib/nl/__test__/parameter-tuning.test.ts +0 -137
  94. package/lib/nl/__test__/semantic-parsing-experiment.test.ts +0 -260
  95. package/lib/nl/context-selector.ts +0 -123
  96. package/lib/nl/index.ts +0 -19
  97. package/lib/nl/llm-monitoring.test.ts +0 -136
  98. package/lib/nl/llm-monitoring.ts +0 -339
  99. package/lib/nl/nl-parser-groq.ts +0 -510
  100. package/lib/nl/nl-parser-utils.ts +0 -310
  101. package/lib/nl/nl-parser.ts +0 -616
  102. package/lib/nl/prompt-gen.ts +0 -607
  103. package/lib/nl/prompt-res.ts +0 -207
  104. package/lib/nl-interpreter.ts +0 -262
@@ -1,95 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const nl_parser_groq_1 = require("../nl-parser-groq");
4
- const prompt_gen_1 = require("../prompt-gen");
5
- const example_descriptor_1 = require("../../__test__/example_descriptor");
6
- const decorators_1 = require("../../decorators");
7
- (0, decorators_1.initGenie)();
8
- jest.setTimeout(180000);
9
- const testCases = [
10
- {
11
- name: 'Basic query',
12
- input: 'get me the cheapest restaurant in palo alto',
13
- expected: 'Restaurant.all().matching(field: .address, value: "palo alto").sort(field: .priceGrade, ascending: true)[0]',
14
- method: 'parse'
15
- },
16
- {
17
- name: 'Complex query',
18
- input: 'order the same burger that I ordered at mcDonald last time',
19
- expected: 'Order.current().addFoods(foods: [Order.all().matching(field: .restaurant, value: Restaurant.all().matching(field: .name, value: "mcDonald")[0]).sort(field: .dateTime, ascending: false)[0].foods.matching(field: .name, value: "burger")[0]])',
20
- method: 'parse'
21
- },
22
- {
23
- name: 'Voice recognition query',
24
- input: 'elder the same foods that I ordered at mcDonald last time',
25
- expected: 'Order.current().addFoods(foods: Order.all().matching(field: .restaurant, value: Restaurant.all().matching(field: .name, value: "mcDonald")[0]).sort(field: .dateTime, ascending: false)[0].foods)',
26
- method: 'parseGpt4',
27
- extraPrompt: '// We utilize voice recognition technology, which may occasionally result in errors. Please consider the possibility of words with similar sounds being misinterpreted. For instance, the word "order" might be mistakenly recognized as "elder".'
28
- }
29
- ];
30
- const parameterSets = [
31
- { name: 'Baseline (temp=0.2)', temperature: 0.2, top_p: 1, frequency_penalty: 0, presence_penalty: 0 },
32
- { name: 'Very deterministic', temperature: 0, top_p: 1, frequency_penalty: 0, presence_penalty: 0 },
33
- { name: 'Slightly random', temperature: 0.1, top_p: 1, frequency_penalty: 0, presence_penalty: 0 },
34
- { name: 'More creative', temperature: 0.3, top_p: 1, frequency_penalty: 0, presence_penalty: 0 },
35
- { name: 'Moderate creative', temperature: 0.5, top_p: 1, frequency_penalty: 0, presence_penalty: 0 },
36
- { name: 'Narrow top_p', temperature: 0.2, top_p: 0.8, frequency_penalty: 0, presence_penalty: 0 },
37
- { name: 'Very narrow top_p', temperature: 0.2, top_p: 0.5, frequency_penalty: 0, presence_penalty: 0 },
38
- { name: 'Tighter sampling', temperature: 0.1, top_p: 0.9, frequency_penalty: 0, presence_penalty: 0 },
39
- { name: 'Low freq penalty', temperature: 0.2, top_p: 1, frequency_penalty: 0.2, presence_penalty: 0 },
40
- { name: 'Medium freq penalty', temperature: 0.2, top_p: 1, frequency_penalty: 0.5, presence_penalty: 0 },
41
- { name: 'High freq penalty', temperature: 0.2, top_p: 1, frequency_penalty: 1.0, presence_penalty: 0 },
42
- { name: 'Low pres penalty', temperature: 0.2, top_p: 1, frequency_penalty: 0, presence_penalty: 0.2 },
43
- { name: 'Medium pres penalty', temperature: 0.2, top_p: 1, frequency_penalty: 0, presence_penalty: 0.5 },
44
- { name: 'Balanced penalties', temperature: 0.2, top_p: 1, frequency_penalty: 0.3, presence_penalty: 0.3 },
45
- { name: 'Strong penalties', temperature: 0.1, top_p: 0.9, frequency_penalty: 0.5, presence_penalty: 0.5 },
46
- { name: 'Code-optimized 1', temperature: 0, top_p: 0.95, frequency_penalty: 0, presence_penalty: 0 },
47
- { name: 'Code-optimized 2', temperature: 0.1, top_p: 0.95, frequency_penalty: 0.1, presence_penalty: 0 },
48
- { name: 'Code-optimized 3', temperature: 0.15, top_p: 0.9, frequency_penalty: 0.2, presence_penalty: 0.1 },
49
- ];
50
- describe('Parameter Tuning Experiments', () => {
51
- describe.skip('Comprehensive Parameter Testing', () => {
52
- parameterSets.forEach((params) => {
53
- describe(`Config: ${params.name}`, () => {
54
- testCases.forEach((testCase) => {
55
- test(`${testCase.name}`, async () => {
56
- const parser = new nl_parser_groq_1.NlParserGroq(new prompt_gen_1.BasicPromptGen(example_descriptor_1.classDescriptions, example_descriptor_1.examples, testCase.extraPrompt), process.env.GROQ_API_KEY || 'test-key', 'llama-3.3-70b-versatile', params);
57
- let parsed;
58
- if (testCase.method === 'parseGpt4') {
59
- parsed = await parser.parseGpt4(testCase.input);
60
- }
61
- else {
62
- parsed = await parser.parse(testCase.input);
63
- }
64
- const matches = parsed === testCase.expected;
65
- console.log(`\n📊 ${params.name} - ${testCase.name}`);
66
- console.log(` Temperature: ${params.temperature}, Top-p: ${params.top_p}, Freq: ${params.frequency_penalty}, Pres: ${params.presence_penalty}`);
67
- console.log(` ✓ Match: ${matches ? '✅ EXACT' : '❌ DIFF'}`);
68
- if (!matches) {
69
- console.log(` Expected: ${testCase.expected.substring(0, 80)}...`);
70
- console.log(` Got: ${parsed?.substring(0, 80)}...`);
71
- }
72
- expect(parsed).toBeDefined();
73
- });
74
- });
75
- });
76
- });
77
- });
78
- describe('Quick Parameter Comparison', () => {
79
- const focusedParams = [
80
- { name: 'Baseline', temperature: 0.2, top_p: 1, frequency_penalty: 0, presence_penalty: 0 },
81
- { name: 'Deterministic', temperature: 0, top_p: 1, frequency_penalty: 0, presence_penalty: 0 },
82
- { name: 'Code-optimized', temperature: 0.1, top_p: 0.95, frequency_penalty: 0.1, presence_penalty: 0 },
83
- ];
84
- focusedParams.forEach((params) => {
85
- test(`Quick test: ${params.name}`, async () => {
86
- const parser = new nl_parser_groq_1.NlParserGroq(new prompt_gen_1.BasicPromptGen(example_descriptor_1.classDescriptions, example_descriptor_1.examples), process.env.GROQ_API_KEY || 'test-key', 'llama-3.3-70b-versatile', params);
87
- const parsed = await parser.parse('get me the cheapest restaurant in palo alto');
88
- console.log(`\n🎯 ${params.name}:`);
89
- console.log(` Result: ${parsed?.substring(0, 100)}...`);
90
- expect(parsed).toBeDefined();
91
- });
92
- });
93
- });
94
- });
95
- //# sourceMappingURL=parameter-tuning.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parameter-tuning.test.js","sourceRoot":"","sources":["../../../lib/nl/__test__/parameter-tuning.test.ts"],"names":[],"mappings":"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"}
@@ -1,178 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const nl_parser_groq_1 = require("../nl-parser-groq");
4
- const prompt_gen_1 = require("../prompt-gen");
5
- const example_descriptor_1 = require("../../__test__/example_descriptor");
6
- const decorators_1 = require("../../decorators");
7
- (0, decorators_1.initGenie)();
8
- jest.setTimeout(300000);
9
- const testCases = [
10
- {
11
- name: 'Basic query',
12
- input: 'get me the cheapest restaurant in palo alto',
13
- expected: 'Restaurant.all().matching(field: .address, value: "palo alto").sort(field: .priceGrade, ascending: true)[0]',
14
- method: 'parse'
15
- },
16
- {
17
- name: 'Complex query',
18
- input: 'order the same burger that I ordered at mcDonald last time',
19
- expected: 'Order.current().addFoods(foods: [Order.all().matching(field: .restaurant, value: Restaurant.all().matching(field: .name, value: "mcDonald")[0]).sort(field: .dateTime, ascending: false)[0].foods.matching(field: .name, value: "burger")[0]])',
20
- method: 'parse'
21
- },
22
- {
23
- name: 'Voice recognition query',
24
- input: 'elder the same foods that I ordered at mcDonald last time',
25
- expected: 'Order.current().addFoods(foods: Order.all().matching(field: .restaurant, value: Restaurant.all().matching(field: .name, value: "mcDonald")[0]).sort(field: .dateTime, ascending: false)[0].foods)',
26
- method: 'parseGpt4',
27
- extraPrompt: '// We utilize voice recognition technology, which may occasionally result in errors. Please consider the possibility of words with similar sounds being misinterpreted. For instance, the word "order" might be mistakenly recognized as "elder".'
28
- }
29
- ];
30
- const experimentConfigs = [
31
- { name: 'Current (temp=0.2)', params: { temperature: 0.2, top_p: 1, frequency_penalty: 0, presence_penalty: 0 } },
32
- { name: 'Deterministic (temp=0)', params: { temperature: 0, top_p: 1, frequency_penalty: 0, presence_penalty: 0 } },
33
- { name: 'Low temp (0.1)', params: { temperature: 0.1, top_p: 1, frequency_penalty: 0, presence_penalty: 0 } },
34
- { name: 'Medium temp (0.3)', params: { temperature: 0.3, top_p: 1, frequency_penalty: 0, presence_penalty: 0 } },
35
- { name: 'Narrow sampling (top_p=0.9)', params: { temperature: 0.2, top_p: 0.9, frequency_penalty: 0, presence_penalty: 0 } },
36
- { name: 'Very narrow (top_p=0.8)', params: { temperature: 0.2, top_p: 0.8, frequency_penalty: 0, presence_penalty: 0 } },
37
- { name: 'Code-opt 1', params: { temperature: 0, top_p: 0.95, frequency_penalty: 0, presence_penalty: 0 } },
38
- { name: 'Code-opt 2', params: { temperature: 0.1, top_p: 0.95, frequency_penalty: 0.1, presence_penalty: 0 } },
39
- { name: 'Code-opt 3', params: { temperature: 0.15, top_p: 0.9, frequency_penalty: 0.2, presence_penalty: 0.1 } },
40
- { name: 'With freq penalty', params: { temperature: 0.2, top_p: 1, frequency_penalty: 0.3, presence_penalty: 0 } },
41
- { name: 'Balanced penalties', params: { temperature: 0.2, top_p: 1, frequency_penalty: 0.2, presence_penalty: 0.2 } },
42
- ];
43
- function calculateSimilarity(str1, str2) {
44
- if (!str1)
45
- return 0;
46
- if (str1 === str2)
47
- return 1.0;
48
- const longer = str1.length > str2.length ? str1 : str2;
49
- const shorter = str1.length > str2.length ? str2 : str1;
50
- if (longer.length === 0)
51
- return 1.0;
52
- const editDistance = levenshteinDistance(str1, str2);
53
- return (longer.length - editDistance) / longer.length;
54
- }
55
- function levenshteinDistance(str1, str2) {
56
- const matrix = [];
57
- for (let i = 0; i <= str2.length; i++) {
58
- matrix[i] = [i];
59
- }
60
- for (let j = 0; j <= str1.length; j++) {
61
- matrix[0][j] = j;
62
- }
63
- for (let i = 1; i <= str2.length; i++) {
64
- for (let j = 1; j <= str1.length; j++) {
65
- if (str2.charAt(i - 1) === str1.charAt(j - 1)) {
66
- matrix[i][j] = matrix[i - 1][j - 1];
67
- }
68
- else {
69
- matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j] + 1);
70
- }
71
- }
72
- }
73
- return matrix[str2.length][str1.length];
74
- }
75
- describe('🔬 Semantic Parsing Parameter Experiments', () => {
76
- let allResults = [];
77
- describe('Run experiments', () => {
78
- experimentConfigs.forEach((config) => {
79
- describe(`Config: ${config.name}`, () => {
80
- testCases.forEach((testCase) => {
81
- test(testCase.name, async () => {
82
- const parser = new nl_parser_groq_1.NlParserGroq(new prompt_gen_1.BasicPromptGen(example_descriptor_1.classDescriptions, example_descriptor_1.examples, testCase.extraPrompt), process.env.GROQ_API_KEY || 'test-key', 'llama-3.3-70b-versatile', config.params);
83
- let output;
84
- if (testCase.method === 'parseGpt4') {
85
- output = await parser.parseGpt4(testCase.input);
86
- }
87
- else {
88
- output = await parser.parse(testCase.input);
89
- }
90
- const exactMatch = output === testCase.expected;
91
- const similarity = calculateSimilarity(output, testCase.expected);
92
- const result = {
93
- configName: config.name,
94
- params: config.params,
95
- testName: testCase.name,
96
- input: testCase.input,
97
- output: output,
98
- expected: testCase.expected,
99
- exactMatch,
100
- similarityScore: similarity
101
- };
102
- allResults.push(result);
103
- console.log(`\n${exactMatch ? '✅' : '❌'} ${config.name} - ${testCase.name}`);
104
- console.log(` Params: temp=${config.params.temperature}, top_p=${config.params.top_p}, freq=${config.params.frequency_penalty}, pres=${config.params.presence_penalty}`);
105
- console.log(` Similarity: ${(similarity * 100).toFixed(1)}%`);
106
- if (!exactMatch && output) {
107
- console.log(` Expected: ${testCase.expected.substring(0, 60)}...`);
108
- console.log(` Got: ${output.substring(0, 60)}...`);
109
- }
110
- expect(output).toBeDefined();
111
- });
112
- });
113
- });
114
- });
115
- });
116
- describe('📊 Summary and Recommendations', () => {
117
- test('Analyze results', () => {
118
- console.log('\n\n' + '='.repeat(80));
119
- console.log('📊 EXPERIMENT SUMMARY');
120
- console.log('='.repeat(80));
121
- const configSummaries = new Map();
122
- allResults.forEach(result => {
123
- if (!configSummaries.has(result.configName)) {
124
- configSummaries.set(result.configName, { totalTests: 0, exactMatches: 0, avgSimilarity: 0 });
125
- }
126
- const summary = configSummaries.get(result.configName);
127
- summary.totalTests++;
128
- if (result.exactMatch)
129
- summary.exactMatches++;
130
- summary.avgSimilarity += result.similarityScore;
131
- });
132
- const sortedConfigs = Array.from(configSummaries.entries())
133
- .map(([name, data]) => ({
134
- name,
135
- ...data,
136
- avgSimilarity: data.avgSimilarity / data.totalTests,
137
- successRate: (data.exactMatches / data.totalTests) * 100
138
- }))
139
- .sort((a, b) => {
140
- if (b.exactMatches !== a.exactMatches) {
141
- return b.exactMatches - a.exactMatches;
142
- }
143
- return b.avgSimilarity - a.avgSimilarity;
144
- });
145
- console.log('\n🏆 Configuration Rankings:');
146
- console.log('-'.repeat(80));
147
- sortedConfigs.forEach((config, index) => {
148
- const params = allResults.find(r => r.configName === config.name)?.params;
149
- console.log(`\n${index + 1}. ${config.name}`);
150
- console.log(` Success Rate: ${config.successRate.toFixed(1)}% (${config.exactMatches}/${config.totalTests} exact matches)`);
151
- console.log(` Avg Similarity: ${(config.avgSimilarity * 100).toFixed(1)}%`);
152
- if (params) {
153
- console.log(` Parameters: temp=${params.temperature}, top_p=${params.top_p}, freq=${params.frequency_penalty}, pres=${params.presence_penalty}`);
154
- }
155
- });
156
- console.log('\n' + '='.repeat(80));
157
- console.log('🎯 RECOMMENDATION');
158
- console.log('='.repeat(80));
159
- const best = sortedConfigs[0];
160
- const bestParams = allResults.find(r => r.configName === best.name)?.params;
161
- console.log(`\n✨ Best Configuration: ${best.name}`);
162
- console.log(` Success Rate: ${best.successRate.toFixed(1)}%`);
163
- console.log(` Average Similarity: ${(best.avgSimilarity * 100).toFixed(1)}%`);
164
- if (bestParams) {
165
- console.log(`\n Recommended Parameters:`);
166
- console.log(` {`);
167
- console.log(` temperature: ${bestParams.temperature},`);
168
- console.log(` top_p: ${bestParams.top_p},`);
169
- console.log(` frequency_penalty: ${bestParams.frequency_penalty},`);
170
- console.log(` presence_penalty: ${bestParams.presence_penalty}`);
171
- console.log(` }`);
172
- }
173
- console.log('\n' + '='.repeat(80) + '\n');
174
- expect(allResults.length).toBeGreaterThan(0);
175
- });
176
- });
177
- });
178
- //# sourceMappingURL=semantic-parsing-experiment.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"semantic-parsing-experiment.test.js","sourceRoot":"","sources":["../../../lib/nl/__test__/semantic-parsing-experiment.test.ts"],"names":[],"mappings":";;AASA,sDAAiE;AACjE,8CAA+C;AAC/C,0EAAgF;AAChF,iDAA6C;AAE7C,IAAA,sBAAS,GAAE,CAAC;AACZ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAsBxB,MAAM,SAAS,GAAe;IAC5B;QACE,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,6CAA6C;QACpD,QAAQ,EAAE,6GAA6G;QACvH,MAAM,EAAE,OAAO;KAChB;IACD;QACE,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,4DAA4D;QACnE,QAAQ,EAAE,gPAAgP;QAC1P,MAAM,EAAE,OAAO;KAChB;IACD;QACE,IAAI,EAAE,yBAAyB;QAC/B,KAAK,EAAE,2DAA2D;QAClE,QAAQ,EAAE,mMAAmM;QAC7M,MAAM,EAAE,WAAW;QACnB,WAAW,EAAE,mPAAmP;KACjQ;CACF,CAAC;AAGF,MAAM,iBAAiB,GAAoD;IAEzE,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,EAAE;IAGjH,EAAE,IAAI,EAAE,wBAAwB,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,EAAE;IACnH,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,EAAE;IAC7G,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,EAAE;IAGhH,EAAE,IAAI,EAAE,6BAA6B,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,EAAE;IAC5H,EAAE,IAAI,EAAE,yBAAyB,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,EAAE;IAGxH,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,EAAE;IAC1G,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,EAAE,EAAE;IAC9G,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,iBAAiB,EAAE,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,EAAE;IAGhH,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,iBAAiB,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,EAAE,EAAE;IAClH,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,iBAAiB,EAAE,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,EAAE;CACtH,CAAC;AAGF,SAAS,mBAAmB,CAAC,IAAmB,EAAE,IAAY;IAC5D,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC;IACpB,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,GAAG,CAAC;IAE9B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAExD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAGpC,MAAM,YAAY,GAAG,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrD,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;AACxD,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,IAAY;IACrD,MAAM,MAAM,GAAe,EAAE,CAAC;IAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC9C,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CACrB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EACxB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EACpB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CACrB,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,QAAQ,CAAC,2CAA2C,EAAE,GAAG,EAAE;IACzD,IAAI,UAAU,GAAuB,EAAE,CAAC;IAExC,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,iBAAiB,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACnC,QAAQ,CAAC,WAAW,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE;gBACtC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;oBAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;wBAC7B,MAAM,MAAM,GAAG,IAAI,6BAAY,CAC7B,IAAI,2BAAc,CAChB,sCAAiB,EACjB,6BAAQ,EACR,QAAQ,CAAC,WAAW,CACrB,EACD,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,UAAU,EACtC,yBAAyB,EACzB,MAAM,CAAC,MAAM,CACd,CAAC;wBAEF,IAAI,MAAqB,CAAC;wBAC1B,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;4BACpC,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;wBAClD,CAAC;6BAAM,CAAC;4BACN,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;wBAC9C,CAAC;wBAED,MAAM,UAAU,GAAG,MAAM,KAAK,QAAQ,CAAC,QAAQ,CAAC;wBAChD,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;wBAElE,MAAM,MAAM,GAAqB;4BAC/B,UAAU,EAAE,MAAM,CAAC,IAAI;4BACvB,MAAM,EAAE,MAAM,CAAC,MAAM;4BACrB,QAAQ,EAAE,QAAQ,CAAC,IAAI;4BACvB,KAAK,EAAE,QAAQ,CAAC,KAAK;4BACrB,MAAM,EAAE,MAAM;4BACd,QAAQ,EAAE,QAAQ,CAAC,QAAQ;4BAC3B,UAAU;4BACV,eAAe,EAAE,UAAU;yBAC5B,CAAC;wBAEF,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBAGxB,OAAO,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;wBAC7E,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,MAAM,CAAC,WAAW,WAAW,MAAM,CAAC,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,MAAM,CAAC,iBAAiB,UAAU,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;wBAC3K,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wBAEhE,IAAI,CAAC,UAAU,IAAI,MAAM,EAAE,CAAC;4BAC1B,OAAO,CAAC,GAAG,CAAC,gBAAgB,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;4BACrE,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;wBAC5D,CAAC;wBAED,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;oBAC/B,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAC9C,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE;YAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAG5B,MAAM,eAAe,GAAG,IAAI,GAAG,EAA+E,CAAC;YAE/G,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBAC1B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC5C,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC/F,CAAC;gBAED,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAE,CAAC;gBACxD,OAAO,CAAC,UAAU,EAAE,CAAC;gBACrB,IAAI,MAAM,CAAC,UAAU;oBAAE,OAAO,CAAC,YAAY,EAAE,CAAC;gBAC9C,OAAO,CAAC,aAAa,IAAI,MAAM,CAAC,eAAe,CAAC;YAClD,CAAC,CAAC,CAAC;YAGH,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;iBACxD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;gBACtB,IAAI;gBACJ,GAAG,IAAI;gBACP,aAAa,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU;gBACnD,WAAW,EAAE,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG;aACzD,CAAC,CAAC;iBACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAEb,IAAI,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,YAAY,EAAE,CAAC;oBACtC,OAAO,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;gBACzC,CAAC;gBACD,OAAO,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;YAC3C,CAAC,CAAC,CAAC;YAEL,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAE5B,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACtC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;gBAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC9C,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,UAAU,iBAAiB,CAAC,CAAC;gBAC9H,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC9E,IAAI,MAAM,EAAE,CAAC;oBACX,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,WAAW,WAAW,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,iBAAiB,UAAU,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;gBACrJ,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAE5B,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAE5E,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChF,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,qBAAqB,UAAU,CAAC,WAAW,GAAG,CAAC,CAAC;gBAC5D,OAAO,CAAC,GAAG,CAAC,eAAe,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC;gBAChD,OAAO,CAAC,GAAG,CAAC,2BAA2B,UAAU,CAAC,iBAAiB,GAAG,CAAC,CAAC;gBACxE,OAAO,CAAC,GAAG,CAAC,0BAA0B,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;gBACrE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACtB,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YAE1C,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,5 +0,0 @@
1
- /// <reference types="jest" />
2
- declare const mockCreateRun: jest.Mock<any, any, any>;
3
- declare const mockTraceable: jest.Mock<any, [fn: any], any>;
4
- declare const mockGetCurrentRunTree: jest.Mock<any, any, any>;
5
- declare function loadMonitor(): typeof import("./llm-monitoring");
@@ -1,101 +0,0 @@
1
- const mockCreateRun = jest.fn();
2
- const mockTraceable = jest.fn((fn) => fn);
3
- const mockGetCurrentRunTree = jest.fn();
4
- jest.mock("langsmith", () => ({
5
- Client: jest.fn().mockImplementation(() => ({
6
- createRun: mockCreateRun,
7
- })),
8
- }));
9
- jest.mock("langsmith/traceable", () => ({
10
- traceable: mockTraceable,
11
- getCurrentRunTree: mockGetCurrentRunTree,
12
- }));
13
- function loadMonitor() {
14
- return require("./llm-monitoring");
15
- }
16
- describe("LLMMonitor tracing", () => {
17
- beforeEach(() => {
18
- jest.clearAllMocks();
19
- jest.resetModules();
20
- });
21
- it("wraps traced calls with langsmith traceable chain runs", async () => {
22
- const { getLLMMonitor } = loadMonitor();
23
- const monitor = getLLMMonitor({
24
- apiKey: "ls-test-key",
25
- project: "reactgenie-dsl",
26
- });
27
- await monitor.traceCall("parse-command", { model: "gpt-4o-mini", provider: "openai" }, async () => "ok");
28
- expect(mockTraceable).toHaveBeenCalledWith(expect.any(Function), expect.objectContaining({
29
- name: "parse-command",
30
- run_type: "chain",
31
- project_name: "reactgenie-dsl",
32
- }));
33
- });
34
- it("logs llm child runs with token and cost metadata", async () => {
35
- const childRun = {
36
- postRun: jest.fn().mockResolvedValue(undefined),
37
- end: jest.fn().mockResolvedValue(undefined),
38
- patchRun: jest.fn().mockResolvedValue(undefined),
39
- };
40
- const createChild = jest.fn().mockReturnValue(childRun);
41
- mockGetCurrentRunTree.mockReturnValue({ createChild });
42
- const { getLLMMonitor } = loadMonitor();
43
- const monitor = getLLMMonitor({
44
- apiKey: "ls-test-key",
45
- project: "reactgenie-dsl",
46
- });
47
- await monitor.logCall({
48
- model: "gpt-4o-mini",
49
- provider: "openai",
50
- promptTokens: 12,
51
- completionTokens: 4,
52
- totalTokens: 16,
53
- inputCost: 0.00003,
54
- outputCost: 0.00008,
55
- totalCost: 0.00011,
56
- prompt: "hello",
57
- completion: "world",
58
- latency: 42,
59
- timestamp: new Date("2026-03-11T10:00:00.000Z"),
60
- error: "upstream failed",
61
- });
62
- expect(createChild).toHaveBeenCalledWith(expect.objectContaining({
63
- run_type: "llm",
64
- inputs: { prompt: "hello" },
65
- }));
66
- expect(childRun.end).toHaveBeenCalledWith(expect.objectContaining({
67
- completion: "world",
68
- usage_metadata: expect.objectContaining({
69
- input_tokens: 12,
70
- output_tokens: 4,
71
- total_tokens: 16,
72
- input_cost: 0.00003,
73
- output_cost: 0.00008,
74
- total_cost: 0.00011,
75
- }),
76
- }), "upstream failed", expect.any(Number));
77
- expect(childRun.patchRun).toHaveBeenCalled();
78
- });
79
- it("does not emit synthetic failed llm runs from traceCall failures", async () => {
80
- const captureException = jest.fn();
81
- const { getLLMMonitor } = loadMonitor();
82
- const monitor = getLLMMonitor({
83
- apiKey: "ls-test-key",
84
- project: "reactgenie-dsl",
85
- telemetryBridge: {
86
- captureException,
87
- },
88
- });
89
- await expect(monitor.traceCall("parse-command", { model: "gpt-4o-mini", provider: "openai" }, async () => {
90
- throw new Error("trace failed");
91
- })).rejects.toThrow("trace failed");
92
- expect(captureException).toHaveBeenCalledWith(expect.objectContaining({ message: "trace failed" }), expect.objectContaining({
93
- source: "llm-monitor",
94
- name: "parse-command",
95
- model: "gpt-4o-mini",
96
- provider: "openai",
97
- }));
98
- expect(mockCreateRun).not.toHaveBeenCalled();
99
- });
100
- });
101
- //# sourceMappingURL=llm-monitoring.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"llm-monitoring.test.js","sourceRoot":"","sources":["../../lib/nl/llm-monitoring.test.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAChC,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1C,MAAM,qBAAqB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAExC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,SAAS,EAAE,aAAa;KACzB,CAAC,CAAC;CACJ,CAAC,CAAC,CAAC;AAEJ,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAC,CAAC;IACtC,SAAS,EAAE,aAAa;IACxB,iBAAiB,EAAE,qBAAqB;CACzC,CAAC,CAAC,CAAC;AAEJ,SAAS,WAAW;IAClB,OAAO,OAAO,CAAC,kBAAkB,CAAsC,CAAC;AAC1E,CAAC;AAED,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,EAAE,aAAa,EAAE,GAAG,WAAW,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,aAAa,CAAC;YAC5B,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE,gBAAgB;SAC1B,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,SAAS,CACrB,eAAe,EACf,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAC5C,KAAK,IAAI,EAAE,CAAC,IAAI,CACjB,CAAC;QAEF,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CACxC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EACpB,MAAM,CAAC,gBAAgB,CAAC;YACtB,IAAI,EAAE,eAAe;YACrB,QAAQ,EAAE,OAAO;YACjB,YAAY,EAAE,gBAAgB;SAC/B,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,QAAQ,GAAG;YACf,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;YAC/C,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;YAC3C,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;SACjD,CAAC;QACF,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACxD,qBAAqB,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;QAEvD,MAAM,EAAE,aAAa,EAAE,GAAG,WAAW,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,aAAa,CAAC;YAC5B,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE,gBAAgB;SAC1B,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,OAAO,CAAC;YACpB,KAAK,EAAE,aAAa;YACpB,QAAQ,EAAE,QAAQ;YAClB,YAAY,EAAE,EAAE;YAChB,gBAAgB,EAAE,CAAC;YACnB,WAAW,EAAE,EAAE;YACf,SAAS,EAAE,OAAO;YAClB,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,OAAO;YAClB,MAAM,EAAE,OAAO;YACf,UAAU,EAAE,OAAO;YACnB,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,IAAI,IAAI,CAAC,0BAA0B,CAAC;YAC/C,KAAK,EAAE,iBAAiB;SACzB,CAAC,CAAC;QAEH,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CACtC,MAAM,CAAC,gBAAgB,CAAC;YACtB,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;SAC5B,CAAC,CACH,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,oBAAoB,CACvC,MAAM,CAAC,gBAAgB,CAAC;YACtB,UAAU,EAAE,OAAO;YACnB,cAAc,EAAE,MAAM,CAAC,gBAAgB,CAAC;gBACtC,YAAY,EAAE,EAAE;gBAChB,aAAa,EAAE,CAAC;gBAChB,YAAY,EAAE,EAAE;gBAChB,UAAU,EAAE,OAAO;gBACnB,WAAW,EAAE,OAAO;gBACpB,UAAU,EAAE,OAAO;aACpB,CAAC;SACH,CAAC,EACF,iBAAiB,EACjB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CACnB,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,gBAAgB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,EAAE,aAAa,EAAE,GAAG,WAAW,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,aAAa,CAAC;YAC5B,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE,gBAAgB;YACzB,eAAe,EAAE;gBACf,gBAAgB;aACjB;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,CACV,OAAO,CAAC,SAAS,CACf,eAAe,EACf,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAC5C,KAAK,IAAI,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QAClC,CAAC,CACF,CACF,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAElC,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAC3C,MAAM,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,EACpD,MAAM,CAAC,gBAAgB,CAAC;YACtB,MAAM,EAAE,aAAa;YACrB,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,aAAa;YACpB,QAAQ,EAAE,QAAQ;SACnB,CAAC,CACH,CAAC;QACF,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,27 +0,0 @@
1
- import { Restaurant } from "./example_descriptor";
2
-
3
- test("Restaurant Description", async () => {
4
- const description = Restaurant._ClassDescriptor.description();
5
- expect(description).toEqual(
6
- "// A restaurant\n" +
7
- "class Restaurant {\n" +
8
- "\tstring name;\n" +
9
- "\tFood[] menu;\n" +
10
- "\tint rating;\n" +
11
- "\tfloat priceGrade;\n" +
12
- "\tstring cuisine;\n" +
13
- "\tstring address;\n" +
14
- "\tOrder[] orders;\n" +
15
- "\t// All active restaurants\n" +
16
- "\tstatic Restaurant[] all();\n" +
17
- "\t// All active restaurants\n" +
18
- "\tstatic Restaurant[] All();\n" +
19
- "\t// The current restaurant\n" +
20
- "\tstatic Restaurant current();\n" +
21
- "\t// Book a table for a given date time\n" +
22
- "\tvoid book(dateTime: DateTime? = `DateTime.today()`);\n" +
23
- "\t// Book numbers tables for a given date time\n" +
24
- "\tvoid bookTable(dateTime: DateTime?, number: int?);\n" +
25
- "}"
26
- );
27
- });