reasoning_content 델타에 대해 delta.content가 명시적으로 JSON null인 경우에도 openai-completions가 thinking 블록을 방출하는 회귀 테스트 고정을 추가했습니다(커스텀 GLM/Qwen 추론 제공자에서 사용되는 DeepSeek 형식 이중 키 패턴). #2996을 참고하세요.SqliteAuthCredentialStore.close()가 #authCredentialsTableExists, #readAuthSchemaVersion, #inferAuthSchemaVersion, #migrateAuthSchemaV0ToV1, #backfillCredentialIdentityKeys, updateAuthCredential의 인라인 this.#db.prepare() 호출로 생성된 일회용 준비 구문을 누출하는 문제를 수정했습니다. 각 구문은 이제 stmt.finalize()와 함께 try/finally로 래핑되며, close() 메서드는 이전에 누락되었던 #insertUsageCostStmt와 #listUsageCostsStmt를 종료합니다. 이로 인해 테스트가 열린 SQLite 핸들을 포함하는 임시 디렉토리를 삭제하려 할 때 Windows에서 EBUSY가 발생했습니다.num_predict 값이 실제 출력 상한을 발견할 수 없는 모델의 HTTP 400을 유발하는 것을 방지합니다. (#2984)dbPath가 제공될 때도 readModelCache/writeModelCache가 프로세스 전역 공유 데이터베이스를 사용하는 문제를 수정했습니다. 커스텀 경로 캐시 작업은 이제 withModelCacheDb를 통해 호출당 데이터베이스를 열고 닫아 Windows에서 누출된 SQLite 핸들을 방지합니다token 명령을 업데이트하여 활성 Perplexity OAuth 토큰이 있을 때 올바르게 표시하도록 했습니다omitMaxOutputTokens 정책을 유지했으므로, 오래된 models.db 항목이 컨텍스트 윈도우 크기의 num_predict 값을 다시 활성화할 수 없습니다. (#2984)provider.appendOnlyContext: auto가 DeepSeek과 Xiaomi만 접두사 캐시 제공자로 인식했기 때문에 매 턴마다 전체 프롬프트를 재처리하는 문제를 수정했습니다. 이제 자동 감지는 ollama, ollama-cloud, lm-studio, llama.cpp 및 loopback/RFC1918/.local 호스트로 확인되는 모든 baseUrl에 대해 추가 전용 모드를 활성화하므로, 시스템 프롬프트 + 도구 카탈로그 + 이전 턴 메시지 바이트가 턴 간에 바이트 안정적으로 유지되고 llama.cpp의 KV 캐시 접두사 재사용이 작동할 수 있습니다. (#3033)Bun.spawn 서브프로세스로 격리했으므로 onnxruntime-node와 fastembed가 메인 에이전트 프로세스로 로드되지 않습니다. 이전에는 memory.backend: mnemopi가 Bun을 Windows에서 충돌시켰습니다. 독립 실행형 바이너리는 세션 시작 시 NAPI process.dlopen 생성자에서 실패했고, npm 설치는 프로세스 해제 시 NAPI 종료자에서 실패했습니다. #1607의 소형 모델 격리 패턴을 미러링합니다. 부모는 dispose 시 자식에게 SIGKILL을 보내므로 종료자가 두 주소 공간 중 하나에서도 실행되지 않습니다. (#3031)google-antigravity OAuth 상태가 더 이상 generate_image를 호출하지 않는 세션을 차단하지 않습니다. (#3036)window/showMessageRequest, window/showDocument, workspace/{semanticTokens,inlayHint,codeLens,codeAction,diagnostic}/refresh)에 대해 -32601 Method not found를 반환하는 문제를 수정했습니다. 실제 응답을 기다리며 정지하는 서버(#3029와 동일한 실패 모드)는 이제 스펙 no-op 결과를 수신합니다. (#3044)local-server 비전 모델에 변경되지 않은 채로 전송되는 문제를 수정했습니다. 이는 WebP를 지원하지 않는 llama.cpp/STB 기반 디코더를 통해 실패할 수 있습니다. (#2922)getSettingsListTheme, getEditorTheme, getSelectListTheme, getSymbolTheme이 전역 theme이 정의되지 않았을 때(예: 플러그인이 initTheme() 완료 전에 호출하거나 npm 전역 설치 시 별도 모듈 인스턴스에서 호출할 때) "undefined is not an object (evaluating 'theme.fg')"로 충돌하는 대신 순수 ASCII 폴백을 반환하도록 했습니다. (#2998)send() 경로를 비동기 EPIPE 거부에 대해 강화했습니다. Subprocess.send()는 이제 래핑되어 동기식 "process exited" throw나 비동기 EPIPE 거부(파이프가 종료 관찰 후 다음 send 사이에 끊길 때)가 치명적인 처리되지 않은 거부로 탈출할 수 없습니다. 죽어가는 Kokoro/TTS/STT 워커는 더 이상 전체 에이전트 세션을 작업 중간에 충돌시킬 수 없습니다. (#2997)pathToFileURL, path.resolve, path.join을 사용합니다. shortenPath()는 ~ 후 백슬래시를 정방향 슬래시로 정규화하고 홈 디렉토리 경계를 존중합니다. bash 도구 테스트의 셸 이스케이프된 보간 경로로 Git Bash가 백슬래시를 처리하지 않도록 방지했습니다.HistoryStorage.resetInstance()가 Windows에서 SQLite 데이터베이스 핸들을 누출하는 문제를 수정했습니다. 모든 준비된 구문을 종료하고 데이터베이스를 닫는 #close() 메서드를 추가했습니다. AgentStorage도 동일한 resetInstance()/#close() 패턴을 가지게 되었습니다.createAgentSession이 세션 구성이 세션이 소유권을 가지기 전에 실패할 때 내부적으로 생성된 AuthStorage를 누출하는 문제를 수정했습니다. 이로 인해 Windows 임시 디렉토리 정리에서 EBUSY가 발생했습니다.MnemopiBackend.removeDbFiles()가 Windows에서 예외를 던지는 문제를 수정했습니다. 이제 진정한 최선 시도이며 실패를 조용히 무시하지 않고 기록합니다.fs.rmSync/fs.rm 정리를 재시도하는 TempDir로 바꾸고 SQLite 핸들이 테스트를 초과할 수 있는 곳에 최선 시도 .catch(() => {})를 사용하여 Windows EBUSY 테스트 실패를 수정했습니다.TempDir 접두사 규칙을 수정했습니다. @ 이외의 접두사는 os.tmpdir()이 아닌 cwd를 기준으로 임시 디렉토리를 생성하여 Windows에서 모듈 확인 실패를 유발했습니다.core.autocrlf false를 설정하여 autoresearch 테스트의 git 줄 끝 불일치를 수정했습니다.enabledModels, SDK, ACP를 통해 모델을 스코핑할 때 Bedrock 추론 프로필 ARN 모델이 허용 모델 집합에서 제거되는 문제를 수정했으므로, 수락된 ARN이 더 이상 빈 선택으로 확인되지 않습니다. (#3006)onnxruntime-node의 NAPI 생성자 + 종료자를 자신의 주소 공간에서 유지할 수 있도록 setLocalModelInitializer(및 LocalEmbeddingModel, LocalModelInitializer, LocalModelInitOptions, StandardEmbeddingModel 타입)를 노출했습니다. 기존 setLocalModelInitializerForTests 시나와 동일한 초기화 의미입니다. 에이전트 CLI는 memory.backend: mnemopi이 활성화될 때 Windows에서 충돌 방지를 위해 이를 사용합니다. (#3031)MNEMOPI_LLM_BASE_URL이 설정되지 않았을 때 백그라운드 사실 추출이 런타임 구성 원격 LLM 엔드포인트를 건너뛰는 문제를 수정했으므로, remember(..., { extract: true })는 이제 정규식 휴리스틱으로 대체되지 않고 mnemopi.llm 구성에서 원격 증류 사실을 저장합니다. (#3041)fastembed@2.1.0이 1.26.0을 강제하는 대신 일치하는 onnxruntime-node@1.21.0 네이티브 런타임을 설치하도록 허용하고, 오래된 fastembed 아카이브에 토크나이저 사이드카가 없을 때 업스트림 Hugging Face 모델 캐시에서 누락된 토크나이저 사이드카를 복구하여 수정했습니다. (#3054)send()의 EPIPE 거부(syscall: "send")를 치명적이지 않은 것으로 만들었습니다. 전역 unhandledRejection 핸들러는 선택적 하위 시스템의 파이프가 끊길 때 세션을 종료하는 대신 이제 로그하고 계속합니다. 끊어진 선택적 하위 시스템(TTS/STT/tiny-title/MCP)은 더 이상 전체 에이전트 세션을 작업 중간에 충돌시킬 수 없습니다. (#2997)전체 변경사항: v16.1.2...v16.1.3