From 58eb015dfccddb64fe2f90693a6aafb2b8b98400 Mon Sep 17 00:00:00 2001 From: Dhruv Sharma Date: Sun, 10 May 2026 17:10:08 +0530 Subject: [PATCH] fix(cli): emit migrate-storage invocation event --- .../commands/migrate-storage.test.ts | 22 +++++++++++++++++++ packages/cli/src/commands/migrate-storage.ts | 12 ++++++++++ 2 files changed, 34 insertions(+) diff --git a/packages/cli/__tests__/commands/migrate-storage.test.ts b/packages/cli/__tests__/commands/migrate-storage.test.ts index 438276cb6..763a0f50e 100644 --- a/packages/cli/__tests__/commands/migrate-storage.test.ts +++ b/packages/cli/__tests__/commands/migrate-storage.test.ts @@ -52,6 +52,28 @@ describe("ao migrate-storage — activity events", () => { consoleLogSpy.mockRestore(); }); + it("emits cli.migration_invoked before migration work starts", async () => { + mockMigrateStorage.mockImplementation(async () => { + expect(recordedEvents()).toContainEqual( + expect.objectContaining({ + kind: "cli.migration_invoked", + source: "cli", + level: "info", + data: expect.objectContaining({ + rollback: false, + dryRun: true, + force: true, + }), + }), + ); + return { projects: 1 }; + }); + + await program.parseAsync(["node", "ao", "migrate-storage", "--dry-run", "--force"]); + + expect(mockMigrateStorage).toHaveBeenCalledOnce(); + }); + it("emits cli.migration_failed when migrateStorage throws", async () => { mockMigrateStorage.mockRejectedValue(new Error("disk full")); diff --git a/packages/cli/src/commands/migrate-storage.ts b/packages/cli/src/commands/migrate-storage.ts index 523e9884a..4e90bbd28 100644 --- a/packages/cli/src/commands/migrate-storage.ts +++ b/packages/cli/src/commands/migrate-storage.ts @@ -13,6 +13,18 @@ export function registerMigrateStorage(program: Command): void { .option("--rollback", "Reverse a previous migration (restores .migrated directories)") .action( async (opts: { dryRun?: boolean; force?: boolean; rollback?: boolean }) => { + recordActivityEvent({ + source: "cli", + kind: "cli.migration_invoked", + level: "info", + summary: `storage ${opts.rollback ? "rollback" : "migration"} invoked`, + data: { + rollback: opts.rollback === true, + dryRun: opts.dryRun === true, + force: opts.force === true, + }, + }); + try { if (opts.rollback) { await rollbackStorage({