@xemahq/llm-client-nest 0.3.1 → 0.5.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.
package/README.md CHANGED
@@ -103,3 +103,46 @@ misconfiguration without string-matching. A configuration fault is never
103
103
  swallowed: one service's query expansion spent an unbounded period silently off
104
104
  because a 400 on every mint was absorbed by a `catch { return null }` written
105
105
  for transport blips.
106
+
107
+ ## Cancellation
108
+
109
+ Every call path takes an optional caller `AbortSignal`: `chat`, `chatStructured`
110
+ and `chatStream` read `request.signal`; `embed` reads `options.signal`; the
111
+ minter's `acquire` and `mintUncached` take `{ signal }`.
112
+
113
+ ```ts
114
+ const result = await llm.chat(context, { messages, maxTokens, signal: run.signal });
115
+ ```
116
+
117
+ - An aborted call rejects with `LlmClientAbortedError` — an `LlmClientError`
118
+ with `reason: CallerAborted`, never `transient`, never retried. Its
119
+ `abortReason` is the signal's own `reason`, unchanged. `isLlmClientAbort(err)`
120
+ is the one-line test.
121
+ - The signal composes with the per-call deadline. Whichever fires first ends the
122
+ call, and `error.termination` (`caller_abort` | `deadline`) says which. A
123
+ deadline still fails exactly as it always has (`GatewayCallFailed`,
124
+ `transient`).
125
+ - The abort reaches the wire: an in-flight request, a body being read, or a
126
+ stream being consumed is torn down and its socket closed.
127
+ - A shared (single-flight, cached) grant mint is NOT cancelled by one caller's
128
+ signal — other callers may be waiting on it. The aborting caller stops
129
+ waiting at once and the grant is cached for the next call. `mintUncached`,
130
+ which is unshared, aborts the mint request itself and ends its retry backoff.
131
+ - Without a signal, behaviour is unchanged.
132
+
133
+ ## Transport deadline
134
+
135
+ The per-call deadline (`timeoutMs`, default 120 s) is the only limit on a call.
136
+ Every request goes through a dispatcher that sets undici's `headersTimeout` and
137
+ `bodyTimeout` to that deadline, per request, so undici's 300 s defaults can
138
+ never end a longer call early. The gateway's buffered answer sends no headers
139
+ until the completion is ready, which is exactly where the default used to bite.
140
+ No global interceptor is needed.
141
+
142
+ `new LlmClient(minter, { dispatcher })` lets you choose the base dispatcher
143
+ (pool, proxy, TLS). Without one, the process's global dispatcher is used, read
144
+ per call. The timeout override applies either way.
145
+
146
+ A deadline that fires while a body or stream is being read fails as
147
+ `GatewayCallFailed` with `termination: deadline`, the same as one that fires
148
+ before the headers arrive.
package/dist/index.d.ts CHANGED
@@ -1,10 +1,11 @@
1
- export { GatewaySessionMinter, buildMintBody, type GatewayMintTransport, } from './lib/gateway-session-minter';
2
- export { DEFAULT_CALL_TIMEOUT_MS, LlmClient, type ChatMessage, type ChatRequest, type ChatResult, type EmbedResult, type LlmCallContext, type LlmUsage, } from './lib/llm-client';
1
+ export { GatewaySessionMinter, buildMintBody, type GatewayMintTransport, type MintCallOptions, } from './lib/gateway-session-minter';
2
+ export { DEFAULT_CALL_TIMEOUT_MS, LlmClient, type ChatMessage, type ChatRequest, type ChatResult, type EmbedResult, type LlmCallContext, type LlmCallOptions, type LlmClientOptions, type LlmUsage, } from './lib/llm-client';
3
3
  export { GatewayDialect, chatEndpoint, embeddingsEndpoint, selectDialect, } from './lib/dialect';
4
- export { LlmClientError, LlmClientFailure, MAX_DETAIL_CHARS, } from './lib/errors';
4
+ export { LlmCallTermination, LlmClientAbortedError, LlmClientError, LlmClientFailure, MAX_DETAIL_CHARS, isLlmClientAbort, } from './lib/errors';
5
5
  export { chatStreamEvents, sseDataLines, type ChatStreamEvent, } from './lib/stream';
6
6
  export { parseStructuredOutput, structuredOutputBodyFields, structuredOutputJsonSchema, type StructuredOutputSchema, type StructuredOutputSpec, } from './lib/structured';
7
7
  export { asArray, asRecord, asRecordOrUndefined, numberOrUndefined, stringOrUndefined, } from './lib/json-readers';
8
+ export { DeadlineBoundDispatcher, deadlineBoundDispatcher, } from './lib/transport-deadline';
8
9
  export { resolveBrokerProviderId } from './lib/provider-address';
9
10
  export { GRANT_REFRESH_BUFFER_MS, GrantCache, MAX_CACHED_GRANTS, grantCacheKey, } from './lib/session-cache';
10
11
  export { GATEWAY_TOKEN_MINT_PATH, ORG_HEADER, PROJECT_HEADER, type CreateGatewayTokenBody, type GatewaySession, type MintGatewaySessionInput, type ResolvedModel, } from './lib/wire';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,KAAK,oBAAoB,GAC1B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,QAAQ,GACd,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,aAAa,GACd,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAMtB,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,KAAK,eAAe,GACrB,MAAM,cAAc,CAAC;AAItB,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,0BAA0B,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,GAC1B,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EACL,OAAO,EACP,QAAQ,EACR,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,iBAAiB,EACjB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,cAAc,EACd,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,aAAa,GACnB,MAAM,YAAY,CAAC;AAKpB,OAAO,EACL,eAAe,EACf,sCAAsC,EACtC,0BAA0B,EAC1B,yBAAyB,EACzB,8BAA8B,EAC9B,yBAAyB,EACzB,0BAA0B,EAC1B,+BAA+B,EAC/B,mCAAmC,EACnC,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACtB,8BAA8B,EAC9B,+BAA+B,EAC/B,cAAc,EACd,cAAc,EACd,uCAAuC,EACvC,gCAAgC,EAChC,iBAAiB,EACjB,aAAa,GACd,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,eAAe,EACf,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,GAC5B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,+BAA+B,EAAE,MAAM,oCAAoC,CAAC;AAUrF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,eAAe,GACrB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,QAAQ,GACd,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,aAAa,GACd,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAMtB,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,KAAK,eAAe,GACrB,MAAM,cAAc,CAAC;AAItB,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,0BAA0B,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,GAC1B,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EACL,OAAO,EACP,QAAQ,EACR,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,iBAAiB,EACjB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,cAAc,EACd,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,aAAa,GACnB,MAAM,YAAY,CAAC;AAKpB,OAAO,EACL,eAAe,EACf,sCAAsC,EACtC,0BAA0B,EAC1B,yBAAyB,EACzB,8BAA8B,EAC9B,yBAAyB,EACzB,0BAA0B,EAC1B,+BAA+B,EAC/B,mCAAmC,EACnC,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACtB,8BAA8B,EAC9B,+BAA+B,EAC/B,cAAc,EACd,cAAc,EACd,uCAAuC,EACvC,gCAAgC,EAChC,iBAAiB,EACjB,aAAa,GACd,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,eAAe,EACf,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,GAC5B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,+BAA+B,EAAE,MAAM,oCAAoC,CAAC;AAUrF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LlmClientModule = exports.genAiSpanName = exports.genAiProviderName = exports.METRIC_GEN_AI_CLIENT_TOKEN_USAGE = exports.METRIC_GEN_AI_CLIENT_OPERATION_DURATION = exports.GenAiTokenType = exports.GenAiOperation = exports.ATTR_GEN_AI_USAGE_OUTPUT_TOKENS = exports.ATTR_GEN_AI_USAGE_INPUT_TOKENS = exports.ATTR_GEN_AI_TOKEN_TYPE = exports.ATTR_GEN_AI_RESPONSE_MODEL = exports.ATTR_GEN_AI_RESPONSE_ID = exports.ATTR_GEN_AI_RESPONSE_FINISH_REASONS = exports.ATTR_GEN_AI_REQUEST_TEMPERATURE = exports.ATTR_GEN_AI_REQUEST_STREAM = exports.ATTR_GEN_AI_REQUEST_MODEL = exports.ATTR_GEN_AI_REQUEST_MAX_TOKENS = exports.ATTR_GEN_AI_PROVIDER_NAME = exports.ATTR_GEN_AI_OPERATION_NAME = exports.ATTR_GEN_AI_EMBEDDINGS_DIMENSION_COUNT = exports.ATTR_ERROR_TYPE = exports.PROJECT_HEADER = exports.ORG_HEADER = exports.GATEWAY_TOKEN_MINT_PATH = exports.grantCacheKey = exports.MAX_CACHED_GRANTS = exports.GrantCache = exports.GRANT_REFRESH_BUFFER_MS = exports.resolveBrokerProviderId = exports.stringOrUndefined = exports.numberOrUndefined = exports.asRecordOrUndefined = exports.asRecord = exports.asArray = exports.structuredOutputJsonSchema = exports.structuredOutputBodyFields = exports.parseStructuredOutput = exports.sseDataLines = exports.chatStreamEvents = exports.MAX_DETAIL_CHARS = exports.LlmClientFailure = exports.LlmClientError = exports.selectDialect = exports.embeddingsEndpoint = exports.chatEndpoint = exports.GatewayDialect = exports.LlmClient = exports.DEFAULT_CALL_TIMEOUT_MS = exports.buildMintBody = exports.GatewaySessionMinter = void 0;
4
- exports.orgScopedClaim = exports.TypedServiceClientMintTransport = void 0;
3
+ exports.GenAiTokenType = exports.GenAiOperation = exports.ATTR_GEN_AI_USAGE_OUTPUT_TOKENS = exports.ATTR_GEN_AI_USAGE_INPUT_TOKENS = exports.ATTR_GEN_AI_TOKEN_TYPE = exports.ATTR_GEN_AI_RESPONSE_MODEL = exports.ATTR_GEN_AI_RESPONSE_ID = exports.ATTR_GEN_AI_RESPONSE_FINISH_REASONS = exports.ATTR_GEN_AI_REQUEST_TEMPERATURE = exports.ATTR_GEN_AI_REQUEST_STREAM = exports.ATTR_GEN_AI_REQUEST_MODEL = exports.ATTR_GEN_AI_REQUEST_MAX_TOKENS = exports.ATTR_GEN_AI_PROVIDER_NAME = exports.ATTR_GEN_AI_OPERATION_NAME = exports.ATTR_GEN_AI_EMBEDDINGS_DIMENSION_COUNT = exports.ATTR_ERROR_TYPE = exports.PROJECT_HEADER = exports.ORG_HEADER = exports.GATEWAY_TOKEN_MINT_PATH = exports.grantCacheKey = exports.MAX_CACHED_GRANTS = exports.GrantCache = exports.GRANT_REFRESH_BUFFER_MS = exports.resolveBrokerProviderId = exports.deadlineBoundDispatcher = exports.DeadlineBoundDispatcher = exports.stringOrUndefined = exports.numberOrUndefined = exports.asRecordOrUndefined = exports.asRecord = exports.asArray = exports.structuredOutputJsonSchema = exports.structuredOutputBodyFields = exports.parseStructuredOutput = exports.sseDataLines = exports.chatStreamEvents = exports.isLlmClientAbort = exports.MAX_DETAIL_CHARS = exports.LlmClientFailure = exports.LlmClientError = exports.LlmClientAbortedError = exports.LlmCallTermination = exports.selectDialect = exports.embeddingsEndpoint = exports.chatEndpoint = exports.GatewayDialect = exports.LlmClient = exports.DEFAULT_CALL_TIMEOUT_MS = exports.buildMintBody = exports.GatewaySessionMinter = void 0;
4
+ exports.orgScopedClaim = exports.TypedServiceClientMintTransport = exports.LlmClientModule = exports.genAiSpanName = exports.genAiProviderName = exports.METRIC_GEN_AI_CLIENT_TOKEN_USAGE = exports.METRIC_GEN_AI_CLIENT_OPERATION_DURATION = void 0;
5
5
  var gateway_session_minter_1 = require("./lib/gateway-session-minter");
6
6
  Object.defineProperty(exports, "GatewaySessionMinter", { enumerable: true, get: function () { return gateway_session_minter_1.GatewaySessionMinter; } });
7
7
  Object.defineProperty(exports, "buildMintBody", { enumerable: true, get: function () { return gateway_session_minter_1.buildMintBody; } });
@@ -14,9 +14,12 @@ Object.defineProperty(exports, "chatEndpoint", { enumerable: true, get: function
14
14
  Object.defineProperty(exports, "embeddingsEndpoint", { enumerable: true, get: function () { return dialect_1.embeddingsEndpoint; } });
15
15
  Object.defineProperty(exports, "selectDialect", { enumerable: true, get: function () { return dialect_1.selectDialect; } });
16
16
  var errors_1 = require("./lib/errors");
17
+ Object.defineProperty(exports, "LlmCallTermination", { enumerable: true, get: function () { return errors_1.LlmCallTermination; } });
18
+ Object.defineProperty(exports, "LlmClientAbortedError", { enumerable: true, get: function () { return errors_1.LlmClientAbortedError; } });
17
19
  Object.defineProperty(exports, "LlmClientError", { enumerable: true, get: function () { return errors_1.LlmClientError; } });
18
20
  Object.defineProperty(exports, "LlmClientFailure", { enumerable: true, get: function () { return errors_1.LlmClientFailure; } });
19
21
  Object.defineProperty(exports, "MAX_DETAIL_CHARS", { enumerable: true, get: function () { return errors_1.MAX_DETAIL_CHARS; } });
22
+ Object.defineProperty(exports, "isLlmClientAbort", { enumerable: true, get: function () { return errors_1.isLlmClientAbort; } });
20
23
  var stream_1 = require("./lib/stream");
21
24
  Object.defineProperty(exports, "chatStreamEvents", { enumerable: true, get: function () { return stream_1.chatStreamEvents; } });
22
25
  Object.defineProperty(exports, "sseDataLines", { enumerable: true, get: function () { return stream_1.sseDataLines; } });
@@ -30,6 +33,9 @@ Object.defineProperty(exports, "asRecord", { enumerable: true, get: function ()
30
33
  Object.defineProperty(exports, "asRecordOrUndefined", { enumerable: true, get: function () { return json_readers_1.asRecordOrUndefined; } });
31
34
  Object.defineProperty(exports, "numberOrUndefined", { enumerable: true, get: function () { return json_readers_1.numberOrUndefined; } });
32
35
  Object.defineProperty(exports, "stringOrUndefined", { enumerable: true, get: function () { return json_readers_1.stringOrUndefined; } });
36
+ var transport_deadline_1 = require("./lib/transport-deadline");
37
+ Object.defineProperty(exports, "DeadlineBoundDispatcher", { enumerable: true, get: function () { return transport_deadline_1.DeadlineBoundDispatcher; } });
38
+ Object.defineProperty(exports, "deadlineBoundDispatcher", { enumerable: true, get: function () { return transport_deadline_1.deadlineBoundDispatcher; } });
33
39
  var provider_address_1 = require("./lib/provider-address");
34
40
  Object.defineProperty(exports, "resolveBrokerProviderId", { enumerable: true, get: function () { return provider_address_1.resolveBrokerProviderId; } });
35
41
  var session_cache_1 = require("./lib/session-cache");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAaA,uEAIsC;AAHpC,8HAAA,oBAAoB,OAAA;AACpB,uHAAA,aAAa,OAAA;AAIf,+CAS0B;AARxB,qHAAA,uBAAuB,OAAA;AACvB,uGAAA,SAAS,OAAA;AASX,yCAKuB;AAJrB,yGAAA,cAAc,OAAA;AACd,uGAAA,YAAY,OAAA;AACZ,6GAAA,kBAAkB,OAAA;AAClB,wGAAA,aAAa,OAAA;AAGf,uCAIsB;AAHpB,wGAAA,cAAc,OAAA;AACd,0GAAA,gBAAgB,OAAA;AAChB,0GAAA,gBAAgB,OAAA;AAOlB,uCAIsB;AAHpB,0GAAA,gBAAgB,OAAA;AAChB,sGAAA,YAAY,OAAA;AAMd,+CAM0B;AALxB,mHAAA,qBAAqB,OAAA;AACrB,wHAAA,0BAA0B,OAAA;AAC1B,wHAAA,0BAA0B,OAAA;AAQ5B,mDAM4B;AAL1B,uGAAA,OAAO,OAAA;AACP,wGAAA,QAAQ,OAAA;AACR,mHAAA,mBAAmB,OAAA;AACnB,iHAAA,iBAAiB,OAAA;AACjB,iHAAA,iBAAiB,OAAA;AAGnB,2DAAiE;AAAxD,2HAAA,uBAAuB,OAAA;AAEhC,qDAK6B;AAJ3B,wHAAA,uBAAuB,OAAA;AACvB,2GAAA,UAAU,OAAA;AACV,kHAAA,iBAAiB,OAAA;AACjB,8GAAA,aAAa,OAAA;AAGf,mCAQoB;AAPlB,+GAAA,uBAAuB,OAAA;AACvB,kGAAA,UAAU,OAAA;AACV,sGAAA,cAAc,OAAA;AAUhB,uCAqBsB;AApBpB,yGAAA,eAAe,OAAA;AACf,gIAAA,sCAAsC,OAAA;AACtC,oHAAA,0BAA0B,OAAA;AAC1B,mHAAA,yBAAyB,OAAA;AACzB,wHAAA,8BAA8B,OAAA;AAC9B,mHAAA,yBAAyB,OAAA;AACzB,oHAAA,0BAA0B,OAAA;AAC1B,yHAAA,+BAA+B,OAAA;AAC/B,6HAAA,mCAAmC,OAAA;AACnC,iHAAA,uBAAuB,OAAA;AACvB,oHAAA,0BAA0B,OAAA;AAC1B,gHAAA,sBAAsB,OAAA;AACtB,wHAAA,8BAA8B,OAAA;AAC9B,yHAAA,+BAA+B,OAAA;AAC/B,wGAAA,cAAc,OAAA;AACd,wGAAA,cAAc,OAAA;AACd,iIAAA,uCAAuC,OAAA;AACvC,0HAAA,gCAAgC,OAAA;AAChC,2GAAA,iBAAiB,OAAA;AACjB,uGAAA,aAAa,OAAA;AAGf,8DAIkC;AAHhC,oHAAA,eAAe,OAAA;AAKjB,kFAAqF;AAA5E,8IAAA,+BAA+B,OAAA;AAUxC,2DAAyD;AAAhD,iHAAA,cAAc,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAaA,uEAKsC;AAJpC,8HAAA,oBAAoB,OAAA;AACpB,uHAAA,aAAa,OAAA;AAKf,+CAW0B;AAVxB,qHAAA,uBAAuB,OAAA;AACvB,uGAAA,SAAS,OAAA;AAWX,yCAKuB;AAJrB,yGAAA,cAAc,OAAA;AACd,uGAAA,YAAY,OAAA;AACZ,6GAAA,kBAAkB,OAAA;AAClB,wGAAA,aAAa,OAAA;AAGf,uCAOsB;AANpB,4GAAA,kBAAkB,OAAA;AAClB,+GAAA,qBAAqB,OAAA;AACrB,wGAAA,cAAc,OAAA;AACd,0GAAA,gBAAgB,OAAA;AAChB,0GAAA,gBAAgB,OAAA;AAChB,0GAAA,gBAAgB,OAAA;AAOlB,uCAIsB;AAHpB,0GAAA,gBAAgB,OAAA;AAChB,sGAAA,YAAY,OAAA;AAMd,+CAM0B;AALxB,mHAAA,qBAAqB,OAAA;AACrB,wHAAA,0BAA0B,OAAA;AAC1B,wHAAA,0BAA0B,OAAA;AAQ5B,mDAM4B;AAL1B,uGAAA,OAAO,OAAA;AACP,wGAAA,QAAQ,OAAA;AACR,mHAAA,mBAAmB,OAAA;AACnB,iHAAA,iBAAiB,OAAA;AACjB,iHAAA,iBAAiB,OAAA;AAGnB,+DAGkC;AAFhC,6HAAA,uBAAuB,OAAA;AACvB,6HAAA,uBAAuB,OAAA;AAGzB,2DAAiE;AAAxD,2HAAA,uBAAuB,OAAA;AAEhC,qDAK6B;AAJ3B,wHAAA,uBAAuB,OAAA;AACvB,2GAAA,UAAU,OAAA;AACV,kHAAA,iBAAiB,OAAA;AACjB,8GAAA,aAAa,OAAA;AAGf,mCAQoB;AAPlB,+GAAA,uBAAuB,OAAA;AACvB,kGAAA,UAAU,OAAA;AACV,sGAAA,cAAc,OAAA;AAUhB,uCAqBsB;AApBpB,yGAAA,eAAe,OAAA;AACf,gIAAA,sCAAsC,OAAA;AACtC,oHAAA,0BAA0B,OAAA;AAC1B,mHAAA,yBAAyB,OAAA;AACzB,wHAAA,8BAA8B,OAAA;AAC9B,mHAAA,yBAAyB,OAAA;AACzB,oHAAA,0BAA0B,OAAA;AAC1B,yHAAA,+BAA+B,OAAA;AAC/B,6HAAA,mCAAmC,OAAA;AACnC,iHAAA,uBAAuB,OAAA;AACvB,oHAAA,0BAA0B,OAAA;AAC1B,gHAAA,sBAAsB,OAAA;AACtB,wHAAA,8BAA8B,OAAA;AAC9B,yHAAA,+BAA+B,OAAA;AAC/B,wGAAA,cAAc,OAAA;AACd,wGAAA,cAAc,OAAA;AACd,iIAAA,uCAAuC,OAAA;AACvC,0HAAA,gCAAgC,OAAA;AAChC,2GAAA,iBAAiB,OAAA;AACjB,uGAAA,aAAa,OAAA;AAGf,8DAIkC;AAHhC,oHAAA,eAAe,OAAA;AAKjB,kFAAqF;AAA5E,8IAAA,+BAA+B,OAAA;AAUxC,2DAAyD;AAAhD,iHAAA,cAAc,OAAA"}
@@ -0,0 +1,15 @@
1
+ import { LlmCallTermination, LlmClientAbortedError } from './errors';
2
+ export declare class CallSignal {
3
+ readonly timeoutMs: number;
4
+ private readonly caller;
5
+ readonly signal: AbortSignal;
6
+ private first;
7
+ private readonly detachCaller;
8
+ constructor(timeoutMs: number, caller: AbortSignal | undefined);
9
+ get termination(): LlmCallTermination | undefined;
10
+ callerAborted(): boolean;
11
+ abortError(cause?: unknown): LlmClientAbortedError;
12
+ dispose(): void;
13
+ private record;
14
+ }
15
+ //# sourceMappingURL=call-signal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-signal.d.ts","sourceRoot":"","sources":["../../src/lib/call-signal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAyBrE,qBAAa,UAAU;aAQH,SAAS,EAAE,MAAM;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPzB,SAAgB,MAAM,EAAE,WAAW,CAAC;IACpC,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAa;gBAIxB,SAAS,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,GAAG,SAAS;IAoClD,IAAW,WAAW,IAAI,kBAAkB,GAAG,SAAS,CAEvD;IAQM,aAAa,IAAI,OAAO;IAKxB,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,qBAAqB;IAKlD,OAAO,IAAI,IAAI;IAItB,OAAO,CAAC,MAAM;CAGf"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CallSignal = void 0;
4
+ const errors_1 = require("./errors");
5
+ class CallSignal {
6
+ timeoutMs;
7
+ caller;
8
+ signal;
9
+ first;
10
+ detachCaller;
11
+ constructor(timeoutMs, caller) {
12
+ this.timeoutMs = timeoutMs;
13
+ this.caller = caller;
14
+ const deadline = AbortSignal.timeout(timeoutMs);
15
+ if (caller === undefined) {
16
+ this.signal = deadline;
17
+ deadline.addEventListener('abort', () => this.record(errors_1.LlmCallTermination.Deadline), {
18
+ once: true,
19
+ });
20
+ this.detachCaller = () => undefined;
21
+ return;
22
+ }
23
+ const controller = new AbortController();
24
+ this.signal = controller.signal;
25
+ const fire = (termination, reason) => {
26
+ if (this.first !== undefined) {
27
+ return;
28
+ }
29
+ this.first = termination;
30
+ controller.abort(reason);
31
+ };
32
+ const onCaller = () => fire(errors_1.LlmCallTermination.CallerAbort, caller.reason);
33
+ deadline.addEventListener('abort', () => fire(errors_1.LlmCallTermination.Deadline, deadline.reason), { once: true });
34
+ if (caller.aborted) {
35
+ onCaller();
36
+ this.detachCaller = () => undefined;
37
+ return;
38
+ }
39
+ caller.addEventListener('abort', onCaller, { once: true });
40
+ this.detachCaller = () => caller.removeEventListener('abort', onCaller);
41
+ }
42
+ get termination() {
43
+ return this.first;
44
+ }
45
+ callerAborted() {
46
+ return this.first === errors_1.LlmCallTermination.CallerAbort;
47
+ }
48
+ abortError(cause) {
49
+ return new errors_1.LlmClientAbortedError(this.caller?.reason, { cause: cause ?? this.caller?.reason });
50
+ }
51
+ dispose() {
52
+ this.detachCaller();
53
+ }
54
+ record(termination) {
55
+ this.first ??= termination;
56
+ }
57
+ }
58
+ exports.CallSignal = CallSignal;
59
+ //# sourceMappingURL=call-signal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-signal.js","sourceRoot":"","sources":["../../src/lib/call-signal.ts"],"names":[],"mappings":";;;AAAA,qCAAqE;AAyBrE,MAAa,UAAU;IAQH;IACC;IAPH,MAAM,CAAc;IAC5B,KAAK,CAAiC;IAC7B,YAAY,CAAa;IAE1C,YAEkB,SAAiB,EAChB,MAA+B;QADhC,cAAS,GAAT,SAAS,CAAQ;QAChB,WAAM,GAAN,MAAM,CAAyB;QAEhD,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;YACvB,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,2BAAkB,CAAC,QAAQ,CAAC,EAAE;gBACjF,IAAI,EAAE,IAAI;aACX,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,GAAG,GAAS,EAAE,CAAC,SAAS,CAAC;YAC1C,OAAO;QACT,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAChC,MAAM,IAAI,GAAG,CAAC,WAA+B,EAAE,MAAe,EAAQ,EAAE;YACtE,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC7B,OAAO;YACT,CAAC;YACD,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;YACzB,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC,CAAC;QACF,MAAM,QAAQ,GAAG,GAAS,EAAE,CAAC,IAAI,CAAC,2BAAkB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACjF,QAAQ,CAAC,gBAAgB,CACvB,OAAO,EACP,GAAG,EAAE,CAAC,IAAI,CAAC,2BAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,EACxD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;QACF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,QAAQ,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,GAAG,GAAS,EAAE,CAAC,SAAS,CAAC;YAC1C,OAAO;QACT,CAAC;QACD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,YAAY,GAAG,GAAS,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAChF,CAAC;IAGD,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAQM,aAAa;QAClB,OAAO,IAAI,CAAC,KAAK,KAAK,2BAAkB,CAAC,WAAW,CAAC;IACvD,CAAC;IAGM,UAAU,CAAC,KAAe;QAC/B,OAAO,IAAI,8BAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACjG,CAAC;IAGM,OAAO;QACZ,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEO,MAAM,CAAC,WAA+B;QAC5C,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC;IAC7B,CAAC;CACF;AAxED,gCAwEC"}
@@ -7,17 +7,33 @@ export declare enum LlmClientFailure {
7
7
  GatewayResponseMalformed = "gateway_response_malformed",
8
8
  UnsupportedApiType = "unsupported_api_type",
9
9
  StructuredOutputUnrepresentable = "structured_output_unrepresentable",
10
- StructuredOutputInvalid = "structured_output_invalid"
10
+ StructuredOutputInvalid = "structured_output_invalid",
11
+ CallerAborted = "caller_aborted"
12
+ }
13
+ export declare enum LlmCallTermination {
14
+ CallerAbort = "caller_abort",
15
+ Deadline = "deadline"
11
16
  }
12
17
  export declare class LlmClientError extends Error {
13
18
  readonly reason: LlmClientFailure;
14
19
  readonly status: number | undefined;
20
+ readonly termination: LlmCallTermination | undefined;
15
21
  constructor(reason: LlmClientFailure, message: string, options?: {
16
22
  readonly status?: number;
17
23
  readonly cause?: unknown;
24
+ readonly termination?: LlmCallTermination;
18
25
  });
19
26
  get transient(): boolean;
20
27
  }
28
+ export declare class LlmClientAbortedError extends LlmClientError {
29
+ readonly abortReason: unknown;
30
+ constructor(abortReason: unknown, options?: {
31
+ readonly cause?: unknown;
32
+ });
33
+ }
34
+ export declare function isLlmClientAbort(err: unknown): err is LlmClientAbortedError;
35
+ export declare function throwIfCallerAborted(signal: AbortSignal | undefined): void;
36
+ export declare function raceCallerAbort<T>(pending: Promise<T>, signal: AbortSignal | undefined): Promise<T>;
21
37
  export declare const MAX_DETAIL_CHARS = 500;
22
38
  export declare function readDetail(response: Response): Promise<string>;
23
39
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AASA,oBAAY,gBAAgB;IAE1B,eAAe,qBAAqB;IAEpC,sBAAsB,6BAA6B;IAEnD,iBAAiB,wBAAwB;IAEzC,qBAAqB,4BAA4B;IAEjD,iBAAiB,wBAAwB;IAEzC,wBAAwB,+BAA+B;IAEvD,kBAAkB,yBAAyB;IAQ3C,+BAA+B,sCAAsC;IAMrE,uBAAuB,8BAA8B;CACtD;AAwBD,qBAAa,cAAe,SAAQ,KAAK;IACvC,SAAgB,MAAM,EAAE,gBAAgB,CAAC;IACzC,SAAgB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;gBAGzC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;IASlE,IAAW,SAAS,IAAI,OAAO,CAE9B;CACF;AAGD,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAGpC,wBAAsB,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CASpE"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AASA,oBAAY,gBAAgB;IAE1B,eAAe,qBAAqB;IAEpC,sBAAsB,6BAA6B;IAEnD,iBAAiB,wBAAwB;IAEzC,qBAAqB,4BAA4B;IAEjD,iBAAiB,wBAAwB;IAEzC,wBAAwB,+BAA+B;IAEvD,kBAAkB,yBAAyB;IAQ3C,+BAA+B,sCAAsC;IAMrE,uBAAuB,8BAA8B;IAOrD,aAAa,mBAAmB;CACjC;AAWD,oBAAY,kBAAkB;IAE5B,WAAW,iBAAiB;IAM5B,QAAQ,aAAa;CACtB;AAwBD,qBAAa,cAAe,SAAQ,KAAK;IACvC,SAAgB,MAAM,EAAE,gBAAgB,CAAC;IACzC,SAAgB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAE3C,SAAgB,WAAW,EAAE,kBAAkB,GAAG,SAAS,CAAC;gBAG1D,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;KAC3C;IAUH,IAAW,SAAS,IAAI,OAAO,CAE9B;CACF;AAcD,qBAAa,qBAAsB,SAAQ,cAAc;IACvD,SAAgB,WAAW,EAAE,OAAO,CAAC;gBAElB,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAYhF;AAGD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,qBAAqB,CAE3E;AAGD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAI1E;AAUD,wBAAgB,eAAe,CAAC,CAAC,EAC/B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,MAAM,EAAE,WAAW,GAAG,SAAS,GAC9B,OAAO,CAAC,CAAC,CAAC,CA2BZ;AAGD,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAGpC,wBAAsB,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CASpE"}
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MAX_DETAIL_CHARS = exports.LlmClientError = exports.LlmClientFailure = void 0;
3
+ exports.MAX_DETAIL_CHARS = exports.LlmClientAbortedError = exports.LlmClientError = exports.LlmCallTermination = exports.LlmClientFailure = void 0;
4
+ exports.isLlmClientAbort = isLlmClientAbort;
5
+ exports.throwIfCallerAborted = throwIfCallerAborted;
6
+ exports.raceCallerAbort = raceCallerAbort;
4
7
  exports.readDetail = readDetail;
5
8
  var LlmClientFailure;
6
9
  (function (LlmClientFailure) {
@@ -13,7 +16,13 @@ var LlmClientFailure;
13
16
  LlmClientFailure["UnsupportedApiType"] = "unsupported_api_type";
14
17
  LlmClientFailure["StructuredOutputUnrepresentable"] = "structured_output_unrepresentable";
15
18
  LlmClientFailure["StructuredOutputInvalid"] = "structured_output_invalid";
19
+ LlmClientFailure["CallerAborted"] = "caller_aborted";
16
20
  })(LlmClientFailure || (exports.LlmClientFailure = LlmClientFailure = {}));
21
+ var LlmCallTermination;
22
+ (function (LlmCallTermination) {
23
+ LlmCallTermination["CallerAbort"] = "caller_abort";
24
+ LlmCallTermination["Deadline"] = "deadline";
25
+ })(LlmCallTermination || (exports.LlmCallTermination = LlmCallTermination = {}));
17
26
  const TRANSIENT = new Set([
18
27
  LlmClientFailure.GatewayMintFailed,
19
28
  LlmClientFailure.GatewayCallFailed,
@@ -21,17 +30,62 @@ const TRANSIENT = new Set([
21
30
  class LlmClientError extends Error {
22
31
  reason;
23
32
  status;
33
+ termination;
24
34
  constructor(reason, message, options) {
25
35
  super(message, options?.cause === undefined ? undefined : { cause: options.cause });
26
36
  this.name = 'LlmClientError';
27
37
  this.reason = reason;
28
38
  this.status = options?.status;
39
+ this.termination = options?.termination;
29
40
  }
30
41
  get transient() {
31
42
  return TRANSIENT.has(this.reason);
32
43
  }
33
44
  }
34
45
  exports.LlmClientError = LlmClientError;
46
+ class LlmClientAbortedError extends LlmClientError {
47
+ abortReason;
48
+ constructor(abortReason, options) {
49
+ super(LlmClientFailure.CallerAborted, 'The LLM call was aborted by its caller.', {
50
+ cause: options?.cause ?? abortReason,
51
+ termination: LlmCallTermination.CallerAbort,
52
+ });
53
+ this.name = 'LlmClientAbortedError';
54
+ this.abortReason = abortReason;
55
+ }
56
+ }
57
+ exports.LlmClientAbortedError = LlmClientAbortedError;
58
+ function isLlmClientAbort(err) {
59
+ return err instanceof LlmClientAbortedError;
60
+ }
61
+ function throwIfCallerAborted(signal) {
62
+ if (signal?.aborted === true) {
63
+ throw new LlmClientAbortedError(signal.reason);
64
+ }
65
+ }
66
+ function raceCallerAbort(pending, signal) {
67
+ if (signal === undefined) {
68
+ return pending;
69
+ }
70
+ if (signal.aborted) {
71
+ pending.catch(() => undefined);
72
+ return Promise.reject(new LlmClientAbortedError(signal.reason));
73
+ }
74
+ return new Promise((resolve, reject) => {
75
+ const onAbort = () => {
76
+ pending.catch(() => undefined);
77
+ reject(new LlmClientAbortedError(signal.reason));
78
+ };
79
+ signal.addEventListener('abort', onAbort, { once: true });
80
+ pending.then((value) => {
81
+ signal.removeEventListener('abort', onAbort);
82
+ resolve(value);
83
+ }, (err) => {
84
+ signal.removeEventListener('abort', onAbort);
85
+ reject(err);
86
+ });
87
+ });
88
+ }
35
89
  exports.MAX_DETAIL_CHARS = 500;
36
90
  async function readDetail(response) {
37
91
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":";;;AAuFA,gCASC;AAvFD,IAAY,gBA6BX;AA7BD,WAAY,gBAAgB;IAE1B,wDAAoC,CAAA;IAEpC,uEAAmD,CAAA;IAEnD,6DAAyC,CAAA;IAEzC,qEAAiD,CAAA;IAEjD,6DAAyC,CAAA;IAEzC,2EAAuD,CAAA;IAEvD,+DAA2C,CAAA;IAQ3C,yFAAqE,CAAA;IAMrE,yEAAqD,CAAA;AACvD,CAAC,EA7BW,gBAAgB,gCAAhB,gBAAgB,QA6B3B;AAWD,MAAM,SAAS,GAAkC,IAAI,GAAG,CAAC;IACvD,gBAAgB,CAAC,iBAAiB;IAClC,gBAAgB,CAAC,iBAAiB;CACnC,CAAC,CAAC;AAUH,MAAa,cAAe,SAAQ,KAAK;IACvB,MAAM,CAAmB;IACzB,MAAM,CAAqB;IAE3C,YACE,MAAwB,EACxB,OAAe,EACf,OAAgE;QAEhE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACpF,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;IAChC,CAAC;IAGD,IAAW,SAAS;QAClB,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;CACF;AAnBD,wCAmBC;AAGY,QAAA,gBAAgB,GAAG,GAAG,CAAC;AAG7B,KAAK,UAAU,UAAU,CAAC,QAAkB;IACjD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,MAAM,GAAG,wBAAgB;YACnC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,wBAAgB,CAAC,GAAG;YACvC,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"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"}
@@ -6,14 +6,18 @@ export interface GatewayMintTransport {
6
6
  readonly orgScope: OrgScopeWitness;
7
7
  readonly projectId?: string | undefined;
8
8
  readonly headers: Readonly<Record<string, string>>;
9
+ readonly signal?: AbortSignal | undefined;
9
10
  }): Promise<unknown>;
10
11
  }
12
+ export interface MintCallOptions {
13
+ readonly signal?: AbortSignal | undefined;
14
+ }
11
15
  export declare class GatewaySessionMinter {
12
16
  private readonly transport;
13
17
  private readonly cache;
14
18
  constructor(transport: GatewayMintTransport, cache?: GrantCache);
15
- acquire(model: ResolvedModel, input: MintGatewaySessionInput): Promise<GatewaySession>;
16
- mintUncached(model: ResolvedModel, input: MintGatewaySessionInput): Promise<GatewaySession>;
19
+ acquire(model: ResolvedModel, input: MintGatewaySessionInput, options?: MintCallOptions): Promise<GatewaySession>;
20
+ mintUncached(model: ResolvedModel, input: MintGatewaySessionInput, options?: MintCallOptions): Promise<GatewaySession>;
17
21
  invalidate(model: ResolvedModel, input: Pick<MintGatewaySessionInput, 'orgScope' | 'projectId'>): void;
18
22
  private mint;
19
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gateway-session-minter.d.ts","sourceRoot":"","sources":["../../src/lib/gateway-session-minter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAiB,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAIL,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,aAAa,EACnB,MAAM,QAAQ,CAAC;AAEhB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAqB/D,MAAM,WAAW,oBAAoB;IASnC,IAAI,CACF,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,sBAAsB,EAC5B,OAAO,EAAE;QAQP,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;QACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACxC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;KACpD,GACA,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAyFD,qBAAa,oBAAoB;IAI7B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAH5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;gBAGhB,SAAS,EAAE,oBAAoB,EAChD,KAAK,GAAE,UAA6B;IAc/B,OAAO,CACZ,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,cAAc,CAAC;IAmBnB,YAAY,CACjB,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,cAAc,CAAC;IAKnB,UAAU,CACf,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,IAAI,CAAC,uBAAuB,EAAE,UAAU,GAAG,WAAW,CAAC,GAC7D,IAAI;YAWO,IAAI;CAgCnB;AAiBD,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,uBAAuB,GAC7B,sBAAsB,CAqBxB"}
1
+ {"version":3,"file":"gateway-session-minter.d.ts","sourceRoot":"","sources":["../../src/lib/gateway-session-minter.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,UAAU,EAAiB,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAIL,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,aAAa,EACnB,MAAM,QAAQ,CAAC;AAEhB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAqB/D,MAAM,WAAW,oBAAoB;IASnC,IAAI,CACF,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,sBAAsB,EAC5B,OAAO,EAAE;QAQP,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;QACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACxC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QAOnD,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;KAC3C,GACA,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAGD,MAAM,WAAW,eAAe;IAK9B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CAC3C;AAyFD,qBAAa,oBAAoB;IAI7B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAH5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;gBAGhB,SAAS,EAAE,oBAAoB,EAChD,KAAK,GAAE,UAA6B;IAc/B,OAAO,CACZ,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,uBAAuB,EAC9B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,cAAc,CAAC;IA4BnB,YAAY,CACjB,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,uBAAuB,EAC9B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,cAAc,CAAC;IAQnB,UAAU,CACf,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,IAAI,CAAC,uBAAuB,EAAE,UAAU,GAAG,WAAW,CAAC,GAC7D,IAAI;YAWO,IAAI;CAuCnB;AAiBD,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,uBAAuB,GAC7B,sBAAsB,CAqBxB"}
@@ -45,7 +45,9 @@ class GatewaySessionMinter {
45
45
  this.transport = transport;
46
46
  this.cache = cache;
47
47
  }
48
- acquire(model, input) {
48
+ acquire(model, input, options) {
49
+ const signal = options?.signal;
50
+ (0, errors_1.throwIfCallerAborted)(signal);
49
51
  const providerId = (0, provider_address_1.resolveBrokerProviderId)(model);
50
52
  const key = (0, session_cache_1.grantCacheKey)({
51
53
  orgId: input.orgScope.orgId,
@@ -53,10 +55,11 @@ class GatewaySessionMinter {
53
55
  providerId,
54
56
  modelId: model.modelId,
55
57
  });
56
- return this.cache.getOrLoad(key, () => this.mint(providerId, model, input));
58
+ return (0, errors_1.raceCallerAbort)(this.cache.getOrLoad(key, () => this.mint(providerId, model, input)), signal);
57
59
  }
58
- mintUncached(model, input) {
59
- return this.mint((0, provider_address_1.resolveBrokerProviderId)(model), model, input);
60
+ mintUncached(model, input, options) {
61
+ (0, errors_1.throwIfCallerAborted)(options?.signal);
62
+ return this.mint((0, provider_address_1.resolveBrokerProviderId)(model), model, input, options?.signal);
60
63
  }
61
64
  invalidate(model, input) {
62
65
  this.cache.invalidate((0, session_cache_1.grantCacheKey)({
@@ -66,7 +69,7 @@ class GatewaySessionMinter {
66
69
  modelId: model.modelId,
67
70
  }));
68
71
  }
69
- async mint(providerId, model, input) {
72
+ async mint(providerId, model, input, signal) {
70
73
  const body = buildMintBody(providerId, model, input);
71
74
  let raw;
72
75
  try {
@@ -79,9 +82,13 @@ class GatewaySessionMinter {
79
82
  ? {}
80
83
  : { [wire_1.PROJECT_HEADER]: input.projectId }),
81
84
  },
85
+ ...(signal === undefined ? {} : { signal }),
82
86
  });
83
87
  }
84
88
  catch (cause) {
89
+ if (signal?.aborted === true) {
90
+ throw new errors_1.LlmClientAbortedError(signal.reason, { cause });
91
+ }
85
92
  throw new errors_1.LlmClientError(errors_1.LlmClientFailure.GatewayMintFailed, `Gateway grant mint failed for model "${model.modelId}" on provider ` +
86
93
  `"${providerId}": ${cause instanceof Error ? cause.message : String(cause)}`, { cause, ...readStatus(cause) });
87
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gateway-session-minter.js","sourceRoot":"","sources":["../../src/lib/gateway-session-minter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gateway-session-minter.js","sourceRoot":"","sources":["../../src/lib/gateway-session-minter.ts"],"names":[],"mappings":";;;AAiTA,sCAyBC;AA1UD,6DAA8D;AAE9D,qCAMkB;AAClB,yDAA6D;AAC7D,mDAA4D;AAC5D,iCAQgB;AAgFhB,SAAS,WAAW,CAAC,IAAa;IAChC,MAAM,IAAI,GACR,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QACvC,CAAC,CAAE,IAA2B,CAAC,IAAI;QACnC,CAAC,CAAC,SAAS,CAAC;IAChB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAC9C,MAAM,IAAI,uBAAc,CACtB,yBAAgB,CAAC,qBAAqB,EACtC,yBAAyB,8BAAuB,wBAAwB;YACtE,yDAAyD,CAC5D,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,IAA+B,CAAC;IAK9C,MAAM,OAAO,GACX;QACE,CAAC,OAAO,EAAE,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;QAChE,CAAC,YAAY,EAAE,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,KAAK,EAAE,CAAC;QAC/E;YACE,gBAAgB;YAChB,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ,IAAI,KAAK,CAAC,cAAc,KAAK,EAAE;SACxE;QACD,CAAC,WAAW,EAAE,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;KAE5E;SACE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;SACvB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IAC3B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,uBAAc,CACtB,yBAAgB,CAAC,qBAAqB,EACtC,yBAAyB,8BAAuB,oBAAoB;YAClE,qBAAqB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC7C,CAAC;IACJ,CAAC;IACD,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAe;QAC5B,SAAS,EAAE,KAAK,CAAC,SAAmB;QAGpC,UAAU,EAAG,KAAK,CAAC,UAAqB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QAC5D,cAAc,EAAG,KAAK,CAAC,cAAyB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;KACrE,CAAC;AACJ,CAAC;AA4BD,MAAa,oBAAoB;IAIZ;IAHF,KAAK,CAAa;IAEnC,YACmB,SAA+B,EAChD,QAAoB,IAAI,0BAAU,EAAE;QADnB,cAAS,GAAT,SAAS,CAAsB;QAGhD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAWM,OAAO,CACZ,KAAoB,EACpB,KAA8B,EAC9B,OAAyB;QAEzB,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;QAC/B,IAAA,6BAAoB,EAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,UAAU,GAAG,IAAA,0CAAuB,EAAC,KAAK,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,IAAA,6BAAa,EAAC;YACxB,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK;YAC3B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,UAAU;YACV,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;QAKH,OAAO,IAAA,wBAAe,EACpB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EACpE,MAAM,CACP,CAAC;IACJ,CAAC;IAUM,YAAY,CACjB,KAAoB,EACpB,KAA8B,EAC9B,OAAyB;QAEzB,IAAA,6BAAoB,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAGtC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAA,0CAAuB,EAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC;IAGM,UAAU,CACf,KAAoB,EACpB,KAA8D;QAE9D,IAAI,CAAC,KAAK,CAAC,UAAU,CACnB,IAAA,6BAAa,EAAC;YACZ,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK;YAC3B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,UAAU,EAAE,IAAA,0CAAuB,EAAC,KAAK,CAAC;YAC1C,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,IAAI,CAChB,UAAkB,EAClB,KAAoB,EACpB,KAA8B,EAC9B,MAAoB;QAEpB,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,GAAY,CAAC;QACjB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,8BAAuB,EAAE,IAAI,EAAE;gBAC7D,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,OAAO,EAAE;oBACP,CAAC,iBAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK;oBAClC,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS;wBAC/B,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAC,EAAE,CAAC,qBAAc,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;iBAC3C;gBACD,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;aAC5C,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAGf,IAAI,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC7B,MAAM,IAAI,8BAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAC5D,CAAC;YAKD,MAAM,IAAI,uBAAc,CACtB,yBAAgB,CAAC,iBAAiB,EAClC,wCAAwC,KAAK,CAAC,OAAO,gBAAgB;gBACnE,IAAI,UAAU,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAC9E,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAChC,CAAC;QACJ,CAAC;QACD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;CACF;AApHD,oDAoHC;AAED,SAAS,UAAU,CAAC,GAAY;IAC9B,MAAM,MAAM,GACV,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QACrC,CAAC,CAAE,GAA4B,CAAC,MAAM;QACtC,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACtD,CAAC;AASD,SAAgB,aAAa,CAC3B,UAAkB,EAClB,KAAoB,EACpB,KAA8B;IAE9B,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,UAAU;QACV,OAAO,EAAE,KAAK,CAAC,OAAO;QAStB,YAAY,EAAE,IAAA,qCAAmB,EAAC,KAAK,CAAC,gBAAgB,CAAC;QACzD,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC5E,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACvE,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;KACzE,CAAC;AACJ,CAAC"}
@@ -2,6 +2,7 @@ import { type ChatStreamEvent } from './stream';
2
2
  import { type StructuredOutputSpec } from './structured';
3
3
  import type { GatewaySessionMinter } from './gateway-session-minter';
4
4
  import type { MintGatewaySessionInput, ResolvedModel } from './wire';
5
+ import type { Dispatcher } from 'undici';
5
6
  export declare const DEFAULT_CALL_TIMEOUT_MS = 120000;
6
7
  export interface ChatMessage {
7
8
  readonly role: 'system' | 'user' | 'assistant';
@@ -11,6 +12,11 @@ export interface ChatRequest {
11
12
  readonly messages: readonly ChatMessage[];
12
13
  readonly maxTokens?: number | undefined;
13
14
  readonly timeoutMs?: number | undefined;
15
+ readonly signal?: AbortSignal | undefined;
16
+ }
17
+ export interface LlmCallOptions {
18
+ readonly timeoutMs?: number | undefined;
19
+ readonly signal?: AbortSignal | undefined;
14
20
  }
15
21
  export interface LlmUsage {
16
22
  readonly inputTokens?: number | undefined;
@@ -28,19 +34,22 @@ export interface EmbedResult {
28
34
  readonly model: string | undefined;
29
35
  readonly usage: LlmUsage;
30
36
  }
37
+ export interface LlmClientOptions {
38
+ readonly dispatcher?: Dispatcher | undefined;
39
+ }
31
40
  export interface LlmCallContext extends MintGatewaySessionInput {
32
41
  readonly model: ResolvedModel;
33
42
  }
34
43
  export declare class LlmClient {
35
44
  private readonly minter;
36
- constructor(minter: GatewaySessionMinter);
45
+ private readonly options;
46
+ constructor(minter: GatewaySessionMinter, options?: LlmClientOptions);
37
47
  chat(context: LlmCallContext, request: ChatRequest): Promise<ChatResult>;
38
48
  chatStructured<T>(context: LlmCallContext, request: ChatRequest, spec: StructuredOutputSpec<T>): Promise<T>;
39
49
  chatStream(context: LlmCallContext, request: ChatRequest): AsyncGenerator<ChatStreamEvent, void>;
40
- embed(context: LlmCallContext, input: readonly string[], options?: {
41
- readonly timeoutMs?: number;
42
- }): Promise<EmbedResult>;
50
+ embed(context: LlmCallContext, input: readonly string[], options?: LlmCallOptions): Promise<EmbedResult>;
43
51
  private instrument;
52
+ private exchange;
44
53
  private send;
45
54
  }
46
55
  //# sourceMappingURL=llm-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"llm-client.d.ts","sourceRoot":"","sources":["../../src/lib/llm-client.ts"],"names":[],"mappings":"AA8BA,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAgBrE,eAAO,MAAM,uBAAuB,SAAU,CAAC;AAG/C,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAwBD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAExC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC;AAGD,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5C;AAGD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAEnC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;CAC1B;AAGD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC;IACpD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;CAC1B;AAGD,MAAM,WAAW,cAAe,SAAQ,uBAAuB;IAC7D,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;CAC/B;AAiCD,qBAAa,SAAS;IACD,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,oBAAoB;IAGnD,IAAI,CACf,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC;IAiDT,cAAc,CAAC,CAAC,EAC3B,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC5B,OAAO,CAAC,CAAC,CAAC;IAwEC,UAAU,CACtB,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,WAAW,GACnB,cAAc,CAAC,eAAe,EAAE,IAAI,CAAC;IA8F3B,KAAK,CAChB,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GACxC,OAAO,CAAC,WAAW,CAAC;YAyCT,UAAU;YA+DV,IAAI;CAmCnB"}
1
+ {"version":3,"file":"llm-client.d.ts","sourceRoot":"","sources":["../../src/lib/llm-client.ts"],"names":[],"mappings":"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"}
@@ -2,28 +2,34 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LlmClient = exports.DEFAULT_CALL_TIMEOUT_MS = void 0;
4
4
  const observability_nest_1 = require("@xemahq/observability-nest");
5
+ const call_signal_1 = require("./call-signal");
5
6
  const dialect_1 = require("./dialect");
6
7
  const errors_1 = require("./errors");
7
8
  const gen_ai_1 = require("./gen-ai");
8
9
  const json_readers_1 = require("./json-readers");
9
10
  const stream_1 = require("./stream");
10
11
  const structured_1 = require("./structured");
12
+ const transport_deadline_1 = require("./transport-deadline");
11
13
  exports.DEFAULT_CALL_TIMEOUT_MS = 120_000;
12
14
  class LlmClient {
13
15
  minter;
14
- constructor(minter) {
16
+ options;
17
+ constructor(minter, options = {}) {
15
18
  this.minter = minter;
19
+ this.options = options;
16
20
  }
17
21
  async chat(context, request) {
18
22
  const { model } = context;
19
23
  const providerName = (0, gen_ai_1.genAiProviderName)(model.apiType, model.providerSlug);
20
24
  return this.instrument(gen_ai_1.GenAiOperation.Chat, model, providerName, { stream: false, maxTokens: request.maxTokens }, async (span) => {
21
- const session = await this.minter.acquire(model, context);
25
+ (0, errors_1.throwIfCallerAborted)(request.signal);
26
+ const session = await this.minter.acquire(model, context, {
27
+ signal: request.signal,
28
+ });
22
29
  const dialect = (0, dialect_1.selectDialect)(model.apiType);
23
30
  const { url, headers } = (0, dialect_1.chatEndpoint)(dialect, session);
24
31
  const body = buildChatBody(dialect, request, model);
25
- const response = await this.send(url, headers, body, request.timeoutMs);
26
- const result = parseChatResponse(dialect, await readJson(response));
32
+ const result = await this.exchange(url, headers, body, request, async (response, call) => parseChatResponse(dialect, await readJson(response, call)));
27
33
  span.setAttributes({
28
34
  ...(result.model === undefined
29
35
  ? {}
@@ -44,14 +50,16 @@ class LlmClient {
44
50
  const { model } = context;
45
51
  const providerName = (0, gen_ai_1.genAiProviderName)(model.apiType, model.providerSlug);
46
52
  return this.instrument(gen_ai_1.GenAiOperation.Chat, model, providerName, { stream: false, maxTokens: request.maxTokens }, async (span) => {
47
- const session = await this.minter.acquire(model, context);
53
+ (0, errors_1.throwIfCallerAborted)(request.signal);
54
+ const session = await this.minter.acquire(model, context, {
55
+ signal: request.signal,
56
+ });
48
57
  const dialect = (0, dialect_1.selectDialect)(model.apiType);
49
58
  const { url, headers } = (0, dialect_1.chatEndpoint)(dialect, session);
50
- const response = await this.send(url, headers, {
59
+ const completion = await this.exchange(url, headers, {
51
60
  ...buildChatBody(dialect, request, model),
52
61
  ...(0, structured_1.structuredOutputBodyFields)(dialect, spec, jsonSchema),
53
- }, request.timeoutMs);
54
- const completion = parseChatResponse(dialect, await readJson(response));
62
+ }, request, async (response, call) => parseChatResponse(dialect, await readJson(response, call)));
55
63
  span.setAttributes({
56
64
  ...(completion.model === undefined
57
65
  ? {}
@@ -89,15 +97,20 @@ class LlmClient {
89
97
  let usage = {};
90
98
  let responseModel;
91
99
  let errorType;
100
+ let call;
92
101
  try {
93
- const session = await this.minter.acquire(model, context);
102
+ (0, errors_1.throwIfCallerAborted)(request.signal);
103
+ const session = await this.minter.acquire(model, context, {
104
+ signal: request.signal,
105
+ });
94
106
  const dialect = (0, dialect_1.selectDialect)(model.apiType);
95
107
  const { url, headers } = (0, dialect_1.chatEndpoint)(dialect, session);
96
- const response = await this.send(url, headers, { ...buildChatBody(dialect, request, model), stream: true }, request.timeoutMs);
108
+ call = new call_signal_1.CallSignal(request.timeoutMs ?? exports.DEFAULT_CALL_TIMEOUT_MS, request.signal);
109
+ const response = await this.send(url, headers, { ...buildChatBody(dialect, request, model), stream: true }, call);
97
110
  if (response.body === null) {
98
111
  throw new errors_1.LlmClientError(errors_1.LlmClientFailure.GatewayResponseMalformed, 'The LLM gateway returned a 2xx streaming response with no body.');
99
112
  }
100
- for await (const event of (0, stream_1.chatStreamEvents)(dialect, response.body)) {
113
+ for await (const event of streamEventsOf(dialect, response.body, call)) {
101
114
  if (event.kind === 'done') {
102
115
  usage = event.result.usage;
103
116
  responseModel = event.result.model;
@@ -130,6 +143,7 @@ class LlmClient {
130
143
  throw err;
131
144
  }
132
145
  finally {
146
+ call?.dispose();
133
147
  span.end();
134
148
  (0, gen_ai_1.recordGenAiMetrics)({
135
149
  operation: gen_ai_1.GenAiOperation.Chat,
@@ -147,10 +161,12 @@ class LlmClient {
147
161
  const { model } = context;
148
162
  const providerName = (0, gen_ai_1.genAiProviderName)(model.apiType, model.providerSlug);
149
163
  return this.instrument(gen_ai_1.GenAiOperation.Embeddings, model, providerName, { stream: false }, async (span) => {
150
- const session = await this.minter.acquire(model, context);
164
+ (0, errors_1.throwIfCallerAborted)(options?.signal);
165
+ const session = await this.minter.acquire(model, context, {
166
+ signal: options?.signal,
167
+ });
151
168
  const { url, headers } = (0, dialect_1.embeddingsEndpoint)(session);
152
- const response = await this.send(url, headers, { model: model.modelId, input: [...input] }, options?.timeoutMs);
153
- const result = parseEmbedResponse(await readJson(response));
169
+ const result = await this.exchange(url, headers, { model: model.modelId, input: [...input] }, options ?? {}, async (response, call) => parseEmbedResponse(await readJson(response, call)));
154
170
  const dimensions = result.embeddings[0]?.length;
155
171
  span.setAttributes({
156
172
  ...(result.model === undefined
@@ -203,34 +219,83 @@ class LlmClient {
203
219
  throw err;
204
220
  }
205
221
  }
206
- async send(url, headers, body, timeoutMs) {
222
+ async exchange(url, headers, body, options, read) {
223
+ const call = new call_signal_1.CallSignal(options.timeoutMs ?? exports.DEFAULT_CALL_TIMEOUT_MS, options.signal);
224
+ try {
225
+ return await read(await this.send(url, headers, body, call), call);
226
+ }
227
+ finally {
228
+ call.dispose();
229
+ }
230
+ }
231
+ async send(url, headers, body, call) {
232
+ if (call.callerAborted()) {
233
+ throw call.abortError();
234
+ }
207
235
  let response;
208
236
  try {
209
- response = await fetch(url, {
237
+ const init = {
210
238
  method: 'POST',
211
239
  headers,
212
240
  body: JSON.stringify(body),
213
- signal: AbortSignal.timeout(timeoutMs ?? exports.DEFAULT_CALL_TIMEOUT_MS),
214
- });
241
+ signal: call.signal,
242
+ dispatcher: (0, transport_deadline_1.deadlineBoundDispatcher)(this.options.dispatcher, call.timeoutMs),
243
+ };
244
+ response = await fetch(url, init);
215
245
  }
216
246
  catch (cause) {
217
- throw new errors_1.LlmClientError(errors_1.LlmClientFailure.GatewayCallFailed, `The LLM gateway call did not complete: ${cause instanceof Error ? cause.message : String(cause)}`, { cause });
247
+ if (call.callerAborted()) {
248
+ throw call.abortError(cause);
249
+ }
250
+ throw callFailed(cause, call);
218
251
  }
219
252
  if (!response.ok) {
220
- throw new errors_1.LlmClientError(errors_1.LlmClientFailure.GatewayCallFailed, `The LLM gateway returned ${response.status}: ${await (0, errors_1.readDetail)(response)}`, { status: response.status });
253
+ const detail = await (0, errors_1.readDetail)(response);
254
+ if (call.callerAborted()) {
255
+ throw call.abortError();
256
+ }
257
+ throw new errors_1.LlmClientError(errors_1.LlmClientFailure.GatewayCallFailed, `The LLM gateway returned ${response.status}: ${detail}`, { status: response.status });
221
258
  }
222
259
  return response;
223
260
  }
224
261
  }
225
262
  exports.LlmClient = LlmClient;
226
- async function readJson(response) {
263
+ async function readJson(response, call) {
227
264
  try {
228
265
  return await response.json();
229
266
  }
230
267
  catch (cause) {
268
+ if (call.callerAborted()) {
269
+ throw call.abortError(cause);
270
+ }
271
+ if (call.termination === errors_1.LlmCallTermination.Deadline) {
272
+ throw callFailed(cause, call);
273
+ }
231
274
  throw new errors_1.LlmClientError(errors_1.LlmClientFailure.GatewayResponseMalformed, 'The LLM gateway returned a 2xx body that is not JSON.', { cause });
232
275
  }
233
276
  }
277
+ async function* streamEventsOf(dialect, body, call) {
278
+ try {
279
+ yield* (0, stream_1.chatStreamEvents)(dialect, body);
280
+ }
281
+ catch (err) {
282
+ if (call.callerAborted()) {
283
+ throw call.abortError(err);
284
+ }
285
+ if (call.termination === errors_1.LlmCallTermination.Deadline) {
286
+ throw callFailed(err, call);
287
+ }
288
+ throw err;
289
+ }
290
+ }
291
+ function callFailed(cause, call) {
292
+ return new errors_1.LlmClientError(errors_1.LlmClientFailure.GatewayCallFailed, `The LLM gateway call did not complete: ${cause instanceof Error ? cause.message : String(cause)}`, {
293
+ cause,
294
+ ...(call.termination === errors_1.LlmCallTermination.Deadline
295
+ ? { termination: errors_1.LlmCallTermination.Deadline }
296
+ : {}),
297
+ });
298
+ }
234
299
  function usageAttributes(usage) {
235
300
  return {
236
301
  ...(usage.inputTokens === undefined
@@ -1 +1 @@
1
- {"version":3,"file":"llm-client.js","sourceRoot":"","sources":["../../src/lib/llm-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llm-client.js","sourceRoot":"","sources":["../../src/lib/llm-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { Dispatcher } from 'undici';
2
+ export declare class DeadlineBoundDispatcher extends Dispatcher {
3
+ private readonly base;
4
+ readonly deadlineMs: number;
5
+ constructor(base: Dispatcher, deadlineMs: number);
6
+ dispatch(options: Dispatcher.DispatchOptions, handler: Dispatcher.DispatchHandler): boolean;
7
+ }
8
+ export declare function deadlineBoundDispatcher(base: Dispatcher | undefined, deadlineMs: number): Dispatcher;
9
+ //# sourceMappingURL=transport-deadline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport-deadline.d.ts","sourceRoot":"","sources":["../../src/lib/transport-deadline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAuB,MAAM,QAAQ,CAAC;AA6BzD,qBAAa,uBAAwB,SAAQ,UAAU;IAEnD,OAAO,CAAC,QAAQ,CAAC,IAAI;aACL,UAAU,EAAE,MAAM;gBADjB,IAAI,EAAE,UAAU,EACjB,UAAU,EAAE,MAAM;IAKpB,QAAQ,CACtB,OAAO,EAAE,UAAU,CAAC,eAAe,EACnC,OAAO,EAAE,UAAU,CAAC,eAAe,GAClC,OAAO;CAMX;AAQD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,UAAU,GAAG,SAAS,EAC5B,UAAU,EAAE,MAAM,GACjB,UAAU,CAEZ"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeadlineBoundDispatcher = void 0;
4
+ exports.deadlineBoundDispatcher = deadlineBoundDispatcher;
5
+ const undici_1 = require("undici");
6
+ class DeadlineBoundDispatcher extends undici_1.Dispatcher {
7
+ base;
8
+ deadlineMs;
9
+ constructor(base, deadlineMs) {
10
+ super();
11
+ this.base = base;
12
+ this.deadlineMs = deadlineMs;
13
+ }
14
+ dispatch(options, handler) {
15
+ return this.base.dispatch({ ...options, headersTimeout: this.deadlineMs, bodyTimeout: this.deadlineMs }, handler);
16
+ }
17
+ }
18
+ exports.DeadlineBoundDispatcher = DeadlineBoundDispatcher;
19
+ function deadlineBoundDispatcher(base, deadlineMs) {
20
+ return new DeadlineBoundDispatcher(base ?? (0, undici_1.getGlobalDispatcher)(), deadlineMs);
21
+ }
22
+ //# sourceMappingURL=transport-deadline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport-deadline.js","sourceRoot":"","sources":["../../src/lib/transport-deadline.ts"],"names":[],"mappings":";;;AAsDA,0DAKC;AA3DD,mCAAyD;AA6BzD,MAAa,uBAAwB,SAAQ,mBAAU;IAElC;IACD;IAFlB,YACmB,IAAgB,EACjB,UAAkB;QAElC,KAAK,EAAE,CAAC;QAHS,SAAI,GAAJ,IAAI,CAAY;QACjB,eAAU,GAAV,UAAU,CAAQ;IAGpC,CAAC;IAEe,QAAQ,CACtB,OAAmC,EACnC,OAAmC;QAEnC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CACvB,EAAE,GAAG,OAAO,EAAE,cAAc,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,EAC7E,OAAO,CACR,CAAC;IACJ,CAAC;CACF;AAjBD,0DAiBC;AAQD,SAAgB,uBAAuB,CACrC,IAA4B,EAC5B,UAAkB;IAElB,OAAO,IAAI,uBAAuB,CAAC,IAAI,IAAI,IAAA,4BAAmB,GAAE,EAAE,UAAU,CAAC,CAAC;AAChF,CAAC"}
@@ -10,6 +10,7 @@ export declare class TypedServiceClientMintTransport implements GatewayMintTrans
10
10
  readonly orgScope: OrgScopeWitness;
11
11
  readonly projectId?: string | undefined;
12
12
  readonly headers: Readonly<Record<string, string>>;
13
+ readonly signal?: AbortSignal | undefined;
13
14
  }): Promise<unknown>;
14
15
  }
15
16
  //# sourceMappingURL=typed-client-mint-transport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"typed-client-mint-transport.d.ts","sourceRoot":"","sources":["../../src/nest/typed-client-mint-transport.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAqBxE,qBAAa,+BAAgC,YAAW,oBAAoB;IAExE,OAAO,CAAC,QAAQ,CAAC,MAAM;IAQvB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBARL,MAAM,EAAE,kBAAkB,EAQ1B,KAAK,EAAE,MAAM;IAGzB,IAAI,CACT,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,sBAAsB,EAC5B,OAAO,EAAE;QAUP,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;QACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACxC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;KACpD,GACA,OAAO,CAAC,OAAO,CAAC;CAMpB"}
1
+ {"version":3,"file":"typed-client-mint-transport.d.ts","sourceRoot":"","sources":["../../src/nest/typed-client-mint-transport.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAqBxE,qBAAa,+BAAgC,YAAW,oBAAoB;IAExE,OAAO,CAAC,QAAQ,CAAC,MAAM;IAQvB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBARL,MAAM,EAAE,kBAAkB,EAQ1B,KAAK,EAAE,MAAM;IAGzB,IAAI,CACT,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,sBAAsB,EAC5B,OAAO,EAAE;QAUP,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;QACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACxC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;KAC3C,GACA,OAAO,CAAC,OAAO,CAAC;CAUpB"}
@@ -13,6 +13,7 @@ class TypedServiceClientMintTransport {
13
13
  return this.client.post(path, body, {
14
14
  headers: { ...context.headers },
15
15
  scopedClaim: (0, platform_common_1.orgScopedClaim)(this.realm, context.orgScope),
16
+ ...(context.signal === undefined ? {} : { signal: context.signal }),
16
17
  });
17
18
  }
18
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"typed-client-mint-transport.js","sourceRoot":"","sources":["../../src/nest/typed-client-mint-transport.ts"],"names":[],"mappings":";;;AAAA,6DAAyD;AA2BzD,MAAa,+BAA+B;IAEvB;IAQA;IATnB,YACmB,MAA0B,EAQ1B,KAAa;QARb,WAAM,GAAN,MAAM,CAAoB;QAQ1B,UAAK,GAAL,KAAK,CAAQ;IAC7B,CAAC;IAEG,IAAI,CACT,IAAY,EACZ,IAA4B,EAC5B,OAaC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAkC,IAAI,EAAE,IAAI,EAAE;YACnE,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE;YAC/B,WAAW,EAAE,IAAA,gCAAc,EAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;SAC1D,CAAC,CAAC;IACL,CAAC;CACF;AApCD,0EAoCC"}
1
+ {"version":3,"file":"typed-client-mint-transport.js","sourceRoot":"","sources":["../../src/nest/typed-client-mint-transport.ts"],"names":[],"mappings":";;;AAAA,6DAAyD;AA2BzD,MAAa,+BAA+B;IAEvB;IAQA;IATnB,YACmB,MAA0B,EAQ1B,KAAa;QARb,WAAM,GAAN,MAAM,CAAoB;QAQ1B,UAAK,GAAL,KAAK,CAAQ;IAC7B,CAAC;IAEG,IAAI,CACT,IAAY,EACZ,IAA4B,EAC5B,OAcC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAkC,IAAI,EAAE,IAAI,EAAE;YACnE,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE;YAC/B,WAAW,EAAE,IAAA,gCAAc,EAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;YAIzD,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;SACpE,CAAC,CAAC;IACL,CAAC;CACF;AAzCD,0EAyCC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xemahq/llm-client-nest",
3
- "version": "0.3.1",
3
+ "version": "0.5.0",
4
4
  "description": "The one way a Xema service calls a model: resolve the LLM gateway from the service registry, mint a short-lived sealed grant through llm-registry-api, call it, and emit the OpenTelemetry GenAI semantic conventions — once, instead of eleven times.",
5
5
  "keywords": [
6
6
  "xema",
@@ -29,12 +29,15 @@
29
29
  "dist",
30
30
  "README.md"
31
31
  ],
32
+ "dependencies": {
33
+ "undici": "^7.29.0"
34
+ },
32
35
  "peerDependencies": {
33
36
  "@nestjs/common": "^10 || ^11",
34
37
  "@xemahq/contracts": ">=0.4.0",
35
- "@xemahq/observability-nest": "^0.3.0",
36
- "@xemahq/platform-common": ">=0.28.0",
37
- "@xemahq/service-registry-nest": ">=0.8.0",
38
+ "@xemahq/observability-nest": "^0.3.2",
39
+ "@xemahq/platform-common": ">=0.35.0",
40
+ "@xemahq/service-registry-nest": ">=0.12.0",
38
41
  "reflect-metadata": "^0.2"
39
42
  },
40
43
  "devDependencies": {
@@ -43,8 +46,8 @@
43
46
  "@nestjs/testing": "11.1.18",
44
47
  "@types/jest": "^30.0.0",
45
48
  "@types/node": "25.2.3",
46
- "@xemahq/contracts": "^0.4.0",
47
- "@xemahq/platform-common": ">=0.35.0",
49
+ "@xemahq/contracts": "^0.18.0",
50
+ "@xemahq/platform-common": ">=0.37.0",
48
51
  "eslint": "^9.39.4",
49
52
  "jest": "^30.3.0",
50
53
  "prettier": "3.6.2",
@@ -52,9 +55,9 @@
52
55
  "rxjs": "7.8.2",
53
56
  "ts-jest": "^29.4.9",
54
57
  "typescript": "5.9.3",
55
- "@xemahq/eslint-config": "0.7.0",
56
- "@xemahq/observability-nest": "0.3.1",
57
- "@xemahq/service-registry-nest": "0.11.1"
58
+ "@xemahq/eslint-config": "0.7.1",
59
+ "@xemahq/service-registry-nest": "0.14.0",
60
+ "@xemahq/observability-nest": "0.3.2"
58
61
  },
59
62
  "scripts": {
60
63
  "clean": "rm -rf dist",