fix: normalize session keys and outbound mirroring
This commit is contained in:
@@ -37,7 +37,7 @@ describe("abort detection", () => {
|
||||
Body: `[Context]\nJake: /stop\n[from: Jake]`,
|
||||
RawBody: "/stop",
|
||||
ChatType: "group",
|
||||
SessionKey: "agent:main:whatsapp:group:G1",
|
||||
SessionKey: "agent:main:whatsapp:group:g1",
|
||||
};
|
||||
|
||||
const result = await initSessionState({
|
||||
|
||||
@@ -235,8 +235,8 @@ describe("handleCommands subagents", () => {
|
||||
addSubagentRunForTests({
|
||||
runId: "run-1",
|
||||
childSessionKey: "agent:main:subagent:abc",
|
||||
requesterSessionKey: "agent:main:slack:slash:U1",
|
||||
requesterDisplayKey: "agent:main:slack:slash:U1",
|
||||
requesterSessionKey: "agent:main:slack:slash:u1",
|
||||
requesterDisplayKey: "agent:main:slack:slash:u1",
|
||||
task: "do thing",
|
||||
cleanup: "keep",
|
||||
createdAt: 1000,
|
||||
@@ -250,7 +250,7 @@ describe("handleCommands subagents", () => {
|
||||
CommandSource: "native",
|
||||
CommandTargetSessionKey: "agent:main:main",
|
||||
});
|
||||
params.sessionKey = "agent:main:slack:slash:U1";
|
||||
params.sessionKey = "agent:main:slack:slash:u1";
|
||||
const result = await handleCommands(params);
|
||||
expect(result.shouldContinue).toBe(false);
|
||||
expect(result.reply?.text).toContain("Subagents (current session)");
|
||||
|
||||
@@ -45,8 +45,8 @@ async function resolveState(params: {
|
||||
describe("createModelSelectionState parent inheritance", () => {
|
||||
it("inherits parent override from explicit parentSessionKey", async () => {
|
||||
const cfg = {} as ClawdbotConfig;
|
||||
const parentKey = "agent:main:discord:channel:C1";
|
||||
const sessionKey = "agent:main:discord:channel:C1:thread:123";
|
||||
const parentKey = "agent:main:discord:channel:c1";
|
||||
const sessionKey = "agent:main:discord:channel:c1:thread:123";
|
||||
const parentEntry = makeEntry({
|
||||
providerOverride: "openai",
|
||||
modelOverride: "gpt-4o",
|
||||
@@ -132,8 +132,8 @@ describe("createModelSelectionState parent inheritance", () => {
|
||||
},
|
||||
},
|
||||
} as ClawdbotConfig;
|
||||
const parentKey = "agent:main:slack:channel:C1";
|
||||
const sessionKey = "agent:main:slack:channel:C1:thread:123";
|
||||
const parentKey = "agent:main:slack:channel:c1";
|
||||
const sessionKey = "agent:main:slack:channel:c1:thread:123";
|
||||
const parentEntry = makeEntry({
|
||||
providerOverride: "anthropic",
|
||||
modelOverride: "claude-opus-4-5",
|
||||
|
||||
@@ -136,7 +136,7 @@ describe("initSessionState reset triggers in WhatsApp groups", () => {
|
||||
|
||||
it("Reset trigger works when RawBody is clean but Body has wrapped context", async () => {
|
||||
const storePath = await createStorePath("clawdbot-group-rawbody-");
|
||||
const sessionKey = "agent:main:whatsapp:group:G1";
|
||||
const sessionKey = "agent:main:whatsapp:group:g1";
|
||||
const existingSessionId = "existing-session-123";
|
||||
await seedSessionStore({
|
||||
storePath,
|
||||
|
||||
@@ -37,7 +37,7 @@ describe("initSessionState thread forking", () => {
|
||||
);
|
||||
|
||||
const storePath = path.join(root, "sessions.json");
|
||||
const parentSessionKey = "agent:main:slack:channel:C1";
|
||||
const parentSessionKey = "agent:main:slack:channel:c1";
|
||||
await saveSessionStore(storePath, {
|
||||
[parentSessionKey]: {
|
||||
sessionId: parentSessionId,
|
||||
@@ -50,7 +50,7 @@ describe("initSessionState thread forking", () => {
|
||||
session: { store: storePath },
|
||||
} as ClawdbotConfig;
|
||||
|
||||
const threadSessionKey = "agent:main:slack:channel:C1:thread:123";
|
||||
const threadSessionKey = "agent:main:slack:channel:c1:thread:123";
|
||||
const threadLabel = "Slack thread #general: starter";
|
||||
const result = await initSessionState({
|
||||
ctx: {
|
||||
@@ -117,7 +117,7 @@ describe("initSessionState RawBody", () => {
|
||||
Body: `[Chat messages since your last reply - for context]\n[WhatsApp ...] Someone: hello\n\n[Current message - respond to this]\n[WhatsApp ...] Jake: /status\n[from: Jake McInteer (+6421807830)]`,
|
||||
RawBody: "/status",
|
||||
ChatType: "group",
|
||||
SessionKey: "agent:main:whatsapp:group:G1",
|
||||
SessionKey: "agent:main:whatsapp:group:g1",
|
||||
};
|
||||
|
||||
const result = await initSessionState({
|
||||
@@ -138,7 +138,7 @@ describe("initSessionState RawBody", () => {
|
||||
Body: `[Context]\nJake: /new\n[from: Jake]`,
|
||||
RawBody: "/new",
|
||||
ChatType: "group",
|
||||
SessionKey: "agent:main:whatsapp:group:G1",
|
||||
SessionKey: "agent:main:whatsapp:group:g1",
|
||||
};
|
||||
|
||||
const result = await initSessionState({
|
||||
@@ -165,7 +165,7 @@ describe("initSessionState RawBody", () => {
|
||||
const ctx = {
|
||||
RawBody: "/NEW KeepThisCase",
|
||||
ChatType: "direct",
|
||||
SessionKey: "agent:main:whatsapp:dm:S1",
|
||||
SessionKey: "agent:main:whatsapp:dm:s1",
|
||||
};
|
||||
|
||||
const result = await initSessionState({
|
||||
@@ -186,7 +186,7 @@ describe("initSessionState RawBody", () => {
|
||||
|
||||
const ctx = {
|
||||
Body: "/status",
|
||||
SessionKey: "agent:main:whatsapp:dm:S1",
|
||||
SessionKey: "agent:main:whatsapp:dm:s1",
|
||||
};
|
||||
|
||||
const result = await initSessionState({
|
||||
@@ -206,7 +206,7 @@ describe("initSessionState reset policy", () => {
|
||||
try {
|
||||
const root = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-reset-daily-"));
|
||||
const storePath = path.join(root, "sessions.json");
|
||||
const sessionKey = "agent:main:whatsapp:dm:S1";
|
||||
const sessionKey = "agent:main:whatsapp:dm:s1";
|
||||
const existingSessionId = "daily-session-id";
|
||||
|
||||
await saveSessionStore(storePath, {
|
||||
@@ -236,7 +236,7 @@ describe("initSessionState reset policy", () => {
|
||||
try {
|
||||
const root = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-reset-daily-edge-"));
|
||||
const storePath = path.join(root, "sessions.json");
|
||||
const sessionKey = "agent:main:whatsapp:dm:S-edge";
|
||||
const sessionKey = "agent:main:whatsapp:dm:s-edge";
|
||||
const existingSessionId = "daily-edge-session";
|
||||
|
||||
await saveSessionStore(storePath, {
|
||||
@@ -266,7 +266,7 @@ describe("initSessionState reset policy", () => {
|
||||
try {
|
||||
const root = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-reset-idle-"));
|
||||
const storePath = path.join(root, "sessions.json");
|
||||
const sessionKey = "agent:main:whatsapp:dm:S2";
|
||||
const sessionKey = "agent:main:whatsapp:dm:s2";
|
||||
const existingSessionId = "idle-session-id";
|
||||
|
||||
await saveSessionStore(storePath, {
|
||||
@@ -301,7 +301,7 @@ describe("initSessionState reset policy", () => {
|
||||
try {
|
||||
const root = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-reset-thread-"));
|
||||
const storePath = path.join(root, "sessions.json");
|
||||
const sessionKey = "agent:main:slack:channel:C1:thread:123";
|
||||
const sessionKey = "agent:main:slack:channel:c1:thread:123";
|
||||
const existingSessionId = "thread-session-id";
|
||||
|
||||
await saveSessionStore(storePath, {
|
||||
@@ -337,7 +337,7 @@ describe("initSessionState reset policy", () => {
|
||||
try {
|
||||
const root = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-reset-thread-nosuffix-"));
|
||||
const storePath = path.join(root, "sessions.json");
|
||||
const sessionKey = "agent:main:discord:channel:C1";
|
||||
const sessionKey = "agent:main:discord:channel:c1";
|
||||
const existingSessionId = "thread-nosuffix";
|
||||
|
||||
await saveSessionStore(storePath, {
|
||||
@@ -372,7 +372,7 @@ describe("initSessionState reset policy", () => {
|
||||
try {
|
||||
const root = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-reset-type-default-"));
|
||||
const storePath = path.join(root, "sessions.json");
|
||||
const sessionKey = "agent:main:whatsapp:dm:S4";
|
||||
const sessionKey = "agent:main:whatsapp:dm:s4";
|
||||
const existingSessionId = "type-default-session";
|
||||
|
||||
await saveSessionStore(storePath, {
|
||||
@@ -407,7 +407,7 @@ describe("initSessionState reset policy", () => {
|
||||
try {
|
||||
const root = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-reset-legacy-"));
|
||||
const storePath = path.join(root, "sessions.json");
|
||||
const sessionKey = "agent:main:whatsapp:dm:S3";
|
||||
const sessionKey = "agent:main:whatsapp:dm:s3";
|
||||
const existingSessionId = "legacy-session-id";
|
||||
|
||||
await saveSessionStore(storePath, {
|
||||
|
||||
Reference in New Issue
Block a user