jeopi-ai 16.2.25 → 16.2.26
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/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [16.2.26] - 2026-07-05
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- `renderDemotedThinking`'s classifier-safe markdown-italic prose form (avoids Anthropic's `reasoning_extraction` refusal when replaying a prior turn's unsigned reasoning as plaintext) was keyed off a hand-rolled `claude-fable`-only regex, missing `claude-mythos-5` — a real first-party Anthropic model the rest of the catalog already treats as classifier-equivalent to Fable (`isAnthropicFableOrMythosModel`). Unsigned Mythos thinking replayed cross-model/branch-handoff was demoted to a raw `<thinking>...</thinking>` text block instead, which can trip the same reasoning-extraction classifier Fable's carve-out exists to avoid. Now uses the canonical `isAnthropicFableOrMythosModel` classifier for both.
|
|
10
|
+
|
|
5
11
|
## [16.2.25] - 2026-07-05
|
|
6
12
|
|
|
7
13
|
### Added
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
* replayed unsigned `thought` part is schema-accepted but silently discarded —
|
|
6
6
|
* neither recalled nor influencing generation).
|
|
7
7
|
*
|
|
8
|
-
* Fable
|
|
8
|
+
* Fable/Mythos are the exception: replaying prior reasoning inside `<thinking>` /
|
|
9
9
|
* `antml:thinking`-style assistant text is treated as a reasoning-extraction
|
|
10
|
-
* attempt and can train the next turn to leak thoughts, so Fable
|
|
11
|
-
* reasoning as markdown-italic assistant prose instead. Harmony and Gemma are
|
|
10
|
+
* attempt and can train the next turn to leak thoughts, so Fable/Mythos receive
|
|
11
|
+
* the reasoning as markdown-italic assistant prose instead. Harmony and Gemma are
|
|
12
12
|
* also exceptions: their `renderThinking` emits chat-template control tokens
|
|
13
13
|
* (`<|channel|>analysis`, `<|channel>thought`) that must not appear inside a
|
|
14
14
|
* structured native message, so they fall back to a plain `<think>` block. Every
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "jeopi-ai",
|
|
4
|
-
"version": "16.2.
|
|
4
|
+
"version": "16.2.26",
|
|
5
5
|
"description": "Unified LLM API with automatic model discovery and provider configuration",
|
|
6
6
|
"homepage": "https://github.com/akillness/jeopi",
|
|
7
7
|
"author": "Can Boluk",
|
|
@@ -38,9 +38,9 @@
|
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@bufbuild/protobuf": "^2.12.0",
|
|
41
|
-
"jeopi-catalog": "16.2.
|
|
42
|
-
"jeopi-utils": "16.2.
|
|
43
|
-
"jeopi-wire": "16.2.
|
|
41
|
+
"jeopi-catalog": "16.2.26",
|
|
42
|
+
"jeopi-utils": "16.2.26",
|
|
43
|
+
"jeopi-wire": "16.2.26",
|
|
44
44
|
"arktype": "^2.2.0",
|
|
45
45
|
"zod": "^4"
|
|
46
46
|
},
|
package/src/dialect/demotion.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isAnthropicFableOrMythosModel, preferredDialect } from "jeopi-catalog/identity";
|
|
2
2
|
import { getDialectDefinition } from "./factory";
|
|
3
3
|
|
|
4
|
-
const CLAUDE_FABLE_ID = /(?:^|[./])claude[-.]fable(?:[-.]|$)/i;
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* Wrap a prior-turn reasoning string for demotion into native conversation
|
|
8
6
|
* history — the cross-provider / cross-model case where the target cannot replay
|
|
@@ -10,10 +8,10 @@ const CLAUDE_FABLE_ID = /(?:^|[./])claude[-.]fable(?:[-.]|$)/i;
|
|
|
10
8
|
* replayed unsigned `thought` part is schema-accepted but silently discarded —
|
|
11
9
|
* neither recalled nor influencing generation).
|
|
12
10
|
*
|
|
13
|
-
* Fable
|
|
11
|
+
* Fable/Mythos are the exception: replaying prior reasoning inside `<thinking>` /
|
|
14
12
|
* `antml:thinking`-style assistant text is treated as a reasoning-extraction
|
|
15
|
-
* attempt and can train the next turn to leak thoughts, so Fable
|
|
16
|
-
* reasoning as markdown-italic assistant prose instead. Harmony and Gemma are
|
|
13
|
+
* attempt and can train the next turn to leak thoughts, so Fable/Mythos receive
|
|
14
|
+
* the reasoning as markdown-italic assistant prose instead. Harmony and Gemma are
|
|
17
15
|
* also exceptions: their `renderThinking` emits chat-template control tokens
|
|
18
16
|
* (`<|channel|>analysis`, `<|channel>thought`) that must not appear inside a
|
|
19
17
|
* structured native message, so they fall back to a plain `<think>` block. Every
|
|
@@ -28,9 +26,8 @@ const CLAUDE_FABLE_ID = /(?:^|[./])claude[-.]fable(?:[-.]|$)/i;
|
|
|
28
26
|
export function renderDemotedThinking(modelId: string, text: string): string {
|
|
29
27
|
if (!text) return "";
|
|
30
28
|
text = text.toWellFormed();
|
|
31
|
-
const canonicalId = bareModelId(modelId);
|
|
32
29
|
const dialect = preferredDialect(modelId);
|
|
33
|
-
if (
|
|
30
|
+
if (isAnthropicFableOrMythosModel(modelId)) return `_Hmm. ${text}_\n`;
|
|
34
31
|
if (dialect === "harmony" || dialect === "gemma") return `<think>\n${text}\n</think>\n`;
|
|
35
32
|
return `${getDialectDefinition(dialect).renderThinking(text)}\n`;
|
|
36
33
|
}
|