@cloudwarriors-ai/rlm 0.1.7 → 0.1.9

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 (76) hide show
  1. package/dist/application/handlers/llm-query-handler.d.ts +67 -0
  2. package/dist/application/handlers/llm-query-handler.d.ts.map +1 -0
  3. package/dist/application/handlers/llm-query-handler.js +169 -0
  4. package/dist/application/handlers/llm-query-handler.js.map +1 -0
  5. package/dist/application/query-handler.d.ts +23 -2
  6. package/dist/application/query-handler.d.ts.map +1 -1
  7. package/dist/application/query-handler.js +215 -112
  8. package/dist/application/query-handler.js.map +1 -1
  9. package/dist/cli/index.js +0 -0
  10. package/dist/domain/constants.d.ts +124 -0
  11. package/dist/domain/constants.d.ts.map +1 -0
  12. package/dist/domain/constants.js +148 -0
  13. package/dist/domain/constants.js.map +1 -0
  14. package/dist/domain/errors/index.d.ts +1 -0
  15. package/dist/domain/errors/index.d.ts.map +1 -1
  16. package/dist/domain/errors/index.js +2 -0
  17. package/dist/domain/errors/index.js.map +1 -1
  18. package/dist/domain/errors/token-budget-error.d.ts +47 -0
  19. package/dist/domain/errors/token-budget-error.d.ts.map +1 -0
  20. package/dist/domain/errors/token-budget-error.js +41 -0
  21. package/dist/domain/errors/token-budget-error.js.map +1 -0
  22. package/dist/domain/interfaces/code-executor.d.ts +32 -2
  23. package/dist/domain/interfaces/code-executor.d.ts.map +1 -1
  24. package/dist/domain/interfaces/event-emitter.d.ts +55 -1
  25. package/dist/domain/interfaces/event-emitter.d.ts.map +1 -1
  26. package/dist/domain/interfaces/llm-provider.d.ts +4 -0
  27. package/dist/domain/interfaces/llm-provider.d.ts.map +1 -1
  28. package/dist/domain/services/cost-calculator.d.ts.map +1 -1
  29. package/dist/domain/services/cost-calculator.js +9 -4
  30. package/dist/domain/services/cost-calculator.js.map +1 -1
  31. package/dist/domain/types/config.d.ts +17 -0
  32. package/dist/domain/types/config.d.ts.map +1 -1
  33. package/dist/domain/types/config.js +41 -0
  34. package/dist/domain/types/config.js.map +1 -1
  35. package/dist/domain/types/index-schema.d.ts +206 -0
  36. package/dist/domain/types/index-schema.d.ts.map +1 -0
  37. package/dist/domain/types/index-schema.js +41 -0
  38. package/dist/domain/types/index-schema.js.map +1 -0
  39. package/dist/domain/types/index.d.ts +2 -0
  40. package/dist/domain/types/index.d.ts.map +1 -1
  41. package/dist/domain/types/index.js +4 -0
  42. package/dist/domain/types/index.js.map +1 -1
  43. package/dist/domain/utils/timer.d.ts +34 -0
  44. package/dist/domain/utils/timer.d.ts.map +1 -0
  45. package/dist/domain/utils/timer.js +39 -0
  46. package/dist/domain/utils/timer.js.map +1 -0
  47. package/dist/factory/create-rlm.d.ts.map +1 -1
  48. package/dist/factory/create-rlm.js +1 -0
  49. package/dist/factory/create-rlm.js.map +1 -1
  50. package/dist/infrastructure/llm/openrouter-provider.d.ts +1 -0
  51. package/dist/infrastructure/llm/openrouter-provider.d.ts.map +1 -1
  52. package/dist/infrastructure/llm/openrouter-provider.js +30 -9
  53. package/dist/infrastructure/llm/openrouter-provider.js.map +1 -1
  54. package/dist/infrastructure/llm/prompts/index.d.ts +1 -1
  55. package/dist/infrastructure/llm/prompts/index.d.ts.map +1 -1
  56. package/dist/infrastructure/llm/prompts/index.js +1 -1
  57. package/dist/infrastructure/llm/prompts/index.js.map +1 -1
  58. package/dist/infrastructure/llm/prompts/system-prompt.d.ts +14 -1
  59. package/dist/infrastructure/llm/prompts/system-prompt.d.ts.map +1 -1
  60. package/dist/infrastructure/llm/prompts/system-prompt.js +186 -52
  61. package/dist/infrastructure/llm/prompts/system-prompt.js.map +1 -1
  62. package/dist/infrastructure/logging/debug-logger.d.ts +29 -0
  63. package/dist/infrastructure/logging/debug-logger.d.ts.map +1 -0
  64. package/dist/infrastructure/logging/debug-logger.js +35 -0
  65. package/dist/infrastructure/logging/debug-logger.js.map +1 -0
  66. package/dist/infrastructure/sandbox/prelude/rlm_prelude.py +637 -41
  67. package/dist/infrastructure/sandbox/process-manager.d.ts +1 -0
  68. package/dist/infrastructure/sandbox/process-manager.d.ts.map +1 -1
  69. package/dist/infrastructure/sandbox/process-manager.js +19 -6
  70. package/dist/infrastructure/sandbox/process-manager.js.map +1 -1
  71. package/dist/infrastructure/sandbox/python-executor.d.ts +6 -2
  72. package/dist/infrastructure/sandbox/python-executor.d.ts.map +1 -1
  73. package/dist/infrastructure/sandbox/python-executor.js +138 -5
  74. package/dist/infrastructure/sandbox/python-executor.js.map +1 -1
  75. package/package.json +2 -1
  76. package/src/infrastructure/sandbox/prelude/rlm_prelude.py +637 -41
@@ -1,6 +1,11 @@
1
- import { checkLimits, canRecurse, } from '../domain/services/limit-checker.js';
2
- import { formatSystemPrompt, extractPythonCode, formatErrorRecoveryPrompt, MAX_RECOVERY_ATTEMPTS, formatRecursiveQueryPrompt, } from '../infrastructure/llm/prompts/index.js';
3
- import { LimitExceededError, SessionCancelledError } from '../domain/errors/index.js';
1
+ import { checkLimits } from '../domain/services/limit-checker.js';
2
+ import { formatSystemPrompt, formatDirectAnswerPrompt, extractPythonCode, formatErrorRecoveryPrompt, MAX_RECOVERY_ATTEMPTS, } from '../infrastructure/llm/prompts/index.js';
3
+ import { LimitExceededError, SessionCancelledError, } from '../domain/errors/index.js';
4
+ import { LLMQueryHandler } from './handlers/llm-query-handler.js';
5
+ import { DEFAULT_MAX_TOKENS_PER_CALL, CODE_PREVIEW_LENGTH_SHORT, OUTPUT_PREVIEW_LENGTH, ERROR_RECOVERY_TEMPERATURE, } from '../domain/constants.js';
6
+ import { createDebugLogger } from '../infrastructure/logging/debug-logger.js';
7
+ import { Timer } from '../domain/utils/timer.js';
8
+ const dbg = createDebugLogger('QH');
4
9
  /**
5
10
  * Handles execution of RLM queries
6
11
  */
@@ -18,6 +23,13 @@ export class QueryHandler {
18
23
  */
19
24
  async execute(session, state, config) {
20
25
  const steps = [];
26
+ const executeStart = Date.now();
27
+ // Calculate total context size
28
+ let contextSize = 0;
29
+ for (const [, value] of state.pythonVariables) {
30
+ contextSize += value.length;
31
+ }
32
+ dbg('EXECUTE_START', { session: session.id, depth: state.currentDepth, contextSize, queryLen: session.query.length });
21
33
  // Check limits before starting
22
34
  const limitCheck = checkLimits(state, config);
23
35
  if (!limitCheck.withinLimits) {
@@ -38,15 +50,32 @@ export class QueryHandler {
38
50
  steps,
39
51
  };
40
52
  }
53
+ // For direct answers (depth > 0), return immediately without code execution
54
+ // This avoids validation issues with text content that mentions URLs, APIs, etc.
55
+ if (codeResult.directAnswer) {
56
+ dbg('EXECUTE_END', { session: session.id, depth: state.currentDepth, success: true, durationMs: Date.now() - executeStart, directAnswer: true });
57
+ return {
58
+ answer: codeResult.directAnswer,
59
+ success: true,
60
+ steps,
61
+ };
62
+ }
41
63
  // Execute the generated code
42
64
  const execResult = await this.executeCode(codeResult.code, session, state, config, steps);
65
+ dbg('EXECUTE_END', { session: session.id, depth: state.currentDepth, success: execResult.success, durationMs: Date.now() - executeStart });
43
66
  return execResult;
44
67
  }
45
68
  /**
46
69
  * Generate Python code for the query
47
70
  */
48
71
  async generateCode(session, state, config, steps) {
49
- const startedAt = new Date();
72
+ // For recursive calls (depth > 0), use direct answer mode
73
+ // This matches the MIT paper's intended behavior where sub-queries
74
+ // return text answers rather than generating more code
75
+ if (state.currentDepth > 0) {
76
+ return this.generateDirectAnswer(session, state, config, steps);
77
+ }
78
+ const timer = new Timer();
50
79
  // Build context info for the prompt
51
80
  const contextVars = Array.from(state.pythonVariables.entries()).map(([name, value]) => ({
52
81
  name,
@@ -65,24 +94,26 @@ export class QueryHandler {
65
94
  cost: 0,
66
95
  depth: state.currentDepth,
67
96
  });
97
+ const llmStart = Date.now();
98
+ dbg('LLM_CALL_START', { depth: state.currentDepth, model: config.model });
68
99
  const response = await this.llmProvider.generate(messages, {
69
100
  systemPrompt,
70
101
  temperature: config.temperature,
71
- maxTokens: 4000,
102
+ maxTokens: DEFAULT_MAX_TOKENS_PER_CALL,
72
103
  });
104
+ dbg('LLM_CALL_END', { depth: state.currentDepth, durationMs: Date.now() - llmStart, tokens: response.usage.totalTokens, cost: response.cost });
73
105
  // Update state with token usage
74
106
  state.totalTokens += response.usage.totalTokens;
75
107
  state.totalCostUsd += response.cost;
76
108
  state.llmCalls += 1;
77
- const completedAt = new Date();
78
- const durationMs = completedAt.getTime() - startedAt.getTime();
109
+ const timing = timer.elapsed();
79
110
  steps.push({
80
111
  index: steps.length,
81
112
  depth: state.currentDepth,
82
113
  type: 'llm_call',
83
- startedAt,
84
- completedAt,
85
- durationMs,
114
+ startedAt: timing.startedAt,
115
+ completedAt: timing.completedAt,
116
+ durationMs: timing.durationMs,
86
117
  details: {
87
118
  type: 'llm_call',
88
119
  model: response.model,
@@ -100,26 +131,130 @@ export class QueryHandler {
100
131
  error: 'Failed to extract Python code from LLM response',
101
132
  };
102
133
  }
134
+ // Emit code generation event
135
+ this.eventEmitter.emit({
136
+ type: 'rlm.code.generated',
137
+ sessionId: session.id,
138
+ timestamp: new Date(),
139
+ code,
140
+ depth: state.currentDepth,
141
+ });
103
142
  steps.push({
104
143
  index: steps.length,
105
144
  depth: state.currentDepth,
106
145
  type: 'code_generation',
107
- startedAt,
108
- completedAt,
146
+ startedAt: timing.startedAt,
147
+ completedAt: timing.completedAt,
109
148
  durationMs: 0,
110
149
  details: {
111
150
  type: 'code_generation',
112
151
  codeLength: code.length,
113
- codePreview: code.slice(0, 200) + (code.length > 200 ? '...' : ''),
152
+ codePreview: code.slice(0, CODE_PREVIEW_LENGTH_SHORT) + (code.length > CODE_PREVIEW_LENGTH_SHORT ? '...' : ''),
114
153
  },
115
154
  });
116
155
  return { success: true, code };
117
156
  }
157
+ /**
158
+ * Generate a direct answer for recursive calls (depth > 0)
159
+ *
160
+ * Unlike generateCode(), this method asks the LLM to provide a direct
161
+ * text answer rather than writing Python code. This matches the MIT paper's
162
+ * intended behavior for llm_query() calls.
163
+ */
164
+ async generateDirectAnswer(session, state, config, steps) {
165
+ const timer = new Timer();
166
+ dbg('DIRECT_ANSWER_START', { depth: state.currentDepth, queryLen: session.query.length });
167
+ // Build context hint for the prompt
168
+ const contextVars = Array.from(state.pythonVariables.entries()).map(([name, value]) => ({
169
+ name,
170
+ sizeHint: `${value.length} chars, ~${this.llmProvider.estimateTokens(value)} tokens`,
171
+ }));
172
+ const contextHint = contextVars.map((v) => `${v.name}: ${v.sizeHint}`).join(', ');
173
+ // Get the actual context content to include in the prompt
174
+ const contextContent = state.pythonVariables.get('context') ?? '';
175
+ const systemPrompt = formatDirectAnswerPrompt(contextHint, session.query);
176
+ // Include the actual context in the user message
177
+ const messages = [
178
+ {
179
+ role: 'user',
180
+ content: `Here is the context to analyze:\n\n${contextContent}\n\nPlease provide your analysis.`,
181
+ },
182
+ ];
183
+ this.eventEmitter.emit({
184
+ type: 'rlm.llm.completed',
185
+ sessionId: session.id,
186
+ timestamp: new Date(),
187
+ model: config.model,
188
+ usage: { promptTokens: 0, completionTokens: 0, totalTokens: 0 },
189
+ cost: 0,
190
+ depth: state.currentDepth,
191
+ });
192
+ const llmStart = Date.now();
193
+ dbg('LLM_DIRECT_CALL_START', { depth: state.currentDepth, model: config.model });
194
+ const response = await this.llmProvider.generate(messages, {
195
+ systemPrompt,
196
+ temperature: config.temperature,
197
+ maxTokens: DEFAULT_MAX_TOKENS_PER_CALL,
198
+ });
199
+ dbg('LLM_DIRECT_CALL_END', {
200
+ depth: state.currentDepth,
201
+ durationMs: Date.now() - llmStart,
202
+ tokens: response.usage.totalTokens,
203
+ cost: response.cost,
204
+ answerLen: response.content.length,
205
+ });
206
+ // Update state with token usage
207
+ state.totalTokens += response.usage.totalTokens;
208
+ state.totalCostUsd += response.cost;
209
+ state.llmCalls += 1;
210
+ const timing = timer.elapsed();
211
+ steps.push({
212
+ index: steps.length,
213
+ depth: state.currentDepth,
214
+ type: 'llm_call',
215
+ startedAt: timing.startedAt,
216
+ completedAt: timing.completedAt,
217
+ durationMs: timing.durationMs,
218
+ details: {
219
+ type: 'llm_call',
220
+ model: response.model,
221
+ promptTokens: response.usage.promptTokens,
222
+ completionTokens: response.usage.completionTokens,
223
+ cost: response.cost,
224
+ },
225
+ });
226
+ // Emit direct answer event with content for debugging
227
+ this.eventEmitter.emit({
228
+ type: 'rlm.direct_answer.generated',
229
+ sessionId: session.id,
230
+ timestamp: new Date(),
231
+ answerLength: response.content.length,
232
+ depth: state.currentDepth,
233
+ answer: response.content,
234
+ });
235
+ steps.push({
236
+ index: steps.length,
237
+ depth: state.currentDepth,
238
+ type: 'code_generation',
239
+ startedAt: timing.startedAt,
240
+ completedAt: timing.completedAt,
241
+ durationMs: 0,
242
+ details: {
243
+ type: 'code_generation',
244
+ codeLength: response.content.length,
245
+ codePreview: '[Direct answer mode - no code generated]',
246
+ },
247
+ });
248
+ dbg('DIRECT_ANSWER_END', { depth: state.currentDepth, success: true });
249
+ // Return the answer directly - no need to execute synthetic code
250
+ // This avoids validation issues with text content that mentions URLs, APIs, etc.
251
+ return { success: true, code: '', directAnswer: response.content };
252
+ }
118
253
  /**
119
254
  * Execute Python code and handle commands
120
255
  */
121
256
  async executeCode(code, session, state, config, steps) {
122
- const startedAt = new Date();
257
+ const timer = new Timer();
123
258
  let currentCode = code;
124
259
  let recoveryAttempts = 0;
125
260
  while (recoveryAttempts <= MAX_RECOVERY_ATTEMPTS) {
@@ -140,29 +275,29 @@ export class QueryHandler {
140
275
  continue;
141
276
  }
142
277
  // Execute code
143
- const execContext = {
144
- variables: state.pythonVariables,
278
+ const execContext = this.createExecutionContext(session, state, config);
279
+ // Handle llm_query commands during execution (fixes deadlock)
280
+ const llmQueryHandler = new LLMQueryHandler({
281
+ llmProvider: this.llmProvider,
282
+ eventEmitter: this.eventEmitter,
283
+ executeRecursive: this.execute.bind(this),
284
+ });
285
+ const onCommand = (command) => llmQueryHandler.handle(command, { session, state, config });
286
+ const result = await this.codeExecutor.execute(currentCode, execContext, onCommand);
287
+ const timing = timer.elapsed();
288
+ // Emit code execution event
289
+ this.eventEmitter.emit({
290
+ type: 'rlm.code.executed',
145
291
  sessionId: session.id,
292
+ timestamp: timing.completedAt,
293
+ success: result.success,
294
+ stdout: result.stdout,
295
+ stderr: result.stderr,
296
+ error: result.error,
297
+ result: result.result,
146
298
  depth: state.currentDepth,
147
- timeoutMs: Math.min(config.timeoutMs, 60000), // Max 60s per execution
148
- };
149
- const result = await this.codeExecutor.execute(currentCode, execContext);
150
- const completedAt = new Date();
151
- const durationMs = completedAt.getTime() - startedAt.getTime();
152
- steps.push({
153
- index: steps.length,
154
- depth: state.currentDepth,
155
- type: 'code_execution',
156
- startedAt,
157
- completedAt,
158
- durationMs,
159
- details: {
160
- type: 'code_execution',
161
- success: result.success,
162
- output: result.stdout.slice(0, 500),
163
- error: result.error,
164
- },
165
299
  });
300
+ this.recordExecutionStep(steps, state, timing, result);
166
301
  if (!result.success) {
167
302
  if (recoveryAttempts >= MAX_RECOVERY_ATTEMPTS) {
168
303
  return {
@@ -177,21 +312,15 @@ export class QueryHandler {
177
312
  recoveryAttempts++;
178
313
  continue;
179
314
  }
180
- // Process commands from Python
181
- for (const command of result.commands) {
182
- if (command.type === 'llm_query') {
183
- await this.handleLLMQueryCommand(command, session, state, config, steps);
184
- }
185
- else if (command.type === 'set_variable') {
186
- state.pythonVariables.set(command.name, command.value);
187
- }
188
- }
315
+ // Process commands from Python (llm_query already handled during execution)
316
+ this.processVariableCommands(state, result.commands);
189
317
  // Check if we got a result
190
318
  if (result.result) {
191
319
  return {
192
320
  answer: result.result,
193
321
  success: true,
194
322
  steps,
323
+ finalAnswerConfidence: result.finalAnswerConfidence,
195
324
  };
196
325
  }
197
326
  // No result set, but execution succeeded
@@ -199,6 +328,7 @@ export class QueryHandler {
199
328
  answer: result.stdout || 'No result set',
200
329
  success: true,
201
330
  steps,
331
+ finalAnswerConfidence: result.finalAnswerConfidence,
202
332
  };
203
333
  }
204
334
  return {
@@ -209,100 +339,73 @@ export class QueryHandler {
209
339
  };
210
340
  }
211
341
  /**
212
- * Handle llm_query command from Python
342
+ * Create execution context for Python code execution
213
343
  */
214
- async handleLLMQueryCommand(command, session, state, config, steps) {
215
- // Check if we can recurse
216
- if (!canRecurse(state, config)) {
217
- // Send error response to Python
218
- await this.codeExecutor.respondToQuery(JSON.stringify({ error: 'Maximum recursion depth reached' }));
219
- return;
220
- }
221
- // Increment depth for recursive call
222
- state.currentDepth += 1;
223
- state.recursiveCalls += 1;
224
- state.maxDepthReached = Math.max(state.maxDepthReached, state.currentDepth);
225
- const startedAt = new Date();
226
- this.eventEmitter.emit({
227
- type: 'rlm.recursive.started',
344
+ createExecutionContext(session, state, config) {
345
+ return {
346
+ variables: state.pythonVariables,
228
347
  sessionId: session.id,
229
- timestamp: startedAt,
230
- query: command.query,
231
348
  depth: state.currentDepth,
349
+ timeoutMs: config.timeoutMs,
350
+ };
351
+ }
352
+ /**
353
+ * Record execution step in trace
354
+ */
355
+ recordExecutionStep(steps, state, timing, result) {
356
+ steps.push({
357
+ index: steps.length,
358
+ depth: state.currentDepth,
359
+ type: 'code_execution',
360
+ startedAt: timing.startedAt,
361
+ completedAt: timing.completedAt,
362
+ durationMs: timing.durationMs,
363
+ details: {
364
+ type: 'code_execution',
365
+ success: result.success,
366
+ output: result.stdout.slice(0, OUTPUT_PREVIEW_LENGTH),
367
+ error: result.error,
368
+ },
232
369
  });
233
- // Build context for the recursive query
234
- const contextContent = command.contextVariables.join('\n\n');
235
- const prompt = formatRecursiveQueryPrompt(contextContent, command.query);
236
- const messages = [{ role: 'user', content: prompt }];
237
- try {
238
- const response = await this.llmProvider.generate(messages, {
239
- temperature: config.temperature,
240
- maxTokens: 4000,
241
- });
242
- // Update state
243
- state.totalTokens += response.usage.totalTokens;
244
- state.totalCostUsd += response.cost;
245
- state.llmCalls += 1;
246
- const completedAt = new Date();
247
- const durationMs = completedAt.getTime() - startedAt.getTime();
248
- steps.push({
249
- index: steps.length,
250
- depth: state.currentDepth,
251
- type: 'recursive_call',
252
- startedAt,
253
- completedAt,
254
- durationMs,
255
- details: {
256
- type: 'recursive_call',
257
- query: command.query.slice(0, 100),
258
- contextSize: contextContent.length,
259
- depth: state.currentDepth,
260
- },
261
- });
262
- this.eventEmitter.emit({
263
- type: 'rlm.recursive.completed',
264
- sessionId: session.id,
265
- timestamp: completedAt,
266
- depth: state.currentDepth,
267
- resultLength: response.content.length,
268
- });
269
- // Send response back to Python
270
- await this.codeExecutor.respondToQuery(JSON.stringify({ result: response.content }));
271
- }
272
- catch (error) {
273
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
274
- await this.codeExecutor.respondToQuery(JSON.stringify({ error: errorMessage }));
275
- }
276
- finally {
277
- // Decrement depth after recursive call
278
- state.currentDepth -= 1;
370
+ }
371
+ /**
372
+ * Process set_variable commands from execution result
373
+ */
374
+ processVariableCommands(state, commands) {
375
+ for (const command of commands) {
376
+ if (command.type === 'set_variable' && command.name && command.value !== undefined) {
377
+ state.pythonVariables.set(command.name, command.value);
378
+ }
279
379
  }
280
380
  }
281
381
  /**
282
382
  * Attempt to recover from an error by asking the LLM to fix the code
283
383
  */
284
384
  async recoverFromError(previousCode, error, traceback, session, state, config, steps) {
285
- const startedAt = new Date();
385
+ const timer = new Timer();
286
386
  this.eventEmitter.emit({
287
387
  type: 'rlm.recovery.started',
288
388
  sessionId: session.id,
289
- timestamp: startedAt,
389
+ timestamp: timer.startedAt,
390
+ error,
391
+ traceback,
392
+ previousCode: previousCode.slice(0, OUTPUT_PREVIEW_LENGTH),
290
393
  });
291
394
  const prompt = formatErrorRecoveryPrompt(previousCode, error, traceback);
292
395
  const messages = [{ role: 'user', content: prompt }];
293
396
  const response = await this.llmProvider.generate(messages, {
294
- temperature: 0.2, // Lower temperature for more focused fixes
295
- maxTokens: 4000,
397
+ temperature: ERROR_RECOVERY_TEMPERATURE,
398
+ maxTokens: DEFAULT_MAX_TOKENS_PER_CALL,
296
399
  });
297
400
  // Update state
298
401
  state.totalTokens += response.usage.totalTokens;
299
402
  state.totalCostUsd += response.cost;
300
403
  state.llmCalls += 1;
301
- const completedAt = new Date();
404
+ const timing = timer.elapsed();
302
405
  this.eventEmitter.emit({
303
406
  type: 'rlm.recovery.completed',
304
407
  sessionId: session.id,
305
- timestamp: completedAt,
408
+ timestamp: timing.completedAt,
306
409
  });
307
410
  const fixedCode = extractPythonCode(response.content);
308
411
  return fixedCode ?? previousCode;
@@ -1 +1 @@
1
- {"version":3,"file":"query-handler.js","sourceRoot":"","sources":["../../src/application/query-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-handler.js","sourceRoot":"","sources":["../../src/application/query-handler.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
File without changes
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Domain constants for RLM
3
+ *
4
+ * Centralizes magic numbers and configuration defaults
5
+ * to improve maintainability and make tuning easier.
6
+ */
7
+ /**
8
+ * Maximum characters per llm_query() call (~125K tokens)
9
+ * Per MIT CSAIL paper on Recursive Language Models
10
+ */
11
+ export declare const LLM_QUERY_MAX_CHARS = 500000;
12
+ /**
13
+ * Default max tokens per LLM call for code/answer generation
14
+ */
15
+ export declare const DEFAULT_MAX_TOKENS_PER_CALL = 4000;
16
+ /**
17
+ * Characters per token estimate for English text
18
+ * This is a simple heuristic; real tokenization varies by model
19
+ */
20
+ export declare const CHARS_PER_TOKEN_ESTIMATE = 4;
21
+ /**
22
+ * Default request timeout in milliseconds for LLM API calls
23
+ */
24
+ export declare const DEFAULT_REQUEST_TIMEOUT_MS = 60000;
25
+ /**
26
+ * Default max retries on transient errors
27
+ */
28
+ export declare const DEFAULT_MAX_RETRIES = 3;
29
+ /**
30
+ * Default retry-after seconds when rate limited (if not specified by server)
31
+ */
32
+ export declare const DEFAULT_RETRY_AFTER_SECONDS = 60;
33
+ /**
34
+ * Base delay for exponential backoff in milliseconds
35
+ */
36
+ export declare const BACKOFF_BASE_MS = 1000;
37
+ /**
38
+ * Health check timeout in milliseconds
39
+ */
40
+ export declare const HEALTH_CHECK_TIMEOUT_MS = 5000;
41
+ /**
42
+ * Default Python execution timeout in milliseconds
43
+ */
44
+ export declare const DEFAULT_PYTHON_TIMEOUT_MS = 30000;
45
+ /**
46
+ * Code preview truncation length (short)
47
+ */
48
+ export declare const CODE_PREVIEW_LENGTH_SHORT = 200;
49
+ /**
50
+ * Output preview truncation length (medium)
51
+ */
52
+ export declare const OUTPUT_PREVIEW_LENGTH = 500;
53
+ /**
54
+ * Token threshold for cost estimation (roughly 100K tokens per call)
55
+ */
56
+ export declare const COST_ESTIMATE_TOKEN_THRESHOLD = 100000;
57
+ /**
58
+ * Average output tokens for cost estimation
59
+ */
60
+ export declare const COST_ESTIMATE_AVG_OUTPUT_TOKENS = 2000;
61
+ /**
62
+ * Minimum cost multiplier for cost estimation range
63
+ */
64
+ export declare const COST_ESTIMATE_MIN_MULTIPLIER = 0.5;
65
+ /**
66
+ * Maximum cost multiplier for cost estimation range
67
+ */
68
+ export declare const COST_ESTIMATE_MAX_MULTIPLIER = 2;
69
+ /**
70
+ * Temperature for error recovery prompts (lower for more focused fixes)
71
+ */
72
+ export declare const ERROR_RECOVERY_TEMPERATURE = 0.2;
73
+ /**
74
+ * Maximum event listeners per emitter
75
+ */
76
+ export declare const MAX_EVENT_LISTENERS = 100;
77
+ /**
78
+ * Threshold for using temp file instead of stdin (10MB)
79
+ * Large payloads can block stdin buffer
80
+ */
81
+ export declare const STDIN_SIZE_THRESHOLD: number;
82
+ /**
83
+ * Maximum concurrent queries in llm_query_batch to avoid resource exhaustion.
84
+ * Each recursive call spawns a Python process + makes LLM API calls.
85
+ * 5 concurrent provides ~5x speedup while staying safe for most systems.
86
+ */
87
+ export declare const MAX_CONCURRENT_BATCH_QUERIES = 5;
88
+ /**
89
+ * Default OpenRouter API base URL
90
+ */
91
+ export declare const DEFAULT_OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1";
92
+ /**
93
+ * Default site name for OpenRouter analytics
94
+ */
95
+ export declare const DEFAULT_SITE_NAME = "RLM";
96
+ /**
97
+ * Protocol marker for initialization via stdin
98
+ */
99
+ export declare const PROTOCOL_INIT = "__INIT__";
100
+ /**
101
+ * Protocol marker for initialization via temp file
102
+ */
103
+ export declare const PROTOCOL_INIT_FILE = "__INIT_FILE__";
104
+ /**
105
+ * Protocol marker for command output
106
+ */
107
+ export declare const PROTOCOL_COMMAND = "__COMMAND__";
108
+ /**
109
+ * Protocol marker for response input
110
+ */
111
+ export declare const PROTOCOL_RESPONSE = "__RESPONSE__";
112
+ /**
113
+ * Protocol marker for completion
114
+ */
115
+ export declare const PROTOCOL_DONE = "__DONE__";
116
+ /**
117
+ * Protocol marker for errors
118
+ */
119
+ export declare const PROTOCOL_ERROR = "__ERROR__";
120
+ /**
121
+ * Protocol marker for warnings
122
+ */
123
+ export declare const PROTOCOL_WARNING = "__WARNING__";
124
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/domain/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;;GAGG;AACH,eAAO,MAAM,mBAAmB,SAAU,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAM1C;;GAEG;AACH,eAAO,MAAM,0BAA0B,QAAQ,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC;;GAEG;AACH,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,yBAAyB,QAAQ,CAAC;AAM/C;;GAEG;AACH,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAMzC;;GAEG;AACH,eAAO,MAAM,6BAA6B,SAAU,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,+BAA+B,OAAO,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAM9C;;GAEG;AACH,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAM9C;;GAEG;AACH,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAAmB,CAAC;AAErD;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAM9C;;GAEG;AACH,eAAO,MAAM,2BAA2B,iCAAiC,CAAC;AAE1E;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AAMvC;;GAEG;AACH,eAAO,MAAM,aAAa,aAAa,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,aAAa,aAAa,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,cAAc,cAAc,CAAC;AAE1C;;GAEG;AACH,eAAO,MAAM,gBAAgB,gBAAgB,CAAC"}