Skip to content

Commit ccd186c

Browse files
grokifyclaude
andcommitted
docs: prepare v0.4.0 release documentation
- Add v0.4.0 release notes covering PostgreSQL, SMS, webhook features - Update configuration.md with database and webhook sections - Update CHANGELOG.json and regenerate CHANGELOG.md - Add v0.4.0 to mkdocs.yml navigation Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 1859562 commit ccd186c

File tree

5 files changed

+337
-1
lines changed

5 files changed

+337
-1
lines changed

CHANGELOG.json

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,47 @@
55
"versioning": "semver",
66
"commitConvention": "conventional",
77
"releases": [
8+
{
9+
"version": "v0.4.0",
10+
"date": "2026-03-22",
11+
"highlights": [
12+
{ "description": "PostgreSQL support with Row-Level Security (RLS) for multi-tenancy" },
13+
{ "description": "SMS chat provider for sending and receiving messages via Twilio/Telnyx" },
14+
{ "description": "Webhook server for inbound SMS and voice status callbacks" },
15+
{ "description": "Updated dependencies: omnichat v0.4.0 (Slack, Gmail) and omnivoice v0.7.0" }
16+
],
17+
"added": [
18+
{ "description": "PostgreSQL database driver with multi-tenancy support", "commit": "27a2494" },
19+
{ "description": "Row-Level Security (RLS) policies for PostgreSQL tenant isolation", "commit": "27a2494" },
20+
{ "description": "Tenant context package for managing tenant_id in request context", "commit": "27a2494" },
21+
{ "description": "Ent privacy policies for application-level tenant filtering", "commit": "63657c5" },
22+
{ "description": "Database abstraction layer supporting SQLite and PostgreSQL", "commit": "dbd4f27" },
23+
{ "description": "Webhook server for Twilio and Telnyx callbacks", "commit": "26af01c" },
24+
{ "description": "SMS chat provider for omnichat integration", "commit": "230a996" },
25+
{ "description": "Slack configuration with Socket Mode support", "commit": "e1c2eb7" },
26+
{ "description": "Gmail configuration with OAuth 2.0 support", "commit": "e1c2eb7" },
27+
{ "description": "SMS and webhook configuration options", "commit": "e1c2eb7" }
28+
],
29+
"tests": [
30+
{ "description": "Unit tests for tenant context (100% coverage)", "commit": "8f35e59" },
31+
{ "description": "Unit tests for database abstraction layer", "commit": "8f35e59" },
32+
{ "description": "Unit tests for RLS policy application", "commit": "8f35e59" }
33+
],
34+
"documentation": [
35+
{ "description": "Gmail setup guide for OAuth 2.0 configuration", "commit": "b54548f" },
36+
{ "description": "Slack setup guide for Socket Mode configuration", "commit": "b54548f" },
37+
{ "description": "Configuration guide updates for database and webhook settings", "commit": "b54548f" }
38+
],
39+
"chore": [
40+
{ "description": "Add site/ and IDEATION_*.md to gitignore", "commit": "1859562" }
41+
],
42+
"dependencies": [
43+
{ "description": "Update omnichat to v0.4.0 (Slack, Gmail providers)", "commit": "96bb592" },
44+
{ "description": "Update omnivoice to v0.7.0", "commit": "96bb592" },
45+
{ "description": "Add lib/pq v1.12.0 for PostgreSQL driver", "commit": "96bb592" },
46+
{ "description": "Update modernc.org/sqlite to v1.47.0", "commit": "96bb592" }
47+
]
48+
},
849
{
950
"version": "v0.3.0",
1051
"date": "2026-03-16",

CHANGELOG.md

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,47 @@ and this changelog is generated by [Structured Changelog](https://github.com/gro
99

1010
## [Unreleased]
1111

12+
## [v0.4.0] - 2026-03-22
13+
14+
### Highlights
15+
16+
- PostgreSQL support with Row-Level Security (RLS) for multi-tenancy
17+
- SMS chat provider for sending and receiving messages via Twilio/Telnyx
18+
- Webhook server for inbound SMS and voice status callbacks
19+
- Updated dependencies: omnichat v0.4.0 (Slack, Gmail) and omnivoice v0.7.0
20+
21+
### Added
22+
23+
- PostgreSQL database driver with multi-tenancy support ([`27a2494`](https://github.com/plexusone/agentcomms/commit/27a2494))
24+
- Row-Level Security (RLS) policies for PostgreSQL tenant isolation ([`27a2494`](https://github.com/plexusone/agentcomms/commit/27a2494))
25+
- Tenant context package for managing tenant_id in request context ([`27a2494`](https://github.com/plexusone/agentcomms/commit/27a2494))
26+
- Ent privacy policies for application-level tenant filtering ([`63657c5`](https://github.com/plexusone/agentcomms/commit/63657c5))
27+
- Database abstraction layer supporting SQLite and PostgreSQL ([`dbd4f27`](https://github.com/plexusone/agentcomms/commit/dbd4f27))
28+
- Webhook server for Twilio and Telnyx callbacks ([`26af01c`](https://github.com/plexusone/agentcomms/commit/26af01c))
29+
- SMS chat provider for omnichat integration ([`230a996`](https://github.com/plexusone/agentcomms/commit/230a996))
30+
- Slack configuration with Socket Mode support ([`e1c2eb7`](https://github.com/plexusone/agentcomms/commit/e1c2eb7))
31+
- Gmail configuration with OAuth 2.0 support ([`e1c2eb7`](https://github.com/plexusone/agentcomms/commit/e1c2eb7))
32+
- SMS and webhook configuration options ([`e1c2eb7`](https://github.com/plexusone/agentcomms/commit/e1c2eb7))
33+
34+
### Dependencies
35+
36+
- Update omnichat to v0.4.0 (Slack, Gmail providers) ([`96bb592`](https://github.com/plexusone/agentcomms/commit/96bb592))
37+
- Update omnivoice to v0.7.0 ([`96bb592`](https://github.com/plexusone/agentcomms/commit/96bb592))
38+
- Add lib/pq v1.12.0 for PostgreSQL driver ([`96bb592`](https://github.com/plexusone/agentcomms/commit/96bb592))
39+
- Update modernc.org/sqlite to v1.47.0 ([`96bb592`](https://github.com/plexusone/agentcomms/commit/96bb592))
40+
41+
### Documentation
42+
43+
- Gmail setup guide for OAuth 2.0 configuration ([`b54548f`](https://github.com/plexusone/agentcomms/commit/b54548f))
44+
- Slack setup guide for Socket Mode configuration ([`b54548f`](https://github.com/plexusone/agentcomms/commit/b54548f))
45+
- Configuration guide updates for database and webhook settings ([`b54548f`](https://github.com/plexusone/agentcomms/commit/b54548f))
46+
47+
### Tests
48+
49+
- Unit tests for tenant context (100% coverage) ([`8f35e59`](https://github.com/plexusone/agentcomms/commit/8f35e59))
50+
- Unit tests for database abstraction layer ([`8f35e59`](https://github.com/plexusone/agentcomms/commit/8f35e59))
51+
- Unit tests for RLS policy application ([`8f35e59`](https://github.com/plexusone/agentcomms/commit/8f35e59))
52+
1253
## [v0.3.0] - 2026-03-16
1354

1455
### Highlights
@@ -145,7 +186,8 @@ and this changelog is generated by [Structured Changelog](https://github.com/gro
145186
- Roadmap and usage documentation ([`300f5d5`](https://github.com/plexusone/agentcomms/commit/300f5d5))
146187
- README formatting improvements ([`18613b9`](https://github.com/plexusone/agentcomms/commit/18613b9))
147188

148-
[unreleased]: https://github.com/plexusone/agentcomms/compare/v0.3.0...HEAD
189+
[unreleased]: https://github.com/plexusone/agentcomms/compare/v0.4.0...HEAD
190+
[v0.4.0]: https://github.com/plexusone/agentcomms/compare/v0.3.0...v0.4.0
149191
[v0.3.0]: https://github.com/plexusone/agentcomms/compare/v0.2.0...v0.3.0
150192
[v0.2.0]: https://github.com/plexusone/agentcomms/compare/v0.1.0...v0.2.0
151193
[v0.1.0]: https://github.com/plexusone/agentcomms/releases/tag/v0.1.0

docs/configuration.md

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,59 @@ The configuration file is located at `~/.agentcomms/config.json`.
111111
| `port` | int | 3333 | Server port for MCP |
112112
| `data_dir` | string | `~/.agentcomms` | Data directory path |
113113

114+
### Database
115+
116+
Configure the database backend. By default, AgentComms uses SQLite in single-tenant mode.
117+
118+
```json
119+
{
120+
"database": {
121+
"driver": "postgres",
122+
"dsn": "postgres://user:pass@localhost:5432/agentcomms?sslmode=disable",
123+
"multi_tenant": true,
124+
"use_rls": true
125+
}
126+
}
127+
```
128+
129+
| Field | Type | Default | Description |
130+
|-------|------|---------|-------------|
131+
| `driver` | string | `sqlite` | Database driver: `sqlite` or `postgres` |
132+
| `dsn` | string | `data.db` | Connection string (SQLite path or PostgreSQL DSN) |
133+
| `multi_tenant` | bool | false | Enable multi-tenant mode with tenant_id filtering |
134+
| `use_rls` | bool | false | Enable PostgreSQL Row-Level Security (requires postgres driver) |
135+
136+
#### SQLite (Default)
137+
138+
```json
139+
{
140+
"database": {
141+
"driver": "sqlite",
142+
"dsn": "~/.agentcomms/data.db"
143+
}
144+
}
145+
```
146+
147+
#### PostgreSQL with Multi-Tenancy
148+
149+
For production deployments with multiple tenants:
150+
151+
```json
152+
{
153+
"database": {
154+
"driver": "postgres",
155+
"dsn": "postgres://user:pass@localhost:5432/agentcomms?sslmode=require",
156+
"multi_tenant": true,
157+
"use_rls": true
158+
}
159+
}
160+
```
161+
162+
Multi-tenancy uses two isolation layers:
163+
164+
1. **Application-level** - Ent privacy rules filter all queries by `tenant_id` (works on SQLite and PostgreSQL)
165+
2. **Database-level** - PostgreSQL RLS policies provide additional isolation (PostgreSQL only)
166+
114167
### Logging
115168

116169
| Field | Type | Default | Description |
@@ -221,6 +274,54 @@ Slack uses Socket Mode, which means no public webhook URL is required. See the [
221274

222275
Gmail uses OAuth 2.0 for authentication. On first run, you'll need to complete the OAuth flow in your browser. See the [Gmail Setup Guide](gmail-setup.md) for detailed instructions.
223276

277+
#### SMS
278+
279+
| Field | Type | Required | Description |
280+
|-------|------|----------|-------------|
281+
| `enabled` | bool | No | Enable SMS as a chat transport |
282+
283+
SMS uses your configured phone provider (Twilio or Telnyx) for sending and receiving messages. Inbound SMS requires the webhook server to be enabled.
284+
285+
```json
286+
{
287+
"chat": {
288+
"sms": {
289+
"enabled": true
290+
}
291+
}
292+
}
293+
```
294+
295+
### Webhook
296+
297+
Enable the webhook server to receive inbound SMS and voice status callbacks from Twilio/Telnyx.
298+
299+
```json
300+
{
301+
"webhook": {
302+
"enabled": true,
303+
"port": 3334
304+
}
305+
}
306+
```
307+
308+
| Field | Type | Default | Description |
309+
|-------|------|---------|-------------|
310+
| `enabled` | bool | false | Enable webhook server |
311+
| `port` | int | 3334 | Webhook server port |
312+
313+
#### Webhook Endpoints
314+
315+
| Endpoint | Description |
316+
|----------|-------------|
317+
| `/webhook/twilio/sms` | Incoming SMS from Twilio |
318+
| `/webhook/twilio/voice` | Voice status callbacks from Twilio |
319+
| `/webhook/telnyx/sms` | Incoming SMS from Telnyx |
320+
| `/webhook/telnyx/voice` | Voice status callbacks from Telnyx |
321+
| `/health` | Health check endpoint |
322+
323+
Configure your Twilio/Telnyx phone number to send webhooks to `https://your-domain/webhook/twilio/sms` or `https://your-domain/webhook/telnyx/sms`.
324+
224325
#### Channel Mappings
225326

226327
Map chat channels to agents.

docs/releases/v0.4.0.md

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
# Release Notes: v0.4.0
2+
3+
**Release Date:** 2026-03-22
4+
5+
## Overview
6+
7+
AgentComms v0.4.0 adds PostgreSQL support with Row-Level Security for multi-tenancy, SMS as a chat transport, and a webhook server for inbound Twilio/Telnyx callbacks.
8+
9+
## Highlights
10+
11+
- **PostgreSQL with Multi-Tenancy**: Database abstraction supporting both SQLite and PostgreSQL with RLS-based tenant isolation
12+
- **SMS Chat Provider**: Send and receive SMS messages through Twilio or Telnyx
13+
- **Webhook Server**: HTTP server for receiving inbound SMS and voice status callbacks
14+
- **Updated Dependencies**: omnichat v0.4.0 (Slack, Gmail) and omnivoice v0.7.0
15+
16+
## New Features
17+
18+
### PostgreSQL + Row-Level Security
19+
20+
Multi-tenant deployments can now use PostgreSQL with Row-Level Security for database-level isolation:
21+
22+
```json
23+
{
24+
"database": {
25+
"driver": "postgres",
26+
"dsn": "postgres://user:pass@localhost:5432/agentcomms?sslmode=disable",
27+
"multi_tenant": true,
28+
"use_rls": true
29+
}
30+
}
31+
```
32+
33+
Two-layer isolation:
34+
35+
1. **Application-level** - Ent privacy rules filter all queries by `tenant_id`
36+
2. **Database-level** - PostgreSQL RLS policies enforce isolation at the database
37+
38+
### SMS Chat Provider
39+
40+
SMS is now available as a chat transport alongside Discord, Slack, Telegram, WhatsApp, and Gmail:
41+
42+
```json
43+
{
44+
"chat": {
45+
"sms": {
46+
"enabled": true
47+
}
48+
}
49+
}
50+
```
51+
52+
SMS uses your configured phone provider (Twilio or Telnyx) and integrates with the existing channel mapping system.
53+
54+
### Webhook Server
55+
56+
A dedicated webhook server receives callbacks from Twilio and Telnyx:
57+
58+
```json
59+
{
60+
"webhook": {
61+
"enabled": true,
62+
"port": 3334
63+
}
64+
}
65+
```
66+
67+
| Endpoint | Description |
68+
|----------|-------------|
69+
| `/webhook/twilio/sms` | Incoming SMS from Twilio |
70+
| `/webhook/twilio/voice` | Voice status callbacks |
71+
| `/webhook/telnyx/sms` | Incoming SMS from Telnyx |
72+
| `/webhook/telnyx/voice` | Voice status callbacks |
73+
| `/health` | Health check |
74+
75+
## Architecture Changes
76+
77+
### Tenant Context
78+
79+
New `internal/tenant` package manages tenant context propagation:
80+
81+
```go
82+
ctx = tenant.WithTenantID(ctx, "tenant-123")
83+
tenantID := tenant.FromContext(ctx) // Returns "local" if not set
84+
```
85+
86+
### Database Abstraction
87+
88+
The `internal/database` package provides driver-agnostic database operations:
89+
90+
- `database.Open(cfg)` - Opens SQLite or PostgreSQL based on config
91+
- `ApplyRLSPolicies(db)` - Creates RLS policies for PostgreSQL
92+
- PostgreSQL driver wrapper sets `app.current_tenant` per transaction
93+
94+
### Ent Privacy Policies
95+
96+
Agent and Event schemas now include privacy policies for tenant filtering:
97+
98+
```go
99+
func (Agent) Policy() ent.Policy {
100+
return privacy.Policy{
101+
Query: privacy.QueryPolicy{rule.FilterTenantRule()},
102+
Mutation: privacy.MutationPolicy{rule.FilterTenantRule()},
103+
}
104+
}
105+
```
106+
107+
## Documentation
108+
109+
- [Configuration Guide](../configuration.md) - Database and webhook configuration
110+
- [Slack Setup](../slack-setup.md) - Slack integration guide
111+
- [Gmail Setup](../gmail-setup.md) - Gmail integration guide
112+
113+
## Dependencies
114+
115+
| Package | Version | Change |
116+
|---------|---------|--------|
117+
| omnichat | v0.4.0 | Slack, Gmail providers |
118+
| omnivoice | v0.7.0 | Updated voice stack |
119+
| lib/pq | v1.12.0 | PostgreSQL driver |
120+
| modernc.org/sqlite | v1.47.0 | Updated SQLite driver |
121+
122+
## Upgrade Guide
123+
124+
This release is backwards compatible. Existing SQLite deployments continue to work without changes.
125+
126+
### For PostgreSQL Migration
127+
128+
1. Create a PostgreSQL database
129+
2. Update `config.json` with database settings:
130+
```json
131+
{
132+
"database": {
133+
"driver": "postgres",
134+
"dsn": "postgres://user:pass@localhost:5432/agentcomms?sslmode=require",
135+
"multi_tenant": true,
136+
"use_rls": true
137+
}
138+
}
139+
```
140+
3. Start the daemon - schema migrations run automatically
141+
4. RLS policies are applied after schema creation
142+
143+
### For SMS Integration
144+
145+
1. Ensure webhook server is enabled
146+
2. Configure your Twilio/Telnyx number to send SMS webhooks to your server
147+
3. Enable SMS in chat config
148+
149+
## Full Changelog
150+
151+
See [CHANGELOG.md](../../CHANGELOG.md) for the complete list of changes.

mkdocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ nav:
5151
- Gmail Setup: gmail-setup.md
5252
- Architecture: architecture.md
5353
- Releases:
54+
- v0.4.0: releases/v0.4.0.md
5455
- v0.3.0: releases/v0.3.0.md
5556
- v0.2.0: releases/v0.2.0.md
5657
- v0.1.0: releases/v0.1.0.md

0 commit comments

Comments
 (0)