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
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
3.6 KiB
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.tsclient.tscommand.tsconfig.tsfile.tsglobal.tslsp.tsmcp.tsmessage.tspermission.tspty.tssession.tsskill.tstodo.tstool.tsvcs.tsworktree.tssdk.ts
Arquivos em src/types/api/
agent.tscommon.tsconfig.tsevent.tsfile.tsmcp.tsmessage.tsmodel.tspermission.tsproject.tspty.tssession.tsskill.tstool.tsvcs.tsworktree.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(UserMessageouAssistantMessage):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.connectedsession.updatedsession.statussession.idlesession.errormessage.updatedmessage.part.updatedmessage.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. |