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.
- package/CHANGELOG.md +160 -0
- package/dist/adapters/identity/azure.js +306 -0
- package/dist/adapters/identity/azure.js.map +1 -0
- package/dist/adapters/llm/FoundryLocalProvider.js +992 -0
- package/dist/adapters/llm/FoundryLocalProvider.js.map +1 -0
- package/dist/adapters/llm/FoundryProvider.js +273 -0
- package/dist/adapters/llm/FoundryProvider.js.map +1 -0
- package/dist/adapters/llm/OllamaProvider.js +171 -12
- package/dist/adapters/llm/OllamaProvider.js.map +1 -1
- package/dist/adapters/llm/OpenAIProvider.js +117 -5
- package/dist/adapters/llm/OpenAIProvider.js.map +1 -1
- package/dist/adapters/llm/createProvider.js +143 -10
- package/dist/adapters/llm/createProvider.js.map +1 -1
- package/dist/adapters/types.js.map +1 -1
- package/dist/esm/adapters/identity/azure.d.ts +188 -0
- package/dist/esm/adapters/identity/azure.js +302 -0
- package/dist/esm/adapters/identity/azure.js.map +1 -0
- package/dist/esm/adapters/llm/FoundryLocalProvider.d.ts +215 -0
- package/dist/esm/adapters/llm/FoundryLocalProvider.js +986 -0
- package/dist/esm/adapters/llm/FoundryLocalProvider.js.map +1 -0
- package/dist/esm/adapters/llm/FoundryProvider.d.ts +178 -0
- package/dist/esm/adapters/llm/FoundryProvider.js +268 -0
- package/dist/esm/adapters/llm/FoundryProvider.js.map +1 -0
- package/dist/esm/adapters/llm/OllamaProvider.js +171 -12
- package/dist/esm/adapters/llm/OllamaProvider.js.map +1 -1
- package/dist/esm/adapters/llm/OpenAIProvider.d.ts +111 -0
- package/dist/esm/adapters/llm/OpenAIProvider.js +115 -4
- package/dist/esm/adapters/llm/OpenAIProvider.js.map +1 -1
- package/dist/esm/adapters/llm/createProvider.d.ts +48 -12
- package/dist/esm/adapters/llm/createProvider.js +143 -10
- package/dist/esm/adapters/llm/createProvider.js.map +1 -1
- package/dist/esm/adapters/types.d.ts +4 -2
- package/dist/esm/adapters/types.js.map +1 -1
- package/dist/esm/identity.d.ts +1 -0
- package/dist/esm/identity.js +9 -0
- package/dist/esm/identity.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/providers.d.ts +5 -0
- package/dist/esm/providers.js +14 -0
- package/dist/esm/providers.js.map +1 -1
- package/dist/identity.js +14 -1
- package/dist/identity.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/providers.js +20 -1
- package/dist/providers.js.map +1 -1
- package/dist/types/adapters/identity/azure.d.ts +189 -0
- package/dist/types/adapters/identity/azure.d.ts.map +1 -0
- package/dist/types/adapters/llm/FoundryLocalProvider.d.ts +216 -0
- package/dist/types/adapters/llm/FoundryLocalProvider.d.ts.map +1 -0
- package/dist/types/adapters/llm/FoundryProvider.d.ts +179 -0
- package/dist/types/adapters/llm/FoundryProvider.d.ts.map +1 -0
- package/dist/types/adapters/llm/OllamaProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/OpenAIProvider.d.ts +111 -0
- package/dist/types/adapters/llm/OpenAIProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/createProvider.d.ts +48 -12
- package/dist/types/adapters/llm/createProvider.d.ts.map +1 -1
- package/dist/types/adapters/types.d.ts +4 -2
- package/dist/types/adapters/types.d.ts.map +1 -1
- package/dist/types/identity.d.ts +1 -0
- package/dist/types/identity.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/providers.d.ts +5 -0
- package/dist/types/providers.d.ts.map +1 -1
- 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
|
-
|
|
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
|
-
|
|
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
|
-
/**
|
|
462
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
/**
|
|
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
|
-
|
|
615
|
-
|
|
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,
|
|
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
|
-
|
|
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 = {
|
|
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.
|
|
457
|
-
|
|
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);
|