Neural pattern trainer (tiara.ts):
- Fix searchMemories() -> search() API call
- Fix storeMemory() -> save() API call
- Use correct Memory class interface
Memory expiration (unified.ts):
- Store expiresAt field (createdAt + ttl) for efficient filtering
- Fix deleteExpired() filter operators ($lt/$gt)
Tiara resource leaks (load-balancer.ts):
- Add stop() methods for LoadBalancer and RequestQueue
- Store interval references to prevent memory leaks
- Use .unref() to not block process exit
Misc:
- Remove package.json description (use GitHub instead)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Consolidate 4-layer memory abstraction into unified Memory class:
- MemoryStore, QdrantMemoryStore, QdrantMemoryBridge, ContinuityManager
are now consolidated into a single src/memory/unified.ts
Single Qdrant collection with type field for discrimination:
- type: "memory" - facts, preferences, decisions
- type: "state" - personas orchestration state
- type: "conversation" - conversation continuity
- type: "session_chain" - session chain index
Key changes:
- New Memory class with save/search/get/delete for memories
- State persistence (saveState/loadState)
- Conversation continuity (startSession, processMessages, etc.)
- Cross-session memory injection for personas bootstrap
- Updated tiara.ts to use Memory instead of QdrantMemoryBridge
- Added bootstrap/personas.ts for lifecycle hooks
Legacy APIs preserved for backwards compatibility.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Create src/config/constants.ts with centralized values for:
- Qdrant URL and collection names
- Embedding model and dimensions
- Timeout values (drone, IPC, fact extraction, provider)
- Memory configuration limits
Update all consumers to import from constants instead of
using hardcoded values:
- src/personas/memory-bridge.ts
- src/personas/tiara.ts
- src/personas/drone-wait.ts
- src/personas/fact-extractor.ts
- src/memory/qdrant.ts
- src/memory/store.ts
- src/config/types.ts
- src/daemon/ipc-client.ts
All constants support env var override via QDRANT_URL etc.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
P0 Critical Fixes:
- Fix import ./tiara → ./claude-flow in plugin/builtin/index.ts
- Create AgentOrchestrator type bridge for council/tiara integration (src/tiara.ts)
- Fix hardcoded state ID in memory-bridge.ts (was causing cross-persona data loss)
P1 Core Functionality:
- Add persona isolation to memory bridge namespace (personas now have private memory)
- Load SKILL.md content into drone prompts (skills now available to drones)
- Inject persona-specific tools from AGENT_CONFIGS into drone prompts
P2 API Consistency:
- Standardize error response format in server.ts (MCP & gateway endpoints)
- WebSocket param validation already in place (verified)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add three new canvas kinds for visual reasoning in WezTerm:
- diagram: flowcharts, architecture diagrams with box/diamond/oval nodes
- graph: nodes and edges with colors and weights (knowledge graphs)
- mindmap: hierarchical tree view for thinking/planning
Canvas features:
- ASCII art rendering with ANSI colors
- Works alongside nvim/LSP in WezTerm panes
- 67% width ratio (Claude:Canvas = 1:2)
- Reusable pane management
Updated tools with new kinds and config documentation.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add showThinking to SurfaceCapabilities type
- Set showThinking=true for CLI, Web, API (user toggleable)
- Set showThinking=false for WhatsApp, Telegram (locked to hide)
- Messaging platforms never show thinking/reasoning output
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Rename PersonaConfig → OrchestrationPersona in personas/types.ts
to avoid confusion with agent/persona.ts:PersonaConfig
- Rename PERSONAS_CONFIGS → ORCHESTRATION_PERSONAS for clarity
- Remove duplicate inline configs in persona.ts, use shared constant
- getPersonaConfig now returns OrchestrationPersona type
Eliminates config duplication and clarifies type naming.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Change comments and commands in new code to use "agent-core"
- Rename OAUTH_DUMMY_KEY to agent-core-oauth-dummy-key
- Add AGENT_CORE_TEST_HOME env var (with OPENCODE_TEST_HOME compat)
- Keep external service URLs (opencode.ai, antigravity.opencode.ai)
- Keep OPENCODE_* flags for upstream compatibility
Part of technical debt cleanup (Phase 7).
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add VoyageEmbeddingProvider for Voyage AI embeddings
- Add MemoryStore with high-level store/search/list API
- Configure Nebius cloud API for Qwen3-Embedding-8B (#1 on MTEB)
- Fix LocalEmbeddingProvider to support both /v1/embeddings and /embeddings
- Fix QdrantVectorStorage to set collection on existing collections
Model: Qwen3-Embedding-8B (70.58 MTEB score, 99% zero-shot, 4096 dims)
Provider: Nebius API (https://api.tokenfactory.nebius.com/v1)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Create shared.ts with common configuration types that can be used
across agent-core and zee gateway:
- Session primitives: SessionScope, ReplyMode, TypingMode, ReplyToMode
- Policy types: DmPolicy, GroupPolicy
- Logging: LogLevel, ConsoleStyle, LoggingConfig
- Network: RetryConfig, BindMode
- Model/Provider: ModelApi, ModelDefinition, ProviderDefinition
- Processing: ThinkingLevel, QueueMode, QueueDropPolicy
Update types.ts to use shared primitives:
- GeneralSettings.logLevel now uses shared LogLevel
- WhatsAppConfig extended with dmPolicy, groupPolicy, allowFrom, retry
- TelegramConfig extended with dmPolicy, groupPolicy, allowFrom, retry
This is the first step toward config consolidation between agent-core
and zee gateway, enabling type-safe sharing of common configuration.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- bun run works more reliably for spawning child processes
- npx tsx has PATH issues when spawned as subprocess
- Enable all persona MCP servers by default
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implements three MCP servers that expose persona capabilities to external
tools via the Model Context Protocol:
- personas-memory: Qdrant-backed semantic memory (store, search, list, delete, stats)
- personas-calendar: Google Calendar integration (events, create, update, delete, free slots, quick add)
- personas-portfolio: Financial tools bridging to Stanley CLI (portfolio, market data, SEC filings, research, backtest)
Each server uses @modelcontextprotocol/sdk with Zod schemas for type-safe
tool definitions and stdio transport for local process communication.
Config entries added (disabled by default):
- "personas-memory": npx tsx src/mcp/servers/memory.ts
- "personas-calendar": npx tsx src/mcp/servers/calendar.ts
- "personas-portfolio": npx tsx src/mcp/servers/portfolio.ts
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Rename packages/opencode to packages/agent-core
- Update bin entry from opencode to agent-core
- Set default_agent to "zee" for persona-first UX
- Update terminal title to show current persona name
- Fix persona colors:
- Zee: #2563EB (blue)
- Stanley: #059669 (emerald green)
- Johny: #DC2626 (red)
- Update all documentation and build script references
- Update root package.json name and dev script
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update all "Clawdis" references to "Zee gateway" in comments/docs
- Clawdis was the old name for the Zee messaging bot (clawdbot fork)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Google Calendar client using OAuth2 tokens from ~/.zee/credentials/google/
- Update zee:calendar tool with real Google Calendar API integration
- Support today, week, month, and custom date range queries
- Auto-display calendar events in canvas sidecar
- Handle token refresh automatically
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add canvas TUI system using WezTerm CLI directly (no external deps).
Canvas panes render text, calendar, document, and table views via
ANSI escape codes and box-drawing characters.
New features:
- CanvasManager class with spawn/show/update/close lifecycle
- Built-in renderers: text, calendar, document, table
- IPC methods: canvas:spawn, canvas:show, canvas:update, canvas:close,
canvas:selection, canvas:list
- Canvas tools now use real IPC instead of placeholders
- WezTerm keybinding: LEADER+c for canvas actions menu
The sidecar daemon now manages:
- LSP server (TCP:7777)
- IPC server (Unix socket)
- Tiara orchestrator (workers, tasks)
- Canvas manager (panes, rendering)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>