@mcp-abap-adt/llm-agent 20.8.0 → 20.9.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 (50) hide show
  1. package/README.md +1 -1
  2. package/dist/index.d.ts +6 -2
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +6 -2
  5. package/dist/index.js.map +1 -1
  6. package/dist/interfaces/assert-client-descriptors.d.ts +6 -0
  7. package/dist/interfaces/assert-client-descriptors.d.ts.map +1 -0
  8. package/dist/interfaces/assert-client-descriptors.js +27 -0
  9. package/dist/interfaces/assert-client-descriptors.js.map +1 -0
  10. package/dist/interfaces/build-namespaced-tools.d.ts +21 -0
  11. package/dist/interfaces/build-namespaced-tools.d.ts.map +1 -0
  12. package/dist/interfaces/build-namespaced-tools.js +48 -0
  13. package/dist/interfaces/build-namespaced-tools.js.map +1 -0
  14. package/dist/interfaces/builder.d.ts +17 -1
  15. package/dist/interfaces/builder.d.ts.map +1 -1
  16. package/dist/interfaces/index.d.ts +2 -1
  17. package/dist/interfaces/index.d.ts.map +1 -1
  18. package/dist/interfaces/index.js +1 -0
  19. package/dist/interfaces/index.js.map +1 -1
  20. package/dist/interfaces/mcp-connection-strategy.d.ts +14 -0
  21. package/dist/interfaces/mcp-connection-strategy.d.ts.map +1 -1
  22. package/dist/interfaces/merge-offered-tools.d.ts +8 -0
  23. package/dist/interfaces/merge-offered-tools.d.ts.map +1 -0
  24. package/dist/interfaces/merge-offered-tools.js +14 -0
  25. package/dist/interfaces/merge-offered-tools.js.map +1 -0
  26. package/dist/interfaces/pipeline-plugin.d.ts +4 -0
  27. package/dist/interfaces/pipeline-plugin.d.ts.map +1 -1
  28. package/dist/interfaces/rag.d.ts +15 -0
  29. package/dist/interfaces/rag.d.ts.map +1 -1
  30. package/dist/interfaces/tool-namespace.d.ts +24 -0
  31. package/dist/interfaces/tool-namespace.d.ts.map +1 -0
  32. package/dist/interfaces/tool-namespace.js +20 -0
  33. package/dist/interfaces/tool-namespace.js.map +1 -0
  34. package/dist/interfaces/tool-record-key.d.ts +59 -0
  35. package/dist/interfaces/tool-record-key.d.ts.map +1 -0
  36. package/dist/interfaces/tool-record-key.js +40 -0
  37. package/dist/interfaces/tool-record-key.js.map +1 -0
  38. package/dist/resilience/circuit-breaker-embedder.d.ts +23 -3
  39. package/dist/resilience/circuit-breaker-embedder.d.ts.map +1 -1
  40. package/dist/resilience/circuit-breaker-embedder.js +25 -1
  41. package/dist/resilience/circuit-breaker-embedder.js.map +1 -1
  42. package/dist/resilience/index.d.ts +2 -2
  43. package/dist/resilience/index.d.ts.map +1 -1
  44. package/dist/resilience/index.js +2 -2
  45. package/dist/resilience/index.js.map +1 -1
  46. package/dist/resilience/retry-embedder.d.ts +13 -0
  47. package/dist/resilience/retry-embedder.d.ts.map +1 -1
  48. package/dist/resilience/retry-embedder.js +20 -8
  49. package/dist/resilience/retry-embedder.js.map +1 -1
  50. package/package.json +1 -1
package/README.md CHANGED
@@ -8,7 +8,7 @@ This package is the abstraction layer consumed by `@mcp-abap-adt/llm-agent-libs`
8
8
  - Shared types (Message, ToolCall, RagMetadata, CallOptions, Result, errors)
9
9
  - Lightweight RAG implementations (InMemoryRag, VectorRag, QdrantRag, InMemoryRagProvider, VectorRagProvider, QdrantRagProvider, SimpleRagRegistry, SimpleRagProviderRegistry, edit strategies, id strategies, corrections module, overlay rags, MCP tool factory)
10
10
  - Library helpers usable when embedding SmartAgent in your own server:
11
- - **Resilience**: `CircuitBreaker`, `CircuitBreakerLlm`, `CircuitBreakerEmbedder`, `FallbackRag`, and the embedder chain — `BatchChunkingEmbedder`, `RetryEmbedder`/`withRetry`, `composeResilientEmbedder`
11
+ - **Resilience**: `CircuitBreaker`, `CircuitBreakerLlm`, `FallbackRag`, and the embedder chain — `BatchChunkingEmbedder`, `RetryEmbedder`/`withRetry`, `CircuitBreakerEmbedder`/`withCircuitBreaker`, `composeResilientEmbedder` (all capability-preserving factories)
12
12
  - **LLM call policies**: `NonStreamingLlmCallStrategy`, `StreamingLlmCallStrategy`, `FallbackLlmCallStrategy`
13
13
  - **Tool cache**: `ToolCache`, `NoopToolCache`
14
14
  - **API adapters** (Anthropic Messages / OpenAI Chat Completions ↔ SmartAgent): `AnthropicApiAdapter`, `OpenAiApiAdapter`, with `NormalizedRequest` / `ApiRequestContext` / `ApiSseEvent` / `AdapterValidationError`
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ export { artifactIdentityKey, deepStableArgsKey, externalToolCallId, shortHash,
2
2
  export { ClarifySignal, NeedInfoSignal } from './coordinator-signals.js';
3
3
  export * from './errors/index.js';
4
4
  export * from './external-results.js';
5
+ export { assertClientDescriptors } from './interfaces/assert-client-descriptors.js';
5
6
  export * from './interfaces/index.js';
6
7
  export { BaseLLMProvider, type LLMProvider } from './llm/base-llm-provider.js';
7
8
  export { NeedsDecompositionError } from './needs-decomposition-error.js';
@@ -15,17 +16,20 @@ export { ToolCache } from './cache/tool-cache.js';
15
16
  export type { IToolCache } from './cache/types.js';
16
17
  export { CLIENT_PROVIDED_PREFIX, type ExternalToolValidationCode, type ExternalToolValidationError, normalizeAndValidateExternalTools, normalizeExternalTools, } from './external-tools-normalizer.js';
17
18
  export { AdapterValidationError, type ApiRequestContext, type ApiSseEvent, type ILlmApiAdapter, type NormalizedRequest, } from './interfaces/api-adapter.js';
19
+ export { buildNamespacedTools, type NamespaceClientInput, } from './interfaces/build-namespaced-tools.js';
18
20
  export type { IClientAdapter } from './interfaces/client-adapter.js';
21
+ export { mergeOfferedTools } from './interfaces/merge-offered-tools.js';
22
+ export { bindToolCallName, defaultToolNamespace, type IToolNamespace, type ToolNamespaceContext, } from './interfaces/tool-namespace.js';
19
23
  export type { ILogger, LogEvent } from './logger/types.js';
20
24
  export { FallbackLlmCallStrategy } from './policy/fallback-llm-call-strategy.js';
21
25
  export { NonStreamingLlmCallStrategy } from './policy/non-streaming-llm-call-strategy.js';
22
26
  export { StreamingLlmCallStrategy } from './policy/streaming-llm-call-strategy.js';
23
27
  export { BatchChunkingEmbedder, DEFAULT_MAX_BATCH_SIZE, } from './resilience/batch-chunking-embedder.js';
24
28
  export { CircuitBreaker, type CircuitBreakerConfig, type CircuitState, } from './resilience/circuit-breaker.js';
25
- export { CircuitBreakerEmbedder } from './resilience/circuit-breaker-embedder.js';
29
+ export { CircuitBreakerEmbedder, CircuitBreakerEmbedderBase, withCircuitBreaker, } from './resilience/circuit-breaker-embedder.js';
26
30
  export { CircuitBreakerLlm } from './resilience/circuit-breaker-llm.js';
27
31
  export { brandResilient, type ComposeResilienceOptions, composeResilientEmbedder, type EmbedderResilienceMetadata, getResilienceMetadata, RESILIENCE_META, } from './resilience/embedder-resilience.js';
28
32
  export { FallbackRag } from './resilience/fallback-rag.js';
29
- export { type EmbedderRetryOptions, extractStatusCode, RetryBatchEmbedder, RetryEmbedder, withRetry, } from './resilience/retry-embedder.js';
33
+ export { type EmbedderRetryOptions, extractStatusCode, isRetryableStatus, RetryBatchEmbedder, RetryEmbedder, withRetry, } from './resilience/retry-embedder.js';
30
34
  export { getStreamToolCallName, toToolCallDelta, } from './tool-call-deltas.js';
31
35
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,aAAa,GACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACzE,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,KAAK,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAI3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAExE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EACL,sBAAsB,EACtB,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,iCAAiC,EACjC,sBAAsB,GACvB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,sBAAsB,EACtB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,iBAAiB,GACvB,MAAM,6BAA6B,CAAC;AAErC,YAAY,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAErE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAEjF,OAAO,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EACL,cAAc,EACd,KAAK,oBAAoB,EACzB,KAAK,YAAY,GAClB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EACL,cAAc,EACd,KAAK,wBAAwB,EAC7B,wBAAwB,EACxB,KAAK,0BAA0B,EAC/B,qBAAqB,EACrB,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EACL,KAAK,oBAAoB,EACzB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,SAAS,GACV,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,qBAAqB,EACrB,eAAe,GAChB,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,aAAa,GACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACzE,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AACpF,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,KAAK,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAI3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAExE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EACL,sBAAsB,EACtB,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,iCAAiC,EACjC,sBAAsB,GACvB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,sBAAsB,EACtB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,iBAAiB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,oBAAoB,EACpB,KAAK,oBAAoB,GAC1B,MAAM,wCAAwC,CAAC;AAEhD,YAAY,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,oBAAoB,GAC1B,MAAM,gCAAgC,CAAC;AAExC,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAEjF,OAAO,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EACL,cAAc,EACd,KAAK,oBAAoB,EACzB,KAAK,YAAY,GAClB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EACL,cAAc,EACd,KAAK,wBAAwB,EAC7B,wBAAwB,EACxB,KAAK,0BAA0B,EAC/B,qBAAqB,EACrB,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EACL,KAAK,oBAAoB,EACzB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,SAAS,GACV,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,qBAAqB,EACrB,eAAe,GAChB,MAAM,uBAAuB,CAAC"}
package/dist/index.js CHANGED
@@ -3,6 +3,7 @@ export { artifactIdentityKey, deepStableArgsKey, externalToolCallId, shortHash,
3
3
  export { ClarifySignal, NeedInfoSignal } from './coordinator-signals.js';
4
4
  export * from './errors/index.js';
5
5
  export * from './external-results.js';
6
+ export { assertClientDescriptors } from './interfaces/assert-client-descriptors.js';
6
7
  export * from './interfaces/index.js';
7
8
  export { BaseLLMProvider } from './llm/base-llm-provider.js';
8
9
  export { NeedsDecompositionError } from './needs-decomposition-error.js';
@@ -19,6 +20,9 @@ export { ToolCache } from './cache/tool-cache.js';
19
20
  export { CLIENT_PROVIDED_PREFIX, normalizeAndValidateExternalTools, normalizeExternalTools, } from './external-tools-normalizer.js';
20
21
  // API adapter interfaces
21
22
  export { AdapterValidationError, } from './interfaces/api-adapter.js';
23
+ export { buildNamespacedTools, } from './interfaces/build-namespaced-tools.js';
24
+ export { mergeOfferedTools } from './interfaces/merge-offered-tools.js';
25
+ export { bindToolCallName, defaultToolNamespace, } from './interfaces/tool-namespace.js';
22
26
  export { FallbackLlmCallStrategy } from './policy/fallback-llm-call-strategy.js';
23
27
  // LLM call policies
24
28
  export { NonStreamingLlmCallStrategy } from './policy/non-streaming-llm-call-strategy.js';
@@ -26,10 +30,10 @@ export { StreamingLlmCallStrategy } from './policy/streaming-llm-call-strategy.j
26
30
  export { BatchChunkingEmbedder, DEFAULT_MAX_BATCH_SIZE, } from './resilience/batch-chunking-embedder.js';
27
31
  // Resilience
28
32
  export { CircuitBreaker, } from './resilience/circuit-breaker.js';
29
- export { CircuitBreakerEmbedder } from './resilience/circuit-breaker-embedder.js';
33
+ export { CircuitBreakerEmbedder, CircuitBreakerEmbedderBase, withCircuitBreaker, } from './resilience/circuit-breaker-embedder.js';
30
34
  export { CircuitBreakerLlm } from './resilience/circuit-breaker-llm.js';
31
35
  export { brandResilient, composeResilientEmbedder, getResilienceMetadata, RESILIENCE_META, } from './resilience/embedder-resilience.js';
32
36
  export { FallbackRag } from './resilience/fallback-rag.js';
33
- export { extractStatusCode, RetryBatchEmbedder, RetryEmbedder, withRetry, } from './resilience/retry-embedder.js';
37
+ export { extractStatusCode, isRetryableStatus, RetryBatchEmbedder, RetryEmbedder, withRetry, } from './resilience/retry-embedder.js';
34
38
  export { getStreamToolCallName, toToolCallDelta, } from './tool-call-deltas.js';
35
39
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,aAAa,GACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACzE,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,eAAe,EAAoB,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAE3B,sEAAsE;AAEtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,eAAe;AACf,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,iBAAiB;AACjB,OAAO,EACL,sBAAsB,EAGtB,iCAAiC,EACjC,sBAAsB,GACvB,MAAM,gCAAgC,CAAC;AACxC,yBAAyB;AACzB,OAAO,EACL,sBAAsB,GAKvB,MAAM,6BAA6B,CAAC;AAKrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,oBAAoB;AACpB,OAAO,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,yCAAyC,CAAC;AACjD,aAAa;AACb,OAAO,EACL,cAAc,GAGf,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EACL,cAAc,EAEd,wBAAwB,EAExB,qBAAqB,EACrB,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAEL,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,SAAS,GACV,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,qBAAqB,EACrB,eAAe,GAChB,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,aAAa,GACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACzE,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AACpF,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,eAAe,EAAoB,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAE3B,sEAAsE;AAEtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,eAAe;AACf,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,iBAAiB;AACjB,OAAO,EACL,sBAAsB,EAGtB,iCAAiC,EACjC,sBAAsB,GACvB,MAAM,gCAAgC,CAAC;AACxC,yBAAyB;AACzB,OAAO,EACL,sBAAsB,GAKvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,oBAAoB,GAErB,MAAM,wCAAwC,CAAC;AAGhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EACL,gBAAgB,EAChB,oBAAoB,GAGrB,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,oBAAoB;AACpB,OAAO,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,yCAAyC,CAAC;AACjD,aAAa;AACb,OAAO,EACL,cAAc,GAGf,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EACL,cAAc,EAEd,wBAAwB,EAExB,qBAAqB,EACrB,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAEL,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,SAAS,GACV,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,qBAAqB,EACrB,eAAe,GAChB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { IMcpClient } from './mcp-client.js';
2
+ import type { McpClientDescriptor } from './mcp-connection-strategy.js';
3
+ /** Fail-fast on a malformed connection result (a buggy custom strategy). No-op
4
+ * when descriptors are absent (a non-filtering strategy may omit them). */
5
+ export declare function assertClientDescriptors(clients: readonly IMcpClient[], descriptors: readonly McpClientDescriptor[] | undefined, configuredSlotCount?: number): void;
6
+ //# sourceMappingURL=assert-client-descriptors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert-client-descriptors.d.ts","sourceRoot":"","sources":["../../src/interfaces/assert-client-descriptors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAExE;4EAC4E;AAC5E,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,WAAW,EAAE,SAAS,mBAAmB,EAAE,GAAG,SAAS,EACvD,mBAAmB,CAAC,EAAE,MAAM,GAC3B,IAAI,CA+BN"}
@@ -0,0 +1,27 @@
1
+ /** Fail-fast on a malformed connection result (a buggy custom strategy). No-op
2
+ * when descriptors are absent (a non-filtering strategy may omit them). */
3
+ export function assertClientDescriptors(clients, descriptors, configuredSlotCount) {
4
+ if (!descriptors)
5
+ return;
6
+ const nonNegInt = (n) => Number.isInteger(n) && n >= 0;
7
+ if (descriptors.length !== clients.length)
8
+ throw new Error(`clientDescriptors length ${descriptors.length} !== clients length ${clients.length}`);
9
+ const seen = new Set();
10
+ let max = -1;
11
+ for (const d of descriptors) {
12
+ if (!nonNegInt(d.slotIndex))
13
+ throw new Error(`slotIndex must be a non-negative integer, got ${d.slotIndex}`);
14
+ if (seen.has(d.slotIndex))
15
+ throw new Error(`duplicate slotIndex ${d.slotIndex} in clientDescriptors`);
16
+ seen.add(d.slotIndex);
17
+ if (d.slotIndex > max)
18
+ max = d.slotIndex;
19
+ }
20
+ if (configuredSlotCount !== undefined) {
21
+ if (!nonNegInt(configuredSlotCount))
22
+ throw new Error(`configuredSlotCount must be a non-negative integer, got ${configuredSlotCount}`);
23
+ if (configuredSlotCount <= max)
24
+ throw new Error(`configuredSlotCount ${configuredSlotCount} must be > max slotIndex ${max}`);
25
+ }
26
+ }
27
+ //# sourceMappingURL=assert-client-descriptors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert-client-descriptors.js","sourceRoot":"","sources":["../../src/interfaces/assert-client-descriptors.ts"],"names":[],"mappings":"AAGA;4EAC4E;AAC5E,MAAM,UAAU,uBAAuB,CACrC,OAA8B,EAC9B,WAAuD,EACvD,mBAA4B;IAE5B,IAAI,CAAC,WAAW;QAAE,OAAO;IACzB,MAAM,SAAS,GAAG,CAAC,CAAS,EAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxE,IAAI,WAAW,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM;QACvC,MAAM,IAAI,KAAK,CACb,4BAA4B,WAAW,CAAC,MAAM,uBAAuB,OAAO,CAAC,MAAM,EAAE,CACtF,CAAC;IACJ,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;IACb,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,iDAAiD,CAAC,CAAC,SAAS,EAAE,CAC/D,CAAC;QACJ,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,uBAAuB,CAAC,CAAC,SAAS,uBAAuB,CAC1D,CAAC;QACJ,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACtB,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG;YAAE,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC;IAC3C,CAAC;IACD,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC;YACjC,MAAM,IAAI,KAAK,CACb,2DAA2D,mBAAmB,EAAE,CACjF,CAAC;QACJ,IAAI,mBAAmB,IAAI,GAAG;YAC5B,MAAM,IAAI,KAAK,CACb,uBAAuB,mBAAmB,4BAA4B,GAAG,EAAE,CAC5E,CAAC;IACN,CAAC;AACH,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { IMcpClient } from './mcp-client.js';
2
+ import { type IToolNamespace } from './tool-namespace.js';
3
+ import type { McpTool } from './types.js';
4
+ export interface NamespaceClientInput {
5
+ slotIndex: number;
6
+ label?: string;
7
+ client: IMcpClient;
8
+ tools: McpTool[];
9
+ }
10
+ export declare function buildNamespacedTools(perClient: NamespaceClientInput[], ns: IToolNamespace): {
11
+ tools: McpTool[];
12
+ toolClientMap: Map<string, IMcpClient>;
13
+ /** Per exposed name → its source, so a vectorizer can build the record key from
14
+ * the ORIGINAL name + stable slotIndex (a flat tools[] index would not identify
15
+ * the owning client once a client has multiple tools). */
16
+ provenance: Map<string, {
17
+ slotIndex: number;
18
+ originalName: string;
19
+ }>;
20
+ };
21
+ //# sourceMappingURL=build-namespaced-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-namespaced-tools.d.ts","sourceRoot":"","sources":["../../src/interfaces/build-namespaced-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAI1C,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,oBAAoB,EAAE,EACjC,EAAE,EAAE,cAAc,GACjB;IACD,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACvC;;+DAE2D;IAC3D,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtE,CA6DA"}
@@ -0,0 +1,48 @@
1
+ import { bindToolCallName } from './tool-namespace.js';
2
+ const VALID_TOOL_NAME = /^[a-zA-Z0-9_-]+$/;
3
+ export function buildNamespacedTools(perClient, ns) {
4
+ // Defence in depth against a buggy custom connection strategy: slotIndex must be unique.
5
+ const slots = new Set();
6
+ for (const pc of perClient) {
7
+ if (slots.has(pc.slotIndex))
8
+ throw new Error(`buildNamespacedTools: duplicate slotIndex ${pc.slotIndex} in input`);
9
+ slots.add(pc.slotIndex);
10
+ }
11
+ // Collision = a tool name present in >= 2 clients.
12
+ const counts = new Map();
13
+ for (const pc of perClient)
14
+ for (const t of pc.tools)
15
+ counts.set(t.name, (counts.get(t.name) ?? 0) + 1);
16
+ const tools = [];
17
+ const toolClientMap = new Map();
18
+ const provenance = new Map(); // exposed → source
19
+ for (const pc of perClient) {
20
+ const prefix = pc.label ?? `s${pc.slotIndex}`;
21
+ for (const t of pc.tools) {
22
+ const colliding = (counts.get(t.name) ?? 0) > 1;
23
+ const exposed = ns.expose({ toolName: t.name, prefix, colliding });
24
+ // Per-name validity guard — the builder is the trust boundary for the strategy.
25
+ if (typeof exposed !== 'string' ||
26
+ exposed.length === 0 ||
27
+ exposed.length > 64 ||
28
+ !VALID_TOOL_NAME.test(exposed))
29
+ throw new Error(`IToolNamespace produced an invalid tool name ${JSON.stringify(exposed)} ` +
30
+ `for tool "${t.name}" on server slot ${pc.slotIndex}${pc.label ? ` (${pc.label})` : ''}; ` +
31
+ `must be non-empty, /^[a-zA-Z0-9_-]+$/, <= 64 chars.`);
32
+ // Global-uniqueness guard — the final exposed set (renamed AND bare) must be unique.
33
+ const prev = provenance.get(exposed);
34
+ if (prev)
35
+ throw new Error(`Tool name collision: "${exposed}" is produced by both ` +
36
+ `slot ${prev.slotIndex} tool "${prev.originalName}" and slot ${pc.slotIndex} tool "${t.name}". ` +
37
+ `Set distinct mcp[].name labels.`);
38
+ provenance.set(exposed, {
39
+ slotIndex: pc.slotIndex,
40
+ originalName: t.name,
41
+ });
42
+ tools.push({ ...t, name: exposed });
43
+ toolClientMap.set(exposed, exposed === t.name ? pc.client : bindToolCallName(pc.client, t.name));
44
+ }
45
+ }
46
+ return { tools, toolClientMap, provenance };
47
+ }
48
+ //# sourceMappingURL=build-namespaced-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-namespaced-tools.js","sourceRoot":"","sources":["../../src/interfaces/build-namespaced-tools.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,11 @@ import type { AgentCallOptions, OrchestratorError, SmartAgentResponse } from './
4
4
  import type { ILlmApiAdapter } from './api-adapter.js';
5
5
  import type { ILlm } from './llm.js';
6
6
  import type { IMcpClient } from './mcp-client.js';
7
+ import type { McpClientDescriptor } from './mcp-connection-strategy.js';
7
8
  import type { IModelProvider } from './model-provider.js';
8
9
  import type { IRag, IRagRegistry } from './rag.js';
9
10
  import type { IRequestLogger } from './request-logger.js';
10
- import type { LlmStreamChunk, Result } from './types.js';
11
+ import type { LlmStreamChunk, LlmTool, Result } from './types.js';
11
12
  /**
12
13
  * Public API surface of SmartAgent for consumers.
13
14
  * The full SmartAgent class lives in @mcp-abap-adt/llm-agent-libs.
@@ -57,5 +58,20 @@ export interface SmartAgentHandle<T extends ISmartAgent = ISmartAgent> {
57
58
  getApiAdapter(name: string): ILlmApiAdapter | undefined;
58
59
  /** List all registered API adapter names. */
59
60
  listApiAdapters(): string[];
61
+ /** Namespaced tool catalog snapshot (colliding tool names disambiguated).
62
+ * Undefined when namespacing was not computed for this handle. */
63
+ namespacedTools?: readonly LlmTool[];
64
+ /** Maps a namespaced tool name back to its originating slot + original name.
65
+ * Undefined when namespacing was not computed for this handle. */
66
+ toolProvenance?: ReadonlyMap<string, {
67
+ slotIndex: number;
68
+ originalName: string;
69
+ }>;
70
+ /** Stable per-slot MCP client descriptors (slotIndex + label) backing the
71
+ * namespaced tool catalog. Undefined when namespacing was not computed. */
72
+ mcpClientDescriptors?: readonly McpClientDescriptor[];
73
+ /** Number of MCP client slots configured (including not-yet-connected ones).
74
+ * Undefined when namespacing was not computed for this handle. */
75
+ configuredSlotCount?: number;
60
76
  }
61
77
  //# sourceMappingURL=builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/interfaces/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAMzD;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,CACL,cAAc,EAAE,MAAM,GAAG,OAAO,EAAE,EAClC,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC1D,aAAa,CACX,cAAc,EAAE,MAAM,GAAG,OAAO,EAAE,EAClC,OAAO,CAAC,EAAE,gBAAgB,GACzB,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAAC;CAC7D;AAMD,6DAA6D;AAC7D,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAM7E;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW;IACnE,2DAA2D;IAC3D,KAAK,EAAE,CAAC,CAAC;IACT;;;OAGG;IACH,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,iCAAiC;IACjC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC/B,mDAAmD;IACnD,aAAa,EAAE,cAAc,CAAC;IAC9B,0DAA0D;IAC1D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,oDAAoD;IACpD,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,yDAAyD;IACzD,SAAS,EAAE,mBAAmB,CAAC;IAC/B,sFAAsF;IACtF,WAAW,EAAE,YAAY,CAAC;IAC1B;oFACgF;IAChF,UAAU,EAAE,UAAU,EAAE,CAAC;IACzB,kEAAkE;IAClE,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,gDAAgD;IAChD,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC;IACxD,6CAA6C;IAC7C,eAAe,IAAI,MAAM,EAAE,CAAC;CAC7B"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/interfaces/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAMlE;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,CACL,cAAc,EAAE,MAAM,GAAG,OAAO,EAAE,EAClC,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC1D,aAAa,CACX,cAAc,EAAE,MAAM,GAAG,OAAO,EAAE,EAClC,OAAO,CAAC,EAAE,gBAAgB,GACzB,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAAC;CAC7D;AAMD,6DAA6D;AAC7D,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAM7E;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW;IACnE,2DAA2D;IAC3D,KAAK,EAAE,CAAC,CAAC;IACT;;;OAGG;IACH,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,iCAAiC;IACjC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC/B,mDAAmD;IACnD,aAAa,EAAE,cAAc,CAAC;IAC9B,0DAA0D;IAC1D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,oDAAoD;IACpD,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,yDAAyD;IACzD,SAAS,EAAE,mBAAmB,CAAC;IAC/B,sFAAsF;IACtF,WAAW,EAAE,YAAY,CAAC;IAC1B;oFACgF;IAChF,UAAU,EAAE,UAAU,EAAE,CAAC;IACzB,kEAAkE;IAClE,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,gDAAgD;IAChD,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC;IACxD,6CAA6C;IAC7C,eAAe,IAAI,MAAM,EAAE,CAAC;IAC5B;uEACmE;IACnE,eAAe,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IACrC;uEACmE;IACnE,cAAc,CAAC,EAAE,WAAW,CAC1B,MAAM,EACN;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAC5C,CAAC;IACF;gFAC4E;IAC5E,oBAAoB,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACtD;uEACmE;IACnE,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B"}
@@ -20,7 +20,7 @@ export type { IKnowledgeRagHandle, IToolsRagHandle, KnowledgeEntry, KnowledgeEnt
20
20
  export type { ILlm } from './llm.js';
21
21
  export type { ILlmCallStrategy } from './llm-call-strategy.js';
22
22
  export type { IMcpClient } from './mcp-client.js';
23
- export type { ConnectionStrategyOptions, IMcpConnectionStrategy, McpClientFactory, McpClientFactoryResult, McpConnectionConfig, McpConnectionResult, } from './mcp-connection-strategy.js';
23
+ export type { ConnectionStrategyOptions, IMcpConnectionStrategy, McpClientDescriptor, McpClientFactory, McpClientFactoryResult, McpConnectionConfig, McpConnectionResult, } from './mcp-connection-strategy.js';
24
24
  export type { IMcpFailureClassifier, McpFailureKind, } from './mcp-failure-classifier.js';
25
25
  export type { IMcpRequestHeadersStrategy } from './mcp-request-headers-strategy.js';
26
26
  export type { CounterSnapshot, HistogramSnapshot, ICounter, IHistogram, IMetrics, MetricsSnapshot, } from './metrics.js';
@@ -58,6 +58,7 @@ export type { ITaskFormalizer, ITaskSpec } from './task-spec.js';
58
58
  export { renderTaskSpec } from './task-spec.js';
59
59
  export { type IToolCatalogReporter, isToolCatalogReporter, type ToolCatalogStatus, } from './tool-catalog.js';
60
60
  export type { IToolLoopContextStrategy, JsonValue, SerializableStrategyState, ToolLoopContextBase, ToolLoopContextStrategyDeps, ToolLoopContextStrategyFactory, ToolRound, } from './tool-loop-context-strategy.js';
61
+ export { defaultToolRecordKey, type IToolRecordKey, type ToolKeyContext, toolNameFromRecord, } from './tool-record-key.js';
61
62
  export type { IToolSelectionStrategy } from './tool-selection-strategy.js';
62
63
  export type { ISpan, ITracer, SpanOptions, SpanStatus } from './tracer.js';
63
64
  export type { AgentConfig, CallOptions, ContextFrame, LlmFinishReason, LlmResponse, LlmStreamChunk, LlmTool, LlmToolCall, LlmToolCallDelta, LlmUsage, McpCallResult, McpTool, McpToolResult, ModelUsageEntry, RagMetadata, RagResult, Result, StreamHookContext, StreamToolCall, Subprompt, SubpromptType, TimingEntry, ToolCallRecord, ToolHeartbeat, TraceContext, } from './types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ export { CatalogCasError, SkillsIncompatibleError } from './skills-rag.js';
6
6
  export { TokenLedger } from './stepper.js';
7
7
  export { renderTaskSpec } from './task-spec.js';
8
8
  export { isToolCatalogReporter, } from './tool-catalog.js';
9
+ export { defaultToolRecordKey, toolNameFromRecord, } from './tool-record-key.js';
9
10
  export { AssemblerError, ClassifierError, isMcpUnavailable, LlmError, MCP_UNAVAILABLE_CODES, McpError, RagError, SkillError, SmartAgentError, } from './types.js';
10
11
  export { ValidatorError } from './validator.js';
11
12
  export { DefaultWaitStrategy } from './wait-strategy.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,iBAAiB,GAGlB,MAAM,sBAAsB,CAAC;AAiD9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAgG9D,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE/D,OAAO,EAEL,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AAkDjC,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AA0B3E,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAiB3C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAEL,qBAAqB,GAEtB,MAAM,mBAAmB,CAAC;AAuC3B,OAAO,EACL,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,QAAQ,EACR,qBAAqB,EACrB,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,iBAAiB,GAGlB,MAAM,sBAAsB,CAAC;AAiD9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAiG9D,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE/D,OAAO,EAEL,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AAkDjC,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AA0B3E,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAiB3C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAEL,qBAAqB,GAEtB,MAAM,mBAAmB,CAAC;AAU3B,OAAO,EACL,oBAAoB,EAGpB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AA8B9B,OAAO,EACL,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,QAAQ,EACR,qBAAqB,EACrB,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,8 +1,20 @@
1
1
  import type { CallOptions, ILogger, IMcpClient } from '@mcp-abap-adt/llm-agent';
2
2
  import type { IMcpRequestHeadersStrategy } from './mcp-request-headers-strategy.js';
3
+ export interface McpClientDescriptor {
4
+ /** Original configured-array position — stable across reconnect / peer outage. */
5
+ slotIndex: number;
6
+ /** The server's config `name`, if set. */
7
+ label?: string;
8
+ }
3
9
  export interface McpConnectionResult {
4
10
  clients: IMcpClient[];
5
11
  toolsChanged: boolean;
12
+ /** Per-client stable identity, aligned by index with `clients`. Optional:
13
+ * strategies that never filter may omit it (array index === config index). */
14
+ clientDescriptors?: readonly McpClientDescriptor[];
15
+ /** Total configured servers (not the active count) — stabilizes the record-key
16
+ * form under a filtered active set. Optional; defaults to clients.length. */
17
+ configuredSlotCount?: number;
6
18
  }
7
19
  export interface IMcpConnectionStrategy {
8
20
  resolve(currentClients: IMcpClient[], options?: CallOptions): Promise<McpConnectionResult>;
@@ -13,6 +25,8 @@ export interface McpConnectionConfig {
13
25
  url?: string;
14
26
  command?: string;
15
27
  args?: string[];
28
+ /** Stable, human-readable label used as the namespace prefix for this server's colliding tools. */
29
+ name?: string;
16
30
  /** HTTP transport headers (e.g. `Accept`, reverse-proxy routing like
17
31
  * `x-sap-destination`). Additive — strategies that ignore it are unaffected. */
18
32
  headers?: Record<string, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-connection-strategy.d.ts","sourceRoot":"","sources":["../../src/interfaces/mcp-connection-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAEpF,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,CACL,cAAc,EAAE,UAAU,EAAE,EAC5B,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEhC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB;qFACiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;uEAEmE;IACnE,sBAAsB,CAAC,EAAE,0BAA0B,CAAC;IACpD;+CAC2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;yCACqC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,MAAM,gBAAgB,GAAG,CAC7B,MAAM,EAAE,mBAAmB,KACxB,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAErC,MAAM,WAAW,yBAAyB;IACxC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
1
+ {"version":3,"file":"mcp-connection-strategy.d.ts","sourceRoot":"","sources":["../../src/interfaces/mcp-connection-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAEpF,MAAM,WAAW,mBAAmB;IAClC,kFAAkF;IAClF,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB;mFAC+E;IAC/E,iBAAiB,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACnD;kFAC8E;IAC9E,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,CACL,cAAc,EAAE,UAAU,EAAE,EAC5B,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEhC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,mGAAmG;IACnG,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;qFACiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;uEAEmE;IACnE,sBAAsB,CAAC,EAAE,0BAA0B,CAAC;IACpD;+CAC2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;yCACqC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,MAAM,gBAAgB,GAAG,CAC7B,MAAM,EAAE,mBAAmB,KACxB,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAErC,MAAM,WAAW,yBAAyB;IACxC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -0,0 +1,8 @@
1
+ import type { LlmTool } from './types.js';
2
+ /**
3
+ * Concatenate internal (MCP, already namespace-unique) and external
4
+ * (client-provided) tools for the LLM. Fail-fast on any name in BOTH sets:
5
+ * the offered list must be unique so classifyToolCalls cannot double-classify.
6
+ */
7
+ export declare function mergeOfferedTools(internal: readonly LlmTool[], external: readonly LlmTool[]): LlmTool[];
8
+ //# sourceMappingURL=merge-offered-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-offered-tools.d.ts","sourceRoot":"","sources":["../../src/interfaces/merge-offered-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,QAAQ,EAAE,SAAS,OAAO,EAAE,GAC3B,OAAO,EAAE,CASX"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Concatenate internal (MCP, already namespace-unique) and external
3
+ * (client-provided) tools for the LLM. Fail-fast on any name in BOTH sets:
4
+ * the offered list must be unique so classifyToolCalls cannot double-classify.
5
+ */
6
+ export function mergeOfferedTools(internal, external) {
7
+ const internalNames = new Set(internal.map((x) => x.name));
8
+ for (const x of external)
9
+ if (internalNames.has(x.name))
10
+ throw new Error(`tool "${x.name}" is both an internal MCP tool (exposed name) and a ` +
11
+ `client-provided external tool — rename the external tool.`);
12
+ return [...internal, ...external];
13
+ }
14
+ //# sourceMappingURL=merge-offered-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-offered-tools.js","sourceRoot":"","sources":["../../src/interfaces/merge-offered-tools.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAA4B,EAC5B,QAA4B;IAE5B,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,KAAK,MAAM,CAAC,IAAI,QAAQ;QACtB,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,SAAS,CAAC,CAAC,IAAI,sDAAsD;gBACnE,2DAA2D,CAC9D,CAAC;IACN,OAAO,CAAC,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC;AACpC,CAAC"}
@@ -47,6 +47,10 @@ export interface IPipelineContext {
47
47
  ragRegistry?: IRagRegistry;
48
48
  callMcp(name: string, args: unknown, signal?: AbortSignal): Promise<McpCallResult>;
49
49
  mcpClients?: IMcpClient[];
50
+ /** Namespaced-tool-name → owning MCP client, for dispatching a namespaced
51
+ * tool call to its originating client. Undefined when namespacing is not
52
+ * in use for this pipeline. */
53
+ toolClientMap?: Map<string, IMcpClient>;
50
54
  subagents?: ReadonlyArray<{
51
55
  name: string;
52
56
  description?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline-plugin.d.ts","sourceRoot":"","sources":["../../src/interfaces/pipeline-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline-plugin.d.ts","sourceRoot":"","sources":["../../src/interfaces/pipeline-plugin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,mEAAmE;AACnE,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7C,qFAAqF;AACrF,MAAM,WAAW,yBAA0B,SAAQ,WAAW;IAC5D,WAAW,CAAC,MAAM,EAAE;QAClB,OAAO,CAAC,EAAE,IAAI,CAAC;QACf,SAAS,CAAC,EAAE,IAAI,CAAC;QACjB,aAAa,CAAC,EAAE,IAAI,CAAC;KACtB,GAAG,IAAI,CAAC;CACV;AAED;kFACkF;AAClF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,2EAA2E;IAC3E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;oFACoF;AACpF,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,8EAA8E;IAC9E,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAAC,mBAAmB,CAAC,CAAC;IACtE;wFACoF;IACpF,QAAQ,EAAE,eAAe,CAAC;IAC1B,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,OAAO,CACL,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1B,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC;IAC1B;;oCAEgC;IAChC,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,SAAS,CAAC,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClE,aAAa,IAAI,MAAM,CAAC;IACxB,UAAU,IAAI,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACvC,oBAAoB,CAAC,EAAE,qBAAqB,CAAC;IAC7C,8BAA8B,CAAC,EAAE,8BAA8B,CAAC;IAChE;;+EAE2E;IAC3E,oBAAoB,CAAC,EAAE,qBAAqB,CAAC;IAC7C;;2EAEuE;IACvE,mBAAmB,CAAC,EAAE,oBAAoB,CAAC;IAC3C;qFACiF;IACjF,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;IACvC;;gCAE4B;IAC5B,YAAY,CAAC,EAAE,aAAa,CAAC;CAC9B;AAED;8DAC8D;AAC9D,MAAM,WAAW,eAAe,CAAC,MAAM,GAAG,OAAO;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC;IAClC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC1E"}
@@ -70,6 +70,21 @@ export interface IRagBackendWriter {
70
70
  deleteByIdRaw(id: string, options?: CallOptions): Promise<Result<boolean, RagError>>;
71
71
  clearAll?(): Promise<Result<void, RagError>>;
72
72
  upsertPrecomputedRaw?(id: string, text: string, vector: number[], metadata: RagMetadata, options?: CallOptions): Promise<Result<void, RagError>>;
73
+ /**
74
+ * Write many precomputed records in one call, backed by the store's native
75
+ * bulk API where one exists (Qdrant accepts many points per request).
76
+ *
77
+ * Optional and additive: a writer that does not implement it forces the
78
+ * caller onto the per-record path. All-or-nothing — a single `Result` for the
79
+ * whole batch, so a caller that needs to know which record failed must retry
80
+ * per-record on error.
81
+ */
82
+ upsertManyPrecomputedRaw?(items: ReadonlyArray<{
83
+ id: string;
84
+ text: string;
85
+ vector: number[];
86
+ metadata: RagMetadata;
87
+ }>, options?: CallOptions): Promise<Result<void, RagError>>;
73
88
  }
74
89
  export type RagCollectionScope = 'session' | 'user' | 'global';
75
90
  export interface RagCollectionMeta {
@@ -1 +1 @@
1
- {"version":3,"file":"rag.d.ts","sourceRoot":"","sources":["../../src/interfaces/rag.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rag.d.ts","sourceRoot":"","sources":["../../src/interfaces/rag.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { IMcpClient } from './mcp-client.js';
2
+ export interface ToolNamespaceContext {
3
+ /** Original tool name the server exposes. */
4
+ toolName: string;
5
+ /** Prefix source resolved by the builder: the server's config `name`, else `s${slotIndex}`. */
6
+ prefix: string;
7
+ /** True when this tool name is exposed by more than one currently-active client. */
8
+ colliding: boolean;
9
+ }
10
+ export interface IToolNamespace {
11
+ /** Name the LLM sees / RAG stores. Must be non-empty, `^[a-zA-Z0-9_-]+$`, <= 64 chars.
12
+ * The builder validates this output — an invalid name fails fast. */
13
+ expose(ctx: ToolNamespaceContext): string;
14
+ }
15
+ /** Bare when unique; `${prefix}__${toolName}` on a collision. */
16
+ export declare const defaultToolNamespace: IToolNamespace;
17
+ /**
18
+ * Wrap an MCP client so `callTool` always targets `originalName`, whatever
19
+ * (exposed) name the caller passes. All other IMcpClient methods proxy straight
20
+ * through. This encapsulates the namespace strip in the tool→client map value,
21
+ * so no executor call site needs to know about namespacing.
22
+ */
23
+ export declare function bindToolCallName(client: IMcpClient, originalName: string): IMcpClient;
24
+ //# sourceMappingURL=tool-namespace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-namespace.d.ts","sourceRoot":"","sources":["../../src/interfaces/tool-namespace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,WAAW,oBAAoB;IACnC,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,+FAA+F;IAC/F,MAAM,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B;0EACsE;IACtE,MAAM,CAAC,GAAG,EAAE,oBAAoB,GAAG,MAAM,CAAC;CAC3C;AAED,iEAAiE;AACjE,eAAO,MAAM,oBAAoB,EAAE,cAGlC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,MAAM,GACnB,UAAU,CASZ"}
@@ -0,0 +1,20 @@
1
+ /** Bare when unique; `${prefix}__${toolName}` on a collision. */
2
+ export const defaultToolNamespace = {
3
+ expose: ({ toolName, prefix, colliding }) => colliding ? `${prefix}__${toolName}` : toolName,
4
+ };
5
+ /**
6
+ * Wrap an MCP client so `callTool` always targets `originalName`, whatever
7
+ * (exposed) name the caller passes. All other IMcpClient methods proxy straight
8
+ * through. This encapsulates the namespace strip in the tool→client map value,
9
+ * so no executor call site needs to know about namespacing.
10
+ */
11
+ export function bindToolCallName(client, originalName) {
12
+ return {
13
+ listTools: (options) => client.listTools(options),
14
+ callTool: (_exposedName, args, options) => client.callTool(originalName, args, options),
15
+ ...(client.healthCheck
16
+ ? { healthCheck: (options) => client.healthCheck?.(options) }
17
+ : {}),
18
+ };
19
+ }
20
+ //# sourceMappingURL=tool-namespace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-namespace.js","sourceRoot":"","sources":["../../src/interfaces/tool-namespace.ts"],"names":[],"mappings":"AAiBA,iEAAiE;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAmB;IAClD,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,EAAU,EAAE,CAClD,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ;CAClD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAkB,EAClB,YAAoB;IAEpB,OAAO;QACL,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;QACjD,QAAQ,EAAE,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CACxC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC;QAC9C,GAAG,CAAC,MAAM,CAAC,WAAW;YACpB,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE;YAC7D,CAAC,CAAC,EAAE,CAAC;KACM,CAAC;AAClB,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Strategy for the RAG record id under which an MCP tool is stored.
3
+ *
4
+ * A variation point the consumer owns: the default gives a working,
5
+ * collision-free *storage* key, and a consumer who knows its servers (real
6
+ * names, a per-server collection layout, or a faster-but-conflicting scheme)
7
+ * swaps in its own — provided the id keeps the `tool:` prefix (see `key`). The
8
+ * engine stays MCP-agnostic — it never assumes a fixed server set.
9
+ *
10
+ * Scope: this disambiguates records in the tools RAG store (so same-named tools
11
+ * from different servers both survive, improving recall). It does NOT route a
12
+ * call to a specific server — tool selection deduplicates by name because LLM
13
+ * tool-calling needs unique names, so a colliding name resolves to the first
14
+ * client. Per-server call routing needs tool-name namespacing, tracked apart.
15
+ */
16
+ export interface ToolKeyContext {
17
+ /** The tool's own name, as exposed by its MCP server. */
18
+ toolName: string;
19
+ /**
20
+ * Zero-based index of the client this tool came from. One MCP server maps to
21
+ * exactly one client, so within a boot this identifies the server. Stable for
22
+ * the run; not durable across restarts if the configured order changes.
23
+ */
24
+ clientIndex: number;
25
+ /** Total number of connected MCP clients this run. */
26
+ clientCount: number;
27
+ }
28
+ export interface IToolRecordKey {
29
+ /**
30
+ * The record id for a tool. Must be stable for a given (name, server), and
31
+ * must start with `tool:` — retrieval uses that prefix to tell tool records
32
+ * apart from skill records (`skill:`) in the same store. The tool name is
33
+ * stored in metadata separately, so anything after `tool:` is free.
34
+ */
35
+ key(ctx: ToolKeyContext): string;
36
+ }
37
+ /**
38
+ * Default: a single MCP server keeps the historical `tool:${name}` key, so
39
+ * existing single-server collections are unchanged. With two or more servers
40
+ * the client index disambiguates, so identically named tools from different
41
+ * servers no longer overwrite each other.
42
+ */
43
+ export declare const defaultToolRecordKey: IToolRecordKey;
44
+ /**
45
+ * Recover a tool's name from a stored record, independent of the key scheme.
46
+ *
47
+ * The name is written into record metadata at vectorization time, so this
48
+ * works for ANY {@link IToolRecordKey} — including a consumer's custom scheme —
49
+ * without parsing the id. The id parse is a fallback for records written before
50
+ * the name was stored, and it understands both default forms (`tool:name` and
51
+ * `tool:<index>:name`).
52
+ *
53
+ * Returns `undefined` for a record that is not a tool (no `tool:` id).
54
+ */
55
+ export declare function toolNameFromRecord(meta: {
56
+ id?: unknown;
57
+ name?: unknown;
58
+ }): string | undefined;
59
+ //# sourceMappingURL=tool-record-key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-record-key.d.ts","sourceRoot":"","sources":["../../src/interfaces/tool-record-key.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,cAAc;IAC7B,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAAC;CAClC;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,cAMlC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,MAAM,GAAG,SAAS,CAWrB"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Default: a single MCP server keeps the historical `tool:${name}` key, so
3
+ * existing single-server collections are unchanged. With two or more servers
4
+ * the client index disambiguates, so identically named tools from different
5
+ * servers no longer overwrite each other.
6
+ */
7
+ export const defaultToolRecordKey = {
8
+ key({ toolName, clientIndex, clientCount }) {
9
+ return clientCount <= 1
10
+ ? `tool:${toolName}`
11
+ : `tool:${clientIndex}:${toolName}`;
12
+ },
13
+ };
14
+ /**
15
+ * Recover a tool's name from a stored record, independent of the key scheme.
16
+ *
17
+ * The name is written into record metadata at vectorization time, so this
18
+ * works for ANY {@link IToolRecordKey} — including a consumer's custom scheme —
19
+ * without parsing the id. The id parse is a fallback for records written before
20
+ * the name was stored, and it understands both default forms (`tool:name` and
21
+ * `tool:<index>:name`).
22
+ *
23
+ * Returns `undefined` for a record that is not a tool (no `tool:` id).
24
+ */
25
+ export function toolNameFromRecord(meta) {
26
+ const id = meta?.id;
27
+ if (typeof id !== 'string' || !id.startsWith('tool:'))
28
+ return undefined;
29
+ if (typeof meta.name === 'string' && meta.name.length > 0)
30
+ return meta.name;
31
+ const rest = id.slice(5);
32
+ // Default multi-server form `tool:<index>:<name>` — a numeric first segment is
33
+ // the client index, so the name follows it.
34
+ const indexed = /^\d+:(.*)$/.exec(rest);
35
+ if (indexed)
36
+ return indexed[1];
37
+ // Otherwise the historical `tool:<name>[:<suffix>]` form — name comes first.
38
+ return rest.replace(/:.*$/, '');
39
+ }
40
+ //# sourceMappingURL=tool-record-key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-record-key.js","sourceRoot":"","sources":["../../src/interfaces/tool-record-key.ts"],"names":[],"mappings":"AAsCA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAmB;IAClD,GAAG,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE;QACxC,OAAO,WAAW,IAAI,CAAC;YACrB,CAAC,CAAC,QAAQ,QAAQ,EAAE;YACpB,CAAC,CAAC,QAAQ,WAAW,IAAI,QAAQ,EAAE,CAAC;IACxC,CAAC;CACF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAGlC;IACC,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC;IACpB,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IACxE,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC;IAC5E,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,+EAA+E;IAC/E,4CAA4C;IAC5C,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/B,6EAA6E;IAC7E,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAClC,CAAC"}
@@ -3,14 +3,34 @@
3
3
  *
4
4
  * When the circuit is open, calls throw an error rather than hitting the
5
5
  * underlying embedding service.
6
+ *
7
+ * Prefer the {@link withCircuitBreaker} factory: it selects a non-batch or
8
+ * batch class by inspecting the inner embedder, so it preserves batch
9
+ * capability rather than fabricating it. The exported classes are kept for
10
+ * direct construction and backward compatibility.
6
11
  */
7
- import type { CallOptions, IEmbedder, IEmbedResult } from '@mcp-abap-adt/llm-agent';
12
+ import type { CallOptions, IEmbedder, IEmbedderBatch, IEmbedResult } from '@mcp-abap-adt/llm-agent';
8
13
  import type { CircuitBreaker } from './circuit-breaker.js';
9
- export declare class CircuitBreakerEmbedder implements IEmbedder {
10
- private readonly inner;
14
+ /** Non-batch breaker decorator exposes only `embed()`. */
15
+ export declare class CircuitBreakerEmbedderBase implements IEmbedder {
16
+ protected readonly inner: IEmbedder;
11
17
  readonly breaker: CircuitBreaker;
12
18
  constructor(inner: IEmbedder, breaker: CircuitBreaker);
13
19
  embed(text: string, options?: CallOptions): Promise<IEmbedResult>;
20
+ }
21
+ /**
22
+ * Batch breaker decorator. Unchanged public shape: it always exposes
23
+ * `embedBatch`, so `new CircuitBreakerEmbedder(nonBatchInner, ...)` still
24
+ * reports batch capability it lacks (and throws at call time). Construct via
25
+ * {@link withCircuitBreaker} to avoid that.
26
+ */
27
+ export declare class CircuitBreakerEmbedder extends CircuitBreakerEmbedderBase implements IEmbedderBatch {
14
28
  embedBatch(texts: string[], options?: CallOptions): Promise<IEmbedResult[]>;
15
29
  }
30
+ /**
31
+ * Wrap an embedder with a circuit breaker, preserving batch capability: a
32
+ * batch-capable inner gets the batch class, a non-batch inner the base class.
33
+ * The same two-class-behind-a-factory shape as `wrapEmbedder` / `withRetry`.
34
+ */
35
+ export declare function withCircuitBreaker(inner: IEmbedder, breaker: CircuitBreaker): IEmbedder;
16
36
  //# sourceMappingURL=circuit-breaker-embedder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"circuit-breaker-embedder.d.ts","sourceRoot":"","sources":["../../src/resilience/circuit-breaker-embedder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,YAAY,EACb,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,qBAAa,sBAAuB,YAAW,SAAS;IAEpD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,QAAQ,CAAC,OAAO,EAAE,cAAc;gBADf,KAAK,EAAE,SAAS,EACxB,OAAO,EAAE,cAAc;IAG5B,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAcjE,UAAU,CACd,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,YAAY,EAAE,CAAC;CAmB3B"}
1
+ {"version":3,"file":"circuit-breaker-embedder.d.ts","sourceRoot":"","sources":["../../src/resilience/circuit-breaker-embedder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,cAAc,EACd,YAAY,EACb,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,4DAA4D;AAC5D,qBAAa,0BAA2B,YAAW,SAAS;IAExD,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS;IACnC,QAAQ,CAAC,OAAO,EAAE,cAAc;gBADb,KAAK,EAAE,SAAS,EAC1B,OAAO,EAAE,cAAc;IAG5B,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;CAaxE;AAED;;;;;GAKG;AACH,qBAAa,sBACX,SAAQ,0BACR,YAAW,cAAc;IAEnB,UAAU,CACd,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,YAAY,EAAE,CAAC;CAmB3B;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,cAAc,GACtB,SAAS,CAIX"}
@@ -3,9 +3,15 @@
3
3
  *
4
4
  * When the circuit is open, calls throw an error rather than hitting the
5
5
  * underlying embedding service.
6
+ *
7
+ * Prefer the {@link withCircuitBreaker} factory: it selects a non-batch or
8
+ * batch class by inspecting the inner embedder, so it preserves batch
9
+ * capability rather than fabricating it. The exported classes are kept for
10
+ * direct construction and backward compatibility.
6
11
  */
7
12
  import { isBatchEmbedder, RagError } from '@mcp-abap-adt/llm-agent';
8
- export class CircuitBreakerEmbedder {
13
+ /** Non-batch breaker decorator — exposes only `embed()`. */
14
+ export class CircuitBreakerEmbedderBase {
9
15
  inner;
10
16
  breaker;
11
17
  constructor(inner, breaker) {
@@ -26,6 +32,14 @@ export class CircuitBreakerEmbedder {
26
32
  throw err;
27
33
  }
28
34
  }
35
+ }
36
+ /**
37
+ * Batch breaker decorator. Unchanged public shape: it always exposes
38
+ * `embedBatch`, so `new CircuitBreakerEmbedder(nonBatchInner, ...)` still
39
+ * reports batch capability it lacks (and throws at call time). Construct via
40
+ * {@link withCircuitBreaker} to avoid that.
41
+ */
42
+ export class CircuitBreakerEmbedder extends CircuitBreakerEmbedderBase {
29
43
  async embedBatch(texts, options) {
30
44
  if (!this.breaker.isCallPermitted) {
31
45
  throw new RagError('Embedder circuit breaker is open', 'CIRCUIT_OPEN');
@@ -44,4 +58,14 @@ export class CircuitBreakerEmbedder {
44
58
  }
45
59
  }
46
60
  }
61
+ /**
62
+ * Wrap an embedder with a circuit breaker, preserving batch capability: a
63
+ * batch-capable inner gets the batch class, a non-batch inner the base class.
64
+ * The same two-class-behind-a-factory shape as `wrapEmbedder` / `withRetry`.
65
+ */
66
+ export function withCircuitBreaker(inner, breaker) {
67
+ return isBatchEmbedder(inner)
68
+ ? new CircuitBreakerEmbedder(inner, breaker)
69
+ : new CircuitBreakerEmbedderBase(inner, breaker);
70
+ }
47
71
  //# sourceMappingURL=circuit-breaker-embedder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"circuit-breaker-embedder.js","sourceRoot":"","sources":["../../src/resilience/circuit-breaker-embedder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGpE,MAAM,OAAO,sBAAsB;IAEd;IACR;IAFX,YACmB,KAAgB,EACxB,OAAuB;QADf,UAAK,GAAL,KAAK,CAAW;QACxB,YAAO,GAAP,OAAO,CAAgB;IAC/B,CAAC;IAEJ,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,OAAqB;QAC7C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAClC,MAAM,IAAI,QAAQ,CAAC,kCAAkC,EAAE,cAAc,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACrD,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAC7B,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAC7B,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CACd,KAAe,EACf,OAAqB;QAErB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAClC,MAAM,IAAI,QAAQ,CAAC,kCAAkC,EAAE,cAAc,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,QAAQ,CAChB,iDAAiD,EACjD,aAAa,CACd,CAAC;QACJ,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC3D,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAC7B,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAC7B,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"circuit-breaker-embedder.js","sourceRoot":"","sources":["../../src/resilience/circuit-breaker-embedder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGpE,4DAA4D;AAC5D,MAAM,OAAO,0BAA0B;IAEhB;IACV;IAFX,YACqB,KAAgB,EAC1B,OAAuB;QADb,UAAK,GAAL,KAAK,CAAW;QAC1B,YAAO,GAAP,OAAO,CAAgB;IAC/B,CAAC;IAEJ,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,OAAqB;QAC7C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAClC,MAAM,IAAI,QAAQ,CAAC,kCAAkC,EAAE,cAAc,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACrD,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAC7B,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAC7B,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,sBACX,SAAQ,0BAA0B;IAGlC,KAAK,CAAC,UAAU,CACd,KAAe,EACf,OAAqB;QAErB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAClC,MAAM,IAAI,QAAQ,CAAC,kCAAkC,EAAE,cAAc,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,QAAQ,CAChB,iDAAiD,EACjD,aAAa,CACd,CAAC;QACJ,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC3D,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAC7B,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAC7B,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAgB,EAChB,OAAuB;IAEvB,OAAO,eAAe,CAAC,KAAK,CAAC;QAC3B,CAAC,CAAC,IAAI,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC;QAC5C,CAAC,CAAC,IAAI,0BAA0B,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC"}
@@ -1,8 +1,8 @@
1
1
  export { BatchChunkingEmbedder, DEFAULT_MAX_BATCH_SIZE, } from './batch-chunking-embedder.js';
2
2
  export { CircuitBreaker, type CircuitBreakerConfig, type CircuitState, } from './circuit-breaker.js';
3
- export { CircuitBreakerEmbedder } from './circuit-breaker-embedder.js';
3
+ export { CircuitBreakerEmbedder, CircuitBreakerEmbedderBase, withCircuitBreaker, } from './circuit-breaker-embedder.js';
4
4
  export { CircuitBreakerLlm } from './circuit-breaker-llm.js';
5
5
  export { brandResilient, type ComposeResilienceOptions, composeResilientEmbedder, type EmbedderResilienceMetadata, getResilienceMetadata, RESILIENCE_META, } from './embedder-resilience.js';
6
6
  export { FallbackRag } from './fallback-rag.js';
7
- export { type EmbedderRetryOptions, extractStatusCode, RetryBatchEmbedder, RetryEmbedder, withRetry, } from './retry-embedder.js';
7
+ export { type EmbedderRetryOptions, extractStatusCode, isRetryableStatus, RetryBatchEmbedder, RetryEmbedder, withRetry, } from './retry-embedder.js';
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resilience/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,cAAc,EACd,KAAK,oBAAoB,EACzB,KAAK,YAAY,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EACL,cAAc,EACd,KAAK,wBAAwB,EAC7B,wBAAwB,EACxB,KAAK,0BAA0B,EAC/B,qBAAqB,EACrB,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,KAAK,oBAAoB,EACzB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,SAAS,GACV,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resilience/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,cAAc,EACd,KAAK,oBAAoB,EACzB,KAAK,YAAY,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EACL,cAAc,EACd,KAAK,wBAAwB,EAC7B,wBAAwB,EACxB,KAAK,0BAA0B,EAC/B,qBAAqB,EACrB,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,KAAK,oBAAoB,EACzB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,SAAS,GACV,MAAM,qBAAqB,CAAC"}
@@ -1,8 +1,8 @@
1
1
  export { BatchChunkingEmbedder, DEFAULT_MAX_BATCH_SIZE, } from './batch-chunking-embedder.js';
2
2
  export { CircuitBreaker, } from './circuit-breaker.js';
3
- export { CircuitBreakerEmbedder } from './circuit-breaker-embedder.js';
3
+ export { CircuitBreakerEmbedder, CircuitBreakerEmbedderBase, withCircuitBreaker, } from './circuit-breaker-embedder.js';
4
4
  export { CircuitBreakerLlm } from './circuit-breaker-llm.js';
5
5
  export { brandResilient, composeResilientEmbedder, getResilienceMetadata, RESILIENCE_META, } from './embedder-resilience.js';
6
6
  export { FallbackRag } from './fallback-rag.js';
7
- export { extractStatusCode, RetryBatchEmbedder, RetryEmbedder, withRetry, } from './retry-embedder.js';
7
+ export { extractStatusCode, isRetryableStatus, RetryBatchEmbedder, RetryEmbedder, withRetry, } from './retry-embedder.js';
8
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resilience/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EACL,cAAc,EAEd,wBAAwB,EAExB,qBAAqB,EACrB,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAEL,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,SAAS,GACV,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resilience/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EACL,cAAc,EAEd,wBAAwB,EAExB,qBAAqB,EACrB,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAEL,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,SAAS,GACV,MAAM,qBAAqB,CAAC"}
@@ -39,6 +39,19 @@ type ResolvedRetryOptions = Omit<EmbedderRetryOptions, 'waitStrategy'> & {
39
39
  * chain cannot hang. Returns undefined when no numeric status is present.
40
40
  */
41
41
  export declare function extractStatusCode(err: unknown): number | undefined;
42
+ /**
43
+ * Whether a thrown value should be retried against a set of HTTP status codes.
44
+ *
45
+ * A structured status (own `status`/`statusCode`, or the same on `cause`) is
46
+ * authoritative. Only when none is present does it fall back to the message,
47
+ * and there it matches on **word boundaries** — a bare `includes('429')` also
48
+ * fires on `4290`, an id, or a byte count, turning a hard error into a
49
+ * multi-second backoff stall.
50
+ *
51
+ * Shared by both retry decorators (embedder and LLM) so the classification
52
+ * cannot drift between them.
53
+ */
54
+ export declare function isRetryableStatus(err: unknown, retryOn: number[]): boolean;
42
55
  export declare class RetryEmbedder implements IEmbedder {
43
56
  protected readonly inner: IEmbedder;
44
57
  protected readonly opts: ResolvedRetryOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"retry-embedder.d.ts","sourceRoot":"","sources":["../../src/resilience/retry-embedder.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,YAAY,EACb,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAGpE,MAAM,WAAW,oBAAoB;IACnC,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,aAAa,CAAC;CAC9B;AAED,0EAA0E;AAC1E,KAAK,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE,cAAc,CAAC,GAAG;IACvE,YAAY,EAAE,aAAa,CAAC;CAC7B,CAAC;AAYF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAgBlE;AAED,qBAAa,aAAc,YAAW,SAAS;IAI3C,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS;IAHrC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;gBAGzB,KAAK,EAAE,SAAS,EACnC,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAYnC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;cAIvD,GAAG,CAAC,CAAC,EACnB,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACtB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,CAAC,CAAC;IAeb,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAY5C;;;;;;OAMG;cACa,OAAO,CACrB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC;CAIjB;AAED,qBAAa,kBACX,SAAQ,aACR,YAAW,cAAc;IAGvB,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,cAAc;gBAArB,KAAK,EAAE,cAAc,EACxC,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAKnC,UAAU,CACd,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,YAAY,EAAE,CAAC;CAG3B;AAED,6EAA6E;AAC7E,wBAAgB,SAAS,CACvB,KAAK,EAAE,SAAS,EAChB,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACtC,SAAS,CAIX"}
1
+ {"version":3,"file":"retry-embedder.d.ts","sourceRoot":"","sources":["../../src/resilience/retry-embedder.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,YAAY,EACb,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAGpE,MAAM,WAAW,oBAAoB;IACnC,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,aAAa,CAAC;CAC9B;AAED,0EAA0E;AAC1E,KAAK,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE,cAAc,CAAC,GAAG;IACvE,YAAY,EAAE,aAAa,CAAC;CAC7B,CAAC;AAYF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAgBlE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAK1E;AAED,qBAAa,aAAc,YAAW,SAAS;IAI3C,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS;IAHrC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;gBAGzB,KAAK,EAAE,SAAS,EACnC,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAYnC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;cAIvD,GAAG,CAAC,CAAC,EACnB,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACtB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,CAAC,CAAC;IAeb,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAI5C;;;;;;OAMG;cACa,OAAO,CACrB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC;CAIjB;AAED,qBAAa,kBACX,SAAQ,aACR,YAAW,cAAc;IAGvB,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,cAAc;gBAArB,KAAK,EAAE,cAAc,EACxC,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAKnC,UAAU,CACd,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,YAAY,EAAE,CAAC;CAG3B;AAED,6EAA6E;AAC7E,wBAAgB,SAAS,CACvB,KAAK,EAAE,SAAS,EAChB,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACtC,SAAS,CAIX"}
@@ -39,6 +39,25 @@ export function extractStatusCode(err) {
39
39
  }
40
40
  return undefined;
41
41
  }
42
+ /**
43
+ * Whether a thrown value should be retried against a set of HTTP status codes.
44
+ *
45
+ * A structured status (own `status`/`statusCode`, or the same on `cause`) is
46
+ * authoritative. Only when none is present does it fall back to the message,
47
+ * and there it matches on **word boundaries** — a bare `includes('429')` also
48
+ * fires on `4290`, an id, or a byte count, turning a hard error into a
49
+ * multi-second backoff stall.
50
+ *
51
+ * Shared by both retry decorators (embedder and LLM) so the classification
52
+ * cannot drift between them.
53
+ */
54
+ export function isRetryableStatus(err, retryOn) {
55
+ const status = extractStatusCode(err);
56
+ if (status !== undefined)
57
+ return retryOn.includes(status);
58
+ const msg = err instanceof Error ? err.message : String(err);
59
+ return retryOn.some((code) => new RegExp(`\\b${code}\\b`).test(msg));
60
+ }
42
61
  export class RetryEmbedder {
43
62
  inner;
44
63
  opts;
@@ -72,14 +91,7 @@ export class RetryEmbedder {
72
91
  }
73
92
  }
74
93
  isRetryable(err) {
75
- const status = extractStatusCode(err);
76
- if (status !== undefined)
77
- return this.opts.retryOn.includes(status);
78
- // Last resort: some adapters report the status only in the message. Match
79
- // on word boundaries rather than a bare substring, so an id or a byte count
80
- // containing "429" does not trigger a retry.
81
- const msg = err instanceof Error ? err.message : String(err);
82
- return this.opts.retryOn.some((code) => new RegExp(`\\b${code}\\b`).test(msg));
94
+ return isRetryableStatus(err, this.opts.retryOn);
83
95
  }
84
96
  /**
85
97
  * Delegated to IWaitStrategy rather than hand-rolled: honouring the signal is
@@ -1 +1 @@
1
- {"version":3,"file":"retry-embedder.js","sourceRoot":"","sources":["../../src/resilience/retry-embedder.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AA2BrE,MAAM,eAAe,GAAyB;IAC5C,WAAW,EAAE,CAAC;IACd,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAC7B,6CAA6C;IAC7C,YAAY,EAAE,IAAI,mBAAmB,EAAE;CACxC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,CAAC;AAE1B;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAW,CAAC;IACnC,IAAI,GAAG,GAAY,GAAG,CAAC;IACvB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,eAAe,EAAE,KAAK,EAAE,EAAE,CAAC;QACrD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QACxE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjB,MAAM,GAAG,GAAG,GAIX,CAAC;QACF,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC;QACtD,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC,UAAU,CAAC;QAC9D,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC;IAClB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,OAAO,aAAa;IAIH;IAHF,IAAI,CAAuB;IAE9C,YACqB,KAAgB,EACnC,OAAuC;QADpB,UAAK,GAAL,KAAK,CAAW;QAGnC,2DAA2D;QAC3D,2EAA2E;QAC3E,4CAA4C;QAC5C,IAAI,CAAC,IAAI,GAAG;YACV,GAAG,eAAe;YAClB,GAAG,OAAO;YACV,YAAY,EAAE,OAAO,EAAE,YAAY,IAAI,eAAe,CAAC,YAAY;SACpE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,OAAqB;QAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAES,KAAK,CAAC,GAAG,CACjB,IAAsB,EACtB,OAAqB;QAErB,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;YAClC,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;gBAC7B,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAC3C,CAAC;YACD,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,EAAE,CAAC;YACtB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;oBAC5D,MAAM,GAAG,CAAC;gBACZ,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IAES,WAAW,CAAC,GAAY;QAChC,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpE,0EAA0E;QAC1E,4EAA4E;QAC5E,6CAA6C;QAC7C,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACrC,IAAI,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CACtC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACO,KAAK,CAAC,OAAO,CACrB,OAAe,EACf,MAAoB;QAEpB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,OAAO,CAAC;QACjD,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;CACF;AAED,MAAM,OAAO,kBACX,SAAQ,aAAa;IAIA;IADrB,YACqB,KAAqB,EACxC,OAAuC;QAEvC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAHH,UAAK,GAAL,KAAK,CAAgB;IAI1C,CAAC;IAED,KAAK,CAAC,UAAU,CACd,KAAe,EACf,OAAqB;QAErB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;CACF;AAED,6EAA6E;AAC7E,MAAM,UAAU,SAAS,CACvB,KAAgB,EAChB,OAAuC;IAEvC,OAAO,eAAe,CAAC,KAAK,CAAC;QAC3B,CAAC,CAAC,IAAI,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC;QACxC,CAAC,CAAC,IAAI,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"retry-embedder.js","sourceRoot":"","sources":["../../src/resilience/retry-embedder.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcp-abap-adt/llm-agent",
3
- "version": "20.8.0",
3
+ "version": "20.9.0",
4
4
  "description": "Core interfaces, types, and lightweight default implementations for LLM agent orchestration.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",