feat: multi-agent routing + multi-account providers

This commit is contained in:
Peter Steinberger
2026-01-06 18:25:37 +00:00
parent 50d4b17417
commit dbfa316d19
129 changed files with 3760 additions and 1126 deletions

View File

@@ -23,6 +23,8 @@ import { loadSessionStore, resolveSessionKey } from "../config/sessions.js";
import { getReplyFromConfig } from "./reply.js";
import { HEARTBEAT_TOKEN } from "./tokens.js";
const MAIN_SESSION_KEY = "agent:main:main";
const webMocks = vi.hoisted(() => ({
webAuthExists: vi.fn().mockResolvedValue(true),
getWebAuthAgeMs: vi.fn().mockReturnValue(120_000),
@@ -166,7 +168,7 @@ describe("trigger handling", () => {
Body: "/send off",
From: "+1000",
To: "+2000",
Surface: "whatsapp",
Provider: "whatsapp",
SenderE164: "+1000",
},
{},
@@ -180,7 +182,7 @@ describe("trigger handling", () => {
string,
{ sendPolicy?: string }
>;
expect(store.main?.sendPolicy).toBe("deny");
expect(store[MAIN_SESSION_KEY]?.sendPolicy).toBe("deny");
});
});
@@ -205,7 +207,7 @@ describe("trigger handling", () => {
Body: "/elevated on",
From: "+1000",
To: "+2000",
Surface: "whatsapp",
Provider: "whatsapp",
SenderE164: "+1000",
},
{},
@@ -219,7 +221,7 @@ describe("trigger handling", () => {
string,
{ elevatedLevel?: string }
>;
expect(store.main?.elevatedLevel).toBe("on");
expect(store[MAIN_SESSION_KEY]?.elevatedLevel).toBe("on");
});
});
@@ -245,7 +247,7 @@ describe("trigger handling", () => {
Body: "/elevated on",
From: "+1000",
To: "+2000",
Surface: "whatsapp",
Provider: "whatsapp",
SenderE164: "+1000",
},
{},
@@ -259,7 +261,7 @@ describe("trigger handling", () => {
string,
{ elevatedLevel?: string }
>;
expect(store.main?.elevatedLevel).toBeUndefined();
expect(store[MAIN_SESSION_KEY]?.elevatedLevel).toBeUndefined();
});
});
@@ -284,7 +286,7 @@ describe("trigger handling", () => {
Body: "please /elevated on now",
From: "+2000",
To: "+2000",
Surface: "whatsapp",
Provider: "whatsapp",
SenderE164: "+2000",
},
{},
@@ -316,7 +318,7 @@ describe("trigger handling", () => {
Body: "/elevated on",
From: "discord:123",
To: "user:123",
Surface: "discord",
Provider: "discord",
SenderName: "Peter Steinberger",
SenderUsername: "steipete",
SenderTag: "steipete",
@@ -332,7 +334,7 @@ describe("trigger handling", () => {
string,
{ elevatedLevel?: string }
>;
expect(store.main?.elevatedLevel).toBe("on");
expect(store[MAIN_SESSION_KEY]?.elevatedLevel).toBe("on");
});
});
@@ -359,7 +361,7 @@ describe("trigger handling", () => {
Body: "/elevated on",
From: "discord:123",
To: "user:123",
Surface: "discord",
Provider: "discord",
SenderName: "steipete",
},
{},
@@ -510,7 +512,7 @@ describe("trigger handling", () => {
From: "123@g.us",
To: "+2000",
ChatType: "group",
Surface: "whatsapp",
Provider: "whatsapp",
SenderE164: "+2000",
},
{},
@@ -521,7 +523,9 @@ describe("trigger handling", () => {
const store = JSON.parse(
await fs.readFile(cfg.session.store, "utf-8"),
) as Record<string, { groupActivation?: string }>;
expect(store["whatsapp:group:123@g.us"]?.groupActivation).toBe("always");
expect(store["agent:main:whatsapp:group:123@g.us"]?.groupActivation).toBe(
"always",
);
expect(runEmbeddedPiAgent).not.toHaveBeenCalled();
});
});
@@ -535,7 +539,7 @@ describe("trigger handling", () => {
From: "123@g.us",
To: "+2000",
ChatType: "group",
Surface: "whatsapp",
Provider: "whatsapp",
SenderE164: "+999",
},
{},
@@ -563,7 +567,7 @@ describe("trigger handling", () => {
From: "123@g.us",
To: "+2000",
ChatType: "group",
Surface: "whatsapp",
Provider: "whatsapp",
SenderE164: "+2000",
GroupSubject: "Test Group",
GroupMembers: "Alice (+1), Bob (+2)",
@@ -879,7 +883,7 @@ describe("trigger handling", () => {
From: "group:whatsapp:demo",
To: "+2000",
ChatType: "group" as const,
Surface: "whatsapp" as const,
Provider: "whatsapp" as const,
MediaPath: mediaPath,
MediaType: "image/jpeg",
MediaUrl: mediaPath,
@@ -942,7 +946,7 @@ describe("group intro prompts", () => {
ChatType: "group",
GroupSubject: "Release Squad",
GroupMembers: "Alice, Bob",
Surface: "discord",
Provider: "discord",
},
{},
makeCfg(home),
@@ -975,7 +979,7 @@ describe("group intro prompts", () => {
To: "+1999",
ChatType: "group",
GroupSubject: "Ops",
Surface: "whatsapp",
Provider: "whatsapp",
},
{},
makeCfg(home),
@@ -1008,7 +1012,7 @@ describe("group intro prompts", () => {
To: "+1777",
ChatType: "group",
GroupSubject: "Dev Chat",
Surface: "telegram",
Provider: "telegram",
},
{},
makeCfg(home),