


























@@ -7,8 +7,6 @@ import {
77buildBootstrapPromptWarning,
88buildBootstrapPromptWarningNotice,
99buildBootstrapTruncationReportMeta,
10-buildBootstrapTruncationSignature,
11-formatBootstrapTruncationWarningLines,
1210resolveBootstrapWarningSignaturesSeen,
1311} from "./bootstrap-budget.js";
1412import { buildAgentSystemPrompt } from "./system-prompt.js";
@@ -121,9 +119,10 @@ describe("bootstrap prompt warnings", () => {
121119});
122120(analysis.truncatedFiles[0] as { name?: string }).name = undefined;
123121124-const lines = formatBootstrapTruncationWarningLines({
122+const lines = buildBootstrapPromptWarning({
125123 analysis,
126-});
124+mode: "always",
125+}).lines;
127126expect(lines.join("\n")).toContain("10 raw -> 1 injected");
128127});
129128@@ -345,10 +344,11 @@ describe("bootstrap prompt warnings", () => {
345344bootstrapMaxChars: 20,
346345bootstrapTotalMaxChars: 10,
347346});
348-const lines = formatBootstrapTruncationWarningLines({
347+const lines = buildBootstrapPromptWarning({
349348 analysis,
349+mode: "always",
350350maxFiles: 2,
351-});
351+}).lines;
352352expect(lines).toContain("+1 more truncated file(s).");
353353});
354354@@ -367,7 +367,10 @@ describe("bootstrap prompt warnings", () => {
367367bootstrapMaxChars: 120,
368368bootstrapTotalMaxChars: 200,
369369});
370-const lines = formatBootstrapTruncationWarningLines({ analysis });
370+const lines = buildBootstrapPromptWarning({
371+ analysis,
372+mode: "always",
373+}).lines;
371374372375expect(lines).toContain(
373376"AGENTS.md was truncated; read the full AGENTS.md before relying on scoped policy.",
@@ -397,9 +400,10 @@ describe("bootstrap prompt warnings", () => {
397400bootstrapMaxChars: 120,
398401bootstrapTotalMaxChars: 300,
399402});
400-const lines = formatBootstrapTruncationWarningLines({
403+const lines = buildBootstrapPromptWarning({
401404 analysis,
402-});
405+mode: "always",
406+}).lines;
403407expect(lines.join("\n")).toContain("AGENTS.md (/tmp/a/AGENTS.md)");
404408expect(lines.join("\n")).toContain("AGENTS.md (/tmp/b/AGENTS.md)");
405409});
@@ -419,21 +423,24 @@ describe("bootstrap prompt warnings", () => {
419423bootstrapMaxChars: 120,
420424bootstrapTotalMaxChars: 200,
421425});
422-const signature = buildBootstrapTruncationSignature(analysis);
426+const seen = buildBootstrapPromptWarning({
427+ analysis,
428+mode: "once",
429+});
423430const off = buildBootstrapPromptWarning({
424431 analysis,
425432mode: "off",
426-seenSignatures: [signature ?? ""],
427-previousSignature: signature,
433+seenSignatures: seen.warningSignaturesSeen,
434+previousSignature: seen.signature,
428435});
429436expect(off.warningShown).toBe(false);
430437expect(off.lines).toStrictEqual([]);
431438432439const always = buildBootstrapPromptWarning({
433440 analysis,
434441mode: "always",
435-seenSignatures: [signature ?? ""],
436-previousSignature: signature,
442+seenSignatures: seen.warningSignaturesSeen,
443+previousSignature: seen.signature,
437444});
438445expect(always.warningShown).toBe(true);
439446expect(always.lines).toStrictEqual([
@@ -472,9 +479,9 @@ describe("bootstrap prompt warnings", () => {
472479bootstrapMaxChars: 120,
473480bootstrapTotalMaxChars: 200,
474481});
475-expect(buildBootstrapTruncationSignature(left)).not.toBe(
476- buildBootstrapTruncationSignature(right),
477-);
482+const leftWarning = buildBootstrapPromptWarning({ analysis: left, mode: "once" });
483+const rightWarning = buildBootstrapPromptWarning({ analysis: right, mode: "once" });
484+expect(leftWarning.signature).not.toBe(rightWarning.signature);
478485});
479486480487it("builds truncation report metadata from analysis + warning decision", () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。