





















@@ -204,7 +204,7 @@ describe("runCronIsolatedAgentTurn message tool policy", () => {
204204expect(runEmbeddedPiAgentMock).toHaveBeenCalledTimes(1);
205205expectEmbeddedRunFields({
206206disableMessageTool: false,
207-forceMessageTool: true,
207+forceMessageTool: false,
208208});
209209}
210210@@ -229,7 +229,7 @@ describe("runCronIsolatedAgentTurn message tool policy", () => {
229229expect(runEmbeddedPiAgentMock).toHaveBeenCalledTimes(1);
230230expectEmbeddedRunFields({
231231disableMessageTool: false,
232-forceMessageTool: true,
232+forceMessageTool: false,
233233messageChannel: "messagechat",
234234messageTo: "123",
235235currentChannelId: "123",
@@ -335,7 +335,7 @@ describe("runCronIsolatedAgentTurn message tool policy", () => {
335335timeoutMs: 60_000,
336336suppressExecNotifyOnExit: true,
337337sourceDelivery: createSourceDeliveryPlan({
338-owner: "message_tool_then_direct_fallback",
338+owner: "direct_fallback",
339339reason: "cron_announce",
340340target: {
341341channel: resolvedDelivery.channel ?? "messagechat",
@@ -344,7 +344,7 @@ describe("runCronIsolatedAgentTurn message tool policy", () => {
344344threadId: resolvedDelivery.threadId,
345345},
346346messageToolEnabled: true,
347-messageToolForced: true,
347+messageToolForced: false,
348348directFallback: true,
349349}),
350350skillsSnapshot: emptySkillsSnapshot,
@@ -388,7 +388,7 @@ describe("runCronIsolatedAgentTurn message tool policy", () => {
388388expect(runEmbeddedPiAgentMock).toHaveBeenCalledTimes(1);
389389const embeddedRun = expectEmbeddedRunFields({
390390disableMessageTool: false,
391-forceMessageTool: true,
391+forceMessageTool: false,
392392});
393393expect(embeddedRun.messageChannel).toBeUndefined();
394394expect(embeddedRun.messageTo).toBeUndefined();
@@ -425,7 +425,7 @@ describe("runCronIsolatedAgentTurn message tool policy", () => {
425425expect(runEmbeddedPiAgentMock).toHaveBeenCalledTimes(1);
426426expectEmbeddedRunFields({
427427disableMessageTool: false,
428-forceMessageTool: true,
428+forceMessageTool: false,
429429messageChannel: "topicchat",
430430messageTo: "room#42",
431431messageThreadId: 42,
@@ -568,7 +568,7 @@ describe("runCronIsolatedAgentTurn message tool policy", () => {
568568expect(runEmbeddedPiAgentMock).toHaveBeenCalledTimes(1);
569569const embeddedRun = expectEmbeddedRunFields({
570570disableMessageTool: false,
571-forceMessageTool: true,
571+forceMessageTool: false,
572572});
573573expect(embeddedRun.messageChannel).toBeUndefined();
574574expect(embeddedRun.messageTo).toBeUndefined();
@@ -643,7 +643,7 @@ describe("runCronIsolatedAgentTurn message tool policy", () => {
643643});
644644});
645645646-it("keeps cron announce source replies message-tool-only", async () => {
646+it("keeps cron announce delivery out of message-tool-only source replies", async () => {
647647mockRunCronFallbackPassthrough();
648648resolveCronDeliveryPlanMock.mockReturnValue(makeAnnounceDeliveryPlan());
649649@@ -654,8 +654,8 @@ describe("runCronIsolatedAgentTurn message tool policy", () => {
654654655655expect(runEmbeddedPiAgentMock).toHaveBeenCalledTimes(1);
656656expectEmbeddedRunFields({
657-sourceReplyDeliveryMode: "message_tool_only",
658-forceMessageTool: true,
657+sourceReplyDeliveryMode: undefined,
658+forceMessageTool: false,
659659messageChannel: "messagechat",
660660messageTo: "123",
661661currentChannelId: "123",
@@ -1157,6 +1157,103 @@ describe("runCronIsolatedAgentTurn delivery instruction", () => {
11571157expect(prompt).toContain("Return your response as plain text");
11581158});
115911591160+it("does not prompt for the message tool when toolsAllow is explicitly empty", async () => {
1161+mockRunCronFallbackPassthrough();
1162+resolveCronDeliveryPlanMock.mockReturnValue({
1163+requested: true,
1164+mode: "announce",
1165+channel: "messagechat",
1166+to: "123",
1167+});
1168+1169+await runCronIsolatedAgentTurn({
1170+ ...makeParams(),
1171+job: makeMessageToolPolicyJob(
1172+{ mode: "announce", channel: "messagechat", to: "123" },
1173+{ kind: "agentTurn", message: "send a message", toolsAllow: [] },
1174+),
1175+});
1176+1177+expect(runEmbeddedPiAgentMock).toHaveBeenCalledTimes(1);
1178+expectEmbeddedRunFields({
1179+disableMessageTool: false,
1180+forceMessageTool: false,
1181+toolsAllow: [],
1182+});
1183+const prompt = expectEmbeddedRunPrompt();
1184+expect(prompt).not.toContain("Use the message tool");
1185+expect(prompt).toContain("Return your response as plain text");
1186+});
1187+1188+it("prompts for the message tool when toolsAllow uses wildcard access", async () => {
1189+mockRunCronFallbackPassthrough();
1190+resolveCronDeliveryPlanMock.mockReturnValue({
1191+requested: true,
1192+mode: "announce",
1193+channel: "messagechat",
1194+to: "123",
1195+});
1196+1197+await runCronIsolatedAgentTurn({
1198+ ...makeParams(),
1199+job: makeMessageToolPolicyJob(
1200+{ mode: "announce", channel: "messagechat", to: "123" },
1201+{ kind: "agentTurn", message: "send a message", toolsAllow: ["*"] },
1202+),
1203+});
1204+1205+expect(runEmbeddedPiAgentMock).toHaveBeenCalledTimes(1);
1206+const prompt = expectEmbeddedRunPrompt();
1207+expect(prompt).toContain("Use the message tool");
1208+expect(prompt).toContain("will be delivered automatically");
1209+});
1210+1211+it("prompts for the message tool when toolsAllow uses a group containing message", async () => {
1212+mockRunCronFallbackPassthrough();
1213+resolveCronDeliveryPlanMock.mockReturnValue({
1214+requested: true,
1215+mode: "announce",
1216+channel: "messagechat",
1217+to: "123",
1218+});
1219+1220+await runCronIsolatedAgentTurn({
1221+ ...makeParams(),
1222+job: makeMessageToolPolicyJob(
1223+{ mode: "announce", channel: "messagechat", to: "123" },
1224+{ kind: "agentTurn", message: "send a message", toolsAllow: ["group:messaging"] },
1225+),
1226+});
1227+1228+expect(runEmbeddedPiAgentMock).toHaveBeenCalledTimes(1);
1229+const prompt = expectEmbeddedRunPrompt();
1230+expect(prompt).toContain("Use the message tool");
1231+expect(prompt).toContain("will be delivered automatically");
1232+});
1233+1234+it("prompts for the message tool when toolsAllow names message with different casing", async () => {
1235+mockRunCronFallbackPassthrough();
1236+resolveCronDeliveryPlanMock.mockReturnValue({
1237+requested: true,
1238+mode: "announce",
1239+channel: "messagechat",
1240+to: "123",
1241+});
1242+1243+await runCronIsolatedAgentTurn({
1244+ ...makeParams(),
1245+job: makeMessageToolPolicyJob(
1246+{ mode: "announce", channel: "messagechat", to: "123" },
1247+{ kind: "agentTurn", message: "send a message", toolsAllow: ["MESSAGE"] },
1248+),
1249+});
1250+1251+expect(runEmbeddedPiAgentMock).toHaveBeenCalledTimes(1);
1252+const prompt = expectEmbeddedRunPrompt();
1253+expect(prompt).toContain("Use the message tool");
1254+expect(prompt).toContain("will be delivered automatically");
1255+});
1256+11601257it("does not append a delivery instruction when delivery is not requested", async () => {
11611258mockRunCronFallbackPassthrough();
11621259resolveCronDeliveryPlanMock.mockReturnValue({ requested: false, mode: "none" });
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。