fix: auto-enable leader summary routing
This commit is contained in:
1 parent
8fb066f345
commit
0b3aa5c42d
14 files changed
+618
-623
No files matched your search
@@ -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,
|
||||
|
||||
Reference in new issue
Block a user