4.2 KiB
Communication Accounts
Status: draft implementation scaffold
Slug: communication-accounts
Communication Accounts is the LogicSRC standard for connecting external social and email identities, delegating scoped access to humans, agents, workflows, and plugins, and auditing every read/write action without exposing raw credentials.
First-Party Plugins
social-accounts
email-accounts
@logicsrc/plugin-social-accountsmanages social/network accounts such as Mastodon, Bluesky, GitHub, X/Twitter, Reddit, LinkedIn, YouTube, Discord, Telegram, and future ActivityPub/RSS-style adapters.@logicsrc/plugin-email-accountsmanages email inboxes and outbound sending identities through IMAP/SMTP, Gmail, Microsoft Graph, ForwardEmail.net, local bridges, and custom providers.
Both plugins share contracts from @logicsrc/account-core.
Core Objects
connected_account
account_provider
account_permission_grant
account_policy
account_audit_event
credential_broker_call
email_message_cache
social_post_cache
The shared account model records account kind, provider, account display metadata, granted scopes, declared capabilities, status, credential reference, ownership scope, and sync timestamps.
Provider Boundary
Provider adapters implement the shared account provider contract:
provider.id
provider.kind
provider.authMethods
provider.capabilities
provider.getAuthUrl()
provider.completeAuth()
provider.refreshCredential()
provider.testConnection()
provider.revoke()
Social providers extend this with profile, draft, publish, media, mentions, comments, and analytics operations.
Email providers extend this with search, read, draft, send, reply, forward, archive, label, and delete operations.
Permissions
Shared permissions:
accounts:connect
accounts:list
accounts:read_metadata
accounts:test
accounts:revoke
accounts:sync
accounts:audit:read
Social and email permissions use colon-style grant scopes such as social:post:publish, social:mentions:read, email:headers:read, email:send, and email:attachments:read.
Plugin manifest capabilities use the existing LogicSRC dotted capability convention such as social.post.publish and email.headers.read.
Policy Gates
These actions require policy evaluation by default:
social:post:publish
social:post:delete
social:dm:read
social:dm:send
email:attachments:read
email:send
email:delete
Default write behavior is dry-run first, approval required for public publishing and outbound email, and deny for critical risk unless an admin override exists.
Credential Rules
- Raw secrets must never be printed or exposed to agents by default.
- OAuth refresh tokens and app passwords must be stored through a credential broker.
- Provider calls should execute through a trusted runtime boundary.
- Credential access must create audit events.
- CLI, API, MCP, TUI, and PWA previews must redact secret-like fields.
CLI Namespaces
logicsrc accounts providers
logicsrc accounts list
logicsrc accounts audit <account-id>
logicsrc social providers
logicsrc social accounts
logicsrc social post <account-id> --text "Launching today" --dry-run
logicsrc email providers
logicsrc email accounts
logicsrc email send <draft-id> --dry-run
The initial scaffold exposes provider listings and dry-run placeholders. Live connect, sync, send, and publish flows require durable credential broker, approval queue, and audit persistence.
Storage
Deployable database migrations live under supabase/migrations/.
The communication account scaffold adds:
connected_accounts
account_permission_grants
account_audit_events
email_message_cache
social_post_cache
MVP Order
- Stabilize
packages/account-core. - Validate account schemas through
packages/validators. - Apply Supabase account migrations.
- Wire provider and account list commands.
- Add API read/list/dry-run endpoints and contract tests.
- Add MCP read-only resources.
- Add TUI/PWA account status panels.
- Implement IMAP/SMTP provider behind approval and audit gates.
- Implement Mastodon, Bluesky, or GitHub social provider behind approval and audit gates.
- Add Gmail OAuth after credential broker storage and restricted-scope handling are complete.