HTTP 400 model_not_available_for_integrator로 실패하던 문제를 수정했습니다. Copilot의 플릿이 균일하지 않아 일부가 같은 호스트의 /models에서 광고하는 모델을 거부하고 있으며, 일시적 분류기가 고정된 봉투 깊이에서만 이전 model_not_supported 코드와 일치했으므로 이러한 거부가 기존 재시도 경로로 들어가지 않고 최종 오류로 표시되었습니다. 이제 모델 가용성 400은 어떤 봉투 깊이에서나 인식되며 OpenAI 전송에서 전용 8회 시도 예산으로 고정 지연 시에 다시 시도됩니다. 다른 모든 재시도 가능한 실패는 이전 백오프 및 시도 횟수를 유지합니다.totalLines로 보고하던 문제를 수정하여, 변경되지 않은 파일의 순차 읽기가 불일치하게 보이던 것을 해결했습니다 (#7590).used_percent가 100으로 반올림될 때 명시적으로 허용된 ChatGPT Team 자격증명을 차단하던 OpenAI Codex 사용량 원격 측정 문제를 수정하여, 다중 계정 세션이 실제로 소진된 형제 계정으로 라우팅될 수 있던 것을 방지했습니다 (#7617).reasoning.summary, reasoning.context, text.verbosity 제어를 보내던 문제를 수정하여 Codex server_error 연결 해제를 지원되지 않는 요청 형태로부터 감소시켰습니다 (#4949).us-gov.* Claude 추론 프로필 ID를 생략하던 문제를 수정하여, amazon-bedrock/us-gov.anthropic.claude-sonnet-4-5-… 같은 선택기가 모델 조회 실패 또는 GovCloud 자격증명으로 상용 us.* 지역을 us-east-1로 잘못 라우팅하던 것을 해결했습니다.@oh-my-pi/pi-coding-agent/utils/changelog에서 compareVersions를 compareChangelogEntries로 이름을 변경했습니다. 함수 서명 및 동작은 변경되지 않았으므로 import를 업데이트하여 새 이름을 사용하세요.update-cli에서 Bun install-cache 정리를 공유 compareVersions 유틸리티(@oh-my-pi/pi-utils)를 통해 라우팅하여, Number를 통해 큰 숫자 버전 식별자를 반올림하던 중복 로컬 비교기를 제거했습니다.textVerbosity 설정이 사용자가 명시적으로 구성하지 않는 한 OpenAI Codex 요청으로 전달되지 않도록 수정하여 Codex의 기본 응답 제어 기본값을 보존했습니다 (#4949).message_update 델타를 병합하여 스트리밍 CPU 사용량을 감소시켰습니다: 토큰당 하나 대신 대략 33ms 윈도우당 최대 하나의 스트리밍 상태 재구축이 실행되므로 스트리밍 세션의 CPU 프로필을 지배하던 토큰당 핸들러 작업(특히 높은 토큰 레이트에서)을 줄이면서 토큰당 음성 출력을 보존합니다. Subscriber dispatch가 직렬화되므로 빠른 스트림 끝(message_update → message_end → agent_end)이 병합된 플러시를 추월할 수 없습니다 (#7443).enabled: false 플래그를 자동으로 삭제하던 문제를 수정하여, 소스 구성에서 비활성화된 서버가 탑재된 채로 남아있던 것을 해결했습니다. 이제 플래그가 Codex, OpenCode, 기본 mcp.json처럼 전파되고 적용됩니다. 이러한 importer는 이제 같은 이름의 사용자 항목 이전에 프로젝트 항목을 로드하므로(기본/Codex와 일치) 프로젝트 enabled: false가 같은 이름의 사용자 서버를 억제합니다 (#7652).agent() 도우미에서 호출별 model 오버라이드를 제거했습니다(모든 런타임), 이전의 작업 도구 제거(9f8aa87dbf)를 완료했습니다. 하위 에이전트는 항상 선택된 에이전트의 frontmatter 모델 및 설정을 사용합니다. 레거시 model 인수는 자동으로 무시되므로 명시적 model: "default"가 더 이상 자식을 부모 세션 모델로 라우팅할 수 없습니다 (#6438).convertToPng 이미지 도우미를 가져오는 remote-pi 같은 플러그인을 거부하던 레거시 Pi 확장 검증 문제를 수정했습니다 (#7610).PUPPETEER_EXECUTABLE_PATH가 무시되던 문제를 수정하여 Windows 사용자가 공유 브라우저 데몬에 호환되는 헤드리스 브라우저를 선택할 수 없던 것을 방지했습니다 (#7601).openai-models-list 검색이 서버 광고 입력 양식을 무시하던 문제를 수정하여, 번들된 카탈로그에 없는 사용자 정의 가상 계층 ID가 /v1/models 응답이 input: ["text","image"]를 보고할 때도 images: no로 표시되던 것을 해결했습니다 (#7583).grep/glob이 결합된 문자열이 OS가 이름을 지정하기에 너무 길 때(ENAMETOOLONG) 세미콜론 구분 path 목록을 하나의 리터럴 경로로 자동으로 축소하던 문제를 수정했습니다 — NAME_MAX를 초과하는 bare filename 목록 또는 PATH_MAX를 초과하는 절대 경로가 모든 항목이 있었음에도 불구하고 Path not found: <whole list>로 실패했습니다. 이제 multipath probe는 ENAMETOOLONG을 명확히 존재하지 않는 단일 경로로 취급하므로 분할이 진행되고, glob이 raw errno를 유출하지 않고 깔끔한 Path not found를 표시합니다 (#7597).--mode json (및 텍스트) 출력 모드가 프로세스가 stdout이 완료되기 전에 종료할 때 큰 최종 레코드(예: 다중 MB agent_end)를 자르면서 여전히 exit 0으로 종료하던 문제를 수정했습니다. 이제 토큰당 쓰기가 자체 완료 콜백으로 직렬화되고 shutdown이 마지막 콜백에서 차단되므로 최종 레코드가 완전히 전달됩니다 (#7635).autoRecall이 간헐적으로 모델에 도달하지 못하던 문제를 수정했습니다: 두 recall 경로가 hasRecalledForFirstTurn 플래그를 공유했고, agent_start 이벤트 경로가 먼저 이를 소비하고 빠른 턴이 추월한 대기되지 않은 배경 프롬프트 재구축을 통해서만 주입할 수 있었습니다. 이제 beforeAgentStartPrompt(턴을 구축하기 전에 대기)가 유일한 주입 경로입니다 (#7568).read memory://<id>가 memory.backend=hindsight 아래에서 혼란스러운 "Unknown memory namespace" 오류를 반환하던 문제를 수정했습니다(Hindsight는 서버 측에 메모리를 저장하며 memory:// 주소를 가지지 않습니다). 이제 핸들러가 recall/reflect에 대한 교정 포인터를 반환하므로 공유 recall 도구 설명에 의해 조종된 잘못된 읽기가 한 턴에서 자동으로 교정됩니다 (#7587).parameters에서 스키마 메서드를 제거하던 문제를 수정했습니다: applyToolProxy가 모든 호출 가능 속성을 바인드했고, 스키마(toJsonSchema/assert를 수행하는 plain function)를 바인드하면 이러한 속성이 삭제되어 wire-schema 감지를 중단하고 JSON.stringify(schema) === undefined로 상태 줄 토큰 추정기를 충돌시켰습니다. Prototype 메서드는 여전히 바인드되고, own data 속성 및 스키마 호출 가능 항목은 이제 손상되지 않은 채로 전달됩니다.agent() 호출이 턴 취소를 무시하고 무한정 계속 실행되던 버그를 수정했습니다.tail이 tail: Broken pipe를 출력하고 downstream pipeline reader가 일찍 종료될 때 실패하던 문제를 수정했습니다(예: tail -c N file.jsonl | jq … with jq aborting on a parse error). 이제 모든 출력 경로에서 --follow를 포함하여 실제 tail처럼 141(128+SIGPIPE)로 자동으로 종료됩니다.ps -o tpgid,...가 unknown output format specifier로 실패). tpgid, pri, flags, real/effective user 및 group 열, wchan, fault counters, sz, STAT + foreground 플래그를 추가했습니다.omp 대신 bun으로 보고되었다는 이유로 macOS 개발 launcher를 거부하던 문제를 수정했습니다.grep/cat/find를 차단하던 문제를 수정했습니다(예: printf 'x\n' | grep x). 파이프된 stdin을 소비하는 스테이지는 경로 기반 전용 도구로 대체될 수 없으므로 더 이상 일치하지 않으며, standalone 및 첫 번째 스테이지 검색은 여전히 인터셉트됩니다 (#7496).th32ParentProcessID 링크에서 생성된 자식의 descendant 트리를 걸었으며, harness의 stale 기록된 parent pid와 일치하는 재활용된 pid가 omp를 false descendant로 열거하고 TerminateProcess할 수 있어 세션을 session_exit 레코드 없이 종료했습니다. Run-cancellation 스윕이 이제 harness 또는 그 아래에서 수집된 프로세스에 신호를 보내기를 거부하는 동시에 재활용된 ancestor pid를 소유할 때 timed-out 대상을 여전히 수확합니다 (#7452).features.unexpectedStopDetection)가 thinking-only stop에 대해 발화하지 않던 문제를 수정했습니다: isUnexpectedStopCandidate가 비공백 text 블록만 계산했으므로, 유일한 컨텐츠가 서명된 thinking 블록(trapped 응답 또는 reasoning 모델의 잘린 reasoning 조각)인 stopReason: "stop" 턴이 분류를 우회하고 mid-task 턴을 자동으로 종료했습니다. 이제 이러한 stop은 후보이며 thinking 텍스트에서 분류됩니다 (#7499)..agents/skills 디렉토리에 저장된 Agent Skills를 놓치던 문제를 수정했습니다 (#3779).omp setup python을 Python eval 런타임에서 사용하는 동일한 구성되거나 발견된 interpreter를 검증하도록 수정했습니다.ExtensionExitError unhandled-rejection 폭주 및 exit 129를 유발하는 충돌을 수정했습니다. postmortem 모듈이 첫 번째 평가에서 native hard-exit을 바인드했습니다. bundler가 평가를 withHostGuard 윈도우로 연기할 때 guard의 throwing 대체를 동결하여 모든 이후 signal/fatal 종료를 포이즈닝했습니다. 이제 native 종료가 호출별로 해석되고, guard이 자체 대체를 shadow하는 native primitive로 스탬프하므로 mid-guard signal이 여전히 종료됩니다 (#7393).ENOENT로 추출을 중단할 수 있던 문제를 수정했습니다.Type.Integer({ minimum: 1 })), 이는 left bound requires a corresponding right bound를 발생시키고 확장 도구 로딩을 중단했습니다 (#7648).process.platform === "win32"에서 gate했지만 WSL은 linux를 보고하므로 probe가 실행되지 않았고 이미지가 Sixel 지원 Windows Terminal에서도 텍스트 placeholder로 폴백했습니다. 이제 probe가 모든 ConPTY 호스트(native win32 또는 WSL)에서 실행됩니다 (#6009).compareVersions 유틸리티(@oh-my-pi/pi-utils)를 추가했습니다. 예외를 발생시키지 않습니다.PATH를 존중하여 환경 재로드 후 stale 도구 경로를 방지합니다.Full Changelog: v17.2.8...v17.2.9