@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.
Files changed (269) hide show
  1. package/CONTRIBUTING.md +4 -1
  2. package/MCP.md +182 -0
  3. package/PROVIDERS.md +67 -0
  4. package/README.md +11 -2
  5. package/dist/agent/runner.js +1 -1
  6. package/dist/agent/runner.js.map +1 -1
  7. package/dist/agent/stream-recovery.js +5 -3
  8. package/dist/agent/stream-recovery.js.map +1 -1
  9. package/dist/agent/turn/mcp-agent-tools.d.ts +4 -2
  10. package/dist/agent/turn/mcp-agent-tools.js +15 -6
  11. package/dist/agent/turn/mcp-agent-tools.js.map +1 -1
  12. package/dist/agent/turn/tool-call-preparation.d.ts +2 -1
  13. package/dist/agent/turn/tool-call-preparation.js +20 -4
  14. package/dist/agent/turn/tool-call-preparation.js.map +1 -1
  15. package/dist/agent/turn/tool-execution/single-tool.js +1 -1
  16. package/dist/agent/turn/tool-execution/single-tool.js.map +1 -1
  17. package/dist/app/commands/catalog.js +1 -0
  18. package/dist/app/commands/catalog.js.map +1 -1
  19. package/dist/classic/app/action-handlers.js +2 -1
  20. package/dist/classic/app/action-handlers.js.map +1 -1
  21. package/dist/classic/app/app-wiring.js +2 -0
  22. package/dist/classic/app/app-wiring.js.map +1 -1
  23. package/dist/classic/chrome/composer-controller.d.ts +2 -1
  24. package/dist/classic/chrome/composer-controller.js +36 -19
  25. package/dist/classic/chrome/composer-controller.js.map +1 -1
  26. package/dist/classic/chrome/composer-frame.js +1 -1
  27. package/dist/classic/chrome/composer-frame.js.map +1 -1
  28. package/dist/classic/input/input-router.d.ts +2 -1
  29. package/dist/classic/input/input-router.js +9 -0
  30. package/dist/classic/input/input-router.js.map +1 -1
  31. package/dist/classic/input/key-event.d.ts +3 -0
  32. package/dist/classic/input/key-event.js.map +1 -1
  33. package/dist/classic/input/paste-burst.js +5 -0
  34. package/dist/classic/input/paste-burst.js.map +1 -1
  35. package/dist/classic/input/raw-decoder.d.ts +1 -0
  36. package/dist/classic/input/raw-decoder.js +15 -10
  37. package/dist/classic/input/raw-decoder.js.map +1 -1
  38. package/dist/classic/input/terminal-sequences.d.ts +0 -1
  39. package/dist/classic/input/terminal-sequences.js +0 -1
  40. package/dist/classic/input/terminal-sequences.js.map +1 -1
  41. package/dist/commands/providers.js +2 -0
  42. package/dist/commands/providers.js.map +1 -1
  43. package/dist/llm/adapters/mistral-messages.d.ts +1 -0
  44. package/dist/llm/adapters/mistral-messages.js +56 -0
  45. package/dist/llm/adapters/mistral-messages.js.map +1 -0
  46. package/dist/llm/capabilities.js +63 -1
  47. package/dist/llm/capabilities.js.map +1 -1
  48. package/dist/llm/capability/state.d.ts +1 -1
  49. package/dist/llm/capability/tool-dialect.js +8 -1
  50. package/dist/llm/capability/tool-dialect.js.map +1 -1
  51. package/dist/llm/capability/vision-patterns.js +6 -0
  52. package/dist/llm/capability/vision-patterns.js.map +1 -1
  53. package/dist/llm/capability/vision-registry.js +11 -1
  54. package/dist/llm/capability/vision-registry.js.map +1 -1
  55. package/dist/llm/catalog-context.d.ts +6 -0
  56. package/dist/llm/catalog-context.js +15 -0
  57. package/dist/llm/catalog-context.js.map +1 -0
  58. package/dist/llm/catalog-facts.d.ts +2 -0
  59. package/dist/llm/catalog-facts.js.map +1 -1
  60. package/dist/llm/cline-model-catalog.d.ts +4 -0
  61. package/dist/llm/cline-model-catalog.js +197 -0
  62. package/dist/llm/cline-model-catalog.js.map +1 -0
  63. package/dist/llm/cline.d.ts +1 -0
  64. package/dist/llm/cline.js +69 -17
  65. package/dist/llm/cline.js.map +1 -1
  66. package/dist/llm/free-model-limits.d.ts +1 -0
  67. package/dist/llm/free-model-limits.js +101 -0
  68. package/dist/llm/free-model-limits.js.map +1 -0
  69. package/dist/llm/free.js +136 -103
  70. package/dist/llm/free.js.map +1 -1
  71. package/dist/llm/mistral-models.d.ts +2 -0
  72. package/dist/llm/mistral-models.js +23 -0
  73. package/dist/llm/mistral-models.js.map +1 -0
  74. package/dist/llm/mistral.d.ts +2 -0
  75. package/dist/llm/mistral.js +129 -0
  76. package/dist/llm/mistral.js.map +1 -0
  77. package/dist/llm/profile/layer-merge.js +3 -3
  78. package/dist/llm/profile/layer-merge.js.map +1 -1
  79. package/dist/llm/provider-identity.js +5 -0
  80. package/dist/llm/provider-identity.js.map +1 -1
  81. package/dist/llm/provider-info-text.js +19 -0
  82. package/dist/llm/provider-info-text.js.map +1 -1
  83. package/dist/llm/provider-model-layers.js +45 -0
  84. package/dist/llm/provider-model-layers.js.map +1 -1
  85. package/dist/llm/provider-profile-layers.js +25 -0
  86. package/dist/llm/provider-profile-layers.js.map +1 -1
  87. package/dist/llm/provider-profiles.js +28 -4
  88. package/dist/llm/provider-profiles.js.map +1 -1
  89. package/dist/llm/quota-signals.d.ts +1 -0
  90. package/dist/llm/quota-signals.js +8 -0
  91. package/dist/llm/quota-signals.js.map +1 -1
  92. package/dist/llm/reasoning-capability.js +1 -0
  93. package/dist/llm/reasoning-capability.js.map +1 -1
  94. package/dist/llm/request-plan.js +15 -6
  95. package/dist/llm/request-plan.js.map +1 -1
  96. package/dist/llm/router.js +1 -1
  97. package/dist/llm/router.js.map +1 -1
  98. package/dist/llm/routing/attempt-complete.js +4 -3
  99. package/dist/llm/routing/attempt-complete.js.map +1 -1
  100. package/dist/llm/routing/attempt-request.d.ts +5 -1
  101. package/dist/llm/routing/attempt-request.js +22 -2
  102. package/dist/llm/routing/attempt-request.js.map +1 -1
  103. package/dist/llm/routing/attempt-stream.js +4 -3
  104. package/dist/llm/routing/attempt-stream.js.map +1 -1
  105. package/dist/llm/routing/failure-report.js +6 -2
  106. package/dist/llm/routing/failure-report.js.map +1 -1
  107. package/dist/llm/routing/provider-selection.js +3 -0
  108. package/dist/llm/routing/provider-selection.js.map +1 -1
  109. package/dist/llm/tool-protocol.d.ts +1 -1
  110. package/dist/llm/tool-protocol.js +4 -1
  111. package/dist/llm/tool-protocol.js.map +1 -1
  112. package/dist/llm/wire/chat-body.js +51 -28
  113. package/dist/llm/wire/chat-body.js.map +1 -1
  114. package/dist/llm/wire/effort-preflight.js +4 -1
  115. package/dist/llm/wire/effort-preflight.js.map +1 -1
  116. package/dist/llm/wire/mistral-content.d.ts +19 -0
  117. package/dist/llm/wire/mistral-content.js +106 -0
  118. package/dist/llm/wire/mistral-content.js.map +1 -0
  119. package/dist/llm/wire/mistral-model-catalog.d.ts +2 -0
  120. package/dist/llm/wire/mistral-model-catalog.js +73 -0
  121. package/dist/llm/wire/mistral-model-catalog.js.map +1 -0
  122. package/dist/llm/wire/openai-complete.js +10 -4
  123. package/dist/llm/wire/openai-complete.js.map +1 -1
  124. package/dist/llm/wire/openai-stream.js +38 -16
  125. package/dist/llm/wire/openai-stream.js.map +1 -1
  126. package/dist/mcp/auth/device.d.ts +7 -3
  127. package/dist/mcp/auth/device.js +55 -32
  128. package/dist/mcp/auth/device.js.map +1 -1
  129. package/dist/mcp/auth/http.d.ts +12 -0
  130. package/dist/mcp/auth/http.js +62 -0
  131. package/dist/mcp/auth/http.js.map +1 -0
  132. package/dist/mcp/auth/loopback.d.ts +9 -1
  133. package/dist/mcp/auth/loopback.js +80 -8
  134. package/dist/mcp/auth/loopback.js.map +1 -1
  135. package/dist/mcp/auth/metadata.d.ts +2 -3
  136. package/dist/mcp/auth/metadata.js +25 -25
  137. package/dist/mcp/auth/metadata.js.map +1 -1
  138. package/dist/mcp/auth/provider.d.ts +1 -0
  139. package/dist/mcp/auth/provider.js +215 -42
  140. package/dist/mcp/auth/provider.js.map +1 -1
  141. package/dist/mcp/auth/registration.d.ts +2 -3
  142. package/dist/mcp/auth/registration.js +10 -14
  143. package/dist/mcp/auth/registration.js.map +1 -1
  144. package/dist/mcp/auth/token-exchange.d.ts +5 -3
  145. package/dist/mcp/auth/token-exchange.js +15 -15
  146. package/dist/mcp/auth/token-exchange.js.map +1 -1
  147. package/dist/mcp/auth/token-store.d.ts +1 -1
  148. package/dist/mcp/auth/token-store.js +105 -54
  149. package/dist/mcp/auth/token-store.js.map +1 -1
  150. package/dist/mcp/auth/types.d.ts +11 -2
  151. package/dist/mcp/catalog.d.ts +11 -0
  152. package/dist/mcp/catalog.js +58 -0
  153. package/dist/mcp/catalog.js.map +1 -0
  154. package/dist/mcp/client.d.ts +10 -1
  155. package/dist/mcp/client.js +93 -29
  156. package/dist/mcp/client.js.map +1 -1
  157. package/dist/mcp/coerce.js +4 -4
  158. package/dist/mcp/coerce.js.map +1 -1
  159. package/dist/mcp/config-file.js +53 -10
  160. package/dist/mcp/config-file.js.map +1 -1
  161. package/dist/mcp/discovery.js +2 -0
  162. package/dist/mcp/discovery.js.map +1 -1
  163. package/dist/mcp/jsonrpc.js +28 -18
  164. package/dist/mcp/jsonrpc.js.map +1 -1
  165. package/dist/mcp/manager.d.ts +17 -0
  166. package/dist/mcp/manager.js +211 -29
  167. package/dist/mcp/manager.js.map +1 -1
  168. package/dist/mcp/results.js +25 -10
  169. package/dist/mcp/results.js.map +1 -1
  170. package/dist/mcp/runtime.d.ts +6 -6
  171. package/dist/mcp/runtime.js +168 -60
  172. package/dist/mcp/runtime.js.map +1 -1
  173. package/dist/mcp/schema-compact.js +3 -29
  174. package/dist/mcp/schema-compact.js.map +1 -1
  175. package/dist/mcp/storage-lock.d.ts +1 -0
  176. package/dist/mcp/storage-lock.js +80 -0
  177. package/dist/mcp/storage-lock.js.map +1 -0
  178. package/dist/mcp/transport-http.d.ts +13 -2
  179. package/dist/mcp/transport-http.js +245 -77
  180. package/dist/mcp/transport-http.js.map +1 -1
  181. package/dist/mcp/transport-stdio.d.ts +5 -2
  182. package/dist/mcp/transport-stdio.js +96 -52
  183. package/dist/mcp/transport-stdio.js.map +1 -1
  184. package/dist/mcp/transport.d.ts +9 -1
  185. package/dist/mcp/transport.js +38 -0
  186. package/dist/mcp/transport.js.map +1 -1
  187. package/dist/mcp/types.d.ts +8 -2
  188. package/dist/mcp/types.js +1 -5
  189. package/dist/mcp/types.js.map +1 -1
  190. package/dist/mcp/validation.js +81 -12
  191. package/dist/mcp/validation.js.map +1 -1
  192. package/dist/noninteractive/stream-renderer.d.ts +1 -0
  193. package/dist/noninteractive/stream-renderer.js +13 -0
  194. package/dist/noninteractive/stream-renderer.js.map +1 -1
  195. package/dist/store/config/endpoints.js +1 -0
  196. package/dist/store/config/endpoints.js.map +1 -1
  197. package/dist/store/config.js +2 -0
  198. package/dist/store/config.js.map +1 -1
  199. package/dist/store/rtk-usage.d.ts +1 -0
  200. package/dist/store/rtk-usage.js +8 -3
  201. package/dist/store/rtk-usage.js.map +1 -1
  202. package/dist/tools/definitions/aggregate.js +4 -1
  203. package/dist/tools/definitions/aggregate.js.map +1 -1
  204. package/dist/tools/rtk/binary.d.ts +2 -2
  205. package/dist/tools/rtk/binary.js +12 -4
  206. package/dist/tools/rtk/binary.js.map +1 -1
  207. package/dist/tools/rtk/rewrite.js +13 -3
  208. package/dist/tools/rtk/rewrite.js.map +1 -1
  209. package/dist/tui-v2/components/composer/composer-input-box.d.ts +6 -1
  210. package/dist/tui-v2/components/composer/composer-input-box.js +27 -18
  211. package/dist/tui-v2/components/composer/composer-input-box.js.map +1 -1
  212. package/dist/tui-v2/components/composer/paste-chip.d.ts +3 -2
  213. package/dist/tui-v2/components/composer/paste-chip.js +17 -48
  214. package/dist/tui-v2/components/composer/paste-chip.js.map +1 -1
  215. package/dist/tui-v2/composer/composer-cursor.d.ts +3 -0
  216. package/dist/tui-v2/composer/composer-cursor.js +21 -0
  217. package/dist/tui-v2/composer/composer-cursor.js.map +1 -0
  218. package/dist/tui-v2/composer/composer-editor.js +91 -100
  219. package/dist/tui-v2/composer/composer-editor.js.map +1 -1
  220. package/dist/tui-v2/composer/composer-highlight.d.ts +6 -1
  221. package/dist/tui-v2/composer/composer-highlight.js +9 -2
  222. package/dist/tui-v2/composer/composer-highlight.js.map +1 -1
  223. package/dist/tui-v2/composer/composer-wheel.js +2 -1
  224. package/dist/tui-v2/composer/composer-wheel.js.map +1 -1
  225. package/dist/tui-v2/composer/expand-paste.d.ts +4 -0
  226. package/dist/tui-v2/composer/expand-paste.js +34 -0
  227. package/dist/tui-v2/composer/expand-paste.js.map +1 -0
  228. package/dist/tui-v2/composer/paste-hit-test.d.ts +28 -0
  229. package/dist/tui-v2/composer/paste-hit-test.js +25 -0
  230. package/dist/tui-v2/composer/paste-hit-test.js.map +1 -0
  231. package/dist/tui-v2/composer/use-draft-actions.js +3 -1
  232. package/dist/tui-v2/composer/use-draft-actions.js.map +1 -1
  233. package/dist/tui-v2/input/paste-burst-guard.js +3 -0
  234. package/dist/tui-v2/input/paste-burst-guard.js.map +1 -1
  235. package/dist/types.d.ts +4 -3
  236. package/dist/types.js +1 -0
  237. package/dist/types.js.map +1 -1
  238. package/dist/ui/mentions.js +12 -1
  239. package/dist/ui/mentions.js.map +1 -1
  240. package/dist/ui-core/actions/action-id.d.ts +1 -1
  241. package/dist/ui-core/actions/action-id.js +1 -0
  242. package/dist/ui-core/actions/action-id.js.map +1 -1
  243. package/dist/ui-core/actions/format-shortcuts.js +3 -2
  244. package/dist/ui-core/actions/format-shortcuts.js.map +1 -1
  245. package/dist/ui-core/actions/keymap.js +2 -0
  246. package/dist/ui-core/actions/keymap.js.map +1 -1
  247. package/dist/ui-core/bootstrap/composition-root.js +29 -11
  248. package/dist/ui-core/bootstrap/composition-root.js.map +1 -1
  249. package/dist/ui-core/commands/mcp-commands.js +3 -3
  250. package/dist/ui-core/commands/mcp-commands.js.map +1 -1
  251. package/dist/ui-core/commands/pickers/search-reasoning.js +21 -6
  252. package/dist/ui-core/commands/pickers/search-reasoning.js.map +1 -1
  253. package/dist/ui-core/commands/rtk-commands.js +3 -3
  254. package/dist/ui-core/commands/rtk-commands.js.map +1 -1
  255. package/dist/ui-core/composer/completion.d.ts +1 -0
  256. package/dist/ui-core/composer/completion.js +31 -3
  257. package/dist/ui-core/composer/completion.js.map +1 -1
  258. package/dist/ui-core/composer/composer-height.d.ts +1 -1
  259. package/dist/ui-core/composer/composer-height.js +26 -3
  260. package/dist/ui-core/composer/composer-height.js.map +1 -1
  261. package/dist/ui-core/composer/paste-placeholder.d.ts +10 -0
  262. package/dist/ui-core/composer/paste-placeholder.js +60 -12
  263. package/dist/ui-core/composer/paste-placeholder.js.map +1 -1
  264. package/dist/ui-core/input/paste-burst.d.ts +2 -1
  265. package/dist/ui-core/input/paste-burst.js +20 -0
  266. package/dist/ui-core/input/paste-burst.js.map +1 -1
  267. package/dist/version.generated.d.ts +2 -2
  268. package/dist/version.generated.js +2 -2
  269. 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 text = message?.content ?? "";
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 = compatibleReasoningArtifacts({
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
- if (parsed.error) {
495
- const detail = typeof parsed.error === "string"
496
- ? parsed.error
497
- : (parsed.error.message ?? parsed.error.type ?? "unknown error");
498
- throw new ProviderError(`${options.provider} stream error: ${detail}`, inBandBadRequestStatus(parsed.error), payload.slice(0, 500));
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 reasoningToken = openAiReasoningText(delta);
512
- const token = delta?.content;
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
- handleContentToken(normalized.delta);
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
  }
@@ -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 validate = deps.validateUrl ?? assertSafeDiscoveryUrl;
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
- redirect: "manual",
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
- const { status, record } = await postForm(params.deviceAuthorizationEndpoint, form, deps);
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
- ...(typeof complete === "string" ? { verificationUriComplete: complete } : {}),
69
- intervalSeconds: typeof interval === "number" && interval > 0
70
- ? Math.min(interval, MAX_POLL_INTERVAL_SECONDS)
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
- await sleep(Math.min(intervalMs, Math.max(0, deadline - Date.now())));
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.clientSecret !== undefined) {
91
- form.set("client_secret", params.clientSecret);
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 } = await postForm(params.tokenEndpoint, form, deps);
113
+ const { status, record } = response;
94
114
  const accessToken = record?.access_token;
95
- if (status >= 200 && status < 300 && typeof accessToken === "string" && accessToken.length > 0) {
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 = Math.min((intervalMs + SLOW_DOWN_EXTRA_SECONDS * 1000), MAX_POLL_INTERVAL_SECONDS * 1000);
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":"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"}
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): Promise<void>;
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>;