* feat(server): replace Pi ACP integration with direct SDK provider Replace the ACP-based Pi provider (which spawned a `pi-acp` subprocess and talked JSON-RPC over stdio) with a direct in-process integration using `@mariozechner/pi-coding-agent` as a library. The new `PiDirectAgentClient` and `PiDirectAgentSession` use the Pi SDK directly — creating sessions via `createAgentSession()`, managing models via `ModelRegistry`, and mapping Pi's `AgentSessionEvent` stream to Paseo's `AgentStreamEvent` types including: - Thread/turn lifecycle events - Assistant text and thinking/reasoning deltas - Tool execution (bash, read, write, edit, find, grep, ls) with arg caching across start/update/end events - Compaction events - Session persistence and resume via `SessionManager` Thinking levels flow through the existing `thinkingOptionId` / `setThinkingOption()` infrastructure, not through features. Includes 9 real e2e tests against a live Pi agent covering tool calls (bash/read/write/edit), reasoning chunks, session persistence/resume, model listing, and thinking option management. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: update lockfile signatures and Nix hash * refactor(server): improve Pi direct provider code quality Address coding standards violations in pi-direct-agent.ts: - Replace all `as Record<string, unknown>` / `as any` / `as unknown as` casts with properly typed boundaries using Pi SDK's exported tool input types (BashToolInput, ReadToolInput, EditToolInput, etc.) - Introduce named interfaces at all boundaries: PiPromptPayload, ToolCallOutputSummary, PiModelReference, PiPersistenceMetadata - Parse tool args once at boundary into typed discriminated union, then trust types internally — no more typeof probing in mappers - Break all dense ternary chains into named steps / helper functions - Import SDK types directly (RegisteredCommand, ResourceLoader, Skill) instead of casting through anonymous inline shapes - Isolate the system prompt SDK escape hatch into a minimal boundary helper with a named interface Behavior is preserved — all 9 real e2e tests still pass. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: regenerate package-lock.json with resolved/integrity fields The previous lockfile regeneration ran under an offline/cached npm context and stripped resolved URLs and integrity hashes from existing entries, which would break npm ci and Nix builds. * fix: update Nix npmDepsHash for regenerated lockfile * chore(server): bump @mariozechner/pi-coding-agent to ^0.67.68 * fix: update lockfile signatures and Nix hash * fix(app): surface agent setter RPC errors as toasts setAgentMode/Model/ThinkingOption/Feature errors from the daemon were only logged to console, so failures like missing API keys silently vanished. Add toast.error fallbacks at all call sites and hoist ToastProvider above SessionProvider so session context can use it. --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Welcome to your Expo app 👋
This is an Expo project created with create-expo-app.
Get started
-
Install dependencies
npm install -
Start the app
npx expo start
In the output, you'll find options to open the app in a
- development build
- Android emulator
- iOS simulator
- Expo Go, a limited sandbox for trying out app development with Expo
You can start developing by editing the files inside the app directory. This project uses file-based routing.
Get a fresh project
When you're ready, run:
npm run reset-project
This command will move the starter code to the app-example directory and create a blank app directory where you can start developing.
Learn more
To learn more about developing your project with Expo, look at the following resources:
- Expo documentation: Learn fundamentals, or go into advanced topics with our guides.
- Learn Expo tutorial: Follow a step-by-step tutorial where you'll create a project that runs on Android, iOS, and the web.
Join the community
Join our community of developers creating universal apps.
- Expo on GitHub: View our open source platform and contribute.
- Discord community: Chat with Expo users and ask questions.
Dictation debugging
Set EXPO_PUBLIC_ENABLE_AUDIO_DEBUG=1 before running npx expo start to render the in-app audio debug card. Pair it with the server-side STT_DEBUG_AUDIO_DIR flag so every dictation includes a copyable path to the saved raw audio file.