test: remove stale A2A session coexistence tests
The skipped coexistence test and the findSessionByAgentGroup bug-documenting test were written before the A2A return-path fix (#2267). That fix sidesteps findSessionByAgentGroup entirely — A2A replies now use source_session_id for routing, so the "newest session wins" behavior is only a fallback for unsolicited first-contact A2A where any session will do. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -28,7 +28,7 @@ import {
|
|||||||
readOutboxFiles,
|
readOutboxFiles,
|
||||||
clearOutbox,
|
clearOutbox,
|
||||||
} from './session-manager.js';
|
} from './session-manager.js';
|
||||||
import { getSession, findSession, findSessionByAgentGroup } from './db/sessions.js';
|
import { getSession, findSession } from './db/sessions.js';
|
||||||
import type { InboundEvent } from './channels/adapter.js';
|
import type { InboundEvent } from './channels/adapter.js';
|
||||||
|
|
||||||
// Mock container runner to prevent actual Docker spawning
|
// Mock container runner to prevent actual Docker spawning
|
||||||
@@ -839,68 +839,6 @@ describe('agent-shared session resolution', () => {
|
|||||||
expect(session.messaging_group_id).toBeNull();
|
expect(session.messaging_group_id).toBeNull();
|
||||||
});
|
});
|
||||||
|
|
||||||
// BUG (#2332): agent-shared resolveSession reuses an existing channel-bound
|
|
||||||
// session via findSessionByAgentGroup instead of creating a dedicated
|
|
||||||
// agent-shared session. The two cannot coexist today — the agent-shared
|
|
||||||
// call finds the channel session and returns it. This test documents the
|
|
||||||
// current (broken) behavior; fixing #2332 should make it pass as written.
|
|
||||||
it.skip('agent-shared and channel-bound sessions coexist for the same agent group', () => {
|
|
||||||
createAgentGroup({
|
|
||||||
id: 'ag-1',
|
|
||||||
name: 'Agent',
|
|
||||||
folder: 'agent',
|
|
||||||
agent_provider: null,
|
|
||||||
created_at: now(),
|
|
||||||
});
|
|
||||||
createMessagingGroup({
|
|
||||||
id: 'mg-1',
|
|
||||||
channel_type: 'discord',
|
|
||||||
platform_id: 'chan-123',
|
|
||||||
name: 'General',
|
|
||||||
is_group: 1,
|
|
||||||
unknown_sender_policy: 'public',
|
|
||||||
created_at: now(),
|
|
||||||
});
|
|
||||||
|
|
||||||
const { session: shared } = resolveSession('ag-1', 'mg-1', null, 'shared');
|
|
||||||
const { session: agentShared } = resolveSession('ag-1', null, null, 'agent-shared');
|
|
||||||
|
|
||||||
expect(shared.id).not.toBe(agentShared.id);
|
|
||||||
expect(shared.messaging_group_id).toBe('mg-1');
|
|
||||||
expect(agentShared.messaging_group_id).toBeNull();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('findSessionByAgentGroup returns existing channel-bound session (bug #2332)', () => {
|
|
||||||
// Documents the current behavior: findSessionByAgentGroup doesn't
|
|
||||||
// distinguish agent-shared from channel-bound. When a channel session
|
|
||||||
// exists, agent-shared resolution reuses it instead of creating a
|
|
||||||
// separate session. This is the root cause of A2A misrouting.
|
|
||||||
createAgentGroup({
|
|
||||||
id: 'ag-1',
|
|
||||||
name: 'Agent',
|
|
||||||
folder: 'agent',
|
|
||||||
agent_provider: null,
|
|
||||||
created_at: now(),
|
|
||||||
});
|
|
||||||
createMessagingGroup({
|
|
||||||
id: 'mg-1',
|
|
||||||
channel_type: 'discord',
|
|
||||||
platform_id: 'chan-123',
|
|
||||||
name: 'General',
|
|
||||||
is_group: 1,
|
|
||||||
unknown_sender_policy: 'public',
|
|
||||||
created_at: now(),
|
|
||||||
});
|
|
||||||
|
|
||||||
const { session: channelSession } = resolveSession('ag-1', 'mg-1', null, 'shared');
|
|
||||||
const found = findSessionByAgentGroup('ag-1');
|
|
||||||
|
|
||||||
// Bug: picks the channel session — an agent-shared call would get this
|
|
||||||
// instead of a dedicated session.
|
|
||||||
expect(found).toBeDefined();
|
|
||||||
expect(found!.id).toBe(channelSession.id);
|
|
||||||
expect(found!.messaging_group_id).toBe('mg-1'); // should be null for agent-shared
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('agent-to-agent routing', () => {
|
describe('agent-to-agent routing', () => {
|
||||||
@@ -1034,10 +972,12 @@ describe('agent-to-agent routing', () => {
|
|||||||
writeSessionRouting('ag-researcher', researcherSessions[0].id);
|
writeSessionRouting('ag-researcher', researcherSessions[0].id);
|
||||||
|
|
||||||
const rDb = new Database(inboundDbPath('ag-researcher', researcherSessions[0].id));
|
const rDb = new Database(inboundDbPath('ag-researcher', researcherSessions[0].id));
|
||||||
const routing = rDb.prepare('SELECT channel_type, platform_id FROM session_routing WHERE id = 1').get() as {
|
const routing = rDb.prepare('SELECT channel_type, platform_id FROM session_routing WHERE id = 1').get() as
|
||||||
|
| {
|
||||||
channel_type: string | null;
|
channel_type: string | null;
|
||||||
platform_id: string | null;
|
platform_id: string | null;
|
||||||
} | undefined;
|
}
|
||||||
|
| undefined;
|
||||||
rDb.close();
|
rDb.close();
|
||||||
|
|
||||||
// BUG: session_routing is all null — researcher has no default routing
|
// BUG: session_routing is all null — researcher has no default routing
|
||||||
|
|||||||
Reference in New Issue
Block a user