@jaypie/mcp 0.8.178 → 0.8.179

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: "77e42bd7"
58
+ commit: "4e0d56bd"
59
59
  ,
60
- version: "0.8.178"
60
+ version: "0.8.179"
61
61
  ,
62
- versionString: "@jaypie/mcp@0.8.178#77e42bd7"
62
+ versionString: "@jaypie/mcp@0.8.179#4e0d56bd"
63
63
  ,
64
64
  };
65
65
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jaypie/mcp",
3
- "version": "0.8.178",
3
+ "version": "0.8.179",
4
4
  "description": "Jaypie MCP",
5
5
  "repository": {
6
6
  "type": "git",
@@ -0,0 +1,9 @@
1
+ ---
2
+ version: 1.2.115
3
+ date: 2026-09-28
4
+ summary: Pulls @jaypie/llm 1.3.56
5
+ ---
6
+
7
+ ## Changes
8
+
9
+ - **`@jaypie/llm` 1.3.56**: failing over down a fallback chain logs at `debug` instead of `error` and `warn`; the report tally counts `failures` and `fallbacks`.
@@ -0,0 +1,26 @@
1
+ ---
2
+ version: 1.3.56
3
+ date: 2026-09-28
4
+ summary: Failing over down a fallback chain logs at debug instead of error and warn, and the report tally counts failures and fallbacks
5
+ ---
6
+
7
+ ## Changes
8
+
9
+ ### Failover logging
10
+
11
+ A timeout (or any failure) on a fail-fast attempt down a fallback chain logged `API call failed after 0 retries` at `error` and `Provider X failed` at `warn`, although the next model took over as designed.
12
+
13
+ - `RetryExecutor` logs a zero-budget failure at `debug`: `API call timed out after 60000ms; not retrying` for a timeout, `API call failed; not retrying` or `API call rate limited; not retrying` otherwise. Exhausting a nonzero budget still logs `error`.
14
+ - `runWithFallback` logs `Provider X failed; failing over` at `debug` when another model remains. Only the failure that reaches the caller (a lone model, or the linger pass) logs at `warn`. Both carry `kind` (`timeout` or the `LlmError` category).
15
+ - A timeout that retries on the transient budget names its deadline in the retry `debug` line.
16
+
17
+ ### Report tally
18
+
19
+ Inside a Jaypie handler, `operate()`, `ocr()`, and `question()` tally each failed provider attempt onto the `llm` report key:
20
+
21
+ - `failures`: counts by `provider:model` and kind, e.g. `{ "openai:gpt-5.5": { "timeout": 1 } }`
22
+ - `fallbacks`: counts each hand-off to another model, including the linger pass back to the primary
23
+
24
+ ## Testing
25
+
26
+ - `npm run test -w packages/llm`: new `tallyFailure` and `runWithFallback` specs cover failure kinds, key resolution, the fallback count, and the debug/warn split; `RetryExecutor` specs cover the zero-budget debug lines for transient, rate-limit, and timeout failures
@@ -0,0 +1,10 @@
1
+ ---
2
+ version: 0.8.179
3
+ date: 2026-09-28
4
+ summary: Release notes for @jaypie/llm 1.3.56 and jaypie 1.2.115; llm skill documents failover logging and the failures/fallbacks tally
5
+ ---
6
+
7
+ ## Changes
8
+
9
+ - **Release notes**: `@jaypie/llm` 1.3.56 and `jaypie` 1.2.115
10
+ - **`llm` skill**: documents the `failures` and `fallbacks` report totals and the debug-level failover logging under Attempt Timeout
package/skills/llm.md CHANGED
@@ -864,6 +864,7 @@ const response = await llm.operate(input, {
864
864
  - `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.
865
865
  - No default applies; unset means no deadline. Size it above the slowest legitimate non-streaming response (long reasoning runs take minutes).
866
866
  - `Llm.ocr` keeps `timeout` as the LlamaParse job deadline.
867
+ - A timeout that hands off to the next model logs at `debug` (`API call timed out after 60000ms; not retrying`, then `Provider openai failed; failing over`). Only the failure that reaches the caller logs at `warn`. The report tally counts it under `failures` and `fallbacks`.
867
868
 
868
869
  ### Fallback Response Metadata
869
870
 
@@ -922,6 +923,8 @@ Inside a Jaypie handler (`expressHandler`, `lambdaHandler`, and stream variants)
922
923
  ```json
923
924
  {
924
925
  "llm": {
926
+ "failures": { "openai:gpt-5.5": { "timeout": 1 } },
927
+ "fallbacks": 1,
925
928
  "operates": 2,
926
929
  "toolCalls": 3,
927
930
  "tools": { "get_weather": 2, "roll": 1 },
@@ -941,6 +944,8 @@ Inside a Jaypie handler (`expressHandler`, `lambdaHandler`, and stream variants)
941
944
  - `operates` counts loop executions; repeated calls sum every number
942
945
  - `usage` is keyed `provider:model` — fallback providers appear as separate keys
943
946
  - `tools` appears only when tools were called
947
+ - `failures` counts failed provider attempts by `provider:model` and kind (`timeout`, `rate_limit`, `retryable`, `quota`, `unrecoverable`, `unknown`), from `operate()`, `ocr()`, and `question()`
948
+ - `fallbacks` counts hand-offs to another model, including the final retry of the primary once a chain is spent
944
949
  - Outside a handler session the tally is skipped entirely (guarded on `log.sessionActive`), so a CLI or script calling `operate()` directly emits nothing
945
950
 
946
951
  ## LLM Observability (Datadog)