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
2.9 KiB
PiAgentUI SQL Settings and Voice Implementation Plan
For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: Move backend-owned PiAgentUI settings to a local SQLite database and fix/extend voice settings for local OpenAI-compatible STT/TTS providers such as Speaches.
Architecture: The backend extension becomes the source of truth for backend-owned settings using ~/.pi/agent/piagentui.db, with a SQL table for namespaced JSON settings and migration from the legacy piagentui-settings.json. Frontend voice settings continue using HTTP APIs, now with STT API-key-required control and TTS model/voice configuration.
Tech Stack: Node node:sqlite DatabaseSync, TypeScript, Vitest, React settings components.
Files
- Create:
extensions/piagentui-settings-store.ts— SQLite settings repository, schema, defaults, legacy JSON migration. - Create:
extensions/piagentui-settings-store.test.ts— unit tests for SQL persistence and migration. - Modify:
extensions/piagentui-server.ts— replace JSON helpers with SQLite store; add TTS settings/speech endpoints; allow keyless OpenAI-compatible STT when configured. - Modify:
extensions/piagentui-server.test.ts— integration coverage for keyless STT and TTS settings. - Modify:
src/types/api/stt.ts,src/api/stt.ts,src/hooks/useVoiceTranscription.ts— exposeapiKeyRequiredand avoid blocking local Speaches. - Create/Modify:
src/types/api/tts.ts,src/api/tts.ts,src/features/settings/components/TtsSettings.tsx,src/features/settings/components/VoiceSettings.tsx— TTS settings UI with voice selection. - Modify tests under
src/hooksandsrc/features/settings/components.
Tasks
Task 1: SQL settings store
- Write failing store tests for SQLite persistence and legacy JSON migration.
- Implement
extensions/piagentui-settings-store.tswithapp_metaandsettingstables. - Run targeted store tests and commit.
Task 2: Backend voice behavior
- Write failing server/integration tests for keyless OpenAI-compatible STT and TTS settings sanitization.
- Update backend STT to require API key only when
apiKeyRequiredis true. - Add TTS settings and
/api/tts/speechproxy. - Run extension tests and commit.
Task 3: Frontend voice UI
- Write failing hook/settings tests for keyless STT start and TTS voice selection.
- Add STT
apiKeyRequiredtoggle. - Add TTS settings card with model, voice, format, endpoint, API key behavior.
- Run targeted frontend tests and commit.
Task 4: Validation
- Run
npx tsc --noEmit. - Run
npm run typecheck:extensions. - Run targeted voice/storage tests.
- Run
npm run build. - Run
git diff --check.