Algis Dumbris and Claude Opus 4.6
30d62de350
feat: v0.7.0 — analytics dashboard, PWA, UX fixes, MCP prompts
...
Analytics: time-series message graph with 5 time spans (1h/4h/24h/7d/30d),
top-5 agents and channels leaderboards, summary cards. 4 new REST endpoints.
PWA: web app manifest, service worker with cache-first static/network-only
API strategy, push notifications via Web Push API with VAPID keys, push
subscription management endpoints, SQLite migration for subscriptions.
UX fixes: auto-resize compose textarea (3-12 lines), inline editable agent
display name, editable human display name in settings, smart mention/channel
highlighting (existing→link, deleted→inactive badge, unknown→plain text),
font size -/+ preference (12-24px persisted in localStorage), version footer
with GitHub link.
MCP: 4 prompts — daily-digest, agent-health-check, channel-overview,
debug-agent. Registered with prompt capabilities enabled.
Code review fixes: scoped push unsubscribe to user, capped analytics limit
at 100, hardened HTML strip regex, bounded SW cache, backend push unsub on
disable.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-17 10:36:58 +02:00
Algis Dumbris
0a61781f37
Merge branch 'worktree-agent-a7d51ffb' into 007-platform-features-bundle
2026-03-16 20:38:02 +02:00
Algis Dumbris and Claude Opus 4.6
87f24afd58
feat: enterprise identity provider support — GitHub, Google, Azure AD login
...
Add external IdP authentication via OAuth (GitHub) and OIDC (Google, Azure AD).
Users can sign in with enterprise credentials; accounts are auto-provisioned
and linked on first login. Configured entirely via environment variables.
- schema/011_external_auth.sql: user_identities table + email column on users
- internal/auth/idp/: provider interface, GitHub OAuth, generic OIDC, store,
handlers (list providers, login redirect, callback with auto-provisioning)
- internal/auth/user_store.go: GetUserByEmail + SetEmail for IdP linking
- cmd/synapbus/main.go: wire IdP routes + agent provisioner adapter
- web/src/routes/login/+page.svelte: IdP buttons above password form
- Tests: domain restriction, store CRUD, provider listing, user provisioning
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-16 20:37:27 +02:00
Algis Dumbris and Claude Opus 4.6
24a7a33a2c
feat: A2A inbound gateway — external agents can send tasks to SynapBus agents
...
Add JSON-RPC 2.0 endpoint at POST /a2a with three methods:
- message.send: validates target agent, creates tracked task, delivers DM
- tasks.get: returns task state, auto-completes when target agent replies
- tasks.cancel: transitions non-terminal tasks to CANCELED
Includes SQLite migration (010_a2a_tasks), task store, gateway with
interface-based dependencies, and 9 tests covering happy paths and
error cases.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-16 20:31:16 +02:00
Algis Dumbris and Claude Opus 4.6
42775df65f
feat: webhooks & Kubernetes Job runner for event-driven agents
...
- Webhook registration via MCP (register_webhook, list_webhooks, delete_webhook)
- HMAC-SHA256 payload signing, SSRF-safe HTTP client, loop detection (depth 5)
- 8-worker goroutine delivery pool with exponential backoff retry (1s/5s/30s)
- Dead letter queue with auto-purge, auto-disable after 50 consecutive failures
- Per-agent rate limiting (60 deliveries/min)
- K8s Job runner (register_k8s_handler, list_k8s_handlers, delete_k8s_handler)
- Auto-detect in-cluster via InClusterConfig, NoopRunner fallback
- REST API for webhook deliveries, dead letters, K8s job runs and logs
- Web UI: webhook management, K8s handler pages, dead letters view
- MultiDispatcher fan-out pattern for webhook + K8s event dispatch
- SQLite migration 009: webhooks, webhook_deliveries, k8s_handlers, k8s_job_runs
- 51 tests across 9 test packages, all passing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-14 18:14:04 +02:00
Algis Dumbris and Claude Opus 4.6
2575ce2626
feat: OAuth 2.1 with PKCE, MCP auth, dead letters, channel management, and UX polish
...
- Add OAuth 2.1 identity provider with PKCE S256 (ory/fosite)
- Add RFC 7591 dynamic client registration for MCP clients
- Add RFC 8414 OAuth metadata discovery endpoint
- Add branded OAuth login/authorize pages with SynapBus design
- Add SYNAPBUS_BASE_URL env var for remote/LAN deployments
- Add OAuth bearer token authentication for MCP connections
- Add dead letter queue with Web UI management page
- Add channel leave, member list, and improved channel management
- Add agent auth middleware for MCP-authenticated requests
- Add console printer for structured server startup output
- Hide human accounts from agent management UI
- Fix SSE through middleware (Flush/Unwrap support)
- Fix graceful shutdown by closing SSE clients before server stop
- Fix localhost/127.0.0.1 redirect URI normalization for OAuth
- Remove agent self-registration MCP tools (manage via Web UI only)
- Update README with OAuth setup guide and MCP client config example
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-14 12:54:02 +02:00
Algis Dumbris and Claude Opus 4.6
1cb0bb7a8f
feat: merge auth, channels, and trace logging (Round 2)
...
- Human Auth: OAuth 2.1 with fosite, user registration, sessions, PKCE
- Channels: public/private channels, membership, broadcast, MCP tools
- Trace Logging: enhanced traces, REST API, metrics, retention cleanup
- Fixed migration numbering: channels=002, trace=003, auth=004
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 12:02:47 +02:00
Algis Dumbris
6ad78d58e0
fix: resolve migration version conflict (channels=002, trace=003)
2026-03-13 12:01:26 +02:00
Algis Dumbris and Claude Opus 4.6
be098081b4
feat: implement trace logging, REST API, and observability
...
Add comprehensive trace logging and observability features:
- Enhanced trace store with owner-scoped queries, filtering (agent, action,
time range), pagination, streaming export, and retention cleanup
- REST API endpoints: GET /api/traces (list with filters), GET /api/traces/export
(streaming JSON/CSV), GET /api/traces/stats (action counts)
- Owner isolation enforced at every layer (store, API, tests)
- Hand-rolled Prometheus metrics (pure Go, zero CGO): traces_total,
traces_by_action, errors_total, active_agents at GET /metrics
- Configurable slog JSON handler with --log-level flag
- Request ID middleware for cross-referencing logs and traces
- Batch trace writing (64 entries or 100ms flush interval)
- Background retention cleanup via --trace-retention flag
- SQL migration 002 adds owner_id column and composite indexes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 11:57:05 +02:00
Algis Dumbris and Claude Opus 4.6
e3dcfece48
feat: implement channels with membership and MCP tools
...
Add channel management feature with public/private channels,
membership (owner/member roles), invitations, broadcast messaging,
and full MCP tool exposure.
New files:
- internal/channels/ - types, store, service, validation, errors
- internal/mcp/channel_tools.go - 8 MCP tools for channel operations
- schema/002_channels.sql - migration for channel_invites table
MCP tools: create_channel, join_channel, leave_channel, list_channels,
invite_to_channel, kick_from_channel, send_channel_message, update_channel
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 11:56:50 +02:00
Algis Dumbris and Claude Opus 4.6
f1bbb86a67
feat: initial SynapBus project scaffolding
...
Bootstrap the SynapBus project — a local-first, MCP-native agent-to-agent
messaging service written in Go.
Includes:
- Project constitution (10 architectural principles)
- 10 feature specs with implementation tasks:
001 Core Messaging, 002 Agent Registry, 003 Human Auth (OAuth 2.1),
004 Channels, 005 Web UI, 006 MCP Server, 007 Trace Logging,
008 Semantic Search, 009 Attachments, 010 Swarm Patterns
- Go project scaffold (cobra CLI, SQLite schema, Makefile)
- Speckit templates and commands
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-13 11:18:19 +02:00