@garrix82/reactgenie-dsl 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/README.md +436 -0
  2. package/dist/__test__/dsl-descriptor.test.d.ts +1 -0
  3. package/dist/__test__/dsl-descriptor.test.js +27 -0
  4. package/dist/__test__/dsl-descriptor.test.js.map +1 -0
  5. package/dist/__test__/example_descriptor.d.ts +125 -0
  6. package/dist/__test__/example_descriptor.js +607 -0
  7. package/dist/__test__/example_descriptor.js.map +1 -0
  8. package/dist/__test__/food_descriptor.state.json +1 -0
  9. package/dist/__test__/food_descriptor.test.d.ts +74 -0
  10. package/dist/__test__/food_descriptor.test.js +205 -0
  11. package/dist/__test__/food_descriptor.test.js.map +1 -0
  12. package/dist/__test__/nl-interpreter-provider-selection.test.d.ts +1 -0
  13. package/dist/__test__/nl-interpreter-provider-selection.test.js +73 -0
  14. package/dist/__test__/nl-interpreter-provider-selection.test.js.map +1 -0
  15. package/dist/__test__/nl-interpreter.test.d.ts +1 -0
  16. package/dist/__test__/nl-interpreter.test.js +86 -0
  17. package/dist/__test__/nl-interpreter.test.js.map +1 -0
  18. package/dist/decorators/__test__/decorators.test.d.ts +1 -0
  19. package/dist/decorators/__test__/decorators.test.js +182 -0
  20. package/dist/decorators/__test__/decorators.test.js.map +1 -0
  21. package/dist/decorators/__test__/inheritance-descriptor.test.d.ts +1 -0
  22. package/dist/decorators/__test__/inheritance-descriptor.test.js +107 -0
  23. package/dist/decorators/__test__/inheritance-descriptor.test.js.map +1 -0
  24. package/dist/decorators/decorators.d.ts +20 -0
  25. package/dist/decorators/decorators.js +520 -0
  26. package/dist/decorators/decorators.js.map +1 -0
  27. package/dist/decorators/index.d.ts +2 -0
  28. package/dist/decorators/index.js +19 -0
  29. package/dist/decorators/index.js.map +1 -0
  30. package/dist/decorators/store.d.ts +12 -0
  31. package/dist/decorators/store.js +43 -0
  32. package/dist/decorators/store.js.map +1 -0
  33. package/dist/dsl/__test__/dsl-interpreter.test.d.ts +1 -0
  34. package/dist/dsl/__test__/dsl-interpreter.test.js +334 -0
  35. package/dist/dsl/__test__/dsl-interpreter.test.js.map +1 -0
  36. package/dist/dsl/__test__/parser.gen.test.d.ts +1 -0
  37. package/dist/dsl/__test__/parser.gen.test.js +283 -0
  38. package/dist/dsl/__test__/parser.gen.test.js.map +1 -0
  39. package/dist/dsl/dsl-interpreter.d.ts +66 -0
  40. package/dist/dsl/dsl-interpreter.js +767 -0
  41. package/dist/dsl/dsl-interpreter.js.map +1 -0
  42. package/dist/dsl/index.d.ts +1 -0
  43. package/dist/dsl/index.js +18 -0
  44. package/dist/dsl/index.js.map +1 -0
  45. package/dist/dsl/parser.gen.d.ts +10 -0
  46. package/dist/dsl/parser.gen.js +1524 -0
  47. package/dist/dsl/parser.gen.js.map +1 -0
  48. package/dist/dsl-descriptor.d.ts +75 -0
  49. package/dist/dsl-descriptor.js +151 -0
  50. package/dist/dsl-descriptor.js.map +1 -0
  51. package/dist/index.d.ts +5 -0
  52. package/dist/index.js +22 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/nl/__test__/context-aware-prompt.test.d.ts +1 -0
  55. package/dist/nl/__test__/context-aware-prompt.test.js +247 -0
  56. package/dist/nl/__test__/context-aware-prompt.test.js.map +1 -0
  57. package/dist/nl/__test__/context-selector.test.d.ts +1 -0
  58. package/dist/nl/__test__/context-selector.test.js +20 -0
  59. package/dist/nl/__test__/context-selector.test.js.map +1 -0
  60. package/dist/nl/__test__/nl-parser-groq-transport.test.d.ts +1 -0
  61. package/dist/nl/__test__/nl-parser-groq-transport.test.js +87 -0
  62. package/dist/nl/__test__/nl-parser-groq-transport.test.js.map +1 -0
  63. package/dist/nl/__test__/nl-parser-openai-parity.test.d.ts +1 -0
  64. package/dist/nl/__test__/nl-parser-openai-parity.test.js +206 -0
  65. package/dist/nl/__test__/nl-parser-openai-parity.test.js.map +1 -0
  66. package/dist/nl/__test__/nl-parser-openai-sampling.test.d.ts +1 -0
  67. package/dist/nl/__test__/nl-parser-openai-sampling.test.js +44 -0
  68. package/dist/nl/__test__/nl-parser-openai-sampling.test.js.map +1 -0
  69. package/dist/nl/__test__/nl-parser-openai-transport.test.d.ts +1 -0
  70. package/dist/nl/__test__/nl-parser-openai-transport.test.js +55 -0
  71. package/dist/nl/__test__/nl-parser-openai-transport.test.js.map +1 -0
  72. package/dist/nl/__test__/nl-parser-utils.test.d.ts +1 -0
  73. package/dist/nl/__test__/nl-parser-utils.test.js +70 -0
  74. package/dist/nl/__test__/nl-parser-utils.test.js.map +1 -0
  75. package/dist/nl/__test__/nl-parser.test.d.ts +1 -0
  76. package/dist/nl/__test__/nl-parser.test.js +64 -0
  77. package/dist/nl/__test__/nl-parser.test.js.map +1 -0
  78. package/dist/nl/__test__/parameter-tuning.test.d.ts +1 -0
  79. package/dist/nl/__test__/parameter-tuning.test.js +95 -0
  80. package/dist/nl/__test__/parameter-tuning.test.js.map +1 -0
  81. package/dist/nl/__test__/semantic-parsing-experiment.test.d.ts +1 -0
  82. package/dist/nl/__test__/semantic-parsing-experiment.test.js +178 -0
  83. package/dist/nl/__test__/semantic-parsing-experiment.test.js.map +1 -0
  84. package/dist/nl/context-selector.d.ts +17 -0
  85. package/dist/nl/context-selector.js +99 -0
  86. package/dist/nl/context-selector.js.map +1 -0
  87. package/dist/nl/index.d.ts +6 -0
  88. package/dist/nl/index.js +15 -0
  89. package/dist/nl/index.js.map +1 -0
  90. package/dist/nl/llm-monitoring.d.ts +49 -0
  91. package/dist/nl/llm-monitoring.js +243 -0
  92. package/dist/nl/llm-monitoring.js.map +1 -0
  93. package/dist/nl/llm-monitoring.test.d.ts +5 -0
  94. package/dist/nl/llm-monitoring.test.js +101 -0
  95. package/dist/nl/llm-monitoring.test.js.map +1 -0
  96. package/dist/nl/nl-parser-groq.d.ts +21 -0
  97. package/dist/nl/nl-parser-groq.js +357 -0
  98. package/dist/nl/nl-parser-groq.js.map +1 -0
  99. package/dist/nl/nl-parser-utils.d.ts +101 -0
  100. package/dist/nl/nl-parser-utils.js +255 -0
  101. package/dist/nl/nl-parser-utils.js.map +1 -0
  102. package/dist/nl/nl-parser.d.ts +30 -0
  103. package/dist/nl/nl-parser.js +433 -0
  104. package/dist/nl/nl-parser.js.map +1 -0
  105. package/dist/nl/prompt-gen.d.ts +93 -0
  106. package/dist/nl/prompt-gen.js +369 -0
  107. package/dist/nl/prompt-gen.js.map +1 -0
  108. package/dist/nl/prompt-res.d.ts +16 -0
  109. package/dist/nl/prompt-res.js +190 -0
  110. package/dist/nl/prompt-res.js.map +1 -0
  111. package/dist/nl-interpreter.d.ts +48 -0
  112. package/dist/nl-interpreter.js +155 -0
  113. package/dist/nl-interpreter.js.map +1 -0
  114. package/lib/__test__/dsl-descriptor.test.ts +27 -0
  115. package/lib/__test__/example_descriptor.ts +762 -0
  116. package/lib/__test__/food_descriptor.state.json +1 -0
  117. package/lib/__test__/food_descriptor.test.ts +331 -0
  118. package/lib/__test__/nl-interpreter-provider-selection.test.ts +126 -0
  119. package/lib/__test__/nl-interpreter.test.ts +129 -0
  120. package/lib/decorators/__test__/decorators.test.ts +177 -0
  121. package/lib/decorators/__test__/inheritance-descriptor.test.ts +92 -0
  122. package/lib/decorators/decorators.ts +754 -0
  123. package/lib/decorators/index.ts +2 -0
  124. package/lib/decorators/store.ts +47 -0
  125. package/lib/dsl/__test__/dsl-interpreter.test.ts +453 -0
  126. package/lib/dsl/__test__/parser.gen.test.ts +296 -0
  127. package/lib/dsl/dsl-interpreter.ts +974 -0
  128. package/lib/dsl/index.ts +1 -0
  129. package/lib/dsl/parser.gen.js +1479 -0
  130. package/lib/dsl/parser.pegjs +130 -0
  131. package/lib/dsl-descriptor.ts +241 -0
  132. package/lib/index.ts +5 -0
  133. package/lib/nl/__test__/context-aware-prompt.test.ts +372 -0
  134. package/lib/nl/__test__/context-selector.test.ts +27 -0
  135. package/lib/nl/__test__/nl-parser-groq-transport.test.ts +139 -0
  136. package/lib/nl/__test__/nl-parser-openai-parity.test.ts +381 -0
  137. package/lib/nl/__test__/nl-parser-openai-sampling.test.ts +73 -0
  138. package/lib/nl/__test__/nl-parser-openai-transport.test.ts +79 -0
  139. package/lib/nl/__test__/nl-parser-utils.test.ts +98 -0
  140. package/lib/nl/__test__/nl-parser.test.ts +119 -0
  141. package/lib/nl/__test__/parameter-tuning.test.ts +137 -0
  142. package/lib/nl/__test__/semantic-parsing-experiment.test.ts +260 -0
  143. package/lib/nl/context-selector.ts +123 -0
  144. package/lib/nl/index.ts +19 -0
  145. package/lib/nl/llm-monitoring.test.ts +136 -0
  146. package/lib/nl/llm-monitoring.ts +339 -0
  147. package/lib/nl/nl-parser-groq.ts +510 -0
  148. package/lib/nl/nl-parser-utils.ts +310 -0
  149. package/lib/nl/nl-parser.ts +616 -0
  150. package/lib/nl/prompt-gen.ts +607 -0
  151. package/lib/nl/prompt-res.ts +207 -0
  152. package/lib/nl-interpreter.ts +262 -0
  153. package/package.json +58 -0
@@ -0,0 +1,433 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NlParser = void 0;
4
+ const llm_monitoring_1 = require("./llm-monitoring");
5
+ const nl_parser_utils_1 = require("./nl-parser-utils");
6
+ function buildOpenAIEndpoint(baseUrl, suffix) {
7
+ const normalized = (0, nl_parser_utils_1.normalizeBaseUrl)(baseUrl);
8
+ if (normalized.endsWith(`/v1/${suffix}`)) {
9
+ return normalized;
10
+ }
11
+ if (normalized.endsWith("/v1")) {
12
+ return `${normalized}/${suffix}`;
13
+ }
14
+ return `${normalized}/v1/${suffix}`;
15
+ }
16
+ function requireConfiguredModel(model) {
17
+ const trimmed = model.trim();
18
+ if (!trimmed) {
19
+ throw new Error("OpenAI parser requires semanticModel / SEMANTIC_MODEL configuration.");
20
+ }
21
+ return trimmed;
22
+ }
23
+ function asFiniteNumber(value) {
24
+ return typeof value === "number" && Number.isFinite(value) ? value : undefined;
25
+ }
26
+ function extractCostMetrics(response) {
27
+ const usage = response?.usage ?? response?.usage_metadata ?? {};
28
+ const inputCost = asFiniteNumber(usage?.input_cost) ??
29
+ asFiniteNumber(usage?.prompt_cost) ??
30
+ asFiniteNumber(usage?.prompt_cost_usd);
31
+ const outputCost = asFiniteNumber(usage?.output_cost) ??
32
+ asFiniteNumber(usage?.completion_cost) ??
33
+ asFiniteNumber(usage?.completion_cost_usd);
34
+ const totalCost = asFiniteNumber(usage?.total_cost) ??
35
+ asFiniteNumber(usage?.cost) ??
36
+ asFiniteNumber(usage?.total_cost_usd) ??
37
+ (typeof inputCost === "number" && typeof outputCost === "number"
38
+ ? inputCost + outputCost
39
+ : undefined);
40
+ return {
41
+ ...(typeof inputCost === "number" ? { inputCost } : {}),
42
+ ...(typeof outputCost === "number" ? { outputCost } : {}),
43
+ ...(typeof totalCost === "number" ? { totalCost } : {}),
44
+ };
45
+ }
46
+ class NlParser {
47
+ constructor(prompt, apiKey, basePath, model, samplingParams, langsmithApiKey, langsmithProject, langsmithEndpoint, validateCommand, parserOptions) {
48
+ this.prompt = prompt;
49
+ this.apiKey = apiKey;
50
+ this.basePath = basePath;
51
+ this.model = model;
52
+ this.validateCommand = validateCommand;
53
+ this.model = requireConfiguredModel(model);
54
+ this.chatCompletionsEndpoint = buildOpenAIEndpoint(this.basePath, "chat/completions");
55
+ this.responsesEndpoint = buildOpenAIEndpoint(this.basePath, "responses");
56
+ this.samplingParams = {
57
+ ...nl_parser_utils_1.DEFAULT_SEMANTIC_PARSER_SAMPLING,
58
+ ...samplingParams,
59
+ };
60
+ this.statefulValidationRetry = !!parserOptions?.statefulValidationRetry;
61
+ this.llmMonitor = (0, llm_monitoring_1.getLLMMonitor)({
62
+ apiKey: langsmithApiKey,
63
+ project: langsmithProject,
64
+ endpoint: langsmithEndpoint,
65
+ });
66
+ }
67
+ async createChatCompletion(body) {
68
+ return (0, nl_parser_utils_1.createJsonChatCompletion)({
69
+ endpoint: this.chatCompletionsEndpoint,
70
+ apiKey: this.apiKey,
71
+ body,
72
+ provider: "openai",
73
+ requestLabel: "OpenAI-compatible request failed",
74
+ invalidPayloadLabel: "OpenAI-compatible endpoint returned an invalid JSON payload",
75
+ });
76
+ }
77
+ async createResponse(body) {
78
+ return (0, nl_parser_utils_1.createJsonChatCompletion)({
79
+ endpoint: this.responsesEndpoint,
80
+ apiKey: this.apiKey,
81
+ body,
82
+ provider: "openai",
83
+ requestLabel: "OpenAI Responses request failed",
84
+ invalidPayloadLabel: "OpenAI Responses endpoint returned an invalid JSON payload",
85
+ });
86
+ }
87
+ async runStructuredCommand(traceName, promptVariants, userUtterance) {
88
+ let usedPromptText = promptVariants[0]?.text || "";
89
+ let lastError;
90
+ const runParse = async (strict, promptText) => {
91
+ if (this.statefulValidationRetry) {
92
+ return this.runStructuredCommandResponse(promptText, strict);
93
+ }
94
+ return this.runStructuredCommandMessages([
95
+ {
96
+ role: "user",
97
+ content: promptText,
98
+ },
99
+ ], strict);
100
+ };
101
+ for (const promptVariant of promptVariants) {
102
+ usedPromptText = promptVariant.text;
103
+ try {
104
+ const result = await this.llmMonitor.traceCall(`${traceName}_${promptVariant.label}`, { model: this.model, provider: "openai" }, async () => runParse(false, promptVariant.text));
105
+ const validated = await this.validateOrRepairCommand(traceName, promptVariant.label, userUtterance, result.command, usedPromptText, result.responseId);
106
+ return {
107
+ response: result.response,
108
+ completion: validated,
109
+ usedPromptText,
110
+ ...(result.responseId ? { responseId: result.responseId } : {}),
111
+ };
112
+ }
113
+ catch {
114
+ try {
115
+ const result = await this.llmMonitor.traceCall(`${traceName}_${promptVariant.label}`, { model: this.model, provider: "openai" }, async () => runParse(true, promptVariant.text));
116
+ const validated = await this.validateOrRepairCommand(traceName, promptVariant.label, userUtterance, result.command, usedPromptText, result.responseId);
117
+ return {
118
+ response: result.response,
119
+ completion: validated,
120
+ usedPromptText,
121
+ ...(result.responseId ? { responseId: result.responseId } : {}),
122
+ };
123
+ }
124
+ catch (strictError) {
125
+ lastError = strictError;
126
+ }
127
+ }
128
+ }
129
+ throw (lastError instanceof Error
130
+ ? lastError
131
+ : new Error("OpenAI parse failed for filtered prompt"));
132
+ }
133
+ async runStructuredCommandResponse(promptText, strict) {
134
+ const response = await this.createResponse({
135
+ model: this.model,
136
+ store: true,
137
+ input: [
138
+ {
139
+ role: "user",
140
+ content: [{ type: "input_text", text: promptText }],
141
+ },
142
+ ],
143
+ text: {
144
+ format: (0, nl_parser_utils_1.getStructuredResponseTextFormat)(strict),
145
+ },
146
+ });
147
+ const raw = (0, nl_parser_utils_1.extractResponseOutputText)(response);
148
+ const command = (0, nl_parser_utils_1.extractStructuredCommand)(raw);
149
+ if (!command) {
150
+ throw new Error("OpenAI Responses structured output missing command");
151
+ }
152
+ return {
153
+ response,
154
+ command,
155
+ ...(typeof response?.id === "string" ? { responseId: response.id } : {}),
156
+ };
157
+ }
158
+ async runStructuredCommandMessages(messages, strict) {
159
+ const response = await this.createChatCompletion({
160
+ model: this.model,
161
+ messages: [...messages],
162
+ temperature: this.samplingParams.temperature,
163
+ max_tokens: 256,
164
+ top_p: this.samplingParams.top_p,
165
+ frequency_penalty: this.samplingParams.frequency_penalty,
166
+ presence_penalty: this.samplingParams.presence_penalty,
167
+ response_format: (0, nl_parser_utils_1.getStructuredResponseFormat)(strict),
168
+ });
169
+ const raw = response.choices[0]?.message?.content ?? null;
170
+ const command = (0, nl_parser_utils_1.extractStructuredCommand)(raw);
171
+ if (!command) {
172
+ throw new Error("OpenAI structured output missing command");
173
+ }
174
+ return { response, command };
175
+ }
176
+ async validateOrRepairCommand(traceName, promptLabel, userUtterance, command, lastUsedPrompt, responseId) {
177
+ if (!this.validateCommand) {
178
+ return command;
179
+ }
180
+ try {
181
+ await this.validateCommand(command);
182
+ return command;
183
+ }
184
+ catch (validationError) {
185
+ const validationMessage = validationError instanceof Error ? validationError.message : String(validationError);
186
+ if (this.statefulValidationRetry && responseId) {
187
+ let lastError = validationError;
188
+ for (const strict of [false, true]) {
189
+ try {
190
+ const repaired = await this.llmMonitor.traceCall(`${traceName}_${promptLabel}_repair_${strict ? "strict" : "lenient"}`, { model: this.model, provider: "openai" }, async () => this.runStructuredCommandRepairResponse(responseId, (0, nl_parser_utils_1.buildCommandRepairInputText)(userUtterance, command, validationMessage), strict));
191
+ await this.validateCommand(repaired.command);
192
+ return repaired.command;
193
+ }
194
+ catch (repairError) {
195
+ lastError = repairError;
196
+ }
197
+ }
198
+ throw (lastError instanceof Error
199
+ ? lastError
200
+ : new Error("OpenAI repair failed after semantic validation"));
201
+ }
202
+ const messages = (0, nl_parser_utils_1.buildCommandRepairMessages)(userUtterance, command, validationMessage, lastUsedPrompt);
203
+ let lastError = validationError;
204
+ for (const strict of [false, true]) {
205
+ try {
206
+ const repaired = await this.llmMonitor.traceCall(`${traceName}_${promptLabel}_repair_${strict ? "strict" : "lenient"}`, { model: this.model, provider: "openai" }, async () => this.runStructuredCommandMessages(messages, strict));
207
+ await this.validateCommand(repaired.command);
208
+ return repaired.command;
209
+ }
210
+ catch (repairError) {
211
+ lastError = repairError;
212
+ }
213
+ }
214
+ throw (lastError instanceof Error
215
+ ? lastError
216
+ : new Error("OpenAI repair failed after semantic validation"));
217
+ }
218
+ }
219
+ async runStructuredCommandRepairResponse(previousResponseId, repairText, strict) {
220
+ const response = await this.createResponse({
221
+ model: this.model,
222
+ store: true,
223
+ previous_response_id: previousResponseId,
224
+ input: [
225
+ {
226
+ role: "user",
227
+ content: [{ type: "input_text", text: repairText }],
228
+ },
229
+ ],
230
+ text: {
231
+ format: (0, nl_parser_utils_1.getStructuredResponseTextFormat)(strict),
232
+ },
233
+ });
234
+ const raw = (0, nl_parser_utils_1.extractResponseOutputText)(response);
235
+ const command = (0, nl_parser_utils_1.extractStructuredCommand)(raw);
236
+ if (!command) {
237
+ throw new Error("OpenAI Responses repair output missing command");
238
+ }
239
+ return {
240
+ response,
241
+ command,
242
+ ...(typeof response?.id === "string" ? { responseId: response.id } : {}),
243
+ };
244
+ }
245
+ async oldParse(nl) {
246
+ const promptText = this.prompt.prompt(nl);
247
+ const startTime = Date.now();
248
+ try {
249
+ const result = await this.runStructuredCommand("oldParse", [
250
+ { label: "legacy_prompt", text: promptText },
251
+ ], nl);
252
+ await this.llmMonitor.logCall({
253
+ model: this.model,
254
+ provider: "openai",
255
+ promptTokens: result.response.usage?.prompt_tokens,
256
+ completionTokens: result.response.usage?.completion_tokens,
257
+ totalTokens: result.response.usage?.total_tokens,
258
+ ...extractCostMetrics(result.response),
259
+ prompt: result.usedPromptText,
260
+ completion: result.completion,
261
+ latency: Date.now() - startTime,
262
+ timestamp: new Date(),
263
+ });
264
+ return result.completion;
265
+ }
266
+ catch (error) {
267
+ await this.llmMonitor.logCall({
268
+ model: this.model,
269
+ provider: "openai",
270
+ prompt: promptText,
271
+ completion: null,
272
+ latency: Date.now() - startTime,
273
+ timestamp: new Date(),
274
+ error: error instanceof Error ? error.message : String(error),
275
+ });
276
+ throw error;
277
+ }
278
+ }
279
+ async parse(nl) {
280
+ const startTime = Date.now();
281
+ const promptVariants = [];
282
+ const defaultPrompt = this.prompt.zero_shot_prompt(nl);
283
+ promptVariants.push({ label: "filtered", text: defaultPrompt });
284
+ try {
285
+ const result = await this.runStructuredCommand("parse", promptVariants, nl);
286
+ await this.llmMonitor.logCall({
287
+ model: this.model,
288
+ provider: "openai",
289
+ promptTokens: result.response.usage?.prompt_tokens,
290
+ completionTokens: result.response.usage?.completion_tokens,
291
+ totalTokens: result.response.usage?.total_tokens,
292
+ ...extractCostMetrics(result.response),
293
+ prompt: result.usedPromptText,
294
+ completion: result.completion,
295
+ latency: Date.now() - startTime,
296
+ timestamp: new Date(),
297
+ });
298
+ return result.completion;
299
+ }
300
+ catch (error) {
301
+ await this.llmMonitor.logCall({
302
+ model: this.model,
303
+ provider: "openai",
304
+ prompt: promptVariants[0]?.text || "",
305
+ completion: null,
306
+ latency: Date.now() - startTime,
307
+ timestamp: new Date(),
308
+ error: error instanceof Error ? error.message : String(error),
309
+ });
310
+ throw error;
311
+ }
312
+ }
313
+ async parseGpt4(nl) {
314
+ const promptText = this.prompt.prompt(nl);
315
+ const startTime = Date.now();
316
+ const runParse = async (strict) => {
317
+ return this.runStructuredCommandMessages([
318
+ {
319
+ role: "system",
320
+ content: "only generate one line of code",
321
+ },
322
+ {
323
+ role: "user",
324
+ content: promptText,
325
+ },
326
+ ], strict);
327
+ };
328
+ try {
329
+ let result;
330
+ try {
331
+ result = await this.llmMonitor.traceCall("parseGpt4", { model: this.model, provider: "openai" }, async () => runParse(false));
332
+ }
333
+ catch {
334
+ result = await this.llmMonitor.traceCall("parseGpt4", { model: this.model, provider: "openai" }, async () => runParse(true));
335
+ }
336
+ const validatedCommand = await this.validateOrRepairCommand("parseGpt4", "legacy_prompt", nl, result.command, promptText);
337
+ await this.llmMonitor.logCall({
338
+ model: this.model,
339
+ provider: "openai",
340
+ promptTokens: result.response.usage?.prompt_tokens,
341
+ completionTokens: result.response.usage?.completion_tokens,
342
+ totalTokens: result.response.usage?.total_tokens,
343
+ ...extractCostMetrics(result.response),
344
+ prompt: promptText,
345
+ completion: validatedCommand,
346
+ latency: Date.now() - startTime,
347
+ timestamp: new Date(),
348
+ });
349
+ return validatedCommand;
350
+ }
351
+ catch (error) {
352
+ await this.llmMonitor.logCall({
353
+ model: this.model,
354
+ provider: "openai",
355
+ prompt: promptText,
356
+ completion: null,
357
+ latency: Date.now() - startTime,
358
+ timestamp: new Date(),
359
+ error: error instanceof Error ? error.message : String(error),
360
+ });
361
+ throw error;
362
+ }
363
+ }
364
+ async respond(nl, parsed, result) {
365
+ const promptText = this.prompt.response_prompt(nl, parsed, result);
366
+ const startTime = Date.now();
367
+ const runRespond = async (strict) => {
368
+ const response = await this.createChatCompletion({
369
+ model: this.model,
370
+ messages: [
371
+ {
372
+ role: "system",
373
+ content: "Return only a strict JSON object for agent_response_json.",
374
+ },
375
+ {
376
+ role: "user",
377
+ content: promptText,
378
+ },
379
+ ],
380
+ temperature: this.samplingParams.temperature,
381
+ max_tokens: 256,
382
+ top_p: this.samplingParams.top_p,
383
+ frequency_penalty: this.samplingParams.frequency_penalty,
384
+ presence_penalty: this.samplingParams.presence_penalty,
385
+ response_format: (0, nl_parser_utils_1.getStructuredAgentResponseFormat)(strict),
386
+ });
387
+ const raw = response.choices[0]?.message?.content ?? null;
388
+ const payload = (0, nl_parser_utils_1.extractStructuredAgentResponse)(raw);
389
+ if (!payload) {
390
+ throw new Error("OpenAI structured output missing agent response payload");
391
+ }
392
+ return { response, payload };
393
+ };
394
+ try {
395
+ let result;
396
+ try {
397
+ result = await this.llmMonitor.traceCall("respond", { model: this.model, provider: "openai" }, async () => runRespond(false));
398
+ }
399
+ catch {
400
+ result = await this.llmMonitor.traceCall("respond", { model: this.model, provider: "openai" }, async () => runRespond(true));
401
+ }
402
+ const normalizedCompletion = (0, nl_parser_utils_1.normalizeAgentResponse)(result.payload);
403
+ await this.llmMonitor.logCall({
404
+ model: this.model,
405
+ provider: "openai",
406
+ promptTokens: result.response.usage?.prompt_tokens,
407
+ completionTokens: result.response.usage?.completion_tokens,
408
+ totalTokens: result.response.usage?.total_tokens,
409
+ ...extractCostMetrics(result.response),
410
+ prompt: promptText,
411
+ completion: JSON.stringify(normalizedCompletion),
412
+ latency: Date.now() - startTime,
413
+ timestamp: new Date(),
414
+ });
415
+ return normalizedCompletion;
416
+ }
417
+ catch (error) {
418
+ const fallbackResponse = (0, nl_parser_utils_1.buildFallbackAgentResponse)(parsed, result);
419
+ await this.llmMonitor.logCall({
420
+ model: this.model,
421
+ provider: "openai",
422
+ prompt: promptText,
423
+ completion: JSON.stringify(fallbackResponse),
424
+ latency: Date.now() - startTime,
425
+ timestamp: new Date(),
426
+ error: error instanceof Error ? error.message : String(error),
427
+ });
428
+ return fallbackResponse;
429
+ }
430
+ }
431
+ }
432
+ exports.NlParser = NlParser;
433
+ //# sourceMappingURL=nl-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nl-parser.js","sourceRoot":"","sources":["../../lib/nl/nl-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ import { ClassDescriptor, GenieObject } from "../dsl-descriptor";
2
+ export interface PromptGen {
3
+ prompt(user_utterance: string): string;
4
+ zero_shot_prompt(user_utterance: string): string;
5
+ response_prompt(user_utterance: string, parsed: string, result: string): string;
6
+ }
7
+ export type ResponseSeverity = "info" | "error" | "success" | "warning";
8
+ export interface AgentResponsePayload {
9
+ minimalText: string;
10
+ fullText: string;
11
+ type: ResponseSeverity;
12
+ shouldSpeak: boolean;
13
+ }
14
+ export interface PromptInteractionRecord {
15
+ utterance: string;
16
+ parsed?: string | null;
17
+ success: boolean;
18
+ resultSummary?: string;
19
+ }
20
+ export interface PromptInteractionRecorder {
21
+ recordInteraction(record: PromptInteractionRecord): void;
22
+ }
23
+ export interface PromptSelectionConfig {
24
+ enabled: boolean;
25
+ topNClassDescriptions: number;
26
+ topMExamples: number;
27
+ recentTurnsWindow: number;
28
+ olderSummaryMaxChars: number;
29
+ cacheSize: number;
30
+ }
31
+ export interface RuntimeUiContext {
32
+ tapClassName?: string;
33
+ visibleClassNames: string[];
34
+ isDeicticUtterance: boolean;
35
+ }
36
+ export interface PromptRuntimeContextSetter {
37
+ setRuntimeContext(context: RuntimeUiContext | null): void;
38
+ }
39
+ export declare class ExampleParse {
40
+ readonly user_utterance: any;
41
+ readonly example_parsed: any;
42
+ constructor(user_utterance: any, example_parsed: any);
43
+ }
44
+ export declare class BasicPromptGen {
45
+ private class_descriptions;
46
+ private examples;
47
+ private extraPrompt?;
48
+ constructor(class_descriptions: string[], examples: ExampleParse[], extraPrompt?: string);
49
+ prompt_basic(): string;
50
+ zero_shot_prompt_basic(): string;
51
+ prompt(user_utterance: string): string;
52
+ zero_shot_prompt(user_utterance: string): string;
53
+ response_prompt(user_utterance: string, parsed: string, result: string): string;
54
+ }
55
+ export declare class DescriptorPromptGen extends BasicPromptGen {
56
+ private class_descriptors;
57
+ constructor(class_descriptors: ClassDescriptor<GenieObject>[], examples: ExampleParse[], extraPrompt?: string);
58
+ }
59
+ export declare class ContextAwareDescriptorPromptGen implements PromptGen, PromptInteractionRecorder, PromptRuntimeContextSetter {
60
+ private extraPrompt?;
61
+ private readonly allClassNames;
62
+ private readonly allClassDescriptions;
63
+ private readonly allExamples;
64
+ private readonly allExampleRootClasses;
65
+ private readonly config;
66
+ private readonly selectionCache;
67
+ private recentTurns;
68
+ private olderTurnsSummary;
69
+ private runtimeUiContext;
70
+ constructor(class_descriptors: ClassDescriptor<GenieObject>[], examples: ExampleParse[], extraPrompt?: string, config?: Partial<PromptSelectionConfig>);
71
+ setRuntimeContext(context: RuntimeUiContext | null): void;
72
+ private static normalizeClassName;
73
+ private static extractRootClass;
74
+ private static isScreenIndependentExample;
75
+ private getAllowedRootClassesForDeicticContext;
76
+ private getPreferredRootClassesForVisibleScreenContext;
77
+ private buildRuntimeUiContextBlock;
78
+ private buildPromptBasic;
79
+ private buildHistoryContext;
80
+ private summarizeRecord;
81
+ private appendOlderSummary;
82
+ private selectionFromCache;
83
+ private cacheSelection;
84
+ private selectionCacheKeyForUtterance;
85
+ private buildSelectionFromExampleIndexes;
86
+ private rescueSelectionWithoutVisibleContext;
87
+ private computeSelection;
88
+ private zeroShotPromptForSelection;
89
+ prompt(user_utterance: string): string;
90
+ zero_shot_prompt(user_utterance: string): string;
91
+ response_prompt(user_utterance: string, parsed: string, result: string): string;
92
+ recordInteraction(record: PromptInteractionRecord): void;
93
+ }