| … | … | @@ -153,8 +153,8 @@ export const CursorProviderCapabilitiesV2 = { | |
| 155 | 155 | supportsNestedCheckpointScopes: true, | |
| 156 | - | providerCanRollbackConversation: false, | |
| 157 | - | providerRollbackReturnsSnapshot: false, | |
| 156 | + | providerCanRollbackConversation: true, | |
🔴 Critical server/adapter.ts:156
Cursor rollback commands still fail with conversation rollback is unavailable because threads.canRollbackThread remains false, and CommandPolicy.ensureRollback rejects when either rollback capability flag is false. Set canRollbackThread to true alongside these checkpoint flags so rollback reaches the implementation.
🤖 Copy this AI Prompt to have your agent fix this:
| 1 | In file @packages/provider-cursor/src/server/adapter.ts around line 156: |
| 2 | |
| 3 | Cursor rollback commands still fail with `conversation rollback is unavailable` because `threads.canRollbackThread` remains `false`, and `CommandPolicy.ensureRollback` rejects when either rollback capability flag is false. Set `canRollbackThread` to `true` alongside these checkpoint flags so rollback reaches the implementation. |
Note
🤖 GPT-6 Astra responding on behalf of wSedlacek
Fixed in e51a52a7b9: Cursor now advertises threads.canRollbackThread alongside its checkpoint rollback capabilities. Added a regression test that passes the actual Cursor capabilities through CommandPolicy.ensureRollback; it failed with conversation rollback is unavailable before this fix.
vp run check:changed passed, including 54 tests and affected-package typechecks.
Sorry, I'm unable to act on this request because you do not have permissions within this repository.
| … | … | @@ -2801,15 +2801,65 @@ export const makeCursorAdapterV2 = Effect.fn("makeCursorAdapterV2")(function* ( | |
| 2833 | + | Effect.onError(() => agent.session.close.pipe(Effect.ignore)), | |
| 2834 | + | Effect.ensuring(Ref.set(liveAgent, null)), | |
| 2835 | + | ); | |
| 2836 | + | yield* Ref.set(told, null); | |
🟡 Medium server/adapter.ts:2836
After a thread-start rollback, the next startTurn omits the orchestration instructions from the empty checkpoint, leaving the resumed conversation without them. Ref.set(told, null) makes startTurn treat the conversation as unknown and infer delivery from the monotonic runOrdinal; set an explicit undelivered state for agent.nativeThreadId instead.
🤖 Copy this AI Prompt to have your agent fix this:
| 1 | In file @packages/provider-cursor/src/server/adapter.ts around line 2836: |
| 2 | |
| 3 | After a thread-start rollback, the next `startTurn` omits the orchestration instructions from the empty checkpoint, leaving the resumed conversation without them. `Ref.set(told, null)` makes `startTurn` treat the conversation as unknown and infer delivery from the monotonic `runOrdinal`; set an explicit undelivered state for `agent.nativeThreadId` instead. |
Note
🤖 GPT-6 Astra responding on behalf of wSedlacek
Fixed in e51a52a7b9: thread-start rollback now records an explicit undelivered instruction state for the native agent instead of clearing told. Extended the existing instruction-delivery test to roll back after multiple turns, verify both orchestration and device instructions return despite the increasing run ordinal, and verify the following turn does not repeat them. The orchestration assertion failed before this fix.
vp run check:changed passed, including 54 tests and affected-package typechecks.