agentfootprint 9.72.0 → 9.74.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 (66) hide show
  1. package/CHANGELOG.md +160 -0
  2. package/dist/adapters/identity/azure.js +306 -0
  3. package/dist/adapters/identity/azure.js.map +1 -0
  4. package/dist/adapters/llm/FoundryLocalProvider.js +992 -0
  5. package/dist/adapters/llm/FoundryLocalProvider.js.map +1 -0
  6. package/dist/adapters/llm/FoundryProvider.js +273 -0
  7. package/dist/adapters/llm/FoundryProvider.js.map +1 -0
  8. package/dist/adapters/llm/OllamaProvider.js +171 -12
  9. package/dist/adapters/llm/OllamaProvider.js.map +1 -1
  10. package/dist/adapters/llm/OpenAIProvider.js +117 -5
  11. package/dist/adapters/llm/OpenAIProvider.js.map +1 -1
  12. package/dist/adapters/llm/createProvider.js +143 -10
  13. package/dist/adapters/llm/createProvider.js.map +1 -1
  14. package/dist/adapters/types.js.map +1 -1
  15. package/dist/esm/adapters/identity/azure.d.ts +188 -0
  16. package/dist/esm/adapters/identity/azure.js +302 -0
  17. package/dist/esm/adapters/identity/azure.js.map +1 -0
  18. package/dist/esm/adapters/llm/FoundryLocalProvider.d.ts +215 -0
  19. package/dist/esm/adapters/llm/FoundryLocalProvider.js +986 -0
  20. package/dist/esm/adapters/llm/FoundryLocalProvider.js.map +1 -0
  21. package/dist/esm/adapters/llm/FoundryProvider.d.ts +178 -0
  22. package/dist/esm/adapters/llm/FoundryProvider.js +268 -0
  23. package/dist/esm/adapters/llm/FoundryProvider.js.map +1 -0
  24. package/dist/esm/adapters/llm/OllamaProvider.js +171 -12
  25. package/dist/esm/adapters/llm/OllamaProvider.js.map +1 -1
  26. package/dist/esm/adapters/llm/OpenAIProvider.d.ts +111 -0
  27. package/dist/esm/adapters/llm/OpenAIProvider.js +115 -4
  28. package/dist/esm/adapters/llm/OpenAIProvider.js.map +1 -1
  29. package/dist/esm/adapters/llm/createProvider.d.ts +48 -12
  30. package/dist/esm/adapters/llm/createProvider.js +143 -10
  31. package/dist/esm/adapters/llm/createProvider.js.map +1 -1
  32. package/dist/esm/adapters/types.d.ts +4 -2
  33. package/dist/esm/adapters/types.js.map +1 -1
  34. package/dist/esm/identity.d.ts +1 -0
  35. package/dist/esm/identity.js +9 -0
  36. package/dist/esm/identity.js.map +1 -1
  37. package/dist/esm/index.d.ts +1 -1
  38. package/dist/esm/index.js.map +1 -1
  39. package/dist/esm/providers.d.ts +5 -0
  40. package/dist/esm/providers.js +14 -0
  41. package/dist/esm/providers.js.map +1 -1
  42. package/dist/identity.js +14 -1
  43. package/dist/identity.js.map +1 -1
  44. package/dist/index.js.map +1 -1
  45. package/dist/providers.js +20 -1
  46. package/dist/providers.js.map +1 -1
  47. package/dist/types/adapters/identity/azure.d.ts +189 -0
  48. package/dist/types/adapters/identity/azure.d.ts.map +1 -0
  49. package/dist/types/adapters/llm/FoundryLocalProvider.d.ts +216 -0
  50. package/dist/types/adapters/llm/FoundryLocalProvider.d.ts.map +1 -0
  51. package/dist/types/adapters/llm/FoundryProvider.d.ts +179 -0
  52. package/dist/types/adapters/llm/FoundryProvider.d.ts.map +1 -0
  53. package/dist/types/adapters/llm/OllamaProvider.d.ts.map +1 -1
  54. package/dist/types/adapters/llm/OpenAIProvider.d.ts +111 -0
  55. package/dist/types/adapters/llm/OpenAIProvider.d.ts.map +1 -1
  56. package/dist/types/adapters/llm/createProvider.d.ts +48 -12
  57. package/dist/types/adapters/llm/createProvider.d.ts.map +1 -1
  58. package/dist/types/adapters/types.d.ts +4 -2
  59. package/dist/types/adapters/types.d.ts.map +1 -1
  60. package/dist/types/identity.d.ts +1 -0
  61. package/dist/types/identity.d.ts.map +1 -1
  62. package/dist/types/index.d.ts +1 -1
  63. package/dist/types/index.d.ts.map +1 -1
  64. package/dist/types/providers.d.ts +5 -0
  65. package/dist/types/providers.d.ts.map +1 -1
  66. package/package.json +5 -1
@@ -58,6 +58,8 @@
58
58
  * • NO `providerRef`. The native wire returns no response id, and a
59
59
  * fabricated one would point at nothing.
60
60
  */
61
+ /** Cap for any text the wire supplies before it becomes one of our messages. */
62
+ const ERROR_TEXT_CAP = 200;
61
63
  // ─── Errors ─────────────────────────────────────────────────────────
62
64
  /**
63
65
  * The two failures a local runtime actually has, told in words that
@@ -154,12 +156,20 @@ export function ollama(modelOrOptions, maybeOptions) {
154
156
  // checked rather than forgotten.
155
157
  carriesForcedToolChoice: false,
156
158
  async complete(req) {
159
+ // A signal that fired BEFORE the call stops it here, before any socket
160
+ // opens — the `/api/tags` enrichment included. An already-aborted signal
161
+ // never dispatches another 'abort' event, so a listener alone cannot
162
+ // see it.
163
+ throwIfAborted(req.signal);
157
164
  const body = buildBody(req, cfg, false);
158
165
  const response = await post(body, req);
159
- const json = (await response.json());
166
+ // `fetch` resolves on HEADERS, so reading the body is the stretch where
167
+ // a caller abort would otherwise be inert — honor it for that too.
168
+ const json = (await untilAborted(response.json(), req.signal));
160
169
  return fromOllamaResponse(json, nextToolCallId);
161
170
  },
162
171
  async *stream(req) {
172
+ throwIfAborted(req.signal);
163
173
  const body = buildBody(req, cfg, true);
164
174
  const response = await post(body, req);
165
175
  if (!response.body)
@@ -171,8 +181,20 @@ export function ollama(modelOrOptions, maybeOptions) {
171
181
  let promptEvalCount = 0;
172
182
  let evalCount = 0;
173
183
  let tokenIndex = 0;
174
- for await (const chunk of parseNdjson(response.body)) {
184
+ // The signal rides INTO the parser: it is what stops a generation the
185
+ // caller no longer wants, and what cancels the body when it does.
186
+ for await (const chunk of parseNdjson(response.body, req.signal)) {
175
187
  const frame = chunk;
188
+ // An already-200 stream can still FAIL mid-generation, and this wire
189
+ // says so IN BAND with an `{"error": "..."}` frame. Such a frame
190
+ // carries no `message` and no `done`, so the guards below would skip
191
+ // it and the terminal chunk would report a truncated answer as
192
+ // `stopReason: 'stop'` with nobody told. Raise instead: a failed
193
+ // generation is a failure, never a shorter answer.
194
+ const failure = frameFailureText(frame);
195
+ if (failure) {
196
+ throw providerError(`[ollama] the stream failed mid-generation — ${failure}`);
197
+ }
176
198
  // Counts ride the terminal frame, whose `message.content` is empty —
177
199
  // read them before any content guard, or the only token counts the
178
200
  // stream reports are thrown away (the failure that made streamed
@@ -361,7 +383,19 @@ function toOllamaTool(schema) {
361
383
  },
362
384
  };
363
385
  }
386
+ /**
387
+ * Wire response → the port's shape.
388
+ *
389
+ * @throws an `OllamaProviderError` when the 200 body is really a failure
390
+ * (`{"error": "..."}`). Reading it as a response would yield empty content
391
+ * with `stopReason: 'stop'` and zero tokens — a failed call dressed as a
392
+ * successful one.
393
+ */
364
394
  function fromOllamaResponse(response, nextToolCallId) {
395
+ if (response.error !== undefined && response.error !== null) {
396
+ const detail = extractErrorPayload(response.error) || 'the daemon named no reason';
397
+ throw providerError(`[ollama] the daemon answered 200 with an error — ${detail}`);
398
+ }
365
399
  const message = response.message;
366
400
  const wireToolCalls = message?.tool_calls ?? [];
367
401
  const toolCalls = wireToolCalls.map((tc) => toLLMToolCall(tc, nextToolCallId));
@@ -458,14 +492,24 @@ function normalizeStopReason(raw, hasToolCalls) {
458
492
  return raw;
459
493
  }
460
494
  }
461
- /** Parse an NDJSON body — one JSON object per line. */
462
- async function* parseNdjson(body) {
495
+ /**
496
+ * Parse an NDJSON body — one JSON object per line.
497
+ *
498
+ * Two things here a plain line reader would not do, both because the other
499
+ * end is a model on THIS machine: the caller's `signal` interrupts the read
500
+ * (`fetch` resolved on headers, so this loop is the whole rest of the call),
501
+ * and the body is CANCELLED on the way out — a generation nobody is reading
502
+ * still occupies the machine.
503
+ */
504
+ async function* parseNdjson(body, signal) {
463
505
  const reader = body.getReader();
464
506
  const decoder = new TextDecoder();
465
507
  let buf = '';
466
508
  try {
467
509
  for (;;) {
468
- const { value, done } = await reader.read();
510
+ // The read is RACED against the caller's signal. A signal that only
511
+ // reached the headers would be a cancellation that cancels nothing.
512
+ const { value, done } = await untilAborted(reader.read(), signal);
469
513
  if (done)
470
514
  break;
471
515
  buf += decoder.decode(value, { stream: true });
@@ -495,7 +539,23 @@ async function* parseNdjson(body) {
495
539
  }
496
540
  }
497
541
  finally {
498
- reader.releaseLock();
542
+ // CANCEL, not merely release the lock. The terminal `done` frame (the
543
+ // stream loop breaks on it), a consumer that breaks out, an error frame,
544
+ // a caller abort — every one of them leaves an open body, and an open
545
+ // body means the local model keeps generating for nobody and the socket
546
+ // stays up.
547
+ try {
548
+ await reader.cancel();
549
+ }
550
+ catch {
551
+ /* already closed or errored — nothing left to close */
552
+ }
553
+ try {
554
+ reader.releaseLock();
555
+ }
556
+ catch {
557
+ /* a lock the runtime already dropped */
558
+ }
499
559
  }
500
560
  }
501
561
  /**
@@ -512,9 +572,16 @@ async function* parseNdjson(body) {
512
572
  * to break on our behalf. So the timeout wins on its own.
513
573
  *
514
574
  * A caller's own `AbortSignal` is forwarded and, if IT is what fired, the
515
- * abort is re-thrown as an abort rather than blamed on the daemon.
575
+ * abort is re-thrown as an abort rather than blamed on the daemon —
576
+ * including a signal that was ALREADY aborted when the call was made, which
577
+ * never dispatches an event for a listener to hear.
516
578
  */
517
579
  async function fetchUntilHeaders(fetchImpl, url, init, opts) {
580
+ // An already-aborted signal never dispatches another 'abort' event, so the
581
+ // bridge below could not fire and the request would go out on a turn the
582
+ // caller has cancelled. Refuse before the socket opens, and refuse with the
583
+ // caller's own reason: an abort is their call, never a daemon fault.
584
+ throwIfAborted(opts.signal);
518
585
  const controller = new AbortController();
519
586
  let timedOut = false;
520
587
  let timer;
@@ -573,7 +640,7 @@ async function describeFailure(response, model, baseUrl, fetchImpl, timeoutMs) {
573
640
  });
574
641
  }
575
642
  const detail = extractErrorText(bodyText);
576
- return Object.assign(new Error(`[ollama] ${response.status} ${response.statusText}${detail ? ` — ${detail}` : ''}`.trim()), { name: 'OllamaProviderError', status: response.status });
643
+ return providerError(`[ollama] ${response.status} ${response.statusText}${detail ? ` — ${detail}` : ''}`.trim(), response.status);
577
644
  }
578
645
  async function listPulledModels(fetchImpl, baseUrl, timeoutMs) {
579
646
  const controller = new AbortController();
@@ -605,18 +672,110 @@ async function safeText(response) {
605
672
  return '';
606
673
  }
607
674
  }
608
- /** Native errors are `{"error": "..."}`; fall back to the raw text. */
675
+ /**
676
+ * Native errors are `{"error": "..."}`; the object spelling and raw text are
677
+ * tolerated. Every path is capped — the wire's words help diagnose, but a
678
+ * daemon echoing something enormous (or poisoned) must not become the message.
679
+ */
609
680
  function extractErrorText(bodyText) {
610
681
  if (!bodyText)
611
682
  return '';
612
683
  try {
613
684
  const parsed = JSON.parse(bodyText);
614
- if (typeof parsed.error === 'string' && parsed.error.length > 0)
615
- return parsed.error;
685
+ const detail = extractErrorPayload(parsed.error);
686
+ if (detail)
687
+ return detail;
616
688
  }
617
689
  catch {
618
690
  /* not JSON — fall through */
619
691
  }
620
- return bodyText.slice(0, 200);
692
+ return bodyText.slice(0, ERROR_TEXT_CAP);
693
+ }
694
+ /**
695
+ * The words out of an `error` payload — a bare string on this wire, the
696
+ * `{"message": "..."}` spelling tolerated — capped like every other piece of
697
+ * wire text this file repeats. Empty when there is nothing usable to say, so
698
+ * a caller can tell "no error" from "an error that named no reason".
699
+ */
700
+ function extractErrorPayload(err) {
701
+ if (typeof err === 'string')
702
+ return err.slice(0, ERROR_TEXT_CAP);
703
+ if (typeof err === 'object' && err !== null) {
704
+ const message = err.message;
705
+ if (typeof message === 'string' && message.length > 0) {
706
+ return message.slice(0, ERROR_TEXT_CAP);
707
+ }
708
+ }
709
+ return '';
710
+ }
711
+ /**
712
+ * What a mid-stream frame says went wrong — '' when nothing did.
713
+ *
714
+ * One spelling on this wire: an NDJSON frame carrying `error`. It means the
715
+ * generation failed, and it carries neither `message` nor `done`, which is
716
+ * exactly why an unchecked one looks like an ordinary skippable frame. An
717
+ * ordinary frame — the terminal `done` one included, whose content is empty
718
+ * by design — has no `error` key at all, so this guard stays narrow.
719
+ */
720
+ function frameFailureText(frame) {
721
+ const data = typeof frame === 'object' && frame !== null ? frame : undefined;
722
+ const err = data?.error;
723
+ if (err === undefined || err === null)
724
+ return '';
725
+ return extractErrorPayload(err) || 'the daemon reported an error but named no reason';
726
+ }
727
+ /**
728
+ * The provider's own labelled error — one shape for every failure that is not
729
+ * the typed, actionable {@link OllamaUnavailableError}.
730
+ */
731
+ function providerError(message, status) {
732
+ return Object.assign(new Error(message), {
733
+ name: 'OllamaProviderError',
734
+ ...(status !== undefined && { status }),
735
+ });
736
+ }
737
+ /**
738
+ * An abort is the CALLER's word, so it must reach them AS an abort — never
739
+ * dressed up as a daemon failure. The signal's own `reason` is used when it
740
+ * is an Error (what every runtime supplies: a DOMException named
741
+ * 'AbortError'); anything else becomes one, keeping the reason as `cause`.
742
+ */
743
+ function asAbortError(reason) {
744
+ if (reason instanceof Error)
745
+ return reason;
746
+ return Object.assign(new Error('This operation was aborted'), {
747
+ name: 'AbortError',
748
+ ...(reason !== undefined && { cause: reason }),
749
+ });
750
+ }
751
+ /** Stop right here when the caller's signal has already fired. */
752
+ function throwIfAborted(signal) {
753
+ if (signal?.aborted)
754
+ throw asAbortError(signal.reason);
755
+ }
756
+ /**
757
+ * `promise`, except that a caller abort ends the wait immediately.
758
+ *
759
+ * `fetch` resolves on HEADERS. Everything after that — a streamed body, a
760
+ * large non-streaming JSON read — used to be deaf to the caller's signal, so
761
+ * a cancelled turn kept the local model generating to completion. This is
762
+ * what makes `LLMRequest.signal` honest for the whole call rather than only
763
+ * until the headers land. The CALLER's signal only: `timeoutMs` stays exactly
764
+ * what it always was, a bound on the wait for headers and never on generation.
765
+ */
766
+ function untilAborted(promise, signal) {
767
+ if (!signal)
768
+ return promise;
769
+ if (signal.aborted) {
770
+ void promise.catch(() => undefined); // the abandoned work must not warn
771
+ return Promise.reject(asAbortError(signal.reason));
772
+ }
773
+ return new Promise((resolve, reject) => {
774
+ const onAbort = () => reject(asAbortError(signal.reason));
775
+ signal.addEventListener('abort', onAbort, { once: true });
776
+ promise.then(resolve, reject).finally(() => {
777
+ signal.removeEventListener('abort', onAbort);
778
+ });
779
+ });
621
780
  }
622
781
  //# sourceMappingURL=OllamaProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OllamaProvider.js","sourceRoot":"","sources":["../../../../src/adapters/llm/OllamaProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OllamaProvider.js","sourceRoot":"","sources":["../../../../src/adapters/llm/OllamaProvider.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@
19
19
  * convenience factory below.
20
20
  */
21
21
  import type { LLMCallHooks, LLMChunk, LLMProvider, LLMRequest, LLMResponse, WireRole } from '../types.js';
22
+ import type { TokenCredentialLike } from '../identity/azure.js';
22
23
  interface OpenAIClient {
23
24
  chat: {
24
25
  completions: {
@@ -152,6 +153,64 @@ export interface OpenAIProviderOptions {
152
153
  readonly apiKey?: string | (() => string | Promise<string>);
153
154
  /** Base URL — set for OpenAI-compatible APIs (Ollama, Together, vLLM). */
154
155
  readonly baseURL?: string;
156
+ /**
157
+ * Declare the endpoint's DIALECT instead of letting `baseURL` imply it (9.74.0).
158
+ *
159
+ * ── What "legacy" means here ─────────────────────────────────────────────
160
+ * An OpenAI-compatible server that predates two of OpenAI's own moves: it
161
+ * accepts only the deprecated `max_tokens` (never `max_completion_tokens`),
162
+ * and it may reject `stream_options` outright. Setting `baseURL` has always
163
+ * implied that dialect, because the compatible servers the option was built
164
+ * for (Ollama/vLLM/Together/Groq) are exactly the ones that break on the
165
+ * modern fields — and a hard failure is worse than a conservative request.
166
+ *
167
+ * That implication is a DEFAULT, not a law. `legacyEndpoint: false` declares
168
+ * "this baseURL speaks the CURRENT dialect": send `max_completion_tokens`,
169
+ * send `stream_options.include_usage` on streams, and declare forced tool
170
+ * choice. The worked example is Azure's v1 inference route
171
+ * (`https://….services.ai.azure.com/api/projects/{project}/openai/v1`) — a
172
+ * custom `baseURL` that IS current OpenAI wire; `foundry()` sets this for
173
+ * you. `legacyEndpoint: true` with no `baseURL` is legal and means what it
174
+ * says, though nothing today needs it.
175
+ *
176
+ * `streamUsage` interplay: a non-legacy endpoint already sends
177
+ * `stream_options`, exactly as before — `streamUsage` remains the opt-in
178
+ * for endpoints that stay legacy, and this flag does not change what either
179
+ * value of it does.
180
+ *
181
+ * Unset, nothing changes anywhere: the default is exactly `!!baseURL`.
182
+ */
183
+ readonly legacyEndpoint?: boolean;
184
+ /**
185
+ * Ask a CUSTOM endpoint for token usage while streaming (9.73.0).
186
+ *
187
+ * ── The silence this breaks ──────────────────────────────────────────────
188
+ * OpenAI and Azure only report usage on a stream when asked, via
189
+ * `stream_options: { include_usage: true }`. This adapter sends that — but
190
+ * NOT when you set `baseURL`, because some OpenAI-compatible servers reject
191
+ * an unknown field outright, and a hard failure is worse than a missing
192
+ * number. The cost of that caution went unnoticed: **every local-model user
193
+ * streaming through `openai({ baseURL })` sees zero tokens**, everywhere
194
+ * usage is read — dashboards, cost recorders, the thinking trace's per-step
195
+ * cost. Nothing is broken and nothing says so.
196
+ *
197
+ * Most current local servers do support it (llama.cpp and Ollama both send a
198
+ * final usage chunk when asked). Set this to `true` and get the numbers
199
+ * back; leave it out and nothing changes.
200
+ *
201
+ * ── When it is ignored ───────────────────────────────────────────────────
202
+ * Ignored whenever the endpoint is treated as MODERN, because there the
203
+ * field is already sent. "Modern" is `legacyEndpoint === false`, which is
204
+ * `!baseURL` by default — so with no `baseURL` and no `legacyEndpoint` this
205
+ * flag still changes nothing, exactly as it did before `legacyEndpoint`
206
+ * existed.
207
+ *
208
+ * But `legacyEndpoint` is now the thing that decides, not `baseURL`:
209
+ * `openai({ legacyEndpoint: true })` with NO `baseURL` is legal and means
210
+ * what it says, and there `stream_options` is withheld and this flag is what
211
+ * turns it back on. So read the pair, not `baseURL` alone.
212
+ */
213
+ readonly streamUsage?: boolean;
155
214
  /**
156
215
  * Default model used when `LLMRequest.model` is `'openai'` (the
157
216
  * shorthand). Full model ids pass through unchanged.
@@ -212,6 +271,36 @@ export interface AzureOpenAIProviderOptions {
212
271
  readonly endpoint?: string;
213
272
  /** API key. Env fallbacks: `AZURE_OPENAI_API_KEY`, then `OPENAI_API_KEY`. */
214
273
  readonly apiKey?: string;
274
+ /**
275
+ * Keyless (Microsoft Entra ID) auth — pass any `@azure/identity` credential
276
+ * (`DefaultAzureCredential`, `ManagedIdentityCredential`, …); the type is
277
+ * duck-typed so this file never imports that SDK. The token is minted (or
278
+ * served from MSAL's cache) on EVERY request by the underlying client, so a
279
+ * long-lived agent process never holds an expired token.
280
+ *
281
+ * Mutually exclusive with `apiKey`: two credentials is a config bug, not
282
+ * extra security, and is refused by name rather than silently ranked.
283
+ */
284
+ readonly credential?: TokenCredentialLike;
285
+ /**
286
+ * Token audience for `credential`. Default
287
+ * {@link AZURE_COGNITIVE_SERVICES_SCOPE}
288
+ * (`https://cognitiveservices.azure.com/.default`) — the audience
289
+ * Microsoft's own keyless guidance names for the CLASSIC deployment-scoped
290
+ * route this door builds
291
+ * (`{endpoint}/openai/deployments/{d}/chat/completions?api-version=…`).
292
+ * Each door defaults to the audience ITS route documents: `foundry()`'s
293
+ * v1/project route is documented against {@link AZURE_AI_SCOPE}
294
+ * (`https://ai.azure.com/.default`), and current resources widely accept
295
+ * both — but an older `*.openai.azure.com` resource may only accept this
296
+ * one, and a default that 401s on the oldest resources it exists to serve
297
+ * would be the wrong default. The ARM control plane
298
+ * (`https://management.azure.com/.default`) is a THIRD audience whose
299
+ * tokens never work here. Azure Government spells this audience
300
+ * `https://cognitiveservices.azure.us/.default`. Ignored without
301
+ * `credential`.
302
+ */
303
+ readonly scope?: string;
215
304
  /** Azure API version, e.g. `2024-12-01-preview`. Env fallback:
216
305
  * `AZURE_OPENAI_API_VERSION`. Required. */
217
306
  readonly apiVersion?: string;
@@ -263,4 +352,26 @@ export interface AzureOpenAIProviderOptions {
263
352
  * }).build();
264
353
  */
265
354
  export declare function azureOpenai(options?: AzureOpenAIProviderOptions): LLMProvider;
355
+ /**
356
+ * `TokenCredentialLike.getToken(scope)` → the bearer string an OpenAI-shaped
357
+ * client can send — shared by the two Entra doors (`azureOpenai()` here and
358
+ * `foundry()` in FoundryProvider.ts, which imports it; the dependency points
359
+ * THIS way because FoundryProvider already composes over `openai()`).
360
+ *
361
+ * What it enforces are the credential-surface laws, not conveniences:
362
+ * • an ABSENT answer — `null`, the SDK's spelling of "no token available",
363
+ * and `undefined`, which is what a hand-rolled or caching credential
364
+ * hands back on a miss — is refused by NAME. Both are the same absence
365
+ * and get the same refusal: passed onward, `null` becomes a bare 401 that
366
+ * names nothing, and `undefined` becomes a raw `TypeError` thrown from
367
+ * inside this library, which names less than the 401 does.
368
+ * • an empty or blank `token` FIELD is refused by field name; the value
369
+ * itself is a secret when it is right, so no message ever quotes it.
370
+ * • a throwing credential is reported as operation + error NAME only (auth
371
+ * SDKs echo request detail into 401/403 text), with no `cause` — a cause
372
+ * travels into every serializer that walks own properties.
373
+ * The scope IS quoted: it is a public audience URI, never a secret, and it is
374
+ * the thing the consumer most likely got wrong.
375
+ */
376
+ export declare function entraBearerToken(adapter: string, credential: TokenCredentialLike, scope: string): Promise<string>;
266
377
  export {};
@@ -21,6 +21,7 @@
21
21
  import { lazyRequire } from '../../lib/lazyRequire.js';
22
22
  import { asContextWindowExceeded } from './contextWindow.js';
23
23
  import { azureBaseUrl } from './azureUrl.js';
24
+ import { AZURE_COGNITIVE_SERVICES_SCOPE } from '../identity/azure.js';
24
25
  /**
25
26
  * Which roles this wire carries inside `messages`.
26
27
  *
@@ -52,9 +53,18 @@ export function openai(options = {}) {
52
53
  // which may only accept the legacy `max_tokens` and may not support `stream_options`.
53
54
  // Real OpenAI (no baseURL) and Azure (via injected _client, also no baseURL) get the
54
55
  // modern params. Reasoning detection is per-request (model id) OR the explicit flag.
55
- const legacyEndpoint = !!options.baseURL;
56
+ // Since 9.74.0 the implication is a DEFAULT the consumer can override: an explicit
57
+ // `legacyEndpoint` wins, and `false` is how a modern-dialect baseURL (Azure's v1
58
+ // route, which foundry() rides) gets the current params. Unset keeps `!!baseURL`.
59
+ const legacyEndpoint = options.legacyEndpoint ?? !!options.baseURL;
56
60
  const reasoning = options.reasoning ?? false;
57
- const cfg = { defaultModel, defaultMaxTokens, legacyEndpoint, reasoning };
61
+ const cfg = {
62
+ defaultModel,
63
+ defaultMaxTokens,
64
+ legacyEndpoint,
65
+ reasoning,
66
+ streamUsage: options.streamUsage === true,
67
+ };
58
68
  const provider = {
59
69
  name: 'openai',
60
70
  carriesInMessages: CARRIES_IN_MESSAGES,
@@ -279,6 +289,15 @@ export function azureOpenai(options = {}) {
279
289
  * byte-identical either way — pinned by test/adapters/integration/azure-openai-wire.test.ts.
280
290
  */
281
291
  function resolveAzureClient(options) {
292
+ // Two credentials is not "extra secure" — whichever one this factory
293
+ // silently preferred would be the one the consumer did not think was in
294
+ // use. Refused by NAME, and checked BEFORE the `_client` short-circuit so a
295
+ // test can pin the wording without the SDK installed.
296
+ if (options.credential && options.apiKey) {
297
+ throw new Error('azureOpenai: both `credential` and `apiKey` were given, and they are two answers to the ' +
298
+ 'same question — which identity signs the request.\n' +
299
+ ' Fix: pass exactly one — `credential` (keyless Entra ID) or `apiKey` (static key).');
300
+ }
282
301
  if (options._client)
283
302
  return options._client;
284
303
  let AzureOpenAI;
@@ -305,6 +324,26 @@ function resolveAzureClient(options) {
305
324
  if (!apiVersion) {
306
325
  throw new Error('azureOpenai: `apiVersion` is required (or set AZURE_OPENAI_API_VERSION), e.g. 2024-12-01-preview.');
307
326
  }
327
+ if (options.credential) {
328
+ const credential = options.credential;
329
+ const scope = options.scope ?? AZURE_COGNITIVE_SERVICES_SCOPE;
330
+ return new AzureOpenAI({
331
+ // NOT `endpoint` — see the note on this function.
332
+ baseURL: azureBaseUrl(endpoint),
333
+ // The SDK insists on exactly ONE of `apiKey` / `azureADTokenProvider` —
334
+ // so no key is sent. `apiKey: ''` is deliberate, not decorative: the
335
+ // SDK's constructor defaults a MISSING `apiKey` from AZURE_OPENAI_API_KEY,
336
+ // and an ambient env key beside the token provider trips its "mutually
337
+ // exclusive" refusal. An explicit `credential` must beat the environment
338
+ // (the same stance this function already takes on `OPENAI_BASE_URL`),
339
+ // and an empty string is falsy to every SDK check while blocking the
340
+ // env read.
341
+ apiKey: '',
342
+ azureADTokenProvider: async () => entraBearerToken('azureOpenai', credential, scope),
343
+ apiVersion,
344
+ ...(deployment && { deployment }),
345
+ });
346
+ }
308
347
  return new AzureOpenAI({
309
348
  // NOT `endpoint` — see the note on this function. `baseURL` is passed
310
349
  // explicitly so the SDK's own `OPENAI_BASE_URL` default is overridden
@@ -315,6 +354,75 @@ function resolveAzureClient(options) {
315
354
  ...(deployment && { deployment }),
316
355
  });
317
356
  }
357
+ /**
358
+ * `TokenCredentialLike.getToken(scope)` → the bearer string an OpenAI-shaped
359
+ * client can send — shared by the two Entra doors (`azureOpenai()` here and
360
+ * `foundry()` in FoundryProvider.ts, which imports it; the dependency points
361
+ * THIS way because FoundryProvider already composes over `openai()`).
362
+ *
363
+ * What it enforces are the credential-surface laws, not conveniences:
364
+ * • an ABSENT answer — `null`, the SDK's spelling of "no token available",
365
+ * and `undefined`, which is what a hand-rolled or caching credential
366
+ * hands back on a miss — is refused by NAME. Both are the same absence
367
+ * and get the same refusal: passed onward, `null` becomes a bare 401 that
368
+ * names nothing, and `undefined` becomes a raw `TypeError` thrown from
369
+ * inside this library, which names less than the 401 does.
370
+ * • an empty or blank `token` FIELD is refused by field name; the value
371
+ * itself is a secret when it is right, so no message ever quotes it.
372
+ * • a throwing credential is reported as operation + error NAME only (auth
373
+ * SDKs echo request detail into 401/403 text), with no `cause` — a cause
374
+ * travels into every serializer that walks own properties.
375
+ * The scope IS quoted: it is a public audience URI, never a secret, and it is
376
+ * the thing the consumer most likely got wrong.
377
+ */
378
+ export async function entraBearerToken(adapter, credential, scope) {
379
+ // `| undefined` is deliberate and is NOT in the duck type: `getToken` is
380
+ // declared `Promise<AccessTokenLike | null>`, but this door is documented as
381
+ // duck-typed on both public factories, so it is reachable from plain JS AND
382
+ // from a strict-clean TypeScript wrapper — a token cache spelled
383
+ // `async (s) => cache.get(String(s))!` type-checks with zero errors and
384
+ // resolves to `undefined` on a miss. Widening the local (never the port)
385
+ // is what lets that case be refused by name instead of dereferenced.
386
+ let access;
387
+ try {
388
+ access = await credential.getToken(scope);
389
+ }
390
+ catch (err) {
391
+ const name = err instanceof Error && err.name ? err.name : typeof err;
392
+ throw new Error(`${adapter}: credential.getToken failed (${name}) for scope ${scope}.\n` +
393
+ ' Fix: sign in (az login), or pass a `credential` whose identity can mint tokens for ' +
394
+ 'this audience — the audience is the `scope` option (classic Azure OpenAI documents ' +
395
+ 'https://cognitiveservices.azure.com/.default; the Foundry v1 route documents ' +
396
+ 'https://ai.azure.com/.default).');
397
+ }
398
+ // `== null` on purpose: null AND undefined, one refusal. The shape is named
399
+ // in the message (it is a wiring fact, not a secret) so the reader knows
400
+ // whether they are looking at a chain that found no identity or at their own
401
+ // cache handing back a miss.
402
+ if (access == null) {
403
+ // The two absences read the same to a `TypeError` and completely
404
+ // differently to a person, so the SHAPE is named (a wiring fact, never a
405
+ // secret) and each gets its own diagnosis under one shared fix.
406
+ throw new Error(`${adapter}: the credential returned no access token for scope ${scope} — ` +
407
+ (access === null
408
+ ? '`getToken` resolved to `null`, the SDK\'s spelling of "no token available": the ' +
409
+ 'chain found no identity that can serve this audience.'
410
+ : '`getToken` resolved to `undefined`, which no `@azure/identity` credential does — a ' +
411
+ 'hand-rolled or caching credential handed back a miss (an empty cache lookup, a ' +
412
+ 'non-null assertion over a `Map`) instead of minting or reporting no token.') +
413
+ '\n Fix: sign in (az login), or pass a `credential` that holds an identity for this ' +
414
+ 'audience (DefaultAzureCredential walks env service principal → workload identity → ' +
415
+ 'managed identity → az login). A `credential` of your own must always RESOLVE to a token ' +
416
+ 'object or to `null`.');
417
+ }
418
+ if (typeof access.token !== 'string' || access.token.trim().length === 0) {
419
+ // Field NAME only — the value is a secret when it is right, and an empty
420
+ // one is described, never quoted.
421
+ throw new Error(`${adapter}: the credential returned an access token whose \`token\` field is empty.\n` +
422
+ ' Fix: check the credential wiring — a real Entra token is never an empty string.');
423
+ }
424
+ return access.token;
425
+ }
318
426
  // ─── Ollama ─────────────────────────────────────────────────────────
319
427
  //
320
428
  // `ollama()` used to live here as a thin wrapper over `openai({ baseURL })`.
@@ -453,9 +561,12 @@ function buildParams(req, cfg) {
453
561
  if (cfg.stream) {
454
562
  params.stream = true;
455
563
  // OpenAI/Azure only emit usage while streaming when asked; without this the
456
- // synthesized response reports 0 tokens. Compatible endpoints may not support it.
457
- if (!cfg.legacyEndpoint)
564
+ // synthesized response reports 0 tokens. A custom endpoint is left out by
565
+ // default because some reject the field — and opts back in with
566
+ // `streamUsage`, which is how a local-model deployment stops reading zero.
567
+ if (!cfg.legacyEndpoint || cfg.streamUsage) {
458
568
  params.stream_options = { include_usage: true };
569
+ }
459
570
  }
460
571
  if (req.tools && req.tools.length > 0)
461
572
  params.tools = req.tools.map(toOpenAITool);