Files
PiAgentUI/docs/superpowers/specs/2026-05-28-pi-agent-ui-field-inventory.md
Evandro b3489e1ede
Build & Push Frontend Docker Image / build-and-push (push) Canceled after 0s
Build Validation / validate (push) Canceled after 6s
Build & Push Backend Docker Image / build-and-push (push) Failing after 10m10s
Build & Push Gateway Docker Image / build-and-push (push) Failing after 10m9s
🎉 Initial commit: PiAgentUI — AI Agent Desktop & Web UI
A professional workspace for AI coding agents with:
- Real-time streaming chat with SSE
- Session management (fork, clone, tree navigation)
- MCP tools browser & metadata panel
- Skills browser (global, project, package sources)
- Voice input & STT provider configuration
- Integrated terminal & file explorer
- Model selector with capability metadata
- Keyboard-first UI with command palette
- 8 languages (en, pt-BR, es, ja, zh-CN, ar, bn, hi)
- Tauri 2 desktop app
- React 19 + TypeScript + Vite 8 + Tailwind CSS 4
- Pi Agent extension runtime

Originally forked from OpenCodeUI, now an independent project.
License: GPL-3.0-only
2026-06-01 00:50:06 -03:00

3.6 KiB

Inventário de Campos e Dependências do SDK do OpenCode no PiAgentUi

Este documento registra todas as dependências da biblioteca @opencode-ai/sdk encontradas no PiAgentUi, detalhando as estruturas (DTOs) que o frontend consome e como elas serão mapeadas para a nova estrutura de compatibilidade com o Pi Agent.


1. Arquivos com Acoplamento ao SDK do OpenCode

Os seguintes arquivos realizam importações diretas do cliente SDK (@opencode-ai/sdk) ou utilizam tipos derivados dele:

Arquivos em src/api/

  • agent.ts
  • client.ts
  • command.ts
  • config.ts
  • file.ts
  • global.ts
  • lsp.ts
  • mcp.ts
  • message.ts
  • permission.ts
  • pty.ts
  • session.ts
  • skill.ts
  • todo.ts
  • tool.ts
  • vcs.ts
  • worktree.ts
  • sdk.ts

Arquivos em src/types/api/

  • agent.ts
  • common.ts
  • config.ts
  • event.ts
  • file.ts
  • mcp.ts
  • message.ts
  • model.ts
  • permission.ts
  • project.ts
  • pty.ts
  • session.ts
  • skill.ts
  • tool.ts
  • vcs.ts
  • worktree.ts

2. Inventário de Estruturas Consumidas pela UI

Para que a migração não quebre o frontend, a API da extensão Pi deve produzir e aceitar dados que correspondam a estas chaves essenciais:

A. Estrutura de Mensagem (MessageWithParts / Message)

O frontend lê de message.info e de message.parts:

  • info (UserMessage ou AssistantMessage):
    • id: string (UUID da mensagem).
    • sessionID: string (UUID da sessão).
    • role: 'user' | 'assistant'.
    • time: { created?: number; completed?: number }.
    • summary: string (breve descrição se disponível).
    • modelID: string (somente assistente).
    • providerID: string (somente assistente).
  • parts (Array de blocos que compõem a mensagem):
    • TextPart: { type: 'text', text: string }.
    • ReasoningPart: { type: 'reasoning', text: string }.
    • ToolPart: { type: 'tool', tool: string, state: { status: 'pending' | 'running' | 'completed' | 'error', input?: any, output?: any, error?: string } }.
    • FilePart: { type: 'file', filename?: string, mime?: string, url?: string }.
    • StepStartPart: { type: 'step-start' }.
    • StepFinishPart: { type: 'step-finish' }.

B. Estrutura de Sessão (Session)

Utilizada no menu lateral de histórico e criação:

  • id: string (UUID).
    • title: string (nome da sessão).
    • directory: string (diretório de trabalho correspondente).
    • time: { created?: number; updated?: number }.
    • summary: { title?: string; category?: string; difficulty?: string; tokens?: number; cost?: number }.
    • status: 'idle' | 'running' | 'error'.

C. Envelopes de Eventos Globais (GlobalEvent)

Processados pelo pipeline de SSE em events.ts:

  • { directory?: string, payload: { type: string, properties: any } }
  • Eventos chave:
    • server.connected
    • session.updated
    • session.status
    • session.idle
    • session.error
    • message.updated
    • message.part.updated
    • message.part.delta

3. Estratégia de Mapeamento no MVP

Módulo Original Ação / Novo Mapeamento
session Consultas diretas ao Pi Session Manager via rotas REST locais da extensão. Mapeado para sessões nativas do Pi.
message Mapeado para o envio assíncrono de prompts ao Pi (pi.sendUserMessage). Eventos nativos do Pi traduzidos em deltas de partes.
tool Retorna ferramentas padrões disponíveis do Pi.
pty / lsp / mcp Desativados visualmente / stubs de array vazio / erro 501.
worktree / vcs Desativados visualmente.