developer 턴을 role: "system"로 업그레이드하여 Anthropic Messages에 대해 대화-중간 system 메시지 지원 추가supportsMidConversationSystem 추가하여 소비자가 모델별 대화-중간 system 역할 처리를 선택하거나 비활성화할 수 있도록 제공anthropic.claude-opus-4-8 모델 메타데이터 추가(노력 기반 사고를 xhigh를 통해 지원)minimal→low, low→medium, medium→high, high→xhigh, xhigh→max)하여 최고 단계가 진정한 max 수준에 도달하고 high가 Anthropic의 권장 xhigh 코딩/에이전트 기본값에 배치됨. 더 오래된 적응형 모델(Opus 4.6)과 Bedrock Converse는 xhigh가 max로 별칭 처리되는 4단계 레거시 매핑을 유지opencode-go/opencode-zen 모델(Kimi K2.x, DeepSeek V4 Pro/Flash, GLM-5.x, Qwen3.x, MiMo, MiniMax)에서 발생하는 OpenCode Zen 400 thinking is enabled but reasoning_content is missing in assistant tool call message 오류 수정: requiresReasoningContentForToolCalls 재활성화 및 사고 모드의 opencode 요청에 대해 와이어 필드를 reasoning_content로 고정. 정적 호환성 기본값은 여전히 사고 비활성화 턴에서 필드를 생략하여 #1071의 Extra inputs are not permitted 가드를 보존하며, 강제 도구 턴도 기존 disableReasoningOnForcedToolChoice 가드가 와이어 본문에서 사고를 제거하기 때문에 비활성 상태로 유지됨. (#1484)SqlSessionStorage 추가: 세션 JSONL을 PostgreSQL, MySQL/MariaDB 또는 SQLite에 지속하는 bun:sql 기반 SessionStorage 구현. 연결된 Bun.SQL 인스턴스(postgres://, mysql:// 또는 sqlite: URL을 허용하는 생성자)를 SqlSessionStorage.create({ client, table?, adapter?, createTable? })에 전달하고 반환된 저장소를 임의의 SessionManager 팩토리에 전달. 방언은 client.options.adapter에서 자동 감지되며 올바른 DDL 및 upsert-with-append 구문(ON CONFLICT … DO UPDATE는 PG/SQLite, ON DUPLICATE KEY UPDATE는 MySQL)을 선택하므로 에이전트의 append-only 지속 패턴이 행당 단일 왕복으로 작동. Redis 백엔드와 동일한 인-메모리 미러 및 drain() 의미론; blob과 도구 아티팩트는 여전히 ArtifactManager/BlobStore를 통해 디스크에 유지RedisSessionStorage 추가: bun:redis 기반 SessionStorage 인터페이스 구현으로 API 소비자가 세션 JSONL을 로컬 디스크 대신 Redis를 통해 라우팅할 수 있도록 함. 연결된 Bun.RedisClient(또는 호환 가능한 임의의 어댑터)를 RedisSessionStorage.create({ client, prefix? })에 전달하고 반환된 저장소를 SessionManager.create(cwd, sessionDir, storage)(또는 저장소 인수를 허용하는 기타 정적 팩토리)에 전달. 인-메모리 미러가 생성 시 로드되어 인터페이스의 동기 메서드(existsSync, statSync, listFilesSync, …)가 계약을 유지하며, drain()은 대기 중인 백그라운드 쓰기를 기다림. 도구 아티팩트와 이미지 blob은 여전히 ArtifactManager/BlobStore를 통해 디스크에 유지되며, Redis는 구성된 접두사 아래의 세션 JSONL 키 공간만 소유SessionStorage / SessionStorageWriter / FileSessionStorage / MemorySessionStorage 심볼 내보내기(이미 ./session/session-storage 하위 경로를 통해 도달 가능)를 패키지 루트에서 내보내므로 SDK 소비자가 심층 가져오기 없이 대체 저장소 백엔드를 구성할 수 있음write 도구의 성공 텍스트에 새로운 ¶<relative-path>#TAG 스냅샷 헤더를 hashline 디스플레이 모드에 추가(일반 디스크 쓰기, ACP-bridge 쓰기 및 충돌 해결 포함, 대량 해결은 성공적으로 작성된 파일마다 하나의 헤더가 있는 Snapshots: 블록 후행). 헤더는 파일-스냅샷 저장소에 현재 스냅샷을 기록하여 다음 edit이 추가 read 왕복 없이 진행될 수 있도록 함. 세션이 hashline 모드가 아닐 때 억제되며 hashline 앵커가 적용되지 않는 아카이브/SQLite 쓰기 및 호스트 관리 내부 URL 대상에서 건너뜀edit 도구의 오래된-스냅샷 거부 메시지가 이제 "읽기와 편집 사이에 파일이 변경됨"(섹션의 해시가 이 세션에 기록되었지만 파일이 이후 변경됨 — 이전 세션-내 편집이 진행되었거나 외부 쓰기가 변경함)과 "해시 #X는 이 세션의 것이 아님"(조작되었거나 교차-세션 태그에서 전달된 것)을 구분하며, 후자는 명시적 "태그를 절대 조작하지 말 것" 지침 포함. 두 메시지 모두 현재 파일 해시 및 각 앵커 주변 2줄의 컨텍스트를 포함하여 다음 시도가 필요한 모든 것을 가지도록 함. 스냅샷 기반 복구는 여전히 먼저 실행되며, 향상된 진단은 복구가 편집을 조정할 수 없을 때만 나타남low/medium을 제외하는 모델(예: deepseek/deepseek-v4-pro)에서 자율 메모리 1단계/2단계가 Thinking effort low is not supported by <provider>/<model> 오류로 실패하는 문제 수정. packages/coding-agent/src/memories/index.ts의 stage1(Effort.Low)과 통합(Effort.Medium) 호출 위치 모두 이제 clampThinkingLevelForModel을 통해 라우팅하여 requireSupportedEffort가 throw하도록 하지 않고 요청된 노력을 모델의 최저 지원 수준으로 상향 조정 (#1480)MismatchError는 이제 "해시는 인식되었지만 파일 내용이 변경됨"과 "이 경로에 대해 해시가 기록된 적 없음"을 구분. 후자(조작되었거나 이전 세션에서 전달된 가능성 높음)는 명시적 "태그를 절대 조작하지 말 것" 지침이 포함된 전용 hash #X is not from this session 거부 메시지 전송. MismatchDetails 인터페이스는 선택적 hashRecognized?: boolean을 획득(true가 하위 호환성의 기본값); MismatchError는 이를 읽기 전용 필드로 노출하여 호출자가 원인을 기준으로 분기 가능전체 Changelog: v15.5.10...v15.5.11