iop/agent-roadmap/phase/automation-runtime-bridge/milestones/pi-cli-provider-integration.md

5.7 KiB

Milestone: Pi CLI Provider Integration

위치

목표

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-compatible adapter + target route를 재사용하는 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=piadapter=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가 아니라 cli adapter의 target/profile로 추가한다.
  • 선행 작업: CLI Automation Runtime 안정화, OpenAI Workspace Agent Execution Contract
  • 후속 작업: CLI Agent Group Grade Routing에서 Pi target을 agent group 후보로 포함한다.
  • 확인 필요: 없음