@jaypie/mcp 0.8.175 → 0.8.176
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/dist/assets.js
CHANGED
|
@@ -55,11 +55,11 @@ function getMcpAssetPaths() {
|
|
|
55
55
|
*/
|
|
56
56
|
function getMcpBuildInfo() {
|
|
57
57
|
return {
|
|
58
|
-
commit: "
|
|
58
|
+
commit: "92677918"
|
|
59
59
|
,
|
|
60
|
-
version: "0.8.
|
|
60
|
+
version: "0.8.176"
|
|
61
61
|
,
|
|
62
|
-
versionString: "@jaypie/mcp@0.8.
|
|
62
|
+
versionString: "@jaypie/mcp@0.8.176#92677918"
|
|
63
63
|
,
|
|
64
64
|
};
|
|
65
65
|
}
|
package/package.json
CHANGED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.2.112
|
|
3
|
+
date: 2026-09-27
|
|
4
|
+
summary: Pulls @jaypie/llm 1.3.53
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Changes
|
|
8
|
+
|
|
9
|
+
- **`@jaypie/llm` 1.3.53**: per-attempt `timeout` aborts a stalled provider request and falls back, instead of waiting out undici's 300 s headers timeout (#595).
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.3.53
|
|
3
|
+
date: 2026-09-27
|
|
4
|
+
summary: Per-attempt timeout aborts a stalled provider request and falls back instead of waiting out undici's 300 s headers timeout
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Changes
|
|
8
|
+
|
|
9
|
+
- New `timeout` option on `operate()`/`stream()` and on each fallback entry: a per-attempt deadline in milliseconds (#595). A stalled attempt is aborted and throws `LlmTimeoutError`, which extends `LlmTransientError` (status 504, `timeoutMs`)
|
|
10
|
+
- Down a fallback chain, a timeout moves to the next entry at once; on a single model or the linger pass it retries on the transient budget with the same deadline. It never surfaces as `LlmAbortError`, so the chain does not stop
|
|
11
|
+
- `stream()` applies `timeout` as an idle timeout, restarted by every chunk and paused while the consumer holds one
|
|
12
|
+
- A fallback entry's `timeout` replaces the call's for that entry; `false` disables it. No default applies
|
|
13
|
+
- The Google adapter now forwards the attempt signal to its requests. Previously it dropped the signal, so neither a caller abort nor a retry teardown cancelled an in-flight Gemini call
|
|
14
|
+
- `LlmTimeoutError` is exported from `@jaypie/llm`
|
|
15
|
+
|
|
16
|
+
## Testing
|
|
17
|
+
|
|
18
|
+
- `npm run test -w packages/llm`: new specs cover the RetryExecutor deadline, OperateLoop and StreamLoop timeouts (including an adapter that swallows the abort), chain fall-over on a timeout, entry-level overrides, and Google signal forwarding
|
package/skills/llm.md
CHANGED
|
@@ -779,6 +779,7 @@ for await (const chunk of Llm.stream(input, {
|
|
|
779
779
|
|
|
780
780
|
- A caller abort is terminal and is never retried. `operate()` rejects with `LlmAbortError` (`category: "aborted"`, status 499); `stream()` yields an error chunk with the same status, then its final `done` chunk.
|
|
781
781
|
- An already-aborted signal fails before the first request goes out.
|
|
782
|
+
- Every provider forwards the signal to its request, Google included.
|
|
782
783
|
- Abandoning a `stream()` generator (`break`, `return`, or a thrown error in the consumer) aborts the upstream request on teardown, with or without a `signal`.
|
|
783
784
|
- The exchange envelope still settles on an abort, carrying the partial usage and history with `status: "incomplete"`.
|
|
784
785
|
|
|
@@ -828,6 +829,27 @@ const response = await llm.operate(input, {
|
|
|
828
829
|
});
|
|
829
830
|
```
|
|
830
831
|
|
|
832
|
+
### Attempt Timeout
|
|
833
|
+
|
|
834
|
+
`timeout` sets a per-attempt deadline in milliseconds. Without it, a provider that accepts the connection but never answers holds the chain until the runtime gives up (undici waits 300 s for response headers). A stalled attempt is aborted and throws `LlmTimeoutError` (a `LlmTransientError`, status 504, with `timeoutMs`):
|
|
835
|
+
|
|
836
|
+
```typescript
|
|
837
|
+
const response = await llm.operate(input, {
|
|
838
|
+
fallback: [
|
|
839
|
+
{ provider: "openai", model: LLM.MODEL.SOL },
|
|
840
|
+
{ provider: "anthropic", model: LLM.MODEL.OPUS, timeout: 180_000 },
|
|
841
|
+
],
|
|
842
|
+
timeout: 60_000,
|
|
843
|
+
});
|
|
844
|
+
```
|
|
845
|
+
|
|
846
|
+
- Down a chain, a timeout moves to the next entry at once. On a single model or the linger pass it retries on the transient budget, each retry with the same deadline.
|
|
847
|
+
- A timeout is never an `LlmAbortError`: the caller's `signal` still owns cancellation.
|
|
848
|
+
- An entry's own `timeout` replaces the call's for that entry; `false` disables it.
|
|
849
|
+
- `stream()` treats `timeout` as an idle timeout: it restarts with every chunk and pauses while the consumer holds one. A stall after partial output yields an error chunk.
|
|
850
|
+
- No default applies; unset means no deadline. Size it above the slowest legitimate non-streaming response (long reasoning runs take minutes).
|
|
851
|
+
- `Llm.ocr` keeps `timeout` as the LlamaParse job deadline.
|
|
852
|
+
|
|
831
853
|
### Fallback Response Metadata
|
|
832
854
|
|
|
833
855
|
```typescript
|