fix: auto-enable leader summary routing

This commit is contained in:
inman committed 2026-09-07 16:02:24 +08:00
1 parent 8fb066f345
commit 0b3aa5c42d
14 files changed
+618 -623

No files matched your search

+72
View File
@@ -175,6 +175,78 @@ test('AgentBus configuration stays disabled until connection fields are supplied
assert.equal(config.AGENTBUS_LOG_PAYLOADS, false);
});
test('team-lead listener automatically observes its inbound AgentBus route', async (t) => {
const socket = new FakeSocket();
const observed: Array<Record<string, unknown>> = [];
let ingested = 0;
const tasks: AgentBusTaskGateway = {
events: new EventEmitter(),
async ingestMessage() {
ingested += 1;
return { task: makeTask('completed'), attached: false, created: true };
},
async getTask() {
return makeTask('completed');
}
};
const leaderNotifications: LeaderNotificationGateway = {
async observeLeaderRoute(input) {
observed.push(input as unknown as Record<string, unknown>);
},
async claimDeliveries() {
return [];
},
async markDeliveryDelivered() {},
async markDeliveryFailed() {},
async releaseDeliveries() {}
};
const listener = new AgentBusListener({
config: testConfig(),
tasks,
leaderNotifications,
organizationId: 'org-1',
scheduleParseQueue: async () => {},
socketFactory: () => socket as unknown as AgentBusSocket,
channel: {
id: 'channel-leader-route',
displayName: '组长微信',
wsUrl: 'wss://mesh.nianxx.cn/ws',
wsToken: 'leader-route-token',
botAddress: 'bot:leader-route:listener',
ownerUserId: 'leader-route-user',
ownerRole: 'team_lead'
}
});
t.after(() => listener.stop());
listener.start();
socket.readyState = 1;
socket.emit('open');
socket.emit('message', JSON.stringify({
id: 'ready-leader-route',
type: 'event',
session_id: 'session-leader-route',
epoch: 1,
to: 'bot:leader-route:listener',
payload: { event: 'session.ready' }
}));
socket.emit('message', JSON.stringify({
id: 'leader-route-message-1',
type: 'event',
from: 'channel:wechat:leader-route-user',
payload: { text: '查询今天的任务' }
}));
await waitFor(() => observed.length === 1 && ingested === 1);
assert.deepEqual(observed, [{
organizationId: 'org-1',
leaderUserId: 'leader-route-user',
channelId: 'channel-leader-route',
recipientAddress: 'channel:wechat:leader-route-user',
conversationId: 'agentbus:channel:wechat:leader-route-user'
}]);
});
test('AgentBus accepted delivery payloads keep final ownership metadata server-only', () => {
const waitingPayload = createAgentBusAcceptedDeliveryPayload({
text: AGENTBUS_ROSTER_WAITING_TEXT,