@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.
- package/dist/application/handlers/llm-query-handler.d.ts +67 -0
- package/dist/application/handlers/llm-query-handler.d.ts.map +1 -0
- package/dist/application/handlers/llm-query-handler.js +169 -0
- package/dist/application/handlers/llm-query-handler.js.map +1 -0
- package/dist/application/query-handler.d.ts +23 -2
- package/dist/application/query-handler.d.ts.map +1 -1
- package/dist/application/query-handler.js +215 -112
- package/dist/application/query-handler.js.map +1 -1
- package/dist/cli/index.js +0 -0
- package/dist/domain/constants.d.ts +124 -0
- package/dist/domain/constants.d.ts.map +1 -0
- package/dist/domain/constants.js +148 -0
- package/dist/domain/constants.js.map +1 -0
- package/dist/domain/errors/index.d.ts +1 -0
- package/dist/domain/errors/index.d.ts.map +1 -1
- package/dist/domain/errors/index.js +2 -0
- package/dist/domain/errors/index.js.map +1 -1
- package/dist/domain/errors/token-budget-error.d.ts +47 -0
- package/dist/domain/errors/token-budget-error.d.ts.map +1 -0
- package/dist/domain/errors/token-budget-error.js +41 -0
- package/dist/domain/errors/token-budget-error.js.map +1 -0
- package/dist/domain/interfaces/code-executor.d.ts +32 -2
- package/dist/domain/interfaces/code-executor.d.ts.map +1 -1
- package/dist/domain/interfaces/event-emitter.d.ts +55 -1
- package/dist/domain/interfaces/event-emitter.d.ts.map +1 -1
- package/dist/domain/interfaces/llm-provider.d.ts +4 -0
- package/dist/domain/interfaces/llm-provider.d.ts.map +1 -1
- package/dist/domain/services/cost-calculator.d.ts.map +1 -1
- package/dist/domain/services/cost-calculator.js +9 -4
- package/dist/domain/services/cost-calculator.js.map +1 -1
- package/dist/domain/types/config.d.ts +17 -0
- package/dist/domain/types/config.d.ts.map +1 -1
- package/dist/domain/types/config.js +41 -0
- package/dist/domain/types/config.js.map +1 -1
- package/dist/domain/types/index-schema.d.ts +206 -0
- package/dist/domain/types/index-schema.d.ts.map +1 -0
- package/dist/domain/types/index-schema.js +41 -0
- package/dist/domain/types/index-schema.js.map +1 -0
- package/dist/domain/types/index.d.ts +2 -0
- package/dist/domain/types/index.d.ts.map +1 -1
- package/dist/domain/types/index.js +4 -0
- package/dist/domain/types/index.js.map +1 -1
- package/dist/domain/utils/timer.d.ts +34 -0
- package/dist/domain/utils/timer.d.ts.map +1 -0
- package/dist/domain/utils/timer.js +39 -0
- package/dist/domain/utils/timer.js.map +1 -0
- package/dist/factory/create-rlm.d.ts.map +1 -1
- package/dist/factory/create-rlm.js +1 -0
- package/dist/factory/create-rlm.js.map +1 -1
- package/dist/infrastructure/llm/openrouter-provider.d.ts +1 -0
- package/dist/infrastructure/llm/openrouter-provider.d.ts.map +1 -1
- package/dist/infrastructure/llm/openrouter-provider.js +30 -9
- package/dist/infrastructure/llm/openrouter-provider.js.map +1 -1
- package/dist/infrastructure/llm/prompts/index.d.ts +1 -1
- package/dist/infrastructure/llm/prompts/index.d.ts.map +1 -1
- package/dist/infrastructure/llm/prompts/index.js +1 -1
- package/dist/infrastructure/llm/prompts/index.js.map +1 -1
- package/dist/infrastructure/llm/prompts/system-prompt.d.ts +14 -1
- package/dist/infrastructure/llm/prompts/system-prompt.d.ts.map +1 -1
- package/dist/infrastructure/llm/prompts/system-prompt.js +186 -52
- package/dist/infrastructure/llm/prompts/system-prompt.js.map +1 -1
- package/dist/infrastructure/logging/debug-logger.d.ts +29 -0
- package/dist/infrastructure/logging/debug-logger.d.ts.map +1 -0
- package/dist/infrastructure/logging/debug-logger.js +35 -0
- package/dist/infrastructure/logging/debug-logger.js.map +1 -0
- package/dist/infrastructure/sandbox/prelude/rlm_prelude.py +637 -41
- package/dist/infrastructure/sandbox/process-manager.d.ts +1 -0
- package/dist/infrastructure/sandbox/process-manager.d.ts.map +1 -1
- package/dist/infrastructure/sandbox/process-manager.js +19 -6
- package/dist/infrastructure/sandbox/process-manager.js.map +1 -1
- package/dist/infrastructure/sandbox/python-executor.d.ts +6 -2
- package/dist/infrastructure/sandbox/python-executor.d.ts.map +1 -1
- package/dist/infrastructure/sandbox/python-executor.js +138 -5
- package/dist/infrastructure/sandbox/python-executor.js.map +1 -1
- package/package.json +2 -1
- package/src/infrastructure/sandbox/prelude/rlm_prelude.py +637 -41
|
@@ -0,0 +1,148 @@
|
|
|
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
|
+
// LLM Query Limits (per MIT CSAIL paper on Recursive Language Models)
|
|
9
|
+
// =============================================================================
|
|
10
|
+
/**
|
|
11
|
+
* Maximum characters per llm_query() call (~125K tokens)
|
|
12
|
+
* Per MIT CSAIL paper on Recursive Language Models
|
|
13
|
+
*/
|
|
14
|
+
export const LLM_QUERY_MAX_CHARS = 500_000;
|
|
15
|
+
/**
|
|
16
|
+
* Default max tokens per LLM call for code/answer generation
|
|
17
|
+
*/
|
|
18
|
+
export const DEFAULT_MAX_TOKENS_PER_CALL = 4000;
|
|
19
|
+
/**
|
|
20
|
+
* Characters per token estimate for English text
|
|
21
|
+
* This is a simple heuristic; real tokenization varies by model
|
|
22
|
+
*/
|
|
23
|
+
export const CHARS_PER_TOKEN_ESTIMATE = 4;
|
|
24
|
+
// =============================================================================
|
|
25
|
+
// Timeout & Retry Configuration
|
|
26
|
+
// =============================================================================
|
|
27
|
+
/**
|
|
28
|
+
* Default request timeout in milliseconds for LLM API calls
|
|
29
|
+
*/
|
|
30
|
+
export const DEFAULT_REQUEST_TIMEOUT_MS = 60000;
|
|
31
|
+
/**
|
|
32
|
+
* Default max retries on transient errors
|
|
33
|
+
*/
|
|
34
|
+
export const DEFAULT_MAX_RETRIES = 3;
|
|
35
|
+
/**
|
|
36
|
+
* Default retry-after seconds when rate limited (if not specified by server)
|
|
37
|
+
*/
|
|
38
|
+
export const DEFAULT_RETRY_AFTER_SECONDS = 60;
|
|
39
|
+
/**
|
|
40
|
+
* Base delay for exponential backoff in milliseconds
|
|
41
|
+
*/
|
|
42
|
+
export const BACKOFF_BASE_MS = 1000;
|
|
43
|
+
/**
|
|
44
|
+
* Health check timeout in milliseconds
|
|
45
|
+
*/
|
|
46
|
+
export const HEALTH_CHECK_TIMEOUT_MS = 5000;
|
|
47
|
+
/**
|
|
48
|
+
* Default Python execution timeout in milliseconds
|
|
49
|
+
*/
|
|
50
|
+
export const DEFAULT_PYTHON_TIMEOUT_MS = 30000;
|
|
51
|
+
// =============================================================================
|
|
52
|
+
// Preview & Display Truncation
|
|
53
|
+
// =============================================================================
|
|
54
|
+
/**
|
|
55
|
+
* Code preview truncation length (short)
|
|
56
|
+
*/
|
|
57
|
+
export const CODE_PREVIEW_LENGTH_SHORT = 200;
|
|
58
|
+
/**
|
|
59
|
+
* Output preview truncation length (medium)
|
|
60
|
+
*/
|
|
61
|
+
export const OUTPUT_PREVIEW_LENGTH = 500;
|
|
62
|
+
// =============================================================================
|
|
63
|
+
// Cost Estimation Thresholds
|
|
64
|
+
// =============================================================================
|
|
65
|
+
/**
|
|
66
|
+
* Token threshold for cost estimation (roughly 100K tokens per call)
|
|
67
|
+
*/
|
|
68
|
+
export const COST_ESTIMATE_TOKEN_THRESHOLD = 100_000;
|
|
69
|
+
/**
|
|
70
|
+
* Average output tokens for cost estimation
|
|
71
|
+
*/
|
|
72
|
+
export const COST_ESTIMATE_AVG_OUTPUT_TOKENS = 2000;
|
|
73
|
+
/**
|
|
74
|
+
* Minimum cost multiplier for cost estimation range
|
|
75
|
+
*/
|
|
76
|
+
export const COST_ESTIMATE_MIN_MULTIPLIER = 0.5;
|
|
77
|
+
/**
|
|
78
|
+
* Maximum cost multiplier for cost estimation range
|
|
79
|
+
*/
|
|
80
|
+
export const COST_ESTIMATE_MAX_MULTIPLIER = 2;
|
|
81
|
+
// =============================================================================
|
|
82
|
+
// Error Recovery
|
|
83
|
+
// =============================================================================
|
|
84
|
+
/**
|
|
85
|
+
* Temperature for error recovery prompts (lower for more focused fixes)
|
|
86
|
+
*/
|
|
87
|
+
export const ERROR_RECOVERY_TEMPERATURE = 0.2;
|
|
88
|
+
// =============================================================================
|
|
89
|
+
// Process Management
|
|
90
|
+
// =============================================================================
|
|
91
|
+
/**
|
|
92
|
+
* Maximum event listeners per emitter
|
|
93
|
+
*/
|
|
94
|
+
export const MAX_EVENT_LISTENERS = 100;
|
|
95
|
+
/**
|
|
96
|
+
* Threshold for using temp file instead of stdin (10MB)
|
|
97
|
+
* Large payloads can block stdin buffer
|
|
98
|
+
*/
|
|
99
|
+
export const STDIN_SIZE_THRESHOLD = 10 * 1024 * 1024;
|
|
100
|
+
/**
|
|
101
|
+
* Maximum concurrent queries in llm_query_batch to avoid resource exhaustion.
|
|
102
|
+
* Each recursive call spawns a Python process + makes LLM API calls.
|
|
103
|
+
* 5 concurrent provides ~5x speedup while staying safe for most systems.
|
|
104
|
+
*/
|
|
105
|
+
export const MAX_CONCURRENT_BATCH_QUERIES = 5;
|
|
106
|
+
// =============================================================================
|
|
107
|
+
// API Configuration
|
|
108
|
+
// =============================================================================
|
|
109
|
+
/**
|
|
110
|
+
* Default OpenRouter API base URL
|
|
111
|
+
*/
|
|
112
|
+
export const DEFAULT_OPENROUTER_BASE_URL = 'https://openrouter.ai/api/v1';
|
|
113
|
+
/**
|
|
114
|
+
* Default site name for OpenRouter analytics
|
|
115
|
+
*/
|
|
116
|
+
export const DEFAULT_SITE_NAME = 'RLM';
|
|
117
|
+
// =============================================================================
|
|
118
|
+
// Protocol Markers (for Python<->Node communication)
|
|
119
|
+
// =============================================================================
|
|
120
|
+
/**
|
|
121
|
+
* Protocol marker for initialization via stdin
|
|
122
|
+
*/
|
|
123
|
+
export const PROTOCOL_INIT = '__INIT__';
|
|
124
|
+
/**
|
|
125
|
+
* Protocol marker for initialization via temp file
|
|
126
|
+
*/
|
|
127
|
+
export const PROTOCOL_INIT_FILE = '__INIT_FILE__';
|
|
128
|
+
/**
|
|
129
|
+
* Protocol marker for command output
|
|
130
|
+
*/
|
|
131
|
+
export const PROTOCOL_COMMAND = '__COMMAND__';
|
|
132
|
+
/**
|
|
133
|
+
* Protocol marker for response input
|
|
134
|
+
*/
|
|
135
|
+
export const PROTOCOL_RESPONSE = '__RESPONSE__';
|
|
136
|
+
/**
|
|
137
|
+
* Protocol marker for completion
|
|
138
|
+
*/
|
|
139
|
+
export const PROTOCOL_DONE = '__DONE__';
|
|
140
|
+
/**
|
|
141
|
+
* Protocol marker for errors
|
|
142
|
+
*/
|
|
143
|
+
export const PROTOCOL_ERROR = '__ERROR__';
|
|
144
|
+
/**
|
|
145
|
+
* Protocol marker for warnings
|
|
146
|
+
*/
|
|
147
|
+
export const PROTOCOL_WARNING = '__WARNING__';
|
|
148
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/domain/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,gFAAgF;AAChF,sEAAsE;AACtE,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAC;AAE3C;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAC;AAEhD;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAE1C,gFAAgF;AAChF,gCAAgC;AAChC,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAE9C;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AAEpC;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAE5C;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAAC;AAE/C,gFAAgF;AAChF,+BAA+B;AAC/B,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAE7C;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAEzC,gFAAgF;AAChF,6BAA6B;AAC7B,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,OAAO,CAAC;AAErD;;GAEG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,IAAI,CAAC;AAEpD;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAE9C,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAE9C,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEvC;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAErD;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAE9C,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,8BAA8B,CAAC;AAE1E;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEvC,gFAAgF;AAChF,qDAAqD;AACrD,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;AAExC;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAElD;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC;AAE9C;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;AAExC;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC;AAE1C;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC"}
|
|
@@ -3,6 +3,7 @@ export { ExecutionError, CodeValidationError, ExecutionTimeoutError, SandboxViol
|
|
|
3
3
|
export { LimitExceededError, SessionCancelledError, SessionTimeoutError, } from './limit-exceeded.js';
|
|
4
4
|
export { ValidationError, ConfigurationError, ContextError, QueryError, } from './validation-error.js';
|
|
5
5
|
export { LLMError, RateLimitError, AuthenticationError, ContentFilterError, MalformedResponseError, } from './llm-error.js';
|
|
6
|
+
export { TokenBudgetExceededError, LlmQueryCapacityError, type TokenBudgetExceededDetails, type LlmQueryCapacityDetails, } from './token-budget-error.js';
|
|
6
7
|
/**
|
|
7
8
|
* Check if an error is an RLM error
|
|
8
9
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/errors/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,KAAK,mBAAmB,GACzB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,UAAU,GACX,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,QAAQ,EACR,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/errors/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,KAAK,mBAAmB,GACzB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,UAAU,GACX,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,QAAQ,EACR,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,GAC7B,MAAM,yBAAyB,CAAC;AAEjC;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,iBAAiB,EAAE,QAAQ,CAEtF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAK1D"}
|
|
@@ -8,6 +8,8 @@ export { LimitExceededError, SessionCancelledError, SessionTimeoutError, } from
|
|
|
8
8
|
export { ValidationError, ConfigurationError, ContextError, QueryError, } from './validation-error.js';
|
|
9
9
|
// LLM errors
|
|
10
10
|
export { LLMError, RateLimitError, AuthenticationError, ContentFilterError, MalformedResponseError, } from './llm-error.js';
|
|
11
|
+
// Token budget errors
|
|
12
|
+
export { TokenBudgetExceededError, LlmQueryCapacityError, } from './token-budget-error.js';
|
|
11
13
|
/**
|
|
12
14
|
* Check if an error is an RLM error
|
|
13
15
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/errors/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,mBAAmB;AACnB,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,GAEtB,MAAM,sBAAsB,CAAC;AAE9B,eAAe;AACf,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAE7B,oBAAoB;AACpB,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,UAAU,GACX,MAAM,uBAAuB,CAAC;AAE/B,aAAa;AACb,OAAO,EACL,QAAQ,EACR,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAExB;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,aAAa,IAAI,KAAK,CAAC;AAC7E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC,WAAW,CAAC;IAC3B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/errors/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,mBAAmB;AACnB,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,GAEtB,MAAM,sBAAsB,CAAC;AAE9B,eAAe;AACf,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAE7B,oBAAoB;AACpB,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,UAAU,GACX,MAAM,uBAAuB,CAAC;AAE/B,aAAa;AACb,OAAO,EACL,QAAQ,EACR,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAExB,sBAAsB;AACtB,OAAO,EACL,wBAAwB,EACxB,qBAAqB,GAGtB,MAAM,yBAAyB,CAAC;AAEjC;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,aAAa,IAAI,KAAK,CAAC;AAC7E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC,WAAW,CAAC;IAC3B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { RLMError } from './base-error.js';
|
|
2
|
+
/**
|
|
3
|
+
* Error details for token budget exceeded
|
|
4
|
+
*/
|
|
5
|
+
export interface TokenBudgetExceededDetails {
|
|
6
|
+
/** Requested token count */
|
|
7
|
+
requested: number;
|
|
8
|
+
/** Maximum allowed tokens */
|
|
9
|
+
limit: number;
|
|
10
|
+
/** Preview of content (truncated) */
|
|
11
|
+
content?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Error thrown when content exceeds the model's context limit
|
|
15
|
+
*/
|
|
16
|
+
export declare class TokenBudgetExceededError extends RLMError {
|
|
17
|
+
readonly code = "TOKEN_BUDGET_EXCEEDED";
|
|
18
|
+
readonly recoverable = false;
|
|
19
|
+
/** Error details */
|
|
20
|
+
readonly details: TokenBudgetExceededDetails;
|
|
21
|
+
constructor(details: TokenBudgetExceededDetails, sessionId?: string);
|
|
22
|
+
toJSON(): Record<string, unknown>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Error details for llm_query capacity exceeded
|
|
26
|
+
*/
|
|
27
|
+
export interface LlmQueryCapacityDetails {
|
|
28
|
+
/** Provided character count */
|
|
29
|
+
providedChars: number;
|
|
30
|
+
/** Maximum allowed characters */
|
|
31
|
+
maxChars: number;
|
|
32
|
+
/** Hint for resolution */
|
|
33
|
+
hint: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Error thrown when llm_query() call exceeds capacity limit
|
|
37
|
+
* Per MIT paper: ~500K char limit per llm_query() call
|
|
38
|
+
*/
|
|
39
|
+
export declare class LlmQueryCapacityError extends RLMError {
|
|
40
|
+
readonly code = "LLM_QUERY_CAPACITY_EXCEEDED";
|
|
41
|
+
readonly recoverable = false;
|
|
42
|
+
/** Error details */
|
|
43
|
+
readonly details: LlmQueryCapacityDetails;
|
|
44
|
+
constructor(details: LlmQueryCapacityDetails, sessionId?: string);
|
|
45
|
+
toJSON(): Record<string, unknown>;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=token-budget-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-budget-error.d.ts","sourceRoot":"","sources":["../../../src/domain/errors/token-budget-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAElB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IAEd,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,QAAQ;IACpD,QAAQ,CAAC,IAAI,2BAA2B;IACxC,QAAQ,CAAC,WAAW,SAAS;IAE7B,oBAAoB;IACpB,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAC;gBAEjC,OAAO,EAAE,0BAA0B,EAAE,SAAS,CAAC,EAAE,MAAM;IAQ1D,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAM3C;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,+BAA+B;IAC/B,aAAa,EAAE,MAAM,CAAC;IAEtB,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IAEjB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,QAAQ;IACjD,QAAQ,CAAC,IAAI,iCAAiC;IAC9C,QAAQ,CAAC,WAAW,SAAS;IAE7B,oBAAoB;IACpB,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;gBAE9B,OAAO,EAAE,uBAAuB,EAAE,SAAS,CAAC,EAAE,MAAM;IAQvD,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAM3C"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { RLMError } from './base-error.js';
|
|
2
|
+
/**
|
|
3
|
+
* Error thrown when content exceeds the model's context limit
|
|
4
|
+
*/
|
|
5
|
+
export class TokenBudgetExceededError extends RLMError {
|
|
6
|
+
code = 'TOKEN_BUDGET_EXCEEDED';
|
|
7
|
+
recoverable = false;
|
|
8
|
+
/** Error details */
|
|
9
|
+
details;
|
|
10
|
+
constructor(details, sessionId) {
|
|
11
|
+
super(`Token budget exceeded: ${details.requested} tokens requested, limit is ${details.limit} tokens`, sessionId);
|
|
12
|
+
this.details = details;
|
|
13
|
+
}
|
|
14
|
+
toJSON() {
|
|
15
|
+
return {
|
|
16
|
+
...super.toJSON(),
|
|
17
|
+
details: this.details,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Error thrown when llm_query() call exceeds capacity limit
|
|
23
|
+
* Per MIT paper: ~500K char limit per llm_query() call
|
|
24
|
+
*/
|
|
25
|
+
export class LlmQueryCapacityError extends RLMError {
|
|
26
|
+
code = 'LLM_QUERY_CAPACITY_EXCEEDED';
|
|
27
|
+
recoverable = false;
|
|
28
|
+
/** Error details */
|
|
29
|
+
details;
|
|
30
|
+
constructor(details, sessionId) {
|
|
31
|
+
super(`llm_query() capacity exceeded: ${details.providedChars} chars > ${details.maxChars} max. ${details.hint}`, sessionId);
|
|
32
|
+
this.details = details;
|
|
33
|
+
}
|
|
34
|
+
toJSON() {
|
|
35
|
+
return {
|
|
36
|
+
...super.toJSON(),
|
|
37
|
+
details: this.details,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=token-budget-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-budget-error.js","sourceRoot":"","sources":["../../../src/domain/errors/token-budget-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAgB3C;;GAEG;AACH,MAAM,OAAO,wBAAyB,SAAQ,QAAQ;IAC3C,IAAI,GAAG,uBAAuB,CAAC;IAC/B,WAAW,GAAG,KAAK,CAAC;IAE7B,oBAAoB;IACX,OAAO,CAA6B;IAE7C,YAAY,OAAmC,EAAE,SAAkB;QACjE,KAAK,CACH,0BAA0B,OAAO,CAAC,SAAS,+BAA+B,OAAO,CAAC,KAAK,SAAS,EAChG,SAAS,CACV,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEQ,MAAM;QACb,OAAO;YACL,GAAG,KAAK,CAAC,MAAM,EAAE;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;CACF;AAgBD;;;GAGG;AACH,MAAM,OAAO,qBAAsB,SAAQ,QAAQ;IACxC,IAAI,GAAG,6BAA6B,CAAC;IACrC,WAAW,GAAG,KAAK,CAAC;IAE7B,oBAAoB;IACX,OAAO,CAA0B;IAE1C,YAAY,OAAgC,EAAE,SAAkB;QAC9D,KAAK,CACH,kCAAkC,OAAO,CAAC,aAAa,YAAY,OAAO,CAAC,QAAQ,SAAS,OAAO,CAAC,IAAI,EAAE,EAC1G,SAAS,CACV,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEQ,MAAM;QACb,OAAO;YACL,GAAG,KAAK,CAAC,MAAM,EAAE;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -51,20 +51,44 @@ export interface ExecutionResult {
|
|
|
51
51
|
readonly executionTimeMs: number;
|
|
52
52
|
/** Commands from Python to Node (llm_query, set_result, etc.) */
|
|
53
53
|
readonly commands: readonly PythonCommand[];
|
|
54
|
+
/**
|
|
55
|
+
* Confidence level if set_result_final was called (0.0-1.0)
|
|
56
|
+
* Signals early termination - no further processing needed
|
|
57
|
+
*/
|
|
58
|
+
readonly finalAnswerConfidence?: number;
|
|
54
59
|
}
|
|
55
60
|
/**
|
|
56
61
|
* Commands that Python code can issue to Node
|
|
57
62
|
*/
|
|
58
|
-
export type PythonCommand = LLMQueryCommand | SetResultCommand | SetVariableCommand;
|
|
63
|
+
export type PythonCommand = LLMQueryCommand | LLMQueryBatchCommand | SetResultCommand | SetResultFinalCommand | SetVariableCommand;
|
|
59
64
|
export interface LLMQueryCommand {
|
|
60
65
|
readonly type: 'llm_query';
|
|
61
66
|
readonly query: string;
|
|
62
67
|
readonly contextVariables: readonly string[];
|
|
63
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Batch query command for parallel processing (per MIT RLM paper optimization)
|
|
71
|
+
*/
|
|
72
|
+
export interface LLMQueryBatchCommand {
|
|
73
|
+
readonly type: 'llm_query_batch';
|
|
74
|
+
readonly queries: readonly {
|
|
75
|
+
readonly query: string;
|
|
76
|
+
readonly contextVariables: readonly string[];
|
|
77
|
+
}[];
|
|
78
|
+
}
|
|
64
79
|
export interface SetResultCommand {
|
|
65
80
|
readonly type: 'set_result';
|
|
66
81
|
readonly result: string;
|
|
67
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Command to set result AND signal early termination
|
|
85
|
+
* Per MIT paper: allows LLM to short-circuit when answer is found
|
|
86
|
+
*/
|
|
87
|
+
export interface SetResultFinalCommand {
|
|
88
|
+
readonly type: 'set_result_final';
|
|
89
|
+
readonly result: string;
|
|
90
|
+
readonly confidence: number;
|
|
91
|
+
}
|
|
68
92
|
export interface SetVariableCommand {
|
|
69
93
|
readonly type: 'set_variable';
|
|
70
94
|
readonly name: string;
|
|
@@ -80,8 +104,14 @@ export interface ICodeExecutor {
|
|
|
80
104
|
validate(code: string): ValidationResult;
|
|
81
105
|
/**
|
|
82
106
|
* Execute Python code in sandbox
|
|
107
|
+
* @param onCommand Optional callback to handle commands during execution (fixes deadlock for llm_query).
|
|
108
|
+
* Returns response object to send back to Python, or undefined if not handled.
|
|
83
109
|
*/
|
|
84
|
-
execute(code: string, context: ExecutionContext
|
|
110
|
+
execute(code: string, context: ExecutionContext, onCommand?: (command: PythonCommand) => Promise<{
|
|
111
|
+
result: string;
|
|
112
|
+
} | {
|
|
113
|
+
error: string;
|
|
114
|
+
} | undefined>): Promise<ExecutionResult>;
|
|
85
115
|
/**
|
|
86
116
|
* Send a response to a pending llm_query
|
|
87
117
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-executor.d.ts","sourceRoot":"","sources":["../../../src/domain/interfaces/code-executor.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oDAAoD;IACpD,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhD,8BAA8B;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,8BAA8B;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,8BAA8B;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAExB,+BAA+B;IAC/B,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;IAE5C,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,gCAAgC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,oBAAoB;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,oCAAoC;IACpC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;CACpC;AAED,MAAM,MAAM,mBAAmB,GAC3B,cAAc,GACd,kBAAkB,GAClB,mBAAmB,GACnB,qBAAqB,GACrB,oBAAoB,GACpB,oBAAoB,GACpB,gBAAgB,GAChB,iBAAiB,CAAC;AAEtB;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,+CAA+C;IAC/C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B,+BAA+B;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,+BAA+B;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,gCAAgC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB,wCAAwC;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAExB,qCAAqC;IACrC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IAEjC,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"code-executor.d.ts","sourceRoot":"","sources":["../../../src/domain/interfaces/code-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -97,10 +97,64 @@ export interface LimitWarningEvent extends RLMEventBase {
|
|
|
97
97
|
readonly max: number;
|
|
98
98
|
readonly percentage: number;
|
|
99
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Token check event - emitted before llm_query() calls for observability
|
|
102
|
+
*/
|
|
103
|
+
export interface TokenCheckEvent extends RLMEventBase {
|
|
104
|
+
readonly type: 'rlm.token_check';
|
|
105
|
+
readonly contextTokens: number;
|
|
106
|
+
readonly limit: number;
|
|
107
|
+
readonly depth: number;
|
|
108
|
+
readonly action: 'ok' | 'warning';
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Code generated event - emitted when LLM generates Python code
|
|
112
|
+
*/
|
|
113
|
+
export interface CodeGeneratedEvent extends RLMEventBase {
|
|
114
|
+
readonly type: 'rlm.code.generated';
|
|
115
|
+
readonly code: string;
|
|
116
|
+
readonly depth: number;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Direct answer generated event - emitted for recursive calls that return text
|
|
120
|
+
*/
|
|
121
|
+
export interface DirectAnswerGeneratedEvent extends RLMEventBase {
|
|
122
|
+
readonly type: 'rlm.direct_answer.generated';
|
|
123
|
+
readonly answerLength: number;
|
|
124
|
+
readonly depth: number;
|
|
125
|
+
readonly answer: string;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Code executed event - emitted after Python code execution completes
|
|
129
|
+
*/
|
|
130
|
+
export interface CodeExecutedEvent extends RLMEventBase {
|
|
131
|
+
readonly type: 'rlm.code.executed';
|
|
132
|
+
readonly success: boolean;
|
|
133
|
+
readonly stdout: string;
|
|
134
|
+
readonly stderr: string;
|
|
135
|
+
readonly error?: string;
|
|
136
|
+
readonly result?: string;
|
|
137
|
+
readonly depth: number;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Recovery started event - emitted when error recovery begins
|
|
141
|
+
*/
|
|
142
|
+
export interface RecoveryStartedEvent extends RLMEventBase {
|
|
143
|
+
readonly type: 'rlm.recovery.started';
|
|
144
|
+
readonly error: string;
|
|
145
|
+
readonly traceback?: string;
|
|
146
|
+
readonly previousCode: string;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Recovery completed event - emitted when error recovery finishes
|
|
150
|
+
*/
|
|
151
|
+
export interface RecoveryCompletedEvent extends RLMEventBase {
|
|
152
|
+
readonly type: 'rlm.recovery.completed';
|
|
153
|
+
}
|
|
100
154
|
/**
|
|
101
155
|
* Union of all RLM events
|
|
102
156
|
*/
|
|
103
|
-
export type RLMEvent = SessionStartedEvent | SessionCompletedEvent | SessionFailedEvent | SessionCancelledEvent | LLMCallCompletedEvent | CodeExecutionCompletedEvent | RecursiveCallStartedEvent | RecursiveCallCompletedEvent | ProgressUpdateEvent | LimitWarningEvent;
|
|
157
|
+
export type RLMEvent = SessionStartedEvent | SessionCompletedEvent | SessionFailedEvent | SessionCancelledEvent | LLMCallCompletedEvent | CodeExecutionCompletedEvent | RecursiveCallStartedEvent | RecursiveCallCompletedEvent | ProgressUpdateEvent | LimitWarningEvent | TokenCheckEvent | CodeGeneratedEvent | DirectAnswerGeneratedEvent | CodeExecutedEvent | RecoveryStartedEvent | RecoveryCompletedEvent;
|
|
104
158
|
/**
|
|
105
159
|
* Event handler function
|
|
106
160
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-emitter.d.ts","sourceRoot":"","sources":["../../../src/domain/interfaces/event-emitter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"event-emitter.d.ts","sourceRoot":"","sources":["../../../src/domain/interfaces/event-emitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,5 +60,9 @@ export interface ILLMProvider {
|
|
|
60
60
|
* Check if the provider is healthy/available
|
|
61
61
|
*/
|
|
62
62
|
healthCheck(): Promise<boolean>;
|
|
63
|
+
/**
|
|
64
|
+
* Get the context limit (in tokens) for the current model
|
|
65
|
+
*/
|
|
66
|
+
getModelContextLimit(): number;
|
|
63
67
|
}
|
|
64
68
|
//# sourceMappingURL=llm-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-provider.d.ts","sourceRoot":"","sources":["../../../src/domain/interfaces/llm-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,wBAAwB;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B,iCAAiC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAE5B,qBAAqB;IACrB,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAE3C,6BAA6B;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,4BAA4B;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,6BAA6B;IAC7B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAE3B,0BAA0B;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,oBAAoB;IACpB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAEpC,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,gBAAgB,GAAG,OAAO,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAExF;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAErC;;OAEG;IACH,QAAQ,IAAI,MAAM,CAAC;IAEnB;;OAEG;IACH,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"llm-provider.d.ts","sourceRoot":"","sources":["../../../src/domain/interfaces/llm-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,wBAAwB;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B,iCAAiC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAE5B,qBAAqB;IACrB,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAE3C,6BAA6B;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,4BAA4B;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,6BAA6B;IAC7B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAE3B,0BAA0B;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,oBAAoB;IACpB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAEpC,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,gBAAgB,GAAG,OAAO,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAExF;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAErC;;OAEG;IACH,QAAQ,IAAI,MAAM,CAAC;IAEnB;;OAEG;IACH,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhC;;OAEG;IACH,oBAAoB,IAAI,MAAM,CAAC;CAChC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost-calculator.d.ts","sourceRoot":"","sources":["../../../src/domain/services/cost-calculator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"cost-calculator.d.ts","sourceRoot":"","sources":["../../../src/domain/services/cost-calculator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAQpD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAEhC,uCAAuC;IACvC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAiCtD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,YAG7B,CAAC;AAEF;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAe3D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAOtE;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,6BAA6B;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,6BAA6B;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,4BAA4B;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IAEjC,oCAAoC;IACpC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,aAAa,EAAE,MAAM,GACpB,YAAY,CA2Bd;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKlD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAE5E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAG9E"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { COST_ESTIMATE_TOKEN_THRESHOLD, COST_ESTIMATE_AVG_OUTPUT_TOKENS, COST_ESTIMATE_MIN_MULTIPLIER, COST_ESTIMATE_MAX_MULTIPLIER, } from '../constants.js';
|
|
1
2
|
/**
|
|
2
3
|
* Known model pricing (as of early 2025)
|
|
3
4
|
* These should be updated periodically
|
|
@@ -31,6 +32,10 @@ export const MODEL_PRICING = {
|
|
|
31
32
|
inputCostPer1M: 0.15,
|
|
32
33
|
outputCostPer1M: 0.6,
|
|
33
34
|
},
|
|
35
|
+
'google/gemini-2.0-flash-001': {
|
|
36
|
+
inputCostPer1M: 0.13,
|
|
37
|
+
outputCostPer1M: 0.50,
|
|
38
|
+
},
|
|
34
39
|
};
|
|
35
40
|
/**
|
|
36
41
|
* Default pricing for unknown models
|
|
@@ -73,18 +78,18 @@ export function estimateSessionCost(config, contextTokens) {
|
|
|
73
78
|
const pricing = getModelPricing(config.model);
|
|
74
79
|
// Estimate number of calls based on context size and depth
|
|
75
80
|
// Assume each level processes ~10% of context
|
|
76
|
-
const callsPerLevel = Math.ceil(contextTokens /
|
|
81
|
+
const callsPerLevel = Math.ceil(contextTokens / COST_ESTIMATE_TOKEN_THRESHOLD);
|
|
77
82
|
const estimatedCalls = Math.min(callsPerLevel * config.maxRecursionDepth, config.maxRecursionDepth * 10 // Cap at reasonable number
|
|
78
83
|
);
|
|
79
84
|
// Average tokens per call (input + output)
|
|
80
85
|
const avgInputTokens = contextTokens / estimatedCalls;
|
|
81
|
-
const avgOutputTokens =
|
|
86
|
+
const avgOutputTokens = COST_ESTIMATE_AVG_OUTPUT_TOKENS;
|
|
82
87
|
const costPerCall = (avgInputTokens / 1_000_000) * pricing.inputCostPer1M +
|
|
83
88
|
(avgOutputTokens / 1_000_000) * pricing.outputCostPer1M;
|
|
84
89
|
const expectedCost = costPerCall * estimatedCalls;
|
|
85
90
|
return {
|
|
86
|
-
minCostUsd: expectedCost *
|
|
87
|
-
maxCostUsd: Math.min(expectedCost *
|
|
91
|
+
minCostUsd: expectedCost * COST_ESTIMATE_MIN_MULTIPLIER,
|
|
92
|
+
maxCostUsd: Math.min(expectedCost * COST_ESTIMATE_MAX_MULTIPLIER, config.maxCostUsd),
|
|
88
93
|
expectedCostUsd: expectedCost,
|
|
89
94
|
estimatedCalls,
|
|
90
95
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost-calculator.js","sourceRoot":"","sources":["../../../src/domain/services/cost-calculator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cost-calculator.js","sourceRoot":"","sources":["../../../src/domain/services/cost-calculator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model context limits (tokens) for known models
|
|
3
|
+
* Per MIT paper: ~500K chars = ~125K tokens per llm_query() call
|
|
4
|
+
*/
|
|
5
|
+
export declare const MODEL_CONTEXT_LIMITS: Record<string, number>;
|
|
6
|
+
/**
|
|
7
|
+
* Default context limit for unknown models (conservative estimate)
|
|
8
|
+
*/
|
|
9
|
+
export declare const DEFAULT_MODEL_CONTEXT_LIMIT = 32000;
|
|
10
|
+
/**
|
|
11
|
+
* Get the context limit for a model
|
|
12
|
+
*/
|
|
13
|
+
export declare function getModelContextLimit(model: string): number;
|
|
1
14
|
/**
|
|
2
15
|
* Configuration for RLM execution - immutable after creation
|
|
3
16
|
*/
|
|
@@ -16,6 +29,8 @@ export interface RLMConfig {
|
|
|
16
29
|
readonly temperature: number;
|
|
17
30
|
/** Sandbox mode: 'strict' | 'permissive' | 'disabled' */
|
|
18
31
|
readonly sandboxMode: SandboxMode;
|
|
32
|
+
/** Optional: Use different model for llm_query() sub-calls (can be cheaper/faster) */
|
|
33
|
+
readonly subModel?: string;
|
|
19
34
|
}
|
|
20
35
|
export type SandboxMode = 'strict' | 'permissive' | 'disabled';
|
|
21
36
|
/**
|
|
@@ -29,6 +44,8 @@ export interface RLMConfigInput {
|
|
|
29
44
|
model?: string;
|
|
30
45
|
temperature?: number;
|
|
31
46
|
sandboxMode?: SandboxMode;
|
|
47
|
+
/** Optional: Use different model for llm_query() sub-calls (can be cheaper/faster) */
|
|
48
|
+
subModel?: string;
|
|
32
49
|
}
|
|
33
50
|
/**
|
|
34
51
|
* Default configuration values
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/domain/types/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,oDAAoD;IACpD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAEnC,gDAAgD;IAChD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,0CAA0C;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,qDAAqD;IACrD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,qCAAqC;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,yDAAyD;IACzD,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/domain/types/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA0BvD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B,QAAS,CAAC;AAElD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,oDAAoD;IACpD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAEnC,gDAAgD;IAChD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,0CAA0C;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,qDAAqD;IACrD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,qCAAqC;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,yDAAyD;IACzD,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAElC,sFAAsF;IACtF,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,SAQnB,CAAC;AAEX;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,SAAS,CAK9D"}
|
|
@@ -1,3 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model context limits (tokens) for known models
|
|
3
|
+
* Per MIT paper: ~500K chars = ~125K tokens per llm_query() call
|
|
4
|
+
*/
|
|
5
|
+
export const MODEL_CONTEXT_LIMITS = {
|
|
6
|
+
// Anthropic models
|
|
7
|
+
'anthropic/claude-sonnet-4': 200_000,
|
|
8
|
+
'anthropic/claude-opus-4': 200_000,
|
|
9
|
+
'anthropic/claude-3.5-sonnet': 200_000,
|
|
10
|
+
'anthropic/claude-3-opus': 200_000,
|
|
11
|
+
'anthropic/claude-3-sonnet': 200_000,
|
|
12
|
+
'anthropic/claude-3-haiku': 200_000,
|
|
13
|
+
// OpenAI models
|
|
14
|
+
'openai/gpt-4-turbo': 128_000,
|
|
15
|
+
'openai/gpt-4o': 128_000,
|
|
16
|
+
'openai/gpt-4o-mini': 128_000,
|
|
17
|
+
'openai/gpt-4': 8_192,
|
|
18
|
+
'openai/o1': 200_000,
|
|
19
|
+
'openai/o1-mini': 128_000,
|
|
20
|
+
// Google models
|
|
21
|
+
'google/gemini-pro-1.5': 1_000_000,
|
|
22
|
+
'google/gemini-flash-1.5': 1_000_000,
|
|
23
|
+
'google/gemini-2.0-flash-001': 1_000_000,
|
|
24
|
+
'google/gemini-2.5-flash': 1_000_000,
|
|
25
|
+
// Meta models
|
|
26
|
+
'meta-llama/llama-3.1-405b-instruct': 128_000,
|
|
27
|
+
'meta-llama/llama-3.1-70b-instruct': 128_000,
|
|
28
|
+
// Mistral models
|
|
29
|
+
'mistralai/mistral-large': 128_000,
|
|
30
|
+
'mistralai/mixtral-8x22b-instruct': 65_536,
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Default context limit for unknown models (conservative estimate)
|
|
34
|
+
*/
|
|
35
|
+
export const DEFAULT_MODEL_CONTEXT_LIMIT = 32_000;
|
|
36
|
+
/**
|
|
37
|
+
* Get the context limit for a model
|
|
38
|
+
*/
|
|
39
|
+
export function getModelContextLimit(model) {
|
|
40
|
+
return MODEL_CONTEXT_LIMITS[model] ?? DEFAULT_MODEL_CONTEXT_LIMIT;
|
|
41
|
+
}
|
|
1
42
|
/**
|
|
2
43
|
* Default configuration values
|
|
3
44
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/domain/types/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/domain/types/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA2B;IAC1D,mBAAmB;IACnB,2BAA2B,EAAE,OAAO;IACpC,yBAAyB,EAAE,OAAO;IAClC,6BAA6B,EAAE,OAAO;IACtC,yBAAyB,EAAE,OAAO;IAClC,2BAA2B,EAAE,OAAO;IACpC,0BAA0B,EAAE,OAAO;IACnC,gBAAgB;IAChB,oBAAoB,EAAE,OAAO;IAC7B,eAAe,EAAE,OAAO;IACxB,oBAAoB,EAAE,OAAO;IAC7B,cAAc,EAAE,KAAK;IACrB,WAAW,EAAE,OAAO;IACpB,gBAAgB,EAAE,OAAO;IACzB,gBAAgB;IAChB,uBAAuB,EAAE,SAAS;IAClC,yBAAyB,EAAE,SAAS;IACpC,6BAA6B,EAAE,SAAS;IACxC,yBAAyB,EAAE,SAAS;IACpC,cAAc;IACd,oCAAoC,EAAE,OAAO;IAC7C,mCAAmC,EAAE,OAAO;IAC5C,iBAAiB;IACjB,yBAAyB,EAAE,OAAO;IAClC,kCAAkC,EAAE,MAAM;CAC3C,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAM,CAAC;AAElD;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,oBAAoB,CAAC,KAAK,CAAC,IAAI,2BAA2B,CAAC;AACpE,CAAC;AAgDD;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAc;IACvC,iBAAiB,EAAE,CAAC;IACpB,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,EAAE;IACd,SAAS,EAAE,OAAO,EAAE,YAAY;IAChC,KAAK,EAAE,2BAA2B;IAClC,WAAW,EAAE,GAAG;IAChB,WAAW,EAAE,QAAQ;CACb,CAAC;AAEX;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAsB;IACjD,OAAO;QACL,GAAG,cAAc;QACjB,GAAG,KAAK;KACT,CAAC;AACJ,CAAC"}
|