@jaypie/mcp 0.8.48 → 0.8.51
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/suites/docs/index.js +1 -1
- package/package.json +1 -1
- package/release-notes/jaypie/1.2.43.md +12 -0
- package/release-notes/jaypie/1.2.44.md +11 -0
- package/release-notes/llm/1.2.30.md +29 -0
- package/release-notes/llm/1.2.31.md +33 -0
- package/release-notes/llm/1.2.32.md +23 -0
- package/release-notes/mcp/0.8.49.md +9 -0
- package/release-notes/mcp/0.8.50.md +9 -0
- package/release-notes/mcp/0.8.51.md +10 -0
|
@@ -9,7 +9,7 @@ import { gt } from 'semver';
|
|
|
9
9
|
/**
|
|
10
10
|
* Docs Suite - Documentation services (skill, version, release_notes)
|
|
11
11
|
*/
|
|
12
|
-
const BUILD_VERSION_STRING = "@jaypie/mcp@0.8.
|
|
12
|
+
const BUILD_VERSION_STRING = "@jaypie/mcp@0.8.51#4c00d3ed"
|
|
13
13
|
;
|
|
14
14
|
const __filename$1 = fileURLToPath(import.meta.url);
|
|
15
15
|
const __dirname$1 = path.dirname(__filename$1);
|
package/package.json
CHANGED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.2.43
|
|
3
|
+
date: 2026-04-29
|
|
4
|
+
summary: Pull in @jaypie/llm 1.2.31 (native structured outputs across all providers)
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Changes
|
|
8
|
+
|
|
9
|
+
- Bumped `@jaypie/llm` peer-dep range to `^1.2.31`, exposing:
|
|
10
|
+
- Anthropic, OpenAI, Gemini 3, and xAI all use native structured outputs by default (no more `structured_output` fake-tool emulation in the happy path).
|
|
11
|
+
- Per-provider runtime fallback that engages the legacy fake-tool path transparently when a model rejects native structured output, with a `log.warn` so silent degradations don't hide.
|
|
12
|
+
- Anthropic specifically: native field is `output_config.format` (the earlier `output_format` was deprecated by the API).
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.2.44
|
|
3
|
+
date: 2026-04-29
|
|
4
|
+
summary: Pull in @jaypie/llm 1.2.32 (OpenAI temperature-deprecation handling)
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Changes
|
|
8
|
+
|
|
9
|
+
- Bumped `@jaypie/llm` peer-dep range to `^1.2.32`, exposing:
|
|
10
|
+
- The OpenAI adapter strips `temperature` for denylisted models (`^gpt-5\.5`, `^o\d`) and transparently retries without the param when the API returns `400 Unsupported parameter: 'temperature' …`.
|
|
11
|
+
- Capability matrix now exercises `temperature` across every configured model.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.2.30
|
|
3
|
+
date: 2026-04-28
|
|
4
|
+
summary: Anthropic provider uses native structured outputs in place of the structured_output fake-tool emulation
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Changes
|
|
8
|
+
|
|
9
|
+
- `AnthropicAdapter` (`operate()`/`stream()`):
|
|
10
|
+
- When `format` is set, the request body now includes `output_config: { format: { type: "json_schema", schema } }` instead of injecting a synthetic `structured_output` tool with `tool_choice: "any"`.
|
|
11
|
+
- JSON schemas are sanitized for Anthropic's grammar compiler: objects always get `additionalProperties: false`, unsupported numeric/string/array constraints (`minimum`, `maxLength`, `multipleOf`, …) are appended to `description` rather than sent to the API, unsupported string formats are stripped, and `minItems` is preserved only when 0 or 1.
|
|
12
|
+
- Responses to structured-output requests are parsed from the first `text` content block (guaranteed valid JSON by the Anthropic grammar). `stop_reason: "refusal"` and `stop_reason: "max_tokens"` are recognized and surface as text rather than triggering a parse error.
|
|
13
|
+
- Streaming structured outputs now arrive as `LlmStreamChunkType.Text` deltas (consumers concat to assemble JSON), instead of a single `ToolCall` chunk.
|
|
14
|
+
- `AnthropicProvider.send(message, { response })`: the system prompt is no longer stuffed with the JSON schema, and the regex JSON extraction is gone. The native `output_config.format` field handles the contract.
|
|
15
|
+
- A runtime fallback re-engages the legacy fake-tool emulation transparently when a model rejects `output_config` (cached per model in `runtimeNoStructuredOutputModels`). Citations-related 400s and `output_format`-deprecation 400s are explicitly excluded so they propagate instead of being masked by a retry.
|
|
16
|
+
|
|
17
|
+
## Why
|
|
18
|
+
|
|
19
|
+
Anthropic launched native structured outputs publicly on 2025-11-14 (now GA on Claude 4.5+). The previous tool-emulation hack predates the feature. Native:
|
|
20
|
+
- Removes a fragile regex extraction in `provider.send`.
|
|
21
|
+
- Removes the synthetic `structured_output` tool from the operate loop.
|
|
22
|
+
- Returns guaranteed-valid JSON via grammar-constrained generation rather than relying on the model to comply with a system-prompt instruction.
|
|
23
|
+
- Keeps a fallback path for any model that does not (yet) support `output_config`.
|
|
24
|
+
|
|
25
|
+
## Notes
|
|
26
|
+
|
|
27
|
+
- Streaming consumers that previously branched on a `tool_call` chunk to receive structured output will now see `text` chunks. Concatenate to assemble the final JSON, or use `operate()` for the parsed object.
|
|
28
|
+
- Schema constraints not supported by Anthropic's grammar (regex `pattern`, `minLength`, numeric ranges, recursion) are stripped at request time. The original constraints are still enforced client-side by the caller's Zod schema during result validation.
|
|
29
|
+
- Gemini and OpenRouter still use the fake-tool emulation pattern; native migration for those adapters is a separate task.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.2.31
|
|
3
|
+
date: 2026-04-29
|
|
4
|
+
summary: OpenRouter and Gemini adapters drop the structured_output fake-tool hack in favor of native response_format / responseJsonSchema (with runtime fallback for unsupported models)
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Changes
|
|
8
|
+
|
|
9
|
+
- `OpenRouterAdapter` (`operate()`/`stream()`):
|
|
10
|
+
- When `format` is set, the request body now includes `response_format: { type: "json_schema", json_schema: { name, schema, strict: true } }` instead of injecting a synthetic `structured_output` tool.
|
|
11
|
+
- `formatTools` no longer injects the synthetic tool. The legacy fake tool is added in `buildRequest` only as a runtime fallback for models cached as not supporting native `response_format`.
|
|
12
|
+
- `formatOutputSchema` now forces `additionalProperties: false` on every object (required for `strict: true`).
|
|
13
|
+
- `executeRequest` annotates the response with a `__jaypieStructuredOutput` flag so `hasStructuredOutput` / `extractStructuredOutput` can detect intent statelessly. The native path parses `choices[0].message.content` as JSON; the fallback path keeps the existing tool-call extraction.
|
|
14
|
+
- 400/422 errors mentioning `response_format`/`json_schema`/`structured_output`/`require_parameters` cache the model in `runtimeNoStructuredOutputModels` and trigger a one-shot retry via the legacy fake-tool path. Unrelated 4xx propagate.
|
|
15
|
+
- `log.warn` at both fallback entry points (initial cached-model build and 4xx retry).
|
|
16
|
+
- `GeminiAdapter` (`operate()`/`stream()`):
|
|
17
|
+
- Format **and** tools combined now uses native `responseJsonSchema` + tools when the model id matches `^gemini-3` (Gemini 3 preview). Gemini 2.5 (including thinking) and earlier keep the `structured_output` fake-tool emulation with the system-prompt nudge.
|
|
18
|
+
- `formatTools` no longer injects the synthetic structured_output tool; the fake tool is added in `buildRequest` only when the runtime falls back.
|
|
19
|
+
- 400 errors mentioning `responseJsonSchema`/`responseSchema`/`responseMime`/`function_call`/`tools` cache the model in `runtimeNoStructuredOutputComboModels` and trigger a one-shot retry via the legacy fake-tool path.
|
|
20
|
+
- `log.warn` at both fallback entry points.
|
|
21
|
+
|
|
22
|
+
## Why
|
|
23
|
+
|
|
24
|
+
OpenRouter exposes the OpenAI-style structured-outputs shape end-to-end, and Gemini 3 launched as a preview supporting tools + `responseJsonSchema` together. The `structured_output` fake-tool emulation predates both. Native:
|
|
25
|
+
- Returns guaranteed-valid JSON via grammar-constrained generation rather than relying on the model to comply with a system-prompt instruction.
|
|
26
|
+
- Removes the synthetic tool from the operate-loop tool list (cleaner traces, no risk of the model ignoring the nudge).
|
|
27
|
+
- Keeps a fallback path that re-engages the fake-tool emulation transparently when a model rejects the native field.
|
|
28
|
+
|
|
29
|
+
## Notes
|
|
30
|
+
|
|
31
|
+
- Anthropic was migrated in 1.2.30; with this release, all four LLM providers (Anthropic, OpenAI, OpenRouter, Gemini) use native structured outputs by default. xAI inherits from `OpenAiAdapter` and was already native.
|
|
32
|
+
- Gemini 2.5 thinking models stay on the fake-tool path because the combo is unreliable on 2.5; this matches Google's documentation that the combo is a Gemini 3 preview feature.
|
|
33
|
+
- Streaming consumers that previously branched on a `tool_call` chunk to receive structured output from OpenRouter/Gemini will now see `text` chunks. Concatenate to assemble the final JSON, or use `operate()` for the parsed object.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.2.32
|
|
3
|
+
date: 2026-04-29
|
|
4
|
+
summary: OpenAI adapter strips/retries on temperature deprecation; matrix gains a temperature capability
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Changes
|
|
8
|
+
|
|
9
|
+
- `OpenAiAdapter` (`operate()`/`stream()`) now mirrors the Anthropic adapter's temperature-deprecation handling:
|
|
10
|
+
- `MODELS_WITHOUT_TEMPERATURE` regex denylist (`^gpt-5\.5`, `^o\d`) is checked in `buildRequest` and `temperature` is stripped before the request is sent.
|
|
11
|
+
- Session-level `runtimeNoTemperatureModels` Set populated by `executeRequest` when the API returns `400 Unsupported parameter: 'temperature' …`. Subsequent calls for the same model strip the param up-front via `supportsTemperature`.
|
|
12
|
+
- `executeRequest` catches the 400, caches the model, and transparently retries without `temperature`. Unrelated 400s and 400s on requests without `temperature` still propagate.
|
|
13
|
+
- `clearRuntimeNoTemperatureModels()` exposed for tests.
|
|
14
|
+
- Capability matrix (`test/matrix.ts`, `test/models.ts`) gains a `temperature` capability that runs a basic prompt with `temperature: 0` and verifies a non-empty response. Runs across every model in the matrix.
|
|
15
|
+
|
|
16
|
+
## Why
|
|
17
|
+
|
|
18
|
+
`gpt-5.5` rejects `temperature` outright (`400 Unsupported parameter`). Every prior adapter that hit this returned an unrecoverable error to the caller. Matching the Anthropic pattern lets the OpenAI adapter handle the deprecation transparently — first call for an unknown model pays one round-trip to learn; denylisted models pay nothing — so callers can pass `temperature` portably across the model line.
|
|
19
|
+
|
|
20
|
+
## Notes
|
|
21
|
+
|
|
22
|
+
- The denylist regex is forward-compatible: any future `gpt-5.5.*` or o-series variant strips automatically. Other models that newly deprecate the param fall into the runtime-cache path on first 400.
|
|
23
|
+
- Streaming (`executeStreamRequest`) does not retry on temperature errors; it relies on the denylist + warmed runtime cache from prior `operate()` calls. Models not yet in the cache will surface the 400 to the streaming consumer.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 0.8.49
|
|
3
|
+
date: 2026-04-28
|
|
4
|
+
summary: Add release notes for @jaypie/llm 1.2.30 (Anthropic native structured outputs)
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Changes
|
|
8
|
+
|
|
9
|
+
- Added `release-notes/llm/1.2.30.md` covering the Anthropic provider's switch from the `structured_output` fake-tool emulation to Anthropic's native `output_format` structured outputs (with a runtime fallback to the legacy path for unsupported models).
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 0.8.50
|
|
3
|
+
date: 2026-04-29
|
|
4
|
+
summary: Add release notes for @jaypie/llm 1.2.31 (OpenRouter and Gemini native structured outputs)
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Changes
|
|
8
|
+
|
|
9
|
+
- Added `release-notes/llm/1.2.31.md` covering the OpenRouter and Gemini adapters' migration from the `structured_output` fake-tool emulation to native `response_format: json_schema` (OpenRouter) and `responseJsonSchema` + tools (Gemini 3), with a runtime fallback for unsupported models.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 0.8.51
|
|
3
|
+
date: 2026-04-29
|
|
4
|
+
summary: Add release notes for @jaypie/llm 1.2.32 and jaypie 1.2.44 (OpenAI temperature-deprecation handling)
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Changes
|
|
8
|
+
|
|
9
|
+
- Added `release-notes/llm/1.2.32.md` covering the OpenAI adapter's temperature-deprecation strip-and-retry path and the new `temperature` capability in the matrix harness.
|
|
10
|
+
- Added `release-notes/jaypie/1.2.44.md` for the corresponding `jaypie` peer-dep bump to `@jaypie/llm` `^1.2.32`.
|