/login 프로바이더가 같은 프로바이더에 대해 새 키를 추가하는 대신 형제 자격증명을 대체하는 문제를 수정했습니다. (#3265)insufficient_quota를 처리하도록 수정했습니다. 이제 콘텐츠 전 실패는 고갈된 자격증명만 일시적으로 차단하고 정상적인 형제를 재시도합니다. 429 상태 전용 폴백은 바디가 없거나 불명확한 경우에만 적용되며, 정보성 있는 일시적 바디(Too many requests, Service overloaded 529, Please retry in 5s 등)는 parseRateLimitReason으로 defer되어 형제 자격증명을 소모하는 대신 프로바이더의 자체 백오프 레이어에 남아있습니다. (#3231)/share가 암호화된 세션 blob을 업로드하는 위치를 제어하는 share.store 설정(blob "암호화된 Blob" | gist "GitHub Gist", 기본값 blob)을 추가했습니다. 공유 서버(blob) 또는 공유 서버 폴백이 있는 비공개 GitHub gist(gist)에 업로드합니다./share가 기본적으로 암호화된 세션 blob을 비공개 GitHub gist 대신 공유 서버로 업로드하도록 변경했습니다. Gist 호스팅 공유는 뷰어의 브라우저에서 인증되지 않은 GitHub gist API를 통해 가져오므로, GitHub는 IP당 시간당 60개 요청으로 속도를 제한하여 공유된 NAT와 반복적인 다시 로드로 인해 뷰어에서 Failed to load session: Gist fetch failed: HTTP 403이 표시됩니다. share.store: "gist"로 gist 호스팅을 다시 선택할 수 있습니다.:async:) bash 턴 내에서 시작된 nohup/& 백그라운드 프로세스가 해당 턴의 셸이 종료될 때 종료되는 문제를 수정했습니다. 이제 백그라운드 프로세스가 실행 중인 동안 작업별 셸이 유지되고(종료되면 수집됨), 백그라운드된 명령은 여전히 harness 프로세스와 함께 종료되면서 턴 전체에서 생존합니다.openai-completions 프로바이더 세션 상태가 다양한 프로바이더 또는 기본 URL 전체에서 /model 스위치를 통해 생존하는 문제를 수정했습니다. AgentSession.#closeProviderSessionsForModelSwitch는 openai-codex-responses와 openai-responses:<provider> 키만 제거했으며, openai-completions:<provider>:<resolvedBaseUrl>:<modelId>로 키가 지정된 항목(캐시된 strict-tools 비활성화 범위 및 이전 전송에 대한 reasoning-effort 폴백)은 무기한 유지됩니다. 이제 openai-completions 백엔드에서 벗어나면 이전 프로바이더의 모든 캐시된 항목이 제거되며, 기본 URL이 카탈로그에서 읽은 것이 아니라 요청 시간에 해석된 항목도 포함됩니다. 같은 백엔드 모델 토글은 캐시된 상태를 유지합니다. (#3260)npx/yarn/pnpm 스타일 shim을 찾을 수 없을 때 Windows에서 실패하는 문제를 수정했습니다(제한된 부모 프로세스 하에서 빈 Bun.env.PATH, fs.access를 거부하는 UNC 마운트, 잠긴 셸). resolveStdioSpawnCommand는 베어 명령명으로 폴백되었으며, Bun.spawn → CreateProcess는 이를 <name>.exe로만 확인할 수 있습니다. .cmd/.bat는 안 되므로 npx -y …는 생성 약 140ms 후에 ENOENT/EINVAL로 종료됩니다. Windows 리졸버는 이제 해석할 수 없는 베어 명령을 cmd.exe /d /s /c를 통해 라우팅하여 Windows의 자체 PATHEXT 검색이 shim을 선택하도록 합니다. 보고자의 진단("process.env not merged")은 잘못되었습니다. 병합은 transports/stdio.ts:316-319에서 발생합니다. 하지만 그들이 경험한 증상은 실제입니다. (#3250).png 파일명을 일반 프롬프트 텍스트가 아닌 이미지 첨부 경로로 취급하는 문제를 수정했습니다. (#3253)PerplexityProvider.isAvailable()는 hasAuth("openrouter")를 자격증명으로 수용했으므로, OpenRouter 키(LLM 접근용)를 가진 모든 사용자는 모든 webSearch: auto 요청이 OpenRouter의 perplexity/sonar-pro를 통해 조용히 라우팅되어 Gemini와 같은 다운스트림 프로바이더를 우회하고 예상치 못한 OpenRouter 청구를 생성했습니다. 자동 체인 승인은 이제 직접 Perplexity 자격증명(PERPLEXITY_COOKIES, OAuth, 또는 PERPLEXITY_API_KEY)이 필요합니다. OpenRouter 지원 Perplexity 경로를 원하는 사용자는 webSearch: perplexity로 명시적으로 선택할 수 있습니다. (#3251)models.yml/models.json이 캐시된 행보다 더 최신일 때 새로고침되도록 수정했습니다. 따라서 업데이트된 로컬 모델 메타데이터가 새로운 models.db 항목으로 가려지지 않습니다. (#3242)(, ), |, &, ;, <, >, `) bash-tool 셸 스냅샷에서 제거되었으므로, Fedora의 기본 which='(alias; declare -f) | /usr/bin/which …'와 같은 복합 별칭이 포함된 사용자 rc 파일이 더 이상 error: command not found: (alias;로 브러시 세션을 오염시키지 않습니다. (#3234)Shell.liveBackgroundJobCount()를 추가했습니다. 지속적인 세션의 라이브 외부 백그라운드 작업(&/nohup 자식) 수를 보고하며, 먼저 자동 poll()을 통해 완료된 작업을 수집합니다. 호스트가 백그라운드 프로세스가 여전히 실행 중인 셸을 유지할 수 있게 해줍니다(드롭하면 kill-on-drop을 통해 SIGKILL 자식이 됩니다).pi_natives가 modern(AVX2) 변형만 빌드한 경우 macOS x64에서 Bun 워커 스레드에 로드되지 않는 문제를 수정했습니다. 런타임 디텍터의 child_process.spawnSync("sysctl", …)는 빌드 타임 디텍터가 부모에서 성공했음에도 불구하고 워커에서 null을 반환했으므로, loadNative()는 variant=baseline을 해석하고 디스크의 pi_natives.darwin-x64-modern.node를 제외한 파일 목록을 검색했습니다. 이제 해석은 Bun.spawnSync를 선호하고, 베어 sysctl 전에 /usr/sbin/sysctl을 시도하며, 첫 번째 컨텍스트의 평가를 비공개 env 키를 통해 캐시하여 자식 워커와 서브프로세스가 재검출하는 대신 상속하도록 합니다. (#3238)전체 변경 사항: v16.1.14...v16.1.15