@jaypie/mcp 0.8.80 → 0.8.81
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.
|
@@ -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.81#90b85696"
|
|
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,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.3.3
|
|
3
|
+
date: 2026-06-22
|
|
4
|
+
summary: operate() reconciles structured-output keys against the declared format contract
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Fixes
|
|
8
|
+
|
|
9
|
+
- `operate()` no longer surfaces structured-output keys wrapped in literal
|
|
10
|
+
double quotes (e.g. `"Merchant Request"` as a key), which made those fields
|
|
11
|
+
unreachable by their declared name (#393).
|
|
12
|
+
- Root cause is provider-side, in Gemini's fallback path — **not** OpenAI,
|
|
13
|
+
despite the original report. When `format` is combined with `tools` on a model
|
|
14
|
+
that does not support Gemini's native `responseJsonSchema` + tools combo
|
|
15
|
+
(observed on `gemini-3.5-flash`), `GoogleAdapter` falls back to the legacy
|
|
16
|
+
`structured_output` fake-tool emulation. That path is a system-prompt nudge,
|
|
17
|
+
**not** grammar-constrained generation, so the model fills the synthetic
|
|
18
|
+
tool's arguments freely — wrapping multi-word property names in quotes and
|
|
19
|
+
omitting empty arrays. The corrupted `functionCall.args` then reach the caller
|
|
20
|
+
verbatim. (Single-word keys such as `Confidence` are unaffected, matching the
|
|
21
|
+
report.)
|
|
22
|
+
|
|
23
|
+
## Changes
|
|
24
|
+
|
|
25
|
+
- New util `repairFormatKeys` walks the declared `format` contract and renames
|
|
26
|
+
any returned key whose de-quoted form matches a declared key. Wired into
|
|
27
|
+
`OperateLoop` ahead of `fillFormatArrays` (repair keys → backfill arrays), so
|
|
28
|
+
any unconstrained provider path is reconciled back to the declared shape.
|
|
29
|
+
Verified against the exact production payload: corrupted keys → exact match.
|
|
30
|
+
- `OpenAiAdapter.formatOutputSchema` now strips zod v4's draft-2020-12 `$schema`
|
|
31
|
+
keyword and the non-enumerable `~standard` marker before sending, matching the
|
|
32
|
+
OpenRouter and Anthropic adapters. This is schema hygiene — empirically it does
|
|
33
|
+
**not** affect OpenAI strict enforcement (verified clean across gpt-5.4,
|
|
34
|
+
gpt-5.4-mini, gpt-5.4-nano, gpt-5.5, gpt-4o, gpt-4o-mini, gpt-4.1-mini, with
|
|
35
|
+
and without `$schema`) — and is unrelated to #393's Gemini root cause.
|
|
36
|
+
- Added `test/format.ts`, a real-API smoke test exercising mixed single/multi-
|
|
37
|
+
word `format` keys with declared arrays. Verified green across openai,
|
|
38
|
+
anthropic, google, openrouter, and xai.
|
|
39
|
+
|
|
40
|
+
## Migration
|
|
41
|
+
|
|
42
|
+
No changes required. Consumers that defensively de-quoted corrupted keys or
|
|
43
|
+
normalized missing array fields can drop those workarounds.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 0.8.81
|
|
3
|
+
date: 2026-06-22
|
|
4
|
+
summary: Publish @jaypie/llm 1.3.3 release notes
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Changes
|
|
8
|
+
|
|
9
|
+
- Added release notes for `@jaypie/llm@1.3.3` (multi-word `format` key fidelity
|
|
10
|
+
in `operate()`; see issue #393).
|
|
11
|
+
|
|
12
|
+
No runtime behavior changes.
|