A/B test (2026-05-05) showed DeepSeek V4-Pro is 2-3x faster and ~20x cheaper than Sonnet for style/lexicon pattern analysis, with comparable quality. Adds adapters/deepseek-paperclip-adapter/ package, documents adapter requirements (env injection, run-id headers), updates CLAUDE.md with adapter integration notes, and records lessons from ערר 1200-25 (block order for 1xxx, "להלן מתוך" pattern, expanded factual background, bridge planning analysis, flat heading structure). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
30 lines
957 B
JavaScript
30 lines
957 B
JavaScript
/**
|
|
* Session codec — Hermes uses a single sessionId for cross-heartbeat continuity
|
|
* via the --resume CLI flag. Same shape as the Hermes adapter.
|
|
*/
|
|
|
|
function readNonEmptyString(value) {
|
|
return typeof value === "string" && value.trim().length > 0 ? value.trim() : null;
|
|
}
|
|
|
|
export const sessionCodec = {
|
|
deserialize(raw) {
|
|
if (typeof raw !== "object" || raw === null || Array.isArray(raw)) return null;
|
|
const sessionId =
|
|
readNonEmptyString(raw.sessionId) ?? readNonEmptyString(raw.session_id);
|
|
if (!sessionId) return null;
|
|
return { sessionId };
|
|
},
|
|
serialize(params) {
|
|
if (!params) return null;
|
|
const sessionId =
|
|
readNonEmptyString(params.sessionId) ?? readNonEmptyString(params.session_id);
|
|
if (!sessionId) return null;
|
|
return { sessionId };
|
|
},
|
|
getDisplayId(params) {
|
|
if (!params) return null;
|
|
return readNonEmptyString(params.sessionId) ?? readNonEmptyString(params.session_id);
|
|
},
|
|
};
|