

























@@ -9,6 +9,7 @@ const mocks = vi.hoisted(() => ({
99sessionsCommand: vi.fn(),
1010sessionsCleanupCommand: vi.fn(),
1111sessionsTailCommand: vi.fn(),
12+sessionsCompactCommand: vi.fn(),
1213exportTrajectoryCommand: vi.fn(),
1314commitmentsListCommand: vi.fn(),
1415commitmentsDismissCommand: vi.fn(),
@@ -34,6 +35,7 @@ const healthCommand = mocks.healthCommand;
3435const sessionsCommand = mocks.sessionsCommand;
3536const sessionsCleanupCommand = mocks.sessionsCleanupCommand;
3637const sessionsTailCommand = mocks.sessionsTailCommand;
38+const sessionsCompactCommand = mocks.sessionsCompactCommand;
3739const exportTrajectoryCommand = mocks.exportTrajectoryCommand;
3840const commitmentsListCommand = mocks.commitmentsListCommand;
3941const commitmentsDismissCommand = mocks.commitmentsDismissCommand;
@@ -95,6 +97,10 @@ vi.mock("../../commands/sessions-tail.js", () => ({
9597sessionsTailCommand: mocks.sessionsTailCommand,
9698}));
9799100+vi.mock("../../commands/sessions-compact.js", () => ({
101+sessionsCompactCommand: mocks.sessionsCompactCommand,
102+}));
103+98104vi.mock("../../commands/export-trajectory.js", () => ({
99105exportTrajectoryCommand: mocks.exportTrajectoryCommand,
100106}));
@@ -142,6 +148,7 @@ describe("registerStatusHealthSessionsCommands", () => {
142148sessionsCommand.mockResolvedValue(undefined);
143149sessionsCleanupCommand.mockResolvedValue(undefined);
144150sessionsTailCommand.mockResolvedValue(undefined);
151+sessionsCompactCommand.mockResolvedValue(undefined);
145152exportTrajectoryCommand.mockResolvedValue(undefined);
146153commitmentsListCommand.mockResolvedValue(undefined);
147154commitmentsDismissCommand.mockResolvedValue(undefined);
@@ -289,6 +296,58 @@ describe("registerStatusHealthSessionsCommands", () => {
289296});
290297});
291298299+it("inherits the parent sessions --agent for compact (regression #91378: wrong-agent compaction)", async () => {
300+await runCli(["sessions", "--agent", "work", "compact", "agent:work:main"]);
301+302+expectCommandOptions(sessionsCompactCommand, {
303+key: "agent:work:main",
304+agent: "work",
305+});
306+});
307+308+it("inherits the parent sessions --json for compact", async () => {
309+await runCli(["sessions", "--json", "compact", "agent:work:main"]);
310+311+expectCommandOptions(sessionsCompactCommand, {
312+key: "agent:work:main",
313+json: true,
314+});
315+});
316+317+it("prefers the compact-level --agent over the parent sessions --agent", async () => {
318+await runCli(["sessions", "--agent", "main", "compact", "agent:work:main", "--agent", "work"]);
319+320+expectCommandOptions(sessionsCompactCommand, {
321+key: "agent:work:main",
322+agent: "work",
323+});
324+});
325+326+it("rejects an inherited parent --store for compact instead of mutating a different store (regression #91378)", async () => {
327+await runCli(["sessions", "--store", "/tmp/other-sessions.json", "compact", "agent:work:main"]);
328+329+expect(runtime.error).toHaveBeenCalledWith(expect.stringContaining("--store"));
330+expect(runtime.exit).toHaveBeenCalledWith(1);
331+expect(sessionsCompactCommand).not.toHaveBeenCalled();
332+});
333+334+it("rejects other unsupported inherited parent list options for compact", async () => {
335+await runCli([
336+"sessions",
337+"--all-agents",
338+"--limit",
339+"25",
340+"--verbose",
341+"compact",
342+"agent:work:main",
343+]);
344+345+expect(runtime.error).toHaveBeenCalledWith(expect.stringContaining("--all-agents"));
346+expect(runtime.error).toHaveBeenCalledWith(expect.stringContaining("--verbose"));
347+expect(runtime.exit).toHaveBeenCalledWith(1);
348+expect(sessionsCompactCommand).not.toHaveBeenCalled();
349+});
350+292351it("forwards sessions list-side options", async () => {
293352await runCli([
294353"sessions",
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。