(session: CursorSession)
| 20 | } |
| 21 | |
| 22 | export async function cursorLocalLauncher(session: CursorSession): Promise<'switch' | 'exit'> { |
| 23 | const resumeChatId = session.sessionId; |
| 24 | if (resumeChatId) { |
| 25 | session.onSessionFound(resumeChatId); |
| 26 | } |
| 27 | const { mode, yolo } = permissionModeToCursorArgs(session.getPermissionMode() as string); |
| 28 | |
| 29 | const launcher = new BaseLocalLauncher({ |
| 30 | label: 'cursor-local', |
| 31 | failureLabel: 'Local Cursor Agent process failed', |
| 32 | queue: session.queue, |
| 33 | rpcHandlerManager: session.client.rpcHandlerManager, |
| 34 | startedBy: session.startedBy, |
| 35 | startingMode: session.startingMode, |
| 36 | launch: async (abortSignal) => { |
| 37 | await cursorLocal({ |
| 38 | path: session.path, |
| 39 | chatId: resumeChatId, |
| 40 | abort: abortSignal, |
| 41 | cursorArgs: session.cursorArgs, |
| 42 | model: session.model, |
| 43 | mode, |
| 44 | yolo, |
| 45 | onChatFound: (chatId) => session.onSessionFound(chatId) |
| 46 | }); |
| 47 | }, |
| 48 | sendFailureMessage: (message) => { |
| 49 | session.sendSessionEvent({ type: 'message', message }); |
| 50 | }, |
| 51 | recordLocalLaunchFailure: (message, exitReason) => { |
| 52 | session.recordLocalLaunchFailure(message, exitReason); |
| 53 | }, |
| 54 | abortLogMessage: 'doAbort', |
| 55 | switchLogMessage: 'doSwitch' |
| 56 | }); |
| 57 | |
| 58 | const result = await launcher.run(); |
| 59 | return result === 'exit' ? 'exit' : 'switch'; |
| 60 | } |
nothing calls this directly
no test coverage detected