Add health status indicators to the TUI footer:
- Internet connectivity (◉ NET) with green/red/muted states
- Connected LLM providers count (◈ N LLM)
Also update CLAUDE.md to document both installation methods
(bun global install and manual ~/bin/agent-core).
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Read version from packages/agent-core/package.json instead of
generating dynamic timestamp versions. This allows setting a
permanent version by editing package.json.
Priority order:
1. AGENT_CORE_VERSION env var
2. OPENCODE_VERSION env var
3. package.json version (new)
4. Dynamic timestamp version
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use permissive types for provider factories (multiple @ai-sdk/provider versions)
- Add @ts-expect-error for LanguageModel/LanguageModelV3 mismatches
- Fix tool type comparisons for "provider-defined" at runtime
- Filter out tool-approval-request/response from content arrays
- Add proper inputTokenDetails/outputTokenDetails to test fixtures
- Cast Model types for SDK compatibility in share-next
- Fix PromiseLike.catch usage in prompt.ts
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Make toModelMessage async to handle AI SDK v6's async convertToModelMessages
- Update config tests to use .agent-core instead of .opencode
- Update tool registry tests to use .agent-core instead of .opencode
- Update all callers of toModelMessage to await the result
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update agent-core and all workspace packages to 0.1.20260112
- Update tiara submodule with version bump
- Update bun.lock for version changes
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Run prettier --write across all 17 packages
- Update lint scripts to use prettier --check
- Exclude dist/build directories from lint (app, sdk, console/app)
- Add missing scripts to console packages (typecheck, lint, test)
- All 55 turbo check tasks now pass
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Security fixes:
- Add containsResolved() to resolve symlinks before path containment check
- Add shellEscapeSingleQuote() and shellEscapeAnsiC() for WezTerm commands
- Update File.read() and File.list() to use symlink-safe containment
CI/Pipeline fixes:
- Fix turbo.json: rename opencode#test → test, add lint task, add unified check task
- Remove fake scripts from agent-core (lint was running tests, not linting)
- Standardize all 11 packages with typecheck, lint, test scripts
Test fixes:
- Fix cache version mismatch in test preload (write version "16")
- Fix model ID filtering to use undated IDs in provider tests
All 43 turbo tasks pass, 690 tests pass.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
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>
- Remove built-in WhatsApp/Telegram gateways from agent-core
- Add GatewaySupervisor to spawn zee gateway as child process
- Auto-restart gateway on crash (up to 5 times per minute)
- Add --gateway flag to daemon command (default: true)
- Update systemd service for headless operation
- Gateway logs forwarded to agent-core journal
Messaging is now handled exclusively by external zee gateway,
keeping agent-core clean for upstream compatibility.
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>
- Unify server port to use DEFAULT_API_PORT (3456) constant
- Make Qdrant URL configurable via QDRANT_URL env var in debug commands
- Fix plugin baseUrl to derive from Server.url() instead of hardcoded
- Update CLI help text to show correct default port
- Fix MDNS service name from opencode to agent-core
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>
- scripts/systemd/install.sh: fix help text CLI commands
- cli/cmd/pr.ts: fix spawned command and messages
- cli/error.ts: fix MCP and model error messages
- cli/cmd/uninstall.ts: also detect "# agent-core" in shell profiles
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>