setup: narrow legacy room registration surface

This commit is contained in:
ejclaw
2026-04-11 05:28:26 +09:00
parent 9237173e43
commit 30dda74621
9 changed files with 336 additions and 430 deletions

View File

@@ -2271,6 +2271,25 @@ describe('message query LIMIT', () => {
// --- RegisteredGroup isMain round-trip ---
describe('registered group isMain', () => {
it('projects trigger metadata from canonical room settings into registered groups', () => {
_setRegisteredGroupForTests('dc:triggered', {
name: 'Triggered Room',
folder: 'triggered-room',
trigger: '@Andy',
added_at: '2024-01-01T00:00:00.000Z',
requiresTrigger: true,
});
expect(getRegisteredGroup('dc:triggered')).toMatchObject({
trigger: '@Andy',
requiresTrigger: true,
});
expect(getAllRoomBindings()['dc:triggered']).toMatchObject({
trigger: '@Andy',
requiresTrigger: true,
});
});
it('persists isMain=true through set/get round-trip', () => {
_setRegisteredGroupForTests('dc:main', {
name: 'Main Chat',

View File

@@ -244,8 +244,10 @@ export function buildRegisteredGroupFromStoredSettings(
jid: stored.chatJid,
name: stored.name || stored.chatJid,
folder: stored.folder,
trigger: stored.trigger,
added_at: capabilityMetadata?.createdAt || new Date(0).toISOString(),
agentConfig: capabilityMetadata?.agentConfig,
requiresTrigger: stored.requiresTrigger ?? false,
isMain: stored.isMain ? true : undefined,
agentType: resolvedAgentType,
workDir: stored.workDir,

View File

@@ -151,7 +151,7 @@ export interface RegisteredGroup {
trigger?: string;
added_at: string;
agentConfig?: AgentConfig;
requiresTrigger?: boolean; // Compatibility-only legacy field
requiresTrigger?: boolean; // Whether non-paired messages must match the room trigger
isMain?: boolean; // True for the main control group (no trigger, elevated privileges)
agentType?: AgentType;
workDir?: string; // Working directory for the agent (defaults to group folder)