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>
71 lines
2.9 KiB
TypeScript
71 lines
2.9 KiB
TypeScript
import { registerResource } from '../crud.js';
|
|
|
|
registerResource({
|
|
name: 'wiring',
|
|
plural: 'wirings',
|
|
table: 'messaging_group_agents',
|
|
description:
|
|
'Wiring — connects a messaging group to an agent group. Determines which agent handles messages from which chat. The same messaging group can be wired to multiple agents; the same agent can be wired to multiple messaging groups.',
|
|
idColumn: 'id',
|
|
columns: [
|
|
{ name: 'id', type: 'string', description: 'UUID.', generated: true },
|
|
{
|
|
name: 'messaging_group_id',
|
|
type: 'string',
|
|
description: 'The chat/channel to route from. References messaging_groups.id.',
|
|
required: true,
|
|
},
|
|
{
|
|
name: 'agent_group_id',
|
|
type: 'string',
|
|
description: 'The agent that handles messages. References agent_groups.id.',
|
|
required: true,
|
|
},
|
|
{
|
|
name: 'engage_mode',
|
|
type: 'string',
|
|
description:
|
|
'When the agent engages. "mention" — only when @mentioned or in DMs. "mention-sticky" — once mentioned in a thread, the agent subscribes and responds to all subsequent messages in that thread without needing further mentions. "pattern" — matches every message against engage_pattern regex.',
|
|
enum: ['pattern', 'mention', 'mention-sticky'],
|
|
default: 'mention',
|
|
updatable: true,
|
|
},
|
|
{
|
|
name: 'engage_pattern',
|
|
type: 'string',
|
|
description:
|
|
'Regex for engage_mode=pattern. Required when mode is pattern. Use "." to match every message (always-on). Ignored for mention modes.',
|
|
updatable: true,
|
|
},
|
|
{
|
|
name: 'sender_scope',
|
|
type: 'string',
|
|
description:
|
|
'"all" — any sender (subject to unknown_sender_policy). "known" — only users with a role or membership in this agent group.',
|
|
enum: ['all', 'known'],
|
|
default: 'all',
|
|
updatable: true,
|
|
},
|
|
{
|
|
name: 'ignored_message_policy',
|
|
type: 'string',
|
|
description:
|
|
'What happens to messages that don\'t trigger engagement. "drop" — agent never sees them. "accumulate" — stored as background context (trigger=0) so the agent has prior context when eventually triggered.',
|
|
enum: ['drop', 'accumulate'],
|
|
default: 'drop',
|
|
updatable: true,
|
|
},
|
|
{
|
|
name: 'session_mode',
|
|
type: 'string',
|
|
description:
|
|
'"shared" — one session per (agent, messaging group). "per-thread" — separate session per thread/topic. "agent-shared" — one session across all messaging groups wired to this agent. Note: threaded adapters in group chats force per-thread regardless of this setting.',
|
|
enum: ['shared', 'per-thread', 'agent-shared'],
|
|
default: 'shared',
|
|
updatable: true,
|
|
},
|
|
{ name: 'created_at', type: 'string', description: 'Auto-set.', generated: true },
|
|
],
|
|
operations: { list: 'open', get: 'open', create: 'approval', update: 'approval', delete: 'approval' },
|
|
});
|