mirror of
https://github.com/qwibitai/nanoclaw.git
synced 2026-07-06 18:52:03 +08:00
a597b42648
New read-only resources: - destinations (agent-to-agent ACL + routing map) - user-dms (DM channel cache) - dropped-messages (audit trail for dropped messages) - approvals (in-flight approval cards) Description fixes from reading source: - messaging-groups: add denied_at column (router checks it) - sessions: fix container_status (idle is unused, stopped is auto-restarted by sweep) - wirings: add note that threaded adapters force per-thread Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
59 lines
2.1 KiB
TypeScript
59 lines
2.1 KiB
TypeScript
import { registerResource } from '../crud.js';
|
|
|
|
registerResource({
|
|
name: 'messaging-group',
|
|
plural: 'messaging-groups',
|
|
table: 'messaging_groups',
|
|
description:
|
|
'Messaging group — one chat or channel on one platform (a Telegram DM, a Discord channel, a Slack thread root, an email address). Identity is the (channel_type, platform_id) pair, which must be unique.',
|
|
idColumn: 'id',
|
|
columns: [
|
|
{ name: 'id', type: 'string', description: 'UUID.', generated: true },
|
|
{
|
|
name: 'channel_type',
|
|
type: 'string',
|
|
description:
|
|
'Channel adapter type — matches the adapter registered by /add-<channel> (e.g. telegram, discord, slack, whatsapp).',
|
|
required: true,
|
|
},
|
|
{
|
|
name: 'platform_id',
|
|
type: 'string',
|
|
description:
|
|
'Platform-specific chat ID. Format varies: Telegram chat ID, Discord channel snowflake, Slack channel ID, phone number, email address.',
|
|
required: true,
|
|
},
|
|
{
|
|
name: 'name',
|
|
type: 'string',
|
|
description: 'Display name. Often auto-populated by the channel adapter.',
|
|
updatable: true,
|
|
},
|
|
{
|
|
name: 'is_group',
|
|
type: 'number',
|
|
description: 'Multi-user group chat (1) or direct message (0). Affects session scoping.',
|
|
default: 0,
|
|
updatable: true,
|
|
},
|
|
{
|
|
name: 'unknown_sender_policy',
|
|
type: 'string',
|
|
description:
|
|
'What happens when an unrecognized sender posts. "strict" drops silently. "request_approval" sends an approval card to an admin. "public" allows anyone.',
|
|
enum: ['strict', 'request_approval', 'public'],
|
|
default: 'strict',
|
|
updatable: true,
|
|
},
|
|
{
|
|
name: 'denied_at',
|
|
type: 'string',
|
|
description:
|
|
'Set when the owner explicitly denies registering this channel. While set, the router drops all messages silently without re-escalating. Cleared by any explicit wiring mutation.',
|
|
updatable: true,
|
|
},
|
|
{ name: 'created_at', type: 'string', description: 'Auto-set.', generated: true },
|
|
],
|
|
operations: { list: 'open', get: 'open', create: 'approval', update: 'approval', delete: 'approval' },
|
|
});
|