@mcp-abap-adt/llm-agent-libs 29.0.0 → 30.1.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 (108) hide show
  1. package/README.md +1 -1
  2. package/dist/adapters/llm-adapter.d.ts.map +1 -1
  3. package/dist/adapters/llm-adapter.js +1 -14
  4. package/dist/adapters/llm-adapter.js.map +1 -1
  5. package/dist/adapters/usage-logging-decision-model.d.ts +7 -0
  6. package/dist/adapters/usage-logging-decision-model.d.ts.map +1 -0
  7. package/dist/adapters/usage-logging-decision-model.js +43 -0
  8. package/dist/adapters/usage-logging-decision-model.js.map +1 -0
  9. package/dist/agent/rag-orchestrator-types.d.ts +2 -2
  10. package/dist/agent/rag-orchestrator-types.d.ts.map +1 -1
  11. package/dist/agent.d.ts +2 -2
  12. package/dist/agent.d.ts.map +1 -1
  13. package/dist/agent.js +8 -23
  14. package/dist/agent.js.map +1 -1
  15. package/dist/builder.d.ts +51 -6
  16. package/dist/builder.d.ts.map +1 -1
  17. package/dist/builder.js +115 -31
  18. package/dist/builder.js.map +1 -1
  19. package/dist/classifier/llm-classifier.d.ts.map +1 -1
  20. package/dist/classifier/llm-classifier.js +1 -14
  21. package/dist/classifier/llm-classifier.js.map +1 -1
  22. package/dist/health/health-checker.d.ts +2 -1
  23. package/dist/health/health-checker.d.ts.map +1 -1
  24. package/dist/health/health-checker.js +6 -4
  25. package/dist/health/health-checker.js.map +1 -1
  26. package/dist/index.d.ts +3 -0
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +6 -0
  29. package/dist/index.js.map +1 -1
  30. package/dist/interfaces/pipeline.d.ts +10 -2
  31. package/dist/interfaces/pipeline.d.ts.map +1 -1
  32. package/dist/logger/default-request-logger.d.ts.map +1 -1
  33. package/dist/logger/default-request-logger.js +2 -0
  34. package/dist/logger/default-request-logger.js.map +1 -1
  35. package/dist/mcp/vectorize-mcp-tools.d.ts.map +1 -1
  36. package/dist/mcp/vectorize-mcp-tools.js +4 -4
  37. package/dist/mcp/vectorize-mcp-tools.js.map +1 -1
  38. package/dist/pipeline/context.d.ts +8 -2
  39. package/dist/pipeline/context.d.ts.map +1 -1
  40. package/dist/pipeline/default-pipeline.d.ts +1 -0
  41. package/dist/pipeline/default-pipeline.d.ts.map +1 -1
  42. package/dist/pipeline/default-pipeline.js +33 -8
  43. package/dist/pipeline/default-pipeline.js.map +1 -1
  44. package/dist/pipeline/handlers/history-upsert.js +1 -1
  45. package/dist/pipeline/handlers/history-upsert.js.map +1 -1
  46. package/dist/pipeline/handlers/rerank.d.ts +7 -2
  47. package/dist/pipeline/handlers/rerank.d.ts.map +1 -1
  48. package/dist/pipeline/handlers/rerank.js +21 -2
  49. package/dist/pipeline/handlers/rerank.js.map +1 -1
  50. package/dist/pipeline/handlers/tool-loop-core.d.ts.map +1 -1
  51. package/dist/pipeline/handlers/tool-loop-core.js +19 -5
  52. package/dist/pipeline/handlers/tool-loop-core.js.map +1 -1
  53. package/dist/pipeline/handlers/tool-loop.d.ts.map +1 -1
  54. package/dist/pipeline/handlers/tool-loop.js +1 -0
  55. package/dist/pipeline/handlers/tool-loop.js.map +1 -1
  56. package/dist/reranker/decision-reranker.d.ts +50 -0
  57. package/dist/reranker/decision-reranker.d.ts.map +1 -0
  58. package/dist/reranker/decision-reranker.js +110 -0
  59. package/dist/reranker/decision-reranker.js.map +1 -0
  60. package/dist/reranker/index.d.ts +1 -0
  61. package/dist/reranker/index.d.ts.map +1 -1
  62. package/dist/reranker/index.js +1 -0
  63. package/dist/reranker/index.js.map +1 -1
  64. package/dist/reranker/llm-reranker.d.ts +18 -2
  65. package/dist/reranker/llm-reranker.d.ts.map +1 -1
  66. package/dist/reranker/llm-reranker.js +125 -26
  67. package/dist/reranker/llm-reranker.js.map +1 -1
  68. package/dist/resilience/rate-limiter-llm.d.ts +3 -2
  69. package/dist/resilience/rate-limiter-llm.d.ts.map +1 -1
  70. package/dist/resilience/rate-limiter-llm.js +3 -2
  71. package/dist/resilience/rate-limiter-llm.js.map +1 -1
  72. package/dist/resilience/retry-llm.d.ts +18 -3
  73. package/dist/resilience/retry-llm.d.ts.map +1 -1
  74. package/dist/resilience/retry-llm.js +37 -15
  75. package/dist/resilience/retry-llm.js.map +1 -1
  76. package/dist/retrieval/embedding-retrieval.d.ts +7 -0
  77. package/dist/retrieval/embedding-retrieval.d.ts.map +1 -0
  78. package/dist/retrieval/embedding-retrieval.js +8 -0
  79. package/dist/retrieval/embedding-retrieval.js.map +1 -0
  80. package/dist/retrieval/index.d.ts +4 -0
  81. package/dist/retrieval/index.d.ts.map +1 -0
  82. package/dist/retrieval/index.js +4 -0
  83. package/dist/retrieval/index.js.map +1 -0
  84. package/dist/retrieval/reranked-retrieval.d.ts +28 -0
  85. package/dist/retrieval/reranked-retrieval.d.ts.map +1 -0
  86. package/dist/retrieval/reranked-retrieval.js +65 -0
  87. package/dist/retrieval/reranked-retrieval.js.map +1 -0
  88. package/dist/retrieval/strategy-rag.d.ts +29 -0
  89. package/dist/retrieval/strategy-rag.d.ts.map +1 -0
  90. package/dist/retrieval/strategy-rag.js +65 -0
  91. package/dist/retrieval/strategy-rag.js.map +1 -0
  92. package/dist/skills/plugin-host/compatible-skills-rag.d.ts +3 -2
  93. package/dist/skills/plugin-host/compatible-skills-rag.d.ts.map +1 -1
  94. package/dist/skills/plugin-host/compatible-skills-rag.js +2 -2
  95. package/dist/skills/plugin-host/compatible-skills-rag.js.map +1 -1
  96. package/dist/skills/plugin-host/skill-plugin-host.d.ts +5 -4
  97. package/dist/skills/plugin-host/skill-plugin-host.d.ts.map +1 -1
  98. package/dist/skills/plugin-host/skill-plugin-host.js +1 -1
  99. package/dist/skills/plugin-host/skill-plugin-host.js.map +1 -1
  100. package/dist/util/assert-positive-integer.d.ts +7 -0
  101. package/dist/util/assert-positive-integer.d.ts.map +1 -0
  102. package/dist/util/assert-positive-integer.js +11 -0
  103. package/dist/util/assert-positive-integer.js.map +1 -0
  104. package/dist/utils/with-abort.d.ts +8 -0
  105. package/dist/utils/with-abort.d.ts.map +1 -0
  106. package/dist/utils/with-abort.js +21 -0
  107. package/dist/utils/with-abort.js.map +1 -0
  108. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"llm-reranker.js","sourceRoot":"","sources":["../../src/reranker/llm-reranker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llm-reranker.js","sourceRoot":"","sources":["../../src/reranker/llm-reranker.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * RateLimiterLlm — ILlm decorator that throttles outbound requests.
3
3
  *
4
- * Composition order: RateLimiterLlm → RetryLlm → CircuitBreakerLlm → LlmAdapter
5
- * Rate limiter sits outermost so that retry attempts also respect the limit.
4
+ * Composition order: RateLimiterLlm → CircuitBreakerLlm → RetryLlm → LlmAdapter
5
+ * Rate limiter sits outermost: it takes one permit per outer call, so retry
6
+ * attempts below it are not counted against the window.
6
7
  */
7
8
  import type { CallOptions, ILlm, ILlmRateLimiter, LlmError, LlmResponse, LlmStreamChunk, LlmTool, Message, Result } from '@mcp-abap-adt/llm-agent';
8
9
  export declare class RateLimiterLlm implements ILlm {
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limiter-llm.d.ts","sourceRoot":"","sources":["../../src/resilience/rate-limiter-llm.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,IAAI,EACJ,eAAe,EACf,QAAQ,EACR,WAAW,EACX,cAAc,EACd,OAAO,EACP,OAAO,EACP,MAAM,EACP,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,cAAe,YAAW,IAAI;IAIvC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJ1B,WAAW,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;gBAGf,KAAK,EAAE,IAAI,EACX,OAAO,EAAE,eAAe;IAO3C,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAE9B;IAEK,IAAI,CACR,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,CAAC,EAAE,OAAO,EAAE,EACjB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAKlC,UAAU,CACf,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,CAAC,EAAE,OAAO,EAAE,EACjB,OAAO,CAAC,EAAE,WAAW,GACpB,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;CAInD"}
1
+ {"version":3,"file":"rate-limiter-llm.d.ts","sourceRoot":"","sources":["../../src/resilience/rate-limiter-llm.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,IAAI,EACJ,eAAe,EACf,QAAQ,EACR,WAAW,EACX,cAAc,EACd,OAAO,EACP,OAAO,EACP,MAAM,EACP,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,cAAe,YAAW,IAAI;IAIvC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJ1B,WAAW,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;gBAGf,KAAK,EAAE,IAAI,EACX,OAAO,EAAE,eAAe;IAO3C,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAE9B;IAEK,IAAI,CACR,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,CAAC,EAAE,OAAO,EAAE,EACjB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAKlC,UAAU,CACf,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,CAAC,EAAE,OAAO,EAAE,EACjB,OAAO,CAAC,EAAE,WAAW,GACpB,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;CAInD"}
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * RateLimiterLlm — ILlm decorator that throttles outbound requests.
3
3
  *
4
- * Composition order: RateLimiterLlm → RetryLlm → CircuitBreakerLlm → LlmAdapter
5
- * Rate limiter sits outermost so that retry attempts also respect the limit.
4
+ * Composition order: RateLimiterLlm → CircuitBreakerLlm → RetryLlm → LlmAdapter
5
+ * Rate limiter sits outermost: it takes one permit per outer call, so retry
6
+ * attempts below it are not counted against the window.
6
7
  */
7
8
  export class RateLimiterLlm {
8
9
  inner;
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limiter-llm.js","sourceRoot":"","sources":["../../src/resilience/rate-limiter-llm.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,MAAM,OAAO,cAAc;IAIN;IACA;IAJnB,WAAW,CAAuB;IAElC,YACmB,KAAW,EACX,OAAwB;QADxB,UAAK,GAAL,KAAK,CAAM;QACX,YAAO,GAAP,OAAO,CAAiB;QAEzC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,IAAI,CACR,QAAmB,EACnB,KAAiB,EACjB,OAAqB;QAErB,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,CAAC,UAAU,CACf,QAAmB,EACnB,KAAiB,EACjB,OAAqB;QAErB,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;CACF"}
1
+ {"version":3,"file":"rate-limiter-llm.js","sourceRoot":"","sources":["../../src/resilience/rate-limiter-llm.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAcH,MAAM,OAAO,cAAc;IAIN;IACA;IAJnB,WAAW,CAAuB;IAElC,YACmB,KAAW,EACX,OAAwB;QADxB,UAAK,GAAL,KAAK,CAAM;QACX,YAAO,GAAP,OAAO,CAAiB;QAEzC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,IAAI,CACR,QAAmB,EACnB,KAAiB,EACjB,OAAqB;QAErB,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,CAAC,UAAU,CACf,QAAmB,EACnB,KAAiB,EACjB,OAAqB;QAErB,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;CACF"}
@@ -1,9 +1,10 @@
1
1
  /**
2
2
  * RetryLlm — ILlm decorator that retries transient failures with exponential backoff.
3
3
  *
4
- * Composition order: RetryLlm → CircuitBreakerLlm → LlmAdapter
5
- * Retry sits outside the circuit breaker so that retry attempts are not
6
- * counted as separate failures.
4
+ * Composition order: CircuitBreakerLlm → RetryLlm → LlmAdapter
5
+ * Retry sits INSIDE the circuit breaker, so the breaker records one result per
6
+ * logical call (after the retries), not one per attempt. A rate limiter, when
7
+ * used, sits outermost.
7
8
  */
8
9
  import type { ILlm, Message } from '@mcp-abap-adt/llm-agent';
9
10
  import { type CallOptions, LlmError, type LlmResponse, type LlmStreamChunk, type LlmTool, type Result } from '@mcp-abap-adt/llm-agent';
@@ -19,14 +20,28 @@ export interface RetryOptions {
19
20
  }
20
21
  export declare class RetryLlm implements ILlm {
21
22
  private readonly inner;
23
+ private readonly wait;
22
24
  private readonly opts;
23
25
  healthCheck?: ILlm['healthCheck'];
24
26
  constructor(inner: ILlm, options?: Partial<RetryOptions>);
25
27
  get model(): string | undefined;
26
28
  chat(messages: Message[], tools?: LlmTool[], options?: CallOptions): Promise<Result<LlmResponse, LlmError>>;
27
29
  streamChat(messages: Message[], tools?: LlmTool[], options?: CallOptions): AsyncIterable<Result<LlmStreamChunk, LlmError>>;
30
+ /**
31
+ * One attempt's stream, with a thrown exception (before or during iteration)
32
+ * turned into an error chunk — the same shape CircuitBreakerLlm gives it — so
33
+ * a throwing provider goes through the same retry rules as an error chunk.
34
+ */
35
+ private attemptStream;
28
36
  private isRetryable;
29
37
  private isMidStreamRetryable;
30
38
  private backoff;
31
39
  }
40
+ /**
41
+ * Wraps `llm` in a RetryLlm placed UNDER any CircuitBreakerLlm layers it
42
+ * already has: each breaker wrapper is rebuilt on its own (possibly shared)
43
+ * breaker around the retry, so every breaker counts one result per logical
44
+ * call. Without a breaker this is plain `new RetryLlm(llm, options)`.
45
+ */
46
+ export declare function retryInsideBreakers(llm: ILlm, options?: Partial<RetryOptions>): ILlm;
32
47
  //# sourceMappingURL=retry-llm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"retry-llm.d.ts","sourceRoot":"","sources":["../../src/resilience/retry-llm.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EACL,KAAK,WAAW,EAGhB,QAAQ,EACR,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,OAAO,EACZ,KAAK,MAAM,EACZ,MAAM,yBAAyB,CAAC;AAEjC,MAAM,WAAW,YAAY;IAC3B,oFAAoF;IACpF,WAAW,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,sGAAsG;IACtG,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AASD,qBAAa,QAAS,YAAW,IAAI;IAKjC,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAe;IACpC,WAAW,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;gBAGf,KAAK,EAAE,IAAI,EAC5B,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;IAQjC,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAE9B;IAEK,IAAI,CACR,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,CAAC,EAAE,OAAO,EAAE,EACjB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAoBlC,UAAU,CACf,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,CAAC,EAAE,OAAO,EAAE,EACjB,OAAO,CAAC,EAAE,WAAW,GACpB,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAqDlD,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,OAAO;CAchB"}
1
+ {"version":3,"file":"retry-llm.d.ts","sourceRoot":"","sources":["../../src/resilience/retry-llm.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EACL,KAAK,WAAW,EAMhB,QAAQ,EACR,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,OAAO,EACZ,KAAK,MAAM,EACZ,MAAM,yBAAyB,CAAC;AAEjC,MAAM,WAAW,YAAY;IAC3B,oFAAoF;IACpF,WAAW,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,sGAAsG;IACtG,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AASD,qBAAa,QAAS,YAAW,IAAI;IAMjC,OAAO,CAAC,QAAQ,CAAC,KAAK;IALxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA6B;IAClD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAe;IACpC,WAAW,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;gBAGf,KAAK,EAAE,IAAI,EAC5B,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;IAQjC,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAE9B;IAEK,IAAI,CACR,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,CAAC,EAAE,OAAO,EAAE,EACjB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAoBlC,UAAU,CACf,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,CAAC,EAAE,OAAO,EAAE,EACjB,OAAO,CAAC,EAAE,WAAW,GACpB,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAoDlD;;;;OAIG;YACY,aAAa;IAY5B,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,oBAAoB;YAMd,OAAO;CAGtB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,IAAI,EACT,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAC9B,IAAI,CAQN"}
@@ -1,11 +1,12 @@
1
1
  /**
2
2
  * RetryLlm — ILlm decorator that retries transient failures with exponential backoff.
3
3
  *
4
- * Composition order: RetryLlm → CircuitBreakerLlm → LlmAdapter
5
- * Retry sits outside the circuit breaker so that retry attempts are not
6
- * counted as separate failures.
4
+ * Composition order: CircuitBreakerLlm → RetryLlm → LlmAdapter
5
+ * Retry sits INSIDE the circuit breaker, so the breaker records one result per
6
+ * logical call (after the retries), not one per attempt. A rate limiter, when
7
+ * used, sits outermost.
7
8
  */
8
- import { findThrottled, isRetryableStatus, LlmError, } from '@mcp-abap-adt/llm-agent';
9
+ import { CircuitBreakerLlm, DefaultWaitStrategy, findThrottled, isCallerCancellation, isRetryableStatus, LlmError, } from '@mcp-abap-adt/llm-agent';
9
10
  const DEFAULT_OPTIONS = {
10
11
  maxAttempts: 3,
11
12
  backoffMs: 2000,
@@ -14,6 +15,7 @@ const DEFAULT_OPTIONS = {
14
15
  };
15
16
  export class RetryLlm {
16
17
  inner;
18
+ wait = new DefaultWaitStrategy();
17
19
  opts;
18
20
  healthCheck;
19
21
  constructor(inner, options) {
@@ -48,13 +50,15 @@ export class RetryLlm {
48
50
  }
49
51
  let chunksYielded = 0;
50
52
  let shouldRetry = false;
51
- for await (const chunk of this.inner.streamChat(messages, tools, options)) {
53
+ for await (const chunk of this.attemptStream(messages, tools, options)) {
52
54
  if (chunk.ok) {
53
55
  chunksYielded++;
54
56
  yield chunk;
55
57
  }
56
58
  else {
57
- const canRetry = attempt < this.opts.maxAttempts;
59
+ // A caller's cancellation is never retried.
60
+ const canRetry = attempt < this.opts.maxAttempts &&
61
+ !isCallerCancellation(options?.signal);
58
62
  // Pre-stream failure: retry on HTTP status codes (existing behavior)
59
63
  if (chunksYielded === 0 &&
60
64
  canRetry &&
@@ -79,6 +83,19 @@ export class RetryLlm {
79
83
  await this.backoff(attempt, options?.signal);
80
84
  }
81
85
  }
86
+ /**
87
+ * One attempt's stream, with a thrown exception (before or during iteration)
88
+ * turned into an error chunk — the same shape CircuitBreakerLlm gives it — so
89
+ * a throwing provider goes through the same retry rules as an error chunk.
90
+ */
91
+ async *attemptStream(messages, tools, options) {
92
+ try {
93
+ yield* this.inner.streamChat(messages, tools, options);
94
+ }
95
+ catch (err) {
96
+ yield { ok: false, error: new LlmError(String(err), 'LLM_ERROR') };
97
+ }
98
+ }
82
99
  isRetryable(error) {
83
100
  // A provider that runs its own rate-limit policy marks the error when that
84
101
  // policy is spent — it has already backed off, honoured Retry-After and
@@ -97,15 +114,20 @@ export class RetryLlm {
97
114
  const msg = error.message;
98
115
  return this.opts.retryOnMidStream.some((sub) => msg.includes(sub));
99
116
  }
100
- backoff(attempt, signal) {
101
- const delay = this.opts.backoffMs * 2 ** attempt;
102
- return new Promise((resolve) => {
103
- const timer = setTimeout(resolve, delay);
104
- signal?.addEventListener('abort', () => {
105
- clearTimeout(timer);
106
- resolve();
107
- }, { once: true });
108
- });
117
+ async backoff(attempt, signal) {
118
+ await this.wait.wait(this.opts.backoffMs * 2 ** attempt, signal);
119
+ }
120
+ }
121
+ /**
122
+ * Wraps `llm` in a RetryLlm placed UNDER any CircuitBreakerLlm layers it
123
+ * already has: each breaker wrapper is rebuilt on its own (possibly shared)
124
+ * breaker around the retry, so every breaker counts one result per logical
125
+ * call. Without a breaker this is plain `new RetryLlm(llm, options)`.
126
+ */
127
+ export function retryInsideBreakers(llm, options) {
128
+ if (llm instanceof CircuitBreakerLlm) {
129
+ return new CircuitBreakerLlm(retryInsideBreakers(llm.inner, options), llm.breaker);
109
130
  }
131
+ return new RetryLlm(llm, options);
110
132
  }
111
133
  //# sourceMappingURL=retry-llm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"retry-llm.js","sourceRoot":"","sources":["../../src/resilience/retry-llm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retry-llm.js","sourceRoot":"","sources":["../../src/resilience/retry-llm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { CallOptions, IQueryEmbedding, IRag, IRetrievalStrategy, RagError, RagResult, Result } from '@mcp-abap-adt/llm-agent';
2
+ /** Today's behaviour: the store's own (embedding) ranking. */
3
+ export declare class EmbeddingRetrieval implements IRetrievalStrategy {
4
+ readonly name = "embedding";
5
+ retrieve(store: IRag, query: IQueryEmbedding, k: number, options?: CallOptions): Promise<Result<RagResult[], RagError>>;
6
+ }
7
+ //# sourceMappingURL=embedding-retrieval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding-retrieval.d.ts","sourceRoot":"","sources":["../../src/retrieval/embedding-retrieval.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,IAAI,EACJ,kBAAkB,EAClB,QAAQ,EACR,SAAS,EACT,MAAM,EACP,MAAM,yBAAyB,CAAC;AAEjC,8DAA8D;AAC9D,qBAAa,kBAAmB,YAAW,kBAAkB;IAC3D,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CACN,KAAK,EAAE,IAAI,EACX,KAAK,EAAE,eAAe,EACtB,CAAC,EAAE,MAAM,EACT,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,CAAC,CAAC;CAG1C"}
@@ -0,0 +1,8 @@
1
+ /** Today's behaviour: the store's own (embedding) ranking. */
2
+ export class EmbeddingRetrieval {
3
+ name = 'embedding';
4
+ retrieve(store, query, k, options) {
5
+ return store.query(query, k, options);
6
+ }
7
+ }
8
+ //# sourceMappingURL=embedding-retrieval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding-retrieval.js","sourceRoot":"","sources":["../../src/retrieval/embedding-retrieval.ts"],"names":[],"mappings":"AAUA,8DAA8D;AAC9D,MAAM,OAAO,kBAAkB;IACpB,IAAI,GAAG,WAAW,CAAC;IAC5B,QAAQ,CACN,KAAW,EACX,KAAsB,EACtB,CAAS,EACT,OAAqB;QAErB,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ export { EmbeddingRetrieval } from './embedding-retrieval.js';
2
+ export { RerankAllRetrieval, RerankedRetrieval, } from './reranked-retrieval.js';
3
+ export { applyRetrievalStrategy, hasRetrievalStrategy, StrategyRag, } from './strategy-rag.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/retrieval/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EACL,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,WAAW,GACZ,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { EmbeddingRetrieval } from './embedding-retrieval.js';
2
+ export { RerankAllRetrieval, RerankedRetrieval, } from './reranked-retrieval.js';
3
+ export { applyRetrievalStrategy, hasRetrievalStrategy, StrategyRag, } from './strategy-rag.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/retrieval/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EACL,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,WAAW,GACZ,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { CallOptions, IQueryEmbedding, IRag, IReranker, IRetrievalStrategy, RagError, RagResult, Result } from '@mcp-abap-adt/llm-agent';
2
+ /** Embedding top (k × overfetch) → rerank → top-k. */
3
+ export declare class RerankedRetrieval implements IRetrievalStrategy {
4
+ private readonly reranker;
5
+ private readonly opts;
6
+ readonly name = "rerank";
7
+ private readonly overfetch;
8
+ constructor(reranker: IReranker, opts?: {
9
+ overfetch?: number;
10
+ storeName?: string;
11
+ });
12
+ retrieve(store: IRag, query: IQueryEmbedding, k: number, options?: CallOptions): Promise<Result<RagResult[], RagError>>;
13
+ }
14
+ /**
15
+ * The store's first `maxCandidates` (configured, never assumed) → rerank all → top-k.
16
+ * Fetches at least `k`, so a `maxCandidates` below `k` never shrinks the result.
17
+ */
18
+ export declare class RerankAllRetrieval implements IRetrievalStrategy {
19
+ private readonly reranker;
20
+ private readonly opts;
21
+ readonly name = "rerank-all";
22
+ constructor(reranker: IReranker, opts: {
23
+ maxCandidates: number;
24
+ storeName?: string;
25
+ });
26
+ retrieve(store: IRag, query: IQueryEmbedding, k: number, options?: CallOptions): Promise<Result<RagResult[], RagError>>;
27
+ }
28
+ //# sourceMappingURL=reranked-retrieval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reranked-retrieval.d.ts","sourceRoot":"","sources":["../../src/retrieval/reranked-retrieval.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,IAAI,EACJ,SAAS,EACT,kBAAkB,EAClB,QAAQ,EACR,SAAS,EACT,MAAM,EACP,MAAM,yBAAyB,CAAC;AAmCjC,sDAAsD;AACtD,qBAAa,iBAAkB,YAAW,kBAAkB;IAKxD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI;IALvB,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAGhB,QAAQ,EAAE,SAAS,EACnB,IAAI,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO;IAMlE,QAAQ,CACZ,KAAK,EAAE,IAAI,EACX,KAAK,EAAE,eAAe,EACtB,CAAC,EAAE,MAAM,EACT,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,CAAC,CAAC;CAa1C;AAED;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,kBAAkB;IAIzD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJvB,QAAQ,CAAC,IAAI,gBAAgB;gBAGV,QAAQ,EAAE,SAAS,EACnB,IAAI,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;IAShE,QAAQ,CACZ,KAAK,EAAE,IAAI,EACX,KAAK,EAAE,eAAe,EACtB,CAAC,EAAE,MAAM,EACT,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,CAAC,CAAC;CAiB1C"}
@@ -0,0 +1,65 @@
1
+ import { assertPositiveInteger } from '../util/assert-positive-integer.js';
2
+ /** Cap on a thrown error's text in the step: enough for a reason, never a dump. */
3
+ const MAX_THROWN_MESSAGE = 500;
4
+ async function rerankOrFallback(name, storeName, reranker, query, candidates, k, options) {
5
+ let code;
6
+ let message;
7
+ try {
8
+ const r = await reranker.rerank(query.text, candidates, options);
9
+ if (r.ok)
10
+ return { ok: true, value: r.value.slice(0, k) };
11
+ code = r.error.code;
12
+ message = r.error.message;
13
+ }
14
+ catch (err) {
15
+ code = 'RERANK_THROWN';
16
+ message = String(err).slice(0, MAX_THROWN_MESSAGE);
17
+ }
18
+ options?.sessionLogger?.logStep('retrieval_rerank_error', {
19
+ store: storeName,
20
+ strategy: name,
21
+ code,
22
+ message,
23
+ });
24
+ return { ok: true, value: candidates.slice(0, k) };
25
+ }
26
+ /** Embedding top (k × overfetch) → rerank → top-k. */
27
+ export class RerankedRetrieval {
28
+ reranker;
29
+ opts;
30
+ name = 'rerank';
31
+ overfetch;
32
+ constructor(reranker, opts = {}) {
33
+ this.reranker = reranker;
34
+ this.opts = opts;
35
+ this.overfetch = opts.overfetch ?? 2;
36
+ assertPositiveInteger('RerankedRetrieval', 'overfetch', this.overfetch);
37
+ }
38
+ async retrieve(store, query, k, options) {
39
+ const cand = await store.query(query, k * this.overfetch, options);
40
+ if (!cand.ok)
41
+ return cand;
42
+ return rerankOrFallback(this.name, this.opts.storeName, this.reranker, query, cand.value, k, options);
43
+ }
44
+ }
45
+ /**
46
+ * The store's first `maxCandidates` (configured, never assumed) → rerank all → top-k.
47
+ * Fetches at least `k`, so a `maxCandidates` below `k` never shrinks the result.
48
+ */
49
+ export class RerankAllRetrieval {
50
+ reranker;
51
+ opts;
52
+ name = 'rerank-all';
53
+ constructor(reranker, opts) {
54
+ this.reranker = reranker;
55
+ this.opts = opts;
56
+ assertPositiveInteger('RerankAllRetrieval', 'maxCandidates', opts.maxCandidates);
57
+ }
58
+ async retrieve(store, query, k, options) {
59
+ const cand = await store.query(query, Math.max(k, this.opts.maxCandidates), options);
60
+ if (!cand.ok)
61
+ return cand;
62
+ return rerankOrFallback(this.name, this.opts.storeName, this.reranker, query, cand.value, k, options);
63
+ }
64
+ }
65
+ //# sourceMappingURL=reranked-retrieval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reranked-retrieval.js","sourceRoot":"","sources":["../../src/retrieval/reranked-retrieval.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { type CallOptions, type IQueryEmbedding, type IRag, type IRagBackendWriter, type IRagDecorator, type IRetrievalStrategy, type RagError, type RagResult, type Result } from '@mcp-abap-adt/llm-agent';
2
+ declare const BRAND: unique symbol;
3
+ /** IRag decorator: `query` goes through the strategy, everything else to `inner` (spec §13.3). */
4
+ export declare class StrategyRag implements IRag, IRagDecorator {
5
+ readonly inner: IRag;
6
+ readonly strategy: IRetrievalStrategy;
7
+ readonly [BRAND] = true;
8
+ constructor(inner: IRag, strategy: IRetrievalStrategy);
9
+ query(embedding: IQueryEmbedding, k: number, options?: CallOptions): Promise<Result<RagResult[], RagError>>;
10
+ healthCheck(options?: CallOptions): Promise<Result<void, RagError>>;
11
+ getById(id: string, options?: CallOptions): Promise<Result<RagResult | null, RagError>>;
12
+ writer(): IRagBackendWriter | undefined;
13
+ }
14
+ /** True when `rag`, or any store it decorates, carries a retrieval strategy. */
15
+ export declare function hasRetrievalStrategy(rag: IRag): boolean;
16
+ /** Wrap an explicitly configured store (embedding included); idempotent through decorators. */
17
+ export declare function applyRetrievalStrategy(rag: IRag, strategy: IRetrievalStrategy): IRag;
18
+ /**
19
+ * The store an agent queries for one of its built-in slots (`tools`, `history`).
20
+ * The agent's OWN store always has priority: the projected entry is used only
21
+ * when it carries a retrieval strategy and decorates `own` (so layers such as
22
+ * the circuit-breaker fallback are kept); otherwise `ownWithStrategy` — `own`
23
+ * with the explicit strategy applied once by the caller, or `own` itself. A
24
+ * projected entry over another agent's store (a worker sharing its parent's
25
+ * registry) never wins. Internal; not re-exported.
26
+ */
27
+ export declare function ownBuiltInStore(own: IRag, ownWithStrategy: IRag, projected: IRag | undefined): IRag;
28
+ export {};
29
+ //# sourceMappingURL=strategy-rag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy-rag.d.ts","sourceRoot":"","sources":["../../src/retrieval/strategy-rag.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,IAAI,EACT,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EAEvB,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,MAAM,EACZ,MAAM,yBAAyB,CAAC;AAEjC,QAAA,MAAM,KAAK,eAA2C,CAAC;AAEvD,kGAAkG;AAClG,qBAAa,WAAY,YAAW,IAAI,EAAE,aAAa;IAGnD,QAAQ,CAAC,KAAK,EAAE,IAAI;IACpB,QAAQ,CAAC,QAAQ,EAAE,kBAAkB;IAHvC,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ;gBAEb,KAAK,EAAE,IAAI,EACX,QAAQ,EAAE,kBAAkB;IAEvC,KAAK,CACH,SAAS,EAAE,eAAe,EAC1B,CAAC,EAAE,MAAM,EACT,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,CAAC,CAAC;IAGzC,WAAW,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAGnE,OAAO,CACL,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,EAAE,QAAQ,CAAC,CAAC;IAG9C,MAAM,IAAI,iBAAiB,GAAG,SAAS;CAGxC;AAED,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO,CAOvD;AAED,+FAA+F;AAC/F,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,IAAI,EACT,QAAQ,EAAE,kBAAkB,GAC3B,IAAI,CAEN;AAYD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,IAAI,EACT,eAAe,EAAE,IAAI,EACrB,SAAS,EAAE,IAAI,GAAG,SAAS,GAC1B,IAAI,CAMN"}
@@ -0,0 +1,65 @@
1
+ import { isRagDecorator, } from '@mcp-abap-adt/llm-agent';
2
+ const BRAND = Symbol.for('@mcp-abap-adt/strategy-rag');
3
+ /** IRag decorator: `query` goes through the strategy, everything else to `inner` (spec §13.3). */
4
+ export class StrategyRag {
5
+ inner;
6
+ strategy;
7
+ [BRAND] = true;
8
+ constructor(inner, strategy) {
9
+ this.inner = inner;
10
+ this.strategy = strategy;
11
+ }
12
+ query(embedding, k, options) {
13
+ return this.strategy.retrieve(this.inner, embedding, k, options);
14
+ }
15
+ healthCheck(options) {
16
+ return this.inner.healthCheck(options);
17
+ }
18
+ getById(id, options) {
19
+ return this.inner.getById(id, options);
20
+ }
21
+ writer() {
22
+ return this.inner.writer?.();
23
+ }
24
+ }
25
+ /** True when `rag`, or any store it decorates, carries a retrieval strategy. */
26
+ export function hasRetrievalStrategy(rag) {
27
+ let cur = rag;
28
+ for (let depth = 0; cur && depth < 16; depth++) {
29
+ if (cur[BRAND])
30
+ return true;
31
+ cur = isRagDecorator(cur) ? cur.inner : undefined;
32
+ }
33
+ return false;
34
+ }
35
+ /** Wrap an explicitly configured store (embedding included); idempotent through decorators. */
36
+ export function applyRetrievalStrategy(rag, strategy) {
37
+ return hasRetrievalStrategy(rag) ? rag : new StrategyRag(rag, strategy);
38
+ }
39
+ /** True when `rag` is `target` or decorates it (through `IRagDecorator.inner`). */
40
+ function decorates(rag, target) {
41
+ let cur = rag;
42
+ for (let depth = 0; cur && depth < 16; depth++) {
43
+ if (cur === target)
44
+ return true;
45
+ cur = isRagDecorator(cur) ? cur.inner : undefined;
46
+ }
47
+ return false;
48
+ }
49
+ /**
50
+ * The store an agent queries for one of its built-in slots (`tools`, `history`).
51
+ * The agent's OWN store always has priority: the projected entry is used only
52
+ * when it carries a retrieval strategy and decorates `own` (so layers such as
53
+ * the circuit-breaker fallback are kept); otherwise `ownWithStrategy` — `own`
54
+ * with the explicit strategy applied once by the caller, or `own` itself. A
55
+ * projected entry over another agent's store (a worker sharing its parent's
56
+ * registry) never wins. Internal; not re-exported.
57
+ */
58
+ export function ownBuiltInStore(own, ownWithStrategy, projected) {
59
+ return projected &&
60
+ hasRetrievalStrategy(projected) &&
61
+ decorates(projected, own)
62
+ ? projected
63
+ : ownWithStrategy;
64
+ }
65
+ //# sourceMappingURL=strategy-rag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy-rag.js","sourceRoot":"","sources":["../../src/retrieval/strategy-rag.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,cAAc,GAIf,MAAM,yBAAyB,CAAC;AAEjC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;AAEvD,kGAAkG;AAClG,MAAM,OAAO,WAAW;IAGX;IACA;IAHF,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IACxB,YACW,KAAW,EACX,QAA4B;QAD5B,UAAK,GAAL,KAAK,CAAM;QACX,aAAQ,GAAR,QAAQ,CAAoB;IACpC,CAAC;IACJ,KAAK,CACH,SAA0B,EAC1B,CAAS,EACT,OAAqB;QAErB,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IACD,WAAW,CAAC,OAAqB;QAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,CACL,EAAU,EACV,OAAqB;QAErB,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IACD,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;IAC/B,CAAC;CACF;AAED,gFAAgF;AAChF,MAAM,UAAU,oBAAoB,CAAC,GAAS;IAC5C,IAAI,GAAG,GAAqB,GAAG,CAAC;IAChC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC;QAC/C,IAAK,GAA6B,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACvD,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACpD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,sBAAsB,CACpC,GAAS,EACT,QAA4B;IAE5B,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC1E,CAAC;AAED,mFAAmF;AACnF,SAAS,SAAS,CAAC,GAAS,EAAE,MAAY;IACxC,IAAI,GAAG,GAAqB,GAAG,CAAC;IAChC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC;QAC/C,IAAI,GAAG,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;QAChC,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACpD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAC7B,GAAS,EACT,eAAqB,EACrB,SAA2B;IAE3B,OAAO,SAAS;QACd,oBAAoB,CAAC,SAAS,CAAC;QAC/B,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC;QACzB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,eAAe,CAAC;AACtB,CAAC"}
@@ -1,7 +1,8 @@
1
- import type { IEmbedder, ISkillsRagBackend, ISkillsRagHandle } from '@mcp-abap-adt/llm-agent';
1
+ import type { IQueryEmbedder, ISkillsRagBackend, ISkillsRagHandle } from '@mcp-abap-adt/llm-agent';
2
2
  export interface CompatibleSkillsRagDeps {
3
3
  backend: ISkillsRagBackend;
4
- embedder: IEmbedder;
4
+ /** Embeds the recall text (and probes the dimension): the query role. */
5
+ embedder: IQueryEmbedder;
5
6
  embeddingSpaceId: string;
6
7
  retrievalSchemaVersion: number;
7
8
  dimension?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"compatible-skills-rag.d.ts","sourceRoot":"","sources":["../../../src/skills/plugin-host/compatible-skills-rag.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,SAAS,EACT,iBAAiB,EACjB,gBAAgB,EAGjB,MAAM,yBAAyB,CAAC;AAGjC,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,QAAQ,EAAE,SAAS,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;qFAEiF;IACjF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,uBAAuB,GAC5B,gBAAgB,CA4FlB"}
1
+ {"version":3,"file":"compatible-skills-rag.d.ts","sourceRoot":"","sources":["../../../src/skills/plugin-host/compatible-skills-rag.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAGjB,MAAM,yBAAyB,CAAC;AAGjC,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,yEAAyE;IACzE,QAAQ,EAAE,cAAc,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;qFAEiF;IACjF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,uBAAuB,GAC5B,gBAAgB,CA4FlB"}
@@ -9,7 +9,7 @@ export function makeCompatibleSkillsRag(deps) {
9
9
  });
10
10
  async function ensureDimension(options) {
11
11
  if (dimension === undefined) {
12
- const probe = await deps.embedder.embed('dimension probe', options);
12
+ const probe = await deps.embedder.embedQuery('dimension probe', options);
13
13
  dimension = probe.vector.length;
14
14
  }
15
15
  }
@@ -54,7 +54,7 @@ export function makeCompatibleSkillsRag(deps) {
54
54
  try {
55
55
  if (!compatible(snap))
56
56
  return []; // no embed on incompatible
57
- const { vector } = await deps.embedder.embed(text, options); // PAID step, last
57
+ const { vector } = await deps.embedder.embedQuery(text, options); // PAID step, last
58
58
  // Bound the vector read with a DEADLINE so it cannot outlive a time-grace backend's
59
59
  // retention window (P1.4). For the exact-lease backend recallTimeoutMs is omitted.
60
60
  const sigs = [
@@ -1 +1 @@
1
- {"version":3,"file":"compatible-skills-rag.js","sourceRoot":"","sources":["../../../src/skills/plugin-host/compatible-skills-rag.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC,CAAC,gBAAgB;AAcnF,MAAM,UAAU,uBAAuB,CACrC,IAA6B;IAE7B,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAC/B,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAmB,CAAC;IAErD,MAAM,UAAU,GAAG,GAA8B,EAAE,CAAC,CAAC;QACnD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,SAAS,EAAE,SAAmB;QAC9B,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;KACpD,CAAC,CAAC;IAEH,KAAK,UAAU,eAAe,CAAC,OAAqB;QAClD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;YACpE,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QAClC,CAAC;IACH,CAAC;IAED,SAAS,UAAU,CAAC,IAAoB;QACtC,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QACxC,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;QACvB,MAAM,EAAE,GACN,IAAI,CAAC,QAAQ,CAAC,gBAAgB,KAAK,CAAC,CAAC,gBAAgB;YACrD,IAAI,CAAC,QAAQ,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS;YACvC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,KAAK,CAAC,CAAC,sBAAsB,CAAC;QACpE,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,6EAA6E;YAC7E,OAAO,CAAC,KAAK,CACX,oCAAoC,IAAI,CAAC,QAAQ,wBAAwB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAC1I,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO;QACL,KAAK,CAAC,cAAc,CAClB,OAAqB;YAErB,gFAAgF;YAChF,kFAAkF;YAClF,yDAAyD;YACzD,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;YAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,mBAAmB;YACrE,IAAI,CAAC;gBACH,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC9B,MAAM,IAAI,uBAAuB,CAC/B,wDAAwD,IAAI,CAAC,QAAQ,EAAE,CACxE,CAAC;gBACJ,CAAC;gBACD,OAAO,IAAI,CAAC,CAAC,6DAA6D;YAC5E,CAAC;oBAAS,CAAC;gBACT,IAAI,IAAI;oBAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QACD,KAAK,CAAC,KAAK,CACT,IAAY,EACZ,IAAuC,EACvC,OAAqB;YAErB,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;YAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,qCAAqC;YACvF,IAAI,CAAC,IAAI;gBAAE,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;oBAAE,OAAO,EAAE,CAAC,CAAC,2BAA2B;gBAC7D,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,kBAAkB;gBAC/E,oFAAoF;gBACpF,mFAAmF;gBACnF,MAAM,IAAI,GAAG;oBACX,OAAO,EAAE,MAAM;oBACf,IAAI,CAAC,eAAe;wBAClB,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;wBAC3C,CAAC,CAAC,SAAS;iBACd,CAAC,MAAM,CAAC,OAAO,CAAkB,CAAC;gBACnC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC/D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAC3C,IAAI,CAAC,QAAQ,EACb,MAAM,EACN,IAAI,CAAC,CAAC,EACN,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CACvB,CAAC;gBACF,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC;gBACxC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;YAClD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,CAAC,GAAI,CAAW,EAAE,IAAI,CAAC;gBAC7B,IAAI,CAAC,KAAK,YAAY,IAAI,CAAC,KAAK,cAAc;oBAAE,OAAO,EAAE,CAAC,CAAC,iCAAiC;gBAC5F,MAAM,CAAC,CAAC;YACV,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,qCAAqC;YAC9E,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"compatible-skills-rag.js","sourceRoot":"","sources":["../../../src/skills/plugin-host/compatible-skills-rag.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
- import type { IEmbedder, ISkillPluginHost, ISkillSource, ISkillsRagBackendProvider, ISkillsStoreProvider } from '@mcp-abap-adt/llm-agent';
1
+ import type { IQueryEmbedder, ISkillPluginHost, ISkillSource, ISkillsRagBackendProvider, ISkillsStoreProvider } from '@mcp-abap-adt/llm-agent';
2
2
  /** RECALL-ONLY construction: serves an already-materialised catalog through a READ-ONLY
3
3
  * backend provider (least privilege — no source, no store, no write/reconcile API). The
4
4
  * served collections are materialised out-of-band by a SEPARATE ingest job. */
5
5
  export interface RecallHostDeps {
6
6
  backendProvider: ISkillsRagBackendProvider;
7
7
  /** Serving embedder — text query embed + lazy dimension probe. */
8
- embedder: IEmbedder;
8
+ embedder: IQueryEmbedder;
9
9
  embeddingSpaceId: string;
10
10
  retrievalSchemaVersion: number;
11
11
  dimension?: number;
@@ -22,8 +22,9 @@ export interface IngestHostDeps {
22
22
  source: ISkillSource;
23
23
  }>;
24
24
  storeProvider: ISkillsStoreProvider;
25
- /** Serving embedder (also used to vectorise upserts via the provider). */
26
- embedder: IEmbedder;
25
+ /** Serving embedder: recall text + dimension probe (the store provider
26
+ * writes skills with its own `embed`). */
27
+ embedder: IQueryEmbedder;
27
28
  embeddingSpaceId: string;
28
29
  retrievalSchemaVersion: number;
29
30
  dimension?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"skill-plugin-host.d.ts","sourceRoot":"","sources":["../../../src/skills/plugin-host/skill-plugin-host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,yBAAyB,EAEzB,oBAAoB,EAMrB,MAAM,yBAAyB,CAAC;AAIjC;;gFAEgF;AAChF,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,yBAAyB,CAAC;IAC3C,kEAAkE;IAClE,QAAQ,EAAE,SAAS,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;iFAC6E;IAC7E,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,0EAA0E;IAC1E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG,cAAc,CAAC;AAMlE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,aAAa,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,YAAY,CAAA;KAAE,CAAC,CAAC;IAC7D,aAAa,EAAE,oBAAoB,CAAC;IACpC,0EAA0E;IAC1E,QAAQ,EAAE,SAAS,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iBAAiB;IACjB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,6EAA6E;IAC7E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0EAA0E;IAC1E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAeD,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,mBAAmB,GACxB,gBAAgB,CAGlB"}
1
+ {"version":3,"file":"skill-plugin-host.d.ts","sourceRoot":"","sources":["../../../src/skills/plugin-host/skill-plugin-host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,yBAAyB,EAEzB,oBAAoB,EAMrB,MAAM,yBAAyB,CAAC;AAIjC;;gFAEgF;AAChF,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,yBAAyB,CAAC;IAC3C,kEAAkE;IAClE,QAAQ,EAAE,cAAc,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;iFAC6E;IAC7E,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,0EAA0E;IAC1E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG,cAAc,CAAC;AAMlE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,aAAa,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,YAAY,CAAA;KAAE,CAAC,CAAC;IAC7D,aAAa,EAAE,oBAAoB,CAAC;IACpC;+CAC2C;IAC3C,QAAQ,EAAE,cAAc,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iBAAiB;IACjB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,6EAA6E;IAC7E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0EAA0E;IAC1E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAeD,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,mBAAmB,GACxB,gBAAgB,CAGlB"}
@@ -116,7 +116,7 @@ function makeIngestHost(deps) {
116
116
  let resolvedDimension = deps.dimension;
117
117
  async function ensureDimension(options) {
118
118
  if (resolvedDimension === undefined) {
119
- const probe = await deps.embedder.embed('dimension probe', options);
119
+ const probe = await deps.embedder.embedQuery('dimension probe', options);
120
120
  resolvedDimension = probe.vector.length;
121
121
  }
122
122
  return resolvedDimension;