@pentoshi/clai 4.14.0 → 4.14.1
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/CONTRIBUTING.md +4 -1
- package/MCP.md +182 -0
- package/PROVIDERS.md +67 -0
- package/README.md +11 -2
- package/dist/agent/runner.js +1 -1
- package/dist/agent/runner.js.map +1 -1
- package/dist/agent/stream-recovery.js +5 -3
- package/dist/agent/stream-recovery.js.map +1 -1
- package/dist/agent/turn/mcp-agent-tools.d.ts +4 -2
- package/dist/agent/turn/mcp-agent-tools.js +15 -6
- package/dist/agent/turn/mcp-agent-tools.js.map +1 -1
- package/dist/agent/turn/tool-call-preparation.d.ts +2 -1
- package/dist/agent/turn/tool-call-preparation.js +20 -4
- package/dist/agent/turn/tool-call-preparation.js.map +1 -1
- package/dist/agent/turn/tool-execution/single-tool.js +1 -1
- package/dist/agent/turn/tool-execution/single-tool.js.map +1 -1
- package/dist/app/commands/catalog.js +1 -0
- package/dist/app/commands/catalog.js.map +1 -1
- package/dist/classic/app/action-handlers.js +2 -1
- package/dist/classic/app/action-handlers.js.map +1 -1
- package/dist/classic/app/app-wiring.js +2 -0
- package/dist/classic/app/app-wiring.js.map +1 -1
- package/dist/classic/chrome/composer-controller.d.ts +2 -1
- package/dist/classic/chrome/composer-controller.js +36 -19
- package/dist/classic/chrome/composer-controller.js.map +1 -1
- package/dist/classic/chrome/composer-frame.js +1 -1
- package/dist/classic/chrome/composer-frame.js.map +1 -1
- package/dist/classic/input/input-router.d.ts +2 -1
- package/dist/classic/input/input-router.js +9 -0
- package/dist/classic/input/input-router.js.map +1 -1
- package/dist/classic/input/key-event.d.ts +3 -0
- package/dist/classic/input/key-event.js.map +1 -1
- package/dist/classic/input/paste-burst.js +5 -0
- package/dist/classic/input/paste-burst.js.map +1 -1
- package/dist/classic/input/raw-decoder.d.ts +1 -0
- package/dist/classic/input/raw-decoder.js +15 -10
- package/dist/classic/input/raw-decoder.js.map +1 -1
- package/dist/classic/input/terminal-sequences.d.ts +0 -1
- package/dist/classic/input/terminal-sequences.js +0 -1
- package/dist/classic/input/terminal-sequences.js.map +1 -1
- package/dist/commands/providers.js +2 -0
- package/dist/commands/providers.js.map +1 -1
- package/dist/llm/adapters/mistral-messages.d.ts +1 -0
- package/dist/llm/adapters/mistral-messages.js +56 -0
- package/dist/llm/adapters/mistral-messages.js.map +1 -0
- package/dist/llm/capabilities.js +63 -1
- package/dist/llm/capabilities.js.map +1 -1
- package/dist/llm/capability/state.d.ts +1 -1
- package/dist/llm/capability/tool-dialect.js +8 -1
- package/dist/llm/capability/tool-dialect.js.map +1 -1
- package/dist/llm/capability/vision-patterns.js +6 -0
- package/dist/llm/capability/vision-patterns.js.map +1 -1
- package/dist/llm/capability/vision-registry.js +11 -1
- package/dist/llm/capability/vision-registry.js.map +1 -1
- package/dist/llm/catalog-context.d.ts +6 -0
- package/dist/llm/catalog-context.js +15 -0
- package/dist/llm/catalog-context.js.map +1 -0
- package/dist/llm/catalog-facts.d.ts +2 -0
- package/dist/llm/catalog-facts.js.map +1 -1
- package/dist/llm/cline-model-catalog.d.ts +4 -0
- package/dist/llm/cline-model-catalog.js +197 -0
- package/dist/llm/cline-model-catalog.js.map +1 -0
- package/dist/llm/cline.d.ts +1 -0
- package/dist/llm/cline.js +69 -17
- package/dist/llm/cline.js.map +1 -1
- package/dist/llm/free-model-limits.d.ts +1 -0
- package/dist/llm/free-model-limits.js +101 -0
- package/dist/llm/free-model-limits.js.map +1 -0
- package/dist/llm/free.js +136 -103
- package/dist/llm/free.js.map +1 -1
- package/dist/llm/mistral-models.d.ts +2 -0
- package/dist/llm/mistral-models.js +23 -0
- package/dist/llm/mistral-models.js.map +1 -0
- package/dist/llm/mistral.d.ts +2 -0
- package/dist/llm/mistral.js +129 -0
- package/dist/llm/mistral.js.map +1 -0
- package/dist/llm/profile/layer-merge.js +3 -3
- package/dist/llm/profile/layer-merge.js.map +1 -1
- package/dist/llm/provider-identity.js +5 -0
- package/dist/llm/provider-identity.js.map +1 -1
- package/dist/llm/provider-info-text.js +19 -0
- package/dist/llm/provider-info-text.js.map +1 -1
- package/dist/llm/provider-model-layers.js +45 -0
- package/dist/llm/provider-model-layers.js.map +1 -1
- package/dist/llm/provider-profile-layers.js +25 -0
- package/dist/llm/provider-profile-layers.js.map +1 -1
- package/dist/llm/provider-profiles.js +28 -4
- package/dist/llm/provider-profiles.js.map +1 -1
- package/dist/llm/quota-signals.d.ts +1 -0
- package/dist/llm/quota-signals.js +8 -0
- package/dist/llm/quota-signals.js.map +1 -1
- package/dist/llm/reasoning-capability.js +1 -0
- package/dist/llm/reasoning-capability.js.map +1 -1
- package/dist/llm/request-plan.js +15 -6
- package/dist/llm/request-plan.js.map +1 -1
- package/dist/llm/router.js +1 -1
- package/dist/llm/router.js.map +1 -1
- package/dist/llm/routing/attempt-complete.js +4 -3
- package/dist/llm/routing/attempt-complete.js.map +1 -1
- package/dist/llm/routing/attempt-request.d.ts +5 -1
- package/dist/llm/routing/attempt-request.js +22 -2
- package/dist/llm/routing/attempt-request.js.map +1 -1
- package/dist/llm/routing/attempt-stream.js +4 -3
- package/dist/llm/routing/attempt-stream.js.map +1 -1
- package/dist/llm/routing/failure-report.js +6 -2
- package/dist/llm/routing/failure-report.js.map +1 -1
- package/dist/llm/routing/provider-selection.js +3 -0
- package/dist/llm/routing/provider-selection.js.map +1 -1
- package/dist/llm/tool-protocol.d.ts +1 -1
- package/dist/llm/tool-protocol.js +4 -1
- package/dist/llm/tool-protocol.js.map +1 -1
- package/dist/llm/wire/chat-body.js +51 -28
- package/dist/llm/wire/chat-body.js.map +1 -1
- package/dist/llm/wire/effort-preflight.js +4 -1
- package/dist/llm/wire/effort-preflight.js.map +1 -1
- package/dist/llm/wire/mistral-content.d.ts +19 -0
- package/dist/llm/wire/mistral-content.js +106 -0
- package/dist/llm/wire/mistral-content.js.map +1 -0
- package/dist/llm/wire/mistral-model-catalog.d.ts +2 -0
- package/dist/llm/wire/mistral-model-catalog.js +73 -0
- package/dist/llm/wire/mistral-model-catalog.js.map +1 -0
- package/dist/llm/wire/openai-complete.js +10 -4
- package/dist/llm/wire/openai-complete.js.map +1 -1
- package/dist/llm/wire/openai-stream.js +38 -16
- package/dist/llm/wire/openai-stream.js.map +1 -1
- package/dist/mcp/auth/device.d.ts +7 -3
- package/dist/mcp/auth/device.js +55 -32
- package/dist/mcp/auth/device.js.map +1 -1
- package/dist/mcp/auth/http.d.ts +12 -0
- package/dist/mcp/auth/http.js +62 -0
- package/dist/mcp/auth/http.js.map +1 -0
- package/dist/mcp/auth/loopback.d.ts +9 -1
- package/dist/mcp/auth/loopback.js +80 -8
- package/dist/mcp/auth/loopback.js.map +1 -1
- package/dist/mcp/auth/metadata.d.ts +2 -3
- package/dist/mcp/auth/metadata.js +25 -25
- package/dist/mcp/auth/metadata.js.map +1 -1
- package/dist/mcp/auth/provider.d.ts +1 -0
- package/dist/mcp/auth/provider.js +215 -42
- package/dist/mcp/auth/provider.js.map +1 -1
- package/dist/mcp/auth/registration.d.ts +2 -3
- package/dist/mcp/auth/registration.js +10 -14
- package/dist/mcp/auth/registration.js.map +1 -1
- package/dist/mcp/auth/token-exchange.d.ts +5 -3
- package/dist/mcp/auth/token-exchange.js +15 -15
- package/dist/mcp/auth/token-exchange.js.map +1 -1
- package/dist/mcp/auth/token-store.d.ts +1 -1
- package/dist/mcp/auth/token-store.js +105 -54
- package/dist/mcp/auth/token-store.js.map +1 -1
- package/dist/mcp/auth/types.d.ts +11 -2
- package/dist/mcp/catalog.d.ts +11 -0
- package/dist/mcp/catalog.js +58 -0
- package/dist/mcp/catalog.js.map +1 -0
- package/dist/mcp/client.d.ts +10 -1
- package/dist/mcp/client.js +93 -29
- package/dist/mcp/client.js.map +1 -1
- package/dist/mcp/coerce.js +4 -4
- package/dist/mcp/coerce.js.map +1 -1
- package/dist/mcp/config-file.js +53 -10
- package/dist/mcp/config-file.js.map +1 -1
- package/dist/mcp/discovery.js +2 -0
- package/dist/mcp/discovery.js.map +1 -1
- package/dist/mcp/jsonrpc.js +28 -18
- package/dist/mcp/jsonrpc.js.map +1 -1
- package/dist/mcp/manager.d.ts +17 -0
- package/dist/mcp/manager.js +211 -29
- package/dist/mcp/manager.js.map +1 -1
- package/dist/mcp/results.js +25 -10
- package/dist/mcp/results.js.map +1 -1
- package/dist/mcp/runtime.d.ts +6 -6
- package/dist/mcp/runtime.js +168 -60
- package/dist/mcp/runtime.js.map +1 -1
- package/dist/mcp/schema-compact.js +3 -29
- package/dist/mcp/schema-compact.js.map +1 -1
- package/dist/mcp/storage-lock.d.ts +1 -0
- package/dist/mcp/storage-lock.js +80 -0
- package/dist/mcp/storage-lock.js.map +1 -0
- package/dist/mcp/transport-http.d.ts +13 -2
- package/dist/mcp/transport-http.js +245 -77
- package/dist/mcp/transport-http.js.map +1 -1
- package/dist/mcp/transport-stdio.d.ts +5 -2
- package/dist/mcp/transport-stdio.js +96 -52
- package/dist/mcp/transport-stdio.js.map +1 -1
- package/dist/mcp/transport.d.ts +9 -1
- package/dist/mcp/transport.js +38 -0
- package/dist/mcp/transport.js.map +1 -1
- package/dist/mcp/types.d.ts +8 -2
- package/dist/mcp/types.js +1 -5
- package/dist/mcp/types.js.map +1 -1
- package/dist/mcp/validation.js +81 -12
- package/dist/mcp/validation.js.map +1 -1
- package/dist/noninteractive/stream-renderer.d.ts +1 -0
- package/dist/noninteractive/stream-renderer.js +13 -0
- package/dist/noninteractive/stream-renderer.js.map +1 -1
- package/dist/store/config/endpoints.js +1 -0
- package/dist/store/config/endpoints.js.map +1 -1
- package/dist/store/config.js +2 -0
- package/dist/store/config.js.map +1 -1
- package/dist/store/rtk-usage.d.ts +1 -0
- package/dist/store/rtk-usage.js +8 -3
- package/dist/store/rtk-usage.js.map +1 -1
- package/dist/tools/definitions/aggregate.js +4 -1
- package/dist/tools/definitions/aggregate.js.map +1 -1
- package/dist/tools/rtk/binary.d.ts +2 -2
- package/dist/tools/rtk/binary.js +12 -4
- package/dist/tools/rtk/binary.js.map +1 -1
- package/dist/tools/rtk/rewrite.js +13 -3
- package/dist/tools/rtk/rewrite.js.map +1 -1
- package/dist/tui-v2/components/composer/composer-input-box.d.ts +6 -1
- package/dist/tui-v2/components/composer/composer-input-box.js +27 -18
- package/dist/tui-v2/components/composer/composer-input-box.js.map +1 -1
- package/dist/tui-v2/components/composer/paste-chip.d.ts +3 -2
- package/dist/tui-v2/components/composer/paste-chip.js +17 -48
- package/dist/tui-v2/components/composer/paste-chip.js.map +1 -1
- package/dist/tui-v2/composer/composer-cursor.d.ts +3 -0
- package/dist/tui-v2/composer/composer-cursor.js +21 -0
- package/dist/tui-v2/composer/composer-cursor.js.map +1 -0
- package/dist/tui-v2/composer/composer-editor.js +91 -100
- package/dist/tui-v2/composer/composer-editor.js.map +1 -1
- package/dist/tui-v2/composer/composer-highlight.d.ts +6 -1
- package/dist/tui-v2/composer/composer-highlight.js +9 -2
- package/dist/tui-v2/composer/composer-highlight.js.map +1 -1
- package/dist/tui-v2/composer/composer-wheel.js +2 -1
- package/dist/tui-v2/composer/composer-wheel.js.map +1 -1
- package/dist/tui-v2/composer/expand-paste.d.ts +4 -0
- package/dist/tui-v2/composer/expand-paste.js +34 -0
- package/dist/tui-v2/composer/expand-paste.js.map +1 -0
- package/dist/tui-v2/composer/paste-hit-test.d.ts +28 -0
- package/dist/tui-v2/composer/paste-hit-test.js +25 -0
- package/dist/tui-v2/composer/paste-hit-test.js.map +1 -0
- package/dist/tui-v2/composer/use-draft-actions.js +3 -1
- package/dist/tui-v2/composer/use-draft-actions.js.map +1 -1
- package/dist/tui-v2/input/paste-burst-guard.js +3 -0
- package/dist/tui-v2/input/paste-burst-guard.js.map +1 -1
- package/dist/types.d.ts +4 -3
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/dist/ui/mentions.js +12 -1
- package/dist/ui/mentions.js.map +1 -1
- package/dist/ui-core/actions/action-id.d.ts +1 -1
- package/dist/ui-core/actions/action-id.js +1 -0
- package/dist/ui-core/actions/action-id.js.map +1 -1
- package/dist/ui-core/actions/format-shortcuts.js +3 -2
- package/dist/ui-core/actions/format-shortcuts.js.map +1 -1
- package/dist/ui-core/actions/keymap.js +2 -0
- package/dist/ui-core/actions/keymap.js.map +1 -1
- package/dist/ui-core/bootstrap/composition-root.js +29 -11
- package/dist/ui-core/bootstrap/composition-root.js.map +1 -1
- package/dist/ui-core/commands/mcp-commands.js +3 -3
- package/dist/ui-core/commands/mcp-commands.js.map +1 -1
- package/dist/ui-core/commands/pickers/search-reasoning.js +21 -6
- package/dist/ui-core/commands/pickers/search-reasoning.js.map +1 -1
- package/dist/ui-core/commands/rtk-commands.js +3 -3
- package/dist/ui-core/commands/rtk-commands.js.map +1 -1
- package/dist/ui-core/composer/completion.d.ts +1 -0
- package/dist/ui-core/composer/completion.js +31 -3
- package/dist/ui-core/composer/completion.js.map +1 -1
- package/dist/ui-core/composer/composer-height.d.ts +1 -1
- package/dist/ui-core/composer/composer-height.js +26 -3
- package/dist/ui-core/composer/composer-height.js.map +1 -1
- package/dist/ui-core/composer/paste-placeholder.d.ts +10 -0
- package/dist/ui-core/composer/paste-placeholder.js +60 -12
- package/dist/ui-core/composer/paste-placeholder.js.map +1 -1
- package/dist/ui-core/input/paste-burst.d.ts +2 -1
- package/dist/ui-core/input/paste-burst.js +20 -0
- package/dist/ui-core/input/paste-burst.js.map +1 -1
- package/dist/version.generated.d.ts +2 -2
- package/dist/version.generated.js +2 -2
- package/package.json +2 -1
|
@@ -12,6 +12,7 @@ import { readWithAbort } from "./abort-race.js";
|
|
|
12
12
|
import { chatCompletionsBodyFromPlan, } from "./chat-body.js";
|
|
13
13
|
import { artifactRaw, compatibleArtifactPolicyFor, compatibleReasoningArtifacts, openAiReasoningText, privateReasoningNote, } from "./reasoning-artifacts.js";
|
|
14
14
|
import { readJson } from "./response-errors.js";
|
|
15
|
+
import { MistralContentAccumulator, mistralContentText, mistralReasoningArtifacts } from "./mistral-content.js";
|
|
15
16
|
import { currentRequestPurpose } from "../request-purpose.js";
|
|
16
17
|
import { openAiCompatibleStreamViaResponses } from "./responses-first.js";
|
|
17
18
|
import { createSseFrameAssembler, DEFAULT_STREAM_IDLE_TIMEOUT_MS, isFinalUsageFrame, STREAM_STALL_MARKER, THINKING_STREAM_IDLE_TIMEOUT_MS, THINKING_STREAM_INITIAL_IDLE_TIMEOUT_MS, } from "./stream-framing.js";
|
|
@@ -170,14 +171,19 @@ export async function openAiCompatibleStream(request) {
|
|
|
170
171
|
const choice = data.choices?.[0];
|
|
171
172
|
const message = choice?.message;
|
|
172
173
|
const toolCalls = parseOpenAiMessageToolCalls(message?.tool_calls);
|
|
173
|
-
const
|
|
174
|
+
const nativeContent = options.providerId === "mistral" ? mistralContentText(message?.content) : undefined;
|
|
175
|
+
const text = nativeContent?.text ?? (typeof message?.content === "string" ? message.content : "");
|
|
174
176
|
const jsonUsage = options.providerId === "fireworks"
|
|
175
177
|
? parseFireworksUsage(data.usage, data.perf_metrics, response.headers)
|
|
176
178
|
: parseOpenAiUsage(data.usage, options.usageAliases);
|
|
177
|
-
const reasoning = openAiReasoningText(message);
|
|
179
|
+
const reasoning = nativeContent?.reasoning || openAiReasoningText(message);
|
|
178
180
|
const detailsRaw = artifactRaw(message?.reasoning_details);
|
|
179
181
|
const thoughtSignature = message?.extra_content?.google?.thought_signature;
|
|
180
|
-
const reasoningArtifacts =
|
|
182
|
+
const reasoningArtifacts = (options.providerId === "mistral" ? mistralReasoningArtifacts({
|
|
183
|
+
content: message?.content,
|
|
184
|
+
model: options.model,
|
|
185
|
+
baseUrl: options.baseUrl,
|
|
186
|
+
}) : undefined) ?? compatibleReasoningArtifacts({
|
|
181
187
|
providerId: options.providerId,
|
|
182
188
|
model: options.model,
|
|
183
189
|
baseUrl: options.baseUrl,
|
|
@@ -204,6 +210,8 @@ export async function openAiCompatibleStream(request) {
|
|
|
204
210
|
toolCalls.length > 0 ||
|
|
205
211
|
(typeof reasoning === "string" && reasoning.trim())) {
|
|
206
212
|
emitStreamReasoningArtifacts(options.onStreamEvent, reasoningArtifacts);
|
|
213
|
+
if (options.providerId === "mistral" && reasoning)
|
|
214
|
+
emitStreamReasoningDelta(options.onStreamEvent, reasoning);
|
|
207
215
|
if (text)
|
|
208
216
|
options.onToken(text);
|
|
209
217
|
return {
|
|
@@ -256,6 +264,7 @@ export async function openAiCompatibleStream(request) {
|
|
|
256
264
|
let reasoningSeen = "";
|
|
257
265
|
let contentWireSeen = "";
|
|
258
266
|
let reasoningWireSeen = "";
|
|
267
|
+
const mistralContent = options.providerId === "mistral" ? new MistralContentAccumulator() : undefined;
|
|
259
268
|
let finishReason;
|
|
260
269
|
let terminalSignal;
|
|
261
270
|
const terminalPolicy = options.streamTerminal ??
|
|
@@ -284,6 +293,11 @@ export async function openAiCompatibleStream(request) {
|
|
|
284
293
|
const thoughtSignatures = [];
|
|
285
294
|
const pendingThoughtSignatures = [];
|
|
286
295
|
const finalReasoningArtifacts = (toolCalls) => {
|
|
296
|
+
if (mistralContent) {
|
|
297
|
+
const native = mistralReasoningArtifacts({ content: mistralContent.content, model: options.model, baseUrl: options.baseUrl });
|
|
298
|
+
if (native)
|
|
299
|
+
return native;
|
|
300
|
+
}
|
|
287
301
|
if (pendingThoughtSignatures.length) {
|
|
288
302
|
const toolCallIndex = toolCalls.length ? 0 : undefined;
|
|
289
303
|
for (const capture of pendingThoughtSignatures.splice(0)) {
|
|
@@ -425,11 +439,11 @@ export async function openAiCompatibleStream(request) {
|
|
|
425
439
|
if (idleController.signal.aborted) {
|
|
426
440
|
throw new Error("Stream aborted");
|
|
427
441
|
}
|
|
428
|
-
if (done)
|
|
442
|
+
if (done && !buffer)
|
|
429
443
|
break;
|
|
430
444
|
if (value && value.byteLength > 0)
|
|
431
445
|
noteTransportActivity();
|
|
432
|
-
buffer += decoder.decode(value, { stream: true });
|
|
446
|
+
buffer += done ? `${decoder.decode()}\n` : decoder.decode(value, { stream: true });
|
|
433
447
|
const lines = buffer.split("\n");
|
|
434
448
|
buffer = lines.pop() ?? "";
|
|
435
449
|
for (const line of lines) {
|
|
@@ -491,11 +505,12 @@ export async function openAiCompatibleStream(request) {
|
|
|
491
505
|
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
492
506
|
continue;
|
|
493
507
|
}
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
508
|
+
const inBandError = parsed.error ?? (options.providerId === "mistral" && parsed.object === "error" ? parsed : undefined);
|
|
509
|
+
if (inBandError) {
|
|
510
|
+
const detail = typeof inBandError === "string"
|
|
511
|
+
? inBandError
|
|
512
|
+
: (inBandError.message ?? inBandError.type ?? "unknown error");
|
|
513
|
+
throw new ProviderError(`${options.provider} stream error: ${detail}`, inBandBadRequestStatus(inBandError), payload.slice(0, 500));
|
|
499
514
|
}
|
|
500
515
|
{
|
|
501
516
|
const chunkUsage = options.providerId === "fireworks"
|
|
@@ -508,8 +523,9 @@ export async function openAiCompatibleStream(request) {
|
|
|
508
523
|
const finalUsageFrame = isFinalUsageFrame(parsed);
|
|
509
524
|
const choice = parsed.choices?.[0];
|
|
510
525
|
const delta = choice?.delta;
|
|
511
|
-
const
|
|
512
|
-
const
|
|
526
|
+
const nativeContent = mistralContent?.append(delta?.content);
|
|
527
|
+
const reasoningToken = nativeContent?.reasoning || openAiReasoningText(delta);
|
|
528
|
+
const token = nativeContent?.text ?? (typeof delta?.content === "string" ? delta.content : undefined);
|
|
513
529
|
const detailRaw = artifactRaw(delta?.reasoning_details);
|
|
514
530
|
const thoughtSignature = delta?.extra_content?.google?.thought_signature;
|
|
515
531
|
const artifactSequence = nextArtifactSequence++;
|
|
@@ -537,7 +553,7 @@ export async function openAiCompatibleStream(request) {
|
|
|
537
553
|
terminalSignal = "usage-chunk";
|
|
538
554
|
}
|
|
539
555
|
if (reasoningToken) {
|
|
540
|
-
const normalized = normalizeChannelDelta(reasoningToken, reasoningWireSeen, options.providerId === "bynara" ? 1 : 64);
|
|
556
|
+
const normalized = mistralContent ? { delta: reasoningToken, seen: reasoningWireSeen + reasoningToken } : normalizeChannelDelta(reasoningToken, reasoningWireSeen, options.providerId === "bynara" ? 1 : 64);
|
|
541
557
|
reasoningWireSeen = normalized.seen;
|
|
542
558
|
if (normalized.delta) {
|
|
543
559
|
reasoningArtifactSequence ??= artifactSequence;
|
|
@@ -555,10 +571,14 @@ export async function openAiCompatibleStream(request) {
|
|
|
555
571
|
});
|
|
556
572
|
}
|
|
557
573
|
if (token) {
|
|
558
|
-
const normalized = normalizeChannelDelta(token, contentWireSeen);
|
|
574
|
+
const normalized = mistralContent ? { delta: token, seen: contentWireSeen + token } : normalizeChannelDelta(token, contentWireSeen);
|
|
559
575
|
contentWireSeen = normalized.seen;
|
|
560
|
-
if (normalized.delta)
|
|
561
|
-
|
|
576
|
+
if (normalized.delta) {
|
|
577
|
+
if (mistralContent)
|
|
578
|
+
emitVisible(normalized.delta);
|
|
579
|
+
else
|
|
580
|
+
handleContentToken(normalized.delta);
|
|
581
|
+
}
|
|
562
582
|
}
|
|
563
583
|
const deltaToolCallIndices = [];
|
|
564
584
|
if (delta?.tool_calls?.length) {
|
|
@@ -612,6 +632,8 @@ export async function openAiCompatibleStream(request) {
|
|
|
612
632
|
}
|
|
613
633
|
}
|
|
614
634
|
}
|
|
635
|
+
if (done)
|
|
636
|
+
break;
|
|
615
637
|
}
|
|
616
638
|
flushEchoBuffer();
|
|
617
639
|
cleanup();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-stream.js","sourceRoot":"","sources":["../../../src/llm/wire/openai-stream.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"openai-stream.js","sourceRoot":"","sources":["../../../src/llm/wire/openai-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
+
import { type OAuthHttpDeps } from "./http.js";
|
|
1
2
|
import type { TokenResponse } from "./types.js";
|
|
2
|
-
export interface DeviceFlowDeps {
|
|
3
|
-
readonly fetchImpl?: typeof fetch | undefined;
|
|
4
|
-
readonly validateUrl?: ((url: string) => URL) | undefined;
|
|
3
|
+
export interface DeviceFlowDeps extends OAuthHttpDeps {
|
|
5
4
|
readonly sleep?: ((ms: number) => Promise<void>) | undefined;
|
|
6
5
|
}
|
|
7
6
|
export interface DeviceAuthorizationRequest {
|
|
8
7
|
readonly deviceAuthorizationEndpoint: string;
|
|
9
8
|
readonly clientId: string;
|
|
9
|
+
readonly clientSecret?: string | undefined;
|
|
10
|
+
readonly authMethod?: "none" | "client_secret_basic" | "client_secret_post" | undefined;
|
|
11
|
+
readonly resource?: string | undefined;
|
|
10
12
|
readonly scope?: string | undefined;
|
|
11
13
|
}
|
|
12
14
|
export interface DeviceAuthorization {
|
|
@@ -22,6 +24,8 @@ export interface DeviceTokenPollRequest {
|
|
|
22
24
|
readonly deviceCode: string;
|
|
23
25
|
readonly clientId: string;
|
|
24
26
|
readonly clientSecret?: string | undefined;
|
|
27
|
+
readonly authMethod?: "none" | "client_secret_basic" | "client_secret_post" | undefined;
|
|
28
|
+
readonly resource?: string | undefined;
|
|
25
29
|
readonly intervalSeconds: number;
|
|
26
30
|
readonly expiresInSeconds: number;
|
|
27
31
|
}
|
package/dist/mcp/auth/device.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { McpTransportError } from "../transport.js";
|
|
2
|
+
import { fetchOAuthJson } from "./http.js";
|
|
2
3
|
import { assertSafeDiscoveryUrl } from "./security.js";
|
|
4
|
+
import { applyClientAuthentication } from "./token-exchange.js";
|
|
5
|
+
import { setTimeout as delay } from "node:timers/promises";
|
|
3
6
|
const DEFAULT_INTERVAL_SECONDS = 5;
|
|
4
7
|
const DEFAULT_EXPIRES_SECONDS = 900;
|
|
5
8
|
const SLOW_DOWN_EXTRA_SECONDS = 5;
|
|
6
|
-
const MAX_POLL_INTERVAL_SECONDS = 60;
|
|
7
9
|
function defaultSleep(ms) {
|
|
8
10
|
return new Promise((resolve) => {
|
|
9
11
|
const timer = setTimeout(resolve, ms);
|
|
@@ -11,38 +13,28 @@ function defaultSleep(ms) {
|
|
|
11
13
|
timer.unref();
|
|
12
14
|
});
|
|
13
15
|
}
|
|
14
|
-
async function postForm(url, form, deps) {
|
|
15
|
-
const
|
|
16
|
-
const target = validate(url);
|
|
17
|
-
const impl = deps.fetchImpl ?? fetch;
|
|
18
|
-
const response = await impl(target.toString(), {
|
|
16
|
+
async function postForm(url, form, deps, headers = {}) {
|
|
17
|
+
const response = await fetchOAuthJson(url, {
|
|
19
18
|
method: "POST",
|
|
20
19
|
headers: {
|
|
21
20
|
"content-type": "application/x-www-form-urlencoded",
|
|
22
21
|
accept: "application/json",
|
|
22
|
+
...headers,
|
|
23
23
|
},
|
|
24
24
|
body: form.toString(),
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
const text = await response.text().catch(() => "");
|
|
28
|
-
let record;
|
|
29
|
-
try {
|
|
30
|
-
const parsed = JSON.parse(text);
|
|
31
|
-
if (typeof parsed === "object" && parsed !== null) {
|
|
32
|
-
record = parsed;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
catch {
|
|
36
|
-
record = undefined;
|
|
37
|
-
}
|
|
38
|
-
return { status: response.status, record };
|
|
25
|
+
}, deps);
|
|
26
|
+
return { status: response.status, record: response.record };
|
|
39
27
|
}
|
|
40
28
|
export async function requestDeviceAuthorization(params, deps = {}) {
|
|
41
29
|
const form = new URLSearchParams();
|
|
42
30
|
form.set("client_id", params.clientId);
|
|
43
31
|
if (params.scope)
|
|
44
32
|
form.set("scope", params.scope);
|
|
45
|
-
|
|
33
|
+
if (params.resource)
|
|
34
|
+
form.set("resource", params.resource);
|
|
35
|
+
const headers = {};
|
|
36
|
+
applyClientAuthentication(form, headers, params.clientId, params.clientSecret, params.authMethod);
|
|
37
|
+
const { status, record } = await postForm(params.deviceAuthorizationEndpoint, form, deps, headers);
|
|
46
38
|
const deviceCode = record?.device_code;
|
|
47
39
|
const userCode = record?.user_code;
|
|
48
40
|
const verificationUri = record?.verification_uri ?? record?.verification_url;
|
|
@@ -61,15 +53,18 @@ export async function requestDeviceAuthorization(params, deps = {}) {
|
|
|
61
53
|
const complete = record?.verification_uri_complete;
|
|
62
54
|
const interval = record?.interval;
|
|
63
55
|
const expiresIn = record?.expires_in;
|
|
56
|
+
const validateUrl = deps.validateUrl ?? assertSafeDiscoveryUrl;
|
|
57
|
+
const verifiedUri = validateUrl(verificationUri).toString();
|
|
58
|
+
const verifiedComplete = typeof complete === "string" ? validateUrl(complete).toString() : undefined;
|
|
64
59
|
return {
|
|
65
60
|
deviceCode,
|
|
66
61
|
userCode,
|
|
67
|
-
verificationUri,
|
|
68
|
-
...(
|
|
69
|
-
intervalSeconds: typeof interval === "number" && interval > 0
|
|
70
|
-
?
|
|
62
|
+
verificationUri: verifiedUri,
|
|
63
|
+
...(verifiedComplete ? { verificationUriComplete: verifiedComplete } : {}),
|
|
64
|
+
intervalSeconds: typeof interval === "number" && Number.isFinite(interval) && interval > 0
|
|
65
|
+
? interval
|
|
71
66
|
: DEFAULT_INTERVAL_SECONDS,
|
|
72
|
-
expiresInSeconds: typeof expiresIn === "number" && expiresIn > 0
|
|
67
|
+
expiresInSeconds: typeof expiresIn === "number" && Number.isFinite(expiresIn) && expiresIn > 0
|
|
73
68
|
? expiresIn
|
|
74
69
|
: DEFAULT_EXPIRES_SECONDS,
|
|
75
70
|
};
|
|
@@ -79,20 +74,48 @@ export async function pollDeviceTokens(params, deps = {}) {
|
|
|
79
74
|
const deadline = Date.now() + params.expiresInSeconds * 1000;
|
|
80
75
|
let intervalMs = Math.max(1, params.intervalSeconds) * 1000;
|
|
81
76
|
for (;;) {
|
|
77
|
+
if (deps.signal?.aborted)
|
|
78
|
+
throw new McpTransportError("cancelled", "MCP OAuth device sign-in cancelled.");
|
|
82
79
|
if (Date.now() >= deadline) {
|
|
83
80
|
throw new McpTransportError("timeout", "MCP OAuth device authorization expired before sign-in completed.");
|
|
84
81
|
}
|
|
85
|
-
|
|
82
|
+
const waitMs = Math.min(intervalMs, Math.max(0, deadline - Date.now()));
|
|
83
|
+
if (deps.signal && !deps.sleep)
|
|
84
|
+
await delay(waitMs, undefined, { signal: deps.signal, ref: false });
|
|
85
|
+
else
|
|
86
|
+
await sleep(waitMs);
|
|
87
|
+
if (deps.signal?.aborted)
|
|
88
|
+
throw new McpTransportError("cancelled", "MCP OAuth device sign-in cancelled.");
|
|
89
|
+
if (Date.now() >= deadline)
|
|
90
|
+
throw new McpTransportError("timeout", "MCP OAuth device authorization expired before sign-in completed.");
|
|
86
91
|
const form = new URLSearchParams();
|
|
87
92
|
form.set("grant_type", "urn:ietf:params:oauth:grant-type:device_code");
|
|
88
93
|
form.set("device_code", params.deviceCode);
|
|
89
94
|
form.set("client_id", params.clientId);
|
|
90
|
-
if (params.
|
|
91
|
-
form.set("
|
|
95
|
+
if (params.resource)
|
|
96
|
+
form.set("resource", params.resource);
|
|
97
|
+
const headers = {};
|
|
98
|
+
applyClientAuthentication(form, headers, params.clientId, params.clientSecret, params.authMethod);
|
|
99
|
+
let response;
|
|
100
|
+
try {
|
|
101
|
+
response = await postForm(params.tokenEndpoint, form, deps, headers);
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
if (deps.signal?.aborted)
|
|
105
|
+
throw error;
|
|
106
|
+
if (error instanceof TypeError ||
|
|
107
|
+
(error instanceof McpTransportError && ["timeout", "network"].includes(error.kind))) {
|
|
108
|
+
intervalMs *= 2;
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
throw error;
|
|
92
112
|
}
|
|
93
|
-
const { status, record } =
|
|
113
|
+
const { status, record } = response;
|
|
94
114
|
const accessToken = record?.access_token;
|
|
95
|
-
if (status >= 200 &&
|
|
115
|
+
if (status >= 200 &&
|
|
116
|
+
status < 300 &&
|
|
117
|
+
typeof accessToken === "string" &&
|
|
118
|
+
accessToken.length > 0) {
|
|
96
119
|
return {
|
|
97
120
|
accessToken,
|
|
98
121
|
tokenType: typeof record?.token_type === "string" ? record.token_type : "Bearer",
|
|
@@ -107,7 +130,7 @@ export async function pollDeviceTokens(params, deps = {}) {
|
|
|
107
130
|
if (error === "authorization_pending")
|
|
108
131
|
continue;
|
|
109
132
|
if (error === "slow_down") {
|
|
110
|
-
intervalMs
|
|
133
|
+
intervalMs += SLOW_DOWN_EXTRA_SECONDS * 1000;
|
|
111
134
|
continue;
|
|
112
135
|
}
|
|
113
136
|
if (error === "access_denied") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.js","sourceRoot":"","sources":["../../../src/mcp/auth/device.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"device.js","sourceRoot":"","sources":["../../../src/mcp/auth/device.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface OAuthHttpDeps {
|
|
2
|
+
readonly fetchImpl?: typeof fetch | undefined;
|
|
3
|
+
readonly validateUrl?: ((url: string) => URL) | undefined;
|
|
4
|
+
readonly signal?: AbortSignal | undefined;
|
|
5
|
+
readonly timeoutMs?: number | undefined;
|
|
6
|
+
}
|
|
7
|
+
export declare function fetchOAuthJson(url: string, init: RequestInit, deps: OAuthHttpDeps): Promise<{
|
|
8
|
+
status: number;
|
|
9
|
+
ok: boolean;
|
|
10
|
+
record: Record<string, unknown> | undefined;
|
|
11
|
+
}>;
|
|
12
|
+
export declare function oauthErrorDetail(record: Record<string, unknown> | undefined): string;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { McpTransportError, withTimeout } from "../transport.js";
|
|
2
|
+
import { assertSafeDiscoveryUrl } from "./security.js";
|
|
3
|
+
export async function fetchOAuthJson(url, init, deps) {
|
|
4
|
+
const target = (deps.validateUrl ?? assertSafeDiscoveryUrl)(url);
|
|
5
|
+
const { signal, dispose } = withTimeout(deps.signal, deps.timeoutMs ?? 15_000);
|
|
6
|
+
let reader;
|
|
7
|
+
try {
|
|
8
|
+
const response = await (deps.fetchImpl ?? fetch)(target.toString(), {
|
|
9
|
+
...init,
|
|
10
|
+
redirect: "manual",
|
|
11
|
+
signal,
|
|
12
|
+
});
|
|
13
|
+
if (response.status >= 300 && response.status < 400) {
|
|
14
|
+
await response.body?.cancel().catch(() => undefined);
|
|
15
|
+
throw new McpTransportError("protocol", "MCP OAuth endpoint attempted a redirect; use its final URL.");
|
|
16
|
+
}
|
|
17
|
+
const decoder = new TextDecoder();
|
|
18
|
+
let text = "";
|
|
19
|
+
let bytes = 0;
|
|
20
|
+
if (response.body) {
|
|
21
|
+
reader = response.body.getReader();
|
|
22
|
+
for (;;) {
|
|
23
|
+
const { value, done } = await reader.read();
|
|
24
|
+
if (done)
|
|
25
|
+
break;
|
|
26
|
+
if (!value)
|
|
27
|
+
continue;
|
|
28
|
+
bytes += value.byteLength;
|
|
29
|
+
if (bytes > 256 * 1024)
|
|
30
|
+
throw new McpTransportError("too-large", "MCP OAuth document exceeded the size limit.");
|
|
31
|
+
text += decoder.decode(value, { stream: true });
|
|
32
|
+
}
|
|
33
|
+
text += decoder.decode();
|
|
34
|
+
}
|
|
35
|
+
let record;
|
|
36
|
+
try {
|
|
37
|
+
const parsed = JSON.parse(text);
|
|
38
|
+
if (typeof parsed === "object" && parsed !== null && !Array.isArray(parsed))
|
|
39
|
+
record = parsed;
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
record = undefined;
|
|
43
|
+
}
|
|
44
|
+
return { status: response.status, ok: response.ok, record };
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
if (signal.aborted)
|
|
48
|
+
throw signal.reason instanceof McpTransportError
|
|
49
|
+
? signal.reason
|
|
50
|
+
: new McpTransportError("cancelled", "MCP OAuth request cancelled.");
|
|
51
|
+
throw error;
|
|
52
|
+
}
|
|
53
|
+
finally {
|
|
54
|
+
await reader?.cancel().catch(() => undefined);
|
|
55
|
+
dispose();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export function oauthErrorDetail(record) {
|
|
59
|
+
const detail = record?.error_description ?? record?.error;
|
|
60
|
+
return typeof detail === "string" ? `: ${detail.slice(0, 200)}` : "";
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/mcp/auth/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,14 +4,22 @@ export interface OpenBrowserDeps {
|
|
|
4
4
|
readonly platform?: NodeJS.Platform | undefined;
|
|
5
5
|
readonly spawnImpl?: typeof spawn | undefined;
|
|
6
6
|
}
|
|
7
|
+
export declare function systemBrowserAvailable(env?: Readonly<Record<string, string | undefined>>, platform?: NodeJS.Platform): boolean;
|
|
7
8
|
export declare function openSystemBrowser(rawUrl: string, deps?: OpenBrowserDeps): Promise<void>;
|
|
8
9
|
export interface LoopbackAuthorizationParams {
|
|
9
10
|
buildAuthorizationUrl(redirectUri: string, state: string): string | Promise<string>;
|
|
10
|
-
openBrowser(url: string)
|
|
11
|
+
readonly openBrowser?: ((url: string) => Promise<void>) | undefined;
|
|
11
12
|
readonly timeoutMs?: number | undefined;
|
|
12
13
|
readonly host?: string | undefined;
|
|
14
|
+
readonly port?: number | undefined;
|
|
13
15
|
readonly callbackPath?: string | undefined;
|
|
14
16
|
readonly successHtml?: string | undefined;
|
|
15
17
|
readonly onAuthorizationUrl?: ((url: string) => void) | undefined;
|
|
18
|
+
readonly signal?: AbortSignal | undefined;
|
|
19
|
+
readonly readCallbackUrl?: ((info: {
|
|
20
|
+
url: string;
|
|
21
|
+
redirectUri: string;
|
|
22
|
+
signal: AbortSignal;
|
|
23
|
+
}) => Promise<string | undefined>) | undefined;
|
|
16
24
|
}
|
|
17
25
|
export declare function runLoopbackAuthorization(params: LoopbackAuthorizationParams): Promise<LoopbackAuthorizationResult>;
|