@cloudwarriors-ai/rlm 0.1.8 → 0.2.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 (92) 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 +213 -143
  8. package/dist/application/query-handler.js.map +1 -1
  9. package/dist/cli/commands/query.d.ts +1 -0
  10. package/dist/cli/commands/query.d.ts.map +1 -1
  11. package/dist/cli/commands/query.js +1 -0
  12. package/dist/cli/commands/query.js.map +1 -1
  13. package/dist/cli/config-loader.d.ts +3 -0
  14. package/dist/cli/config-loader.d.ts.map +1 -1
  15. package/dist/cli/config-loader.js +1 -0
  16. package/dist/cli/config-loader.js.map +1 -1
  17. package/dist/cli/index.js +6 -4
  18. package/dist/cli/index.js.map +1 -1
  19. package/dist/domain/constants.d.ts +124 -0
  20. package/dist/domain/constants.d.ts.map +1 -0
  21. package/dist/domain/constants.js +148 -0
  22. package/dist/domain/constants.js.map +1 -0
  23. package/dist/domain/errors/index.d.ts +1 -0
  24. package/dist/domain/errors/index.d.ts.map +1 -1
  25. package/dist/domain/errors/index.js +2 -0
  26. package/dist/domain/errors/index.js.map +1 -1
  27. package/dist/domain/errors/token-budget-error.d.ts +47 -0
  28. package/dist/domain/errors/token-budget-error.d.ts.map +1 -0
  29. package/dist/domain/errors/token-budget-error.js +41 -0
  30. package/dist/domain/errors/token-budget-error.js.map +1 -0
  31. package/dist/domain/interfaces/code-executor.d.ts +32 -3
  32. package/dist/domain/interfaces/code-executor.d.ts.map +1 -1
  33. package/dist/domain/interfaces/event-emitter.d.ts +55 -1
  34. package/dist/domain/interfaces/event-emitter.d.ts.map +1 -1
  35. package/dist/domain/interfaces/llm-provider.d.ts +4 -0
  36. package/dist/domain/interfaces/llm-provider.d.ts.map +1 -1
  37. package/dist/domain/services/cost-calculator.d.ts.map +1 -1
  38. package/dist/domain/services/cost-calculator.js +9 -4
  39. package/dist/domain/services/cost-calculator.js.map +1 -1
  40. package/dist/domain/types/config.d.ts +17 -0
  41. package/dist/domain/types/config.d.ts.map +1 -1
  42. package/dist/domain/types/config.js +41 -0
  43. package/dist/domain/types/config.js.map +1 -1
  44. package/dist/domain/types/index-schema.d.ts +206 -0
  45. package/dist/domain/types/index-schema.d.ts.map +1 -0
  46. package/dist/domain/types/index-schema.js +41 -0
  47. package/dist/domain/types/index-schema.js.map +1 -0
  48. package/dist/domain/types/index.d.ts +2 -0
  49. package/dist/domain/types/index.d.ts.map +1 -1
  50. package/dist/domain/types/index.js +4 -0
  51. package/dist/domain/types/index.js.map +1 -1
  52. package/dist/domain/utils/timer.d.ts +34 -0
  53. package/dist/domain/utils/timer.d.ts.map +1 -0
  54. package/dist/domain/utils/timer.js +39 -0
  55. package/dist/domain/utils/timer.js.map +1 -0
  56. package/dist/factory/create-rlm.d.ts +39 -6
  57. package/dist/factory/create-rlm.d.ts.map +1 -1
  58. package/dist/factory/create-rlm.js +41 -14
  59. package/dist/factory/create-rlm.js.map +1 -1
  60. package/dist/factory/default-config.d.ts +2 -0
  61. package/dist/factory/default-config.d.ts.map +1 -1
  62. package/dist/factory/default-config.js +2 -0
  63. package/dist/factory/default-config.js.map +1 -1
  64. package/dist/index.d.ts +1 -1
  65. package/dist/index.js +1 -1
  66. package/dist/infrastructure/llm/openrouter-provider.d.ts +2 -0
  67. package/dist/infrastructure/llm/openrouter-provider.d.ts.map +1 -1
  68. package/dist/infrastructure/llm/openrouter-provider.js +50 -18
  69. package/dist/infrastructure/llm/openrouter-provider.js.map +1 -1
  70. package/dist/infrastructure/llm/prompts/index.d.ts +1 -1
  71. package/dist/infrastructure/llm/prompts/index.d.ts.map +1 -1
  72. package/dist/infrastructure/llm/prompts/index.js +1 -1
  73. package/dist/infrastructure/llm/prompts/index.js.map +1 -1
  74. package/dist/infrastructure/llm/prompts/system-prompt.d.ts +14 -1
  75. package/dist/infrastructure/llm/prompts/system-prompt.d.ts.map +1 -1
  76. package/dist/infrastructure/llm/prompts/system-prompt.js +186 -52
  77. package/dist/infrastructure/llm/prompts/system-prompt.js.map +1 -1
  78. package/dist/infrastructure/logging/debug-logger.d.ts +29 -0
  79. package/dist/infrastructure/logging/debug-logger.d.ts.map +1 -0
  80. package/dist/infrastructure/logging/debug-logger.js +35 -0
  81. package/dist/infrastructure/logging/debug-logger.js.map +1 -0
  82. package/dist/infrastructure/sandbox/prelude/rlm_prelude.py +637 -41
  83. package/dist/infrastructure/sandbox/process-manager.d.ts +1 -0
  84. package/dist/infrastructure/sandbox/process-manager.d.ts.map +1 -1
  85. package/dist/infrastructure/sandbox/process-manager.js +19 -6
  86. package/dist/infrastructure/sandbox/process-manager.js.map +1 -1
  87. package/dist/infrastructure/sandbox/python-executor.d.ts +5 -1
  88. package/dist/infrastructure/sandbox/python-executor.d.ts.map +1 -1
  89. package/dist/infrastructure/sandbox/python-executor.js +124 -6
  90. package/dist/infrastructure/sandbox/python-executor.js.map +1 -1
  91. package/package.json +5 -2
  92. package/src/infrastructure/sandbox/prelude/rlm_prelude.py +637 -41
@@ -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;CACjC"}
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;AAEpD;;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,CA6BtD,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
+ {"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 / 100_000); // Roughly 100k tokens per call
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 = 2000; // Typical code + explanation
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 * 0.5,
87
- maxCostUsd: Math.min(expectedCost * 2, config.maxCostUsd),
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":"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"}
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;CACnC;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;CAC3B;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,SAQnB,CAAC;AAEX;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,SAAS,CAK9D"}
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":"AAyCA;;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"}
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"}
@@ -0,0 +1,206 @@
1
+ /**
2
+ * Index Schema Types
3
+ *
4
+ * Type definitions for hierarchical codebase indexing output.
5
+ * These schemas define the structure of directory-level and module-level indexes.
6
+ */
7
+ /**
8
+ * Entry describing a single file in a directory.
9
+ */
10
+ export interface FileEntry {
11
+ /** Filename (not full path) */
12
+ name: string;
13
+ /** Relative path from module root */
14
+ path: string;
15
+ /** One-sentence description of the file's purpose */
16
+ description: string;
17
+ /** Role classification of the file */
18
+ role: 'entry' | 'model' | 'view' | 'controller' | 'service' | 'utility' | 'config' | 'test' | 'type' | 'hook' | 'component' | 'other';
19
+ /** Whether this is a core file for the directory's functionality */
20
+ isCore: boolean;
21
+ /** Modules/files this file imports from */
22
+ imports: string[];
23
+ /** Symbols/functions this file exports */
24
+ exports: string[];
25
+ /** Approximate line count */
26
+ lines?: number;
27
+ /** Approximate token count */
28
+ tokens?: number;
29
+ }
30
+ /**
31
+ * Purpose classification for a directory.
32
+ */
33
+ export type DirectoryPurpose = 'core' | 'supporting' | 'utility' | 'config' | 'test' | 'types' | 'assets' | 'infrastructure' | 'domain' | 'application';
34
+ /**
35
+ * Index for a single directory containing files.
36
+ */
37
+ export interface DirectoryIndex {
38
+ /** Relative path from module root */
39
+ path: string;
40
+ /** Directory name */
41
+ name: string;
42
+ /** Description of the directory's purpose */
43
+ description: string;
44
+ /** Purpose classification */
45
+ purpose: DirectoryPurpose;
46
+ /** Files in this directory (not in subdirectories) */
47
+ files: FileEntry[];
48
+ /** Relative paths to subdirectories */
49
+ subdirectories: string[];
50
+ /** Dependency relationships with other directories */
51
+ relationships: {
52
+ /** Directories this one imports from */
53
+ imports: string[];
54
+ /** Directories that import from this one */
55
+ importedBy: string[];
56
+ };
57
+ /** Whether this is a core directory for the module */
58
+ isCore?: boolean;
59
+ }
60
+ /**
61
+ * Index for a top-level module (e.g., rapture, rapture-frontend).
62
+ */
63
+ export interface ModuleIndex {
64
+ /** Module name */
65
+ name: string;
66
+ /** Description of what the module does */
67
+ description: string;
68
+ /** All directories in this module */
69
+ directories: DirectoryIndex[];
70
+ /** Entry point files for the module */
71
+ entryPoints: string[];
72
+ /** Core files that are essential to the module */
73
+ coreFiles: string[];
74
+ /** Technologies and frameworks used */
75
+ technologies?: string[];
76
+ /** Architecture pattern (e.g., "MVC", "Clean Architecture") */
77
+ architecturePattern?: string;
78
+ }
79
+ /**
80
+ * Architecture overview for the entire codebase.
81
+ */
82
+ export interface ArchitectureOverview {
83
+ /** High-level description of the system */
84
+ overview: string;
85
+ /** Architectural layers (e.g., ["presentation", "business", "data"]) */
86
+ layers: string[];
87
+ /** Description of how data flows through the system */
88
+ dataFlow: string;
89
+ /** Technologies used across the codebase */
90
+ technologies: string[];
91
+ /** External integrations and APIs */
92
+ integrations?: string[];
93
+ /** Key architectural decisions or patterns */
94
+ patterns?: string[];
95
+ }
96
+ /**
97
+ * Root manifest for the entire codebase index.
98
+ */
99
+ export interface CodebaseIndex {
100
+ /** Name of the codebase/project */
101
+ name: string;
102
+ /** Generated timestamp */
103
+ generatedAt: string;
104
+ /** Version of the index schema */
105
+ schemaVersion: string;
106
+ /** Top-level modules in the codebase */
107
+ modules: ModuleIndex[];
108
+ /** Overall architecture description */
109
+ architecture: ArchitectureOverview;
110
+ /** Statistics about the codebase */
111
+ stats?: CodebaseStats;
112
+ }
113
+ /**
114
+ * Statistics about the codebase.
115
+ */
116
+ export interface CodebaseStats {
117
+ /** Total number of files */
118
+ totalFiles: number;
119
+ /** Total number of directories */
120
+ totalDirectories: number;
121
+ /** Total lines of code (estimated) */
122
+ totalLines?: number;
123
+ /** Total tokens (estimated) */
124
+ totalTokens?: number;
125
+ /** File counts by extension */
126
+ byExtension: Record<string, number>;
127
+ /** File counts by role */
128
+ byRole: Record<string, number>;
129
+ }
130
+ /**
131
+ * Metadata for a directory tree node.
132
+ */
133
+ export interface DirectoryNode {
134
+ /** Directory name */
135
+ name: string;
136
+ /** Full path */
137
+ path: string;
138
+ /** Files in this directory */
139
+ files: string[];
140
+ /** Child directories */
141
+ subdirs: Record<string, DirectoryNode>;
142
+ }
143
+ /**
144
+ * File metadata used during indexing.
145
+ */
146
+ export interface FileMetadata {
147
+ /** File ID (file:path format) */
148
+ id: string;
149
+ /** Relative path */
150
+ path: string;
151
+ /** File extension */
152
+ extension: string;
153
+ /** File size in bytes */
154
+ size: number;
155
+ /** Estimated token count */
156
+ tokens: number;
157
+ /** Line count */
158
+ lines: number;
159
+ /** Imports found in the file */
160
+ imports: string[];
161
+ /** Exports found in the file */
162
+ exports: string[];
163
+ /** Classes defined in the file */
164
+ classes: string[];
165
+ /** Functions defined in the file */
166
+ functions: string[];
167
+ }
168
+ /**
169
+ * Result from analyzing a batch of directories.
170
+ */
171
+ export interface DirectoryAnalysisResult {
172
+ /** Directory path */
173
+ path: string;
174
+ /** Analysis success */
175
+ success: boolean;
176
+ /** Directory index if successful */
177
+ index?: DirectoryIndex;
178
+ /** Error message if failed */
179
+ error?: string;
180
+ }
181
+ /**
182
+ * Configuration for hierarchical indexing.
183
+ */
184
+ export interface IndexingConfig {
185
+ /** Maximum tokens per LLM call */
186
+ maxTokensPerCall: number;
187
+ /** Maximum parallel batch size */
188
+ maxBatchSize: number;
189
+ /** Directories to skip */
190
+ skipDirectories: string[];
191
+ /** File extensions to include */
192
+ includeExtensions: string[];
193
+ /** Whether to include test files in the index */
194
+ includeTests: boolean;
195
+ /** Whether to include config files in the index */
196
+ includeConfig: boolean;
197
+ /** Output directory for index files */
198
+ outputDir: string;
199
+ /** Whether to generate markdown alongside JSON */
200
+ generateMarkdown: boolean;
201
+ }
202
+ /**
203
+ * Default indexing configuration.
204
+ */
205
+ export declare const DEFAULT_INDEXING_CONFIG: IndexingConfig;
206
+ //# sourceMappingURL=index-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-schema.d.ts","sourceRoot":"","sources":["../../../src/domain/types/index-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Index Schema Types
3
+ *
4
+ * Type definitions for hierarchical codebase indexing output.
5
+ * These schemas define the structure of directory-level and module-level indexes.
6
+ */
7
+ /**
8
+ * Default indexing configuration.
9
+ */
10
+ export const DEFAULT_INDEXING_CONFIG = {
11
+ maxTokensPerCall: 100000,
12
+ maxBatchSize: 10,
13
+ skipDirectories: [
14
+ 'node_modules',
15
+ '.git',
16
+ 'dist',
17
+ 'build',
18
+ '.next',
19
+ '__pycache__',
20
+ '.venv',
21
+ 'venv',
22
+ '.cache',
23
+ 'coverage',
24
+ ],
25
+ includeExtensions: [
26
+ '.ts',
27
+ '.tsx',
28
+ '.js',
29
+ '.jsx',
30
+ '.py',
31
+ '.json',
32
+ '.yaml',
33
+ '.yml',
34
+ '.md',
35
+ ],
36
+ includeTests: true,
37
+ includeConfig: true,
38
+ outputDir: './output',
39
+ generateMarkdown: true,
40
+ };
41
+ //# sourceMappingURL=index-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-schema.js","sourceRoot":"","sources":["../../../src/domain/types/index-schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiSH;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAmB;IACrD,gBAAgB,EAAE,MAAM;IACxB,YAAY,EAAE,EAAE;IAChB,eAAe,EAAE;QACf,cAAc;QACd,MAAM;QACN,MAAM;QACN,OAAO;QACP,OAAO;QACP,aAAa;QACb,OAAO;QACP,MAAM;QACN,QAAQ;QACR,UAAU;KACX;IACD,iBAAiB,EAAE;QACjB,KAAK;QACL,MAAM;QACN,KAAK;QACL,MAAM;QACN,KAAK;QACL,OAAO;QACP,OAAO;QACP,MAAM;QACN,KAAK;KACN;IACD,YAAY,EAAE,IAAI;IAClB,aAAa,EAAE,IAAI;IACnB,SAAS,EAAE,UAAU;IACrB,gBAAgB,EAAE,IAAI;CACvB,CAAC"}
@@ -1,5 +1,7 @@
1
+ export * from '../constants.js';
1
2
  export { type RLMConfig, type RLMConfigInput, type SandboxMode, DEFAULT_CONFIG, createConfig, } from './config.js';
2
3
  export { type ContextMetadata, type ContextSource, type ContextVariable, type ContextInput, type ContextChunk, createContextVariable, } from './context.js';
3
4
  export { type TokenUsage, type ResourceUsage, type ExecutionStep, type ExecutionStepType, type ExecutionStepDetails, type LLMCallDetails, type CodeGenerationDetails, type CodeExecutionDetails, type RecursiveCallDetails, type ResultAggregationDetails, type ExecutionTrace, type RecoveredError, type RecursiveCallResult, type RLMResult, createEmptyUsage, mergeUsage, } from './result.js';
4
5
  export { type SessionStatus, type RLMSession, type SessionState, createSessionState, stateToUsage, } from './session.js';
6
+ export { type FileEntry, type DirectoryPurpose, type DirectoryIndex, type ModuleIndex, type ArchitectureOverview, type CodebaseIndex, type CodebaseStats, type DirectoryNode, type FileMetadata, type DirectoryAnalysisResult, type IndexingConfig, DEFAULT_INDEXING_CONFIG, } from './index-schema.js';
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/types/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,cAAc,EACd,YAAY,GACb,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACd,gBAAgB,EAChB,UAAU,GACX,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,kBAAkB,EAClB,YAAY,GACb,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/types/index.ts"],"names":[],"mappings":"AACA,cAAc,iBAAiB,CAAC;AAGhC,OAAO,EACL,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,cAAc,EACd,YAAY,GACb,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACd,gBAAgB,EAChB,UAAU,GACX,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,kBAAkB,EAClB,YAAY,GACb,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC"}
@@ -1,3 +1,5 @@
1
+ // Constants
2
+ export * from '../constants.js';
1
3
  // Configuration types
2
4
  export { DEFAULT_CONFIG, createConfig, } from './config.js';
3
5
  // Context types
@@ -6,4 +8,6 @@ export { createContextVariable, } from './context.js';
6
8
  export { createEmptyUsage, mergeUsage, } from './result.js';
7
9
  // Session types
8
10
  export { createSessionState, stateToUsage, } from './session.js';
11
+ // Index schema types (hierarchical indexing)
12
+ export { DEFAULT_INDEXING_CONFIG, } from './index-schema.js';
9
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/types/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,OAAO,EAIL,cAAc,EACd,YAAY,GACb,MAAM,aAAa,CAAC;AAErB,gBAAgB;AAChB,OAAO,EAML,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAEtB,eAAe;AACf,OAAO,EAeL,gBAAgB,EAChB,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,gBAAgB;AAChB,OAAO,EAIL,kBAAkB,EAClB,YAAY,GACb,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/types/index.ts"],"names":[],"mappings":"AAAA,YAAY;AACZ,cAAc,iBAAiB,CAAC;AAEhC,sBAAsB;AACtB,OAAO,EAIL,cAAc,EACd,YAAY,GACb,MAAM,aAAa,CAAC;AAErB,gBAAgB;AAChB,OAAO,EAML,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAEtB,eAAe;AACf,OAAO,EAeL,gBAAgB,EAChB,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,gBAAgB;AAChB,OAAO,EAIL,kBAAkB,EAClB,YAAY,GACb,MAAM,cAAc,CAAC;AAEtB,6CAA6C;AAC7C,OAAO,EAYL,uBAAuB,GACxB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Timer utility for tracking execution duration
3
+ *
4
+ * Replaces the duplicated pattern:
5
+ * const startedAt = new Date();
6
+ * // ... work ...
7
+ * const completedAt = new Date();
8
+ * const durationMs = completedAt.getTime() - startedAt.getTime();
9
+ */
10
+ export declare class Timer {
11
+ private readonly startTime;
12
+ constructor();
13
+ /**
14
+ * Get the start time
15
+ */
16
+ get startedAt(): Date;
17
+ /**
18
+ * Complete the timer and get elapsed time details
19
+ */
20
+ elapsed(): TimerResult;
21
+ /**
22
+ * Get elapsed milliseconds without completing the timer
23
+ */
24
+ elapsedMs(): number;
25
+ }
26
+ /**
27
+ * Result of a timer completion
28
+ */
29
+ export interface TimerResult {
30
+ readonly startedAt: Date;
31
+ readonly completedAt: Date;
32
+ readonly durationMs: number;
33
+ }
34
+ //# sourceMappingURL=timer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timer.d.ts","sourceRoot":"","sources":["../../../src/domain/utils/timer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAO;;IAMjC;;OAEG;IACH,IAAI,SAAS,IAAI,IAAI,CAEpB;IAED;;OAEG;IACH,OAAO,IAAI,WAAW;IAStB;;OAEG;IACH,SAAS,IAAI,MAAM;CAGpB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Timer utility for tracking execution duration
3
+ *
4
+ * Replaces the duplicated pattern:
5
+ * const startedAt = new Date();
6
+ * // ... work ...
7
+ * const completedAt = new Date();
8
+ * const durationMs = completedAt.getTime() - startedAt.getTime();
9
+ */
10
+ export class Timer {
11
+ startTime;
12
+ constructor() {
13
+ this.startTime = new Date();
14
+ }
15
+ /**
16
+ * Get the start time
17
+ */
18
+ get startedAt() {
19
+ return this.startTime;
20
+ }
21
+ /**
22
+ * Complete the timer and get elapsed time details
23
+ */
24
+ elapsed() {
25
+ const completedAt = new Date();
26
+ return {
27
+ startedAt: this.startTime,
28
+ completedAt,
29
+ durationMs: completedAt.getTime() - this.startTime.getTime(),
30
+ };
31
+ }
32
+ /**
33
+ * Get elapsed milliseconds without completing the timer
34
+ */
35
+ elapsedMs() {
36
+ return Date.now() - this.startTime.getTime();
37
+ }
38
+ }
39
+ //# sourceMappingURL=timer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timer.js","sourceRoot":"","sources":["../../../src/domain/utils/timer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,OAAO,KAAK;IACC,SAAS,CAAO;IAEjC;QACE,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;QAC/B,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW;YACX,UAAU,EAAE,WAAW,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;SAC7D,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC/C,CAAC;CACF"}
@@ -1,5 +1,6 @@
1
1
  import type { EventEmitter } from 'node:events';
2
2
  import type { RLMConfigInput } from '../domain/types/config.js';
3
+ import type { ILLMProvider } from '../domain/interfaces/llm-provider.js';
3
4
  import type { ISessionStore } from '../domain/interfaces/session-store.js';
4
5
  import type { IEventEmitter } from '../domain/interfaces/event-emitter.js';
5
6
  import { RLMService } from '../application/rlm-service.js';
@@ -8,10 +9,25 @@ import { RLMService } from '../application/rlm-service.js';
8
9
  */
9
10
  export interface CreateRLMOptions {
10
11
  /**
11
- * OpenRouter API key
12
- * If not provided, will look for OPENROUTER_API_KEY environment variable
12
+ * Custom LLM provider implementation.
13
+ * When provided, apiKey/baseUrl/siteUrl/siteName are ignored.
14
+ * The provider must implement the ILLMProvider interface.
15
+ */
16
+ readonly llmProvider?: ILLMProvider;
17
+ /**
18
+ * API key for the LLM provider.
19
+ * Resolution order: this option > RLM_API_KEY env > OPENROUTER_API_KEY env.
20
+ * Only required when no custom llmProvider is provided.
13
21
  */
14
22
  readonly apiKey?: string;
23
+ /**
24
+ * Base URL for the OpenAI-compatible API.
25
+ * Only used when no custom llmProvider is provided.
26
+ * @default 'https://openrouter.ai/api/v1'
27
+ * @example 'https://api.together.xyz/v1'
28
+ * @example 'http://localhost:11434/v1'
29
+ */
30
+ readonly baseUrl?: string;
15
31
  /**
16
32
  * LLM model to use
17
33
  * @default 'anthropic/claude-sonnet-4'
@@ -42,11 +58,13 @@ export interface CreateRLMOptions {
42
58
  */
43
59
  readonly includeEnv?: boolean;
44
60
  /**
45
- * Site URL for OpenRouter analytics
61
+ * Site URL for OpenRouter analytics.
62
+ * Only sent when using the default OpenRouter provider.
46
63
  */
47
64
  readonly siteUrl?: string;
48
65
  /**
49
- * Site name for OpenRouter analytics
66
+ * Site name for OpenRouter analytics.
67
+ * Only sent when using the default OpenRouter provider.
50
68
  */
51
69
  readonly siteName?: string;
52
70
  }
@@ -55,12 +73,11 @@ export interface CreateRLMOptions {
55
73
  *
56
74
  * This is the main entry point for using RLM.
57
75
  *
58
- * @example
76
+ * @example Basic usage (reads RLM_API_KEY or OPENROUTER_API_KEY from env)
59
77
  * ```typescript
60
78
  * import { createRLM } from '@cloudwarriors-ai/rlm';
61
79
  *
62
80
  * const rlm = createRLM({
63
- * apiKey: process.env.OPENROUTER_API_KEY,
64
81
  * model: 'anthropic/claude-sonnet-4',
65
82
  * });
66
83
  *
@@ -72,6 +89,22 @@ export interface CreateRLMOptions {
72
89
  * console.log(result.answer);
73
90
  * console.log(`Cost: $${result.usage.costUsd.toFixed(4)}`);
74
91
  * ```
92
+ *
93
+ * @example Using a different provider (Together, Groq, Ollama, etc.)
94
+ * ```typescript
95
+ * const rlm = createRLM({
96
+ * apiKey: process.env.TOGETHER_API_KEY,
97
+ * baseUrl: 'https://api.together.xyz/v1',
98
+ * model: 'meta-llama/Llama-3-70b-chat-hf',
99
+ * });
100
+ * ```
101
+ *
102
+ * @example Bring your own LLM provider
103
+ * ```typescript
104
+ * const rlm = createRLM({
105
+ * llmProvider: new MyCustomProvider(),
106
+ * });
107
+ * ```
75
108
  */
76
109
  export declare function createRLM(options?: CreateRLMOptions): RLMService;
77
110
  //# sourceMappingURL=create-rlm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-rlm.d.ts","sourceRoot":"","sources":["../../src/factory/create-rlm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAQ3D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IAEjC;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC;IAEtC;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC;IAEtC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;IAEjC;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,UAAU,CA4DpE"}
1
+ {"version":3,"file":"create-rlm.d.ts","sourceRoot":"","sources":["../../src/factory/create-rlm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAQ3D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC;IAEpC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IAEjC;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC;IAEtC;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC;IAEtC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;IAEjC;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,UAAU,CAwEpE"}