@oh-my-pi/pi-ai/dialect 배럴에서 renderDelimitedThinking을 내보내어 소비자가 dialect의 <thinking> 엔벨로프 언래핑 및 재래핑 로직을 재사용할 수 있도록 함 (./dialect/rendering 프리미티브 중 유일하게 재내보내지는 것이며, 나머지는 dialect 내부로 유지됨).\textcolor, \colorbox, \fcolorbox)에 대한 지원 추가로 출력을 색상화함stt.modelName에 따라 레코더 및 모델 자산을 검증하도록 함. 음성 모델 전환 시 의존성 확인 및 새 모델의 다운로드를 다시 실행함```mermaid 다이어그램을 포함할 수 있도록 허용함/advisor dump에 의해 표시됨)를 더 명확하게 함: 각 턴은 이제 ### Session update 제목으로 열림. 감시 에이전트 역할은 레벨 2 제목 대신 인라인 **agent**: / **user**: 레이블로 렌더링되어 advisor의 고유한 턴과 충돌하지 않음. 같은 역할의 연속 메시지는 하나의 레이블 아래에 축소됨 (감시 에이전트는 도구 호출당 하나의 어시스턴트 메시지를 내보냄). 그리고 배치된 업데이트는 --- 규칙이 아닌 빈 줄로 연결됨.history://, /advisor dump)를 #에서 //로 변경하여 의도 행이 마크다운 H1 제목으로 렌더링되는 대신 주석처럼 읽힘.Advisor (...): - [severity] note prose 블록에서 XML 이스케이프 본문이 있는 <advisory severity="…" guidance="weigh, don't blindly obey">…</advisory> 요소(노트당 하나)로 변경함. (공유 escapeXmlText 헬퍼를 @oh-my-pi/pi-utils로 재배치함.)/dump 및 /advisor dump raw를 사전 16.x 전체 상세 덤프로 되돌림: 시스템 프롬프트, 모델/사고 설정, 파라미터를 포함한 도구 인벤토리, 및 마크다운 역할 제목으로 렌더링된 메시지 트랜스크립트 (## User, ## Assistant, ### Tool Call: <name> 호출의 _i 의도가 제목 아래 // 주석으로, 나머지 인수가 펜스된 YAML 블록으로, ### Tool Result: <name>, 더하기 ## Bash Execution/## File Mention/요약 섹션) 모델의 네이티브 dialect 턴 엔벨로프 및 <invoke>/<parameter> XML 도구 호출 대신. 압축 기본값 및 /dump의 [raw] 플래그를 삭제함. 압축 → tool(...) ⇒ ok 히스토리 형식은 더 이상 /dump에서 도달할 수 없음. /advisor dump는 여전히 압축으로 기본값이 지정되며, /advisor dump raw는 이제 동일한 마크다운 덤프를 렌더링함 (이전에는 모델의 네이티브 dialect 엔벨로프)..onnx 파일 모두를 요구하도록 함. 부분 모델 다운로드는 완전히 캐시된 것으로 취급되지 않고 적절한 포그라운드 다운로드를 트리거함JsRuntime 정리를 수정하여 더 오래된 인라인/직접 런타임을 폐기할 때 더 새로운 런타임의 JS 헬퍼 전역 변수를 더 이상 삭제하지 않음. 비활성 cmux/direct 런타임은 이제 순차 사용 전에 글로벌 변수를 다시 활성화하는 반면, 겹치는 크로스 런타임 실행은 명시적으로 실패함.ultrathink-notice, orchestrate-notice, workflow-notice)을 수정하여 관련 사용자 메시지 전에 앞에 추가되도록 함으로써 같은 턴에 영향을 미침clearQueue()), 대기 칩 (getQueuedMessages()), 및 popLastQueuedMessage()는 이제 진정한 사용자 작성 큐 메시지만 표면화함 (일반 사용자 턴 및 /skill과 같은 attribution: "user" 커스텀 메시지). 일반 Alt+Up 제거는 다른 모든 큐 메시지를 그 자리에 남겨둔 반면, Esc 인터럽트 경로만 advisor 카드만 보존함 (따라서 중단의 보존은 여전히 가시적 조언으로 다시 기록함) 및 다른 내부 스티어를 삭제하므로 사용자 인터럽트는 남은 내부 컨텍스트에서 자동 재개에 의해 자동으로 취소될 수 없음. queuedMessageCount는 여전히 모든 실제 큐 작업 (advisor 카드 포함)을 반영하므로 hasPendingMessages()/RPC 및 공 제출 중단 게이트는 정확하게 유지됨.concern/blocker 조언이 실행 중인 에이전트로부터 보류되었다가 의도적 인터럽트 후 다음 사용자 프롬프트에서 한 번에 한 버스트로 덤프되는 문제를 수정함. 사용자 인터럽트는 advisor 자동 재개 억제를 래치하지만, 비사용자 재개 (합성/자동 계속 또는 중단 후 배수하는 큐 스티어)는 래치가 여전히 설정된 상태로 스트리밍이 계속되므로, 모든 인터럽팅 알림이 라이브 턴 대신 다음 턴 큐에 숨겨져 있었음 — 에이전트는 advisor를 실행 중에 들어본 적이 없고 백로그는 모두 다음 프롬프트에서 한 번에 플러시됨. 억제는 이제 에이전트가 유휴 중 (또는 여전히 인터럽된 턴을 분해 중)일 때만 인터럽팅 조언을 보류함. 턴이 다시 스트리밍되면 알림이 라이브로 스티어링됨. 활성 실행을 스티어링하는 것은 절대 멈춘 것을 자동 재개하지 않기 때문. 재개된 턴의 최종 폴 past 스티어 큐에 갇혀있는 우려는 에이전트가 정착할 때 가시적 조언으로 수용됨 (중단을 미러링). 따라서 멈춘 실행을 자동 재개하지도 않고 다음 프롬프트에서 플러시될 때까지 남아있지도 않음.omp --continue/-c가 때때로 대화형 세션 대신 서브에이전트 트랜스크립트로 재개되는 문제를 수정함. 서브에이전트 (및 HTML 내보내기) SessionManager.open() 호출은 부모의 터미널에서 실행되었고, 테이 별 --continue 브레드크럼을 고유한 아티팩트 디렉토리 세션 파일로 덮어씌웠음. 이러한 헤드리스 오픈은 이제 브레드크럼을 억제함. continueRecent()는 또한 부모의 아티팩트 디렉토리 내에서 세션 파일 (<parent>/<agentId>.jsonl)을 최상위 세션으로 다시 해결하여 이미 손상된 브레드크럼을 복구함.Agent Hub · N running 프레임을 스택하고 스크롤백에 가비지 행을 고립시키는 문제를 수정함. 허브는 라이브 트랜스크립트 위에 합성된 비전체 화면 오버레이였으므로, 실행 중인 서브에이전트의 진행 상황이 증가하고 프레임을 스크롤할 때마다 이전에 칠한 허브 복사본은 터미널의 네이티브 스크롤백에 영구적으로 푸시됨 (엔진이 다시 쓸 수 없음). 이제 편집기 슬롯에 인라인으로 렌더링됨 — 다른 모든 선택기 및 ask 도구가 사용하는 동일한 앵커된 영역 — 일반 추가 전용 커밋 경로를 타며, 트랜스크립트는 그 위에 정확히 한 번 커밋되고 허브는 복사본을 누출하지 않으면서 제자리에서 다시 칠해짐. (대체 화면을 빌리는 것을 피함.)parentId === id). 따라서 Agent Hub는 각 에이전트를 sub · of <itself>로 렌더링했고 ←← 부모 네비게이션 제스처는 같은 에이전트에서 루프됨. SDK는 parentTaskPrefix — 에이전트의 자신의 아티팩트/출력 ID 접두사 — 를 레지스트리 부모 링크로 재사용했음. 스폰은 이제 별도의 parentAgentId (스포닝 에이전트의 id: 최상위 task 스포닝을 위한 Main, 중첩된 스포닝 및 eval agent()을 위한 부모 서브에이전트, /tan을 위한 포커스된 에이전트)를 전달하고 레지스트리는 그것을 부모로 기록함.parked 서브에이전트에 메시징하는 문제를 수정함 (Agent Hub 스캔 또는 재개/재시작된 세션). 트랜스크립트는 그대로인데도 cannot be revived (no reviver registered)로 실패함. 이러한 refs는 세션 파일을 가지지만 인메모리 reviver가 없음 — 실행자의 라이브 reviver 클로저는 스포닝 턴/프로세스와 함께 소멸함 — 따라서 IRC 전송 및 Agent Hub 포커스는 그들을 거부함. AgentLifecycleManager.ensureLive는 이제 지속된 서브에이전트 reviver 팩토리 (최상위 대화형/RPC 세션에 의해 설치됨)를 통해 차갑게 재활성화함. --resume이 세션을 재구성하는 방식으로 JSONL에서 서브에이전트를 재구성함. 파일을 다시 열고 createAgentSession을 통해 재생하지만, 이제 읽을 수 있는 session_init 레코드 (SessionManager.peekSessionInit)에서 런타임 계약을 소싱함. 따라서 도구, 시스템 프롬프트, 출력 스키마 및 종류가 기본 최상위 세션으로 부활하는 대신 복원됨. session_init은 이제 유효한 spawns 허용 목록 및 읽기 요약 플래그도 지속시켜서 차갑게 재활성화가 원래 기능 표면을 유지함 (그것 없는 이전 파일은 와일드카드로 기본값을 설정하는 대신 재스포닝을 거부함). 고립된 실행 및 사전 session_init 파일은 기록된 워크스페이스가 더 이상 존재하지 않으면 트랜스크립트 전용 (history://)으로 유지됨.setTerminalTitle/pushTerminalTitle/popTerminalTitle)가 bun test 중에 개발자의 터미널로 이스케이프 시퀀스를 누출하는 문제를 수정함. 터미널이 헤드리스인 경우 (테스트 런타임 기본값) 이제 건너뜀. ProcessTerminal 렌더/프로브 억제와 일치하여 대화형 모드 테스트는 더 이상 실제 터미널에 칠하지 않음omp를 열고 종료한 후 빈 CLI 세션이 유지되는 문제를 수정함 (#2800).hookCapability를 통해 검색된 hooks/pre/*.ts 및 hooks/post/*.ts 파일이 검색에 등록되었지만 확장 실행자에 로드되지 않는 문제를 수정함. 따라서 해당 tool_call 핸들러는 이제 수동 settings.json extensions 항목 없이도 실행됨 (#2796).gpt-5.5 제공자를 선택하는 문제를 수정함. 오류 알림 OpenAI 401이 나타날 수 있음 (#2807).render_mermaid 도구 및 해당 renderMermaid.enabled 설정을 제거함. 더 이상 직접 호출할 수 없음render_mermaid 도구의 렌더링 지원을 제거함\tfrac 지원을 추가하여 latexToBlock 출력에서 수직 분수로 표시됨$$...$$ 및 \[...\]) 및 구분자 없는 \begin{...}...\end{...} 수학 환경에 대한 마크다운 파싱을 추가하여 블록 방정식이 LaTeX-to-Unicode를 통해 렌더링됨\frac, \dfrac, \cfrac)의 스택된 렌더링을 추가함: 분자가 가로 막대 위에 그려지고 분모 위에 그려지며, 주변 항 및 align/equation 스타일 환경 행이 막대에 정렬됨. 줄 자체 $$/\[ 블록, 베어 \begin{...} 환경, 및 단일 디스플레이 수학 스팬이 유일한 내용인 단락에 의해 트리거됨. 인라인 $...$ 분수는 한 줄 (½, (a+b)/c)로 유지됨renderMathInText에서 $/\( 구분자를 생략하는 수학 모양 행 및 수학 환경 블록에 대한 베어 수학 자동 렌더링을 추가함$$...$$, $...$, \(...\), 및 \[...\]를 마크다운 출력의 읽을 수 있는 Unicode로 변환함latexToUnicode, latexToBlock, renderMathInText, inlineMathSpanEnd, 및 isBareMathEnvironment를 직접 호출할 수 있도록 함\textcolor, 범위 \color, \colorbox, 및 \fcolorbox에 대한 ANSI 색상 렌더링을 추가함. xcolor/CSS 색상 파싱 및 트루컬러/256색 터미널 출력 포함MarkdownTheme.resolveMermaidAscii에 선택적 maxWidth 파라미터를 추가하여 다이어그램 리졸버가 사용 가능한 컨텐츠 너비에 맞추도록 ASCII 출력을 할 수 있도록 함\\ 행 끊김을 별도 출력 줄로 유지함 (목록 항목 내 포함)latexToBlock에서 alignat/alignedat/gatheredat 렌더링을 수정하여 필수 {n} 프리앰블이 보이는 수학 내용으로 렌더링되지 않도록 함\begin{itemize}) 및 펜스된 코드 블록을 수학으로 렌더링하는 대신 리터럴 텍스트로 남겨둠renderInlineMarkdown을 수정하여 최상위 디스플레이 수학 토큰을 처리하도록 함. 원시 $$...$$ 구분자가 더 이상 누출되지 않음분량 관계로 이후 내용은 번역에서 제외했습니다. 전체 내용은 위 원문 링크에서 확인하세요.