William Valentin
163b1a0139
feat: harden voice reliability with tts fallback and talk controls
2026-02-26 17:29:23 -08:00
William Valentin
b39010d602
fix(tests): resolve 4 post-phase test failures
...
- platformClients.integration: iOS/Android push tests lacked
setStatus() call before listNodes(), so platform filter excluded
nodes. Added publishHeartbeat() to set platform on connection state.
- server.test: agent.send now emits run_state events before done (Phase
1). Added sendAndWaitForDone() helper and updated test to find done
event rather than assuming index 0.
- handlers.test: updated agent.send/cancel assertions to use find()
and pass send arg to agent.cancel, consistent with run_state events.
- httpBody: req.destroy() closed socket before 413 response could be
sent. Removed socket destruction from body reader; 413 responses now
send Connection: close so Node closes the connection cleanly.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-02-25 11:55:14 -08:00
William Valentin
092a9baeae
fix(router): align fallback semantics and oauth provider behavior
2026-02-23 17:11:15 -08:00
William Valentin
ca463d5ca2
feat(gateway): add observability sources, series, and service log RPCs
2026-02-22 20:54:37 -08:00
William Valentin
abaa9be3f1
Add whisper docker dependency controls to dashboard
2026-02-22 19:48:27 -08:00
William Valentin
8fcbb5f521
Add whisper docker dependency status to gateway dashboard
2026-02-22 19:20:09 -08:00
William Valentin
c79e082905
gateway: add local backend update action
2026-02-22 16:57:57 -08:00
William Valentin
6f2925ed10
gateway: add local backend daemon controls to dashboard
2026-02-22 16:36:31 -08:00
William Valentin
7c121b82c6
feat(councils-ui): add on-demand council conversations panel and model config controls
2026-02-21 11:26:04 -08:00
William Valentin
7a2176c15c
feat(dashboard): configure services from clickable service cards
2026-02-19 10:50:16 -08:00
William Valentin
708683297a
feat(gateway): global tier provider/model defaults with catalog-backed options
2026-02-19 10:17:16 -08:00
William Valentin
182827d612
feat(config): support assistant briefing runtime edits and setup defaults
2026-02-18 12:15:37 -08:00
William Valentin
43b9324c14
feat(webchat): add personal assistant mode controls in settings
2026-02-18 12:04:37 -08:00
William Valentin
9c9ab92e9d
feat(gateway): expand sessions surface with operator metadata and paging hardening
2026-02-17 16:14:06 -08:00
William Valentin
fee8be1de0
feat(gateway): expose context usage and warning events
2026-02-16 15:44:09 -08:00
William Valentin
93621bbe6e
feat(analytics): add top tools and topics to session analytics
2026-02-16 14:45:45 -08:00
William Valentin
3d7144b2c5
feat(gateway): add system.sessionAnalytics usage snapshot RPC
2026-02-16 14:45:45 -08:00
William Valentin
58c4b0b9bb
Add iOS node push-token registration foundation
2026-02-16 12:47:34 -08:00
William Valentin
bea4c54f3b
Add macOS companion node status and system.nodes APIs
2026-02-16 12:41:58 -08:00
William Valentin
8a0b4f3dbb
Add canvas artifact RPC foundation for A2UI
2026-02-16 12:36:02 -08:00
William Valentin
fe8674e108
Add node location access RPCs and operator visibility
2026-02-16 12:30:55 -08:00
William Valentin
de0c1f41b3
feat(channels): add mattermost adapter and wiring
2026-02-16 12:09:44 -08:00
William Valentin
813a0dc5c5
feat(gateway): complete openclaw phase1 queue parity v2
2026-02-16 12:04:33 -08:00
William Valentin
1a075e62b0
audit follow-up: burn down lint hotspots and dedupe channel gating flows
2026-02-15 22:44:04 -08:00
William Valentin
0220ec10dd
feat(config): persist config.patch updates atomically
2026-02-15 22:03:21 -08:00
William Valentin
c6e3d09ecc
feat(gateway): add sender presence tracking
2026-02-15 19:28:16 -08:00
William Valentin
e0cb3b96cc
feat(gateway): report Matrix service and redact access token
2026-02-15 18:02:14 -08:00
William Valentin
0493660e7d
feat(gateway): add system.services and dashboard services grid
2026-02-14 00:42:41 -08:00
William Valentin
cc54b3a10c
feat(webchat): support image attachments
2026-02-13 15:03:48 -08:00
William Valentin
46099664f0
feat(gateway): wire safe-point runtime cancellation for agent.cancel
2026-02-13 08:51:14 -08:00
William Valentin
9f81c01603
feat(session): persist model tier overrides per session
...
Store per-session config in SQLite and route /model and /reset through command fast-paths so channel sessions keep independent model selection across reconnects and restarts.
2026-02-13 01:04:26 -08:00
William Valentin
eea7ca62a8
chore: increase GmailWatcher default poll interval from 60s to 300s
2026-02-11 08:43:48 -08:00
William Valentin
1e29da4da2
feat: complete DM pairing codes with channel adapters, gateway handlers, and TUI command (Tier 4 feature 4)
2026-02-09 18:28:10 -08:00
William Valentin
4413c4dc7c
feat: add gateway lock, shell completion, and tailscale serve (Tier 4 features 1-3)
2026-02-09 13:29:59 -08:00
William Valentin
9be8f76bc7
feat: implement Tier 3 features — lane queue, credential redaction, token dashboard, xAI, Voyage AI
...
- Lane Queue: per-session FIFO queue in gateway replacing reject-when-busy (9 tests)
- Credential Redaction: redactConfig() expanded to cover 18+ secret fields (16 tests)
- Web UI Token Dashboard: system.tokenUsage endpoint + Usage page with summary cards
- xAI (Grok) Provider: OpenAI-compatible client with model pricing
- Voyage AI Embeddings: new embedding provider with configurable dimensions (5 tests)
- Update gap analysis: 90→95 match (70%→74%), Tier 3 section marked DONE
- Update state.json: test count 1001→1034, add tier3_completion entry
Total: 1034 tests passing across 85 files, typecheck clean
2026-02-09 10:32:57 -08:00
William Valentin
e052778b0a
feat: add gateway protocol attachment support
...
Extends the gateway wire protocol with GatewayAttachment type and
attachment event. agent.send handler now accepts optional attachments
parameter and converts them for the agent pipeline. Includes 5 new
tests for protocol and handler layers.
2026-02-07 09:09:06 -08:00
William Valentin
ee0af0cc06
feat: add tool allow/deny profiles with per-agent and per-provider filtering
...
Implements configurable tool filtering with four built-in profiles
(minimal, messaging, coding, full), global and per-agent/per-provider
allow/deny lists with glob pattern support, and defense-in-depth
enforcement at both tool listing and execution time.
New: src/tools/policy.ts (ToolPolicy engine), src/tools/policy.test.ts (37 tests)
Modified: config schema, tool registry, tool executor, NativeAgent,
AgentOrchestrator, daemon wiring, gateway tool handler, test mocks
2026-02-06 15:30:34 -08:00
William Valentin
306e11bd2e
feat: add multi-model delegation (Phase 0) and context compaction (Phase 1)
...
Phase 0 — Multi-Model Delegation:
- AgentOrchestrator wraps NativeAgent with delegate() for stateless
single-turn calls to any model tier (fast/default/complex/local)
- DelegationConfig maps task types (compaction, classification, etc.)
to model tiers
- Delegation prompts for compaction, memory extraction, classification,
and tool summarisation
- Per-tier usage tracking for cost visibility
- Config schema: agents.delegation and agents.primary_tier
Phase 1 — Context Compaction:
- Token estimation (char/4 heuristic) with context window lookup
- shouldCompact() threshold check against context window percentage
- compactHistory() splits old/recent messages, delegates summary to
fast tier, returns CompactionResult
- Automatic compaction in AgentOrchestrator.process() when configured
- Force-compact via orchestrator.compact() with session persistence
- Session.replaceHistory() with atomic SQLite transaction
- /compact TUI command with feedback on compacted token counts
- Config schema: compaction.enabled, threshold_pct, keep_turns,
summary_max_tokens
Tests: 385 passing across 50 files (22 new tests in 2 new test files)
2026-02-06 13:17:02 -08:00
William Valentin
aa95f2132c
feat: add channel adapter abstraction with Telegram and WebChat adapters
...
Implement Phase 3 channel adapters that decouple message sources from
the agent via a uniform ChannelAdapter interface and ChannelRegistry.
- Add ChannelAdapter/InboundMessage/OutboundMessage types
- Add ChannelRegistry for adapter lifecycle and message routing
- Add TelegramAdapter (grammy bot, auth middleware, confirmations, chunking)
- Add WebChatAdapter (thin shim over GatewayServer)
- Refactor daemon to use ChannelRegistry with per-channel-per-user agents
- Add config.get/config.patch gateway handlers (Phase 2 loose end)
- Add system.restart gateway handler (Phase 2 loose end)
- Add implementation plans and design docs
Tests: 225 passing (33 new channel adapter + gateway handler tests)
2026-02-05 20:00:36 -08:00
William Valentin
f30a8bc318
feat(gateway): add WebSocket gateway with JSON-RPC protocol and auth
...
Phase 2 of the Flynn roadmap. Adds a WebSocket gateway server that
starts alongside the Telegram bot, providing real-time API access to
the agent, sessions, and tools.
Protocol: JSON-RPC-like (request/response/event) over WebSocket.
8 methods: agent.send, agent.cancel, sessions.list, sessions.history,
sessions.create, tools.list, tools.invoke, system.health.
Auth: Bearer token + Tailscale identity header support.
Session bridge: per-connection agent instances with shared model router.
New files: src/gateway/ (protocol, router, server, auth, session-bridge,
handlers for agent/sessions/tools/system).
57 new tests (181 total), typecheck clean.
2026-02-05 19:11:25 -08:00