pond-db 0.2.5

Lossless storage and hybrid search for AI agent sessions, across every agentic client.
Documentation
# opencode reference snapshot

Source: https://github.com/anomalyco/opencode
Local clone: `~/pjv/anomalyco/opencode/`
Commit: `fea9a0bd4c1c9d9b66af84a43936a84626d723d8`
Snapshot date: 2026-05-07

## Why these files

Reference for designing pond's canonical Part union and message/session schemas (see `/docs/design.md` section 6). Files preserve their original package-relative paths under this directory.

## Ranked relevance (most useful first)

1. `packages/opencode/src/session/message-v2.ts` - canonical Part union (TextPart, ReasoningPart, FilePart, ToolPart, SnapshotPart, PatchPart, AgentPart, SubtaskPart, RetryPart, CompactionPart, StepStartPart, StepFinishPart) + ToolState union + UserMessage. Effect Schema source of truth.
2. `packages/sdk/js/src/v2/gen/types.gen.ts` - auto-generated SDK types mirroring (1) for the public API surface; includes Message, Part, Session, and event variants (TextStarted, TextDelta, ToolCalled, ...).
3. `packages/opencode/src/v2/session-message.ts` - Effect Schema classes for User / Assistant / Synthetic / Shell / Compaction messages with content unions.
4. `packages/opencode/src/session/session.sql.ts` - Drizzle schema (SessionTable, MessageTable, PartTable). Storage-layer JSON column shape.
5. `packages/opencode/src/provider/sdk/copilot/chat/openai-compatible-api-types.ts` - OpenAI/Claude/Copilot-compatible chat request shape (replay target).
6. `packages/opencode/src/provider/sdk/copilot/responses/openai-responses-api-types.ts` - response message types for streaming/structured outputs (function_call, reasoning, tool output).
7. `packages/opencode/src/session/schema.ts` - brand-typed IDs (SessionID, MessageID, PartID).
8. `packages/opencode/src/provider/schema.ts` - Provider/Model ID brands; well-known providers enum.
9. `packages/opencode/src/control-plane/types.ts` - Workspace / WorkspaceInfo (editor context).
10. `packages/opencode/src/v2/event.ts` - EventV2 factory for session state-change events.

## Notes on shape

- Source of truth: Effect `Schema.Class` / `Schema.Struct`, with Zod generated via a `withStatics((s) => ({ zod: zod(s) }))` overlay.
- Streaming and non-streaming variants are **unified** under a single Part type, distinguished by `time.start` / `time.end` and `ToolStatePending | Running | Completed | Error`. (Pond's design currently lists separate Start/Delta/End streaming variants - reconcile.)
- SDK types (`types.gen.ts`) are autogenerated; treat (1) as primary, (2) as the wire-shaped projection.