























@@ -128,6 +128,7 @@ async function resolveHelloWithModelDefaults(params: {
128128groupResolution: undefined,
129129isGroup: false,
130130triggerBodyNormalized: "hello",
131+resetTriggered: false,
131132commandAuthorized: false,
132133defaultProvider: "openai",
133134defaultModel: "gpt-4o-mini",
@@ -302,6 +303,7 @@ describe("resolveReplyDirectives", () => {
302303groupResolution: undefined,
303304isGroup: false,
304305triggerBodyNormalized: "hello",
306+resetTriggered: false,
305307commandAuthorized: false,
306308defaultProvider: "openai",
307309defaultModel: "gpt-4o-mini",
@@ -393,6 +395,7 @@ describe("resolveReplyDirectives", () => {
393395groupResolution: undefined,
394396isGroup: false,
395397triggerBodyNormalized: "/trace on",
398+resetTriggered: false,
396399commandAuthorized: true,
397400defaultProvider: "openai",
398401defaultModel: "gpt-4o-mini",
@@ -461,4 +464,69 @@ describe("resolveReplyDirectives", () => {
461464});
462465expect(resolveDefaultReasoningLevel).not.toHaveBeenCalled();
463466});
467+468+it("keeps consumed text reset triggers empty after directive cleanup", async () => {
469+const sessionCtx = {
470+Body: "",
471+BodyStripped: "",
472+BodyForAgent: "",
473+BodyForCommands: "new session",
474+CommandBody: "new session",
475+Provider: "slack",
476+Surface: "slack",
477+} as TemplateContext;
478+479+const result = await resolveReplyDirectives({
480+ctx: buildTestCtx({
481+Body: "new session",
482+BodyForAgent: "new session",
483+BodyForCommands: "new session",
484+CommandBody: "new session",
485+CommandAuthorized: true,
486+Provider: "slack",
487+Surface: "slack",
488+}),
489+cfg: {
490+session: {
491+resetTriggers: ["/new", "/reset", "new session"],
492+},
493+},
494+agentId: "main",
495+agentDir: "/tmp/main-agent",
496+workspaceDir: "/tmp",
497+agentCfg: {},
498+ sessionCtx,
499+sessionEntry: makeSessionEntry(),
500+sessionStore: {
501+"agent:main:slack:C123": makeSessionEntry(),
502+},
503+sessionKey: "agent:main:slack:C123",
504+storePath: "/tmp/sessions.json",
505+sessionScope: "per-sender",
506+groupResolution: undefined,
507+isGroup: false,
508+triggerBodyNormalized: "new session",
509+resetTriggered: true,
510+commandAuthorized: true,
511+defaultProvider: "openai",
512+defaultModel: "gpt-4o-mini",
513+aliasIndex: { byAlias: new Map(), byKey: new Map() },
514+provider: "openai",
515+model: "gpt-4o-mini",
516+hasResolvedHeartbeatModelOverride: false,
517+typing: makeTypingController(),
518+opts: undefined,
519+skillFilter: undefined,
520+});
521+522+expect(result).toEqual({
523+kind: "continue",
524+result: expect.objectContaining({
525+cleanedBody: "",
526+}),
527+});
528+expect(sessionCtx.Body).toBe("");
529+expect(sessionCtx.BodyForAgent).toBe("");
530+expect(sessionCtx.BodyStripped).toBe("");
531+});
464532});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。