AgentOptions 및 Agent에 transformAssistantMessage 훅을 추가하여 UI 내보내기, 컨텍스트 추가 또는 도구 디스패치 전에 최종 어시스턴트 메시지를 변경할 수 있도록 함getOpenRouterHeaders 유틸리티 추가text_delta 이벤트)도 모니터링하도록 함. 요청 옵션을 통해 사용자 정의 가능xai-responses 프로바이더를 xAI 특정 추론 노력 제거를 동적으로 처리하는 통합 openai-responses 경로로 교체openai-responses-shared를 openai-shared로 병합하고 현재는 무의미한 openai-responses-shared 재내보내기 심을 제거함. 복제된 세 개의 service_tier 요청 블록과 프로바이더별 와이어 모델 ID 변환을 공유 applyOpenAIServiceTier/applyWireModelIdTransform 헬퍼로 통합. 프로바이더 이름 와이어 특이사항 확인(DeepSeek 특수 토큰 제거, 누적 추론 델타, Ollama 빈 길이 컨텍스트 오류, OpenAI 도구 호출 ID 상한, Fireworks 사고 제거, OpenRouter/OpenAI Responses 요청 필드)을 해결된 호환성 필드로 이동. Responses 스트림 블록별 누적 헬퍼 및 터미널 대기 중인 도구 호출 최종화(finalizePendingResponsesToolCalls)와 toolUse/일시 중지 중지 이유 승격(promoteResponsesToolUseStopReason)을 processResponsesStream 및 Codex 스트림 핸들러 간에 공유. 중복된 getOpenAIResponsesCacheSessionId 별칭을 getOpenAIResponsesPromptCacheKey로 제거resolveOpenAIOutputTokenParam(출력 토큰 필드 선택, OpenRouter 기본값 상한 생략, alwaysSendMaxTokens 기본값 설정, 모델/프로바이더 범위), applyOpenAIGatewayRouting(OpenRouter provider + Vercel AI Gateway providerOptions), 및 applyOpenAIExtraBody(추가 본문 병합 + Fireworks 사고 제거) 헬퍼로 중앙화. Chat Completions 및 Responses buildParams 둘 다에서 사용됨. Chat Completions 추론/사고 언어 형식 디스패치(applyChatCompletionsReasoningParams + disableChatCompletionsReasoningForDialect)와 OpenAICompletionsParams 요청 타입을 openai-shared로 이동. 일관성 결과로, 직접 streamOpenAIResponses 호출(streamSimple 우회)은 이제 호출자 상한 없이도 alwaysSendMaxTokens(Kimi 계열) 모델에 대해 max_output_tokens을 내보냄. Chat Completions 및 streamSimple이 이미 제공한 값과 일치함resolveOpenAICompatPolicy뒤에 중앙화. 공유 정책은 이제 도구 선택 추론 억제, 언어 형식 특정 비활성화 인코딩, 추론 이력 재생 필터, 암호화된 추론 포함, Mistral/OpenAI 도구 호출 ID 모드, 스트림 치유/DeepSeek 토큰 제거, xAI/OpenRouter 캐시 친화성 배선을 주도함. 엔드포인트 로컬 프로바이더/모델 확인 대신 사용됨"openai" 모델에 대해 계산된 비용에 표준 서비스 계층 가격 책정 승수(flex 0.5×, priority 2×)를 제공(또는 요청된) 서비스 계층 기반으로 적용하도록 함requiresReasoningContentForAllAssistantTurns 호환성 플래그를 사용하도록 함. OpenRouter DeepSeek 및 OpenCode 모델에서 도구 호출이 아닌 턴에 불필요한 추론 재생 방지streamOpenAIAnthropicShim)을 수정하여 호출자가 제공한 toolChoice, serviceTier 및 disableReasoning 옵션을 올바르게 전달하도록 함supportsToolChoice가 false일 때 tool_choice를 삭제하고, supportsForcedToolChoice가 false일 때 강제 선택을 "auto"로 다운그레이드하도록 함context.tools가 비어있을 때 tool_choice: "none"을 내보내지 않도록 함reasoning: { enabled: false }를 보내는 대신 OpenRouter reasoning 객체를 생략하도록 함. 일반 OpenRouter 명시적 비활성화 동작을 보존하면서 Kimi의 강제 도구 추론 충돌 방지projectId를 project_id보다 우선하도록 올바르게 우선 순위를 지정하고 문자열이 아닌 값을 정상적으로 삭제하도록 함disableReasoningOnToolChoice / disableReasoningOnForcedToolChoice)를 수정하여 공유 disableChatCompletionsReasoningForDialect 헬퍼를 통해 모든 언어 형식에서 사고를 대칭적으로 해제하도록 함. 이전에는 충돌 경로가 reasoning_effort/reasoning만 삭제하고 강제 분기에서만 Z.AI thinking: { type: "disabled" }를 설정했음. Qwen enable_thinking, Qwen 채팅 템플릿 chat_template_kwargs.enable_thinking 및 OpenRouter 중첩 reasoning이 활성화된 상태로 남아있었음. 따라서 이러한 호스트는 강제/필수 도구 선택 하에서 사고를 계속할 수 있었고 정책이 보호하는 호환성 불일치를 다시 트리거할 수 있었음. 이제 OpenRouter는 { reasoning: { enabled: false } } 설정됨(삭제하지 않음. OpenRouter는 이를 기본값 온으로 취급함)sessionId에서 session_id를 보내도록 함previous_response_id 재시도가 store: true를 유지하도록 함. 완전한 컨텍스트 재시도는 다음 턴에서 체이닝 가능하게 유지되고 연속 오래된 실패 서킷 브레이커는 교대 콜드 턴 대신 구성된 제한 이후에 트립됨. Zero Data Retention 거부는 여전히 첫 번째 타격에서 체이닝을 비활성화함anyOf/allOf 및 모든 oneOf 제약을 MCP 도구 input_schema에서 프로바이더가 거부한 키워드를 전달하는 대신 설명으로 강등하도록 함xhigh를 네이티브 사고 "max"로 매핑하도록 함(#2911, @serverinspector에 의함)model.api 대신 하드코딩된 openai-responses API로 태그를 지정하도록 함. 이전에는 네이티브 이력 재생(buildResponsesInput)과 후속 OpenRouter 턴에서의 교차 모델 도구 호출 항목 ID 제거를 자동으로 비활성화함. 이제 메시지는 model.api를 전달함(Chat Completions 경로와 일치)errorMessage를 성공적인 턴으로 유출하지 않도록 함. OpenRouter Anthropic 컴파일된 문법 엄격한 도구 폴백은 엄격한 도구가 비활성화된 상태에서 재시도하기 전에 errorMessage를 설정했고 성공 시 이를 지우지 않았음. Chat Completions 성공 경로는 내부적으로 재시도된 시도에서 errorMessage를 전달할 수 있었음. 둘 다 성공적인 턴을 에이전트 상태 및 원격 측정에서 오류로 읽히게 함. Responses 폴백은 더 이상 errorMessage를 할당하지 않으며, Completions 성공 경로는 터미널 done 이벤트를 내보내기 전에 이를 지움.code 해결을 수정하여 isRetryableCodexFailureEvent 및 형식화된 메시지와 동일한 중첩 우선 순위(error.code → error.type → 최상위 code)를 사용하도록 함. 이전에는 오류 팩토리가 최상위부터 해결했으므로 최상위 및 다른 중첩 오류 코드를 모두 전달하는 실패 이벤트는 자신의 retryable 플래그 및 메시지 텍스트와 다를 수 있는 .code를 드러냄openrouter API 타입 및 ResolvedOpenRouterCompat 구성 추가openai-completions에서 새로운 openrouter API 타입으로 마이그레이션ResolvedOpenAICompat 및 ResolvedOpenAIResponsesCompat 모두 확장하는 공유 ResolvedOpenAISharedCompat 코어 추출(각 빌더는 여전히 자체 표면별 값을 계산하여 Chat↔Responses 차이 보존). 내부 해결된 와이어 특이사항 필드(wireModelIdMode, stripDeepseekSpecialTokens, reasoningDeltasMayBeCumulative, emptyLengthFinishIsContextError, usesOpenAIToolCallIdLimit, dropThinkingWhenReasoningEffort, supportsObfuscationOptOut) 추가. 새로운 Responses 전용 필드가 처리 없이 추가되면 컴파일 실패하는 철저한 pickResponsesOnly 구성으로 buildOpenRouterCompat의 캐스트 및 복사 교체. 공용 OpenAICompat 구성 어휘는 변경되지 않음OpenAICompat/ResolvedOpenAISharedCompat을 공유 추론/이력/스트림/요청 플래그(reasoningDisableMode, omitReasoningEffort, includeEncryptedReasoning, filterReasoningHistory, requiresReasoningContentForAllAssistantTurns, streamMarkupHealingPattern, promptCacheSessionHeader 등)로 확장. 모델/프로바이더/게이트웨이 제약이 카탈로그 호환성에서 한 번 선언된 후 Chat Completions 및 Responses 엔드포인트에서 균일하게 사용됨openai-completions에 대한 기본 호환성 빌더를 수정하여 requiresAssistantAfterToolResult를 isMistral로 설정하도록 함. 내장 Mistral 및 Devstral 모델에 대해 합성 어시스턴트 브릿지를 활성화provider: "ollama") 추론 턴이 여전히 HTTP 400 invalid reasoning value: "minimal"에서 실패하는 것을 수정함. 모델이 오래된 ~/.omp/models.db 캐시 행 또는 수동으로 작성된 구성에서 선택되었을 때: minimal → low / xhigh → max 재매핑은 신선한 발견 중에만 도장이 찍혔으므로 캐시되고 사용자 정의 사양이 미매핑된 상태로 와이어에 도달함. 이제 재매핑은 OpenAI Chat Completions 및 Responses 호환성 빌더에서 진행되므로 모든 buildModel(캐시 로드, 사용자 정의 사양 및 whenThinking 변형 포함)이 이를 역채움. omp models refresh 불필요xhigh를 네이티브 최대 노력으로 매핑함(#2911, @serverinspector에 의함)xai-oauth Responses 모델 사양(grok-build 등)을 수정하여 reasoning.effort을 내보내고 xAI의 HTTP 400을 적중하지 않도록 함. buildOpenAIResponsesCompat은 이제 노력 가능 허용 목록(grok-3-mini/grok-4.20-multi-agent/grok-4.3)에 없는 xai-oauth Grok 모델에 대해 supportsReasoningEffort를 기본값 false로 설정함. 큐레이션된 발견 경로와 일치. 명시적 compat.supportsReasoningEffort는 여전히 재정의함. 허용 목록이 호환성 빌더 및 프로바이더 모델 큐레이션에서 모두 사용되는 공유 isGrokReasoningEffortCapable 식별 헬퍼로 이동하여 둘이 차이나지 않도록 함model.loopGuard.enabled(기본값 true) 및 model.loopGuard.checkAssistantContent(기본값 true) 설정 추가PI_PERPLEXITY_RESPONSES=1 환경 변수를 통해 Perplexity Responses API(/v1/responses) 스트리밍 지원 추가omp ttsr 최상위 CLI 명령 추가omp ttsr list 추가--file <path> 또는 --file -를 통한 stdin으로 실제 TTSR 매칭 파이프라인을 통해 코드 조각을 실행하는 omp ttsr test 추가omp ttsr test 및 omp ttsr list에 --json 출력 추가하여 기계 판독 가능 보고 지원omp ttsr test에 --rule, --source, --tool, --path 및 --verbose 옵션을 추가하여 매칭 컨텍스트 및 검사 세부 정보 제어omp ttsr 서브명령 추가: omp ttsr list는 현재 프로젝트/사용자 구성이 로드할 모든 TTSR 등록 규칙을 표시하고, omp ttsr test는 코드 조각(인라인, --file 또는 stdin)을 실제 TTSR 매칭 파이프라인(TtsrManager.checkSnapshot/checkAstSnapshot)을 통해 피드하고 어떤 규칙이 트리거될 것인지 보고함. 파일로 해석되는 위치 인수는 기본적으로 도구/편집 컨텍스트. --source, --tool 및 --path는 추론된 매칭 컨텍스트를 재정의하여 글롭/AST/스코프 범위 규칙이 라이브 세션과 동일한 방식으로 평가되도록 함. --rule은 단독으로 단일 규칙 마크다운 파일을 테스트함read <pdf>:<image>.png를 통해 임베드된 PDF 이미지 읽기 및 read <pdf>:로 사용 가능한 이미지 멤버 나열 지원 추가(x as { y: T }).y, ?. 및 대괄호 접근 포함) 중단하는 내장 ts-no-inline-cast-access TTSR 규칙 추가. 스키마 검증, in/typeof 좁히기 또는 검증된 명명된 타입으로 방향 전환startup.showSplash(기본값 false) 추가. startup.quiet은 여전히 시작 요소를 억제함. (#2880)분량 관계로 이후 내용은 번역에서 제외했습니다. 전체 내용은 위 원문 링크에서 확인하세요.