From fc67b9fdab98f528f28ccbde33ca2c3aa3ad8295 Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Tue, 3 Nov 2026 12:07:52 +0000 Subject: [PATCH 1/3] test(provider-muse): reproduce #30137, Muse status advertises rollback The Muse adapter cannot roll back a conversation, but its provider status omits supportsConversationRollback, so the web offers Edit from here and the server then refuses it. These tests reproduce #30137. Co-Authored-By: Claude Opus 5.5 --- packages/provider-muse/src/server/status.test.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/provider-muse/src/server/status.test.ts b/packages/provider-muse/src/server/status.test.ts index 04f8e1e630d0..854fd1bb2cd0 100644 --- a/packages/provider-muse/src/server/status.test.ts +++ b/packages/provider-muse/src/server/status.test.ts @@ -9,7 +9,7 @@ import { vi } from "vite-plus/test"; import { writeFakeCli } from "@t3tools/provider-testing/fakeCli"; import type { MuseSdkHost } from "./sdk.ts"; import { COMPACT_SLASH_COMMAND } from "@t3tools/provider-core/server/snapshotProbe"; -import { checkMuseProviderStatus } from "./status.ts"; +import { checkMuseProviderStatus, makePendingMuseProvider } from "./status.ts"; const settings = Schema.decodeSync(MuseSettings); const makeHost = (catalog: Record) => { @@ -55,6 +55,13 @@ const fakeCli = (source = 'process.stdout.write("muse 1.0.3-R2198.1\\n");') => }); it.layer(NodeServices.layer)("Muse status", (it) => { + it.effect("does not offer conversation rollback, which the Muse adapter cannot perform", () => + Effect.gen(function* () { + const snapshot = yield* makePendingMuseProvider(settings({ enabled: true })); + expect(snapshot.supportsConversationRollback).toBe(false); + }), + ); + it.effect("does not expose CLI stderr or start an SDK host after a failed version check", () => Effect.scoped( Effect.gen(function* () { From 1de4009017f0bc0c8ab89d6122aef9acd277dec6 Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Tue, 3 Nov 2026 12:11:11 +0000 Subject: [PATCH 2/3] fix(muse): Muse threads no longer offer Edit from here Muse's provider status never set supportsConversationRollback, so the web treated it as supported and offered Edit from here, which the server always refuses because the Muse adapter cannot roll back. Report the flag as false, as Cursor already does. Co-Authored-By: Claude Opus 5.5 --- packages/provider-muse/src/server/status.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/provider-muse/src/server/status.ts b/packages/provider-muse/src/server/status.ts index bcd910b3573b..bf66a3facf2f 100644 --- a/packages/provider-muse/src/server/status.ts +++ b/packages/provider-muse/src/server/status.ts @@ -22,6 +22,7 @@ import { const MUSE_PRESENTATION = { displayName: "Muse Code", + supportsConversationRollback: false, showInteractionModeToggle: false, reportsContextWindow: true, // Muse has no accept-edits mode; map only :ask-me and :unrestricted. From c8fda85b955d040ed00f1e68394fdb32c6287124 Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Tue, 10 Nov 2026 23:33:07 +0000 Subject: [PATCH 3/3] test(provider-muse): assert rollback status in the existing probe test AI-assisted; verified with the tests and tools listed above. --- packages/provider-muse/src/server/status.test.ts | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/packages/provider-muse/src/server/status.test.ts b/packages/provider-muse/src/server/status.test.ts index 854fd1bb2cd0..4d750a9960d1 100644 --- a/packages/provider-muse/src/server/status.test.ts +++ b/packages/provider-muse/src/server/status.test.ts @@ -9,7 +9,7 @@ import { vi } from "vite-plus/test"; import { writeFakeCli } from "@t3tools/provider-testing/fakeCli"; import type { MuseSdkHost } from "./sdk.ts"; import { COMPACT_SLASH_COMMAND } from "@t3tools/provider-core/server/snapshotProbe"; -import { checkMuseProviderStatus, makePendingMuseProvider } from "./status.ts"; +import { checkMuseProviderStatus } from "./status.ts"; const settings = Schema.decodeSync(MuseSettings); const makeHost = (catalog: Record) => { @@ -55,13 +55,6 @@ const fakeCli = (source = 'process.stdout.write("muse 1.0.3-R2198.1\\n");') => }); it.layer(NodeServices.layer)("Muse status", (it) => { - it.effect("does not offer conversation rollback, which the Muse adapter cannot perform", () => - Effect.gen(function* () { - const snapshot = yield* makePendingMuseProvider(settings({ enabled: true })); - expect(snapshot.supportsConversationRollback).toBe(false); - }), - ); - it.effect("does not expose CLI stderr or start an SDK host after a failed version check", () => Effect.scoped( Effect.gen(function* () { @@ -98,6 +91,7 @@ it.layer(NodeServices.layer)("Muse status", (it) => { expect(snapshot.message).toBeUndefined(); expect(snapshot.slashCommands).toEqual([COMPACT_SLASH_COMMAND]); expect(snapshot.auth).toEqual({ status: "unknown" }); + expect(snapshot.supportsConversationRollback).toBe(false); expect(snapshot.version).toBe("1.0.3-R2198.1"); expect(snapshot.models.map((model) => model.slug)).toEqual([ "muse-wonder-1.0",