Repository navigation
fix(memory): merge memory into top-level system field when present - #13549
Closed
KooshaPari wants to merge 1 commit into
Closed
KooshaPari wants to merge 1 commit into
KooshaPari wants to merge 1 commit into
Conversation
…ixes cheaper-inference#13425) When memory injection is enabled and the body has a top-level 'system' field (Anthropic-shaped requests), injectSystemFirst() unshifted a new {role:'system'} at messages[0]. Anthropic rejects this with 400: 'use the top-level system parameter for the initial system prompt'. - Check request.system before inspecting messages[0] - Merge memory text into the top-level system field when present - Fall back to the existing messages-based strategy otherwise
Collaborator
diegosouzapw
pushed a commit
that referenced
this pull request
Sep 15, 2026
…ifting at messages[0] (#13425) (#13427) Memory injection merges into an Anthropic-shaped top-level `system` field (string or text-block array) instead of prepending a `role: "system"` message at `messages[0]`, which Anthropic rejects with a 400 (#13425). Handled on both the system-first path (xiaomi-mimo) and the general path. Chosen over #13549, which covered only the string case. Maintainer fix: widened `ChatRequest.system` to `string | Array<{ type; text?; … }>`. Assigning the block array to the `string`-typed field raised 2× TS2322 under `check:open-sse-typecheck`. Validated in one consolidated batch of this series (37 PRs boarded together on `release/v3.8.51`): `typecheck:core`, `check:open-sse-typecheck` and `check:dashboard-typecheck` clean; ESLint clean on every changed file; file-size, complexity, cognitive-complexity, changelog-integrity, docs-counts, docs-sync and migration-numbering gates green (only the pre-existing `open-sse/utils/stream.ts` file-size red remains, inherited from the base); 3,743 focused `node:test` cases plus 34 vitest cases green. Thanks @KooshaPari!
muhamadgalihsaputra
pushed a commit
to niyatna/NiyatnaRoute
that referenced
this pull request
Sep 27, 2026
…ifting at messages[0] (cheaper-inference#13425) (cheaper-inference#13427) Memory injection merges into an Anthropic-shaped top-level `system` field (string or text-block array) instead of prepending a `role: "system"` message at `messages[0]`, which Anthropic rejects with a 400 (cheaper-inference#13425). Handled on both the system-first path (xiaomi-mimo) and the general path. Chosen over cheaper-inference#13549, which covered only the string case. Maintainer fix: widened `ChatRequest.system` to `string | Array<{ type; text?; … }>`. Assigning the block array to the `string`-typed field raised 2× TS2322 under `check:open-sse-typecheck`. Validated in one consolidated batch of this series (37 PRs boarded together on `release/v3.8.51`): `typecheck:core`, `check:open-sse-typecheck` and `check:dashboard-typecheck` clean; ESLint clean on every changed file; file-size, complexity, cognitive-complexity, changelog-integrity, docs-counts, docs-sync and migration-numbering gates green (only the pre-existing `open-sse/utils/stream.ts` file-size red remains, inherited from the base); 3,743 focused `node:test` cases plus 34 vitest cases green. Thanks @KooshaPari!
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #13425
Problem
When memory injection is enabled and the body has a top-level
systemfield (Anthropic-shaped requests),injectSystemFirst()unshifted a new{role:'system'}atmessages[0]. Anthropic rejects this with 400:use the top-level 'system' parameter for the initial system prompt.Fix
Check
request.systembefore inspectingmessages[0]. When a top-levelsystemfield is present (string), merge memory text into it. Fall back to the existing messages-based strategy otherwise.Changes
src/lib/memory/injection.ts: Added top-levelsystemfield check ininjectSystemFirst()