Commit Graph

64 Commits

Author SHA1 Message Date
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 d9f7807ab2 feat(gateway): add node capability negotiation foundation 2026-02-16 12:14:25 -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 fbd24d4379 feat(gateway): support per-channel and per-session queue policy overrides 2026-02-16 11:51:26 -08:00
William Valentin f7284a4ef1 feat(gateway): add configurable lane queue mode, cap, and overflow 2026-02-16 11:48:45 -08:00
William Valentin 83b8e38b11 feat(runtime): add talk mode and capture tools 2026-02-16 10:17:24 -08:00
William Valentin 8e9f9aa4de feat(channels): add bluebubbles imessage adapter 2026-02-16 09:41:26 -08:00
William Valentin 693dcd8421 feat(channels): add google chat adapter and webhook route 2026-02-16 02:07:55 -08:00
William Valentin 8e35d2d674 feat(channels): add microsoft teams bot framework adapter 2026-02-16 02:00:14 -08:00
William Valentin 0269c6032d feat(channels): add signal-cli channel adapter 2026-02-16 01:54:54 -08:00
William Valentin 323bef0526 feat(gateway): add optional bonjour/mdns discovery 2026-02-16 01:48:59 -08:00
William Valentin ae70818ec1 fix: resolve strict typecheck fallout in setup, routing, and tests 2026-02-15 23:22:05 -08:00
William Valentin 948d4ac6d8 chore(lint): burn down remaining warnings to zero 2026-02-15 23:14:21 -08:00
William Valentin 49b752e8b0 chore(lint): reduce warning debt across core adapters and model clients 2026-02-15 23:03:42 -08:00
William Valentin 8c94bb51d0 audit follow-up: continue warning burn-down in factory and service tests 2026-02-15 22:51:20 -08:00
William Valentin e16c0bc2c7 audit follow-up: reduce warning hotspots in automation and gateway tests 2026-02-15 22:49:45 -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 46538e71a8 chore(lint): restore zero-error eslint baseline 2026-02-15 22:25:29 -08:00
William Valentin a525ec7b2d fix(memory): wire auto_extract through orchestrator compaction 2026-02-15 22:18:55 -08:00
William Valentin 0220ec10dd feat(config): persist config.patch updates atomically 2026-02-15 22:03:21 -08:00
William Valentin 63d645bd87 feat(gateway): add websocket ingress rate limiting 2026-02-15 21:56:13 -08:00
William Valentin d93c1c9f8d fix(gateway): enforce request body size limits 2026-02-15 21:44:36 -08:00
William Valentin 22959ea3aa fix(ui): sanitize markdown before chat DOM insertion 2026-02-15 21:44:32 -08:00
William Valentin c6e3d09ecc feat(gateway): add sender presence tracking 2026-02-15 19:28:16 -08:00
William Valentin ef48a86f80 test: make suites robust in restricted environments 2026-02-15 18:39:39 -08:00
William Valentin e0cb3b96cc feat(gateway): report Matrix service and redact access token 2026-02-15 18:02:14 -08:00
William Valentin b574d170d1 feat(security): wire /elevate to session config 2026-02-15 16:59:18 -08:00
William Valentin 67058c8719 feat(security): harden tool provenance and skill isolation 2026-02-15 10:16:55 -08:00
William Valentin b22d6fa0ce feat(gateway): include audio + web_search in system.services 2026-02-14 09:27:42 -08:00
William Valentin 4bb4ad4fba fix(ui): show services in settings page 2026-02-14 09:19:57 -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 955b9e28e0 feat: add OpenAI OAuth, strict model overrides, and Gmail pull mode 2026-02-13 14:55:40 -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 6e8984f788 feat(core): add command, intent, and routing primitives 2026-02-12 22:47:22 -08:00
William Valentin 90ce622080 feat(policy): enforce truthfulness and autonomy guardrails
Add runtime truthfulness modes and autonomy-level tool gating with audit metadata for overrides/denials.

Wire policy through prompt assembly, tool execution context, and daemon/gateway agent paths; update tests and planning state for Phase 3 PR #2 completion.
2026-02-12 16:06:45 -08:00
William Valentin a8a2c59313 feat: implement model persistence with per-session overrides
- Add session_config SQLite table for per-session settings
- Update routing to support session override → agent config → global default resolution chain
- Upgrade WebChat SessionBridge from NativeAgent to AgentOrchestrator
- Add /model, /local, /cloud commands to Telegram adapter
- Add /model command to WebChat gateway handlers
- Clear session overrides on /reset command
- Pass memoryStore and config through to SessionBridge
- Add comprehensive tests for all new functionality

Fixes model persistence bug where TUI model changes didn't affect WebChat/Telegram sessions. Now:
- TUI /model sets global default (persists across restarts, affects all new sessions)
- WebChat/Telegram /model sets session override (only that conversation, cleared on /reset)
- WebChat sessions gain AgentOrchestrator features (delegation, compaction, memory)
2026-02-11 21:51:38 -08:00
William Valentin 6090508bad style: auto-fix ESLint issues (curly braces and formatting)
- Add curly braces to all if/else/for/while statements
- Fix indentation and trailing spaces
- Auto-fixed 372 linting errors using eslint --fix
- Remaining issues are warnings only (non-null assertions, explicit any types)
2026-02-11 10:30:24 -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 aaaf4a361a fix(webchat): move action buttons outside message bubble
Wrap each message in a .message-wrapper div and render copy/edit buttons
below the bubble instead of overlapping inside it. Improves readability
and prevents buttons from covering message content.
2026-02-10 21:26:22 -08:00
William Valentin 27ee3b2c10 feat(webchat): add copy and edit buttons on chat messages
Copy button on all messages (clipboard API with checkmark feedback).
Edit button on user messages populates the input textarea.
Buttons appear on hover (desktop) or always visible (mobile).
2026-02-10 20:53:49 -08:00
William Valentin 4c8ba3f20c feat(webchat): add slash commands, autocomplete popup, and web search button
Add 6 slash commands (/help, /reset, /compact, /usage, /status, /model)
with autocomplete popup (arrow keys, Enter/Tab/Escape navigation).
Search button toggles web search mode by prepending instruction to message.
Backend agent.send extended with metadata for server-side command routing.
2026-02-10 20:45:14 -08:00
William Valentin 7a69794418 fix: sync model tier between TUI and WebChat when switching models
ModelRouter now supports multiple tier-change listeners via addOnTierChange(),
SessionBridge subscribes to tier changes and propagates them to all WebChat
agents (both existing and newly created), and the fullscreen TUI now also
updates the agent's tier when switching models (matching minimal TUI behavior).
2026-02-10 20:22:40 -08:00
William Valentin c3ca3f3776 feat(03-02): extend dashboard with live ops sections
- Core counters: messages processed, sessions, queue depth, uptime, active requests, errors
- Model performance table: recent calls with latency, tokens/sec, provider, status
- Event stream: scrollable log with color-coded levels (error/warn/info)
- Active requests: in-flight request table with session, channel, duration
- Channels grid: existing channel status cards preserved
- Dual timer refresh: 3s for metrics/events/requests, 10s for health/channels
- Targeted DOM updates via getElementById for flicker-free fast updates
2026-02-09 21:34:11 -08:00
William Valentin a0feff9637 feat(03-01): hook metrics recording into agent request flow
- Track active requests with startRequest/endRequest around lane queue work
- Increment messagesProcessed on successful agent.process completion
- Record errors and error events on agent.send failures
- Record tool failure events with tool name and error details
2026-02-09 21:29:14 -08:00
William Valentin bd1880a44c feat(03-01): create MetricsCollector and wire into gateway
- Add MetricsCollector class with counters, model call ring buffer, event ring buffer, and active request tracking
- Add system.metrics, system.events, system.activeRequests RPC handlers
- Add GET /health unauthenticated HTTP endpoint for Docker HEALTHCHECK
- Add totalPending() to LaneQueue for queue depth metrics
- Add 20 tests for MetricsCollector
2026-02-09 21:28:05 -08:00