5.7 KiB
5.7 KiB
Milestone: Pi CLI Provider Integration
위치
- Roadmap: ROADMAP.md
- Phase: PHASE.md
목표
Node CLI adapter의 provider/profile 후보에 Pi를 추가해 adapter=cli,target=pi 실행을 OpenAI-compatible route와 내부 run dispatch에서 안정적으로 사용할 수 있게 한다.
Pi의 JSON streaming 출력은 IOP runtime event로 변환하고, 기본 config 예시는 tools-enabled Pi 실행을 기준으로 둔다.
상태
[계획]
승격 조건
- 없음
구현 잠금
- 상태: 해제
- SDD: 불필요
- SDD 문서: 없음
- SDD 사유: 기존
CLIProfileConf, CLI adapter 실행 모델, OpenAI-compatibleadapter + targetroute를 재사용하는 provider profile 추가이며 새 wire/API/schema 계약을 만들지 않는다. - 잠금 해제 조건: 없음
- 결정 필요: 없음
범위
- Node CLI adapter가 Pi를 실행 가능한 target profile로 등록하고, 기본 실행은 headless JSON stream 모드를 사용한다.
- Pi profile은 기본적으로 tools-enabled 실행을 유지한다. 스트리밍 회피용
--no-tools를 기본 예시나 smoke 기준으로 사용하지 않는다. - Pi JSON stream의
message_update/text delta, completion, error event를 IOP runtime event로 변환한다. - OpenAI-compatible route 또는 model alias가
adapter=cli,target=pi로 연결될 때 workspace-bound prompt가 Pi 실행으로 전달되는지 확인한다. - Pi 실행에 필요한 로컬 설정 파일과 model/provider 설정은 Pi 자체 설정을 source of truth로 두고, IOP config는 Pi command/profile/route만 소유한다.
기능
Epic: [profile] Pi CLI profile
Pi를 Node CLI adapter의 일반 실행 target으로 등록하고, dev/local config에서 바로 켤 수 있는 예시를 제공한다.
- [pi-profile]
nodes[].providers[].cli.profiles.pi또는 동등한 CLI profile 예시가command=pi, JSON streaming mode, workspace 전달, timeout 기본값을 포함한다. 검증: config roundtrip에서target=pi가 CLI adapter capability로 노출된다. - [pi-route] OpenAI-compatible
model_routes또는 provider catalog 예시가model=pi를adapter=cli,target=pi로 라우팅하고, CLI target 특성상metadata.workspace가 필요한 경로임을 문서화한다. - [tools-enabled] 기본 Pi profile과 smoke 예시는
--no-tools를 사용하지 않는다. 검증: tools 포함 요청에서도 첫 text delta가 completion 이전에 관측된다.
Epic: [stream] Pi JSON stream 변환
Pi headless JSON 출력 이벤트를 IOP runtime event로 변환해 기존 CLI streaming 경로와 같은 의미로 제공한다.
- [pi-emitter] Pi JSON stream emitter가 text delta, final message, usage/error event를 파싱해
runtime.RuntimeEvent로 변환한다. 검증: fake Pi JSON lines fixture에서 delta가 순서대로 emit되고 completion event가 한 번만 발생한다. - [pi-error] Pi 프로세스 종료, malformed JSON, provider error, context window exceeded 같은 실패가 route error와 log에 구분되어 남는다. 검증: 각 실패 fixture가 사용자에게 원인 메시지를 보존한 error event로 변환된다.
- [pi-workspace] workspace-bound 실행에서 Pi 프로세스 cwd와 session/no-session 정책이 profile 설정에 맞게 적용된다. 검증: 상대 workspace 요청이 해당 checkout에서 실행되고, workspace가 필요한 route에서 누락 시 입력 오류를 반환한다.
Epic: [docs-tests] 문서와 검증
운영자가 Pi CLI provider를 켜고 문제를 재현할 수 있도록 예시와 smoke를 남긴다.
- [config-docs] Edge/Node 운영 문서와 config sample에 Pi profile, route 예시, 필수 Pi 설정 파일, context window/client 설정 주의사항을 추가한다.
- [unit-tests] CLI emitter, profile capability, route mapping, workspace-required error에 대한 단위 테스트가 추가된다.
- [dev-smoke] dev-runtime에서
adapter=cli,target=pi로 짧은 OpenAI-compatible streaming smoke를 실행하고, tools-enabled 요청이 completion 전 delta를 반환하는 근거를 남긴다.
완료 리뷰
- 상태: 없음
- 요청일: 없음
- 완료 근거: 기능 Task가 아직 충족되지 않았다.
- 검토 항목:
- Pi profile이 CLI adapter capability와 config sample에 노출된다
- Pi JSON stream emitter가 delta/error/completion을 안정적으로 변환한다
- tools-enabled streaming smoke 근거가 남아 있다
- 리뷰 코멘트: 없음
범위 제외
- Pi 자체 provider/model 설정 파일의 소유권 이전 또는 자동 생성. Pi 설정은 Pi가 소유하고 IOP는 실행 profile과 route만 소유한다.
- Pi TUI 화면 렌더링을 IOP terminal bridge로 중계하는 기능.
- Pi 내부 tool 목록, MCP 정책, auth/provider 설정을 IOP schema로 재정의하는 기능.
- CLI Agent Group Grade Routing의 agent group assignment 정책. Pi는 이 Milestone에서 routing 가능한 CLI target으로 준비하고, grade routing 편입은 후속 Milestone에서 다룬다.
작업 컨텍스트
- 관련 경로:
apps/node/internal/adapters/cli,packages/go/config,configs/edge.yaml,configs/edge-compose.yaml.tmpl, README.md, openai-compatible-api.md - 표준선(선택): 내부 실행 개념은 기존처럼
adapter + target을 유지한다. Pi는 새 top-level adapter가 아니라cliadapter의 target/profile로 추가한다. - 선행 작업: CLI Automation Runtime 안정화, OpenAI Workspace Agent Execution Contract
- 후속 작업: CLI Agent Group Grade Routing에서 Pi target을 agent group 후보로 포함한다.
- 확인 필요: 없음