Agent에 선택적 cwdResolver와 AgentLoopConfig에 getCwd를 추가하여 LLM 호출마다 작업 디렉토리를 동적으로 해결할 수 있게 했습니다. 이를 통해 워크스페이스 범위 제공자 탐색(예: GitLab Duo Agent)이 에이전트를 재구성하지 않고도 라이브 디렉토리 변경을 따를 수 있습니다.toolcall_end 이벤트 없이 종료될 때 내부 스트리밍 상태(partialJson)가 최종 AssistantMessage로 누수되는 버그를 수정했습니다.Agent가 작업 디렉토리(cwd)를 제공자 스트림 옵션으로 올바르게 전달하도록 수정하여 GitLab Duo Agent와 같은 제공자가 로컬 도구 실행을 워크스페이스로 범위 지정할 수 있게 했습니다.@oh-my-pi/pi-ai/utils/json-parse 모듈을 제거했습니다. JSON 수리 및 파싱 헬퍼(repairJson, parseJsonWithRepair, parseStreamingJson, parseStreamingJsonThrottled)는 유틸리티 전역에서 공유하기 위해 @oh-my-pi/pi-utils로 이동했습니다.gitlab-duo-agent)와 빌트인 구현을 추가했으며, 기존 AI Gateway 프록시 제공자의 이름을 "GitLab Duo Non-Agentic"(gitlab-duo)로 변경했습니다.maxInFlightRequests를 통해 구성할 수 있습니다.UsageResetCredits에 credits 필드를 추가했으며, OpenAI Codex 사용 세부 정보를 지원합니다.AuthStorage.login을 수정하여 붙여넣기 코드 제공자에 대해서만 수동 코드 붙여넣기 프롬프트를 합성하도록 하여 루프백 OAuth 플로우에서 터미널 차단 경쟁을 방지합니다.tool_choice 객체를 문자열 "required"로 다운그레이드했습니다.omp usage가 자리 표시자 사용 제공자를 등록하여 Ollama 및 Ollama Cloud 계정을 생략하는 문제를 수정했습니다.chat 및 software_development 플로우 경로와 인라인 커스텀 ambient 플로우를 위해 MCP 이외의 액션 브리지를 제거했습니다.tool_choice 형태를 내보내지 않고 문자열 전용 OpenAI 호환 채팅 서버에서 강제 도구 사용을 지원하도록 OpenAICompat.supportsNamedToolChoice를 추가했습니다.GITLAB_DUO_PROJECT_PATH 또는 GITLAB_DUO_PROJECT_ID를 통한 구성을 견고하게 처리합니다.search 도구의 이름을 grep으로, find 도구의 이름을 glob으로 변경했습니다. 기존 사용자 설정은 자동으로 새 구성 키로 마이그레이션됩니다.read, search, write 도구에 ssh://host/path 지원을 추가했습니다./move 오버레이를 추가했으며, 이전 세션은 재개 가능하게 유지하면서 대상 디렉토리에서 새 세션을 시작합니다.providers.maxInFlightRequests 설정을 추가했습니다.models.yml에서 discovery.type: litellm 지원을 추가하여 LiteLLM 게이트웨이에서 모델 메타데이터를 자동으로 검색합니다.models.yml 구성 옵션 remoteCompaction 및 compactionModel을 추가했습니다.debug 도구에서 사용하는 디버거 어댑터를 정의하거나 재정의하기 위한 프로젝트, 사용자, 플러그인 수준의 dap.json 및 dap.yaml 지원을 추가했습니다.inlineToolDescriptors 설정을 부울에서 3방향 열거형(auto | on | off)으로 변경하여 기본값을 auto로 설정하면 Gemini 모델에 대해서만 디스크립터를 인라인화합니다.Working… 활동 표시기를 고정 Todo 및 서브에이전트HUD 아래로 이동하여 Todo 패널 위에 떠 있지 않고 편집기 바로 위에 위치하도록 했습니다.web_search_prime를 호출하기 전에 Streamable HTTP MCP 세션을 초기화하도록 하여 인증된 도구 호출을 위해 반환된 세션 ID를 보존합니다. (#3619)Cmd+V가 이미지 전용 클립보드 붙여넣기를 자동으로 삭제하는 문제를 수정했습니다.ssh:// 프로토콜 처리를 강화했으며, 지원되지 않는 도구가 SSH 연결을 시도하는 것을 방지합니다./usage 디스플레이에 뱅킹된 Codex 레이트 제한 리셋의 만료 날짜를 추가했습니다.0x0 치수를 보고하는 문제를 수정했습니다.snapcompact 압축이 자동으로 LLM 요약으로 폴백하는 문제를 수정했습니다.snapcompact 압축이 자동으로 LLM 요약으로 폴백하는 문제를 수정했습니다. 수동 및 자동 snapcompact는 이제 제공자 호출을 수행하는 대신 로컬에서 차단기를 사용하여 실패합니다. (#3599)normalizeGeneratedTitle (packages/coding-agent/src/tiny/text.ts)은 이전에 \b\p{Ll} 정규식을 통해 제목 케이스를 강제했으며, 기능 단어("for" → "For")를 대문자로 표기하고 스트레이 모델 대문자("dAemon" → "DAemon")를 증폭했습니다. 이제 사용자의 고유 메시지에 대해 각 제목 토큰을 조정합니다: 축자로 입력한 토큰은 유지되고, 사용자가 특별하게 대소문자로 표기한 고유 명사는 모델이 평탄화했을 때("tinyvmm" → "TinyVMM") 복원되며, 사용자가 작성하지 않은 내부 대문자를 포함하는 소문자("dAemon" → "daemon")는 평탄화되고, 모델 대소문자로 표기된 PascalCase 고유 명사("GitHub", "OAuth")는 그대로 유지됩니다. 복원은 특별하게 대소문자로 표기된 소스 토큰으로 제한되므로 "For"로 시작하는 메시지만으로는 중간 제목의 "for"을 "For"로 강제할 수 없습니다. 로컬 tiny-model 및 온라인 pi/smol 제목 경로 모두에 적용됩니다.to: "all")이 주 에이전트의 트랜스크립트에서 두 번 렌더링되는 문제를 수정했습니다. 서브에이전트 방송은 각 라이브 피어당 하나의 bus.send를 배포하고, listVisibleTo는 항상 Main을 포함하므로 주 에이전트는 자신의 irc:incoming 카드로 한 번, 형제 레그(Sender → Other)의 irc:relay 관찰로 각 다른 수신자당 한 번씩(동일한 텍스트가 N+1번 표시됨) 본문을 받았습니다. IrcTool.#executeSend는 이제 Main이 대상 중에 있을 때 모든 방송 레그에 suppressRelay를 설정하고(이미 직접 수신 카드를 통해 본문을 가짐), IrcBus.send는 억제된 레그에 대해 #relayToMainUi를 건너뜁니다. 직접 sub→sub 릴레이, Main으로의 직접 메시지, Main의 자체 아웃바운드 전송은 영향을 받지 않습니다.Bun.Image가 PNG/JPEG 헤더가 여전히 실제 치수를 노출하는 이미지를 거부할 때 브라우저 스크린샷이 0x0 치수를 보고하는 문제를 수정했습니다. (#3577)eval tool.* 브리지가 하네스 내부 i("intent") 필드를 MCP tools/call 요청으로 누수시키는 문제를 수정했으므로, 엄격한 스키마 서버(Linear, additionalProperties:false / Zod .strict()가 있는 모든 항목)는 직접 모델 도구 호출 경로를 통한 동일한 호출이 성공하는 동안 모든 호출을 -32602 unrecognized_keys: ["i"]로 거부했습니다. MCPTool.execute / DeferredMCPTool.execute (packages/coding-agent/src/mcp/tool-bridge.ts)은 이제 MCP 경계에서 INTENT_FIELD를 제거하므로 MCP 호출은 모델에서 직접 발급되든 eval tool.* 브리지를 통해 발급되든 동일하게 동작합니다. i를 실제 매개변수로 정당하게 선언하는 서버는 이를 그대로 유지합니다. (#3575)Stop., Done., No issue; continue. <advisory severity="blocker"> 주입을 방출하는 스팸 루프에 들어가 주 트랜스크립트를 오염시키고 작업이 이미 완료된 후 시청 중인 에이전트를 불안정하게 하는 문제를 수정했습니다. 조언자 시스템 프롬프트의 규칙("업데이트당 최대 하나의 advise", "동일한 조언을 두 번 보내지 마세요")은 이제 AgentSession의 enqueueAdvice 경계에서 새로운 AdvisorEmissionGuard에 의해 코드에서 강제됩니다: 각 메모를 정규화하고(대소문자 구분 안 함, 구두점 접힘), 콘텐츠 없는 자조 필러(stop/done/no issue continue/lgtm/등)를 삭제하고, 세션 전체에서 정확한 정규화된 텍스트로 중복을 제거하며(경계 FIFO 히스토리), 조언자 모델 프롬프트 사이클당 하나의 수락된 메모로 속도를 제한합니다. 조언자 재설정(압축, 세션 전환, /new)에서 재설정되므로 재입력된 검토자는 이전 문제를 다시 발생시킬 수 있습니다. (#3520)분량 관계로 이후 내용은 번역에서 제외했습니다. 전체 내용은 위 원문 링크에서 확인하세요.